From d4d78fa86e8b36cef4f24449512aabe8687b42cc Mon Sep 17 00:00:00 2001 From: Jan Srnicek Date: Tue, 11 Jul 2017 12:20:06 +0200 Subject: HC2VPP-185 - create artificial mapping if not contained in mapping Change-Id: Ide0dd4581452cbff935df500c73d50afbbecdcbf Signed-off-by: Jan Srnicek (cherry picked from commit 96813eec73e2992c89c013b03f9c1265f91027b6) --- .../fd/hc2vpp/lisp/context/util/EidMappingContext.java | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) 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 9cb489940..25983b1a3 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 @@ -22,8 +22,10 @@ import com.google.common.base.Optional; import io.fd.hc2vpp.lisp.translate.util.EidTranslator; import io.fd.honeycomb.translate.MappingContext; import io.fd.honeycomb.translate.util.RWUtils; + import java.util.stream.Collector; import javax.annotation.Nonnull; + import org.opendaylight.yang.gen.v1.urn.honeycomb.params.xml.ns.yang.eid.mapping.context.rev160801.Contexts; import org.opendaylight.yang.gen.v1.urn.honeycomb.params.xml.ns.yang.eid.mapping.context.rev160801.contexts.EidMappingContextKey; import org.opendaylight.yang.gen.v1.urn.honeycomb.params.xml.ns.yang.eid.mapping.context.rev160801.contexts.eid.mapping.context.Mappings; @@ -72,7 +74,13 @@ public class EidMappingContext implements EidTranslator { @Nonnull final MappingContext mappingContext) { final Optional read = mappingContext.read(namingContextIid.child(Mappings.class)); - if (!read.isPresent()) { + // create artificial mapping if no mapping present or does not contain key + // !read.isPresent() - no mappings are present, + // for example after restart and clean of persistence + // !containsId() - can happen with case described above after first mapping is + // created or if trying to find mapping for some eid that was created by vpp as + // byproduct of other call, or while trying to find mapping for default data + if (!read.isPresent() || !containsId(remoteEid, mappingContext)) { final MappingId artificialMappingId = getMappingId(remoteEid.toString(), artificialPrefix); addEid(artificialMappingId, remoteEid, mappingContext); return artificialMappingId; @@ -102,7 +110,13 @@ public class EidMappingContext implements EidTranslator { @Nonnull final MappingContext mappingContext) { final Optional read = mappingContext.read(namingContextIid.child(Mappings.class)); - if (!read.isPresent()) { + // create artificial mapping if no mapping present or does not contain key + // !read.isPresent() - no mappings are present, + // for example after restart and clean of persistence + // !containsId() - can happen with case described above after first mapping is + // created or if trying to find mapping for some eid that was created by vpp as + // byproduct of other call, or while trying to find mapping for default data + if (!read.isPresent() || !containsId(eid, mappingContext)) { final MappingId artificialMappingId = getMappingId(eid.toString(), artificialPrefix); addEid(artificialMappingId, eid, mappingContext); return artificialMappingId; -- cgit 1.2.3-korg