From 87da61ccacd6e9f88e3f39816bd830660ce2697b Mon Sep 17 00:00:00 2001 From: benank Date: Thu, 9 Jun 2022 09:05:02 -0700 Subject: [PATCH 1/4] Fix --- .../src/package_managers/ZypperPackageManager.py | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/core/src/package_managers/ZypperPackageManager.py b/src/core/src/package_managers/ZypperPackageManager.py index 200ecd13..644a6f9f 100644 --- a/src/core/src/package_managers/ZypperPackageManager.py +++ b/src/core/src/package_managers/ZypperPackageManager.py @@ -65,6 +65,9 @@ def __init__(self, env_layer, execution_config, composite_logger, telemetry_writ self.zypper_success_exit_codes = [self.zypper_exitcode_ok, self.zypper_exitcode_zypper_updated, self.zypper_exitcode_reboot_required] self.zypper_retriable_exit_codes = [self.zypper_exitcode_zypp_locked, self.zypper_exitcode_zypp_lib_exit_err, self.zypper_exitcode_repos_skipped] + # Additional output messages that corresponds with exit code 103 + self.zypper_out_zypper_updated_msg = 'Warning: One of the installed patches affects the package manager itself. Run this command once more to install any other needed patches.' + # Support to check for processes requiring restart self.zypper_ps = "sudo zypper ps -s" @@ -159,11 +162,11 @@ def invoke_package_manager(self, command): self.log_success_on_invoke(code, out) if code == self.zypper_exitcode_zypper_updated or code == self.zypper_exitcode_reboot_required: - self.__handle_zypper_updated_or_reboot_exit_codes(command, code) + self.__handle_zypper_updated_or_reboot_exit_codes(command, out, code) return out - def __handle_zypper_updated_or_reboot_exit_codes(self, command, code): + def __handle_zypper_updated_or_reboot_exit_codes(self, command, out, code): """ Handles exit code 102 or 103 when returned from invoking package manager. Does not repeat installation or reboot if it is a dry run. """ if "--dry-run" in command: @@ -172,7 +175,7 @@ def __handle_zypper_updated_or_reboot_exit_codes(self, command, code): str(code), command)) return - if code == self.zypper_exitcode_zypper_updated: + if code == self.zypper_exitcode_zypper_updated or self.zypper_out_zypper_updated_msg in out: self.composite_logger.log_debug( " - Package manager update detected. Patch installation run will be repeated.") self.set_package_manager_setting(Constants.PACKAGE_MGR_SETTING_REPEAT_PATCH_OPERATION, True) @@ -379,10 +382,6 @@ def extract_packages_from_patch_data(self, output): lines = output.strip().split('\n') for line in lines: - if "Warning: One of the installed patches affects the package manager itself. Run this command once more to install any other needed patches." in line: - self.composite_logger.log_debug(" - Package manager requires restart. Patch installation run will be repeated.") - self.set_package_manager_setting(Constants.PACKAGE_MGR_SETTING_REPEAT_PATCH_OPERATION, True) - if not parser_seeing_packages_flag: if 'package is going to be installed' in line or 'package is going to be upgraded' in line or \ 'packages are going to be installed:' in line or 'packages are going to be upgraded:' in line: From 6e3b2efa04bc3fb9c9788a95d13b9b773836db30 Mon Sep 17 00:00:00 2001 From: benank Date: Thu, 9 Jun 2022 11:32:57 -0700 Subject: [PATCH 2/4] Updates from comments --- src/core/src/package_managers/ZypperPackageManager.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/core/src/package_managers/ZypperPackageManager.py b/src/core/src/package_managers/ZypperPackageManager.py index 644a6f9f..7a703c19 100644 --- a/src/core/src/package_managers/ZypperPackageManager.py +++ b/src/core/src/package_managers/ZypperPackageManager.py @@ -161,8 +161,7 @@ def invoke_package_manager(self, command): else: # verbose diagnostic log self.log_success_on_invoke(code, out) - if code == self.zypper_exitcode_zypper_updated or code == self.zypper_exitcode_reboot_required: - self.__handle_zypper_updated_or_reboot_exit_codes(command, out, code) + self.__handle_zypper_updated_or_reboot_exit_codes(command, out, code) return out @@ -171,13 +170,13 @@ def __handle_zypper_updated_or_reboot_exit_codes(self, command, out, code): Does not repeat installation or reboot if it is a dry run. """ if "--dry-run" in command: self.composite_logger.log_debug( - "Exit code {0} detected from command \"{1}\", but it was a dry run. Continuing execution without repeating installation or rebooting.".format( + "Exit code {0} detected from command \"{1}\", but it was a dry run. Continuing execution without performing additional actions.".format( str(code), command)) return if code == self.zypper_exitcode_zypper_updated or self.zypper_out_zypper_updated_msg in out: self.composite_logger.log_debug( - " - Package manager update detected. Patch installation run will be repeated.") + "One of the installed patches affects the package manager itself. Patch installation run will be repeated.") self.set_package_manager_setting(Constants.PACKAGE_MGR_SETTING_REPEAT_PATCH_OPERATION, True) elif code == self.zypper_exitcode_reboot_required: self.composite_logger.log_warning( From be2b900af525a218649f6e4a4e0e849b8ebbf909 Mon Sep 17 00:00:00 2001 From: benank Date: Thu, 9 Jun 2022 11:35:20 -0700 Subject: [PATCH 3/4] Add hyphen back --- src/core/src/package_managers/ZypperPackageManager.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/src/package_managers/ZypperPackageManager.py b/src/core/src/package_managers/ZypperPackageManager.py index 7a703c19..0a52db5f 100644 --- a/src/core/src/package_managers/ZypperPackageManager.py +++ b/src/core/src/package_managers/ZypperPackageManager.py @@ -176,7 +176,7 @@ def __handle_zypper_updated_or_reboot_exit_codes(self, command, out, code): if code == self.zypper_exitcode_zypper_updated or self.zypper_out_zypper_updated_msg in out: self.composite_logger.log_debug( - "One of the installed patches affects the package manager itself. Patch installation run will be repeated.") + " - One of the installed patches affects the package manager itself. Patch installation run will be repeated.") self.set_package_manager_setting(Constants.PACKAGE_MGR_SETTING_REPEAT_PATCH_OPERATION, True) elif code == self.zypper_exitcode_reboot_required: self.composite_logger.log_warning( From b8ce94899e26b51373aa4f522b8b5be1727fe28e Mon Sep 17 00:00:00 2001 From: benank Date: Thu, 9 Jun 2022 11:36:02 -0700 Subject: [PATCH 4/4] Add hyphens --- src/core/src/package_managers/ZypperPackageManager.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/src/package_managers/ZypperPackageManager.py b/src/core/src/package_managers/ZypperPackageManager.py index 0a52db5f..719f629d 100644 --- a/src/core/src/package_managers/ZypperPackageManager.py +++ b/src/core/src/package_managers/ZypperPackageManager.py @@ -170,7 +170,7 @@ def __handle_zypper_updated_or_reboot_exit_codes(self, command, out, code): Does not repeat installation or reboot if it is a dry run. """ if "--dry-run" in command: self.composite_logger.log_debug( - "Exit code {0} detected from command \"{1}\", but it was a dry run. Continuing execution without performing additional actions.".format( + " - Exit code {0} detected from command \"{1}\", but it was a dry run. Continuing execution without performing additional actions.".format( str(code), command)) return @@ -180,7 +180,7 @@ def __handle_zypper_updated_or_reboot_exit_codes(self, command, out, code): self.set_package_manager_setting(Constants.PACKAGE_MGR_SETTING_REPEAT_PATCH_OPERATION, True) elif code == self.zypper_exitcode_reboot_required: self.composite_logger.log_warning( - "Machine requires reboot after patch installation. Setting force_reboot flag to True.") + " - Machine requires reboot after patch installation. Setting force_reboot flag to True.") self.force_reboot = True def modify_upgrade_or_patch_command_to_replacefiles(self, command):