Merge "Add --dry-run option to openstack stack create"
This commit is contained in:
@@ -106,6 +106,12 @@ class CreateStack(show.ShowOne):
|
||||
metavar='<TAG1,TAG2...>',
|
||||
help=_('A list of tags to associate with the stack')
|
||||
)
|
||||
parser.add_argument(
|
||||
'--dry-run',
|
||||
action='store_true',
|
||||
help=_('Do not actually perform the stack create, but show what '
|
||||
'would be created')
|
||||
)
|
||||
parser.add_argument(
|
||||
'name',
|
||||
metavar='<STACK_NAME>',
|
||||
@@ -150,6 +156,30 @@ class CreateStack(show.ShowOne):
|
||||
if parsed_args.timeout:
|
||||
fields['timeout_mins'] = parsed_args.timeout
|
||||
|
||||
if parsed_args.dry_run:
|
||||
stack = client.stacks.preview(**fields)
|
||||
|
||||
formatters = {
|
||||
'description': heat_utils.text_wrap_formatter,
|
||||
'template_description': heat_utils.text_wrap_formatter,
|
||||
'stack_status_reason': heat_utils.text_wrap_formatter,
|
||||
'parameters': heat_utils.json_formatter,
|
||||
'outputs': heat_utils.json_formatter,
|
||||
'resources': heat_utils.json_formatter,
|
||||
'links': heat_utils.link_formatter,
|
||||
}
|
||||
|
||||
columns = []
|
||||
for key in stack.to_dict():
|
||||
columns.append(key)
|
||||
columns.sort()
|
||||
|
||||
return (
|
||||
columns,
|
||||
utils.get_item_properties(stack, columns,
|
||||
formatters=formatters)
|
||||
)
|
||||
|
||||
stack = client.stacks.create(**fields)['stack']
|
||||
if parsed_args.wait:
|
||||
if not utils.wait_for_status(client.stacks.get, parsed_args.name,
|
||||
|
||||
@@ -53,6 +53,8 @@ class TestStackCreate(TestStack):
|
||||
return_value={'stack': {'id': '1234'}})
|
||||
self.stack_client.get = mock.MagicMock(
|
||||
return_value={'stack_status': 'create_complete'})
|
||||
self.stack_client.preview = mock.MagicMock(
|
||||
return_value=stacks.Stack(None, {'stack': {'id', '1234'}}))
|
||||
stack._authenticated_fetcher = mock.MagicMock()
|
||||
|
||||
def test_stack_create_defaults(self):
|
||||
@@ -137,6 +139,15 @@ class TestStackCreate(TestStack):
|
||||
|
||||
self.assertRaises(exc.CommandError, self.cmd.take_action, parsed_args)
|
||||
|
||||
def test_stack_create_dry_run(self):
|
||||
arglist = ['my_stack', '-t', self.template_path, '--dry-run']
|
||||
parsed_args = self.check_parser(self.cmd, arglist, [])
|
||||
|
||||
self.cmd.take_action(parsed_args)
|
||||
|
||||
self.stack_client.preview.assert_called_with(**self.defaults)
|
||||
self.stack_client.create.assert_not_called()
|
||||
|
||||
|
||||
class TestStackUpdate(TestStack):
|
||||
|
||||
|
||||
Reference in New Issue
Block a user