summaryrefslogtreecommitdiff
path: root/openstackclient
diff options
context:
space:
mode:
authorStephen Finucane <sfinucan@redhat.com>2020-12-03 12:20:40 +0000
committerStephen Finucane <sfinucan@redhat.com>2021-01-08 12:14:43 +0000
commit958344733aa6d8aea6cb8d06cc4d879fe1ee44a6 (patch)
treee31218050044e463d0ef32d68486dece6b4b5b1d /openstackclient
parentfc24142ed41e15622687558c68d670bdc37223f0 (diff)
downloadpython-openstackclient-958344733aa6d8aea6cb8d06cc4d879fe1ee44a6.tar.gz
compute: Add missing options for 'server image create'
Add a '--property' option to record arbitrary key/value metadata to 'meta_data.json' on the metadata server. Change-Id: I267f3290fce3692cbd1ff6a9af146c2736ee31fe Signed-off-by: Stephen Finucane <sfinucan@redhat.com>
Diffstat (limited to 'openstackclient')
-rw-r--r--openstackclient/compute/v2/server_image.py17
-rw-r--r--openstackclient/tests/unit/compute/v2/test_server_image.py6
2 files changed, 21 insertions, 2 deletions
diff --git a/openstackclient/compute/v2/server_image.py b/openstackclient/compute/v2/server_image.py
index c12bc2b3..6c0e3b22 100644
--- a/openstackclient/compute/v2/server_image.py
+++ b/openstackclient/compute/v2/server_image.py
@@ -18,6 +18,7 @@
import importlib
import logging
+from osc_lib.cli import parseractions
from osc_lib.command import command
from osc_lib import exceptions
from osc_lib import utils
@@ -49,6 +50,16 @@ class CreateServerImage(command.ShowOne):
help=_('Name of new disk image (default: server name)'),
)
parser.add_argument(
+ '--property',
+ metavar='<key=value>',
+ dest='properties',
+ action=parseractions.KeyValueAction,
+ help=_(
+ 'Set a new property to meta_data.json on the metadata server '
+ '(repeat option to set multiple values)'
+ ),
+ )
+ parser.add_argument(
'--wait',
action='store_true',
help=_('Wait for operation to complete'),
@@ -76,6 +87,7 @@ class CreateServerImage(command.ShowOne):
image_id = compute_client.servers.create_image(
server.id,
image_name,
+ parsed_args.properties,
)
image_client = self.app.client_manager.image
@@ -89,8 +101,8 @@ class CreateServerImage(command.ShowOne):
):
self.app.stdout.write('\n')
else:
- LOG.error(_('Error creating server image: %s'),
- parsed_args.server)
+ LOG.error(
+ _('Error creating server image: %s'), parsed_args.server)
raise exceptions.CommandError
if self.app.client_manager._api_version['image'] == '1':
@@ -105,4 +117,5 @@ class CreateServerImage(command.ShowOne):
]
)
info = image_module._format_image(image)
+
return zip(*sorted(info.items()))
diff --git a/openstackclient/tests/unit/compute/v2/test_server_image.py b/openstackclient/tests/unit/compute/v2/test_server_image.py
index 06f6017c..66452a8b 100644
--- a/openstackclient/tests/unit/compute/v2/test_server_image.py
+++ b/openstackclient/tests/unit/compute/v2/test_server_image.py
@@ -130,6 +130,7 @@ class TestServerImageCreate(TestServerImage):
self.servers_mock.create_image.assert_called_with(
servers[0].id,
servers[0].name,
+ None,
)
self.assertEqual(self.image_columns(images[0]), columns)
@@ -141,11 +142,13 @@ class TestServerImageCreate(TestServerImage):
arglist = [
'--name', 'img-nam',
+ '--property', 'key=value',
servers[0].id,
]
verifylist = [
('name', 'img-nam'),
('server', servers[0].id),
+ ('properties', {'key': 'value'}),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -158,6 +161,7 @@ class TestServerImageCreate(TestServerImage):
self.servers_mock.create_image.assert_called_with(
servers[0].id,
'img-nam',
+ {'key': 'value'},
)
self.assertEqual(self.image_columns(images[0]), columns)
@@ -188,6 +192,7 @@ class TestServerImageCreate(TestServerImage):
self.servers_mock.create_image.assert_called_with(
servers[0].id,
servers[0].name,
+ None,
)
mock_wait_for_status.assert_called_once_with(
@@ -220,6 +225,7 @@ class TestServerImageCreate(TestServerImage):
self.servers_mock.create_image.assert_called_with(
servers[0].id,
servers[0].name,
+ None,
)
mock_wait_for_status.assert_called_once_with(