Browse Source

AMBARI-10377. Small refactor of save configs part on service page (ababiichuk via srimanth)

Srimanth Gunturi 10 năm trước cách đây
mục cha
commit
2d30cd5736

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

@@ -83,12 +83,6 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ServerValidatorM
    */
   selectedVersion: null,
 
-  /**
-   * file names of changed configs
-   * @type {string[]}
-   */
-  modifiedFileNames: [],
-
   /**
    * note passed on configs save
    * @type {string}
@@ -236,18 +230,6 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ServerValidatorM
     }
   ],
 
-  /**
-   * List of heapsize properties not to be parsed
-   * @type {string[]}
-   */
-  heapsizeException: ['hadoop_heapsize', 'yarn_heapsize', 'nodemanager_heapsize', 'resourcemanager_heapsize', 'apptimelineserver_heapsize', 'jobhistory_heapsize', 'nfsgateway_heapsize'],
-
-  /**
-   * Regular expression for heapsize properties detection
-   * @type {regexp}
-   */
-  heapsizeRegExp: /_heapsize|_newsize|_maxnewsize|_permsize|_maxpermsize$/,
-
   /**
    * Dropdown menu items in filter combobox
    * @type {{attributeName: string, attributeValue: string, name: string, selected: boolean}[]}
@@ -297,9 +279,9 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ServerValidatorM
       this.get('requestInProgress').abort();
       this.set('requestInProgress', null);
     }
+    this.clearSaveInfo();
     this.setProperties({
       saveInProgress: false,
-      modifiedFileNames: [],
       isInit: true,
       hash: null,
       forceTransition: false,
@@ -1008,16 +990,6 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ServerValidatorM
     return newSCP;
   },
 
-  /**
-   * method to run saving configs
-   * @method saveStepConfigs
-   */
-  saveStepConfigs: function() {
-    if (!this.get("isSubmitDisabled")) {
-      this.startSave();
-      this.showWarningPopupsBeforeSave();
-    }
-  },
   /**
    * Array of Objects
    * {
@@ -1029,7 +1001,7 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ServerValidatorM
    * }
    */
 
-  hostComponentsmapping: [
+  hostComponentsMapping: [
     {
       hostProperty: 'snamenode_host',
       componentName: 'SECONDARY_NAMENODE',
@@ -1149,7 +1121,7 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ServerValidatorM
       console.log("No NameNode Host available.  This is expected if you're using GLUSTERFS rather than HDFS.");
     }
 
-    var hostProperties = this.get('hostComponentsmapping').filter(function (h) {
+    var hostProperties = this.get('hostComponentsMapping').filter(function (h) {
       return h.serviceUseThis.contains(serviceName) || h.serviceName == serviceName;
     });
     hostProperties.forEach(function (h) {

+ 32 - 1
ambari-web/app/controllers/wizard/step8_controller.js

@@ -1619,7 +1619,7 @@ App.WizardStep8Controller = Em.Controller.extend(App.AddSecurityConfigs, App.wiz
       configGroup.properties.forEach(function (property) {
         groupConfigs.push(Em.Object.create(property));
       });
-      groupData.desired_configs = serviceConfigController.buildGroupDesiredConfigs.call(serviceConfigController, groupConfigs, timeTag);
+      groupData.desired_configs = this.buildGroupDesiredConfigs(groupConfigs, timeTag);
       // check for group from installed service
       if (configGroup.isForInstalledService === true) {
         // if group is a new one, create it
@@ -1644,6 +1644,37 @@ App.WizardStep8Controller = Em.Controller.extend(App.AddSecurityConfigs, App.wiz
     }
   },
 
+  /**
+   * construct desired_configs for config groups from overriden properties
+   * @param configs
+   * @param timeTag
+   * @return {Array}
+   * @private
+   * @method buildGroupDesiredConfigs
+   */
+  buildGroupDesiredConfigs: function (configs, timeTag) {
+    var sites = [];
+    var time = timeTag || (new Date).getTime();
+    var siteFileNames = configs.mapProperty('filename').uniq();
+    sites = siteFileNames.map(function (filename) {
+      return {
+        type: filename.replace('.xml', ''),
+        tag: 'version' + time,
+        properties: []
+      };
+    });
+
+    configs.forEach(function (config) {
+      var type = config.get('filename').replace('.xml', '');
+      var site = sites.findProperty('type', type);
+      site.properties.push(config);
+    });
+
+    return sites.map(function (site) {
+      return this.createSiteObj(site.type, site.tag, site.properties);
+    }, this);
+  },
+
   /**
    * Create new config groups request
    * Queued request

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 741 - 565
ambari-web/app/mixins/common/configs/configs_saver.js


+ 5 - 1
ambari-web/app/views/common/modal_popups/dependent_configs_list_popup.js

@@ -22,10 +22,11 @@ var App = require('app');
  * Show confirmation popup
  * @param {[Object]} configs
  * @param {function} [callback=null]
+ * @param {function} [secondary=null]
  * we use this parameter to defer saving configs before we make some decisions.
  * @return {App.ModalPopup}
  */
-App.showDependentConfigsPopup = function (configs, callback) {
+App.showDependentConfigsPopup = function (configs, callback, secondary) {
   return App.ModalPopup.show({
     encodeBody: false,
     header: Em.I18n.t('popup.dependent.configs.header'),
@@ -51,6 +52,9 @@ App.showDependentConfigsPopup = function (configs, callback) {
       configs.forEach(function(c) {
         Em.set(c, 'saveRecommended', Em.get(c, 'saveRecommendedDefault'));
       });
+      if (secondary) {
+        secondary();
+      }
     }
   });
 };

+ 4 - 164
ambari-web/test/controllers/main/service/info/config_test.js

@@ -377,120 +377,7 @@ describe("App.MainServiceInfoConfigsController", function () {
     });
   });
 
-  describe("#setServerConfigValue", function () {
-
-    it("parsing storm.zookeeper.servers property in non standart method", function () {
-      expect(mainServiceInfoConfigsController.setServerConfigValue("storm.zookeeper.servers", ["a", "b"])).to.equal('[\'a\',\'b\']');
-    });
-    it("parsing default properties", function () {
-      expect(mainServiceInfoConfigsController.setServerConfigValue("any.other.property", "value")).to.equal("value");
-    });
-  });
-
-  describe("#createSiteObj", function () {
-
-    var tests = [
-      {
-        siteName: "hdfs-site",
-        tagName: "version1",
-        siteObj: Em.A([
-          {
-            name: "property1",
-            value: "value1"
-          },
-          {
-            name: "property2",
-            value: "value2<"
-          },
-          {
-            name: "property_heapsize",
-            value: "value3"
-          },
-          {
-            name: "property_permsize",
-            value: "value4m"
-          }
-        ]),
-        result: {
-          "type": "hdfs-site",
-          "tag": "version1",
-          "properties": {
-            "property1": "value1",
-            "property2": "value2<",
-            "property_heapsize": "value3m",
-            "property_permsize": "value4m"
-          }
-        },
-        m: "default"
-      },
-      {
-        siteName: "falcon-startup.properties",
-        tagName: "version1",
-        siteObj: Em.A([
-          {
-            name: "property1",
-            value: "value1"
-          },
-          {
-            name: "property2",
-            value: "value2<"
-          }
-        ]),
-        result: {
-          "type": "falcon-startup.properties",
-          "tag": "version1",
-          "properties": {
-            "property1": "value1",
-            "property2": "value2<"
-          }
-        },
-        m: "for falcon-startup.properties"
-
-      }
-    ];
-    tests.forEach(function (t) {
-      it("create site object " + t.m, function () {
-        expect(mainServiceInfoConfigsController.createSiteObj(t.siteName, t.tagName, t.siteObj)).to.deep.eql(t.result)
-      });
-    });
-  });
-
-  describe("#createCoreSiteObj", function () {
-
-    var tests = [
-      {
-        tagName: "version1",
-        uiConfigs: Em.A([
-          Em.Object.create({
-            name: "property1",
-            value: "value1",
-            filename: "core-site.xml"
-          }),
-          Em.Object.create({
-            name: "property2",
-            value: "value2<",
-            filename: "core-site.xml"
-          })
-        ]),
-        result: {
-          "type": "core-site",
-          "tag": "version1",
-          "properties": {
-            "property1": "value1",
-            "property2": "value2<"
-          }
-        }
-      }
-    ];
-    tests.forEach(function (t) {
-      it("create core object", function () {
-        mainServiceInfoConfigsController.set("uiConfigs", t.uiConfigs);
-        expect(mainServiceInfoConfigsController.createCoreSiteObj(t.tagName)).to.deep.eql(t.result);
-      });
-    });
-  });
-
-  describe("#doPUTClusterConfigurationSites", function () {
+  describe("#putChangedConfigurations", function () {
       var sc = [
       Em.Object.create({
         configs: [
@@ -551,17 +438,17 @@ describe("App.MainServiceInfoConfigsController", function () {
     });
     it("ajax request to put cluster cfg", function () {
       mainServiceInfoConfigsController.set('stepConfigs', sc);
-      expect(mainServiceInfoConfigsController.doPUTClusterConfigurationSites([]));
+      expect(mainServiceInfoConfigsController.putChangedConfigurations([]));
       expect(App.ajax.send.calledOnce).to.be.true;
     });
     it('values should be parsed', function () {
       mainServiceInfoConfigsController.set('stepConfigs', sc);
-      mainServiceInfoConfigsController.doPUTClusterConfigurationSites([]);
+      mainServiceInfoConfigsController.putChangedConfigurations([]);
       expect(mainServiceInfoConfigsController.get('stepConfigs')[0].get('configs').mapProperty('value').uniq()).to.eql(['1024m']);
     });
     it('values should not be parsed', function () {
       mainServiceInfoConfigsController.set('stepConfigs', scExc);
-      mainServiceInfoConfigsController.doPUTClusterConfigurationSites([]);
+      mainServiceInfoConfigsController.putChangedConfigurations([]);
       expect(mainServiceInfoConfigsController.get('stepConfigs')[0].get('configs').mapProperty('value').uniq()).to.eql(['1024m']);
     });
   });
@@ -866,53 +753,6 @@ describe("App.MainServiceInfoConfigsController", function () {
 
   });
 
-  describe("#createConfigObject", function() {
-    var tests = [
-      {
-        siteName: "core-site",
-        serviceName: "HDFS",
-        method: "createCoreSiteObj"
-      },
-      {
-        siteName: "core-site",
-        serviceName: "ANY",
-        method: false
-      },
-      {
-        siteName: "any",
-        method: "createSiteObj"
-      },
-      {
-        siteName: "mapred-queue-acls",
-        method: false
-      }
-    ];
-
-    beforeEach(function() {
-      sinon.stub(mainServiceInfoConfigsController, "createCoreSiteObj", Em.K);
-      sinon.stub(mainServiceInfoConfigsController, "createSiteObj", Em.K);
-      mainServiceInfoConfigsController.set("content", {});
-    });
-
-    afterEach(function() {
-      mainServiceInfoConfigsController.createCoreSiteObj.restore();
-      mainServiceInfoConfigsController.createSiteObj.restore();
-    });
-
-    tests.forEach(function(t) {
-      it("create object for " + t.siteName + " run method " + t.method, function() {
-        mainServiceInfoConfigsController.set("content.serviceName", t.serviceName);
-        mainServiceInfoConfigsController.createConfigObject(t.siteName, "versrion1");
-        if (t.method) {
-          expect(mainServiceInfoConfigsController[t.method].calledOnce).to.equal(true);
-        } else {
-          expect(mainServiceInfoConfigsController["createCoreSiteObj"].calledOnce).to.equal(false);
-          expect(mainServiceInfoConfigsController["createSiteObj"].calledOnce).to.equal(false);
-        }
-      });
-    });
-  });
-
   describe("#putConfigGroupChanges", function() {
 
     var t = {

+ 40 - 0
ambari-web/test/mixins/common/configs/configs_saver_test.js

@@ -147,5 +147,45 @@ describe('App.ConfigsSaverMixin', function() {
       expect(instanceObject.createDesiredConfig).to.be.calledOnce
     })
   });
+
+  describe('#getModifiedConfigs', function () {
+    var configs = [
+      Em.Object.create({
+        name: 'p1',
+        filename: 'f1',
+        isNotDefaultValue: true,
+        value: 'v1'
+      }),
+      Em.Object.create({
+        name: 'p2',
+        filename: 'f1',
+        isNotDefaultValue: false,
+        value: 'v2'
+      }),
+      Em.Object.create({
+        name: 'p3',
+        filename: 'f2',
+        isNotSaved: true,
+        value: 'v4'
+      }),
+      Em.Object.create({
+        name: 'p4',
+        filename: 'f3',
+        isNotDefaultValue: false,
+        isNotSaved: false,
+        value: 'v4'
+      })
+    ];
+    it('filter out changed configs', function () {
+      expect(instanceObject.getModifiedConfigs(configs).mapProperty('name')).to.eql(['p1','p2','p3']);
+      expect(instanceObject.getModifiedConfigs(configs).mapProperty('filename').uniq()).to.eql(['f1','f2']);
+    });
+
+    it('filter out changed configs and modifiedFileNames', function () {
+      instanceObject.set('modifiedFileNames', ['f3']);
+      expect(instanceObject.getModifiedConfigs(configs).mapProperty('name')).to.eql(['p1','p2','p3','p4']);
+      expect(instanceObject.getModifiedConfigs(configs).mapProperty('filename').uniq()).to.eql(['f1','f2','f3']);
+    });
+  });
 });
 

Một số tệp đã không được hiển thị bởi vì quá nhiều tập tin thay đổi trong này khác