From 4817bf22c6a9439861794323d1246529c2ec8454 Mon Sep 17 00:00:00 2001 From: Inessa Vasilevskaya Date: Mon, 26 Jul 2021 13:15:20 +0200 Subject: [PATCH] Control leapp report format Leapp-repository part of PR686 which contains appropriate changes for the leapp preupgrade and upgrade commands. Depends-On: https://github.com/oamg/leapp/pull/686 --- commands/preupgrade/__init__.py | 5 ++++- commands/upgrade/__init__.py | 6 +++++- commands/upgrade/util.py | 14 +++++++++++--- 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/commands/preupgrade/__init__.py b/commands/preupgrade/__init__.py index f5ea06b7c8..97d82ea697 100644 --- a/commands/preupgrade/__init__.py +++ b/commands/preupgrade/__init__.py @@ -27,6 +27,8 @@ @command_opt('target', choices=command_utils.get_supported_target_versions(), help='Specify RHEL version to upgrade to for {} detected upgrade flavour'.format( command_utils.get_upgrade_flavour())) +@command_opt('report-schema', help='Specify report schema version for leapp-report.json', choices=['1.0.0', '1.1.0'], + default=get_config().get('report', 'schema')) @breadcrumbs.produces_breadcrumbs def preupgrade(args, breadcrumbs): context = str(uuid.uuid4()) @@ -35,6 +37,7 @@ def preupgrade(args, breadcrumbs): configuration = util.prepare_configuration(args) answerfile_path = cfg.get('report', 'answerfile') userchoices_path = cfg.get('report', 'userchoices') + report_schema = util.process_report_schema(args, cfg) if os.getuid(): raise CommandError('This command has to be run under the root user.') @@ -64,7 +67,7 @@ def preupgrade(args, breadcrumbs): logger.info("Answerfile will be created at %s", answerfile_path) workflow.save_answers(answerfile_path, userchoices_path) - util.generate_report_files(context) + util.generate_report_files(context, report_schema) report_errors(workflow.errors) report_inhibitors(context) report_files = util.get_cfg_files('report', cfg) diff --git a/commands/upgrade/__init__.py b/commands/upgrade/__init__.py index 1aa9804632..06d548a22b 100644 --- a/commands/upgrade/__init__.py +++ b/commands/upgrade/__init__.py @@ -32,6 +32,8 @@ @command_opt('target', choices=command_utils.get_supported_target_versions(), help='Specify RHEL version to upgrade to for {} detected upgrade flavour'.format( command_utils.get_upgrade_flavour())) +@command_opt('report-schema', help='Specify report schema version for leapp-report.json', choices=['1.0.0', '1.1.0'], + default=get_config().get('report', 'schema')) @breadcrumbs.produces_breadcrumbs def upgrade(args, breadcrumbs): skip_phases_until = None @@ -47,6 +49,8 @@ def upgrade(args, breadcrumbs): only_with_tags = args.only_with_tags if 'only_with_tags' in args else None resume_context = args.resume_context if 'resume_context' in args else None + report_schema = util.process_report_schema(args, cfg) + if os.getuid(): raise CommandError('This command has to be run under the root user.') @@ -94,7 +98,7 @@ def upgrade(args, breadcrumbs): workflow.save_answers(answerfile_path, userchoices_path) report_errors(workflow.errors) report_inhibitors(context) - util.generate_report_files(context) + util.generate_report_files(context, report_schema) report_files = util.get_cfg_files('report', cfg) log_files = util.get_cfg_files('logs', cfg) report_info(report_files, log_files, answerfile_path, fail=workflow.failure) diff --git a/commands/upgrade/util.py b/commands/upgrade/util.py index 8df2e851f5..6f27481748 100644 --- a/commands/upgrade/util.py +++ b/commands/upgrade/util.py @@ -115,7 +115,7 @@ def check_env_and_conf(env_var, conf_var, configuration): return os.getenv(env_var, '0') == '1' or configuration.get(conf_var, '0') == '1' -def generate_report_files(context): +def generate_report_files(context, report_schema): """ Generates all report files for specific leapp run (txt and json format) """ @@ -124,8 +124,8 @@ def generate_report_files(context): '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) + generate_report_file(messages, context, report_json, report_schema) + generate_report_file(messages, context, report_txt, report_schema) def get_cfg_files(section, cfg, must_exist=True): @@ -199,3 +199,11 @@ def process_whitelist_experimental(repositories, workflow, configuration, logger if logger: logger.error(msg) raise CommandError(msg) + + +def process_report_schema(args, configuration): + default_report_schema = configuration.get('report', 'schema') + if args.report_schema and args.report_schema > default_report_schema: + raise CommandError('--report-schema version can not be greater that the ' + 'actual {} one.'.format(default_report_schema)) + return args.report_schema or default_report_schema