summaryrefslogtreecommitdiff
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
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
-rw-r--r--openstackclient/compute/v2/server.py13
-rw-r--r--openstackclient/tests/unit/compute/v2/test_server.py21
-rw-r--r--releasenotes/notes/server-rebuild-property-e8c6439b04e27c80.yaml6
3 files changed, 39 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):
diff --git a/releasenotes/notes/server-rebuild-property-e8c6439b04e27c80.yaml b/releasenotes/notes/server-rebuild-property-e8c6439b04e27c80.yaml
new file mode 100644
index 00000000..3bdf5060
--- /dev/null
+++ b/releasenotes/notes/server-rebuild-property-e8c6439b04e27c80.yaml
@@ -0,0 +1,6 @@
+---
+features:
+ - |
+ Add ``--property`` option to the ``server rebuild`` command, to provide
+ the ability to specify properties of the rebuilt instance.
+ [Story `2003979 <https://storyboard.openstack.org/#!/story/2003979>`_]