From 3003216986296716a9382cce764ec036591fc4ff Mon Sep 17 00:00:00 2001 From: HemaTG Date: Tue, 9 Feb 2016 05:58:55 +0530 Subject: [PATCH] Bug 5264 : TEP delete does not clean up correctly DESCRIPTION : While deleting the TEP the reverse tunnels were not deleted correctly. Change-Id: I64be3c13214add3e5d920ade64d84686a95f8932 Signed-off-by: HemaTG (cherry picked from commit 53f0f6862f62d3862479492c56146ec4d371fa79) --- .../ItmInternalTunnelDeleteWorker.java | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/itm/itm-impl/src/main/java/org/opendaylight/vpnservice/itm/confighelpers/ItmInternalTunnelDeleteWorker.java b/itm/itm-impl/src/main/java/org/opendaylight/vpnservice/itm/confighelpers/ItmInternalTunnelDeleteWorker.java index 096d81cf..fc9a3a72 100644 --- a/itm/itm-impl/src/main/java/org/opendaylight/vpnservice/itm/confighelpers/ItmInternalTunnelDeleteWorker.java +++ b/itm/itm-impl/src/main/java/org/opendaylight/vpnservice/itm/confighelpers/ItmInternalTunnelDeleteWorker.java @@ -61,9 +61,11 @@ public class ItmInternalTunnelDeleteWorker { for (TunnelEndPoints dstTep : dstDpn.getTunnelEndPoints()) { logger.trace("Processing dstTep " + dstTep); if (dstTep.getTransportZone().equals(srcTZone)) { + if( checkIfTrunkExists(dstDpn.getDPNID(), srcDpn.getDPNID(), dataBroker)) { // remove all trunk interfaces logger.trace("Invoking removeTrunkInterface between source TEP {} , Destination TEP {} " ,srcTep , dstTep); removeTrunkInterface(dataBroker, idManagerService, srcTep, dstTep, srcDpn.getDPNID(), dstDpn.getDPNID(), t, futures); + } } } } @@ -96,7 +98,7 @@ public class ItmInternalTunnelDeleteWorker { tnlContainerPath, dataBroker); // remove container if no DPNs are present if (containerOptional.isPresent()) { - DpnEndpoints deps = containerOptional.get(); + DpnEndpoints deps = containerOptional.get(); if (deps.getDPNTEPsInfo() == null || deps.getDPNTEPsInfo().isEmpty()) { logger.trace("Container Removal from DPNTEPSINFO CONFIG DS"); t.delete(LogicalDatastoreType.CONFIGURATION, tnlContainerPath); @@ -122,7 +124,7 @@ public class ItmInternalTunnelDeleteWorker { .getValue()); logger.trace("Removing forward Trunk Interface " + trunkfwdIfName); InstanceIdentifier trunkIdentifier = ItmUtils.buildId(trunkfwdIfName); - logger.debug( " Removing Trunk Interface Name - {} , Id - {} from Config DS {}, {} ", trunkfwdIfName, trunkIdentifier ) ; + logger.debug( " Removing Trunk Interface Name - {} , Id - {} from Config DS ", trunkfwdIfName, trunkIdentifier ) ; t.delete(LogicalDatastoreType.CONFIGURATION, trunkIdentifier); // also update itm-state ds -- Delete the forward tunnel-interface from the tunnel list @@ -138,8 +140,8 @@ public class ItmInternalTunnelDeleteWorker { .getIpv4Address().getValue(), srcTep.getIpAddress().getIpv4Address() .getValue()); logger.trace("Removing Reverse Trunk Interface " + trunkRevIfName); - trunkIdentifier = ItmUtils.buildId(trunkfwdIfName); - logger.debug( " Removing Trunk Interface Name - {} , Id - {} from Config DS {}, {} ", trunkfwdIfName, trunkIdentifier ) ; + trunkIdentifier = ItmUtils.buildId(trunkRevIfName); + logger.debug( " Removing Trunk Interface Name - {} , Id - {} from Config DS ", trunkRevIfName, trunkIdentifier ) ; t.delete(LogicalDatastoreType.CONFIGURATION, trunkIdentifier); // also update itm-state ds -- Delete the reverse tunnel-interface from the tunnel list @@ -151,4 +153,14 @@ public class ItmInternalTunnelDeleteWorker { // Release the Id for the Reverse trunk ItmUtils.releaseId(idManagerService, trunkRevIfName); } + private static boolean checkIfTrunkExists( BigInteger srcDpnId, BigInteger dstDpnId, DataBroker dataBroker) { + boolean existsFlag = false ; + InstanceIdentifier path = InstanceIdentifier.create( + TunnelList.class) + .child(InternalTunnel.class, new InternalTunnelKey( srcDpnId, dstDpnId)); + Optional internalTunnels = ItmUtils.read(LogicalDatastoreType.CONFIGURATION,path, dataBroker) ; + if( internalTunnels.isPresent()) + existsFlag = true ; + return existsFlag ; + } } -- 2.36.6