Browse Source

AMBARI-6632 Handle Host Overrides for additional configurations (including -env.sh files). (ababiichuk)

aBabiichuk 10 years ago
parent
commit
46fb9d7eb1

+ 5 - 3
ambari-web/app/controllers/main/service/info/configs.js

@@ -619,9 +619,11 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
   checkOverrideProperty: function (componentConfig) {
     var overrideToAdd = this.get('overrideToAdd');
     if (overrideToAdd) {
-      overrideToAdd = componentConfig.configs.findProperty('name', overrideToAdd.name);
-      if (overrideToAdd) {
-        this.addOverrideProperty(overrideToAdd);
+      overrideToAdd = componentConfig.configs.filter(function(c){
+        return c.name == overrideToAdd.name && c.filename == overrideToAdd.filename;
+      });
+      if (overrideToAdd[0]) {
+        this.addOverrideProperty(overrideToAdd[0]);
         this.set('overrideToAdd', null);
       }
     }

+ 5 - 2
ambari-web/app/utils/config.js

@@ -870,7 +870,10 @@ App.config = Em.Object.create({
   loadServiceConfigGroupOverrides: function (serviceConfigs, loadedGroupToOverrideSiteToTagMap, configGroups, callback, sender) {
     var configKeyToConfigMap = {};
     serviceConfigs.forEach(function (item) {
-      configKeyToConfigMap[item.name] = item;
+      if (!configKeyToConfigMap[item.filename]) {
+        configKeyToConfigMap[item.filename] = {};
+      }
+      configKeyToConfigMap[item.filename][item.name] = item;
     });
     var typeTagToGroupMap = {};
     var urlParams = [];
@@ -907,7 +910,7 @@ App.config = Em.Object.create({
       var group = params.typeTagToGroupMap[config.type + "///" + config.tag];
       var properties = config.properties;
       for (var prop in properties) {
-        var serviceConfig = params.configKeyToConfigMap[prop];
+        var serviceConfig = params.configKeyToConfigMap[config.type + ".xml"][prop];
         var hostOverrideValue = properties[prop];
         if (serviceConfig && serviceConfig.displayType === 'int') {
           if (/\d+m$/.test(hostOverrideValue)) {

+ 25 - 3
ambari-web/test/controllers/main/service/info/config_test.js

@@ -1018,12 +1018,18 @@ describe("App.MainServiceInfoConfigsController", function () {
   describe("#checkOverrideProperty", function () {
     var tests = [{
       overrideToAdd: {
-        name: "name1"
+        name: "name1",
+        filename: "filename1"
       },
       componentConfig: {
         configs: [
           {
-            name: "name1"
+            name: "name1",
+            filename: "filename2"
+          },
+          {
+            name: "name1",
+            filename: "filename1"
           }
         ]
       },
@@ -1044,6 +1050,22 @@ describe("App.MainServiceInfoConfigsController", function () {
         add: false,
         m: "don't add property, different names"
       },
+      {
+        overrideToAdd: {
+          name: "name1",
+          filename: "filename1"
+        },
+        componentConfig: {
+          configs: [
+            {
+              name: "name1",
+              filename: "filename2"
+            }
+          ]
+        },
+        add: false,
+        m: "don't add property, different filenames"
+      },
       {
         overrideToAdd: null,
         componentConfig: {},
@@ -1062,7 +1084,7 @@ describe("App.MainServiceInfoConfigsController", function () {
         mainServiceInfoConfigsController.set("overrideToAdd", t.overrideToAdd);
         mainServiceInfoConfigsController.checkOverrideProperty(t.componentConfig);
         if(t.add) {
-          expect(mainServiceInfoConfigsController.addOverrideProperty.calledOnce).to.equal(true);
+          expect(mainServiceInfoConfigsController.addOverrideProperty.calledWith(t.overrideToAdd)).to.equal(true);
           expect(mainServiceInfoConfigsController.get("overrideToAdd")).to.equal(null);
         } else {
           expect(mainServiceInfoConfigsController.addOverrideProperty.calledOnce).to.equal(false);