AMBARI-7608 Warning when deleting not last host-component. (atkach)

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

Branch: refs/heads/branch-alerts-dev
Commit: a23758831a3a3352d9d7a29e3a61af9a87963d34
Parents: 0fdd4b3
Author: atkach <[email protected]>
Authored: Thu Oct 2 13:59:55 2014 +0300
Committer: atkach <[email protected]>
Committed: Thu Oct 2 13:59:55 2014 +0300

----------------------------------------------------------------------
 ambari-web/app/controllers/main/host/details.js | 20 +++++++-
 .../test/controllers/main/host/details_test.js  | 51 ++++++++++++++++++++
 2 files changed, 70 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/a2375883/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 3fad22e..1f1bf8e 100644
--- a/ambari-web/app/controllers/main/host/details.js
+++ b/ambari-web/app/controllers/main/host/details.js
@@ -212,7 +212,7 @@ App.MainHostDetailsController = Em.Controller.extend({
     var component = event.context;
     var componentName = component.get('componentName');
     var displayName = component.get('displayName');
-    var isLastComponent = 
(App.HostComponent.find().filterProperty('componentName', 
componentName).get('length') === 1);
+    var isLastComponent = (this.getTotalComponent(component) === 1);
     App.ModalPopup.show({
       header: Em.I18n.t('popup.confirmation.commonHeader'),
       primary: Em.I18n.t('hosts.host.deleteComponent.popup.confirm'),
@@ -253,6 +253,24 @@ App.MainHostDetailsController = Em.Controller.extend({
   },
 
   /**
+   * get total count of host-components
+   * @method getTotalComponent
+   * @param component
+   * @return {Number}
+   */
+  getTotalComponent: function (component) {
+    var count;
+    if (component.get('isSlave')) {
+      count = 
App.SlaveComponent.find(component.get('componentName')).get('totalCount');
+    } else if (component.get('isClient')) {
+      count = 
App.ClientComponent.find(component.get('componentName')).get('totalCount');
+    } else {
+      count = App.HostComponent.find().filterProperty('componentName', 
component.get('componentName')).get('length')
+    }
+    return count || 0;
+  },
+
+  /**
    * Trigger to reset list of master/slaves components on the view
    * @type {bool}
    */

http://git-wip-us.apache.org/repos/asf/ambari/blob/a2375883/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 9511c27..7c63460 100644
--- a/ambari-web/test/controllers/main/host/details_test.js
+++ b/ambari-web/test/controllers/main/host/details_test.js
@@ -1355,6 +1355,57 @@ describe('App.MainHostDetailsController', function () {
     });
   });
 
+  describe('#getTotalComponent()', function () {
+
+    beforeEach(function () {
+      sinon.stub(App.SlaveComponent, 'find', function() {
+        return Em.Object.create({
+          componentName: "SLAVE",
+          totalCount: 1
+        });
+      });
+      sinon.stub(App.ClientComponent, 'find', function() {
+        return Em.Object.create({
+          componentName: "CLIENT",
+          totalCount: 1
+        });
+      });
+      sinon.stub(App.HostComponent, 'find', function() {
+        return [Em.Object.create({
+          componentName: "MASTER",
+          totalCount: 1
+        })]
+      });
+    });
+    afterEach(function () {
+      App.SlaveComponent.find.restore();
+      App.ClientComponent.find.restore();
+      App.HostComponent.find.restore();
+    });
+
+    it('component is slave', function () {
+      expect(controller.getTotalComponent(Em.Object.create({
+        componentName: "SLAVE",
+        isSlave: true
+      }))).to.equal(1);
+    });
+    it('component is client', function () {
+      expect(controller.getTotalComponent(Em.Object.create({
+        componentName: "CLIENT",
+        isClient: true
+      }))).to.equal(1);
+    });
+    it('component is master', function () {
+      expect(controller.getTotalComponent(Em.Object.create({
+        componentName: "MASTER"
+      }))).to.equal(1);
+    });
+    it('unknown component', function () {
+      expect(controller.getTotalComponent(Em.Object.create({
+        componentName: "UNKNOWN"
+      }))).to.equal(0);
+    });
+  });
   describe('#downloadClientConfigs()', function () {
 
     beforeEach(function () {

Reply via email to