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>
This commit is contained in:
parent
fc24142ed4
commit
958344733a
@ -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
|
||||
@ -48,6 +49,16 @@ class CreateServerImage(command.ShowOne):
|
||||
metavar='<image-name>',
|
||||
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',
|
||||
@ -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()))
|
||||
|
@ -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(
|
||||
|
@ -0,0 +1,6 @@
|
||||
---
|
||||
features:
|
||||
- |
|
||||
Add ``--property`` option to ``server image create`` command, allowing
|
||||
users to record arbitrary key/value metadata to ``meta_data.json`` on
|
||||
the metadata server.
|
Loading…
x
Reference in New Issue
Block a user