Skip to content

Commit e3dc30f

Browse files
author
Ruby Loo
committed
Add --property option to 'server rebuild' command
Add '--property' option to the 'server rebuild' command, to provide the ability to specify properties of the rebuilt instance. This is equivalent to the '--meta' option of the compute's 'nova rebuild' command. Change-Id: I25ea6622e970416090109316e1e28fab8b0b3f07 Story: #2003979 Task: #26922
1 parent 4e6f47e commit e3dc30f

3 files changed

Lines changed: 39 additions & 1 deletion

File tree

openstackclient/compute/v2/server.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1517,6 +1517,13 @@ def get_parser(self, prog_name):
15171517
metavar='<password>',
15181518
help=_("Set the password on the rebuilt instance"),
15191519
)
1520+
parser.add_argument(
1521+
'--property',
1522+
metavar='<key=value>',
1523+
action=parseractions.KeyValueAction,
1524+
help=_('Set a property on the rebuilt instance '
1525+
'(repeat option to set multiple values)'),
1526+
)
15201527
parser.add_argument(
15211528
'--wait',
15221529
action='store_true',
@@ -1542,7 +1549,11 @@ def _show_progress(progress):
15421549
'image', {}).get('id')
15431550
image = utils.find_resource(image_client.images, image_id)
15441551

1545-
server = server.rebuild(image, parsed_args.password)
1552+
kwargs = {}
1553+
if parsed_args.property:
1554+
kwargs['meta'] = parsed_args.property
1555+
1556+
server = server.rebuild(image, parsed_args.password, **kwargs)
15461557
if parsed_args.wait:
15471558
if utils.wait_for_status(
15481559
compute_client.servers.get,

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

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2496,6 +2496,27 @@ def test_rebuild_with_wait_fails(self, mock_wait_for_status):
24962496
self.images_mock.get.assert_called_with(self.image.id)
24972497
self.server.rebuild.assert_called_with(self.image, None)
24982498

2499+
def test_rebuild_with_property(self):
2500+
arglist = [
2501+
self.server.id,
2502+
'--property', 'key1=value1',
2503+
'--property', 'key2=value2'
2504+
]
2505+
expected_property = {'key1': 'value1', 'key2': 'value2'}
2506+
verifylist = [
2507+
('server', self.server.id),
2508+
('property', expected_property)
2509+
]
2510+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
2511+
2512+
# Get the command object to test
2513+
self.cmd.take_action(parsed_args)
2514+
2515+
self.servers_mock.get.assert_called_with(self.server.id)
2516+
self.images_mock.get.assert_called_with(self.image.id)
2517+
self.server.rebuild.assert_called_with(
2518+
self.image, None, meta=expected_property)
2519+
24992520

25002521
class TestServerRemoveFixedIP(TestServer):
25012522

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
features:
3+
- |
4+
Add ``--property`` option to the ``server rebuild`` command, to provide
5+
the ability to specify properties of the rebuilt instance.
6+
[Story `2003979 <https://storyboard.openstack.org/#!/story/2003979>`_]

0 commit comments

Comments
 (0)