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:
		@@ -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.
 | 
			
		||||
		Reference in New Issue
	
	Block a user