Fix faults tests when External LB is configured
Tobiko faults tests that depend on the Main VIP resource configured should be skipped because this resource is not created when an External LB is used. Disabling the haproxy resource should be skipped because that resource does not exist then an External LB is used. Change-Id: Ic20fa2f321989aa4c49aeff8b4e01b2025bd4160
This commit is contained in:
parent
2ad24dd2f0
commit
75939feb20
|
@ -27,6 +27,7 @@ import netaddr
|
|||
from oslo_log import log
|
||||
|
||||
import tobiko
|
||||
from tobiko import config
|
||||
from tobiko.openstack import glance
|
||||
from tobiko.openstack import keystone
|
||||
from tobiko.openstack import neutron
|
||||
|
@ -42,6 +43,8 @@ from tobiko.tripleo import pacemaker
|
|||
from tobiko.tripleo import topology as tripleo_topology
|
||||
from tobiko import tripleo
|
||||
|
||||
|
||||
CONF = config.CONF
|
||||
LOG = log.getLogger(__name__)
|
||||
|
||||
network_disruption = """
|
||||
|
@ -549,19 +552,26 @@ def remove_one_grastate_galera():
|
|||
else:
|
||||
nodes = topology.list_openstack_nodes(group='controller')
|
||||
node = random.choice(nodes)
|
||||
LOG.info(f'disable {pacemaker.HAPROXY_RESOURCE}')
|
||||
if f"resource '{pacemaker.HAPROXY_RESOURCE}' is not running on any node" \
|
||||
not in pacemaker.run_pcs_resource_operation(
|
||||
pacemaker.HAPROXY_RESOURCE,
|
||||
pacemaker.DISABLE,
|
||||
node.ssh_client,
|
||||
operation_wait=30):
|
||||
raise PcsDisableException()
|
||||
LOG.info('shut down {} on all servers: {}'.format(
|
||||
pacemaker.GALERA_RESOURCE, nodes))
|
||||
if f"resource '{pacemaker.GALERA_RESOURCE}' is not running on any node" \
|
||||
not in pacemaker.run_pcs_resource_operation(
|
||||
pacemaker.GALERA_RESOURCE,
|
||||
|
||||
pcs_haproxy = pacemaker.HAPROXY_RESOURCE
|
||||
pcs_galera = pacemaker.GALERA_RESOURCE
|
||||
|
||||
if not CONF.tobiko.tripleo.has_external_load_balancer:
|
||||
LOG.info(f'disable {pcs_haproxy}')
|
||||
if f"resource '{pcs_haproxy}' is not running on any node" not in \
|
||||
pacemaker.run_pcs_resource_operation(
|
||||
pcs_haproxy,
|
||||
pacemaker.DISABLE,
|
||||
node.ssh_client,
|
||||
operation_wait=30):
|
||||
raise PcsDisableException()
|
||||
else:
|
||||
LOG.debug(f'With Ext LB setups, {pcs_haproxy} is not deployed')
|
||||
|
||||
LOG.info('shut down {} on all servers: {}'.format(pcs_galera, nodes))
|
||||
if f"resource '{pcs_galera}' is not running on any node" not in \
|
||||
pacemaker.run_pcs_resource_operation(
|
||||
pcs_galera,
|
||||
pacemaker.DISABLE,
|
||||
node.ssh_client):
|
||||
raise PcsDisableException()
|
||||
|
@ -569,23 +579,27 @@ def remove_one_grastate_galera():
|
|||
node.name))
|
||||
sh.execute(remove_grastate, ssh_client=node.ssh_client)
|
||||
|
||||
LOG.info('enable back {} on all servers: {}'.format(
|
||||
pacemaker.GALERA_RESOURCE, nodes))
|
||||
LOG.info('enable back {} on all servers: {}'.format(pcs_galera, nodes))
|
||||
if topology.verify_osp_version('17.0', lower=True):
|
||||
promoted = "master"
|
||||
else:
|
||||
promoted = "promoted"
|
||||
if f"resource '{pacemaker.GALERA_RESOURCE}' is {promoted} on node" not in \
|
||||
if f"resource '{pcs_galera}' is {promoted} on node" not in \
|
||||
pacemaker.run_pcs_resource_operation(
|
||||
pacemaker.GALERA_RESOURCE, pacemaker.ENABLE, node.ssh_client,
|
||||
pcs_galera, pacemaker.ENABLE, node.ssh_client,
|
||||
operation_wait=90):
|
||||
raise PcsEnableException()
|
||||
LOG.info(f'enable {pacemaker.HAPROXY_RESOURCE}')
|
||||
if f"resource '{pacemaker.HAPROXY_RESOURCE}' is running on node" not in \
|
||||
pacemaker.run_pcs_resource_operation(pacemaker.HAPROXY_RESOURCE,
|
||||
pacemaker.ENABLE,
|
||||
node.ssh_client):
|
||||
raise PcsEnableException()
|
||||
|
||||
if not CONF.tobiko.tripleo.has_external_load_balancer:
|
||||
LOG.info(f'enable {pcs_haproxy}')
|
||||
if f"resource '{pcs_haproxy}' is running on node" not in \
|
||||
pacemaker.run_pcs_resource_operation(pcs_haproxy,
|
||||
pacemaker.ENABLE,
|
||||
node.ssh_client):
|
||||
raise PcsEnableException()
|
||||
else:
|
||||
LOG.debug(f'With Ext LB setups, {pcs_haproxy} is not deployed')
|
||||
|
||||
# gcomm:// without args means that bootstrap is done from this node
|
||||
bootstrap = sh.execute(check_bootstrap, ssh_client=node.ssh_client).stdout
|
||||
if re.search('wsrep-cluster-address=gcomm://', bootstrap) is None:
|
||||
|
|
|
@ -22,6 +22,7 @@ from oslo_log import log
|
|||
import testtools
|
||||
|
||||
import tobiko
|
||||
from tobiko import config
|
||||
from tobiko.openstack import neutron
|
||||
from tobiko.openstack import nova as nova_osp
|
||||
from tobiko.openstack import topology
|
||||
|
@ -35,7 +36,11 @@ from tobiko.tripleo import overcloud
|
|||
from tobiko.tripleo import undercloud
|
||||
|
||||
|
||||
CONF = config.CONF
|
||||
LOG = log.getLogger(__name__)
|
||||
SKIP_MESSAGE_EXTLB = ('Tests requiring a main VIP should be skipped when an '
|
||||
'external load balancer is used')
|
||||
has_external_lb = CONF.tobiko.tripleo.has_external_load_balancer
|
||||
|
||||
|
||||
def overcloud_health_checks(passive_checks_only=False,
|
||||
|
@ -169,6 +174,7 @@ class DisruptTripleoNodesTest(testtools.TestCase):
|
|||
except nova_osp.ServerNotFoundError:
|
||||
LOG.debug(f"Server {vm_id} not found")
|
||||
|
||||
@testtools.skipIf(has_external_lb, SKIP_MESSAGE_EXTLB)
|
||||
def test_z99_reboot_controller_galera_main_vip(self):
|
||||
# This test case may fail at times if RHBZ#2124877 is not resolved
|
||||
# but that bug is due to a race condition,
|
||||
|
@ -182,28 +188,33 @@ class DisruptTripleoNodesTest(testtools.TestCase):
|
|||
cloud_disruptions.check_no_duplicate_ips(
|
||||
self.vms_detailed_info, ports_before_stack_creation)
|
||||
|
||||
@testtools.skipIf(has_external_lb, SKIP_MESSAGE_EXTLB)
|
||||
def test_z99_reboot_controller_main_vip(self):
|
||||
OvercloudHealthCheck.run_before()
|
||||
cloud_disruptions.reset_controller_main_vip()
|
||||
OvercloudHealthCheck.run_after()
|
||||
|
||||
@testtools.skipIf(has_external_lb, SKIP_MESSAGE_EXTLB)
|
||||
def test_z99_reboot_controller_non_main_vip(self):
|
||||
OvercloudHealthCheck.run_before()
|
||||
cloud_disruptions.reset_controllers_non_main_vip()
|
||||
OvercloudHealthCheck.run_after()
|
||||
|
||||
@testtools.skipIf(has_external_lb, SKIP_MESSAGE_EXTLB)
|
||||
def test_z99_crash_controller_main_vip(self):
|
||||
OvercloudHealthCheck.run_before()
|
||||
cloud_disruptions.crash_controller_main_vip()
|
||||
OvercloudHealthCheck.run_after()
|
||||
|
||||
@overcloud.skip_unless_kexec_tools_installed
|
||||
@testtools.skipIf(has_external_lb, SKIP_MESSAGE_EXTLB)
|
||||
def test_z99_crash_controller_non_main_vip(self):
|
||||
OvercloudHealthCheck.run_before()
|
||||
cloud_disruptions.crash_controllers_non_main_vip()
|
||||
OvercloudHealthCheck.run_after()
|
||||
|
||||
@pacemaker.skip_if_fencing_not_deployed
|
||||
@testtools.skipIf(has_external_lb, SKIP_MESSAGE_EXTLB)
|
||||
def test_network_disruptor_main_vip(self):
|
||||
OvercloudHealthCheck.run_before()
|
||||
cloud_disruptions.network_disrupt_controller_main_vip()
|
||||
|
|
Loading…
Reference in New Issue