瀏覽代碼

AMBARI-11723 Configs: comparing versions does not show new props after Ambari Upgrade. (atkach)

Andrii Tkach 10 年之前
父節點
當前提交
a22f819d46

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

@@ -677,6 +677,7 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ServerValidatorM
    */
   setCompareDefaultGroupConfig: function (serviceConfig, compareConfig) {
     var compareObject = {};
+    var isEmptyProp = App.isEmptyObject(serviceConfig);
 
     serviceConfig.compareConfigs = [];
     serviceConfig.isComparison = true;
@@ -686,7 +687,8 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ServerValidatorM
       compareObject = this.getComparisonConfig(serviceConfig, compareConfig);
       serviceConfig.hasCompareDiffs = serviceConfig.isMock || this.hasCompareDiffs(serviceConfig, compareObject);
       serviceConfig.compareConfigs.push(compareObject);
-    } else if (serviceConfig.isUserProperty) {
+    // user custom property or property that was added during upgrade
+    } else if (serviceConfig.isUserProperty || (!isEmptyProp && !compareConfig && Em.get(serviceConfig, 'isRequiredByAgent') !== false)) {
       serviceConfig.compareConfigs.push(this.getMockComparisonConfig(serviceConfig, this.get('compareServiceVersion.version')));
       serviceConfig.hasCompareDiffs = true;
     }

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

@@ -946,10 +946,10 @@ describe("App.MainServiceInfoConfigsController", function () {
       mainServiceInfoConfigsController.getMockComparisonConfig.restore();
       mainServiceInfoConfigsController.hasCompareDiffs.restore();
     });
-    it("expect that setCompareDefaultGroupConfig will not run anything", function() {
+    it("empty service config passed, expect that setCompareDefaultGroupConfig will not run anything", function() {
       expect(mainServiceInfoConfigsController.setCompareDefaultGroupConfig({}).compareConfigs.length).to.equal(0);
     });
-    it("expect that setCompareDefaultGroupConfig will not run anything", function() {
+    it("empty service config and comparison passed, expect that setCompareDefaultGroupConfig will not run anything", function() {
       expect(mainServiceInfoConfigsController.setCompareDefaultGroupConfig({},{}).compareConfigs.length).to.equal(0);
     });
     it("expect that serviceConfig.compareConfigs will be getMockComparisonConfig", function() {
@@ -964,7 +964,12 @@ describe("App.MainServiceInfoConfigsController", function () {
     it("expect that serviceConfig.compareConfigs will be getComparisonConfig", function() {
       expect(mainServiceInfoConfigsController.setCompareDefaultGroupConfig({isReconfigurable: true, isMock: true}, {})).to.eql({compareConfigs: ["compConfig"], isReconfigurable: true, isMock: true, isComparison: true, hasCompareDiffs: true});
     });
-
+    it("property was created during upgrade and have no comparison, compare with 'Undefined' value should be created", function() {
+      expect(mainServiceInfoConfigsController.setCompareDefaultGroupConfig({name: 'prop1', isUserProperty: false}, null)).to.eql({
+        name: 'prop1', isUserProperty: false, compareConfigs: ["mockConfig"],
+        isComparison: true, hasCompareDiffs: true
+      });
+    });
   });
 
   describe('#showSaveConfigsPopup', function () {