summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--heatclient/osc/v1/stack.py26
-rw-r--r--heatclient/tests/unit/osc/v1/test_stack.py19
2 files changed, 33 insertions, 12 deletions
diff --git a/heatclient/osc/v1/stack.py b/heatclient/osc/v1/stack.py
index cf03cec..f8cf9e3 100644
--- a/heatclient/osc/v1/stack.py
+++ b/heatclient/osc/v1/stack.py
@@ -380,19 +380,28 @@ class ShowStack(command.ShowOne):
metavar='<stack>',
help='Stack to display (name or ID)',
)
+ parser.add_argument(
+ '--no-resolve-outputs', action="store_true",
+ help=_('Do not resolve outputs of the stack.')
+ )
return parser
def take_action(self, parsed_args):
self.log.debug("take_action(%s)", parsed_args)
heat_client = self.app.client_manager.orchestration
- return _show_stack(heat_client, stack_id=parsed_args.stack,
- format=parsed_args.formatter)
+ return _show_stack(
+ heat_client, stack_id=parsed_args.stack,
+ format=parsed_args.formatter,
+ resolve_outputs=(not parsed_args.no_resolve_outputs))
-def _show_stack(heat_client, stack_id, format='', short=False):
+def _show_stack(heat_client, stack_id, format='', short=False,
+ resolve_outputs=True):
try:
- data = heat_client.stacks.get(stack_id=stack_id)
+ _resolve_outputs = not short and resolve_outputs
+ data = heat_client.stacks.get(stack_id=stack_id,
+ resolve_outputs=_resolve_outputs)
except heat_exc.HTTPNotFound:
raise exc.CommandError('Stack not found: %s' % stack_id)
else:
@@ -408,11 +417,10 @@ def _show_stack(heat_client, stack_id, format='', short=False):
]
if not short:
- columns += [
- 'parameters',
- 'outputs',
- 'links',
- ]
+ columns.append('parameters')
+ if _resolve_outputs:
+ columns.append('outputs')
+ columns.append('links')
exclude_columns = ('template_description',)
for key in data.to_dict():
diff --git a/heatclient/tests/unit/osc/v1/test_stack.py b/heatclient/tests/unit/osc/v1/test_stack.py
index c40bdf1..66a6992 100644
--- a/heatclient/tests/unit/osc/v1/test_stack.py
+++ b/heatclient/tests/unit/osc/v1/test_stack.py
@@ -149,7 +149,8 @@ class TestStackCreate(TestStack):
self.cmd.take_action(parsed_args)
self.stack_client.create.assert_called_with(**self.defaults)
- self.stack_client.get.assert_called_with(**{'stack_id': '1234'})
+ self.stack_client.get.assert_called_with(**{'stack_id': '1234',
+ 'resolve_outputs': False})
@mock.patch('heatclient.common.event_utils.poll_for_events',
return_value=('CREATE_FAILED',
@@ -347,7 +348,8 @@ class TestStackUpdate(TestStack):
self.cmd.take_action(parsed_args)
self.stack_client.update.assert_called_with(**self.defaults)
- self.stack_client.get.assert_called_with(**{'stack_id': 'my_stack'})
+ self.stack_client.get.assert_called_with(**{'stack_id': 'my_stack',
+ 'resolve_outputs': False})
@mock.patch('heatclient.common.event_utils.poll_for_events',
return_value=('UPDATE_FAILED',
@@ -414,6 +416,16 @@ class TestStackShow(TestStack):
self.cmd.take_action(parsed_args)
self.stack_client.get.assert_called_with(**{
'stack_id': 'my_stack',
+ 'resolve_outputs': True,
+ })
+
+ def test_stack_show_explicit_no_resolve(self):
+ arglist = ['--no-resolve-outputs', '--format', self.format, 'my_stack']
+ parsed_args = self.check_parser(self.cmd, arglist, [])
+ self.cmd.take_action(parsed_args)
+ self.stack_client.get.assert_called_with(**{
+ 'stack_id': 'my_stack',
+ 'resolve_outputs': False,
})
def test_stack_show_short(self):
@@ -729,7 +741,8 @@ class TestStackAdopt(TestStack):
self.cmd.take_action(parsed_args)
self.stack_client.create.assert_called_with(**self.defaults)
- self.stack_client.get.assert_called_with(**{'stack_id': '1234'})
+ self.stack_client.get.assert_called_with(**{'stack_id': '1234',
+ 'resolve_outputs': False})
@mock.patch('heatclient.common.event_utils.poll_for_events',
return_value=('ADOPT_FAILED',