Moved pure ONOS code in net.floodlightcontroller.core.internal to onos package namespace
diff --git a/src/main/java/net/onrc/onos/ofcontroller/core/internal/SwitchStorageImpl.java b/src/main/java/net/onrc/onos/ofcontroller/core/internal/SwitchStorageImpl.java
new file mode 100644
index 0000000..c540e14
--- /dev/null
+++ b/src/main/java/net/onrc/onos/ofcontroller/core/internal/SwitchStorageImpl.java
@@ -0,0 +1,228 @@
+package net.onrc.onos.ofcontroller.core.internal;
+
+import java.util.Collection;
+
+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 org.openflow.protocol.OFPhysicalPort;
+import org.openflow.protocol.OFPhysicalPort.OFPortConfig;
+import org.openflow.protocol.OFPhysicalPort.OFPortState;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class SwitchStorageImpl implements ISwitchStorage {
+ protected GraphDBConnection conn;
+ protected static Logger log = LoggerFactory.getLogger(SwitchStorageImpl.class);
+
+ @Override
+ public void update(String dpid, SwitchState state, DM_OPERATION op) {
+ // TODO Auto-generated method stub
+ log.info("SwitchStorage:update dpid:{} state: {} ", dpid, state);
+ switch(op) {
+
+ case UPDATE:
+ case INSERT:
+ case CREATE:
+ addSwitch(dpid);
+ if (state != SwitchState.ACTIVE) {
+ setStatus(dpid, state);
+ }
+ break;
+ case DELETE:
+ deleteSwitch(dpid);
+ break;
+ default:
+ }
+ }
+
+ private void setStatus(String dpid, SwitchState state) {
+ ISwitchObject sw = conn.utils().searchSwitch(conn, dpid);
+ if (sw != null) {
+ sw.setState(state.toString());
+ conn.endTx(Transaction.COMMIT);
+ log.info("SwitchStorage:setStatus dpid:{} state: {} done", dpid, state);
+ } else {
+ conn.endTx(Transaction.ROLLBACK);
+ log.info("SwitchStorage:setStatus dpid:{} state: {} failed: switch not found", dpid, state);
+ }
+ }
+
+ @Override
+ public void addPort(String dpid, OFPhysicalPort port) {
+ // TODO Auto-generated method stub
+
+ boolean portDown = ((OFPortConfig.OFPPC_PORT_DOWN.getValue() & port.getConfig()) > 0) ||
+ ((OFPortState.OFPPS_LINK_DOWN.getValue() & port.getState()) > 0);
+ if (portDown) {
+ deletePort(dpid, port.getPortNumber());
+ return;
+ }
+
+ try {
+ ISwitchObject sw = conn.utils().searchSwitch(conn, dpid);
+
+ if (sw != null) {
+ IPortObject p = conn.utils().searchPort(conn, 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.setState("ACTIVE");
+ p.setPortState(port.getState());
+ p.setDesc(port.getName());
+ sw.addPort(p);
+ conn.endTx(Transaction.COMMIT);
+
+ }
+ } else {
+ log.error("SwitchStorage:addPort dpid:{} port:{} : failed switch does not exist", dpid, port.getPortNumber());
+ }
+ } catch (Exception e) {
+ // TODO: handle exceptions
+ e.printStackTrace();
+ conn.endTx(Transaction.ROLLBACK);
+ log.error("SwitchStorage:addPort dpid:{} port:{} failed", dpid, port.getPortNumber());
+ }
+
+ }
+
+ @Override
+ public Collection<OFPhysicalPort> getPorts(long dpid) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public OFPhysicalPort getPort(String dpid, short portnum) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public OFPhysicalPort getPort(String dpid, String portName) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public void addSwitch(String dpid) {
+
+ log.info("SwitchStorage:addSwitch(): dpid {} ", dpid);
+
+ try {
+ ISwitchObject sw = conn.utils().searchSwitch(conn, dpid);
+ if (sw != null) {
+ /*
+ * Do nothing or throw exception?
+ */
+
+ log.info("SwitchStorage:addSwitch dpid:{} already exists", dpid);
+ sw.setState(SwitchState.ACTIVE.toString());
+ conn.endTx(Transaction.COMMIT);
+ } else {
+ sw = conn.utils().newSwitch(conn);
+
+ if (sw != null) {
+ sw.setType("switch");
+ sw.setDPID(dpid);
+ sw.setState(SwitchState.ACTIVE.toString());
+ conn.endTx(Transaction.COMMIT);
+ log.info("SwitchStorage:addSwitch dpid:{} added", dpid);
+ } else {
+ log.error("switchStorage:addSwitch dpid:{} failed -> newSwitch failed", dpid);
+ }
+ }
+ } catch (Exception e) {
+ /*
+ * retry?
+ */
+ e.printStackTrace();
+ conn.endTx(Transaction.ROLLBACK);
+ log.info("SwitchStorage:addSwitch dpid:{} failed", dpid);
+ }
+
+
+ }
+
+ @Override
+ public void deleteSwitch(String dpid) {
+ // TODO Setting inactive but we need to eventually remove data
+
+ try {
+
+ ISwitchObject sw = conn.utils().searchSwitch(conn, dpid);
+ if (sw != null) {
+ conn.utils().removeSwitch(conn, sw);
+
+ conn.endTx(Transaction.COMMIT);
+ log.info("SwitchStorage:DeleteSwitch dpid:{} done", dpid);
+ }
+ } catch (Exception e) {
+ // TODO: handle exceptions
+ e.printStackTrace();
+ conn.endTx(Transaction.ROLLBACK);
+ log.error("SwitchStorage:deleteSwitch {} failed", dpid);
+ }
+
+ }
+
+ @Override
+ public void deletePort(String dpid, short port) {
+ // TODO Auto-generated method stub
+ try {
+ ISwitchObject sw = conn.utils().searchSwitch(conn, dpid);
+
+ if (sw != null) {
+ IPortObject p = conn.utils().searchPort(conn, 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);
+ }
+ }
+ } catch (Exception e) {
+ // TODO: handle exceptions
+ e.printStackTrace();
+ conn.endTx(Transaction.ROLLBACK);
+ log.info("SwitchStorage:deletePort dpid:{} port:{} failed", dpid, port);
+ }
+ }
+
+ @Override
+ public void deletePort(String dpid, String portName) {
+ // TODO Auto-generated method stub
+
+ }
+
+
+
+ @Override
+ public void init(String conf) {
+
+ conn = GraphDBConnection.getInstance(conf);
+
+ }
+
+
+
+ public void finalize() {
+ close();
+ }
+
+ @Override
+ public void close() {
+ conn.close();
+ }
+
+
+}