Add string attributes to self-containd objects.
- Add common super class to *Event classes, which handles attributes.
- Add string attributes to *Event classes (ONOS-1564)
- Populate string attributes.
Picked random attribute obtained from OF, just to initially populate attrs.
Attributes to be used for each elements should be revisited later.
- *Impl class to use/reference self-contained objects
prep-work for snapshot in mind.
- unified equals implementations
- Add unfrozen Copy constructor.
- Add freeze check to fixed attributes.
- Remove get*Impl which was not really adding value.
Change-Id: I10f9538f87d133a22237bd8ab97b8de421d3930b
diff --git a/src/main/java/net/onrc/onos/core/topology/TopologyPublisher.java b/src/main/java/net/onrc/onos/core/topology/TopologyPublisher.java
index fbd409f..60b0823 100644
--- a/src/main/java/net/onrc/onos/core/topology/TopologyPublisher.java
+++ b/src/main/java/net/onrc/onos/core/topology/TopologyPublisher.java
@@ -24,6 +24,7 @@
import net.onrc.onos.core.registry.IControllerRegistryService.ControlChangeCallback;
import net.onrc.onos.core.registry.RegistryException;
import net.onrc.onos.core.util.Dpid;
+import net.onrc.onos.core.util.PortNumber;
import net.onrc.onos.core.util.SwitchPort;
import org.openflow.protocol.OFPhysicalPort;
@@ -133,9 +134,13 @@
@Override
public void linkDiscoveryUpdate(LDUpdate update) {
- LinkEvent linkEvent = new LinkEvent(update.getSrc(),
- (long) update.getSrcPort(), update.getDst(),
- (long) update.getDstPort());
+ LinkEvent linkEvent = new LinkEvent(
+ new SwitchPort(update.getSrc(), update.getSrcPort()),
+ new SwitchPort(update.getDst(), update.getDstPort()));
+ // FIXME should be merging, with existing attrs, etc..
+ // TODO define attr name as constant somewhere.
+ // TODO populate appropriate attributes.
+ linkEvent.freeze();
switch (update.getOperation()) {
case LINK_ADDED:
@@ -168,8 +173,15 @@
@Override
public void switchPortAdded(Long switchId, OFPhysicalPort port) {
+ final Dpid dpid = new Dpid(switchId);
+ PortEvent portEvent = new PortEvent(dpid, new PortNumber(port.getPortNumber()));
+ // FIXME should be merging, with existing attrs, etc..
+ // TODO define attr name as constant somewhere.
+ // TODO populate appropriate attributes.
+ portEvent.createStringAttribute("name", port.getName());
- PortEvent portEvent = new PortEvent(switchId, (long) port.getPortNumber());
+ portEvent.freeze();
+
if (registryService.hasControl(switchId)) {
topologyDiscoveryInterface.putPortDiscoveryEvent(portEvent);
linkDiscovery.removeFromSuppressLLDPs(switchId, port.getPortNumber());
@@ -193,8 +205,15 @@
@Override
public void addedSwitch(IOFSwitch sw) {
+ final Dpid dpid = new Dpid(sw.getId());
+ SwitchEvent switchEvent = new SwitchEvent(dpid);
+ // FIXME should be merging, with existing attrs, etc..
+ // TODO define attr name as constant somewhere.
+ // TODO populate appropriate attributes.
+ switchEvent.createStringAttribute("ConnectedSince",
+ sw.getConnectedSince().toString());
- SwitchEvent switchEvent = new SwitchEvent(sw.getId());
+ switchEvent.freeze();
// TODO Not very robust
if (!registryService.hasControl(sw.getId())) {
@@ -205,7 +224,14 @@
List<PortEvent> portEvents = new ArrayList<PortEvent>();
for (OFPhysicalPort port : sw.getPorts()) {
- portEvents.add(new PortEvent(sw.getId(), (long) port.getPortNumber()));
+ PortEvent portEvent = new PortEvent(dpid, new PortNumber(port.getPortNumber()));
+ // FIXME should be merging, with existing attrs, etc..
+ // TODO define attr name as constant somewhere.
+ // TODO populate appropriate attributes.
+ portEvent.createStringAttribute("name", port.getName());
+
+ portEvent.freeze();
+ portEvents.add(portEvent);
}
topologyDiscoveryInterface
.putSwitchDiscoveryEvent(switchEvent, portEvents);
@@ -314,6 +340,7 @@
event.setAttachmentPoints(spLists);
event.setLastSeenTime(device.getLastSeenTimestamp().getTime());
// Does not use vlan info now.
+ event.freeze();
topologyDiscoveryInterface.putDeviceDiscoveryEvent(event);
}
@@ -322,6 +349,8 @@
public void onosDeviceRemoved(OnosDevice device) {
log.debug("Called onosDeviceRemoved");
DeviceEvent event = new DeviceEvent(device.getMacAddress());
+ // XXX shouldn't we be setting attachment points?
+ event.freeze();
topologyDiscoveryInterface.removeDeviceDiscoveryEvent(event);
}
}