summaryrefslogtreecommitdiff
path: root/heatclient/osc
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2016-02-24 23:57:11 +0000
committerGerrit Code Review <review@openstack.org>2016-02-24 23:57:11 +0000
commit3afe92b71d9d1454362a9c66de92c9bdf567ea40 (patch)
treefac4f45f7bb892da93a6c385d73d93c9f3709568 /heatclient/osc
parent79742a3d67d1e3cc4f2c9a5994181ec51ca31881 (diff)
parent5f6a88bc5f37dfd153d44c8c6201eed36f33b340 (diff)
downloadpython-heatclient-3afe92b71d9d1454362a9c66de92c9bdf567ea40.tar.gz
Merge "OpenstackClient plugin for software deployment output show"
Diffstat (limited to 'heatclient/osc')
-rw-r--r--heatclient/osc/v1/software_deployment.py82
1 files changed, 75 insertions, 7 deletions
diff --git a/heatclient/osc/v1/software_deployment.py b/heatclient/osc/v1/software_deployment.py
index 545449b..b60f4c1 100644
--- a/heatclient/osc/v1/software_deployment.py
+++ b/heatclient/osc/v1/software_deployment.py
@@ -140,8 +140,8 @@ class DeleteDeployment(command.Command):
def get_parser(self, prog_name):
parser = super(DeleteDeployment, self).get_parser(prog_name)
parser.add_argument(
- 'id',
- metavar='<ID>',
+ 'deployment',
+ metavar='<deployment>',
nargs='+',
help=_('ID of the deployment(s) to delete.')
)
@@ -152,7 +152,7 @@ class DeleteDeployment(command.Command):
hc = self.app.client_manager.orchestration
failure_count = 0
- for deploy_id in parsed_args.id:
+ for deploy_id in parsed_args.deployment:
try:
sd = hc.software_deployments.get(deployment_id=deploy_id)
hc.software_deployments.delete(
@@ -178,7 +178,7 @@ class DeleteDeployment(command.Command):
raise exc.CommandError(_('Unable to delete %(count)s of the '
'%(total)s deployments.') %
{'count': failure_count,
- 'total': len(parsed_args.id)})
+ 'total': len(parsed_args.deployment)})
class ListDeployment(lister.Lister):
@@ -229,8 +229,8 @@ class ShowDeployment(show.ShowOne):
def get_parser(self, prog_name):
parser = super(ShowDeployment, self).get_parser(prog_name)
parser.add_argument(
- 'id',
- metavar='<id>',
+ 'deployment',
+ metavar='<deployment>',
help=_('ID of the deployment')
)
parser.add_argument(
@@ -246,7 +246,7 @@ class ShowDeployment(show.ShowOne):
heat_client = self.app.client_manager.orchestration
try:
data = heat_client.software_deployments.get(
- deployment_id=parsed_args.id)
+ deployment_id=parsed_args.deployment)
except heat_exc.HTTPNotFound:
raise exc.CommandError(_('Software Deployment not found: %s') % id)
else:
@@ -286,3 +286,71 @@ class ShowMetadataDeployment(command.Command):
md = heat_client.software_deployments.metadata(
server_id=parsed_args.server)
print(jsonutils.dumps(md, indent=2))
+
+
+class ShowOutputDeployment(command.Command):
+ """Show a specific deployment output."""
+
+ log = logging.getLogger(__name__ + '.ShowOutputDeployment')
+
+ def get_parser(self, prog_name):
+ parser = super(ShowOutputDeployment, self).get_parser(prog_name)
+ parser.add_argument(
+ 'deployment',
+ metavar='<deployment>',
+ help=_('ID of deployment to show the output for')
+ )
+ parser.add_argument(
+ 'output',
+ metavar='<output-name>',
+ nargs='?',
+ default=None,
+ help=_('Name of an output to display')
+ )
+ parser.add_argument(
+ '--all',
+ default=False,
+ action='store_true',
+ help=_('Display all deployment outputs')
+ )
+ parser.add_argument(
+ '--long',
+ action='store_true',
+ default=False,
+ help='Show full deployment logs in output',
+ )
+ return parser
+
+ def take_action(self, parsed_args):
+ self.log.debug("take_action(%s)", parsed_args)
+
+ heat_client = self.app.client_manager.orchestration
+ if (not parsed_args.all and parsed_args.output is None or
+ parsed_args.all and parsed_args.output is not None):
+ raise exc.CommandError(
+ _('Error: either %(output)s or %(all)s argument is needed.')
+ % {'output': '<output-name>', 'all': '--all'})
+ try:
+ sd = heat_client.software_deployments.get(
+ deployment_id=parsed_args.deployment)
+ except heat_exc.HTTPNotFound:
+ raise exc.CommandError(_('Deployment not found: %s')
+ % parsed_args.deployment)
+ outputs = sd.output_values
+ if outputs:
+ if parsed_args.all:
+ print('output_values:\n')
+ for k in outputs.keys():
+ format_utils.print_software_deployment_output(
+ data=outputs, name=k, long=parsed_args.long)
+ else:
+ if parsed_args.output not in outputs:
+ msg = (_('Output %(output)s does not exist in deployment'
+ ' %(deployment)s')
+ % {'output': parsed_args.output,
+ 'deployment': parsed_args.deployment})
+ raise exc.CommandError(msg)
+ else:
+ print('output_value:\n')
+ format_utils.print_software_deployment_output(
+ data=outputs, name=parsed_args.output)