Skip to content

Commit 8405db9

Browse files
committed
Pass security group id to novaclient
In RemoveServerSecurityGroup we currently pass the entire security group object, which results in TypeError in novaclient. Added unit test case to test command 'openstack server remove security group -h <server> <group>' Change-Id: I6d486403a83804c3a30d6f89d2cf7f64f09797c6 Closes-Bug: 1590883
1 parent 00a1535 commit 8405db9

2 files changed

Lines changed: 54 additions & 1 deletion

File tree

openstackclient/compute/v2/server.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1222,7 +1222,7 @@ def take_action(self, parsed_args):
12221222
parsed_args.group,
12231223
)
12241224

1225-
server.remove_security_group(security_group)
1225+
server.remove_security_group(security_group.id)
12261226

12271227

12281228
class RemoveServerVolume(command.Command):

openstackclient/tests/compute/v2/test_server.py

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,11 @@ def setUp(self):
4343
self.flavors_mock = self.app.client_manager.compute.flavors
4444
self.flavors_mock.reset_mock()
4545

46+
# Get a shortcut to the compute client SecurityGroupManager Mock
47+
self.security_groups_mock = \
48+
self.app.client_manager.compute.security_groups
49+
self.security_groups_mock.reset_mock()
50+
4651
# Get a shortcut to the image client ImageManager Mock
4752
self.images_mock = self.app.client_manager.image.images
4853
self.images_mock.reset_mock()
@@ -981,6 +986,54 @@ def test_server_remove_floating_ip(self):
981986
self.assertIsNone(result)
982987

983988

989+
class TestServerRemoveSecurityGroup(TestServer):
990+
991+
def setUp(self):
992+
super(TestServerRemoveSecurityGroup, self).setUp()
993+
994+
self.security_group = \
995+
compute_fakes.FakeSecurityGroup.create_one_security_group()
996+
# This is the return value for utils.find_resource() for security group
997+
self.security_groups_mock.get.return_value = self.security_group
998+
999+
attrs = {
1000+
'security_groups': [{'name': self.security_group.id}]
1001+
}
1002+
methods = {
1003+
'remove_security_group': None,
1004+
}
1005+
1006+
self.server = compute_fakes.FakeServer.create_one_server(
1007+
attrs=attrs,
1008+
methods=methods
1009+
)
1010+
# This is the return value for utils.find_resource() for server
1011+
self.servers_mock.get.return_value = self.server
1012+
1013+
# Get the command object to test
1014+
self.cmd = server.RemoveServerSecurityGroup(self.app, None)
1015+
1016+
def test_server_remove_security_group(self):
1017+
arglist = [
1018+
self.server.id,
1019+
self.security_group.id
1020+
]
1021+
verifylist = [
1022+
('server', self.server.id),
1023+
('group', self.security_group.id),
1024+
]
1025+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
1026+
result = self.cmd.take_action(parsed_args)
1027+
self.security_groups_mock.get.assert_called_with(
1028+
self.security_group.id,
1029+
)
1030+
self.servers_mock.get.assert_called_with(self.server.id)
1031+
self.server.remove_security_group.assert_called_with(
1032+
self.security_group.id,
1033+
)
1034+
self.assertIsNone(result)
1035+
1036+
9841037
class TestServerResize(TestServer):
9851038

9861039
def setUp(self):

0 commit comments

Comments
 (0)