diff options
author | Thrivikram Mudunuri <mthrivikram+opendev@gmail.com> | 2021-11-30 00:56:39 -0500 |
---|---|---|
committer | Stephen Finucane <sfinucan@redhat.com> | 2022-12-19 16:56:20 +0000 |
commit | 9241514137cd8d45fa6f36808536c5d0f218cb97 (patch) | |
tree | c434cc6820755831b830347269c51577f3608ed9 /openstackclient/compute/v2/server.py | |
parent | ce8171bad90f15ac8a753f50bb3792862b66cc7c (diff) | |
download | python-openstackclient-9241514137cd8d45fa6f36808536c5d0f218cb97.tar.gz |
Switch server start, server stop to SDK
Switch the server start and server stop commands from novaclient to SDK.
Change-Id: I5ebfa6b2468d5f20b99ea0eab1aea9377be09b8c
Diffstat (limited to 'openstackclient/compute/v2/server.py')
-rw-r--r-- | openstackclient/compute/v2/server.py | 44 |
1 files changed, 30 insertions, 14 deletions
diff --git a/openstackclient/compute/v2/server.py b/openstackclient/compute/v2/server.py index c4bf5da9..8496a13e 100644 --- a/openstackclient/compute/v2/server.py +++ b/openstackclient/compute/v2/server.py @@ -4582,7 +4582,7 @@ class StartServer(command.Command): _description = _("Start server(s)") def get_parser(self, prog_name): - parser = super(StartServer, self).get_parser(prog_name) + parser = super().get_parser(prog_name) parser.add_argument( 'server', metavar='<server>', @@ -4601,20 +4601,28 @@ class StartServer(command.Command): return parser def take_action(self, parsed_args): - compute_client = self.app.client_manager.compute + compute_client = self.app.client_manager.sdk_connection.compute for server in parsed_args.server: - utils.find_resource( - compute_client.servers, - server, - all_tenants=parsed_args.all_projects, - ).start() + try: + server_id = compute_client.find_server( + name=server, + details=False, + all_projects=parsed_args.all_projects, + ignore_missing=False, + ).id + except sdk_exceptions.HttpException as exc: + if exc.status_code == 403: + msg = _("Policy doesn't allow passing all-projects") + raise exceptions.Forbidden(msg) + + compute_client.start_server(server_id) class StopServer(command.Command): _description = _("Stop server(s)") def get_parser(self, prog_name): - parser = super(StopServer, self).get_parser(prog_name) + parser = super().get_parser(prog_name) parser.add_argument( 'server', metavar='<server>', @@ -4633,13 +4641,21 @@ class StopServer(command.Command): return parser def take_action(self, parsed_args): - compute_client = self.app.client_manager.compute + compute_client = self.app.client_manager.sdk_connection.compute for server in parsed_args.server: - utils.find_resource( - compute_client.servers, - server, - all_tenants=parsed_args.all_projects, - ).stop() + try: + server_id = compute_client.find_server( + name=server, + details=False, + all_projects=parsed_args.all_projects, + ignore_missing=False, + ).id + except sdk_exceptions.HttpException as exc: + if exc.status_code == 403: + msg = _("Policy doesn't allow passing all-projects") + raise exceptions.Forbidden(msg) + + compute_client.stop_server(server_id) class SuspendServer(command.Command): |