diff --git a/tobiko/openstack/neutron/__init__.py b/tobiko/openstack/neutron/__init__.py index b33c97976..6274e9faa 100644 --- a/tobiko/openstack/neutron/__init__.py +++ b/tobiko/openstack/neutron/__init__.py @@ -41,7 +41,7 @@ list_networking_agents = _agent.list_networking_agents skip_if_missing_networking_agents = _agent.skip_if_missing_networking_agents skip_unless_is_ovn = _agent.skip_unless_is_ovn skip_unless_is_ovs = _agent.skip_unless_is_ovs - +skip_if_is_old_ovn = _agent.skip_if_is_old_ovn NeutronClientFixture = _client.NeutronClientFixture ServiceUnavailable = _client.ServiceUnavailable diff --git a/tobiko/openstack/neutron/_agent.py b/tobiko/openstack/neutron/_agent.py index 36d856df1..9f2854ac0 100644 --- a/tobiko/openstack/neutron/_agent.py +++ b/tobiko/openstack/neutron/_agent.py @@ -14,6 +14,7 @@ from __future__ import absolute_import import collections +import re import typing import tobiko @@ -101,9 +102,14 @@ DecoratorType = typing.Callable[[typing.Union[typing.Callable, typing.Type]], typing.Union[typing.Callable, typing.Type]] -def skip_if_missing_networking_agents(binary: typing.Optional[str] = None, - count: int = 1, **params) -> \ - DecoratorType: +AgentBinaryType = typing.Union[str, typing.Pattern[str]] + + +def skip_if_missing_networking_agents( + binary: AgentBinaryType = None, + count: int = 1, + **params) \ + -> DecoratorType: if binary is not None: params['binary'] = binary message = "missing {return_value!r} agent(s)" @@ -115,8 +121,9 @@ def skip_if_missing_networking_agents(binary: typing.Optional[str] = None, def skip_unless_missing_networking_agents( - binary: typing.Optional[str] = None, - count: int = 1, **params) \ + binary: AgentBinaryType = None, + count: int = 1, + **params) \ -> DecoratorType: if binary is not None: params['binary'] = binary @@ -128,6 +135,12 @@ def skip_unless_missing_networking_agents( **params) +def skip_if_is_old_ovn(): + """Skip the test if OVN is not configured""" + binary = re.compile(f'({OPENVSWITCH_AGENT}|{OVN_CONTROLLER})') + return skip_if_missing_networking_agents(binary) + + def skip_unless_is_ovn(): """Skip the test if OVN is not configured""" return skip_unless_missing_networking_agents(OPENVSWITCH_AGENT)