diff options
author | Zuul <zuul@review.opendev.org> | 2023-03-30 19:05:02 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2023-03-30 19:05:02 +0000 |
commit | 17d03f49aa1bda404e1ec061dd078e1aa0ed211c (patch) | |
tree | 5b997a69244f3b7f7979c35b824be871ec09cc27 /openstackclient/compute/v2/server.py | |
parent | 4e9181aa1e22a1f8796f645da7937a275677d0c1 (diff) | |
parent | 9241514137cd8d45fa6f36808536c5d0f218cb97 (diff) | |
download | python-openstackclient-17d03f49aa1bda404e1ec061dd078e1aa0ed211c.tar.gz |
Merge "Switch server start, server stop to SDK"
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 37c78b6f..0d40d96a 100644 --- a/openstackclient/compute/v2/server.py +++ b/openstackclient/compute/v2/server.py @@ -4576,7 +4576,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>', @@ -4595,20 +4595,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>', @@ -4627,13 +4635,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): |