Repository: ambari
Updated Branches:
  refs/heads/trunk 0ed6f8a8e -> 9dccb666f


AMBARI-16710. UI sends wrong request and get's error: host component cannot be 
created because it already exists (akovalenko)


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

Branch: refs/heads/trunk
Commit: 9dccb666fd71b1cadbeb5c16cbc8bc0d12b50cb9
Parents: 0ed6f8a
Author: Aleksandr Kovalenko <[email protected]>
Authored: Tue May 17 17:53:44 2016 +0300
Committer: Aleksandr Kovalenko <[email protected]>
Committed: Tue May 17 19:00:57 2016 +0300

----------------------------------------------------------------------
 ambari-web/app/controllers/main/host/details.js  |  4 ++--
 ambari-web/app/templates/main/host/summary.hbs   |  2 +-
 ambari-web/app/views/main/host/summary.js        |  9 ++++++++-
 .../test/controllers/main/host/details_test.js   |  4 +---
 ambari-web/test/views/main/host/summary_test.js  | 19 +++++++++++++++++++
 5 files changed, 31 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/9dccb666/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 374b077..1473df9 100644
--- a/ambari-web/app/controllers/main/host/details.js
+++ b/ambari-web/app/controllers/main/host/details.js
@@ -2367,13 +2367,13 @@ App.MainHostDetailsController = 
Em.Controller.extend(App.SupportClientConfigsDow
     });
   },
 
-  installClients: function (event) {
+  installClients: function (components) {
     var clientsToInstall = [],
       clientsToAdd = [],
       missedComponents = [],
       dependentComponents = [],
       self = this;
-    event.context.forEach(function (component) {
+    components.forEach(function (component) {
       if (['INIT', 'INSTALL_FAILED'].contains(component.get('workStatus'))) {
         clientsToInstall.push(component);
       } else if (typeof component.get('workStatus') == 'undefined') {

http://git-wip-us.apache.org/repos/asf/ambari/blob/9dccb666/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 3398bb2..729c00b 100644
--- a/ambari-web/app/templates/main/host/summary.hbs
+++ b/ambari-web/app/templates/main/host/summary.hbs
@@ -91,7 +91,7 @@
                         </a>
                       </li>
                       <li>
-                        <a href="javascript:void(null)" {{bindAttr 
class="view.areClientsNotInstalled::disabled" }} data-toggle="modal" {{action 
installClients view.notInstalledClientComponents target="controller"}}>
+                        <a href="javascript:void(null)" {{bindAttr 
class="view.areClientsNotInstalled::disabled" }} data-toggle="modal" {{action 
installClients target="view"}}>
                           {{t host.host.details.installClients}}
                         </a>
                       </li>

http://git-wip-us.apache.org/repos/asf/ambari/blob/9dccb666/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 ef666e9..ebef6e6 100644
--- a/ambari-web/app/views/main/host/summary.js
+++ b/ambari-web/app/views/main/host/summary.js
@@ -332,5 +332,12 @@ App.MainHostSummaryView = 
Em.View.extend(App.TimeRangeMixin, {
     });
 
     return options;
-  }.property('controller')
+  }.property('controller'),
+
+  /**
+   * Call installClients method from controller for not installed components
+   */
+  installClients: function () {
+    
this.get('controller').installClients(this.get('notInstalledClientComponents'));
+  }
 });

http://git-wip-us.apache.org/repos/asf/ambari/blob/9dccb666/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 93f07cf..db061a7 100644
--- a/ambari-web/test/controllers/main/host/details_test.js
+++ b/ambari-web/test/controllers/main/host/details_test.js
@@ -2917,9 +2917,7 @@ describe('App.MainHostDetailsController', function () {
           sinon.stub(controller, 'checkComponentDependencies', function 
(componentName) {
             return item.dependencies[componentName];
           });
-          controller.installClients({
-            context: item.context
-          });
+          controller.installClients(item.context);
         });
 
         it('getSecurityType is ' + (item.getKDCSessionStateCalled ? '' : 
'not') + ' called', function() {

http://git-wip-us.apache.org/repos/asf/ambari/blob/9dccb666/ambari-web/test/views/main/host/summary_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/views/main/host/summary_test.js 
b/ambari-web/test/views/main/host/summary_test.js
index 14e92da..62d04f1 100644
--- a/ambari-web/test/views/main/host/summary_test.js
+++ b/ambari-web/test/views/main/host/summary_test.js
@@ -643,4 +643,23 @@ describe('App.MainHostSummaryView', function() {
       expect(mainHostSummaryView.hasCardinalityConflict('C1')).to.be.false;
     });
   });
+
+  describe("#installClients()", function () {
+
+    beforeEach(function () {
+      var controller = {installClients: Em.K};
+      sinon.spy(controller, 'installClients');
+      mainHostSummaryView.set('controller', controller);
+      mainHostSummaryView.reopen({'notInstalledClientComponents': [1,2,3]});
+    });
+
+    afterEach(function () {
+      mainHostSummaryView.get('controller.installClients').restore();
+    });
+
+    it("should call installClients method from controller", function () {
+      mainHostSummaryView.installClients();
+      
expect(mainHostSummaryView.get('controller.installClients').calledWith([1,2,3])).to.be.true;
+    });
+  });
 });

Reply via email to