Merge "Add support for stack file list"
This commit is contained in:
commit
d930e33cf4
@ -543,6 +543,34 @@ class EnvironmentShowStack(format_utils.YamlFormat):
|
||||
return columns, data
|
||||
|
||||
|
||||
class ListFileStack(format_utils.YamlFormat):
|
||||
"""Show a stack's files map."""
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
def get_parser(self, prog_name):
|
||||
parser = super(ListFileStack, self).get_parser(prog_name)
|
||||
parser.add_argument(
|
||||
'stack',
|
||||
metavar='<NAME or ID>',
|
||||
help=_('Name or ID of stack to query')
|
||||
)
|
||||
return parser
|
||||
|
||||
def take_action(self, parsed_args):
|
||||
self.log.debug('take_action(%s)', parsed_args)
|
||||
|
||||
client = self.app.client_manager.orchestration
|
||||
|
||||
try:
|
||||
files = client.stacks.files(stack_id=parsed_args.stack)
|
||||
except heat_exc.HTTPNotFound:
|
||||
msg = _('Stack not found: %s') % parsed_args.stack
|
||||
raise exc.CommandError(msg)
|
||||
|
||||
return ['files'], [files]
|
||||
|
||||
|
||||
def _list(client, args=None):
|
||||
kwargs = {}
|
||||
columns = [
|
||||
|
@ -156,6 +156,12 @@ class StackOperationsTest(testtools.TestCase):
|
||||
stack.environment()
|
||||
manager.environment.assert_called_once_with('env_stack/env1')
|
||||
|
||||
def test_files_show(self):
|
||||
manager = mock.MagicMock()
|
||||
stack = mock_stack(manager, 'files_stack', 'files1')
|
||||
stack.files()
|
||||
manager.files.assert_called_once_with('files_stack/files1')
|
||||
|
||||
|
||||
class StackManagerNoPaginationTest(testtools.TestCase):
|
||||
|
||||
|
@ -65,6 +65,9 @@ class Stack(base.Resource):
|
||||
def environment(self):
|
||||
return self.manager.environment(self.identifier)
|
||||
|
||||
def files(self):
|
||||
return self.manager.files(self.identifier)
|
||||
|
||||
def get(self):
|
||||
# set_loaded() first ... so if we have to bail, we know we tried.
|
||||
self._loaded = True
|
||||
@ -291,6 +294,16 @@ class StackManager(StackChildManager):
|
||||
body = utils.get_response_body(resp)
|
||||
return body
|
||||
|
||||
def files(self, stack_id):
|
||||
"""Returns the files for an existing stack.
|
||||
|
||||
:param stack_id: identifies the stack
|
||||
:return:
|
||||
"""
|
||||
resp = self.client.get('/stacks/%s/files' % stack_id)
|
||||
body = utils.get_response_body(resp)
|
||||
return body
|
||||
|
||||
def validate(self, **kwargs):
|
||||
"""Validate a stack template."""
|
||||
|
||||
|
@ -57,6 +57,7 @@ openstack.orchestration.v1 =
|
||||
stack_event_show = heatclient.osc.v1.event:ShowEvent
|
||||
stack_environment_show = heatclient.osc.v1.stack:EnvironmentShowStack
|
||||
stack_failures_list = heatclient.osc.v1.stack_failures:ListStackFailures
|
||||
stack_file_list = heatclient.osc.v1.stack:ListFileStack
|
||||
stack_hook_clear = heatclient.osc.v1.stack:StackHookClear
|
||||
stack_hook_poll = heatclient.osc.v1.stack:StackHookPoll
|
||||
stack_list = heatclient.osc.v1.stack:ListStack
|
||||
|
Loading…
Reference in New Issue
Block a user