This is an automated email from the ASF dual-hosted git repository.

huijun pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-heron.git


The following commit(s) were added to refs/heads/master by this push:
     new 61c0195  Fix the handling of container number in api server (#2995)
61c0195 is described below

commit 61c0195923987dbde622ecfde09e4041c7d1e6fa
Author: Ning Wang <nw...@twitter.com>
AuthorDate: Tue Aug 21 15:27:22 2018 -0700

    Fix the handling of container number in api server (#2995)
---
 .../apiserver/resources/TopologyResource.java      | 50 +++++++++++++++++++---
 1 file changed, 44 insertions(+), 6 deletions(-)

diff --git 
a/heron/tools/apiserver/src/java/org/apache/heron/apiserver/resources/TopologyResource.java
 
b/heron/tools/apiserver/src/java/org/apache/heron/apiserver/resources/TopologyResource.java
index 022d023..7f769e3 100644
--- 
a/heron/tools/apiserver/src/java/org/apache/heron/apiserver/resources/TopologyResource.java
+++ 
b/heron/tools/apiserver/src/java/org/apache/heron/apiserver/resources/TopologyResource.java
@@ -362,9 +362,11 @@ public class TopologyResource extends HeronResource {
               + "picking first value.");
         }
 
-        if ((components != null && !components.isEmpty()) || 
(containersList.get(0) != null)) {
-          return updateComponentParallelism(cluster, role, environment, name, 
params,
-              components, (containersList.size() > 0 ? containersList.get(0) : 
null));
+        if (components != null && !components.isEmpty()) {
+          return updateComponentParallelism(cluster, role, environment, name, 
params, components);
+        } else if (containersList != null && !containersList.isEmpty()) {
+          return updateContainerNumber(cluster, role, environment, name, 
params,
+              containersList.get(0));
         } else if (runtimeConfigs != null && !runtimeConfigs.isEmpty()) {
           return updateRuntimeConfig(cluster, role, environment, name, params, 
runtimeConfigs);
         } else {
@@ -392,8 +394,7 @@ public class TopologyResource extends HeronResource {
       String environment,
       String name,
       MultivaluedMap<String, String> params,
-      List<String> components,
-      String containers) {
+      List<String> components) {
 
     final List<Pair<String, Object>> keyValues = new ArrayList<>(
         Arrays.asList(
@@ -401,7 +402,6 @@ public class TopologyResource extends HeronResource {
             Pair.create(Key.ROLE.value(), role),
             Pair.create(Key.ENVIRON.value(), environment),
             Pair.create(Key.TOPOLOGY_NAME.value(), name),
-            Pair.create(Keys.PARAM_CONTAINER_NUMBER, containers),
             Pair.create(Keys.PARAM_COMPONENT_PARALLELISM,
                 String.join(",", components))
         )
@@ -427,6 +427,44 @@ public class TopologyResource extends HeronResource {
         .build();
   }
 
+  protected Response updateContainerNumber(
+      String cluster,
+      String role,
+      String environment,
+      String name,
+      MultivaluedMap<String, String> params,
+      String containerNumber) {
+
+    final List<Pair<String, Object>> keyValues = new ArrayList<>(
+        Arrays.asList(
+            Pair.create(Key.CLUSTER.value(), cluster),
+            Pair.create(Key.ROLE.value(), role),
+            Pair.create(Key.ENVIRON.value(), environment),
+            Pair.create(Key.TOPOLOGY_NAME.value(), name),
+            Pair.create(Keys.PARAM_CONTAINER_NUMBER, containerNumber)
+        )
+    );
+
+    // has a dry run been requested?
+    if (params.containsKey(PARAM_DRY_RUN)) {
+      keyValues.add(Pair.create(Key.DRY_RUN.value(), Boolean.TRUE));
+    }
+
+    final Set<Pair<String, Object>> overrides = getUpdateOverrides(params);
+    // apply overrides if they exists
+    if (!overrides.isEmpty()) {
+      keyValues.addAll(overrides);
+    }
+
+    final Config config = createConfig(keyValues);
+    getActionFactory().createRuntimeAction(config, 
ActionType.UPDATE).execute();
+
+    return Response.ok()
+        .type(MediaType.APPLICATION_JSON)
+        .entity(Utils.createMessage(String.format("%s updated", name)))
+        .build();
+  }
+
   protected Response updateRuntimeConfig(
       String cluster,
       String role,

Reply via email to