AMBARI-15029. Adding a Service results in deleting Config Group mappings (more than 1 CG present) (akovalenko)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/f7055ae7 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/f7055ae7 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/f7055ae7 Branch: refs/heads/branch-dev-patch-upgrade Commit: f7055ae76a64f445d2845ce66f6ec925dc94f99d Parents: 9d8675a Author: Aleksandr Kovalenko <akovale...@hortonworks.com> Authored: Fri Feb 12 16:55:05 2016 +0200 Committer: Aleksandr Kovalenko <akovale...@hortonworks.com> Committed: Fri Feb 12 20:01:58 2016 +0200 ---------------------------------------------------------------------- .../controllers/main/service/info/configs.js | 4 +-- ambari-web/app/controllers/wizard.js | 4 ++- .../app/controllers/wizard/step7_controller.js | 31 +++++++++++++------- ambari-web/app/routes/add_service_routes.js | 1 + ambari-web/test/controllers/wizard_test.js | 5 ++-- 5 files changed, 29 insertions(+), 16 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/f7055ae7/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 ae2939e..b6a434c 100644 --- a/ambari-web/app/controllers/main/service/info/configs.js +++ b/ambari-web/app/controllers/main/service/info/configs.js @@ -429,8 +429,8 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ConfigsLoader, A for (var prop in config.properties) { var fileName = App.config.getOriginalFileName(config.type); var serviceConfig = allConfigs.filterProperty('name', prop).findProperty('filename', fileName); - var value = App.config.formatPropertyValue(serviceConfig, config.properties[prop]); if (serviceConfig) { + var value = App.config.formatPropertyValue(serviceConfig, config.properties[prop]); var isFinal = !!(config.properties_attributes && config.properties_attributes.final && config.properties_attributes.final[prop]); if (self.get('selectedConfigGroup.isDefault') || configGroup.get('name') == self.get('selectedConfigGroup.name')) { var overridePlainObject = { @@ -444,7 +444,7 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ConfigsLoader, A } } else { var isEditable = self.get('canEdit') && configGroup.get('name') == self.get('selectedConfigGroup.name'); - allConfigs.push(App.config.createCustomGroupConfig(prop, fileName, value, configGroup, isEditable)); + allConfigs.push(App.config.createCustomGroupConfig(prop, fileName, config.properties[prop], configGroup, isEditable)); } } }); http://git-wip-us.apache.org/repos/asf/ambari/blob/f7055ae7/ambari-web/app/controllers/wizard.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/controllers/wizard.js b/ambari-web/app/controllers/wizard.js index 762149f..05ef68e 100644 --- a/ambari-web/app/controllers/wizard.js +++ b/ambari-web/app/controllers/wizard.js @@ -889,11 +889,13 @@ App.WizardController = Em.Controller.extend(App.LocalStorage, App.ThemesMappingM var installedServiceNames = stepController.get('installedServiceNames') || []; var installedServiceNamesMap = installedServiceNames.toWickMap(); stepController.get('stepConfigs').forEach(function (_content) { - if (_content.serviceName === 'YARN') { _content.set('configs', App.config.textareaIntoFileConfigs(_content.get('configs'), 'capacity-scheduler.xml')); } _content.get('configs').forEach(function (_configProperties) { + if (!Em.isNone(_configProperties.get('group'))) { + return false; + } var configProperty = App.config.createDefaultConfig( _configProperties.get('name'), _configProperties.get('serviceName'), http://git-wip-us.apache.org/repos/asf/ambari/blob/f7055ae7/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 7e96845..ee37427 100644 --- a/ambari-web/app/controllers/wizard/step7_controller.js +++ b/ambari-web/app/controllers/wizard/step7_controller.js @@ -479,14 +479,15 @@ App.WizardStep7Controller = Em.Controller.extend(App.ServerValidatorMixin, App.E loadServiceConfigGroupOverridesSuccess: function (data, opt, params) { data.items.forEach(function (config) { + var hostOverrideValue, hostOverrideIsFinal; var group = params.typeTagToGroupMap[config.type + "///" + config.tag]; var properties = config.properties; for (var prop in properties) { var fileName = App.config.getOriginalFileName(config.type); var serviceConfig = !!params.configKeyToConfigMap[fileName] ? params.configKeyToConfigMap[fileName][prop] : false; - var hostOverrideValue = App.config.formatPropertyValue(serviceConfig, properties[prop]); - var hostOverrideIsFinal = !!(config.properties_attributes && config.properties_attributes.final && config.properties_attributes.final[prop]); if (serviceConfig) { + hostOverrideValue = App.config.formatPropertyValue(serviceConfig, properties[prop]); + hostOverrideIsFinal = !!(config.properties_attributes && config.properties_attributes.final && config.properties_attributes.final[prop]); // Value of this property is different for this host. if (!Em.get(serviceConfig, 'overrides')) Em.set(serviceConfig, 'overrides', []); serviceConfig.overrides.pushObject({value: hostOverrideValue, group: group, isFinal: hostOverrideIsFinal}); @@ -595,6 +596,9 @@ App.WizardStep7Controller = Em.Controller.extend(App.ServerValidatorMixin, App.E if (Em.isNone(serviceConfigProperty.get('isOverridable'))) { serviceConfigProperty.set('isOverridable', true); } + if (!Em.isNone(serviceConfigProperty.get('group'))) { + serviceConfigProperty.get('group.properties').pushObject(serviceConfigProperty); + } this._updateOverridesForConfig(serviceConfigProperty, component); this._updateIsEditableFlagForConfig(serviceConfigProperty, defaultGroupSelected); @@ -1218,6 +1222,7 @@ App.WizardStep7Controller = Em.Controller.extend(App.ServerValidatorMixin, App.E service.set('configGroups', [App.ServiceConfigGroup.find(id)]); } else { + App.store.commit(); App.store.loadMany(App.ServiceConfigGroup, serviceRawGroups); App.store.commit(); serviceRawGroups.forEach(function(item){ @@ -1225,19 +1230,24 @@ App.WizardStep7Controller = Em.Controller.extend(App.ServerValidatorMixin, App.E var wrappedProperties = []; item.properties.forEach(function (propertyData) { - var parentSCP = service.configs.filterProperty('filename', propertyData.filename).findProperty('name', propertyData.name); - var overriddenSCP = App.ServiceConfigProperty.create(parentSCP); - overriddenSCP.set('isOriginalSCP', false); - overriddenSCP.set('parentSCP', parentSCP); - overriddenSCP.set('group', modelGroup); - overriddenSCP.setProperties(propertyData); + var overriddenSCP, parentSCP = service.configs.filterProperty('filename', propertyData.filename).findProperty('name', propertyData.name); + if (parentSCP) { + overriddenSCP = App.ServiceConfigProperty.create(parentSCP); + overriddenSCP.set('parentSCP', parentSCP); + } else { + overriddenSCP = App.config.createCustomGroupConfig(propertyData.name, propertyData.filename, propertyData.value, modelGroup, true, false); + this.get('stepConfigs').findProperty('serviceName', service.serviceName).get('configs').pushObject(overriddenSCP); + } + overriddenSCP.set('isOriginalSCP', false); + overriddenSCP.set('group', modelGroup); + overriddenSCP.setProperties(propertyData); wrappedProperties.pushObject(App.ServiceConfigProperty.create(overriddenSCP)); - }); + }, this); modelGroup.set('properties', wrappedProperties); }, this); service.set('configGroups', App.ServiceConfigGroup.find().filterProperty('serviceName', service.get('serviceName'))); } - }); + }, this); }, /** @@ -1318,6 +1328,7 @@ App.WizardStep7Controller = Em.Controller.extend(App.ServerValidatorMixin, App.E * @method _setOverrides */ _setOverrides: function (config, overrides) { + if (config.get('group')) return config; var selectedGroup = this.get('selectedConfigGroup'), overrideToAdd = this.get('overrideToAdd'), configOverrides = overrides.filterProperty('name', config.get('name')); http://git-wip-us.apache.org/repos/asf/ambari/blob/f7055ae7/ambari-web/app/routes/add_service_routes.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/routes/add_service_routes.js b/ambari-web/app/routes/add_service_routes.js index 8658142..d6bab53 100644 --- a/ambari-web/app/routes/add_service_routes.js +++ b/ambari-web/app/routes/add_service_routes.js @@ -201,6 +201,7 @@ module.exports = App.WizardRoute.extend({ }); router.get('wizardStep7Controller').set('recommendationsConfigs', null); router.get('wizardStep7Controller').clearAllRecommendations(); + addServiceController.setDBProperty('serviceConfigGroups', undefined); router.transitionTo('step4'); }); }); http://git-wip-us.apache.org/repos/asf/ambari/blob/f7055ae7/ambari-web/test/controllers/wizard_test.js ---------------------------------------------------------------------- diff --git a/ambari-web/test/controllers/wizard_test.js b/ambari-web/test/controllers/wizard_test.js index d9239200..0264472 100644 --- a/ambari-web/test/controllers/wizard_test.js +++ b/ambari-web/test/controllers/wizard_test.js @@ -1143,7 +1143,6 @@ describe('App.WizardController', function () { isRequiredByAgent: true, hasInitialValue: true, isRequired: true, - group: {name: 'group'}, showLabel: true, category: 'some_category' }) @@ -1177,10 +1176,10 @@ describe('App.WizardController', function () { }) ]}); - it('should save configs to content.serviceConfigProperties', function () { + it('should save configs from default config group to content.serviceConfigProperties', function () { c.saveServiceConfigProperties(stepController); var saved = c.get('content.serviceConfigProperties'); - expect(saved.length).to.equal(2); + expect(saved.length).to.equal(1); expect(saved[0].category).to.equal('some_category'); });