Merge "Keep platform-nfs-ip for upgrade process"

This commit is contained in:
Zuul 2023-03-23 14:10:33 +00:00 committed by Gerrit Code Review
commit c7cc301377
3 changed files with 66 additions and 11 deletions

View File

@ -74,13 +74,6 @@ def _add_nfs_alias_to_hosts_file(connection, to_release):
'in {}'.format(ctrl_mgmt_ip['address'], host_file))
def _remove_nfs_ip_allocation(connection):
with connection.cursor(cursor_factory=DictCursor) as cur:
LOG.info("Del controller-platform-nfs-mgmt from 'addresses' table")
cur.execute("DELETE FROM addresses WHERE "
"name = 'controller-platform-nfs-mgmt';")
def main():
action = None
from_release = None
@ -110,7 +103,6 @@ def main():
conn = psycopg2.connect("dbname=sysinv user=postgres")
try:
_add_nfs_alias_to_hosts_file(conn, to_release)
_remove_nfs_ip_allocation(conn)
except psycopg2.Error as ex:
LOG.exception(ex)
@ -121,10 +113,9 @@ def main():
LOG.warning("Exception")
res = 1
else:
LOG.info("committing changes into database")
conn.commit()
LOG.info("controller-platform-nfs alias updated")
finally:
LOG.info("Closing connection")
LOG.info("Closing DB connection")
conn.close()
return res

View File

@ -7491,6 +7491,37 @@ class ConductorManager(service.PeriodicService):
}
self._config_apply_runtime_manifest(context, config_uuid, config_dict)
# TODO: update_platform_nfs_ip_references is just necessary to allow an upgrade
# from StarlingX releases 6 or 7 to new releases.
# remove it when StarlingX rel. 6 or 7 are not being used anymore
def update_platform_nfs_ip_references(self, context):
"""Update platform nfs ip references during upgrade"""
address_name = cutils.format_address_name('controller-platform-nfs',
constants.NETWORK_TYPE_MGMT)
if not cutils.is_aio_simplex_system(self.dbapi):
personalities = [constants.CONTROLLER]
config_uuid = self._config_update_hosts(context, personalities)
config_dict = {
"personalities": personalities,
"classes": ['platform::network::update_platform_nfs_ip_references'],
}
self._config_apply_runtime_manifest(context, config_uuid, config_dict)
try:
# remove IP address from DB
address_uuid = self.dbapi.address_get_by_name(address_name).uuid
self.dbapi.address_destroy(address_uuid)
except exception.AddressNotFoundByName:
LOG.info("exception: AddressNotFoundByName: {}".format(address_name))
except exception.AddressNotFound:
LOG.info("exception: AddressNotFound: {}".format(address_name))
except Exception as e:
LOG.exception(e)
LOG.error("exception: address: {} could not be deleted".format(address_name))
def update_clock_synchronization_config(self, context, host):
"""Update clock_synchronization configuration of a host"""
personalities = [host.get('personality')]
@ -12442,6 +12473,22 @@ class ConductorManager(service.PeriodicService):
upgrade.uuid,
{'state': constants.UPGRADE_ACTIVATION_FAILED})
# Remove platform-nfs-ip references if it exists
# TODO: platform-nfs-ip is just necessary to allow an upgrade from StarlingX
# releases 6 or 7 to new releases.
# remove the plat_nfs_address_name and update_platform_nfs_ip_references when
# StarlingX rel. 6 or 7 are not being used anymore
plat_nfs_address_name = cutils.format_address_name("controller-platform-nfs",
constants.NETWORK_TYPE_MGMT)
try:
self.dbapi.address_get_by_name(plat_nfs_address_name)
LOG.info("platform-nfs-ip exists in the DB, updating all references")
self.update_platform_nfs_ip_references(context)
except exception.AddressNotFoundByName:
LOG.debug("activate_upgrade: {} does not exist".format(plat_nfs_address_name))
manifests_applied = False
if manifests_applied:

View File

@ -60,6 +60,23 @@ class NetworkingPuppet(base.BasePuppet):
gateway_address,
})
# TODO: platform-nfs-iaddress is just necessary to allow an upgrade
# from StarlingX releases 6 or 7 to new releases.
# remove it when StarlingX rel. 6 or 7 are not being used anymore
# During the upgrade If platform-nfs-ip is still available in the DB,
# add it to the config to allow downgrade if something goes wrong
try:
platform_nfs_address = self._get_address_by_name(
'controller-platform-nfs', networktype).address
except exception.AddressNotFoundByName:
platform_nfs_address = None
if platform_nfs_address is not None:
config.update({
'platform::network::%s::params::platform_nfs_address' % networktype:
platform_nfs_address,
})
return config
def _get_cluster_network_config(self):