Augment provider service to process batch mapping query
Change-Id: Id44e4ad23f4cfbb56da4d52e1beb8cd0d3ca2b20
diff --git a/apps/mappingmanagement/api/src/main/java/org/onosproject/mapping/MappingProviderService.java b/apps/mappingmanagement/api/src/main/java/org/onosproject/mapping/MappingProviderService.java
index 724f493..c5bcb80 100644
--- a/apps/mappingmanagement/api/src/main/java/org/onosproject/mapping/MappingProviderService.java
+++ b/apps/mappingmanagement/api/src/main/java/org/onosproject/mapping/MappingProviderService.java
@@ -17,6 +17,8 @@
import org.onosproject.net.provider.ProviderService;
+import java.util.List;
+
/**
* Service through which mapping providers can inject mapping information into
* the core.
@@ -39,4 +41,13 @@
* @return a mapping value associated with a given mapping key
*/
MappingValue mappingQueried(MappingKey mappingKey);
+
+ /**
+ * Signals that a new batch mapping query has been issued.
+ * If no mapping is found, simply returns empty list.
+ *
+ * @param mappingKeys a collection of mapping keys
+ * @return a collection of mapping values associated with give mapping keys
+ */
+ List<MappingValue> mappingQueried(List<MappingKey> mappingKeys);
}
diff --git a/apps/mappingmanagement/api/src/test/java/org/onosproject/mapping/MappingProviderServiceAdapter.java b/apps/mappingmanagement/api/src/test/java/org/onosproject/mapping/MappingProviderServiceAdapter.java
index a5e35af..c047772 100644
--- a/apps/mappingmanagement/api/src/test/java/org/onosproject/mapping/MappingProviderServiceAdapter.java
+++ b/apps/mappingmanagement/api/src/test/java/org/onosproject/mapping/MappingProviderServiceAdapter.java
@@ -15,6 +15,8 @@
*/
package org.onosproject.mapping;
+import java.util.List;
+
/**
* Adapter for testing against mapping provider service.
*/
@@ -33,4 +35,9 @@
public MappingValue mappingQueried(MappingKey mappingKey) {
return null;
}
+
+ @Override
+ public List<MappingValue> mappingQueried(List<MappingKey> mappingKeys) {
+ return null;
+ }
}
diff --git a/apps/mappingmanagement/mgr/src/main/java/org/onosproject/mapping/impl/MappingManager.java b/apps/mappingmanagement/mgr/src/main/java/org/onosproject/mapping/impl/MappingManager.java
index b6e01c8..4283c78 100755
--- a/apps/mappingmanagement/mgr/src/main/java/org/onosproject/mapping/impl/MappingManager.java
+++ b/apps/mappingmanagement/mgr/src/main/java/org/onosproject/mapping/impl/MappingManager.java
@@ -15,7 +15,9 @@
*/
package org.onosproject.mapping.impl;
+import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import org.apache.felix.scr.annotations.Activate;
import org.apache.felix.scr.annotations.Component;
@@ -44,6 +46,7 @@
import org.onosproject.net.provider.AbstractProviderService;
import org.slf4j.Logger;
+import java.util.List;
import java.util.Set;
import static org.slf4j.LoggerFactory.getLogger;
@@ -190,5 +193,17 @@
public MappingValue mappingQueried(MappingKey mappingKey) {
return getMappingValueByMappingKey(mappingKey);
}
+
+ @Override
+ public List<MappingValue> mappingQueried(List<MappingKey> mappingKeys) {
+ List<MappingValue> values = Lists.newArrayList();
+ mappingKeys.forEach(key -> {
+ MappingValue value = getMappingValueByMappingKey(key);
+ if (value != null) {
+ values.add(value);
+ }
+ });
+ return ImmutableList.copyOf(values);
+ }
}
}
diff --git a/providers/lisp/mapping/src/main/java/org/onosproject/provider/lisp/mapping/impl/LispMappingProvider.java b/providers/lisp/mapping/src/main/java/org/onosproject/provider/lisp/mapping/impl/LispMappingProvider.java
index a7ba95f..bdf685a 100644
--- a/providers/lisp/mapping/src/main/java/org/onosproject/provider/lisp/mapping/impl/LispMappingProvider.java
+++ b/providers/lisp/mapping/src/main/java/org/onosproject/provider/lisp/mapping/impl/LispMappingProvider.java
@@ -152,7 +152,9 @@
List<MappingKey> keys = Lists.newArrayList();
records.forEach(r -> keys.add(new MappingKeyBuilder(deviceService,
deviceId, r.getPrefix()).build()));
- keys.forEach(key -> providerService.mappingQueried(key));
+ // TODO: returned mapping values will be converted to
+ // protocol specifics and wrapped into a mapping record
+ providerService.mappingQueried(keys);
break;
case LISP_MAP_REGISTER: