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/01/31 18:12:33 UTC

git commit: AMBARI-4489 Set some ui restriction for components/services/hosts in passive mode. (ababiichuk)

Updated Branches:
  refs/heads/trunk b7e9dd9fb -> 46608926e


AMBARI-4489 Set some ui restriction for components/services/hosts in passive mode. (ababiichuk)


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

Branch: refs/heads/trunk
Commit: 46608926ec0cdd184cc2c715821995e891380710
Parents: b7e9dd9
Author: aBabiichuk <ab...@cybervisiontech.com>
Authored: Fri Jan 31 19:09:00 2014 +0200
Committer: aBabiichuk <ab...@cybervisiontech.com>
Committed: Fri Jan 31 19:09:00 2014 +0200

----------------------------------------------------------------------
 ambari-web/app/controllers/main/host.js         | 16 ++++++-----
 ambari-web/app/controllers/main/host/details.js | 23 ++++++++-------
 ambari-web/app/messages.js                      |  2 +-
 ambari-web/app/templates/main/host/summary.hbs  | 30 +++++++++++---------
 ambari-web/app/utils/ajax.js                    |  2 +-
 .../app/utils/batch_scheduled_requests.js       | 24 ++++++----------
 ambari-web/app/views/main/host/summary.js       |  7 +++--
 ambari-web/test/controllers/main/host_test.js   | 14 ++++-----
 8 files changed, 61 insertions(+), 57 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/46608926/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 067071a..050cfbc 100644
--- a/ambari-web/app/controllers/main/host.js
+++ b/ambari-web/app/controllers/main/host.js
@@ -187,9 +187,11 @@ App.MainHostController = Em.ArrayController.extend({
       var subQuery = '(HostRoles/component_name.in(%@)&HostRoles/host_name=' + host.get('hostName') + ')';
       var components = [];
       host.get('hostComponents').forEach(function(hostComponent) {
-        if (hostComponent.get('isMaster') || hostComponent.get('isSlave')) {
-          if (hostComponent.get('workStatus') === operationData.actionToCheck) {
-            components.push(hostComponent.get('componentName'));
+        if (hostComponent.get('passiveState') == 'ACTIVE') {
+          if (hostComponent.get('isMaster') || hostComponent.get('isSlave')) {
+            if (hostComponent.get('workStatus') === operationData.actionToCheck) {
+              components.push(hostComponent.get('componentName'));
+            }
           }
         }
       });
@@ -227,7 +229,7 @@ App.MainHostController = Em.ArrayController.extend({
   bulkOperationForHostsRestart: function(operationData, hosts) {
     var hostComponents = [];
     hosts.forEach(function(host) {
-      hostComponents.pushObjects(host.get('hostComponents').toArray());
+      hostComponents.pushObjects(host.get('hostComponents').filterProperty('passiveState','ACTIVE').toArray());
     });
     batchUtils.restartHostComponents(hostComponents);
   },
@@ -272,7 +274,7 @@ App.MainHostController = Em.ArrayController.extend({
   bulkOperationForHostComponents: function(operationData, hosts) {
     var service = App.Service.find(operationData.serviceName);
     var components = service.get('hostComponents').filter(function(hc) {
-      if (hc.get('componentName') != operationData.componentName) {
+      if (hc.get('componentName') != operationData.componentName || hc.get('passiveState') != 'ACTIVE' ) {
         return false;
       }
       if(hc.get('workStatus') == operationData.action) {
@@ -312,7 +314,7 @@ App.MainHostController = Em.ArrayController.extend({
   bulkOperationForHostComponentsDecommission: function(operationData, hosts) {
     var service = App.Service.find(operationData.serviceName);
     var components = service.get('hostComponents').filter(function(hc) {
-      if (hc.get('componentName') != operationData.realComponentName) {
+      if (hc.get('componentName') != operationData.realComponentName || hc.get('passiveState') != 'ACTIVE' ) {
         return false;
       }
       return hosts.contains(hc.get('host'));
@@ -361,7 +363,7 @@ App.MainHostController = Em.ArrayController.extend({
   bulkOperationForHostComponentsRestart: function(operationData, hosts) {
     var service = App.Service.find(operationData.serviceName);
     var components = service.get('hostComponents').filter(function(hc) {
-      if (hc.get('componentName') != operationData.componentName) {
+      if (hc.get('componentName') != operationData.componentName || hc.get('passiveState') != 'ACTIVE') {
         return false;
       }
       return hosts.contains(hc.get('host'));

http://git-wip-us.apache.org/repos/asf/ambari/blob/46608926/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 6358e65..7ac6522 100644
--- a/ambari-web/app/controllers/main/host/details.js
+++ b/ambari-web/app/controllers/main/host/details.js
@@ -103,9 +103,9 @@ App.MainHostDetailsController = Em.Controller.extend({
    * @param context  Context under which this command is beign sent. 
    */
   sendStartComponentCommand: function(component, context) {
-    var url = component !== null ? 
+    var url = component !== null ?
         '/hosts/' + this.get('content.hostName') + '/host_components/' + component.get('componentName').toUpperCase() : 
-        '/hosts/' + this.get('content.hostName') + '/host_components';
+        '/hosts/' + this.get('content.hostName') + '/host_components?HostRoles/passive_state=ACTIVE';
     var dataToSend = {
       RequestInfo : {
         "context" : context
@@ -120,8 +120,10 @@ App.MainHostDetailsController = Em.Controller.extend({
       var allComponents = this.get('content.hostComponents');
       var startable = [];
       allComponents.forEach(function (c) {
-        if (c.get('isMaster') || c.get('isSlave')) {
-          startable.push(c.get('componentName'));
+        if (c.get('passiveState') == 'ACTIVE') {
+          if (c.get('isMaster') || c.get('isSlave')) {
+            startable.push(c.get('componentName'));
+          }
         }
       });
       dataToSend.RequestInfo.query = "HostRoles/component_name.in(" + startable.join(',') + ")";
@@ -300,9 +302,9 @@ App.MainHostDetailsController = Em.Controller.extend({
    * @param context  Context under which this command is beign sent. 
    */
   sendStopComponentCommand: function(component, context){
-    var url = component !== null ? 
+    var url = component !== null ?
         '/hosts/' + this.get('content.hostName') + '/host_components/' + component.get('componentName').toUpperCase() : 
-        '/hosts/' + this.get('content.hostName') + '/host_components';
+        '/hosts/' + this.get('content.hostName') + '/host_components?HostRoles/passive_state=ACTIVE';
     var dataToSend = {
       RequestInfo : {
         "context" : context
@@ -317,8 +319,10 @@ App.MainHostDetailsController = Em.Controller.extend({
       var allComponents = this.get('content.hostComponents');
       var startable = [];
       allComponents.forEach(function (c) {
-        if (c.get('isMaster') || c.get('isSlave')) {
-          startable.push(c.get('componentName'));
+        if (c.get('passiveState') == 'ACTIVE') {
+          if (c.get('isMaster') || c.get('isSlave')) {
+            startable.push(c.get('componentName'));
+          }
         }
       });
       dataToSend.RequestInfo.query = "HostRoles/component_name.in(" + startable.join(',') + ")";
@@ -994,8 +998,7 @@ App.MainHostDetailsController = Em.Controller.extend({
   },
 
   doRestartAllComponents: function() {
-    var self = this;
-    var components = this.get('content.hostComponents');
+    var components = this.get('content.hostComponents').filterProperty('passiveState','ACTIVE');
     var componentsLength = components == null ? 0 : components.get('length');
     if (componentsLength > 0) {
       App.showConfirmationPopup(function() {

http://git-wip-us.apache.org/repos/asf/ambari/blob/46608926/ambari-web/app/messages.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/messages.js b/ambari-web/app/messages.js
index 326c51f..468a3b1 100644
--- a/ambari-web/app/messages.js
+++ b/ambari-web/app/messages.js
@@ -1816,7 +1816,7 @@ Em.I18n.translations = {
 
   'rolling.command.context': 'Rolling set {0} to state "{1}" - batch {2} of {3}',
   'rolling.nothingToDo.header': 'Nothing to do',
-  'rolling.nothingToDo.body': '{0} on selected hosts are already in selected state.',
+  'rolling.nothingToDo.body': '{0} on selected hosts are already in selected state or in passive mode.',
 
   'restart.service.all': 'Restart All',
   'restart.service.rest.context': 'Restart {1}s ({0})',

http://git-wip-us.apache.org/repos/asf/ambari/blob/46608926/ambari-web/app/templates/main/host/summary.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/main/host/summary.hbs b/ambari-web/app/templates/main/host/summary.hbs
index ffd4c9f..ebdd90b 100644
--- a/ambari-web/app/templates/main/host/summary.hbs
+++ b/ambari-web/app/templates/main/host/summary.hbs
@@ -193,21 +193,23 @@
                             </a>
                         </li>
                     {{/if}}
-                     {{#if view.isPassive}}
-                        <li {{bindAttr class="view.noActionAvailable"}}>
-                            <a href="javascript:void(null)"
-                               data-toggle="modal" {{action "turnOnOffPassiveConfirmation" view.content target="controller"}}>
-                              {{t passiveState.turnOff}}
-                            </a>
-                        </li>
+                    {{#unless view.isImplied}}
+                      {{#if view.isActive}}
+                          <li {{bindAttr class="view.noActionAvailable"}}>
+                              <a href="javascript:void(null)"
+                                 data-toggle="modal" {{action "turnOnOffPassiveConfirmation" view.content target="controller"}}>
+                                {{t passiveState.turnOn}}
+                              </a>
+                          </li>
                       {{else}}
-                        <li {{bindAttr class="view.noActionAvailable"}}>
-                            <a href="javascript:void(null)"
-                               data-toggle="modal" {{action "turnOnOffPassiveConfirmation" view.content target="controller"}}>
-                              {{t passiveState.turnOn}}
-                            </a>
-                        </li>
-                    {{/if}}
+                          <li {{bindAttr class="view.noActionAvailable"}}>
+                              <a href="javascript:void(null)"
+                                 data-toggle="modal" {{action "turnOnOffPassiveConfirmation" view.content target="controller"}}>
+                                {{t passiveState.turnOff}}
+                              </a>
+                          </li>
+                      {{/if}}
+                    {{/unless}}
                   {{/unless}}
                 </ul>
               </div>

http://git-wip-us.apache.org/repos/asf/ambari/blob/46608926/ambari-web/app/utils/ajax.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/utils/ajax.js b/ambari-web/app/utils/ajax.js
index 8f2a99e..6188371 100644
--- a/ambari-web/app/utils/ajax.js
+++ b/ambari-web/app/utils/ajax.js
@@ -1467,7 +1467,7 @@ var urls = {
         data: JSON.stringify({
           RequestInfo: {
             context: data.requestInfo,
-            query: 'HostRoles/component_name=' + data.componentName + '&HostRoles/host_name.in(' + data.hostNames + ')'
+            query: 'HostRoles/component_name=' + data.componentName + '&HostRoles/host_name.in(' + data.hostNames + ')&HostRoles/passive_state=ACTIVE'
           },
           Body: {
             HostRoles: {

http://git-wip-us.apache.org/repos/asf/ambari/blob/46608926/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 33dad38..088c83c 100644
--- a/ambari-web/app/utils/batch_scheduled_requests.js
+++ b/ambari-web/app/utils/batch_scheduled_requests.js
@@ -70,7 +70,7 @@ module.exports = {
   restartAllServiceHostComponents: function(serviceName, staleConfigsOnly) {
     var service = App.Service.find(serviceName);
     if (service) {
-      var hostComponents = service.get('hostComponents');
+      var hostComponents = service.get('hostComponents').filterProperty('passiveState','ACTIVE');
       if (staleConfigsOnly) {
         hostComponents = hostComponents.filterProperty('staleConfigs', true);
       }
@@ -263,13 +263,10 @@ module.exports = {
    * Retrieves the latest information about a specific request schedule
    * identified by 'requestScheduleId'
    *
-   * @param {Number}
-   *          requestScheduleId ID of the request schedule to get
-   * @param {Function}
-   *          successCallback Called with request_schedule data from server. An
+   * @param {Number} requestScheduleId ID of the request schedule to get
+   * @param {Function} successCallback Called with request_schedule data from server. An
    *          empty object returned for invalid ID.
-   * @param {Function}
-   *          errorCallback Optional error callback. Default behavior is to
+   * @param {Function} errorCallback Optional error callback. Default behavior is to
    *          popup default error dialog.
    */
   getRequestSchedule: function(requestScheduleId, successCallback, errorCallback) {
@@ -286,7 +283,7 @@ module.exports = {
           }
         },
         data : {
-          request_schedule_id : requestScheduleId,
+          request_schedule_id : requestScheduleId
         },
         success : 'successCallbackFunction',
         error : 'errorCallbackFunction'
@@ -299,12 +296,9 @@ module.exports = {
   /**
    * Attempts to abort a specific request schedule identified by 'requestScheduleId'
    *
-   * @param {Number}
-   *          requestScheduleId ID of the request schedule to get
-   * @param {Function}
-   *          successCallback Called when request schedule successfully aborted
-   * @param {Function}
-   *          errorCallback Optional error callback. Default behavior is to
+   * @param {Number} requestScheduleId ID of the request schedule to get
+   * @param {Function} successCallback Called when request schedule successfully aborted
+   * @param {Function} errorCallback Optional error callback. Default behavior is to
    *          popup default error dialog.
    */
   doAbortRequestSchedule: function(requestScheduleId, successCallback, errorCallback) {
@@ -321,7 +315,7 @@ module.exports = {
           }
         },
         data : {
-          request_schedule_id : requestScheduleId,
+          request_schedule_id : requestScheduleId
         },
         success : 'successCallbackFunction',
         error : 'errorCallbackFunction'

http://git-wip-us.apache.org/repos/asf/ambari/blob/46608926/ambari-web/app/views/main/host/summary.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/host/summary.js b/ambari-web/app/views/main/host/summary.js
index e3befcc..9172fb8 100644
--- a/ambari-web/app/views/main/host/summary.js
+++ b/ambari-web/app/views/main/host/summary.js
@@ -428,10 +428,13 @@ App.MainHostSummaryView = Em.View.extend({
       return this.get('content.componentName') === 'HBASE_REGIONSERVER';
     }.property('content'),
 
-    isPassive: function () {
-      return (this.get('content.passiveState') == "PASSIVE");
+    isActive: function () {
+      return (this.get('content.passiveState') == "ACTIVE");
     }.property('content.passiveState'),
 
+    isImplied: function() {
+      return (this.get('content.passiveState') == "IMPLIED");
+    }.property('content.passiveState'),
 
     isDecommissioning: function () {
       return (this.get('isDataNode') && this.get("isDataNodeDecommissioning")) || (this.get('isRegionServer') && this.get("isRegionServerDecommissioning"));

http://git-wip-us.apache.org/repos/asf/ambari/blob/46608926/ambari-web/test/controllers/main/host_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/controllers/main/host_test.js b/ambari-web/test/controllers/main/host_test.js
index a60a605..15004ca 100644
--- a/ambari-web/test/controllers/main/host_test.js
+++ b/ambari-web/test/controllers/main/host_test.js
@@ -171,8 +171,8 @@ describe('MainHostController', function () {
         hosts: [
           Em.Object.create({
             hostComponents: Em.A([
-              Em.Object.create({isMaster: true, isSlave: false, host: {hostName:'host1'}, workStatus: 'STARTED', componentName: 'NAMENODE'}),
-              Em.Object.create({isMaster: false, isSlave: true, host: {hostName:'host1'}, workStatus: 'STARTED', componentName: 'DATANODE'})
+              Em.Object.create({isMaster: true, isSlave: false, host: {hostName:'host1'}, workStatus: 'STARTED', componentName: 'NAMENODE', passiveState: 'ACTIVE'}),
+              Em.Object.create({isMaster: false, isSlave: true, host: {hostName:'host1'}, workStatus: 'STARTED', componentName: 'DATANODE', passiveState: 'ACTIVE'})
             ])
           })
         ],
@@ -186,8 +186,8 @@ describe('MainHostController', function () {
         hosts: [
           Em.Object.create({
             hostComponents: Em.A([
-              Em.Object.create({isMaster: true, isSlave: false, host: {hostName:'host1'}, workStatus: 'STARTED', componentName: 'NAMENODE'}),
-              Em.Object.create({isMaster: false, isSlave: true, host: {hostName:'host1'}, workStatus: 'STARTED', componentName: 'DATANODE'})
+              Em.Object.create({isMaster: true, isSlave: false, host: {hostName:'host1'}, workStatus: 'STARTED', componentName: 'NAMENODE', passiveState: 'ACTIVE'}),
+              Em.Object.create({isMaster: false, isSlave: true, host: {hostName:'host1'}, workStatus: 'STARTED', componentName: 'DATANODE', passiveState: 'ACTIVE'})
             ])
           })
         ],
@@ -201,8 +201,8 @@ describe('MainHostController', function () {
         hosts: [
           Em.Object.create({
             hostComponents: Em.A([
-              Em.Object.create({isMaster: true, isSlave: false, host: {hostName:'host1'}, workStatus: 'INSTALLED', componentName: 'NAMENODE'}),
-              Em.Object.create({isMaster: false, isSlave: true, host: {hostName:'host1'}, workStatus: 'STARTED', componentName: 'DATANODE'})
+              Em.Object.create({isMaster: true, isSlave: false, host: {hostName:'host1'}, workStatus: 'INSTALLED', componentName: 'NAMENODE', passiveState: 'ACTIVE'}),
+              Em.Object.create({isMaster: false, isSlave: true, host: {hostName:'host1'}, workStatus: 'STARTED', componentName: 'DATANODE', passiveState: 'ACTIVE'})
             ])
           })
         ],
@@ -240,7 +240,7 @@ describe('MainHostController', function () {
       {
         hosts: Em.A([
           Em.Object.create({
-            hostComponents: Em.A([Em.Object.create({}), Em.Object.create({})])
+            hostComponents: Em.A([Em.Object.create({passiveState: 'ACTIVE'}), Em.Object.create({passiveState: 'ACTIVE'})])
           })
         ]),
         m: 'One host',