summaryrefslogtreecommitdiff
path: root/openstackclient/compute/v2/server.py
diff options
context:
space:
mode:
Diffstat (limited to 'openstackclient/compute/v2/server.py')
-rw-r--r--openstackclient/compute/v2/server.py44
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):