Fix overcloud_health_checks on OSP17

This patch fixes several issues affecting OSP17 when faults/ha tests
are executed:
1) nova_libvirt container is renamed to nova_virtqemud
2) ovn_l3_mode is deprecated from neutron configuration
3) ovn dbs resources status names changes from Master/Slave to
   Promoted/Unpromoted

Change-Id: I21237ff96f766fb9e36a4f7cbe458343c1dcf15a
This commit is contained in:
Eduardo Olivares 2022-07-04 18:22:16 +02:00
parent 8d3e0374c6
commit 6eaeb1b995
4 changed files with 33 additions and 14 deletions
tobiko

@ -15,6 +15,7 @@ from __future__ import absolute_import
import collections import collections
from collections import abc from collections import abc
import functools
import re import re
import typing import typing
from urllib import parse from urllib import parse
@ -648,6 +649,9 @@ def get_nova_version_from_container():
pass pass
# During a execution of tobiko, openstack version does not change, so let's
# cache the output of this function
@functools.lru_cache()
def get_openstack_version(): def get_openstack_version():
try: try:
return get_rhosp_version() return get_rhosp_version()

@ -263,10 +263,18 @@ def assert_containers_running(group, expected_containers, full_name=True,
return True return True
def get_libvirt_container_name():
if topology.verify_osp_version('17.0', lower=True):
return 'nova_libvirt'
else:
return 'nova_virtqemud'
def assert_all_tripleo_containers_running(): def assert_all_tripleo_containers_running():
"""check that all common tripleo containers are running """check that all common tripleo containers are running
param: group controller or compute , check containers param: group controller or compute , check containers
sets in computes or controllers""" sets in computes or controllers"""
nova_libvirt = get_libvirt_container_name()
common_controller_tripleo_containers = ['cinder_api', 'cinder_api_cron', common_controller_tripleo_containers = ['cinder_api', 'cinder_api_cron',
'cinder_scheduler', 'cinder_scheduler',
@ -313,7 +321,7 @@ def assert_all_tripleo_containers_running():
'nova_vnc_proxy'] 'nova_vnc_proxy']
common_compute_tripleo_containers = ['iscsid', 'logrotate_crond', common_compute_tripleo_containers = ['iscsid', 'logrotate_crond',
'nova_compute', 'nova_libvirt', 'nova_compute', nova_libvirt,
'nova_migration_target', 'nova_migration_target',
'nova_virtlogd'] 'nova_virtlogd']
@ -391,9 +399,6 @@ def run_container_config_validations():
{'section': 'ml2', {'section': 'ml2',
'param': 'type_drivers', 'param': 'type_drivers',
'expected_value': 'geneve'}, 'expected_value': 'geneve'},
{'section': 'ovn',
'param': 'ovn_l3_mode',
'expected_value': 'True'},
{'section': 'ovn', {'section': 'ovn',
'param': 'ovn_metadata_enabled', 'param': 'ovn_metadata_enabled',
'expected_value': 'True'}]}] 'expected_value': 'True'}]}]

@ -199,7 +199,8 @@ def check_vm_running_via_virsh(topology_compute, vm_id):
def get_vm_uuid_list_running_via_virsh(topology_compute): def get_vm_uuid_list_running_via_virsh(topology_compute):
if overcloud.has_overcloud(): if overcloud.has_overcloud():
container_runtime = containers.get_container_runtime_name() container_runtime = containers.get_container_runtime_name()
command = f"sudo {container_runtime} exec nova_libvirt " \ nova_libvirt = containers.get_libvirt_container_name()
command = f"sudo {container_runtime} exec {nova_libvirt} " \
f"sh -c 'for i in `virsh list --name --state-running` " \ f"sh -c 'for i in `virsh list --name --state-running` " \
f";do virsh domuuid $i;done'" f";do virsh domuuid $i;done'"
else: else:

@ -78,20 +78,27 @@ def get_pcs_resources_table(timeout=720, interval=2) -> pandas.DataFrame:
return table return table
def get_pcs_prefix_and_status_values():
if topology.verify_osp_version('17.0', lower=True):
ocf_prefix = "ocf::"
promoted_status_str = "Master"
unpromoted_status_str = "Slave"
else:
ocf_prefix = "ocf:"
promoted_status_str = "Promoted"
unpromoted_status_str = "Unpromoted"
return ocf_prefix, promoted_status_str, unpromoted_status_str
class PacemakerResourcesStatus(object): class PacemakerResourcesStatus(object):
""" """
class to handle pcs resources checks class to handle pcs resources checks
""" """
def __init__(self): def __init__(self):
self.pcs_df = get_pcs_resources_table() self.pcs_df = get_pcs_resources_table()
if topology.verify_osp_version('17.0', lower=True): (self.ocf_prefix,
self.ocf_prefix = "ocf::" self.promoted_status_str,
self.promoted_status_str = "Master" self.unpromoted_status_str) = get_pcs_prefix_and_status_values()
self.unpromoted_status_str = "Slave"
else:
self.ocf_prefix = "ocf:"
self.promoted_status_str = "Promoted"
self.unpromoted_status_str = "Unpromoted"
def container_runtime(self): def container_runtime(self):
@ -280,8 +287,10 @@ def get_resource_master_node(resource_type=None):
def get_ovn_db_master_node(): def get_ovn_db_master_node():
ocf_prefix, promoted_status_str, _ = get_pcs_prefix_and_status_values()
return get_overcloud_nodes_running_pcs_resource( return get_overcloud_nodes_running_pcs_resource(
resource_type='(ocf::ovn:ovndb-servers):', resource_state='Master') resource_type=f'({ocf_prefix}ovn:ovndb-servers):',
resource_state=promoted_status_str)
def get_overcloud_resource(resource_type=None, def get_overcloud_resource(resource_type=None,