Created basic network graph objects, and implementation for the southbound API against the Ramcloud datastore
Change-Id: I2172dacb171f27ba2099ee5a52835030d2004689
Created basic objects and southbound API to build the network graph
Change-Id: I061efdf10e5e8549f7192844d10781dc28ee62d4
Added basic northbound get switch method on network graph
Change-Id: I4f2e4d4a4df00979abc927ef0772997dcdebc4e2
diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/NetworkGraphImpl.java b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/NetworkGraphImpl.java
new file mode 100644
index 0000000..5f42ef2
--- /dev/null
+++ b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/NetworkGraphImpl.java
@@ -0,0 +1,84 @@
+package net.onrc.onos.ofcontroller.networkgraph;
+
+import java.net.InetAddress;
+
+import net.floodlightcontroller.util.MACAddress;
+import net.onrc.onos.datastore.topology.RCPort;
+import net.onrc.onos.datastore.topology.RCSwitch;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import edu.stanford.ramcloud.JRamCloud.ObjectDoesntExistException;
+
+public class NetworkGraphImpl implements NetworkGraph {
+
+ private static final Logger log = LoggerFactory.getLogger(NetworkGraphImpl.class);
+
+ @Override
+ public Switch getSwitch(long dpid) {
+ SwitchImpl sw = new SwitchImpl(this);
+
+ RCSwitch rcSwitch = new RCSwitch(dpid);
+ try {
+ rcSwitch.read();
+ } catch (ObjectDoesntExistException e) {
+ log.warn("Tried to get a switch that doesn't exist {}", dpid);
+ return null;
+ }
+
+ sw.setDpid(rcSwitch.getDpid());
+
+ for (byte[] portId : rcSwitch.getAllPortIds()) {
+ RCPort rcPort = RCPort.createFromKey(portId);
+ try {
+ rcPort.read();
+
+ PortImpl port = new PortImpl(this);
+ //port.setDpid(dpid);
+
+ // TODO why are port numbers long?
+ //port.setPortNumber((short)rcPort.getNumber());
+
+ port.setSwitch(sw);
+ sw.addPort(port);
+
+ } catch (ObjectDoesntExistException e) {
+ log.warn("Tried to read port that doesn't exist", rcPort);
+ }
+ }
+
+ return sw;
+ }
+
+ @Override
+ public Iterable<Switch> getSwitches() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public Iterable<Link> getLinks() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public Iterable<Link> getLinksFromSwitch(long dpid) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public Iterable<Device> getDeviceByIp(InetAddress ipAddress) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public Iterable<Device> getDeviceByMac(MACAddress address) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+}