When adding a switch, add explicit TopologyElement for each port of the
switch. Otherwise, if the initial port state is embedded within the
TopologyElement for the switch, then "DELETE Port" event becomes no-op:
there was no corresponding "ADD Port" event.
diff --git a/src/main/java/net/onrc/onos/ofcontroller/floodlightlistener/NetworkGraphPublisher.java b/src/main/java/net/onrc/onos/ofcontroller/floodlightlistener/NetworkGraphPublisher.java
index 563d575..fa063ed 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/floodlightlistener/NetworkGraphPublisher.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/floodlightlistener/NetworkGraphPublisher.java
@@ -213,11 +213,16 @@
// TODO publish ADD_SWITCH event here
TopologyElement topologyElement =
new TopologyElement(sw.getId());
+ datagridService.notificationSendTopologyElementAdded(topologyElement);
+ // Add the ports
// TODO: Add only ports that are UP?
for (OFPhysicalPort port : sw.getPorts()) {
- topologyElement.addSwitchPort(port.getPortNumber());
+ TopologyElement topologyElementPort =
+ new TopologyElement(sw.getId(),
+ port.getPortNumber());
+ datagridService.notificationSendTopologyElementAdded(topologyElementPort);
}
- datagridService.notificationSendTopologyElementAdded(topologyElement);
+
// Add all links that might be connected already
List<Link> links = linkStore.getLinks(HexString.toHexString(sw.getId()));
// Add all reverse links as well