Repository: ambari
Updated Branches:
  refs/heads/branch-2.1 cab13ae84 -> 7effdec2a


AMBARI-14015 Different values range for yarn.nodemanager.resource.memory-mb 
property after 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/7effdec2
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/7effdec2
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/7effdec2

Branch: refs/heads/branch-2.1
Commit: 7effdec2a4de7b797f71bc85e63212fb86b84b13
Parents: cab13ae
Author: aBabiichuk <ababiic...@cybervisiontech.com>
Authored: Mon Nov 23 17:58:24 2015 +0200
Committer: aBabiichuk <ababiic...@cybervisiontech.com>
Committed: Mon Nov 23 17:58:24 2015 +0200

----------------------------------------------------------------------
 .../app/controllers/wizard/step7_controller.js  | 30 +++++------
 ambari-web/app/utils/blueprint.js               | 55 +++++++++++---------
 ambari-web/test/utils/blueprint_test.js         | 39 +++++++++-----
 3 files changed, 69 insertions(+), 55 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/7effdec2/ambari-web/app/controllers/wizard/step7_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/wizard/step7_controller.js 
b/ambari-web/app/controllers/wizard/step7_controller.js
index a9aca28..84142d7 100644
--- a/ambari-web/app/controllers/wizard/step7_controller.js
+++ b/ambari-web/app/controllers/wizard/step7_controller.js
@@ -713,23 +713,19 @@ App.WizardStep7Controller = 
Em.Controller.extend(App.ServerValidatorMixin, App.E
     if (rangerService && !rangerService.get('isInstalled') && 
!rangerService.get('isSelected')) {
       App.config.removeRangerConfigs(self.get('stepConfigs'));
     }
-    if (this.get('content.serviceConfigProperties.length') > 0) {
-      this.completeConfigLoading();
-    } else {
-      this.loadServerSideConfigsRecommendations().always(function () {
-        if (self.get('wizardController.name') == 'addServiceController') {
-          // for Add Service just remove or add dependent properties and 
ignore config values changes
-          // for installed services only
-          self.addRemoveDependentConfigs(self.get('installedServiceNames'));
-          
self.clearDependenciesForInstalledServices(self.get('installedServiceNames'), 
self.get('stepConfigs'));
-        }
-        // * add dependencies based on recommendations
-        // * update config values with recommended
-        // * remove properties received from recommendations
-        self.updateDependentConfigs();
-        self.completeConfigLoading();
-      });
-    }
+    this.loadServerSideConfigsRecommendations().always(function () {
+      if (self.get('wizardController.name') == 'addServiceController') {
+        // for Add Service just remove or add dependent properties and ignore 
config values changes
+        // for installed services only
+        self.addRemoveDependentConfigs(self.get('installedServiceNames'));
+        
self.clearDependenciesForInstalledServices(self.get('installedServiceNames'), 
self.get('stepConfigs'));
+      }
+      // * add dependencies based on recommendations
+      // * update config values with recommended
+      // * remove properties received from recommendations
+      self.updateDependentConfigs();
+      self.completeConfigLoading();
+    });
   },
 
   completeConfigLoading: function() {

http://git-wip-us.apache.org/repos/asf/ambari/blob/7effdec2/ambari-web/app/utils/blueprint.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/utils/blueprint.js 
b/ambari-web/app/utils/blueprint.js
index 687c7fd..59290cd 100644
--- a/ambari-web/app/utils/blueprint.js
+++ b/ambari-web/app/utils/blueprint.js
@@ -385,39 +385,44 @@ module.exports = {
   },
 
   /**
+   * Small helper method to update hostMap
+   * it perform update of object only
+   * if unique component per host is added
+   *
+   * @param {Object} hostMapObject
+   * @param {string[]} hostNames
+   * @param {string} componentName
+   * @returns {Object}
+   * @private
+   */
+  _generateHostMap: function(hostMapObject, hostNames, componentName) {
+    Em.assert('hostMapObject, hostNames, componentName should be defined', 
!!hostMapObject && !!hostNames && !!componentName);
+    if (!hostNames.length) return hostMapObject;
+    hostNames.forEach(function(hostName) {
+      if (!hostMapObject[hostName])
+        hostMapObject[hostName] = [];
+
+      if (!hostMapObject[hostName].contains(componentName))
+        hostMapObject[hostName].push(componentName);
+    });
+    return hostMapObject;
+  },
+
+  /**
    * collect all component names that are present on hosts
    * @returns {object}
    */
   getComponentForHosts: function() {
     var hostsMap = {};
     App.ClientComponent.find().forEach(function(c) {
-      var componentName = c.get('componentName');
-      c.get('hostNames').forEach(function(hostName){
-        if (hostsMap[hostName]) {
-          hostsMap[hostName].push(componentName);
-        } else {
-          hostsMap[hostName] = [componentName];
-        }
-      });
-    });
+      hostsMap = this._generateHostMap(hostsMap, c.get('hostNames'), 
c.get('componentName'));
+    }, this);
     App.SlaveComponent.find().forEach(function (c) {
-      var componentName = c.get('componentName');
-      c.get('hostNames').forEach(function (hostName) {
-        if (hostsMap[hostName]) {
-          hostsMap[hostName].push(componentName);
-        } else {
-          hostsMap[hostName] = [componentName];
-        }
-      });
-    });
+      hostsMap = this._generateHostMap(hostsMap, c.get('hostNames'), 
c.get('componentName'));
+    }, this);
     App.HostComponent.find().forEach(function (c) {
-      var hostName = c.get('hostName');
-      if (hostsMap[hostName]) {
-        hostsMap[hostName].push(c.get('componentName'));
-      } else {
-        hostsMap[hostName] = [c.get('componentName')];
-      }
-    });
+      hostsMap = this._generateHostMap(hostsMap, [c.get('hostName')], 
c.get('componentName'));
+    }, this);
     return hostsMap;
   }
 };

http://git-wip-us.apache.org/repos/asf/ambari/blob/7effdec2/ambari-web/test/utils/blueprint_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/utils/blueprint_test.js 
b/ambari-web/test/utils/blueprint_test.js
index 29072a3..8fa3bcf 100644
--- a/ambari-web/test/utils/blueprint_test.js
+++ b/ambari-web/test/utils/blueprint_test.js
@@ -415,19 +415,32 @@ describe('utils/blueprint', function() {
       App.HostComponent.find.restore();
     });
 
-    it("", function() {
-      expect(blueprintUtils.getComponentForHosts()).to.eql({
-        "host1": [
-          "C1"
-        ],
-        "host2": [
-          "C1",
-          "C2"
-        ],
-        "host3": [
-          "C2",
-          "C3"
-        ]
+    it("generate components to host map", function() {
+      var res = blueprintUtils.getComponentForHosts();
+      expect(res['host1'][0]).to.eql("C1");
+      expect(res['host2'][0]).to.eql("C1");
+      expect(res['host2'][1]).to.eql("C2");
+      expect(res['host3'][0]).to.eql("C2");
+      expect(res['host3'][1]).to.eql("C3");
+    });
+  });
+
+  describe('#_generateHostMap', function() {
+    it('generate map', function() {
+      var map = blueprintUtils._generateHostMap({}, ['h1','h2', 'h1'],'c1');
+      expect(map['h1'][0]).to.eql('c1');
+      expect(map['h2'][0]).to.eql('c1');
+    });
+
+    it('skip generations as hosts is empty', function() {
+      expect(blueprintUtils._generateHostMap({}, [],'c1')).to.eql({});
+    });
+
+    it('skip throws error when data is wrong', function() {
+      it('should assert error if no data returned from server', function () {
+        expect(function () {
+          blueprintUtils._generateHostMap();
+        }).to.throw(Error);
       });
     });
   });

Reply via email to