AIO-DX: Controller-1 fails to be unlocked after downgrade

During stx4.0 to stx5.0 upgrade, controller-1 fails to be unlocked
after downgrade due to the incorrect disk partition and physical
volume information stored in stx4.0 DB that causes the puppet
manifest apply failed during unlock.

This is because cgts-vg size is decreased in stx5.0 and after
controller-1 is upgraded to stx5.0, additional partition and pv
are created at stx5.0 side to match the size in stx4.0. However,
controller-0 is still running stx4.0 DB and it gets updated with
the new created partition and pv info sent from controller-1 sysinv
agent audit.

This commit updates to ignore the disk partition and physical volume
information sent back from a different version during upgrade.

Tested:
- AIO-DX upgrade from stx4.0 to stx5.0, verified upgrade is completed
- controller-1 downgrade after it is upgraded and unlocked, verified
  upgrade abort is completed

Change-Id: I5d7858e4b29d096437a5ddf94cd78c74fadfacad
Closes-Bug: 1924786
Signed-off-by: Angie Wang <angie.wang@windriver.com>
(cherry picked from commit a24cd707a5)
This commit is contained in:
Angie Wang 2021-04-16 12:46:52 -04:00
parent 87d6eec528
commit 47a03edc3b
1 changed files with 22 additions and 0 deletions

View File

@ -3767,6 +3767,17 @@ class ConductorManager(service.PeriodicService):
LOG.exception("Invalid ihost_uuid %s" % ihost_uuid) LOG.exception("Invalid ihost_uuid %s" % ihost_uuid)
return return
try:
self.dbapi.software_upgrade_get_one()
except exception.NotFound:
# No upgrade in progress
pass
else:
if db_host.software_load != tsc.SW_VERSION:
LOG.info("Ignore updating disk partition for host: %s. Version "
"%s mismatch." % (db_host.hostname, db_host.software_load))
return
# Get the id of the host. # Get the id of the host.
forihostid = db_host['id'] forihostid = db_host['id']
@ -3958,6 +3969,17 @@ class ConductorManager(service.PeriodicService):
LOG.exception("Invalid ihost_uuid %s" % ihost_uuid) LOG.exception("Invalid ihost_uuid %s" % ihost_uuid)
return return
try:
self.dbapi.software_upgrade_get_one()
except exception.NotFound:
# No upgrade in progress
pass
else:
if ihost.software_load != tsc.SW_VERSION:
LOG.info("Ignore updating physical volume for host: %s. Version "
"%s mismatch." % (ihost.hostname, ihost.software_load))
return
forihostid = ihost['id'] forihostid = ihost['id']
ipvs = self.dbapi.ipv_get_by_ihost(ihost_uuid) ipvs = self.dbapi.ipv_get_by_ihost(ihost_uuid)