summaryrefslogtreecommitdiffstats
path: root/lisp/lisp2vpp/src/main/java
diff options
context:
space:
mode:
authorJan Srnicek <jsrnicek@cisco.com>2017-04-10 16:11:03 +0200
committerJan Srnicek <jsrnicek@cisco.com>2017-04-11 08:16:29 +0000
commit308b35c6bdf85a1ad401d40bbfcdf293ce2687b9 (patch)
tree6ba453d94ac2e646033bf81076c3c2ca52987b22 /lisp/lisp2vpp/src/main/java
parent4fe803a800fd3ef7d88c775a78a9e6632cfcf955 (diff)
HC2VPP-126 - Eid context artificial prefix
Artificial prefix for mappings that are not present Change-Id: I789750e3877918b2e15ba19871da1bf8bc4e207b Signed-off-by: Jan Srnicek <jsrnicek@cisco.com>
Diffstat (limited to 'lisp/lisp2vpp/src/main/java')
-rw-r--r--lisp/lisp2vpp/src/main/java/io/fd/hc2vpp/lisp/LispModule.java4
-rw-r--r--lisp/lisp2vpp/src/main/java/io/fd/hc2vpp/lisp/context/util/EidMappingContext.java24
2 files changed, 19 insertions, 9 deletions
diff --git a/lisp/lisp2vpp/src/main/java/io/fd/hc2vpp/lisp/LispModule.java b/lisp/lisp2vpp/src/main/java/io/fd/hc2vpp/lisp/LispModule.java
index 5324eec2d..3c09f9b1b 100644
--- a/lisp/lisp2vpp/src/main/java/io/fd/hc2vpp/lisp/LispModule.java
+++ b/lisp/lisp2vpp/src/main/java/io/fd/hc2vpp/lisp/LispModule.java
@@ -67,12 +67,12 @@ public class LispModule extends AbstractModule {
LOG.info("Binding Eid context[{}]", LOCAL_MAPPING_CONTEXT);
bind(EidMappingContext.class)
.annotatedWith(Names.named(LOCAL_MAPPING_CONTEXT))
- .toInstance(new EidMappingContext(LOCAL_MAPPING_CONTEXT));
+ .toInstance(new EidMappingContext(LOCAL_MAPPING_CONTEXT, "local-mapping-"));
LOG.info("Binding Eid context[{}]", REMOTE_MAPPING_CONTEXT);
bind(EidMappingContext.class)
.annotatedWith(Names.named(REMOTE_MAPPING_CONTEXT))
- .toInstance(new EidMappingContext(REMOTE_MAPPING_CONTEXT));
+ .toInstance(new EidMappingContext(REMOTE_MAPPING_CONTEXT, "remote-mapping-"));
LOG.info("Binding Adjacencies context");
bind(AdjacenciesMappingContext.class)
diff --git a/lisp/lisp2vpp/src/main/java/io/fd/hc2vpp/lisp/context/util/EidMappingContext.java b/lisp/lisp2vpp/src/main/java/io/fd/hc2vpp/lisp/context/util/EidMappingContext.java
index e32138b47..5288a609d 100644
--- a/lisp/lisp2vpp/src/main/java/io/fd/hc2vpp/lisp/context/util/EidMappingContext.java
+++ b/lisp/lisp2vpp/src/main/java/io/fd/hc2vpp/lisp/context/util/EidMappingContext.java
@@ -17,7 +17,6 @@
package io.fd.hc2vpp.lisp.context.util;
import static com.google.common.base.Preconditions.checkArgument;
-import static com.google.common.base.Preconditions.checkState;
import com.google.common.base.Optional;
import io.fd.hc2vpp.lisp.translate.util.EidTranslator;
@@ -36,8 +35,6 @@ import org.opendaylight.yang.gen.v1.urn.honeycomb.params.xml.ns.yang.eid.mapping
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev170315.MappingId;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.opendaylight.yangtools.yang.binding.KeyedInstanceIdentifier;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
* Utility class allowing {@link MappingId} to {@link Eid} mapping
@@ -48,16 +45,18 @@ public class EidMappingContext implements EidTranslator {
private final KeyedInstanceIdentifier<org.opendaylight.yang.gen.v1.urn.honeycomb.params.xml.ns.yang.eid.mapping.context.rev160801.contexts.EidMappingContext, EidMappingContextKey>
namingContextIid;
+ private final String artificialPrefix;
/**
* Create new naming context
*
* @param instanceName name of this context instance. Will be used as list item identifier within context data tree
*/
- public EidMappingContext(@Nonnull final String instanceName) {
+ public EidMappingContext(@Nonnull final String instanceName, @Nonnull final String artificialPrefix) {
namingContextIid = InstanceIdentifier.create(Contexts.class).child(
org.opendaylight.yang.gen.v1.urn.honeycomb.params.xml.ns.yang.eid.mapping.context.rev160801.contexts.EidMappingContext.class,
new EidMappingContextKey(instanceName));
+ this.artificialPrefix = artificialPrefix;
}
/**
@@ -73,7 +72,11 @@ public class EidMappingContext implements EidTranslator {
@Nonnull final MappingContext mappingContext) {
final Optional<Mappings> read = mappingContext.read(namingContextIid.child(Mappings.class));
- checkState(read.isPresent(), "Mapping for eid: %s is not present. But should be", remoteEid);
+ if (!read.isPresent()) {
+ final MappingId artificialMappingId = getMappingId(remoteEid.toString(), artificialPrefix);
+ addEid(artificialMappingId, remoteEid, mappingContext);
+ return artificialMappingId;
+ }
return read.get().getMapping()
.stream()
@@ -82,6 +85,10 @@ public class EidMappingContext implements EidTranslator {
.collect(SINGLE_ITEM_COLLECTOR).getId();
}
+ private static MappingId getMappingId(final String eidValue, final String artificialPrefix) {
+ return new MappingId(artificialPrefix.concat(eidValue));
+ }
+
/**
* Retrieve name for mapping stored provided mappingContext instance.
*
@@ -95,8 +102,11 @@ public class EidMappingContext implements EidTranslator {
@Nonnull final MappingContext mappingContext) {
final Optional<Mappings> read = mappingContext.read(namingContextIid.child(Mappings.class));
- //don't create artificial name as naming context, to not create reference to some artificial(in vpp non-existing)eid
- checkState(read.isPresent(), "Mapping for eid: %s is not present. But should be", eid);
+ if (!read.isPresent()) {
+ final MappingId artificialMappingId = getMappingId(eid.toString(), artificialPrefix);
+ addEid(artificialMappingId, eid, mappingContext);
+ return artificialMappingId;
+ }
return read.get().getMapping().stream()
.filter(mapping -> compareEids(mapping.getEid(), eid))