Skip to content

Commit 1b8eabe

Browse files
Zuulopenstack-gerrit
authored andcommitted
Merge "compute: Migrate 'server evacuate' to SDK"
2 parents f58f858 + e6dc0f3 commit 1b8eabe

3 files changed

Lines changed: 28 additions & 38 deletions

File tree

openstackclient/compute/v2/server.py

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3693,7 +3693,6 @@ def _show_progress(progress):
36933693
return zip(*sorted(data.items()))
36943694

36953695

3696-
# TODO(stephenfin): Migrate to SDK
36973696
class EvacuateServer(command.ShowOne):
36983697
_description = _(
36993698
"""Evacuate a server to a different host.
@@ -3719,7 +3718,6 @@ def get_parser(self, prog_name):
37193718
metavar='<server>',
37203719
help=_('Server (name or ID)'),
37213720
)
3722-
37233721
parser.add_argument(
37243722
'--wait',
37253723
action='store_true',
@@ -3766,19 +3764,19 @@ def _show_progress(progress):
37663764
self.app.stdout.write('\rProgress: %s' % progress)
37673765
self.app.stdout.flush()
37683766

3769-
compute_client = self.app.client_manager.compute
3767+
compute_client = self.app.client_manager.sdk_connection.compute
37703768
image_client = self.app.client_manager.image
37713769

37723770
if parsed_args.host:
3773-
if compute_client.api_version < api_versions.APIVersion('2.29'):
3771+
if not sdk_utils.supports_microversion(compute_client, '2.29'):
37743772
msg = _(
37753773
'--os-compute-api-version 2.29 or later is required '
37763774
'to specify a preferred host.'
37773775
)
37783776
raise exceptions.CommandError(msg)
37793777

37803778
if parsed_args.shared_storage:
3781-
if compute_client.api_version > api_versions.APIVersion('2.13'):
3779+
if sdk_utils.supports_microversion(compute_client, '2.14'):
37823780
msg = _(
37833781
'--os-compute-api-version 2.13 or earlier is required '
37843782
'to specify shared-storage.'
@@ -3790,18 +3788,17 @@ def _show_progress(progress):
37903788
'password': parsed_args.password,
37913789
}
37923790

3793-
if compute_client.api_version <= api_versions.APIVersion('2.13'):
3791+
if not sdk_utils.supports_microversion(compute_client, '2.14'):
37943792
kwargs['on_shared_storage'] = parsed_args.shared_storage
37953793

3796-
server = utils.find_resource(
3797-
compute_client.servers, parsed_args.server
3794+
server = compute_client.find_server(
3795+
parsed_args.server, ignore_missing=False
37983796
)
3799-
3800-
server.evacuate(**kwargs)
3797+
compute_client.evacuate_server(server, **kwargs)
38013798

38023799
if parsed_args.wait:
38033800
if utils.wait_for_status(
3804-
compute_client.servers.get,
3801+
compute_client.get_server,
38053802
server.id,
38063803
callback=_show_progress,
38073804
):
@@ -3810,8 +3807,6 @@ def _show_progress(progress):
38103807
msg = _('Error evacuating server: %s') % server.id
38113808
raise exceptions.CommandError(msg)
38123809

3813-
# TODO(stephenfin): Remove when the whole command is using SDK
3814-
compute_client = self.app.client_manager.sdk_connection.compute
38153810
data = _prep_server_detail(compute_client, image_client, server)
38163811
return zip(*sorted(data.items()))
38173812

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

Lines changed: 16 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -7105,46 +7105,37 @@ class TestServerEvacuate(TestServer):
71057105
def setUp(self):
71067106
super().setUp()
71077107

7108-
# Return value for utils.find_resource for image
71097108
self.image = image_fakes.create_one_image()
71107109
self.image_client.get_image.return_value = self.image
71117110

7112-
# Fake the rebuilt new server.
71137111
attrs = {
7114-
'image': {'id': self.image.id},
7112+
'image': self.image,
71157113
'networks': {},
71167114
'adminPass': 'passw0rd',
71177115
}
7118-
new_server = compute_fakes.create_one_server(attrs=attrs)
7119-
7120-
# Fake the server to be rebuilt. The IDs of them should be the same.
7121-
attrs['id'] = new_server.id
7122-
methods = {
7123-
'evacuate': new_server,
7124-
}
7125-
self.server = compute_fakes.create_one_server(
7126-
attrs=attrs, methods=methods
7127-
)
7116+
self.server = compute_fakes.create_one_sdk_server(attrs=attrs)
7117+
attrs['id'] = self.server.id
7118+
self.new_server = compute_fakes.create_one_sdk_server(attrs=attrs)
71287119

71297120
# Return value for utils.find_resource for server.
7130-
self.servers_mock.get.return_value = self.server
7131-
7132-
# We need an SDK-style server object also for the get_server call in
7133-
# _prep_server_detail
7134-
# TODO(stephenfin): Remove when the whole command is using SDK
7135-
self.sdk_server = compute_fakes.create_one_sdk_server(attrs=attrs)
7136-
self.compute_sdk_client.get_server.return_value = self.sdk_server
7121+
self.compute_sdk_client.find_server.return_value = self.server
7122+
self.compute_sdk_client.get_server.return_value = self.server
71377123

71387124
self.cmd = server.EvacuateServer(self.app, None)
71397125

71407126
def _test_evacuate(self, args, verify_args, evac_args):
71417127
parsed_args = self.check_parser(self.cmd, args, verify_args)
7142-
7143-
# Get the command object to test
71447128
self.cmd.take_action(parsed_args)
71457129

7146-
self.servers_mock.get.assert_called_with(self.server.id)
7147-
self.server.evacuate.assert_called_with(**evac_args)
7130+
self.compute_sdk_client.find_server.assert_called_once_with(
7131+
self.server.id, ignore_missing=False
7132+
)
7133+
self.compute_sdk_client.evacuate_server.assert_called_once_with(
7134+
self.server, **evac_args
7135+
)
7136+
self.compute_sdk_client.get_server.assert_called_once_with(
7137+
self.server.id
7138+
)
71487139

71497140
def test_evacuate(self):
71507141
args = [
@@ -7258,7 +7249,7 @@ def test_evacuate_with_wait_ok(self, mock_wait_for_status):
72587249
}
72597250
self._test_evacuate(args, verify_args, evac_args)
72607251
mock_wait_for_status.assert_called_once_with(
7261-
self.servers_mock.get,
7252+
self.compute_sdk_client.get_server,
72627253
self.server.id,
72637254
callback=mock.ANY,
72647255
)
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
---
2+
upgrade:
3+
- |
4+
The ``server evacuate`` command has been migrated to SDK.

0 commit comments

Comments
 (0)