瀏覽代碼

HUE-8670 [cluster] Adding auto resize option to the update cluster API

Romain Rigaux 7 年之前
父節點
當前提交
78eaae3b42

+ 6 - 2
apps/jobbrowser/src/jobbrowser/templates/job_browser.mako

@@ -239,7 +239,7 @@ ${ commonheader("Job Browser", "jobbrowser", user, request) | n,unicode }
   </script>
 
   <script type="text/html" id="configure-cluster-content">
-  <form>
+    <form>
       <fieldset>
         <label for="clusterConfigureWorkers">${ _('Workers') }</label>
         <span data-bind="visible: !updateClusterAutoResize()">
@@ -2697,7 +2697,10 @@ ${ commonheader("Job Browser", "jobbrowser", user, request) | n,unicode }
 
       self.clusterConfigModified = ko.pureComputed(function () {
         return (self.updateClusterWorkers() > 0 && self.updateClusterWorkers() !== self.properties['properties']['workerReplicas']()) ||
-            (self.updateClusterAutoResize() && self.updateClusterAutoResizeMax() >= 0);
+            (self.updateClusterAutoResize() !== self.properties['properties']['workerAutoResize']() &&
+              (self.updateClusterAutoResize() && self.updateClusterAutoResizeMax() >= 0) ||
+              (!self.updateClusterAutoResize())
+            );
       });
 
       ## TODO Move to control
@@ -2706,6 +2709,7 @@ ${ commonheader("Job Browser", "jobbrowser", user, request) | n,unicode }
           "is_k8": vm.interface().indexOf('dataware2-clusters') != -1,
           "cluster_name": self.id(),
           "workers_group_size": self.updateClusterWorkers(),
+          "auto_resize_changed": self.updateClusterAutoResize() !== self.properties['properties']['workerAutoResize'](),
           "auto_resize_enabled": self.updateClusterAutoResize(),
           "auto_resize_min": self.updateClusterAutoResizeMin(),
           "auto_resize_max": self.updateClusterAutoResizeMax(),

+ 18 - 5
desktop/libs/metadata/src/metadata/analytic_db_api.py

@@ -85,13 +85,26 @@ def update_cluster(request):
   response = {'status': -1}
 
   cluster_name = request.POST.get('cluster_name') or 'Analytic Cluster'
-  workers_group_size = int(request.POST.get('workers_group_size', '3'))
+  auto_resize_changed = bool(request.POST.get('auto_resize_changed'))
+
+  params = {
+    'clusterName': cluster_name
+  }
+
+  if auto_resize_changed:
+    updateClusterAutoResize = bool(request.POST.get('updateClusterAutoResize'))
+    params = {'updateClusterAutoResize': updateClusterAutoResize}
+    if updateClusterAutoResize:
+      params['updateClusterAutoResizeMax'] = int(request.POST.get('updateClusterAutoResizeMax'))
+      if request.POST.get('updateClusterAutoResizeMin'):
+        params['updateClusterAutoResizeMin'] = int(request.POST.get('updateClusterAutoResizeMin'))
+      if request.POST.get('updateClusterAutoResizeCpu'):
+        params['updateClusterAutoResizeCpu'] = int(request.POST.get('updateClusterAutoResizeCpu'))
+  else:
+    params['workerReplicas'] = int(request.POST.get('workers_group_size', '3'))
 
   api = DataWarehouse2Api(request.user)
-  data = api.update_cluster(
-      cluster_name=cluster_name,
-      workers_group_size=workers_group_size
-  )
+  data = api.update_cluster(**params)
 
   if data:
     response['status'] = 0

+ 2 - 7
desktop/libs/notebook/src/notebook/connectors/altus.py

@@ -338,10 +338,5 @@ class DataWarehouse2Api():
     return data
 
 
-  def update_cluster(self, cluster_name, workers_group_size):
-    data = {
-      'clusterName': cluster_name,
-      'workerReplicas': workers_group_size,
-    }
-
-    return self._root.post('updateCluster', data=json.dumps(data), contenttype="application/json")
+  def update_cluster(self, **params):
+    return self._root.post('updateCluster', data=json.dumps(params), contenttype="application/json")