summaryrefslogtreecommitdiff
path: root/openstackclient
diff options
context:
space:
mode:
authorZuul <zuul@review.openstack.org>2017-10-27 18:29:07 +0000
committerGerrit Code Review <review@openstack.org>2017-10-27 18:29:07 +0000
commitd215982ce04302a95086e574322046ef5a4b439c (patch)
tree11a8b226c221faca8a1f0a7d31f0dc4083d136b2 /openstackclient
parent21212cabd52c85fdd572fc0c230868106a7f8eda (diff)
parentfd23ebfbf3080b96f7ef8ba516b64e67a111971d (diff)
downloadpython-openstackclient-d215982ce04302a95086e574322046ef5a4b439c.tar.gz
Merge "Add missing parameters on openstack server rescue"
Diffstat (limited to 'openstackclient')
-rw-r--r--openstackclient/compute/v2/server.py29
-rw-r--r--openstackclient/tests/functional/compute/v2/test_server.py13
2 files changed, 36 insertions, 6 deletions
diff --git a/openstackclient/compute/v2/server.py b/openstackclient/compute/v2/server.py
index 151c6783..d4edf8c5 100644
--- a/openstackclient/compute/v2/server.py
+++ b/openstackclient/compute/v2/server.py
@@ -1576,7 +1576,7 @@ class RemoveServerVolume(command.Command):
)
-class RescueServer(command.ShowOne):
+class RescueServer(command.Command):
_description = _("Put server in rescue mode")
def get_parser(self, prog_name):
@@ -1586,16 +1586,35 @@ class RescueServer(command.ShowOne):
metavar='<server>',
help=_('Server (name or ID)'),
)
+ parser.add_argument(
+ '--image',
+ metavar='<image>',
+ help=_('Image (name or ID) to use for the rescue mode.'
+ ' Defaults to the currently used one.'),
+ )
+ parser.add_argument(
+ '--password',
+ metavar='<password>',
+ help=_("Set the password on the rescued instance"),
+ )
return parser
def take_action(self, parsed_args):
-
compute_client = self.app.client_manager.compute
- _, body = utils.find_resource(
+ image_client = self.app.client_manager.image
+
+ image = None
+ if parsed_args.image:
+ image = utils.find_resource(
+ image_client.images,
+ parsed_args.image,
+ )
+
+ utils.find_resource(
compute_client.servers,
parsed_args.server,
- ).rescue()
- return zip(*sorted(six.iteritems(body)))
+ ).rescue(image=image,
+ password=parsed_args.password)
class ResizeServer(command.Command):
diff --git a/openstackclient/tests/functional/compute/v2/test_server.py b/openstackclient/tests/functional/compute/v2/test_server.py
index b7a25996..0b29fe5f 100644
--- a/openstackclient/tests/functional/compute/v2/test_server.py
+++ b/openstackclient/tests/functional/compute/v2/test_server.py
@@ -184,7 +184,18 @@ class ServerTests(common.ComputeTestCase):
# rescue
raw_output = self.openstack('server rescue ' + name)
- self.assertNotEqual("", raw_output)
+ self.assertEqual("", raw_output)
+ self.wait_for_status(name, "RESCUE")
+
+ # unrescue
+ raw_output = self.openstack('server unrescue ' + name)
+ self.assertEqual("", raw_output)
+ self.wait_for_status(name, "ACTIVE")
+
+ # rescue with image
+ raw_output = self.openstack('server rescue --image ' +
+ self.image_name + ' ' + name)
+ self.assertEqual("", raw_output)
self.wait_for_status(name, "RESCUE")
# unrescue