You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by ak...@apache.org on 2013/11/26 16:28:39 UTC
git commit: AMBARI-3886. Config group name validation doesn't include
newly added and removed goups. (akovalenko)
Updated Branches:
refs/heads/trunk f0682821b -> d4a0a57a8
AMBARI-3886. Config group name validation doesn't include newly added and removed goups. (akovalenko)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/d4a0a57a
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/d4a0a57a
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/d4a0a57a
Branch: refs/heads/trunk
Commit: d4a0a57a85f8e61c0945e5d047c9642586c9fcd6
Parents: f068282
Author: Aleksandr Kovalenko <ol...@ukr.net>
Authored: Tue Nov 26 17:24:38 2013 +0200
Committer: Aleksandr Kovalenko <ol...@ukr.net>
Committed: Tue Nov 26 17:24:38 2013 +0200
----------------------------------------------------------------------
.../controllers/main/service/info/configs.js | 9 ++--
ambari-web/app/controllers/main/service/item.js | 2 +-
.../service/manage_config_groups_controller.js | 48 +++++++++++++++-----
.../app/controllers/wizard/step7_controller.js | 10 ++--
ambari-web/app/utils/config.js | 7 ++-
.../app/views/common/configs/services_config.js | 2 +-
.../main/service/manage_config_groups_view.js | 2 +-
7 files changed, 55 insertions(+), 25 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/d4a0a57a/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 e00f0b3..ff2f310 100644
--- a/ambari-web/app/controllers/main/service/info/configs.js
+++ b/ambari-web/app/controllers/main/service/info/configs.js
@@ -35,7 +35,7 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
isApplyingChanges: false,
// contain Service Config Property, when user proceed from Select Config Group dialog
overrideToAdd: null,
- allConfigGroupsNames: [],
+ usedConfigGroupNames: [],
serviceConfigs: function () {
return App.config.get('preDefinedServiceConfigs');
}.property('App.config.preDefinedServiceConfigs'),
@@ -263,7 +263,7 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
// Create default configuration group
var defaultConfigGroupHosts = App.Host.find().mapProperty('hostName');
var selectedConfigGroup;
- var allConfigGroupsNames = ['Default'];
+ var usedConfigGroupNames = ['Default'];
var siteToTagMap = {};
for (var site in data.Clusters.desired_configs) {
if (serviceConfigsDef.sites.indexOf(site) > -1) {
@@ -277,7 +277,6 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
if (data.config_groups.length) {
data.config_groups.forEach(function (item) {
item = item.ConfigGroup;
- allConfigGroupsNames.push(item.group_name);
if (item.tag === this.get('content.serviceName')) {
var groupHosts = item.hosts.mapProperty('host_name');
var newConfigGroup = App.ConfigGroup.create({
@@ -304,9 +303,11 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
selectedConfigGroup = newConfigGroup;
}
configGroups.push(newConfigGroup);
+ } else {
+ usedConfigGroupNames.push(item.group_name);
}
}, this);
- this.set('allConfigGroupsNames', allConfigGroupsNames);
+ this.set('usedConfigGroupNames', usedConfigGroupNames);
}
this.set('configGroups', configGroups);
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/d4a0a57a/ambari-web/app/controllers/main/service/item.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/service/item.js b/ambari-web/app/controllers/main/service/item.js
index 76778ed..7a860dc 100644
--- a/ambari-web/app/controllers/main/service/item.js
+++ b/ambari-web/app/controllers/main/service/item.js
@@ -235,7 +235,7 @@ App.MainServiceItemController = Em.Controller.extend({
header: Em.I18n.t('services.service.config_groups_popup.header').format(displayName),
bodyClass: App.MainServiceManageConfigGroupView.extend({
serviceName: serviceName,
- allConfigGroupsNames: (controller && controller.get('allConfigGroupsNames')),
+ usedConfigGroupNames: (controller && controller.get('usedConfigGroupNames')),
controllerBinding: (!!controller) ? 'App.router.installerManageConfigGroupsController' : 'App.router.manageConfigGroupsController'
}),
classNames: ['sixty-percent-width-modal', 'manage-configuration-group-popup'],
http://git-wip-us.apache.org/repos/asf/ambari/blob/d4a0a57a/ambari-web/app/controllers/main/service/manage_config_groups_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/service/manage_config_groups_controller.js b/ambari-web/app/controllers/main/service/manage_config_groups_controller.js
index 423e975..5014267 100644
--- a/ambari-web/app/controllers/main/service/manage_config_groups_controller.js
+++ b/ambari-web/app/controllers/main/service/manage_config_groups_controller.js
@@ -36,7 +36,7 @@ App.ManageConfigGroupsController = Em.Controller.extend({
loadedHostsToGroupMap: {},
- allConfigGroupsNames: [],
+ usedConfigGroupNames: [],
loadConfigGroups: function (serviceName) {
this.set('serviceName', serviceName);
@@ -64,10 +64,9 @@ App.ManageConfigGroupsController = Em.Controller.extend({
var groupToTypeToTagMap = {};
var configGroups = [];
var serviceName = this.get('serviceName');
- var allConfigGroupsNames = [];
+ var usedConfigGroupNames = [];
data.items.forEach(function (configGroup) {
configGroup = configGroup.ConfigGroup;
- allConfigGroupsNames.push(configGroup.group_name);
if (configGroup.tag === serviceName) {
var hostNames = configGroup.hosts.mapProperty('host_name');
loadedHostsToGroupMap[configGroup.group_name] = hostNames.slice();
@@ -96,9 +95,11 @@ App.ManageConfigGroupsController = Em.Controller.extend({
}
groupToTypeToTagMap[configGroup.group_name][config.type] = config.tag;
});
+ } else {
+ usedConfigGroupNames.push(configGroup.group_name);
}
}, this);
- this.set('allConfigGroupsNames', allConfigGroupsNames);
+ this.set('usedConfigGroupNames', usedConfigGroupNames);
unusedHosts = App.Host.find().mapProperty('hostName');
usedHosts.uniq().forEach(function (host) {
unusedHosts = unusedHosts.without(host);
@@ -260,6 +261,7 @@ App.ManageConfigGroupsController = Em.Controller.extend({
return;
}
var content = this;
+ var self = this;
this.renameGroupPopup = App.ModalPopup.show({
primary: Em.I18n.t('ok'),
secondary: Em.I18n.t('common.cancel'),
@@ -269,7 +271,20 @@ App.ManageConfigGroupsController = Em.Controller.extend({
}),
configGroupName: "",
content: content,
+ validate: function () {
+ var warningMessage = '';
+ if (self.get('usedConfigGroupNames').concat(self.get('configGroups').mapProperty('name')).contains(this.get('configGroupName'))) {
+ warningMessage = Em.I18n.t("config.group.selection.dialog.err.name.exists");
+ }
+ this.set('warningMessage', warningMessage);
+ }.observes('configGroupName'),
+ enablePrimary: function () {
+ return this.get('configGroupName').length > 0 && !this.get('warningMessage');
+ }.property('warningMessage', 'configGroupName'),
onPrimary: function () {
+ if (!this.get('enablePrimary')) {
+ return false;
+ }
this.get('content.selectedConfigGroup').set('name', this.get('configGroupName'));
this.get('content.selectedConfigGroup').set('description', this.get('configGroupDesc'));
this.get('content.selectedConfigGroup.apiResponse').group_name = this.get('configGroupName');
@@ -313,9 +328,9 @@ App.ManageConfigGroupsController = Em.Controller.extend({
configGroupDesc: "",
content: content,
warningMessage: '',
- vaildate: function () {
+ validate: function () {
var warningMessage = '';
- if (self.get('allConfigGroupsNames').contains(this.get('configGroupName'))) {
+ if (self.get('usedConfigGroupNames').concat(self.get('configGroups').mapProperty('name')).contains(this.get('configGroupName'))) {
warningMessage = Em.I18n.t("config.group.selection.dialog.err.name.exists");
}
this.set('warningMessage', warningMessage);
@@ -324,6 +339,9 @@ App.ManageConfigGroupsController = Em.Controller.extend({
return this.get('configGroupName').length > 0 && !this.get('warningMessage');
}.property('warningMessage', 'configGroupName'),
onPrimary: function () {
+ if (!this.get('enablePrimary')) {
+ return false;
+ }
this.get('content').set('configGroupName', this.get('configGroupName'));
this.get('content').set('configGroupDesc', this.get('configGroupDesc'));
var desiredConfig = [];
@@ -463,9 +481,9 @@ App.ManageConfigGroupsController = Em.Controller.extend({
App.InstallerManageConfigGroupsController = App.ManageConfigGroupsController.extend({
name: 'installerManageConfigGroupsController',
- loadConfigGroups: function (serviceName, allConfigGroupsNames) {
+ loadConfigGroups: function (serviceName, usedConfigGroupNames) {
this.set('serviceName', serviceName);
- this.set('allConfigGroupsNames', allConfigGroupsNames);
+ this.set('usedConfigGroupNames', usedConfigGroupNames);
var loadedHostsToGroupMap = this.get('loadedHostsToGroupMap');
var configGroups = this.copyConfigGroups(App.router.get('wizardStep7Controller.selectedService.configGroups'));
configGroups.forEach(function (configGroup) {
@@ -528,9 +546,9 @@ App.InstallerManageConfigGroupsController = App.ManageConfigGroupsController.ext
configGroupName: self.get('selectedConfigGroup.name'),
configGroupDesc: self.get('selectedConfigGroup.description'),
warningMessage: '',
- vaildate: function () {
+ validate: function () {
var warningMessage = '';
- if (self.get('allConfigGroupsNames').contains(this.get('configGroupName'))) {
+ if (self.get('usedConfigGroupNames').concat(self.get('configGroups').mapProperty('name')).contains(this.get('configGroupName'))) {
warningMessage = Em.I18n.t("config.group.selection.dialog.err.name.exists");
}
this.set('warningMessage', warningMessage);
@@ -539,6 +557,9 @@ App.InstallerManageConfigGroupsController = App.ManageConfigGroupsController.ext
return this.get('configGroupName').length > 0 && !this.get('warningMessage');
}.property('warningMessage', 'configGroupName'),
onPrimary: function () {
+ if (!this.get('enablePrimary')) {
+ return false;
+ }
self.set('selectedConfigGroup.name', this.get('configGroupName'));
self.set('selectedConfigGroup.description', this.get('configGroupDesc'));
this.hide();
@@ -560,9 +581,9 @@ App.InstallerManageConfigGroupsController = App.ManageConfigGroupsController.ext
configGroupName: "",
configGroupDesc: "",
warningMessage: '',
- vaildate: function () {
+ validate: function () {
var warningMessage = '';
- if (self.get('allConfigGroupsNames').contains(this.get('configGroupName'))) {
+ if (self.get('usedConfigGroupNames').concat(self.get('configGroups').mapProperty('name')).contains(this.get('configGroupName'))) {
warningMessage = Em.I18n.t("config.group.selection.dialog.err.name.exists");
}
this.set('warningMessage', warningMessage);
@@ -571,6 +592,9 @@ App.InstallerManageConfigGroupsController = App.ManageConfigGroupsController.ext
return this.get('configGroupName').length > 0 && !this.get('warningMessage');
}.property('warningMessage', 'configGroupName'),
onPrimary: function () {
+ if (!this.get('enablePrimary')) {
+ return false;
+ }
var defaultConfigGroup = self.get('configGroups').findProperty('isDefault');
var newConfigGroupData = App.ConfigGroup.create({
id: null,
http://git-wip-us.apache.org/repos/asf/ambari/blob/d4a0a57a/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 c0c5617..93c91f1 100644
--- a/ambari-web/app/controllers/wizard/step7_controller.js
+++ b/ambari-web/app/controllers/wizard/step7_controller.js
@@ -52,12 +52,14 @@ App.WizardStep7Controller = Em.Controller.extend({
configGroups: [],
selectedConfigGroup: null,
- allConfigGroupsNames: function () {
+ usedConfigGroupNames: function () {
var names = [];
+ var selectedServiceName = this.get('selectedService.serviceName');
this.get('stepConfigs').forEach(function (service) {
- names.pushObjects(service.get('configGroups').mapProperty('name'));
- });
- return names.uniq();
+ if (selectedServiceName != service.get('serviceName')) {
+ names.pushObjects(service.get('configGroups').mapProperty('name'));}
+ }, this);
+ return names;
}.property('selectedService.configGroups.@each.name'),
isSubmitDisabled: function () {
http://git-wip-us.apache.org/repos/asf/ambari/blob/d4a0a57a/ambari-web/app/utils/config.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/utils/config.js b/ambari-web/app/utils/config.js
index 5f9e520..6bbc82f 100644
--- a/ambari-web/app/utils/config.js
+++ b/ambari-web/app/utils/config.js
@@ -984,7 +984,7 @@ App.config = Em.Object.create({
* @param callback Callback function which is invoked when dialog
* is closed, cancelled or OK is pressed.
*/
- launchConfigGroupSelectionCreationDialog : function(serviceId, configGroups, allConfigGroupsNames, configProperty, callback, isInstaller) {
+ launchConfigGroupSelectionCreationDialog : function(serviceId, configGroups, usedConfigGroupNames, configProperty, callback, isInstaller) {
var self = this;
var availableConfigGroups = configGroups.slice();
// delete Config Groups, that already have selected property overridden
@@ -1018,6 +1018,9 @@ App.config = Em.Object.create({
return this.get('optionSelectConfigGroup') || (this.get('newConfigGroupName').length > 0 && !this.get('warningMessage'));
}.property('newConfigGroupName', 'optionSelectConfigGroup', 'warningMessage'),
onPrimary: function () {
+ if (!this.get('enablePrimary')) {
+ return false;
+ }
if (this.get('optionSelectConfigGroup')) {
var selectedConfigGroup = this.get('selectedConfigGroup');
this.hide();
@@ -1047,7 +1050,7 @@ App.config = Em.Object.create({
var optionSelect = this.get('optionSelectConfigGroup');
if (!optionSelect) {
var nn = this.get('newConfigGroupName');
- if (nn && allConfigGroupsNames.contains(nn)) {
+ if (nn && usedConfigGroupNames.concat(configGroups.mapProperty('name')).contains(nn)) {
msg = Em.I18n.t("config.group.selection.dialog.err.name.exists");
}
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/d4a0a57a/ambari-web/app/views/common/configs/services_config.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/common/configs/services_config.js b/ambari-web/app/views/common/configs/services_config.js
index 47b4962..89e029d 100644
--- a/ambari-web/app/views/common/configs/services_config.js
+++ b/ambari-web/app/views/common/configs/services_config.js
@@ -514,7 +514,7 @@ App.ServiceConfigsByCategoryView = Ember.View.extend({
if (selectedConfigGroup.get('isDefault')) {
// Launch dialog to pick/create Config-group
App.config.launchConfigGroupSelectionCreationDialog(this.get('service.serviceName'),
- configGroups, serviceConfigController.get('allConfigGroupsNames'), serviceConfigProperty, function (selectedGroupInPopup) {
+ configGroups, serviceConfigController.get('usedConfigGroupNames'), serviceConfigProperty, function (selectedGroupInPopup) {
console.log("launchConfigGroupSelectionCreationDialog(): Selected/Created:", selectedGroupInPopup);
if (selectedGroupInPopup) {
serviceConfigController.set('overrideToAdd', serviceConfigProperty);
http://git-wip-us.apache.org/repos/asf/ambari/blob/d4a0a57a/ambari-web/app/views/main/service/manage_config_groups_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/service/manage_config_groups_view.js b/ambari-web/app/views/main/service/manage_config_groups_view.js
index 9ba4a0f..1d4af36 100644
--- a/ambari-web/app/views/main/service/manage_config_groups_view.js
+++ b/ambari-web/app/views/main/service/manage_config_groups_view.js
@@ -59,7 +59,7 @@ App.MainServiceManageConfigGroupView = Em.View.extend({
}.observes('controller.isLoaded', 'controller.configGroups'),
didInsertElement: function () {
- this.get('controller').loadConfigGroups(this.get('serviceName'), this.get('allConfigGroupsNames'));
+ this.get('controller').loadConfigGroups(this.get('serviceName'), this.get('usedConfigGroupNames'));
$('.properties-link').tooltip();
$("[rel='button-info']").tooltip();
},