Repository: ambari
Updated Branches:
  refs/heads/branch-2.5 6b50e2b96 -> e80e86c8c


AMBARI-19960 No config properties are changed after deleting service if it's 
performed after service page refresh. (ababiichuk)


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

Branch: refs/heads/branch-2.5
Commit: e80e86c8cd46438de7ff239b59787eb427d7df1c
Parents: 6b50e2b
Author: ababiichuk <[email protected]>
Authored: Fri Feb 10 16:04:21 2017 +0200
Committer: ababiichuk <[email protected]>
Committed: Fri Feb 10 16:04:21 2017 +0200

----------------------------------------------------------------------
 ambari-web/app/controllers/main/service/item.js | 55 +++++++++++---------
 .../test/controllers/main/service/item_test.js  | 48 ++++++++++++++++-
 2 files changed, 77 insertions(+), 26 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/e80e86c8/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 6f1efd8..11df45a 100644
--- a/ambari-web/app/controllers/main/service/item.js
+++ b/ambari-web/app/controllers/main/service/item.js
@@ -142,8 +142,9 @@ App.MainServiceItemController = 
Em.Controller.extend(App.SupportClientConfigsDow
    * @type {String[]}
    */
   dependentServiceNames: function() {
-    return 
App.StackService.find(this.get('content.serviceName')).get('dependentServiceNames');
-  }.property('content.serviceName'),
+    return App.get('router.clusterController.isConfigsPropertiesLoaded') ?
+      
App.StackService.find(this.get('content.serviceName')).get('dependentServiceNames')
 : [];
+  }.property('content.serviceName', 
'App.router.clusterController.isConfigsPropertiesLoaded'),
 
   /**
    * List of service names that could be deleted
@@ -202,32 +203,35 @@ App.MainServiceItemController = 
Em.Controller.extend(App.SupportClientConfigsDow
    */
   onLoadConfigsTags: function (data) {
     var self = this;
-    var sitesToLoad = this.get('sitesToLoad'), allConfigs = [];
-    var loadedSites = data.Clusters.desired_configs;
-    var siteTagsToLoad = [];
-    for (var site in loadedSites) {
-      if (sitesToLoad.contains(site)) {
-        siteTagsToLoad.push({
-          siteName: site,
-          tagName: loadedSites[site].tag
-        });
+    
App.get('router.mainController.isLoading').call(App.get('router.clusterController'),
 'isConfigsPropertiesLoaded').done(function () {
+      var sitesToLoad = self.get('sitesToLoad'),
+        allConfigs = [],
+        loadedSites = data.Clusters.desired_configs,
+        siteTagsToLoad = [];
+      for (var site in loadedSites) {
+        if (sitesToLoad.contains(site)) {
+          siteTagsToLoad.push({
+            siteName: site,
+            tagName: loadedSites[site].tag
+          });
+        }
       }
-    }
-    
App.router.get('configurationController').getConfigsByTags(siteTagsToLoad).done(function
 (configs) {
-      configs.forEach(function (site) {
-        self.get('configs')[site.type] = site.properties;
-        allConfigs = allConfigs.concat(App.config.getConfigsFromJSON(site, 
true));
-      });
+      
App.router.get('configurationController').getConfigsByTags(siteTagsToLoad).done(function
 (configs) {
+        configs.forEach(function (site) {
+          self.get('configs')[site.type] = site.properties;
+          allConfigs = allConfigs.concat(App.config.getConfigsFromJSON(site, 
true));
+        });
 
-      self.get('dependentServiceNames').forEach(function(serviceName) {
-        var configTypes = 
App.StackService.find(serviceName).get('configTypeList');
-        var configsByService = allConfigs.filter(function (c) {
-          return 
configTypes.contains(App.config.getConfigTagFromFileName(c.get('filename')));
+        self.get('dependentServiceNames').forEach(function(serviceName) {
+          var configTypes = 
App.StackService.find(serviceName).get('configTypeList');
+          var configsByService = allConfigs.filter(function (c) {
+            return 
configTypes.contains(App.config.getConfigTagFromFileName(c.get('filename')));
+          });
+          
self.get('stepConfigs').pushObject(App.config.createServiceConfig(serviceName, 
[], configsByService));
         });
-        
self.get('stepConfigs').pushObject(App.config.createServiceConfig(serviceName, 
[], configsByService));
-      });
 
-      self.set('isServiceConfigsLoaded', true);
+        self.set('isServiceConfigsLoaded', true);
+      });
     });
   },
 
@@ -1585,7 +1589,8 @@ App.MainServiceItemController = 
Em.Controller.extend(App.SupportClientConfigsDow
     if (params.servicesToDeleteNext) {
       this.deleteServiceCall(params.servicesToDeleteNext);
     } else {
-      this.loadConfigRecommendations(null, this.saveConfigs.bind(this));
+      var callback = this.loadConfigRecommendations.bind(this, null, 
this.saveConfigs.bind(this));
+      App.get('router.mainController.isLoading').call(this, 
'isServiceConfigsLoaded').done(callback);
     }
   },
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/e80e86c8/ambari-web/test/controllers/main/service/item_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/controllers/main/service/item_test.js 
b/ambari-web/test/controllers/main/service/item_test.js
index fd66144..f0fc7ad 100644
--- a/ambari-web/test/controllers/main/service/item_test.js
+++ b/ambari-web/test/controllers/main/service/item_test.js
@@ -1709,6 +1709,7 @@ describe('App.MainServiceItemController', function () {
       mainServiceItemController = App.MainServiceItemController.create({});
       sinon.stub(mainServiceItemController, 'loadConfigRecommendations', Em.K);
       sinon.stub(mainServiceItemController, 'deleteServiceCall', Em.K);
+      sinon.stub(App.get('router.mainController'), 
'isLoading').returns($.Deferred().resolve().promise());
       mainServiceItemController.reopen({
         interDependentServices: []
       })
@@ -1716,9 +1717,10 @@ describe('App.MainServiceItemController', function () {
     afterEach(function() {
       mainServiceItemController.loadConfigRecommendations.restore();
       mainServiceItemController.deleteServiceCall.restore();
+      App.get('router.mainController').isLoading.restore();
     });
 
-    it("window.location.reload should be called", function() {
+    it("loadConfigRecommendations should be called", function() {
       mainServiceItemController.deleteServiceCallSuccessCallback([], null, {});
       expect(mainServiceItemController.deleteServiceCall.called).to.be.false;
       
expect(mainServiceItemController.loadConfigRecommendations.calledOnce).to.be.true;
@@ -1829,4 +1831,48 @@ describe('App.MainServiceItemController', function () {
       expect(mainServiceItemController.isRangerPluginEnabled()).to.be.true;
     });
   });
+
+  describe('#dependentServiceNames', function () {
+
+    var controller,
+      serviceName = 's0',
+      dependentServiceNames = ['s1', 's2'],
+      testCases = [
+        {
+          isConfigsPropertiesLoaded: true,
+          dependentServiceNames: dependentServiceNames,
+          message: 'model is ready'
+        },
+        {
+          isConfigsPropertiesLoaded: false,
+          dependentServiceNames: [],
+          message: 'model is not ready'
+        }
+      ];
+
+    beforeEach(function () {
+      controller = App.MainServiceItemController.create({
+        content: {
+          serviceName: serviceName
+        }
+      });
+      sinon.stub(App.StackService, 'find').returns(Em.Object.create({
+        dependentServiceNames: dependentServiceNames
+      }));
+    });
+
+    afterEach(function () {
+      App.StackService.find.restore();
+    });
+
+    testCases.forEach(function (test) {
+
+      it(test.message, function () {
+        App.set('router.clusterController.isConfigsPropertiesLoaded', 
test.isConfigsPropertiesLoaded);
+        
expect(controller.get('dependentServiceNames')).to.eql(test.dependentServiceNames);
+      });
+
+    });
+
+  });
 });

Reply via email to