Merge branch 'master' of https://github.com/OPENNETWORKINGLAB/ONOS
Conflicts:
src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkStorageImpl.java
src/main/java/net/onrc/onos/util/GraphDBConnection.java
src/test/java/net/floodlightcontroller/linkdiscovery/internal/LinkStorageImplTest.java
diff --git a/cluster-mgmt/common/onos.properties b/cluster-mgmt/common/onos.properties
index 1828db7..9c3d557 100644
--- a/cluster-mgmt/common/onos.properties
+++ b/cluster-mgmt/common/onos.properties
@@ -8,11 +8,11 @@
net.floodlightcontroller.counter.CounterStore,\
net.floodlightcontroller.perfmon.PktInProcessingTime,\
net.floodlightcontroller.ui.web.StaticWebRoutable,\
-net.floodlightcontroller.onoslistener.OnosPublisher, \
+net.onrc.onos.ofcontroller.onoslistener.OnosPublisher, \
net.onrc.onos.registry.controller.ZookeeperRegistry
net.floodlightcontroller.restserver.RestApiServer.port = 8080
net.floodlightcontroller.core.FloodlightProvider.openflowport = 6633
net.floodlightcontroller.jython.JythonDebugInterface.port = 6655
net.floodlightcontroller.forwarding.Forwarding.idletimeout = 5
net.floodlightcontroller.forwarding.Forwarding.hardtimeout = 0
-net.floodlightcontroller.onoslistener.OnosPublisher.dbconf = /tmp/cassandra.titan
+net.onrc.onos.ofcontroller.onoslistener.OnosPublisher.dbconf = /tmp/cassandra.titan
diff --git a/conf/onos-embedded.properties b/conf/onos-embedded.properties
index 50c36f9..a328d2a 100644
--- a/conf/onos-embedded.properties
+++ b/conf/onos-embedded.properties
@@ -6,13 +6,12 @@
net.floodlightcontroller.counter.CounterStore,\
net.floodlightcontroller.perfmon.PktInProcessingTime,\
net.floodlightcontroller.ui.web.StaticWebRoutable,\
-net.floodlightcontroller.onoslistener.OnosPublisher, \
+net.onrc.onos.ofcontroller.onoslistener.OnosPublisher, \
net.onrc.onos.registry.controller.ZookeeperRegistry
net.floodlightcontroller.restserver.RestApiServer.port = 8080
net.floodlightcontroller.core.FloodlightProvider.openflowport = 6633
net.floodlightcontroller.core.FloodlightProvider.workerthreads = 48
-net.floodlightcontroller.jython.JythonDebugInterface.port = 6655
net.floodlightcontroller.forwarding.Forwarding.idletimeout = 5
net.floodlightcontroller.forwarding.Forwarding.hardtimeout = 0
-net.floodlightcontroller.onoslistener.OnosPublisher.dbconf = conf/titan-embedded.properties
+net.onrc.onos.ofcontroller.onoslistener.OnosPublisher.dbconf = conf/titan-embedded.properties
diff --git a/conf/onos.properties b/conf/onos.properties
index d186e54..7e060b7 100644
--- a/conf/onos.properties
+++ b/conf/onos.properties
@@ -6,12 +6,12 @@
net.floodlightcontroller.counter.CounterStore,\
net.floodlightcontroller.perfmon.PktInProcessingTime,\
net.floodlightcontroller.ui.web.StaticWebRoutable,\
-net.floodlightcontroller.onoslistener.OnosPublisher, \
+net.onrc.onos.ofcontroller.onoslistener.OnosPublisher, \
net.onrc.onos.registry.controller.ZookeeperRegistry
net.floodlightcontroller.restserver.RestApiServer.port = 8080
net.floodlightcontroller.core.FloodlightProvider.openflowport = 6633
net.floodlightcontroller.core.FloodlightProvider.workerthreads = 16
net.floodlightcontroller.forwarding.Forwarding.idletimeout = 5
net.floodlightcontroller.forwarding.Forwarding.hardtimeout = 0
-net.floodlightcontroller.onoslistener.OnosPublisher.dbconf = /tmp/cassandra.titan
+net.onrc.onos.ofcontroller.onoslistener.OnosPublisher.dbconf = /tmp/cassandra.titan
diff --git a/pom.xml b/pom.xml
index 0957c42..f39e7c2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -133,6 +133,12 @@
<groupId>com.thinkaurelius.titan</groupId>
<artifactId>titan-all</artifactId>
<version>0.2.1</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
<groupId>com.tinkerpop</groupId>
@@ -174,11 +180,6 @@
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
- <artifactId>logback-core</artifactId>
- <version>1.0.0</version>
- </dependency>
- <dependency>
- <groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.0.0</version>
<scope>runtime</scope>
diff --git a/src/main/java/net/floodlightcontroller/bgproute/GatewayRouter.java b/src/main/java/net/floodlightcontroller/bgproute/GatewayRouter.java
deleted file mode 100644
index 56d5243..0000000
--- a/src/main/java/net/floodlightcontroller/bgproute/GatewayRouter.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package net.floodlightcontroller.bgproute;
-
-import net.floodlightcontroller.util.IPv4;
-import net.floodlightcontroller.util.MACAddress;
-import net.floodlightcontroller.util.SwitchPort;
-
-public class GatewayRouter {
- private SwitchPort attachmentPoint;
- private MACAddress routerMac;
- private IPv4 routerIp;
-
- //For now, put in the IP and MAC of the SDN domain's router that this
- //gateway will be communicating with
- private MACAddress sdnRouterMac;
- private IPv4 sdnRouterIp;
-
- public GatewayRouter(SwitchPort attachmentPoint, MACAddress routerMac,
- IPv4 routerIp, MACAddress sdnRouterMac, IPv4 sdnRouterIp) {
- this.attachmentPoint = attachmentPoint;
- this.routerMac = routerMac;
- this.routerIp = routerIp;
- this.sdnRouterIp = sdnRouterIp;
- this.sdnRouterMac = sdnRouterMac;
- }
-
- public SwitchPort getAttachmentPoint() {
- return attachmentPoint;
- }
-
- public MACAddress getRouterMac() {
- return routerMac;
- }
-
- public IPv4 getRouterIp() {
- return routerIp;
- }
-
- //TODO delete if not needed
- public MACAddress getSdnRouterMac() {
- return sdnRouterMac;
- }
-
- public IPv4 getSdnRouterIp() {
- return sdnRouterIp;
- }
-}
diff --git a/src/main/java/net/floodlightcontroller/core/FloodlightProvider.java b/src/main/java/net/floodlightcontroller/core/FloodlightProvider.java
index cd15927..16fdd19 100644
--- a/src/main/java/net/floodlightcontroller/core/FloodlightProvider.java
+++ b/src/main/java/net/floodlightcontroller/core/FloodlightProvider.java
@@ -10,13 +10,13 @@
import net.floodlightcontroller.core.module.FloodlightModuleException;
import net.floodlightcontroller.core.module.IFloodlightModule;
import net.floodlightcontroller.core.module.IFloodlightService;
-import net.floodlightcontroller.core.INetMapTopologyService.ITopoRouteService;
import net.floodlightcontroller.counter.ICounterStoreService;
-import net.floodlightcontroller.flowcache.IFlowService;
import net.floodlightcontroller.perfmon.IPktInProcessingTimeService;
import net.floodlightcontroller.restserver.IRestApiService;
import net.floodlightcontroller.storage.IStorageSourceService;
import net.floodlightcontroller.threadpool.IThreadPoolService;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyService.ITopoRouteService;
+import net.onrc.onos.ofcontroller.flowcache.IFlowService;
import net.onrc.onos.registry.controller.IControllerRegistryService;
public class FloodlightProvider implements IFloodlightModule {
diff --git a/src/main/java/net/floodlightcontroller/core/INetMapService.java b/src/main/java/net/floodlightcontroller/core/INetMapService.java
deleted file mode 100644
index fcc542a..0000000
--- a/src/main/java/net/floodlightcontroller/core/INetMapService.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package net.floodlightcontroller.core;
-
-public interface INetMapService {
-
-}
diff --git a/src/main/java/net/floodlightcontroller/core/internal/Controller.java b/src/main/java/net/floodlightcontroller/core/internal/Controller.java
index dc421a4..878427a 100644
--- a/src/main/java/net/floodlightcontroller/core/internal/Controller.java
+++ b/src/main/java/net/floodlightcontroller/core/internal/Controller.java
@@ -54,20 +54,16 @@
import net.floodlightcontroller.core.IHAListener;
import net.floodlightcontroller.core.IInfoProvider;
import net.floodlightcontroller.core.IListener.Command;
-import net.floodlightcontroller.core.INetMapStorage.DM_OPERATION;
-import net.floodlightcontroller.core.INetMapTopologyService.ITopoRouteService;
import net.floodlightcontroller.core.IOFMessageListener;
import net.floodlightcontroller.core.IOFSwitch;
import net.floodlightcontroller.core.IOFSwitchFilter;
import net.floodlightcontroller.core.IOFSwitchListener;
-import net.floodlightcontroller.core.ISwitchStorage.SwitchState;
import net.floodlightcontroller.core.annotations.LogMessageDoc;
import net.floodlightcontroller.core.annotations.LogMessageDocs;
import net.floodlightcontroller.core.internal.OFChannelState.HandshakeState;
import net.floodlightcontroller.core.util.ListenerDispatcher;
import net.floodlightcontroller.core.web.CoreWebRoutable;
import net.floodlightcontroller.counter.ICounterStoreService;
-import net.floodlightcontroller.flowcache.IFlowService;
import net.floodlightcontroller.packet.Ethernet;
import net.floodlightcontroller.perfmon.IPktInProcessingTimeService;
import net.floodlightcontroller.restserver.IRestApiService;
@@ -77,6 +73,10 @@
import net.floodlightcontroller.storage.OperatorPredicate;
import net.floodlightcontroller.storage.StorageException;
import net.floodlightcontroller.threadpool.IThreadPoolService;
+import net.onrc.onos.ofcontroller.core.INetMapStorage.DM_OPERATION;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyService.ITopoRouteService;
+import net.onrc.onos.ofcontroller.core.ISwitchStorage.SwitchState;
+import net.onrc.onos.ofcontroller.flowcache.IFlowService;
import net.onrc.onos.registry.controller.IControllerRegistryService;
import net.onrc.onos.registry.controller.IControllerRegistryService.ControlChangeCallback;
import net.onrc.onos.registry.controller.RegistryException;
diff --git a/src/main/java/net/floodlightcontroller/core/internal/TopoSwitchServiceImpl.java b/src/main/java/net/floodlightcontroller/core/internal/TopoSwitchServiceImpl.java
deleted file mode 100644
index 502fad6..0000000
--- a/src/main/java/net/floodlightcontroller/core/internal/TopoSwitchServiceImpl.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package net.floodlightcontroller.core.internal;
-
-import net.floodlightcontroller.core.INetMapTopologyObjects.IPortObject;
-import net.floodlightcontroller.core.INetMapTopologyObjects.ISwitchObject;
-import net.floodlightcontroller.core.INetMapTopologyService.ITopoSwitchService;
-import net.onrc.onos.util.GraphDBConnection;
-import net.onrc.onos.util.GraphDBConnection.Transaction;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class TopoSwitchServiceImpl implements ITopoSwitchService {
-
- private GraphDBConnection conn;
- protected static Logger log = LoggerFactory.getLogger(TopoSwitchServiceImpl.class);
-
-
- public void finalize() {
- close();
- }
-
- @Override
- public void close() {
-
- conn.close();
- }
-
- @Override
- public Iterable<ISwitchObject> getActiveSwitches() {
- // TODO Auto-generated method stub
- conn = GraphDBConnection.getInstance("/tmp/cassandra.titan");
- conn.close(); //Commit to ensure we see latest data
- return conn.utils().getActiveSwitches(conn);
- }
-
- @Override
- public Iterable<ISwitchObject> getAllSwitches() {
- // TODO Auto-generated method stub
- conn = GraphDBConnection.getInstance("/tmp/cassandra.titan");
- conn.close(); //Commit to ensure we see latest data
- return conn.utils().getAllSwitches(conn);
- }
-
- @Override
- public Iterable<ISwitchObject> getInactiveSwitches() {
- // TODO Auto-generated method stub
- conn = GraphDBConnection.getInstance("/tmp/cassandra.titan");
- conn.close(); //Commit to ensure we see latest data
- return conn.utils().getInactiveSwitches(conn);
- }
-
- @Override
- public Iterable<IPortObject> getPortsOnSwitch(String dpid) {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public IPortObject getPortOnSwitch(String dpid, short port_num) {
- // TODO Auto-generated method stub
- return null;
- }
-}
diff --git a/src/main/java/net/floodlightcontroller/core/web/CoreWebRoutable.java b/src/main/java/net/floodlightcontroller/core/web/CoreWebRoutable.java
index 00b692f..95053bd 100644
--- a/src/main/java/net/floodlightcontroller/core/web/CoreWebRoutable.java
+++ b/src/main/java/net/floodlightcontroller/core/web/CoreWebRoutable.java
@@ -18,9 +18,11 @@
package net.floodlightcontroller.core.web;
import net.floodlightcontroller.core.module.ModuleLoaderResource;
-import net.floodlightcontroller.linkdiscovery.web.TopoLinksResource;
-import net.floodlightcontroller.devicemanager.web.TopoDevicesResource;
import net.floodlightcontroller.restserver.RestletRoutable;
+import net.onrc.onos.ofcontroller.core.web.ClearFlowTableResource;
+import net.onrc.onos.ofcontroller.core.web.TopoSwitchesResource;
+import net.onrc.onos.ofcontroller.devicemanager.web.TopoDevicesResource;
+import net.onrc.onos.ofcontroller.linkdiscovery.web.TopoLinksResource;
import org.restlet.Context;
import org.restlet.Restlet;
diff --git a/src/main/java/net/floodlightcontroller/devicemanager/web/TopoDevicesResource.java b/src/main/java/net/floodlightcontroller/devicemanager/web/TopoDevicesResource.java
deleted file mode 100644
index db7059f..0000000
--- a/src/main/java/net/floodlightcontroller/devicemanager/web/TopoDevicesResource.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package net.floodlightcontroller.devicemanager.web;
-
-import java.util.Iterator;
-
-import net.floodlightcontroller.core.INetMapTopologyObjects.IDeviceObject;
-import net.onrc.onos.util.GraphDBConnection;
-
-import org.restlet.resource.Get;
-import org.restlet.resource.ServerResource;
-
-public class TopoDevicesResource extends ServerResource {
-
- @Get("json")
- public Iterator<IDeviceObject> retrieve() {
-
- GraphDBConnection conn = GraphDBConnection.getInstance("");
-
- return conn.utils().getDevices(conn).iterator();
-
- }
-
-}
diff --git a/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkStorageImpl.java b/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkStorageImpl.java
index 6422666..5a9bce2 100644
--- a/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkStorageImpl.java
+++ b/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkStorageImpl.java
@@ -3,13 +3,13 @@
import java.util.ArrayList;
import java.util.List;
-import net.floodlightcontroller.core.INetMapTopologyObjects.IPortObject;
-import net.floodlightcontroller.core.INetMapTopologyObjects.ISwitchObject;
-import net.floodlightcontroller.linkdiscovery.ILinkStorage;
import net.floodlightcontroller.linkdiscovery.LinkInfo;
import net.floodlightcontroller.routing.Link;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IPortObject;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.ISwitchObject;
+import net.onrc.onos.ofcontroller.linkdiscovery.ILinkStorage;
import net.onrc.onos.util.GraphDBConnection;
-import net.onrc.onos.util.GraphDBConnection.Transaction;
+import net.onrc.onos.util.GraphDBOperation;
import org.openflow.util.HexString;
import org.slf4j.Logger;
@@ -26,7 +26,7 @@
public class LinkStorageImpl implements ILinkStorage {
protected static Logger log = LoggerFactory.getLogger(LinkStorageImpl.class);
- protected String conf;
+ protected GraphDBOperation dbop;
/**
* Update a record in the LinkStorage in a way provided by op.
@@ -77,7 +77,6 @@
* @param op Operation to be done. (only INSERT/CREATE/UPDATE is acceptable)
*/
public void updateLink(Link lt, LinkInfo linkinfo, DM_OPERATION op) {
- GraphDBConnection conn = GraphDBConnection.getInstance(this.conf);
IPortObject vportSrc = null, vportDst = null;
log.trace("updateLink(): op {} {} {}", new Object[]{op, lt, linkinfo});
@@ -86,12 +85,12 @@
// get source port vertex
String dpid = HexString.toHexString(lt.getSrc());
short port = lt.getSrcPort();
- vportSrc = conn.utils().searchPort(conn, dpid, port);
+ vportSrc = dbop.searchPort(dpid, port);
// get dest port vertex
dpid = HexString.toHexString(lt.getDst());
port = lt.getDstPort();
- vportDst = conn.utils().searchPort(conn, dpid, port);
+ vportDst = dbop.searchPort(dpid, port);
if (vportSrc != null && vportDst != null) {
// check if the link exists
@@ -111,12 +110,12 @@
} else {
vportSrc.setLinkPort(vportDst);
- conn.endTx(Transaction.COMMIT);
+ dbop.commit();
log.debug("updateLink(): link added {} {} src {} dst {}", new Object[]{op, lt, vportSrc, vportDst});
}
} else {
log.error("updateLink(): failed invalid vertices {} {} src {} dst {}", new Object[]{op, lt, vportSrc, vportDst});
- conn.endTx(Transaction.ROLLBACK);
+ dbop.rollback();
}
} catch (TitanException e) {
/*
@@ -145,7 +144,6 @@
*/
@Override
public void deleteLink(Link lt) {
- GraphDBConnection conn = GraphDBConnection.getInstance(this.conf);
IPortObject vportSrc = null, vportDst = null;
int count = 0;
@@ -155,12 +153,12 @@
// get source port vertex
String dpid = HexString.toHexString(lt.getSrc());
short port = lt.getSrcPort();
- vportSrc = conn.utils().searchPort(conn, dpid, port);
+ vportSrc = dbop.searchPort(dpid, port);
// get dst port vertex
dpid = HexString.toHexString(lt.getDst());
port = lt.getDstPort();
- vportDst = conn.utils().searchPort(conn, dpid, port);
+ vportDst = dbop.searchPort(dpid, port);
// FIXME: This needs to remove all edges
if (vportSrc != null && vportDst != null) {
@@ -174,14 +172,13 @@
}
}*/
vportSrc.removeLink(vportDst);
-
- conn.endTx(Transaction.COMMIT);
+ dbop.commit();
log.debug("deleteLink(): deleted edges src {} dst {}", new Object[]{
lt, vportSrc, vportDst});
} else {
log.error("deleteLink(): failed invalid vertices {} src {} dst {}", new Object[]{lt, vportSrc, vportDst});
- conn.endTx(Transaction.ROLLBACK);
+ dbop.rollback();
}
} catch (TitanException e) {
@@ -189,7 +186,7 @@
* retry till we succeed?
*/
log.error("deleteLink(): titan exception {} {}", new Object[]{lt, e.toString()});
- conn.endTx(Transaction.ROLLBACK);
+ dbop.rollback();
e.printStackTrace();
}
}
@@ -203,14 +200,11 @@
// TODO: Fix me
@Override
public List<Link> getLinks(Long dpid, short port) {
- GraphDBConnection conn = GraphDBConnection.getInstance(this.conf);
- IPortObject vportSrc;
-
- List<Link> links = new ArrayList<Link>();
+ IPortObject vportSrc, vportDst;
+ List<Link> links = null;
+ Link lt;
- // BEGIN: Trial code
- // author: Naoki Shiota
- vportSrc = conn.utils().searchPort(conn, HexString.toHexString(dpid), port);
+ vportSrc = dbop.searchPort(HexString.toHexString(dpid), port);
if (vportSrc != null) {
for (Edge e : vportSrc.asVertex().getEdges(Direction.IN)) {
@@ -241,9 +235,7 @@
@Override
public void init(String conf) {
//TODO extract the DB location from properties
-
- this.conf = conf;
-
+ this.dbop = new GraphDBOperation(GraphDBConnection.getInstance(conf));
}
/**
@@ -295,10 +287,7 @@
* @return List of active links. Empty list if no port was found.
*/
public List<Link> getActiveLinks() {
-
- GraphDBConnection conn = GraphDBConnection.getInstance(this.conf);
-
- Iterable<ISwitchObject> switches = conn.utils().getActiveSwitches(conn);
+ Iterable<ISwitchObject> switches = dbop.getActiveSwitches();
List<Link> links = new ArrayList<Link>();
for (ISwitchObject sw : switches) {
@@ -318,10 +307,8 @@
return links;
}
- /**
- * PipeFunction object to extract link from given "switch-port-port-switch" Path.
- */
- static class ExtractLink implements PipeFunction<PathPipe<Vertex>, Link> {
+ // FIXME Scope changed to public to allow access from TopoLinkServiceImpl. Move class definition to appropriate place.
+ static public class ExtractLink implements PipeFunction<PathPipe<Vertex>, Link> {
@Override
public Link compute(PathPipe<Vertex> pipe ) {
diff --git a/src/main/java/net/floodlightcontroller/topology/TopologyManager.java b/src/main/java/net/floodlightcontroller/topology/TopologyManager.java
index 958fc84..27f4df2 100644
--- a/src/main/java/net/floodlightcontroller/topology/TopologyManager.java
+++ b/src/main/java/net/floodlightcontroller/topology/TopologyManager.java
@@ -17,7 +17,6 @@
import net.floodlightcontroller.core.FloodlightContext;
import net.floodlightcontroller.core.IFloodlightProviderService;
import net.floodlightcontroller.core.IFloodlightProviderService.Role;
-import net.floodlightcontroller.core.INetMapStorage.DM_OPERATION;
import net.floodlightcontroller.core.IOFMessageListener;
import net.floodlightcontroller.core.IOFSwitch;
import net.floodlightcontroller.core.IHAListener;
@@ -40,6 +39,7 @@
import net.floodlightcontroller.routing.Route;
import net.floodlightcontroller.threadpool.IThreadPoolService;
import net.floodlightcontroller.topology.web.TopologyWebRoutable;
+import net.onrc.onos.ofcontroller.core.INetMapStorage.DM_OPERATION;
import org.openflow.protocol.OFMessage;
import org.openflow.protocol.OFPacketIn;
diff --git a/src/main/java/net/floodlightcontroller/topology/web/RouteResource.java b/src/main/java/net/floodlightcontroller/topology/web/RouteResource.java
index 20f39d4..906a579 100644
--- a/src/main/java/net/floodlightcontroller/topology/web/RouteResource.java
+++ b/src/main/java/net/floodlightcontroller/topology/web/RouteResource.java
@@ -2,14 +2,14 @@
import java.util.List;
-import net.floodlightcontroller.core.INetMapTopologyService.ITopoRouteService;
import net.floodlightcontroller.routing.IRoutingService;
import net.floodlightcontroller.routing.Route;
import net.floodlightcontroller.topology.NodePortTuple;
-import net.floodlightcontroller.util.DataPath;
-import net.floodlightcontroller.util.Dpid;
-import net.floodlightcontroller.util.Port;
-import net.floodlightcontroller.util.SwitchPort;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyService.ITopoRouteService;
+import net.onrc.onos.ofcontroller.util.DataPath;
+import net.onrc.onos.ofcontroller.util.Dpid;
+import net.onrc.onos.ofcontroller.util.Port;
+import net.onrc.onos.ofcontroller.util.SwitchPort;
import org.openflow.util.HexString;
import org.restlet.resource.Get;
diff --git a/src/main/java/net/floodlightcontroller/util/MACAddress.java b/src/main/java/net/floodlightcontroller/util/MACAddress.java
index 743dc5b..1bc137c 100644
--- a/src/main/java/net/floodlightcontroller/util/MACAddress.java
+++ b/src/main/java/net/floodlightcontroller/util/MACAddress.java
@@ -2,8 +2,8 @@
import java.util.Arrays;
-import net.floodlightcontroller.util.serializers.MACAddressDeserializer;
-import net.floodlightcontroller.util.serializers.MACAddressSerializer;
+import net.onrc.onos.ofcontroller.util.serializers.MACAddressDeserializer;
+import net.onrc.onos.ofcontroller.util.serializers.MACAddressSerializer;
import org.codehaus.jackson.annotate.JsonProperty;
import org.codehaus.jackson.map.annotate.JsonDeserialize;
diff --git a/src/main/java/net/onrc/onos/flow/FlowManagerImpl.java b/src/main/java/net/onrc/onos/flow/FlowManagerImpl.java
index b8b3303..dafbf32 100644
--- a/src/main/java/net/onrc/onos/flow/FlowManagerImpl.java
+++ b/src/main/java/net/onrc/onos/flow/FlowManagerImpl.java
@@ -17,27 +17,28 @@
import com.tinkerpop.blueprints.Direction;
import com.tinkerpop.blueprints.Vertex;
-import net.floodlightcontroller.core.INetMapTopologyObjects.IFlowEntry;
-import net.floodlightcontroller.core.INetMapTopologyObjects.IFlowPath;
-import net.floodlightcontroller.core.INetMapTopologyObjects.IPortObject;
-import net.floodlightcontroller.core.ISwitchStorage.SwitchState;
import net.floodlightcontroller.core.IOFSwitch;
-import net.floodlightcontroller.util.DataPath;
-import net.floodlightcontroller.util.Dpid;
-import net.floodlightcontroller.util.FlowEntry;
-import net.floodlightcontroller.util.FlowEntryAction;
-import net.floodlightcontroller.util.FlowEntryMatch;
-import net.floodlightcontroller.util.FlowPath;
-import net.floodlightcontroller.util.Port;
-import net.floodlightcontroller.util.SwitchPort;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IFlowEntry;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IFlowPath;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IPortObject;
+import net.onrc.onos.ofcontroller.core.ISwitchStorage.SwitchState;
+import net.onrc.onos.ofcontroller.util.DataPath;
+import net.onrc.onos.ofcontroller.util.Dpid;
+import net.onrc.onos.ofcontroller.util.FlowEntry;
+import net.onrc.onos.ofcontroller.util.FlowEntryAction;
+import net.onrc.onos.ofcontroller.util.FlowEntryMatch;
+import net.onrc.onos.ofcontroller.util.FlowPath;
+import net.onrc.onos.ofcontroller.util.Port;
+import net.onrc.onos.ofcontroller.util.SwitchPort;
import net.onrc.onos.util.GraphDBConnection;
+import net.onrc.onos.util.GraphDBOperation;
import net.onrc.onos.util.LocalTopologyEventListener;
import net.onrc.onos.util.GraphDBConnection.Transaction;
public class FlowManagerImpl implements IFlowManager {
protected static Logger log = LoggerFactory.getLogger(LocalTopologyEventListener.class);
- protected static GraphDBConnection conn;
+ protected GraphDBOperation op;
@Override
public void createFlow(IPortObject src_port, IPortObject dest_port) {
@@ -87,8 +88,8 @@
Short dst_port = flow.getDstPort();
IPortObject src = null;
IPortObject dst = null;
- src = conn.utils().searchPort(conn, src_dpid, src_port);
- dst = conn.utils().searchPort(conn, dst_dpid, dst_port);
+ src = op.searchPort(src_dpid, src_port);
+ dst = op.searchPort(dst_dpid, dst_port);
if (src != null && dst != null) {
FlowPath newFlow = this.computeFlowPath(src,dst);
installFlow(newFlow);
diff --git a/src/main/java/net/onrc/onos/flow/IFlowManager.java b/src/main/java/net/onrc/onos/flow/IFlowManager.java
index 743f8fb..4063a7a 100644
--- a/src/main/java/net/onrc/onos/flow/IFlowManager.java
+++ b/src/main/java/net/onrc/onos/flow/IFlowManager.java
@@ -3,9 +3,9 @@
import java.util.Map;
import net.floodlightcontroller.core.IOFSwitch;
-import net.floodlightcontroller.core.INetMapTopologyObjects.IPortObject;
-import net.floodlightcontroller.util.FlowEntry;
-import net.floodlightcontroller.util.FlowPath;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IPortObject;
+import net.onrc.onos.ofcontroller.util.FlowEntry;
+import net.onrc.onos.ofcontroller.util.FlowPath;
public interface IFlowManager {
/**
diff --git a/src/main/java/net/floodlightcontroller/bgproute/BgpRoute.java b/src/main/java/net/onrc/onos/ofcontroller/bgproute/BgpRoute.java
similarity index 87%
rename from src/main/java/net/floodlightcontroller/bgproute/BgpRoute.java
rename to src/main/java/net/onrc/onos/ofcontroller/bgproute/BgpRoute.java
index 517126c..486d057 100644
--- a/src/main/java/net/floodlightcontroller/bgproute/BgpRoute.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/bgproute/BgpRoute.java
@@ -1,5 +1,6 @@
-package net.floodlightcontroller.bgproute;
+package net.onrc.onos.ofcontroller.bgproute;
+import java.io.File;
import java.io.IOException;
import java.net.InetAddress;
import java.net.UnknownHostException;
@@ -12,7 +13,6 @@
import java.util.Set;
import net.floodlightcontroller.core.IFloodlightProviderService;
-import net.floodlightcontroller.core.INetMapTopologyService.ITopoRouteService;
import net.floodlightcontroller.core.IOFSwitch;
import net.floodlightcontroller.core.module.FloodlightModuleContext;
import net.floodlightcontroller.core.module.FloodlightModuleException;
@@ -24,17 +24,19 @@
import net.floodlightcontroller.restserver.IRestApiService;
import net.floodlightcontroller.topology.ITopologyListener;
import net.floodlightcontroller.topology.ITopologyService;
-import net.floodlightcontroller.util.DataPath;
-import net.floodlightcontroller.util.Dpid;
-import net.floodlightcontroller.util.FlowEntry;
-import net.floodlightcontroller.util.IPv4;
-import net.floodlightcontroller.util.MACAddress;
-import net.floodlightcontroller.util.Port;
-import net.floodlightcontroller.util.SwitchPort;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyService.ITopoRouteService;
+import net.onrc.onos.ofcontroller.util.DataPath;
+import net.onrc.onos.ofcontroller.util.FlowEntry;
+import net.onrc.onos.ofcontroller.util.Port;
+import net.onrc.onos.ofcontroller.util.SwitchPort;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JSONSerializer;
+import org.codehaus.jackson.JsonParseException;
+import org.codehaus.jackson.map.JsonMappingException;
+import org.codehaus.jackson.map.ObjectMapper;
+import org.codehaus.jackson.type.TypeReference;
import org.openflow.protocol.OFFlowMod;
import org.openflow.protocol.OFMatch;
import org.openflow.protocol.OFMessage;
@@ -61,6 +63,7 @@
protected static Ptree ptree;
protected String bgpdRestIp;
protected String routerId;
+ protected String gatewaysFilename = "gateways.json";
protected Set<InetAddress> routerIpAddresses;
@@ -75,43 +78,27 @@
//need to be higher priority than this otherwise the rewrite may not get done
protected final short SDNIP_PRIORITY = 10;
- //TODO temporary
- protected List<GatewayRouter> gatewayRouters;
+ protected Map<String, GatewayRouter> gatewayRouters;
- private void initGateways(){
- gatewayRouters = new ArrayList<GatewayRouter>();
- //00:00:00:00:00:00:0s0:a3 port 1
- gatewayRouters.add(
- new GatewayRouter(new SwitchPort(new Dpid(163L), new Port((short)1)),
- new MACAddress(new byte[] {0x00, 0x00, 0x00, 0x00, 0x02, 0x01}),
- new IPv4("192.168.10.1"),
- new MACAddress(new byte[] {0x00, 0x00, 0x00, 0x00, 0x00, 0x01}),
- new IPv4("192.168.10.101")));
- //00:00:00:00:00:00:00:a5 port 1
- //gatewayRouters.add(new SwitchPort(new Dpid(165L), new Port((short)1)));
- gatewayRouters.add(
- new GatewayRouter(new SwitchPort(new Dpid(165L), new Port((short)1)),
- new MACAddress(new byte[] {0x00, 0x00, 0x00, 0x00, 0x02, 0x02}),
- new IPv4("192.168.20.1"),
- new MACAddress(new byte[] {0x00, 0x00, 0x00, 0x00, 0x00, 0x02}),
- new IPv4("192.168.20.101")));
- //00:00:00:00:00:00:00:a2 port 1
- //gatewayRouters.add(new SwitchPort(new Dpid(162L), new Port((short)1)));
- gatewayRouters.add(
- new GatewayRouter(new SwitchPort(new Dpid(162L), new Port((short)1)),
- new MACAddress(new byte[] {0x00, 0x00, 0x00, 0x00, 0x03, 0x01}),
- new IPv4("192.168.30.1"),
- new MACAddress(new byte[] {0x00, 0x00, 0x00, 0x00, 0x00, 0x03}),
- new IPv4("192.168.30.101")));
- //00:00:00:00:00:00:00:a6
- //gatewayRouters.add(new SwitchPort(new Dpid(166L), new Port((short)1)));
- gatewayRouters.add(
- new GatewayRouter(new SwitchPort(new Dpid(166L), new Port((short)1)),
- new MACAddress(new byte[] {0x00, 0x00, 0x00, 0x00, 0x04, 0x01}),
- new IPv4("192.168.40.1"),
- new MACAddress(new byte[] {0x00, 0x00, 0x00, 0x00, 0x00, 0x04}),
- new IPv4("192.168.40.101")));
+ private void readGatewaysConfiguration(String gatewaysFilename){
+ File gatewaysFile = new File(gatewaysFilename);
+ ObjectMapper mapper = new ObjectMapper();
+ TypeReference<HashMap<String, GatewayRouter>> typeref
+ = new TypeReference<HashMap<String, GatewayRouter>>() {};
+
+ try {
+ gatewayRouters = mapper.readValue(gatewaysFile, typeref);
+ } catch (JsonParseException e) {
+ log.error("Error in JSON file", e);
+ System.exit(1);
+ } catch (JsonMappingException e) {
+ log.error("Error in JSON file", e);
+ System.exit(1);
+ } catch (IOException e) {
+ log.error("Error reading JSON file", e);
+ System.exit(1);
+ }
}
@Override
@@ -146,8 +133,6 @@
public void init(FloodlightModuleContext context)
throws FloodlightModuleException {
- initGateways();
-
ptree = new Ptree(32);
routerIpAddresses = new HashSet<InetAddress>();
@@ -177,6 +162,8 @@
else {
log.info("RouterId set to {}", routerId);
}
+
+ readGatewaysConfiguration(gatewaysFilename);
// Test.
//test();
}
@@ -332,14 +319,8 @@
public void prefixAdded(PtreeNode node) {
//Add a flow to rewrite mac for this prefix to all border switches
- GatewayRouter thisRouter = null;
- for (GatewayRouter router : gatewayRouters){
- if (router.getRouterIp().value() ==
- InetAddresses.coerceToInteger(node.rib.nextHop)){
- thisRouter = router;
- break;
- }
- }
+ GatewayRouter thisRouter = gatewayRouters
+ .get(InetAddresses.toAddrString(node.rib.nextHop));
if (thisRouter == null){
//TODO local router isn't in gateway list so this will get thrown
@@ -349,7 +330,7 @@
return; //just quit out here? This is probably a configuration error
}
- for (GatewayRouter ingressRouter : gatewayRouters){
+ for (GatewayRouter ingressRouter : gatewayRouters.values()){
if (ingressRouter == thisRouter) {
continue;
}
@@ -457,8 +438,7 @@
//have to account for switches not being there, paths not being found.
- //for (SwitchPort switchPort : gatewayRouters){
- for (GatewayRouter router : gatewayRouters){
+ for (GatewayRouter router : gatewayRouters.values()){
SwitchPort switchPort = router.getAttachmentPoint();
IOFSwitch sw = floodlightProvider.getSwitches().get(switchPort.dpid().value());
@@ -483,7 +463,7 @@
//for each prefix received. This will be done later when prefixes have
//actually been received.
- for (GatewayRouter dstRouter : gatewayRouters){
+ for (GatewayRouter dstRouter : gatewayRouters.values()){
SwitchPort routerAttachmentPoint = dstRouter.getAttachmentPoint();
for (Map.Entry<IOFSwitch, SwitchPort> src : gatewaySwitches.entrySet()) {
diff --git a/src/main/java/net/floodlightcontroller/bgproute/BgpRouteResource.java b/src/main/java/net/onrc/onos/ofcontroller/bgproute/BgpRouteResource.java
similarity index 98%
rename from src/main/java/net/floodlightcontroller/bgproute/BgpRouteResource.java
rename to src/main/java/net/onrc/onos/ofcontroller/bgproute/BgpRouteResource.java
index 4ad1e95..34c5c43b 100644
--- a/src/main/java/net/floodlightcontroller/bgproute/BgpRouteResource.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/bgproute/BgpRouteResource.java
@@ -1,4 +1,4 @@
-package net.floodlightcontroller.bgproute;
+package net.onrc.onos.ofcontroller.bgproute;
import java.net.UnknownHostException;
diff --git a/src/main/java/net/floodlightcontroller/bgproute/BgpRouteResourceSynch.java b/src/main/java/net/onrc/onos/ofcontroller/bgproute/BgpRouteResourceSynch.java
similarity index 97%
rename from src/main/java/net/floodlightcontroller/bgproute/BgpRouteResourceSynch.java
rename to src/main/java/net/onrc/onos/ofcontroller/bgproute/BgpRouteResourceSynch.java
index ff7aea6..543827d 100644
--- a/src/main/java/net/floodlightcontroller/bgproute/BgpRouteResourceSynch.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/bgproute/BgpRouteResourceSynch.java
@@ -1,4 +1,4 @@
-package net.floodlightcontroller.bgproute;
+package net.onrc.onos.ofcontroller.bgproute;
import org.restlet.resource.Post;
diff --git a/src/main/java/net/floodlightcontroller/bgproute/BgpRouteWebRoutable.java b/src/main/java/net/onrc/onos/ofcontroller/bgproute/BgpRouteWebRoutable.java
similarity index 94%
rename from src/main/java/net/floodlightcontroller/bgproute/BgpRouteWebRoutable.java
rename to src/main/java/net/onrc/onos/ofcontroller/bgproute/BgpRouteWebRoutable.java
index a18c550..669c385 100644
--- a/src/main/java/net/floodlightcontroller/bgproute/BgpRouteWebRoutable.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/bgproute/BgpRouteWebRoutable.java
@@ -1,4 +1,4 @@
-package net.floodlightcontroller.bgproute;
+package net.onrc.onos.ofcontroller.bgproute;
import org.restlet.Context;
import org.restlet.Restlet;
diff --git a/src/main/java/net/onrc/onos/ofcontroller/bgproute/GatewayRouter.java b/src/main/java/net/onrc/onos/ofcontroller/bgproute/GatewayRouter.java
new file mode 100644
index 0000000..4016c69
--- /dev/null
+++ b/src/main/java/net/onrc/onos/ofcontroller/bgproute/GatewayRouter.java
@@ -0,0 +1,62 @@
+package net.onrc.onos.ofcontroller.bgproute;
+
+import net.floodlightcontroller.util.MACAddress;
+import net.onrc.onos.ofcontroller.util.Dpid;
+import net.onrc.onos.ofcontroller.util.IPv4;
+import net.onrc.onos.ofcontroller.util.Port;
+import net.onrc.onos.ofcontroller.util.SwitchPort;
+
+import org.codehaus.jackson.annotate.JsonProperty;
+import org.openflow.util.HexString;
+
+public class GatewayRouter {
+ private SwitchPort attachmentPoint = null;
+ private long dpid;
+ private short port;
+ private MACAddress routerMac;
+ private IPv4 routerIp;
+
+
+ public SwitchPort getAttachmentPoint() {
+ if (attachmentPoint == null){
+ attachmentPoint = new SwitchPort(new Dpid(dpid), new Port(port));
+ }
+ return attachmentPoint;
+ }
+
+ public long getDpid() {
+ return dpid;
+ }
+
+ @JsonProperty("attachmentDpid")
+ public void setDpid(String dpid) {
+ this.dpid = HexString.toLong(dpid);
+ }
+
+ public short getPort() {
+ return port;
+ }
+
+ @JsonProperty("attachmentPort")
+ public void setPort(short port) {
+ this.port = port;
+ }
+
+ public MACAddress getRouterMac() {
+ return routerMac;
+ }
+
+ @JsonProperty("macAddress")
+ public void setRouterMac(String routerMac) {
+ this.routerMac = MACAddress.valueOf(routerMac);;
+ }
+
+ public IPv4 getRouterIp() {
+ return routerIp;
+ }
+
+ @JsonProperty("ipAddress")
+ public void setRouterIp(String routerIp) {
+ this.routerIp = new IPv4(routerIp);
+ }
+}
diff --git a/src/main/java/net/floodlightcontroller/bgproute/IBgpRouteService.java b/src/main/java/net/onrc/onos/ofcontroller/bgproute/IBgpRouteService.java
similarity index 90%
rename from src/main/java/net/floodlightcontroller/bgproute/IBgpRouteService.java
rename to src/main/java/net/onrc/onos/ofcontroller/bgproute/IBgpRouteService.java
index 0e95d9e..c84a415 100644
--- a/src/main/java/net/floodlightcontroller/bgproute/IBgpRouteService.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/bgproute/IBgpRouteService.java
@@ -1,4 +1,4 @@
-package net.floodlightcontroller.bgproute;
+package net.onrc.onos.ofcontroller.bgproute;
import net.floodlightcontroller.core.module.IFloodlightService;
diff --git a/src/main/java/net/floodlightcontroller/bgproute/Prefix.java b/src/main/java/net/onrc/onos/ofcontroller/bgproute/Prefix.java
similarity index 94%
rename from src/main/java/net/floodlightcontroller/bgproute/Prefix.java
rename to src/main/java/net/onrc/onos/ofcontroller/bgproute/Prefix.java
index 980646f..c3baa37 100644
--- a/src/main/java/net/floodlightcontroller/bgproute/Prefix.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/bgproute/Prefix.java
@@ -1,4 +1,4 @@
-package net.floodlightcontroller.bgproute;
+package net.onrc.onos.ofcontroller.bgproute;
import java.net.InetAddress;
import java.net.UnknownHostException;
diff --git a/src/main/java/net/floodlightcontroller/bgproute/Ptree.java b/src/main/java/net/onrc/onos/ofcontroller/bgproute/Ptree.java
similarity index 98%
rename from src/main/java/net/floodlightcontroller/bgproute/Ptree.java
rename to src/main/java/net/onrc/onos/ofcontroller/bgproute/Ptree.java
index dcb6e83..6741a41 100644
--- a/src/main/java/net/floodlightcontroller/bgproute/Ptree.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/bgproute/Ptree.java
@@ -1,4 +1,4 @@
-package net.floodlightcontroller.bgproute;
+package net.onrc.onos.ofcontroller.bgproute;
public class Ptree {
int maxKeyBits;
diff --git a/src/main/java/net/floodlightcontroller/bgproute/PtreeNode.java b/src/main/java/net/onrc/onos/ofcontroller/bgproute/PtreeNode.java
similarity index 95%
rename from src/main/java/net/floodlightcontroller/bgproute/PtreeNode.java
rename to src/main/java/net/onrc/onos/ofcontroller/bgproute/PtreeNode.java
index 4d2c265..a4d6996 100644
--- a/src/main/java/net/floodlightcontroller/bgproute/PtreeNode.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/bgproute/PtreeNode.java
@@ -1,4 +1,4 @@
-package net.floodlightcontroller.bgproute;
+package net.onrc.onos.ofcontroller.bgproute;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/src/main/java/net/floodlightcontroller/bgproute/RestClient.java b/src/main/java/net/onrc/onos/ofcontroller/bgproute/RestClient.java
similarity index 98%
rename from src/main/java/net/floodlightcontroller/bgproute/RestClient.java
rename to src/main/java/net/onrc/onos/ofcontroller/bgproute/RestClient.java
index ef5e38b..f6f1a03 100644
--- a/src/main/java/net/floodlightcontroller/bgproute/RestClient.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/bgproute/RestClient.java
@@ -1,4 +1,4 @@
-package net.floodlightcontroller.bgproute;
+package net.onrc.onos.ofcontroller.bgproute;
import java.io.BufferedReader;
import java.io.IOException;
diff --git a/src/main/java/net/floodlightcontroller/bgproute/Rib.java b/src/main/java/net/onrc/onos/ofcontroller/bgproute/Rib.java
similarity index 95%
rename from src/main/java/net/floodlightcontroller/bgproute/Rib.java
rename to src/main/java/net/onrc/onos/ofcontroller/bgproute/Rib.java
index 574e820..dc5f71d 100644
--- a/src/main/java/net/floodlightcontroller/bgproute/Rib.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/bgproute/Rib.java
@@ -1,4 +1,4 @@
-package net.floodlightcontroller.bgproute;
+package net.onrc.onos.ofcontroller.bgproute;
import java.net.InetAddress;
import java.net.UnknownHostException;
diff --git a/src/main/java/net/onrc/onos/ofcontroller/core/INetMapService.java b/src/main/java/net/onrc/onos/ofcontroller/core/INetMapService.java
new file mode 100644
index 0000000..8392a32
--- /dev/null
+++ b/src/main/java/net/onrc/onos/ofcontroller/core/INetMapService.java
@@ -0,0 +1,5 @@
+package net.onrc.onos.ofcontroller.core;
+
+public interface INetMapService {
+
+}
diff --git a/src/main/java/net/floodlightcontroller/core/INetMapStorage.java b/src/main/java/net/onrc/onos/ofcontroller/core/INetMapStorage.java
similarity index 90%
rename from src/main/java/net/floodlightcontroller/core/INetMapStorage.java
rename to src/main/java/net/onrc/onos/ofcontroller/core/INetMapStorage.java
index 67c6631..b052540 100644
--- a/src/main/java/net/floodlightcontroller/core/INetMapStorage.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/core/INetMapStorage.java
@@ -1,7 +1,7 @@
/**
*
*/
-package net.floodlightcontroller.core;
+package net.onrc.onos.ofcontroller.core;
/**
* @author pankaj
diff --git a/src/main/java/net/floodlightcontroller/core/INetMapTopologyObjects.java b/src/main/java/net/onrc/onos/ofcontroller/core/INetMapTopologyObjects.java
similarity index 97%
rename from src/main/java/net/floodlightcontroller/core/INetMapTopologyObjects.java
rename to src/main/java/net/onrc/onos/ofcontroller/core/INetMapTopologyObjects.java
index 3d5b907..1a01155 100644
--- a/src/main/java/net/floodlightcontroller/core/INetMapTopologyObjects.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/core/INetMapTopologyObjects.java
@@ -1,7 +1,7 @@
-package net.floodlightcontroller.core;
+package net.onrc.onos.ofcontroller.core;
-import net.floodlightcontroller.core.INetMapTopologyObjects.IPortObject;
-import net.floodlightcontroller.flowcache.web.DatapathSummarySerializer;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IPortObject;
+import net.onrc.onos.ofcontroller.flowcache.web.DatapathSummarySerializer;
import org.codehaus.jackson.annotate.JsonIgnore;
import org.codehaus.jackson.annotate.JsonProperty;
diff --git a/src/main/java/net/floodlightcontroller/core/INetMapTopologyService.java b/src/main/java/net/onrc/onos/ofcontroller/core/INetMapTopologyService.java
similarity index 91%
rename from src/main/java/net/floodlightcontroller/core/INetMapTopologyService.java
rename to src/main/java/net/onrc/onos/ofcontroller/core/INetMapTopologyService.java
index f217c25..1992624 100644
--- a/src/main/java/net/floodlightcontroller/core/INetMapTopologyService.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/core/INetMapTopologyService.java
@@ -1,16 +1,16 @@
-package net.floodlightcontroller.core;
+package net.onrc.onos.ofcontroller.core;
import java.util.List;
import java.util.Map;
import net.floodlightcontroller.core.module.IFloodlightService;
-import net.floodlightcontroller.core.INetMapTopologyObjects.IDeviceObject;
-import net.floodlightcontroller.core.INetMapTopologyObjects.IPortObject;
-import net.floodlightcontroller.core.INetMapTopologyObjects.ISwitchObject;
import net.floodlightcontroller.routing.Link;
import net.floodlightcontroller.topology.NodePortTuple;
-import net.floodlightcontroller.util.DataPath;
-import net.floodlightcontroller.util.SwitchPort;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IDeviceObject;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IPortObject;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.ISwitchObject;
+import net.onrc.onos.ofcontroller.util.DataPath;
+import net.onrc.onos.ofcontroller.util.SwitchPort;
public interface INetMapTopologyService extends INetMapService {
diff --git a/src/main/java/net/floodlightcontroller/core/ISwitchStorage.java b/src/main/java/net/onrc/onos/ofcontroller/core/ISwitchStorage.java
similarity index 90%
rename from src/main/java/net/floodlightcontroller/core/ISwitchStorage.java
rename to src/main/java/net/onrc/onos/ofcontroller/core/ISwitchStorage.java
index 1219aac..d008220 100644
--- a/src/main/java/net/floodlightcontroller/core/ISwitchStorage.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/core/ISwitchStorage.java
@@ -1,8 +1,7 @@
-package net.floodlightcontroller.core;
+package net.onrc.onos.ofcontroller.core;
import java.util.Collection;
-import net.floodlightcontroller.core.INetMapTopologyObjects.ISwitchObject;
import org.openflow.protocol.OFPhysicalPort;
diff --git a/src/main/java/net/floodlightcontroller/core/internal/SwitchStorageImpl.java b/src/main/java/net/onrc/onos/ofcontroller/core/internal/SwitchStorageImpl.java
similarity index 73%
rename from src/main/java/net/floodlightcontroller/core/internal/SwitchStorageImpl.java
rename to src/main/java/net/onrc/onos/ofcontroller/core/internal/SwitchStorageImpl.java
index b8197b7..ea7fdf0 100644
--- a/src/main/java/net/floodlightcontroller/core/internal/SwitchStorageImpl.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/core/internal/SwitchStorageImpl.java
@@ -1,13 +1,12 @@
-package net.floodlightcontroller.core.internal;
+package net.onrc.onos.ofcontroller.core.internal;
import java.util.Collection;
-import net.floodlightcontroller.core.INetMapTopologyObjects.IPortObject;
-import net.floodlightcontroller.core.INetMapTopologyObjects.ISwitchObject;
-import net.floodlightcontroller.core.ISwitchStorage;
+import net.onrc.onos.ofcontroller.core.ISwitchStorage;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IPortObject;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.ISwitchObject;
import net.onrc.onos.util.GraphDBConnection;
-import net.onrc.onos.util.GraphDBConnection.GenerateEvent;
-import net.onrc.onos.util.GraphDBConnection.Transaction;
+import net.onrc.onos.util.GraphDBOperation;
import org.openflow.protocol.OFPhysicalPort;
import org.openflow.protocol.OFPhysicalPort.OFPortConfig;
@@ -16,7 +15,7 @@
import org.slf4j.LoggerFactory;
public class SwitchStorageImpl implements ISwitchStorage {
- protected GraphDBConnection conn;
+ protected GraphDBOperation op;
protected static Logger log = LoggerFactory.getLogger(SwitchStorageImpl.class);
@Override
@@ -41,13 +40,13 @@
}
private void setStatus(String dpid, SwitchState state) {
- ISwitchObject sw = conn.utils().searchSwitch(conn, dpid);
+ ISwitchObject sw = op.searchSwitch(dpid);
if (sw != null) {
sw.setState(state.toString());
- conn.endTx(Transaction.COMMIT);
+ op.commit();
log.info("SwitchStorage:setStatus dpid:{} state: {} done", dpid, state);
} else {
- conn.endTx(Transaction.ROLLBACK);
+ op.rollback();
log.info("SwitchStorage:setStatus dpid:{} state: {} failed: switch not found", dpid, state);
}
}
@@ -64,24 +63,20 @@
}
try {
- ISwitchObject sw = conn.utils().searchSwitch(conn, dpid);
+ ISwitchObject sw = op.searchSwitch(dpid);
if (sw != null) {
- IPortObject p = conn.utils().searchPort(conn, dpid, port.getPortNumber());
+ IPortObject p = op.searchPort(dpid, port.getPortNumber());
log.info("SwitchStorage:addPort dpid:{} port:{}", dpid, port.getPortNumber());
if (p != null) {
log.error("SwitchStorage:addPort dpid:{} port:{} exists", dpid, port.getPortNumber());
} else {
- p = conn.utils().newPort(conn);
-
- p.setType("port");
- p.setNumber(port.getPortNumber());
+ p = op.newPort(port.getPortNumber());
p.setState("ACTIVE");
p.setPortState(port.getState());
p.setDesc(port.getName());
sw.addPort(p);
- conn.endTx(Transaction.COMMIT);
-
+ op.commit();
}
} else {
log.error("SwitchStorage:addPort dpid:{} port:{} : failed switch does not exist", dpid, port.getPortNumber());
@@ -89,7 +84,7 @@
} catch (Exception e) {
// TODO: handle exceptions
e.printStackTrace();
- conn.endTx(Transaction.ROLLBACK);
+ op.rollback();
log.error("SwitchStorage:addPort dpid:{} port:{} failed", dpid, port.getPortNumber());
}
@@ -119,7 +114,7 @@
log.info("SwitchStorage:addSwitch(): dpid {} ", dpid);
try {
- ISwitchObject sw = conn.utils().searchSwitch(conn, dpid);
+ ISwitchObject sw = op.searchSwitch(dpid);
if (sw != null) {
/*
* Do nothing or throw exception?
@@ -127,15 +122,13 @@
log.info("SwitchStorage:addSwitch dpid:{} already exists", dpid);
sw.setState(SwitchState.ACTIVE.toString());
- conn.endTx(Transaction.COMMIT);
+ op.commit();
} else {
- sw = conn.utils().newSwitch(conn);
+ sw = op.newSwitch(dpid);
if (sw != null) {
- sw.setType("switch");
- sw.setDPID(dpid);
sw.setState(SwitchState.ACTIVE.toString());
- conn.endTx(Transaction.COMMIT);
+ op.commit();
log.info("SwitchStorage:addSwitch dpid:{} added", dpid);
} else {
log.error("switchStorage:addSwitch dpid:{} failed -> newSwitch failed", dpid);
@@ -146,7 +139,7 @@
* retry?
*/
e.printStackTrace();
- conn.endTx(Transaction.ROLLBACK);
+ op.rollback();
log.info("SwitchStorage:addSwitch dpid:{} failed", dpid);
}
@@ -159,17 +152,17 @@
try {
- ISwitchObject sw = conn.utils().searchSwitch(conn, dpid);
+ ISwitchObject sw = op.searchSwitch(dpid);
if (sw != null) {
- conn.utils().removeSwitch(conn, sw);
+ op.removeSwitch(sw);
- conn.endTx(Transaction.COMMIT);
+ op.commit();
log.info("SwitchStorage:DeleteSwitch dpid:{} done", dpid);
}
} catch (Exception e) {
// TODO: handle exceptions
e.printStackTrace();
- conn.endTx(Transaction.ROLLBACK);
+ op.rollback();
log.error("SwitchStorage:deleteSwitch {} failed", dpid);
}
@@ -179,21 +172,21 @@
public void deletePort(String dpid, short port) {
// TODO Auto-generated method stub
try {
- ISwitchObject sw = conn.utils().searchSwitch(conn, dpid);
+ ISwitchObject sw = op.searchSwitch(dpid);
if (sw != null) {
- IPortObject p = conn.utils().searchPort(conn, dpid, port);
+ IPortObject p = op.searchPort(dpid, port);
if (p != null) {
log.info("SwitchStorage:deletePort dpid:{} port:{} found and deleted", dpid, port);
sw.removePort(p);
- conn.utils().removePort(conn, p);
- conn.endTx(Transaction.COMMIT);
+ op.removePort(p);
+ op.commit();
}
}
} catch (Exception e) {
// TODO: handle exceptions
e.printStackTrace();
- conn.endTx(Transaction.ROLLBACK);
+ op.rollback();
log.info("SwitchStorage:deletePort dpid:{} port:{} failed", dpid, port);
}
}
@@ -208,9 +201,8 @@
@Override
public void init(String conf) {
-
- conn = GraphDBConnection.getInstance(conf);
-
+ GraphDBConnection conn = GraphDBConnection.getInstance(conf);
+ op = new GraphDBOperation(conn);
}
@@ -221,7 +213,7 @@
@Override
public void close() {
- conn.close();
+ op.close();
}
diff --git a/src/main/java/net/onrc/onos/ofcontroller/core/internal/TopoSwitchServiceImpl.java b/src/main/java/net/onrc/onos/ofcontroller/core/internal/TopoSwitchServiceImpl.java
new file mode 100644
index 0000000..e279422
--- /dev/null
+++ b/src/main/java/net/onrc/onos/ofcontroller/core/internal/TopoSwitchServiceImpl.java
@@ -0,0 +1,66 @@
+package net.onrc.onos.ofcontroller.core.internal;
+
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IPortObject;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.ISwitchObject;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyService.ITopoSwitchService;
+import net.onrc.onos.util.GraphDBConnection;
+import net.onrc.onos.util.GraphDBOperation;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class TopoSwitchServiceImpl implements ITopoSwitchService {
+
+ private GraphDBOperation op;
+ protected static Logger log = LoggerFactory.getLogger(TopoSwitchServiceImpl.class);
+
+ public TopoSwitchServiceImpl(String conf) {
+ op = new GraphDBOperation(GraphDBConnection.getInstance(conf));
+ }
+
+ public TopoSwitchServiceImpl() {
+ this("/tmp/cassandra.titan");
+ }
+
+ public void finalize() {
+ close();
+ }
+
+ @Override
+ public void close() {
+ op.close();
+ }
+
+ @Override
+ public Iterable<ISwitchObject> getActiveSwitches() {
+ // TODO Auto-generated method stub
+ op.close(); //Commit to ensure we see latest data
+ return op.getActiveSwitches();
+ }
+
+ @Override
+ public Iterable<ISwitchObject> getAllSwitches() {
+ // TODO Auto-generated method stub
+ op.close(); //Commit to ensure we see latest data
+ return op.getAllSwitches();
+ }
+
+ @Override
+ public Iterable<ISwitchObject> getInactiveSwitches() {
+ // TODO Auto-generated method stub
+ op.close(); //Commit to ensure we see latest data
+ return op.getInactiveSwitches();
+ }
+
+ @Override
+ public Iterable<IPortObject> getPortsOnSwitch(String dpid) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public IPortObject getPortOnSwitch(String dpid, short port_num) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+}
diff --git a/src/main/java/net/floodlightcontroller/core/web/ClearFlowTableResource.java b/src/main/java/net/onrc/onos/ofcontroller/core/web/ClearFlowTableResource.java
similarity index 96%
rename from src/main/java/net/floodlightcontroller/core/web/ClearFlowTableResource.java
rename to src/main/java/net/onrc/onos/ofcontroller/core/web/ClearFlowTableResource.java
index c2d2eb4..7b1acfe 100644
--- a/src/main/java/net/floodlightcontroller/core/web/ClearFlowTableResource.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/core/web/ClearFlowTableResource.java
@@ -1,4 +1,4 @@
-package net.floodlightcontroller.core.web;
+package net.onrc.onos.ofcontroller.core.web;
import java.io.IOException;
import java.util.ArrayList;
diff --git a/src/main/java/net/floodlightcontroller/core/web/TopoSwitchesResource.java b/src/main/java/net/onrc/onos/ofcontroller/core/web/TopoSwitchesResource.java
similarity index 77%
rename from src/main/java/net/floodlightcontroller/core/web/TopoSwitchesResource.java
rename to src/main/java/net/onrc/onos/ofcontroller/core/web/TopoSwitchesResource.java
index 7a8511b..a173a70 100644
--- a/src/main/java/net/floodlightcontroller/core/web/TopoSwitchesResource.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/core/web/TopoSwitchesResource.java
@@ -1,9 +1,9 @@
-package net.floodlightcontroller.core.web;
+package net.onrc.onos.ofcontroller.core.web;
import java.util.Iterator;
-import net.floodlightcontroller.core.INetMapTopologyObjects.ISwitchObject;
-import net.floodlightcontroller.core.internal.TopoSwitchServiceImpl;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.ISwitchObject;
+import net.onrc.onos.ofcontroller.core.internal.TopoSwitchServiceImpl;
import org.restlet.resource.Get;
import org.restlet.resource.ServerResource;
diff --git a/src/main/java/net/floodlightcontroller/devicemanager/IDeviceStorage.java b/src/main/java/net/onrc/onos/ofcontroller/devicemanager/IDeviceStorage.java
similarity index 63%
rename from src/main/java/net/floodlightcontroller/devicemanager/IDeviceStorage.java
rename to src/main/java/net/onrc/onos/ofcontroller/devicemanager/IDeviceStorage.java
index f41e32c..d4355c6 100644
--- a/src/main/java/net/floodlightcontroller/devicemanager/IDeviceStorage.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/devicemanager/IDeviceStorage.java
@@ -1,7 +1,8 @@
-package net.floodlightcontroller.devicemanager;
+package net.onrc.onos.ofcontroller.devicemanager;
-import net.floodlightcontroller.core.INetMapStorage;
-import net.floodlightcontroller.core.INetMapTopologyObjects.IDeviceObject;
+import net.floodlightcontroller.devicemanager.IDevice;
+import net.onrc.onos.ofcontroller.core.INetMapStorage;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IDeviceObject;
public interface IDeviceStorage extends INetMapStorage {
diff --git a/src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceStorageImpl.java b/src/main/java/net/onrc/onos/ofcontroller/devicemanager/internal/DeviceStorageImpl.java
similarity index 71%
rename from src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceStorageImpl.java
rename to src/main/java/net/onrc/onos/ofcontroller/devicemanager/internal/DeviceStorageImpl.java
index e964b8e..cca4794 100644
--- a/src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceStorageImpl.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/devicemanager/internal/DeviceStorageImpl.java
@@ -1,4 +1,4 @@
-package net.floodlightcontroller.devicemanager.internal;
+package net.onrc.onos.ofcontroller.devicemanager.internal;
import java.util.List;
import org.openflow.util.HexString;
@@ -7,23 +7,23 @@
import com.google.common.collect.Lists;
import com.thinkaurelius.titan.core.TitanException;
-import net.floodlightcontroller.core.INetMapTopologyObjects.IDeviceObject;
-import net.floodlightcontroller.core.INetMapTopologyObjects.IPortObject;
-import net.floodlightcontroller.core.internal.SwitchStorageImpl;
import net.floodlightcontroller.devicemanager.IDevice;
-import net.floodlightcontroller.devicemanager.IDeviceStorage;
import net.floodlightcontroller.devicemanager.SwitchPort;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IDeviceObject;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IPortObject;
+import net.onrc.onos.ofcontroller.core.internal.SwitchStorageImpl;
+import net.onrc.onos.ofcontroller.devicemanager.IDeviceStorage;
import net.onrc.onos.util.GraphDBConnection;
-import net.onrc.onos.util.GraphDBConnection.Transaction;
+import net.onrc.onos.util.GraphDBOperation;
public class DeviceStorageImpl implements IDeviceStorage {
- public GraphDBConnection conn;
+ public GraphDBOperation op;
protected static Logger log = LoggerFactory.getLogger(SwitchStorageImpl.class);
@Override
public void init(String conf) {
- conn = GraphDBConnection.getInstance(conf);
+ op = new GraphDBOperation(GraphDBConnection.getInstance(conf));
}
public void finalize() {
@@ -32,7 +32,7 @@
@Override
public void close() {
- conn.close();
+ op.close();
}
@Override
@@ -40,24 +40,23 @@
// TODO Auto-generated method stub
IDeviceObject obj = null;
try {
- if ((obj = conn.utils().searchDevice(conn, device.getMACAddressString())) != null) {
+ if ((obj = op.searchDevice(device.getMACAddressString())) != null) {
log.debug("Adding device {}: found existing device",device.getMACAddressString());
} else {
- obj = conn.utils().newDevice(conn);
+ obj = op.newDevice();
log.debug("Adding device {}: creating new device",device.getMACAddressString());
}
changeDeviceAttachments(device, obj);
obj.setIPAddress(device.getIPv4Addresses().toString());
obj.setMACAddress(device.getMACAddressString());
- obj.setType("device");
obj.setState("ACTIVE");
- conn.endTx(Transaction.COMMIT);
+ op.commit();
log.debug("Adding device {}",device.getMACAddressString());
} catch (Exception e) {
// TODO: handle exceptions
- conn.endTx(Transaction.ROLLBACK);
+ op.rollback();
log.error(":addDevice mac:{} failed", device.getMACAddressString());
}
@@ -74,21 +73,21 @@
// TODO Auto-generated method stub
IDeviceObject dev;
try {
- if ((dev = conn.utils().searchDevice(conn, device.getMACAddressString())) != null) {
- conn.utils().removeDevice(conn, dev);
- conn.endTx(Transaction.COMMIT);
+ if ((dev = op.searchDevice(device.getMACAddressString())) != null) {
+ op.removeDevice(dev);
+ op.commit();
log.error("DeviceStorage:removeDevice mac:{} done", device.getMACAddressString());
}
} catch (Exception e) {
// TODO: handle exceptions
- conn.endTx(Transaction.ROLLBACK);
+ op.rollback();
log.error("DeviceStorage:removeDevice mac:{} failed", device.getMACAddressString());
}
}
@Override
public IDeviceObject getDeviceByMac(String mac) {
- return conn.utils().searchDevice(conn, mac);
+ return op.searchDevice(mac);
}
@Override
@@ -102,17 +101,17 @@
// TODO Auto-generated method stub
IDeviceObject obj = null;
try {
- if ((obj = conn.utils().searchDevice(conn, device.getMACAddressString())) != null) {
+ if ((obj = op.searchDevice(device.getMACAddressString())) != null) {
log.debug("Changing device ports {}: found existing device",device.getMACAddressString());
changeDeviceAttachments(device, obj);
- conn.endTx(Transaction.COMMIT);
+ op.commit();
} else {
log.debug("failed to search device...now adding {}",device.getMACAddressString());
addDevice(device);
}
} catch (Exception e) {
// TODO: handle exceptions
- conn.endTx(Transaction.ROLLBACK);
+ op.rollback();
log.error(":addDevice mac:{} failed", device.getMACAddressString());
}
}
@@ -122,9 +121,9 @@
List<IPortObject> attachedPorts = Lists.newArrayList(obj.getAttachedPorts());
for (SwitchPort ap : attachmentPoints) {
- IPortObject port = conn.utils().searchPort(conn,
- HexString.toHexString(ap.getSwitchDPID()),
- (short) ap.getPort());
+ IPortObject port = op.searchPort(
+ HexString.toHexString(ap.getSwitchDPID()),
+ (short) ap.getPort());
if (attachedPorts.contains(port)) {
attachedPorts.remove(port);
} else {
@@ -144,15 +143,15 @@
// TODO Auto-generated method stub
IDeviceObject obj;
try {
- if ((obj = conn.utils().searchDevice(conn, device.getMACAddressString())) != null) {
+ if ((obj = op.searchDevice(device.getMACAddressString())) != null) {
obj.setIPAddress(device.getIPv4Addresses().toString());
- conn.endTx(Transaction.COMMIT);
+ op.commit();
} else {
log.error(":changeDeviceIPv4Address mac:{} failed", device.getMACAddressString());
}
} catch (TitanException e) {
// TODO: handle exceptions
- conn.endTx(Transaction.ROLLBACK);
+ op.rollback();
log.error(":changeDeviceIPv4Address mac:{} failed due to exception {}", device.getMACAddressString(),e);
}
}
diff --git a/src/main/java/net/onrc/onos/ofcontroller/devicemanager/web/TopoDevicesResource.java b/src/main/java/net/onrc/onos/ofcontroller/devicemanager/web/TopoDevicesResource.java
new file mode 100644
index 0000000..1cd6b90
--- /dev/null
+++ b/src/main/java/net/onrc/onos/ofcontroller/devicemanager/web/TopoDevicesResource.java
@@ -0,0 +1,24 @@
+package net.onrc.onos.ofcontroller.devicemanager.web;
+
+import java.util.Iterator;
+
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IDeviceObject;
+import net.onrc.onos.util.GraphDBConnection;
+import net.onrc.onos.util.GraphDBOperation;
+
+import org.restlet.resource.Get;
+import org.restlet.resource.ServerResource;
+
+public class TopoDevicesResource extends ServerResource {
+
+ @Get("json")
+ public Iterator<IDeviceObject> retrieve() {
+
+ GraphDBConnection conn = GraphDBConnection.getInstance("");
+ GraphDBOperation op = new GraphDBOperation(conn);
+
+ return op.getDevices().iterator();
+
+ }
+
+}
diff --git a/src/main/java/net/floodlightcontroller/flowcache/FlowManager.java b/src/main/java/net/onrc/onos/ofcontroller/flowcache/FlowManager.java
similarity index 93%
rename from src/main/java/net/floodlightcontroller/flowcache/FlowManager.java
rename to src/main/java/net/onrc/onos/ofcontroller/flowcache/FlowManager.java
index 8aec20f..125acf3 100644
--- a/src/main/java/net/floodlightcontroller/flowcache/FlowManager.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/flowcache/FlowManager.java
@@ -1,4 +1,4 @@
-package net.floodlightcontroller.flowcache;
+package net.onrc.onos.ofcontroller.flowcache;
import java.io.IOException;
import java.io.PrintWriter;
@@ -19,38 +19,38 @@
import java.util.concurrent.TimeUnit;
import net.floodlightcontroller.core.IFloodlightProviderService;
-import net.floodlightcontroller.core.INetMapStorage;
-import net.floodlightcontroller.core.INetMapTopologyObjects.IFlowEntry;
-import net.floodlightcontroller.core.INetMapTopologyObjects.IFlowPath;
-import net.floodlightcontroller.core.INetMapTopologyObjects.IPortObject;
-import net.floodlightcontroller.core.INetMapTopologyObjects.ISwitchObject;
-import net.floodlightcontroller.core.INetMapTopologyService.ITopoRouteService;
import net.floodlightcontroller.core.IOFSwitch;
import net.floodlightcontroller.core.module.FloodlightModuleContext;
import net.floodlightcontroller.core.module.FloodlightModuleException;
import net.floodlightcontroller.core.module.IFloodlightModule;
import net.floodlightcontroller.core.module.IFloodlightService;
-import net.floodlightcontroller.flowcache.web.FlowWebRoutable;
import net.floodlightcontroller.restserver.IRestApiService;
-import net.floodlightcontroller.util.CallerId;
-import net.floodlightcontroller.util.DataPath;
-import net.floodlightcontroller.util.DataPathEndpoints;
-import net.floodlightcontroller.util.Dpid;
-import net.floodlightcontroller.util.FlowEntry;
-import net.floodlightcontroller.util.FlowEntryAction;
-import net.floodlightcontroller.util.FlowEntryId;
-import net.floodlightcontroller.util.FlowEntryMatch;
-import net.floodlightcontroller.util.FlowEntrySwitchState;
-import net.floodlightcontroller.util.FlowEntryUserState;
-import net.floodlightcontroller.util.FlowId;
-import net.floodlightcontroller.util.FlowPath;
-import net.floodlightcontroller.util.IPv4Net;
import net.floodlightcontroller.util.MACAddress;
import net.floodlightcontroller.util.OFMessageDamper;
-import net.floodlightcontroller.util.Port;
-import net.floodlightcontroller.util.SwitchPort;
+import net.onrc.onos.ofcontroller.core.INetMapStorage;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IFlowEntry;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IFlowPath;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IPortObject;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.ISwitchObject;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyService.ITopoRouteService;
+import net.onrc.onos.ofcontroller.flowcache.web.FlowWebRoutable;
+import net.onrc.onos.ofcontroller.util.CallerId;
+import net.onrc.onos.ofcontroller.util.DataPath;
+import net.onrc.onos.ofcontroller.util.DataPathEndpoints;
+import net.onrc.onos.ofcontroller.util.Dpid;
+import net.onrc.onos.ofcontroller.util.FlowEntry;
+import net.onrc.onos.ofcontroller.util.FlowEntryAction;
+import net.onrc.onos.ofcontroller.util.FlowEntryId;
+import net.onrc.onos.ofcontroller.util.FlowEntryMatch;
+import net.onrc.onos.ofcontroller.util.FlowEntrySwitchState;
+import net.onrc.onos.ofcontroller.util.FlowEntryUserState;
+import net.onrc.onos.ofcontroller.util.FlowId;
+import net.onrc.onos.ofcontroller.util.FlowPath;
+import net.onrc.onos.ofcontroller.util.IPv4Net;
+import net.onrc.onos.ofcontroller.util.Port;
+import net.onrc.onos.ofcontroller.util.SwitchPort;
import net.onrc.onos.util.GraphDBConnection;
-import net.onrc.onos.util.GraphDBConnection.Transaction;
+import net.onrc.onos.util.GraphDBOperation;
import org.openflow.protocol.OFFlowMod;
import org.openflow.protocol.OFMatch;
@@ -65,7 +65,7 @@
public class FlowManager implements IFloodlightModule, IFlowService, INetMapStorage {
- public GraphDBConnection conn;
+ protected GraphDBOperation op;
protected IRestApiService restApi;
protected volatile IFloodlightProviderService floodlightProvider;
@@ -114,7 +114,7 @@
runImpl();
} catch (Exception e) {
log.debug("Exception processing All Flow Entries from the Network MAP: ", e);
- conn.endTx(Transaction.ROLLBACK);
+ op.rollback();
return;
}
}
@@ -141,7 +141,7 @@
//
boolean processed_measurement_flow = false;
Iterable<IFlowEntry> allFlowEntries =
- conn.utils().getAllSwitchNotUpdatedFlowEntries(conn);
+ op.getAllSwitchNotUpdatedFlowEntries();
for (IFlowEntry flowEntryObj : allFlowEntries) {
counterAllFlowEntries++;
@@ -154,7 +154,7 @@
continue; // Ignore the entry: not my switch
IFlowPath flowObj =
- conn.utils().getFlowPathByFlowEntry(conn, flowEntryObj);
+ op.getFlowPathByFlowEntry(flowEntryObj);
if (flowObj == null)
continue; // Should NOT happen
if (flowObj.getFlowId() == null)
@@ -192,8 +192,7 @@
//
for (IFlowEntry flowEntryObj : addFlowEntries) {
IFlowPath flowObj =
- conn.utils().getFlowPathByFlowEntry(conn,
- flowEntryObj);
+ op.getFlowPathByFlowEntry(flowEntryObj);
if (flowObj == null)
continue; // Should NOT happen
if (flowObj.getFlowId() == null)
@@ -217,16 +216,16 @@
while (! deleteFlowEntries.isEmpty()) {
IFlowEntry flowEntryObj = deleteFlowEntries.poll();
IFlowPath flowObj =
- conn.utils().getFlowPathByFlowEntry(conn, flowEntryObj);
+ op.getFlowPathByFlowEntry(flowEntryObj);
if (flowObj == null) {
log.debug("Did not find FlowPath to be deleted");
continue;
}
flowObj.removeFlowEntry(flowEntryObj);
- conn.utils().removeFlowEntry(conn, flowEntryObj);
+ op.removeFlowEntry(flowEntryObj);
}
- conn.endTx(Transaction.COMMIT);
+ op.commit();
if (processed_measurement_flow) {
long estimatedTime =
@@ -255,7 +254,7 @@
runImpl();
} catch (Exception e) {
log.debug("Exception processing All Flows from the Network MAP: ", e);
- conn.endTx(Transaction.ROLLBACK);
+ op.rollback();
return;
}
}
@@ -281,7 +280,7 @@
//
Map<Long, ?> shortestPathTopo =
topoRouteService.prepareShortestPathTopo();
- Iterable<IFlowPath> allFlowPaths = conn.utils().getAllFlowPaths(conn);
+ Iterable<IFlowPath> allFlowPaths = op.getAllFlowPaths();
for (IFlowPath flowPathObj : allFlowPaths) {
counterAllFlowPaths++;
if (flowPathObj == null)
@@ -378,12 +377,12 @@
//
while (! deleteFlows.isEmpty()) {
IFlowPath flowPathObj = deleteFlows.poll();
- conn.utils().removeFlowPath(conn, flowPathObj);
+ op.removeFlowPath(flowPathObj);
}
topoRouteService.dropShortestPathTopo(shortestPathTopo);
- conn.endTx(Transaction.COMMIT);
+ op.commit();
if (processed_measurement_flow) {
long estimatedTime =
@@ -414,16 +413,16 @@
@Override
public void init(String conf) {
- conn = GraphDBConnection.getInstance(conf);
+ op = new GraphDBOperation(GraphDBConnection.getInstance(conf));
}
public void finalize() {
- close();
+ close();
}
@Override
public void close() {
- conn.close();
+ op.close();
}
@Override
@@ -500,9 +499,9 @@
nextFlowEntryIdPrefix = randomGenerator.nextInt();
mapReaderScheduler.scheduleAtFixedRate(
- mapReader, 1, 1, TimeUnit.SECONDS);
+ mapReader, 3, 3, TimeUnit.SECONDS);
shortestPathReconcileScheduler.scheduleAtFixedRate(
- shortestPathReconcile, 100, 100, TimeUnit.MILLISECONDS);
+ shortestPathReconcile, 3, 3, TimeUnit.SECONDS);
}
/**
@@ -530,19 +529,19 @@
IFlowPath flowObj = null;
boolean found = false;
try {
- if ((flowObj = conn.utils().searchFlowPath(conn, flowPath.flowId()))
+ if ((flowObj = op.searchFlowPath(flowPath.flowId()))
!= null) {
log.debug("Adding FlowPath with FlowId {}: found existing FlowPath",
flowPath.flowId().toString());
found = true;
} else {
- flowObj = conn.utils().newFlowPath(conn);
+ flowObj = op.newFlowPath();
log.debug("Adding FlowPath with FlowId {}: creating new FlowPath",
flowPath.flowId().toString());
}
} catch (Exception e) {
// TODO: handle exceptions
- conn.endTx(Transaction.ROLLBACK);
+ op.rollback();
StringWriter sw = new StringWriter();
e.printStackTrace(new PrintWriter(sw));
@@ -555,7 +554,7 @@
if (flowObj == null) {
log.error(":addFlow FlowId:{} failed: Flow object not created",
flowPath.flowId().toString());
- conn.endTx(Transaction.ROLLBACK);
+ op.rollback();
return false;
}
@@ -619,11 +618,11 @@
//
for (FlowEntry flowEntry : flowPath.dataPath().flowEntries()) {
if (addFlowEntry(flowObj, flowEntry) == null) {
- conn.endTx(Transaction.ROLLBACK);
+ op.rollback();
return false;
}
}
- conn.endTx(Transaction.COMMIT);
+ op.commit();
//
// TODO: We need a proper Flow ID allocation mechanism.
@@ -657,12 +656,12 @@
boolean found = false;
try {
if ((flowEntryObj =
- conn.utils().searchFlowEntry(conn, flowEntry.flowEntryId())) != null) {
+ op.searchFlowEntry(flowEntry.flowEntryId())) != null) {
log.debug("Adding FlowEntry with FlowEntryId {}: found existing FlowEntry",
flowEntry.flowEntryId().toString());
found = true;
} else {
- flowEntryObj = conn.utils().newFlowEntry(conn);
+ flowEntryObj = op.newFlowEntry();
log.debug("Adding FlowEntry with FlowEntryId {}: creating new FlowEntry",
flowEntry.flowEntryId().toString());
}
@@ -705,12 +704,12 @@
// - flowEntry.actionOutput()
//
ISwitchObject sw =
- conn.utils().searchSwitch(conn, flowEntry.dpid().toString());
+ op.searchSwitch(flowEntry.dpid().toString());
flowEntryObj.setSwitchDpid(flowEntry.dpid().toString());
flowEntryObj.setSwitch(sw);
if (flowEntry.flowEntryMatch().matchInPort()) {
IPortObject inport =
- conn.utils().searchPort(conn, flowEntry.dpid().toString(),
+ op.searchPort(flowEntry.dpid().toString(),
flowEntry.flowEntryMatch().inPort().value());
flowEntryObj.setMatchInPort(flowEntry.flowEntryMatch().inPort().value());
flowEntryObj.setInPort(inport);
@@ -734,9 +733,8 @@
for (FlowEntryAction fa : flowEntry.flowEntryActions()) {
if (fa.actionOutput() != null) {
IPortObject outport =
- conn.utils().searchPort(conn,
- flowEntry.dpid().toString(),
- fa.actionOutput().port().value());
+ op.searchPort(flowEntry.dpid().toString(),
+ fa.actionOutput().port().value());
flowEntryObj.setActionOutput(fa.actionOutput().port().value());
flowEntryObj.setOutPort(outport);
}
@@ -774,7 +772,7 @@
new ConcurrentLinkedQueue<FlowId>();
// Get all Flow IDs
- Iterable<IFlowPath> allFlowPaths = conn.utils().getAllFlowPaths(conn);
+ Iterable<IFlowPath> allFlowPaths = op.getAllFlowPaths();
for (IFlowPath flowPathObj : allFlowPaths) {
if (flowPathObj == null)
continue;
@@ -851,7 +849,7 @@
// it has been removed from the switches.
//
try {
- if ((flowObj = conn.utils().searchFlowPath(conn, flowId))
+ if ((flowObj = op.searchFlowPath(flowId))
!= null) {
log.debug("Deleting FlowPath with FlowId {}: found existing FlowPath",
flowId.toString());
@@ -861,11 +859,11 @@
}
} catch (Exception e) {
// TODO: handle exceptions
- conn.endTx(Transaction.ROLLBACK);
+ op.rollback();
log.error(":deleteFlow FlowId:{} failed", flowId.toString());
}
if (flowObj == null) {
- conn.endTx(Transaction.COMMIT);
+ op.commit();
return true; // OK: No such flow
}
@@ -885,8 +883,8 @@
}
// Remove from the database empty flows
if (empty)
- conn.utils().removeFlowPath(conn, flowObj);
- conn.endTx(Transaction.COMMIT);
+ op.removeFlowPath(flowObj);
+ op.commit();
return true;
}
@@ -901,7 +899,7 @@
List<FlowId> allFlowIds = new LinkedList<FlowId>();
// Get all Flow IDs
- Iterable<IFlowPath> allFlowPaths = conn.utils().getAllFlowPaths(conn);
+ Iterable<IFlowPath> allFlowPaths = op.getAllFlowPaths();
for (IFlowPath flowPathObj : allFlowPaths) {
if (flowPathObj == null)
continue;
@@ -930,7 +928,7 @@
public boolean clearFlow(FlowId flowId) {
IFlowPath flowObj = null;
try {
- if ((flowObj = conn.utils().searchFlowPath(conn, flowId))
+ if ((flowObj = op.searchFlowPath(flowId))
!= null) {
log.debug("Clearing FlowPath with FlowId {}: found existing FlowPath",
flowId.toString());
@@ -940,11 +938,11 @@
}
} catch (Exception e) {
// TODO: handle exceptions
- conn.endTx(Transaction.ROLLBACK);
+ op.rollback();
log.error(":clearFlow FlowId:{} failed", flowId.toString());
}
if (flowObj == null) {
- conn.endTx(Transaction.COMMIT);
+ op.commit();
return true; // OK: No such flow
}
@@ -954,11 +952,11 @@
Iterable<IFlowEntry> flowEntries = flowObj.getFlowEntries();
for (IFlowEntry flowEntryObj : flowEntries) {
flowObj.removeFlowEntry(flowEntryObj);
- conn.utils().removeFlowEntry(conn, flowEntryObj);
+ op.removeFlowEntry(flowEntryObj);
}
// Remove the Flow itself
- conn.utils().removeFlowPath(conn, flowObj);
- conn.endTx(Transaction.COMMIT);
+ op.removeFlowPath(flowObj);
+ op.commit();
return true;
}
@@ -973,7 +971,7 @@
public FlowPath getFlow(FlowId flowId) {
IFlowPath flowObj = null;
try {
- if ((flowObj = conn.utils().searchFlowPath(conn, flowId))
+ if ((flowObj = op.searchFlowPath(flowId))
!= null) {
log.debug("Get FlowPath with FlowId {}: found existing FlowPath",
flowId.toString());
@@ -983,11 +981,11 @@
}
} catch (Exception e) {
// TODO: handle exceptions
- conn.endTx(Transaction.ROLLBACK);
+ op.rollback();
log.error(":getFlow FlowId:{} failed", flowId.toString());
}
if (flowObj == null) {
- conn.endTx(Transaction.COMMIT);
+ op.commit();
return null; // Flow not found
}
@@ -995,7 +993,7 @@
// Extract the Flow state
//
FlowPath flowPath = extractFlowPath(flowObj);
- conn.endTx(Transaction.COMMIT);
+ op.commit();
return flowPath;
}
@@ -1186,18 +1184,18 @@
ArrayList<FlowPath> flowPaths = new ArrayList<FlowPath>();
try {
- if ((flowPathsObj = conn.utils().getAllFlowPaths(conn)) != null) {
+ if ((flowPathsObj = op.getAllFlowPaths()) != null) {
log.debug("Get all FlowPaths: found FlowPaths");
} else {
log.debug("Get all FlowPaths: no FlowPaths found");
}
} catch (Exception e) {
// TODO: handle exceptions
- conn.endTx(Transaction.ROLLBACK);
+ op.rollback();
log.error(":getAllFlowPaths failed");
}
if ((flowPathsObj == null) || (flowPathsObj.iterator().hasNext() == false)) {
- conn.endTx(Transaction.COMMIT);
+ op.commit();
return flowPaths; // No Flows found
}
@@ -1210,7 +1208,7 @@
flowPaths.add(flowPath);
}
- conn.endTx(Transaction.COMMIT);
+ op.commit();
return flowPaths;
}
@@ -1220,17 +1218,17 @@
ArrayList<IFlowPath> flowPathsObjArray = new ArrayList<IFlowPath>();
ArrayList<FlowPath> flowPaths = new ArrayList<FlowPath>();
- conn.endTx(Transaction.COMMIT);
+ op.commit();
try {
- if ((flowPathsObj = conn.utils().getAllFlowPaths(conn)) != null) {
+ if ((flowPathsObj = op.getAllFlowPaths()) != null) {
log.debug("Get all FlowPaths: found FlowPaths");
} else {
log.debug("Get all FlowPaths: no FlowPaths found");
}
} catch (Exception e) {
// TODO: handle exceptions
- conn.endTx(Transaction.ROLLBACK);
+ op.rollback();
log.error(":getAllFlowPaths failed");
}
if ((flowPathsObj == null) || (flowPathsObj.iterator().hasNext() == false)) {
diff --git a/src/main/java/net/floodlightcontroller/flowcache/IFlowService.java b/src/main/java/net/onrc/onos/ofcontroller/flowcache/IFlowService.java
similarity index 93%
rename from src/main/java/net/floodlightcontroller/flowcache/IFlowService.java
rename to src/main/java/net/onrc/onos/ofcontroller/flowcache/IFlowService.java
index 6c19fd0..06566d4 100644
--- a/src/main/java/net/floodlightcontroller/flowcache/IFlowService.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/flowcache/IFlowService.java
@@ -1,13 +1,13 @@
-package net.floodlightcontroller.flowcache;
+package net.onrc.onos.ofcontroller.flowcache;
import java.util.ArrayList;
-import net.floodlightcontroller.core.INetMapTopologyObjects.IFlowPath;
import net.floodlightcontroller.core.module.IFloodlightService;
-import net.floodlightcontroller.util.CallerId;
-import net.floodlightcontroller.util.DataPathEndpoints;
-import net.floodlightcontroller.util.FlowId;
-import net.floodlightcontroller.util.FlowPath;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IFlowPath;
+import net.onrc.onos.ofcontroller.util.CallerId;
+import net.onrc.onos.ofcontroller.util.DataPathEndpoints;
+import net.onrc.onos.ofcontroller.util.FlowId;
+import net.onrc.onos.ofcontroller.util.FlowPath;
/**
* @short Interface for providing Flow Service to other modules.
diff --git a/src/main/java/net/floodlightcontroller/flowcache/web/AddFlowResource.java b/src/main/java/net/onrc/onos/ofcontroller/flowcache/web/AddFlowResource.java
similarity index 88%
rename from src/main/java/net/floodlightcontroller/flowcache/web/AddFlowResource.java
rename to src/main/java/net/onrc/onos/ofcontroller/flowcache/web/AddFlowResource.java
index e266e2e..0763b8a 100644
--- a/src/main/java/net/floodlightcontroller/flowcache/web/AddFlowResource.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/flowcache/web/AddFlowResource.java
@@ -1,10 +1,10 @@
-package net.floodlightcontroller.flowcache.web;
+package net.onrc.onos.ofcontroller.flowcache.web;
import java.io.IOException;
-import net.floodlightcontroller.flowcache.IFlowService;
-import net.floodlightcontroller.util.FlowId;
-import net.floodlightcontroller.util.FlowPath;
+import net.onrc.onos.ofcontroller.flowcache.IFlowService;
+import net.onrc.onos.ofcontroller.util.FlowId;
+import net.onrc.onos.ofcontroller.util.FlowPath;
import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.map.ObjectMapper;
diff --git a/src/main/java/net/floodlightcontroller/flowcache/web/AddShortestPathFlowResource.java b/src/main/java/net/onrc/onos/ofcontroller/flowcache/web/AddShortestPathFlowResource.java
similarity index 89%
rename from src/main/java/net/floodlightcontroller/flowcache/web/AddShortestPathFlowResource.java
rename to src/main/java/net/onrc/onos/ofcontroller/flowcache/web/AddShortestPathFlowResource.java
index 3c5bcd8..59a8972 100644
--- a/src/main/java/net/floodlightcontroller/flowcache/web/AddShortestPathFlowResource.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/flowcache/web/AddShortestPathFlowResource.java
@@ -1,10 +1,10 @@
-package net.floodlightcontroller.flowcache.web;
+package net.onrc.onos.ofcontroller.flowcache.web;
import java.io.IOException;
-import net.floodlightcontroller.flowcache.IFlowService;
-import net.floodlightcontroller.util.FlowId;
-import net.floodlightcontroller.util.FlowPath;
+import net.onrc.onos.ofcontroller.flowcache.IFlowService;
+import net.onrc.onos.ofcontroller.util.FlowId;
+import net.onrc.onos.ofcontroller.util.FlowPath;
import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.map.ObjectMapper;
diff --git a/src/main/java/net/floodlightcontroller/flowcache/web/ClearFlowResource.java b/src/main/java/net/onrc/onos/ofcontroller/flowcache/web/ClearFlowResource.java
similarity index 87%
rename from src/main/java/net/floodlightcontroller/flowcache/web/ClearFlowResource.java
rename to src/main/java/net/onrc/onos/ofcontroller/flowcache/web/ClearFlowResource.java
index 7f3b589..e51bc9d 100644
--- a/src/main/java/net/floodlightcontroller/flowcache/web/ClearFlowResource.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/flowcache/web/ClearFlowResource.java
@@ -1,7 +1,7 @@
-package net.floodlightcontroller.flowcache.web;
+package net.onrc.onos.ofcontroller.flowcache.web;
-import net.floodlightcontroller.flowcache.IFlowService;
-import net.floodlightcontroller.util.FlowId;
+import net.onrc.onos.ofcontroller.flowcache.IFlowService;
+import net.onrc.onos.ofcontroller.util.FlowId;
import org.openflow.util.HexString;
import org.restlet.resource.Get;
diff --git a/src/main/java/net/floodlightcontroller/flowcache/web/DatapathSummarySerializer.java b/src/main/java/net/onrc/onos/ofcontroller/flowcache/web/DatapathSummarySerializer.java
similarity index 97%
rename from src/main/java/net/floodlightcontroller/flowcache/web/DatapathSummarySerializer.java
rename to src/main/java/net/onrc/onos/ofcontroller/flowcache/web/DatapathSummarySerializer.java
index b780e5c..2022966 100644
--- a/src/main/java/net/floodlightcontroller/flowcache/web/DatapathSummarySerializer.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/flowcache/web/DatapathSummarySerializer.java
@@ -1,4 +1,4 @@
-package net.floodlightcontroller.flowcache.web;
+package net.onrc.onos.ofcontroller.flowcache.web;
import java.io.IOException;
diff --git a/src/main/java/net/floodlightcontroller/flowcache/web/DeleteFlowResource.java b/src/main/java/net/onrc/onos/ofcontroller/flowcache/web/DeleteFlowResource.java
similarity index 87%
rename from src/main/java/net/floodlightcontroller/flowcache/web/DeleteFlowResource.java
rename to src/main/java/net/onrc/onos/ofcontroller/flowcache/web/DeleteFlowResource.java
index ed6f0f7..fb3d100 100644
--- a/src/main/java/net/floodlightcontroller/flowcache/web/DeleteFlowResource.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/flowcache/web/DeleteFlowResource.java
@@ -1,7 +1,7 @@
-package net.floodlightcontroller.flowcache.web;
+package net.onrc.onos.ofcontroller.flowcache.web;
-import net.floodlightcontroller.flowcache.IFlowService;
-import net.floodlightcontroller.util.FlowId;
+import net.onrc.onos.ofcontroller.flowcache.IFlowService;
+import net.onrc.onos.ofcontroller.util.FlowId;
import org.openflow.util.HexString;
import org.restlet.resource.Get;
diff --git a/src/main/java/net/floodlightcontroller/flowcache/web/FlowWebRoutable.java b/src/main/java/net/onrc/onos/ofcontroller/flowcache/web/FlowWebRoutable.java
similarity index 97%
rename from src/main/java/net/floodlightcontroller/flowcache/web/FlowWebRoutable.java
rename to src/main/java/net/onrc/onos/ofcontroller/flowcache/web/FlowWebRoutable.java
index fd9a319..a2a3e54 100644
--- a/src/main/java/net/floodlightcontroller/flowcache/web/FlowWebRoutable.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/flowcache/web/FlowWebRoutable.java
@@ -1,4 +1,4 @@
-package net.floodlightcontroller.flowcache.web;
+package net.onrc.onos.ofcontroller.flowcache.web;
import net.floodlightcontroller.restserver.RestletRoutable;
diff --git a/src/main/java/net/floodlightcontroller/flowcache/web/GetAllFlowsByEndpointsResource.java b/src/main/java/net/onrc/onos/ofcontroller/flowcache/web/GetAllFlowsByEndpointsResource.java
similarity index 82%
rename from src/main/java/net/floodlightcontroller/flowcache/web/GetAllFlowsByEndpointsResource.java
rename to src/main/java/net/onrc/onos/ofcontroller/flowcache/web/GetAllFlowsByEndpointsResource.java
index 34d79c8..c284a9c 100644
--- a/src/main/java/net/floodlightcontroller/flowcache/web/GetAllFlowsByEndpointsResource.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/flowcache/web/GetAllFlowsByEndpointsResource.java
@@ -1,13 +1,13 @@
-package net.floodlightcontroller.flowcache.web;
+package net.onrc.onos.ofcontroller.flowcache.web;
import java.util.ArrayList;
-import net.floodlightcontroller.flowcache.IFlowService;
-import net.floodlightcontroller.util.DataPathEndpoints;
-import net.floodlightcontroller.util.Dpid;
-import net.floodlightcontroller.util.FlowPath;
-import net.floodlightcontroller.util.Port;
-import net.floodlightcontroller.util.SwitchPort;
+import net.onrc.onos.ofcontroller.flowcache.IFlowService;
+import net.onrc.onos.ofcontroller.util.DataPathEndpoints;
+import net.onrc.onos.ofcontroller.util.Dpid;
+import net.onrc.onos.ofcontroller.util.FlowPath;
+import net.onrc.onos.ofcontroller.util.Port;
+import net.onrc.onos.ofcontroller.util.SwitchPort;
import org.restlet.resource.Get;
import org.restlet.resource.ServerResource;
diff --git a/src/main/java/net/floodlightcontroller/flowcache/web/GetAllFlowsByInstallerIdResource.java b/src/main/java/net/onrc/onos/ofcontroller/flowcache/web/GetAllFlowsByInstallerIdResource.java
similarity index 81%
rename from src/main/java/net/floodlightcontroller/flowcache/web/GetAllFlowsByInstallerIdResource.java
rename to src/main/java/net/onrc/onos/ofcontroller/flowcache/web/GetAllFlowsByInstallerIdResource.java
index e3043dc..8247422 100644
--- a/src/main/java/net/floodlightcontroller/flowcache/web/GetAllFlowsByInstallerIdResource.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/flowcache/web/GetAllFlowsByInstallerIdResource.java
@@ -1,14 +1,14 @@
-package net.floodlightcontroller.flowcache.web;
+package net.onrc.onos.ofcontroller.flowcache.web;
import java.util.ArrayList;
-import net.floodlightcontroller.flowcache.IFlowService;
-import net.floodlightcontroller.util.CallerId;
-import net.floodlightcontroller.util.DataPathEndpoints;
-import net.floodlightcontroller.util.Dpid;
-import net.floodlightcontroller.util.FlowPath;
-import net.floodlightcontroller.util.Port;
-import net.floodlightcontroller.util.SwitchPort;
+import net.onrc.onos.ofcontroller.flowcache.IFlowService;
+import net.onrc.onos.ofcontroller.util.CallerId;
+import net.onrc.onos.ofcontroller.util.DataPathEndpoints;
+import net.onrc.onos.ofcontroller.util.Dpid;
+import net.onrc.onos.ofcontroller.util.FlowPath;
+import net.onrc.onos.ofcontroller.util.Port;
+import net.onrc.onos.ofcontroller.util.SwitchPort;
import org.restlet.resource.Get;
import org.restlet.resource.ServerResource;
diff --git a/src/main/java/net/floodlightcontroller/flowcache/web/GetAllFlowsResource.java b/src/main/java/net/onrc/onos/ofcontroller/flowcache/web/GetAllFlowsResource.java
similarity index 83%
rename from src/main/java/net/floodlightcontroller/flowcache/web/GetAllFlowsResource.java
rename to src/main/java/net/onrc/onos/ofcontroller/flowcache/web/GetAllFlowsResource.java
index 92317cf..5ffbefa 100644
--- a/src/main/java/net/floodlightcontroller/flowcache/web/GetAllFlowsResource.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/flowcache/web/GetAllFlowsResource.java
@@ -1,9 +1,9 @@
-package net.floodlightcontroller.flowcache.web;
+package net.onrc.onos.ofcontroller.flowcache.web;
import java.util.ArrayList;
-import net.floodlightcontroller.flowcache.IFlowService;
-import net.floodlightcontroller.util.FlowPath;
+import net.onrc.onos.ofcontroller.flowcache.IFlowService;
+import net.onrc.onos.ofcontroller.util.FlowPath;
import org.restlet.resource.Get;
import org.restlet.resource.ServerResource;
diff --git a/src/main/java/net/floodlightcontroller/flowcache/web/GetFlowByIdResource.java b/src/main/java/net/onrc/onos/ofcontroller/flowcache/web/GetFlowByIdResource.java
similarity index 80%
rename from src/main/java/net/floodlightcontroller/flowcache/web/GetFlowByIdResource.java
rename to src/main/java/net/onrc/onos/ofcontroller/flowcache/web/GetFlowByIdResource.java
index 85d5b7e..2f0f712 100644
--- a/src/main/java/net/floodlightcontroller/flowcache/web/GetFlowByIdResource.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/flowcache/web/GetFlowByIdResource.java
@@ -1,8 +1,8 @@
-package net.floodlightcontroller.flowcache.web;
+package net.onrc.onos.ofcontroller.flowcache.web;
-import net.floodlightcontroller.flowcache.IFlowService;
-import net.floodlightcontroller.util.FlowId;
-import net.floodlightcontroller.util.FlowPath;
+import net.onrc.onos.ofcontroller.flowcache.IFlowService;
+import net.onrc.onos.ofcontroller.util.FlowId;
+import net.onrc.onos.ofcontroller.util.FlowPath;
import org.restlet.resource.Get;
import org.restlet.resource.ServerResource;
diff --git a/src/main/java/net/floodlightcontroller/flowcache/web/GetSummaryFlowsResource.java b/src/main/java/net/onrc/onos/ofcontroller/flowcache/web/GetSummaryFlowsResource.java
similarity index 81%
rename from src/main/java/net/floodlightcontroller/flowcache/web/GetSummaryFlowsResource.java
rename to src/main/java/net/onrc/onos/ofcontroller/flowcache/web/GetSummaryFlowsResource.java
index 5f63222..54c75f2 100644
--- a/src/main/java/net/floodlightcontroller/flowcache/web/GetSummaryFlowsResource.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/flowcache/web/GetSummaryFlowsResource.java
@@ -1,11 +1,11 @@
-package net.floodlightcontroller.flowcache.web;
+package net.onrc.onos.ofcontroller.flowcache.web;
import java.util.ArrayList;
-import net.floodlightcontroller.core.INetMapTopologyObjects.IFlowPath;
-import net.floodlightcontroller.flowcache.IFlowService;
-import net.floodlightcontroller.util.FlowId;
-import net.floodlightcontroller.util.FlowPath;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IFlowPath;
+import net.onrc.onos.ofcontroller.flowcache.IFlowService;
+import net.onrc.onos.ofcontroller.util.FlowId;
+import net.onrc.onos.ofcontroller.util.FlowPath;
import org.restlet.resource.Get;
import org.restlet.resource.ServerResource;
diff --git a/src/main/java/net/floodlightcontroller/flowcache/web/MeasurementClearAllPathsFlowResource.java b/src/main/java/net/onrc/onos/ofcontroller/flowcache/web/MeasurementClearAllPathsFlowResource.java
similarity index 84%
rename from src/main/java/net/floodlightcontroller/flowcache/web/MeasurementClearAllPathsFlowResource.java
rename to src/main/java/net/onrc/onos/ofcontroller/flowcache/web/MeasurementClearAllPathsFlowResource.java
index f69180d..d0c013e 100644
--- a/src/main/java/net/floodlightcontroller/flowcache/web/MeasurementClearAllPathsFlowResource.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/flowcache/web/MeasurementClearAllPathsFlowResource.java
@@ -1,7 +1,7 @@
-package net.floodlightcontroller.flowcache.web;
+package net.onrc.onos.ofcontroller.flowcache.web;
-import net.floodlightcontroller.flowcache.IFlowService;
-import net.floodlightcontroller.util.FlowId;
+import net.onrc.onos.ofcontroller.flowcache.IFlowService;
+import net.onrc.onos.ofcontroller.util.FlowId;
import org.openflow.util.HexString;
import org.restlet.resource.Get;
diff --git a/src/main/java/net/floodlightcontroller/flowcache/web/MeasurementGetInstallPathsTimeNsecFlowResource.java b/src/main/java/net/onrc/onos/ofcontroller/flowcache/web/MeasurementGetInstallPathsTimeNsecFlowResource.java
similarity index 85%
rename from src/main/java/net/floodlightcontroller/flowcache/web/MeasurementGetInstallPathsTimeNsecFlowResource.java
rename to src/main/java/net/onrc/onos/ofcontroller/flowcache/web/MeasurementGetInstallPathsTimeNsecFlowResource.java
index 3dc1d08..2d2fbf6 100644
--- a/src/main/java/net/floodlightcontroller/flowcache/web/MeasurementGetInstallPathsTimeNsecFlowResource.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/flowcache/web/MeasurementGetInstallPathsTimeNsecFlowResource.java
@@ -1,7 +1,7 @@
-package net.floodlightcontroller.flowcache.web;
+package net.onrc.onos.ofcontroller.flowcache.web;
-import net.floodlightcontroller.flowcache.IFlowService;
-import net.floodlightcontroller.util.FlowId;
+import net.onrc.onos.ofcontroller.flowcache.IFlowService;
+import net.onrc.onos.ofcontroller.util.FlowId;
import org.openflow.util.HexString;
import org.restlet.resource.Get;
diff --git a/src/main/java/net/floodlightcontroller/flowcache/web/MeasurementGetPerFlowInstallTimeFlowResource.java b/src/main/java/net/onrc/onos/ofcontroller/flowcache/web/MeasurementGetPerFlowInstallTimeFlowResource.java
similarity index 85%
rename from src/main/java/net/floodlightcontroller/flowcache/web/MeasurementGetPerFlowInstallTimeFlowResource.java
rename to src/main/java/net/onrc/onos/ofcontroller/flowcache/web/MeasurementGetPerFlowInstallTimeFlowResource.java
index adaecc8..981c12c 100644
--- a/src/main/java/net/floodlightcontroller/flowcache/web/MeasurementGetPerFlowInstallTimeFlowResource.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/flowcache/web/MeasurementGetPerFlowInstallTimeFlowResource.java
@@ -1,7 +1,7 @@
-package net.floodlightcontroller.flowcache.web;
+package net.onrc.onos.ofcontroller.flowcache.web;
-import net.floodlightcontroller.flowcache.IFlowService;
-import net.floodlightcontroller.util.FlowId;
+import net.onrc.onos.ofcontroller.flowcache.IFlowService;
+import net.onrc.onos.ofcontroller.util.FlowId;
import org.openflow.util.HexString;
import org.restlet.resource.Get;
diff --git a/src/main/java/net/floodlightcontroller/flowcache/web/MeasurementInstallPathsFlowResource.java b/src/main/java/net/onrc/onos/ofcontroller/flowcache/web/MeasurementInstallPathsFlowResource.java
similarity index 86%
rename from src/main/java/net/floodlightcontroller/flowcache/web/MeasurementInstallPathsFlowResource.java
rename to src/main/java/net/onrc/onos/ofcontroller/flowcache/web/MeasurementInstallPathsFlowResource.java
index 1bba4b1..911de89 100644
--- a/src/main/java/net/floodlightcontroller/flowcache/web/MeasurementInstallPathsFlowResource.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/flowcache/web/MeasurementInstallPathsFlowResource.java
@@ -1,7 +1,7 @@
-package net.floodlightcontroller.flowcache.web;
+package net.onrc.onos.ofcontroller.flowcache.web;
-import net.floodlightcontroller.flowcache.IFlowService;
-import net.floodlightcontroller.util.FlowId;
+import net.onrc.onos.ofcontroller.flowcache.IFlowService;
+import net.onrc.onos.ofcontroller.util.FlowId;
import org.openflow.util.HexString;
import org.restlet.resource.Get;
diff --git a/src/main/java/net/floodlightcontroller/flowcache/web/MeasurementStorePathFlowResource.java b/src/main/java/net/onrc/onos/ofcontroller/flowcache/web/MeasurementStorePathFlowResource.java
similarity index 89%
rename from src/main/java/net/floodlightcontroller/flowcache/web/MeasurementStorePathFlowResource.java
rename to src/main/java/net/onrc/onos/ofcontroller/flowcache/web/MeasurementStorePathFlowResource.java
index e68ceb7..5eb8af0 100644
--- a/src/main/java/net/floodlightcontroller/flowcache/web/MeasurementStorePathFlowResource.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/flowcache/web/MeasurementStorePathFlowResource.java
@@ -1,10 +1,10 @@
-package net.floodlightcontroller.flowcache.web;
+package net.onrc.onos.ofcontroller.flowcache.web;
import java.io.IOException;
-import net.floodlightcontroller.flowcache.IFlowService;
-import net.floodlightcontroller.util.FlowId;
-import net.floodlightcontroller.util.FlowPath;
+import net.onrc.onos.ofcontroller.flowcache.IFlowService;
+import net.onrc.onos.ofcontroller.util.FlowId;
+import net.onrc.onos.ofcontroller.util.FlowPath;
import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.map.ObjectMapper;
diff --git a/src/main/java/net/floodlightcontroller/linkdiscovery/ILinkStorage.java b/src/main/java/net/onrc/onos/ofcontroller/linkdiscovery/ILinkStorage.java
similarity index 88%
rename from src/main/java/net/floodlightcontroller/linkdiscovery/ILinkStorage.java
rename to src/main/java/net/onrc/onos/ofcontroller/linkdiscovery/ILinkStorage.java
index 90836ca..5150668 100644
--- a/src/main/java/net/floodlightcontroller/linkdiscovery/ILinkStorage.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/linkdiscovery/ILinkStorage.java
@@ -1,9 +1,10 @@
-package net.floodlightcontroller.linkdiscovery;
+package net.onrc.onos.ofcontroller.linkdiscovery;
import java.util.List;
-import net.floodlightcontroller.core.INetMapStorage;
+import net.floodlightcontroller.linkdiscovery.LinkInfo;
import net.floodlightcontroller.routing.Link;
+import net.onrc.onos.ofcontroller.core.INetMapStorage;
public interface ILinkStorage extends INetMapStorage {
diff --git a/src/main/java/net/floodlightcontroller/linkdiscovery/internal/TopoLinkServiceImpl.java b/src/main/java/net/onrc/onos/ofcontroller/linkdiscovery/internal/TopoLinkServiceImpl.java
similarity index 72%
rename from src/main/java/net/floodlightcontroller/linkdiscovery/internal/TopoLinkServiceImpl.java
rename to src/main/java/net/onrc/onos/ofcontroller/linkdiscovery/internal/TopoLinkServiceImpl.java
index 9d5fdba..1fe12c4 100644
--- a/src/main/java/net/floodlightcontroller/linkdiscovery/internal/TopoLinkServiceImpl.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/linkdiscovery/internal/TopoLinkServiceImpl.java
@@ -1,14 +1,15 @@
-package net.floodlightcontroller.linkdiscovery.internal;
+package net.onrc.onos.ofcontroller.linkdiscovery.internal;
import java.util.ArrayList;
import java.util.List;
-import net.floodlightcontroller.core.INetMapTopologyObjects.ISwitchObject;
-import net.floodlightcontroller.core.INetMapTopologyService.ITopoLinkService;
+import net.floodlightcontroller.linkdiscovery.internal.LinkStorageImpl;
import net.floodlightcontroller.linkdiscovery.internal.LinkStorageImpl.ExtractLink;
import net.floodlightcontroller.routing.Link;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.ISwitchObject;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyService.ITopoLinkService;
import net.onrc.onos.util.GraphDBConnection;
-import net.onrc.onos.util.GraphDBConnection.Transaction;
+import net.onrc.onos.util.GraphDBOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -18,25 +19,24 @@
public class TopoLinkServiceImpl implements ITopoLinkService {
- public GraphDBConnection conn;
+ protected GraphDBOperation op;
protected static Logger log = LoggerFactory.getLogger(TopoLinkServiceImpl.class);
-
public void finalize() {
close();
}
@Override
public void close() {
- conn.close();
+ op.close();
}
@Override
public List<Link> getActiveLinks() {
// TODO Auto-generated method stub
- conn = GraphDBConnection.getInstance("");
- conn.close(); //Commit to ensure we see latest data
- Iterable<ISwitchObject> switches = conn.utils().getActiveSwitches(conn);
+ op = new GraphDBOperation(GraphDBConnection.getInstance(""));
+ op.close(); //Commit to ensure we see latest data
+ Iterable<ISwitchObject> switches = op.getActiveSwitches();
List<Link> links = new ArrayList<Link>();
for (ISwitchObject sw : switches) {
GremlinPipeline<Vertex, Link> pipe = new GremlinPipeline<Vertex, Link>();
@@ -52,7 +52,7 @@
}
}
- conn.endTx(Transaction.COMMIT);
+ op.commit();
return links;
}
@@ -60,7 +60,7 @@
public List<Link> getLinksOnSwitch(String dpid) {
// TODO Auto-generated method stub
List<Link> links = new ArrayList<Link>();
- ISwitchObject sw = conn.utils().searchSwitch(conn, dpid);
+ ISwitchObject sw = op.searchSwitch(dpid);
GremlinPipeline<Vertex, Link> pipe = new GremlinPipeline<Vertex, Link>();
ExtractLink extractor = new ExtractLink();
diff --git a/src/main/java/net/floodlightcontroller/linkdiscovery/web/TopoLinksResource.java b/src/main/java/net/onrc/onos/ofcontroller/linkdiscovery/web/TopoLinksResource.java
similarity index 74%
rename from src/main/java/net/floodlightcontroller/linkdiscovery/web/TopoLinksResource.java
rename to src/main/java/net/onrc/onos/ofcontroller/linkdiscovery/web/TopoLinksResource.java
index 25b68fb..b692517 100644
--- a/src/main/java/net/floodlightcontroller/linkdiscovery/web/TopoLinksResource.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/linkdiscovery/web/TopoLinksResource.java
@@ -1,8 +1,8 @@
-package net.floodlightcontroller.linkdiscovery.web;
+package net.onrc.onos.ofcontroller.linkdiscovery.web;
import java.util.List;
-import net.floodlightcontroller.linkdiscovery.internal.TopoLinkServiceImpl;
import net.floodlightcontroller.routing.Link;
+import net.onrc.onos.ofcontroller.linkdiscovery.internal.TopoLinkServiceImpl;
import org.restlet.resource.Get;
import org.restlet.resource.ServerResource;
diff --git a/src/main/java/net/floodlightcontroller/onoslistener/OnosPublisher.java b/src/main/java/net/onrc/onos/ofcontroller/onoslistener/OnosPublisher.java
similarity index 88%
rename from src/main/java/net/floodlightcontroller/onoslistener/OnosPublisher.java
rename to src/main/java/net/onrc/onos/ofcontroller/onoslistener/OnosPublisher.java
index 19ed705..6a9d433 100644
--- a/src/main/java/net/floodlightcontroller/onoslistener/OnosPublisher.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/onoslistener/OnosPublisher.java
@@ -1,4 +1,4 @@
-package net.floodlightcontroller.onoslistener;
+package net.onrc.onos.ofcontroller.onoslistener;
import java.util.ArrayList;
import java.util.Collection;
@@ -12,15 +12,8 @@
import org.slf4j.LoggerFactory;
import net.floodlightcontroller.core.IFloodlightProviderService;
-import net.floodlightcontroller.core.INetMapStorage.DM_OPERATION;
-import net.floodlightcontroller.core.INetMapTopologyObjects.IPortObject;
-import net.floodlightcontroller.core.INetMapTopologyObjects.ISwitchObject;
-import net.floodlightcontroller.core.ISwitchStorage.SwitchState;
import net.floodlightcontroller.core.IOFSwitch;
import net.floodlightcontroller.core.IOFSwitchListener;
-import net.floodlightcontroller.core.ISwitchStorage;
-import net.floodlightcontroller.core.internal.SwitchStorageImpl;
-import net.floodlightcontroller.core.internal.TopoSwitchServiceImpl;
import net.floodlightcontroller.core.module.FloodlightModuleContext;
import net.floodlightcontroller.core.module.FloodlightModuleException;
import net.floodlightcontroller.core.module.IFloodlightModule;
@@ -29,18 +22,27 @@
import net.floodlightcontroller.devicemanager.IDevice;
import net.floodlightcontroller.devicemanager.IDeviceListener;
import net.floodlightcontroller.devicemanager.IDeviceService;
-import net.floodlightcontroller.devicemanager.IDeviceStorage;
-import net.floodlightcontroller.devicemanager.internal.DeviceStorageImpl;
import net.floodlightcontroller.linkdiscovery.ILinkDiscoveryListener;
import net.floodlightcontroller.linkdiscovery.ILinkDiscoveryService;
-import net.floodlightcontroller.linkdiscovery.ILinkStorage;
import net.floodlightcontroller.linkdiscovery.internal.LinkStorageImpl;
import net.floodlightcontroller.routing.Link;
import net.floodlightcontroller.threadpool.IThreadPoolService;
+import net.onrc.onos.ofcontroller.core.ISwitchStorage;
+import net.onrc.onos.ofcontroller.core.INetMapStorage.DM_OPERATION;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IPortObject;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.ISwitchObject;
+import net.onrc.onos.ofcontroller.core.ISwitchStorage.SwitchState;
+import net.onrc.onos.ofcontroller.core.internal.SwitchStorageImpl;
+import net.onrc.onos.ofcontroller.core.internal.TopoSwitchServiceImpl;
+import net.onrc.onos.ofcontroller.devicemanager.IDeviceStorage;
+import net.onrc.onos.ofcontroller.devicemanager.internal.DeviceStorageImpl;
+import net.onrc.onos.ofcontroller.linkdiscovery.ILinkStorage;
import net.onrc.onos.registry.controller.IControllerRegistryService;
import net.onrc.onos.registry.controller.IControllerRegistryService.ControlChangeCallback;
import net.onrc.onos.registry.controller.RegistryException;
import net.onrc.onos.util.GraphDBConnection;
+import net.onrc.onos.util.GraphDBOperation;
+import net.onrc.onos.util.IDBConnection;
import net.onrc.onos.util.LocalTopologyEventListener;
public class OnosPublisher implements IDeviceListener, IOFSwitchListener,
@@ -52,7 +54,7 @@
protected static Logger log;
protected IDeviceService deviceService;
protected IControllerRegistryService registryService;
- protected GraphDBConnection conn;
+ protected GraphDBOperation op;
protected static final String DBConfigFile = "dbconf";
protected static final String CleanupEnabled = "EnableCleanup";
@@ -76,7 +78,7 @@
catch (Exception e) {
log.error("Error in cleanup thread", e);
} finally {
- conn.close();
+ op.close();
cleanupTask.reschedule(CLEANUP_TASK_INTERVAL,
TimeUnit.SECONDS);
}
@@ -95,8 +97,8 @@
}
protected void switchCleanup() {
- conn.close();
- Iterable<ISwitchObject> switches = conn.utils().getActiveSwitches(conn);
+ op.close();
+ Iterable<ISwitchObject> switches = op.getActiveSwitches();
log.debug("Checking for inactive switches");
// For each switch check if a controller exists in controller registry
@@ -119,7 +121,7 @@
e.printStackTrace();
}
}
- conn.close();
+ op.close();
}
@Override
@@ -251,7 +253,7 @@
// TODO Auto-generated method stub
Map<String, String> configMap = context.getConfigParams(this);
String conf = configMap.get(DBConfigFile);
- conn = GraphDBConnection.getInstance(conf);
+ op = new GraphDBOperation(GraphDBConnection.getInstance(conf));
log = LoggerFactory.getLogger(OnosPublisher.class);
floodlightProvider =
@@ -285,7 +287,8 @@
linkDiscovery.addListener(this);
log.debug("Adding EventListener");
- conn.addEventListener(new LocalTopologyEventListener(conn));
+ IDBConnection conn = op.getDBConnection();
+ conn.addEventListener(new LocalTopologyEventListener((GraphDBConnection) conn));
// Setup the Cleanup task.
if (cleanupNeeded == null || !cleanupNeeded.equals("False")) {
ScheduledExecutorService ses = threadPool.getScheduledExecutor();
diff --git a/src/main/java/net/floodlightcontroller/routing/TopoRouteService.java b/src/main/java/net/onrc/onos/ofcontroller/routing/TopoRouteService.java
similarity index 95%
rename from src/main/java/net/floodlightcontroller/routing/TopoRouteService.java
rename to src/main/java/net/onrc/onos/ofcontroller/routing/TopoRouteService.java
index 1e002aa..a051d4c 100644
--- a/src/main/java/net/floodlightcontroller/routing/TopoRouteService.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/routing/TopoRouteService.java
@@ -1,4 +1,4 @@
-package net.floodlightcontroller.routing;
+package net.onrc.onos.ofcontroller.routing;
import java.util.ArrayList;
import java.util.Collection;
@@ -11,20 +11,21 @@
import java.util.Queue;
import java.util.Set;
-import net.floodlightcontroller.core.INetMapTopologyObjects.ISwitchObject;
-import net.floodlightcontroller.core.INetMapTopologyService.ITopoRouteService;
-import net.floodlightcontroller.core.ISwitchStorage.SwitchState;
import net.floodlightcontroller.core.module.FloodlightModuleContext;
import net.floodlightcontroller.core.module.FloodlightModuleException;
import net.floodlightcontroller.core.module.IFloodlightModule;
import net.floodlightcontroller.core.module.IFloodlightService;
-import net.floodlightcontroller.util.DataPath;
-import net.floodlightcontroller.util.Dpid;
-import net.floodlightcontroller.util.FlowEntry;
-import net.floodlightcontroller.util.Port;
-import net.floodlightcontroller.util.SwitchPort;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.ISwitchObject;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyService.ITopoRouteService;
+import net.onrc.onos.ofcontroller.core.ISwitchStorage.SwitchState;
+import net.onrc.onos.ofcontroller.util.DataPath;
+import net.onrc.onos.ofcontroller.util.Dpid;
+import net.onrc.onos.ofcontroller.util.FlowEntry;
+import net.onrc.onos.ofcontroller.util.Port;
+import net.onrc.onos.ofcontroller.util.SwitchPort;
import net.onrc.onos.util.GraphDBConnection;
import net.onrc.onos.util.GraphDBConnection.Transaction;
+import net.onrc.onos.util.GraphDBOperation;
import org.openflow.util.HexString;
import org.slf4j.Logger;
@@ -99,7 +100,7 @@
private static Logger log =
LoggerFactory.getLogger(TopoRouteService.class);
- GraphDBConnection conn;
+ protected GraphDBOperation op;
@Override
public Collection<Class<? extends IFloodlightService>> getModuleServices() {
@@ -134,7 +135,7 @@
public void init(FloodlightModuleContext context)
throws FloodlightModuleException {
// TODO: Add the appropriate initialization
- conn = GraphDBConnection.getInstance("");
+ op = new GraphDBOperation(GraphDBConnection.getInstance(""));
}
@Override
@@ -193,7 +194,7 @@
// Fetch the relevant info from the Switch and Port vertices
// from the Titan Graph.
//
- Iterable<ISwitchObject> nodes = conn.utils().getActiveSwitches(conn);
+ Iterable<ISwitchObject> nodes = op.getActiveSwitches();
for (ISwitchObject switchObj : nodes) {
Vertex nodeVertex = switchObj.asVertex();
//
@@ -253,7 +254,7 @@
}
}
}
- conn.endTx(Transaction.COMMIT);
+ op.commit();
return shortestPathTopo;
}
@@ -416,9 +417,9 @@
// Get the source and destination switches
ISwitchObject srcSwitch =
- conn.utils().searchActiveSwitch(conn, dpid_src);
+ op.searchActiveSwitch(dpid_src);
ISwitchObject destSwitch =
- conn.utils().searchActiveSwitch(conn, dpid_dest);
+ op.searchActiveSwitch(dpid_dest);
if (srcSwitch == null || destSwitch == null) {
return null;
}
@@ -433,7 +434,7 @@
flowEntry.setInPort(src.port());
flowEntry.setOutPort(dest.port());
result_data_path.flowEntries().add(flowEntry);
- conn.endTx(Transaction.COMMIT);
+ op.commit();
return result_data_path;
}
@@ -552,7 +553,7 @@
result_data_path.flowEntries().add(flowEntry);
}
- conn.endTx(Transaction.COMMIT);
+ op.commit();
if (result_data_path.flowEntries().size() > 0)
return result_data_path;
diff --git a/src/main/java/net/floodlightcontroller/util/CallerId.java b/src/main/java/net/onrc/onos/ofcontroller/util/CallerId.java
similarity index 95%
rename from src/main/java/net/floodlightcontroller/util/CallerId.java
rename to src/main/java/net/onrc/onos/ofcontroller/util/CallerId.java
index ade0f0d..0607533 100644
--- a/src/main/java/net/floodlightcontroller/util/CallerId.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/util/CallerId.java
@@ -1,4 +1,4 @@
-package net.floodlightcontroller.util;
+package net.onrc.onos.ofcontroller.util;
import org.codehaus.jackson.annotate.JsonProperty;
diff --git a/src/main/java/net/floodlightcontroller/util/DataPath.java b/src/main/java/net/onrc/onos/ofcontroller/util/DataPath.java
similarity index 95%
rename from src/main/java/net/floodlightcontroller/util/DataPath.java
rename to src/main/java/net/onrc/onos/ofcontroller/util/DataPath.java
index 0ca0d13..f02552b 100644
--- a/src/main/java/net/floodlightcontroller/util/DataPath.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/util/DataPath.java
@@ -1,9 +1,7 @@
-package net.floodlightcontroller.util;
+package net.onrc.onos.ofcontroller.util;
import java.util.ArrayList;
-import net.floodlightcontroller.util.SwitchPort;
-import net.floodlightcontroller.util.FlowEntry;
import org.codehaus.jackson.annotate.JsonProperty;
diff --git a/src/main/java/net/floodlightcontroller/util/DataPathEndpoints.java b/src/main/java/net/onrc/onos/ofcontroller/util/DataPathEndpoints.java
similarity index 95%
rename from src/main/java/net/floodlightcontroller/util/DataPathEndpoints.java
rename to src/main/java/net/onrc/onos/ofcontroller/util/DataPathEndpoints.java
index 3ee88d1..9cdd4fb 100644
--- a/src/main/java/net/floodlightcontroller/util/DataPathEndpoints.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/util/DataPathEndpoints.java
@@ -1,6 +1,5 @@
-package net.floodlightcontroller.util;
+package net.onrc.onos.ofcontroller.util;
-import net.floodlightcontroller.util.SwitchPort;
import org.codehaus.jackson.annotate.JsonProperty;
diff --git a/src/main/java/net/floodlightcontroller/util/Dpid.java b/src/main/java/net/onrc/onos/ofcontroller/util/Dpid.java
similarity index 88%
rename from src/main/java/net/floodlightcontroller/util/Dpid.java
rename to src/main/java/net/onrc/onos/ofcontroller/util/Dpid.java
index 5af6bea..ce8a4f6 100644
--- a/src/main/java/net/floodlightcontroller/util/Dpid.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/util/Dpid.java
@@ -1,8 +1,9 @@
-package net.floodlightcontroller.util;
+package net.onrc.onos.ofcontroller.util;
import org.openflow.util.HexString;
-import net.floodlightcontroller.util.serializers.DpidDeserializer;
-import net.floodlightcontroller.util.serializers.DpidSerializer;
+
+import net.onrc.onos.ofcontroller.util.serializers.DpidDeserializer;
+import net.onrc.onos.ofcontroller.util.serializers.DpidSerializer;
import org.codehaus.jackson.annotate.JsonProperty;
import org.codehaus.jackson.map.annotate.JsonDeserialize;
diff --git a/src/main/java/net/floodlightcontroller/util/FlowEntry.java b/src/main/java/net/onrc/onos/ofcontroller/util/FlowEntry.java
similarity index 94%
rename from src/main/java/net/floodlightcontroller/util/FlowEntry.java
rename to src/main/java/net/onrc/onos/ofcontroller/util/FlowEntry.java
index 21f3a9e..ac32d0b 100644
--- a/src/main/java/net/floodlightcontroller/util/FlowEntry.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/util/FlowEntry.java
@@ -1,18 +1,15 @@
-package net.floodlightcontroller.util;
+package net.onrc.onos.ofcontroller.util;
import java.util.ArrayList;
-import net.floodlightcontroller.util.Dpid;
-import net.floodlightcontroller.util.FlowEntryAction;
-import net.floodlightcontroller.util.FlowEntryErrorState;
-import net.floodlightcontroller.util.FlowEntryId;
-import net.floodlightcontroller.util.FlowEntryMatch;
-import net.floodlightcontroller.util.FlowEntrySwitchState;
-import net.floodlightcontroller.util.FlowEntryUserState;
-import net.floodlightcontroller.util.Port;
import net.floodlightcontroller.util.MACAddress;
-import net.floodlightcontroller.util.IPv4;
+import net.onrc.onos.ofcontroller.util.FlowEntryAction;
+import net.onrc.onos.ofcontroller.util.FlowEntryErrorState;
+import net.onrc.onos.ofcontroller.util.FlowEntryId;
+import net.onrc.onos.ofcontroller.util.FlowEntryMatch;
+import net.onrc.onos.ofcontroller.util.FlowEntrySwitchState;
+import net.onrc.onos.ofcontroller.util.FlowEntryUserState;
import org.codehaus.jackson.annotate.JsonIgnore;
import org.codehaus.jackson.annotate.JsonProperty;
diff --git a/src/main/java/net/floodlightcontroller/util/FlowEntryAction.java b/src/main/java/net/onrc/onos/ofcontroller/util/FlowEntryAction.java
similarity index 99%
rename from src/main/java/net/floodlightcontroller/util/FlowEntryAction.java
rename to src/main/java/net/onrc/onos/ofcontroller/util/FlowEntryAction.java
index 1fc1783..858272c 100644
--- a/src/main/java/net/floodlightcontroller/util/FlowEntryAction.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/util/FlowEntryAction.java
@@ -1,8 +1,7 @@
-package net.floodlightcontroller.util;
+package net.onrc.onos.ofcontroller.util;
-import net.floodlightcontroller.util.IPv4;
import net.floodlightcontroller.util.MACAddress;
-import net.floodlightcontroller.util.Port;
+import net.onrc.onos.ofcontroller.util.Port.PortValues;
import org.codehaus.jackson.annotate.JsonProperty;
diff --git a/src/main/java/net/floodlightcontroller/util/FlowEntryErrorState.java b/src/main/java/net/onrc/onos/ofcontroller/util/FlowEntryErrorState.java
similarity index 97%
rename from src/main/java/net/floodlightcontroller/util/FlowEntryErrorState.java
rename to src/main/java/net/onrc/onos/ofcontroller/util/FlowEntryErrorState.java
index bf1708d..2e8c448 100644
--- a/src/main/java/net/floodlightcontroller/util/FlowEntryErrorState.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/util/FlowEntryErrorState.java
@@ -1,4 +1,4 @@
-package net.floodlightcontroller.util;
+package net.onrc.onos.ofcontroller.util;
import org.codehaus.jackson.annotate.JsonProperty;
diff --git a/src/main/java/net/floodlightcontroller/util/FlowEntryId.java b/src/main/java/net/onrc/onos/ofcontroller/util/FlowEntryId.java
similarity index 90%
rename from src/main/java/net/floodlightcontroller/util/FlowEntryId.java
rename to src/main/java/net/onrc/onos/ofcontroller/util/FlowEntryId.java
index e146a3d..7a8f67b 100644
--- a/src/main/java/net/floodlightcontroller/util/FlowEntryId.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/util/FlowEntryId.java
@@ -1,9 +1,9 @@
-package net.floodlightcontroller.util;
+package net.onrc.onos.ofcontroller.util;
import java.math.BigInteger;
-import net.floodlightcontroller.util.serializers.FlowEntryIdDeserializer;
-import net.floodlightcontroller.util.serializers.FlowEntryIdSerializer;
+import net.onrc.onos.ofcontroller.util.serializers.FlowEntryIdDeserializer;
+import net.onrc.onos.ofcontroller.util.serializers.FlowEntryIdSerializer;
import org.codehaus.jackson.annotate.JsonProperty;
import org.codehaus.jackson.map.annotate.JsonDeserialize;
diff --git a/src/main/java/net/floodlightcontroller/util/FlowEntryMatch.java b/src/main/java/net/onrc/onos/ofcontroller/util/FlowEntryMatch.java
similarity index 99%
rename from src/main/java/net/floodlightcontroller/util/FlowEntryMatch.java
rename to src/main/java/net/onrc/onos/ofcontroller/util/FlowEntryMatch.java
index 6c8e71e..0b79c01 100644
--- a/src/main/java/net/floodlightcontroller/util/FlowEntryMatch.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/util/FlowEntryMatch.java
@@ -1,7 +1,6 @@
-package net.floodlightcontroller.util;
+package net.onrc.onos.ofcontroller.util;
import net.floodlightcontroller.util.MACAddress;
-import net.floodlightcontroller.util.IPv4Net;
import org.codehaus.jackson.annotate.JsonProperty;
diff --git a/src/main/java/net/floodlightcontroller/util/FlowEntrySwitchState.java b/src/main/java/net/onrc/onos/ofcontroller/util/FlowEntrySwitchState.java
similarity index 90%
rename from src/main/java/net/floodlightcontroller/util/FlowEntrySwitchState.java
rename to src/main/java/net/onrc/onos/ofcontroller/util/FlowEntrySwitchState.java
index 4f9882a..a69fdac 100644
--- a/src/main/java/net/floodlightcontroller/util/FlowEntrySwitchState.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/util/FlowEntrySwitchState.java
@@ -1,4 +1,4 @@
-package net.floodlightcontroller.util;
+package net.onrc.onos.ofcontroller.util;
/**
* The Flow Entry state as set by the controller.
diff --git a/src/main/java/net/floodlightcontroller/util/FlowEntryUserState.java b/src/main/java/net/onrc/onos/ofcontroller/util/FlowEntryUserState.java
similarity index 88%
rename from src/main/java/net/floodlightcontroller/util/FlowEntryUserState.java
rename to src/main/java/net/onrc/onos/ofcontroller/util/FlowEntryUserState.java
index 8637b4f..e3b64f0 100644
--- a/src/main/java/net/floodlightcontroller/util/FlowEntryUserState.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/util/FlowEntryUserState.java
@@ -1,4 +1,4 @@
-package net.floodlightcontroller.util;
+package net.onrc.onos.ofcontroller.util;
/**
* The Flow Entry state as set by the user (via the ONOS API).
diff --git a/src/main/java/net/floodlightcontroller/util/FlowId.java b/src/main/java/net/onrc/onos/ofcontroller/util/FlowId.java
similarity index 90%
rename from src/main/java/net/floodlightcontroller/util/FlowId.java
rename to src/main/java/net/onrc/onos/ofcontroller/util/FlowId.java
index 0297e2a..b9652b8 100644
--- a/src/main/java/net/floodlightcontroller/util/FlowId.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/util/FlowId.java
@@ -1,9 +1,9 @@
-package net.floodlightcontroller.util;
+package net.onrc.onos.ofcontroller.util;
import java.math.BigInteger;
-import net.floodlightcontroller.util.serializers.FlowIdDeserializer;
-import net.floodlightcontroller.util.serializers.FlowIdSerializer;
+import net.onrc.onos.ofcontroller.util.serializers.FlowIdDeserializer;
+import net.onrc.onos.ofcontroller.util.serializers.FlowIdSerializer;
import org.codehaus.jackson.annotate.JsonProperty;
import org.codehaus.jackson.map.annotate.JsonDeserialize;
diff --git a/src/main/java/net/floodlightcontroller/util/FlowPath.java b/src/main/java/net/onrc/onos/ofcontroller/util/FlowPath.java
similarity index 94%
rename from src/main/java/net/floodlightcontroller/util/FlowPath.java
rename to src/main/java/net/onrc/onos/ofcontroller/util/FlowPath.java
index b171b88..29898e6 100644
--- a/src/main/java/net/floodlightcontroller/util/FlowPath.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/util/FlowPath.java
@@ -1,13 +1,12 @@
-package net.floodlightcontroller.util;
+package net.onrc.onos.ofcontroller.util;
import java.util.ArrayList;
-import net.floodlightcontroller.core.INetMapTopologyObjects.IFlowEntry;
-import net.floodlightcontroller.core.INetMapTopologyObjects.IFlowPath;
-import net.floodlightcontroller.util.CallerId;
-import net.floodlightcontroller.util.DataPath;
-import net.floodlightcontroller.util.FlowEntryMatch;
-import net.floodlightcontroller.util.FlowId;
+import net.floodlightcontroller.util.MACAddress;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IFlowEntry;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IFlowPath;
+import net.onrc.onos.ofcontroller.util.FlowEntryMatch;
+import net.onrc.onos.ofcontroller.util.FlowId;
import org.codehaus.jackson.annotate.JsonProperty;
diff --git a/src/main/java/net/floodlightcontroller/util/IPv4.java b/src/main/java/net/onrc/onos/ofcontroller/util/IPv4.java
similarity index 90%
rename from src/main/java/net/floodlightcontroller/util/IPv4.java
rename to src/main/java/net/onrc/onos/ofcontroller/util/IPv4.java
index ef3a1e5..a9d7d85 100644
--- a/src/main/java/net/floodlightcontroller/util/IPv4.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/util/IPv4.java
@@ -1,7 +1,7 @@
-package net.floodlightcontroller.util;
+package net.onrc.onos.ofcontroller.util;
-import net.floodlightcontroller.util.serializers.IPv4Deserializer;
-import net.floodlightcontroller.util.serializers.IPv4Serializer;
+import net.onrc.onos.ofcontroller.util.serializers.IPv4Deserializer;
+import net.onrc.onos.ofcontroller.util.serializers.IPv4Serializer;
import org.codehaus.jackson.annotate.JsonProperty;
import org.codehaus.jackson.map.annotate.JsonDeserialize;
diff --git a/src/main/java/net/floodlightcontroller/util/IPv4Net.java b/src/main/java/net/onrc/onos/ofcontroller/util/IPv4Net.java
similarity index 91%
rename from src/main/java/net/floodlightcontroller/util/IPv4Net.java
rename to src/main/java/net/onrc/onos/ofcontroller/util/IPv4Net.java
index 824e3e2..fdc6dca 100644
--- a/src/main/java/net/floodlightcontroller/util/IPv4Net.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/util/IPv4Net.java
@@ -1,8 +1,8 @@
-package net.floodlightcontroller.util;
+package net.onrc.onos.ofcontroller.util;
-import net.floodlightcontroller.util.IPv4;
-import net.floodlightcontroller.util.serializers.IPv4NetDeserializer;
-import net.floodlightcontroller.util.serializers.IPv4NetSerializer;
+import net.onrc.onos.ofcontroller.util.IPv4;
+import net.onrc.onos.ofcontroller.util.serializers.IPv4NetDeserializer;
+import net.onrc.onos.ofcontroller.util.serializers.IPv4NetSerializer;
import org.codehaus.jackson.annotate.JsonProperty;
import org.codehaus.jackson.map.annotate.JsonDeserialize;
diff --git a/src/main/java/net/floodlightcontroller/util/IPv6.java b/src/main/java/net/onrc/onos/ofcontroller/util/IPv6.java
similarity index 93%
rename from src/main/java/net/floodlightcontroller/util/IPv6.java
rename to src/main/java/net/onrc/onos/ofcontroller/util/IPv6.java
index eda4502..82d1db5 100644
--- a/src/main/java/net/floodlightcontroller/util/IPv6.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/util/IPv6.java
@@ -1,8 +1,9 @@
-package net.floodlightcontroller.util;
+package net.onrc.onos.ofcontroller.util;
import org.openflow.util.HexString;
-import net.floodlightcontroller.util.serializers.IPv6Deserializer;
-import net.floodlightcontroller.util.serializers.IPv6Serializer;
+
+import net.onrc.onos.ofcontroller.util.serializers.IPv6Deserializer;
+import net.onrc.onos.ofcontroller.util.serializers.IPv6Serializer;
import org.codehaus.jackson.annotate.JsonProperty;
import org.codehaus.jackson.map.annotate.JsonDeserialize;
diff --git a/src/main/java/net/floodlightcontroller/util/IPv6Net.java b/src/main/java/net/onrc/onos/ofcontroller/util/IPv6Net.java
similarity index 91%
rename from src/main/java/net/floodlightcontroller/util/IPv6Net.java
rename to src/main/java/net/onrc/onos/ofcontroller/util/IPv6Net.java
index b6f7d67..aacb648 100644
--- a/src/main/java/net/floodlightcontroller/util/IPv6Net.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/util/IPv6Net.java
@@ -1,8 +1,8 @@
-package net.floodlightcontroller.util;
+package net.onrc.onos.ofcontroller.util;
-import net.floodlightcontroller.util.IPv6;
-import net.floodlightcontroller.util.serializers.IPv6NetDeserializer;
-import net.floodlightcontroller.util.serializers.IPv6NetSerializer;
+import net.onrc.onos.ofcontroller.util.IPv6;
+import net.onrc.onos.ofcontroller.util.serializers.IPv6NetDeserializer;
+import net.onrc.onos.ofcontroller.util.serializers.IPv6NetSerializer;
import org.codehaus.jackson.annotate.JsonProperty;
import org.codehaus.jackson.map.annotate.JsonDeserialize;
diff --git a/src/main/java/net/floodlightcontroller/util/Port.java b/src/main/java/net/onrc/onos/ofcontroller/util/Port.java
similarity index 98%
rename from src/main/java/net/floodlightcontroller/util/Port.java
rename to src/main/java/net/onrc/onos/ofcontroller/util/Port.java
index 41f0d55..34c807d 100644
--- a/src/main/java/net/floodlightcontroller/util/Port.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/util/Port.java
@@ -1,4 +1,4 @@
-package net.floodlightcontroller.util;
+package net.onrc.onos.ofcontroller.util;
import org.codehaus.jackson.annotate.JsonProperty;
diff --git a/src/main/java/net/floodlightcontroller/util/SwitchPort.java b/src/main/java/net/onrc/onos/ofcontroller/util/SwitchPort.java
similarity index 93%
rename from src/main/java/net/floodlightcontroller/util/SwitchPort.java
rename to src/main/java/net/onrc/onos/ofcontroller/util/SwitchPort.java
index 027b681..afc2af3 100644
--- a/src/main/java/net/floodlightcontroller/util/SwitchPort.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/util/SwitchPort.java
@@ -1,7 +1,6 @@
-package net.floodlightcontroller.util;
+package net.onrc.onos.ofcontroller.util;
-import net.floodlightcontroller.util.Dpid;
-import net.floodlightcontroller.util.Port;
+import net.onrc.onos.ofcontroller.util.Port;
import org.codehaus.jackson.annotate.JsonProperty;
diff --git a/src/main/java/net/floodlightcontroller/util/serializers/DpidDeserializer.java b/src/main/java/net/onrc/onos/ofcontroller/util/serializers/DpidDeserializer.java
similarity index 91%
rename from src/main/java/net/floodlightcontroller/util/serializers/DpidDeserializer.java
rename to src/main/java/net/onrc/onos/ofcontroller/util/serializers/DpidDeserializer.java
index 9297f56..f6b1ea0 100644
--- a/src/main/java/net/floodlightcontroller/util/serializers/DpidDeserializer.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/util/serializers/DpidDeserializer.java
@@ -1,4 +1,4 @@
-package net.floodlightcontroller.util.serializers;
+package net.onrc.onos.ofcontroller.util.serializers;
import java.io.IOException;
@@ -10,7 +10,7 @@
import org.codehaus.jackson.map.JsonDeserializer;
import org.codehaus.jackson.map.DeserializationContext;
-import net.floodlightcontroller.util.Dpid;
+import net.onrc.onos.ofcontroller.util.Dpid;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/src/main/java/net/floodlightcontroller/util/serializers/DpidSerializer.java b/src/main/java/net/onrc/onos/ofcontroller/util/serializers/DpidSerializer.java
similarity index 85%
rename from src/main/java/net/floodlightcontroller/util/serializers/DpidSerializer.java
rename to src/main/java/net/onrc/onos/ofcontroller/util/serializers/DpidSerializer.java
index 06fab62..0da74d4 100644
--- a/src/main/java/net/floodlightcontroller/util/serializers/DpidSerializer.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/util/serializers/DpidSerializer.java
@@ -1,4 +1,4 @@
-package net.floodlightcontroller.util.serializers;
+package net.onrc.onos.ofcontroller.util.serializers;
import java.io.IOException;
@@ -7,7 +7,7 @@
import org.codehaus.jackson.map.JsonSerializer;
import org.codehaus.jackson.map.SerializerProvider;
-import net.floodlightcontroller.util.Dpid;
+import net.onrc.onos.ofcontroller.util.Dpid;
/**
* Serialize a DPID as a string.
diff --git a/src/main/java/net/floodlightcontroller/util/serializers/FlowEntryIdDeserializer.java b/src/main/java/net/onrc/onos/ofcontroller/util/serializers/FlowEntryIdDeserializer.java
similarity index 91%
rename from src/main/java/net/floodlightcontroller/util/serializers/FlowEntryIdDeserializer.java
rename to src/main/java/net/onrc/onos/ofcontroller/util/serializers/FlowEntryIdDeserializer.java
index e6481d5..7a15ddc 100644
--- a/src/main/java/net/floodlightcontroller/util/serializers/FlowEntryIdDeserializer.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/util/serializers/FlowEntryIdDeserializer.java
@@ -1,4 +1,4 @@
-package net.floodlightcontroller.util.serializers;
+package net.onrc.onos.ofcontroller.util.serializers;
import java.io.IOException;
@@ -10,7 +10,7 @@
import org.codehaus.jackson.map.JsonDeserializer;
import org.codehaus.jackson.map.DeserializationContext;
-import net.floodlightcontroller.util.FlowEntryId;
+import net.onrc.onos.ofcontroller.util.FlowEntryId;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/src/main/java/net/floodlightcontroller/util/serializers/FlowEntryIdSerializer.java b/src/main/java/net/onrc/onos/ofcontroller/util/serializers/FlowEntryIdSerializer.java
similarity index 84%
rename from src/main/java/net/floodlightcontroller/util/serializers/FlowEntryIdSerializer.java
rename to src/main/java/net/onrc/onos/ofcontroller/util/serializers/FlowEntryIdSerializer.java
index 4b6583c..00f4d61 100644
--- a/src/main/java/net/floodlightcontroller/util/serializers/FlowEntryIdSerializer.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/util/serializers/FlowEntryIdSerializer.java
@@ -1,4 +1,4 @@
-package net.floodlightcontroller.util.serializers;
+package net.onrc.onos.ofcontroller.util.serializers;
import java.io.IOException;
@@ -7,7 +7,7 @@
import org.codehaus.jackson.map.JsonSerializer;
import org.codehaus.jackson.map.SerializerProvider;
-import net.floodlightcontroller.util.FlowEntryId;
+import net.onrc.onos.ofcontroller.util.FlowEntryId;
/**
* Serialize a Flow Entry ID as a hexadecimal string.
diff --git a/src/main/java/net/floodlightcontroller/util/serializers/FlowIdDeserializer.java b/src/main/java/net/onrc/onos/ofcontroller/util/serializers/FlowIdDeserializer.java
similarity index 91%
rename from src/main/java/net/floodlightcontroller/util/serializers/FlowIdDeserializer.java
rename to src/main/java/net/onrc/onos/ofcontroller/util/serializers/FlowIdDeserializer.java
index a7f53d4..6e04108 100644
--- a/src/main/java/net/floodlightcontroller/util/serializers/FlowIdDeserializer.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/util/serializers/FlowIdDeserializer.java
@@ -1,4 +1,4 @@
-package net.floodlightcontroller.util.serializers;
+package net.onrc.onos.ofcontroller.util.serializers;
import java.io.IOException;
@@ -10,7 +10,7 @@
import org.codehaus.jackson.map.JsonDeserializer;
import org.codehaus.jackson.map.DeserializationContext;
-import net.floodlightcontroller.util.FlowId;
+import net.onrc.onos.ofcontroller.util.FlowId;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/src/main/java/net/floodlightcontroller/util/serializers/FlowIdSerializer.java b/src/main/java/net/onrc/onos/ofcontroller/util/serializers/FlowIdSerializer.java
similarity index 85%
rename from src/main/java/net/floodlightcontroller/util/serializers/FlowIdSerializer.java
rename to src/main/java/net/onrc/onos/ofcontroller/util/serializers/FlowIdSerializer.java
index 6f1a6f6..575126f 100644
--- a/src/main/java/net/floodlightcontroller/util/serializers/FlowIdSerializer.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/util/serializers/FlowIdSerializer.java
@@ -1,4 +1,4 @@
-package net.floodlightcontroller.util.serializers;
+package net.onrc.onos.ofcontroller.util.serializers;
import java.io.IOException;
@@ -7,7 +7,7 @@
import org.codehaus.jackson.map.JsonSerializer;
import org.codehaus.jackson.map.SerializerProvider;
-import net.floodlightcontroller.util.FlowId;
+import net.onrc.onos.ofcontroller.util.FlowId;
/**
* Serialize a Flow ID as a hexadecimal string.
diff --git a/src/main/java/net/floodlightcontroller/util/serializers/IPv4Deserializer.java b/src/main/java/net/onrc/onos/ofcontroller/util/serializers/IPv4Deserializer.java
similarity index 91%
rename from src/main/java/net/floodlightcontroller/util/serializers/IPv4Deserializer.java
rename to src/main/java/net/onrc/onos/ofcontroller/util/serializers/IPv4Deserializer.java
index 275f9f0..13ddc0d 100644
--- a/src/main/java/net/floodlightcontroller/util/serializers/IPv4Deserializer.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/util/serializers/IPv4Deserializer.java
@@ -1,4 +1,4 @@
-package net.floodlightcontroller.util.serializers;
+package net.onrc.onos.ofcontroller.util.serializers;
import java.io.IOException;
@@ -10,7 +10,7 @@
import org.codehaus.jackson.map.JsonDeserializer;
import org.codehaus.jackson.map.DeserializationContext;
-import net.floodlightcontroller.util.IPv4;
+import net.onrc.onos.ofcontroller.util.IPv4;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/src/main/java/net/floodlightcontroller/util/serializers/IPv4NetDeserializer.java b/src/main/java/net/onrc/onos/ofcontroller/util/serializers/IPv4NetDeserializer.java
similarity index 91%
rename from src/main/java/net/floodlightcontroller/util/serializers/IPv4NetDeserializer.java
rename to src/main/java/net/onrc/onos/ofcontroller/util/serializers/IPv4NetDeserializer.java
index 3c36870..1f30e91 100644
--- a/src/main/java/net/floodlightcontroller/util/serializers/IPv4NetDeserializer.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/util/serializers/IPv4NetDeserializer.java
@@ -1,4 +1,4 @@
-package net.floodlightcontroller.util.serializers;
+package net.onrc.onos.ofcontroller.util.serializers;
import java.io.IOException;
@@ -10,7 +10,7 @@
import org.codehaus.jackson.map.JsonDeserializer;
import org.codehaus.jackson.map.DeserializationContext;
-import net.floodlightcontroller.util.IPv4Net;
+import net.onrc.onos.ofcontroller.util.IPv4Net;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/src/main/java/net/floodlightcontroller/util/serializers/IPv4NetSerializer.java b/src/main/java/net/onrc/onos/ofcontroller/util/serializers/IPv4NetSerializer.java
similarity index 85%
rename from src/main/java/net/floodlightcontroller/util/serializers/IPv4NetSerializer.java
rename to src/main/java/net/onrc/onos/ofcontroller/util/serializers/IPv4NetSerializer.java
index 5c5e1d0..2580550 100644
--- a/src/main/java/net/floodlightcontroller/util/serializers/IPv4NetSerializer.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/util/serializers/IPv4NetSerializer.java
@@ -1,4 +1,4 @@
-package net.floodlightcontroller.util.serializers;
+package net.onrc.onos.ofcontroller.util.serializers;
import java.io.IOException;
@@ -7,7 +7,7 @@
import org.codehaus.jackson.map.JsonSerializer;
import org.codehaus.jackson.map.SerializerProvider;
-import net.floodlightcontroller.util.IPv4Net;
+import net.onrc.onos.ofcontroller.util.IPv4Net;
/**
* Serialize an IPv4Net address as a string.
diff --git a/src/main/java/net/floodlightcontroller/util/serializers/IPv4Serializer.java b/src/main/java/net/onrc/onos/ofcontroller/util/serializers/IPv4Serializer.java
similarity index 85%
rename from src/main/java/net/floodlightcontroller/util/serializers/IPv4Serializer.java
rename to src/main/java/net/onrc/onos/ofcontroller/util/serializers/IPv4Serializer.java
index ba7d825..49dc140 100644
--- a/src/main/java/net/floodlightcontroller/util/serializers/IPv4Serializer.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/util/serializers/IPv4Serializer.java
@@ -1,4 +1,4 @@
-package net.floodlightcontroller.util.serializers;
+package net.onrc.onos.ofcontroller.util.serializers;
import java.io.IOException;
@@ -7,7 +7,7 @@
import org.codehaus.jackson.map.JsonSerializer;
import org.codehaus.jackson.map.SerializerProvider;
-import net.floodlightcontroller.util.IPv4;
+import net.onrc.onos.ofcontroller.util.IPv4;
/**
* Serialize an IPv4 address as a string.
diff --git a/src/main/java/net/floodlightcontroller/util/serializers/IPv6Deserializer.java b/src/main/java/net/onrc/onos/ofcontroller/util/serializers/IPv6Deserializer.java
similarity index 91%
rename from src/main/java/net/floodlightcontroller/util/serializers/IPv6Deserializer.java
rename to src/main/java/net/onrc/onos/ofcontroller/util/serializers/IPv6Deserializer.java
index 818de30..36109e8 100644
--- a/src/main/java/net/floodlightcontroller/util/serializers/IPv6Deserializer.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/util/serializers/IPv6Deserializer.java
@@ -1,4 +1,4 @@
-package net.floodlightcontroller.util.serializers;
+package net.onrc.onos.ofcontroller.util.serializers;
import java.io.IOException;
@@ -10,7 +10,7 @@
import org.codehaus.jackson.map.JsonDeserializer;
import org.codehaus.jackson.map.DeserializationContext;
-import net.floodlightcontroller.util.IPv6;
+import net.onrc.onos.ofcontroller.util.IPv6;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/src/main/java/net/floodlightcontroller/util/serializers/IPv6NetDeserializer.java b/src/main/java/net/onrc/onos/ofcontroller/util/serializers/IPv6NetDeserializer.java
similarity index 91%
rename from src/main/java/net/floodlightcontroller/util/serializers/IPv6NetDeserializer.java
rename to src/main/java/net/onrc/onos/ofcontroller/util/serializers/IPv6NetDeserializer.java
index 375dc26..ff3a0ee 100644
--- a/src/main/java/net/floodlightcontroller/util/serializers/IPv6NetDeserializer.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/util/serializers/IPv6NetDeserializer.java
@@ -1,4 +1,4 @@
-package net.floodlightcontroller.util.serializers;
+package net.onrc.onos.ofcontroller.util.serializers;
import java.io.IOException;
@@ -10,7 +10,7 @@
import org.codehaus.jackson.map.JsonDeserializer;
import org.codehaus.jackson.map.DeserializationContext;
-import net.floodlightcontroller.util.IPv6Net;
+import net.onrc.onos.ofcontroller.util.IPv6Net;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/src/main/java/net/floodlightcontroller/util/serializers/IPv6NetSerializer.java b/src/main/java/net/onrc/onos/ofcontroller/util/serializers/IPv6NetSerializer.java
similarity index 85%
rename from src/main/java/net/floodlightcontroller/util/serializers/IPv6NetSerializer.java
rename to src/main/java/net/onrc/onos/ofcontroller/util/serializers/IPv6NetSerializer.java
index fc5d262..e0837d5 100644
--- a/src/main/java/net/floodlightcontroller/util/serializers/IPv6NetSerializer.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/util/serializers/IPv6NetSerializer.java
@@ -1,4 +1,4 @@
-package net.floodlightcontroller.util.serializers;
+package net.onrc.onos.ofcontroller.util.serializers;
import java.io.IOException;
@@ -7,7 +7,7 @@
import org.codehaus.jackson.map.JsonSerializer;
import org.codehaus.jackson.map.SerializerProvider;
-import net.floodlightcontroller.util.IPv6Net;
+import net.onrc.onos.ofcontroller.util.IPv6Net;
/**
* Serialize an IPv6Net address as a string.
diff --git a/src/main/java/net/floodlightcontroller/util/serializers/IPv6Serializer.java b/src/main/java/net/onrc/onos/ofcontroller/util/serializers/IPv6Serializer.java
similarity index 85%
rename from src/main/java/net/floodlightcontroller/util/serializers/IPv6Serializer.java
rename to src/main/java/net/onrc/onos/ofcontroller/util/serializers/IPv6Serializer.java
index 0b08a63..b4ac122 100644
--- a/src/main/java/net/floodlightcontroller/util/serializers/IPv6Serializer.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/util/serializers/IPv6Serializer.java
@@ -1,4 +1,4 @@
-package net.floodlightcontroller.util.serializers;
+package net.onrc.onos.ofcontroller.util.serializers;
import java.io.IOException;
@@ -7,7 +7,7 @@
import org.codehaus.jackson.map.JsonSerializer;
import org.codehaus.jackson.map.SerializerProvider;
-import net.floodlightcontroller.util.IPv6;
+import net.onrc.onos.ofcontroller.util.IPv6;
/**
* Serialize an IPv6 address as a string.
diff --git a/src/main/java/net/floodlightcontroller/util/serializers/MACAddressDeserializer.java b/src/main/java/net/onrc/onos/ofcontroller/util/serializers/MACAddressDeserializer.java
similarity index 95%
rename from src/main/java/net/floodlightcontroller/util/serializers/MACAddressDeserializer.java
rename to src/main/java/net/onrc/onos/ofcontroller/util/serializers/MACAddressDeserializer.java
index 35b384d..86ed2a7 100644
--- a/src/main/java/net/floodlightcontroller/util/serializers/MACAddressDeserializer.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/util/serializers/MACAddressDeserializer.java
@@ -1,4 +1,4 @@
-package net.floodlightcontroller.util.serializers;
+package net.onrc.onos.ofcontroller.util.serializers;
import java.io.IOException;
diff --git a/src/main/java/net/floodlightcontroller/util/serializers/MACAddressSerializer.java b/src/main/java/net/onrc/onos/ofcontroller/util/serializers/MACAddressSerializer.java
similarity index 92%
rename from src/main/java/net/floodlightcontroller/util/serializers/MACAddressSerializer.java
rename to src/main/java/net/onrc/onos/ofcontroller/util/serializers/MACAddressSerializer.java
index dec2596..85c8dc4 100644
--- a/src/main/java/net/floodlightcontroller/util/serializers/MACAddressSerializer.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/util/serializers/MACAddressSerializer.java
@@ -1,4 +1,4 @@
-package net.floodlightcontroller.util.serializers;
+package net.onrc.onos.ofcontroller.util.serializers;
import java.io.IOException;
diff --git a/src/main/java/net/onrc/onos/util/GraphDBConnection.java b/src/main/java/net/onrc/onos/util/GraphDBConnection.java
index e9186ab..e25a0c6 100644
--- a/src/main/java/net/onrc/onos/util/GraphDBConnection.java
+++ b/src/main/java/net/onrc/onos/util/GraphDBConnection.java
@@ -12,166 +12,159 @@
import com.tinkerpop.blueprints.util.wrappers.event.EventTransactionalGraph;
import com.tinkerpop.frames.FramedGraph;
-public class GraphDBConnection {
+public class GraphDBConnection implements IDBConnection {
public enum Transaction {
- COMMIT,
- ROLLBACK
+ COMMIT, ROLLBACK
}
+
public enum GenerateEvent {
- TRUE,
- FALSE
+ TRUE, FALSE
}
+
class TransactionHandle {
protected TransactionalGraph tr;
+
public void create() {
- tr = graph.newTransaction();
+ tr = graph.newTransaction();
}
}
- protected static Logger log = LoggerFactory.getLogger(GraphDBConnection.class);
- private static GraphDBConnection singleton = new GraphDBConnection( );
+
+ protected static Logger log = LoggerFactory
+ .getLogger(GraphDBConnection.class);
+ private static GraphDBConnection singleton = new GraphDBConnection();
private static TitanGraph graph;
private static EventTransactionalGraph<TitanGraph> eg;
- private static GraphDBUtils utils;
private static String configFile;
-
- /* A private Constructor prevents any other
- * class from instantiating.
- */
- private GraphDBConnection(){ }
-
- /* Static 'instance' method */
- public static synchronized GraphDBConnection getInstance(final String conf) {
- if (GraphDBConnection.configFile == null || GraphDBConnection.configFile.isEmpty()) {
- GraphDBConnection.configFile = conf;
- log.debug("GraphDBConnection::Setting Config File {}", GraphDBConnection.configFile);
- }
- if (!GraphDBConnection.configFile.isEmpty() &&
- (graph == null||graph.isOpen() == Boolean.FALSE)) {
- graph = TitanFactory.open(GraphDBConnection.configFile);
- // FIXME: Creation on Indexes should be done only once
- Set<String> s_vertices = graph.getIndexedKeys(Vertex.class);
- if (!s_vertices.contains("dpid")) {
- graph.createKeyIndex("dpid", Vertex.class);
- }
- if (!s_vertices.contains("type")) {
- graph.createKeyIndex("type", Vertex.class);
- }
- if (!s_vertices.contains("dl_address")) {
- graph.createKeyIndex("dl_address", Vertex.class);
- }
- if (!s_vertices.contains("flow_id")) {
- graph.createKeyIndex("flow_id", Vertex.class);
- }
- if (!s_vertices.contains("flow_entry_id")) {
- graph.createKeyIndex("flow_entry_id",
- Vertex.class);
- }
- if (!s_vertices.contains("switch_state")) {
- graph.createKeyIndex("switch_state",
- Vertex.class);
- }
-
- graph.commit();
- eg = new EventTransactionalGraph<TitanGraph>(graph);
- }
- if (utils == null) {
- utils = new GraphDBUtils();
- }
- return singleton;
- }
-
- public IDBUtils utils() {
- return utils;
- }
-
- public FramedGraph<TitanGraph> getFramedGraph() {
-
- if (isValid()) {
- FramedGraph<TitanGraph> fg = new FramedGraph<TitanGraph>(graph);
- return fg;
- } else {
- log.error("new FramedGraph failed");
- return null;
- }
- }
-
- protected EventTransactionalGraph<TitanGraph> getEventGraph() {
-
- if (isValid()) {
- return eg;
- } else {
- return null;
- }
- }
-
- public void addEventListener(final LocalGraphChangedListener listener) {
- EventTransactionalGraph<TitanGraph> eg = this.getEventGraph();
- eg.addListener(listener);
- log.debug("Registered listener {}",listener.getClass());
- }
-
- public Boolean isValid() {
-
- return (graph != null||graph.isOpen());
- }
-
- public void startTx() {
-
-
- }
-
- public void endTx(Transaction tx) {
- try {
- switch (tx) {
- case COMMIT:
- graph.commit();
- case ROLLBACK:
- graph.rollback();
- }
- } catch (Exception e) {
- // TODO Auto-generated catch block
- log.error("{}",e.toString());
- }
- }
-
- public void endTx(TransactionHandle tr, Transaction tx) {
- switch (tx) {
- case COMMIT:
- if (tr != null && tr.tr != null) {
- tr.tr.commit();
- } else {
- graph.commit();
- }
- case ROLLBACK:
- if (tr != null && tr.tr != null) {
- tr.tr.rollback();
- } else {
- graph.rollback();
- }
- }
- }
-
- public void endTx(Transaction tx, GenerateEvent fire) {
+ /*
+ * A private Constructor prevents any other class from instantiating.
+ */
+ private GraphDBConnection() {
+ }
- try {
+ /* Static 'instance' method */
+ public static synchronized GraphDBConnection getInstance(final String conf) {
+ if (GraphDBConnection.configFile == null
+ || GraphDBConnection.configFile.isEmpty()) {
+ GraphDBConnection.configFile = conf;
+ log.debug("GraphDBConnection::Setting Config File {}",
+ GraphDBConnection.configFile);
+ }
+ if (!GraphDBConnection.configFile.isEmpty()
+ && (graph == null || graph.isOpen() == Boolean.FALSE)) {
+ graph = TitanFactory.open(GraphDBConnection.configFile);
+ // FIXME: Creation on Indexes should be done only once
+ Set<String> s = graph.getIndexedKeys(Vertex.class);
+ if (!s.contains("dpid")) {
+ graph.createKeyIndex("dpid", Vertex.class);
+ }
+ if (!s.contains("type")) {
+ graph.createKeyIndex("type", Vertex.class);
+ }
+ if (!s.contains("dl_address")) {
+ graph.createKeyIndex("dl_address", Vertex.class);
+ }
+ if (!s.contains("flow_id")) {
+ graph.createKeyIndex("flow_id", Vertex.class);
+ }
+ if (!s.contains("flow_entry_id")) {
+ graph.createKeyIndex("flow_entry_id", Vertex.class);
+ }
+ if (!s.contains("switch_state")) {
+ graph.createKeyIndex("switch_state", Vertex.class);
+ }
+ graph.commit();
+ eg = new EventTransactionalGraph<TitanGraph>(graph);
+ }
+ return singleton;
+ }
+
+ public FramedGraph<TitanGraph> getFramedGraph() {
+
+ if (isValid()) {
+ FramedGraph<TitanGraph> fg = new FramedGraph<TitanGraph>(graph);
+ return fg;
+ } else {
+ log.error("new FramedGraph failed");
+ return null;
+ }
+ }
+
+ protected EventTransactionalGraph<TitanGraph> getEventGraph() {
+
+ if (isValid()) {
+ return eg;
+ } else {
+ return null;
+ }
+ }
+
+ public void addEventListener(final LocalGraphChangedListener listener) {
+ EventTransactionalGraph<TitanGraph> eg = this.getEventGraph();
+ eg.addListener(listener);
+ log.debug("Registered listener {}", listener.getClass());
+ }
+
+ public Boolean isValid() {
+
+ return (graph != null || graph.isOpen());
+ }
+
+ public void startTx() {
+
+ }
+
+ public void endTx(Transaction tx) {
+ try {
+ switch (tx) {
+ case COMMIT:
+ graph.commit();
+ case ROLLBACK:
+ graph.rollback();
+ }
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ log.error("{}", e.toString());
+ }
+ }
+
+ public void endTx(TransactionHandle tr, Transaction tx) {
+ switch (tx) {
+ case COMMIT:
+ if (tr != null && tr.tr != null) {
+ tr.tr.commit();
+ } else {
+ graph.commit();
+ }
+ case ROLLBACK:
+ if (tr != null && tr.tr != null) {
+ tr.tr.rollback();
+ } else {
+ graph.rollback();
+ }
+ }
+ }
+
+ public void endTx(Transaction tx, GenerateEvent fire) {
+
+ try {
if (fire.equals(GenerateEvent.TRUE)) {
- switch (tx) {
- case COMMIT:
- eg.commit();
- case ROLLBACK:
- eg.rollback();
- }
- } else {
- endTx(tx);
- }
+ switch (tx) {
+ case COMMIT:
+ eg.commit();
+ case ROLLBACK:
+ eg.rollback();
+ }
+ } else {
+ endTx(tx);
+ }
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
- }
-
+ }
+
public void close() {
- endTx(Transaction.COMMIT);
- }
+ endTx(Transaction.COMMIT);
+ }
}
diff --git a/src/main/java/net/onrc/onos/util/GraphDBOperation.java b/src/main/java/net/onrc/onos/util/GraphDBOperation.java
new file mode 100644
index 0000000..df68282
--- /dev/null
+++ b/src/main/java/net/onrc/onos/util/GraphDBOperation.java
@@ -0,0 +1,287 @@
+package net.onrc.onos.util;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IDeviceObject;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IFlowEntry;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IFlowPath;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IPortObject;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.ISwitchObject;
+import net.onrc.onos.ofcontroller.core.ISwitchStorage.SwitchState;
+import net.onrc.onos.ofcontroller.util.FlowEntryId;
+import net.onrc.onos.ofcontroller.util.FlowId;
+
+//import net.floodlightcontroller.core.INetMapTopologyObjects.IDeviceObject;
+//import net.floodlightcontroller.core.INetMapTopologyObjects.IFlowEntry;
+//import net.floodlightcontroller.core.INetMapTopologyObjects.IFlowPath;
+//import net.floodlightcontroller.core.INetMapTopologyObjects.IPortObject;
+//import net.floodlightcontroller.core.INetMapTopologyObjects.ISwitchObject;
+//import net.floodlightcontroller.core.ISwitchStorage.SwitchState;
+//import net.floodlightcontroller.util.FlowEntryId;
+//import net.floodlightcontroller.util.FlowId;
+import net.onrc.onos.util.GraphDBConnection.Transaction;
+
+import com.thinkaurelius.titan.core.TitanGraph;
+import com.tinkerpop.blueprints.Vertex;
+import com.tinkerpop.frames.FramedGraph;
+import com.tinkerpop.frames.structures.FramedVertexIterable;
+import com.tinkerpop.gremlin.java.GremlinPipeline;
+
+public class GraphDBOperation implements IDBOperation {
+ private GraphDBConnection conn;
+
+ public GraphDBOperation(GraphDBConnection dbConnection) {
+ this.conn = dbConnection;
+ }
+
+ @Override
+ public ISwitchObject newSwitch(String dpid) {
+ FramedGraph<TitanGraph> fg = conn.getFramedGraph();
+ ISwitchObject obj = fg.addVertex(null,ISwitchObject.class);
+ if (obj != null) {
+ obj.setType("switch");
+ obj.setDPID(dpid);
+ }
+ return obj;
+ }
+
+ @Override
+ public ISwitchObject searchSwitch(String dpid) {
+ // TODO Auto-generated method stub
+ FramedGraph<TitanGraph> fg = conn.getFramedGraph();
+
+ return (fg != null && fg.getVertices("dpid",dpid).iterator().hasNext()) ?
+ fg.getVertices("dpid",dpid,ISwitchObject.class).iterator().next() : null;
+
+ }
+
+ @Override
+ public ISwitchObject searchActiveSwitch(String dpid) {
+
+ ISwitchObject sw = searchSwitch(dpid);
+ if ((sw != null) &&
+ sw.getState().equals(SwitchState.ACTIVE.toString())) {
+ return sw;
+ }
+ return null;
+ }
+
+ @Override
+ public Iterable<ISwitchObject> getAllSwitches() {
+ FramedGraph<TitanGraph> fg = conn.getFramedGraph();
+ Iterable<ISwitchObject> switches = fg.getVertices("type","switch",ISwitchObject.class);
+ return switches;
+ }
+
+ @Override
+ public Iterable<ISwitchObject> getActiveSwitches() {
+ FramedGraph<TitanGraph> fg = conn.getFramedGraph();
+ Iterable<ISwitchObject> switches = fg.getVertices("type","switch",ISwitchObject.class);
+ List<ISwitchObject> activeSwitches = new ArrayList<ISwitchObject>();
+
+ for (ISwitchObject sw: switches) {
+ if(sw.getState().equals(SwitchState.ACTIVE.toString())) {
+ activeSwitches.add(sw);
+ }
+ }
+ return activeSwitches;
+ }
+
+ @Override
+ public Iterable<ISwitchObject> getInactiveSwitches() {
+ FramedGraph<TitanGraph> fg = conn.getFramedGraph();
+ Iterable<ISwitchObject> switches = fg.getVertices("type","switch",ISwitchObject.class);
+ List<ISwitchObject> inactiveSwitches = new ArrayList<ISwitchObject>();
+
+ for (ISwitchObject sw: switches) {
+ if(sw.getState().equals(SwitchState.INACTIVE.toString())) {
+ inactiveSwitches.add(sw);
+ }
+ }
+ return inactiveSwitches;
+ }
+
+ @Override
+ public Iterable<IFlowEntry> getAllSwitchNotUpdatedFlowEntries() {
+ FramedGraph<TitanGraph> fg = conn.getFramedGraph();
+ //TODO: Should use an enum for flow_switch_state
+ return fg.getVertices("switch_state", "FE_SWITCH_NOT_UPDATED", IFlowEntry.class);
+ }
+
+ @Override
+ public void removeSwitch(ISwitchObject sw) {
+ FramedGraph<TitanGraph> fg = conn.getFramedGraph();
+ fg.removeVertex(sw.asVertex());
+ }
+
+ @Override
+ public IPortObject newPort(Short portNumber) {
+ FramedGraph<TitanGraph> fg = conn.getFramedGraph();
+ IPortObject obj = fg.addVertex(null,IPortObject.class);
+ if (obj != null) {
+ obj.setType("port");
+ obj.setNumber(portNumber);
+ }
+ return obj;
+ }
+
+ @Override
+ public IPortObject searchPort(String dpid, short number) {
+ ISwitchObject sw = searchSwitch(dpid);
+ if (sw != null) {
+
+ IPortObject port = null;
+
+ // Requires Frames 2.3.0
+
+ try {
+ port = sw.getPort(number);
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+ return port;
+ }
+
+ // if (sw != null) {
+ // GremlinPipeline<Vertex, IPortObject> pipe = new GremlinPipeline<Vertex, IPortObject>();
+ // pipe.start(sw.asVertex());
+ // pipe.out("on").has("number", number);
+ // FramedVertexIterable<IPortObject> r = new FramedVertexIterable<IPortObject>(conn.getFramedGraph(), (Iterable) pipe, IPortObject.class);
+ // return r != null && r.iterator().hasNext() ? r.iterator().next() : null;
+ // }
+ return null;
+ }
+
+ @Override
+ public void removePort(IPortObject port) {
+ FramedGraph<TitanGraph> fg = conn.getFramedGraph();
+ // EventGraph<TitanGraph> eg = conn.getEventGraph();
+ if (fg != null) fg.removeVertex(port.asVertex());
+ }
+
+ @Override
+ public IDeviceObject newDevice() {
+ FramedGraph<TitanGraph> fg = conn.getFramedGraph();
+ IDeviceObject obj = fg.addVertex(null,IDeviceObject.class);
+ if (obj != null) obj.setType("device");
+ return obj;
+ }
+
+ @Override
+ public IDeviceObject searchDevice(String macAddr) {
+ // TODO Auto-generated method stub
+ FramedGraph<TitanGraph> fg = conn.getFramedGraph();
+ return (fg != null && fg.getVertices("dl_address",macAddr).iterator().hasNext()) ? fg.getVertices("dl_address",macAddr,
+ IDeviceObject.class).iterator().next() : null;
+
+ }
+
+ @Override
+ public Iterable<IDeviceObject> getDevices() {
+ FramedGraph<TitanGraph> fg = conn.getFramedGraph();
+ return fg != null ? fg.getVertices("type","device",IDeviceObject.class) : null;
+ }
+
+ @Override
+ public void removeDevice(IDeviceObject dev) {
+ FramedGraph<TitanGraph> fg = conn.getFramedGraph();
+ if (fg != null) fg.removeVertex(dev.asVertex());
+ }
+
+ @Override
+ public IFlowPath newFlowPath() {
+ FramedGraph<TitanGraph> fg = conn.getFramedGraph();
+ IFlowPath flowPath = fg.addVertex(null, IFlowPath.class);
+ if (flowPath != null) flowPath.setType("flow");
+ return flowPath;
+ }
+
+ @Override
+ public IFlowPath searchFlowPath(FlowId flowId) {
+ FramedGraph<TitanGraph> fg = conn.getFramedGraph();
+
+ return fg.getVertices("flow_id", flowId.toString()).iterator().hasNext() ?
+ fg.getVertices("flow_id", flowId.toString(),
+ IFlowPath.class).iterator().next() : null;
+ }
+
+ @Override
+ public IFlowPath getFlowPathByFlowEntry(IFlowEntry flowEntry) {
+ FramedGraph<TitanGraph> fg = conn.getFramedGraph();
+ GremlinPipeline<Vertex, IFlowPath> pipe = new GremlinPipeline<Vertex, IFlowPath>();
+ pipe.start(flowEntry.asVertex());
+ pipe.out("flow");
+ FramedVertexIterable<IFlowPath> r = new FramedVertexIterable(conn.getFramedGraph(), (Iterable) pipe, IFlowPath.class);
+ return r.iterator().hasNext() ? r.iterator().next() : null;
+ }
+
+ @Override
+ public Iterable<IFlowPath> getAllFlowPaths() {
+ FramedGraph<TitanGraph> fg = conn.getFramedGraph();
+ Iterable<IFlowPath> flowPaths = fg.getVertices("type", "flow", IFlowPath.class);
+
+ List<IFlowPath> nonNullFlows = new ArrayList<IFlowPath>();
+
+ for (IFlowPath fp: flowPaths) {
+ if (fp.getFlowId() != null) {
+ nonNullFlows.add(fp);
+ }
+ }
+ return nonNullFlows;
+ }
+
+ @Override
+ public void removeFlowPath(IFlowPath flowPath) {
+ FramedGraph<TitanGraph> fg = conn.getFramedGraph();
+ fg.removeVertex(flowPath.asVertex());
+ }
+
+ @Override
+ public IFlowEntry newFlowEntry() {
+ FramedGraph<TitanGraph> fg = conn.getFramedGraph();
+ IFlowEntry flowEntry = fg.addVertex(null, IFlowEntry.class);
+ if (flowEntry != null) flowEntry.setType("flow_entry");
+ return flowEntry;
+ }
+
+ @Override
+ public IFlowEntry searchFlowEntry(FlowEntryId flowEntryId) {
+ FramedGraph<TitanGraph> fg = conn.getFramedGraph();
+
+ return fg.getVertices("flow_entry_id", flowEntryId.toString()).iterator().hasNext() ?
+ fg.getVertices("flow_entry_id", flowEntryId.toString(),
+ IFlowEntry.class).iterator().next() : null;
+ }
+
+ @Override
+ public Iterable<IFlowEntry> getAllFlowEntries() {
+ FramedGraph<TitanGraph> fg = conn.getFramedGraph();
+
+ return fg.getVertices("type", "flow_entry", IFlowEntry.class);
+ }
+
+ @Override
+ public void removeFlowEntry(IFlowEntry flowEntry) {
+ FramedGraph<TitanGraph> fg = conn.getFramedGraph();
+ fg.removeVertex(flowEntry.asVertex());
+ }
+
+ public IDBConnection getDBConnection() {
+ return conn;
+ }
+
+ public void commit() {
+ conn.endTx(Transaction.COMMIT);
+ }
+
+ public void rollback() {
+ conn.endTx(Transaction.ROLLBACK);
+ }
+
+ public void close() {
+ conn.close();
+ }
+}
diff --git a/src/main/java/net/onrc/onos/util/GraphDBUtils.java b/src/main/java/net/onrc/onos/util/GraphDBUtils.java
deleted file mode 100644
index 2522765..0000000
--- a/src/main/java/net/onrc/onos/util/GraphDBUtils.java
+++ /dev/null
@@ -1,250 +0,0 @@
-package net.onrc.onos.util;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import net.floodlightcontroller.core.INetMapTopologyObjects.IDeviceObject;
-import net.floodlightcontroller.core.INetMapTopologyObjects.IFlowEntry;
-import net.floodlightcontroller.core.INetMapTopologyObjects.IFlowPath;
-import net.floodlightcontroller.core.INetMapTopologyObjects.IPortObject;
-import net.floodlightcontroller.core.INetMapTopologyObjects.ISwitchObject;
-import net.floodlightcontroller.core.ISwitchStorage.SwitchState;
-import net.floodlightcontroller.util.FlowEntryId;
-import net.floodlightcontroller.util.FlowId;
-
-import com.thinkaurelius.titan.core.TitanGraph;
-import com.tinkerpop.blueprints.Vertex;
-import com.tinkerpop.frames.FramedGraph;
-import com.tinkerpop.frames.structures.FramedVertexIterable;
-import com.tinkerpop.gremlin.java.GremlinPipeline;
-
-public class GraphDBUtils implements IDBUtils {
-
- @Override
- public ISwitchObject newSwitch(GraphDBConnection conn) {
- FramedGraph<TitanGraph> fg = conn.getFramedGraph();
- ISwitchObject obj = fg.addVertex(null,ISwitchObject.class);
- return obj;
- }
-
- @Override
- public void removeSwitch(GraphDBConnection conn, ISwitchObject sw) {
- FramedGraph<TitanGraph> fg = conn.getFramedGraph();
- fg.removeVertex(sw.asVertex());
- }
-
- @Override
- public ISwitchObject searchSwitch(GraphDBConnection conn, String dpid) {
- // TODO Auto-generated method stub
- FramedGraph<TitanGraph> fg = conn.getFramedGraph();
-
- return (fg != null && fg.getVertices("dpid",dpid).iterator().hasNext()) ?
- fg.getVertices("dpid",dpid,ISwitchObject.class).iterator().next() : null;
-
- }
-
- @Override
- public IDeviceObject searchDevice(GraphDBConnection conn, String macAddr) {
- // TODO Auto-generated method stub
- FramedGraph<TitanGraph> fg = conn.getFramedGraph();
- return (fg != null && fg.getVertices("dl_address",macAddr).iterator().hasNext()) ? fg.getVertices("dl_address",macAddr,
- IDeviceObject.class).iterator().next() : null;
-
- }
-
- @Override
- public IPortObject searchPort(GraphDBConnection conn, String dpid, short number) {
- ISwitchObject sw = searchSwitch(conn, dpid);
- if (sw != null) {
-
- IPortObject port = null;
-
- // Requires Frames 2.3.0
-
- try {
- port = sw.getPort(number);
- } catch (Exception e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
-
- return port;
- }
-
-// if (sw != null) {
-// GremlinPipeline<Vertex, IPortObject> pipe = new GremlinPipeline<Vertex, IPortObject>();
-// pipe.start(sw.asVertex());
-// pipe.out("on").has("number", number);
-// FramedVertexIterable<IPortObject> r = new FramedVertexIterable<IPortObject>(conn.getFramedGraph(), (Iterable) pipe, IPortObject.class);
-// return r != null && r.iterator().hasNext() ? r.iterator().next() : null;
-// }
- return null;
- }
-
- @Override
- public IPortObject newPort(GraphDBConnection conn) {
- FramedGraph<TitanGraph> fg = conn.getFramedGraph();
- IPortObject obj = fg.addVertex(null,IPortObject.class);
- return obj;
- }
-
- @Override
- public IDeviceObject newDevice(GraphDBConnection conn) {
- FramedGraph<TitanGraph> fg = conn.getFramedGraph();
- IDeviceObject obj = fg.addVertex(null,IDeviceObject.class);
- return obj;
- }
-
- @Override
- public void removePort(GraphDBConnection conn, IPortObject port) {
- FramedGraph<TitanGraph> fg = conn.getFramedGraph();
-// EventGraph<TitanGraph> eg = conn.getEventGraph();
- if (fg != null) fg.removeVertex(port.asVertex());
- }
-
- @Override
- public void removeDevice(GraphDBConnection conn, IDeviceObject dev) {
- FramedGraph<TitanGraph> fg = conn.getFramedGraph();
- if (fg != null) fg.removeVertex(dev.asVertex());
- }
-
- @Override
- public Iterable<IDeviceObject> getDevices(GraphDBConnection conn) {
- FramedGraph<TitanGraph> fg = conn.getFramedGraph();
- return fg != null ? fg.getVertices("type","device",IDeviceObject.class) : null;
- }
-
- @Override
- public IFlowPath searchFlowPath(GraphDBConnection conn,
- FlowId flowId) {
- FramedGraph<TitanGraph> fg = conn.getFramedGraph();
-
- return fg.getVertices("flow_id", flowId.toString()).iterator().hasNext() ?
- fg.getVertices("flow_id", flowId.toString(),
- IFlowPath.class).iterator().next() : null;
- }
-
- @Override
- public IFlowPath newFlowPath(GraphDBConnection conn) {
- FramedGraph<TitanGraph> fg = conn.getFramedGraph();
- IFlowPath flowPath = fg.addVertex(null, IFlowPath.class);
- return flowPath;
- }
-
- @Override
- public void removeFlowPath(GraphDBConnection conn,
- IFlowPath flowPath) {
- FramedGraph<TitanGraph> fg = conn.getFramedGraph();
- fg.removeVertex(flowPath.asVertex());
- }
-
- @Override
- public IFlowPath getFlowPathByFlowEntry(GraphDBConnection conn,
- IFlowEntry flowEntry) {
- FramedGraph<TitanGraph> fg = conn.getFramedGraph();
- GremlinPipeline<Vertex, IFlowPath> pipe = new GremlinPipeline<Vertex, IFlowPath>();
- pipe.start(flowEntry.asVertex());
- pipe.out("flow");
- FramedVertexIterable<IFlowPath> r = new FramedVertexIterable(conn.getFramedGraph(), (Iterable) pipe, IFlowPath.class);
- return r.iterator().hasNext() ? r.iterator().next() : null;
- }
-
- @Override
- public Iterable<IFlowPath> getAllFlowPaths(GraphDBConnection conn) {
- FramedGraph<TitanGraph> fg = conn.getFramedGraph();
- Iterable<IFlowPath> flowPaths = fg.getVertices("type", "flow", IFlowPath.class);
-
- List<IFlowPath> nonNullFlows = new ArrayList<IFlowPath>();
-
- for (IFlowPath fp: flowPaths) {
- if (fp.getFlowId() != null) {
- nonNullFlows.add(fp);
- }
- }
- return nonNullFlows;
- }
-
- @Override
- public IFlowEntry searchFlowEntry(GraphDBConnection conn,
- FlowEntryId flowEntryId) {
- FramedGraph<TitanGraph> fg = conn.getFramedGraph();
-
- return fg.getVertices("flow_entry_id", flowEntryId.toString()).iterator().hasNext() ?
- fg.getVertices("flow_entry_id", flowEntryId.toString(),
- IFlowEntry.class).iterator().next() : null;
- }
-
- @Override
- public IFlowEntry newFlowEntry(GraphDBConnection conn) {
- FramedGraph<TitanGraph> fg = conn.getFramedGraph();
- IFlowEntry flowEntry = fg.addVertex(null, IFlowEntry.class);
- return flowEntry;
- }
-
- @Override
- public void removeFlowEntry(GraphDBConnection conn,
- IFlowEntry flowEntry) {
- FramedGraph<TitanGraph> fg = conn.getFramedGraph();
- fg.removeVertex(flowEntry.asVertex());
- }
-
- @Override
- public Iterable<IFlowEntry> getAllFlowEntries(GraphDBConnection conn) {
- FramedGraph<TitanGraph> fg = conn.getFramedGraph();
-
- return fg.getVertices("type", "flow_entry", IFlowEntry.class);
- }
-
- @Override
- public Iterable<IFlowEntry> getAllSwitchNotUpdatedFlowEntries(GraphDBConnection conn) {
- FramedGraph<TitanGraph> fg = conn.getFramedGraph();
- //TODO: Should use an enum for flow_switch_state
- return fg.getVertices("switch_state", "FE_SWITCH_NOT_UPDATED", IFlowEntry.class);
- }
-
- @Override
- public Iterable<ISwitchObject> getActiveSwitches(GraphDBConnection conn) {
- FramedGraph<TitanGraph> fg = conn.getFramedGraph();
- Iterable<ISwitchObject> switches = fg.getVertices("type","switch",ISwitchObject.class);
- List<ISwitchObject> activeSwitches = new ArrayList<ISwitchObject>();
-
- for (ISwitchObject sw: switches) {
- if(sw.getState().equals(SwitchState.ACTIVE.toString())) {
- activeSwitches.add(sw);
- }
- }
- return activeSwitches;
- }
-
- @Override
- public Iterable<ISwitchObject> getAllSwitches(GraphDBConnection conn) {
- FramedGraph<TitanGraph> fg = conn.getFramedGraph();
- Iterable<ISwitchObject> switches = fg.getVertices("type","switch",ISwitchObject.class);
- return switches;
- }
-
- @Override
- public Iterable<ISwitchObject> getInactiveSwitches(GraphDBConnection conn) {
- FramedGraph<TitanGraph> fg = conn.getFramedGraph();
- Iterable<ISwitchObject> switches = fg.getVertices("type","switch",ISwitchObject.class);
- List<ISwitchObject> inactiveSwitches = new ArrayList<ISwitchObject>();
-
- for (ISwitchObject sw: switches) {
- if(sw.getState().equals(SwitchState.INACTIVE.toString())) {
- inactiveSwitches.add(sw);
- }
- }
- return inactiveSwitches;
- }
-
- @Override
- public ISwitchObject searchActiveSwitch(GraphDBConnection conn, String dpid) {
-
- ISwitchObject sw = searchSwitch(conn, dpid);
- if ((sw != null) &&
- sw.getState().equals(SwitchState.ACTIVE.toString())) {
- return sw;
- }
- return null;
- }
-}
diff --git a/src/main/java/net/onrc/onos/util/IDBConnection.java b/src/main/java/net/onrc/onos/util/IDBConnection.java
new file mode 100644
index 0000000..e599a5e
--- /dev/null
+++ b/src/main/java/net/onrc/onos/util/IDBConnection.java
@@ -0,0 +1,19 @@
+package net.onrc.onos.util;
+
+import net.onrc.onos.util.GraphDBConnection.GenerateEvent;
+import net.onrc.onos.util.GraphDBConnection.Transaction;
+import net.onrc.onos.util.GraphDBConnection.TransactionHandle;
+
+import com.thinkaurelius.titan.core.TitanGraph;
+import com.tinkerpop.frames.FramedGraph;
+
+public interface IDBConnection {
+ public FramedGraph<TitanGraph> getFramedGraph();
+ public void addEventListener(final LocalGraphChangedListener listener);
+ public Boolean isValid();
+ public void startTx();
+ public void endTx(Transaction tx);
+ public void endTx(TransactionHandle tr, Transaction tx);
+ public void endTx(Transaction tx, GenerateEvent fire);
+ public void close();
+}
diff --git a/src/main/java/net/onrc/onos/util/IDBOperation.java b/src/main/java/net/onrc/onos/util/IDBOperation.java
new file mode 100644
index 0000000..46245ae
--- /dev/null
+++ b/src/main/java/net/onrc/onos/util/IDBOperation.java
@@ -0,0 +1,45 @@
+package net.onrc.onos.util;
+
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IDeviceObject;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IFlowEntry;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IFlowPath;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IPortObject;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.ISwitchObject;
+import net.onrc.onos.ofcontroller.util.FlowEntryId;
+import net.onrc.onos.ofcontroller.util.FlowId;
+
+public interface IDBOperation {
+ public ISwitchObject newSwitch(String dpid);
+ public ISwitchObject searchSwitch(String dpid);
+ public ISwitchObject searchActiveSwitch(String dpid);
+ public Iterable<ISwitchObject> getActiveSwitches();
+ public Iterable<ISwitchObject> getAllSwitches();
+ public Iterable<ISwitchObject> getInactiveSwitches();
+ public Iterable<IFlowEntry> getAllSwitchNotUpdatedFlowEntries();
+ public void removeSwitch(ISwitchObject sw);
+
+ public IPortObject newPort(Short portNumber);
+ public IPortObject searchPort(String dpid, short number);
+ public void removePort(IPortObject port);
+
+ public IDeviceObject newDevice();
+ public IDeviceObject searchDevice(String macAddr);
+ public Iterable<IDeviceObject> getDevices();
+ public void removeDevice(IDeviceObject dev);
+
+ public IFlowPath newFlowPath();
+ public IFlowPath searchFlowPath(FlowId flowId);
+ public IFlowPath getFlowPathByFlowEntry(IFlowEntry flowEntry);
+ public Iterable<IFlowPath> getAllFlowPaths();
+ public void removeFlowPath(IFlowPath flowPath);
+
+ public IFlowEntry newFlowEntry();
+ public IFlowEntry searchFlowEntry(FlowEntryId flowEntryId);
+ public Iterable<IFlowEntry> getAllFlowEntries();
+ public void removeFlowEntry(IFlowEntry flowEntry);
+
+ public IDBConnection getDBConnection();
+ public void commit();
+ public void rollback();
+ public void close();
+}
diff --git a/src/main/java/net/onrc/onos/util/IDBUtils.java b/src/main/java/net/onrc/onos/util/IDBUtils.java
deleted file mode 100644
index 35803d2..0000000
--- a/src/main/java/net/onrc/onos/util/IDBUtils.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package net.onrc.onos.util;
-
-import net.floodlightcontroller.core.INetMapTopologyObjects.IDeviceObject;
-import net.floodlightcontroller.core.INetMapTopologyObjects.IFlowEntry;
-import net.floodlightcontroller.core.INetMapTopologyObjects.IFlowPath;
-import net.floodlightcontroller.core.INetMapTopologyObjects.IPortObject;
-import net.floodlightcontroller.core.INetMapTopologyObjects.ISwitchObject;
-import net.floodlightcontroller.util.FlowEntryId;
-import net.floodlightcontroller.util.FlowId;
-
-public interface IDBUtils {
- public ISwitchObject searchSwitch(GraphDBConnection conn, String dpid);
- public ISwitchObject searchActiveSwitch(GraphDBConnection conn, String dpid);
- public Iterable<ISwitchObject> getActiveSwitches(GraphDBConnection conn);
- public Iterable<ISwitchObject> getAllSwitches(GraphDBConnection conn);
- public Iterable<ISwitchObject> getInactiveSwitches(GraphDBConnection conn);
-
-
- public IDeviceObject searchDevice(GraphDBConnection conn, String macAddr);
- public IDeviceObject newDevice(GraphDBConnection conn);
- public void removeDevice(GraphDBConnection conn, IDeviceObject dev);
- public IPortObject searchPort(GraphDBConnection conn, String dpid, short number);
- public Iterable<IDeviceObject> getDevices(GraphDBConnection conn);
- public IFlowPath searchFlowPath(GraphDBConnection conn, FlowId flowId);
- public IFlowPath newFlowPath(GraphDBConnection conn);
- public void removeFlowPath(GraphDBConnection conn, IFlowPath flowPath);
- public IFlowPath getFlowPathByFlowEntry(GraphDBConnection conn,
- IFlowEntry flowEntry);
- public Iterable<IFlowPath> getAllFlowPaths(GraphDBConnection conn);
- public IFlowEntry searchFlowEntry(GraphDBConnection conn,
- FlowEntryId flowEntryId);
- public IFlowEntry newFlowEntry(GraphDBConnection conn);
- public void removeFlowEntry(GraphDBConnection conn,
- IFlowEntry flowEntry);
- public Iterable<IFlowEntry> getAllFlowEntries(GraphDBConnection conn);
- public IPortObject newPort(GraphDBConnection conn);
- ISwitchObject newSwitch(GraphDBConnection conn);
- void removePort(GraphDBConnection conn, IPortObject port);
- void removeSwitch(GraphDBConnection conn, ISwitchObject sw);
- Iterable<IFlowEntry> getAllSwitchNotUpdatedFlowEntries(GraphDBConnection conn);
-}
diff --git a/src/main/java/net/onrc/onos/util/LocalTopologyEventListener.java b/src/main/java/net/onrc/onos/util/LocalTopologyEventListener.java
index 61f227d..dd3c2ec 100644
--- a/src/main/java/net/onrc/onos/util/LocalTopologyEventListener.java
+++ b/src/main/java/net/onrc/onos/util/LocalTopologyEventListener.java
@@ -1,8 +1,8 @@
package net.onrc.onos.util;
-import net.floodlightcontroller.core.INetMapTopologyObjects.IPortObject;
import net.onrc.onos.flow.FlowManagerImpl;
import net.onrc.onos.flow.IFlowManager;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IPortObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/src/main/resources/META-INF/services/net.floodlightcontroller.core.module.IFloodlightModule b/src/main/resources/META-INF/services/net.floodlightcontroller.core.module.IFloodlightModule
index c807205..3e11180 100644
--- a/src/main/resources/META-INF/services/net.floodlightcontroller.core.module.IFloodlightModule
+++ b/src/main/resources/META-INF/services/net.floodlightcontroller.core.module.IFloodlightModule
@@ -17,9 +17,9 @@
net.floodlightcontroller.devicemanager.test.MockDeviceManager
net.floodlightcontroller.core.test.MockFloodlightProvider
net.floodlightcontroller.core.test.MockThreadPoolService
-net.floodlightcontroller.onoslistener.OnosPublisher
-net.floodlightcontroller.flowcache.FlowManager
-net.floodlightcontroller.routing.TopoRouteService
-net.floodlightcontroller.bgproute.BgpRoute
+net.onrc.onos.ofcontroller.onoslistener.OnosPublisher
+net.onrc.onos.ofcontroller.flowcache.FlowManager
+net.onrc.onos.ofcontroller.routing.TopoRouteService
+net.onrc.onos.ofcontroller.bgproute.BgpRoute
net.onrc.onos.registry.controller.ZookeeperRegistry
net.onrc.onos.registry.controller.StandaloneRegistry
diff --git a/src/main/resources/floodlightdefault.properties b/src/main/resources/floodlightdefault.properties
index 9e4fc02..bf5bad9 100644
--- a/src/main/resources/floodlightdefault.properties
+++ b/src/main/resources/floodlightdefault.properties
@@ -6,12 +6,12 @@
net.floodlightcontroller.counter.CounterStore,\
net.floodlightcontroller.perfmon.PktInProcessingTime,\
net.floodlightcontroller.ui.web.StaticWebRoutable,\
-net.floodlightcontroller.onoslistener.OnosPublisher, \
+net.onrc.onos.ofcontroller.onoslistener.OnosPublisher, \
net.onrc.onos.registry.controller.ZookeeperRegistry
net.floodlightcontroller.restserver.RestApiServer.port = 8080
net.floodlightcontroller.core.FloodlightProvider.openflowport = 6633
net.floodlightcontroller.jython.JythonDebugInterface.port = 6655
net.floodlightcontroller.forwarding.Forwarding.idletimeout = 5
net.floodlightcontroller.forwarding.Forwarding.hardtimeout = 0
-net.floodlightcontroller.onoslistener.OnosPublisher.dbconf = /tmp/cassandra.titan
-net.floodlightcontroller.onoslistener.OnosPublisher.EnableCleanup = True
+net.onrc.onos.ofcontroller.onoslistener.OnosPublisher.dbconf = /tmp/cassandra.titan
+net.onrc.onos.ofcontroller.onoslistener.OnosPublisher.EnableCleanup = True
diff --git a/src/test/java/net/floodlightcontroller/core/internal/ControllerTest.java b/src/test/java/net/floodlightcontroller/core/internal/ControllerTest.java
index 3dfe5fe..05e01a3 100644
--- a/src/test/java/net/floodlightcontroller/core/internal/ControllerTest.java
+++ b/src/test/java/net/floodlightcontroller/core/internal/ControllerTest.java
@@ -17,36 +17,43 @@
package net.floodlightcontroller.core.internal;
-import static org.easymock.EasyMock.*;
+import static org.easymock.EasyMock.anyObject;
+import static org.easymock.EasyMock.capture;
+import static org.easymock.EasyMock.createMock;
+import static org.easymock.EasyMock.createNiceMock;
+import static org.easymock.EasyMock.eq;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.expectLastCall;
+import static org.easymock.EasyMock.isA;
+import static org.easymock.EasyMock.replay;
+import static org.easymock.EasyMock.reset;
+import static org.easymock.EasyMock.same;
+import static org.easymock.EasyMock.verify;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
-import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
-import net.floodlightcontroller.core.FloodlightProvider;
import net.floodlightcontroller.core.FloodlightContext;
+import net.floodlightcontroller.core.FloodlightProvider;
import net.floodlightcontroller.core.IFloodlightProviderService;
-import net.floodlightcontroller.core.IHAListener;
import net.floodlightcontroller.core.IFloodlightProviderService.Role;
-import net.floodlightcontroller.core.IOFMessageFilterManagerService;
-import net.floodlightcontroller.core.IOFMessageListener;
+import net.floodlightcontroller.core.IHAListener;
import net.floodlightcontroller.core.IListener.Command;
+import net.floodlightcontroller.core.IOFMessageListener;
import net.floodlightcontroller.core.IOFSwitch;
import net.floodlightcontroller.core.IOFSwitchListener;
-import net.floodlightcontroller.core.OFMessageFilterManager;
import net.floodlightcontroller.core.internal.Controller.IUpdate;
import net.floodlightcontroller.core.internal.Controller.SwitchUpdate;
import net.floodlightcontroller.core.internal.Controller.SwitchUpdateType;
import net.floodlightcontroller.core.internal.OFChannelState.HandshakeState;
import net.floodlightcontroller.core.module.FloodlightModuleContext;
-import net.floodlightcontroller.core.test.MockFloodlightProvider;
import net.floodlightcontroller.core.test.MockThreadPoolService;
import net.floodlightcontroller.counter.CounterStore;
import net.floodlightcontroller.counter.ICounterStoreService;
@@ -72,17 +79,13 @@
import org.openflow.protocol.OFError.OFErrorType;
import org.openflow.protocol.OFFeaturesReply;
import org.openflow.protocol.OFPacketIn;
-import org.openflow.protocol.OFPacketOut;
+import org.openflow.protocol.OFPacketIn.OFPacketInReason;
import org.openflow.protocol.OFPhysicalPort;
-import org.openflow.protocol.OFPort;
import org.openflow.protocol.OFPortStatus;
+import org.openflow.protocol.OFPortStatus.OFPortReason;
import org.openflow.protocol.OFStatisticsReply;
import org.openflow.protocol.OFType;
-import org.openflow.protocol.OFPacketIn.OFPacketInReason;
-import org.openflow.protocol.OFPortStatus.OFPortReason;
import org.openflow.protocol.OFVendor;
-import org.openflow.protocol.action.OFAction;
-import org.openflow.protocol.action.OFActionOutput;
import org.openflow.protocol.factory.BasicFactory;
import org.openflow.protocol.statistics.OFFlowStatisticsReply;
import org.openflow.protocol.statistics.OFStatistics;
@@ -359,125 +362,6 @@
}
@Test
- public void testMessageFilterManager() throws Exception {
- class MyOFMessageFilterManager extends OFMessageFilterManager {
- public MyOFMessageFilterManager(int timer_interval) {
- super();
- TIMER_INTERVAL = timer_interval;
- }
- }
- FloodlightModuleContext fmCntx = new FloodlightModuleContext();
- MockFloodlightProvider mfp = new MockFloodlightProvider();
- OFMessageFilterManager mfm = new MyOFMessageFilterManager(100);
- MockThreadPoolService mtp = new MockThreadPoolService();
- fmCntx.addService(IOFMessageFilterManagerService.class, mfm);
- fmCntx.addService(IFloodlightProviderService.class, mfp);
- fmCntx.addService(IThreadPoolService.class, mtp);
- String sid = null;
-
- mfm.init(fmCntx);
- mfm.startUp(fmCntx);
-
- ConcurrentHashMap <String, String> filter;
- int i;
-
- //Adding the filter works -- adds up to the maximum filter size.
- for(i=mfm.getMaxFilterSize(); i > 0; --i) {
- filter = new ConcurrentHashMap<String,String>();
- filter.put("mac", String.format("00:11:22:33:44:%d%d", i,i));
- sid = mfm.setupFilter(null, filter, 60);
- assertTrue(mfm.getNumberOfFilters() == mfm.getMaxFilterSize() - i +1);
- }
-
- // Add one more to see if you can't
- filter = new ConcurrentHashMap<String,String>();
- filter.put("mac", "mac2");
- mfm.setupFilter(null, filter, 10*1000);
-
- assertTrue(mfm.getNumberOfFilters() == mfm.getMaxFilterSize());
-
- // Deleting the filter works.
- mfm.setupFilter(sid, null, -1);
- assertTrue(mfm.getNumberOfFilters() == mfm.getMaxFilterSize()-1);
-
- // Creating mock switch to which we will send packet out and
- IOFSwitch sw = createMock(IOFSwitch.class);
- expect(sw.getId()).andReturn(new Long(0));
-
- // Mock Packet-in
- IPacket testPacket = new Ethernet()
- .setSourceMACAddress("00:44:33:22:11:00")
- .setDestinationMACAddress("00:11:22:33:44:55")
- .setEtherType(Ethernet.TYPE_ARP)
- .setPayload(
- new ARP()
- .setHardwareType(ARP.HW_TYPE_ETHERNET)
- .setProtocolType(ARP.PROTO_TYPE_IP)
- .setHardwareAddressLength((byte) 6)
- .setProtocolAddressLength((byte) 4)
- .setOpCode(ARP.OP_REPLY)
- .setSenderHardwareAddress(Ethernet.toMACAddress("00:44:33:22:11:00"))
- .setSenderProtocolAddress(IPv4.toIPv4AddressBytes("192.168.1.1"))
- .setTargetHardwareAddress(Ethernet.toMACAddress("00:11:22:33:44:55"))
- .setTargetProtocolAddress(IPv4.toIPv4AddressBytes("192.168.1.2")));
- byte[] testPacketSerialized = testPacket.serialize();
-
- // Build the PacketIn
- OFPacketIn pi = ((OFPacketIn) new BasicFactory().getMessage(OFType.PACKET_IN))
- .setBufferId(-1)
- .setInPort((short) 1)
- .setPacketData(testPacketSerialized)
- .setReason(OFPacketInReason.NO_MATCH)
- .setTotalLength((short) testPacketSerialized.length);
-
- // Mock Packet-out
- OFPacketOut packetOut =
- (OFPacketOut) mockFloodlightProvider.getOFMessageFactory().getMessage(OFType.PACKET_OUT);
- packetOut.setBufferId(pi.getBufferId())
- .setInPort(pi.getInPort());
- List<OFAction> poactions = new ArrayList<OFAction>();
- poactions.add(new OFActionOutput(OFPort.OFPP_TABLE.getValue(), (short) 0));
- packetOut.setActions(poactions)
- .setActionsLength((short) OFActionOutput.MINIMUM_LENGTH)
- .setPacketData(testPacketSerialized)
- .setLengthU(OFPacketOut.MINIMUM_LENGTH+packetOut.getActionsLength()+testPacketSerialized.length);
-
- FloodlightContext cntx = new FloodlightContext();
- IFloodlightProviderService.bcStore.put(cntx, IFloodlightProviderService.CONTEXT_PI_PAYLOAD, (Ethernet) testPacket);
-
-
- // Let's check the listeners.
- List <IOFMessageListener> lm;
-
- // Check to see if all the listeners are active.
- lm = mfp.getListeners().get(OFType.PACKET_OUT);
- assertTrue(lm.size() == 1);
- assertTrue(lm.get(0).equals(mfm));
-
- lm = mfp.getListeners().get(OFType.FLOW_MOD);
- assertTrue(lm.size() == 1);
- assertTrue(lm.get(0).equals(mfm));
-
- lm = mfp.getListeners().get(OFType.PACKET_IN);
- assertTrue(lm.size() == 1);
- assertTrue(lm.get(0).equals(mfm));
-
- HashSet<String> matchedFilters;
-
- // Send a packet in and check if it matches a filter.
- matchedFilters = mfm.getMatchedFilters(pi, cntx);
- assertTrue(matchedFilters.size() == 1);
-
- // Send a packet out and check if it matches a filter
- matchedFilters = mfm.getMatchedFilters(packetOut, cntx);
- assertTrue(matchedFilters.size() == 1);
-
- // Wait for all filters to be timed out.
- Thread.sleep(150);
- assertEquals(0, mfm.getNumberOfFilters());
- }
-
- @Test
public void testAddSwitch() throws Exception {
controller.activeSwitches = new ConcurrentHashMap<Long, IOFSwitch>();
diff --git a/src/test/java/net/floodlightcontroller/core/internal/SwitchStorageImplTest.java b/src/test/java/net/floodlightcontroller/core/internal/SwitchStorageImplTest.java
index a187d4c..fb6b086 100644
--- a/src/test/java/net/floodlightcontroller/core/internal/SwitchStorageImplTest.java
+++ b/src/test/java/net/floodlightcontroller/core/internal/SwitchStorageImplTest.java
@@ -10,8 +10,8 @@
import java.util.ArrayList;
import java.util.Iterator;
-import net.floodlightcontroller.core.ISwitchStorage;
-import net.floodlightcontroller.core.ISwitchStorage.SwitchState;
+import net.onrc.onos.ofcontroller.core.ISwitchStorage;
+import net.onrc.onos.ofcontroller.core.ISwitchStorage.SwitchState;
import org.junit.After;
import org.junit.Before;
diff --git a/src/test/java/net/floodlightcontroller/core/internal/TestableSwitchStorageImpl.java b/src/test/java/net/floodlightcontroller/core/internal/TestableSwitchStorageImpl.java
index 73d517f..a73b90f 100644
--- a/src/test/java/net/floodlightcontroller/core/internal/TestableSwitchStorageImpl.java
+++ b/src/test/java/net/floodlightcontroller/core/internal/TestableSwitchStorageImpl.java
@@ -2,6 +2,8 @@
import java.util.Set;
+import net.onrc.onos.ofcontroller.core.internal.SwitchStorageImpl;
+
import com.thinkaurelius.titan.core.TitanGraph;
import com.tinkerpop.blueprints.Vertex;
import com.tinkerpop.blueprints.TransactionalGraph.Conclusion;
diff --git a/src/test/java/net/floodlightcontroller/linkdiscovery/internal/LinkStorageImplTest.java b/src/test/java/net/floodlightcontroller/linkdiscovery/internal/LinkStorageImplTest.java
index 6f62f76..fd1d7d0 100644
--- a/src/test/java/net/floodlightcontroller/linkdiscovery/internal/LinkStorageImplTest.java
+++ b/src/test/java/net/floodlightcontroller/linkdiscovery/internal/LinkStorageImplTest.java
@@ -11,11 +11,12 @@
import junit.framework.Assert;
-import net.floodlightcontroller.core.INetMapStorage.DM_OPERATION;
import net.floodlightcontroller.core.internal.TestDatabaseManager;
import net.floodlightcontroller.linkdiscovery.ILinkStorage;
import net.floodlightcontroller.linkdiscovery.LinkInfo;
import net.floodlightcontroller.routing.Link;
+import net.onrc.onos.ofcontroller.core.INetMapStorage.DM_OPERATION;
+import net.onrc.onos.ofcontroller.linkdiscovery.ILinkStorage;
import org.easymock.EasyMock;
import org.junit.After;
diff --git a/src/test/java/net/onrc/onos/util/GraphDBOperationTest.java b/src/test/java/net/onrc/onos/util/GraphDBOperationTest.java
new file mode 100644
index 0000000..d1e1c39
--- /dev/null
+++ b/src/test/java/net/onrc/onos/util/GraphDBOperationTest.java
@@ -0,0 +1,319 @@
+/**
+ *
+ */
+package net.onrc.onos.util;
+
+import static org.junit.Assert.*;
+
+import java.util.Iterator;
+
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.ISwitchObject;
+import net.onrc.onos.ofcontroller.core.ISwitchStorage.SwitchState;
+import net.floodlightcontroller.core.internal.TestDatabaseManager;
+
+import org.easymock.EasyMock;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.powermock.api.easymock.PowerMock;
+import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.powermock.modules.junit4.PowerMockRunner;
+
+import com.thinkaurelius.titan.core.TitanFactory;
+import com.thinkaurelius.titan.core.TitanGraph;
+import com.tinkerpop.blueprints.Vertex;
+
+/**
+ * @author Toshio Koide
+ *
+ */
+@RunWith(PowerMockRunner.class)
+@PrepareForTest({TitanFactory.class})
+public class GraphDBOperationTest {
+ private static TitanGraph testdb;
+ private static GraphDBConnection conn;
+ private static GraphDBOperation op;
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @BeforeClass
+ public static void setUpBeforeClass() throws Exception {
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @AfterClass
+ public static void tearDownAfterClass() throws Exception {
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ TestDatabaseManager.deleteTestDatabase();
+ testdb = TestDatabaseManager.getTestDatabase();
+// TestDatabaseManager.populateTestData(titanGraph);
+
+ // replace return value of TitanFactory.open() to dummy DB created above
+ PowerMock.mockStatic(TitanFactory.class);
+ EasyMock.expect(TitanFactory.open((String)EasyMock.anyObject())).andReturn(testdb);
+ PowerMock.replay(TitanFactory.class);
+
+ conn = GraphDBConnection.getInstance("/dummy/to/conf");
+ op = new GraphDBOperation(conn);
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+ conn.close();
+ testdb.shutdown();
+ }
+
+ private Iterator<Vertex> enumerateVertices(String vertexType) {
+ return testdb.getVertices("type", vertexType).iterator();
+ }
+
+ /**
+ * Test method for {@link net.onrc.onos.util.GraphDBOperation#newSwitch(net.onrc.onos.util.GraphDBConnection)}.
+ */
+ @Test
+ public final void testNewSwitch() {
+ Iterator<Vertex> vertices;
+ assertFalse(enumerateVertices("switch").hasNext());
+
+ ISwitchObject sw = op.newSwitch("123");
+
+ assertEquals("123", sw.getDPID());
+ op.commit();
+
+ vertices = enumerateVertices("switch");
+ assertTrue(vertices.hasNext());
+ assertEquals(vertices.next().getProperty("dpid").toString(), "123");
+ }
+
+ /**
+ * Test method for {@link net.onrc.onos.util.GraphDBOperation#searchSwitch(net.onrc.onos.util.GraphDBConnection, java.lang.String)}.
+ */
+ @Test
+ public final void testSearchSwitch() {
+ ISwitchObject sw = op.newSwitch("123");
+ op.commit();
+
+ sw = op.searchSwitch("123");
+
+ assertNotNull(sw);
+ assertEquals("123", sw.getDPID());
+ }
+
+ /**
+ * Test method for {@link net.onrc.onos.util.GraphDBOperation#searchActiveSwitch(net.onrc.onos.util.GraphDBConnection, java.lang.String)}.
+ */
+ @Test
+ public final void testSearchActiveSwitch() {
+ ISwitchObject sw = op.newSwitch("111");
+ sw.setState(SwitchState.ACTIVE.toString());
+ sw = op.newSwitch("222");
+ sw.setState(SwitchState.INACTIVE.toString());
+ op.commit();
+
+ sw = op.searchActiveSwitch("111");
+ assertNotNull(sw);
+ assertEquals("111", sw.getDPID());
+
+ sw = op.searchActiveSwitch("222");
+ assertNull(sw);
+ }
+
+ /**
+ * Test method for {@link net.onrc.onos.util.GraphDBOperation#getActiveSwitches(net.onrc.onos.util.GraphDBConnection)}.
+ */
+ @Test
+ public final void testGetActiveSwitches() {
+ ISwitchObject sw = op.newSwitch("111");
+ sw.setState(SwitchState.ACTIVE.toString());
+ sw = op.newSwitch("222");
+ sw.setState(SwitchState.INACTIVE.toString());
+ op.commit();
+
+ Iterator<ISwitchObject> i = op.getActiveSwitches().iterator();
+ assertTrue(i.hasNext());
+ assertEquals("111", i.next().getDPID());
+ assertFalse(i.hasNext());
+ }
+
+ /**
+ * Test method for {@link net.onrc.onos.util.GraphDBOperation#removeSwitch(net.onrc.onos.util.GraphDBConnection, net.floodlightcontroller.core.INetMapTopologyObjects.ISwitchObject)}.
+ */
+ @Test
+ public final void testRemoveSwitch() {
+ ISwitchObject sw = op.newSwitch("123");
+ op.commit();
+ sw = op.searchSwitch("123");
+
+ op.removeSwitch(sw);
+
+ assertFalse(enumerateVertices("switch").hasNext());
+ }
+
+ /**
+ * Test method for {@link net.onrc.onos.util.GraphDBOperation#searchDevice(net.onrc.onos.util.GraphDBConnection, java.lang.String)}.
+ */
+ @Test
+ public final void testSearchDevice() {
+ fail("Not yet implemented");
+ }
+
+ /**
+ * Test method for {@link net.onrc.onos.util.GraphDBOperation#searchPort(net.onrc.onos.util.GraphDBConnection, java.lang.String, short)}.
+ */
+ @Test
+ public final void testSearchPort() {
+ fail("Not yet implemented");
+ }
+
+ /**
+ * Test method for {@link net.onrc.onos.util.GraphDBOperation#newPort(net.onrc.onos.util.GraphDBConnection)}.
+ */
+ @Test
+ public final void testNewPort() {
+ fail("Not yet implemented");
+ }
+
+ /**
+ * Test method for {@link net.onrc.onos.util.GraphDBOperation#newDevice(net.onrc.onos.util.GraphDBConnection)}.
+ */
+ @Test
+ public final void testNewDevice() {
+ fail("Not yet implemented");
+ }
+
+ /**
+ * Test method for {@link net.onrc.onos.util.GraphDBOperation#removePort(net.onrc.onos.util.GraphDBConnection, net.floodlightcontroller.core.INetMapTopologyObjects.IPortObject)}.
+ */
+ @Test
+ public final void testRemovePort() {
+ fail("Not yet implemented");
+ }
+
+ /**
+ * Test method for {@link net.onrc.onos.util.GraphDBOperation#removeDevice(net.onrc.onos.util.GraphDBConnection, net.floodlightcontroller.core.INetMapTopologyObjects.IDeviceObject)}.
+ */
+ @Test
+ public final void testRemoveDevice() {
+ fail("Not yet implemented");
+ }
+
+ /**
+ * Test method for {@link net.onrc.onos.util.GraphDBOperation#getDevices(net.onrc.onos.util.GraphDBConnection)}.
+ */
+ @Test
+ public final void testGetDevices() {
+ fail("Not yet implemented");
+ }
+
+ /**
+ * Test method for {@link net.onrc.onos.util.GraphDBOperation#searchFlowPath(net.onrc.onos.util.GraphDBConnection, net.floodlightcontroller.util.FlowId)}.
+ */
+ @Test
+ public final void testSearchFlowPath() {
+ fail("Not yet implemented");
+ }
+
+ /**
+ * Test method for {@link net.onrc.onos.util.GraphDBOperation#newFlowPath(net.onrc.onos.util.GraphDBConnection)}.
+ */
+ @Test
+ public final void testNewFlowPath() {
+ fail("Not yet implemented");
+ }
+
+ /**
+ * Test method for {@link net.onrc.onos.util.GraphDBOperation#removeFlowPath(net.onrc.onos.util.GraphDBConnection, net.floodlightcontroller.core.INetMapTopologyObjects.IFlowPath)}.
+ */
+ @Test
+ public final void testRemoveFlowPath() {
+ fail("Not yet implemented");
+ }
+
+ /**
+ * Test method for {@link net.onrc.onos.util.GraphDBOperation#getFlowPathByFlowEntry(net.onrc.onos.util.GraphDBConnection, net.floodlightcontroller.core.INetMapTopologyObjects.IFlowEntry)}.
+ */
+ @Test
+ public final void testGetFlowPathByFlowEntry() {
+ fail("Not yet implemented");
+ }
+
+ /**
+ * Test method for {@link net.onrc.onos.util.GraphDBOperation#getAllFlowPaths(net.onrc.onos.util.GraphDBConnection)}.
+ */
+ @Test
+ public final void testGetAllFlowPaths() {
+ fail("Not yet implemented");
+ }
+
+ /**
+ * Test method for {@link net.onrc.onos.util.GraphDBOperation#searchFlowEntry(net.onrc.onos.util.GraphDBConnection, net.floodlightcontroller.util.FlowEntryId)}.
+ */
+ @Test
+ public final void testSearchFlowEntry() {
+ fail("Not yet implemented");
+ }
+
+ /**
+ * Test method for {@link net.onrc.onos.util.GraphDBOperation#newFlowEntry(net.onrc.onos.util.GraphDBConnection)}.
+ */
+ @Test
+ public final void testNewFlowEntry() {
+ fail("Not yet implemented");
+ }
+
+ /**
+ * Test method for {@link net.onrc.onos.util.GraphDBOperation#removeFlowEntry(net.onrc.onos.util.GraphDBConnection, net.floodlightcontroller.core.INetMapTopologyObjects.IFlowEntry)}.
+ */
+ @Test
+ public final void testRemoveFlowEntry() {
+ fail("Not yet implemented");
+ }
+
+ /**
+ * Test method for {@link net.onrc.onos.util.GraphDBOperation#getAllFlowEntries(net.onrc.onos.util.GraphDBConnection)}.
+ */
+ @Test
+ public final void testGetAllFlowEntries() {
+ fail("Not yet implemented");
+ }
+
+ /**
+ * Test method for {@link net.onrc.onos.util.GraphDBOperation#getAllSwitchNotUpdatedFlowEntries(net.onrc.onos.util.GraphDBConnection)}.
+ */
+ @Test
+ public final void testGetAllSwitchNotUpdatedFlowEntries() {
+ fail("Not yet implemented");
+ }
+
+ /**
+ * Test method for {@link net.onrc.onos.util.GraphDBOperation#getAllSwitches(net.onrc.onos.util.GraphDBConnection)}.
+ */
+ @Test
+ public final void testGetAllSwitches() {
+ fail("Not yet implemented");
+ }
+
+ /**
+ * Test method for {@link net.onrc.onos.util.GraphDBOperation#getInactiveSwitches(net.onrc.onos.util.GraphDBConnection)}.
+ */
+ @Test
+ public final void testGetInactiveSwitches() {
+ fail("Not yet implemented");
+ }
+
+}
diff --git a/start-onos-embedded.sh b/start-onos-embedded.sh
new file mode 100755
index 0000000..2f1584e
--- /dev/null
+++ b/start-onos-embedded.sh
@@ -0,0 +1,157 @@
+#!/bin/bash
+
+# Set paths
+FL_HOME=`dirname $0`
+FL_JAR="${FL_HOME}/target/floodlight.jar"
+FL_ONLY_JAR="${FL_HOME}/target/floodlight-only.jar"
+FL_LOGBACK="${FL_HOME}/logback.xml"
+LOGDIR=${FL_HOME}/onos-logs
+FL_LOG="${LOGDIR}/onos.`hostname`.log"
+PCAP_LOG="${LOGDIR}/onos.`hostname`.pcap"
+LOGS="$FL_LOG $PCAP_LOG"
+
+# Set JVM options
+JVM_OPTS=""
+JVM_OPTS="$JVM_OPTS -server -d64"
+JVM_OPTS="$JVM_OPTS -Xmx2g -Xms2g -Xmn800m"
+JVM_OPTS="$JVM_OPTS -XX:+UseParallelGC -XX:+AggressiveOpts -XX:+UseFastAccessorMethods"
+JVM_OPTS="$JVM_OPTS -XX:MaxInlineSize=8192 -XX:FreqInlineSize=8192"
+JVM_OPTS="$JVM_OPTS -XX:CompileThreshold=1500 -XX:PreBlockSpin=8 \
+ -Dcom.sun.management.jmxremote.port=7199 \
+ -Dcom.sun.management.jmxremote.ssl=false \
+ -Dcom.sun.management.jmxremote.authenticate=false"
+
+#JVM_OPTS="$JVM_OPTS -Dpython.security.respectJavaAccessibility=false"
+
+# Set classpath to include titan libs
+#CLASSPATH=`echo ${FL_HOME}/lib/*.jar ${FL_HOME}/lib/titan/*.jar | sed 's/ /:/g'`
+CLASSPATH="${FL_ONLY_JAR}:${FL_HOME}/lib/*:${FL_HOME}/lib/titan/*"
+MAIN_CLASS="net.floodlightcontroller.core.Main"
+
+#<logger name="net.floodlightcontroller.linkdiscovery.internal" level="TRACE"/>
+#<appender-ref ref="STDOUT" />
+
+function lotate {
+ logfile=$1
+ nr_max=${2:-10}
+ if [ -f $logfile ]; then
+ for i in `seq $(expr $nr_max - 1) -1 1`; do
+ if [ -f ${logfile}.${i} ]; then
+ mv -f ${logfile}.${i} ${logfile}.`expr $i + 1`
+ fi
+ done
+ mv $logfile $logfile.1
+ fi
+}
+
+function start {
+ if [ ! -d ${LOGDIR} ]; then
+ mkdir -p ${LOGDIR}
+ fi
+ # Backup log files
+ for log in ${LOGS}; do
+ echo "rotate log: $log"
+ if [ -f ${log} ]; then
+ lotate ${log}
+ fi
+ done
+
+# Create a logback file if required
+ cat <<EOF_LOGBACK >${FL_LOGBACK}
+<configuration scan="true" debug="true">
+<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+<encoder>
+<pattern>%level [%logger:%thread] %msg%n</pattern>
+</encoder>
+</appender>
+
+<appender name="FILE" class="ch.qos.logback.core.FileAppender">
+<file>${FL_LOG}</file>
+<encoder>
+<pattern>%date %level [%thread] %logger{10} [%file:%line] %msg%n</pattern>
+</encoder>
+</appender>
+
+<logger name="org" level="WARN"/>
+<logger name="LogService" level="WARN"/> <!-- Restlet access logging -->
+<logger name="net.floodlightcontroller.logging" level="WARN"/>
+
+<root level="DEBUG">
+<appender-ref ref="FILE" />
+</root>
+</configuration>
+EOF_LOGBACK
+
+ # Run floodlight
+ echo "Starting ONOS controller ..."
+ echo
+ #java ${JVM_OPTS} -Dlogback.configurationFile=${FL_LOGBACK} -jar ${FL_JAR} -cf ${FL_HOME}/onos.properties > /dev/null 2>&1 &
+ #java ${JVM_OPTS} -Dlogback.configurationFile=${FL_LOGBACK} -cp ${CLASSPATH} ${MAIN_CLASS} -cf ${FL_HOME}/onos.properties > /dev/n
+
+ mvn exec:exec -Dexec.executable="java" -Dexec.args="${JVM_OPTS} -Dlogback.configurationFile=${FL_LOGBACK} -cp %classpath ${MAIN_CLASS} -cf ${FL_HOME}/conf/onos-embedded.properties" > ${LOGDIR}/onos.stdout 2>${LOGDIR}/onos.stderr &
+
+ echo "Waiting for ONOS to start..."
+ COUNT=0
+ ESTATE=0
+ while [ "$COUNT" != "10" ]; do
+ COUNT=$((COUNT + 1))
+ n=`jps -l |grep "${MAIN_CLASS}" | wc -l`
+ if [ "$n" -ge "1" ]; then
+ exit 0
+ fi
+ sleep $COUNT
+ done
+ echo "Timed out"
+ exit 1
+
+# echo "java ${JVM_OPTS} -Dlogback.configurationFile=${FL_LOGBACK} -jar ${FL_JAR} -cf ./onos.properties > /dev/null 2>&1 &"
+# sudo -b /usr/sbin/tcpdump -n -i eth0 -s0 -w ${PCAP_LOG} 'tcp port 6633' > /dev/null 2>&1
+}
+
+function stop {
+ # Kill the existing processes
+ flpid=`jps -l |grep ${MAIN_CLASS} | awk '{print $1}'`
+ tdpid=`ps -edalf |grep tcpdump |grep ${PCAP_LOG} | awk '{print $4}'`
+ pids="$flpid $tdpid"
+ for p in ${pids}; do
+ if [ x$p != "x" ]; then
+ kill -KILL $p
+ echo "Killed existing prosess (pid: $p)"
+ fi
+ done
+}
+
+function deldb {
+ # Delete the cassandra data
+ if [ -d "/tmp/cassandra" ]; then
+ rm -rf /tmp/cassandra/*
+ fi
+}
+
+case "$1" in
+ start)
+ stop
+ start
+ ;;
+ startifdown)
+ n=`jps -l |grep "${MAIN_CLASS}" | wc -l`
+ if [ $n == 0 ]; then
+ start
+ else
+ echo "$n instance of onos running"
+ fi
+ ;;
+ stop)
+ stop
+ ;;
+ deldb)
+ deldb
+ ;;
+ status)
+ n=`jps -l |grep "${MAIN_CLASS}" | wc -l`
+ echo "$n instance of onos running"
+ ;;
+ *)
+ echo "Usage: $0 {start|stop|restart|status|startifdown}"
+ exit 1
+esac