It's a preparation for the following ofagent changes.
Related: blueprint ofagent-flow-based-tunneling
Change-Id: I21318bd9f3b07ccc0ac026d7220d2f826a3325cf
yield (lvm, agent_ports)
@log.log
- def fdb_add_tun(self, context, br, lvm, agent_ports, ofports):
+ def fdb_add_tun(self, context, br, lvm, agent_ports, lookup_port):
for remote_ip, ports in agent_ports.items():
# Ensure we have a tunnel port with this remote agent
- ofport = ofports[lvm.network_type].get(remote_ip)
+ ofport = lookup_port(lvm.network_type, remote_ip)
if not ofport:
ofport = self.setup_tunnel_port(br, remote_ip,
lvm.network_type)
self.add_fdb_flow(br, port, remote_ip, lvm, ofport)
@log.log
- def fdb_remove_tun(self, context, br, lvm, agent_ports, ofports):
+ def fdb_remove_tun(self, context, br, lvm, agent_ports, lookup_port):
for remote_ip, ports in agent_ports.items():
- ofport = ofports[lvm.network_type].get(remote_ip)
+ ofport = lookup_port(lvm.network_type, remote_ip)
if not ofport:
continue
for port in ports:
# are processed in the same order as the relevant API requests
self.updated_ports.add(ports.get_normalized_port_name(port['id']))
+ def _tunnel_port_lookup(self, network_type, remote_ip):
+ return self.tun_ofports[network_type].get(remote_ip)
+
@log.log
def fdb_add(self, context, fdb_entries):
for lvm, agent_ports in self.get_agent_ports(fdb_entries,
self._fdb_add_arp(lvm, {self.local_ip: local})
if len(agent_ports):
self.fdb_add_tun(context, self.int_br, lvm, agent_ports,
- self.tun_ofports)
+ self._tunnel_port_lookup)
else:
self._fdb_add_arp(lvm, agent_ports)
self._fdb_remove_arp(lvm, {self.local_ip: local})
if len(agent_ports):
self.fdb_remove_tun(context, self.int_br, lvm, agent_ports,
- self.tun_ofports)
+ self._tunnel_port_lookup)
else:
self._fdb_remove_arp(lvm, agent_ports)
ofport = self.tun_br_ofports[tunnel_type].get(tunnel_ip)
self.cleanup_tunnel_port(self.tun_br, ofport, tunnel_type)
+ def _tunnel_port_lookup(self, network_type, remote_ip):
+ return self.tun_br_ofports[network_type].get(remote_ip)
+
def fdb_add(self, context, fdb_entries):
LOG.debug("fdb_add received")
for lvm, agent_ports in self.get_agent_ports(fdb_entries,
if not self.enable_distributed_routing:
with self.tun_br.deferred() as deferred_br:
self.fdb_add_tun(context, deferred_br, lvm,
- agent_ports, self.tun_br_ofports)
+ agent_ports, self._tunnel_port_lookup)
else:
self.fdb_add_tun(context, self.tun_br, lvm,
- agent_ports, self.tun_br_ofports)
+ agent_ports, self._tunnel_port_lookup)
def fdb_remove(self, context, fdb_entries):
LOG.debug("fdb_remove received")
if not self.enable_distributed_routing:
with self.tun_br.deferred() as deferred_br:
self.fdb_remove_tun(context, deferred_br, lvm,
- agent_ports, self.tun_br_ofports)
+ agent_ports,
+ self._tunnel_port_lookup)
else:
self.fdb_remove_tun(context, self.tun_br, lvm,
- agent_ports, self.tun_br_ofports)
+ agent_ports, self._tunnel_port_lookup)
def add_fdb_flow(self, br, port_info, remote_ip, lvm, ofport):
if port_info == q_const.FLOODING_ENTRY:
},
}
self.upd_fdb_entry1 = {'chg_ip': self.upd_fdb_entry1_val}
+
+ def _tunnel_port_lookup(self, network_type, remote_ip):
+ return self.ofports[network_type].get(remote_ip)
mock.patch.object(self.fakeagent, 'add_fdb_flow'),
) as (mock_setup_tunnel_port, mock_add_fdb_flow):
self.fakeagent.fdb_add_tun('context', self.fakebr, self.lvm1,
- self.agent_ports, self.ofports)
+ self.agent_ports,
+ self._tunnel_port_lookup)
expected = [
mock.call(self.fakebr, (self.lvms[0].mac, self.lvms[0].ip),
self.ports[0].ip, self.lvm1, self.ports[0].ofport),
mock.patch.object(self.fakeagent, 'add_fdb_flow'),
) as (mock_setup_tunnel_port, mock_add_fdb_flow):
self.fakeagent.fdb_add_tun('context', self.fakebr, self.lvm1,
- self.agent_ports, self.ofports)
+ self.agent_ports,
+ self._tunnel_port_lookup)
mock_setup_tunnel_port.assert_called_once_with(
self.fakebr, self.ports[1].ip, self.lvm1.network_type)
expected = [
mock.patch.object(self.fakeagent, 'add_fdb_flow'),
) as (mock_setup_tunnel_port, mock_add_fdb_flow):
self.fakeagent.fdb_add_tun('context', self.fakebr, self.lvm1,
- self.agent_ports, self.ofports)
+ self.agent_ports,
+ self._tunnel_port_lookup)
mock_setup_tunnel_port.assert_called_once_with(
self.fakebr, self.ports[1].ip, self.lvm1.network_type)
expected = [
with mock.patch.object(
self.fakeagent, 'del_fdb_flow') as mock_del_fdb_flow:
self.fakeagent.fdb_remove_tun('context', self.fakebr, self.lvm1,
- self.agent_ports, self.ofports)
+ self.agent_ports,
+ self._tunnel_port_lookup)
expected = [
mock.call(self.fakebr, (self.lvms[0].mac, self.lvms[0].ip),
self.ports[0].ip, self.lvm1, self.ports[0].ofport),
mock.patch.object(self.fakeagent, 'cleanup_tunnel_port'),
) as (mock_del_fdb_flow, mock_cleanup_tunnel_port):
self.fakeagent.fdb_remove_tun('context', self.fakebr, self.lvm1,
- self.agent_ports, self.ofports)
+ self.agent_ports,
+ self._tunnel_port_lookup)
expected = [
mock.call(self.fakebr, (self.lvms[0].mac, self.lvms[0].ip),
self.ports[0].ip, self.lvm1, self.ports[0].ofport),
with mock.patch.object(
self.fakeagent, 'del_fdb_flow') as mock_del_fdb_flow:
self.fakeagent.fdb_remove_tun('context', self.fakebr, self.lvm1,
- self.agent_ports, self.ofports)
+ self.agent_ports,
+ self._tunnel_port_lookup)
expected = [
mock.call(self.fakebr, (self.lvms[0].mac, self.lvms[0].ip),
self.ports[0].ip, self.lvm1, self.ports[0].ofport),