HC2VPP-245 - Local mapping vs Locator set ordering 50/8750/5
authorJan Srnicek <[email protected]>
Wed, 11 Oct 2017 09:38:06 +0000 (11:38 +0200)
committerJan Srnicek <[email protected]>
Thu, 12 Oct 2017 13:16:26 +0000 (13:16 +0000)
LocalMapping must be writen after/deleted before Locator set,
as it has reference to it

Change-Id: I8a7299d25e0fb5c2ffb83a34f478d82b2edfa749
Signed-off-by: Jan Srnicek <[email protected]>
lisp/lisp2vpp/src/main/java/io/fd/hc2vpp/lisp/translate/write/factory/EidTableWriterFactory.java

index 1e0758e..9be3b60 100755 (executable)
@@ -16,6 +16,8 @@
 
 package io.fd.hc2vpp.lisp.translate.write.factory;
 
+import static io.fd.hc2vpp.lisp.translate.write.factory.LocatorSetWriterFactory.LOCATOR_SET_ID;
+
 import com.google.common.collect.ImmutableSet;
 import io.fd.hc2vpp.lisp.translate.AbstractLispInfraFactoryBase;
 import io.fd.hc2vpp.lisp.translate.write.AdjacencyCustomizer;
@@ -84,15 +86,16 @@ public final class EidTableWriterFactory extends AbstractLispInfraFactoryBase im
     private void addLocalMappingSubtree(final ModifiableWriterRegistryBuilder registry) {
         final InstanceIdentifier<LocalMapping> localMappingSubtreeId = InstanceIdentifier.create(LocalMapping.class);
 
+        // LocalMapping must be writen after/deleted before Locator set, as it has reference to it
         final ImmutableSet<InstanceIdentifier<?>> localMappingHandledChildren =
                 ImmutableSet.of(localMappingSubtreeId.child(Eid.class), localMappingSubtreeId.child(HmacKey.class));
-        registry.subtreeAdd(localMappingHandledChildren,
+        registry.subtreeAddAfter(localMappingHandledChildren,
                 new GenericListWriter<>(VRF_SUBTABLE_ID.child(LocalMappings.class).child(LocalMapping.class),
-                        new LocalMappingCustomizer(vppApi, localMappingContext)));
+                        new LocalMappingCustomizer(vppApi, localMappingContext)), LOCATOR_SET_ID);
 
-        registry.subtreeAdd(localMappingHandledChildren,
+        registry.subtreeAddAfter(localMappingHandledChildren,
                 new GenericListWriter<>(BRIDGE_DOMAIN_SUBTABLE_ID.child(LocalMappings.class).child(LocalMapping.class),
-                        new LocalMappingCustomizer(vppApi, localMappingContext)));
+                        new LocalMappingCustomizer(vppApi, localMappingContext)), LOCATOR_SET_ID);
     }
 
     /**