Merge "Clear host config_target on upgrade migration"
This commit is contained in:
commit
f755b2efd4
63
controllerconfig/controllerconfig/upgrade-scripts/97-reset-config-target.py
Executable file
63
controllerconfig/controllerconfig/upgrade-scripts/97-reset-config-target.py
Executable 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())
|
@ -5225,7 +5225,8 @@ class ConductorManager(service.PeriodicService):
|
||||
|
||||
if upgrade.state == constants.UPGRADE_ACTIVATING_HOSTS:
|
||||
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:
|
||||
LOG.info("Manifests applied. Upgrade activation complete.")
|
||||
self.dbapi.software_upgrade_update(
|
||||
|
Loading…
x
Reference in New Issue
Block a user