From 34bab9508b5b180b9426e70c78b20d3a760c79a7 Mon Sep 17 00:00:00 2001 From: "Vanathi.Selvaraju" Date: Fri, 26 Apr 2024 12:15:17 -0400 Subject: [PATCH] In-service patch update is rejected excepting node lock. In-service patch update rejects the host install operation expecting the host to be locked before patch install. Test Plan: PASSED: On SX system, perform in-service patch install successfully. Closes-Bug: 2063854 Change-Id: I7ef856c41c6721daa68310666097d65e816056b1 Signed-off-by: Vanathi.Selvaraju --- software/commit_new.txt | 13 +++++++++++++ software/software/software_controller.py | 20 ++++++++++++++++++-- 2 files changed, 31 insertions(+), 2 deletions(-) create mode 100644 software/commit_new.txt diff --git a/software/commit_new.txt b/software/commit_new.txt new file mode 100644 index 00000000..df61ec52 --- /dev/null +++ b/software/commit_new.txt @@ -0,0 +1,13 @@ +Inservice patch update is rejected excepting host lock. + +Inservice patch update is rejected expecting a host lock +to be performed before patch install. + + +Test Plan: +PASSED: On a SX system, perform inservice patch +update successfully. + +Closes-Bug: 2063854 + +Signed-off-by: Vanathi.Selvaraju diff --git a/software/software/software_controller.py b/software/software/software_controller.py index 70b38295..de979884 100644 --- a/software/software/software_controller.py +++ b/software/software/software_controller.py @@ -2736,9 +2736,10 @@ class PatchController(PatchService): # Check if there is a major release deployment in progress # and set agent request parameters accordingly major_release = None - upgrade_in_progress = self.get_software_upgrade() + upgrade_in_progress = self.check_upgrade_in_progress() if upgrade_in_progress: - major_release = upgrade_in_progress["to_release"] + upgrade_release = self.get_software_upgrade() + major_release = upgrade_release["to_release"] force = False async_req = False msg = "Running major release deployment, major_release=%s, force=%s, async_req=%s" % ( @@ -3035,6 +3036,21 @@ class PatchController(PatchService): except Exception as ex: LOG.exception("Failed in handling deploy state sync. Error: %s" % str(ex)) + def check_upgrade_in_progress(self): + """ + Check if major release upgrade is in progress + """ + _upgrade_in_progress = False + all_deploy = self.db_api_instance.get_deploy_all() + deploy = all_deploy[0] + from_release = version.parse(deploy.get("from_release")) + to_release = version.parse(deploy.get("to_release")) + ver_from_rel = from_release.release + ver_to_rel = to_release.release + if (ver_from_rel[0] != ver_to_rel[0] or ver_from_rel[1] != ver_to_rel[1]): + _upgrade_in_progress = True + return _upgrade_in_progress + def _get_software_upgrade(self): """ Get the current software upgrade from/to versions and state