Repository: ambari Updated Branches: refs/heads/trunk 4e7a135ed -> 0f602e15c
AMBARI-11522 Going to config-group in installer not showing config-group specific bounds/recommendations. (ababiichuk) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/0f602e15 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/0f602e15 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/0f602e15 Branch: refs/heads/trunk Commit: 0f602e15c137df0da40aae8451d2864b326d1dce Parents: 4e7a135 Author: aBabiichuk <[email protected]> Authored: Fri May 29 10:34:29 2015 +0300 Committer: aBabiichuk <[email protected]> Committed: Fri May 29 11:12:41 2015 +0300 ---------------------------------------------------------------------- .../app/controllers/wizard/step7_controller.js | 1 + .../mixins/common/configs/enhanced_configs.js | 44 ++++++++++++++------ .../widgets/slider_config_widget_view.js | 14 +++++-- 3 files changed, 43 insertions(+), 16 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/0f602e15/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 1eda0a6..9ad4a49 100644 --- a/ambari-web/app/controllers/wizard/step7_controller.js +++ b/ambari-web/app/controllers/wizard/step7_controller.js @@ -1106,6 +1106,7 @@ App.WizardStep7Controller = Em.Controller.extend(App.ServerValidatorMixin, App.E this._setEditableValue(config); this._setOverrides(config, overrides); }, this); + this.getRecommendationsForDependencies(null, true, Em.K); }.observes('selectedConfigGroup'), /** http://git-wip-us.apache.org/repos/asf/ambari/blob/0f602e15/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 6a214c7..5c9dde1 100644 --- a/ambari-web/app/mixins/common/configs/enhanced_configs.js +++ b/ambari-web/app/mixins/common/configs/enhanced_configs.js @@ -29,6 +29,13 @@ App.EnhancedConfigsMixin = Em.Mixin.create({ recommendationTimeStamp: null, /** + * this property is used to force update min/max values + * for not default config groups + * @type {boolean} + */ + forceUpdateBoundaries: false, + + /** * flag is true when Ambari changes some of the dependent properties * @type {boolean} */ @@ -254,13 +261,13 @@ App.EnhancedConfigsMixin = Em.Mixin.create({ hosts: this.get('hostNames'), services: this.get('serviceNames') }; - if (App.get('isClusterSupportsEnhancedConfigs') && changedConfigs) { + if (App.get('isClusterSupportsEnhancedConfigs')) { if (changedConfigs) { dataToSend.recommend = 'configuration-dependencies'; dataToSend.changed_configurations = changedConfigs; } if (!this.get('selectedConfigGroup.isDefault') && this.get('selectedConfigGroup.hosts.length') > 0) { - var configGroups = this.buildConfigGroupJSON(this.get('stepConfigs').findProperty('serviceName', this.get('content.serviceName')).get('configs'), this.get('selectedConfigGroup')); + var configGroups = this.buildConfigGroupJSON(this.get('selectedService.configs'), this.get('selectedConfigGroup')); recommendations.config_groups = [configGroups]; } } @@ -271,6 +278,7 @@ App.EnhancedConfigsMixin = Em.Mixin.create({ data: { stackVersionUrl: App.get('stackVersionURL'), dataToSend: dataToSend, + selectedConfigGroup: this.get('selectedConfigGroup.isDefault') ? null : this.get('selectedConfigGroup.name'), initial: initial }, success: 'dependenciesSuccess', @@ -322,7 +330,7 @@ App.EnhancedConfigsMixin = Em.Mixin.create({ * @method dependenciesSuccess */ dependenciesSuccess: function (data, opt, params) { - this._saveRecommendedValues(data, params.initial, params.dataToSend.changed_configurations); + this._saveRecommendedValues(data, params.initial, params.dataToSend.changed_configurations, params.selectedConfigGroup); this.set("recommendationsConfigs", Em.get(data.resources[0] , "recommendations.blueprint.configurations")); if (!params.initial) { this.updateDependentConfigs(); @@ -397,14 +405,14 @@ App.EnhancedConfigsMixin = Em.Mixin.create({ * @method saveRecommendedValues * @private */ - _saveRecommendedValues: function(data, updateOnlyBoundaries, changedConfigs) { + _saveRecommendedValues: function(data, updateOnlyBoundaries, changedConfigs, selectedConfigGroup) { Em.assert('invalid data - `data.resources[0].recommendations.blueprint.configurations` not defined ', data && data.resources[0] && Em.get(data.resources[0], 'recommendations.blueprint.configurations')); var configObject = data.resources[0].recommendations.blueprint.configurations; - this.parseConfigsByTag(configObject, updateOnlyBoundaries, changedConfigs, false); + this.parseConfigsByTag(configObject, updateOnlyBoundaries, changedConfigs, selectedConfigGroup); if (!this.get('selectedConfigGroup.isDefault') && data.resources[0].recommendations['config-groups']) { var configFroGroup = data.resources[0].recommendations['config-groups'][0]; - this.parseConfigsByTag(configFroGroup.configurations, updateOnlyBoundaries, changedConfigs, true); - this.parseConfigsByTag(configFroGroup.dependent_configurations, updateOnlyBoundaries, changedConfigs, true); + this.parseConfigsByTag(configFroGroup.configurations, updateOnlyBoundaries, changedConfigs, selectedConfigGroup); + this.parseConfigsByTag(configFroGroup.dependent_configurations, updateOnlyBoundaries, changedConfigs, selectedConfigGroup); } }, @@ -412,12 +420,13 @@ App.EnhancedConfigsMixin = Em.Mixin.create({ * saves values from response for dependent configs to <code>_dependentConfigValues<code> * @param configObject - JSON response from `recommendations` endpoint * @param updateOnlyBoundaries - * @param notDefaultGroup + * @param selectedConfigGroup * @param {App.ServiceConfigProperty[]} parentConfigs - config properties for which recommendations were received * @method saveRecommendedValues * @private */ - parseConfigsByTag: function(configObject, updateOnlyBoundaries, parentConfigs, notDefaultGroup) { + parseConfigsByTag: function(configObject, updateOnlyBoundaries, parentConfigs, selectedConfigGroup) { + var notDefaultGroup = !!selectedConfigGroup; var parentPropertiesNames = parentConfigs ? parentConfigs.mapProperty('name') : []; /** get all configs by config group **/ for (var key in configObject) { @@ -522,7 +531,7 @@ App.EnhancedConfigsMixin = Em.Mixin.create({ } } } - this._saveRecommendedAttributes(configObject, parentPropertiesNames, updateOnlyBoundaries); + this._saveRecommendedAttributes(configObject, parentPropertiesNames, updateOnlyBoundaries, selectedConfigGroup); } }, @@ -535,7 +544,7 @@ App.EnhancedConfigsMixin = Em.Mixin.create({ * @param updateOnlyBoundaries * @private */ - _saveRecommendedAttributes: function(configs, parentPropertiesNames, updateOnlyBoundaries) { + _saveRecommendedAttributes: function(configs, parentPropertiesNames, updateOnlyBoundaries, selectedConfigGroup) { var self = this; Em.keys(configs).forEach(function (siteName) { var service = App.config.getServiceByConfigType(siteName); @@ -576,7 +585,18 @@ App.EnhancedConfigsMixin = Em.Mixin.create({ } } } else if (stackProperty) { - Em.set(stackProperty.get('valueAttributes'), attributeName, attributes[attributeName]); + if (selectedConfigGroup) { + if (!stackProperty.get('valueAttributes')[selectedConfigGroup]) { + /** create not default group object for updating such values as min/max **/ + Em.set(stackProperty.get('valueAttributes'), selectedConfigGroup, {}); + } + if (stackProperty.get('valueAttributes')[selectedConfigGroup][attributeName] != attributes[attributeName]) { + Em.set(stackProperty.get('valueAttributes')[selectedConfigGroup], attributeName, attributes[attributeName]); + self.toggleProperty('forceUpdateBoundaries'); + } + } else { + Em.set(stackProperty.get('valueAttributes'), attributeName, attributes[attributeName]); + } } }); }); http://git-wip-us.apache.org/repos/asf/ambari/blob/0f602e15/ambari-web/app/views/common/configs/widgets/slider_config_widget_view.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/views/common/configs/widgets/slider_config_widget_view.js b/ambari-web/app/views/common/configs/widgets/slider_config_widget_view.js index 31d8aef..4ea542e 100644 --- a/ambari-web/app/views/common/configs/widgets/slider_config_widget_view.js +++ b/ambari-web/app/views/common/configs/widgets/slider_config_widget_view.js @@ -70,9 +70,12 @@ App.SliderConfigWidgetView = App.ConfigWidgetView.extend({ */ maxMirrorValue: function() { var parseFunction = this.get('mirrorValueParseFunction'); - var max = this.widgetValueByConfigAttributes(this.get('config.stackConfigProperty.valueAttributes.maximum')); + var defaultGroupAttr = this.get('config.stackConfigProperty.valueAttributes'); + var groupAttr = this.get('configGroup') && this.get('config.stackConfigProperty.valueAttributes')[this.get('configGroup.name')]; + var maximum = (groupAttr && !Em.isNone(groupAttr['maximum'])) ? groupAttr['maximum'] : defaultGroupAttr['maximum']; + var max = this.widgetValueByConfigAttributes(maximum); return parseFunction(max); - }.property('config.stackConfigProperty.valueAttributes.maximum'), + }.property('config.stackConfigProperty.valueAttributes.maximum', 'controller.forceUpdateBoundaries'), /** * min allowed value transformed form config unit to widget unit @@ -80,9 +83,12 @@ App.SliderConfigWidgetView = App.ConfigWidgetView.extend({ */ minMirrorValue: function() { var parseFunction = this.get('mirrorValueParseFunction'); - var min = this.widgetValueByConfigAttributes(this.get('config.stackConfigProperty.valueAttributes.minimum')); + var defaultGroupAttr = this.get('config.stackConfigProperty.valueAttributes'); + var groupAttr = this.get('configGroup') && this.get('config.stackConfigProperty.valueAttributes')[this.get('configGroup.name')]; + var minimum = (groupAttr && !Em.isNone(groupAttr['minimum'])) ? groupAttr['minimum'] : defaultGroupAttr['minimum']; + var min = this.widgetValueByConfigAttributes(minimum); return parseFunction(min); - }.property('config.stackConfigProperty.valueAttributes.minimum'), + }.property('config.stackConfigProperty.valueAttributes.minimum', 'controller.forceUpdateBoundaries'), /** * step transformed form config units to widget units
