Replace DataStoreCache with DataObjectCache in itm-impl
[genius.git] / itm / itm-impl / src / main / java / org / opendaylight / genius / itm / confighelpers / ItmTepRemoveWorker.java
index cc553d0ba5d74d204f84179b47c6f9ceb1606b2b..794d4a328ccfb161b494671a34686f0d557d04e3 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016 Ericsson India Global Services Pvt Ltd. and others.  All rights reserved.
+ * Copyright (c) 2016, 2017 Ericsson India Global Services Pvt Ltd. and others.  All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
@@ -8,10 +8,14 @@
 package org.opendaylight.genius.itm.confighelpers;
 
 import com.google.common.util.concurrent.ListenableFuture;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.concurrent.Callable;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
+import org.opendaylight.genius.itm.cache.DPNTEPsInfoCache;
 import org.opendaylight.genius.itm.impl.ItmUtils;
 import org.opendaylight.genius.mdsalutil.interfaces.IMdsalApiManager;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.IdManagerService;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.dpn.endpoints.DPNTEPsInfo;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.dpn.endpoints.dpn.teps.info.TunnelEndPoints;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.dc.gateway.ip.list.DcGatewayIp;
@@ -19,63 +23,68 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.transp
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.Callable;
-
 public class ItmTepRemoveWorker implements Callable<List<ListenableFuture<Void>>> {
-    private static final Logger logger = LoggerFactory.getLogger(ItmTepRemoveWorker.class ) ;
-    private DataBroker dataBroker;
-    private List<DPNTEPsInfo> delDpnList ;
-    private List<DPNTEPsInfo> meshedDpnList ;
-    private IdManagerService idManagerService;
-    private IMdsalApiManager mdsalManager;
-    private List<HwVtep> cfgdHwVteps;
-    private TransportZone originalTZone;
+
+    private static final Logger LOG = LoggerFactory.getLogger(ItmTepRemoveWorker.class);
+
+    private final DataBroker dataBroker;
+    private final List<DPNTEPsInfo> delDpnList ;
+    private Collection<DPNTEPsInfo> meshedDpnList ;
+    private final IMdsalApiManager mdsalManager;
+    private final List<HwVtep> cfgdHwVteps;
+    private final TransportZone originalTZone;
+    private final ItmInternalTunnelDeleteWorker itmInternalTunnelDeleteWorker;
+    private final DPNTEPsInfoCache dpnTEPsInfoCache;
 
     public ItmTepRemoveWorker(List<DPNTEPsInfo> delDpnList, List<HwVtep> delHwList, TransportZone originalTZone,
-            DataBroker broker, IdManagerService idManagerService, IMdsalApiManager mdsalManager) {
+            DataBroker broker, IMdsalApiManager mdsalManager,
+            ItmInternalTunnelDeleteWorker itmInternalTunnelDeleteWorker, DPNTEPsInfoCache dpnTEPsInfoCache) {
         this.delDpnList = delDpnList;
         this.dataBroker = broker;
-        this.idManagerService = idManagerService;
         this.mdsalManager = mdsalManager;
         this.cfgdHwVteps = delHwList;
         this.originalTZone = originalTZone;
-        logger.trace("ItmTepRemoveWorker initialized with  DpnList {}",delDpnList );
-        logger.trace("ItmTepRemoveWorker initialized with  cfgdHwTeps {}",delHwList );
+        this.itmInternalTunnelDeleteWorker = itmInternalTunnelDeleteWorker;
+        this.dpnTEPsInfoCache = dpnTEPsInfoCache;
+        LOG.trace("ItmTepRemoveWorker initialized with  DpnList {}", delDpnList);
+        LOG.trace("ItmTepRemoveWorker initialized with  cfgdHwTeps {}", delHwList);
     }
 
     @Override
-    public List<ListenableFuture<Void>> call() throws Exception {
+    public List<ListenableFuture<Void>> call() {
         List<ListenableFuture<Void>> futures = new ArrayList<>() ;
-        this.meshedDpnList = ItmUtils.getTunnelMeshInfo(dataBroker) ;
-        futures.addAll( ItmInternalTunnelDeleteWorker.deleteTunnels(dataBroker, idManagerService, mdsalManager, delDpnList, meshedDpnList));
-        logger.debug("Invoking Internal Tunnel delete method with DpnList to be deleted {} ; Meshed DpnList {} ",delDpnList, meshedDpnList );
+        this.meshedDpnList = dpnTEPsInfoCache.getAllPresent();
+        futures.addAll(itmInternalTunnelDeleteWorker.deleteTunnels(mdsalManager, delDpnList,
+                meshedDpnList));
+        LOG.debug("Invoking Internal Tunnel delete method with DpnList to be deleted {} ; Meshed DpnList {} ",
+                delDpnList, meshedDpnList);
         // IF EXTERNAL TUNNELS NEEDS TO BE DELETED, DO IT HERE, IT COULD BE TO DC GATEWAY OR TOR SWITCH
         List<DcGatewayIp> dcGatewayIpList = ItmUtils.getDcGatewayIpList(dataBroker);
-        if(dcGatewayIpList != null && !dcGatewayIpList.isEmpty()){
+        if (dcGatewayIpList != null && !dcGatewayIpList.isEmpty()) {
             List<DPNTEPsInfo>  dpnDeleteList = new ArrayList<>();
-            for( DPNTEPsInfo dpnTEPInfo : delDpnList){
+            for (DPNTEPsInfo dpnTEPInfo : delDpnList) {
                 List<TunnelEndPoints> tunnelEndPointsList = dpnTEPInfo.getTunnelEndPoints();
-                if(tunnelEndPointsList.size() == 1){
+                if (tunnelEndPointsList.size() == 1) {
                     dpnDeleteList.add(dpnTEPInfo);
-                }
-                else{
-                    logger.error("DPNTEPInfo not available in data store for dpnId" + dpnTEPInfo.getDPNID() + ". Unable to delete external tunnel for dpn ");
+                } else {
+                    LOG.error("DPNTEPInfo not available in data store for dpnId {}. Unable to delete external tunnel "
+                            + "for dpn ", dpnTEPInfo.getDPNID());
                 }
             }
-            for(DcGatewayIp dcGatewayIp : dcGatewayIpList){
-                futures.addAll(ItmExternalTunnelDeleteWorker.deleteTunnels(dataBroker, idManagerService,  dpnDeleteList, dcGatewayIp.getIpAddress(), dcGatewayIp.getTunnnelType()));
+            for (DcGatewayIp dcGatewayIp : dcGatewayIpList) {
+                futures.addAll(ItmExternalTunnelDeleteWorker.deleteTunnels(dataBroker,
+                        dpnDeleteList , meshedDpnList, dcGatewayIp.getIpAddress(), dcGatewayIp.getTunnnelType()));
             }
         }
 
-        futures.addAll(ItmExternalTunnelDeleteWorker.deleteHwVtepsTunnels(dataBroker, idManagerService,delDpnList,cfgdHwVteps, this.originalTZone));
+        futures.addAll(ItmExternalTunnelDeleteWorker.deleteHwVtepsTunnels(dataBroker, delDpnList,
+                cfgdHwVteps, this.originalTZone));
         return futures ;
     }
 
     @Override
     public String toString() {
-        return "ItmTepRemoveWorker  { " +
-        "Delete Dpn List : " + delDpnList + " }" ;
+        return "ItmTepRemoveWorker  { "
+                + "Delete Dpn List : " + delDpnList + " }" ;
     }
 }