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)
def _print_failures(self, failures, deployment_failures, long=False): """Print failed resources. If the resource is a deployment resource, look up the deployment and print deploy_stdout and deploy_stderr. """ out = self.app.stdout if not failures: return for k, f in failures.items(): out.write('%s:\n' % k) out.write(' resource_type: %s\n' % f.resource_type) out.write(' physical_resource_id: %s\n' % f.physical_resource_id) out.write(' status: %s\n' % f.resource_status) reason = format_utils.indent_and_truncate( f.resource_status_reason, spaces=4, truncate=not long, truncate_prefix='...\n') out.write(' status_reason: |\n%s\n' % reason) df = deployment_failures.get(f.physical_resource_id) if df: for output in ('deploy_stdout', 'deploy_stderr'): format_utils.print_software_deployment_output( data=df.output_values, name=output, long=long, out=out)
def _print_failures(self, failures, deployment_failures, long=False): """Print failed resources. If the resource is a deployment resource, look up the deployment and print deploy_stdout and deploy_stderr. """ out = self.app.stdout if not failures: return for k, f in failures.items(): out.write('%s:\n' % k) out.write(' resource_type: %s\n' % f.resource_type) out.write(' physical_resource_id: %s\n' % f.physical_resource_id) out.write(' status: %s\n' % f.resource_status) reason = format_utils.indent_and_truncate(f.resource_status_reason, spaces=4, truncate=not long, truncate_prefix='...\n') out.write(' status_reason: |\n%s\n' % reason) df = deployment_failures.get(f.physical_resource_id) if df: for output in ('deploy_stdout', 'deploy_stderr'): format_utils.print_software_deployment_output( data=df.output_values, name=output, long=long, out=out)
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: 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)
def test_print_software_deployment_output(self): out = six.StringIO() format_utils.print_software_deployment_output({'deploy_stdout': ''}, out=out, name='deploy_stdout') self.assertEqual(' deploy_stdout: |\n\n', out.getvalue()) ov = { 'deploy_stdout': '', 'deploy_stderr': '1\n2\n3\n4\n5\n6\n7\n8\n9' '\n10\n11', 'deploy_status_code': 0 } out = six.StringIO() format_utils.print_software_deployment_output(ov, out=out, name='deploy_stderr') self.assertEqual( u'''\ deploy_stderr: | ... 2 3 4 5 6 7 8 9 10 11 (truncated, view all with --long) ''', out.getvalue()) out = six.StringIO() format_utils.print_software_deployment_output(ov, out=out, name='deploy_stderr', long=True) self.assertEqual( u'''\ deploy_stderr: | 1 2 3 4 5 6 7 8 9 10 11 ''', out.getvalue())
def test_print_software_deployment_output(self): out = six.StringIO() format_utils.print_software_deployment_output( {'deploy_stdout': ''}, out=out, name='deploy_stdout') self.assertEqual( ' deploy_stdout: |\n\n', out.getvalue()) ov = {'deploy_stdout': '', 'deploy_stderr': '1\n2\n3\n4\n5\n6\n7\n8\n9' '\n10\n11', 'deploy_status_code': 0} out = six.StringIO() format_utils.print_software_deployment_output(ov, out=out, name='deploy_stderr') self.assertEqual( u'''\ deploy_stderr: | ... 2 3 4 5 6 7 8 9 10 11 (truncated, view all with --long) ''', out.getvalue()) out = six.StringIO() format_utils.print_software_deployment_output(ov, out=out, name='deploy_stderr', long=True) self.assertEqual( u'''\ deploy_stderr: | 1 2 3 4 5 6 7 8 9 10 11 ''', out.getvalue())