Pārlūkot izejas kodu

AMBARI-1894. Refactor configs of Capacity Scheduler category. (srimanth)

git-svn-id: https://svn.apache.org/repos/asf/incubator/ambari/trunk@1467083 13f79535-47bb-0310-9956-ffa450edef68
Srimanth 12 gadi atpakaļ
vecāks
revīzija
178da669f8

+ 2 - 0
CHANGES.txt

@@ -690,6 +690,8 @@ Trunk (unreleased changes):
 
  BUG FIXES
 
+ AMBARI-1894. Refactor configs of Capacity Scheduler category. (srimanth)
+
  AMBARI-1893. Parsing new alerts format fails. (srimanth)
 
  AMBARI-1891. Impossibility to scroll metric window after browser width 

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

@@ -423,9 +423,8 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
 
     //var serviceConfigs = this.getSitesConfigProperties(advancedConfigs);
     var configs = configSet.configs;
-    //put global configs into globalConfigs to save them separetely
+    //put global configs into globalConfigs to save them separately
     this.set('globalConfigs', configSet.globalConfigs);
-    this.set('customConfig', configSet.customConfigs);
 
     //STEP 6: add advanced configs
     App.config.addAdvancedConfigs(configs, advancedConfigs, serviceName);

+ 1 - 1
ambari-web/app/controllers/wizard/step7_controller.js

@@ -75,7 +75,7 @@ App.WizardStep7Controller = Em.Controller.extend({
     //STEP 2: Load on-site configs by service from local DB
     var storedConfigs = this.get('content.serviceConfigProperties');
     //STEP 3: Merge pre-defined configs with loaded on-site configs
-    var configs = App.config.mergePreDefinedWithStored(storedConfigs);
+    var configs = App.config.mergePreDefinedWithStored(storedConfigs, advancedConfigs);
     //STEP 4: Add advanced configs
     App.config.addAdvancedConfigs(configs, advancedConfigs);
     //STEP 5: Add custom configs

+ 64 - 50
ambari-web/app/utils/config.js

@@ -30,6 +30,8 @@ App.config = Em.Object.create({
   preDefinedCustomConfigs: require('data/custom_configs'),
   //categories which contain custom configs
   categoriesWithCustom: ['CapacityScheduler'],
+  //configs with these filenames go to appropriate category not in Advanced
+  customFileNames: ['capacity-scheduler.xml', 'mapred-queue-acls.xml'],
   /**
    * Cache of loaded configurations. This is useful in not loading
    * same configuration multiple times. It is populated in multiple
@@ -78,11 +80,11 @@ App.config = Em.Object.create({
   mergePreDefinedWithLoaded: function (configGroups, advancedConfigs, tags, serviceName) {
     var configs = [];
     var globalConfigs = [];
-    var customConfigs = [];
     var preDefinedConfigs = this.get('preDefinedConfigProperties');
     var mappingConfigs = [];
 
     tags.forEach(function (_tag) {
+      var isAdvanced = null;
       var properties = configGroups.filter(function (serviceConfigProperties) {
         return _tag.tagName === serviceConfigProperties.tag && _tag.siteName === serviceConfigProperties.type;
       });
@@ -137,19 +139,20 @@ App.config = Em.Object.create({
           serviceConfigObj.options = configsPropertyDef ? configsPropertyDef.options : null;
           globalConfigs.push(serviceConfigObj);
         } else if (!this.get('configMapping').computed().someProperty('name', index)) {
+          isAdvanced = advancedConfigs.someProperty('name', index);
           serviceConfigObj.id = 'site property';
           serviceConfigObj.displayType = 'advanced';
           serviceConfigObj.displayName = configsPropertyDef ? configsPropertyDef.displayName : index;
           serviceConfigObj.serviceName = serviceName;
-          if (advancedConfigs.someProperty('name', index)) {
-            serviceConfigObj.category = 'Advanced';
-            serviceConfigObj.filename = advancedConfigs.findProperty('name', index).filename;
-          } else {
+          if (!isAdvanced || this.get('customFileNames').contains(serviceConfigObj.filename)) {
             var categoryMetaData = this.identifyCategory(serviceConfigObj);
             if (categoryMetaData != null) {
               serviceConfigObj.category = categoryMetaData.get('name');
-              serviceConfigObj.isUserProperty = true;
+              if(!isAdvanced) serviceConfigObj.isUserProperty = true;
             }
+          } else {
+            serviceConfigObj.category = 'Advanced';
+            serviceConfigObj.filename = isAdvanced && advancedConfigs.findProperty('name', index).filename;
           }
           configs.push(serviceConfigObj);
         } else {
@@ -160,63 +163,71 @@ App.config = Em.Object.create({
     return {
       configs: configs,
       globalConfigs: globalConfigs,
-      mappingConfigs: mappingConfigs,
-      customConfigs: customConfigs
+      mappingConfigs: mappingConfigs
     }
   },
 
   /**
    * merge stored configs with pre-defined
    * @param storedConfigs
+   * @param advancedConfigs
    * @return {*}
    */
-  mergePreDefinedWithStored: function (storedConfigs) {
+  mergePreDefinedWithStored: function (storedConfigs, advancedConfigs) {
     var mergedConfigs = [];
     var preDefinedConfigs = $.extend(true, [], this.get('preDefinedConfigProperties'));
     var preDefinedNames = [];
     var storedNames = [];
     var names = [];
+    var categoryMetaData = null;
+    storedConfigs = (storedConfigs) ? storedConfigs : [];
 
-    if (storedConfigs) {
-      preDefinedNames = this.get('preDefinedConfigProperties').mapProperty('name');
-      storedNames = storedConfigs.mapProperty('name');
-      names = preDefinedNames.concat(storedNames).uniq();
-      names.forEach(function (name) {
-        var stored = storedConfigs.findProperty('name', name);
-        var preDefined = preDefinedConfigs.findProperty('name', name);
-        var configData = {};
-        var configCategory = 'Advanced';
-        if (preDefined && stored) {
-          configData = preDefined;
-          configData.value = stored.value;
-          configData.overrides = stored.overrides;
-        } else if (!preDefined && stored) {
-          var categoryMetaData = this.identifyCategory(stored);
+    preDefinedNames = this.get('preDefinedConfigProperties').mapProperty('name');
+    storedNames = storedConfigs.mapProperty('name');
+    names = preDefinedNames.concat(storedNames).uniq();
+    names.forEach(function (name) {
+      var stored = storedConfigs.findProperty('name', name);
+      var preDefined = preDefinedConfigs.findProperty('name', name);
+      var configData = {};
+      var configCategory = 'Advanced';
+      var isAdvanced = advancedConfigs.someProperty('name', name);
+      if (preDefined && stored) {
+        configData = preDefined;
+        configData.value = stored.value;
+        configData.overrides = stored.overrides;
+        if (isAdvanced) {
+          configData.category = (configData.category === undefined) ? configCategory : configData.category;
+        }
+      } else if (!preDefined && stored) {
+        configData = {
+          id: stored.id,
+          name: stored.name,
+          displayName: stored.name,
+          serviceName: stored.serviceName,
+          value: stored.value,
+          defaultValue: stored.defaultValue,
+          displayType: "advanced",
+          filename: stored.filename,
+          category: configCategory,
+          isUserProperty: stored.isUserProperty === true,
+          isOverridable: true,
+          overrides: stored.overrides
+        }
+        if (!isAdvanced || this.get('customFileNames').contains(configData.filename)) {
+          var categoryMetaData = this.identifyCategory(configData);
           if (categoryMetaData != null) {
-            configCategory = categoryMetaData.get('name');
+            configData.category = categoryMetaData.get('name');
+            if(!isAdvanced) configData.isUserProperty = true;
           }
-          configData = {
-            id: stored.id,
-            name: stored.name,
-            displayName: stored.name,
-            serviceName: stored.serviceName,
-            value: stored.value,
-            defaultValue: stored.defaultValue,
-            displayType: "advanced",
-            filename: stored.filename,
-            category: configCategory,
-            isUserProperty: true,
-            isOverridable: true,
-            overrides: stored.overrides
-          }
-        } else if (preDefined && !stored) {
-          configData = preDefined;
         }
-        mergedConfigs.push(configData);
-      }, this);
-    } else {
-      return preDefinedConfigs;
-    }
+      } else if (preDefined && !stored) {
+        configData = preDefined;
+        if (isAdvanced) {
+          configData.category = (configData.category === undefined) ? configCategory : configData.category;
+        }
+      }
+      mergedConfigs.push(configData);
+    }, this);
     return mergedConfigs;
   },
   /**
@@ -228,14 +239,17 @@ App.config = Em.Object.create({
    */
   addAdvancedConfigs: function (serviceConfigs, advancedConfigs, serviceName) {
     serviceConfigs = (serviceName) ? serviceConfigs.filterProperty('serviceName', serviceName) : serviceConfigs;
-    var configCategory = 'Advanced';
     advancedConfigs.forEach(function (_config) {
+      var configCategory = 'Advanced';
+      var categoryMetaData = null;
       if (_config) {
         if (this.get('configMapping').computed().someProperty('name', _config.name)) {
         } else if (!(serviceConfigs.someProperty('name', _config.name))) {
-          var categoryMetaData = this.identifyCategory(_config);
-          if (categoryMetaData != null) {
-            configCategory = categoryMetaData.get('name');
+          if(this.get('customFileNames').contains(_config.filename)){
+            categoryMetaData = this.identifyCategory(_config);
+            if (categoryMetaData != null) {
+              configCategory = categoryMetaData.get('name');
+            }
           }
           _config.id = "site property";
           _config.category = configCategory;