Skip to content

Commit b9b5e76

Browse files
committed
compute: Migrate remaining server actions to SDK
Migrate the following commands: - 'server delete' - 'server rescue' - 'server unrescue' - 'server resize' - 'server resize confirm' - 'server resize revert' - 'server migrate confirm' - 'server migrate revert' - 'server remove fixed ip' ('server add fixed ip' was already migrated) - 'server ssh' That leaves a few commands to migrate, all of which are called out with TODOs. Change-Id: Idb769a93609da522c458e719bc69a63ff2ab107b Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
1 parent 8d904a9 commit b9b5e76

2 files changed

Lines changed: 411 additions & 371 deletions

File tree

openstackclient/compute/v2/server.py

Lines changed: 69 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -493,16 +493,16 @@ def update_parser_common(self, parser):
493493
return parser
494494

495495
def take_action_network(self, client, parsed_args):
496-
compute_client = self.app.client_manager.compute
496+
compute_client = self.app.client_manager.sdk_connection.compute
497497

498498
attrs = {}
499499
obj = client.find_ip(
500500
parsed_args.ip_address,
501501
ignore_missing=False,
502502
)
503-
server = utils.find_resource(
504-
compute_client.servers,
505-
parsed_args.server,
503+
504+
server = compute_client.find_server(
505+
parsed_args.server, ignore_missing=False
506506
)
507507
ports = list(client.ports(device_id=server.id))
508508
if not ports:
@@ -1062,6 +1062,7 @@ def __call__(self, parser, namespace, values, option_string=None):
10621062
super().__call__(parser, namespace, values, option_string)
10631063

10641064

1065+
# TODO(stephenfin): Migrate to SDK
10651066
class CreateServer(command.ShowOne):
10661067
_description = _("Create a new server")
10671068

@@ -2137,25 +2138,22 @@ def _show_progress(progress):
21372138
self.app.stdout.write('\rProgress: %s' % progress)
21382139
self.app.stdout.flush()
21392140

2140-
compute_client = self.app.client_manager.compute
2141+
compute_client = self.app.client_manager.sdk_connection.compute
21412142
for server in parsed_args.server:
2142-
server_obj = utils.find_resource(
2143-
compute_client.servers,
2143+
server_obj = compute_client.find_server(
21442144
server,
2145-
all_tenants=parsed_args.all_projects,
2145+
ignore_missing=False,
2146+
all_projects=parsed_args.all_projects,
21462147
)
21472148

2148-
if parsed_args.force:
2149-
compute_client.servers.force_delete(server_obj.id)
2150-
else:
2151-
compute_client.servers.delete(server_obj.id)
2149+
compute_client.delete_server(server_obj, force=parsed_args.force)
21522150

21532151
if parsed_args.wait:
2154-
if not utils.wait_for_delete(
2155-
compute_client.servers,
2156-
server_obj.id,
2157-
callback=_show_progress,
2158-
):
2152+
try:
2153+
compute_client.wait_for_delete(
2154+
server_obj, callback=_show_progress
2155+
)
2156+
except sdk_exceptions.ResourceTimeout:
21592157
msg = _('Error deleting server: %s') % server_obj.id
21602158
raise exceptions.CommandError(msg)
21612159

@@ -2476,7 +2474,7 @@ def get_parser(self, prog_name):
24762474
action='store_true',
24772475
default=False,
24782476
help=_(
2479-
'When looking up flavor and image names, look them up'
2477+
'When looking up flavor and image names, look them up '
24802478
'one by one as needed instead of all together (default). '
24812479
'Mutually exclusive with "--no-name-lookup|-n" option.'
24822480
),
@@ -3695,6 +3693,7 @@ def _show_progress(progress):
36953693
return zip(*sorted(data.items()))
36963694

36973695

3696+
# TODO(stephenfin): Migrate to SDK
36983697
class EvacuateServer(command.ShowOne):
36993698
_description = _(
37003699
"""Evacuate a server to a different host.
@@ -3835,13 +3834,14 @@ def get_parser(self, prog_name):
38353834
return parser
38363835

38373836
def take_action(self, parsed_args):
3838-
compute_client = self.app.client_manager.compute
3837+
compute_client = self.app.client_manager.sdk_connection.compute
38393838

3840-
server = utils.find_resource(
3841-
compute_client.servers, parsed_args.server
3839+
server = compute_client.find_server(
3840+
parsed_args.server, ignore_missing=False
3841+
)
3842+
compute_client.remove_fixed_ip_from_server(
3843+
server, parsed_args.ip_address
38423844
)
3843-
3844-
server.remove_fixed_ip(parsed_args.ip_address)
38453845

38463846

38473847
class RemoveFloatingIP(network_common.NetworkAndComputeCommand):
@@ -4056,34 +4056,36 @@ def get_parser(self, prog_name):
40564056
'--image',
40574057
metavar='<image>',
40584058
help=_(
4059-
'Image (name or ID) to use for the rescue mode.'
4060-
' Defaults to the currently used one.'
4059+
'Image (name or ID) to use for the rescue mode '
4060+
'(defaults to the currently used one)'
40614061
),
40624062
)
40634063
parser.add_argument(
40644064
'--password',
40654065
metavar='<password>',
40664066
help=_(
4067-
'Set the password on the rescued instance. '
4068-
'This option requires cloud support.'
4067+
'Set the password on the rescued instance '
4068+
'(requires cloud support)'
40694069
),
40704070
)
40714071
return parser
40724072

40734073
def take_action(self, parsed_args):
4074-
compute_client = self.app.client_manager.compute
4074+
compute_client = self.app.client_manager.sdk_connection.compute
40754075
image_client = self.app.client_manager.image
40764076

4077-
image = None
4077+
image_ref = None
40784078
if parsed_args.image:
4079-
image = image_client.find_image(
4079+
image_ref = image_client.find_image(
40804080
parsed_args.image, ignore_missing=False
4081-
)
4081+
).id
40824082

4083-
utils.find_resource(
4084-
compute_client.servers,
4085-
parsed_args.server,
4086-
).rescue(image=image, password=parsed_args.password)
4083+
server = compute_client.find_server(
4084+
parsed_args.server, ignore_missing=False
4085+
)
4086+
compute_client.rescue_server(
4087+
server, admin_pass=parsed_args.password, image_ref=image_ref
4088+
)
40874089

40884090

40894091
class ResizeServer(command.Command):
@@ -4099,12 +4101,12 @@ class ResizeServer(command.Command):
40994101

41004102
def get_parser(self, prog_name):
41014103
parser = super().get_parser(prog_name)
4102-
phase_group = parser.add_mutually_exclusive_group()
41034104
parser.add_argument(
41044105
'server',
41054106
metavar='<server>',
41064107
help=_('Server (name or ID)'),
41074108
)
4109+
phase_group = parser.add_mutually_exclusive_group()
41084110
phase_group.add_argument(
41094111
'--flavor',
41104112
metavar='<flavor>',
@@ -4141,51 +4143,49 @@ def _show_progress(progress):
41414143
self.app.stdout.write('\rProgress: %s' % progress)
41424144
self.app.stdout.flush()
41434145

4144-
compute_client = self.app.client_manager.compute
4145-
server = utils.find_resource(
4146-
compute_client.servers,
4147-
parsed_args.server,
4146+
compute_client = self.app.client_manager.sdk_connection.compute
4147+
server = compute_client.find_server(
4148+
parsed_args.server, ignore_missing=False
41484149
)
41494150
if parsed_args.flavor:
4150-
flavor = utils.find_resource(
4151-
compute_client.flavors,
4152-
parsed_args.flavor,
4153-
)
41544151
if not server.image:
41554152
self.log.warning(
41564153
_(
41574154
"The root disk size in flavor will not be applied "
41584155
"while booting from a persistent volume."
41594156
)
41604157
)
4161-
compute_client.servers.resize(server, flavor)
4158+
flavor = compute_client.find_flavor(
4159+
parsed_args.flavor, ignore_missing=False
4160+
)
4161+
compute_client.resize_server(server, flavor)
41624162
if parsed_args.wait:
4163-
if utils.wait_for_status(
4164-
compute_client.servers.get,
4163+
if not utils.wait_for_status(
4164+
compute_client.get_server,
41654165
server.id,
4166-
success_status=['active', 'verify_resize'],
4166+
success_status=('active', 'verify_resize'),
41674167
callback=_show_progress,
41684168
):
4169-
self.app.stdout.write(_('Complete\n'))
4170-
else:
41714169
msg = _('Error resizing server: %s') % server.id
41724170
raise exceptions.CommandError(msg)
4171+
4172+
self.app.stdout.write(_('Complete\n'))
41734173
elif parsed_args.confirm:
41744174
self.log.warning(
41754175
_(
41764176
"The --confirm option has been deprecated. Please use the "
41774177
"'openstack server resize confirm' command instead."
41784178
)
41794179
)
4180-
compute_client.servers.confirm_resize(server)
4180+
compute_client.confirm_server_resize(server)
41814181
elif parsed_args.revert:
41824182
self.log.warning(
41834183
_(
41844184
"The --revert option has been deprecated. Please use the "
41854185
"'openstack server resize revert' command instead."
41864186
)
41874187
)
4188-
compute_client.servers.revert_resize(server)
4188+
compute_client.revert_server_resize(server)
41894189

41904190

41914191
class ResizeConfirm(command.Command):
@@ -4205,12 +4205,11 @@ def get_parser(self, prog_name):
42054205
return parser
42064206

42074207
def take_action(self, parsed_args):
4208-
compute_client = self.app.client_manager.compute
4209-
server = utils.find_resource(
4210-
compute_client.servers,
4211-
parsed_args.server,
4208+
compute_client = self.app.client_manager.sdk_connection.compute
4209+
server = compute_client.find_server(
4210+
parsed_args.server, ignore_missing=False
42124211
)
4213-
server.confirm_resize()
4212+
compute_client.confirm_server_resize(server)
42144213

42154214

42164215
# TODO(stephenfin): Remove in OSC 7.0
@@ -4254,12 +4253,11 @@ def get_parser(self, prog_name):
42544253
return parser
42554254

42564255
def take_action(self, parsed_args):
4257-
compute_client = self.app.client_manager.compute
4258-
server = utils.find_resource(
4259-
compute_client.servers,
4260-
parsed_args.server,
4256+
compute_client = self.app.client_manager.sdk_connection.compute
4257+
server = compute_client.find_server(
4258+
parsed_args.server, ignore_missing=False
42614259
)
4262-
server.revert_resize()
4260+
compute_client.revert_server_resize(server)
42634261

42644262

42654263
# TODO(stephenfin): Remove in OSC 7.0
@@ -4766,11 +4764,10 @@ def get_parser(self, prog_name):
47664764
return parser
47674765

47684766
def take_action(self, parsed_args):
4769-
compute_client = self.app.client_manager.compute
4767+
compute_client = self.app.client_manager.sdk_connection.compute
47704768

4771-
server = utils.find_resource(
4772-
compute_client.servers,
4773-
parsed_args.server,
4769+
server = compute_client.find_server(
4770+
parsed_args.server, ignore_missing=False
47744771
)
47754772

47764773
# first, handle the deprecated options
@@ -4846,7 +4843,7 @@ def get_parser(self, prog_name):
48464843
action='store_true',
48474844
default=boolenv('ALL_PROJECTS'),
48484845
help=_(
4849-
'Start server(s) in another project by name (admin only)'
4846+
'Start server(s) in another project by name (admin only) '
48504847
'(can be specified using the ALL_PROJECTS envvar)'
48514848
),
48524849
)
@@ -4981,11 +4978,11 @@ def get_parser(self, prog_name):
49814978
return parser
49824979

49834980
def take_action(self, parsed_args):
4984-
compute_client = self.app.client_manager.compute
4985-
utils.find_resource(
4986-
compute_client.servers,
4987-
parsed_args.server,
4988-
).unrescue()
4981+
compute_client = self.app.client_manager.sdk_connection.compute
4982+
server = compute_client.find_server(
4983+
parsed_args.server, ignore_missing=False
4984+
)
4985+
compute_client.unrescue_server(server)
49894986

49904987

49914988
class UnsetServer(command.Command):

0 commit comments

Comments
 (0)