Release resources when intent is withdrawn (ONOS-2048).
Create optical circuits using CLI (ONOS-2049).
Change-Id: I8e52e698a897b869147afffdc0294956df76aa0c
diff --git a/core/api/src/main/java/org/onosproject/net/resource/device/DeviceResourceService.java b/core/api/src/main/java/org/onosproject/net/resource/device/DeviceResourceService.java
index 81bd1b7..8813b5b 100644
--- a/core/api/src/main/java/org/onosproject/net/resource/device/DeviceResourceService.java
+++ b/core/api/src/main/java/org/onosproject/net/resource/device/DeviceResourceService.java
@@ -67,7 +67,12 @@
*/
Set<IntentId> getMapping(IntentId intentId);
- void releaseMapping(IntentId keyIntentId, IntentId valIntentId);
+ /**
+ * Release mapping of given intent.
+ *
+ * @param intentId intent ID
+ */
+ void releaseMapping(IntentId intentId);
/**
* Release ports associated with given intent ID.
diff --git a/core/api/src/main/java/org/onosproject/net/resource/device/DeviceResourceStore.java b/core/api/src/main/java/org/onosproject/net/resource/device/DeviceResourceStore.java
index c73cab7..31cab02 100644
--- a/core/api/src/main/java/org/onosproject/net/resource/device/DeviceResourceStore.java
+++ b/core/api/src/main/java/org/onosproject/net/resource/device/DeviceResourceStore.java
@@ -66,12 +66,11 @@
Set<IntentId> getMapping(IntentId intentId);
/**
- * Releases the mapping between the given intents.
+ * Releases the mapping of the given intent.
*
- * @param keyIntentId key intent ID
- * @param valIntentId value intent ID
+ * @param intentId intent ID
*/
- void releaseMapping(IntentId keyIntentId, IntentId valIntentId);
+ void releaseMapping(IntentId intentId);
/**
* Releases the ports allocated to the given intent.
diff --git a/core/net/src/main/java/org/onosproject/net/resource/impl/DeviceResourceManager.java b/core/net/src/main/java/org/onosproject/net/resource/impl/DeviceResourceManager.java
index c9437de..62b4112 100644
--- a/core/net/src/main/java/org/onosproject/net/resource/impl/DeviceResourceManager.java
+++ b/core/net/src/main/java/org/onosproject/net/resource/impl/DeviceResourceManager.java
@@ -73,8 +73,8 @@
}
@Override
- public void releaseMapping(IntentId keyIntentId, IntentId valIntentId) {
- store.releaseMapping(keyIntentId, valIntentId);
+ public void releaseMapping(IntentId intentId) {
+ store.releaseMapping(intentId);
}
@Override
diff --git a/core/store/dist/src/main/java/org/onosproject/store/resource/impl/ConsistentDeviceResourceStore.java b/core/store/dist/src/main/java/org/onosproject/store/resource/impl/ConsistentDeviceResourceStore.java
index 519fc83..09c2269 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/resource/impl/ConsistentDeviceResourceStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/resource/impl/ConsistentDeviceResourceStore.java
@@ -168,21 +168,6 @@
}
@Override
- public void releaseMapping(IntentId keyIntentId, IntentId valIntentId) {
- if (!intentMapping.containsKey(keyIntentId)) {
- return;
- }
-
- Set<IntentId> intents = intentMapping.get(keyIntentId).value();
-
- try {
- intents.remove(valIntentId);
- } catch (Exception e) {
- log.error("Trying to remove non-existing mapping {} {}", keyIntentId, valIntentId);
- }
- }
-
- @Override
public boolean allocateMapping(IntentId keyIntentId, IntentId valIntentId) {
Set<IntentId> intents = intentMapping.get(keyIntentId).value();
@@ -198,6 +183,17 @@
}
@Override
+ public void releaseMapping(IntentId intentId) {
+ for (IntentId intent : intentMapping.keySet()) {
+ // TODO: optimize by checking for identical src & dst
+ Set<IntentId> mapping = intentMapping.get(intent).value();
+ if (mapping.remove(intentId)) {
+ return;
+ }
+ }
+ }
+
+ @Override
public boolean releasePorts(IntentId intentId) {
checkNotNull(intentId);