Repository: ambari Updated Branches: refs/heads/trunk b85a15c8a -> 74a9d7223
AMBARI-14402 Duplicate config group action doesn't duplicate configs (akovalenko) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/74a9d722 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/74a9d722 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/74a9d722 Branch: refs/heads/trunk Commit: 74a9d7223acf85b64405ba88f65e56d3154b782b Parents: b85a15c Author: Aleksandr Kovalenko <[email protected]> Authored: Wed Dec 16 21:10:17 2015 +0200 Committer: Aleksandr Kovalenko <[email protected]> Committed: Wed Dec 16 21:10:17 2015 +0200 ---------------------------------------------------------------------- .../service/manage_config_groups_controller.js | 22 +++++++++--- .../app/mixins/common/configs/configs_loader.js | 1 + .../main/service/configs/config_overridable.js | 36 ++++++++++++++------ ambari-web/app/models/configs/config_group.js | 5 --- ambari-web/app/utils/ajax/ajax.js | 10 +----- .../views/common/configs/config_history_flow.js | 7 ++-- .../manage_config_groups_controller_test.js | 1 + 7 files changed, 50 insertions(+), 32 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/74a9d722/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 bdc6200..633c3c9 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 @@ -192,7 +192,8 @@ App.ManageConfigGroupsController = Em.Controller.extend(App.ConfigOverridable, { description: groupRecord.get('description'), hosts: groupRecord.get('hosts').slice(0), service_id: groupRecord.get('serviceName'), - desired_configs: groupRecord.get('desiredConfigs') + desired_configs: groupRecord.get('desiredConfigs'), + properties: groupRecord.get('properties') }); } } @@ -698,12 +699,15 @@ App.ManageConfigGroupsController = Em.Controller.extend(App.ConfigOverridable, { App.store.load(App.ServiceConfigGroup, App.configGroupsMapper.generateDefaultGroup(self.get('serviceName'), defaultConfigGroup.get('hosts'), childConfigGroups)); App.store.commit(); if (duplicated) { - self.get('selectedConfigGroup.properties').forEach(function(item) { + self.get('selectedConfigGroup.properties').forEach(function (item) { var property = App.ServiceConfigProperty.create($.extend(false, {}, item)); property.set('group', App.ServiceConfigGroup.find(newGroupId)); properties.push(property); }); - App.ServiceConfigGroup.find(newGroupId).set('properties', properties); + App.ServiceConfigGroup.find(newGroupId).setProperties({ + 'properties': properties, + 'desiredConfigs': self.get('selectedConfigGroup.desiredConfigs') + }); } self.get('configGroups').pushObject(App.ServiceConfigGroup.find(newGroupId)); this.hide(); @@ -896,8 +900,16 @@ App.ManageConfigGroupsController = Em.Controller.extend(App.ConfigOverridable, { if (errors.length > 0) { self.get('subViewController').set('errorMessage', errors.join(". ")); } else { - self.updateConfigGroupOnServicePage(); - self.hide(); + if (!self.get('isAddService') && !self.get('isInstaller') && !modifiedConfigGroups.toCreate.everyProperty('properties.length', 0)) { + //update service config versions only if it is service configs page and at least one newly created group had properties + App.router.get('mainServiceInfoConfigsController').loadServiceConfigVersions().done(function () { + self.updateConfigGroupOnServicePage(); + self.hide(); + }); + } else { + self.updateConfigGroupOnServicePage(); + self.hide(); + } } }); }); http://git-wip-us.apache.org/repos/asf/ambari/blob/74a9d722/ambari-web/app/mixins/common/configs/configs_loader.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/mixins/common/configs/configs_loader.js b/ambari-web/app/mixins/common/configs/configs_loader.js index 8841f1b..5fc44a9 100644 --- a/ambari-web/app/mixins/common/configs/configs_loader.js +++ b/ambari-web/app/mixins/common/configs/configs_loader.js @@ -44,6 +44,7 @@ App.ConfigsLoader = Em.Mixin.create(App.GroupsMappingMixin, { * @returns {$.ajax} */ loadServiceConfigVersions: function () { + this.set('allVersionsLoaded', false); return App.ajax.send({ name: 'service.serviceConfigVersions.get', data: { http://git-wip-us.apache.org/repos/asf/ambari/blob/74a9d722/ambari-web/app/mixins/main/service/configs/config_overridable.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/mixins/main/service/configs/config_overridable.js b/ambari-web/app/mixins/main/service/configs/config_overridable.js index 387e0b0..e6a0f0c 100644 --- a/ambari-web/app/mixins/main/service/configs/config_overridable.js +++ b/ambari-web/app/mixins/main/service/configs/config_overridable.js @@ -225,19 +225,33 @@ App.ConfigOverridable = Em.Mixin.create({ * @method postNewConfigurationGroup */ postNewConfigurationGroup: function (newConfigGroupData, callback) { - var dataHosts = []; - newConfigGroupData.hosts.forEach(function (_host) { - dataHosts.push({ - host_name: _host - }); - }, this); + var properties = {}; + newConfigGroupData.properties.forEach(function (propertiy) { + properties[propertiy.get('name')] = propertiy.get('value'); + }); + var newGroupData = { + "ConfigGroup": { + "group_name": newConfigGroupData.name, + "tag": newConfigGroupData.service_id, + "description": newConfigGroupData.description, + "desired_configs": newConfigGroupData.desired_configs.map(function (cst) { + return { + type: Em.get(cst, 'site') || Em.get(cst, 'type'), + tag: 'version' + (new Date).getTime(), + properties: properties + }; + }), + "hosts": newConfigGroupData.hosts.map(function (h) { + return { + host_name: h + }; + }) + } + }; var sendData = { name: 'config_groups.create', data: { - 'group_name': newConfigGroupData.name, - 'service_id': newConfigGroupData.service_id, - 'description': newConfigGroupData.description, - 'hosts': dataHosts + data: [newGroupData] }, success: 'successFunction', error: 'errorFunction', @@ -282,7 +296,7 @@ App.ConfigOverridable = Em.Mixin.create({ }), desired_configs: desiredConfigs.map(function (cst) { return { - type: Em.get(cst, 'site') || Em.get(cst, 'type') , + type: Em.get(cst, 'site') || Em.get(cst, 'type'), tag: Em.get(cst, 'tag') }; }) http://git-wip-us.apache.org/repos/asf/ambari/blob/74a9d722/ambari-web/app/models/configs/config_group.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/models/configs/config_group.js b/ambari-web/app/models/configs/config_group.js index 70379e5..5c76527 100644 --- a/ambari-web/app/models/configs/config_group.js +++ b/ambari-web/app/models/configs/config_group.js @@ -16,11 +16,6 @@ * limitations under the License. */ -/** - * THIS IS NOT USED FOR NOW - * FOR CONFIG GROUPS WE ARE USING OLD MODELS AND LOGIC - */ - var App = require('app'); App.ServiceConfigGroup = DS.Model.extend({ http://git-wip-us.apache.org/repos/asf/ambari/blob/74a9d722/ambari-web/app/utils/ajax/ajax.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/utils/ajax/ajax.js b/ambari-web/app/utils/ajax/ajax.js index 54a659e..1187d0a 100644 --- a/ambari-web/app/utils/ajax/ajax.js +++ b/ambari-web/app/utils/ajax/ajax.js @@ -2101,15 +2101,7 @@ var urls = { 'format': function (data) { return { type: 'POST', - data: JSON.stringify([{ - "ConfigGroup": { - "group_name": data.group_name, - "tag": data.service_id, - "description": data.description, - "desired_configs": data.desired_configs, - "hosts": data.hosts - } - }]) + data: JSON.stringify(data.data) } } }, http://git-wip-us.apache.org/repos/asf/ambari/blob/74a9d722/ambari-web/app/views/common/configs/config_history_flow.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/views/common/configs/config_history_flow.js b/ambari-web/app/views/common/configs/config_history_flow.js index 3355431..465daca 100644 --- a/ambari-web/app/views/common/configs/config_history_flow.js +++ b/ambari-web/app/views/common/configs/config_history_flow.js @@ -183,8 +183,11 @@ App.ConfigHistoryFlowView = Em.View.extend({ this.$('[data-toggle=tooltip], [data-toggle=arrow-tooltip]').remove(); }, - willInsertElement: function () { + this.setDisplayVersion(); + }, + + setDisplayVersion: function () { var serviceVersions = this.get('serviceVersions'); var startIndex = 0; var currentIndex = 0; @@ -205,7 +208,7 @@ App.ConfigHistoryFlowView = Em.View.extend({ } this.set('startIndex', startIndex); this.adjustFlowView(); - }, + }.observes('allVersionsLoaded'), onChangeConfigGroup: function () { var serviceVersions = this.get('serviceVersions'); http://git-wip-us.apache.org/repos/asf/ambari/blob/74a9d722/ambari-web/test/controllers/main/service/manage_config_groups_controller_test.js ---------------------------------------------------------------------- diff --git a/ambari-web/test/controllers/main/service/manage_config_groups_controller_test.js b/ambari-web/test/controllers/main/service/manage_config_groups_controller_test.js index 4828869..bfc88f4 100644 --- a/ambari-web/test/controllers/main/service/manage_config_groups_controller_test.js +++ b/ambari-web/test/controllers/main/service/manage_config_groups_controller_test.js @@ -306,6 +306,7 @@ describe('App.ManageConfigGroupsController', function() { popup.hide.restore(); }); it("", function () { + manageConfigGroupsController.set('hostsModifiedConfigGroups', {toCreate: []}); popup.onPrimary(); expect(popup.runClearCGQueue.calledOnce).to.be.true; expect(popup.runModifyCGQueue.calledOnce).to.be.true;
