diff options
author | Jenkins <jenkins@review.openstack.org> | 2017-03-16 06:43:59 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2017-03-16 06:43:59 +0000 |
commit | a795a9a30485a8b3f4e612a66eddfe2843efb306 (patch) | |
tree | fd4764e48459166b545a8ddd05a44a2d1a839b2c /heatclient/osc | |
parent | 464332b6350d1d09b6bd47e67de4268d3e4f310d (diff) | |
parent | dedc3ac0af9797f8d7d8897380b0a457a226c00d (diff) | |
download | python-heatclient-a795a9a30485a8b3f4e612a66eddfe2843efb306.tar.gz |
Merge "Support openstack stack export"
Diffstat (limited to 'heatclient/osc')
-rw-r--r-- | heatclient/osc/v1/stack.py | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/heatclient/osc/v1/stack.py b/heatclient/osc/v1/stack.py index 1c044ae..26da613 100644 --- a/heatclient/osc/v1/stack.py +++ b/heatclient/osc/v1/stack.py @@ -874,6 +874,50 @@ class AbandonStack(format_utils.JsonFormat): return columns, data +class ExportStack(format_utils.JsonFormat): + """Export stack data json.""" + + log = logging.getLogger(__name__ + '.ExportStack') + + def get_parser(self, prog_name): + parser = super(ExportStack, self).get_parser(prog_name) + parser.add_argument( + 'stack', + metavar='<stack>', + help=_('Name or ID of stack to export') + ) + parser.add_argument( + '--output-file', + metavar='<output-file>', + help=_('File to output export data') + ) + + return parser + + def take_action(self, parsed_args): + self.log.debug('take_action(%s)', parsed_args) + + client = self.app.client_manager.orchestration + + try: + data_info = client.stacks.export(stack_id=parsed_args.stack) + except heat_exc.HTTPNotFound: + msg = _('Stack not found: %s') % parsed_args.stack + raise exc.CommandError(msg) + + if parsed_args.output_file is not None: + try: + with open(parsed_args.output_file, 'w') as f: + f.write(jsonutils.dumps(data_info, indent=2)) + return [], None + except IOError as e: + raise exc.CommandError(str(e)) + + data = list(six.itervalues(data_info)) + columns = list(six.iterkeys(data_info)) + return columns, data + + class OutputShowStack(command.ShowOne): """Show stack output.""" |