Skip to content

Commit fae293d

Browse files
diweizhustephenfin
authored andcommitted
Switch command server remove volume to sdk
Change-Id: If6f6cf93b55a67e767c54de8ce21f25252cf99ca
1 parent 28cd576 commit fae293d

3 files changed

Lines changed: 63 additions & 13 deletions

File tree

openstackclient/compute/v2/server.py

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3793,22 +3793,29 @@ def get_parser(self, prog_name):
37933793
return parser
37943794

37953795
def take_action(self, parsed_args):
3796-
compute_client = self.app.client_manager.compute
3797-
volume_client = self.app.client_manager.volume
3796+
compute_client = self.app.client_manager.sdk_connection.compute
3797+
volume_client = self.app.client_manager.sdk_connection.volume
37983798

3799-
server = utils.find_resource(
3800-
compute_client.servers,
3799+
server = compute_client.find_server(
38013800
parsed_args.server,
3801+
ignore_missing=False,
38023802
)
3803-
volume = utils.find_resource(
3804-
volume_client.volumes,
3803+
volume = volume_client.find_volume(
38053804
parsed_args.volume,
3805+
ignore_missing=False,
38063806
)
38073807

3808-
compute_client.volumes.delete_server_volume(
3809-
server.id,
3810-
volume.id,
3811-
)
3808+
volume_attachments = compute_client.volume_attachments(server)
3809+
for volume_attachment in volume_attachments:
3810+
if volume_attachment.volume_id == volume.id:
3811+
compute_client.delete_volume_attachment(
3812+
volume_attachment,
3813+
server,
3814+
)
3815+
break
3816+
else:
3817+
msg = _('Target volume attachment not found.')
3818+
raise exceptions.CommandError(msg)
38123819

38133820

38143821
class RescueServer(command.Command):

openstackclient/tests/unit/compute/v2/test_server.py

Lines changed: 42 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -692,9 +692,6 @@ def setUp(self):
692692
'create_volume_attachment': None,
693693
}
694694

695-
# Get the command object to test
696-
self.cmd = server.AddServerVolume(self.app, None)
697-
698695
self.servers = self.setup_sdk_servers_mock(count=1)
699696
self.volumes = self.setup_sdk_volumes_mock(count=1)
700697

@@ -709,6 +706,15 @@ def setUp(self):
709706
self.sdk_client.create_volume_attachment.return_value = \
710707
self.volume_attachment
711708

709+
710+
class TestServerAddVolume(TestServerVolume):
711+
712+
def setUp(self):
713+
super(TestServerAddVolume, self).setUp()
714+
715+
# Get the command object to test
716+
self.cmd = server.AddServerVolume(self.app, None)
717+
712718
@mock.patch.object(sdk_utils, 'supports_microversion', return_value=False)
713719
def test_server_add_volume(self, sm_mock):
714720

@@ -985,6 +991,39 @@ def test_server_add_volume_with_disable_and_enable_delete_on_termination(
985991
'with argument --enable-delete-on-termination', str(ex))
986992

987993

994+
class TestServerRemoveVolume(TestServerVolume):
995+
996+
def setUp(self):
997+
super(TestServerRemoveVolume, self).setUp()
998+
999+
# Get the command object to test
1000+
self.cmd = server.RemoveServerVolume(self.app, None)
1001+
1002+
def test_server_remove_volume(self):
1003+
self.sdk_client.volume_attachments.return_value = [
1004+
self.volume_attachment
1005+
]
1006+
1007+
arglist = [
1008+
self.servers[0].id,
1009+
self.volumes[0].id,
1010+
]
1011+
1012+
verifylist = [
1013+
('server', self.servers[0].id),
1014+
('volume', self.volumes[0].id),
1015+
]
1016+
1017+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
1018+
1019+
result = self.cmd.take_action(parsed_args)
1020+
1021+
self.assertIsNone(result)
1022+
self.sdk_client.delete_volume_attachment.assert_called_once_with(
1023+
self.volume_attachment,
1024+
self.servers[0])
1025+
1026+
9881027
class TestServerAddNetwork(TestServer):
9891028

9901029
def setUp(self):
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
---
2+
features:
3+
- |
4+
Switch command server remove volume to using sdk.

0 commit comments

Comments
 (0)