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)
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
    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)
Ejemplo n.º 5
0
    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())
Ejemplo n.º 6
0
    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())