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/12/06 18:57:27 UTC

git commit: AMBARI-4008. Config group names should be unique in a service, not global. (akovalenko)

Updated Branches:
  refs/heads/trunk b92082252 -> 0a94a0f43


AMBARI-4008. Config group names should be unique in a service, not global. (akovalenko)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/0a94a0f4
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/0a94a0f4
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/0a94a0f4

Branch: refs/heads/trunk
Commit: 0a94a0f439c31bc15ee3797658fff6e06171fdad
Parents: b920822
Author: Aleksandr Kovalenko <ak...@hortonworks.com>
Authored: Fri Dec 6 19:54:40 2013 +0200
Committer: Aleksandr Kovalenko <ak...@hortonworks.com>
Committed: Fri Dec 6 19:54:40 2013 +0200

----------------------------------------------------------------------
 .../app/controllers/main/host/add_controller.js | 12 +--
 .../controllers/main/service/info/configs.js    | 10 +--
 .../service/manage_config_groups_controller.js  | 88 +++++++++-----------
 .../app/controllers/wizard/step7_controller.js  | 12 +--
 ambari-web/app/models/config_group.js           |  8 --
 ambari-web/app/utils/ajax.js                    |  2 +-
 ambari-web/app/utils/config.js                  |  4 +-
 .../app/views/common/configs/services_config.js |  2 +-
 .../main/service/manage_config_groups_view.js   |  2 +-
 9 files changed, 57 insertions(+), 83 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/0a94a0f4/ambari-web/app/controllers/main/host/add_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/host/add_controller.js b/ambari-web/app/controllers/main/host/add_controller.js
index 2cc93c7..aa41b2e 100644
--- a/ambari-web/app/controllers/main/host/add_controller.js
+++ b/ambari-web/app/controllers/main/host/add_controller.js
@@ -316,7 +316,7 @@ App.AddHostController = App.WizardController.extend({
   applyConfigGroup: function () {
     var serviceConfigGroups = this.get('content.serviceConfigGroups');
     serviceConfigGroups.forEach(function (group){
-      if(group.selectedConfigGroup != "Default") {
+      if (group.configGroups.someProperty('ConfigGroup.group_name', group.selectedConfigGroup)) {
         var configGroup = group.configGroups.findProperty('ConfigGroup.group_name', group.selectedConfigGroup);
         group.hosts.forEach(function(host){
           configGroup.ConfigGroup.hosts.push({
@@ -367,14 +367,15 @@ App.AddHostController = App.WizardController.extend({
           var service = componentServiceMap[slave.componentName];
           var configGroups = this.get('content.configGroups').filterProperty('ConfigGroup.tag', service);
           var configGroupsNames = configGroups.mapProperty('ConfigGroup.group_name');
-          configGroupsNames.unshift('Default');
+          var defaultGroupName = App.Service.DisplayNames[service] + ' Default';
+          configGroupsNames.unshift(defaultGroupName);
           selectedServices.push({
             serviceId: service,
             displayName: App.Service.DisplayNames[service],
             hosts: slave.hosts.mapProperty('hostName'),
             configGroupsNames: configGroupsNames,
             configGroups: configGroups,
-            selectedConfigGroup: "Default"
+            selectedConfigGroup: defaultGroupName
           });
         }
       }
@@ -390,14 +391,15 @@ App.AddHostController = App.WizardController.extend({
         } else {
           var configGroups = this.get('content.configGroups').filterProperty('ConfigGroup.tag', service);
           var configGroupsNames = configGroups.mapProperty('ConfigGroup.group_name').sort();
-          configGroupsNames.unshift('Default');
+          var defaultGroupName = App.Service.DisplayNames[service] + ' Default';
+          configGroupsNames.unshift(defaultGroupName);
           selectedServices.push({
             serviceId: service,
             displayName: App.Service.DisplayNames[service],
             hosts: selectedClientHosts,
             configGroupsNames: configGroupsNames,
             configGroups: configGroups,
-            selectedConfigGroup: "Default"
+            selectedConfigGroup: defaultGroupName
           });
         }
       }, this);

http://git-wip-us.apache.org/repos/asf/ambari/blob/0a94a0f4/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 1c11baa..7010ea6 100644
--- a/ambari-web/app/controllers/main/service/info/configs.js
+++ b/ambari-web/app/controllers/main/service/info/configs.js
@@ -35,7 +35,6 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
   isApplyingChanges: false,
   // contain Service Config Property, when user proceed from Select Config Group dialog
   overrideToAdd: null,
-  usedConfigGroupNames: [],
   serviceConfigs: function () {
     return App.config.get('preDefinedServiceConfigs');
   }.property('App.config.preDefinedServiceConfigs'),
@@ -290,7 +289,6 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
     // Create default configuration group
     var defaultConfigGroupHosts = App.Host.find().mapProperty('hostName');
     var selectedConfigGroup;
-    var usedConfigGroupNames = ['Default'];
     var siteToTagMap = {};
     for (var site in data.Clusters.desired_configs) {
       if (serviceConfigsDef.sites.indexOf(site) > -1) {
@@ -330,16 +328,13 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
               selectedConfigGroup = newConfigGroup;
             }
             configGroups.push(newConfigGroup);
-          } else {
-            usedConfigGroupNames.push(item.group_name);
           }
         }, this);
-        this.set('usedConfigGroupNames', usedConfigGroupNames);
       }
       this.set('configGroups', configGroups);
     }
     var defaultConfigGroup = App.ConfigGroup.create({
-      name: "Default",
+      name: App.Service.DisplayNames[serviceName] + " Default",
       description: "Default cluster level " + serviceName + " configuration",
       isDefault: true,
       hosts: defaultConfigGroupHosts,
@@ -1923,7 +1918,6 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
       bodyClass: App.MainServiceManageConfigGroupView.extend({
         serviceName: serviceName,
         displayName: displayName,
-        usedConfigGroupNames: (controller && controller.get('usedConfigGroupNames')),
         controllerBinding: (!!controller) ? 'App.router.installerManageConfigGroupsController' : 'App.router.manageConfigGroupsController'
       }),
       classNames: ['sixty-percent-width-modal', 'manage-configuration-group-popup'],
@@ -2055,4 +2049,4 @@ App.MainServiceInfoConfigsController = Em.Controller.extend({
       }
     });
   }
-});
\ No newline at end of file
+});

http://git-wip-us.apache.org/repos/asf/ambari/blob/0a94a0f4/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 d6ee058..04a052b 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,8 +36,6 @@ App.ManageConfigGroupsController = Em.Controller.extend({
 
   loadedHostsToGroupMap: {},
 
-  usedConfigGroupNames: [],
-
   resortConfigGroup: function() {
     var configGroups = Ember.copy(this.get('configGroups'));
     if(configGroups.length < 2){
@@ -59,6 +57,9 @@ App.ManageConfigGroupsController = Em.Controller.extend({
     this.set('serviceName', serviceName);
     App.ajax.send({
       name: 'service.load_config_groups',
+      data: {
+        serviceName: serviceName
+      },
       sender: this,
       success: 'onLoadConfigGroupsSuccess',
       error: 'onLoadConfigGroupsError'
@@ -69,55 +70,49 @@ App.ManageConfigGroupsController = Em.Controller.extend({
     var loadedHostsToGroupMap = this.get('loadedHostsToGroupMap');
     var usedHosts = [];
     var unusedHosts = [];
+    var serviceName = this.get('serviceName');
     var defaultConfigGroup = App.ConfigGroup.create({
-      name: "Default",
+      name: App.Service.DisplayNames[serviceName] + " Default",
       description: "Default cluster level " + this.get('serviceName') + " configuration",
       isDefault: true,
       parentConfigGroup: null,
       service: this.get('content'),
       configSiteTags: [],
-      serviceName: this.get('serviceName')
+      serviceName: serviceName
     });
     if (data && data.items) {
       var groupToTypeToTagMap = {};
       var configGroups = [];
-      var serviceName = this.get('serviceName');
-      var usedConfigGroupNames = [];
       data.items.forEach(function (configGroup) {
         configGroup = configGroup.ConfigGroup;
-        if (configGroup.tag === serviceName) {
-          var hostNames = configGroup.hosts.mapProperty('host_name');
-          loadedHostsToGroupMap[configGroup.group_name] = hostNames.slice();
-          var newConfigGroup = App.ConfigGroup.create({
-            id: configGroup.id,
-            name: configGroup.group_name,
-            description: configGroup.description,
-            isDefault: false,
-            parentConfigGroup: defaultConfigGroup,
-            service: App.Service.find().findProperty('serviceName', configGroup.tag),
-            hosts: hostNames,
-            configSiteTags: [],
-            properties: [],
-            apiResponse: configGroup
-          });
-          usedHosts = usedHosts.concat(newConfigGroup.get('hosts'));
-          configGroups.push(newConfigGroup);
-          var newConfigGroupSiteTags = newConfigGroup.get('configSiteTags');
-          configGroup.desired_configs.forEach(function (config) {
-            newConfigGroupSiteTags.push(App.ConfigSiteTag.create({
-              site: config.type,
-              tag: config.tag
-            }));
-            if (!groupToTypeToTagMap[configGroup.group_name]) {
-              groupToTypeToTagMap[configGroup.group_name] = {}
-            }
-            groupToTypeToTagMap[configGroup.group_name][config.type] = config.tag;
-          });
-        } else {
-          usedConfigGroupNames.push(configGroup.group_name);
-        }
+        var hostNames = configGroup.hosts.mapProperty('host_name');
+        loadedHostsToGroupMap[configGroup.group_name] = hostNames.slice();
+        var newConfigGroup = App.ConfigGroup.create({
+          id: configGroup.id,
+          name: configGroup.group_name,
+          description: configGroup.description,
+          isDefault: false,
+          parentConfigGroup: defaultConfigGroup,
+          service: App.Service.find().findProperty('serviceName', configGroup.tag),
+          hosts: hostNames,
+          configSiteTags: [],
+          properties: [],
+          apiResponse: configGroup
+        });
+        usedHosts = usedHosts.concat(newConfigGroup.get('hosts'));
+        configGroups.push(newConfigGroup);
+        var newConfigGroupSiteTags = newConfigGroup.get('configSiteTags');
+        configGroup.desired_configs.forEach(function (config) {
+          newConfigGroupSiteTags.push(App.ConfigSiteTag.create({
+            site: config.type,
+            tag: config.tag
+          }));
+          if (!groupToTypeToTagMap[configGroup.group_name]) {
+            groupToTypeToTagMap[configGroup.group_name] = {}
+          }
+          groupToTypeToTagMap[configGroup.group_name][config.type] = config.tag;
+        });
       }, this);
-      this.set('usedConfigGroupNames', usedConfigGroupNames);
       unusedHosts = App.Host.find().mapProperty('hostName');
       usedHosts.uniq().forEach(function (host) {
         unusedHosts = unusedHosts.without(host);
@@ -287,7 +282,7 @@ App.ManageConfigGroupsController = Em.Controller.extend({
    * rename new config group
    */
   renameConfigGroup: function () {
-    if(this.get('selectedConfigGroup.name') == "Default") {
+    if(this.get('selectedConfigGroup.isDefault')) {
       return;
     }
     var content = this;
@@ -303,7 +298,7 @@ App.ManageConfigGroupsController = Em.Controller.extend({
       content: content,
       validate: function () {
         var warningMessage = '';
-        if (self.get('usedConfigGroupNames').concat(self.get('configGroups').mapProperty('name')).contains(this.get('configGroupName'))) {
+        if (self.get('configGroups').mapProperty('name').contains(this.get('configGroupName'))) {
           warningMessage = Em.I18n.t("config.group.selection.dialog.err.name.exists");
         }
         this.set('warningMessage', warningMessage);
@@ -364,7 +359,7 @@ App.ManageConfigGroupsController = Em.Controller.extend({
       warningMessage: '',
       validate: function () {
         var warningMessage = '';
-        if (self.get('usedConfigGroupNames').concat(self.get('configGroups').mapProperty('name')).contains(this.get('configGroupName').trim())) {
+        if (self.get('configGroups').mapProperty('name').contains(this.get('configGroupName').trim())) {
           warningMessage = Em.I18n.t("config.group.selection.dialog.err.name.exists");
         }
         this.set('warningMessage', warningMessage);
@@ -480,7 +475,7 @@ App.ManageConfigGroupsController = Em.Controller.extend({
    * duplicate config group
    */
   duplicateConfigGroup: function() {
-    if(this.get('selectedConfigGroup.name') == "Default") {
+    if(this.get('selectedConfigGroup.isDefault')) {
       return;
     }
     this.addConfigGroup(true);
@@ -520,9 +515,8 @@ App.ManageConfigGroupsController = Em.Controller.extend({
 App.InstallerManageConfigGroupsController = App.ManageConfigGroupsController.extend({
   name: 'installerManageConfigGroupsController',
 
-  loadConfigGroups: function (serviceName, usedConfigGroupNames) {
+  loadConfigGroups: function (serviceName) {
     this.set('serviceName', serviceName);
-    this.set('usedConfigGroupNames', usedConfigGroupNames);
     var loadedHostsToGroupMap = this.get('loadedHostsToGroupMap');
     var configGroups = this.copyConfigGroups(App.router.get('wizardStep7Controller.selectedService.configGroups'));
     configGroups.forEach(function (configGroup) {
@@ -571,7 +565,7 @@ App.InstallerManageConfigGroupsController = App.ManageConfigGroupsController.ext
    * rename new config group
    */
   renameConfigGroup: function () {
-    if(this.get('selectedConfigGroup.name') == "Default") {
+    if(this.get('selectedConfigGroup.isDefault')) {
       return;
     }
     var self = this;
@@ -587,7 +581,7 @@ App.InstallerManageConfigGroupsController = App.ManageConfigGroupsController.ext
       warningMessage: '',
       validate: function () {
         var warningMessage = '';
-        if (self.get('usedConfigGroupNames').concat(self.get('configGroups').mapProperty('name')).contains(this.get('configGroupName'))) {
+        if (self.get('configGroups').mapProperty('name').contains(this.get('configGroupName'))) {
           warningMessage = Em.I18n.t("config.group.selection.dialog.err.name.exists");
         }
         this.set('warningMessage', warningMessage);
@@ -625,7 +619,7 @@ App.InstallerManageConfigGroupsController = App.ManageConfigGroupsController.ext
       warningMessage: '',
       validate: function () {
         var warningMessage = '';
-        if (self.get('usedConfigGroupNames').concat(self.get('configGroups').mapProperty('name')).contains(this.get('configGroupName'))) {
+        if (self.get('configGroups').mapProperty('name').contains(this.get('configGroupName'))) {
           warningMessage = Em.I18n.t("config.group.selection.dialog.err.name.exists");
         }
         this.set('warningMessage', warningMessage);

http://git-wip-us.apache.org/repos/asf/ambari/blob/0a94a0f4/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 2c2848f..9709409 100644
--- a/ambari-web/app/controllers/wizard/step7_controller.js
+++ b/ambari-web/app/controllers/wizard/step7_controller.js
@@ -51,16 +51,8 @@ App.WizardStep7Controller = Em.Controller.extend({
   isInstaller: true,
 
   configGroups: [],
+
   selectedConfigGroup: null,
-  usedConfigGroupNames: function () {
-    var names = [];
-    var selectedServiceName = this.get('selectedService.serviceName');
-    this.get('stepConfigs').forEach(function (service) {
-      if (selectedServiceName != service.get('serviceName')) {
-      names.pushObjects(service.get('configGroups').mapProperty('name'));}
-    }, this);
-    return names;
-  }.property('selectedService.configGroups.@each.name'),
 
   isSubmitDisabled: function () {
     return (!this.stepConfigs.filterProperty('showConfig', true).everyProperty('errorCount', 0) || this.get("miscModalVisible"));
@@ -167,7 +159,7 @@ App.WizardStep7Controller = Em.Controller.extend({
       if (!serviceRawGroups.length) {
         service.set('configGroups', [
           App.ConfigGroup.create({
-            name: "Default",
+            name: App.Service.DisplayNames[service.serviceName] + " Default",
             description: "Default cluster level " + service.serviceName + " configuration",
             isDefault: true,
             hosts: Em.copy(hosts),

http://git-wip-us.apache.org/repos/asf/ambari/blob/0a94a0f4/ambari-web/app/models/config_group.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/models/config_group.js b/ambari-web/app/models/config_group.js
index d99d143..1bfc348 100644
--- a/ambari-web/app/models/config_group.js
+++ b/ambari-web/app/models/config_group.js
@@ -83,14 +83,6 @@ App.ConfigGroup = Ember.Object.extend({
    */
   displayName: function () {
     var name = this.get('name');
-    if (name && name == "Default") {
-      if (this.get('serviceName')) {
-        name = App.Service.DisplayNames[this.get('serviceName').toUpperCase()] + " Default";
-      }
-      if (this.get('service')) {
-        name = App.Service.DisplayNames[this.get('service.id')] + " Default";
-      }
-    }
     if (name && name.length>App.config.CONFIG_GROUP_NAME_MAX_LENGTH) {
       var middle = Math.floor(App.config.CONFIG_GROUP_NAME_MAX_LENGTH / 2);
       name = name.substring(0, middle) + "..." + name.substring(name.length-middle);

http://git-wip-us.apache.org/repos/asf/ambari/blob/0a94a0f4/ambari-web/app/utils/ajax.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/utils/ajax.js b/ambari-web/app/utils/ajax.js
index 4f299f2..9a2f1fa 100644
--- a/ambari-web/app/utils/ajax.js
+++ b/ambari-web/app/utils/ajax.js
@@ -91,7 +91,7 @@ var urls = {
     }
   },
   'service.load_config_groups': {
-    'real': '/clusters/{clusterName}/config_groups?fields=*',
+    'real': '/clusters/{clusterName}/config_groups?ConfigGroup/tag={serviceName}&fields=*',
     'mock': ''
   },
   'reassign.stop_services': {

http://git-wip-us.apache.org/repos/asf/ambari/blob/0a94a0f4/ambari-web/app/utils/config.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/utils/config.js b/ambari-web/app/utils/config.js
index a446125..a418c2a 100644
--- a/ambari-web/app/utils/config.js
+++ b/ambari-web/app/utils/config.js
@@ -1015,7 +1015,7 @@ App.config = Em.Object.create({
     }
   },
 
-  launchConfigGroupSelectionCreationDialog : function(serviceId, configGroups, usedConfigGroupNames, configProperty, callback, isInstaller) {
+  launchConfigGroupSelectionCreationDialog : function(serviceId, configGroups, configProperty, callback, isInstaller) {
     var self = this;
     var availableConfigGroups = configGroups.slice();
     // delete Config Groups, that already have selected property overridden
@@ -1085,7 +1085,7 @@ App.config = Em.Object.create({
         var optionSelect = this.get('optionSelectConfigGroup');
         if (!optionSelect) {
           var nn = this.get('newConfigGroupName');
-          if (nn && usedConfigGroupNames.concat(configGroups.mapProperty('name')).contains(nn)) {
+          if (nn && 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/0a94a0f4/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 99f0ae9..fc88342 100644
--- a/ambari-web/app/views/common/configs/services_config.js
+++ b/ambari-web/app/views/common/configs/services_config.js
@@ -553,7 +553,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('usedConfigGroupNames'), serviceConfigProperty, function (selectedGroupInPopup) {
+        configGroups, 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/0a94a0f4/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 ae7b747..be13b85 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
@@ -63,7 +63,7 @@ App.MainServiceManageConfigGroupView = Em.View.extend({
   }.observes('controller.isLoaded', 'controller.configGroups'),
 
   didInsertElement: function () {
-    this.get('controller').loadConfigGroups(this.get('serviceName'), this.get('usedConfigGroupNames'));
+    this.get('controller').loadConfigGroups(this.get('serviceName'));
     App.tooltip($('.properties-link'));
     App.tooltip($("[rel='button-info']"));
     App.tooltip($("[rel='button-info-dropdown']"), {placement: 'left'});