summaryrefslogtreecommitdiff
path: root/openstackclient
diff options
context:
space:
mode:
authorRuby Loo <rloo@oath.com>2018-10-05 16:26:32 -0400
committerRuby Loo <rloo@oath.com>2018-10-05 16:33:48 -0400
commite3dc30fe8c1ae6a13926bf1eae52097e8bb37aab (patch)
tree2cc23648aa8b8a8ff97280ab1cb150bd4c15e733 /openstackclient
parent4e6f47e28ee09be7dac8848660bf38bdcd02570c (diff)
downloadpython-openstackclient-e3dc30fe8c1ae6a13926bf1eae52097e8bb37aab.tar.gz
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
Diffstat (limited to 'openstackclient')
-rw-r--r--openstackclient/compute/v2/server.py13
-rw-r--r--openstackclient/tests/unit/compute/v2/test_server.py21
2 files changed, 33 insertions, 1 deletions
diff --git a/openstackclient/compute/v2/server.py b/openstackclient/compute/v2/server.py
index a6a59084..67b4140a 100644
--- a/openstackclient/compute/v2/server.py
+++ b/openstackclient/compute/v2/server.py
@@ -1518,6 +1518,13 @@ class RebuildServer(command.ShowOne):
help=_("Set the password on the rebuilt instance"),
)
parser.add_argument(
+ '--property',
+ metavar='<key=value>',
+ action=parseractions.KeyValueAction,
+ help=_('Set a property on the rebuilt instance '
+ '(repeat option to set multiple values)'),
+ )
+ parser.add_argument(
'--wait',
action='store_true',
help=_('Wait for rebuild to complete'),
@@ -1542,7 +1549,11 @@ class RebuildServer(command.ShowOne):
'image', {}).get('id')
image = utils.find_resource(image_client.images, image_id)
- server = server.rebuild(image, parsed_args.password)
+ kwargs = {}
+ if parsed_args.property:
+ kwargs['meta'] = parsed_args.property
+
+ server = server.rebuild(image, parsed_args.password, **kwargs)
if parsed_args.wait:
if utils.wait_for_status(
compute_client.servers.get,
diff --git a/openstackclient/tests/unit/compute/v2/test_server.py b/openstackclient/tests/unit/compute/v2/test_server.py
index b3d32681..e938564b 100644
--- a/openstackclient/tests/unit/compute/v2/test_server.py
+++ b/openstackclient/tests/unit/compute/v2/test_server.py
@@ -2496,6 +2496,27 @@ class TestServerRebuild(TestServer):
self.images_mock.get.assert_called_with(self.image.id)
self.server.rebuild.assert_called_with(self.image, None)
+ def test_rebuild_with_property(self):
+ arglist = [
+ self.server.id,
+ '--property', 'key1=value1',
+ '--property', 'key2=value2'
+ ]
+ expected_property = {'key1': 'value1', 'key2': 'value2'}
+ verifylist = [
+ ('server', self.server.id),
+ ('property', expected_property)
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ # Get the command object to test
+ self.cmd.take_action(parsed_args)
+
+ self.servers_mock.get.assert_called_with(self.server.id)
+ self.images_mock.get.assert_called_with(self.image.id)
+ self.server.rebuild.assert_called_with(
+ self.image, None, meta=expected_property)
+
class TestServerRemoveFixedIP(TestServer):