From df69d47adbb76fd4547b69149663b04b6a963b78 Mon Sep 17 00:00:00 2001 From: Slawek Kaplonski Date: Thu, 11 Mar 2021 14:55:23 +0100 Subject: [PATCH] Fix ovn metadata service name in Devstack deployment Since OVN driver was moved to the Neutron repo, sevice for ovn-metadata-agent is called 'neutron-ovn-metadata-agent' instead of old 'networking-ovn-metadata-agent'. This patch makes Tobiko faults tests aware of it so it can works fine in both cases. Change-Id: I961745f5610e3793bfb272451269259661498dc9 --- tobiko/openstack/neutron/__init__.py | 1 + tobiko/openstack/neutron/_agent.py | 5 +++++ tobiko/openstack/topology/_topology.py | 1 + tobiko/tests/faults/neutron/test_agents.py | 10 +++++++++- 4 files changed, 16 insertions(+), 1 deletion(-) diff --git a/tobiko/openstack/neutron/__init__.py b/tobiko/openstack/neutron/__init__.py index 7f3be945a..e4572eb34 100644 --- a/tobiko/openstack/neutron/__init__.py +++ b/tobiko/openstack/neutron/__init__.py @@ -29,6 +29,7 @@ METADATA_AGENT = _agent.METADATA_AGENT OPENVSWITCH_AGENT = _agent.OPENVSWITCH_AGENT OVN_CONTROLLER = _agent.OVN_CONTROLLER OVN_METADATA_AGENT = _agent.OVN_METADATA_AGENT +NEUTRON_OVN_METADATA_AGENT = _agent.NEUTRON_OVN_METADATA_AGENT AgentNotFoundOnHost = _agent.AgentNotFoundOnHost skip_if_missing_networking_agents = _agent.skip_if_missing_networking_agents skip_unless_is_ovn = _agent.skip_unless_is_ovn diff --git a/tobiko/openstack/neutron/_agent.py b/tobiko/openstack/neutron/_agent.py index f9703813f..b65ffe122 100644 --- a/tobiko/openstack/neutron/_agent.py +++ b/tobiko/openstack/neutron/_agent.py @@ -25,7 +25,12 @@ L3_AGENT = 'neutron-l3-agent' METADATA_AGENT = 'neutron-metadata-agent' OPENVSWITCH_AGENT = 'neutron-openvswitch-agent' OVN_CONTROLLER = 'ovn-controller' +# NOTE(slaweq) name 'networking-ovn-metadata-agent' was used up to stable/train +# release when ovn driver was stadium project, +# Since stable/ussuri, when driver was included in the Neutron repo, it is +# called 'neutron-ovn-metadata-agent' OVN_METADATA_AGENT = 'networking-ovn-metadata-agent' +NEUTRON_OVN_METADATA_AGENT = 'neutron-ovn-metadata-agent' class AgentNotFoundOnHost(tobiko.TobikoException): diff --git a/tobiko/openstack/topology/_topology.py b/tobiko/openstack/topology/_topology.py index 84cf92278..791c331e4 100644 --- a/tobiko/openstack/topology/_topology.py +++ b/tobiko/openstack/topology/_topology.py @@ -185,6 +185,7 @@ class OpenStackTopology(tobiko.SharedFixture): neutron.OPENVSWITCH_AGENT: 'devstack@q-agt', neutron.METADATA_AGENT: 'devstack@q-meta', neutron.OVN_METADATA_AGENT: 'devstack@q-ovn-metadata-agent', + neutron.NEUTRON_OVN_METADATA_AGENT: 'devstack@q-ovn-metadata-agent', neutron.OVN_CONTROLLER: 'ovn-controller' } agent_to_container_name_mappings: typing.Dict[str, str] = {} diff --git a/tobiko/tests/faults/neutron/test_agents.py b/tobiko/tests/faults/neutron/test_agents.py index 997305ea6..437fa3453 100644 --- a/tobiko/tests/faults/neutron/test_agents.py +++ b/tobiko/tests/faults/neutron/test_agents.py @@ -749,12 +749,20 @@ class MetadataAgentTest(BaseAgentTest): # Search for the corresponding container instead of the networking agent class OvnMetadataAgentTest(MetadataAgentTest): - agent_name = neutron.OVN_METADATA_AGENT + agent_name = neutron.NEUTRON_OVN_METADATA_AGENT def setUp(self): self.get_ovn_agents_from_containers() super(OvnMetadataAgentTest, self).setUp() + @classmethod + def setUpClass(cls): + super(OvnMetadataAgentTest, cls).setUpClass() + if not cls.agents: + # Let's check if that is maybe older version with networking-ovn + cls.agents: AgentListType = neutron.list_networking_agents( + binary=neutron.OVN_METADATA_AGENT) + def parse_http_status(curl_output: str) -> int: http_head = curl_output.split('\n', 1)[0]