Topology: remove local cache of OVS ports

A previous patch moves all OvsPort filtering to vswitch_impl. This makes
all updates valid for topology. This patch removes the local cache in
favor of using DbStore.

Partial-Bug: #1737339
Change-Id: I686ec4dc99eda643db85b2a4f706250e58155e89
This commit is contained in:
Dima Kuznetsov 2017-11-13 10:20:02 +02:00
parent adadf17948
commit 2de5a5f64a
2 changed files with 4 additions and 15 deletions

View File

@ -42,7 +42,6 @@ class Topology(object):
self.topic_subscribed = {}
self.enable_selective_topo_dist = \
enable_selective_topology_distribution
self.ovs_ports = {}
self.ovs_to_lport_mapping = {}
self.controller = controller
@ -64,14 +63,11 @@ class Topology(object):
@return : None
"""
LOG.info("Ovs port updated: %s", ovs_port)
port_id = ovs_port.id
old_port = self.ovs_ports.get(port_id)
if old_port is None:
if orig_ovs_port is None:
action = "added"
else:
action = 'updated'
self.ovs_ports[port_id] = ovs_port
port_type = ovs_port.type
if port_type not in _OVS_PORT_TYPES:
LOG.info("Unmanaged port online: %s", ovs_port)
@ -96,10 +92,6 @@ class Topology(object):
@param ovs_port:
@return : None
"""
ovs_port = self.ovs_ports.get(ovs_port.id)
if ovs_port is None:
return
port_type = ovs_port.type
if port_type not in _OVS_PORT_TYPES:
LOG.info("Unmanaged port offline: %s", ovs_port)
@ -116,8 +108,6 @@ class Topology(object):
except Exception:
LOG.exception("Exception occurred when handling "
"ovs port offline event")
finally:
del self.ovs_ports[ovs_port.id]
def _tunnel_port_added(self, ovs_port):
self._tunnel_port_updated(ovs_port)
@ -284,7 +274,8 @@ class Topology(object):
new_ovs_to_lport_mapping = {}
add_ovs_to_lport_mapping = {}
delete_ovs_to_lport_mapping = self.ovs_to_lport_mapping
for key, ovs_port in self.ovs_ports.items():
for ovs_port in self.db_store.get_all(ovs.OvsPort):
key = ovs_port.id
if ovs_port.type == constants.OVS_VM_INTERFACE:
lport = self._get_lport(ovs_port)
if lport is None:

View File

@ -164,6 +164,7 @@ class TestTopology(test_app_base.DFAppTestBase):
self.assertEqual(4, self.controller.update.call_count)
self.nb_api.subscriber.register_topic.assert_called_once()
@utils.with_local_objects(test_app_base.fake_ovs_port1)
def test_check_topology_info(self):
topic = 'fake_tenant1'
lport_id2 = '2'
@ -181,9 +182,6 @@ class TestTopology(test_app_base.DFAppTestBase):
topic=topic
)
}
self.topology.ovs_ports = {
'fake_ovs_port1': test_app_base.fake_ovs_port1
}
self.topology.topic_subscribed = {
topic: {lport_id2, lport_id3}
}