summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJose Castro Leon <jose.castro.leon@cern.ch>2017-10-19 15:59:45 +0200
committerDean Troyer <dtroyer@gmail.com>2017-10-27 14:52:04 +0000
commitfd23ebfbf3080b96f7ef8ba516b64e67a111971d (patch)
treed2b551b30c3288881765d0791919aec5bffd8ef7
parent09faba27133f4b96085ed8596fa199200ed015aa (diff)
downloadpython-openstackclient-fd23ebfbf3080b96f7ef8ba516b64e67a111971d.tar.gz
Add missing parameters on openstack server rescue
Change-Id: I27afca9e826378dbcb7feb7528e0c65c528b04b0 Closes-Bug: #1703278
-rw-r--r--openstackclient/compute/v2/server.py29
-rw-r--r--openstackclient/tests/functional/compute/v2/test_server.py13
-rw-r--r--releasenotes/notes/bug-1703278-5e45a92e43552dec.yaml5
3 files changed, 41 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
diff --git a/releasenotes/notes/bug-1703278-5e45a92e43552dec.yaml b/releasenotes/notes/bug-1703278-5e45a92e43552dec.yaml
new file mode 100644
index 00000000..c1a35521
--- /dev/null
+++ b/releasenotes/notes/bug-1703278-5e45a92e43552dec.yaml
@@ -0,0 +1,5 @@
+---
+fixes:
+ - |
+ Add ``--image`` and ``--password`` options to the ``server rescue`` command.
+ [Bug `1703278 <https://bugs.launchpad.net/python-openstackclient/+bug/1703278>`_]