Skip to content

Commit fd23ebf

Browse files
josecastroleonDean Troyer
authored andcommitted
Add missing parameters on openstack server rescue
Change-Id: I27afca9e826378dbcb7feb7528e0c65c528b04b0 Closes-Bug: #1703278
1 parent 09faba2 commit fd23ebf

3 files changed

Lines changed: 41 additions & 6 deletions

File tree

openstackclient/compute/v2/server.py

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1576,7 +1576,7 @@ def take_action(self, parsed_args):
15761576
)
15771577

15781578

1579-
class RescueServer(command.ShowOne):
1579+
class RescueServer(command.Command):
15801580
_description = _("Put server in rescue mode")
15811581

15821582
def get_parser(self, prog_name):
@@ -1586,16 +1586,35 @@ def get_parser(self, prog_name):
15861586
metavar='<server>',
15871587
help=_('Server (name or ID)'),
15881588
)
1589+
parser.add_argument(
1590+
'--image',
1591+
metavar='<image>',
1592+
help=_('Image (name or ID) to use for the rescue mode.'
1593+
' Defaults to the currently used one.'),
1594+
)
1595+
parser.add_argument(
1596+
'--password',
1597+
metavar='<password>',
1598+
help=_("Set the password on the rescued instance"),
1599+
)
15891600
return parser
15901601

15911602
def take_action(self, parsed_args):
1592-
15931603
compute_client = self.app.client_manager.compute
1594-
_, body = utils.find_resource(
1604+
image_client = self.app.client_manager.image
1605+
1606+
image = None
1607+
if parsed_args.image:
1608+
image = utils.find_resource(
1609+
image_client.images,
1610+
parsed_args.image,
1611+
)
1612+
1613+
utils.find_resource(
15951614
compute_client.servers,
15961615
parsed_args.server,
1597-
).rescue()
1598-
return zip(*sorted(six.iteritems(body)))
1616+
).rescue(image=image,
1617+
password=parsed_args.password)
15991618

16001619

16011620
class ResizeServer(command.Command):

openstackclient/tests/functional/compute/v2/test_server.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,18 @@ def test_server_actions(self):
184184

185185
# rescue
186186
raw_output = self.openstack('server rescue ' + name)
187-
self.assertNotEqual("", raw_output)
187+
self.assertEqual("", raw_output)
188+
self.wait_for_status(name, "RESCUE")
189+
190+
# unrescue
191+
raw_output = self.openstack('server unrescue ' + name)
192+
self.assertEqual("", raw_output)
193+
self.wait_for_status(name, "ACTIVE")
194+
195+
# rescue with image
196+
raw_output = self.openstack('server rescue --image ' +
197+
self.image_name + ' ' + name)
198+
self.assertEqual("", raw_output)
188199
self.wait_for_status(name, "RESCUE")
189200

190201
# unrescue
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
fixes:
3+
- |
4+
Add ``--image`` and ``--password`` options to the ``server rescue`` command.
5+
[Bug `1703278 <https://bugs.launchpad.net/python-openstackclient/+bug/1703278>`_]

0 commit comments

Comments
 (0)