Renamed *NetworkGraph* references to *Topology*.
Change-Id: Iec01c47086e1518592c0753e75395d3fe5abcde3
diff --git a/src/main/java/net/onrc/onos/core/topology/DeviceImpl.java b/src/main/java/net/onrc/onos/core/topology/DeviceImpl.java
index d070570..6bb133a 100644
--- a/src/main/java/net/onrc/onos/core/topology/DeviceImpl.java
+++ b/src/main/java/net/onrc/onos/core/topology/DeviceImpl.java
@@ -8,14 +8,14 @@
/**
* @author Toshio Koide (t-koide@onlab.us)
*/
-public class DeviceImpl extends NetworkGraphObject implements Device {
+public class DeviceImpl extends TopologyObject implements Device {
private final MACAddress macAddr;
protected LinkedList<Port> attachmentPoints;
private long lastSeenTime;
- public DeviceImpl(NetworkGraph graph, MACAddress mac) {
- super(graph);
+ public DeviceImpl(Topology topology, MACAddress mac) {
+ super(topology);
this.macAddr = mac;
this.attachmentPoints = new LinkedList<>();
}
diff --git a/src/main/java/net/onrc/onos/core/topology/INetworkGraphService.java b/src/main/java/net/onrc/onos/core/topology/INetworkGraphService.java
deleted file mode 100644
index 18eb785..0000000
--- a/src/main/java/net/onrc/onos/core/topology/INetworkGraphService.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package net.onrc.onos.core.topology;
-
-import net.floodlightcontroller.core.module.IFloodlightService;
-
-/**
- * Interface for providing the Network Graph Service to other modules.
- */
-public interface INetworkGraphService extends IFloodlightService {
- /**
- * Allows a module to get a reference to the global network graph object.
- *
- * @return
- */
- public NetworkGraph getNetworkGraph();
-
- public void registerNetworkGraphListener(INetworkGraphListener listener);
-
- public void deregisterNetworkGraphListener(INetworkGraphListener listener);
-
- /**
- * Allows a module to get a reference to the southbound interface to
- * the network graph.
- * TODO Figure out how to hide the southbound interface from
- * applications/modules that shouldn't touch it
- *
- * @return
- */
- public NetworkGraphDiscoveryInterface getNetworkGraphDiscoveryInterface();
-}
diff --git a/src/main/java/net/onrc/onos/core/topology/INetworkGraphListener.java b/src/main/java/net/onrc/onos/core/topology/ITopologyListener.java
similarity index 92%
rename from src/main/java/net/onrc/onos/core/topology/INetworkGraphListener.java
rename to src/main/java/net/onrc/onos/core/topology/ITopologyListener.java
index 6132fbb..889db03 100644
--- a/src/main/java/net/onrc/onos/core/topology/INetworkGraphListener.java
+++ b/src/main/java/net/onrc/onos/core/topology/ITopologyListener.java
@@ -4,11 +4,11 @@
/**
* Interface which needs to be implemented to receive Topology events from
- * the NetworkGraph.
+ * the Topology.
*/
-public interface INetworkGraphListener {
+public interface ITopologyListener {
/**
- * Network Graph events.
+ * Topology events.
* <p/>
* The recommended ordering rules for applying/processing the events is:
* (a) Process "added" events before "removed" events.
@@ -34,7 +34,7 @@
* @param removedDeviceEvents the Removed Device Events.
*/
// CHECKSTYLE:OFF suppress warning about too many parameters
- public void networkGraphEvents(Collection<SwitchEvent> addedSwitchEvents,
+ public void topologyEvents(Collection<SwitchEvent> addedSwitchEvents,
Collection<SwitchEvent> removedSwitchEvents,
Collection<PortEvent> addedPortEvents,
Collection<PortEvent> removedPortEvents,
diff --git a/src/main/java/net/onrc/onos/core/topology/ITopologyService.java b/src/main/java/net/onrc/onos/core/topology/ITopologyService.java
new file mode 100644
index 0000000..b6280bc
--- /dev/null
+++ b/src/main/java/net/onrc/onos/core/topology/ITopologyService.java
@@ -0,0 +1,40 @@
+package net.onrc.onos.core.topology;
+
+import net.floodlightcontroller.core.module.IFloodlightService;
+
+/**
+ * Interface for providing the topology service to other modules.
+ */
+public interface ITopologyService extends IFloodlightService {
+ /**
+ * Allows a module to get a reference to the global topology object.
+ *
+ * @return the global Topology object
+ */
+ public Topology getTopology();
+
+ /**
+ * Registers a listener for topology events.
+ *
+ * @param listener the listener to register
+ */
+ public void registerTopologyListener(ITopologyListener listener);
+
+ /**
+ * Deregisters a listener for topology events. The listener will no longer
+ * receive topology events after this call.
+ *
+ * @param listener the listener to deregister
+ */
+ public void deregisterTopologyListener(ITopologyListener listener);
+
+ /**
+ * Allows a module to get a reference to the southbound interface to
+ * the topology.
+ * TODO Figure out how to hide the southbound interface from
+ * applications/modules that shouldn't touch it
+ *
+ * @return the TopologyDiscoveryInterface object
+ */
+ public TopologyDiscoveryInterface getTopologyDiscoveryInterface();
+}
diff --git a/src/main/java/net/onrc/onos/core/topology/Link.java b/src/main/java/net/onrc/onos/core/topology/Link.java
index 8715b12..2bd9cef 100644
--- a/src/main/java/net/onrc/onos/core/topology/Link.java
+++ b/src/main/java/net/onrc/onos/core/topology/Link.java
@@ -3,7 +3,7 @@
// TODO Everything returned by these interfaces must be either Unmodifiable view,
// immutable object, or a copy of the original "SB" In-memory Topology.
/**
- * Interface of Link object in Network Graph topology.
+ * Interface of Link object in the topology.
*/
public interface Link {
/**
diff --git a/src/main/java/net/onrc/onos/core/topology/LinkImpl.java b/src/main/java/net/onrc/onos/core/topology/LinkImpl.java
index bf66100..7347172 100644
--- a/src/main/java/net/onrc/onos/core/topology/LinkImpl.java
+++ b/src/main/java/net/onrc/onos/core/topology/LinkImpl.java
@@ -8,7 +8,7 @@
* TODO REMOVE following design memo: This object itself may hold the DBObject,
* but this Object itself will not issue any read/write to the DataStore.
*/
-public class LinkImpl extends NetworkGraphObject implements Link {
+public class LinkImpl extends TopologyObject implements Link {
private SwitchPort srcPort;
private SwitchPort dstPort;
@@ -20,36 +20,36 @@
/**
* Constructor for when a link is read from the database and the Ports
- * already exist in the in-memory network graph.
+ * already exist in the in-memory topology.
*
- * @param graph
+ * @param topology
* @param srcPort
* @param dstPort
*/
- public LinkImpl(NetworkGraph graph, Port srcPort, Port dstPort) {
- super(graph);
+ public LinkImpl(Topology topology, Port srcPort, Port dstPort) {
+ super(topology);
this.srcPort = srcPort.asSwitchPort();
this.dstPort = dstPort.asSwitchPort();
}
@Override
public Switch getSrcSwitch() {
- return graph.getSwitch(srcPort.dpid().value());
+ return topology.getSwitch(srcPort.dpid().value());
}
@Override
public Port getSrcPort() {
- return graph.getPort(srcPort.dpid().value(), (long) srcPort.port().value());
+ return topology.getPort(srcPort.dpid().value(), (long) srcPort.port().value());
}
@Override
public Switch getDstSwitch() {
- return graph.getSwitch(dstPort.dpid().value());
+ return topology.getSwitch(dstPort.dpid().value());
}
@Override
public Port getDstPort() {
- return graph.getPort(dstPort.dpid().value(), (long) dstPort.port().value());
+ return topology.getPort(dstPort.dpid().value(), (long) dstPort.port().value());
}
@Override
diff --git a/src/main/java/net/onrc/onos/core/topology/NetworkGraphObject.java b/src/main/java/net/onrc/onos/core/topology/NetworkGraphObject.java
deleted file mode 100644
index bef0e11..0000000
--- a/src/main/java/net/onrc/onos/core/topology/NetworkGraphObject.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package net.onrc.onos.core.topology;
-
-
-public class NetworkGraphObject {
-
- protected final NetworkGraph graph;
-
- public NetworkGraphObject(NetworkGraph graph) {
- this.graph = graph;
- }
-
-}
diff --git a/src/main/java/net/onrc/onos/core/topology/Port.java b/src/main/java/net/onrc/onos/core/topology/Port.java
index 44f4bcf..9a0c06e 100644
--- a/src/main/java/net/onrc/onos/core/topology/Port.java
+++ b/src/main/java/net/onrc/onos/core/topology/Port.java
@@ -6,7 +6,7 @@
//immutable object, or a copy of the original "SB" In-memory Topology.
/**
- * Interface of Port object in Network Graph topology.
+ * Interface of Port object in the topology.
*/
public interface Port {
diff --git a/src/main/java/net/onrc/onos/core/topology/PortImpl.java b/src/main/java/net/onrc/onos/core/topology/PortImpl.java
index 1f6946a..e88d23b 100644
--- a/src/main/java/net/onrc/onos/core/topology/PortImpl.java
+++ b/src/main/java/net/onrc/onos/core/topology/PortImpl.java
@@ -12,7 +12,7 @@
* TODO REMOVE following design memo: This object itself may hold the DBObject,
* but this Object itself will not issue any read/write to the DataStore.
*/
-public class PortImpl extends NetworkGraphObject implements Port {
+public class PortImpl extends TopologyObject implements Port {
private Switch sw;
@@ -21,11 +21,12 @@
private final SwitchPort switchPort;
- // These needs to be ConcurrentCollecton if allowing Graph to be accessed Concurrently
+ // These needs to be ConcurrentCollecton if allowing the topology to be
+ // accessed concurrently
protected Set<Device> devices;
- public PortImpl(NetworkGraph graph, Switch parentSwitch, Long number) {
- super(graph);
+ public PortImpl(Topology topology, Switch parentSwitch, Long number) {
+ super(topology);
this.sw = parentSwitch;
this.number = number;
this.devices = new HashSet<>();
@@ -70,13 +71,13 @@
@Override
public Link getOutgoingLink() {
- return graph.getOutgoingLink(switchPort.dpid().value(),
+ return topology.getOutgoingLink(switchPort.dpid().value(),
(long) switchPort.port().value());
}
@Override
public Link getIncomingLink() {
- return graph.getIncomingLink(switchPort.dpid().value(),
+ return topology.getIncomingLink(switchPort.dpid().value(),
(long) switchPort.port().value());
}
diff --git a/src/main/java/net/onrc/onos/core/topology/Switch.java b/src/main/java/net/onrc/onos/core/topology/Switch.java
index 5f635df..32dedd8 100644
--- a/src/main/java/net/onrc/onos/core/topology/Switch.java
+++ b/src/main/java/net/onrc/onos/core/topology/Switch.java
@@ -5,7 +5,7 @@
// TOOD Everything returned by these interfaces must be either Unmodifiable view,
// immutable object, or a copy of the original "SB" In-memory Topology.
/**
- * Interface of Switch object in Network Graph topology.
+ * Interface of Switch object in the topology.
*/
public interface Switch {
diff --git a/src/main/java/net/onrc/onos/core/topology/SwitchImpl.java b/src/main/java/net/onrc/onos/core/topology/SwitchImpl.java
index 1e5e1e2..5d287a8 100644
--- a/src/main/java/net/onrc/onos/core/topology/SwitchImpl.java
+++ b/src/main/java/net/onrc/onos/core/topology/SwitchImpl.java
@@ -16,14 +16,15 @@
* TODO REMOVE following design memo: This object itself may hold the DBObject,
* but this Object itself will not issue any read/write to the DataStore.
*/
-public class SwitchImpl extends NetworkGraphObject implements Switch {
+public class SwitchImpl extends TopologyObject implements Switch {
private Long dpid;
- // These needs to be ConcurrentCollecton if allowing Graph to be accessed Concurrently
+ // These needs to be ConcurrentCollecton if allowing the topology to be
+ // accessed concurrently
private final Map<Long, Port> ports;
- public SwitchImpl(NetworkGraph graph, Long dpid) {
- super(graph);
+ public SwitchImpl(Topology topology, Long dpid) {
+ super(topology);
this.dpid = dpid;
ports = new HashMap<Long, Port>();
}
@@ -91,7 +92,7 @@
}
public Port addPort(Long portNumber) {
- PortImpl port = new PortImpl(graph, this, portNumber);
+ PortImpl port = new PortImpl(topology, this, portNumber);
ports.put(port.getNumber(), port);
return port;
}
diff --git a/src/main/java/net/onrc/onos/core/topology/NetworkGraph.java b/src/main/java/net/onrc/onos/core/topology/Topology.java
similarity index 96%
rename from src/main/java/net/onrc/onos/core/topology/NetworkGraph.java
rename to src/main/java/net/onrc/onos/core/topology/Topology.java
index 6133bb6..3b90f89 100644
--- a/src/main/java/net/onrc/onos/core/topology/NetworkGraph.java
+++ b/src/main/java/net/onrc/onos/core/topology/Topology.java
@@ -3,11 +3,11 @@
import net.floodlightcontroller.util.MACAddress;
/**
- * The northbound interface to the topology network graph. This interface
+ * The northbound interface to the topology. This interface
* is presented to the rest of ONOS. It is currently read-only, as we want
* only the discovery modules to be allowed to modify the topology.
*/
-public interface NetworkGraph {
+public interface Topology {
/**
* Get the switch for a given switch DPID.
*
diff --git a/src/main/java/net/onrc/onos/core/topology/NetworkGraphDatastore.java b/src/main/java/net/onrc/onos/core/topology/TopologyDatastore.java
similarity index 88%
rename from src/main/java/net/onrc/onos/core/topology/NetworkGraphDatastore.java
rename to src/main/java/net/onrc/onos/core/topology/TopologyDatastore.java
index 08eb061..5067666 100644
--- a/src/main/java/net/onrc/onos/core/topology/NetworkGraphDatastore.java
+++ b/src/main/java/net/onrc/onos/core/topology/TopologyDatastore.java
@@ -19,22 +19,10 @@
import org.slf4j.LoggerFactory;
/**
- * The southbound interface to the network graph which allows clients to
- * mutate the graph. This class will maintain the invariants of the network
- * graph. The southbound discovery modules will use this interface to update
- * the network graph as they learn about the state of the network.
- * <p/>
- * Modification to the Network Map by this module will:
- * 1. Writes to Cluster-wide DataStore.
- * 2. Update ONOS instance In-memory Network Map.
- * 3. Send-out Notification. (TBD)
- * (XXX: To update other instances In-memory Network Map,
- * notification should be triggered here.
- * But if we want to aggregate notification to minimize notification,
- * It might be better for the caller to trigger notification.)
+ * Contains methods which write topology events into the key-value data store.
*/
-public class NetworkGraphDatastore {
- private static final Logger log = LoggerFactory.getLogger(NetworkGraphDatastore.class);
+public class TopologyDatastore {
+ private static final Logger log = LoggerFactory.getLogger(TopologyDatastore.class);
/**
* Add a switch to the database.
diff --git a/src/main/java/net/onrc/onos/core/topology/NetworkGraphDiscoveryInterface.java b/src/main/java/net/onrc/onos/core/topology/TopologyDiscoveryInterface.java
similarity index 96%
rename from src/main/java/net/onrc/onos/core/topology/NetworkGraphDiscoveryInterface.java
rename to src/main/java/net/onrc/onos/core/topology/TopologyDiscoveryInterface.java
index 219417f..16d8af1 100644
--- a/src/main/java/net/onrc/onos/core/topology/NetworkGraphDiscoveryInterface.java
+++ b/src/main/java/net/onrc/onos/core/topology/TopologyDiscoveryInterface.java
@@ -6,7 +6,7 @@
* Interface used by the Topology Discovery module to write topology-related
* events.
*/
-public interface NetworkGraphDiscoveryInterface {
+public interface TopologyDiscoveryInterface {
/**
* Switch discovered event.
*
diff --git a/src/main/java/net/onrc/onos/core/topology/NetworkGraphImpl.java b/src/main/java/net/onrc/onos/core/topology/TopologyImpl.java
similarity index 95%
rename from src/main/java/net/onrc/onos/core/topology/NetworkGraphImpl.java
rename to src/main/java/net/onrc/onos/core/topology/TopologyImpl.java
index 395f2af..d48e222 100644
--- a/src/main/java/net/onrc/onos/core/topology/NetworkGraphImpl.java
+++ b/src/main/java/net/onrc/onos/core/topology/TopologyImpl.java
@@ -13,9 +13,9 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public class NetworkGraphImpl implements NetworkGraph {
+public class TopologyImpl implements Topology {
@SuppressWarnings("unused")
- private static final Logger log = LoggerFactory.getLogger(NetworkGraphImpl.class);
+ private static final Logger log = LoggerFactory.getLogger(TopologyImpl.class);
// DPID -> Switch
private final ConcurrentMap<Long, Switch> switches;
@@ -29,7 +29,7 @@
// TODO use the write lock after refactor
private Lock writeLock = readWriteLock.writeLock();
- public NetworkGraphImpl() {
+ public TopologyImpl() {
// TODO: Does these object need to be stored in Concurrent Collection?
switches = new ConcurrentHashMap<>();
mac2Device = new ConcurrentHashMap<>();
diff --git a/src/main/java/net/onrc/onos/core/topology/TopologyManager.java b/src/main/java/net/onrc/onos/core/topology/TopologyManager.java
index 67e8e5d..ffad050 100644
--- a/src/main/java/net/onrc/onos/core/topology/TopologyManager.java
+++ b/src/main/java/net/onrc/onos/core/topology/TopologyManager.java
@@ -29,7 +29,9 @@
import org.slf4j.LoggerFactory;
/**
- * The "NB" read-only Network Map.
+ * The TopologyManager receives topology updates from the southbound discovery
+ * modules and from other ONOS instances. These updates are processed and
+ * applied to the in-memory topology instance.
* <p/>
* - Maintain Invariant/Relationships between Topology Objects.
* <p/>
@@ -41,7 +43,7 @@
* TODO TBD: This class may delay the requested change to handle event
* re-ordering. e.g.) Link Add came in, but Switch was not there.
*/
-public class TopologyManager implements NetworkGraphDiscoveryInterface {
+public class TopologyManager implements TopologyDiscoveryInterface {
private static final Logger log = LoggerFactory
.getLogger(TopologyManager.class);
@@ -50,10 +52,10 @@
public static final String EVENT_CHANNEL_NAME = "onos.topology";
private EventHandler eventHandler = new EventHandler();
- private final NetworkGraphDatastore datastore;
- private final NetworkGraphImpl networkGraph = new NetworkGraphImpl();
+ private final TopologyDatastore datastore;
+ private final TopologyImpl topology = new TopologyImpl();
private final IControllerRegistryService registryService;
- private CopyOnWriteArrayList<INetworkGraphListener> networkGraphListeners;
+ private CopyOnWriteArrayList<ITopologyListener> topologyListeners;
//
// Local state for keeping track of reordered events.
@@ -98,24 +100,23 @@
/**
* Constructor.
*
- * @param registryService the Registry Service to use.
- * @param networkGraphListeners the collection of Network Graph Listeners
- * to use.
+ * @param registryService the Registry Service to use.
+ * @param topologyListeners the collection of topology listeners to use.
*/
public TopologyManager(IControllerRegistryService registryService,
- CopyOnWriteArrayList<INetworkGraphListener> networkGraphListeners) {
- datastore = new NetworkGraphDatastore();
+ CopyOnWriteArrayList<ITopologyListener> topologyListeners) {
+ datastore = new TopologyDatastore();
this.registryService = registryService;
- this.networkGraphListeners = networkGraphListeners;
+ this.topologyListeners = topologyListeners;
}
/**
- * Get the Network Graph.
+ * Get the Topology.
*
- * @return the Network Graph.
+ * @return the Topology.
*/
- NetworkGraph getNetworkGraph() {
- return networkGraph;
+ Topology getTopology() {
+ return topology;
}
/**
@@ -271,9 +272,9 @@
}
//
- // Lock the Network Graph while it is modified
+ // Lock the topology while it is modified
//
- networkGraph.acquireWriteLock();
+ topology.acquireWriteLock();
try {
//
@@ -319,15 +320,15 @@
} finally {
//
- // Network Graph modifications completed: Release the lock
+ // Topology modifications completed: Release the lock
//
- networkGraph.releaseWriteLock();
+ topology.releaseWriteLock();
}
//
// Dispatch the Topology Notification Events to the applications
//
- dispatchNetworkGraphEvents();
+ dispatchTopologyEvents();
}
/**
@@ -382,9 +383,9 @@
}
/**
- * Dispatch Network Graph Events to the listeners.
+ * Dispatch Topology Events to the listeners.
*/
- private void dispatchNetworkGraphEvents() {
+ private void dispatchTopologyEvents() {
if (apiAddedSwitchEvents.isEmpty() &&
apiRemovedSwitchEvents.isEmpty() &&
apiAddedPortEvents.isEmpty() &&
@@ -402,35 +403,35 @@
// TODO: Those statements should be removed in the future
//
for (SwitchEvent switchEvent : apiAddedSwitchEvents) {
- log.debug("Dispatch Network Graph Event: ADDED {}", switchEvent);
+ log.debug("Dispatch Topology Event: ADDED {}", switchEvent);
}
for (SwitchEvent switchEvent : apiRemovedSwitchEvents) {
- log.debug("Dispatch Network Graph Event: REMOVED {}", switchEvent);
+ log.debug("Dispatch Topology Event: REMOVED {}", switchEvent);
}
for (PortEvent portEvent : apiAddedPortEvents) {
- log.debug("Dispatch Network Graph Event: ADDED {}", portEvent);
+ log.debug("Dispatch Topology Event: ADDED {}", portEvent);
}
for (PortEvent portEvent : apiRemovedPortEvents) {
- log.debug("Dispatch Network Graph Event: REMOVED {}", portEvent);
+ log.debug("Dispatch Topology Event: REMOVED {}", portEvent);
}
for (LinkEvent linkEvent : apiAddedLinkEvents) {
- log.debug("Dispatch Network Graph Event: ADDED {}", linkEvent);
+ log.debug("Dispatch Topology Event: ADDED {}", linkEvent);
}
for (LinkEvent linkEvent : apiRemovedLinkEvents) {
- log.debug("Dispatch Network Graph Event: REMOVED {}", linkEvent);
+ log.debug("Dispatch Topology Event: REMOVED {}", linkEvent);
}
for (DeviceEvent deviceEvent : apiAddedDeviceEvents) {
- log.debug("Dispatch Network Graph Event: ADDED {}", deviceEvent);
+ log.debug("Dispatch Topology Event: ADDED {}", deviceEvent);
}
for (DeviceEvent deviceEvent : apiRemovedDeviceEvents) {
- log.debug("Dispatch Network Graph Event: REMOVED {}", deviceEvent);
+ log.debug("Dispatch Topology Event: REMOVED {}", deviceEvent);
}
}
// Deliver the events
- for (INetworkGraphListener listener : this.networkGraphListeners) {
+ for (ITopologyListener listener : this.topologyListeners) {
// TODO: Should copy before handing them over to listener?
- listener.networkGraphEvents(apiAddedSwitchEvents,
+ listener.topologyEvents(apiAddedSwitchEvents,
apiRemovedSwitchEvents,
apiAddedPortEvents,
apiRemovedPortEvents,
@@ -747,7 +748,7 @@
// Send out notification
TopologyEvent topologyEvent = new TopologyEvent(deviceEvent);
eventChannel.addEntry(topologyEvent.getID(), topologyEvent);
- log.debug("Put the device info into the cache of the graph. mac {}", deviceEvent.getMac());
+ log.debug("Put the device info into the cache of the topology. mac {}", deviceEvent.getMac());
// Store the new Device Event in the local cache
// TODO: The implementation below is probably wrong
@@ -775,7 +776,7 @@
if (datastore.removeDevice(deviceEvent)) {
// Send out notification
eventChannel.removeEntry(deviceEvent.getID());
- log.debug("Remove the device info into the cache of the graph. mac {}", deviceEvent.getMac());
+ log.debug("Remove the device info into the cache of the topology. mac {}", deviceEvent.getMac());
// Cleanup the Device Event from the local cache
// TODO: The implementation below is probably wrong
@@ -791,15 +792,15 @@
}
/**
- * Add a switch to the Network Graph.
+ * Add a switch to the topology.
*
* @param switchEvent the Switch Event with the switch to add.
*/
private void addSwitch(SwitchEvent switchEvent) {
- Switch sw = networkGraph.getSwitch(switchEvent.getDpid());
+ Switch sw = topology.getSwitch(switchEvent.getDpid());
if (sw == null) {
- sw = new SwitchImpl(networkGraph, switchEvent.getDpid());
- networkGraph.putSwitch(sw);
+ sw = new SwitchImpl(topology, switchEvent.getDpid());
+ topology.putSwitch(sw);
} else {
// TODO: Update the switch attributes
// TODO: Nothing to do for now
@@ -809,12 +810,12 @@
}
/**
- * Remove a switch from the Network Graph.
+ * Remove a switch from the topology.
*
* @param switchEvent the Switch Event with the switch to remove.
*/
private void removeSwitch(SwitchEvent switchEvent) {
- Switch sw = networkGraph.getSwitch(switchEvent.getDpid());
+ Switch sw = topology.getSwitch(switchEvent.getDpid());
if (sw == null) {
log.warn("Switch {} already removed, ignoring", switchEvent);
return;
@@ -835,17 +836,17 @@
removePort(portEvent);
}
- networkGraph.removeSwitch(switchEvent.getDpid());
+ topology.removeSwitch(switchEvent.getDpid());
apiRemovedSwitchEvents.add(switchEvent);
}
/**
- * Add a port to the Network Graph.
+ * Add a port to the topology.
*
* @param portEvent the Port Event with the port to add.
*/
private void addPort(PortEvent portEvent) {
- Switch sw = networkGraph.getSwitch(portEvent.getDpid());
+ Switch sw = topology.getSwitch(portEvent.getDpid());
if (sw == null) {
// Reordered event: delay the event in local cache
ByteBuffer id = portEvent.getIDasByteBuffer();
@@ -856,7 +857,7 @@
Port port = sw.getPort(portEvent.getNumber());
if (port == null) {
- port = new PortImpl(networkGraph, sw, portEvent.getNumber());
+ port = new PortImpl(topology, sw, portEvent.getNumber());
switchImpl.addPort(port);
} else {
// TODO: Update the port attributes
@@ -866,12 +867,12 @@
}
/**
- * Remove a port from the Network Graph.
+ * Remove a port from the topology.
*
* @param portEvent the Port Event with the port to remove.
*/
private void removePort(PortEvent portEvent) {
- Switch sw = networkGraph.getSwitch(portEvent.getDpid());
+ Switch sw = topology.getSwitch(portEvent.getDpid());
if (sw == null) {
log.warn("Parent Switch for Port {} already removed, ignoring",
portEvent);
@@ -930,14 +931,14 @@
}
/**
- * Add a link to the Network Graph.
+ * Add a link to the topology.
*
* @param linkEvent the Link Event with the link to add.
*/
private void addLink(LinkEvent linkEvent) {
- Port srcPort = networkGraph.getPort(linkEvent.getSrc().dpid,
+ Port srcPort = topology.getPort(linkEvent.getSrc().dpid,
linkEvent.getSrc().number);
- Port dstPort = networkGraph.getPort(linkEvent.getDst().dpid,
+ Port dstPort = topology.getPort(linkEvent.getDst().dpid,
linkEvent.getDst().number);
if ((srcPort == null) || (dstPort == null)) {
// Reordered event: delay the event in local cache
@@ -950,8 +951,8 @@
Link link = dstPort.getIncomingLink();
assert (link == srcPort.getOutgoingLink());
if (link == null) {
- link = new LinkImpl(networkGraph, srcPort, dstPort);
- networkGraph.putLink(link);
+ link = new LinkImpl(topology, srcPort, dstPort);
+ topology.putLink(link);
// Remove all Devices attached to the Ports
ArrayList<DeviceEvent> devicesToRemove = new ArrayList<>();
@@ -983,12 +984,12 @@
}
/**
- * Remove a link from the Network Graph.
+ * Remove a link from the topology.
*
* @param linkEvent the Link Event with the link to remove.
*/
private void removeLink(LinkEvent linkEvent) {
- Port srcPort = networkGraph.getPort(linkEvent.getSrc().dpid,
+ Port srcPort = topology.getPort(linkEvent.getSrc().dpid,
linkEvent.getSrc().number);
if (srcPort == null) {
log.warn("Src Port for Link {} already removed, ignoring",
@@ -996,7 +997,7 @@
return;
}
- Port dstPort = networkGraph.getPort(linkEvent.getDst().dpid,
+ Port dstPort = topology.getPort(linkEvent.getDst().dpid,
linkEvent.getDst().number);
if (dstPort == null) {
log.warn("Dst Port for Link {} already removed, ignoring",
@@ -1019,14 +1020,14 @@
// TODO should we check that we get the same link from each port?
if (link != null) {
- networkGraph.removeLink(link);
+ topology.removeLink(link);
}
apiRemovedLinkEvents.add(linkEvent);
}
/**
- * Add a device to the Network Graph.
+ * Add a device to the topology.
* <p/>
* TODO: Device-related work is incomplete.
* TODO: Eventually, we might need to consider reordering
@@ -1035,12 +1036,12 @@
* @param deviceEvent the Device Event with the device to add.
*/
private void addDevice(DeviceEvent deviceEvent) {
- log.debug("Adding a device to the Network Graph with mac {}", deviceEvent.getMac());
- Device device = networkGraph.getDeviceByMac(deviceEvent.getMac());
+ log.debug("Adding a device to the topology with mac {}", deviceEvent.getMac());
+ Device device = topology.getDeviceByMac(deviceEvent.getMac());
if (device == null) {
- log.debug("Existing device was not found in the NetworkGraph: Adding new device: mac {}", deviceEvent.getMac());
- device = new DeviceImpl(networkGraph, deviceEvent.getMac());
+ log.debug("Existing device was not found in the Topology: Adding new device: mac {}", deviceEvent.getMac());
+ device = new DeviceImpl(topology, deviceEvent.getMac());
}
DeviceImpl deviceImpl = getDeviceImpl(device);
@@ -1049,7 +1050,7 @@
boolean attachmentFound = false;
for (SwitchPort swp : deviceEvent.getAttachmentPoints()) {
// Attached Ports must exist
- Port port = networkGraph.getPort(swp.dpid, swp.number);
+ Port port = topology.getPort(swp.dpid, swp.number);
if (port == null) {
// Reordered event: delay the event in local cache
ByteBuffer id = deviceEvent.getIDasByteBuffer();
@@ -1072,24 +1073,24 @@
attachmentFound = true;
}
- // Update the device in the Network Graph
+ // Update the device in the topology
if (attachmentFound) {
- log.debug("Storing the device info into the NetworkGraph: mac {}", deviceEvent.getMac());
- networkGraph.putDevice(device);
+ log.debug("Storing the device info into the Topology: mac {}", deviceEvent.getMac());
+ topology.putDevice(device);
apiAddedDeviceEvents.add(deviceEvent);
}
}
/**
- * Remove a device from the Network Graph.
+ * Remove a device from the topology.
* <p/>
* TODO: Device-related work is incomplete.
*
* @param deviceEvent the Device Event with the device to remove.
*/
private void removeDevice(DeviceEvent deviceEvent) {
- log.debug("Removing a device to the Network Graph: mac {}", deviceEvent.getMac());
- Device device = networkGraph.getDeviceByMac(deviceEvent.getMac());
+ log.debug("Removing a device to the topology: mac {}", deviceEvent.getMac());
+ Device device = topology.getDeviceByMac(deviceEvent.getMac());
if (device == null) {
log.warn("Device {} already removed, ignoring", deviceEvent);
return;
@@ -1099,7 +1100,7 @@
// Process each attachment point
for (SwitchPort swp : deviceEvent.getAttachmentPoints()) {
// Attached Ports must exist
- Port port = networkGraph.getPort(swp.dpid, swp.number);
+ Port port = topology.getPort(swp.dpid, swp.number);
if (port == null) {
log.warn("Port for the attachment point {} did not exist. skipping attachment point mutation", swp);
continue;
@@ -1111,8 +1112,8 @@
deviceImpl.removeAttachmentPoint(port);
}
- log.debug("Removing the device info into the NetworkGraph: mac {}", deviceEvent.getMac());
- networkGraph.removeDevice(device);
+ log.debug("Removing the device info into the Topology: mac {}", deviceEvent.getMac());
+ topology.removeDevice(device);
apiRemovedDeviceEvents.add(deviceEvent);
}
diff --git a/src/main/java/net/onrc/onos/core/topology/NetworkGraphModule.java b/src/main/java/net/onrc/onos/core/topology/TopologyModule.java
similarity index 68%
rename from src/main/java/net/onrc/onos/core/topology/NetworkGraphModule.java
rename to src/main/java/net/onrc/onos/core/topology/TopologyModule.java
index 77981d6..657682f 100644
--- a/src/main/java/net/onrc/onos/core/topology/NetworkGraphModule.java
+++ b/src/main/java/net/onrc/onos/core/topology/TopologyModule.java
@@ -14,18 +14,17 @@
import net.floodlightcontroller.restserver.IRestApiService;
import net.onrc.onos.core.datagrid.IDatagridService;
import net.onrc.onos.core.registry.IControllerRegistryService;
-import net.onrc.onos.core.topology.web.NetworkGraphWebRoutable;
+import net.onrc.onos.core.topology.web.TopologyWebRoutable;
-public class NetworkGraphModule implements IFloodlightModule, INetworkGraphService {
+public class TopologyModule implements IFloodlightModule, ITopologyService {
// This is initialized as a module for now
private TopologyManager topologyManager;
- //private NetworkGraphDatastore southboundNetworkGraph;
private IDatagridService datagridService;
private IControllerRegistryService registryService;
- private CopyOnWriteArrayList<INetworkGraphListener> networkGraphListeners;
+ private CopyOnWriteArrayList<ITopologyListener> topologyListeners;
private IRestApiService restApi;
@@ -33,7 +32,7 @@
public Collection<Class<? extends IFloodlightService>> getModuleServices() {
List<Class<? extends IFloodlightService>> services =
new ArrayList<Class<? extends IFloodlightService>>();
- services.add(INetworkGraphService.class);
+ services.add(ITopologyService.class);
return services;
}
@@ -42,7 +41,7 @@
getServiceImpls() {
Map<Class<? extends IFloodlightService>, IFloodlightService> impls =
new HashMap<Class<? extends IFloodlightService>, IFloodlightService>();
- impls.put(INetworkGraphService.class, this);
+ impls.put(ITopologyService.class, this);
return impls;
}
@@ -63,35 +62,34 @@
datagridService = context.getServiceImpl(IDatagridService.class);
registryService = context.getServiceImpl(IControllerRegistryService.class);
- networkGraphListeners = new CopyOnWriteArrayList<>();
- topologyManager = new TopologyManager(registryService, networkGraphListeners);
- //southboundNetworkGraph = new NetworkGraphDatastore(networkGraph);
+ topologyListeners = new CopyOnWriteArrayList<>();
+ topologyManager = new TopologyManager(registryService, topologyListeners);
}
@Override
public void startUp(FloodlightModuleContext context) {
- restApi.addRestletRoutable(new NetworkGraphWebRoutable());
+ restApi.addRestletRoutable(new TopologyWebRoutable());
topologyManager.startup(datagridService);
}
@Override
- public NetworkGraph getNetworkGraph() {
- return topologyManager.getNetworkGraph();
+ public Topology getTopology() {
+ return topologyManager.getTopology();
}
@Override
- public NetworkGraphDiscoveryInterface getNetworkGraphDiscoveryInterface() {
+ public TopologyDiscoveryInterface getTopologyDiscoveryInterface() {
return topologyManager;
}
@Override
- public void registerNetworkGraphListener(INetworkGraphListener listener) {
- networkGraphListeners.addIfAbsent(listener);
+ public void registerTopologyListener(ITopologyListener listener) {
+ topologyListeners.addIfAbsent(listener);
}
@Override
- public void deregisterNetworkGraphListener(INetworkGraphListener listener) {
- networkGraphListeners.remove(listener);
+ public void deregisterTopologyListener(ITopologyListener listener) {
+ topologyListeners.remove(listener);
}
}
diff --git a/src/main/java/net/onrc/onos/core/topology/TopologyObject.java b/src/main/java/net/onrc/onos/core/topology/TopologyObject.java
new file mode 100644
index 0000000..fd2d0ce
--- /dev/null
+++ b/src/main/java/net/onrc/onos/core/topology/TopologyObject.java
@@ -0,0 +1,12 @@
+package net.onrc.onos.core.topology;
+
+
+public class TopologyObject {
+
+ protected final Topology topology;
+
+ public TopologyObject(Topology topology) {
+ this.topology = topology;
+ }
+
+}
diff --git a/src/main/java/net/onrc/onos/core/topology/NetworkGraphPublisher.java b/src/main/java/net/onrc/onos/core/topology/TopologyPublisher.java
similarity index 86%
rename from src/main/java/net/onrc/onos/core/topology/NetworkGraphPublisher.java
rename to src/main/java/net/onrc/onos/core/topology/TopologyPublisher.java
index 6f9b332..6c90003 100644
--- a/src/main/java/net/onrc/onos/core/topology/NetworkGraphPublisher.java
+++ b/src/main/java/net/onrc/onos/core/topology/TopologyPublisher.java
@@ -31,27 +31,27 @@
import org.slf4j.LoggerFactory;
/**
- * The NetworkGraphPublisher subscribes to topology network events from the
- * discovery modules. These events are reformatted and relayed to the topology
- * part of the network graph
+ * The TopologyPublisher subscribes to topology network events from the
+ * discovery modules. These events are reformatted and relayed to the in-memory
+ * topology instance.
*/
-public class NetworkGraphPublisher implements /*IOFSwitchListener,*/
+public class TopologyPublisher implements /*IOFSwitchListener,*/
IOFSwitchPortListener,
ILinkDiscoveryListener,
IFloodlightModule,
IOnosDeviceListener {
private static final Logger log =
- LoggerFactory.getLogger(NetworkGraphPublisher.class);
+ LoggerFactory.getLogger(TopologyPublisher.class);
private IFloodlightProviderService floodlightProvider;
private ILinkDiscoveryService linkDiscovery;
private IControllerRegistryService registryService;
- private INetworkGraphService networkGraphService;
+ private ITopologyService topologyService;
private IOnosDeviceService onosDeviceService;
- private NetworkGraph networkGraph;
- private NetworkGraphDiscoveryInterface networkGraphDiscoveryInterface;
+ private Topology topology;
+ private TopologyDiscoveryInterface topologyDiscoveryInterface;
private static final String ENABLE_CLEANUP_PROPERTY = "EnableCleanup";
private boolean cleanupEnabled = true;
@@ -59,7 +59,7 @@
private SingletonTask cleanupTask;
/**
- * Cleanup old switches from the network graph. Old switches are those
+ * Cleanup old switches from the topology. Old switches are those
* which have no controller in the registry.
*/
private class SwitchCleanup implements ControlChangeCallback, Runnable {
@@ -86,7 +86,7 @@
* registry.
*/
private void switchCleanup() {
- Iterable<Switch> switches = networkGraph.getSwitches();
+ Iterable<Switch> switches = topology.getSwitches();
if (log.isTraceEnabled()) {
log.trace("Checking for inactive switches");
@@ -110,7 +110,7 @@
/**
* Second half of the switch cleanup operation. If the registry grants
* control of a switch, we can be sure no other instance is writing
- * this switch to the network graph, so we can remove it now.
+ * this switch to the topology, so we can remove it now.
*
* @param dpid the dpid of the switch we requested control for
* @param hasControl whether we got control or not
@@ -122,7 +122,7 @@
HexString.toHexString(dpid));
SwitchEvent switchEvent = new SwitchEvent(dpid);
- networkGraphDiscoveryInterface.
+ topologyDiscoveryInterface.
removeSwitchDiscoveryEvent(switchEvent);
registryService.releaseControl(dpid);
}
@@ -137,13 +137,13 @@
switch (update.getOperation()) {
case LINK_ADDED:
- networkGraphDiscoveryInterface.putLinkDiscoveryEvent(linkEvent);
+ topologyDiscoveryInterface.putLinkDiscoveryEvent(linkEvent);
break;
case LINK_UPDATED:
// We don't use the LINK_UPDATED event (unsure what it means)
break;
case LINK_REMOVED:
- networkGraphDiscoveryInterface.removeLinkDiscoveryEvent(linkEvent);
+ topologyDiscoveryInterface.removeLinkDiscoveryEvent(linkEvent);
break;
default:
break;
@@ -153,14 +153,14 @@
@Override
public void switchPortAdded(Long switchId, OFPhysicalPort port) {
PortEvent portEvent = new PortEvent(switchId, (long) port.getPortNumber());
- networkGraphDiscoveryInterface.putPortDiscoveryEvent(portEvent);
+ topologyDiscoveryInterface.putPortDiscoveryEvent(portEvent);
linkDiscovery.removeFromSuppressLLDPs(switchId, port.getPortNumber());
}
@Override
public void switchPortRemoved(Long switchId, OFPhysicalPort port) {
PortEvent portEvent = new PortEvent(switchId, (long) port.getPortNumber());
- networkGraphDiscoveryInterface.removePortDiscoveryEvent(portEvent);
+ topologyDiscoveryInterface.removePortDiscoveryEvent(portEvent);
}
@Override
@@ -176,7 +176,7 @@
for (OFPhysicalPort port : sw.getPorts()) {
portEvents.add(new PortEvent(sw.getId(), (long) port.getPortNumber()));
}
- networkGraphDiscoveryInterface
+ topologyDiscoveryInterface
.putSwitchDiscoveryEvent(switchEvent, portEvents);
for (OFPhysicalPort port : sw.getPorts()) {
@@ -226,7 +226,7 @@
l.add(ILinkDiscoveryService.class);
l.add(IThreadPoolService.class);
l.add(IControllerRegistryService.class);
- l.add(INetworkGraphService.class);
+ l.add(ITopologyService.class);
l.add(IOnosDeviceService.class);
return l;
}
@@ -239,7 +239,7 @@
registryService = context.getServiceImpl(IControllerRegistryService.class);
onosDeviceService = context.getServiceImpl(IOnosDeviceService.class);
- networkGraphService = context.getServiceImpl(INetworkGraphService.class);
+ topologyService = context.getServiceImpl(ITopologyService.class);
}
@Override
@@ -248,9 +248,9 @@
linkDiscovery.addListener(this);
onosDeviceService.addOnosDeviceListener(this);
- networkGraph = networkGraphService.getNetworkGraph();
- networkGraphDiscoveryInterface =
- networkGraphService.getNetworkGraphDiscoveryInterface();
+ topology = topologyService.getTopology();
+ topologyDiscoveryInterface =
+ topologyService.getTopologyDiscoveryInterface();
// Run the cleanup thread
String enableCleanup =
@@ -285,13 +285,13 @@
event.setLastSeenTime(device.getLastSeenTimestamp().getTime());
// Does not use vlan info now.
- networkGraphDiscoveryInterface.putDeviceDiscoveryEvent(event);
+ topologyDiscoveryInterface.putDeviceDiscoveryEvent(event);
}
@Override
public void onosDeviceRemoved(OnosDevice device) {
log.debug("Called onosDeviceRemoved");
DeviceEvent event = new DeviceEvent(device.getMacAddress());
- networkGraphDiscoveryInterface.removeDeviceDiscoveryEvent(event);
+ topologyDiscoveryInterface.removeDeviceDiscoveryEvent(event);
}
}
diff --git a/src/main/java/net/onrc/onos/core/topology/web/NetworkGraphDevicesResource.java b/src/main/java/net/onrc/onos/core/topology/web/NetworkGraphDevicesResource.java
deleted file mode 100644
index 84aaeba..0000000
--- a/src/main/java/net/onrc/onos/core/topology/web/NetworkGraphDevicesResource.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package net.onrc.onos.core.topology.web;
-
-import java.io.IOException;
-
-import net.onrc.onos.core.topology.INetworkGraphService;
-import net.onrc.onos.core.topology.NetworkGraph;
-import net.onrc.onos.core.topology.serializers.DeviceSerializer;
-
-import org.codehaus.jackson.Version;
-import org.codehaus.jackson.map.ObjectMapper;
-import org.codehaus.jackson.map.module.SimpleModule;
-import org.restlet.resource.Get;
-import org.restlet.resource.ServerResource;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class NetworkGraphDevicesResource extends ServerResource {
- private static final Logger log = LoggerFactory.getLogger(NetworkGraphDevicesResource.class);
-
- @Get("json")
- public String retrieve() {
- INetworkGraphService networkGraphService = (INetworkGraphService) getContext().getAttributes().
- get(INetworkGraphService.class.getCanonicalName());
-
- NetworkGraph graph = networkGraphService.getNetworkGraph();
-
- ObjectMapper mapper = new ObjectMapper();
- SimpleModule module = new SimpleModule("module", new Version(1, 0, 0, null));
- module.addSerializer(new DeviceSerializer());
- mapper.registerModule(module);
-
- graph.acquireReadLock();
- try {
- return mapper.writeValueAsString(graph.getDevices());
- } catch (IOException e) {
- log.error("Error writing device list to JSON", e);
- return "";
- } finally {
- graph.releaseReadLock();
- }
- }
-
-}
diff --git a/src/main/java/net/onrc/onos/core/topology/web/NetworkGraphLinksResource.java b/src/main/java/net/onrc/onos/core/topology/web/NetworkGraphLinksResource.java
deleted file mode 100644
index 8d4bc93..0000000
--- a/src/main/java/net/onrc/onos/core/topology/web/NetworkGraphLinksResource.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package net.onrc.onos.core.topology.web;
-
-import java.io.IOException;
-
-import net.onrc.onos.core.topology.INetworkGraphService;
-import net.onrc.onos.core.topology.NetworkGraph;
-import net.onrc.onos.core.topology.serializers.LinkSerializer;
-
-import org.codehaus.jackson.Version;
-import org.codehaus.jackson.map.ObjectMapper;
-import org.codehaus.jackson.map.module.SimpleModule;
-import org.restlet.resource.Get;
-import org.restlet.resource.ServerResource;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class NetworkGraphLinksResource extends ServerResource {
-
- private static final Logger log = LoggerFactory.getLogger(NetworkGraphLinksResource.class);
-
- @Get("json")
- public String retrieve() {
- INetworkGraphService networkGraphService = (INetworkGraphService) getContext().getAttributes().
- get(INetworkGraphService.class.getCanonicalName());
-
- NetworkGraph graph = networkGraphService.getNetworkGraph();
-
- ObjectMapper mapper = new ObjectMapper();
- SimpleModule module = new SimpleModule("module", new Version(1, 0, 0, null));
- module.addSerializer(new LinkSerializer());
- mapper.registerModule(module);
-
- try {
- graph.acquireReadLock();
- return mapper.writeValueAsString(graph.getLinks());
- } catch (IOException e) {
- log.error("Error writing link list to JSON", e);
- return "";
- } finally {
- graph.releaseReadLock();
- }
- }
-}
diff --git a/src/main/java/net/onrc/onos/core/topology/web/TopologyDevicesResource.java b/src/main/java/net/onrc/onos/core/topology/web/TopologyDevicesResource.java
new file mode 100644
index 0000000..23f86e8
--- /dev/null
+++ b/src/main/java/net/onrc/onos/core/topology/web/TopologyDevicesResource.java
@@ -0,0 +1,43 @@
+package net.onrc.onos.core.topology.web;
+
+import java.io.IOException;
+
+import net.onrc.onos.core.topology.ITopologyService;
+import net.onrc.onos.core.topology.Topology;
+import net.onrc.onos.core.topology.serializers.DeviceSerializer;
+
+import org.codehaus.jackson.Version;
+import org.codehaus.jackson.map.ObjectMapper;
+import org.codehaus.jackson.map.module.SimpleModule;
+import org.restlet.resource.Get;
+import org.restlet.resource.ServerResource;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class TopologyDevicesResource extends ServerResource {
+ private static final Logger log = LoggerFactory.getLogger(TopologyDevicesResource.class);
+
+ @Get("json")
+ public String retrieve() {
+ ITopologyService topologyService = (ITopologyService) getContext().getAttributes().
+ get(ITopologyService.class.getCanonicalName());
+
+ Topology topology = topologyService.getTopology();
+
+ ObjectMapper mapper = new ObjectMapper();
+ SimpleModule module = new SimpleModule("module", new Version(1, 0, 0, null));
+ module.addSerializer(new DeviceSerializer());
+ mapper.registerModule(module);
+
+ topology.acquireReadLock();
+ try {
+ return mapper.writeValueAsString(topology.getDevices());
+ } catch (IOException e) {
+ log.error("Error writing device list to JSON", e);
+ return "";
+ } finally {
+ topology.releaseReadLock();
+ }
+ }
+
+}
diff --git a/src/main/java/net/onrc/onos/core/topology/web/TopologyLinksResource.java b/src/main/java/net/onrc/onos/core/topology/web/TopologyLinksResource.java
new file mode 100644
index 0000000..b1b6de0
--- /dev/null
+++ b/src/main/java/net/onrc/onos/core/topology/web/TopologyLinksResource.java
@@ -0,0 +1,43 @@
+package net.onrc.onos.core.topology.web;
+
+import java.io.IOException;
+
+import net.onrc.onos.core.topology.ITopologyService;
+import net.onrc.onos.core.topology.Topology;
+import net.onrc.onos.core.topology.serializers.LinkSerializer;
+
+import org.codehaus.jackson.Version;
+import org.codehaus.jackson.map.ObjectMapper;
+import org.codehaus.jackson.map.module.SimpleModule;
+import org.restlet.resource.Get;
+import org.restlet.resource.ServerResource;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class TopologyLinksResource extends ServerResource {
+
+ private static final Logger log = LoggerFactory.getLogger(TopologyLinksResource.class);
+
+ @Get("json")
+ public String retrieve() {
+ ITopologyService topologyService = (ITopologyService) getContext().getAttributes().
+ get(ITopologyService.class.getCanonicalName());
+
+ Topology topology = topologyService.getTopology();
+
+ ObjectMapper mapper = new ObjectMapper();
+ SimpleModule module = new SimpleModule("module", new Version(1, 0, 0, null));
+ module.addSerializer(new LinkSerializer());
+ mapper.registerModule(module);
+
+ try {
+ topology.acquireReadLock();
+ return mapper.writeValueAsString(topology.getLinks());
+ } catch (IOException e) {
+ log.error("Error writing link list to JSON", e);
+ return "";
+ } finally {
+ topology.releaseReadLock();
+ }
+ }
+}
diff --git a/src/main/java/net/onrc/onos/core/topology/web/NetworkGraphShortestPathResource.java b/src/main/java/net/onrc/onos/core/topology/web/TopologyShortestPathResource.java
similarity index 74%
rename from src/main/java/net/onrc/onos/core/topology/web/NetworkGraphShortestPathResource.java
rename to src/main/java/net/onrc/onos/core/topology/web/TopologyShortestPathResource.java
index d513804..29fd716 100644
--- a/src/main/java/net/onrc/onos/core/topology/web/NetworkGraphShortestPathResource.java
+++ b/src/main/java/net/onrc/onos/core/topology/web/TopologyShortestPathResource.java
@@ -6,10 +6,10 @@
import net.onrc.onos.core.intent.ConstrainedBFSTree;
import net.onrc.onos.core.intent.Path;
-import net.onrc.onos.core.topology.INetworkGraphService;
+import net.onrc.onos.core.topology.ITopologyService;
import net.onrc.onos.core.topology.Link;
import net.onrc.onos.core.topology.LinkEvent;
-import net.onrc.onos.core.topology.NetworkGraph;
+import net.onrc.onos.core.topology.Topology;
import net.onrc.onos.core.topology.Switch;
import net.onrc.onos.core.topology.serializers.LinkSerializer;
import net.onrc.onos.core.util.Dpid;
@@ -22,17 +22,17 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public class NetworkGraphShortestPathResource extends ServerResource {
+public class TopologyShortestPathResource extends ServerResource {
- private static final Logger log = LoggerFactory.getLogger(NetworkGraphShortestPathResource.class);
+ private static final Logger log = LoggerFactory.getLogger(TopologyShortestPathResource.class);
@Get("json")
public String retrieve() {
- INetworkGraphService networkGraphService =
- (INetworkGraphService) getContext().getAttributes().
- get(INetworkGraphService.class.getCanonicalName());
+ ITopologyService topologyService =
+ (ITopologyService) getContext().getAttributes().
+ get(ITopologyService.class.getCanonicalName());
- NetworkGraph graph = networkGraphService.getNetworkGraph();
+ Topology topology = topologyService.getTopology();
ObjectMapper mapper = new ObjectMapper();
SimpleModule module = new SimpleModule("module", new Version(1, 0, 0, null));
@@ -53,9 +53,9 @@
// links.
//
try {
- graph.acquireReadLock();
- Switch srcSwitch = graph.getSwitch(srcDpid.value());
- Switch dstSwitch = graph.getSwitch(dstDpid.value());
+ topology.acquireReadLock();
+ Switch srcSwitch = topology.getSwitch(srcDpid.value());
+ Switch dstSwitch = topology.getSwitch(dstDpid.value());
if ((srcSwitch == null) || (dstSwitch == null)) {
return "";
}
@@ -63,7 +63,7 @@
Path path = bfsTree.getPath(dstSwitch);
List<Link> links = new LinkedList<>();
for (LinkEvent linkEvent : path) {
- Link link = graph.getLink(linkEvent.getSrc().getDpid(),
+ Link link = topology.getLink(linkEvent.getSrc().getDpid(),
linkEvent.getSrc().getNumber(),
linkEvent.getDst().getDpid(),
linkEvent.getDst().getNumber());
@@ -77,7 +77,7 @@
log.error("Error writing Shortest Path to JSON", e);
return "";
} finally {
- graph.releaseReadLock();
+ topology.releaseReadLock();
}
}
}
diff --git a/src/main/java/net/onrc/onos/core/topology/web/NetworkGraphSwitchesResource.java b/src/main/java/net/onrc/onos/core/topology/web/TopologySwitchesResource.java
similarity index 60%
rename from src/main/java/net/onrc/onos/core/topology/web/NetworkGraphSwitchesResource.java
rename to src/main/java/net/onrc/onos/core/topology/web/TopologySwitchesResource.java
index 3a053e5..0ac8321 100644
--- a/src/main/java/net/onrc/onos/core/topology/web/NetworkGraphSwitchesResource.java
+++ b/src/main/java/net/onrc/onos/core/topology/web/TopologySwitchesResource.java
@@ -2,8 +2,8 @@
import java.io.IOException;
-import net.onrc.onos.core.topology.INetworkGraphService;
-import net.onrc.onos.core.topology.NetworkGraph;
+import net.onrc.onos.core.topology.ITopologyService;
+import net.onrc.onos.core.topology.Topology;
import net.onrc.onos.core.topology.serializers.PortSerializer;
import net.onrc.onos.core.topology.serializers.SwitchSerializer;
@@ -15,16 +15,16 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public class NetworkGraphSwitchesResource extends ServerResource {
+public class TopologySwitchesResource extends ServerResource {
- private static final Logger log = LoggerFactory.getLogger(NetworkGraphSwitchesResource.class);
+ private static final Logger log = LoggerFactory.getLogger(TopologySwitchesResource.class);
@Get("json")
public String retrieve() {
- INetworkGraphService networkGraphService = (INetworkGraphService) getContext().getAttributes().
- get(INetworkGraphService.class.getCanonicalName());
+ ITopologyService topologyService = (ITopologyService) getContext().getAttributes().
+ get(ITopologyService.class.getCanonicalName());
- NetworkGraph graph = networkGraphService.getNetworkGraph();
+ Topology topology = topologyService.getTopology();
ObjectMapper mapper = new ObjectMapper();
SimpleModule module = new SimpleModule("module", new Version(1, 0, 0, null));
@@ -33,13 +33,13 @@
mapper.registerModule(module);
try {
- graph.acquireReadLock();
- return mapper.writeValueAsString(graph.getSwitches());
+ topology.acquireReadLock();
+ return mapper.writeValueAsString(topology.getSwitches());
} catch (IOException e) {
log.error("Error writing switch list to JSON", e);
return "";
} finally {
- graph.releaseReadLock();
+ topology.releaseReadLock();
}
}
}
diff --git a/src/main/java/net/onrc/onos/core/topology/web/NetworkGraphWebRoutable.java b/src/main/java/net/onrc/onos/core/topology/web/TopologyWebRoutable.java
similarity index 72%
rename from src/main/java/net/onrc/onos/core/topology/web/NetworkGraphWebRoutable.java
rename to src/main/java/net/onrc/onos/core/topology/web/TopologyWebRoutable.java
index c0cf272..cef3ac3 100644
--- a/src/main/java/net/onrc/onos/core/topology/web/NetworkGraphWebRoutable.java
+++ b/src/main/java/net/onrc/onos/core/topology/web/TopologyWebRoutable.java
@@ -6,7 +6,7 @@
import org.restlet.Restlet;
import org.restlet.routing.Router;
-public class NetworkGraphWebRoutable implements RestletRoutable {
+public class TopologyWebRoutable implements RestletRoutable {
@Override
public Restlet getRestlet(Context context) {
@@ -17,11 +17,11 @@
router.attach("/ds/ports/json", DatastorePortsResource.class);
// Topology API
- router.attach("/switches/json", NetworkGraphSwitchesResource.class);
- router.attach("/links/json", NetworkGraphLinksResource.class);
- router.attach("/devices/json", NetworkGraphDevicesResource.class);
+ router.attach("/switches/json", TopologySwitchesResource.class);
+ router.attach("/links/json", TopologyLinksResource.class);
+ router.attach("/devices/json", TopologyDevicesResource.class);
// TODO: Move the Shortest Path REST API to the Intent framework
- router.attach("/shortest-path/{src-dpid}/{dst-dpid}/json", NetworkGraphShortestPathResource.class);
+ router.attach("/shortest-path/{src-dpid}/{dst-dpid}/json", TopologyShortestPathResource.class);
return router;
}