From: Vishal Thapar Date: Wed, 3 Jun 2015 19:24:18 +0000 (+0530) Subject: Partial Fix for Bug 3428 X-Git-Tag: release/beryllium~116 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=f8491c1dd136f75d119be896e063fcd9f82d41fb;p=vpnservice.git Partial Fix for Bug 3428 This fixes flow delete for tunnel interfaces When interface is deleted we can't read Config DS to get NodeConnector as it is already deleted. This fix adds a new API. Pending: Group entries still not deleted, needs fix in MDSAL Util. Change-Id: Ib82c68518f312b2c169455d85c5afacc82f38cbe Signed-off-by: Vishal Thapar (cherry picked from commit dba7df67fcbe1c7aae2b2503b1811c07c24ad42f) --- diff --git a/interfacemgr/interfacemgr-api/src/main/java/org/opendaylight/vpnservice/interfacemgr/interfaces/IInterfaceManager.java b/interfacemgr/interfacemgr-api/src/main/java/org/opendaylight/vpnservice/interfacemgr/interfaces/IInterfaceManager.java index a0a26d66..0923c934 100644 --- a/interfacemgr/interfacemgr-api/src/main/java/org/opendaylight/vpnservice/interfacemgr/interfaces/IInterfaceManager.java +++ b/interfacemgr/interfacemgr-api/src/main/java/org/opendaylight/vpnservice/interfacemgr/interfaces/IInterfaceManager.java @@ -8,8 +8,9 @@ package org.opendaylight.vpnservice.interfacemgr.interfaces; -import java.math.BigInteger; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface; +import java.math.BigInteger; import java.util.List; import org.opendaylight.vpnservice.mdsalutil.ActionInfo; import org.opendaylight.vpnservice.mdsalutil.MatchInfo; @@ -18,6 +19,7 @@ public interface IInterfaceManager { public Long getPortForInterface(String ifName); public BigInteger getDpnForInterface(String ifName); + public BigInteger getDpnForInterface(Interface intrf); public String getEndpointIpForDpn(BigInteger dpnId); public List getInterfaceIngressRule(String ifName); public List getInterfaceEgressActions(String ifName); diff --git a/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/InterfaceManager.java b/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/InterfaceManager.java index d8f77f42..1543b57a 100644 --- a/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/InterfaceManager.java +++ b/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/InterfaceManager.java @@ -434,15 +434,24 @@ public class InterfaceManager extends AbstractDataChangeListener impl return getPortNumForInterface(iface); } - BigInteger getDpnForInterface(String ifName) { - Interface iface = getInterfaceByIfName(ifName); + + public BigInteger getDpnForInterface(Interface intrf) { try { - NodeConnector port = getNodeConnectorFromDataStore(iface); + NodeConnector port = getNodeConnectorFromDataStore(intrf); //TODO: This should be an MDSAL Util method return new BigInteger(IfmUtil.getDpnFromNodeConnectorId(port.getId())); } catch (NullPointerException e) { - LOG.error("dpn for Interface {} not found", ifName); + LOG.error("dpn for Interface {} not found", intrf.getName(), e); + } + return BigInteger.ZERO; + } + + BigInteger getDpnForInterface(String ifName) { + Interface iface = getInterfaceByIfName(ifName); + if(iface != null) { + return getDpnForInterface(iface); } + LOG.error("Interface {} doesn't exist", ifName); return BigInteger.ZERO; } diff --git a/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/InterfacemgrProvider.java b/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/InterfacemgrProvider.java index b1b65b72..c8166a7a 100644 --- a/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/InterfacemgrProvider.java +++ b/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/InterfacemgrProvider.java @@ -7,6 +7,8 @@ */ package org.opendaylight.vpnservice.interfacemgr; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface; + import java.math.BigInteger; import java.util.List; import java.util.concurrent.ExecutionException; @@ -94,4 +96,10 @@ public class InterfacemgrProvider implements BindingAwareProvider, AutoCloseable public List getInterfaceEgressActions(String ifName) { return interfaceManager.getInterfaceEgressActions(ifName); } + + @Override + public BigInteger getDpnForInterface(Interface intrf) { + // TODO Auto-generated method stub + return interfaceManager.getDpnForInterface(intrf); + } } diff --git a/nexthopmgr/nexthopmgr-impl/src/main/java/org/opendaylight/vpnservice/nexthopmgr/OdlInterfaceChangeListener.java b/nexthopmgr/nexthopmgr-impl/src/main/java/org/opendaylight/vpnservice/nexthopmgr/OdlInterfaceChangeListener.java index bdfd046b..49a7bdbb 100644 --- a/nexthopmgr/nexthopmgr-impl/src/main/java/org/opendaylight/vpnservice/nexthopmgr/OdlInterfaceChangeListener.java +++ b/nexthopmgr/nexthopmgr-impl/src/main/java/org/opendaylight/vpnservice/nexthopmgr/OdlInterfaceChangeListener.java @@ -91,7 +91,7 @@ public class OdlInterfaceChangeListener extends AbstractDataChangeListener