integrated and added checks to avoid duplicate links
diff --git a/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkStorageImpl.java b/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkStorageImpl.java
index af99506..1fb80e9 100644
--- a/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkStorageImpl.java
+++ b/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkStorageImpl.java
@@ -86,8 +86,13 @@
}
if (vportSrc != null && vportDst != null) {
- graph.addEdge(null, vportSrc, vportDst, "link");
- graph.stopTransaction(Conclusion.SUCCESS);
+ //TODO: If Edge already exists should we remove and add again?
+ if (vportSrc.query().direction(Direction.OUT).labels("link").vertices().iterator().equals(vportDst)) {
+ //FIXME: Succeed silently for now
+ } else {
+ graph.addEdge(null, vportSrc, vportDst, "link");
+ graph.stopTransaction(Conclusion.SUCCESS);
+ }
log.debug("addLink(): link added {} src {} dst {}", new Object[]{lt, vportSrc, vportDst});
} else {
log.error("addLink(): failed {} src {} dst {}", new Object[]{lt, vportSrc, vportDst});