Skip to content

Commit 9583447

Browse files
committed
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>
1 parent fc24142 commit 9583447

3 files changed

Lines changed: 27 additions & 2 deletions

File tree

openstackclient/compute/v2/server_image.py

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import importlib
1919
import logging
2020

21+
from osc_lib.cli import parseractions
2122
from osc_lib.command import command
2223
from osc_lib import exceptions
2324
from osc_lib import utils
@@ -48,6 +49,16 @@ def get_parser(self, prog_name):
4849
metavar='<image-name>',
4950
help=_('Name of new disk image (default: server name)'),
5051
)
52+
parser.add_argument(
53+
'--property',
54+
metavar='<key=value>',
55+
dest='properties',
56+
action=parseractions.KeyValueAction,
57+
help=_(
58+
'Set a new property to meta_data.json on the metadata server '
59+
'(repeat option to set multiple values)'
60+
),
61+
)
5162
parser.add_argument(
5263
'--wait',
5364
action='store_true',
@@ -76,6 +87,7 @@ def _show_progress(progress):
7687
image_id = compute_client.servers.create_image(
7788
server.id,
7889
image_name,
90+
parsed_args.properties,
7991
)
8092

8193
image_client = self.app.client_manager.image
@@ -89,8 +101,8 @@ def _show_progress(progress):
89101
):
90102
self.app.stdout.write('\n')
91103
else:
92-
LOG.error(_('Error creating server image: %s'),
93-
parsed_args.server)
104+
LOG.error(
105+
_('Error creating server image: %s'), parsed_args.server)
94106
raise exceptions.CommandError
95107

96108
if self.app.client_manager._api_version['image'] == '1':
@@ -105,4 +117,5 @@ def _show_progress(progress):
105117
]
106118
)
107119
info = image_module._format_image(image)
120+
108121
return zip(*sorted(info.items()))

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,7 @@ def test_server_image_create_defaults(self):
130130
self.servers_mock.create_image.assert_called_with(
131131
servers[0].id,
132132
servers[0].name,
133+
None,
133134
)
134135

135136
self.assertEqual(self.image_columns(images[0]), columns)
@@ -141,11 +142,13 @@ def test_server_image_create_options(self):
141142

142143
arglist = [
143144
'--name', 'img-nam',
145+
'--property', 'key=value',
144146
servers[0].id,
145147
]
146148
verifylist = [
147149
('name', 'img-nam'),
148150
('server', servers[0].id),
151+
('properties', {'key': 'value'}),
149152
]
150153
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
151154

@@ -158,6 +161,7 @@ def test_server_image_create_options(self):
158161
self.servers_mock.create_image.assert_called_with(
159162
servers[0].id,
160163
'img-nam',
164+
{'key': 'value'},
161165
)
162166

163167
self.assertEqual(self.image_columns(images[0]), columns)
@@ -188,6 +192,7 @@ def test_server_create_image_wait_fail(self, mock_wait_for_status):
188192
self.servers_mock.create_image.assert_called_with(
189193
servers[0].id,
190194
servers[0].name,
195+
None,
191196
)
192197

193198
mock_wait_for_status.assert_called_once_with(
@@ -220,6 +225,7 @@ def test_server_create_image_wait_ok(self, mock_wait_for_status):
220225
self.servers_mock.create_image.assert_called_with(
221226
servers[0].id,
222227
servers[0].name,
228+
None,
223229
)
224230

225231
mock_wait_for_status.assert_called_once_with(
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 ``server image create`` command, allowing
5+
users to record arbitrary key/value metadata to ``meta_data.json`` on
6+
the metadata server.

0 commit comments

Comments
 (0)