Merge "evacuate: respect original SHUTOFF state in --wait completion"

This commit is contained in:
Zuul 2025-05-21 10:29:33 +00:00 committed by Gerrit Code Review
commit 88b59d8975
2 changed files with 34 additions and 0 deletions
openstackclient
compute/v2
tests/unit/compute/v2

@ -3882,9 +3882,15 @@ host."""
compute_client.evacuate_server(server, **kwargs)
if parsed_args.wait:
orig_status = server.status
success = ['ACTIVE']
if orig_status == 'SHUTOFF':
success.append('SHUTOFF')
if utils.wait_for_status(
compute_client.get_server,
server.id,
success_status=success,
callback=_show_progress,
):
self.app.stdout.write(_('Complete\n'))

@ -7039,6 +7039,7 @@ class TestServerEvacuate(TestServer):
'image': self.image,
'networks': {},
'adminPass': 'passw0rd',
'status': 'ACTIVE',
}
self.server = compute_fakes.create_one_server(attrs=attrs)
attrs['id'] = self.server.id
@ -7176,6 +7177,33 @@ class TestServerEvacuate(TestServer):
mock_wait_for_status.assert_called_once_with(
self.compute_client.get_server,
self.server.id,
success_status=['ACTIVE'],
callback=mock.ANY,
)
@mock.patch.object(common_utils, 'wait_for_status', return_value=True)
def test_evacuate_with_wait_ok_shutoff(self, mock_wait_for_status):
self.server.status = 'SHUTOFF'
self.compute_client.get_server.return_value = self.server
args = [
self.server.id,
'--wait',
]
verify_args = [
('server', self.server.id),
('wait', True),
]
evac_args = {
'host': None,
'on_shared_storage': False,
'admin_pass': None,
}
self._test_evacuate(args, verify_args, evac_args)
mock_wait_for_status.assert_called_once_with(
self.compute_client.get_server,
self.server.id,
success_status=['ACTIVE', 'SHUTOFF'],
callback=mock.ANY,
)