You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by sr...@apache.org on 2014/01/14 19:20:53 UTC

git commit: AMBARI-4281. Implement Restart All capability for service. (srimanth)

Updated Branches:
  refs/heads/trunk 9395e1f87 -> ab0c39c07


AMBARI-4281. Implement Restart All capability for service. (srimanth)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/ab0c39c0
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/ab0c39c0
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/ab0c39c0

Branch: refs/heads/trunk
Commit: ab0c39c07a6153f214dfd486ec6df314877db6ba
Parents: 9395e1f
Author: Srimanth Gunturi <sg...@hortonworks.com>
Authored: Mon Jan 13 15:49:20 2014 -0800
Committer: Srimanth Gunturi <sg...@hortonworks.com>
Committed: Tue Jan 14 10:20:21 2014 -0800

----------------------------------------------------------------------
 ambari-web/app/controllers/main/service/item.js |  3 +-
 ambari-web/app/messages.js                      |  3 ++
 ambari-web/app/utils/ajax.js                    | 22 ++++++++-
 .../app/utils/batch_scheduled_requests.js       | 48 ++++++++++++++++++++
 ambari-web/app/views/main/service/item.js       |  2 +
 5 files changed, 76 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/ab0c39c0/ambari-web/app/controllers/main/service/item.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/service/item.js b/ambari-web/app/controllers/main/service/item.js
index 72cec23..92d160d 100644
--- a/ambari-web/app/controllers/main/service/item.js
+++ b/ambari-web/app/controllers/main/service/item.js
@@ -187,7 +187,8 @@ App.MainServiceItemController = Em.Controller.extend({
     });
   },
 
-  restartAllHostComponents: function(event) {
+  restartAllHostComponents : function(serviceName) {
+    batchUtils.doPostRestartAllServiceComponents(serviceName);
   },
 
   rollingRestart: function(hostComponentName) {

http://git-wip-us.apache.org/repos/asf/ambari/blob/ab0c39c0/ambari-web/app/messages.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/messages.js b/ambari-web/app/messages.js
index c09b3bf..90130db 100644
--- a/ambari-web/app/messages.js
+++ b/ambari-web/app/messages.js
@@ -1783,6 +1783,9 @@ Em.I18n.translations = {
   'rollingrestart.dialog.msg.staleConfigsOnly': 'Only restart {0}s with stale configs',
   'rollingrestart.rest.context': 'Rolling Restart of {0}s - batch {1} of {2}',
 
+  'restart.service.all': 'Restart All',
+  'restart.service.rest.context': 'Restart {1}s ({0})',
+
   'menu.item.dashboard':'Dashboard',
   'menu.item.heatmaps':'Heatmaps',
   'menu.item.services':'Services',

http://git-wip-us.apache.org/repos/asf/ambari/blob/ab0c39c0/ambari-web/app/utils/ajax.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/utils/ajax.js b/ambari-web/app/utils/ajax.js
index e690b67..9b98a3b 100644
--- a/ambari-web/app/utils/ajax.js
+++ b/ambari-web/app/utils/ajax.js
@@ -1293,7 +1293,7 @@ var urls = {
           batches.push({
             "order_id" : count + 1,
             "type" : "POST",
-            "uri" : "/api/v1/clusters/" + data.clusterName + "/requests",
+            "uri" : App.apiPrefix + "/clusters/" + data.clusterName + "/requests",
             "RequestBodyInfo" : {
               "RequestInfo" : {
                 "context" : Em.I18n.t('rollingrestart.rest.context').format(componentDisplayName, (count + 1), batchCount),
@@ -1322,6 +1322,26 @@ var urls = {
         } ])
       }
     }
+  },
+  'restart.service.hostComponents' : {
+    'real' : '/clusters/{clusterName}/requests',
+    'mock' : '',
+    'format' : function(data) {
+      var componentDisplayName = App.format.role(data.componentName);
+      var serviceDisplayName = App.Service.DisplayNames[data.serviceName];
+      return {
+        type : 'POST',
+        data : JSON.stringify({
+          "RequestInfo" : {
+            "context" : Em.I18n.t('restart.service.rest.context').format(serviceDisplayName, componentDisplayName),
+            "command" : "RESTART",
+            "service_name" : data.serviceName,
+            "component_name" : data.componentName,
+            "hosts" : data.hosts
+          }
+        })
+      }
+    }
   }
 };
 /**

http://git-wip-us.apache.org/repos/asf/ambari/blob/ab0c39c0/ambari-web/app/utils/batch_scheduled_requests.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/utils/batch_scheduled_requests.js b/ambari-web/app/utils/batch_scheduled_requests.js
index 2f8ae78..e3bdb53 100644
--- a/ambari-web/app/utils/batch_scheduled_requests.js
+++ b/ambari-web/app/utils/batch_scheduled_requests.js
@@ -49,6 +49,49 @@ module.exports = {
     return rollingRestartComponent;
   },
 
+  doPostRestartAllServiceComponents : function(serviceName) {
+    var allHostComponents = App.HostComponent.find();
+    var componentToHostsMap = {};
+    var componentCount = 0;
+    allHostComponents.forEach(function(hc) {
+      if (serviceName == hc.get('service.serviceName')) {
+        var componentName = hc.get('componentName');
+        if (!componentToHostsMap[componentName]) {
+          componentToHostsMap[componentName] = [];
+          componentCount++;
+        }
+        componentToHostsMap[componentName].push(hc.get('host.hostName'));
+      }
+    });
+    for ( var componentName in componentToHostsMap) {
+      var hosts = componentToHostsMap[componentName].join(",");
+      var data = {
+        serviceName : serviceName,
+        componentName : componentName,
+        hosts : hosts
+      }
+      var sender = {
+        successFunction : function() {
+          App.router.get('applicationController').dataLoading().done(function (initValue) {
+            if (initValue) {
+              App.router.get('backgroundOperationsController').showPopup();
+            }
+          });
+        },
+        errorFunction : function(xhr, textStatus, error, opt) {
+          App.ajax.defaultErrorHandler(xhr, opt.url, 'POST', xhr.status);
+        }
+      }
+      App.ajax.send({
+        name : 'restart.service.hostComponents',
+        sender : sender,
+        data : data,
+        success : 'successFunction',
+        error : 'errorFunction'
+      });
+    }
+  },
+
   /**
    * Makes a REST call to the server requesting the rolling restart of the
    * provided host components.
@@ -134,6 +177,11 @@ module.exports = {
           var tolerateSize = this.get('innerView.tolerateSize');
           self.doPostBatchRollingRestartRequest(restartComponents, batchSize, waitTime, tolerateSize, function() {
             dialog.hide();
+            App.router.get('applicationController').dataLoading().done(function (initValue) {
+              if (initValue) {
+                App.router.get('backgroundOperationsController').showPopup();
+              }
+            });
           }, function(xhr, textStatus, error, opt) {
             App.ajax.defaultErrorHandler(xhr, opt.url, 'POST', xhr.status);
           });

http://git-wip-us.apache.org/repos/asf/ambari/blob/ab0c39c0/ambari-web/app/views/main/service/item.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/service/item.js b/ambari-web/app/views/main/service/item.js
index e67b303..d1792da 100644
--- a/ambari-web/app/views/main/service/item.js
+++ b/ambari-web/app/views/main/service/item.js
@@ -47,6 +47,8 @@ App.MainServiceItemView = Em.View.extend({
         options.push({action: 'runSmokeTest', 'label': Em.I18n.t('services.service.actions.run.smoke').format(service.get('serviceName')), disabled:disabled});
     }
 
+    options.push({action:'restartAllHostComponents', context: serviceName, 'label': Em.I18n.t('restart.service.all'), disabled: false});
+
     var rrComponentName = batchUtils.getRollingRestartComponentName(serviceName);
     if (rrComponentName) {
       var label = Em.I18n.t('rollingrestart.dialog.title').format(App.format.role(rrComponentName));