Beispiel #1
0
def report(args):
    if os.getuid():
        raise CommandError('This command has to be run under the root user.')

    id = args.id or fetch_last_upgrade_context()[0]

    if not id:
        raise CommandError(
            'No previous Leapp upgrade run found. This command can only be run after "leapp upgrade" has been executed'
        )

    # FIXME: add proper default and choices parameters for the format option
    if args.format not in ('html', 'plaintext'):
        print(
            'No / not supported renderer provided as --format (available renderers: "html", "plaintext"). '
            'Defaulting to "plaintext"',
            file=sys.stdout,
            end='\n\n')
        renderer = 'plaintext'
    else:
        renderer = args.format

    messages = fetch_upgrade_report_messages(id, renderer)
    if not messages:
        raise CommandError(
            'No upgrade report messages found for context {}'.format(id))

    print(messages, file=sys.stdout)
Beispiel #2
0
def generate_report_files(context):
    """
    Generates all report files for specific leapp run (txt and json format)
    """
    cfg = get_config()
    report_txt, report_json = [os.path.join(cfg.get('report', 'dir'),
                                            'leapp-report.{}'.format(f)) for f in ['txt', 'json']]
    # fetch all report messages as a list of dicts
    messages = fetch_upgrade_report_messages(context)
    generate_report_file(messages, context, report_json)
    generate_report_file(messages, context, report_txt)
Beispiel #3
0
def report_inhibitors(context_id):
    # The following imports are required to be here to avoid import loop problems
    from leapp.utils.report import fetch_upgrade_report_messages, is_inhibitor  # noqa; pylint: disable=import-outside-toplevel
    reports = fetch_upgrade_report_messages(context_id)
    inhibitors = [report for report in reports if is_inhibitor(report)]
    if inhibitors:
        text = 'UPGRADE INHIBITED'
        with pretty_block(text=text, end_text=text, color=Color.red, target=sys.stdout):
            print('Upgrade has been inhibited due to the following problems:')
            for position, report in enumerate(inhibitors, start=1):
                print('{idx:5}. Inhibitor: {title}'.format(idx=position, title=report['title']))
            print('Consult the pre-upgrade report for details and possible remediation.')