Repository: ambari Updated Branches: refs/heads/trunk f93670872 -> 1c85788c9
AMBARI-7956. It is not possible to remove custom config group with linked host on EC2 (+external host names instead internal). (Denys Buzhor via akovalenko) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/1c85788c Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/1c85788c Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/1c85788c Branch: refs/heads/trunk Commit: 1c85788c91b9bfd77d0c233d00f7754eebfc891c Parents: f936708 Author: Aleksandr Kovalenko <[email protected]> Authored: Fri Oct 24 21:16:53 2014 +0300 Committer: Aleksandr Kovalenko <[email protected]> Committed: Fri Oct 24 21:17:13 2014 +0300 ---------------------------------------------------------------------- .../service/manage_config_groups_controller.js | 2 +- .../manage_config_groups_controller_test.js | 136 +++++++++++++++++++ 2 files changed, 137 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/1c85788c/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 2110a87..18fcd93 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 @@ -401,7 +401,7 @@ App.ManageConfigGroupsController = Em.Controller.extend({ return; } //move hosts of group to default group (available hosts) - this.set('selectedHosts', selectedConfigGroup.get('hosts')); + this.set('selectedHosts', selectedConfigGroup.get('publicHosts')); this.deleteHosts(); this.get('configGroups').removeObject(selectedConfigGroup); this.set('selectedConfigGroup', this.get('configGroups').findProperty('isDefault')); http://git-wip-us.apache.org/repos/asf/ambari/blob/1c85788c/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 3d96ba9..a234079 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 @@ -68,4 +68,140 @@ describe('App.ManageConfigGroupsController', function() { }); }); }); + + describe('Host Name converting', function() { + describe('#convertHostNames', function() { + var hosts = [ + Em.Object.create({ + hostName: 'internal-1.com', + publicHostName: 'external-1.com' + }), + Em.Object.create({ + hostName: 'internal-2.com', + publicHostName: 'external-2.com' + }), + Em.Object.create({ + hostName: 'internal-3.com', + publicHostName: 'external-3.com' + }) + ]; + + describe('#hostsToPublic', function() { + beforeEach(function() { + manageConfigGroupsController = App.ManageConfigGroupsController.create({ + clusterHosts: Em.A(hosts) + }); + }); + + var tests = [ + { + hostsList: ['internal-1.com', 'internal-2.com', 'internal-3.com'], + e: ['external-1.com', 'external-2.com', 'external-3.com'] + }, + { + hostsList: 'internal-2.com', + e: 'external-2.com' + } + ]; + var message = 'should convert internal host names `{0}` to external host names `{1}`'; + tests.forEach(function(test) { + it(message.format(test.hostsList, test.e), function() { + expect(manageConfigGroupsController.hostsToPublic(test.hostsList)).to.eql(test.e); + }); + }); + }); + + describe('#publicToHostName', function() { + beforeEach(function() { + manageConfigGroupsController = App.ManageConfigGroupsController.create({ + clusterHosts: Em.A(hosts) + }); + }); + + var tests = [ + { + hostsList: ['external-1.com', 'external-2.com', 'external-3.com'], + e: ['internal-1.com', 'internal-2.com', 'internal-3.com'] + }, + { + hostsList: 'external-2.com', + e: 'internal-2.com' + } + ]; + var message = 'should convert internal host names `{0}` to external host names `{1}`'; + tests.forEach(function(test) { + it(message.format(test.hostsList, test.e), function() { + expect(manageConfigGroupsController.publicToHostName(test.hostsList)).to.eql(test.e); + }); + }); + }); + }); + + }); + + describe('#deleteHosts', function() { + var hosts = [ + Em.Object.create({ + hostName: 'internal-1.com', + publicHostName: 'external-1.com' + }), + Em.Object.create({ + hostName: 'internal-2.com', + publicHostName: 'external-2.com' + }), + Em.Object.create({ + hostName: 'internal-3.com', + publicHostName: 'external-3.com' + }) + ]; + + beforeEach(function() { + manageConfigGroupsController = App.ManageConfigGroupsController.create({ + clusterHosts: hosts + }); + }); + + var createConfigGroupWithParentMock = function(groupHosts, groupPublicHosts, allHosts) { + var parentCGHosts = allHosts.filter(function(host) { + return !groupHosts.contains(host.get('hostName')); + }); + return Em.Object.create({ + parentConfigGroup: { + hosts: parentCGHosts.mapProperty('hostName'), + publicHosts: parentCGHosts.mapProperty('publicHostName') + }, + hosts: groupHosts, + publicHosts: groupPublicHosts + }); + }; + + var tests = [ + { + selectedHosts: ['external-1.com', 'external-2.com'], + selectedConfigGroup: createConfigGroupWithParentMock( + ['internal-1.com', 'internal-2.com'], + ['external-1.com', 'external-2.com'], hosts), + e: [] + }, + { + selectedHosts: ['external-1.com'], + selectedConfigGroup: createConfigGroupWithParentMock( + ['internal-1.com', 'internal-2.com'], + ['external-1.com', 'external-2.com'], hosts), + e: ['external-2.com'] + } + ]; + + tests.forEach(function(test) { + it('should remove {0}'.format(test.selectedHosts.slice(0)), function() { + manageConfigGroupsController.reopen({ + selectedHosts: test.selectedHosts, + selectedConfigGroup: test.selectedConfigGroup + }); + manageConfigGroupsController.deleteHosts(); + expect(manageConfigGroupsController.get('selectedConfigGroup.publicHosts').toArray()).to.eql(test.e); + }); + }); + + }); });
