fix obstacle constraint to support edge links
support paths including edge links (e.g., compilation result of
hostToHostIntent) for the obstacle constraint
Change-Id: I0f82e3cb8e4b88ffd30a9275e5e7dcaf5fbae122
diff --git a/core/api/src/main/java/org/onosproject/net/intent/constraint/ObstacleConstraint.java b/core/api/src/main/java/org/onosproject/net/intent/constraint/ObstacleConstraint.java
index 7908b58..0b0c414 100644
--- a/core/api/src/main/java/org/onosproject/net/intent/constraint/ObstacleConstraint.java
+++ b/core/api/src/main/java/org/onosproject/net/intent/constraint/ObstacleConstraint.java
@@ -64,10 +64,29 @@
}
private boolean isValid(Link link) {
- DeviceId src = link.src().deviceId();
- DeviceId dst = link.dst().deviceId();
+ if (link.type() != Link.Type.EDGE) {
+ DeviceId src = link.src().deviceId();
+ DeviceId dst = link.dst().deviceId();
- return !(obstacles.contains(src) || obstacles.contains(dst));
+ return !(obstacles.contains(src) || obstacles.contains(dst));
+
+ } else {
+
+ boolean isSrc = true;
+ if (link.src().elementId() instanceof DeviceId) {
+
+ DeviceId src = link.src().deviceId();
+ isSrc = !(obstacles.contains(src));
+ }
+
+ boolean isDst = true;
+ if (link.dst().elementId() instanceof DeviceId) {
+ DeviceId dst = link.dst().deviceId();
+ isDst = !(obstacles.contains(dst));
+ }
+
+ return isSrc || isDst;
+ }
}
@Override