Repository: ambari Updated Branches: refs/heads/trunk ebea5413f -> 57ba7014a
AMBARI-10761. Validation isn't executed after override is created (onechiporenko) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/57ba7014 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/57ba7014 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/57ba7014 Branch: refs/heads/trunk Commit: 57ba7014abcecca9c766253545104640ce77202e Parents: ebea541 Author: Oleg Nechiporenko <onechipore...@apache.org> Authored: Mon Apr 27 15:33:11 2015 +0300 Committer: Oleg Nechiporenko <onechipore...@apache.org> Committed: Mon Apr 27 15:33:11 2015 +0300 ---------------------------------------------------------------------- .../app/controllers/main/service/info/configs.js | 2 ++ .../app/controllers/wizard/step7_controller.js | 1 + ambari-web/app/messages.js | 2 ++ ambari-web/app/models/service_config.js | 6 +++--- .../widgets/overrides/config_widget_override.hbs | 5 ----- .../configs/widgets/list_config_widget_view.js | 1 + .../widgets/list_config_widget_view_test.js | 17 +++++++++++++++++ 7 files changed, 26 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/57ba7014/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 5f22112..e39b1a2 100644 --- a/ambari-web/app/controllers/main/service/info/configs.js +++ b/ambari-web/app/controllers/main/service/info/configs.js @@ -1037,6 +1037,7 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ServerValidatorM if (defaultGroupSelected) { newSCP.set('isEditable', false); } + newSCP.validate(); return newSCP; }, @@ -1352,6 +1353,7 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ServerValidatorM isNotSaved: isNotSaved }); console.debug("createOverrideProperty(): Added:", newSCP, " to main-property:", serviceConfigProperty); + newSCP.validate(); overrides.pushObject(newSCP); } }, http://git-wip-us.apache.org/repos/asf/ambari/blob/57ba7014/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 ede0579..86a3a39 100644 --- a/ambari-web/app/controllers/wizard/step7_controller.js +++ b/ambari-web/app/controllers/wizard/step7_controller.js @@ -1097,6 +1097,7 @@ App.WizardStep7Controller = Em.Controller.extend(App.ServerValidatorMixin, App.E newSCP.set('isEditable', true); group.get('properties').pushObject(newSCP); overrides.pushObject(newSCP); + newSCP.validate(); return newSCP; }, http://git-wip-us.apache.org/repos/asf/ambari/blob/57ba7014/ambari-web/app/messages.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/messages.js b/ambari-web/app/messages.js index 6404f5e..0a0ed35 100644 --- a/ambari-web/app/messages.js +++ b/ambari-web/app/messages.js @@ -384,6 +384,8 @@ Em.I18n.translations = { 'users.userName.validationFail': 'Only lowercase letters and numbers are recommended; must start with a letter', 'host.spacesValidation': 'Cannot contain whitespace', 'host.trimspacesValidation': 'Cannot contain leading or trailing whitespace', + 'config.override.valueEqualToParentConfig': 'Configuration overrides must have different value', + 'config.override.valueEqualToAnotherOverrideConfig': 'Multiple configuration overrides cannot have same value', 'services.hdfs.rebalance.title' : 'HDFS Rebalance', 'services.ganglia.description':'Ganglia Metrics Collection system', http://git-wip-us.apache.org/repos/asf/ambari/blob/57ba7014/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 c47812c..b45cb0d 100644 --- a/ambari-web/app/models/service_config.js +++ b/ambari-web/app/models/service_config.js @@ -1071,16 +1071,16 @@ App.ServiceConfigProperty = Em.Object.extend({ var isOriginalSCP = this.get('isOriginalSCP'); var parentSCP = this.get('parentSCP'); if (!isOriginalSCP) { - if (!isError && parentSCP != null) { + if (!Em.isNone(parentSCP)) { if (value === parentSCP.get('value') && supportsFinal && isFinal === parentSCP.get('isFinal')) { - this.set('errorMessage', 'Configuration overrides must have different value'); + this.set('errorMessage', Em.I18n.t('config.override.valueEqualToParentConfig')); isError = true; } else { var overrides = parentSCP.get('overrides'); if (overrides) { overrides.forEach(function (override) { if (self != override && value === override.get('value') && supportsFinal && isFinal === parentSCP.get('isFinal')) { - self.set('errorMessage', 'Multiple configuration overrides cannot have same value'); + self.set('errorMessage', Em.I18n.t('config.override.valueEqualToAnotherOverrideConfig')); isError = true; } }); http://git-wip-us.apache.org/repos/asf/ambari/blob/57ba7014/ambari-web/app/templates/common/configs/widgets/overrides/config_widget_override.hbs ---------------------------------------------------------------------- diff --git a/ambari-web/app/templates/common/configs/widgets/overrides/config_widget_override.hbs b/ambari-web/app/templates/common/configs/widgets/overrides/config_widget_override.hbs index b91952b..95cb7be 100644 --- a/ambari-web/app/templates/common/configs/widgets/overrides/config_widget_override.hbs +++ b/ambari-web/app/templates/common/configs/widgets/overrides/config_widget_override.hbs @@ -19,11 +19,6 @@ {{! Here serviceConfigBinding should ideally be serviceConfigPropertyBinding }} <div {{bindAttr class="overriddenSCP.errorMessage:error: :control-group :overrideField"}}> {{view view.serviceConfigProperty.widget configBinding="overriddenSCP" isPopoverEnabled="false"}} - {{#if overriddenSCP.isEditable}} - {{#if overriddenSCP.errorMessage}} - <p class="text-error">{{overriddenSCP.errorMessage}}</p> - {{/if}} - {{/if}} </div> <div class="clearfix"></div> {{/each}} http://git-wip-us.apache.org/repos/asf/ambari/blob/57ba7014/ambari-web/app/views/common/configs/widgets/list_config_widget_view.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/views/common/configs/widgets/list_config_widget_view.js b/ambari-web/app/views/common/configs/widgets/list_config_widget_view.js index 5e3db48..157ef99 100644 --- a/ambari-web/app/views/common/configs/widgets/list_config_widget_view.js +++ b/ambari-web/app/views/common/configs/widgets/list_config_widget_view.js @@ -198,6 +198,7 @@ App.ListConfigWidgetView = App.ConfigWidgetView.extend({ selectionDisabled = allowedToSelect <= currentlySelected; this.get('options').filterProperty('isSelected', false).setEach('isDisabled', selectionDisabled); this.set('config.errorMessage', currentlySelected < neededToSelect ? 'You should select at least ' + neededToSelect + ' item(s)' : ''); + this.get('config').validate(); }, /** http://git-wip-us.apache.org/repos/asf/ambari/blob/57ba7014/ambari-web/test/views/common/configs/widgets/list_config_widget_view_test.js ---------------------------------------------------------------------- diff --git a/ambari-web/test/views/common/configs/widgets/list_config_widget_view_test.js b/ambari-web/test/views/common/configs/widgets/list_config_widget_view_test.js index d7ba96e..8fa6991 100644 --- a/ambari-web/test/views/common/configs/widgets/list_config_widget_view_test.js +++ b/ambari-web/test/views/common/configs/widgets/list_config_widget_view_test.js @@ -26,10 +26,13 @@ describe('App.ListConfigWidgetView', function () { view = App.ListConfigWidgetView.create({ initPopover: Em.K, config: Em.Object.create({ + validate: App.ServiceConfigProperty.prototype.validate, name: 'a.b.c', defaultValue: '2,1', value: '2,1', filename: 'f1', + isFinal: false, + supportsFinal: true, stackConfigProperty: Em.Object.create({ valueAttributes: { entries: [ @@ -190,6 +193,20 @@ describe('App.ListConfigWidgetView', function () { expect(view.get('config.errorMessage')).to.equal(''); }); + it('check override', function () { + + view.get('config').setProperties({ + isOriginalSCP: false, + parentSCP: Em.Object.create({ + value: '2,1', + isFinal: false + }) + }); + view.checkSelectedItemsCount(); + expect(view.get('config.errorMessage')).to.equal(Em.I18n.t('config.override.valueEqualToParentConfig')); + + }); + }); });