Fixing ItmRpcService to return tunnelName 59/72859/9
authorEdw7n <n.edwin.anthony@ericsson.com>
Wed, 13 Jun 2018 04:46:56 +0000 (10:16 +0530)
committerFaseela K <faseela.k@ericsson.com>
Wed, 13 Jun 2018 15:02:13 +0000 (15:02 +0000)
- requires TestModule, as IITMProvider will be injected in elanItmUtils
dependent changes: https://git.opendaylight.org/gerrit/#/c/72867/

Change-Id: I5d4c22682200ed63d3edb88d0769d7622328813b
Signed-off-by: Edw7n <n.edwin.anthony@ericsson.com>
commons/testutils/src/main/java/org/opendaylight/genius/testutils/TestItmProvider.java [new file with mode: 0644]
itm/itm-impl/src/main/java/org/opendaylight/genius/itm/rpc/ItmManagerRpcService.java

diff --git a/commons/testutils/src/main/java/org/opendaylight/genius/testutils/TestItmProvider.java b/commons/testutils/src/main/java/org/opendaylight/genius/testutils/TestItmProvider.java
new file mode 100644 (file)
index 0000000..f6a221c
--- /dev/null
@@ -0,0 +1,18 @@
+/*
+ * Copyright © 2018 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.testutils;
+
+import org.opendaylight.genius.itm.api.IITMProvider;
+import org.opendaylight.infrautils.testutils.Partials;
+
+public abstract class TestItmProvider implements IITMProvider {
+
+    public static IITMProvider newInstance() {
+        return Partials.newPartial(IITMProvider.class);
+    }
+}
index d7162d659657da36038b93e8b557aa19e11e52eb..3aaf5a271bad01138ce403a6450f02877b57410c 100644 (file)
@@ -222,6 +222,15 @@ public class ItmManagerRpcService implements ItmRpcService {
         BigInteger destinationDpn = input.getDestinationDpid();
         Optional<InternalTunnel> optTunnel = Optional.absent();
 
+        if (interfaceManager.isItmDirectTunnelsEnabled()) {
+            DpnTepInterfaceInfo interfaceInfo = dpnTepStateCache.getDpnTepInterface(sourceDpn, destinationDpn);
+            if (interfaceInfo != null) {
+                resultBld = RpcResultBuilder.success();
+                resultBld.withResult(new GetTunnelInterfaceNameOutputBuilder()
+                        .setInterfaceName(interfaceInfo.getTunnelName())).build();
+                return Futures.immediateFuture(resultBld.build());
+            }
+        }
         if (ItmUtils.isTunnelAggregationUsed(input.getTunnelType())) {
             optTunnel = ItmUtils.getInternalTunnelFromDS(sourceDpn, destinationDpn,
                                                          TunnelTypeLogicalGroup.class, dataBroker);
@@ -257,8 +266,7 @@ public class ItmManagerRpcService implements ItmRpcService {
                     .withError(RpcError.ErrorType.APPLICATION,
                     "tunnel name not set for GetEgressActionsForTunnel call").build());
         }
-
-        if (!dpnTepStateCache.isInternal(tunnelName) && !interfaceManager.isItmDirectTunnelsEnabled()) {
+        if (!dpnTepStateCache.isInternal(tunnelName) || !interfaceManager.isItmDirectTunnelsEnabled()) {
             // Re-direct the RPC to Interface Manager
             // From the rpc input and get the output and copy to output
             org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rpcs.rev160406
@@ -614,6 +622,17 @@ public class ItmManagerRpcService implements ItmRpcService {
                 TunnelEndPoints firstEndPt = teps.getTunnelEndPoints().get(0);
                 if (dstIp.equals(firstEndPt.getIpAddress())) {
                     Optional<InternalTunnel> optTunnel = Optional.absent();
+                    if (interfaceManager.isItmDirectTunnelsEnabled()) {
+                        DpnTepInterfaceInfo interfaceInfo =
+                                dpnTepStateCache.getDpnTepInterface(srcDpn, teps.getDPNID());
+                        if (interfaceInfo != null) {
+                            resultBld = RpcResultBuilder.success();
+                            resultBld.withResult(new GetInternalOrExternalInterfaceNameOutputBuilder()
+                                    .setInterfaceName(interfaceInfo.getTunnelName())).build();
+                            return Futures.immediateFuture(resultBld.build());
+                        }
+                    }
+
                     if (ItmUtils.isTunnelAggregationUsed(input.getTunnelType())) {
                         optTunnel = ItmUtils.getInternalTunnelFromDS(srcDpn, teps.getDPNID(),
                                                                      TunnelTypeLogicalGroup.class, dataBroker);