You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by at...@apache.org on 2014/09/16 13:33:15 UTC
git commit: AMBARI-7328 Config versions have wrong values after
switching groups. (atkach)
Repository: ambari
Updated Branches:
refs/heads/trunk 127978c24 -> bd04a28e1
AMBARI-7328 Config versions have wrong values after switching groups. (atkach)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/bd04a28e
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/bd04a28e
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/bd04a28e
Branch: refs/heads/trunk
Commit: bd04a28e14171f8d64fb6b62678a0a441f444005
Parents: 127978c
Author: atkach <at...@hortonworks.com>
Authored: Tue Sep 16 14:30:45 2014 +0300
Committer: atkach <at...@hortonworks.com>
Committed: Tue Sep 16 14:30:45 2014 +0300
----------------------------------------------------------------------
.../controllers/main/service/info/configs.js | 113 +++++++++++++------
ambari-web/app/utils/ajax/ajax.js | 9 ++
.../views/common/configs/config_history_flow.js | 2 +-
3 files changed, 86 insertions(+), 38 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/bd04a28e/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 2f79685..e10a0ba 100644
--- a/ambari-web/app/controllers/main/service/info/configs.js
+++ b/ambari-web/app/controllers/main/service/info/configs.js
@@ -48,8 +48,8 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ServerValidatorM
preSelectedConfigVersion: null,
// contain Service Config Property, when user proceed from Select Config Group dialog
overrideToAdd: null,
- //latest version of service config versions
- currentVersion: null,
+ //version of default config group, configs of which currently applied
+ currentDefaultVersion: null,
//version selected to view
selectedVersion: null,
// file names of changed configs
@@ -58,8 +58,8 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ServerValidatorM
serviceConfigVersionNote: '',
versionLoaded: false,
isCurrentSelected: function () {
- return this.get('selectedVersion') === this.get('currentVersion');
- }.property('selectedVersion', 'currentVersion'),
+ return App.ServiceConfigVersion.find(this.get('content.serviceName') + "_" + this.get('selectedVersion')).get('isCurrent');
+ }.property('selectedVersion'),
serviceConfigs: function () {
return App.config.get('preDefinedServiceConfigs');
}.property('App.config.preDefinedServiceConfigs'),
@@ -179,6 +179,16 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ServerValidatorM
}.property('propertyFilters', 'isCompareMode'),
/**
+ * indicate wtether service config version belongs to default config group
+ * @method isVersionDefault
+ * @param version
+ * @return {Boolean}
+ */
+ isVersionDefault: function(version) {
+ return version && version.get('groupId') == -1;
+ },
+
+ /**
* clear and set properties to default value
*/
clearStep: function () {
@@ -290,41 +300,45 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ServerValidatorM
/**
* load service config versions to model
- * set currentVersion
+ * set currentDefaultVersion
* @param data
* @param opt
* @param params
*/
loadServiceConfigVersionsSuccess: function (data, opt, params) {
App.serviceConfigVersionsMapper.map(data);
+ this.set('currentDefaultVersion', data.items.filterProperty('group_id', -1).findProperty('is_current').service_config_version);
if (this.get('preSelectedConfigVersion')) {
- this.set('currentVersion', this.get('preSelectedConfigVersion.version'));
+ this.loadSelectedVersion(this.get('preSelectedConfigVersion.version'));
} else {
- this.set('currentVersion', data.items.filterProperty('group_id', -1).findProperty('is_current').service_config_version);
+ this.loadSelectedVersion();
}
- this.loadSelectedVersion();
},
/**
* get selected service config version
- * In case selected version is undefined then take currentVersion
+ * In case selected version is undefined then take currentDefaultVersion
* @param version
*/
loadSelectedVersion: function (version) {
var self = this;
this.set('versionLoaded', false);
- var groupName = App.ServiceConfigVersion.find(this.get('content.serviceName') + "_" + version).get('groupName');
+ version = version || this.get('currentDefaultVersion');
+ var versionRecord = App.ServiceConfigVersion.find(this.get('content.serviceName') + "_" + version);
+ //version of non-default group require properties from current version of default group to correctly display page
+ var versions = (this.isVersionDefault(versionRecord)) ? [version] : [this.get('currentDefaultVersion'), version];
- if (self.get('dataIsLoaded') && !(groupName && this.get('selectedConfigGroup.name') === groupName)) {
+ //if version from default group selected then switch to default group
+ if (self.get('dataIsLoaded') && this.isVersionDefault(versionRecord)) {
this.set('selectedConfigGroup', this.get('configGroups').findProperty('isDefault'));
}
App.ajax.send({
- name: 'service.serviceConfigVersion.get',
+ name: 'service.serviceConfigVersions.get.multiple',
sender: this,
data: {
serviceName: this.get('content.serviceName'),
- serviceConfigVersion: version || this.get('currentVersion')
+ serviceConfigVersions: versions
},
success: 'loadSelectedVersionSuccess'
}).complete(function () {
@@ -346,18 +360,36 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ServerValidatorM
var serviceConfigsDef = this.get('serviceConfigs').findProperty('serviceName', this.get('content.serviceName'));
var siteToTagMap = {};
var configTypesRendered = Object.keys(serviceConfigsDef.get('configTypesRendered'));
+ var selectedVersion = params.serviceConfigVersions.length > 1 ? params.serviceConfigVersions[1] : params.serviceConfigVersions[0];
+ var configurations = [];
+
configTypesRendered.forEach(function (siteName) {
- if (data.items[0].configurations.someProperty('type', siteName)) {
- siteToTagMap[siteName] = data.items[0].configurations.findProperty('type', siteName).tag;
- } else {
- siteToTagMap[siteName] = 'version1';
- }
+ data.items.forEach(function (item) {
+ if (item.group_id == -1) {
+ configurations = item.configurations;
+ if (item.configurations.someProperty('type', siteName)) {
+ siteToTagMap[siteName] = item.configurations.findProperty('type', siteName).tag;
+ } else {
+ siteToTagMap[siteName] = 'version1';
+ }
+ } else {
+ //set config tags of non-default config group to load overrides from selected version
+ this.loadedGroupToOverrideSiteToTagMap[item.group_name] = {};
+ item.configurations.forEach(function (config) {
+ this.loadedGroupToOverrideSiteToTagMap[item.group_name][config.type] = config.tag;
+ }, this)
+ }
+ }, this)
}, this);
- App.router.get('configurationController').saveToDB(data.items[0].configurations);
+ App.router.get('configurationController').saveToDB(configurations);
this.loadedClusterSiteToTagMap = siteToTagMap;
- this.set('selectedVersion', params.serviceConfigVersion);
+ this.set('selectedVersion', selectedVersion);
+ //reset map if selected current version of default group
+ if (this.get('isCurrentSelected') && selectedVersion === this.get('currentDefaultVersion')) {
+ this.loadedGroupToOverrideSiteToTagMap = {};
+ }
},
/**
@@ -376,19 +408,19 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ServerValidatorM
},
loadServiceConfigsSuccess: function (data, opt, params) {
+ if (App.get('supports.configHistory')) {
+ this.setConfigGroups(data, opt, params);
+ return;
+ }
if (data) {
this.setConfigGroups(data, opt, params);
} else {
- if (!App.get('supports.configHistory')) {
- App.ajax.send({
- name: 'config.tags',
- sender: this,
- data: App.permit(params, ['clusterName', 'serviceConfigsDef', 'serviceName']),
- success: 'setConfigGroups'
- });
- } else {
- this.setConfigGroups(data, opt, params);
- }
+ App.ajax.send({
+ name: 'config.tags',
+ sender: this,
+ data: App.permit(params, ['clusterName', 'serviceConfigsDef', 'serviceName']),
+ success: 'setConfigGroups'
+ });
}
},
@@ -480,15 +512,20 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ServerValidatorM
var selectedConfigGroup = this.get('selectedConfigGroup');
var serviceName = this.get('content.serviceName');
//STEP 1: handle tags from JSON data for host overrides
- this.loadedGroupToOverrideSiteToTagMap = {};
+ if (!App.supports.configHistory) {
+ //if config history enabled then loadedGroupToOverrideSiteToTagMap already has content set in loadSelectedVersionSuccess()
+ this.loadedGroupToOverrideSiteToTagMap = {};
+ }
var configGroupsWithOverrides = selectedConfigGroup.get('isDefault') && !this.get('isHostsConfigsPage') ? this.get('configGroups') : [selectedConfigGroup];
configGroupsWithOverrides.forEach(function (item) {
var groupName = item.get('name');
- this.loadedGroupToOverrideSiteToTagMap[groupName] = {};
- item.get('configSiteTags').forEach(function (siteTag) {
- var site = siteTag.get('site');
- this.loadedGroupToOverrideSiteToTagMap[groupName][site] = siteTag.get('tag');
- }, this);
+ if (Em.isNone(this.loadedGroupToOverrideSiteToTagMap[groupName])) {
+ this.loadedGroupToOverrideSiteToTagMap[groupName] = {};
+ item.get('configSiteTags').forEach(function (siteTag) {
+ var site = siteTag.get('site');
+ this.loadedGroupToOverrideSiteToTagMap[groupName][site] = siteTag.get('tag');
+ }, this);
+ }
}, this);
//STEP 2: Create an array of objects defining tag names to be polled and new tag names to be set after submit
this.setServiceConfigTags(this.loadedClusterSiteToTagMap);
@@ -515,7 +552,7 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ServerValidatorM
//STEP load configs of version being compared against
self.loadCompareVersionConfigs(self.get('allConfigs')).done(function (isComparison) {
//STEP 9: Load and add overriden configs of group
- if (!isComparison && self.get('isCurrentSelected')) {
+ if (!isComparison && (!self.get('selectedConfigGroup').get('isDefault') || self.get('isCurrentSelected'))) {
App.config.loadServiceConfigGroupOverrides(self.get('allConfigs'), self.get('loadedGroupToOverrideSiteToTagMap'), self.get('configGroups'), self.onLoadOverrides, self);
} else {
self.onLoadOverrides(self.get('allConfigs'));
@@ -2560,6 +2597,8 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ServerValidatorM
return;
}
}
+ //clean when switch config group
+ this.loadedGroupToOverrideSiteToTagMap = {};
this.set('selectedConfigGroup', event.context);
},
http://git-wip-us.apache.org/repos/asf/ambari/blob/bd04a28e/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 3d1fda9..2dceaa5 100644
--- a/ambari-web/app/utils/ajax/ajax.js
+++ b/ambari-web/app/utils/ajax/ajax.js
@@ -1906,6 +1906,15 @@ var urls = {
real: '/clusters/{clusterName}/configurations/service_config_versions?service_name={serviceName}&service_config_version={serviceConfigVersion}',
mock: '/data/configurations/service_version.json'
},
+ 'service.serviceConfigVersions.get.multiple': {
+ real: '/clusters/{clusterName}/configurations/service_config_versions?service_name={serviceName}&service_config_version.in({serviceConfigVersions})',
+ mock: '/data/configurations/service_version.json',
+ format: function(data) {
+ return {
+ serviceConfigVersions: data.serviceConfigVersions.join(',')
+ }
+ }
+ },
'service.serviceConfigVersion.revert': {
'real': '/clusters/{clusterName}',
'mock': '',
http://git-wip-us.apache.org/repos/asf/ambari/blob/bd04a28e/ambari-web/app/views/common/configs/config_history_flow.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/common/configs/config_history_flow.js b/ambari-web/app/views/common/configs/config_history_flow.js
index 1fe7d23..a9c36f4 100644
--- a/ambari-web/app/views/common/configs/config_history_flow.js
+++ b/ambari-web/app/views/common/configs/config_history_flow.js
@@ -159,7 +159,7 @@ App.ConfigHistoryFlowView = Em.View.extend({
var serviceVersions = this.get('serviceVersions');
var startIndex = 0;
var currentIndex = 0;
- var selectedVersion = this.get('controller.currentVersion');
+ var selectedVersion = this.get('controller.selectedVersion');
serviceVersions.setEach('isDisplayed', false);