Fix Metadata Eid processing for LISP 14/64514/1
authorMichal Cmarada <mcmarada@cisco.com>
Thu, 19 Oct 2017 08:52:40 +0000 (10:52 +0200)
committerMichal Cmarada <mcmarada@cisco.com>
Thu, 19 Oct 2017 08:52:40 +0000 (10:52 +0200)
metadata Eid should not be created, metadata ports are local only,
this patch fixes this issue.

Change-Id: I0e9e9b70f970aa5d53c81352768914cf04912c4f
Signed-off-by: Michal Cmarada <mcmarada@cisco.com>
renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/lisp/LispStateManager.java
renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/lisp/util/ConfigManagerHelper.java

index 011b67b819b7d432854ef0f99ac9c3ff73bf977a..4731f727d7726499bc98a5ef16f5ed12ef8ff29f 100644 (file)
@@ -26,6 +26,7 @@ import org.opendaylight.groupbasedpolicy.renderer.vpp.config.ConfigUtil;
 import org.opendaylight.groupbasedpolicy.renderer.vpp.lisp.exception.LispConfigCommandFailedException;
 import org.opendaylight.groupbasedpolicy.renderer.vpp.lisp.exception.LispNotFoundException;
 import org.opendaylight.groupbasedpolicy.renderer.vpp.lisp.flat.overlay.FlatOverlayManager;
+import org.opendaylight.groupbasedpolicy.renderer.vpp.lisp.flat.overlay.StaticRoutingHelper;
 import org.opendaylight.groupbasedpolicy.renderer.vpp.lisp.info.container.EndpointHost;
 import org.opendaylight.groupbasedpolicy.renderer.vpp.lisp.info.container.HostRelatedInfoContainer;
 import org.opendaylight.groupbasedpolicy.renderer.vpp.lisp.info.container.states.LispState;
@@ -112,9 +113,11 @@ public class LispStateManager {
                 String eidMappingName = lispStateHelper.constructEidMappingName(addressEp, interfaceName);
 
                 addVniSpecificConfigurationsIfNeeded(hostname, vni, vrf);
-
-                if (!addEidInEidTable(hostname, eid, eidMappingName)) {
-                    LOG.warn("Failed to add Eid: {}, eidMappingName: {} to table on host: {}", eid, eidMappingName, hostname);
+                if (!ConfigManagerHelper.isMetadataPort(addressEp)) {
+                    if (!addEidInEidTable(hostname, eid, eidMappingName)) {
+                        LOG.warn("Failed to add Eid: {}, eidMappingName: {} to table on host: {}", eid, eidMappingName,
+                            hostname);
+                    }
                 }
             } catch (LispConfigCommandFailedException e) {
                 LOG.warn("Lisp endpoint configuration failed for address endpoint: {}", addressEp);
@@ -310,9 +313,11 @@ public class LispStateManager {
                 long vni = getVni(addressEp.getTenant().getValue());
                 Eid eid = lispStateHelper.getEid(addressEp, vni);
                 String eidMappingName = lispStateHelper.constructEidMappingName(addressEp, interfaceName);
-
-                if (!deleteEidFromLocalEidTableOfHost(hostname, eid, eidMappingName)){
-                    LOG.warn("Failed to delete Eid : {}, eidMappingName: {} on host: {}", eid, eidMappingName, hostname);
+                if (!ConfigManagerHelper.isMetadataPort(addressEp)) {
+                    if (!deleteEidFromLocalEidTableOfHost(hostname, eid, eidMappingName)) {
+                        LOG.warn("Failed to delete Eid : {}, eidMappingName: {} on host: {}", eid, eidMappingName,
+                            hostname);
+                    }
                 }
 
                 Optional<LocalMappings> localMappingsOptional =
index 194dd7df882878b8cd108394731b6adea42abda2..67ad968dac4b06f685a929a355da9403a3794081 100644 (file)
@@ -382,8 +382,8 @@ public class ConfigManagerHelper {
         return addedEp.getRelativeLocations() != null && addedEp.getRelativeLocations().getExternalLocation() != null;
     }
 
-    public boolean isMetadataPort(AddressEndpointWithLocation addressEp) {
-        return hasRelativeLocations(addressEp) || IpAddressUtil.isMetadataIp(getInterfaceIp(addressEp));
+    public static boolean isMetadataPort(AddressEndpointWithLocation addressEp) {
+        return IpAddressUtil.isMetadataIp(getInterfaceIp(addressEp));
     }
 
     public String getGatewayInterfaceName(String gwNamePrefix, String subnetUuid) {