Merge "Clear host config_target on upgrade migration"
This commit is contained in:
commit
f755b2efd4
|
@ -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:
|
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(
|
||||||
|
|
Loading…
Reference in New Issue