Fix the bug of rerouting and state transition problem
Change-Id: I1f5df326fa3f24b02981991fe7ff51b4269eb256
diff --git a/src/main/java/net/onrc/onos/intent/runtime/PathCalcRuntimeModule.java b/src/main/java/net/onrc/onos/intent/runtime/PathCalcRuntimeModule.java
index 3dfdc84..042f08b 100755
--- a/src/main/java/net/onrc/onos/intent/runtime/PathCalcRuntimeModule.java
+++ b/src/main/java/net/onrc/onos/intent/runtime/PathCalcRuntimeModule.java
@@ -62,8 +62,12 @@
return;
IntentOperationList reroutingOperation = new IntentOperationList();
- for (Intent pathIntent : oldPaths) {
- reroutingOperation.add(Operator.ADD, ((PathIntent) pathIntent).getParentIntent());
+ for (Intent intent : oldPaths) {
+ PathIntent pathIntent = (PathIntent) intent;
+ if (pathIntent.getState().equals(IntentState.INST_ACK) &&
+ !reroutingOperation.contains(pathIntent)) {
+ reroutingOperation.add(Operator.ADD, pathIntent.getParentIntent());
+ }
}
executeIntentOperations(reroutingOperation);
}
@@ -276,8 +280,10 @@
IntentState state = entry.getValue();
switch (state) {
+ case INST_REQ:
case INST_ACK:
case INST_NACK:
+ case DEL_REQ:
case DEL_ACK:
case DEL_PENDING:
parentStates.put(parentIntent.getId(), state);