Fixing bug where WITHDRAWN intents get added to ObjectiveTracker
Change-Id: I4c16fe749ab30fdc4fbb96854cade0c292a3f8da
diff --git a/core/net/src/main/java/org/onosproject/net/intent/impl/ObjectiveTracker.java b/core/net/src/main/java/org/onosproject/net/intent/impl/ObjectiveTracker.java
index 5f6bc5d..bfbb479 100644
--- a/core/net/src/main/java/org/onosproject/net/intent/impl/ObjectiveTracker.java
+++ b/core/net/src/main/java/org/onosproject/net/intent/impl/ObjectiveTracker.java
@@ -76,6 +76,7 @@
import static org.onlab.util.Tools.isNullOrEmpty;
import static org.onosproject.net.LinkKey.linkKey;
import static org.onosproject.net.intent.IntentState.INSTALLED;
+import static org.onosproject.net.intent.IntentState.INSTALLING;
import static org.onosproject.net.link.LinkEvent.Type.LINK_REMOVED;
import static org.onosproject.net.link.LinkEvent.Type.LINK_UPDATED;
import static org.slf4j.LoggerFactory.getLogger;
@@ -212,13 +213,15 @@
Key key = intentData.key();
Intent intent = intentData.intent();
boolean isLocal = intentService.isLocal(key);
+ boolean isInstalled = intentData.state() == INSTALLING ||
+ intentData.state() == INSTALLED;
List<Intent> installables = intentData.installables();
if (log.isTraceEnabled()) {
log.trace("intent {}, old: {}, new: {}, installableCount: {}, resourceCount: {}",
key,
intentsByDevice.values().contains(key),
- isLocal,
+ isLocal && isInstalled,
installables.size(),
intent.resources().size() +
installables.stream()
@@ -229,7 +232,9 @@
log.warn("Intent {} is INSTALLED with no installables", key);
}
- if (isLocal) {
+ // FIXME Intents will be added 3 times (once directly using addTracked,
+ // then when installing and when installed)
+ if (isLocal && isInstalled) {
addTrackedResources(key, intent.resources());
for (Intent installable : installables) {
addTrackedResources(key, installable.resources());