Merge "Clear host config_target on upgrade migration"

This commit is contained in:
Zuul 2021-05-04 15:40:25 +00:00 committed by Gerrit Code Review
commit f755b2efd4
2 changed files with 65 additions and 1 deletions

View File

@ -0,0 +1,63 @@
#!/usr/bin/env python
# Copyright (c) 2021 Wind River Systems, Inc.
#
# SPDX-License-Identifier: Apache-2.0
#
# This script will clear the host config target.
# This is required in order to ensure tracking is aligned with config
# requests in N+1 release and not due to potential stale configuration
# from N release.
import psycopg2
import sys
from psycopg2.extras import RealDictCursor
from controllerconfig.common import log
LOG = log.get_logger(__name__)
def main():
action = None
from_release = None
to_release = None
arg = 1
while arg < len(sys.argv):
if arg == 1:
from_release = sys.argv[arg]
elif arg == 2:
to_release = sys.argv[arg] # noqa
elif arg == 3:
action = sys.argv[arg]
else:
print ("Invalid option %s." % sys.argv[arg])
return 1
arg += 1
log.configure()
LOG.debug("%s invoked with from_release = %s to_release = %s action = %s"
% (sys.argv[0], from_release, to_release, action))
# This host table data migration will likely be required for each release
if action == "migrate":
try:
reset_config_target()
except Exception as ex:
LOG.exception(ex)
return 1
def reset_config_target():
conn = psycopg2.connect("dbname=sysinv user=postgres")
with conn:
with conn.cursor(cursor_factory=RealDictCursor) as cur:
cur.execute("update i_host set config_target=NULL where "
"recordtype!='profile'",)
LOG.info("Reset host config_target completed")
if __name__ == "__main__":
sys.exit(main())

View File

@ -5225,7 +5225,8 @@ class ConductorManager(service.PeriodicService):
if upgrade.state == constants.UPGRADE_ACTIVATING_HOSTS: if upgrade.state == constants.UPGRADE_ACTIVATING_HOSTS:
hosts = self.dbapi.ihost_get_list() hosts = self.dbapi.ihost_get_list()
out_of_date_hosts = [host for host in hosts if host.config_target != host.config_applied] out_of_date_hosts = [host for host in hosts
if host.config_target and host.config_target != host.config_applied]
if not out_of_date_hosts: if not out_of_date_hosts:
LOG.info("Manifests applied. Upgrade activation complete.") LOG.info("Manifests applied. Upgrade activation complete.")
self.dbapi.software_upgrade_update( self.dbapi.software_upgrade_update(