Make sure the port still in port map when prepare_port_filter

The current code will remove the port from sg_port_map, but then it
won't be added into the map, when we resize/migrate this instance,
the related openflow won't be deleted, this will cause vm connectivity
problem.

Closes-Bug: #1825295
Change-Id: I94ddddda3c1960d43893c7a367a81279d429e469
(cherry picked from commit 82782d3763)
This commit is contained in:
Yang Li 2019-04-18 14:45:31 +08:00 committed by Slawek Kaplonski
parent 2e15b18679
commit 8e9e0cbe14
2 changed files with 4 additions and 1 deletions

View File

@ -536,7 +536,9 @@ class OVSFirewallDriver(firewall.FirewallDriver):
if of_port.ofport != ovs_port.ofport:
self.sg_port_map.remove_port(of_port)
of_port = OFPort(port, ovs_port, of_port.vlan_tag)
self.sg_port_map.update_port(of_port, port)
self.sg_port_map.create_port(of_port, port)
else:
self.sg_port_map.update_port(of_port, port)
return of_port

View File

@ -474,6 +474,7 @@ class TestOVSFirewallDriver(base.BaseTestCase):
self.mock_bridge.br.get_vif_port_by_id.return_value = \
fake_ovs_port
port = self.firewall.get_or_create_ofport(port_dict)
self.assertIn(of_port.id, self.firewall.sg_port_map.ports.keys())
self.assertEqual(port.ofport, 2)
def test_get_or_create_ofport_missing(self):