Update ELevate patch
This commit is contained in:
parent
afc8883046
commit
23a29aa1c9
@ -791,69 +791,10 @@ index da62c50..f062f78 100644
|
|||||||
|
|
||||||
|
|
||||||
def get_upgrade_paths_config():
|
def get_upgrade_paths_config():
|
||||||
diff --git a/commands/preupgrade/__init__.py b/commands/preupgrade/__init__.py
|
|
||||||
index 92038bb..8dd8966 100644
|
|
||||||
--- a/commands/preupgrade/__init__.py
|
|
||||||
+++ b/commands/preupgrade/__init__.py
|
|
||||||
@@ -48,6 +48,16 @@ def preupgrade(args, breadcrumbs):
|
|
||||||
logger = configure_logger('leapp-preupgrade.log')
|
|
||||||
os.environ['LEAPP_EXECUTION_ID'] = context
|
|
||||||
|
|
||||||
+ sentry_client = None
|
|
||||||
+ sentry_dsn = cfg.get('sentry', 'dsn')
|
|
||||||
+ if sentry_dsn:
|
|
||||||
+ try:
|
|
||||||
+ from raven import Client
|
|
||||||
+ from raven.transport.http import HTTPTransport
|
|
||||||
+ sentry_client = Client(sentry_dsn, transport=HTTPTransport)
|
|
||||||
+ except ImportError:
|
|
||||||
+ logger.warn("Cannot import the Raven library - remote error logging not functional")
|
|
||||||
+
|
|
||||||
try:
|
|
||||||
repositories = util.load_repositories()
|
|
||||||
except LeappError as exc:
|
|
||||||
@@ -56,7 +66,8 @@ def preupgrade(args, breadcrumbs):
|
|
||||||
workflow = repositories.lookup_workflow('IPUWorkflow')()
|
|
||||||
util.warn_if_unsupported(configuration)
|
|
||||||
util.process_whitelist_experimental(repositories, workflow, configuration, logger)
|
|
||||||
- with beautify_actor_exception():
|
|
||||||
+
|
|
||||||
+ with util.format_actor_exceptions(logger, sentry_client):
|
|
||||||
workflow.load_answers(answerfile_path, userchoices_path)
|
|
||||||
until_phase = 'ReportsPhase'
|
|
||||||
logger.info('Executing workflow until phase: %s', until_phase)
|
|
||||||
@@ -68,12 +79,17 @@ 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, report_schema)
|
|
||||||
+
|
|
||||||
+ util.log_errors(workflow.errors, logger)
|
|
||||||
+ util.log_inhibitors(context, logger, sentry_client)
|
|
||||||
report_errors(workflow.errors)
|
|
||||||
report_inhibitors(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)
|
|
||||||
+
|
|
||||||
if workflow.failure:
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
diff --git a/commands/upgrade/__init__.py b/commands/upgrade/__init__.py
|
diff --git a/commands/upgrade/__init__.py b/commands/upgrade/__init__.py
|
||||||
index c9c2741..f773a5f 100644
|
index c9c2741..911d11d 100644
|
||||||
--- a/commands/upgrade/__init__.py
|
--- a/commands/upgrade/__init__.py
|
||||||
+++ b/commands/upgrade/__init__.py
|
+++ b/commands/upgrade/__init__.py
|
||||||
@@ -9,7 +9,7 @@ from leapp.exceptions import CommandError, LeappError
|
|
||||||
from leapp.logger import configure_logger
|
|
||||||
from leapp.utils.audit import Execution
|
|
||||||
from leapp.utils.clicmd import command, command_opt
|
|
||||||
-from leapp.utils.output import beautify_actor_exception, report_errors, report_info, report_inhibitors
|
|
||||||
+from leapp.utils.output import report_errors, report_info, report_inhibitors
|
|
||||||
|
|
||||||
# NOTE:
|
|
||||||
# If you are adding new parameters please ensure that they are set in the upgrade function invocation in `rerun`
|
|
||||||
@@ -18,6 +18,7 @@ from leapp.utils.output import beautify_actor_exception, report_errors, report_i
|
@@ -18,6 +18,7 @@ from leapp.utils.output import beautify_actor_exception, report_errors, report_i
|
||||||
|
|
||||||
@command('upgrade', help='Upgrade the current system to the next available major version.')
|
@command('upgrade', help='Upgrade the current system to the next available major version.')
|
||||||
@ -862,24 +803,7 @@ index c9c2741..f773a5f 100644
|
|||||||
@command_opt('reboot', is_flag=True, help='Automatically performs reboot when requested.')
|
@command_opt('reboot', is_flag=True, help='Automatically performs reboot when requested.')
|
||||||
@command_opt('whitelist-experimental', action='append', metavar='ActorName', help='Enable experimental actors')
|
@command_opt('whitelist-experimental', action='append', metavar='ActorName', help='Enable experimental actors')
|
||||||
@command_opt('debug', is_flag=True, help='Enable debug mode', inherit=False)
|
@command_opt('debug', is_flag=True, help='Enable debug mode', inherit=False)
|
||||||
@@ -77,6 +78,16 @@ def upgrade(args, breadcrumbs):
|
@@ -86,7 +87,13 @@ def upgrade(args, breadcrumbs):
|
||||||
logger = configure_logger('leapp-upgrade.log')
|
|
||||||
os.environ['LEAPP_EXECUTION_ID'] = context
|
|
||||||
|
|
||||||
+ sentry_client = None
|
|
||||||
+ sentry_dsn = cfg.get('sentry', 'dsn')
|
|
||||||
+ if sentry_dsn:
|
|
||||||
+ try:
|
|
||||||
+ from raven import Client
|
|
||||||
+ from raven.transport.http import HTTPTransport
|
|
||||||
+ sentry_client = Client(sentry_dsn, transport=HTTPTransport)
|
|
||||||
+ except ImportError:
|
|
||||||
+ logger.warn("Cannot import the Raven library - remote error logging not functional")
|
|
||||||
+
|
|
||||||
if args.resume:
|
|
||||||
logger.info("Resuming execution after phase: %s", skip_phases_until)
|
|
||||||
try:
|
|
||||||
@@ -86,7 +97,13 @@ def upgrade(args, breadcrumbs):
|
|
||||||
workflow = repositories.lookup_workflow('IPUWorkflow')(auto_reboot=args.reboot)
|
workflow = repositories.lookup_workflow('IPUWorkflow')(auto_reboot=args.reboot)
|
||||||
util.process_whitelist_experimental(repositories, workflow, configuration, logger)
|
util.process_whitelist_experimental(repositories, workflow, configuration, logger)
|
||||||
util.warn_if_unsupported(configuration)
|
util.warn_if_unsupported(configuration)
|
||||||
@ -890,23 +814,20 @@ index c9c2741..f773a5f 100644
|
|||||||
+ logger.info("Upgrade cancelled by user")
|
+ logger.info("Upgrade cancelled by user")
|
||||||
+ sys.exit(1)
|
+ sys.exit(1)
|
||||||
+
|
+
|
||||||
+ with util.format_actor_exceptions(logger, sentry_client):
|
+ with util.format_actor_exceptions(logger):
|
||||||
logger.info("Using answerfile at %s", answerfile_path)
|
logger.info("Using answerfile at %s", answerfile_path)
|
||||||
workflow.load_answers(answerfile_path, userchoices_path)
|
workflow.load_answers(answerfile_path, userchoices_path)
|
||||||
|
|
||||||
@@ -98,14 +115,19 @@ def upgrade(args, breadcrumbs):
|
@@ -98,6 +105,8 @@ def upgrade(args, breadcrumbs):
|
||||||
|
|
||||||
logger.info("Answerfile will be created at %s", answerfile_path)
|
logger.info("Answerfile will be created at %s", answerfile_path)
|
||||||
workflow.save_answers(answerfile_path, userchoices_path)
|
workflow.save_answers(answerfile_path, userchoices_path)
|
||||||
+
|
|
||||||
+ util.log_errors(workflow.errors, logger)
|
+ util.log_errors(workflow.errors, logger)
|
||||||
+ util.log_inhibitors(context, logger, sentry_client)
|
+ util.log_inhibitors(context, logger)
|
||||||
report_errors(workflow.errors)
|
report_errors(workflow.errors)
|
||||||
report_inhibitors(context)
|
report_inhibitors(context)
|
||||||
+
|
|
||||||
util.generate_report_files(context, report_schema)
|
util.generate_report_files(context, report_schema)
|
||||||
report_files = util.get_cfg_files('report', cfg)
|
@@ -106,6 +115,7 @@ def upgrade(args, breadcrumbs):
|
||||||
log_files = util.get_cfg_files('logs', cfg)
|
|
||||||
report_info(report_files, log_files, answerfile_path, fail=workflow.failure)
|
report_info(report_files, log_files, answerfile_path, fail=workflow.failure)
|
||||||
|
|
||||||
if workflow.failure:
|
if workflow.failure:
|
||||||
@ -915,10 +836,10 @@ index c9c2741..f773a5f 100644
|
|||||||
|
|
||||||
|
|
||||||
diff --git a/commands/upgrade/util.py b/commands/upgrade/util.py
|
diff --git a/commands/upgrade/util.py b/commands/upgrade/util.py
|
||||||
index 75ffa6a..9022b29 100644
|
index 75ffa6a..35154be 100644
|
||||||
--- a/commands/upgrade/util.py
|
--- a/commands/upgrade/util.py
|
||||||
+++ b/commands/upgrade/util.py
|
+++ b/commands/upgrade/util.py
|
||||||
@@ -2,18 +2,23 @@ import functools
|
@@ -2,18 +2,25 @@ import functools
|
||||||
import itertools
|
import itertools
|
||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
@ -941,10 +862,12 @@ index 75ffa6a..9022b29 100644
|
|||||||
+from leapp.utils.output import report_unsupported, pretty_block_text, pretty_block, Color
|
+from leapp.utils.output import report_unsupported, pretty_block_text, pretty_block, Color
|
||||||
from leapp.utils.report import fetch_upgrade_report_messages, generate_report_file
|
from leapp.utils.report import fetch_upgrade_report_messages, generate_report_file
|
||||||
+from leapp.models import ErrorModel
|
+from leapp.models import ErrorModel
|
||||||
|
+
|
||||||
|
+
|
||||||
|
|
||||||
|
|
||||||
def disable_database_sync():
|
def disable_database_sync():
|
||||||
@@ -167,6 +172,44 @@ def warn_if_unsupported(configuration):
|
@@ -167,6 +174,44 @@ def warn_if_unsupported(configuration):
|
||||||
report_unsupported(devel_vars, configuration["whitelist_experimental"])
|
report_unsupported(devel_vars, configuration["whitelist_experimental"])
|
||||||
|
|
||||||
|
|
||||||
@ -989,7 +912,7 @@ index 75ffa6a..9022b29 100644
|
|||||||
def handle_output_level(args):
|
def handle_output_level(args):
|
||||||
"""
|
"""
|
||||||
Set environment variables following command line arguments.
|
Set environment variables following command line arguments.
|
||||||
@@ -236,3 +279,76 @@ def process_report_schema(args, configuration):
|
@@ -236,3 +281,60 @@ def process_report_schema(args, configuration):
|
||||||
raise CommandError('--report-schema version can not be greater that the '
|
raise CommandError('--report-schema version can not be greater that the '
|
||||||
'actual {} one.'.format(default_report_schema))
|
'actual {} one.'.format(default_report_schema))
|
||||||
return args.report_schema or default_report_schema
|
return args.report_schema or default_report_schema
|
||||||
@ -1005,7 +928,7 @@ index 75ffa6a..9022b29 100644
|
|||||||
+
|
+
|
||||||
+
|
+
|
||||||
+@contextmanager
|
+@contextmanager
|
||||||
+def format_actor_exceptions(logger, sentry):
|
+def format_actor_exceptions(logger):
|
||||||
+ try:
|
+ try:
|
||||||
+ try:
|
+ try:
|
||||||
+ yield
|
+ yield
|
||||||
@ -1013,10 +936,7 @@ index 75ffa6a..9022b29 100644
|
|||||||
+ msg = "{} - Please check the above details".format(err.message)
|
+ msg = "{} - Please check the above details".format(err.message)
|
||||||
+ sys.stderr.write("\n")
|
+ sys.stderr.write("\n")
|
||||||
+ sys.stderr.write(pretty_block_text(msg, color="", width=len(msg)))
|
+ sys.stderr.write(pretty_block_text(msg, color="", width=len(msg)))
|
||||||
+ logger.error(err.message)
|
+ logger.error(e.message)
|
||||||
+ if sentry:
|
|
||||||
+ sent_code = sentry.captureException()
|
|
||||||
+ logger.info("Error \"{}\" sent to Sentry with code {}".format(err, sent_code))
|
|
||||||
+ finally:
|
+ finally:
|
||||||
+ pass
|
+ pass
|
||||||
+
|
+
|
||||||
@ -1043,7 +963,7 @@ index 75ffa6a..9022b29 100644
|
|||||||
+ v=details[detail].rstrip().replace('\n', '\n' + ' ' * (6 + len(detail)))))
|
+ v=details[detail].rstrip().replace('\n', '\n' + ' ' * (6 + len(detail)))))
|
||||||
+
|
+
|
||||||
+
|
+
|
||||||
+def log_inhibitors(context_id, logger, sentry):
|
+def log_inhibitors(context_id, logger):
|
||||||
+ from leapp.reporting import Flags # pylint: disable=import-outside-toplevel
|
+ from leapp.reporting import Flags # pylint: disable=import-outside-toplevel
|
||||||
+ reports = fetch_upgrade_report_messages(context_id)
|
+ reports = fetch_upgrade_report_messages(context_id)
|
||||||
+ inhibitors = [report for report in reports if Flags.INHIBITOR in report.get('flags', [])]
|
+ inhibitors = [report for report in reports if Flags.INHIBITOR in report.get('flags', [])]
|
||||||
@ -1053,19 +973,6 @@ index 75ffa6a..9022b29 100644
|
|||||||
+ for position, report in enumerate(inhibitors, start=1):
|
+ for position, report in enumerate(inhibitors, start=1):
|
||||||
+ logger.error('{idx:5}. Inhibitor: {title}'.format(idx=position, title=report['title']))
|
+ logger.error('{idx:5}. Inhibitor: {title}'.format(idx=position, title=report['title']))
|
||||||
+ logger.info('Consult the pre-upgrade report for details and possible remediation.')
|
+ logger.info('Consult the pre-upgrade report for details and possible remediation.')
|
||||||
+
|
|
||||||
+ if sentry:
|
|
||||||
+ for inhibitor in inhibitors:
|
|
||||||
+ sentry.captureMessage(
|
|
||||||
+ "Inhibitor: {}\n"
|
|
||||||
+ "Severity: {}\n"
|
|
||||||
+ "{}".format(
|
|
||||||
+ inhibitor['title'],
|
|
||||||
+ inhibitor['severity'],
|
|
||||||
+ inhibitor['summary']
|
|
||||||
+ )
|
|
||||||
+ )
|
|
||||||
+ logger.info("Inhibitor \"{}\" sent to Sentry".format(inhibitor['title']))
|
|
||||||
diff --git a/etc/leapp/transaction/to_reinstall b/etc/leapp/transaction/to_reinstall
|
diff --git a/etc/leapp/transaction/to_reinstall b/etc/leapp/transaction/to_reinstall
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000..c6694a8
|
index 0000000..c6694a8
|
||||||
@ -1076,28 +983,10 @@ index 0000000..c6694a8
|
|||||||
+### Useful for packages that have identical version strings but contain binary changes between major OS versions
|
+### Useful for packages that have identical version strings but contain binary changes between major OS versions
|
||||||
+### Packages that aren't installed will be skipped
|
+### Packages that aren't installed will be skipped
|
||||||
diff --git a/packaging/leapp-repository.spec b/packaging/leapp-repository.spec
|
diff --git a/packaging/leapp-repository.spec b/packaging/leapp-repository.spec
|
||||||
index af4b31d..b9e88a9 100644
|
index af4b31d..0d8f6c8 100644
|
||||||
--- a/packaging/leapp-repository.spec
|
--- a/packaging/leapp-repository.spec
|
||||||
+++ b/packaging/leapp-repository.spec
|
+++ b/packaging/leapp-repository.spec
|
||||||
@@ -137,6 +137,8 @@ Requires: pciutils
|
@@ -196,6 +196,8 @@ rm -rf %{buildroot}%{leapp_python_sitelib}/leapp/cli/commands/tests
|
||||||
# Required to gather system facts about SELinux
|
|
||||||
Requires: libselinux-python
|
|
||||||
Requires: python-pyudev
|
|
||||||
+# Required to gather data about actor exceptions or inhibitors
|
|
||||||
+Requires: python-raven
|
|
||||||
# required by SELinux actors
|
|
||||||
Requires: policycoreutils-python
|
|
||||||
# Required to fetch leapp data
|
|
||||||
@@ -147,6 +149,8 @@ Requires: python-requests
|
|
||||||
# systemd-nspawn utility
|
|
||||||
Requires: systemd-container
|
|
||||||
Requires: python3-pyudev
|
|
||||||
+# Required to gather data about actor exceptions or inhibitors
|
|
||||||
+Requires: python3-raven
|
|
||||||
# Required to fetch leapp data
|
|
||||||
Requires: python3-requests
|
|
||||||
# Required because the code is kept Py2 & Py3 compatible
|
|
||||||
@@ -196,6 +200,8 @@ rm -rf %{buildroot}%{leapp_python_sitelib}/leapp/cli/commands/tests
|
|
||||||
rm -rf %{buildroot}%{repositorydir}/system_upgrade/el8toel9
|
rm -rf %{buildroot}%{repositorydir}/system_upgrade/el8toel9
|
||||||
%else
|
%else
|
||||||
rm -rf %{buildroot}%{repositorydir}/system_upgrade/el7toel8
|
rm -rf %{buildroot}%{repositorydir}/system_upgrade/el7toel8
|
||||||
@ -6257,14 +6146,3 @@ index 0000000..9df3c0d
|
|||||||
+ If no package is installed, this will be `None`.
|
+ If no package is installed, this will be `None`.
|
||||||
+ """
|
+ """
|
||||||
+ version = fields.Nullable(fields.String())
|
+ version = fields.Nullable(fields.String())
|
||||||
diff --git a/requirements.txt b/requirements.txt
|
|
||||||
index ac6bf9b..f69f981 100644
|
|
||||||
--- a/requirements.txt
|
|
||||||
+++ b/requirements.txt
|
|
||||||
@@ -11,5 +11,6 @@ distro==1.5.0
|
|
||||||
ipaddress==1.0.23
|
|
||||||
git+https://github.com/oamg/leapp
|
|
||||||
requests
|
|
||||||
+raven
|
|
||||||
# pinning a py27 troublemaking transitive dependency
|
|
||||||
lazy-object-proxy==1.5.2; python_version < '3'
|
|
||||||
|
Loading…
Reference in New Issue
Block a user