From 2e5ac98cdff63ab5611cf5a55b67f40ed90995ae Mon Sep 17 00:00:00 2001 From: Michal Bocek Date: Wed, 10 Jul 2024 18:31:13 +0200 Subject: [PATCH] State action in special pkg removal report msgs Customers have been confused when seeing the messages, not knowing what should they do. --- .../pre_ponr_changes/handle_packages.py | 24 ++++-- .../pre_ponr_changes/handle_packages_test.py | 74 +++++++++---------- 2 files changed, 52 insertions(+), 46 deletions(-) diff --git a/convert2rhel/actions/pre_ponr_changes/handle_packages.py b/convert2rhel/actions/pre_ponr_changes/handle_packages.py index 1ef8af04ac..6e6f2dc848 100644 --- a/convert2rhel/actions/pre_ponr_changes/handle_packages.py +++ b/convert2rhel/actions/pre_ponr_changes/handle_packages.py @@ -146,14 +146,21 @@ def run(self): # shows which packages were not removed, if false, all packages were removed pkgs_not_removed = sorted(frozenset(pkghandler.get_pkg_nevras(all_pkgs)).difference(pkgs_removed)) if pkgs_not_removed: - message = "The following packages were not removed: %s" % ", ".join(pkgs_not_removed) + message = "The following packages cannot be removed: %s" % ", ".join(pkgs_not_removed) logger.warning(message) self.add_message( level="WARNING", id="SPECIAL_PACKAGES_NOT_REMOVED", - title="Special packages not removed", - description="Special packages which could not be removed", - diagnosis=message, + title="Some packages cannot be removed", + description=message, + diagnosis=( + "The packages match a pre-defined list of packages that are to be removed during the" + " conversion. This list includes packages that are known to cause a conversion failure." + ), + remediations=( + "We do a conversion dry-run (yum transaction validation) later on as part of the pre-conversion" + " analysis. If the dry-run fails, try removing the packages listed above manually." + ), ) if pkgs_removed: @@ -162,12 +169,13 @@ def run(self): self.add_message( level="INFO", id="SPECIAL_PACKAGES_REMOVED", - title="Special packages to be removed", - description=( + title="Packages to be removed", + description=message, + diagnosis=( "We have identified installed packages that match a pre-defined list of packages that are" - " to be removed during the conversion" + " known to cause a conversion failure." ), - diagnosis=message, + remediations=("Check that the system runs correctly without the packages after the conversion."), ) super(RemoveSpecialPackages, self).run() diff --git a/convert2rhel/unit_tests/actions/pre_ponr_changes/handle_packages_test.py b/convert2rhel/unit_tests/actions/pre_ponr_changes/handle_packages_test.py index 688f3db61e..7365e4a543 100644 --- a/convert2rhel/unit_tests/actions/pre_ponr_changes/handle_packages_test.py +++ b/convert2rhel/unit_tests/actions/pre_ponr_changes/handle_packages_test.py @@ -166,20 +166,19 @@ def test_run_no_packages_to_remove(self, monkeypatch, remove_special_packages_in def test_run_all_removed(self, monkeypatch, remove_special_packages_instance): pkgs_to_remove = [get_centos_logos_pkg_object()] pkgs_removed = ["centos-logos-70.0.6-3.el7.centos.noarch"] - expected = set( - ( - actions.ActionMessage( - level="INFO", - id="SPECIAL_PACKAGES_REMOVED", - title="Special packages to be removed", - description="We have identified installed packages that match a pre-defined list of packages that are" - " to be removed during the conversion", - diagnosis="The following packages will be removed during the conversion: centos-logos-70.0.6-3.el7.centos.noarch", - remediations=None, - variables={}, - ), + expected = { + actions.ActionMessage( + level="INFO", + id="SPECIAL_PACKAGES_REMOVED", + title="Packages to be removed", + description="The following packages will be removed during the conversion:" + " centos-logos-70.0.6-3.el7.centos.noarch", + diagnosis="We have identified installed packages that match a pre-defined list of packages that" + " are known to cause a conversion failure.", + remediations="Check that the system runs correctly without the packages after the conversion.", + variables={}, ) - ) + } monkeypatch.setattr( pkghandler, "get_packages_to_remove", GetPackagesToRemoveMocked(return_value=pkgs_to_remove) ) @@ -199,31 +198,30 @@ def test_run_all_removed(self, monkeypatch, remove_special_packages_instance): @centos8 def test_run_packages_not_removed(self, pretend_os, monkeypatch, remove_special_packages_instance): pkgs_removed = ["kernel-core"] - expected = set( - ( - actions.ActionMessage( - level="WARNING", - id="SPECIAL_PACKAGES_NOT_REMOVED", - title="Special packages not removed", - description="Special packages which could not be removed", - diagnosis="The following packages were not removed: gpg-pubkey-1.0.0-1.x86_64, pkg1-None-None.None, pkg2-None-None.None", - remediations=None, - variables={}, - ), - actions.ActionMessage( - level="INFO", - id="SPECIAL_PACKAGES_REMOVED", - title="Special packages to be removed", - description=( - "We have identified installed packages that match a pre-defined list of packages that are" - " to be removed during the conversion" - ), - diagnosis="The following packages will be removed during the conversion: kernel-core", - remediations=None, - variables={}, - ), - ) - ) + expected = { + actions.ActionMessage( + level="WARNING", + id="SPECIAL_PACKAGES_NOT_REMOVED", + title="Some packages cannot be removed", + description="The following packages cannot be removed: gpg-pubkey-1.0.0-1.x86_64, pkg1-None-None.None," + " pkg2-None-None.None", + diagnosis="The packages match a pre-defined list of packages that are to be removed during the" + " conversion. This list includes packages that are known to cause a conversion failure.", + remediations="We do a conversion dry-run (yum transaction validation) later on as part of the" + " pre-conversion analysis. If the dry-run fails, try removing the packages listed above manually.", + variables={}, + ), + actions.ActionMessage( + level="INFO", + id="SPECIAL_PACKAGES_REMOVED", + title="Packages to be removed", + description="The following packages will be removed during the conversion: kernel-core", + diagnosis="We have identified installed packages that match a pre-defined list of packages that" + " are known to cause a conversion failure.", + remediations="Check that the system runs correctly without the packages after the conversion.", + variables={}, + ), + } monkeypatch.setattr( pkghandler, "get_packages_to_remove", GetPackagesToRemoveMocked(pkg_selection="fingerprints") )