Merge "Place VMs on different computes in MTU tests"

This commit is contained in:
Zuul
2025-07-21 15:37:29 +00:00
committed by Gerrit Code Review
4 changed files with 64 additions and 29 deletions

View File

@@ -1052,6 +1052,52 @@ class BaseTempestWhiteboxTestCase(base.BaseTempestTestCase):
LOG.debug('Command for resource creation succeeded')
return _id
@classmethod
def is_vlan_tenant_enabled(cls, msg='', skip_if_fails=False):
if cls.is_devstack:
for node in cls.nodes:
if not node['is_controller']:
continue
if not cls.check_service_setting(
host=node, service='',
config_files=[cls.neutron_conf],
section='ml2', param='tenant_network_types',
value='vlan', msg=msg, skip_if_fails=skip_if_fails):
return False
return True
return cls.check_service_setting(
{'client': cls.proxy_host_client},
config_files=cls.get_configs_of_service(), section='ml2',
param='tenant_network_types', value='vlan', msg=msg,
skip_if_fails=skip_if_fails)
@classmethod
def is_dvr_ovn_enabled(cls, msg='', skip_if_fails=False):
if cls.is_devstack:
for node in cls.nodes:
if not node['is_controller']:
continue
if not cls.check_service_setting(
host=node, service='', config_files=[cls.neutron_conf],
param='enable_dvr', msg=msg, skip_if_fails=skip_if_fails
) or not cls.check_service_setting(
host=node, service='', config_files=[cls.neutron_conf],
param='router_distributed', msg=msg,
skip_if_fails=skip_if_fails
) or not cls.check_service_setting(
host=node, service='',
config_files=[WB_CONF.ml2_plugin_config],
section='ovn', param='enable_distributed_floating_ip',
msg=msg, skip_if_fails=skip_if_fails
):
return False
return True
return cls.check_service_setting(
{'client': cls.proxy_host_client},
config_files=cls.get_configs_of_service(), section='ovn',
param='enable_distributed_floating_ip',
skip_if_fails=skip_if_fails)
class BaseTempestTestCaseAdvanced(BaseTempestWhiteboxTestCase):
"""Base class skips test suites unless advanced image is available,

View File

@@ -52,31 +52,11 @@ class OvnDvrBase(base.TrafficFlowTest, base.BaseTempestTestCaseOvn):
raise cls.skipException(
"The tests require environment with at least 2 nodes")
cls.bgp_expose_tenant_networks = False
for node in cls.nodes:
if cls.is_devstack:
if not node['is_controller']:
continue
cls.check_service_setting(
host=node, service='',
config_files=[cls.neutron_conf],
param='enable_dvr')
cls.check_service_setting(
host=node, service='',
config_files=[cls.neutron_conf],
param='router_distributed')
cls.check_service_setting(
host=node, service='',
config_files=[WB_CONF.ml2_plugin_config],
section='ovn', param='enable_distributed_floating_ip')
# TODO(rsafrono) add code that defines
# cls.bgp_expose_tenant_networks on devstack
# in case such bgp environment will be ever created
cls.is_dvr_ovn_enabled(msg=msg, skip_if_fails=True)
# TODO(rsafrono) add code that defines
# cls.bgp_expose_tenant_networks on devstack
# in case such bgp environment will be ever created
if not cls.is_devstack:
config_files = cls.get_configs_of_service()
cls.check_service_setting(
{'client': cls.proxy_host_client},
config_files=config_files, section='ovn',
param='enable_distributed_floating_ip', msg=msg)
if WB_CONF.bgp:
for node in cls.nodes:
if node['is_networker'] and not node['is_controller']:

View File

@@ -161,11 +161,23 @@ class GatewayMtuTest(base.TrafficFlowTest, base.BaseTempestTestCaseOvn):
self.local_client = ext_vm_ssh_client
# We'll use the default self.server as a proxy for no-FIP scenario
self.server = self._create_server()
# TODO(rxiao): Temporary workaround for known issue with DVR + VLAN
# tenant network. Place proxy server `server` and test server
# `test_server` on a different compute than the external server
# `ext_vm`. Remove the if block and keep only the else path once
# OSPRH-17095 is resolved.
if (not self.is_devstack and not self.is_setup_single_compute() and
self.is_vlan_tenant_enabled() and self.is_dvr_ovn_enabled()):
different_host = {'different_host': [ext_vm['server']['id']]}
self.server = self._create_server(scheduler_hints=different_host)
self.test_server = self._create_server(
create_floating_ip=False, scheduler_hints=different_host)
else:
self.server = self._create_server()
self.test_server = self._create_server(create_floating_ip=False)
server_ssh_client = ssh.Client(
self.server['fip']['floating_ip_address'],
self.username, pkey=self.keypair['private_key'])
self.test_server = self._create_server(create_floating_ip=False)
test_server_ip = self.test_server['port']['fixed_ips'][0]['ip_address']
self.test_server_client = ssh.Client(
test_server_ip, self.username,

View File

@@ -30,7 +30,6 @@
(^whitebox_neutron_tempest_plugin.tests.scenario.test_router_flavors)|\
(^whitebox_neutron_tempest_plugin.tests.scenario.test_security_group_logging)|\
(^whitebox_neutron_tempest_plugin.tests.scenario.test_l3ha_ovn)|\
(^whitebox_neutron_tempest_plugin.tests.scenario.test_mtu)|\
(test_multicast.*restart)|\
(test_multicast.*ext*)|\
(^whitebox_neutron_tempest_plugin.*test_qos_user_policies)|\
@@ -434,8 +433,6 @@
service_providers:
service_provider: "L3_ROUTER_NAT:user-defined:neutron.services.ovn_l3.service_providers.user_defined.UserDefined"
tempest_concurrency: 1
# (rsafrono) whitebox_neutron_tempest_plugin.tests.scenario.test_mtu are not enabled on devstack
# due to https://bugs.launchpad.net/neutron/+bug/2060828
tempest_test_regex: "\
(^whitebox_neutron_tempest_plugin.tests.scenario.test_metadata_rate_limiting)|\
(^whitebox_neutron_tempest_plugin.tests.scenario.test_router_flavors)|\