Repository: ambari
Updated Branches:
  refs/heads/trunk 4cc243df0 -> 2293a285a


AMBARI-6503 Remove synchronous calls that load configs. (atkach)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/2293a285
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/2293a285
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/2293a285

Branch: refs/heads/trunk
Commit: 2293a285a8f018f6e2da45e24e213c5192d447a4
Parents: 4cc243d
Author: atkach <atk...@hortonworks.com>
Authored: Wed Jul 16 17:48:18 2014 +0300
Committer: atkach <atk...@hortonworks.com>
Committed: Wed Jul 16 17:48:18 2014 +0300

----------------------------------------------------------------------
 .../global/configuration_controller.js          | 51 +++++++++-----
 .../main/admin/highAvailability_controller.js   | 12 ++--
 .../controllers/main/admin/misc_controller.js   | 24 ++++---
 .../app/controllers/main/admin/security.js      |  9 +--
 .../controllers/main/mirroring_controller.js    |  7 +-
 .../controllers/main/service/info/configs.js    | 40 ++++++-----
 .../main/service/reassign_controller.js         | 20 +++---
 .../app/controllers/wizard/step7_controller.js  | 73 ++++++++++----------
 ambari-web/app/utils/ajax/ajax.js               |  7 +-
 ambari-web/app/utils/config.js                  | 18 +----
 .../app/views/common/quick_view_link_view.js    | 10 +--
 11 files changed, 144 insertions(+), 127 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/2293a285/ambari-web/app/controllers/global/configuration_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/global/configuration_controller.js 
b/ambari-web/app/controllers/global/configuration_controller.js
index f5aaa7a..d163be0 100644
--- a/ambari-web/app/controllers/global/configuration_controller.js
+++ b/ambari-web/app/controllers/global/configuration_controller.js
@@ -21,6 +21,12 @@ var App = require('app');
 App.ConfigurationController = Em.Controller.extend({
   name: 'configurationController',
 
+  /**
+   * get configs by tags
+   * return Deferred object with configs as argument
+   * @param tags
+   * @return {object}
+   */
   getConfigsByTags: function (tags) {
     var storedTags = [];
     App.db.getConfigs().forEach(function (site) {
@@ -54,10 +60,12 @@ App.ConfigurationController = Em.Controller.extend({
     return isDifferent;
   },
   loadFromDB: function (siteNames) {
-    var configs = App.db.getConfigs();
-    return configs.filter(function (site) {
+    var dfd = $.Deferred();
+    var configs = App.db.getConfigs().filter(function (site) {
       return (siteNames.contains(site.type));
-    })
+    });
+    dfd.resolve(configs);
+    return dfd.promise()
   },
   /**
    * load configs from server
@@ -66,19 +74,30 @@ App.ConfigurationController = Em.Controller.extend({
    * @return {Array}
    */
   loadFromServer: function (tags) {
-    var loadedConfigs = App.config.loadConfigsByTags(tags);
-    var storedConfigs = App.db.getConfigs();
-    loadedConfigs.forEach(function (loadedSite) {
-      var storedSite = storedConfigs.findProperty('type', loadedSite.type);
-      if (storedSite) {
-        storedSite.tag = loadedSite.tag;
-        storedSite.properties = loadedSite.properties;
-        storedSite.properties_attributes = loadedSite.properties_attributes;
-      } else {
-        storedConfigs.push(loadedSite);
+    var dfd = $.Deferred();
+    var loadedConfigs = [];
+    App.config.loadConfigsByTags(tags).done(function (data) {
+      if (data.items) {
+        data.items.forEach(function (item) {
+          App.config.loadedConfigurationsCache[item.type + "_" + item.tag] = 
item.properties;
+          loadedConfigs.push(item);
+        });
       }
-    });
-    App.db.setConfigs(storedConfigs);
-    return loadedConfigs;
+    }).complete(function () {
+        var storedConfigs = App.db.getConfigs();
+        loadedConfigs.forEach(function (loadedSite) {
+          var storedSite = storedConfigs.findProperty('type', loadedSite.type);
+          if (storedSite) {
+            storedSite.tag = loadedSite.tag;
+            storedSite.properties = loadedSite.properties;
+            storedSite.properties_attributes = 
loadedSite.properties_attributes;
+          } else {
+            storedConfigs.push(loadedSite);
+          }
+        });
+        App.db.setConfigs(storedConfigs);
+        dfd.resolve(loadedConfigs);
+      });
+    return dfd.promise();
   }
 });

http://git-wip-us.apache.org/repos/asf/ambari/blob/2293a285/ambari-web/app/controllers/main/admin/highAvailability_controller.js
----------------------------------------------------------------------
diff --git 
a/ambari-web/app/controllers/main/admin/highAvailability_controller.js 
b/ambari-web/app/controllers/main/admin/highAvailability_controller.js
index 2f38124..bffd178 100644
--- a/ambari-web/app/controllers/main/admin/highAvailability_controller.js
+++ b/ambari-web/app/controllers/main/admin/highAvailability_controller.js
@@ -118,17 +118,19 @@ App.MainAdminHighAvailabilityController = 
Em.Controller.extend({
    * indicate whether security is enabled
    */
   getServiceConfigsFromServer: function () {
+    var self = this;
     var tags = [
       {
         siteName: "hadoop-env",
         tagName: this.get('tag')
       }
     ];
-    var data = 
App.router.get('configurationController').getConfigsByTags(tags);
-    var configs = data.findProperty('tag', this.get('tag')).properties;
-    var securityEnabled = !!(configs && (configs['security_enabled'] === 
'true' || configs['security_enabled'] === true));
-    this.set('securityEnabled', securityEnabled);
-    this.set('dataIsLoaded', true);
+    
App.router.get('configurationController').getConfigsByTags(tags).done(function 
(data) {
+      var configs = data.findProperty('tag', self.get('tag')).properties;
+      var securityEnabled = !!(configs && (configs['security_enabled'] === 
'true' || configs['security_enabled'] === true));
+      self.set('securityEnabled', securityEnabled);
+      self.set('dataIsLoaded', true);
+    });
   },
   /**
    * join or wrap message depending on whether it is array or string

http://git-wip-us.apache.org/repos/asf/ambari/blob/2293a285/ambari-web/app/controllers/main/admin/misc_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/admin/misc_controller.js 
b/ambari-web/app/controllers/main/admin/misc_controller.js
index 83e15a2..ed43a3e 100644
--- a/ambari-web/app/controllers/main/admin/misc_controller.js
+++ b/ambari-web/app/controllers/main/admin/misc_controller.js
@@ -43,6 +43,7 @@ App.MainAdminMiscController = 
App.MainServiceInfoConfigsController.extend({
     });
   },
   loadServiceTagSuccess: function (data, opt, params) {
+    var self = this;
     var installedServices = App.Service.find().mapProperty("serviceName");
     var serviceConfigsDef = params.serviceConfigsDef;
     var serviceName = this.get('content.serviceName');
@@ -54,24 +55,25 @@ App.MainAdminMiscController = 
App.MainServiceInfoConfigsController.extend({
       }
     }
     this.setServiceConfigTags(loadedClusterSiteToTagMap);
-    var configGroups = 
App.router.get('configurationController').getConfigsByTags(this.get('serviceConfigTags'));
-    var configSet = App.config.mergePreDefinedWithLoaded(configGroups, [], 
this.get('serviceConfigTags'), serviceName);
+    
App.router.get('configurationController').getConfigsByTags(this.get('serviceConfigTags')).done(function(configGroups){
+      var configSet = App.config.mergePreDefinedWithLoaded(configGroups, [], 
self.get('serviceConfigTags'), serviceName);
 
-    var misc_configs = configSet.configs.filterProperty('serviceName', 
this.get('selectedService')).filterProperty('category', 'Users and 
Groups').filterProperty('isVisible', true);
+      var misc_configs = configSet.globalConfigs.filterProperty('serviceName', 
self.get('selectedService')).filterProperty('category', 'Users and 
Groups').filterProperty('isVisible', true);
 
-    misc_configs = App.config.miscConfigVisibleProperty(misc_configs, 
installedServices);
+      misc_configs = App.config.miscConfigVisibleProperty(misc_configs, 
installedServices);
 
-    var sortOrder = this.get('configs').filterProperty('serviceName', 
this.get('selectedService')).filterProperty('category', 'Users and 
Groups').filterProperty('isVisible', true).mapProperty('name');
+      var sortOrder = self.get('configs').filterProperty('serviceName', 
self.get('selectedService')).filterProperty('category', 'Users and 
Groups').filterProperty('isVisible', true).mapProperty('name');
 
-    //stack, with version lower than 2.1, doesn't have Falcon service
-    this.setProxyUserGroupLabel(misc_configs);
+      //stack, with version lower than 2.1, doesn't have Falcon service
+      self.setProxyUserGroupLabel(misc_configs);
 
-    this.set('users', this.sortByOrder(sortOrder, misc_configs));
+      self.set('users', self.sortByOrder(sortOrder, misc_configs));
 
-    this.setContentProperty('hdfsUser', 'hdfs_user', misc_configs);
-    this.setContentProperty('group', 'user_group', misc_configs);
+      self.setContentProperty('hdfsUser', 'hdfs_user', misc_configs);
+      self.setContentProperty('group', 'user_group', misc_configs);
 
-    this.set('dataIsLoaded', true);
+      self.set('dataIsLoaded', true);
+    });
   },
   /**
    * set config value to property of "content"

http://git-wip-us.apache.org/repos/asf/ambari/blob/2293a285/ambari-web/app/controllers/main/admin/security.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/admin/security.js 
b/ambari-web/app/controllers/main/admin/security.js
index bbf21b0..8ed62c5 100644
--- a/ambari-web/app/controllers/main/admin/security.js
+++ b/ambari-web/app/controllers/main/admin/security.js
@@ -90,6 +90,7 @@ App.MainAdminSecurityController = Em.Controller.extend({
   loadStep: function () {
     var step2Controller = 
App.router.get('mainAdminSecurityAddStep2Controller');
     var services = this.get('services');
+    var self = this;
     step2Controller.set('content', Em.Object.create({services: []}));
     step2Controller.set('content.services', services);
     this.get('stepConfigs').clear();
@@ -106,10 +107,10 @@ App.MainAdminSecurityController = Em.Controller.extend({
     services.forEach(function (_secureService) {
       this.setServiceTagNames(_secureService, this.get('desiredConfigs'));
     }, this);
-    var serverConfigs = 
App.router.get('configurationController').getConfigsByTags(this.get('serviceConfigTags'));
-    this.setConfigValuesFromServer(this.get('stepConfigs'), serverConfigs);
-
-    this.set('installedServices', 
App.Service.find().mapProperty('serviceName'));
+    
App.router.get('configurationController').getConfigsByTags(this.get('serviceConfigTags')).done(function
 (serverConfigs) {
+      self.setConfigValuesFromServer(self.get('stepConfigs'), serverConfigs);
+      self.set('installedServices', 
App.Service.find().mapProperty('serviceName'));
+    });
   },
 
   /**

http://git-wip-us.apache.org/repos/asf/ambari/blob/2293a285/ambari-web/app/controllers/main/mirroring_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/mirroring_controller.js 
b/ambari-web/app/controllers/main/mirroring_controller.js
index ea838da..4a36266 100644
--- a/ambari-web/app/controllers/main/mirroring_controller.js
+++ b/ambari-web/app/controllers/main/mirroring_controller.js
@@ -292,13 +292,14 @@ App.MainMirroringController = Em.ArrayController.extend({
 
   onLoadConfigTagsSuccess: function (data, opt, params) {
     this.set('tag', data.Clusters.desired_configs['core-site'].tag);
-    var configs = App.router.get('configurationController').getConfigsByTags([
+    App.router.get('configurationController').getConfigsByTags([
       {
         siteName: "core-site",
         tagName: this.get('tag')
       }
-    ]);
-    params.callback(configs[0].properties['fs.defaultFS']);
+    ]).done(function (configs) {
+        params.callback(configs[0].properties['fs.defaultFS']);
+      });
   },
 
   onLoadConfigTagsError: function (request, ajaxOptions, error, opt, params) {

http://git-wip-us.apache.org/repos/asf/ambari/blob/2293a285/ambari-web/app/controllers/main/service/info/configs.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/service/info/configs.js 
b/ambari-web/app/controllers/main/service/info/configs.js
index 03f6b97..27d9967 100644
--- a/ambari-web/app/controllers/main/service/info/configs.js
+++ b/ambari-web/app/controllers/main/service/info/configs.js
@@ -321,6 +321,7 @@ App.MainServiceInfoConfigsController = 
Em.Controller.extend({
   },
 
   onConfigGroupChange: function () {
+    var self = this;
     this.get('stepConfigs').clear();
     var selectedConfigGroup = this.get('selectedConfigGroup');
     var serviceName = this.get('content.serviceName');
@@ -340,25 +341,26 @@ App.MainServiceInfoConfigsController = 
Em.Controller.extend({
     //STEP 3: Load advanced configs
     var advancedConfigs = this.get('advancedConfigs');
     //STEP 4: Load on-site config by service from server
-    var configGroups = 
App.router.get('configurationController').getConfigsByTags(this.get('serviceConfigTags'));
-    //STEP 5: Merge on-site configs with pre-defined
-    var configSet = App.config.mergePreDefinedWithLoaded(configGroups, 
advancedConfigs, this.get('serviceConfigTags'), serviceName);
-    configSet = App.config.syncOrderWithPredefined(configSet);
-    //var serviceConfigs = this.getSitesConfigProperties(advancedConfigs);
-    var configs = configSet.configs;
-    //STEP 6: add advanced configs
-    App.config.addAdvancedConfigs(configs, advancedConfigs, serviceName);
-    //STEP 7: add custom configs
-    App.config.addCustomConfigs(configs);
-    //put properties from capacity-scheduler.xml into one config with textarea 
view
-    if (this.get('content.serviceName') === 'YARN' && 
!App.supports.capacitySchedulerUi) {
-      configs = App.config.fileConfigsIntoTextarea(configs, 
'capacity-scheduler.xml');
-    }
-    this.set('allConfigs', configs);
-    //STEP 8: add configs as names of host components
-    this.addHostNamesToConfig();
-    //STEP 9: Load and add overriden configs of group
-    App.config.loadServiceConfigGroupOverrides(this.get('allConfigs'), 
this.loadedGroupToOverrideSiteToTagMap, this.get('configGroups'), 
this.onLoadOverrides, this);
+    
App.router.get('configurationController').getConfigsByTags(this.get('serviceConfigTags')).done(function(configGroups){
+      //STEP 5: Merge on-site configs with pre-defined
+      var configSet = App.config.mergePreDefinedWithLoaded(configGroups, 
advancedConfigs, self.get('serviceConfigTags'), serviceName);
+      configSet = App.config.syncOrderWithPredefined(configSet);
+      //var serviceConfigs = this.getSitesConfigProperties(advancedConfigs);
+      var configs = configSet.configs;
+      //STEP 6: add advanced configs
+      App.config.addAdvancedConfigs(configs, advancedConfigs, serviceName);
+      //STEP 7: add custom configs
+      App.config.addCustomConfigs(configs);
+      //put properties from capacity-scheduler.xml into one config with 
textarea view
+      if (self.get('content.serviceName') === 'YARN' && 
!App.supports.capacitySchedulerUi) {
+        configs = App.config.fileConfigsIntoTextarea(configs, 
'capacity-scheduler.xml');
+      }
+      self.set('allConfigs', configs);
+      //STEP 8: add configs as names of host components
+      self.addHostNamesToConfig();
+      //STEP 9: Load and add overriden configs of group
+      App.config.loadServiceConfigGroupOverrides(self.get('allConfigs'), 
self.get('loadedGroupToOverrideSiteToTagMap'), self.get('configGroups'), 
self.onLoadOverrides, self);
+    });
   }.observes('selectedConfigGroup'),
 
   checkDatabaseProperties: function (serviceConfig) {

http://git-wip-us.apache.org/repos/asf/ambari/blob/2293a285/ambari-web/app/controllers/main/service/reassign_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/service/reassign_controller.js 
b/ambari-web/app/controllers/main/service/reassign_controller.js
index db39b6a..8e2feca 100644
--- a/ambari-web/app/controllers/main/service/reassign_controller.js
+++ b/ambari-web/app/controllers/main/service/reassign_controller.js
@@ -111,21 +111,23 @@ App.ReassignMasterController = 
App.WizardController.extend({
   },
 
   getServiceConfigsFromServer: function (tag) {
+    var self = this;
     var tags = [
       {
         siteName: "hadoop-env",
         tagName: tag
       }
     ];
-    var data = 
App.router.get('configurationController').getConfigsByTags(tags);
-    var configs = data.findProperty('tag', tag).properties;
-    var result = configs && (configs['security_enabled'] === 'true' || 
configs['security_enabled'] === true);
-    this.saveSecurityEnabled(result);
-    App.clusterStatus.setClusterStatus({
-      clusterName: this.get('content.cluster.name'),
-      clusterState: 'DEFAULT',
-      wizardControllerName: 'reassignMasterController',
-      localdb: App.db.data
+    
App.router.get('configurationController').getConfigsByTags(tags).data(function 
(data) {
+      var configs = data.findProperty('tag', tag).properties;
+      var result = configs && (configs['security_enabled'] === 'true' || 
configs['security_enabled'] === true);
+      self.saveSecurityEnabled(result);
+      App.clusterStatus.setClusterStatus({
+        clusterName: self.get('content.cluster.name'),
+        clusterState: 'DEFAULT',
+        wizardControllerName: 'reassignMasterController',
+        localdb: App.db.data
+      });
     });
   },
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/2293a285/ambari-web/app/controllers/wizard/step7_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/wizard/step7_controller.js 
b/ambari-web/app/controllers/wizard/step7_controller.js
index 1c4debc..357b54a 100644
--- a/ambari-web/app/controllers/wizard/step7_controller.js
+++ b/ambari-web/app/controllers/wizard/step7_controller.js
@@ -805,44 +805,47 @@ App.WizardStep7Controller = Em.Controller.extend({
     var configsMap = {};
     var configTypeMap = {};
     var configMixin = App.get('config');
+    var self = this;
 
-    
App.router.get('configurationController').getConfigsByTags(serviceConfigTags).forEach(function
 (configSite) {
-      $.extend(configsMap, configSite.properties);
-      for (var name in configSite.properties) {
-        configTypeMap[name] = configSite.type;
-      }
-    });
-    configs.forEach(function (_config) {
-      if (!Em.isNone(configsMap[_config.name])) {
-        // prevent overriding already edited properties
-        if (_config.defaultValue != configsMap[_config.name])
-          _config.value = configsMap[_config.name];
-        _config.defaultValue = configsMap[_config.name];
-        _config.hasInitialValue = true;
-        App.config.handleSpecialProperties(_config);
-        delete configsMap[_config.name];
+    
App.router.get('configurationController').getConfigsByTags(serviceConfigTags).done(function
 (configsByTags) {
+      configsByTags.forEach(function (configSite) {
+        $.extend(configsMap, configSite.properties);
+        for (var name in configSite.properties) {
+          configTypeMap[name] = configSite.type;
+        }
+      });
+      configs.forEach(function (_config) {
+        if (!Em.isNone(configsMap[_config.name])) {
+          // prevent overriding already edited properties
+          if (_config.defaultValue != configsMap[_config.name])
+            _config.value = configsMap[_config.name];
+          _config.defaultValue = configsMap[_config.name];
+          _config.hasInitialValue = true;
+          App.config.handleSpecialProperties(_config);
+          delete configsMap[_config.name];
+        }
+      });
+
+      self.setServiceDatabaseConfigs(configs);
+      //add user properties
+      for (var name in configsMap) {
+        configs.push(configMixin.addUserProperty({
+          id: 'site property',
+          name: name,
+          serviceName: 
configMixin.getServiceNameByConfigType(configTypeMap[name]),
+          value: configsMap[name],
+          defaultValue: configsMap[name],
+          filename: 
(configMixin.get('filenameExceptions').contains(configTypeMap[name])) ? 
configTypeMap[name] : configTypeMap[name] + '.xml',
+          category: 'Advanced',
+          isUserProperty: true,
+          isOverridable: true,
+          overrides: [],
+          isRequired: true,
+          isVisible: true,
+          showLabel: true
+        }, false, []));
       }
     });
-
-    this.setServiceDatabaseConfigs(configs);
-    //add user properties
-    for (var name in configsMap) {
-      configs.push(configMixin.addUserProperty({
-        id: 'site property',
-        name: name,
-        serviceName: 
configMixin.getServiceNameByConfigType(configTypeMap[name]),
-        value: configsMap[name],
-        defaultValue: configsMap[name],
-        filename: 
(configMixin.get('filenameExceptions').contains(configTypeMap[name])) ? 
configTypeMap[name] : configTypeMap[name] + '.xml',
-        category: 'Advanced',
-        isUserProperty: true,
-        isOverridable: true,
-        overrides: [],
-        isRequired: true,
-        isVisible: true,
-        showLabel: true
-      }, false, []));
-    }
   },
   /**
    * Check if Oozie or Hive use existing database then need

http://git-wip-us.apache.org/repos/asf/ambari/blob/2293a285/ambari-web/app/utils/ajax/ajax.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/utils/ajax/ajax.js 
b/ambari-web/app/utils/ajax/ajax.js
index 67d1689..8037570 100644
--- a/ambari-web/app/utils/ajax/ajax.js
+++ b/ambari-web/app/utils/ajax/ajax.js
@@ -355,12 +355,7 @@ var urls = {
   },
   'config.on_site': {
     'real': '/clusters/{clusterName}/configurations?{params}',
-    'mock': '/data/configurations/cluster_level_configs.json?{params}',
-    'format': function() {
-      return {
-        async: false
-      };
-    }
+    'mock': '/data/configurations/cluster_level_configs.json?{params}'
   },
   'config.host_overrides': {
     'real': '/clusters/{clusterName}/configurations?{params}',

http://git-wip-us.apache.org/repos/asf/ambari/blob/2293a285/ambari-web/app/utils/config.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/utils/config.js b/ambari-web/app/utils/config.js
index 0cd61db..b90f3f1 100644
--- a/ambari-web/app/utils/config.js
+++ b/ambari-web/app/utils/config.js
@@ -757,7 +757,7 @@ App.config = Em.Object.create({
   /**
    * GETs all cluster level sites in one call.
    *
-   * @return Array of all site configs
+   * @return {object}
    */
   loadConfigsByTags: function (tags) {
     var urlParams = [];
@@ -765,25 +765,13 @@ App.config = Em.Object.create({
       urlParams.push('(type=' + _tag.siteName + '&tag=' + _tag.tagName + ')');
     });
     var params = urlParams.join('|');
-    App.ajax.send({
+    return App.ajax.send({
       name: 'config.on_site',
       sender: this,
       data: {
         params: params
-      },
-      success: 'loadConfigsByTagsSuccess'
+      }
     });
-    return configGroupsByTag;
-  },
-
-  loadConfigsByTagsSuccess: function (data) {
-    if (data.items) {
-      configGroupsByTag = [];
-      data.items.forEach(function (item) {
-        this.loadedConfigurationsCache[item.type + "_" + item.tag] = 
item.properties;
-        configGroupsByTag.push(item);
-      }, this);
-    }
   },
 
   /**

http://git-wip-us.apache.org/repos/asf/ambari/blob/2293a285/ambari-web/app/views/common/quick_view_link_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/common/quick_view_link_view.js 
b/ambari-web/app/views/common/quick_view_link_view.js
index a3f1ce7..4eaf8a8 100644
--- a/ambari-web/app/views/common/quick_view_link_view.js
+++ b/ambari-web/app/views/common/quick_view_link_view.js
@@ -35,6 +35,7 @@ App.QuickViewLinks = Em.View.extend({
   loadTagsSuccess: function (data) {
     this.get('actualTags').clear();
     var tags = [];
+    var self = this;
     for (var prop in data.Clusters.desired_configs) {
       tags.push(Em.Object.create({
         siteName: prop,
@@ -42,8 +43,10 @@ App.QuickViewLinks = Em.View.extend({
       }));
     }
     this.get('actualTags').pushObjects(tags);
-    this.setConfigProperties();
-    this.getQuickLinksHosts();
+    this.setConfigProperties().done(function (data) {
+      self.get('configProperties').pushObjects(data);
+      self.getQuickLinksHosts();
+    });
   },
 
   loadTagsError: function() {
@@ -91,8 +94,7 @@ App.QuickViewLinks = Em.View.extend({
     var tags = this.get('actualTags').filter(function (tag) {
       return requiredSiteNames.contains(tag.siteName);
     });
-    var data = 
App.router.get('configurationController').getConfigsByTags(tags);
-    this.get('configProperties').pushObjects(data);
+    return App.router.get('configurationController').getConfigsByTags(tags);
   },
 
   ambariProperties: function () {

Reply via email to