ソースを参照

AMBARI-6256. Remove synchronous calls that load config groups and properties of them. (akovalenko)

Aleksandr Kovalenko 11 年 前
コミット
1a90900bfe

+ 0 - 75
ambari-web/app/controllers/main/host/configs_service.js

@@ -65,81 +65,6 @@ App.MainHostServiceConfigsController = App.MainServiceInfoConfigsController.exte
     });
   },
 
-  /**
-   * This method will *not load* the overridden properties. However it will
-   * replace the value shown for properties which this host has override for.
-   * @param serviceConfigs
-   * @param loadedGroupToOverrideSiteToTagMap
-   * @param configGroups
-   */
-  loadServiceConfigHostsOverrides: function (serviceConfigs, loadedGroupToOverrideSiteToTagMap, configGroups) {
-    var configKeyToConfigMap = {};
-    serviceConfigs.forEach(function (item) {
-      configKeyToConfigMap[item.name] = item;
-    });
-    this.set('configKeyToConfigMap', configKeyToConfigMap);
-    var urlParams = this.constructUrlParams(loadedGroupToOverrideSiteToTagMap, configGroups);
-    if (urlParams.length > 0) {
-      App.ajax.send({
-        name: 'host.service_config_hosts_overrides',
-        sender: this,
-        data: {
-          urlParams: urlParams.join('|')
-        },
-        success: 'loadServiceConfigHostsOverridesSuccessCallback',
-        error: 'loadServiceConfigHostsOverridesErrorCallback'
-      });
-    }
-  },
-  /**
-   * construct URL parameters, based on groups
-   * @param loadedGroupToOverrideSiteToTagMap
-   * @param configGroups
-   * @return {Array}
-   */
-  constructUrlParams: function (loadedGroupToOverrideSiteToTagMap, configGroups) {
-    var typeTagToGroupMap = {};
-    var urlParams = [];
-    var thisHostName = this.get('host.hostName');
-    for (var group in loadedGroupToOverrideSiteToTagMap) {
-      var groupObj = configGroups.findProperty('name', group);
-      if (groupObj.get('hosts').contains(thisHostName)) {
-        var overrideTypeTags = loadedGroupToOverrideSiteToTagMap[group];
-        for (var type in overrideTypeTags) {
-          var tag = overrideTypeTags[type];
-          typeTagToGroupMap[type + "///" + tag] = groupObj;
-          urlParams.push('(type=' + type + '&tag=' + tag + ')');
-        }
-      }
-    }
-    this.set('typeTagToGroupMap', typeTagToGroupMap);
-    return urlParams;
-  },
-  /**
-   * handle configs, override their values
-   * @param data
-   */
-  loadServiceConfigHostsOverridesSuccessCallback: function (data) {
-    var typeTagToGroupMap = this.get('typeTagToGroupMap');
-    var configKeyToConfigMap = this.get('configKeyToConfigMap');
-    data.items.forEach(function (config) {
-      var group = typeTagToGroupMap[config.type + "///" + config.tag];
-      var properties = config.properties;
-      for (var prop in properties) {
-        var serviceConfig = configKeyToConfigMap[prop];
-        var hostOverrideValue = properties[prop];
-        if (serviceConfig) {
-          serviceConfig.value = hostOverrideValue;
-          serviceConfig.isOriginalSCP = false;
-          serviceConfig.group = group;
-          App.config.handleSpecialProperties(serviceConfig);
-        }
-      }
-    });
-  },
-  loadServiceConfigHostsOverridesErrorCallback: function (request, ajaxOptions, error) {
-    console.log("TRACE: error code status is: " + request.status);
-  },
   /**
    * invoke dialog for switching group of host
    */

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

@@ -337,7 +337,12 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
 
     var allConfigs = this.get('globalConfigs').concat(configs);
     //STEP 9: Load and add overriden configs of group
-    App.config.loadServiceConfigGroupOverrides(allConfigs, this.loadedGroupToOverrideSiteToTagMap, this.get('configGroups'));
+    App.config.loadServiceConfigGroupOverrides(allConfigs, this.loadedGroupToOverrideSiteToTagMap, this.get('configGroups'), this.onLoadOverrides, this);
+  }.observes('selectedConfigGroup'),
+
+  onLoadOverrides: function (allConfigs) {
+    var serviceName = this.get('content.serviceName');
+    var advancedConfigs = this.get('advancedConfigs');
     //STEP 10: creation of serviceConfig object which contains configs for current service
     var serviceConfig = App.config.createServiceConfig(serviceName);
     //STEP11: Make SecondaryNameNode invisible on enabling namenode HA
@@ -367,8 +372,7 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
       this.set('hash', this.getHash());
       this.set('isInit', false);
     }
-
-  }.observes('selectedConfigGroup'),
+  },
 
   /**
    * Changes format from Object to Array

+ 12 - 2
ambari-web/app/controllers/wizard/step7_controller.js

@@ -77,6 +77,8 @@ App.WizardStep7Controller = Em.Controller.extend({
    */
   groupsToDelete: [],
 
+  preSelectedConfigGroup: null,
+
   /**
    * Currently selected config group
    * @type {object}
@@ -317,12 +319,20 @@ App.WizardStep7Controller = Em.Controller.extend({
           }, this);
         }, this);
       }
-      App.config.loadServiceConfigGroupOverrides(service.get('configs'), loadedGroupToOverrideSiteToTagMap, service.get('configGroups'));
+      this.set('preSelectedConfigGroup', selectedConfigGroup);
+      App.config.loadServiceConfigGroupOverrides(service.get('configs'), loadedGroupToOverrideSiteToTagMap, service.get('configGroups'), this.onLoadOverrides, this);
+    }
+  },
+
+  onLoadOverrides: function (configs) {
+    var serviceName = configs[0].serviceName,
+        service = this.get('stepConfigs').findProperty('serviceName', serviceName);
+    if (App.get('supports.hostOverrides')) {
       var serviceConfig = App.config.createServiceConfig(serviceName);
       if (serviceConfig.get('serviceName') === 'HDFS') {
         App.config.OnNnHAHideSnn(serviceConfig);
       }
-      service.set('selectedConfigGroup', selectedConfigGroup);
+      service.set('selectedConfigGroup', this.get('preSelectedConfigGroup'));
       this.loadComponentConfigs(service.get('configs'), serviceConfig, service);
     }
     service.set('configs', serviceConfig.get('configs'));

+ 1 - 17
ambari-web/app/utils/ajax/ajax.js

@@ -369,12 +369,7 @@ var urls = {
   },
   'config.host_overrides': {
     'real': '/clusters/{clusterName}/configurations?{params}',
-    'mock': '/data/configurations/host_level_overrides_configs.json?{params}',
-    'format': function() {
-      return {
-        async: false
-      };
-    }
+    'mock': '/data/configurations/host_level_overrides_configs.json?{params}'
   },
 
   'host.host_component.delete': {
@@ -899,16 +894,6 @@ var urls = {
     'mock': '/data/hosts/metrics/processes.json',
     'testInProduction': true
   },
-  'host.service_config_hosts_overrides': {
-    'real': '/clusters/{clusterName}/configurations?{urlParams}',
-    'mock': '',
-    'format': function() {
-      return {
-        async: false,
-        timeout: 10000
-      };
-    }
-  },
   'admin.security_status': {
     'real': '/clusters/{clusterName}?fields=Clusters/desired_configs',
     'mock': '',
@@ -1674,7 +1659,6 @@ var urls = {
     'mock': '',
     'format': function (data) {
       return {
-        async: false,
         type: 'POST',
         data: JSON.stringify([{
           "ConfigGroup": {

+ 9 - 3
ambari-web/app/utils/config.js

@@ -839,9 +839,9 @@ App.config = Em.Object.create({
 
   /**
    * Get properties from server by type and tag with properties, that belong to group
-   * push them to common {serviceConfigs}
+   * push them to common {serviceConfigs} and call callback function
    */
-  loadServiceConfigGroupOverrides: function (serviceConfigs, loadedGroupToOverrideSiteToTagMap, configGroups) {
+  loadServiceConfigGroupOverrides: function (serviceConfigs, loadedGroupToOverrideSiteToTagMap, configGroups, callback, sender) {
     var configKeyToConfigMap = {};
     serviceConfigs.forEach(function (item) {
       configKeyToConfigMap[item.name] = item;
@@ -864,10 +864,15 @@ App.config = Em.Object.create({
         data: {
           params: params,
           configKeyToConfigMap: configKeyToConfigMap,
-          typeTagToGroupMap: typeTagToGroupMap
+          typeTagToGroupMap: typeTagToGroupMap,
+          callback: callback,
+          sender: sender,
+          serviceConfigs: serviceConfigs
         },
         success: 'loadServiceConfigGroupOverridesSuccess'
       });
+    } else {
+      callback.call(sender, serviceConfigs);
     }
   },
   loadServiceConfigGroupOverridesSuccess: function (data, opt, params) {
@@ -906,6 +911,7 @@ App.config = Em.Object.create({
         }
       }
     });
+    params.callback.call(params.sender, params.serviceConfigs);
   },
 
   /**