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/17 14:12:28 UTC
git commit: AMBARI-7358 Configs: compare between host config group
versions shows other props. (atkach)
Repository: ambari
Updated Branches:
refs/heads/trunk f63dd8a6e -> 0fb11d23e
AMBARI-7358 Configs: compare between host config group versions shows other props. (atkach)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/0fb11d23
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/0fb11d23
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/0fb11d23
Branch: refs/heads/trunk
Commit: 0fb11d23e7c312aa34140ab7ecf3db5826a5e7ab
Parents: f63dd8a
Author: atkach <at...@hortonworks.com>
Authored: Wed Sep 17 15:10:27 2014 +0300
Committer: atkach <at...@hortonworks.com>
Committed: Wed Sep 17 15:10:27 2014 +0300
----------------------------------------------------------------------
.../controllers/main/service/info/configs.js | 237 +++++++++++++------
ambari-web/app/models/service_config.js | 1 +
.../common/configs/compare_property.hbs | 30 +--
.../common/configs/service_config_category.hbs | 6 +-
4 files changed, 192 insertions(+), 82 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/0fb11d23/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 9fcdaaa..4411667 100644
--- a/ambari-web/app/controllers/main/service/info/configs.js
+++ b/ambari-web/app/controllers/main/service/info/configs.js
@@ -185,7 +185,7 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ServerValidatorM
* @return {Boolean}
*/
isVersionDefault: function(version) {
- return version && version.get('groupId') == -1;
+ return (App.ServiceConfigVersion.find(this.get('content.serviceName') + "_" + version).get('groupId') == -1);
},
/**
@@ -324,12 +324,11 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ServerValidatorM
var self = this;
this.set('versionLoaded', false);
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];
+ var versions = (this.isVersionDefault(version)) ? [version] : [this.get('currentDefaultVersion'), version];
//if version from default group selected then switch to default group
- if (self.get('dataIsLoaded') && this.isVersionDefault(versionRecord)) {
+ if (self.get('dataIsLoaded') && this.isVersionDefault(version)) {
this.set('selectedConfigGroup', this.get('configGroups').findProperty('isDefault'));
}
@@ -569,10 +568,16 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ServerValidatorM
loadCompareVersionConfigs: function (allConfigs) {
var dfd = $.Deferred();
var self = this;
- var compareServiceVersion = this.get('compareServiceVersion');
+ var compareServiceVersions = [];
- if (compareServiceVersion) {
- this.getCompareVersionConfigs(compareServiceVersion).done(function (json) {
+ if (this.get('compareServiceVersion')) {
+ if (!this.isVersionDefault(this.get('compareServiceVersion').get('version'))) {
+ compareServiceVersions = [this.get('compareServiceVersion').get('version'), this.get('selectedVersion')];
+ } else {
+ compareServiceVersions = [this.get('compareServiceVersion').get('version')];
+ }
+
+ this.getCompareVersionConfigs(compareServiceVersions).done(function (json) {
self.initCompareConfig(allConfigs, json);
self.set('compareServiceVersion', null);
self.set('isCompareMode', true);
@@ -597,76 +602,173 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ServerValidatorM
initCompareConfig: function(allConfigs, json) {
var serviceVersionMap = {};
var configNamesMap = {};
- var serviceName = json.items[0].service_name;
- var compareServiceVersion = this.get('compareServiceVersion');
+ var serviceName = this.get('content.serviceName');
+ var compareVersionNumber = this.get('compareServiceVersion').get('version');
+ //indicate whether compared versions are from non-default group
+ var compareNonDefaultVersions = (json.items.length > 1);
+ serviceVersionMap[compareVersionNumber] = {};
+ if (compareNonDefaultVersions) {
+ serviceVersionMap[this.get('selectedVersion')] = {};
+ }
allConfigs.mapProperty('name').forEach(function(name) {
configNamesMap[name] = true;
});
- json.items[0].configurations.forEach(function (configuration) {
- if (serviceName == 'YARN' && configuration.type == 'capacity-scheduler') {
- // put all properties in a single textarea for capacity-scheduler
- var value = '';
- for (var prop in configuration.properties) {
- value += prop + '=' + configuration.properties[prop] + '\n';
- }
- serviceVersionMap[configuration.type + '-' + configuration.type] = {
- name: configuration.type,
- value: value,
- type: configuration.type,
- tag: configuration.tag,
- version: configuration.version
- };
- } else {
- for (var prop in configuration.properties) {
- serviceVersionMap[prop + '-' + configuration.type] = {
- name: prop,
- value: configuration.properties[prop],
+ json.items.forEach(function (item) {
+ item.configurations.forEach(function (configuration) {
+ if (serviceName == 'YARN' && configuration.type == 'capacity-scheduler') {
+ // put all properties in a single textarea for capacity-scheduler
+ var value = '';
+ for (var prop in configuration.properties) {
+ value += prop + '=' + configuration.properties[prop] + '\n';
+ }
+ serviceVersionMap[item.service_config_version][configuration.type + '-' + configuration.type] = {
+ name: configuration.type,
+ value: value,
type: configuration.type,
tag: configuration.tag,
- version: configuration.version
+ version: configuration.version,
+ service_config_version: item.service_config_version
};
- if (Em.isNone(configNamesMap[prop])) {
- allConfigs.push(this.getMockConfig(prop, serviceName, App.config.getOriginalFileName(configuration.type)));
+ } else {
+ for (var prop in configuration.properties) {
+ serviceVersionMap[item.service_config_version][prop + '-' + configuration.type] = {
+ name: prop,
+ value: configuration.properties[prop],
+ type: configuration.type,
+ tag: configuration.tag,
+ version: configuration.version,
+ service_config_version: item.service_config_version
+ };
+ if (Em.isNone(configNamesMap[prop])) {
+ allConfigs.push(this.getMockConfig(prop, serviceName, App.config.getOriginalFileName(configuration.type)));
+ }
}
}
- }
- if (configuration.properties_attributes && configuration.properties_attributes.final) {
- for (var final in configuration.properties_attributes.final) {
- serviceVersionMap[final + '-' + configuration.type].isFinal = (configuration.properties_attributes.final[final] === 'true');
+ if (configuration.properties_attributes && configuration.properties_attributes.final) {
+ for (var final in configuration.properties_attributes.final) {
+ serviceVersionMap[item.service_config_version][final + '-' + configuration.type].isFinal = (configuration.properties_attributes.final[final] === 'true');
+ }
}
- }
+ }, this);
}, this);
- allConfigs.forEach(function (serviceConfig) {
- // map the property in the compare version to compare with current serviceConfig
- var compareConfig = serviceVersionMap[serviceConfig.name + '-' + App.config.getConfigTagFromFileName(serviceConfig.filename)];
- var compareObject = $.extend(true, {isComparison: true}, serviceConfig);
- compareObject.serviceVersion = compareServiceVersion;
- compareObject.isEditable = false;
-
- if (compareConfig) {
- if (serviceConfig.isMock) {
- compareObject.displayType = 'string';
- compareObject.isMock = false;
- }
- serviceConfig.compareConfig = App.ServiceConfigProperty.create(compareObject);
- this.setSupportsFinal(serviceConfig.compareConfig);
- serviceConfig.compareConfig.set('isFinal', compareConfig.isFinal);
- serviceConfig.compareConfig.set('value', App.config.formatOverrideValue(serviceConfig, compareConfig.value));
- serviceConfig.isComparison = true;
- serviceConfig.hasCompareDiffs = (serviceConfig.value !== serviceConfig.compareConfig.get('value'))||
- (serviceConfig.isFinal !== (serviceConfig.compareConfig.get('isFinal') == true));
- } else if (serviceConfig.isUserProperty) {
- compareObject.isMock = true;
- compareObject.displayType = 'label';
- serviceConfig.compareConfig = App.ServiceConfigProperty.create(compareObject);
- serviceConfig.compareConfig.set('value', 'Undefined');
- serviceConfig.isComparison = true;
- serviceConfig.hasCompareDiffs = true;
+ if (compareNonDefaultVersions) {
+ allConfigs.forEach(function (serviceConfig) {
+ this.setCompareConfigs(serviceConfig, serviceVersionMap, compareVersionNumber, this.get('selectedVersion'));
+ }, this);
+ } else {
+ allConfigs.forEach(function (serviceConfig) {
+ this.setCompareDefaultGroupConfig(serviceConfig, serviceVersionMap[this.get('compareServiceVersion').get('version')]);
+ }, this);
+ }
+ },
+
+
+ /**
+ * set compare properties to service config of non-default group
+ * @param serviceConfig
+ * @param serviceVersionMap
+ * @param compareVersion
+ * @param selectedVersion
+ */
+ setCompareConfigs: function (serviceConfig, serviceVersionMap, compareVersion, selectedVersion) {
+ var compareConfig = serviceVersionMap[compareVersion][serviceConfig.name + '-' + App.config.getConfigTagFromFileName(serviceConfig.filename)];
+ var selectedConfig = serviceVersionMap[selectedVersion][serviceConfig.name + '-' + App.config.getConfigTagFromFileName(serviceConfig.filename)];
+
+ serviceConfig.compareConfigs = [];
+ serviceConfig.isComparison = true;
+
+ if (compareConfig && selectedConfig) {
+ serviceConfig.compareConfigs.push(this.getComparisonConfig(serviceConfig, compareConfig));
+ serviceConfig.compareConfigs.push(this.getComparisonConfig(serviceConfig, selectedConfig));
+ serviceConfig.hasCompareDiffs = this.hasCompareDiffs(serviceConfig.compareConfigs[0], serviceConfig.compareConfigs[1]);
+ } else if (compareConfig && !selectedConfig) {
+ serviceConfig.compareConfigs.push(this.getComparisonConfig(serviceConfig, compareConfig));
+ serviceConfig.compareConfigs.push(this.getMockComparisonConfig(selectedConfig, selectedVersion));
+ serviceConfig.hasCompareDiffs = true;
+ } else if (!compareConfig && selectedConfig) {
+ serviceConfig.compareConfigs.push(this.getMockComparisonConfig(selectedConfig, compareVersion));
+ serviceConfig.compareConfigs.push(this.getComparisonConfig(serviceConfig, selectedConfig));
+ serviceConfig.hasCompareDiffs = true;
+ }
+ },
+
+ /**
+ * init attributes and wrap mock compare config into App.ServiceConfigProperty
+ * @param serviceConfig
+ * @param compareConfig
+ * @return {object}
+ */
+ getMockComparisonConfig: function (serviceConfig, compareServiceVersion) {
+ var compareObject = $.extend(true, {isComparison: true}, serviceConfig);
+ compareObject.isEditable = false;
+
+ compareObject.serviceVersion = App.ServiceConfigVersion.find(this.get('content.serviceName') + "_" + compareServiceVersion);
+ compareObject.isMock = true;
+ compareObject.displayType = 'label';
+ compareObject = App.ServiceConfigProperty.create(compareObject);
+ compareObject.set('value', 'Undefined');
+ return compareObject;
+ },
+
+ /**
+ * init attributes and wrap compare config into App.ServiceConfigProperty
+ * @param serviceConfig
+ * @param compareConfig
+ * @return {object}
+ */
+ getComparisonConfig: function (serviceConfig, compareConfig) {
+ var compareObject = $.extend(true, {isComparison: true}, serviceConfig);
+ compareObject.isEditable = false;
+
+ if (compareConfig) {
+ if (serviceConfig.isMock) {
+ compareObject.displayType = 'string';
+ compareObject.isMock = false;
}
- }, this);
+ compareObject.serviceVersion = App.ServiceConfigVersion.find(this.get('content.serviceName') + "_" + compareConfig.service_config_version);
+ compareObject = App.ServiceConfigProperty.create(compareObject);
+ compareObject.set('isFinal', compareConfig.isFinal);
+ compareObject.set('value', App.config.formatOverrideValue(serviceConfig, compareConfig.value));
+ this.setSupportsFinal(compareObject);
+ }
+ return compareObject;
+ },
+
+ /**
+ * set compare properties to service config of default group
+ * @param serviceConfig
+ * @param serviceVersionMap
+ */
+ setCompareDefaultGroupConfig: function (serviceConfig, serviceVersionMap) {
+ // map the property in the compare version to compare with current serviceConfig
+ var compareConfig = serviceVersionMap[serviceConfig.name + '-' + App.config.getConfigTagFromFileName(serviceConfig.filename)];
+ var compareObject = {};
+
+ serviceConfig.compareConfigs = [];
+ serviceConfig.isComparison = true;
+
+ if (compareConfig) {
+ compareObject = this.getComparisonConfig(serviceConfig, compareConfig);
+ serviceConfig.hasCompareDiffs = serviceConfig.isMock || this.hasCompareDiffs(serviceConfig, compareObject);
+ serviceConfig.compareConfigs.push(compareObject);
+ } else if (serviceConfig.isUserProperty) {
+ serviceConfig.compareConfigs.push(this.getMockComparisonConfig(serviceConfig, this.get('compareServiceVersion').get('version')));
+ serviceConfig.hasCompareDiffs = true;
+ }
+ },
+
+ /**
+ * check value and final attribute of original and compare config for differencies
+ * @param originalConfig
+ * @param compareConfig
+ * @return {Boolean}
+ */
+ hasCompareDiffs: function (originalConfig, compareConfig) {
+ return (originalConfig.value !== compareConfig.value) ||
+ (originalConfig.isFinal !== (compareConfig.isFinal == true));
},
/**
@@ -701,18 +803,18 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ServerValidatorM
/**
* get configs of chosen version from server to compare
- * @param compareServiceVersion
+ * @param compareServiceVersions
* @return {$.ajax}
*/
- getCompareVersionConfigs: function (compareServiceVersion) {
+ getCompareVersionConfigs: function (compareServiceVersions) {
this.set('versionLoaded', false);
return App.ajax.send({
- name: 'service.serviceConfigVersion.get',
+ name: 'service.serviceConfigVersions.get.multiple',
sender: this,
data: {
serviceName: this.get('content.serviceName'),
- serviceConfigVersion: compareServiceVersion.get('version')
+ serviceConfigVersions: compareServiceVersions
}
});
},
@@ -1041,6 +1143,7 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ServerValidatorM
*/
setEditability: function (serviceConfigProperty, defaultGroupSelected) {
serviceConfigProperty.set('isEditable', false);
+ if (serviceConfigProperty.get('isComparison')) return;
if (App.get('isAdmin') && defaultGroupSelected && !this.get('isHostsConfigsPage') && !serviceConfigProperty.get('group')) {
serviceConfigProperty.set('isEditable', serviceConfigProperty.get('isReconfigurable'));
} else if (serviceConfigProperty.get('group') && this.get('selectedConfigGroup.name') === serviceConfigProperty.get('group.name')) {
http://git-wip-us.apache.org/repos/asf/ambari/blob/0fb11d23/ambari-web/app/models/service_config.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/models/service_config.js b/ambari-web/app/models/service_config.js
index 7d99660..963ff16 100644
--- a/ambari-web/app/models/service_config.js
+++ b/ambari-web/app/models/service_config.js
@@ -180,6 +180,7 @@ App.ServiceConfigProperty = Ember.Object.extend({
group: null, // Contain group related to this property. Set only when isOriginalSCP is false.
isUserProperty: null, // This property was added by user. Hence they get removal actions etc.
isOverridable: true,
+ compareConfigs: [],
isComparison: false,
hasCompareDiffs: false,
showLabel: true,
http://git-wip-us.apache.org/repos/asf/ambari/blob/0fb11d23/ambari-web/app/templates/common/configs/compare_property.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/common/configs/compare_property.hbs b/ambari-web/app/templates/common/configs/compare_property.hbs
index 9c8e73e..3e6ddbe 100644
--- a/ambari-web/app/templates/common/configs/compare_property.hbs
+++ b/ambari-web/app/templates/common/configs/compare_property.hbs
@@ -16,17 +16,19 @@
* limitations under the License.
}}
-<div {{bindAttr class=":control-group :overrideField"}}>
- {{view view.serviceConfigProperty.compareConfig.viewClass serviceConfigBinding="view.serviceConfigProperty.compareConfig"}}
- {{#unless view.serviceConfigProperty.compareConfig.isMock}}
- <span class="label label-info">{{view.serviceConfigProperty.compareConfig.serviceVersion.versionText}}</span>
- {{#if view.serviceConfigProperty.compareConfig.serviceVersion.isCurrent}}
- <span class="label label-success">{{t common.current}}</span>
- {{/if}}
- {{#if view.serviceConfigProperty.compareConfig.supportsFinal}}
- <a disabled="disabled" {{bindAttr class=":btn :btn-small :btn-final view.serviceConfigProperty.compareConfig.isFinal:active view.serviceConfigProperty.compareConfig.hideFinalIcon:hidden" }}>
- <i class="icon-lock"></i>
- </a>
- {{/if}}
- {{/unless}}
-</div>
+{{#each compareConfig in view.serviceConfigProperty.compareConfigs}}
+ <div {{bindAttr class=":control-group :overrideField"}}>
+ {{view compareConfig.viewClass serviceConfigBinding="compareConfig"}}
+ {{#unless compareConfig.isMock}}
+ <span class="label label-info">{{compareConfig.serviceVersion.versionText}}</span>
+ {{#if compareConfig.serviceVersion.isCurrent}}
+ <span class="label label-success">{{t common.current}}</span>
+ {{/if}}
+ {{#if compareConfig.supportsFinal}}
+ <a disabled="disabled" {{bindAttr class=":btn :btn-small :btn-final compareConfig.isFinal:active compareConfig.hideFinalIcon:hidden" }}>
+ <i class="icon-lock"></i>
+ </a>
+ {{/if}}
+ {{/unless}}
+ </div>
+{{/each}}
http://git-wip-us.apache.org/repos/asf/ambari/blob/0fb11d23/ambari-web/app/templates/common/configs/service_config_category.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/common/configs/service_config_category.hbs b/ambari-web/app/templates/common/configs/service_config_category.hbs
index 23553e2..0aaf35f 100644
--- a/ambari-web/app/templates/common/configs/service_config_category.hbs
+++ b/ambari-web/app/templates/common/configs/service_config_category.hbs
@@ -49,9 +49,13 @@
<div {{bindAttr class="errorMessage:error: warnMessage:warning: :control-group"}}>
{{view viewClass serviceConfigBinding="this" categoryConfigsAllBinding="view.categoryConfigsAll" }}
{{#if this.isComparison}}
+ {{#if controller.selectedConfigGroup.isDefault}}
<span class="label label-info">{{t dashboard.configHistory.table.version.prefix}}{{controller.selectedVersion}}</span>
- {{#if controller.isCurrentSelected}}
+ {{#if controller.isCurrentSelected}}
<span class="label label-success">{{t common.current}}</span>
+ {{/if}}
+ {{else}}
+ <span class="label label-info">{{t common.default}} {{t services.service.config.configHistory.configGroup}}</span>
{{/if}}
{{/if}}
{{#if supportsFinal}}