Jelajahi Sumber

AMBARI-14265 Saving config overrides doesn't work when adding config to new group. (ababiichuk)

aBabiichuk 9 tahun lalu
induk
melakukan
d925b2fa2b

+ 4 - 5
ambari-web/app/controllers/main/service/manage_config_groups_controller.js

@@ -675,11 +675,10 @@ App.ManageConfigGroupsController = Em.Controller.extend(App.ConfigOverridable, {
       }.property('warningMessage', 'configGroupName'),
 
       onPrimary: function () {
-        var defaultConfigGroup = self.get('configGroups').findProperty('isDefault');
-        var properties = [];
-        var serviceName = self.get('serviceName');
-        //temporarily id until real assigned by server
-        var newGroupId = serviceName + "_NEW_" + self.get('configGroups.length');
+        var defaultConfigGroup = self.get('configGroups').findProperty('isDefault'),
+          properties = [], serviceName = self.get('serviceName'),
+          groupName = this.get('configGroupName').trim(),
+          newGroupId = App.ServiceConfigGroup.groupId(serviceName, groupName);
 
         App.store.load(App.ServiceConfigGroup, {
           id: newGroupId,

+ 2 - 2
ambari-web/app/mappers/configs/config_groups_mapper.js

@@ -67,9 +67,9 @@ App.configGroupsMapper = App.QuickDataMapper.create({
         json.items.forEach(function (configGroup) {
           if (configGroup.group_name != 'default') {
             if (mapFromVersions) {
-              configGroup.id = configGroup.service_name + configGroup.group_id;
+              configGroup.id = App.ServiceConfigGroup.groupId(configGroup.service_name, configGroup.group_name);
             } else {
-              configGroup.id = configGroup.ConfigGroup.tag + configGroup.ConfigGroup.id;
+              configGroup.id = App.ServiceConfigGroup.groupId(configGroup.ConfigGroup.tag, configGroup.ConfigGroup.group_name);
               configGroup.hosts = configGroup.ConfigGroup.hosts.mapProperty('host_name');
               configGroup.service_name = configGroup.ConfigGroup.tag;
             }

+ 3 - 8
ambari-web/app/mixins/main/service/configs/config_overridable.js

@@ -131,7 +131,7 @@ App.ConfigOverridable = Em.Mixin.create({
         } else {
           var newConfigGroupName = this.get('newConfigGroupName').trim();
           var newConfigGroup = {
-            id: serviceName + "_NEW_" + configGroups.length,
+            id: App.ServiceConfigGroup.groupId(serviceId, newConfigGroupName),
             name: newConfigGroupName,
             is_default: false,
             parent_config_group_id: App.ServiceConfigGroup.getParentConfigGroupId(serviceId),
@@ -220,7 +220,7 @@ App.ConfigOverridable = Em.Mixin.create({
    * Create a new config-group for a service.
    *
    * @param {object} newConfigGroupData config group to post to server
-   * @param {Function} callback Callback function for Success or Error handling
+   * @param {Function} [callback] Callback function for Success or Error handling
    * @return {$.ajax}
    * @method postNewConfigurationGroup
    */
@@ -234,7 +234,6 @@ App.ConfigOverridable = Em.Mixin.create({
     var sendData = {
       name: 'config_groups.create',
       data: {
-        'mock_id': newConfigGroupData.id,
         'group_name': newConfigGroupData.name,
         'service_id': newConfigGroupData.service_id,
         'description': newConfigGroupData.description,
@@ -243,11 +242,7 @@ App.ConfigOverridable = Em.Mixin.create({
       success: 'successFunction',
       error: 'errorFunction',
       successFunction: function (response, opt, params) {
-        var configGroupData = App.router.get('manageConfigGroupsController').generateOriginalConfigGroups([App.ServiceConfigGroup.find(params.mock_id)]);
-        App.configGroupsMapper.deleteRecord(App.ServiceConfigGroup.find(params.mock_id));
-        configGroupData[0].id = response.resources[0].ConfigGroup.id;
-        App.store.load(App.ServiceConfigGroup, configGroupData[0]);
-        App.ServiceConfigGroup.find().clear();
+        App.configGroupsMapper.map(response, false, [params.service_id]);
         if (callback) {
           callback();
         }

+ 5 - 1
ambari-web/app/models/configs/config_group.js

@@ -158,5 +158,9 @@ App.ServiceConfigGroup = DS.Model.extend({
 App.ServiceConfigGroup.FIXTURES = [];
 
 App.ServiceConfigGroup.getParentConfigGroupId = function(serviceName) {
-  return serviceName + '0';
+  return App.ServiceConfigGroup.groupId(serviceName, 'Default');
+};
+
+App.ServiceConfigGroup.groupId = function(serviceName, groupName) {
+  return serviceName + "_" + groupName;
 };