Merge remote-tracking branch 'origin/developtest' into developtest
Conflicts:
src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkStorageImpl.java
src/main/java/net/onrc/onos/util/GraphDBConnection.java
src/test/java/net/floodlightcontroller/core/internal/ControllerTest.java
src/test/java/net/floodlightcontroller/linkdiscovery/internal/LinkStorageImplTest.java
start-cassandra.sh
diff --git a/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkStorageImpl.java b/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkStorageImpl.java
index 2a4c2b9..81e2ce8 100644
--- a/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkStorageImpl.java
+++ b/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkStorageImpl.java
@@ -84,13 +84,55 @@
}
if (currLinks.contains(vportDst)) {
- // TODO: update linkinfo
if (op.equals(DM_OPERATION.INSERT) || op.equals(DM_OPERATION.CREATE)) {
log.debug("addOrUpdateLink(): failed link exists {} {} src {} dst {}",
new Object[]{op, lt, vportSrc, vportDst});
+ } else if (op.equals(DM_OPERATION.UPDATE)) {
+ // TODO: update linkinfo
+ // GraphDB seems to have no KeyIndex for LinkInfo data
+
+ // BEGIN: trial code (update implementation)
+ if(linkinfo != null) {
+ vportSrc.setPortState(linkinfo.getSrcPortState());
+ vportDst.setPortState(linkinfo.getDstPortState());
+
+ Vertex vsrc = vportSrc.asVertex();
+ vsrc.setProperty("first_seen_time", linkinfo.getFirstSeenTime());
+ vsrc.setProperty("last_lldp_received_time", linkinfo.getUnicastValidTime());
+ vsrc.setProperty("last_bddp_received_time", linkinfo.getMulticastValidTime());
+
+// for(Edge e: vportSrc.asVertex().getEdges(Direction.OUT)) {
+// if(e.getVertex(Direction.OUT).equals(vportDst.asVertex())) {
+// e.setProperty("first_seen_time", linkinfo.getFirstSeenTime());
+// e.setProperty("last_lldp_received_time", linkinfo.getUnicastValidTime());
+// e.setProperty("last_bddp_received_time", linkinfo.getMulticastValidTime());
+// }
+// }
+
+ conn.endTx(Transaction.COMMIT);
+ log.debug("addOrUpdateLink(): link updated {} {} src {} dst {}", new Object[]{op, lt, vportSrc, vportDst});
+ }
+ // END: trial code
}
} else {
- vportSrc.setLinkPort(vportDst);
+ if (op.equals(DM_OPERATION.UPDATE)) {
+ log.debug("addOrUpdateLink(): failed link doesn't exist {} {} src {} dst {}",
+ new Object[]{op, lt, vportSrc, vportDst});
+ } else {
+ vportSrc.setLinkPort(vportDst);
+
+ // BEGIN: trial code (update implementation)
+ if(linkinfo != null) {
+ vportSrc.setPortState(linkinfo.getSrcPortState());
+ vportDst.setPortState(linkinfo.getDstPortState());
+
+ Vertex vsrc = vportSrc.asVertex();
+ vsrc.setProperty("first_seen_time", linkinfo.getFirstSeenTime());
+ vsrc.setProperty("last_lldp_received_time", linkinfo.getUnicastValidTime());
+ vsrc.setProperty("last_bddp_received_time", linkinfo.getMulticastValidTime());
+ }
+ // END: trial code
+ }
conn.endTx(Transaction.COMMIT);
log.debug("updateLink(): link added {} {} src {} dst {}", new Object[]{op, lt, vportSrc, vportDst});
diff --git a/src/main/java/net/onrc/onos/util/GraphDBConnection.java b/src/main/java/net/onrc/onos/util/GraphDBConnection.java
index 478763c..7ba4719 100644
--- a/src/main/java/net/onrc/onos/util/GraphDBConnection.java
+++ b/src/main/java/net/onrc/onos/util/GraphDBConnection.java
@@ -7,6 +7,7 @@
import com.thinkaurelius.titan.core.TitanFactory;
import com.thinkaurelius.titan.core.TitanGraph;
+import com.tinkerpop.blueprints.Edge;
import com.tinkerpop.blueprints.TransactionalGraph;
import com.tinkerpop.blueprints.Vertex;
import com.tinkerpop.blueprints.util.wrappers.event.EventTransactionalGraph;
@@ -98,7 +99,7 @@
protected EventTransactionalGraph<TitanGraph> getEventGraph() {
- if (isValid()) {
+ if (isValid()) {
return eg;
} else {
return null;