[OVN] Try to bind ports only to the ovn-controller agents
Patch [1] added getting ovn agents from the agents cache and check if agent is alive to bound port to it. Small issue with it was that it could check e.g. ovn metadata agent from the host as it was only filtering agents by the host on which they are. This patch adds filter on the agent_type so only ovn-controller agents are taken from the cache. [1] https://review.opendev.org/c/openstack/neutron/+/825428 Conflicts: neutron/plugins/ml2/drivers/ovn/mech_driver/mech_driver.py neutron/tests/unit/plugins/ml2/drivers/ovn/mech_driver/test_mech_driver.py Related-Bug: #1958501 Change-Id: If065204d7521c480656a22fb078bbe6273b5fc70 (cherry picked from commiteda45de839
) (cherry picked from commit601b01f82b
)
This commit is contained in:
parent
ff10dca824
commit
6cc5adac70
@ -951,7 +951,9 @@ class OVNMechanismDriver(api.MechanismDriver):
|
||||
# OVN chassis information is needed to ensure a valid port bind.
|
||||
# Collect port binding data and refuse binding if the OVN chassis
|
||||
# cannot be found or is dead.
|
||||
agents = n_agent.AgentCache().get_agents({'host': context.host})
|
||||
agents = n_agent.AgentCache().get_agents(
|
||||
{'host': context.host,
|
||||
'agent_type': ovn_const.OVN_CONTROLLER_TYPES})
|
||||
if not agents:
|
||||
LOG.warning('Refusing to bind port %(port_id)s due to '
|
||||
'no OVN chassis for host: %(host)s',
|
||||
|
@ -1193,7 +1193,8 @@ class TestOVNMechanismDriver(TestOVNMechanismDriverBase):
|
||||
fake_port, fake_host, fake_segments)
|
||||
self.mech_driver.bind_port(fake_port_context)
|
||||
neutron_agent.AgentCache().get_agents.assert_called_once_with(
|
||||
{'host': fake_host})
|
||||
{'host': fake_host,
|
||||
'agent_type': ovn_const.OVN_CONTROLLER_TYPES})
|
||||
fake_port_context.set_binding.assert_not_called()
|
||||
|
||||
def test_bind_port_host_not_found(self):
|
||||
@ -1223,7 +1224,8 @@ class TestOVNMechanismDriver(TestOVNMechanismDriverBase):
|
||||
fake_port, fake_host, fake_segments)
|
||||
self.mech_driver.bind_port(fake_port_context)
|
||||
neutron_agent.AgentCache().get_agents.assert_called_once_with(
|
||||
{'host': fake_host})
|
||||
{'host': fake_host,
|
||||
'agent_type': ovn_const.OVN_CONTROLLER_TYPES})
|
||||
fake_port_context.set_binding.assert_called_once_with(
|
||||
fake_segments[0]['id'],
|
||||
portbindings.VIF_TYPE_OVS,
|
||||
@ -1238,7 +1240,8 @@ class TestOVNMechanismDriver(TestOVNMechanismDriverBase):
|
||||
fake_port, fake_host, fake_segments)
|
||||
self.mech_driver.bind_port(fake_port_context)
|
||||
neutron_agent.AgentCache().get_agents.assert_called_once_with(
|
||||
{'host': fake_host})
|
||||
{'host': fake_host,
|
||||
'agent_type': ovn_const.OVN_CONTROLLER_TYPES})
|
||||
fake_port_context.set_binding.assert_called_once_with(
|
||||
fake_segments[0]['id'],
|
||||
portbindings.VIF_TYPE_OVS,
|
||||
@ -1259,7 +1262,8 @@ class TestOVNMechanismDriver(TestOVNMechanismDriverBase):
|
||||
fake_port, fake_host, fake_segments)
|
||||
self.mech_driver.bind_port(fake_port_context)
|
||||
neutron_agent.AgentCache().get_agents.assert_called_once_with(
|
||||
{'host': fake_host})
|
||||
{'host': fake_host,
|
||||
'agent_type': ovn_const.OVN_CONTROLLER_TYPES})
|
||||
fake_port_context.set_binding.assert_called_once_with(
|
||||
fake_segments[0]['id'],
|
||||
portbindings.VIF_TYPE_OVS,
|
||||
|
Loading…
Reference in New Issue
Block a user