You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by ab...@apache.org on 2014/07/28 19:19:10 UTC

git commit: AMBARI-5392 Recommend putting Region Server in Maintenance Mode when Decommissioning Region Server. (ababiichuk)

Repository: ambari
Updated Branches:
  refs/heads/trunk 73be90ac0 -> 41bcd351e


AMBARI-5392 Recommend putting Region Server in Maintenance Mode when Decommissioning Region Server. (ababiichuk)


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

Branch: refs/heads/trunk
Commit: 41bcd351ed83766f4b404a10bc8d6bb985d18b8b
Parents: 73be90a
Author: aBabiichuk <ab...@cybervisiontech.com>
Authored: Mon Jul 28 20:16:44 2014 +0300
Committer: aBabiichuk <ab...@cybervisiontech.com>
Committed: Mon Jul 28 20:16:44 2014 +0300

----------------------------------------------------------------------
 ambari-web/app/controllers/main/host.js         | 35 +++++++++++++++-
 ambari-web/app/controllers/main/host/details.js | 44 +++++++++++++++++---
 ambari-web/app/utils/ajax/ajax.js               |  4 ++
 .../test/controllers/main/host/details_test.js  |  3 --
 4 files changed, 76 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/41bcd351/ambari-web/app/controllers/main/host.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/host.js b/ambari-web/app/controllers/main/host.js
index cc9b26c..6b9210a 100644
--- a/ambari-web/app/controllers/main/host.js
+++ b/ambari-web/app/controllers/main/host.js
@@ -844,7 +844,7 @@ App.MainHostController = Em.ArrayController.extend({
         //For decommession
         if (svcName == "HBASE") {
           // HBASE service, decommission RegionServer in batch requests
-          App.router.get('mainHostDetailsController').doDecommissionRegionServer(hostNames, svcName, masterName, slaveName);
+          this.warnBeforeDecommission(hostNames);
         } else {
           var parameters = {
             "slave_type": slaveName
@@ -880,6 +880,39 @@ App.MainHostController = Em.ArrayController.extend({
     }
   },
 
+
+  /**
+   * get info about regionserver passive_state
+   * @method warnBeforeDecommission
+   * @param {String} hostNames
+   * @return {$.ajax}
+   */
+  warnBeforeDecommission: function (hostNames) {
+    return App.ajax.send({
+      'name': 'host_components.hbase_regionserver.active',
+      'sender': this,
+      'data': {
+        hostNames: hostNames
+      },
+      success: 'warnBeforeDecommissionSuccess'
+    });
+  },
+
+  /**
+   * check is hbase regionserver in mm. If so - run decommission
+   * otherwise shows warning
+   * @method warnBeforeDecommission
+   * @param {Object} data
+   * @param {Object} opt
+   * @param {Object} params
+   */
+  warnBeforeDecommissionSuccess: function(data, opt, params) {
+    if (Em.get(data, 'items.length')) {
+      App.router.get('mainHostDetailsController').showHbaseActiveWarning();
+    } else {
+      App.router.get('mainHostDetailsController').doDecommissionRegionServer(params.hostNames, "HBASE", "HBASE_MASTER", "HBASE_REGIONSERVER");
+    }
+  },
   /**
    * Bulk restart for selected hostComponents
    * @param {Object} operationData

http://git-wip-us.apache.org/repos/asf/ambari/blob/41bcd351/ambari-web/app/controllers/main/host/details.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/host/details.js b/ambari-web/app/controllers/main/host/details.js
index cc13471..cab9cb1 100644
--- a/ambari-web/app/controllers/main/host/details.js
+++ b/ambari-web/app/controllers/main/host/details.js
@@ -858,9 +858,8 @@ App.MainHostDetailsController = Em.Controller.extend({
         this.doDecommission(hostName, svcName, "JOBTRACKER", "TASKTRACKER");
         break;
       case 'HBASE':
-        this.doDecommissionRegionServer(hostName, svcName, "HBASE_MASTER", "HBASE_REGIONSERVER");
+        this.warnBeforeDecommission(hostName);
     }
-    this.showBackgroundOperationsPopup();
   },
 
   /**
@@ -925,9 +924,42 @@ App.MainHostDetailsController = Em.Controller.extend({
   },
 
   /**
+   * check is hbase regionserver in mm. If so - run decommission
+   * otherwise shows warning
+   * @method warnBeforeDecommission
+   * @param {string} hostNames - list of host when run from bulk operations or current host
+   */
+
+  warnBeforeDecommission: function(hostNames) {
+    if (this.get('content.hostComponents').findProperty('componentName', 'HBASE_REGIONSERVER').get('passiveState') == "OFF") {
+      this.showHbaseActiveWarning();
+    } else {
+      this.doDecommissionRegionServer(hostNames, "HBASE", "HBASE_MASTER", "HBASE_REGIONSERVER");
+    }
+  },
+
+  /**
+   * shows warning: put hbase regionserver in passive state
+   * @method showHbaseActiveWarning
+   * @return {App.ModalPopup}
+   */
+  showHbaseActiveWarning: function() {
+    return App.ModalPopup.show({
+      header: Em.I18n.t('common.warning'),
+      message: function(){
+        return Em.I18n.t('hostPopup.reccomendation.beforeDecommission').format(App.format.components["HBASE_REGIONSERVER"]);
+      }.property(),
+      bodyClass: Ember.View.extend({
+        template: Em.Handlebars.compile('<div class="alert alert-warning">{{message}}</div>')
+      }),
+      secondary: false
+    });
+  },
+
+  /**
    * Performs Decommission (for RegionServer)
    * @method doDecommissionRegionServer
-   * @param {string[]} hostNames - list of host when run from bulk operations or current host
+   * @param {string} hostNames - list of host when run from bulk operations or current host
    * @param {string} serviceName - serviceName
    * @param {string} componentName - master compoent name
    * @param {string} slaveType - slave component name
@@ -943,7 +975,7 @@ App.MainHostDetailsController = Em.Controller.extend({
           {
             "order_id": 1,
             "type": "POST",
-            "uri": App.apiPrefix + "/clusters/" + App.get('clusterName') + "/requests",
+            "uri": App.get('apiPrefix') + "/clusters/" + App.get('clusterName') + "/requests",
             "RequestBodyInfo": {
               "RequestInfo": {
                 "context": Em.I18n.t('hosts.host.regionserver.decommission.batch1'),
@@ -967,7 +999,7 @@ App.MainHostDetailsController = Em.Controller.extend({
           {
             "order_id": 2,
             "type": "PUT",
-            "uri": App.apiPrefix + "/clusters/" + App.get('clusterName') + "/host_components",
+            "uri": App.get('apiPrefix') + "/clusters/" + App.get('clusterName') + "/host_components",
             "RequestBodyInfo": {
               "RequestInfo": {
                 context: Em.I18n.t('hosts.host.regionserver.decommission.batch2'),
@@ -983,7 +1015,7 @@ App.MainHostDetailsController = Em.Controller.extend({
           {
             "order_id": 3,
             "type": "POST",
-            "uri": App.apiPrefix + "/clusters/" + App.get('clusterName') + "/requests",
+            "uri": App.get('apiPrefix') + "/clusters/" + App.get('clusterName') + "/requests",
             "RequestBodyInfo": {
               "RequestInfo": {
                 "context": Em.I18n.t('hosts.host.regionserver.decommission.batch3'),

http://git-wip-us.apache.org/repos/asf/ambari/blob/41bcd351/ambari-web/app/utils/ajax/ajax.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/utils/ajax/ajax.js b/ambari-web/app/utils/ajax/ajax.js
index fe1ebdd..bc969bd 100644
--- a/ambari-web/app/utils/ajax/ajax.js
+++ b/ambari-web/app/utils/ajax/ajax.js
@@ -405,6 +405,10 @@ var urls = {
     'real': '/clusters/{clusterName}/services/{serviceName}/components/{componentName}/?fields=ServiceComponentInfo,host_components/HostRoles/state',
     'mock': ''
   },
+  'host_components.hbase_regionserver.active': {
+    'real': '/clusters/{clusterName}/host_components?HostRoles/component_name=HBASE_REGIONSERVER&HostRoles/maintenance_state=OFF&HostRoles/desired_admin_state=INSERVICE&HostRoles/host_name.in({hostNames})',
+    'mock': ''
+  },
   'host.host_component.decommission_status_datanode': {
     'real': '/clusters/{clusterName}/hosts/{hostName}/host_components/{componentName}?fields=metrics/dfs/namenode',
     'mock': ''

http://git-wip-us.apache.org/repos/asf/ambari/blob/41bcd351/ambari-web/test/controllers/main/host/details_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/controllers/main/host/details_test.js b/ambari-web/test/controllers/main/host/details_test.js
index 4fd01c8..189e483 100644
--- a/ambari-web/test/controllers/main/host/details_test.js
+++ b/ambari-web/test/controllers/main/host/details_test.js
@@ -721,17 +721,14 @@ describe('App.MainHostDetailsController', function () {
     it('HDFS service', function () {
       controller.runDecommission('host1', 'HDFS');
       expect(controller.doDecommission.calledWith('host1', 'HDFS', "NAMENODE", "DATANODE")).to.be.true;
-      expect(controller.showBackgroundOperationsPopup.calledOnce).to.be.true;
     });
     it('YARN service', function () {
       controller.runDecommission('host1', 'YARN');
       expect(controller.doDecommission.calledWith('host1', 'YARN', "RESOURCEMANAGER", "NODEMANAGER")).to.be.true;
-      expect(controller.showBackgroundOperationsPopup.calledOnce).to.be.true;
     });
     it('MAPREDUCE service', function () {
       controller.runDecommission('host1', 'MAPREDUCE');
       expect(controller.doDecommission.calledWith('host1', 'MAPREDUCE', "JOBTRACKER", "TASKTRACKER")).to.be.true;
-      expect(controller.showBackgroundOperationsPopup.calledOnce).to.be.true;
     });
   });