Enable v2 protocol once monitors are upgraded

In Ceph Nautilus release, there is a new feature called msgr2 (V2
protocol).
Once all monitors are upgraded, a ceph alarm is raised, requesting
msgr2 to be enabled and this is done as part of the method that
audits the upgrade.

Testing performed:
- Upgrade of 2+2+2
- Upgrade of AIO-DX
- Upgrade of AIO-SX
- Fresh install of AIO-SX
- Fresh install of AIO-DX
- Fresh install of 2+2

Depends-on: https://review.opendev.org/c/starlingx/utilities/+/817504
Story: 2009074
Task: 43944

Signed-off-by: Vinicius Lopes da Silva <vinicius.lopesdasilva@windriver.com>
Change-Id: Ibe112ad51177aee95fa990caf81bd9a376a9f0af
This commit is contained in:
Vinicius Lopes da Silva 2021-11-10 22:42:01 -03:00
parent 5bcd7b22da
commit 9ca3d86f67
1 changed files with 30 additions and 0 deletions

View File

@ -5727,6 +5727,36 @@ class ConductorManager(service.PeriodicService):
vim_api.set_vim_upgrade_state(controller_0, False)
except Exception:
LOG.exception("Unable to set VIM upgrade state to False")
elif upgrade.state == constants.UPGRADE_UPGRADING_HOSTS:
# As part of a 3-host Ceph monitor quorum, over a platform upgrade
# we may need to take action once all monitors are running
ceph_storage_backend = StorageBackendConfig.get_backend(
self.dbapi,
constants.SB_TYPE_CEPH
)
if ceph_storage_backend:
monitor_list = self.dbapi.ceph_mon_get_list()
LOG.info("Ceph Upgrade: Checking monitor states")
for mon in monitor_list:
host = self.dbapi.ihost_get(mon.forihostid)
host_upgrade = self.dbapi.host_upgrade_get(host.id)
host_load = self.dbapi.load_get(host_upgrade.software_load)
if host_load.software_version != upgrade.to_release:
LOG.info("Ceph Upgrade: Monitor %s is not upgraded to %s" %
(mon.hostname, upgrade.to_release))
return
mon_config_target = host.config_target
mon_config_applied = host.config_applied
if mon_config_target and mon_config_target != mon_config_applied:
LOG.info("Ceph Upgrade: Monitor %s has not applied the "
"latest configuration changes" % mon.hostname)
return
LOG.info("Ceph Upgrade: Enabling monitor msgr2")
self._ceph_api.enable_msgr2()
LOG.info("Ceph Upgrade: Enabled monitor msgr2")
def _audit_install_states(self, hosts):
# A node could shutdown during it's installation and the install_state