Fix RemoveServerVolume
The nova API we're using to delete a server volume attachment needs to be handed a volume, not a volume attachment. Also make sure that we create an error if the volume isn't actually attached to the server. Signed-off-by: Dr. Jens Harbott <harbott@osism.tech> Co-authored-by: Stephen Finucane <sfinucan@redhat.com> Change-Id: I12abd3787ea47acb4da282d00fdc1989405a0564
This commit is contained in:
parent
9eb42403d3
commit
32e18253fa
@ -3833,17 +3833,11 @@ class RemoveServerVolume(command.Command):
|
||||
ignore_missing=False,
|
||||
)
|
||||
|
||||
volume_attachments = compute_client.volume_attachments(server)
|
||||
for volume_attachment in volume_attachments:
|
||||
if volume_attachment.volume_id == volume.id:
|
||||
compute_client.delete_volume_attachment(
|
||||
volume_attachment,
|
||||
server,
|
||||
)
|
||||
break
|
||||
else:
|
||||
msg = _('Target volume attachment not found.')
|
||||
raise exceptions.CommandError(msg)
|
||||
compute_client.delete_volume_attachment(
|
||||
volume,
|
||||
server,
|
||||
ignore_missing=False,
|
||||
)
|
||||
|
||||
|
||||
class RescueServer(command.Command):
|
||||
|
@ -1016,10 +1016,6 @@ class TestServerRemoveVolume(TestServerVolume):
|
||||
self.cmd = server.RemoveServerVolume(self.app, None)
|
||||
|
||||
def test_server_remove_volume(self):
|
||||
self.sdk_client.volume_attachments.return_value = [
|
||||
self.volume_attachment
|
||||
]
|
||||
|
||||
arglist = [
|
||||
self.servers[0].id,
|
||||
self.volumes[0].id,
|
||||
@ -1036,8 +1032,10 @@ class TestServerRemoveVolume(TestServerVolume):
|
||||
|
||||
self.assertIsNone(result)
|
||||
self.sdk_client.delete_volume_attachment.assert_called_once_with(
|
||||
self.volume_attachment,
|
||||
self.servers[0])
|
||||
self.volumes[0],
|
||||
self.servers[0],
|
||||
ignore_missing=False,
|
||||
)
|
||||
|
||||
|
||||
class TestServerAddNetwork(TestServer):
|
||||
|
Loading…
x
Reference in New Issue
Block a user