Fix test_overcloud_processes_running on OSP17

Some process names have been changed in the latest OSP release and the
test needs to be adapted to those changes
In case of redis, it is not deployed by default, unless other services
requiring it are deployed

Change-Id: I543d0954b882985a3c2fd3659187c8907dba3cfc
This commit is contained in:
Eduardo Olivares 2022-07-01 17:30:42 +02:00
parent 079c894bf1
commit e9e6729f7c
2 changed files with 31 additions and 1 deletions

View File

@ -23,6 +23,7 @@ from tobiko import config
from tobiko.openstack import keystone
from tobiko.openstack import ironic
from tobiko.openstack import nova
from tobiko.openstack import topology
from tobiko.shell import sh
from tobiko.shell import ssh
from tobiko.tripleo import _undercloud
@ -243,3 +244,14 @@ def get_overcloud_nodes_dataframe(oc_node_df_function):
node_name in oc_nodes_names]
oc_procs_df = pandas.concat(oc_nodes_dfs, ignore_index=True)
return oc_procs_df
def is_redis_expected():
if topology.verify_osp_version('17.0', lower=True):
return True
services_requiring_redis = (
'designate', 'octavia', 'ceilometer', 'gnocchi', 'panko')
for service in services_requiring_redis:
if keystone.has_service(name=service):
return True
return False

View File

@ -127,7 +127,6 @@ class OvercloudProcessesStatus(object):
Checks that the oc_procs_df dataframe has all of the list procs
:return: Bool
"""
for attempt_number in range(600):
try:
@ -138,6 +137,25 @@ class OvercloudProcessesStatus(object):
self.oc_procs_df.query('PROCESS=="{}"'.format(
process_name)).empty:
process_name = 'neutron-server:'
# osp17 mysqld process name is mysqld_safe
if process_name == 'mysqld' and \
self.oc_procs_df.query('PROCESS=="{}"'.format(
process_name)).empty:
process_name = 'mysqld_safe'
# redis not deployed on osp17 by default, only if some
# other services such as designate and octavia are deployed
if (process_name == 'redis-server' and
not overcloud.is_redis_expected()):
redis_message = ("redis-server not expected on OSP 17 "
"and later releases by default")
if self.oc_procs_df.query(
f'PROCESS=="{process_name}"').empty:
LOG.info(redis_message)
continue
else:
raise OvercloudProcessesException(
process_error=redis_message)
if not self.oc_procs_df.query('PROCESS=="{}"'.format(
process_name)).empty:
LOG.info("overcloud processes status checks: "