Replace DataStoreCache with DataObjectCache in itm-impl 70/66470/12
authorTom Pantelis <tompantelis@gmail.com>
Thu, 14 Dec 2017 17:48:34 +0000 (12:48 -0500)
committerTom Pantelis <tompantelis@gmail.com>
Mon, 29 Jan 2018 13:13:47 +0000 (08:13 -0500)
There were 4 different caches to convert. 2 of them,
TunnelMonitorParams and TunnelMonitorInterval, are singleton
DataObjects use for global tunnel monitorng configuration.
These seem to be condidates for clustered-app-config however
dynamic updates would restrart the BP container but it doesn't
appear itm-impl is ready for that. So to preserve existing
behavior, they're DataObjectCache instances local to a new
TunnelMonitoringConfig class.

The other 2 caches were replaced by DataObjectCache subclasses,
DPNTEPsInfoCache and TunnelStateCache, and injected where needed.

Change-Id: I4e4ed505fa46a5af05086436a7593d92d2bdb56c
Signed-off-by: Tom Pantelis <tompantelis@gmail.com>
36 files changed:
itm/itm-api/src/main/java/org/opendaylight/genius/itm/api/IITMProvider.java
itm/itm-api/src/main/java/org/opendaylight/genius/itm/globals/ITMConstants.java
itm/itm-impl/pom.xml
itm/itm-impl/src/main/java/org/opendaylight/genius/itm/cache/DPNTEPsInfoCache.java [new file with mode: 0644]
itm/itm-impl/src/main/java/org/opendaylight/genius/itm/cache/TunnelStateCache.java [new file with mode: 0644]
itm/itm-impl/src/main/java/org/opendaylight/genius/itm/cli/TepCommandHelper.java
itm/itm-impl/src/main/java/org/opendaylight/genius/itm/cli/TepShowState.java
itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmExternalTunnelAddWorker.java
itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmExternalTunnelDeleteWorker.java
itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmInternalTunnelAddWorker.java
itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmInternalTunnelDeleteWorker.java
itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmTepAddWorker.java
itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmTepRemoveWorker.java
itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmTunnelStateUpdateHelper.java [deleted file]
itm/itm-impl/src/main/java/org/opendaylight/genius/itm/impl/ITMManager.java [deleted file]
itm/itm-impl/src/main/java/org/opendaylight/genius/itm/impl/ItmProvider.java
itm/itm-impl/src/main/java/org/opendaylight/genius/itm/impl/ItmUtils.java
itm/itm-impl/src/main/java/org/opendaylight/genius/itm/impl/TunnelMonitoringConfig.java [new file with mode: 0644]
itm/itm-impl/src/main/java/org/opendaylight/genius/itm/listeners/InterfaceStateListener.java
itm/itm-impl/src/main/java/org/opendaylight/genius/itm/listeners/TransportZoneListener.java
itm/itm-impl/src/main/java/org/opendaylight/genius/itm/listeners/cache/DpnTepsInfoListener.java [deleted file]
itm/itm-impl/src/main/java/org/opendaylight/genius/itm/listeners/cache/ItmMonitoringIntervalListener.java [deleted file]
itm/itm-impl/src/main/java/org/opendaylight/genius/itm/listeners/cache/ItmMonitoringListener.java [deleted file]
itm/itm-impl/src/main/java/org/opendaylight/genius/itm/listeners/cache/StateTunnelListListener.java [deleted file]
itm/itm-impl/src/main/java/org/opendaylight/genius/itm/rpc/ItmManagerRpcService.java
itm/itm-impl/src/main/resources/org/opendaylight/blueprint/itm.xml
itm/itm-impl/src/test/java/org/opendaylight/genius/itm/impl/ItmExternalTunnelAddTest.java
itm/itm-impl/src/test/java/org/opendaylight/genius/itm/impl/ItmExternalTunnelDeleteTest.java
itm/itm-impl/src/test/java/org/opendaylight/genius/itm/impl/ItmInternalTunnelAddTest.java
itm/itm-impl/src/test/java/org/opendaylight/genius/itm/impl/ItmInternalTunnelDeleteTest.java
itm/itm-impl/src/test/java/org/opendaylight/genius/itm/impl/ItmManagerRpcServiceTest.java
itm/itm-impl/src/test/java/org/opendaylight/genius/itm/impl/ItmProviderTest.java [deleted file]
itm/itm-impl/src/test/java/org/opendaylight/genius/itm/tests/ItmManagerRpcServiceTest.java
itm/itm-impl/src/test/java/org/opendaylight/genius/itm/tests/ItmTepAutoConfigTest.java
itm/itm-impl/src/test/java/org/opendaylight/genius/itm/tests/ItmTest.java
itm/itm-impl/src/test/java/org/opendaylight/genius/itm/tests/ItmTestModule.java

index c4528c901331fd3859b85c9ef70e295790fae4b1..d1407846ceb551cb2c41bca4776f108dc11b7801 100644 (file)
@@ -8,6 +8,7 @@
 package org.opendaylight.genius.itm.api;
 
 import java.math.BigInteger;
+import java.util.Collection;
 import java.util.List;
 import org.apache.felix.service.command.CommandSession;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
@@ -27,7 +28,7 @@ public interface IITMProvider {
 
     void showTeps(CommandSession session);
 
-    void showState(List<StateTunnelList> tunnels, CommandSession session);
+    void showState(Collection<StateTunnelList> tunnels, CommandSession session);
 
     void showCache(String cacheName);
 
index d7ab31c6ee8af04c0731048b6cd56899e6e34ce3..fd47691625acd1db7a72740c3fbb1bfbe320abf4 100644 (file)
@@ -46,12 +46,6 @@ public interface ITMConstants {
     String DEFAULT_TRANSPORT_ZONE = "default-transport-zone";
     Class<? extends TunnelMonitoringTypeBase> DEFAULT_MONITOR_PROTOCOL
             = TunnelMonitoringTypeBfd.class;
-    String ITM_MONIRORING_PARAMS_CACHE_NAME = "ItmMonitoringParamsCache";
-    String TUNNEL_STATE_CACHE_NAME = "ItmTunnelStateCache";
-    // FIXME: the following annotation should be removed once the itm-impl
-    // changes the name
-    @SuppressWarnings("checkstyle:ConstantName")
-    String DPN_TEPs_Info_CACHE_NAME = "ItmDpnTepsInfoCache";
     String INTERNAL_TUNNEL_CACHE_NAME = "InternalTunnelCache";
     String EXTERNAL_TUNNEL_CACHE_NAME = "ExternalTunnelCache";
     String TUNNEL_STATE_UP = "UP";
index 11bdf4fd2724775cb641d4225c15679c9879c32e..c6ab4a25b909b3643b6b1650a22069c64460a5e3 100644 (file)
@@ -150,6 +150,12 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
       <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.opendaylight.infrautils</groupId>
+      <artifactId>caches-test</artifactId>
+      <version>${genius.infrautils.version}</version>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
   <!--Build Dependencies-->
   <build>
diff --git a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/cache/DPNTEPsInfoCache.java b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/cache/DPNTEPsInfoCache.java
new file mode 100644 (file)
index 0000000..bab5525
--- /dev/null
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2017 Inocybe Technologies 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,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.genius.itm.cache;
+
+import javax.inject.Inject;
+import javax.inject.Singleton;
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;
+import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
+import org.opendaylight.genius.mdsalutil.cache.DataObjectCache;
+import org.opendaylight.infrautils.caches.CacheProvider;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.DpnEndpoints;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.dpn.endpoints.DPNTEPsInfo;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+
+/**
+ * Caches DPNTEPsInfo objects.
+ *
+ * @author Thomas Pantelis
+ */
+@SuppressWarnings("checkstyle:AbbreviationAsWordInName")
+@Singleton
+public class DPNTEPsInfoCache extends DataObjectCache<DPNTEPsInfo> {
+
+    @Inject
+    public DPNTEPsInfoCache(DataBroker dataBroker, CacheProvider cacheProvider) {
+        super(DPNTEPsInfo.class, dataBroker, LogicalDatastoreType.CONFIGURATION,
+                InstanceIdentifier.builder(DpnEndpoints.class).child(DPNTEPsInfo.class).build(), cacheProvider);
+    }
+}
diff --git a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/cache/TunnelStateCache.java b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/cache/TunnelStateCache.java
new file mode 100644 (file)
index 0000000..2229752
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2017 Inocybe Technologies 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,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.genius.itm.cache;
+
+import javax.inject.Inject;
+import javax.inject.Singleton;
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;
+import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
+import org.opendaylight.genius.mdsalutil.cache.DataObjectCache;
+import org.opendaylight.infrautils.caches.CacheProvider;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.TunnelsState;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.tunnels_state.StateTunnelList;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+
+/**
+ * Caches StateTunnelList objects.
+ *
+ * @author Thomas Pantelis
+ */
+@Singleton
+public class TunnelStateCache extends DataObjectCache<StateTunnelList> {
+
+    @Inject
+    public TunnelStateCache(DataBroker dataBroker, CacheProvider cacheProvider) {
+        super(StateTunnelList.class, dataBroker, LogicalDatastoreType.OPERATIONAL,
+                InstanceIdentifier.builder(TunnelsState.class).child(StateTunnelList.class).build(), cacheProvider);
+    }
+}
index 2c30963070b01d97d523e11b7bcf59e7b9682d6e..7a7909744e39149f58363422afbe7813141ab9f9 100644 (file)
@@ -703,7 +703,7 @@ public class TepCommandHelper {
     }
 
     @SuppressWarnings("checkstyle:RegexpSinglelineJava")
-    public void showState(List<StateTunnelList> tunnelLists, boolean tunnelMonitorEnabled,
+    public void showState(Collection<StateTunnelList> tunnelLists, boolean tunnelMonitorEnabled,
                           CommandSession session) throws TepException {
         if (tunnelLists == null || tunnelLists.isEmpty()) {
             handleError("No Internal Tunnels Exist", session);
index a5afe4580a3373ba7a9d5aa92f7b165ba016cc00..78f52350e05ccc7c9c381029c3a6508ac8e16a46 100644 (file)
@@ -7,41 +7,33 @@
  */
 package org.opendaylight.genius.itm.cli;
 
-import java.util.ArrayList;
-import java.util.List;
+import java.util.Collection;
 import org.apache.karaf.shell.commands.Command;
 import org.apache.karaf.shell.console.OsgiCommandSupport;
 import org.opendaylight.genius.itm.api.IITMProvider;
-import org.opendaylight.genius.itm.globals.ITMConstants;
-import org.opendaylight.genius.utils.cache.DataStoreCache;
+import org.opendaylight.genius.itm.cache.TunnelStateCache;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.tunnels_state.StateTunnelList;
 
 @Command(scope = "tep", name = "show-state", description = "Monitors tunnel state")
 
 public class TepShowState extends OsgiCommandSupport {
 
-    private IITMProvider itmProvider;
+    private final IITMProvider itmProvider;
+    private final TunnelStateCache tunnelStateCache;
 
-    public void setItmProvider(IITMProvider itmProvider) {
+    public TepShowState(IITMProvider itmProvider, TunnelStateCache tunnelStateCache) {
         this.itmProvider = itmProvider;
+        this.tunnelStateCache = tunnelStateCache;
     }
 
     @Override
     protected Object doExecute() {
-        List<StateTunnelList> tunnels = null ;
-        List<Object> values = null ;
-        values = DataStoreCache.getValues(ITMConstants.TUNNEL_STATE_CACHE_NAME);
-        if (values != null) {
-            tunnels = new ArrayList<>() ;
-            for (Object value : values) {
-                tunnels.add((StateTunnelList)value);
-            }
-        }
-        if (tunnels != null) {
+        Collection<StateTunnelList> tunnels = tunnelStateCache.getAllPresent();
+        if (!tunnels.isEmpty()) {
             itmProvider.showState(tunnels, session);
         } else {
             session.getConsole().println("No Internal Tunnels configured on the switch");
         }
         return null;
     }
-}
\ No newline at end of file
+}
index f27fb49c578bbb2078a26cfe660a246372dd5eb4..7e8d7564efcc537f655631657977cd878209343a 100644 (file)
@@ -11,12 +11,14 @@ import com.google.common.base.Optional;
 import com.google.common.util.concurrent.ListenableFuture;
 import java.math.BigInteger;
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
 import org.apache.commons.net.util.SubnetUtils;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
+import org.opendaylight.genius.itm.cache.DPNTEPsInfoCache;
 import org.opendaylight.genius.itm.globals.ITMConstants;
 import org.opendaylight.genius.itm.impl.ItmUtils;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
@@ -45,19 +47,21 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public final class ItmExternalTunnelAddWorker {
+public class ItmExternalTunnelAddWorker {
     private static final Logger LOG = LoggerFactory.getLogger(ItmExternalTunnelAddWorker.class);
 
-    private static Integer monitorInterval;
-    private static Class<? extends TunnelMonitoringTypeBase> monitorProtocol;
+    private final DataBroker dataBroker;
+    private final ItmConfig itmConfig;
+    private final DPNTEPsInfoCache dpnTEPsInfoCache;
 
-    private ItmExternalTunnelAddWorker() { }
+    public ItmExternalTunnelAddWorker(DataBroker dataBroker, ItmConfig itmConfig, DPNTEPsInfoCache dpnTEPsInfoCache) {
+        this.dataBroker = dataBroker;
+        this.itmConfig = itmConfig;
+        this.dpnTEPsInfoCache = dpnTEPsInfoCache;
+    }
 
-    public static List<ListenableFuture<Void>> buildTunnelsToExternalEndPoint(DataBroker dataBroker,
-                                                                              List<DPNTEPsInfo> cfgDpnList,
-                                                                              IpAddress extIp,
-                                                                              Class<? extends TunnelTypeBase> tunType,
-                                                                              ItmConfig itmConfig) {
+    public List<ListenableFuture<Void>> buildTunnelsToExternalEndPoint(Collection<DPNTEPsInfo> cfgDpnList,
+            IpAddress extIp, Class<? extends TunnelTypeBase> tunType) {
         if (null != cfgDpnList) {
             WriteTransaction transaction = dataBroker.newWriteOnlyTransaction();
             for (DPNTEPsInfo teps : cfgDpnList) {
@@ -103,31 +107,26 @@ public final class ItmExternalTunnelAddWorker {
         return Collections.emptyList();
     }
 
-    public static List<ListenableFuture<Void>> buildTunnelsFromDpnToExternalEndPoint(DataBroker dataBroker,
-                                                                                     List<BigInteger> dpnId,
-                                                                                     IpAddress extIp,
-                                                                                     Class<? extends TunnelTypeBase>
-                                                                                             tunType,
-                                                                                     ItmConfig itmConfig) {
-        List<DPNTEPsInfo> cfgDpnList = dpnId == null ? ItmUtils.getTunnelMeshInfo(dataBroker)
-                        : ItmUtils.getDpnTepListFromDpnId(dataBroker, dpnId);
-        return buildTunnelsToExternalEndPoint(dataBroker, cfgDpnList, extIp, tunType, itmConfig);
+    public List<ListenableFuture<Void>> buildTunnelsFromDpnToExternalEndPoint(List<BigInteger> dpnId, IpAddress extIp,
+            Class<? extends TunnelTypeBase> tunType) {
+        Collection<DPNTEPsInfo> cfgDpnList = dpnId == null ? dpnTEPsInfoCache.getAllPresent()
+                        : ItmUtils.getDpnTepListFromDpnId(dpnTEPsInfoCache, dpnId);
+        return buildTunnelsToExternalEndPoint(cfgDpnList, extIp, tunType);
     }
 
-    public static List<ListenableFuture<Void>> buildHwVtepsTunnels(DataBroker dataBroker,
-                                                                   List<DPNTEPsInfo> cfgdDpnList,
-                                                                   List<HwVtep> cfgdHwVteps) {
+    public List<ListenableFuture<Void>> buildHwVtepsTunnels(List<DPNTEPsInfo> cfgdDpnList, List<HwVtep> cfgdHwVteps) {
+        Integer monitorInterval = ITMConstants.BFD_DEFAULT_MONITOR_INTERVAL;
+        Class<? extends TunnelMonitoringTypeBase> monitorProtocol = ITMConstants.DEFAULT_MONITOR_PROTOCOL;
+
         List<ListenableFuture<Void>> futures = new ArrayList<>();
         WriteTransaction writeTransaction = dataBroker.newWriteOnlyTransaction();
-        monitorInterval = ITMConstants.BFD_DEFAULT_MONITOR_INTERVAL;
-        monitorProtocol = ITMConstants.DEFAULT_MONITOR_PROTOCOL;
         if (null != cfgdDpnList && !cfgdDpnList.isEmpty()) {
             LOG.trace("calling tunnels from css {}",cfgdDpnList);
-            tunnelsFromCSS(cfgdDpnList, writeTransaction , dataBroker);
+            tunnelsFromCSS(cfgdDpnList, writeTransaction, monitorInterval, monitorProtocol);
         }
         if (null != cfgdHwVteps && !cfgdHwVteps.isEmpty()) {
             LOG.trace("calling tunnels from hwTep {}",cfgdHwVteps);
-            tunnelsFromhWVtep(cfgdHwVteps, writeTransaction, dataBroker);
+            tunnelsFromhWVtep(cfgdHwVteps, writeTransaction, monitorInterval, monitorProtocol);
         }
 
         if (cfgdDpnList != null && !cfgdDpnList.isEmpty() || cfgdHwVteps != null && !cfgdHwVteps.isEmpty()) {
@@ -136,24 +135,24 @@ public final class ItmExternalTunnelAddWorker {
         return futures;
     }
 
-    private static void tunnelsFromCSS(List<DPNTEPsInfo> cfgdDpnList,
-                                       WriteTransaction transaction,
-                                       DataBroker dataBroker) {
+    private void tunnelsFromCSS(List<DPNTEPsInfo> cfgdDpnList, WriteTransaction transaction, Integer monitorInterval,
+            Class<? extends TunnelMonitoringTypeBase> monitorProtocol) {
         for (DPNTEPsInfo dpn : cfgdDpnList) {
             LOG.trace("processing dpn {}" , dpn);
             if (dpn.getTunnelEndPoints() != null && !dpn.getTunnelEndPoints().isEmpty()) {
                 for (TunnelEndPoints tep : dpn.getTunnelEndPoints()) {
                     for (TzMembership zone: tep.getTzMembership()) {
                         createTunnelsFromOVSinTransportZone(zone.getZoneName(), dpn, tep,
-                                transaction, dataBroker);
+                                transaction, monitorInterval, monitorProtocol);
                     }
                 }
             }
         }
     }
 
-    private static void createTunnelsFromOVSinTransportZone(String zoneName, DPNTEPsInfo dpn, TunnelEndPoints tep,
-                                                            WriteTransaction transaction, DataBroker dataBroker) {
+    private void createTunnelsFromOVSinTransportZone(String zoneName, DPNTEPsInfo dpn, TunnelEndPoints tep,
+            WriteTransaction transaction, Integer monitorInterval,
+            Class<? extends TunnelMonitoringTypeBase> monitorProtocol) {
         InstanceIdentifier<TransportZone> tzonePath = InstanceIdentifier.builder(TransportZones.class)
                 .child(TransportZone.class, new TransportZoneKey(zoneName)).build();
         Optional<TransportZone> transportZoneOptional = ItmUtils.read(LogicalDatastoreType.CONFIGURATION,
@@ -176,7 +175,8 @@ public final class ItmExternalTunnelAddWorker {
                             if (!wireUp(dpn.getDPNID(), tep.getPortname(), sub.getVlanId(),
                                     tep.getIpAddress(), useOfTunnel, nodeId, hwVtepDS.getIpAddress(),
                                     tep.getSubnetMask(), sub.getGatewayIp(), sub.getPrefix(),
-                                    transportZone.getTunnelType(), false, transaction)) {
+                                    transportZone.getTunnelType(), false, monitorInterval, monitorProtocol,
+                                    transaction)) {
                                 LOG.error("Unable to build tunnel {} -- {}",
                                         tep.getIpAddress(), hwVtepDS.getIpAddress());
                             }
@@ -184,8 +184,8 @@ public final class ItmExternalTunnelAddWorker {
                             LOG.trace("wire up {} and {}", hwVtepDS,tep);
                             if (!wireUp(hwVtepDS.getTopologyId(), hwVtepDS.getNodeId(), hwVtepDS.getIpAddress(),
                                     cssID, tep.getIpAddress(), sub.getPrefix(), sub.getGatewayIp(),
-                                    tep.getSubnetMask(), transportZone.getTunnelType(), false,
-                                    transaction)) {
+                                    tep.getSubnetMask(), transportZone.getTunnelType(), false, monitorInterval,
+                                    monitorProtocol, transaction)) {
                                 LOG.error("Unable to build tunnel {} -- {}",
                                         hwVtepDS.getIpAddress(), tep.getIpAddress());
                             }
@@ -197,9 +197,8 @@ public final class ItmExternalTunnelAddWorker {
         }
     }
 
-    private static void tunnelsFromhWVtep(List<HwVtep> cfgdHwVteps,
-                                          WriteTransaction transaction,
-                                          DataBroker dataBroker) {
+    private void tunnelsFromhWVtep(List<HwVtep> cfgdHwVteps, WriteTransaction transaction,
+            Integer monitorInterval, Class<? extends TunnelMonitoringTypeBase> monitorProtocol) {
         for (HwVtep hwTep : cfgdHwVteps) {
             InstanceIdentifier<TransportZone> tzonePath = InstanceIdentifier.builder(TransportZones.class)
                     .child(TransportZone.class, new TransportZoneKey(hwTep.getTransportZone())).build();
@@ -219,8 +218,8 @@ public final class ItmExternalTunnelAddWorker {
                                 LOG.trace("wire up {} and {}",hwTep, hwVtepDS);
                                 if (!wireUp(hwTep.getTopoId(), hwTep.getNodeId(), hwTep.getHwIp(),
                                         hwVtepDS.getNodeId(), hwVtepDS.getIpAddress(), hwTep.getIpPrefix(),
-                                        hwTep.getGatewayIP(), sub.getPrefix(), tunType,false,
-                                        transaction)) {
+                                        hwTep.getGatewayIP(), sub.getPrefix(), tunType, false,
+                                        monitorInterval, monitorProtocol, transaction)) {
                                     LOG.error("Unable to build tunnel {} -- {}",
                                             hwTep.getHwIp(), hwVtepDS.getIpAddress());
                                 }
@@ -228,8 +227,8 @@ public final class ItmExternalTunnelAddWorker {
                                 LOG.trace("wire up {} and {}", hwVtepDS,hwTep);
                                 if (!wireUp(hwTep.getTopoId(), hwVtepDS.getNodeId(), hwVtepDS.getIpAddress(),
                                         hwTep.getNodeId(), hwTep.getHwIp(), sub.getPrefix(), sub.getGatewayIp(),
-                                        hwTep.getIpPrefix(), tunType, false,
-                                        transaction)) {
+                                        hwTep.getIpPrefix(), tunType, false, monitorInterval,
+                                        monitorProtocol, transaction)) {
                                     LOG.error("Unable to build tunnel {} -- {}",
                                             hwVtepDS.getIpAddress(), hwTep.getHwIp());
                                 }
@@ -245,7 +244,7 @@ public final class ItmExternalTunnelAddWorker {
                                 LOG.trace("wire up {} and {}",hwTep, vtep);
                                 if (!wireUp(hwTep.getTopoId(), hwTep.getNodeId(), hwTep.getHwIp(), cssID,
                                         vtep.getIpAddress(), hwTep.getIpPrefix(), hwTep.getGatewayIP(),
-                                        sub.getPrefix(), tunType,false,
+                                        sub.getPrefix(), tunType,false, monitorInterval, monitorProtocol,
                                         transaction)) {
                                     LOG.error("Unable to build tunnel {} -- {}",
                                             hwTep.getHwIp(), vtep.getIpAddress());
@@ -255,7 +254,8 @@ public final class ItmExternalTunnelAddWorker {
                                 boolean useOfTunnel = ItmUtils.falseIfNull(vtep.isOptionOfTunnel());
                                 if (!wireUp(vtep.getDpnId(), vtep.getPortname(), sub.getVlanId(), vtep.getIpAddress(),
                                         useOfTunnel, hwTep.getNodeId(),hwTep.getHwIp(),sub.getPrefix(),
-                                        sub.getGatewayIp(), hwTep.getIpPrefix(), tunType, false, transaction)) {
+                                        sub.getGatewayIp(),hwTep.getIpPrefix(), tunType, false,
+                                        monitorInterval, monitorProtocol, transaction)) {
                                     //do nothing
                                 }
                             }
@@ -268,10 +268,10 @@ public final class ItmExternalTunnelAddWorker {
     }
 
     //for tunnels from TOR device
-    private static boolean wireUp(String topoId, String srcNodeid, IpAddress srcIp, String dstNodeId, IpAddress dstIp,
-                                  IpPrefix srcSubnet, IpAddress gwIp, IpPrefix dstSubnet,
-                                  Class<? extends TunnelTypeBase> tunType, Boolean monitorEnabled,
-                                  WriteTransaction transaction) {
+    private boolean wireUp(String topoId, String srcNodeid, IpAddress srcIp, String dstNodeId, IpAddress dstIp,
+            IpPrefix srcSubnet, IpAddress gwIp, IpPrefix dstSubnet, Class<? extends TunnelTypeBase> tunType,
+            Boolean monitorEnabled, Integer monitorInterval, Class<? extends TunnelMonitoringTypeBase> monitorProtocol,
+            WriteTransaction transaction) {
         IpAddress gatewayIpObj = new IpAddress("0.0.0.0".toCharArray());
         IpAddress gwyIpAddress = srcSubnet.equals(dstSubnet) ? gatewayIpObj : gwIp;
         String parentIf =  ItmUtils.getHwParentIf(topoId, srcNodeid);
@@ -301,10 +301,10 @@ public final class ItmExternalTunnelAddWorker {
     }
 
     //for tunnels from OVS
-    private static boolean wireUp(BigInteger dpnId, String portname, Integer vlanId, IpAddress srcIp,
-                                  Boolean remoteIpFlow, String dstNodeId, IpAddress dstIp, IpPrefix srcSubnet,
-                                  IpAddress gwIp, IpPrefix dstSubnet, Class<? extends TunnelTypeBase> tunType,
-                                  Boolean monitorEnabled, WriteTransaction transaction) {
+    private boolean wireUp(BigInteger dpnId, String portname, Integer vlanId, IpAddress srcIp, Boolean remoteIpFlow,
+            String dstNodeId, IpAddress dstIp, IpPrefix srcSubnet, IpAddress gwIp, IpPrefix dstSubnet,
+            Class<? extends TunnelTypeBase> tunType, Boolean monitorEnabled, Integer monitorInterval,
+            Class<? extends TunnelMonitoringTypeBase> monitorProtocol, WriteTransaction transaction) {
         IpAddress gatewayIpObj = new IpAddress("0.0.0.0".toCharArray());
         IpAddress gwyIpAddress = srcSubnet.equals(dstSubnet) ? gatewayIpObj : gwIp;
         String parentIf = ItmUtils.getInterfaceName(dpnId, portname, vlanId);
index 5fa59928c8d72832daf87c3291b20cbaf1218861..6cff0ff3ca427487485addc7492d9325ec662f6f 100644 (file)
@@ -11,6 +11,7 @@ import com.google.common.base.Optional;
 import com.google.common.util.concurrent.ListenableFuture;
 import java.math.BigInteger;
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
@@ -42,7 +43,7 @@ public final class ItmExternalTunnelDeleteWorker {
     private ItmExternalTunnelDeleteWorker() { }
 
     public static List<ListenableFuture<Void>> deleteTunnels(DataBroker dataBroker,
-            List<DPNTEPsInfo> dpnTepsList, List<DPNTEPsInfo> meshedDpnList, IpAddress extIp,
+            Collection<DPNTEPsInfo> dpnTepsList, Collection<DPNTEPsInfo> meshedDpnList, IpAddress extIp,
             Class<? extends TunnelTypeBase> tunType) {
         LOG.trace(" Delete Tunnels towards DC Gateway with Ip  {}", extIp);
 
@@ -82,7 +83,7 @@ public final class ItmExternalTunnelDeleteWorker {
     }
 
     public static List<ListenableFuture<Void>> deleteTunnels(DataBroker dataBroker,
-            List<DPNTEPsInfo> dpnTepsList, IpAddress extIp, Class<? extends TunnelTypeBase> tunType) {
+            Collection<DPNTEPsInfo> dpnTepsList, IpAddress extIp, Class<? extends TunnelTypeBase> tunType) {
         LOG.trace(" Delete Tunnels towards DC Gateway with Ip  {}", extIp);
 
         if (dpnTepsList == null || dpnTepsList.isEmpty()) {
index cdf632f529c36fd01a2a13b88f4176940611ba6b..e30b39e6790d14bad1c54f1ef4c70d212fe7c75a 100644 (file)
@@ -12,6 +12,7 @@ import static java.util.Collections.singletonList;
 import com.google.common.util.concurrent.ListenableFuture;
 import java.math.BigInteger;
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
 import java.util.concurrent.Callable;
@@ -22,6 +23,7 @@ import org.opendaylight.genius.infra.ManagedNewTransactionRunner;
 import org.opendaylight.genius.infra.ManagedNewTransactionRunnerImpl;
 import org.opendaylight.genius.itm.impl.ITMBatchingUtils;
 import org.opendaylight.genius.itm.impl.ItmUtils;
+import org.opendaylight.genius.itm.impl.TunnelMonitoringConfig;
 import org.opendaylight.genius.mdsalutil.interfaces.IMdsalApiManager;
 import org.opendaylight.infrautils.jobcoordinator.JobCoordinator;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
@@ -47,27 +49,30 @@ import org.slf4j.LoggerFactory;
 public final class ItmInternalTunnelAddWorker {
 
     private static final Logger LOG = LoggerFactory.getLogger(ItmInternalTunnelAddWorker.class) ;
-    private static Boolean monitorEnabled;
-    private static Integer monitorInterval;
     private static ItmConfig itmCfg;
-    private static Class<? extends TunnelMonitoringTypeBase> monitorProtocol;
+
+    private final Integer monitorInterval;
+    private final boolean isTunnelMonitoringEnabled;
+    private final Class<? extends TunnelMonitoringTypeBase> monitorProtocol;
 
     private final DataBroker dataBroker;
     private final ManagedNewTransactionRunner txRunner;
     private final JobCoordinator jobCoordinator;
 
-    public ItmInternalTunnelAddWorker(DataBroker dataBroker, JobCoordinator jobCoordinator) {
+    public ItmInternalTunnelAddWorker(DataBroker dataBroker, JobCoordinator jobCoordinator,
+            TunnelMonitoringConfig tunnelMonitoringConfig) {
         this.dataBroker = dataBroker;
         this.txRunner = new ManagedNewTransactionRunnerImpl(dataBroker);
         this.jobCoordinator = jobCoordinator;
+
+        isTunnelMonitoringEnabled = tunnelMonitoringConfig.isTunnelMonitoringEnabled();
+        monitorProtocol = tunnelMonitoringConfig.getMonitorProtocol();
+        monitorInterval = Integer.valueOf(tunnelMonitoringConfig.getMonitorInterval());
     }
 
     public List<ListenableFuture<Void>> buildAllTunnels(IMdsalApiManager mdsalManager, List<DPNTEPsInfo> cfgdDpnList,
-                                                        List<DPNTEPsInfo> meshedDpnList, ItmConfig itmConfig) {
+                                                        Collection<DPNTEPsInfo> meshedDpnList, ItmConfig itmConfig) {
         LOG.trace("Building tunnels with DPN List {} " , cfgdDpnList);
-        monitorInterval = ItmUtils.determineMonitorInterval(dataBroker);
-        monitorProtocol = ItmUtils.determineMonitorProtocol(dataBroker);
-        monitorEnabled = ItmUtils.readMonitoringStateFromCache(dataBroker);
         itmCfg = itmConfig;
         if (null == cfgdDpnList || cfgdDpnList.isEmpty()) {
             LOG.error(" Build Tunnels was invoked with empty list");
@@ -96,7 +101,7 @@ public final class ItmInternalTunnelAddWorker {
         ITMBatchingUtils.update(dep, tnlBuilder, ITMBatchingUtils.EntityType.DEFAULT_CONFIG);
     }
 
-    private void buildTunnelFrom(DPNTEPsInfo srcDpn, List<DPNTEPsInfo> meshedDpnList,
+    private void buildTunnelFrom(DPNTEPsInfo srcDpn, Collection<DPNTEPsInfo> meshedDpnList,
                                  IMdsalApiManager mdsalManager, WriteTransaction transaction) {
         LOG.trace("Building tunnels from DPN {} " , srcDpn);
         if (null == meshedDpnList || meshedDpnList.isEmpty()) {
@@ -179,9 +184,8 @@ public final class ItmInternalTunnelAddWorker {
         return true;
     }
 
-    private static void createTunnelInterface(TunnelEndPoints srcte, TunnelEndPoints dstte,
-                                              BigInteger srcDpnId, Class<? extends TunnelTypeBase> tunType,
-                                              String trunkInterfaceName, String parentInterfaceName) {
+    private void createTunnelInterface(TunnelEndPoints srcte, TunnelEndPoints dstte, BigInteger srcDpnId,
+            Class<? extends TunnelTypeBase> tunType, String trunkInterfaceName, String parentInterfaceName) {
         String gateway = srcte.getIpAddress().getIpv4Address() != null ? "0.0.0.0" : "::";
         IpAddress gatewayIpObj = new IpAddress(gateway.toCharArray());
         IpAddress gwyIpAddress =
@@ -192,7 +196,8 @@ public final class ItmInternalTunnelAddWorker {
         boolean useOfTunnel = ItmUtils.falseIfNull(srcte.isOptionOfTunnel());
 
         List<TunnelOptions> tunOptions = ItmUtils.buildTunnelOptions(srcte, itmCfg);
-        Boolean isMonitorEnabled = tunType.isAssignableFrom(TunnelTypeLogicalGroup.class) ? false : monitorEnabled;
+        Boolean isMonitorEnabled = tunType.isAssignableFrom(TunnelTypeLogicalGroup.class) ? false
+                : isTunnelMonitoringEnabled;
         Interface iface = ItmUtils.buildTunnelInterface(srcDpnId, trunkInterfaceName,
                 String.format("%s %s",ItmUtils.convertTunnelTypetoString(tunType), "Trunk Interface"),
                 true, tunType, srcte.getIpAddress(), dstte.getIpAddress(), gwyIpAddress, srcte.getVLANID(), true,
index 79d8eefa9974bf9f5fcdb61d61d9b41635b788b0..6d65a066096574ed7ab5035ffa0ecd6e93f439b7 100644 (file)
@@ -16,13 +16,13 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
 import java.util.concurrent.Callable;
-
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.genius.infra.ManagedNewTransactionRunner;
 import org.opendaylight.genius.infra.ManagedNewTransactionRunnerImpl;
 import org.opendaylight.genius.itm.impl.ItmUtils;
+import org.opendaylight.genius.itm.impl.TunnelMonitoringConfig;
 import org.opendaylight.genius.mdsalutil.interfaces.IMdsalApiManager;
 import org.opendaylight.infrautils.jobcoordinator.JobCoordinator;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface;
@@ -50,16 +50,19 @@ public class ItmInternalTunnelDeleteWorker {
     private final DataBroker dataBroker;
     private final ManagedNewTransactionRunner txRunner;
     private final JobCoordinator jobCoordinator;
+    private final TunnelMonitoringConfig tunnelMonitoringConfig;
 
-    public ItmInternalTunnelDeleteWorker(DataBroker dataBroker, JobCoordinator jobCoordinator) {
+    public ItmInternalTunnelDeleteWorker(DataBroker dataBroker, JobCoordinator jobCoordinator,
+            TunnelMonitoringConfig tunnelMonitoringConfig) {
         this.dataBroker = dataBroker;
         this.txRunner = new ManagedNewTransactionRunnerImpl(dataBroker);
         this.jobCoordinator = jobCoordinator;
+        this.tunnelMonitoringConfig = tunnelMonitoringConfig;
     }
 
     @SuppressWarnings("checkstyle:IllegalCatch")
-    public List<ListenableFuture<Void>> deleteTunnels(IMdsalApiManager mdsalManager, List<DPNTEPsInfo> dpnTepsList,
-                                                      List<DPNTEPsInfo> meshedDpnList) {
+    public List<ListenableFuture<Void>> deleteTunnels(IMdsalApiManager mdsalManager,
+            Collection<DPNTEPsInfo> dpnTepsList, Collection<DPNTEPsInfo> meshedDpnList) {
         LOG.trace("TEPs to be deleted {} " , dpnTepsList);
         return Collections.singletonList(txRunner.callWithNewWriteOnlyTransactionAndSubmit(writeTransaction -> {
             if (dpnTepsList == null || dpnTepsList.size() == 0) {
@@ -152,7 +155,7 @@ public class ItmInternalTunnelDeleteWorker {
                         // remove the tep from the cache
                         meshedEndPtCache.remove(srcTep);
                         Class<? extends TunnelMonitoringTypeBase> monitorProtocol =
-                                ItmUtils.determineMonitorProtocol(dataBroker);
+                                tunnelMonitoringConfig.getMonitorProtocol();
                         InstanceIdentifier<DPNTEPsInfo> dpnPath =
                                 InstanceIdentifier.builder(DpnEndpoints.class).child(DPNTEPsInfo.class, srcDpn.getKey())
                                         .build();
index e27bd8f274093c6adae0c48f001b60ba1237d03b..c5df528b793cb3a8774523be2b63f71bef9098ce 100644 (file)
@@ -9,9 +9,11 @@ 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.itm.config.rev160406.ItmConfig;
@@ -25,22 +27,26 @@ public class ItmTepAddWorker implements Callable<List<ListenableFuture<Void>>> {
     private static final Logger LOG = LoggerFactory.getLogger(ItmTepAddWorker.class);
 
     private final DataBroker dataBroker;
-    private List<DPNTEPsInfo> meshedDpnList;
+    private Collection<DPNTEPsInfo> meshedDpnList;
     private final List<DPNTEPsInfo> cfgdDpnList ;
     private final IMdsalApiManager mdsalManager;
     private final List<HwVtep> cfgdHwVteps;
     private final ItmConfig itmConfig;
     private final ItmInternalTunnelAddWorker itmInternalTunnelAddWorker;
+    private final ItmExternalTunnelAddWorker externalTunnelAddWorker;
+    private final DPNTEPsInfoCache dpnTEPsInfoCache;
 
     public ItmTepAddWorker(List<DPNTEPsInfo> cfgdDpnList, List<HwVtep> hwVtepList, DataBroker broker,
-                           IMdsalApiManager mdsalManager,
-                           ItmConfig itmConfig, ItmInternalTunnelAddWorker itmInternalTunnelAddWorker) {
+            IMdsalApiManager mdsalManager, ItmConfig itmConfig, ItmInternalTunnelAddWorker itmInternalTunnelAddWorker,
+            ItmExternalTunnelAddWorker externalTunnelAddWorker, DPNTEPsInfoCache dpnTEPsInfoCache) {
         this.cfgdDpnList = cfgdDpnList ;
         this.dataBroker = broker ;
         this.mdsalManager = mdsalManager;
         this.cfgdHwVteps = hwVtepList;
         this.itmConfig = itmConfig;
         this.itmInternalTunnelAddWorker = itmInternalTunnelAddWorker;
+        this.externalTunnelAddWorker = externalTunnelAddWorker;
+        this.dpnTEPsInfoCache = dpnTEPsInfoCache;
         LOG.trace("ItmTepAddWorker initialized with  DpnList {}",cfgdDpnList);
         LOG.trace("ItmTepAddWorker initialized with  hwvteplist {}",hwVtepList);
     }
@@ -48,7 +54,7 @@ public class ItmTepAddWorker implements Callable<List<ListenableFuture<Void>>> {
     @Override
     public List<ListenableFuture<Void>> call() {
         List<ListenableFuture<Void>> futures = new ArrayList<>() ;
-        this.meshedDpnList = ItmUtils.getTunnelMeshInfo(dataBroker) ;
+        this.meshedDpnList = dpnTEPsInfoCache.getAllPresent();
         LOG.debug("Invoking Internal Tunnel build method with Configured DpnList {} ; Meshed DpnList {} ",
                 cfgdDpnList, meshedDpnList);
         futures.addAll(itmInternalTunnelAddWorker.buildAllTunnels(mdsalManager, cfgdDpnList,
@@ -57,14 +63,13 @@ public class ItmTepAddWorker implements Callable<List<ListenableFuture<Void>>> {
         List<DcGatewayIp> dcGatewayIpList = ItmUtils.getDcGatewayIpList(dataBroker);
         if (dcGatewayIpList != null && !dcGatewayIpList.isEmpty()) {
             for (DcGatewayIp dcGatewayIp : dcGatewayIpList) {
-                futures.addAll(ItmExternalTunnelAddWorker.buildTunnelsToExternalEndPoint(dataBroker,
-                        cfgdDpnList, dcGatewayIp.getIpAddress(), dcGatewayIp.getTunnnelType(), itmConfig));
+                futures.addAll(externalTunnelAddWorker.buildTunnelsToExternalEndPoint(cfgdDpnList,
+                        dcGatewayIp.getIpAddress(), dcGatewayIp.getTunnnelType()));
             }
         }
         //futures.addAll(ItmExternalTunnelAddWorker.buildTunnelsToExternalEndPoint(dataBroker,meshedDpnList, extIp) ;
         LOG.debug("invoking build hwVtepTunnels with hwVteplist {}", cfgdHwVteps);
-        futures.addAll(ItmExternalTunnelAddWorker.buildHwVtepsTunnels(dataBroker,
-                cfgdDpnList,cfgdHwVteps));
+        futures.addAll(externalTunnelAddWorker.buildHwVtepsTunnels(cfgdDpnList,cfgdHwVteps));
         return futures ;
     }
 
index 5fe82db01d65987f5653b979fea17c4bbc7e1174..794d4a328ccfb161b494671a34686f0d557d04e3 100644 (file)
@@ -9,9 +9,11 @@ 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.itm.op.rev160406.dpn.endpoints.DPNTEPsInfo;
@@ -27,21 +29,23 @@ public class ItmTepRemoveWorker implements Callable<List<ListenableFuture<Void>>
 
     private final DataBroker dataBroker;
     private final List<DPNTEPsInfo> delDpnList ;
-    private List<DPNTEPsInfo> meshedDpnList ;
+    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, IMdsalApiManager mdsalManager,
-                              ItmInternalTunnelDeleteWorker itmInternalTunnelDeleteWorker) {
+            DataBroker broker, IMdsalApiManager mdsalManager,
+            ItmInternalTunnelDeleteWorker itmInternalTunnelDeleteWorker, DPNTEPsInfoCache dpnTEPsInfoCache) {
         this.delDpnList = delDpnList;
         this.dataBroker = broker;
         this.mdsalManager = mdsalManager;
         this.cfgdHwVteps = delHwList;
         this.originalTZone = originalTZone;
         this.itmInternalTunnelDeleteWorker = itmInternalTunnelDeleteWorker;
+        this.dpnTEPsInfoCache = dpnTEPsInfoCache;
         LOG.trace("ItmTepRemoveWorker initialized with  DpnList {}", delDpnList);
         LOG.trace("ItmTepRemoveWorker initialized with  cfgdHwTeps {}", delHwList);
     }
@@ -49,7 +53,7 @@ public class ItmTepRemoveWorker implements Callable<List<ListenableFuture<Void>>
     @Override
     public List<ListenableFuture<Void>> call() {
         List<ListenableFuture<Void>> futures = new ArrayList<>() ;
-        this.meshedDpnList = ItmUtils.getTunnelMeshInfo(dataBroker) ;
+        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 {} ",
diff --git a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmTunnelStateUpdateHelper.java b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmTunnelStateUpdateHelper.java
deleted file mode 100644 (file)
index 99aecf5..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright (c) 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,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.genius.itm.confighelpers;
-
-import com.google.common.util.concurrent.ListenableFuture;
-import java.util.Collections;
-import java.util.List;
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
-import org.opendaylight.genius.itm.impl.ITMBatchingUtils;
-import org.opendaylight.genius.itm.impl.ItmUtils;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.TunnelOperStatus;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.tunnels_state.StateTunnelList;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.tunnels_state.StateTunnelListBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.tunnels_state.StateTunnelListKey;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public final class ItmTunnelStateUpdateHelper {
-    private static final Logger LOG = LoggerFactory.getLogger(ItmTunnelStateUpdateHelper.class);
-
-    private ItmTunnelStateUpdateHelper() { }
-
-    public static List<ListenableFuture<Void>> updateTunnel(Interface updated, DataBroker broker) throws Exception {
-        LOG.debug("Invoking ItmTunnelStateUpdateHelper for Interface {} ", updated);
-        final WriteTransaction writeTransaction = broker.newWriteOnlyTransaction();
-
-        StateTunnelListKey tlKey = ItmUtils.getTunnelStateKey(updated);
-        LOG.trace("TunnelStateKey: {} for interface: {}", tlKey, updated.getName());
-        InstanceIdentifier<StateTunnelList> stListId = ItmUtils.buildStateTunnelListId(tlKey);
-        StateTunnelList tunnelsState = ItmUtils.getTunnelState(broker, updated.getName(), stListId);
-        StateTunnelListBuilder stlBuilder;
-        TunnelOperStatus tunnelOperStatus;
-        boolean tunnelState = updated.getOperStatus().equals(Interface.OperStatus.Up);
-        switch (updated.getOperStatus()) {
-            case Up:
-                tunnelOperStatus = TunnelOperStatus.Up;
-                break;
-            case Down:
-                tunnelOperStatus = TunnelOperStatus.Down;
-                break;
-            case Unknown:
-                tunnelOperStatus = TunnelOperStatus.Unknown;
-                break;
-            default:
-                tunnelOperStatus = TunnelOperStatus.Ignore;
-        }
-        if (tunnelsState != null) {
-            stlBuilder = new StateTunnelListBuilder(tunnelsState);
-            stlBuilder.setTunnelState(tunnelState);
-            stlBuilder.setOperState(tunnelOperStatus);
-            StateTunnelList stList = stlBuilder.build();
-            LOG.trace("Batching the updation of tunnel_state: {} for Id: {}", stList, stListId);
-            ITMBatchingUtils.update(stListId, stList, ITMBatchingUtils.EntityType.DEFAULT_OPERATIONAL);
-        }
-
-        return Collections.singletonList(writeTransaction.submit());
-    }
-}
diff --git a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/impl/ITMManager.java b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/impl/ITMManager.java
deleted file mode 100644 (file)
index 27f889e..0000000
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * 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,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.genius.itm.impl;
-
-import com.google.common.base.Optional;
-import java.util.List;
-import javax.annotation.PostConstruct;
-import javax.annotation.PreDestroy;
-import javax.inject.Inject;
-import javax.inject.Singleton;
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.genius.itm.globals.ITMConstants;
-import org.opendaylight.genius.mdsalutil.interfaces.IMdsalApiManager;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.TunnelMonitoringTypeBase;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.TunnelMonitoringTypeBfd;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.config.rev160406.TunnelMonitorInterval;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.config.rev160406.TunnelMonitorIntervalBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.config.rev160406.TunnelMonitorParams;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.config.rev160406.TunnelMonitorParamsBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.dpn.endpoints.DPNTEPsInfo;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-@Singleton
-public class ITMManager implements AutoCloseable {
-    private static final Logger LOG = LoggerFactory.getLogger(ITMManager.class);
-
-    private final DataBroker broker;
-    private final IMdsalApiManager mdsalManager;
-
-    List<DPNTEPsInfo> meshedDpnList;
-
-    @Inject
-    public ITMManager(final DataBroker dataBroker,final IMdsalApiManager mdsalManager) {
-        this.broker = dataBroker;
-        this.mdsalManager = mdsalManager;
-    }
-
-    @PostConstruct
-    public void start() {
-        LOG.info("ITMManager Started");
-    }
-
-    @Override
-    @PreDestroy
-    public void close() {
-        LOG.info("ITMManager Closed");
-    }
-
-    @SuppressWarnings("checkstyle:IllegalCatch")
-    protected void initTunnelMonitorDataInConfigDS() {
-        new Thread() {
-            public void run() {
-                boolean readSucceeded = false;
-                InstanceIdentifier<TunnelMonitorParams> monitorPath =
-                        InstanceIdentifier.builder(TunnelMonitorParams.class).build();
-                while (!readSucceeded) {
-                    try {
-                        Optional<TunnelMonitorParams> storedTunnelMonitor =
-                                ItmUtils.read(LogicalDatastoreType.CONFIGURATION, monitorPath, broker);
-                        // Store default values only when tunnel monitor data is not initialized
-                        if (!storedTunnelMonitor.isPresent()) {
-                            TunnelMonitorParams monitorEnabled = new TunnelMonitorParamsBuilder()
-                                    .setEnabled(ITMConstants.DEFAULT_MONITOR_ENABLED).build();
-                            ItmUtils.asyncUpdate(LogicalDatastoreType.CONFIGURATION, monitorPath, monitorEnabled,
-                                    broker, ItmUtils.DEFAULT_CALLBACK);
-
-                            InstanceIdentifier<TunnelMonitorInterval> intervalPath =
-                                    InstanceIdentifier.builder(TunnelMonitorInterval.class).build();
-                            TunnelMonitorInterval monitorInteval = new TunnelMonitorIntervalBuilder()
-                                    .setInterval(ITMConstants.DEFAULT_MONITOR_INTERVAL).build();
-                            ItmUtils.asyncUpdate(LogicalDatastoreType.CONFIGURATION, intervalPath, monitorInteval,
-                                    broker, ItmUtils.DEFAULT_CALLBACK);
-                        }
-                        readSucceeded = true;
-                    } catch (Exception e) {
-                        LOG.warn("Unable to read monitor enabled info; retrying after some delay");
-                        try {
-                            Thread.sleep(1000);
-                        } catch (InterruptedException ie) {
-                            return;
-                        }
-                    }
-                }
-            }
-        }.start();
-    }
-
-    protected boolean getTunnelMonitorEnabledFromConfigDS() {
-        InstanceIdentifier<TunnelMonitorParams> path = InstanceIdentifier.builder(TunnelMonitorParams.class).build();
-        return ItmUtils.read(LogicalDatastoreType.CONFIGURATION, path, broker)
-                .toJavaUtil().map(TunnelMonitorParams::isEnabled).orElse(true);
-    }
-
-    protected Class<? extends TunnelMonitoringTypeBase> getTunnelMonitorTypeFromConfigDS() {
-
-        Class<? extends TunnelMonitoringTypeBase> tunnelMonitorType = TunnelMonitoringTypeBfd.class;
-        InstanceIdentifier<TunnelMonitorParams> path = InstanceIdentifier.builder(TunnelMonitorParams.class).build();
-        Optional<TunnelMonitorParams> storedTunnelMonitor =
-                ItmUtils.read(LogicalDatastoreType.CONFIGURATION, path, broker);
-        if (storedTunnelMonitor.isPresent() && storedTunnelMonitor.get().getMonitorProtocol() != null) {
-            tunnelMonitorType = storedTunnelMonitor.get().getMonitorProtocol();
-        }
-        return tunnelMonitorType;
-    }
-
-    protected int getTunnelMonitorIntervalFromConfigDS() {
-        InstanceIdentifier<TunnelMonitorInterval> path =
-                InstanceIdentifier.builder(TunnelMonitorInterval.class).build();
-        return ItmUtils.read(LogicalDatastoreType.CONFIGURATION, path, broker).toJavaUtil().map(
-                TunnelMonitorInterval::getInterval).orElse(ITMConstants.DEFAULT_MONITOR_INTERVAL);
-    }
-}
index 4949da39041075e736766e187fb1612351040c12..bceb8a2d68455add478321ab2b7f33e634d07f61 100644 (file)
@@ -9,6 +9,7 @@ package org.opendaylight.genius.itm.impl;
 
 import com.google.common.base.Preconditions;
 import java.math.BigInteger;
+import java.util.Collection;
 import java.util.List;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Future;
@@ -32,10 +33,6 @@ import org.opendaylight.genius.itm.listeners.TransportZoneListener;
 import org.opendaylight.genius.itm.listeners.TunnelMonitorChangeListener;
 import org.opendaylight.genius.itm.listeners.TunnelMonitorIntervalListener;
 import org.opendaylight.genius.itm.listeners.VtepConfigSchemaListener;
-import org.opendaylight.genius.itm.listeners.cache.DpnTepsInfoListener;
-import org.opendaylight.genius.itm.listeners.cache.ItmMonitoringIntervalListener;
-import org.opendaylight.genius.itm.listeners.cache.ItmMonitoringListener;
-import org.opendaylight.genius.itm.listeners.cache.StateTunnelListListener;
 import org.opendaylight.genius.itm.monitoring.ItmTunnelEventListener;
 import org.opendaylight.genius.itm.rpc.ItmManagerRpcService;
 import org.opendaylight.genius.mdsalutil.MDSALUtil;
@@ -61,7 +58,6 @@ public class ItmProvider implements AutoCloseable, IITMProvider /*,ItmStateServi
 
     private static final Logger LOG = LoggerFactory.getLogger(ItmProvider.class);
 
-    private final ITMManager itmManager;
     private final DataBroker dataBroker;
     private final ItmManagerRpcService itmRpcService ;
     private final IdManagerService idManager;
@@ -73,47 +69,36 @@ public class ItmProvider implements AutoCloseable, IITMProvider /*,ItmStateServi
     private final InterfaceStateListener ifStateListener;
     private RpcProviderRegistry rpcProviderRegistry;
     private final ItmTunnelEventListener itmStateListener;
-    private final ItmMonitoringListener itmMonitoringListener;
-    private final ItmMonitoringIntervalListener itmMonitoringIntervalListener;
     private final OvsdbNodeListener ovsdbChangeListener;
     static short flag = 0;
-    private final StateTunnelListListener tunnelStateListener ;
-    private final DpnTepsInfoListener dpnTepsInfoListener ;
+    private final TunnelMonitoringConfig tunnelMonitoringConfig;
 
     @Inject
     public ItmProvider(DataBroker dataBroker,
-                       DpnTepsInfoListener dpnTepsInfoListener,
                        IdManagerService idManagerService,
                        InterfaceStateListener interfaceStateListener,
-                       ITMManager itmManager,
                        ItmManagerRpcService itmManagerRpcService,
-                       ItmMonitoringListener itmMonitoringListener,
-                       ItmMonitoringIntervalListener itmMonitoringIntervalListener,
                        ItmTunnelEventListener itmTunnelEventListener,
-                       StateTunnelListListener stateTunnelListListener,
                        TepCommandHelper tepCommandHelper,
                        TunnelMonitorChangeListener tunnelMonitorChangeListener,
                        TunnelMonitorIntervalListener tunnelMonitorIntervalListener,
                        TransportZoneListener transportZoneListener,
                        VtepConfigSchemaListener vtepConfigSchemaListener,
-                       OvsdbNodeListener ovsdbNodeListener) {
+                       OvsdbNodeListener ovsdbNodeListener,
+                       TunnelMonitoringConfig tunnelMonitoringConfig) {
         LOG.info("ItmProvider Before register MBean");
         this.dataBroker = dataBroker;
-        this.dpnTepsInfoListener = dpnTepsInfoListener;
         this.idManager = idManagerService;
         this.ifStateListener = interfaceStateListener;
-        this.itmManager = itmManager;
         this.itmRpcService = itmManagerRpcService;
-        this.itmMonitoringListener = itmMonitoringListener;
-        this.itmMonitoringIntervalListener = itmMonitoringIntervalListener;
         this.itmStateListener = itmTunnelEventListener;
-        this.tunnelStateListener = stateTunnelListListener;
         this.tepCommandHelper = tepCommandHelper;
         this.tnlToggleListener = tunnelMonitorChangeListener;
         this.tnlIntervalListener = tunnelMonitorIntervalListener;
         this.tzChangeListener = transportZoneListener;
         this.vtepConfigSchemaListener = vtepConfigSchemaListener;
         this.ovsdbChangeListener = ovsdbNodeListener;
+        this.tunnelMonitoringConfig = tunnelMonitoringConfig;
         ITMBatchingUtils.registerWithBatchManager(this.dataBroker);
     }
 
@@ -131,9 +116,6 @@ public class ItmProvider implements AutoCloseable, IITMProvider /*,ItmStateServi
     @Override
     @PreDestroy
     public void close() {
-        if (itmManager != null) {
-            itmManager.close();
-        }
         if (tzChangeListener != null) {
             tzChangeListener.close();
         }
@@ -143,12 +125,6 @@ public class ItmProvider implements AutoCloseable, IITMProvider /*,ItmStateServi
         if (tnlToggleListener != null) {
             tnlToggleListener.close();
         }
-        if (tunnelStateListener != null) {
-            tunnelStateListener.close();
-        }
-        if (dpnTepsInfoListener != null) {
-            dpnTepsInfoListener.close();
-        }
         if (ovsdbChangeListener != null) {
             ovsdbChangeListener.close();
         }
@@ -216,18 +192,18 @@ public class ItmProvider implements AutoCloseable, IITMProvider /*,ItmStateServi
     @Override
     public void showTeps(CommandSession session) {
         try {
-            tepCommandHelper.showTeps(itmManager.getTunnelMonitorEnabledFromConfigDS(),
-                    ItmUtils.determineMonitorInterval(this.dataBroker), session);
+            tepCommandHelper.showTeps(tunnelMonitoringConfig.isTunnelMonitoringEnabled(),
+                    tunnelMonitoringConfig.getMonitorInterval(), session);
         } catch (TepException e) {
             LOG.error(e.getMessage());
         }
     }
 
     @Override
-    public void showState(List<StateTunnelList> tunnels,CommandSession session) {
+    public void showState(Collection<StateTunnelList> tunnels,CommandSession session) {
         if (tunnels != null) {
             try {
-                tepCommandHelper.showState(tunnels, itmManager.getTunnelMonitorEnabledFromConfigDS(), session);
+                tepCommandHelper.showState(tunnels, tunnelMonitoringConfig.isTunnelMonitoringEnabled(), session);
             } catch (TepException e) {
                 LOG.error(e.getMessage());
             }
index b1c3529f51e2dac12f96b6b08e8fbb8dc5d9ea5e..3d5942db264f8b054f76afae5cca5744c201175d 100644 (file)
@@ -34,6 +34,7 @@ import org.opendaylight.genius.datastoreutils.SingleTransactionDataBroker;
 import org.opendaylight.genius.interfacemanager.globals.IfmConstants;
 import org.opendaylight.genius.interfacemanager.interfaces.IInterfaceManager;
 import org.opendaylight.genius.itm.api.IITMProvider;
+import org.opendaylight.genius.itm.cache.DPNTEPsInfoCache;
 import org.opendaylight.genius.itm.confighelpers.HwVtep;
 import org.opendaylight.genius.itm.confighelpers.ItmTunnelAggregationHelper;
 import org.opendaylight.genius.itm.globals.ITMConstants;
@@ -47,7 +48,6 @@ import org.opendaylight.genius.mdsalutil.actions.ActionPuntToController;
 import org.opendaylight.genius.mdsalutil.instructions.InstructionApplyActions;
 import org.opendaylight.genius.mdsalutil.interfaces.IMdsalApiManager;
 import org.opendaylight.genius.mdsalutil.matches.MatchTunnelId;
-import org.opendaylight.genius.utils.cache.DataStoreCache;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.iana._if.type.rev140508.Tunnel;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefix;
@@ -64,7 +64,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.ParentRefs;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.ParentRefsBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.TunnelMonitoringTypeBase;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.TunnelMonitoringTypeBfd;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.TunnelTypeBase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.TunnelTypeGre;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.TunnelTypeLogicalGroup;
@@ -77,10 +76,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.tunnel.optional.params.TunnelOptionsBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.tunnel.optional.params.TunnelOptionsKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.config.rev160406.ItmConfig;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.config.rev160406.TunnelMonitorInterval;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.config.rev160406.TunnelMonitorIntervalBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.config.rev160406.TunnelMonitorParams;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.config.rev160406.TunnelMonitorParamsBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.config.rev160406.VtepConfigSchemas;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.config.rev160406.VtepIpPools;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.config.rev160406.vtep.config.schemas.VtepConfigSchema;
@@ -139,7 +134,6 @@ import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeKey;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.InstanceIdentifierBuilder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -415,56 +409,21 @@ public final class ItmUtils {
                 .setTransportType(tunType).build();
     }
 
-    public static List<DPNTEPsInfo> getTunnelMeshInfo(DataBroker dataBroker) {
-        // Read the Mesh Information from Cache if not read from the DS
-        List<DPNTEPsInfo> dpnTEPs = getTunnelMeshInfo() ;
-        if (dpnTEPs != null) {
-            return dpnTEPs;
-        }
-
-        // Read the EndPoint Info from the operational database
-        InstanceIdentifierBuilder<DpnEndpoints> depBuilder = InstanceIdentifier.builder(DpnEndpoints.class);
-        InstanceIdentifier<DpnEndpoints> deps = depBuilder.build();
-        Optional<DpnEndpoints> dpnEps = ItmUtils.read(LogicalDatastoreType.CONFIGURATION, deps, dataBroker);
-        if (dpnEps.isPresent()) {
-            DpnEndpoints tn = dpnEps.get();
-            dpnTEPs = tn.getDPNTEPsInfo();
-            LOG.debug("Read from CONFIGURATION datastore - No. of Dpns " , dpnTEPs.size());
-        } else {
-            LOG.debug("No Dpn information in CONFIGURATION datastore ");
-        }
-        return dpnTEPs;
-    }
-
-    // Reading the Mesh Information from Cache
-    private static List<DPNTEPsInfo> getTunnelMeshInfo() {
-        List<DPNTEPsInfo> dpnTepsInfo = null;
-        List<Object> values = DataStoreCache.getValues(ITMConstants.DPN_TEPs_Info_CACHE_NAME);
-        if (values != null) {
-            dpnTepsInfo = new ArrayList<>() ;
-            for (Object value : values) {
-                dpnTepsInfo.add((DPNTEPsInfo)value) ;
-            }
-        }
-        return dpnTepsInfo;
-    }
-
     private static String getUniqueIdString(String idKey) {
         return UUID.nameUUIDFromBytes(idKey.getBytes()).toString().substring(0, 12).replace("-", "");
     }
 
-    public static List<DPNTEPsInfo> getDpnTepListFromDpnId(DataBroker dataBroker, List<BigInteger> dpnIds) {
-        List<DPNTEPsInfo> meshedDpnList = getTunnelMeshInfo(dataBroker) ;
+    public static List<DPNTEPsInfo> getDpnTepListFromDpnId(DPNTEPsInfoCache dpnTEPsInfoCache, List<BigInteger> dpnIds) {
+        Collection<DPNTEPsInfo> meshedDpnList = dpnTEPsInfoCache.getAllPresent();
         List<DPNTEPsInfo> cfgDpnList = new ArrayList<>();
-        if (null != meshedDpnList) {
-            for (BigInteger dpnId : dpnIds) {
-                for (DPNTEPsInfo teps : meshedDpnList) {
-                    if (dpnId.equals(teps.getDPNID())) {
-                        cfgDpnList.add(teps);
-                    }
+        for (BigInteger dpnId : dpnIds) {
+            for (DPNTEPsInfo teps : meshedDpnList) {
+                if (dpnId.equals(teps.getDPNID())) {
+                    cfgDpnList.add(teps);
                 }
             }
         }
+
         return cfgDpnList;
     }
 
@@ -821,46 +780,6 @@ public final class ItmUtils {
                                interfaceName)).build();
     }
 
-    public static Boolean readMonitoringStateFromCache(DataBroker dataBroker) {
-        InstanceIdentifier<TunnelMonitorParams> iid = InstanceIdentifier.create(TunnelMonitorParams.class);
-        TunnelMonitorParams tunnelMonitorParams = (TunnelMonitorParams) DataStoreCache
-                .get(ITMConstants.ITM_MONIRORING_PARAMS_CACHE_NAME,iid,"MonitorParams",dataBroker,true);
-        if (tunnelMonitorParams != null) {
-            return tunnelMonitorParams.isEnabled();
-        } else {
-            return ITMConstants.DEFAULT_MONITOR_ENABLED;
-        }
-    }
-
-    private static Integer readMonitorIntervalfromCache(DataBroker dataBroker) {
-        InstanceIdentifier<TunnelMonitorInterval> iid = InstanceIdentifier.create(TunnelMonitorInterval.class);
-        TunnelMonitorInterval tunnelMonitorIOptional = (TunnelMonitorInterval)DataStoreCache
-                .get(ITMConstants.ITM_MONIRORING_PARAMS_CACHE_NAME,iid,"Interval",dataBroker,true);
-        if (tunnelMonitorIOptional != null) {
-            return tunnelMonitorIOptional.getInterval();
-        }
-        return null;
-    }
-
-    public static Integer determineMonitorInterval(DataBroker dataBroker) {
-        Integer monitorInterval = ItmUtils.readMonitorIntervalfromCache(dataBroker);
-        LOG.debug("determineMonitorInterval: monitorInterval from DS = {}", monitorInterval);
-        if (monitorInterval == null) {
-            Class<? extends TunnelMonitoringTypeBase> monitorProtocol = determineMonitorProtocol(dataBroker);
-            if (monitorProtocol.isAssignableFrom(TunnelMonitoringTypeBfd.class)) {
-                monitorInterval = ITMConstants.BFD_DEFAULT_MONITOR_INTERVAL;
-            } else {
-                monitorInterval = ITMConstants.DEFAULT_MONITOR_INTERVAL;
-            }
-        }
-        LOG.debug("determineMonitorInterval: monitorInterval = {}", monitorInterval);
-        InstanceIdentifier<TunnelMonitorInterval> iid = InstanceIdentifier.builder(TunnelMonitorInterval.class).build();
-        TunnelMonitorInterval intervalBuilder = new TunnelMonitorIntervalBuilder().setInterval(monitorInterval).build();
-        ItmUtils.asyncUpdate(LogicalDatastoreType.OPERATIONAL,iid, intervalBuilder, dataBroker,
-                ItmUtils.DEFAULT_CALLBACK);
-        return monitorInterval;
-    }
-
     public static List<String> getInternalTunnelInterfaces(DataBroker dataBroker) {
         List<String> tunnelList = new ArrayList<>();
         Collection<String> internalInterfaces = ITM_CACHE.getAllInternalInterfaces();
@@ -1005,7 +924,7 @@ public final class ItmUtils {
         return new ExternalTunnelKey(dst, src, tunType);
     }
 
-    public static List<TunnelEndPoints> getTEPsForDpn(BigInteger srcDpn, List<DPNTEPsInfo> dpnList) {
+    public static List<TunnelEndPoints> getTEPsForDpn(BigInteger srcDpn, Collection<DPNTEPsInfo> dpnList) {
         for (DPNTEPsInfo dpn : dpnList) {
             if (dpn.getDPNID().equals(srcDpn)) {
                 return dpn.getTunnelEndPoints() ;
@@ -1109,51 +1028,6 @@ public final class ItmUtils {
         return result;
     }
 
-    public static StateTunnelList getTunnelState(DataBroker dataBroker, String ifaceName,
-                                                 InstanceIdentifier<StateTunnelList> stListId) {
-        StateTunnelList tunnelState = (StateTunnelList)DataStoreCache
-                .get(ITMConstants.TUNNEL_STATE_CACHE_NAME, ifaceName);
-        if (tunnelState == null) {
-            Optional<StateTunnelList> tunnelsState = ItmUtils
-                    .read(LogicalDatastoreType.OPERATIONAL, stListId, dataBroker);
-            if (tunnelsState.isPresent()) {
-                return tunnelState;
-            }
-        }
-        return tunnelState;
-    }
-
-    private static Class<? extends TunnelMonitoringTypeBase> readMonitoringProtocolFromCache(DataBroker dataBroker) {
-        InstanceIdentifier<TunnelMonitorParams> iid = InstanceIdentifier.create(TunnelMonitorParams.class);
-        TunnelMonitorParams tunnelMonitorParams = (TunnelMonitorParams) DataStoreCache
-                .get(ITMConstants.ITM_MONIRORING_PARAMS_CACHE_NAME,iid,"MonitorParams",dataBroker,true);
-        if (tunnelMonitorParams != null) {
-            return tunnelMonitorParams.getMonitorProtocol();
-        }
-        return null;
-    }
-
-    public static Class<? extends TunnelMonitoringTypeBase> determineMonitorProtocol(DataBroker dataBroker) {
-        Class<? extends TunnelMonitoringTypeBase> monitoringProtocol =
-                ItmUtils.readMonitoringProtocolFromCache(dataBroker);
-        LOG.debug("determineMonitorProtocol: monitorProtocol from DS = {}", monitoringProtocol);
-        if (monitoringProtocol == null) {
-            monitoringProtocol = ITMConstants.DEFAULT_MONITOR_PROTOCOL;
-        }
-        LOG.debug("determineMonitorProtocol: monitorProtocol = {}", monitoringProtocol);
-        Boolean monitorState = ItmUtils.readMonitoringStateFromCache(dataBroker);
-        if (monitorState == null) {
-            monitorState = true;
-        }
-        LOG.debug("determineMonitorProtocol: monitorState = {}", monitorState);
-        InstanceIdentifier<TunnelMonitorParams> iid = InstanceIdentifier.builder(TunnelMonitorParams.class).build();
-        TunnelMonitorParams protocolBuilder = new TunnelMonitorParamsBuilder().setEnabled(monitorState)
-                .setMonitorProtocol(monitoringProtocol).build();
-        ItmUtils.asyncUpdate(LogicalDatastoreType.OPERATIONAL,iid, protocolBuilder, dataBroker,
-                ItmUtils.DEFAULT_CALLBACK);
-        return monitoringProtocol;
-    }
-
     public static List<DcGatewayIp> getDcGatewayIpList(DataBroker broker) {
         InstanceIdentifier<DcGatewayIpList> dcGatewayIpListid =
                 InstanceIdentifier.builder(DcGatewayIpList.class).build();
@@ -1385,7 +1259,7 @@ public final class ItmUtils {
     }
 
     public static List<TzMembership> getOriginalTzMembership(TunnelEndPoints srcTep, BigInteger dpnId,
-                                                             List<DPNTEPsInfo> meshedDpnList) {
+            Collection<DPNTEPsInfo> meshedDpnList) {
         LOG.trace("Original Membership for source DPN {}, source TEP {}", dpnId, srcTep);
         for (DPNTEPsInfo dstDpn : meshedDpnList) {
             if (dpnId.equals(dstDpn.getDPNID())) {
diff --git a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/impl/TunnelMonitoringConfig.java b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/impl/TunnelMonitoringConfig.java
new file mode 100644 (file)
index 0000000..b0640fd
--- /dev/null
@@ -0,0 +1,93 @@
+/*
+ * Copyright (c) 2017 Inocybe Technologies 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,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.genius.itm.impl;
+
+import com.google.common.base.Optional;
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+import javax.inject.Singleton;
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;
+import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
+import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException;
+import org.opendaylight.genius.itm.globals.ITMConstants;
+import org.opendaylight.genius.mdsalutil.cache.DataObjectCache;
+import org.opendaylight.infrautils.caches.CacheProvider;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.TunnelMonitoringTypeBase;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.config.rev160406.TunnelMonitorInterval;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.config.rev160406.TunnelMonitorParams;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Maintains configuration for tunnel monitoring parameters.
+ *
+ * @author Thomas Pantelis
+ */
+@Singleton
+public class TunnelMonitoringConfig implements AutoCloseable {
+    private static final Logger LOG = LoggerFactory.getLogger(ItmProvider.class);
+
+    private static final InstanceIdentifier<TunnelMonitorParams> TUNNEL_MONITOR_PARAMS_PATH =
+            InstanceIdentifier.create(TunnelMonitorParams.class);
+
+    private static final InstanceIdentifier<TunnelMonitorInterval> TUNNEL_MONITOR_INTERVAL_PATH =
+            InstanceIdentifier.create(TunnelMonitorInterval.class);
+
+    private final DataObjectCache<TunnelMonitorInterval> tunnelMonitorIntervalCache;
+    private final DataObjectCache<TunnelMonitorParams> tunnelMonitorParamsCache;
+
+    @Inject
+    public TunnelMonitoringConfig(DataBroker dataBroker, CacheProvider cacheProvider) {
+        tunnelMonitorIntervalCache = new DataObjectCache<>(TunnelMonitorInterval.class, dataBroker,
+                LogicalDatastoreType.CONFIGURATION, TUNNEL_MONITOR_INTERVAL_PATH, cacheProvider);
+        tunnelMonitorParamsCache = new DataObjectCache<>(TunnelMonitorParams.class, dataBroker,
+                LogicalDatastoreType.CONFIGURATION, TUNNEL_MONITOR_PARAMS_PATH, cacheProvider);
+    }
+
+    public boolean isTunnelMonitoringEnabled() {
+        try {
+            Optional<TunnelMonitorParams> maybeTunnelParams = tunnelMonitorParamsCache.get(TUNNEL_MONITOR_PARAMS_PATH);
+            return maybeTunnelParams.isPresent() ? maybeTunnelParams.get().isEnabled()
+                    : ITMConstants.DEFAULT_MONITOR_ENABLED;
+        } catch (ReadFailedException e) {
+            LOG.warn("Read of {} failed", TUNNEL_MONITOR_PARAMS_PATH, e);
+            return ITMConstants.DEFAULT_MONITOR_ENABLED;
+        }
+    }
+
+    public Class<? extends TunnelMonitoringTypeBase> getMonitorProtocol() {
+        try {
+            Optional<TunnelMonitorParams> maybeTunnelParams = tunnelMonitorParamsCache.get(TUNNEL_MONITOR_PARAMS_PATH);
+            return maybeTunnelParams.isPresent() ? maybeTunnelParams.get().getMonitorProtocol()
+                    : ITMConstants.DEFAULT_MONITOR_PROTOCOL;
+        } catch (ReadFailedException e) {
+            LOG.warn("Read of {} failed", TUNNEL_MONITOR_PARAMS_PATH, e);
+            return ITMConstants.DEFAULT_MONITOR_PROTOCOL;
+        }
+    }
+
+    public int getMonitorInterval() {
+        try {
+            Optional<TunnelMonitorInterval> maybeTunnelInterval =
+                    tunnelMonitorIntervalCache.get(TUNNEL_MONITOR_INTERVAL_PATH);
+            return maybeTunnelInterval.isPresent() ? maybeTunnelInterval.get().getInterval()
+                    : ITMConstants.DEFAULT_MONITOR_INTERVAL;
+        } catch (ReadFailedException e) {
+            LOG.warn("Read of {} failed", TUNNEL_MONITOR_INTERVAL_PATH, e);
+            return ITMConstants.DEFAULT_MONITOR_INTERVAL;
+        }
+    }
+
+    @Override
+    @PreDestroy
+    public void close() {
+        tunnelMonitorIntervalCache.close();
+        tunnelMonitorParamsCache.close();
+    }
+}
index 81c81a7ff50fb4d5f67909c78cf874a135e16785..85987673304fac70b8f7fdb9856c2533d398511d 100644 (file)
@@ -8,24 +8,34 @@
 
 package org.opendaylight.genius.itm.listeners;
 
+import com.google.common.base.Optional;
+import com.google.common.util.concurrent.ListenableFuture;
+import java.util.Collections;
+import java.util.List;
 import java.util.Objects;
 import javax.annotation.Nonnull;
 import javax.inject.Inject;
 import javax.inject.Singleton;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
+import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.genius.datastoreutils.listeners.AbstractSyncDataTreeChangeListener;
 import org.opendaylight.genius.interfacemanager.interfaces.IInterfaceManager;
+import org.opendaylight.genius.itm.cache.TunnelStateCache;
 import org.opendaylight.genius.itm.confighelpers.ItmTunnelAggregationHelper;
 import org.opendaylight.genius.itm.confighelpers.ItmTunnelStateAddHelper;
 import org.opendaylight.genius.itm.confighelpers.ItmTunnelStateRemoveHelper;
-import org.opendaylight.genius.itm.confighelpers.ItmTunnelStateUpdateHelper;
 import org.opendaylight.genius.itm.globals.ITMConstants;
+import org.opendaylight.genius.itm.impl.ITMBatchingUtils;
 import org.opendaylight.genius.itm.impl.ItmUtils;
 import org.opendaylight.infrautils.jobcoordinator.JobCoordinator;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.InterfacesState;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface.OperStatus;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.TunnelOperStatus;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.tunnels_state.StateTunnelList;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.tunnels_state.StateTunnelListBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.tunnels_state.StateTunnelListKey;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -39,16 +49,19 @@ public class InterfaceStateListener extends AbstractSyncDataTreeChangeListener<I
     private final JobCoordinator jobCoordinator;
     private final IInterfaceManager interfaceManager;
     private final ItmTunnelAggregationHelper tunnelAggregationHelper;
+    private final TunnelStateCache tunnelStateCache;
 
     @Inject
     public InterfaceStateListener(final DataBroker dataBroker, IInterfaceManager iinterfacemanager,
-            final ItmTunnelAggregationHelper tunnelAggregation, JobCoordinator jobCoordinator) {
+            final ItmTunnelAggregationHelper tunnelAggregation, JobCoordinator jobCoordinator,
+            TunnelStateCache tunnelStateCache) {
         super(dataBroker, LogicalDatastoreType.OPERATIONAL,
               InstanceIdentifier.create(InterfacesState.class).child(Interface.class));
         this.dataBroker = dataBroker;
         this.jobCoordinator = jobCoordinator;
         this.interfaceManager = iinterfacemanager;
         this.tunnelAggregationHelper = tunnelAggregation;
+        this.tunnelStateCache = tunnelStateCache;
     }
 
     @Override
@@ -91,7 +104,7 @@ public class InterfaceStateListener extends AbstractSyncDataTreeChangeListener<I
             if (!Objects.equals(originalInterface.getOperStatus(), updatedInterface.getOperStatus())) {
                 LOG.debug("Tunnel Interface {} changed state to {}", originalInterface.getName(), operStatus);
                 jobCoordinator.enqueueJob(ITMConstants.ITM_PREFIX + originalInterface.getName(),
-                    () -> ItmTunnelStateUpdateHelper.updateTunnel(updatedInterface, dataBroker));
+                    () -> updateTunnel(updatedInterface));
             }
             if (tunnelAggregationHelper.isTunnelAggregationEnabled()) {
                 tunnelAggregationHelper.updateLogicalTunnelState(originalInterface, updatedInterface,
@@ -99,4 +112,40 @@ public class InterfaceStateListener extends AbstractSyncDataTreeChangeListener<I
             }
         }
     }
+
+    private List<ListenableFuture<Void>> updateTunnel(Interface updated) throws Exception {
+        LOG.debug("Invoking ItmTunnelStateUpdateHelper for Interface {} ", updated);
+        final WriteTransaction writeTransaction = dataBroker.newWriteOnlyTransaction();
+
+        StateTunnelListKey tlKey = ItmUtils.getTunnelStateKey(updated);
+        LOG.trace("TunnelStateKey: {} for interface: {}", tlKey, updated.getName());
+        InstanceIdentifier<StateTunnelList> stListId = ItmUtils.buildStateTunnelListId(tlKey);
+        Optional<StateTunnelList> tunnelsState = tunnelStateCache.get(stListId);
+        StateTunnelListBuilder stlBuilder;
+        TunnelOperStatus tunnelOperStatus;
+        boolean tunnelState = updated.getOperStatus().equals(Interface.OperStatus.Up);
+        switch (updated.getOperStatus()) {
+            case Up:
+                tunnelOperStatus = TunnelOperStatus.Up;
+                break;
+            case Down:
+                tunnelOperStatus = TunnelOperStatus.Down;
+                break;
+            case Unknown:
+                tunnelOperStatus = TunnelOperStatus.Unknown;
+                break;
+            default:
+                tunnelOperStatus = TunnelOperStatus.Ignore;
+        }
+        if (tunnelsState.isPresent()) {
+            stlBuilder = new StateTunnelListBuilder(tunnelsState.get());
+            stlBuilder.setTunnelState(tunnelState);
+            stlBuilder.setOperState(tunnelOperStatus);
+            StateTunnelList stList = stlBuilder.build();
+            LOG.trace("Batching the updation of tunnel_state: {} for Id: {}", stList, stListId);
+            ITMBatchingUtils.update(stListId, stList, ITMBatchingUtils.EntityType.DEFAULT_OPERATIONAL);
+        }
+
+        return Collections.singletonList(writeTransaction.submit());
+    }
 }
index 1f7423b7ddff33176833ba5074be49b055ce1c35..2edfae2257265556fe83bcae26d469ab335f28f4 100644 (file)
@@ -25,7 +25,9 @@ import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException;
 import org.opendaylight.genius.datastoreutils.listeners.AbstractSyncDataTreeChangeListener;
+import org.opendaylight.genius.itm.cache.DPNTEPsInfoCache;
 import org.opendaylight.genius.itm.confighelpers.HwVtep;
+import org.opendaylight.genius.itm.confighelpers.ItmExternalTunnelAddWorker;
 import org.opendaylight.genius.itm.confighelpers.ItmInternalTunnelAddWorker;
 import org.opendaylight.genius.itm.confighelpers.ItmInternalTunnelDeleteWorker;
 import org.opendaylight.genius.itm.confighelpers.ItmTepAddWorker;
@@ -34,11 +36,11 @@ import org.opendaylight.genius.itm.confighelpers.ItmTepsNotHostedMoveWorker;
 import org.opendaylight.genius.itm.confighelpers.ItmTepsNotHostedRemoveWorker;
 import org.opendaylight.genius.itm.globals.ITMConstants;
 import org.opendaylight.genius.itm.impl.ItmUtils;
+import org.opendaylight.genius.itm.impl.TunnelMonitoringConfig;
 import org.opendaylight.genius.mdsalutil.interfaces.IMdsalApiManager;
 import org.opendaylight.infrautils.jobcoordinator.JobCoordinator;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefix;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.IdManagerService;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.TunnelTypeBase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.config.rev160406.ItmConfig;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.dpn.endpoints.DPNTEPsInfo;
@@ -74,11 +76,15 @@ public class TransportZoneListener extends AbstractSyncDataTreeChangeListener<Tr
     private final ItmConfig itmConfig;
     private final ItmInternalTunnelDeleteWorker itmInternalTunnelDeleteWorker;
     private final ItmInternalTunnelAddWorker itmInternalTunnelAddWorker;
+    private final ItmExternalTunnelAddWorker externalTunnelAddWorker;
+    private final DPNTEPsInfoCache dpnTEPsInfoCache;
 
     @Inject
-    public TransportZoneListener(final DataBroker dataBroker, final IdManagerService idManagerService,
+    public TransportZoneListener(final DataBroker dataBroker,
                                  final IMdsalApiManager mdsalManager,
-                                 final ItmConfig itmConfig, JobCoordinator jobCoordinator) {
+                                 final ItmConfig itmConfig, final JobCoordinator jobCoordinator,
+                                 final TunnelMonitoringConfig tunnelMonitoringConfig,
+                                 final DPNTEPsInfoCache dpnTEPsInfoCache) {
         super(dataBroker, LogicalDatastoreType.CONFIGURATION,
               InstanceIdentifier.create(TransportZones.class).child(TransportZone.class));
         this.dataBroker = dataBroker;
@@ -86,8 +92,12 @@ public class TransportZoneListener extends AbstractSyncDataTreeChangeListener<Tr
         initializeTZNode(dataBroker);
         this.mdsalManager = mdsalManager;
         this.itmConfig = itmConfig;
-        this.itmInternalTunnelDeleteWorker = new ItmInternalTunnelDeleteWorker(dataBroker, jobCoordinator);
-        this.itmInternalTunnelAddWorker = new ItmInternalTunnelAddWorker(dataBroker, jobCoordinator);
+        this.dpnTEPsInfoCache = dpnTEPsInfoCache;
+        this.itmInternalTunnelDeleteWorker = new ItmInternalTunnelDeleteWorker(dataBroker, jobCoordinator,
+                tunnelMonitoringConfig);
+        this.itmInternalTunnelAddWorker = new ItmInternalTunnelAddWorker(dataBroker, jobCoordinator,
+                tunnelMonitoringConfig);
+        this.externalTunnelAddWorker = new ItmExternalTunnelAddWorker(dataBroker, itmConfig, dpnTEPsInfoCache);
     }
 
     @SuppressWarnings("checkstyle:IllegalCatch")
@@ -144,9 +154,8 @@ public class TransportZoneListener extends AbstractSyncDataTreeChangeListener<Tr
             if (!opDpnList.isEmpty() || !hwVtepList.isEmpty()) {
                 LOG.trace("Delete: Invoking ItmManager with hwVtep List {} ", hwVtepList);
                 jobCoordinator.enqueueJob(transportZone.getZoneName(),
-                                          new ItmTepRemoveWorker(opDpnList, hwVtepList, transportZone, dataBroker,
-                                                                 mdsalManager,
-                                                                 itmInternalTunnelDeleteWorker));
+                        new ItmTepRemoveWorker(opDpnList, hwVtepList, transportZone, dataBroker, mdsalManager,
+                                itmInternalTunnelDeleteWorker, dpnTEPsInfoCache));
             }
         }
     }
@@ -176,18 +185,14 @@ public class TransportZoneListener extends AbstractSyncDataTreeChangeListener<Tr
         if (!newDpnTepsList.isEmpty()) {
             LOG.trace("Adding TEPs ");
             jobCoordinator.enqueueJob(updatedTransportZone.getZoneName(),
-                                      new ItmTepAddWorker(newDpnTepsList, Collections.emptyList(), dataBroker,
-                                                          mdsalManager, itmConfig,
-                                                          itmInternalTunnelAddWorker));
+                    new ItmTepAddWorker(newDpnTepsList, Collections.emptyList(), dataBroker, mdsalManager, itmConfig,
+                            itmInternalTunnelAddWorker, externalTunnelAddWorker, dpnTEPsInfoCache));
         }
         if (!oldDpnTepsList.isEmpty()) {
             LOG.trace("Removing TEPs ");
             jobCoordinator.enqueueJob(updatedTransportZone.getZoneName(),
-                                      new ItmTepRemoveWorker(oldDpnTepsList,
-                                                             Collections.emptyList(),
-                                                             originalTransportZone, dataBroker,
-                                                             mdsalManager,
-                                                             itmInternalTunnelDeleteWorker));
+                    new ItmTepRemoveWorker(oldDpnTepsList, Collections.emptyList(), originalTransportZone, dataBroker,
+                            mdsalManager, itmInternalTunnelDeleteWorker, dpnTEPsInfoCache));
         }
         List<HwVtep> oldHwList = createhWVteps(originalTransportZone);
         List<HwVtep> newHwList = createhWVteps(updatedTransportZone);
@@ -206,19 +211,15 @@ public class TransportZoneListener extends AbstractSyncDataTreeChangeListener<Tr
         LOG.trace("newHwListcopy {}", newHwListcopy);
         if (!newHwList.isEmpty()) {
             LOG.trace("Adding HW TEPs ");
-            jobCoordinator.enqueueJob(updatedTransportZone.getZoneName(),
-                                      new ItmTepAddWorker(Collections.emptyList(), newHwList, dataBroker,
-                                                          mdsalManager, itmConfig,
-                                                          itmInternalTunnelAddWorker));
+            jobCoordinator.enqueueJob(updatedTransportZone.getZoneName(), new ItmTepAddWorker(Collections.emptyList(),
+                    newHwList, dataBroker, mdsalManager, itmConfig, itmInternalTunnelAddWorker, externalTunnelAddWorker,
+                    dpnTEPsInfoCache));
         }
         if (!oldHwList.isEmpty()) {
             LOG.trace("Removing HW TEPs ");
-            jobCoordinator.enqueueJob(updatedTransportZone.getZoneName(),
-                                      new ItmTepRemoveWorker(Collections.emptyList(), oldHwList,
-                                                             originalTransportZone,
-                                                             dataBroker,
-                                                             mdsalManager,
-                                                             itmInternalTunnelDeleteWorker));
+            jobCoordinator.enqueueJob(updatedTransportZone.getZoneName(), new ItmTepRemoveWorker(
+                    Collections.emptyList(), oldHwList, originalTransportZone, dataBroker, mdsalManager,
+                    itmInternalTunnelDeleteWorker, dpnTEPsInfoCache));
         }
     }
 
@@ -233,8 +234,8 @@ public class TransportZoneListener extends AbstractSyncDataTreeChangeListener<Tr
             LOG.trace("Add: Invoking ItmManager with DPN List {} ", opDpnList);
             LOG.trace("Add: Invoking ItmManager with hwVtep List {} ", hwVtepList);
             jobCoordinator.enqueueJob(transportZone.getZoneName(),
-                                      new ItmTepAddWorker(opDpnList, hwVtepList, dataBroker,
-                                                          mdsalManager, itmConfig, itmInternalTunnelAddWorker));
+                    new ItmTepAddWorker(opDpnList, hwVtepList, dataBroker, mdsalManager, itmConfig,
+                            itmInternalTunnelAddWorker, externalTunnelAddWorker, dpnTEPsInfoCache));
         }
     }
 
diff --git a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/listeners/cache/DpnTepsInfoListener.java b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/listeners/cache/DpnTepsInfoListener.java
deleted file mode 100644 (file)
index d7bb34b..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * 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,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.genius.itm.listeners.cache;
-
-import javax.annotation.PostConstruct;
-import javax.annotation.PreDestroy;
-import javax.inject.Inject;
-import javax.inject.Singleton;
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.genius.datastoreutils.AsyncClusteredDataTreeChangeListenerBase;
-import org.opendaylight.genius.itm.globals.ITMConstants;
-import org.opendaylight.genius.utils.cache.DataStoreCache;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.DpnEndpoints;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.dpn.endpoints.DPNTEPsInfo;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/*
- * Created by Hema Gopalkrishnan on 18-08-2016.
- */
-@Singleton
-public class DpnTepsInfoListener extends AsyncClusteredDataTreeChangeListenerBase<DPNTEPsInfo,DpnTepsInfoListener>
-        implements AutoCloseable {
-    private static final Logger LOG = LoggerFactory.getLogger(DpnTepsInfoListener.class);
-    private final DataBroker broker;
-
-    /**
-     * Responsible for listening to DPNTEPsInfo change.
-     *
-     */
-    @Inject
-    public DpnTepsInfoListener(final DataBroker dataBroker) {
-        super(DPNTEPsInfo.class, DpnTepsInfoListener.class);
-        DataStoreCache.create(ITMConstants.DPN_TEPs_Info_CACHE_NAME) ;
-        this.broker = dataBroker;
-    }
-
-    @PostConstruct
-    public void start() {
-        registerListener(LogicalDatastoreType.CONFIGURATION, this.broker);
-        LOG.info("dpnTepsInfo Listener Started");
-    }
-
-    @Override
-    @PreDestroy
-    public void close() {
-        LOG.info("dpnTepsInfo Listener Closed");
-    }
-
-    @Override
-    protected void remove(InstanceIdentifier<DPNTEPsInfo> identifier, DPNTEPsInfo del) {
-        LOG.debug("Remove from cache {} Invoked for data Obj {}",
-                ITMConstants.DPN_TEPs_Info_CACHE_NAME, del.getDPNID());
-        DataStoreCache.remove(ITMConstants.DPN_TEPs_Info_CACHE_NAME, del.getDPNID()) ;
-    }
-
-    @Override
-    protected void update(InstanceIdentifier<DPNTEPsInfo> identifier, DPNTEPsInfo original,
-                          DPNTEPsInfo update) {
-        LOG.debug("Update to cache {} Invoked for data Obj {}",
-                ITMConstants.DPN_TEPs_Info_CACHE_NAME, update.getDPNID());
-        DataStoreCache.add(ITMConstants.DPN_TEPs_Info_CACHE_NAME, update.getDPNID(), update);
-    }
-
-    @Override
-    protected void add(InstanceIdentifier<DPNTEPsInfo> identifier, DPNTEPsInfo add) {
-        LOG.debug("Add to cache {} Invoked for data Obj {}", ITMConstants.DPN_TEPs_Info_CACHE_NAME, add.getDPNID());
-        DataStoreCache.add(ITMConstants.DPN_TEPs_Info_CACHE_NAME, add.getDPNID(), add);
-    }
-
-    @Override
-    protected DpnTepsInfoListener getDataTreeChangeListener() {
-        return this;
-    }
-
-    @Override
-    protected InstanceIdentifier<DPNTEPsInfo> getWildCardPath() {
-        return InstanceIdentifier.builder(DpnEndpoints.class)
-                .child(DPNTEPsInfo.class).build();
-    }
-
-}
diff --git a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/listeners/cache/ItmMonitoringIntervalListener.java b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/listeners/cache/ItmMonitoringIntervalListener.java
deleted file mode 100644 (file)
index 39a2470..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright (c) 2015, 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,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.genius.itm.listeners.cache;
-
-import javax.annotation.PostConstruct;
-import javax.annotation.PreDestroy;
-import javax.inject.Inject;
-import javax.inject.Singleton;
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.genius.datastoreutils.AsyncClusteredDataTreeChangeListenerBase;
-import org.opendaylight.genius.itm.globals.ITMConstants;
-import org.opendaylight.genius.utils.cache.DataStoreCache;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.config.rev160406.TunnelMonitorInterval;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/*
- * Created by Dimple Jain on 8/4/2016.
- */
-@Singleton
-public class ItmMonitoringIntervalListener extends AsyncClusteredDataTreeChangeListenerBase<TunnelMonitorInterval,
-          ItmMonitoringIntervalListener> {
-
-    private static final Logger LOG = LoggerFactory.getLogger(ItmMonitoringIntervalListener.class);
-
-    @SuppressWarnings("checkstyle:IllegalCatch")
-    @Inject
-    public ItmMonitoringIntervalListener(final DataBroker dataBroker) {
-        super(TunnelMonitorInterval.class, ItmMonitoringIntervalListener.class);
-        try {
-            registerListener(LogicalDatastoreType.OPERATIONAL, dataBroker);
-        } catch (final Exception e) {
-            LOG.error("ItmMonitoring Interval listener registration fail!", e);
-        }
-    }
-
-    @PostConstruct
-    public void start() {
-        LOG.info("ItmMonitoringIntervalListener Started");
-    }
-
-    @PreDestroy
-    public void close() {
-        LOG.info("ItmMonitoringIntervalListener Closed");
-    }
-
-    @Override
-    protected void remove(InstanceIdentifier<TunnelMonitorInterval> key, TunnelMonitorInterval dataObjectModification) {
-        DataStoreCache.remove(ITMConstants.ITM_MONIRORING_PARAMS_CACHE_NAME, "Interval");
-    }
-
-    @Override
-    protected void update(InstanceIdentifier<TunnelMonitorInterval> identifier, TunnelMonitorInterval original,
-                          TunnelMonitorInterval update) {
-        DataStoreCache.add(ITMConstants.ITM_MONIRORING_PARAMS_CACHE_NAME, "Interval", update);
-    }
-
-    @Override
-    protected void add(InstanceIdentifier<TunnelMonitorInterval> identifier, TunnelMonitorInterval add) {
-        DataStoreCache.add(ITMConstants.ITM_MONIRORING_PARAMS_CACHE_NAME, "Interval", add);
-    }
-
-    @Override protected InstanceIdentifier<TunnelMonitorInterval> getWildCardPath() {
-        return InstanceIdentifier.create(TunnelMonitorInterval.class);
-    }
-
-    @Override
-    protected ItmMonitoringIntervalListener getDataTreeChangeListener() {
-        return this;
-    }
-}
diff --git a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/listeners/cache/ItmMonitoringListener.java b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/listeners/cache/ItmMonitoringListener.java
deleted file mode 100644 (file)
index 592e066..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Copyright (c) 2015, 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,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.genius.itm.listeners.cache;
-
-import javax.annotation.PostConstruct;
-import javax.annotation.PreDestroy;
-import javax.inject.Inject;
-import javax.inject.Singleton;
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.genius.datastoreutils.AsyncClusteredDataTreeChangeListenerBase;
-import org.opendaylight.genius.itm.globals.ITMConstants;
-import org.opendaylight.genius.utils.cache.DataStoreCache;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.config.rev160406.TunnelMonitorParams;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/*
- * Created by Dimple Jain on 8/4/2016.
- */
-@Singleton
-public class ItmMonitoringListener  extends AsyncClusteredDataTreeChangeListenerBase<TunnelMonitorParams,
-        ItmMonitoringListener> {
-    private static final Logger LOG = LoggerFactory.getLogger(ItmMonitoringListener.class);
-
-    @SuppressWarnings("checkstyle:IllegalCatch")
-    @Inject
-    public ItmMonitoringListener(final DataBroker dataBroker) {
-        super(TunnelMonitorParams.class, ItmMonitoringListener.class);
-        DataStoreCache.create(ITMConstants.ITM_MONIRORING_PARAMS_CACHE_NAME);
-
-        try {
-            registerListener(LogicalDatastoreType.OPERATIONAL, dataBroker);
-        } catch (final Exception e) {
-            LOG.error("ItmMonitoring DataChange listener registration fail!", e);
-        }
-    }
-
-    @PostConstruct
-    public void start() {
-        LOG.info("ItmMonitoring Started");
-    }
-
-    @PreDestroy
-    public void close() {
-        LOG.info("ItmMonitoring Closed");
-    }
-
-    @Override
-    protected void remove(InstanceIdentifier<TunnelMonitorParams> key, TunnelMonitorParams dataObjectModification) {
-        DataStoreCache.remove(ITMConstants.ITM_MONIRORING_PARAMS_CACHE_NAME, "MonitorParams");
-    }
-
-    @Override
-    protected void update(InstanceIdentifier<TunnelMonitorParams> identifier, TunnelMonitorParams original,
-                        TunnelMonitorParams update) {
-        DataStoreCache.add(ITMConstants.ITM_MONIRORING_PARAMS_CACHE_NAME, "MonitorParams", update);
-    }
-
-    @Override
-    protected void add(InstanceIdentifier<TunnelMonitorParams> identifier, TunnelMonitorParams add) {
-        DataStoreCache.add(ITMConstants.ITM_MONIRORING_PARAMS_CACHE_NAME, "MonitorParams", add);
-    }
-
-    @Override protected InstanceIdentifier<TunnelMonitorParams> getWildCardPath() {
-        return InstanceIdentifier.create(TunnelMonitorParams.class);
-    }
-
-    @Override
-    protected ItmMonitoringListener getDataTreeChangeListener() {
-        return this;
-    }
-}
diff --git a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/listeners/cache/StateTunnelListListener.java b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/listeners/cache/StateTunnelListListener.java
deleted file mode 100644 (file)
index 0a89b9f..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Copyright (c) 2016 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,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-package org.opendaylight.genius.itm.listeners.cache;
-
-import javax.annotation.PostConstruct;
-import javax.annotation.PreDestroy;
-import javax.inject.Inject;
-import javax.inject.Singleton;
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.genius.datastoreutils.AsyncClusteredDataTreeChangeListenerBase;
-import org.opendaylight.genius.itm.globals.ITMConstants;
-import org.opendaylight.genius.utils.cache.DataStoreCache;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.TunnelsState;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.tunnels_state.StateTunnelList;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-@Singleton
-public class StateTunnelListListener
-        extends AsyncClusteredDataTreeChangeListenerBase<StateTunnelList,StateTunnelListListener>
-        implements AutoCloseable {
-    private static final Logger LOG = LoggerFactory.getLogger(StateTunnelListListener.class);
-    private final DataBroker broker;
-
-    /**
-     * Responsible for listening to tunnel interface state change.
-     *
-     */
-    @SuppressWarnings("checkstyle:IllegalCatch")
-    @Inject
-    public StateTunnelListListener(final DataBroker dataBroker) {
-        super(StateTunnelList.class, StateTunnelListListener.class);
-        DataStoreCache.create(ITMConstants.TUNNEL_STATE_CACHE_NAME);
-        this.broker = dataBroker;
-        try {
-            registerListener(LogicalDatastoreType.OPERATIONAL, this.broker);
-        } catch (final Exception e) {
-            LOG.error("StateTunnelListListener DataChange listener registration fail!", e);
-        }
-    }
-
-    @PostConstruct
-    public void start() {
-        LOG.info("Tunnel Interface State Listener Started");
-    }
-
-    @Override
-    @PreDestroy
-    public void close() {
-        LOG.info("Tunnel Interface State Listener Closed");
-    }
-
-    @Override
-    protected void remove(InstanceIdentifier<StateTunnelList> identifier, StateTunnelList del) {
-        DataStoreCache.remove(ITMConstants.TUNNEL_STATE_CACHE_NAME, del.getTunnelInterfaceName());
-    }
-
-    @Override
-    protected void update(InstanceIdentifier<StateTunnelList> identifier, StateTunnelList original,
-                          StateTunnelList update) {
-        DataStoreCache.add(ITMConstants.TUNNEL_STATE_CACHE_NAME, update.getTunnelInterfaceName(), update);
-    }
-
-    @Override
-    protected void add(InstanceIdentifier<StateTunnelList> identifier, StateTunnelList add) {
-        DataStoreCache.add(ITMConstants.TUNNEL_STATE_CACHE_NAME, add.getTunnelInterfaceName(), add);
-    }
-
-    @Override
-    protected StateTunnelListListener getDataTreeChangeListener() {
-        return this;
-    }
-
-    @Override
-    protected InstanceIdentifier<StateTunnelList> getWildCardPath() {
-        return InstanceIdentifier.builder(TunnelsState.class)
-                .child(StateTunnelList.class).build();
-    }
-
-}
index dc97a66dc815e040ce4008d47d43c1a0edbb7583..12375fadc73b1f4250a1ba60735cde09c8981655 100644 (file)
@@ -14,6 +14,7 @@ import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.SettableFuture;
 import java.math.BigInteger;
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.List;
 import java.util.concurrent.Future;
 import javax.annotation.PostConstruct;
@@ -23,6 +24,7 @@ import javax.inject.Singleton;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
+import org.opendaylight.genius.itm.cache.DPNTEPsInfoCache;
 import org.opendaylight.genius.itm.confighelpers.ItmExternalTunnelAddWorker;
 import org.opendaylight.genius.itm.confighelpers.ItmExternalTunnelDeleteWorker;
 import org.opendaylight.genius.itm.globals.ITMConstants;
@@ -100,14 +102,16 @@ public class ItmManagerRpcService implements ItmRpcService {
     private static final Logger LOG = LoggerFactory.getLogger(ItmManagerRpcService.class);
     private final DataBroker dataBroker;
     private final IMdsalApiManager mdsalManager;
-    private final ItmConfig itmConfig;
+    private final DPNTEPsInfoCache dpnTEPsInfoCache;
+    private final ItmExternalTunnelAddWorker externalTunnelAddWorker;
 
     @Inject
-    public ItmManagerRpcService(final DataBroker dataBroker,
-                                final IMdsalApiManager mdsalManager, final ItmConfig itmConfig) {
+    public ItmManagerRpcService(final DataBroker dataBroker, final IMdsalApiManager mdsalManager,
+            final ItmConfig itmConfig, final DPNTEPsInfoCache dpnTEPsInfoCache) {
         this.dataBroker = dataBroker;
         this.mdsalManager = mdsalManager;
-        this.itmConfig = itmConfig;
+        this.dpnTEPsInfoCache = dpnTEPsInfoCache;
+        this.externalTunnelAddWorker = new ItmExternalTunnelAddWorker(dataBroker, itmConfig, dpnTEPsInfoCache);
     }
 
     @PostConstruct
@@ -159,7 +163,7 @@ public class ItmManagerRpcService implements ItmRpcService {
             RemoveExternalTunnelEndpointInput input) {
         //Ignore the Futures for now
         final SettableFuture<RpcResult<Void>> result = SettableFuture.create();
-        List<DPNTEPsInfo> meshedDpnList = ItmUtils.getTunnelMeshInfo(dataBroker) ;
+        Collection<DPNTEPsInfo> meshedDpnList = dpnTEPsInfoCache.getAllPresent();
         ItmExternalTunnelDeleteWorker.deleteTunnels(dataBroker, meshedDpnList,
                 input.getDestinationIp(), input.getTunnelType());
         InstanceIdentifier<DcGatewayIp> extPath = InstanceIdentifier.builder(DcGatewayIpList.class)
@@ -189,7 +193,7 @@ public class ItmManagerRpcService implements ItmRpcService {
             RemoveExternalTunnelFromDpnsInput input) {
         //Ignore the Futures for now
         final SettableFuture<RpcResult<Void>> result = SettableFuture.create();
-        List<DPNTEPsInfo> cfgDpnList = ItmUtils.getDpnTepListFromDpnId(dataBroker, input.getDpnId()) ;
+        List<DPNTEPsInfo> cfgDpnList = ItmUtils.getDpnTepListFromDpnId(dpnTEPsInfoCache, input.getDpnId()) ;
         ItmExternalTunnelDeleteWorker.deleteTunnels(dataBroker, cfgDpnList,
                 input.getDestinationIp(), input.getTunnelType());
         result.set(RpcResultBuilder.<Void>success().build());
@@ -201,9 +205,8 @@ public class ItmManagerRpcService implements ItmRpcService {
             BuildExternalTunnelFromDpnsInput input) {
         //Ignore the Futures for now
         final SettableFuture<RpcResult<Void>> result = SettableFuture.create();
-        List<ListenableFuture<Void>> extTunnelResultList = ItmExternalTunnelAddWorker
-                .buildTunnelsFromDpnToExternalEndPoint(dataBroker, input.getDpnId(),
-                        input.getDestinationIp(),input.getTunnelType(), itmConfig);
+        List<ListenableFuture<Void>> extTunnelResultList = externalTunnelAddWorker
+            .buildTunnelsFromDpnToExternalEndPoint(input.getDpnId(), input.getDestinationIp(),input.getTunnelType());
         for (ListenableFuture<Void> extTunnelResult : extTunnelResultList) {
             Futures.addCallback(extTunnelResult, new FutureCallback<Void>() {
 
@@ -231,9 +234,9 @@ public class ItmManagerRpcService implements ItmRpcService {
 
         //Ignore the Futures for now
         final SettableFuture<RpcResult<Void>> result = SettableFuture.create();
-        List<DPNTEPsInfo> meshedDpnList = ItmUtils.getTunnelMeshInfo(dataBroker) ;
-        ItmExternalTunnelAddWorker.buildTunnelsToExternalEndPoint(dataBroker, meshedDpnList,
-                input.getDestinationIp(), input.getTunnelType(), itmConfig);
+        Collection<DPNTEPsInfo> meshedDpnList = dpnTEPsInfoCache.getAllPresent();
+        externalTunnelAddWorker.buildTunnelsToExternalEndPoint(meshedDpnList,
+                input.getDestinationIp(), input.getTunnelType());
         InstanceIdentifier<DcGatewayIp> extPath = InstanceIdentifier.builder(DcGatewayIpList.class)
                 .child(DcGatewayIp.class, new DcGatewayIpKey(input.getDestinationIp())).build();
         DcGatewayIp dcGatewayIp =
@@ -408,7 +411,7 @@ public class ItmManagerRpcService implements ItmRpcService {
             resultBld = RpcResultBuilder.success();
             resultBld.withResult(output.build()) ;
         } else {
-            List<DPNTEPsInfo> meshedDpnList = ItmUtils.getTunnelMeshInfo(dataBroker);
+            Collection<DPNTEPsInfo> meshedDpnList = dpnTEPsInfoCache.getAllPresent();
             if (meshedDpnList == null) {
                 LOG.error("There are no tunnel mesh info in config DS");
                 return Futures.immediateFuture(resultBld.build());
index c7b66eea8760e92e5ad26f29df809b0f3b6f9c27..2ccfd003483cb16ae2b2e358a61e17053b81d2e9 100644 (file)
@@ -28,6 +28,9 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
     <reference id="jobCoordinator"
                interface="org.opendaylight.infrautils.jobcoordinator.JobCoordinator"/>
 
+    <reference id="cacheProvider"
+               interface="org.opendaylight.infrautils.caches.CacheProvider"/>
+
     <odl:rpc-implementation ref="itmManagerRpcService" />
 
     <odl:clustered-app-config id="itmConfig"
@@ -60,7 +63,8 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
         </command>
         <command>
             <action class="org.opendaylight.genius.itm.cli.TepShowState">
-                <property name="itmProvider" ref="itmProvider" />
+                <argument ref="itmProvider" />
+                <argument ref="tunnelStateCache" />
             </action>
         </command>
         <command>
index fb46661e93a3aebf6cc7c5d49db0a55cecd3bcf9..52713258fe36c21cd9e5b0f98810f2fe926b2832 100644 (file)
@@ -29,10 +29,12 @@ import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
+import org.opendaylight.genius.itm.cache.DPNTEPsInfoCache;
 import org.opendaylight.genius.itm.confighelpers.HwVtep;
 import org.opendaylight.genius.itm.confighelpers.ItmExternalTunnelAddWorker;
 import org.opendaylight.genius.itm.globals.ITMConstants;
-import org.opendaylight.genius.utils.cache.DataStoreCache;
+import org.opendaylight.infrautils.caches.baseimpl.internal.CacheManagersRegistryImpl;
+import org.opendaylight.infrautils.caches.guava.internal.GuavaCacheProvider;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddressBuilder;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefix;
@@ -162,10 +164,11 @@ public class ItmExternalTunnelAddTest {
     @Mock IdManagerService idManagerService;
     @Mock ItmConfig itmConfig;
 
+    private ItmExternalTunnelAddWorker externalTunnelAddWorker;
+
     @Before
     public void setUp() {
         setupMocks();
-        DataStoreCache.create(ITMConstants.ITM_MONIRORING_PARAMS_CACHE_NAME);
 
         optionalDpnEndPoints = Optional.of(dpnEndpointsVxlan);
         tunnelMonitorParamsOptional = Optional.of(tunnelMonitorParams);
@@ -178,6 +181,9 @@ public class ItmExternalTunnelAddTest {
         doReturn(Futures.immediateCheckedFuture(tunnelMonitorIntervalOptional))
                 .when(mockReadTx).read(LogicalDatastoreType.CONFIGURATION, tunnelMonitorIntervalIdentifier);
 
+        externalTunnelAddWorker = new ItmExternalTunnelAddWorker(dataBroker, itmConfig,
+                new DPNTEPsInfoCache(dataBroker, new GuavaCacheProvider(new CacheManagersRegistryImpl())));
+
     }
 
     @After
@@ -286,8 +292,7 @@ public class ItmExternalTunnelAddTest {
     @Test
     public void testBuildTunnelsToExternalEndPoint() {
 
-        ItmExternalTunnelAddWorker.buildTunnelsToExternalEndPoint(dataBroker, cfgdDpnListVxlan,
-                ipAddress2,tunnelType1, itmConfig);
+        externalTunnelAddWorker.buildTunnelsToExternalEndPoint(cfgdDpnListVxlan, ipAddress2, tunnelType1);
 
         verify(mockWriteTx).merge(LogicalDatastoreType.CONFIGURATION,interfaceIdentifier,iface,true);
         verify(mockWriteTx).merge(LogicalDatastoreType.CONFIGURATION,externalTunnelIdentifier,externalTunnel,true);
@@ -298,8 +303,7 @@ public class ItmExternalTunnelAddTest {
     @Test
     public void testBuildTunnelsFromDpnToExternalEndPoint() {
 
-        ItmExternalTunnelAddWorker.buildTunnelsFromDpnToExternalEndPoint(dataBroker, bigIntegerList,
-                ipAddress2,tunnelType1, itmConfig);
+        externalTunnelAddWorker.buildTunnelsFromDpnToExternalEndPoint(bigIntegerList, ipAddress2, tunnelType1);
 
         verify(mockWriteTx).merge(LogicalDatastoreType.CONFIGURATION,interfaceIdentifier,iface,true);
         verify(mockWriteTx).merge(LogicalDatastoreType.CONFIGURATION,externalTunnelIdentifier,externalTunnel,true);
@@ -391,8 +395,8 @@ public class ItmExternalTunnelAddTest {
         doReturn(Futures.immediateCheckedFuture(optionalTransportZone)).when(mockReadTx).read(LogicalDatastoreType
                 .CONFIGURATION,transportZoneIdentifier);
 
-        ItmExternalTunnelAddWorker.buildHwVtepsTunnels(dataBroker, cfgdDpnListVxlan,null);
-        ItmExternalTunnelAddWorker.buildHwVtepsTunnels(dataBroker, null,cfgdHwVtepsList);
+        externalTunnelAddWorker.buildHwVtepsTunnels(cfgdDpnListVxlan, null);
+        externalTunnelAddWorker.buildHwVtepsTunnels(null, cfgdHwVtepsList);
 
         verify(mockWriteTx, times(2)).merge(LogicalDatastoreType.CONFIGURATION,ifIID1,extTunnelIf1,true);
         verify(mockWriteTx, times(2)).merge(LogicalDatastoreType.CONFIGURATION,externalTunnelIdentifier1,
index 3b7adfbe8b670f13bb3c96d530a6750fa566e968..9d625662cbc864c6029dbfb45b84a7fcb6e237f3 100644 (file)
@@ -33,7 +33,6 @@ import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.genius.itm.confighelpers.HwVtep;
 import org.opendaylight.genius.itm.confighelpers.ItmExternalTunnelDeleteWorker;
 import org.opendaylight.genius.itm.globals.ITMConstants;
-import org.opendaylight.genius.utils.cache.DataStoreCache;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddressBuilder;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefix;
@@ -146,7 +145,6 @@ public class ItmExternalTunnelDeleteTest {
     @Before
     public void setUp() {
         setupMocks();
-        DataStoreCache.create(ITMConstants.ITM_MONIRORING_PARAMS_CACHE_NAME);
 
         when(idManagerService.releaseId(any(ReleaseIdInput.class))).thenReturn(Futures.immediateFuture(RpcResultBuilder
                 .<Void>success().build()));
index 7dc1a856c3b343b724922cf1ecbbb4955b639ef4..69bca4f95b8aa757a49eb8737fc81c06e871c584 100644 (file)
@@ -30,7 +30,8 @@ import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.genius.itm.confighelpers.ItmInternalTunnelAddWorker;
 import org.opendaylight.genius.itm.globals.ITMConstants;
 import org.opendaylight.genius.mdsalutil.interfaces.IMdsalApiManager;
-import org.opendaylight.genius.utils.cache.DataStoreCache;
+import org.opendaylight.infrautils.caches.baseimpl.internal.CacheManagersRegistryImpl;
+import org.opendaylight.infrautils.caches.guava.internal.GuavaCacheProvider;
 import org.opendaylight.infrautils.jobcoordinator.JobCoordinator;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddressBuilder;
@@ -156,7 +157,6 @@ public class ItmInternalTunnelAddTest {
     public void setUp() {
         PowerMockito.mockStatic(ITMBatchingUtils.class);
         setupMocks();
-        DataStoreCache.create(ITMConstants.ITM_MONIRORING_PARAMS_CACHE_NAME);
 
         tunnelMonitorParamsOptional = Optional.of(tunnelMonitorParams);
         tunnelMonitorIntervalOptional = Optional.of(tunnelMonitorInterval);
@@ -169,7 +169,8 @@ public class ItmInternalTunnelAddTest {
         doReturn(Futures.immediateCheckedFuture(tunnelMonitorIntervalOptional)).when(mockReadTx)
                 .read(LogicalDatastoreType.CONFIGURATION, tunnelMonitorIntervalIdentifier);
 
-        itmInternalTunnelAddWorker = new ItmInternalTunnelAddWorker(dataBroker, jobCoordinator);
+        itmInternalTunnelAddWorker = new ItmInternalTunnelAddWorker(dataBroker, jobCoordinator,
+                new TunnelMonitoringConfig(dataBroker, new GuavaCacheProvider(new CacheManagersRegistryImpl())));
     }
 
     @After
index b84d0a376eced49d03c6ac6d1faff200346d4ba8..933703344b32fe8085cd3e274b5aef20d3e51d16 100644 (file)
@@ -27,9 +27,9 @@ import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.genius.itm.confighelpers.ItmInternalTunnelDeleteWorker;
-import org.opendaylight.genius.itm.globals.ITMConstants;
 import org.opendaylight.genius.mdsalutil.interfaces.IMdsalApiManager;
-import org.opendaylight.genius.utils.cache.DataStoreCache;
+import org.opendaylight.infrautils.caches.baseimpl.internal.CacheManagersRegistryImpl;
+import org.opendaylight.infrautils.caches.guava.internal.GuavaCacheProvider;
 import org.opendaylight.infrautils.jobcoordinator.JobCoordinator;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddressBuilder;
@@ -116,7 +116,6 @@ public class ItmInternalTunnelDeleteTest {
     @Before
     public void setUp() {
         setupMocks();
-        DataStoreCache.create(ITMConstants.ITM_MONIRORING_PARAMS_CACHE_NAME);
 
         tunnelMonitorParamsOptional = Optional.of(tunnelMonitorParams);
         tunnelMonitorIntervalOptional = Optional.of(tunnelMonitorInterval);
@@ -131,7 +130,8 @@ public class ItmInternalTunnelDeleteTest {
         doReturn(Futures.immediateCheckedFuture(internalTunnelOptional)).when(mockReadTx)
                 .read(LogicalDatastoreType.CONFIGURATION,internalTunnelIdentifier);
 
-        itmInternalTunnelDeleteWorker = new ItmInternalTunnelDeleteWorker(dataBroker, jobCoordinator);
+        itmInternalTunnelDeleteWorker = new ItmInternalTunnelDeleteWorker(dataBroker, jobCoordinator,
+                new TunnelMonitoringConfig(dataBroker, new GuavaCacheProvider(new CacheManagersRegistryImpl())));
     }
 
     @After
index 7080fb04efb4824bc19d9e32e651eb81fba2f75a..41b8a3523800fbcd1bef481da5675c0fb1f94df2 100644 (file)
@@ -27,9 +27,12 @@ import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
+import org.opendaylight.genius.itm.cache.DPNTEPsInfoCache;
 import org.opendaylight.genius.itm.globals.ITMConstants;
 import org.opendaylight.genius.itm.rpc.ItmManagerRpcService;
 import org.opendaylight.genius.mdsalutil.interfaces.IMdsalApiManager;
+import org.opendaylight.infrautils.caches.baseimpl.internal.CacheManagersRegistryImpl;
+import org.opendaylight.infrautils.caches.guava.internal.GuavaCacheProvider;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddressBuilder;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefix;
@@ -200,7 +203,8 @@ public class ItmManagerRpcServiceTest {
         doReturn(Futures.immediateCheckedFuture(transportZonesOptional)).when(mockReadTx).read(LogicalDatastoreType
                 .CONFIGURATION,transportZonesIdentifier);
 
-        itmManagerRpcService = new ItmManagerRpcService(dataBroker, mdsalApiManager, itmConfig);
+        itmManagerRpcService = new ItmManagerRpcService(dataBroker, mdsalApiManager, itmConfig,
+                new DPNTEPsInfoCache(dataBroker, new GuavaCacheProvider(new CacheManagersRegistryImpl())));
     }
 
     @After
diff --git a/itm/itm-impl/src/test/java/org/opendaylight/genius/itm/impl/ItmProviderTest.java b/itm/itm-impl/src/test/java/org/opendaylight/genius/itm/impl/ItmProviderTest.java
deleted file mode 100644 (file)
index bc38d70..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright (c) 2015 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,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.genius.itm.impl;
-
-import org.junit.Test;
-import org.mockito.Mock;
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.genius.itm.cli.TepCommandHelper;
-import org.opendaylight.genius.itm.listeners.InterfaceStateListener;
-import org.opendaylight.genius.itm.listeners.OvsdbNodeListener;
-import org.opendaylight.genius.itm.listeners.TransportZoneListener;
-import org.opendaylight.genius.itm.listeners.TunnelMonitorChangeListener;
-import org.opendaylight.genius.itm.listeners.TunnelMonitorIntervalListener;
-import org.opendaylight.genius.itm.listeners.VtepConfigSchemaListener;
-import org.opendaylight.genius.itm.listeners.cache.DpnTepsInfoListener;
-import org.opendaylight.genius.itm.listeners.cache.ItmMonitoringIntervalListener;
-import org.opendaylight.genius.itm.listeners.cache.ItmMonitoringListener;
-import org.opendaylight.genius.itm.listeners.cache.StateTunnelListListener;
-import org.opendaylight.genius.itm.monitoring.ItmTunnelEventListener;
-import org.opendaylight.genius.itm.rpc.ItmManagerRpcService;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.IdManagerService;
-
-public class ItmProviderTest {
-
-    @Mock DataBroker dataBroker;
-    @Mock DpnTepsInfoListener dpnTepsInfoListener;
-    @Mock IdManagerService idManagerService;
-    @Mock InterfaceStateListener interfaceStateListener;
-    @Mock ITMManager itmManager;
-    @Mock ItmManagerRpcService itmManagerRpcService;
-    @Mock ItmMonitoringListener itmMonitoringListener;
-    @Mock ItmMonitoringIntervalListener itmMonitoringIntervalListener;
-    @Mock ItmTunnelEventListener itmTunnelEventListener;
-    @Mock StateTunnelListListener stateTunnelListListener;
-    @Mock TepCommandHelper tepCommandHelper;
-    @Mock TunnelMonitorChangeListener tunnelMonitorChangeListener;
-    @Mock TunnelMonitorIntervalListener tunnelMonitorIntervalListener;
-    @Mock TransportZoneListener transportZoneListener;
-    @Mock VtepConfigSchemaListener vtepConfigSchemaListener;
-    @Mock OvsdbNodeListener ovsdbNodeListener;
-
-    @Test
-    public void testClose() {
-        ItmProvider provider = new ItmProvider(dataBroker, dpnTepsInfoListener, idManagerService,
-                interfaceStateListener, itmManager, itmManagerRpcService, itmMonitoringListener,
-                itmMonitoringIntervalListener, itmTunnelEventListener, stateTunnelListListener,
-                tepCommandHelper, tunnelMonitorChangeListener, tunnelMonitorIntervalListener,
-                transportZoneListener, vtepConfigSchemaListener, ovsdbNodeListener);
-        // ensure no exceptions
-        // currently this method is empty
-        provider.close();
-    }
-}
index 9957db173a514698bfa874849ee57136e4af4c3f..ac26738d222a35c1140c313824e3f79024f7d4a9 100644 (file)
@@ -30,6 +30,7 @@ import org.opendaylight.genius.itm.rpc.ItmManagerRpcService;
 import org.opendaylight.genius.itm.tests.xtend.ExpectedDeviceVtepsObjects;
 import org.opendaylight.genius.itm.tests.xtend.ExpectedExternalTunnelObjects;
 import org.opendaylight.genius.itm.tests.xtend.ExpectedInternalTunnelIdentifierObjects;
+import org.opendaylight.infrautils.caches.testutils.CacheModule;
 import org.opendaylight.infrautils.inject.guice.testutils.GuiceRule;
 import org.opendaylight.infrautils.testutils.LogRule;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface;
@@ -94,7 +95,8 @@ public class ItmManagerRpcServiceTest {
 
     public @Rule LogRule logRule = new LogRule();
     // TODO public @Rule LogCaptureRule logCaptureRule = new LogCaptureRule();
-    public @Rule MethodRule guice = new GuiceRule(ItmTestModule.class, JobCoordinatorTestModule.class);
+    public @Rule MethodRule guice = new GuiceRule(ItmTestModule.class, JobCoordinatorTestModule.class,
+            CacheModule.class);
 
     String trunkInterfaceName;
 
index 92e9ec5777193a62ff91d6ac389bbffd5e14e3cc..a62dbecae71c7e8589f05d2ba694a0b9837198f6 100644 (file)
@@ -30,6 +30,7 @@ import org.opendaylight.genius.itm.impl.ItmUtils;
 import org.opendaylight.genius.itm.tests.xtend.ExpectedDefTransportZoneObjects;
 import org.opendaylight.genius.itm.tests.xtend.ExpectedTepNotHostedTransportZoneObjects;
 import org.opendaylight.genius.itm.tests.xtend.ExpectedTransportZoneObjects;
+import org.opendaylight.infrautils.caches.testutils.CacheModule;
 import org.opendaylight.infrautils.inject.guice.testutils.GuiceRule;
 import org.opendaylight.infrautils.testutils.LogRule;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefix;
@@ -52,7 +53,8 @@ public class ItmTepAutoConfigTest {
 
     public @Rule LogRule logRule = new LogRule();
     // TODO public @Rule LogCaptureRule logCaptureRule = new LogCaptureRule();
-    public @Rule MethodRule guice = new GuiceRule(ItmTestModule.class, JobCoordinatorTestModule.class);
+    public @Rule MethodRule guice = new GuiceRule(ItmTestModule.class, JobCoordinatorTestModule.class,
+            CacheModule.class);
 
     TransportZone transportZone;
     TransportZones transportZones;
index d7fece043b47a72f8521d4655de58d756f603611..e7b7ce1bb6ed896cab0ea73ca1d362b2e141b3c0 100644 (file)
@@ -15,6 +15,7 @@ import org.junit.rules.MethodRule;
 import org.opendaylight.genius.datastoreutils.testutils.JobCoordinatorTestModule;
 import org.opendaylight.genius.itm.impl.ItmTestUtils;
 import org.opendaylight.genius.utils.cache.CacheTestUtil;
+import org.opendaylight.infrautils.caches.testutils.CacheModule;
 import org.opendaylight.infrautils.inject.guice.testutils.GuiceRule;
 import org.opendaylight.infrautils.testutils.LogCaptureRule;
 import org.opendaylight.infrautils.testutils.LogRule;
@@ -26,7 +27,8 @@ public class ItmTest {
 
     public @Rule LogRule logRule = new LogRule();
     public @Rule LogCaptureRule logCaptureRule = new LogCaptureRule();
-    public @Rule MethodRule guice = new GuiceRule(ItmTestModule.class, JobCoordinatorTestModule.class);
+    public @Rule MethodRule guice = new GuiceRule(ItmTestModule.class, JobCoordinatorTestModule.class,
+            CacheModule.class);
 
     @Before
     public void before() {
index 00e8cbf5cbb75870c812153f5b619d779e2968c4..8344cfc893eb65b12ba27de1b31c25740ee56a5d 100644 (file)
@@ -18,7 +18,6 @@ import org.opendaylight.genius.interfacemanager.interfaces.IInterfaceManager;
 import org.opendaylight.genius.interfacemanager.interfaces.InterfaceManagerService;
 import org.opendaylight.genius.interfacemanager.rpcservice.InterfaceManagerServiceImpl;
 import org.opendaylight.genius.itm.globals.ITMConstants;
-import org.opendaylight.genius.itm.impl.ITMManager;
 import org.opendaylight.genius.itm.impl.ItmProvider;
 import org.opendaylight.genius.itm.listeners.InterfaceStateListener;
 import org.opendaylight.genius.itm.listeners.OvsdbNodeListener;
@@ -26,10 +25,6 @@ import org.opendaylight.genius.itm.listeners.TransportZoneListener;
 import org.opendaylight.genius.itm.listeners.TunnelMonitorChangeListener;
 import org.opendaylight.genius.itm.listeners.TunnelMonitorIntervalListener;
 import org.opendaylight.genius.itm.listeners.VtepConfigSchemaListener;
-import org.opendaylight.genius.itm.listeners.cache.DpnTepsInfoListener;
-import org.opendaylight.genius.itm.listeners.cache.ItmMonitoringIntervalListener;
-import org.opendaylight.genius.itm.listeners.cache.ItmMonitoringListener;
-import org.opendaylight.genius.itm.listeners.cache.StateTunnelListListener;
 import org.opendaylight.genius.itm.monitoring.ItmTunnelEventListener;
 import org.opendaylight.genius.itm.rpc.ItmManagerRpcService;
 import org.opendaylight.genius.lockmanager.impl.LockManagerServiceImpl;
@@ -57,7 +52,6 @@ public class ItmTestModule extends AbstractGuiceJsr250Module {
     protected void configureBindings() {
         // Bindings for services from this project
         bind(ItmRpcService.class).to(ItmManagerRpcService.class);
-        bind(ITMManager.class);
         bind(ItmProvider.class);
         ItmConfig itmConfigObj = new ItmConfigBuilder()
                 .setDefTzEnabled(true)
@@ -65,10 +59,6 @@ public class ItmTestModule extends AbstractGuiceJsr250Module {
                 .setGpeExtensionEnabled(false)
                 .build();
         bind(ItmConfig.class).toInstance(itmConfigObj);
-        bind(ItmMonitoringIntervalListener.class);
-        bind(DpnTepsInfoListener.class);
-        bind(StateTunnelListListener.class);
-        bind(ItmMonitoringListener.class);
         bind(TunnelMonitorIntervalListener.class);
         bind(TransportZoneListener.class);
         bind(OvsdbNodeListener.class);