You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by ab...@apache.org on 2015/06/26 14:30:35 UTC
ambari git commit: AMBARI-12163 Small refactor of addOverride method.
(ababiichuk)
Repository: ambari
Updated Branches:
refs/heads/trunk 9d833ee2b -> 08450c06a
AMBARI-12163 Small refactor of addOverride method. (ababiichuk)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/08450c06
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/08450c06
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/08450c06
Branch: refs/heads/trunk
Commit: 08450c06ae8947c4713b04aa80295f9dddc7c624
Parents: 9d833ee
Author: aBabiichuk <ab...@cybervisiontech.com>
Authored: Fri Jun 26 15:06:02 2015 +0300
Committer: aBabiichuk <ab...@cybervisiontech.com>
Committed: Fri Jun 26 15:06:02 2015 +0300
----------------------------------------------------------------------
.../controllers/main/service/info/configs.js | 221 ++-----------------
.../app/controllers/wizard/step7_controller.js | 38 +---
ambari-web/app/data/host_component_mapping.js | 142 ++++++++++++
.../mixins/common/configs/enhanced_configs.js | 8 +-
.../main/service/configs/config_overridable.js | 12 +-
ambari-web/app/utils/config.js | 36 ++-
.../common/modal_popups/select_groups_popup.js | 4 +-
.../main/service/info/config_test.js | 70 +-----
.../test/controllers/wizard/step7_test.js | 23 --
ambari-web/test/utils/config_test.js | 77 +++++++
10 files changed, 299 insertions(+), 332 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/08450c06/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 cdf9eec..ba88e66 100644
--- a/ambari-web/app/controllers/main/service/info/configs.js
+++ b/ambari-web/app/controllers/main/service/info/configs.js
@@ -134,10 +134,6 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ConfigsLoader, A
return App.config.get('preDefinedServiceConfigs');
}.property('App.config.preDefinedServiceConfigs'),
- configMapping: function () {
- return App.config.get('configMapping');
- }.property('App.config.configMapping'),
-
configs: function () {
return App.config.get('preDefinedSiteProperties');
}.property('App.config.preDefinedSiteProperties'),
@@ -458,12 +454,14 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ConfigsLoader, A
if (serviceConfig) {
if (self.get('selectedConfigGroup.isDefault') || configGroup.get('name') == self.get('selectedConfigGroup.name')) {
- var override = self.createNewSCP({"value": value, "isFinal": isFinal, "group": configGroup}, serviceConfig, self.get('selectedConfigGroup.isDefault'));
- override.set('isEditable', self.get('canEdit') && configGroup.get('name') == self.get('selectedConfigGroup.name'));
- if (!serviceConfig.get('overrides')) serviceConfig.set('overrides', []);
- serviceConfig.get('overrides').pushObject(override);
- serviceConfig.set('overrideValues', serviceConfig.get('overrides').mapProperty('value'));
- serviceConfig.set('overrideIsFinalValues', serviceConfig.get('overrides').mapProperty('isFinal'));
+ var overridePlainObject = {
+ "value": value,
+ "savedValue": value,
+ "isFinal": isFinal,
+ "savedIsFinal": isFinal,
+ "isEditable": self.get('canEdit') && configGroup.get('name') == self.get('selectedConfigGroup.name')
+ };
+ App.config.createOverride(serviceConfig, overridePlainObject, configGroup);
}
} else {
allConfigs.push(App.config.createCustomGroupConfig(prop, config, configGroup));
@@ -620,187 +618,33 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ConfigsLoader, A
},
/**
- * trigger addOverrideProperty
- * @param {Object[]} configs
+ * trigger App.config.createOverride
+ * @param {Object[]} stepConfig
* @private
* @method checkOverrideProperty
*/
- checkOverrideProperty: function (componentConfig) {
+ checkOverrideProperty: function (stepConfig) {
var overrideToAdd = this.get('overrideToAdd');
- var value = Em.get(overrideToAdd, 'value');
- var isEnhanced = !!this.get('overrideToAdd.widget');
+ var value = !!this.get('overrideToAdd.widget') ? Em.get(overrideToAdd, 'value') : '';
if (overrideToAdd) {
- overrideToAdd = componentConfig.configs.filter(function(c){
+ overrideToAdd = stepConfig.configs.filter(function(c){
return c.name == overrideToAdd.name && c.filename == overrideToAdd.filename;
});
if (overrideToAdd[0]) {
- this.addOverrideProperty(overrideToAdd[0], this.get('selectedConfigGroup'), isEnhanced ? value : null);
+ App.config.createOverride(overrideToAdd[0], {"isEditable": true, "value": value}, this.get('selectedConfigGroup'));
this.set('overrideToAdd', null);
}
}
},
/**
- * create new overridden property and set appropriate fields
- * @param override
- * @param serviceConfigProperty
- * @param defaultGroupSelected
- * @returns {*}
- * @private
- * @method createNewSCP
- */
- createNewSCP: function (override, serviceConfigProperty, defaultGroupSelected) {
- var newSCP = App.ServiceConfigProperty.create(serviceConfigProperty, {
- value: Em.get(override, 'value'),
- savedValue: Em.get(override, 'value'),
- recommendedValue: serviceConfigProperty.get('recommendedValue'),
- isFinal: Em.get(override, 'isFinal'),
- savedIsFinal: Em.get(override, 'isFinal'),
- recommendedIsFinal: serviceConfigProperty.get('recommendedIsFinal'),
- group: Em.get(override, 'group'),
- supportsFinal: serviceConfigProperty.get('supportsFinal'),
- isOriginalSCP: false,
- parentSCP: serviceConfigProperty,
- overrides: null
- });
- if (defaultGroupSelected) {
- newSCP.set('isEditable', false);
- }
- newSCP.validate();
- return newSCP;
- },
-
- /**
- * Array of Objects
- * {
- * hostProperty - hostName property name for current component
- * componentName - master componentName
- * serviceName - serviceName of component
- * serviceUseThis - services that use hostname property of component(componentName)
- * m(multiple) - true if can be more than one components installed on cluster
- * }
- */
-
- hostComponentsMapping: [
- {
- hostProperty: 'snamenode_host',
- componentName: 'SECONDARY_NAMENODE',
- serviceName: 'HDFS',
- serviceUseThis: []
- },
- {
- hostProperty: 'jobtracker_host',
- componentName: 'JOBTRACKER',
- serviceName: 'MAPREDUCE2',
- serviceUseThis: []
- },
- {
- hostProperty: 'hs_host',
- componentName: 'HISTORYSERVER',
- serviceName: 'MAPREDUCE2',
- serviceUseThis: ['YARN']
- },
- {
- hostProperty: 'ats_host',
- componentName: 'APP_TIMELINE_SERVER',
- serviceName: 'YARN',
- serviceUseThis: []
- },
- {
- hostProperty: 'rm_host',
- componentName: 'RESOURCEMANAGER',
- serviceName: 'YARN',
- serviceUseThis: []
- },
- {
- hostProperty: 'hivemetastore_host',
- componentName: 'HIVE_METASTORE',
- serviceName: 'HIVE',
- serviceUseThis: ['HIVE'],
- m: true
- },
- {
- hostProperty: 'hive_ambari_host',
- componentName: 'HIVE_SERVER',
- serviceName: 'HIVE',
- serviceUseThis: []
- },
- {
- hostProperty: 'oozieserver_host',
- componentName: 'OOZIE_SERVER',
- serviceName: 'OOZIE',
- serviceUseThis: [],
- m: true
- },
- {
- hostProperty: 'oozie_ambari_host',
- componentName: 'OOZIE_SERVER',
- serviceName: 'OOZIE',
- serviceUseThis: []
- },
- {
- hostProperty: 'hbasemaster_host',
- componentName: 'HBASE_MASTER',
- serviceName: 'HBASE',
- serviceUseThis: [],
- m: true
- },
- {
- hostProperty: 'webhcatserver_host',
- componentName: 'WEBHCAT_SERVER',
- serviceName: 'HIVE',
- serviceUseThis: [],
- m: true
- },
- {
- hostProperty: 'zookeeperserver_hosts',
- componentName: 'ZOOKEEPER_SERVER',
- serviceName: 'ZOOKEEPER',
- serviceUseThis: ['HBASE', 'HIVE'],
- m: true
- },
- {
- hostProperty: 'stormuiserver_host',
- componentName: 'STORM_UI_SERVER',
- serviceName: 'STORM',
- serviceUseThis: []
- },
- {
- hostProperty: 'drpcserver_host',
- componentName: 'DRPC_SERVER',
- serviceName: 'STORM',
- serviceUseThis: []
- },
- {
- hostProperty: 'storm_rest_api_host',
- componentName: 'STORM_REST_API',
- serviceName: 'STORM',
- serviceUseThis: []
- },
- {
- hostProperty: 'supervisor_hosts',
- componentName: 'SUPERVISOR',
- serviceName: 'STORM',
- serviceUseThis: [],
- m: true
- },
- {
- hostProperty: 'rangerserver_host',
- componentName: 'RANGER_ADMIN',
- serviceName: 'RANGER',
- serviceUseThis: [],
- m: true
- }
- ],
-
- /**
* Adds host name of master component to config
* @private
* @method addHostNamesToGlobalConfig
*/
addHostNamesToConfig: function () {
var serviceName = this.get('content.serviceName');
- var configs = this.get('allConfigs');
+ var hostComponentMapping = require('data/host_component_mapping');
//namenode_host is required to derive "fs.default.name" a property of core-site
try {
this.setHostForService('HDFS', 'NAMENODE', 'namenode_host', true);
@@ -808,7 +652,7 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ConfigsLoader, A
console.log("No NameNode Host available. This is expected if you're using GLUSTERFS rather than HDFS.");
}
- var hostProperties = this.get('hostComponentsMapping').filter(function (h) {
+ var hostProperties = hostComponentMapping.filter(function (h) {
return h.serviceUseThis.contains(serviceName) || h.serviceName == serviceName;
});
hostProperties.forEach(function (h) {
@@ -951,39 +795,6 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ConfigsLoader, A
},
/**
- * add new overridden property to config property object
- * @param {object} serviceConfigProperty - config property object
- * @param {App.ConfigGroup} group - config group for new property
- * @param {String} value
- * @param {boolean} isNotSaved TODO
- * @method addOverrideProperty
- */
- addOverrideProperty: function (serviceConfigProperty, group, value, isNotSaved) {
- if (serviceConfigProperty.get('isOriginalSCP')) {
- var overrides = serviceConfigProperty.get('overrides');
- if (!overrides) {
- overrides = [];
- serviceConfigProperty.set('overrides', overrides);
- }
- // create new override with new value
- var newSCP = App.ServiceConfigProperty.create(serviceConfigProperty, {
- value: value || '',
- recommendedValue: serviceConfigProperty.get('recommendedValue'),
- recommendedIsFinal: serviceConfigProperty.get('recommendedIsFinal'),
- isOriginalSCP: false,
- parentSCP: serviceConfigProperty,
- isEditable: true,
- group: group,
- overrides: null,
- isNotSaved: isNotSaved
- });
- console.debug("createOverrideProperty(): Added:", newSCP, " to main-property:", serviceConfigProperty);
- newSCP.validate();
- overrides.pushObject(newSCP);
- }
- },
-
- /**
* trigger manageConfigurationGroups
* @method manageConfigurationGroup
*/
http://git-wip-us.apache.org/repos/asf/ambari/blob/08450c06/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 1fe79e7..810d38f 100644
--- a/ambari-web/app/controllers/wizard/step7_controller.js
+++ b/ambari-web/app/controllers/wizard/step7_controller.js
@@ -539,7 +539,9 @@ App.WizardStep7Controller = Em.Controller.extend(App.ServerValidatorMixin, App.E
if (overrideToAdd) {
overrideToAdd = componentConfig.get('configs').findProperty('name', overrideToAdd.name);
if (overrideToAdd) {
- this.addOverrideProperty(overrideToAdd);
+ var group = this.get('selectedService.configGroups').findProperty('name', this.get('selectedConfigGroup.name'));
+ var newSCP = App.config.createOverride(overrideToAdd, {isEditable: true}, group);
+ group.get('properties').pushObject(newSCP);
component.set('overrideToAdd', null);
}
}
@@ -1160,7 +1162,11 @@ App.WizardStep7Controller = Em.Controller.extend(App.ServerValidatorMixin, App.E
configOverrides = overrides.filterProperty('name', config.get('name'));
if (!selectedGroup) return config;
if (overrideToAdd && overrideToAdd.get('name') === config.get('name')) {
- configOverrides.push(this.addOverrideProperty(config));
+ var valueForOverride = (config.get('widget') || config.get('displayType') == 'checkbox') ? config.get('value') : '';
+ var group = this.get('selectedService.configGroups').findProperty('name', selectedGroup.get('name'));
+ var newSCP = App.config.createOverride(config, {value: valueForOverride, recommendedValue: valueForOverride}, group);
+ configOverrides.push(newSCP);
+ group.get('properties').pushObject(newSCP);
this.set('overrideToAdd', null);
}
configOverrides.setEach('isEditable', !selectedGroup.get('isDefault'));
@@ -1170,34 +1176,6 @@ App.WizardStep7Controller = Em.Controller.extend(App.ServerValidatorMixin, App.E
},
/**
- * create overriden property and push it into Config group
- * @param serviceConfigProperty
- * @param group
- * @param value
- * @param isNotSaved
- * @param {App.ServiceConfigProperty} serviceConfigProperty
- * @return {App.ServiceConfigProperty}
- * @method addOverrideProperty
- */
- addOverrideProperty: function (serviceConfigProperty, group, value, isNotSaved) {
- var overrides = serviceConfigProperty.get('overrides') || [];
- var newSCP = App.ServiceConfigProperty.create(serviceConfigProperty);
- group = group || this.get('selectedService.configGroups').findProperty('name', this.get('selectedConfigGroup.name'));
- var valueForOverride = (serviceConfigProperty.get('widget') || serviceConfigProperty.get('displayType') == 'checkbox') ? serviceConfigProperty.get('value') : '';
- newSCP.set('group', group);
- newSCP.set('value', value || valueForOverride);
- newSCP.set('recommendedValue', value || valueForOverride);
- newSCP.set('isOriginalSCP', false); // indicated this is overridden value,
- newSCP.set('parentSCP', serviceConfigProperty);
- newSCP.set('isEditable', true);
- newSCP.set('isNotSaved', isNotSaved);
- group.get('properties').pushObject(newSCP);
- overrides.pushObject(newSCP);
- newSCP.validate();
- return newSCP;
- },
-
- /**
* @method manageConfigurationGroup
*/
manageConfigurationGroup: function () {
http://git-wip-us.apache.org/repos/asf/ambari/blob/08450c06/ambari-web/app/data/host_component_mapping.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/data/host_component_mapping.js b/ambari-web/app/data/host_component_mapping.js
new file mode 100644
index 0000000..be5f891
--- /dev/null
+++ b/ambari-web/app/data/host_component_mapping.js
@@ -0,0 +1,142 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+var App = require('app');
+
+/**
+ * Array of Objects
+ * {
+ * hostProperty - hostName property name for current component
+ * componentName - master componentName
+ * serviceName - serviceName of component
+ * serviceUseThis - services that use hostname property of component(componentName)
+ * m(multiple) - true if can be more than one components installed on cluster
+ * }
+ */
+
+module.exports = [
+ {
+ hostProperty: 'snamenode_host',
+ componentName: 'SECONDARY_NAMENODE',
+ serviceName: 'HDFS',
+ serviceUseThis: []
+ },
+ {
+ hostProperty: 'jobtracker_host',
+ componentName: 'JOBTRACKER',
+ serviceName: 'MAPREDUCE2',
+ serviceUseThis: []
+ },
+ {
+ hostProperty: 'hs_host',
+ componentName: 'HISTORYSERVER',
+ serviceName: 'MAPREDUCE2',
+ serviceUseThis: ['YARN']
+ },
+ {
+ hostProperty: 'ats_host',
+ componentName: 'APP_TIMELINE_SERVER',
+ serviceName: 'YARN',
+ serviceUseThis: []
+ },
+ {
+ hostProperty: 'rm_host',
+ componentName: 'RESOURCEMANAGER',
+ serviceName: 'YARN',
+ serviceUseThis: []
+ },
+ {
+ hostProperty: 'hivemetastore_host',
+ componentName: 'HIVE_METASTORE',
+ serviceName: 'HIVE',
+ serviceUseThis: ['HIVE'],
+ m: true
+ },
+ {
+ hostProperty: 'hive_ambari_host',
+ componentName: 'HIVE_SERVER',
+ serviceName: 'HIVE',
+ serviceUseThis: []
+ },
+ {
+ hostProperty: 'oozieserver_host',
+ componentName: 'OOZIE_SERVER',
+ serviceName: 'OOZIE',
+ serviceUseThis: [],
+ m: true
+ },
+ {
+ hostProperty: 'oozie_ambari_host',
+ componentName: 'OOZIE_SERVER',
+ serviceName: 'OOZIE',
+ serviceUseThis: []
+ },
+ {
+ hostProperty: 'hbasemaster_host',
+ componentName: 'HBASE_MASTER',
+ serviceName: 'HBASE',
+ serviceUseThis: [],
+ m: true
+ },
+ {
+ hostProperty: 'webhcatserver_host',
+ componentName: 'WEBHCAT_SERVER',
+ serviceName: 'HIVE',
+ serviceUseThis: [],
+ m: true
+ },
+ {
+ hostProperty: 'zookeeperserver_hosts',
+ componentName: 'ZOOKEEPER_SERVER',
+ serviceName: 'ZOOKEEPER',
+ serviceUseThis: ['HBASE', 'HIVE'],
+ m: true
+ },
+ {
+ hostProperty: 'stormuiserver_host',
+ componentName: 'STORM_UI_SERVER',
+ serviceName: 'STORM',
+ serviceUseThis: []
+ },
+ {
+ hostProperty: 'drpcserver_host',
+ componentName: 'DRPC_SERVER',
+ serviceName: 'STORM',
+ serviceUseThis: []
+ },
+ {
+ hostProperty: 'storm_rest_api_host',
+ componentName: 'STORM_REST_API',
+ serviceName: 'STORM',
+ serviceUseThis: []
+ },
+ {
+ hostProperty: 'supervisor_hosts',
+ componentName: 'SUPERVISOR',
+ serviceName: 'STORM',
+ serviceUseThis: [],
+ m: true
+ },
+ {
+ hostProperty: 'rangerserver_host',
+ componentName: 'RANGER_ADMIN',
+ serviceName: 'RANGER',
+ serviceUseThis: [],
+ m: true
+ }
+];
http://git-wip-us.apache.org/repos/asf/ambari/blob/08450c06/ambari-web/app/mixins/common/configs/enhanced_configs.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/mixins/common/configs/enhanced_configs.js b/ambari-web/app/mixins/common/configs/enhanced_configs.js
index c6dd967..fdfb45b 100644
--- a/ambari-web/app/mixins/common/configs/enhanced_configs.js
+++ b/ambari-web/app/mixins/common/configs/enhanced_configs.js
@@ -628,7 +628,13 @@ App.EnhancedConfigsMixin = Em.Mixin.create({
overriddenProperty.set('value', Em.get(propertyToAdd, 'recommendedValue'));
overriddenProperty.set('recommendedValue', Em.get(propertyToAdd, 'recommendedValue'));
} else {
- this.addOverrideProperty(cp, selectedGroup, Em.get(propertyToAdd, 'recommendedValue'), !Em.get(propertyToAdd, 'isDeleted'));
+ var overridePlainObject = {
+ "value": Em.get(propertyToAdd, 'recommendedValue'),
+ "recommendedValue": Em.get(propertyToAdd, 'recommendedValue'),
+ "isNotSaved": !Em.get(propertyToAdd, 'isDeleted'),
+ "isEditable": true
+ };
+ App.config.createOverride(cp, overridePlainObject, selectedGroup);
}
}
Em.setProperties(propertyToAdd, {
http://git-wip-us.apache.org/repos/asf/ambari/blob/08450c06/ambari-web/app/mixins/main/service/configs/config_overridable.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/mixins/main/service/configs/config_overridable.js b/ambari-web/app/mixins/main/service/configs/config_overridable.js
index a93f2e9..8460fa9 100644
--- a/ambari-web/app/mixins/main/service/configs/config_overridable.js
+++ b/ambari-web/app/mixins/main/service/configs/config_overridable.js
@@ -53,7 +53,6 @@ App.ConfigOverridable = Em.Mixin.create({
configGroups,
serviceConfigProperty,
function (selectedGroupInPopup) {
- console.log("launchConfigGroupSelectionCreationDialog(): Selected/Created:", selectedGroupInPopup);
if (selectedGroupInPopup) {
serviceConfigController.set('overrideToAdd', serviceConfigProperty);
serviceConfigController.set('selectedConfigGroup', selectedGroupInPopup);
@@ -63,8 +62,11 @@ App.ConfigOverridable = Em.Mixin.create({
);
}
else {
- var valueForOverride = (serviceConfigProperty.get('widget') || serviceConfigProperty.get('displayType') == 'checkbox') ? serviceConfigProperty.get('value') : null;
- serviceConfigController.addOverrideProperty(serviceConfigProperty, selectedConfigGroup, valueForOverride);
+ var valueForOverride = (serviceConfigProperty.get('widget') || serviceConfigProperty.get('displayType') == 'checkbox') ? serviceConfigProperty.get('value') : '';
+ var override = App.config.createOverride(serviceConfigProperty, { "value": valueForOverride, "isEditable": true }, selectedConfigGroup);
+ if (isInstaller) {
+ selectedConfigGroup.get('properties').pushObject(override);
+ }
}
Em.$('body>.tooltip').remove();
},
@@ -126,8 +128,10 @@ App.ConfigOverridable = Em.Mixin.create({
if (this.get('optionSelectConfigGroup')) {
var selectedConfigGroup = this.get('selectedConfigGroup');
this.hide();
- App.get('router.mainServiceInfoConfigsController').loadSelectedVersion(null, this.get('selectedConfigGroup'));
callback(selectedConfigGroup);
+ if (!isInstaller) {
+ App.get('router.mainServiceInfoConfigsController').doSelectConfigGroup({context: selectedConfigGroup});
+ }
} else {
var newConfigGroupName = this.get('newConfigGroupName').trim();
var newConfigGroup = App.ConfigGroup.create({
http://git-wip-us.apache.org/repos/asf/ambari/blob/08450c06/ambari-web/app/utils/config.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/utils/config.js b/ambari-web/app/utils/config.js
index 559bab9..6d78e0f 100644
--- a/ambari-web/app/utils/config.js
+++ b/ambari-web/app/utils/config.js
@@ -1765,6 +1765,40 @@ App.config = Em.Object.create({
});
service.set('configCategories', filteredCategories);
});
- }
+ },
+
+ /**
+ * @param {App.ServiceConfigProperty} serviceConfigProperty
+ * @param {Object} override - plain object with properties that is different from parent SCP
+ * @param {App.ServiceConfigGroup} configGroup
+ * @returns {App.ServiceConfigProperty}
+ */
+ createOverride: function(serviceConfigProperty, override, configGroup) {
+ Em.assert('serviceConfigProperty can\' be null', serviceConfigProperty);
+ Em.assert('configGroup can\' be null', configGroup);
+
+ if (Em.isNone(serviceConfigProperty.get('overrides'))) serviceConfigProperty.set('overrides', []);
+
+ var newOverride = App.ServiceConfigProperty.create(serviceConfigProperty);
+ if (!Em.isNone(override)) {
+ for (var key in override) {
+ newOverride.set(key, override[key]);
+ }
+ }
+
+ newOverride.setProperties({
+ 'isOriginalSCP': false,
+ 'overrides': null,
+ 'group': configGroup,
+ 'parentSCP': serviceConfigProperty
+ });
+
+ serviceConfigProperty.get('overrides').pushObject(newOverride);
+ serviceConfigProperty.set('overrideValues', serviceConfigProperty.get('overrides').mapProperty('value'));
+ serviceConfigProperty.set('overrideIsFinalValues', serviceConfigProperty.get('overrides').mapProperty('isFinal'));
+
+ newOverride.validate();
+ return newOverride;
+ }
});
http://git-wip-us.apache.org/repos/asf/ambari/blob/08450c06/ambari-web/app/views/common/modal_popups/select_groups_popup.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/common/modal_popups/select_groups_popup.js b/ambari-web/app/views/common/modal_popups/select_groups_popup.js
index 7b5a280..42251a9 100644
--- a/ambari-web/app/views/common/modal_popups/select_groups_popup.js
+++ b/ambari-web/app/views/common/modal_popups/select_groups_popup.js
@@ -89,11 +89,11 @@ App.showSelectGroupsPopup = function (selectedServiceName, selectedConfigGroup,
selectedGroupOverride.set('recommendedValue', recommendedValue);
selectedGroupOverride.set('value', recommendedValue);
} else {
- App.get('router.mainServiceInfoConfigsController').addOverrideProperty(cp, configGroup, recommendedValue);
+ App.config.createOverride(cp, {"value": recommendedValue, "recommendedValue": recommendedValue,"isEditable": true}, configGroup);
}
}
} else {
- App.get('router.mainServiceInfoConfigsController').addOverrideProperty(cp, configGroup, recommendedValue);
+ App.config.createOverride(cp, {"value": recommendedValue, "recommendedValue": recommendedValue,"isEditable": true}, configGroup);
}
}, this)
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/08450c06/ambari-web/test/controllers/main/service/info/config_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/controllers/main/service/info/config_test.js b/ambari-web/test/controllers/main/service/info/config_test.js
index 8911743..2cd2b35 100644
--- a/ambari-web/test/controllers/main/service/info/config_test.js
+++ b/ambari-web/test/controllers/main/service/info/config_test.js
@@ -188,31 +188,6 @@ describe("App.MainServiceInfoConfigsController", function () {
});
});
- describe("#addOverrideProperty", function () {
- var serviceConfigProperty = Em.Object.create({
- overrides: [],
- isOriginalSCP: true
- });
-
- var group = {};
- var newSCP = App.ServiceConfigProperty.create(serviceConfigProperty);
- newSCP.set('value', '1');
- newSCP.set('isOriginalSCP', false);
- newSCP.set('parentSCP', serviceConfigProperty);
- newSCP.set('isEditable', true);
- newSCP.set('group', group);
-
-
- it("add new overridden property", function () {
- mainServiceInfoConfigsController.addOverrideProperty(serviceConfigProperty, group, '1');
- expect(serviceConfigProperty.get("overrides")[0].get('name')).to.equal(newSCP.get('name'));
- expect(serviceConfigProperty.get("overrides")[0].get('isOriginalSCP')).to.be.false;
- expect(serviceConfigProperty.get("overrides")[0].get('isEditable')).to.be.true;
- expect(serviceConfigProperty.get("overrides")[0].get('group')).to.eql({});
- expect(serviceConfigProperty.get("overrides")[0].get('parentSCP')).to.eql(serviceConfigProperty);
- });
- });
-
describe("#showComponentsShouldBeRestarted", function () {
var tests = [
@@ -738,20 +713,20 @@ describe("App.MainServiceInfoConfigsController", function () {
}];
beforeEach(function() {
- sinon.stub(mainServiceInfoConfigsController,"addOverrideProperty", Em.K)
+ sinon.stub(App.config,"createOverride", Em.K)
});
afterEach(function() {
- mainServiceInfoConfigsController.addOverrideProperty.restore();
+ App.config.createOverride.restore();
});
tests.forEach(function(t) {
it(t.m, function() {
mainServiceInfoConfigsController.set("overrideToAdd", t.overrideToAdd);
mainServiceInfoConfigsController.checkOverrideProperty(t.componentConfig);
if(t.add) {
- expect(mainServiceInfoConfigsController.addOverrideProperty.calledWith(t.overrideToAdd)).to.equal(true);
+ expect(App.config.createOverride.calledWith(t.overrideToAdd)).to.equal(true);
expect(mainServiceInfoConfigsController.get("overrideToAdd")).to.equal(null);
} else {
- expect(mainServiceInfoConfigsController.addOverrideProperty.calledOnce).to.equal(false);
+ expect(App.config.createOverride.calledOnce).to.equal(false);
}
});
});
@@ -767,43 +742,6 @@ describe("App.MainServiceInfoConfigsController", function () {
});
});
- describe("#createNewSCP", function() {
- var tests = [
- {
- overrides: {
- value: "value",
- group: {
- value: "group1"
- }
- },
- serviceConfigProperty: Em.Object.create({
- value: "parentSCP",
- supportsFinal: true
- }),
- defaultGroupSelected: true,
-
- newSCP: {
- value: "value",
- isOriginalSCP: false,
- parentSCP:Em.Object.create({
- value: "parentSCP",
- supportsFinal: true
- }),
- group: {
- value: "group1"
- },
- isEditable: false
- }
- }
- ];
- tests.forEach(function(t) {
- it("", function() {
- var newSCP = mainServiceInfoConfigsController.createNewSCP(t.overrides, t.serviceConfigProperty, t.defaultGroupSelected);
- expect(newSCP.getProperties("value", "isOriginalSCP", "parentSCP", "group", "isEditable")).to.eql(t.newSCP);
- });
- });
- });
-
describe("#setCompareDefaultGroupConfig", function() {
beforeEach(function() {
sinon.stub(mainServiceInfoConfigsController, "getComparisonConfig").returns("compConfig");
http://git-wip-us.apache.org/repos/asf/ambari/blob/08450c06/ambari-web/test/controllers/wizard/step7_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/controllers/wizard/step7_test.js b/ambari-web/test/controllers/wizard/step7_test.js
index 6dffd3d..ed76e82 100644
--- a/ambari-web/test/controllers/wizard/step7_test.js
+++ b/ambari-web/test/controllers/wizard/step7_test.js
@@ -643,29 +643,6 @@ describe('App.InstallerStep7Controller', function () {
});
});
- describe('#addOverrideProperty', function () {
- it('should add override property', function () {
- var groupName = 'groupName',
- selectedService = {configGroups: [Em.Object.create({name: groupName, properties: []})]},
- selectedConfigGroup = {name: groupName},
- serviceConfigProperty = Em.Object.create({overrides: []}),
- expected = Em.Object.create({
- value: '',
- isOriginalSCP: false,
- isEditable: true
- });
- installerStep7Controller.reopen({selectedService: selectedService, selectedConfigGroup: selectedConfigGroup});
- var newSCP = installerStep7Controller.addOverrideProperty(serviceConfigProperty);
- Em.keys(expected).forEach(function (k) {
- expect(newSCP.get(k)).to.equal(expected.get(k));
- });
- var group = installerStep7Controller.get('selectedService.configGroups').findProperty('name', groupName);
- expect(newSCP.get('group')).to.eql(group);
- expect(newSCP.get('parentSCP')).to.eql(serviceConfigProperty);
- expect(group.get('properties.length')).to.equal(1);
- });
- });
-
describe('#resolveYarnConfigs', function () {
it('should set property to true', function () {
var allSelectedServiceNames = ['SLIDER', 'YARN'],
http://git-wip-us.apache.org/repos/asf/ambari/blob/08450c06/ambari-web/test/utils/config_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/utils/config_test.js b/ambari-web/test/utils/config_test.js
index b5f717f..4df4a19 100644
--- a/ambari-web/test/utils/config_test.js
+++ b/ambari-web/test/utils/config_test.js
@@ -1300,4 +1300,81 @@ describe('App.config', function () {
});
+ describe("#createOverride", function() {
+ var template = {
+ name: "p1",
+ filename: "f1",
+ value: "v1",
+ recommendedValue: "rv1",
+ savedValue: "sv1",
+ isFinal: true,
+ recommendedIsFinal: false,
+ savedIsFinal: true
+ };
+
+ var configProperty = App.ServiceConfigProperty.create(template);
+
+ var group = App.ConfigGroup.create({name: "group1"});
+
+ it('creates override with save properties as original config', function() {
+ var override = App.config.createOverride(configProperty, {}, group);
+ for (var key in template) {
+ expect(override.get(key)).to.eql(template[key]);
+ }
+ });
+
+ it('overrides some values that should be different for override', function() {
+ var override = App.config.createOverride(configProperty, {}, group);
+ expect(override.get('isOriginalSCP')).to.be.false;
+ expect(override.get('overrides')).to.be.null;
+ expect(override.get('group')).to.eql(group);
+ expect(override.get('parentSCP')).to.eql(configProperty);
+ });
+
+ it('overrides some specific values', function() {
+ var overridenTemplate = {
+ value: "v2",
+ recommendedValue: "rv2",
+ savedValue: "sv2",
+ isFinal: true,
+ recommendedIsFinal: false,
+ savedIsFinal: true
+ };
+
+ var override = App.config.createOverride(configProperty, overridenTemplate, group);
+ for (var key in overridenTemplate) {
+ expect(override.get(key)).to.eql(overridenTemplate[key]);
+ }
+ });
+
+ it('throws error due to undefined configGroup', function() {
+ expect(App.config.createOverride.bind(App.config, configProperty, {}, null)).to.throw(Error, 'configGroup can\' be null');
+ });
+
+ it('throws error due to undefined originalSCP', function() {
+ expect(App.config.createOverride.bind(App.config, null, {}, group)).to.throw(Error, 'serviceConfigProperty can\' be null');
+ });
+
+ it('updates originalSCP object ', function() {
+ configProperty.set('overrides', null);
+ configProperty.set('overrideValues', []);
+ configProperty.set('overrideIsFinalValues', []);
+
+ var overridenTemplate2 = {
+ value: "v12",
+ recommendedValue: "rv12",
+ savedValue: "sv12",
+ isFinal: true,
+ recommendedIsFinal: false,
+ savedIsFinal: false
+ };
+
+ var override = App.config.createOverride(configProperty, overridenTemplate2, group);
+
+ expect(configProperty.get('overrides')[0]).to.be.eql(override);
+ expect(configProperty.get('overrideValues')).to.be.eql([overridenTemplate2.value]);
+ expect(configProperty.get('overrideIsFinalValues')).to.be.eql([overridenTemplate2.isFinal]);
+ });
+ })
+
});