TSC-99 Adjust to RPC method signature update 60/71560/18
authorFaseela K <faseela.k@ericsson.com>
Mon, 30 Apr 2018 07:27:41 +0000 (12:57 +0530)
committerMichael Vorburger <vorburger@redhat.com>
Wed, 23 May 2018 18:04:29 +0000 (18:04 +0000)
Change-Id: I1307120c6400e225a3e5e3e2344648ea5c7c5396
Signed-off-by: Faseela K <faseela.k@ericsson.com>
26 files changed:
alivenessmonitor/alivenessmonitor-impl-protocols/src/main/java/org/opendaylight/genius/alivenessmonitor/protocols/internal/AlivenessProtocolHandlerARP.java
alivenessmonitor/alivenessmonitor-impl-protocols/src/test/java/org/opendaylight/controller/alivenessmonitor/protocols/test/AlivenessMonitorTest.java
alivenessmonitor/alivenessmonitor-impl/src/main/java/org/opendaylight/genius/alivenessmonitor/internal/AlivenessMonitor.java
arputil/arputil-impl/src/main/java/org/opendaylight/genius/arputil/internal/ArpUtilImpl.java
arputil/arputil-impl/src/test/java/org/opendaylight/genius/arputil/test/TestOdlInterfaceRpcService.java
arputil/arputil-impl/src/test/java/org/opendaylight/genius/arputil/test/TestPacketProcessingService.java
commons/testutils/src/main/java/org/opendaylight/genius/testutils/itm/ItmRpcTestImpl.java
idmanager/idmanager-impl/src/main/java/org/opendaylight/genius/idmanager/IdManager.java
idmanager/idmanager-impl/src/main/java/org/opendaylight/genius/idmanager/IdUtils.java
interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/IfmUtil.java
interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/InterfacemgrProvider.java
interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/commons/AlivenessMonitorUtils.java
interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/rpcservice/InterfaceManagerRpcService.java
itm/itm-impl/src/main/java/org/opendaylight/genius/itm/impl/ItmProvider.java
itm/itm-impl/src/main/java/org/opendaylight/genius/itm/itmdirecttunnels/renderer/ovs/utilities/DirectTunnelUtils.java
itm/itm-impl/src/main/java/org/opendaylight/genius/itm/rpc/ItmManagerRpcService.java
itm/itm-impl/src/test/java/org/opendaylight/genius/itm/impl/ItmExternalTunnelDeleteTest.java
itm/itm-impl/src/test/java/org/opendaylight/genius/itm/tests/ItmManagerRpcServiceTest.java
lockmanager/lockmanager-impl/src/main/java/org/opendaylight/genius/lockmanager/impl/LockManagerServiceImpl.java
lockmanager/lockmanager-impl/src/test/java/org/opendaylight/genius/lockmanager/tests/LockManagerTest.java
mdsalutil/mdsalutil-impl/src/main/java/org/opendaylight/genius/mdsalutil/internal/MDSALManager.java
resourcemanager/resourcemanager-impl/src/main/java/org/opendaylight/genius/resourcemanager/ResourceManager.java
resourcemanager/resourcemanager-impl/src/test/java/org/opendaylight/genius/resourcemanager/tests/ResourceManagerTest.java
srm/impl/src/main/java/org/opendaylight/genius/srm/impl/SrmRpcProvider.java
tools/api/src/main/java/org/opendaylight/genius/tools/mdsal/rpc/FutureRpcResults.java
tools/testutils/src/main/java/org/opendaylight/genius/tools/mdsal/testutils/TestFutureRpcResults.java

index ff3c259fd68334b295e66edf246e292f5574bfdb..1160edfba935ed9f2c2cebc98cfef4ea4fd8d45c 100644 (file)
@@ -15,6 +15,7 @@ import com.google.common.base.Strings;
 import com.google.common.util.concurrent.FutureCallback;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.JdkFutureAdapters;
+import com.google.common.util.concurrent.ListenableFuture;
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.math.BigInteger;
 import java.util.Collection;
@@ -37,6 +38,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.arputil.rev160406.OdlArputilService;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.arputil.rev160406.SendArpRequestInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.arputil.rev160406.SendArpRequestInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.arputil.rev160406.SendArpRequestOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.arputil.rev160406.interfaces.InterfaceAddress;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.arputil.rev160406.interfaces.InterfaceAddressBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rpcs.rev160406.GetInterfaceFromIfIndexInput;
@@ -149,24 +151,25 @@ public class AlivenessProtocolHandlerARP extends AbstractAlivenessProtocolHandle
             List<InterfaceAddress> addresses = Collections.singletonList(interfaceAddressBuilder.build());
             SendArpRequestInput input = new SendArpRequestInputBuilder().setInterfaceAddress(addresses)
                     .setIpaddress(IpAddressBuilder.getDefaultInstance(targetIp)).build();
-            Future<RpcResult<Void>> future = arpService.sendArpRequest(input);
+            ListenableFuture<RpcResult<SendArpRequestOutput>> future = arpService.sendArpRequest(input);
             final String msgFormat = String.format("Send ARP Request on interface %s to destination %s",
                     sourceInterface, targetIp);
-            Futures.addCallback(JdkFutureAdapters.listenInPoolThread(future), new FutureCallback<RpcResult<Void>>() {
-                @Override
-                public void onFailure(Throwable error) {
-                    LOG.error("Error - {}", msgFormat, error);
-                }
-
-                @Override
-                public void onSuccess(RpcResult<Void> result) {
-                    if (result != null && !result.isSuccessful()) {
-                        LOG.warn("Rpc call to {} failed {}", msgFormat, getErrorText(result.getErrors()));
-                    } else {
-                        LOG.debug("Successful RPC Result - {}", msgFormat);
-                    }
-                }
-            });
+            Futures.addCallback(JdkFutureAdapters.listenInPoolThread(future),
+                    new FutureCallback<RpcResult<SendArpRequestOutput>>() {
+                        @Override
+                        public void onFailure(Throwable error) {
+                            LOG.error("Error - {}", msgFormat, error);
+                        }
+
+                        @Override
+                        public void onSuccess(RpcResult<SendArpRequestOutput> result) {
+                            if (result != null && !result.isSuccessful()) {
+                                LOG.warn("Rpc call to {} failed {}", msgFormat, getErrorText(result.getErrors()));
+                            } else {
+                                LOG.debug("Successful RPC Result - {}", msgFormat);
+                            }
+                        }
+                    });
         }
     }
 
index fd1fe72390639d29176547fec68a22d9d25cddb7..2579824a3723acb42836448d39f007fbc06794e9 100644 (file)
@@ -61,14 +61,17 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411.MonitorProfileCreateOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411.MonitorProfileDeleteInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411.MonitorProfileDeleteInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411.MonitorProfileDeleteOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411.MonitorStartInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411.MonitorStartInputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411.MonitorStartOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411.MonitorStatus;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411.MonitorStopInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411.MonitorStopInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411.MonitorStopOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411.MonitorUnpauseInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411.MonitorUnpauseInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411.MonitorUnpauseOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411.MonitoringMode;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411._interface.monitor.map.InterfaceMonitorEntry;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411._interface.monitor.map.InterfaceMonitorEntryBuilder;
@@ -90,8 +93,10 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.arputil.rev160406.Od
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.AllocateIdInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.AllocateIdOutputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.CreateIdPoolInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.CreateIdPoolOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.IdManagerService;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.ReleaseIdInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.ReleaseIdOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rpcs.rev160406.OdlInterfaceRpcService;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.PacketProcessingService;
 import org.opendaylight.yangtools.yang.binding.DataObject;
@@ -166,7 +171,7 @@ public class AlivenessMonitorTest {
         MockitoAnnotations.initMocks(this);
         when(idManager.createIdPool(any(CreateIdPoolInput.class)))
                 .thenReturn(Futures.immediateFuture(
-                        RpcResultBuilder.<Void>success().build()));
+                        RpcResultBuilder.<CreateIdPoolOutput>success().build()));
 
         AlivenessProtocolHandlerRegistry alivenessProtocolHandlerRegistry = new AlivenessProtocolHandlerRegistryImpl();
         alivenessMonitor = new AlivenessMonitor(dataBroker, idManager,
@@ -183,7 +188,7 @@ public class AlivenessMonitorTest {
                                         .setIdValue(mockId++).build())
                                 .build()));
         when(idManager.releaseId(any(ReleaseIdInput.class))).thenReturn(Futures
-                .immediateFuture(RpcResultBuilder.<Void>success().build()));
+                .immediateFuture(RpcResultBuilder.<ReleaseIdOutput>success().build()));
         doReturn(readTx).when(dataBroker).newReadOnlyTransaction();
         doReturn(writeTx).when(dataBroker).newWriteOnlyTransaction();
         doReturn(readWriteTx).when(dataBroker).newReadWriteTransaction();
@@ -338,7 +343,7 @@ public class AlivenessMonitorTest {
         when(readTx.read(eq(LogicalDatastoreType.OPERATIONAL),
                 argThat(isType(MonitoridKeyEntry.class))))
                         .thenReturn(Futures.immediateCheckedFuture(optMap));
-        RpcResult<Void> result = alivenessMonitor.monitorUnpause(input).get();
+        RpcResult<MonitorUnpauseOutput> result = alivenessMonitor.monitorUnpause(input).get();
         verify(readWriteTx).merge(eq(LogicalDatastoreType.OPERATIONAL),
                 argThat(isType(MonitoringState.class)), stateCaptor.capture());
         assertEquals(MonitorStatus.Started, stateCaptor.getValue().getStatus());
@@ -375,7 +380,7 @@ public class AlivenessMonitorTest {
         when(readWriteTx.read(eq(LogicalDatastoreType.OPERATIONAL),
                 argThat(isType(InterfaceMonitorEntry.class))))
                         .thenReturn(Futures.immediateCheckedFuture(optEntry));
-        RpcResult<Void> result = alivenessMonitor.monitorStop(input).get();
+        RpcResult<MonitorStopOutput> result = alivenessMonitor.monitorStop(input).get();
         verify(idManager).releaseId(any(ReleaseIdInput.class));
         verify(writeTx, times(2)).delete(eq(LogicalDatastoreType.OPERATIONAL),
                 any(InstanceIdentifier.class));
@@ -392,7 +397,7 @@ public class AlivenessMonitorTest {
         when(readWriteTx.read(eq(LogicalDatastoreType.OPERATIONAL),
                 argThat(isType(MonitorProfile.class))))
                         .thenReturn(Futures.immediateCheckedFuture(optProfile));
-        RpcResult<Void> result = alivenessMonitor.monitorProfileDelete(input)
+        RpcResult<MonitorProfileDeleteOutput> result = alivenessMonitor.monitorProfileDelete(input)
                 .get();
         verify(idManager).releaseId(any(ReleaseIdInput.class));
         verify(readWriteTx).delete(eq(LogicalDatastoreType.OPERATIONAL),
index ab6c847ce13fb5478e00dc2c4441ec95415a2a43..f6363d8194c69feb4353c8374e89f134b2795ebd 100644 (file)
@@ -65,10 +65,12 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411.MonitorEvent;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411.MonitorEventBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411.MonitorPauseInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411.MonitorPauseOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411.MonitorProfileCreateInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411.MonitorProfileCreateOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411.MonitorProfileCreateOutputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411.MonitorProfileDeleteInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411.MonitorProfileDeleteOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411.MonitorProfileGetInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411.MonitorProfileGetOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411.MonitorProfileGetOutputBuilder;
@@ -77,7 +79,9 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411.MonitorStartOutputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411.MonitorStatus;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411.MonitorStopInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411.MonitorStopOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411.MonitorUnpauseInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411.MonitorUnpauseOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411.MonitoringMode;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411.MonitoringStates;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411._interface.monitor.map.InterfaceMonitorEntry;
@@ -103,9 +107,11 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.AllocateIdOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.CreateIdPoolInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.CreateIdPoolInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.CreateIdPoolOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.IdManagerService;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.ReleaseIdInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.ReleaseIdInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.ReleaseIdOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.PacketInReason;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.PacketProcessingListener;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.PacketReceived;
@@ -221,23 +227,23 @@ public class AlivenessMonitor extends AbstractClusteredSyncDataTreeChangeListene
                 .setPoolName(AlivenessMonitorConstants.MONITOR_IDPOOL_NAME)
                 .setLow(AlivenessMonitorConstants.MONITOR_IDPOOL_START)
                 .setHigh(AlivenessMonitorConstants.MONITOR_IDPOOL_SIZE).build();
-        Future<RpcResult<Void>> resultFuture = idManager.createIdPool(createPool);
-        Futures.addCallback(JdkFutureAdapters.listenInPoolThread(resultFuture), new FutureCallback<RpcResult<Void>>() {
-
-            @Override
-            public void onFailure(Throwable error) {
-                LOG.error("Failed to create idPool for Aliveness Monitor Service", error);
-            }
+        ListenableFuture<RpcResult<CreateIdPoolOutput>> resultFuture = idManager.createIdPool(createPool);
+        Futures.addCallback(JdkFutureAdapters.listenInPoolThread(resultFuture),
+                new FutureCallback<RpcResult<CreateIdPoolOutput>>() {
+                    @Override
+                    public void onFailure(Throwable error) {
+                        LOG.error("Failed to create idPool for Aliveness Monitor Service", error);
+                    }
 
-            @Override
-            public void onSuccess(@Nonnull RpcResult<Void> result) {
-                if (result.isSuccessful()) {
-                    LOG.debug("Created IdPool for Aliveness Monitor Service");
-                } else {
-                    LOG.error("RPC to create Idpool failed {}", result.getErrors());
-                }
-            }
-        }, callbackExecutorService);
+                    @Override
+                    public void onSuccess(@Nonnull RpcResult<CreateIdPoolOutput> result) {
+                        if (result.isSuccessful()) {
+                            LOG.debug("Created IdPool for Aliveness Monitor Service");
+                        } else {
+                            LOG.error("RPC to create Idpool failed {}", result.getErrors());
+                        }
+                    }
+                }, callbackExecutorService);
     }
 
     private int getUniqueId(final String idKey) {
@@ -263,8 +269,8 @@ public class AlivenessMonitor extends AbstractClusteredSyncDataTreeChangeListene
         ReleaseIdInput idInput = new ReleaseIdInputBuilder().setPoolName(AlivenessMonitorConstants.MONITOR_IDPOOL_NAME)
                 .setIdKey(idKey).build();
         try {
-            Future<RpcResult<Void>> result = idManager.releaseId(idInput);
-            RpcResult<Void> rpcResult = result.get();
+            ListenableFuture<RpcResult<ReleaseIdOutput>> result = idManager.releaseId(idInput);
+            RpcResult<ReleaseIdOutput> rpcResult = result.get();
             if (!rpcResult.isSuccessful()) {
                 LOG.warn("RPC Call to release Id {} returned with Errors {}", idKey, rpcResult.getErrors());
             }
@@ -449,7 +455,7 @@ public class AlivenessMonitor extends AbstractClusteredSyncDataTreeChangeListene
     }
 
     @Override
-    public Future<RpcResult<MonitorStartOutput>> monitorStart(MonitorStartInput input) {
+    public ListenableFuture<RpcResult<MonitorStartOutput>> monitorStart(MonitorStartInput input) {
         RpcResultBuilder<MonitorStartOutput> rpcResultBuilder;
         final Config in = input.getConfig();
         Long profileId = in.getProfileId();
@@ -510,8 +516,8 @@ public class AlivenessMonitor extends AbstractClusteredSyncDataTreeChangeListene
                 LOG.warn("Monitoring for the interface {} with this configuration is already registered.",
                         interfaceName);
                 MonitorStartOutput output = new MonitorStartOutputBuilder().setMonitorId(monitorId).build();
-                rpcResultBuilder = RpcResultBuilder.success(output).withWarning(ErrorType.APPLICATION, "config-exists",
-                        message);
+                rpcResultBuilder = RpcResultBuilder.success(output).withWarning(ErrorType.APPLICATION,
+                        "config-exists", message);
                 return Futures.immediateFuture(rpcResultBuilder.build());
             } else {
                 // Construct the monitor key
@@ -619,30 +625,31 @@ public class AlivenessMonitor extends AbstractClusteredSyncDataTreeChangeListene
     }
 
     @Override
-    public Future<RpcResult<Void>> monitorPause(MonitorPauseInput input) {
+    public ListenableFuture<RpcResult<MonitorPauseOutput>> monitorPause(MonitorPauseInput input) {
         LOG.debug("Monitor Pause operation invoked for monitor id: {}", input.getMonitorId());
-        SettableFuture<RpcResult<Void>> result = SettableFuture.create();
+        SettableFuture<RpcResult<MonitorPauseOutput>> result = SettableFuture.create();
         final Long monitorId = input.getMonitorId();
 
         // Set the monitoring status to Paused
         updateMonitorStatusTo(monitorId, MonitorStatus.Paused, currentStatus -> currentStatus == MonitorStatus.Started);
 
         if (stopMonitoringTask(monitorId)) {
-            result.set(RpcResultBuilder.<Void>success().build());
+            result.set(RpcResultBuilder.<MonitorPauseOutput>success().build());
         } else {
             String errorMsg = String.format("No Monitoring Task availble to pause for the given monitor id : %d",
                     monitorId);
             LOG.error("Monitor Pause operation failed- {}", errorMsg);
-            result.set(RpcResultBuilder.<Void>failed().withError(ErrorType.APPLICATION, errorMsg).build());
+            result.set(RpcResultBuilder.<MonitorPauseOutput>failed()
+                    .withError(ErrorType.APPLICATION, errorMsg).build());
         }
 
         return result;
     }
 
     @Override
-    public Future<RpcResult<Void>> monitorUnpause(MonitorUnpauseInput input) {
+    public ListenableFuture<RpcResult<MonitorUnpauseOutput>> monitorUnpause(MonitorUnpauseInput input) {
         LOG.debug("Monitor Unpause operation invoked for monitor id: {}", input.getMonitorId());
-        final SettableFuture<RpcResult<Void>> result = SettableFuture.create();
+        final SettableFuture<RpcResult<MonitorUnpauseOutput>> result = SettableFuture.create();
 
         final Long monitorId = input.getMonitorId();
         final ReadOnlyTransaction tx = dataBroker.newReadOnlyTransaction();
@@ -656,7 +663,8 @@ public class AlivenessMonitor extends AbstractClusteredSyncDataTreeChangeListene
                 tx.close();
                 String msg = String.format("Unable to read monitoring info associated with monitor id %d", monitorId);
                 LOG.error("Monitor unpause Failed. {}", msg, error);
-                result.set(RpcResultBuilder.<Void>failed().withError(ErrorType.APPLICATION, msg, error).build());
+                result.set(RpcResultBuilder.<MonitorUnpauseOutput>failed()
+                        .withError(ErrorType.APPLICATION, msg, error).build());
             }
 
             @Override
@@ -673,8 +681,8 @@ public class AlivenessMonitor extends AbstractClusteredSyncDataTreeChangeListene
                             String msg = String.format("Unable to read Monitoring profile associated with id %d",
                                     info.getProfileId());
                             LOG.warn("Monitor unpause Failed. {}", msg, error);
-                            result.set(RpcResultBuilder.<Void>failed().withError(ErrorType.APPLICATION, msg, error)
-                                    .build());
+                            result.set(RpcResultBuilder.<MonitorUnpauseOutput>failed()
+                                    .withError(ErrorType.APPLICATION, msg, error).build());
                         }
 
                         @Override
@@ -694,13 +702,14 @@ public class AlivenessMonitor extends AbstractClusteredSyncDataTreeChangeListene
                                 } else {
                                     scheduleMonitoringTask(info, profile.getMonitorInterval());
                                 }
-                                result.set(RpcResultBuilder.<Void>success().build());
+                                result.set(RpcResultBuilder.<MonitorUnpauseOutput>success().build());
                             } else {
                                 String msg = String.format("Monitoring profile associated with id %d is not present",
                                         info.getProfileId());
                                 LOG.warn("Monitor unpause Failed. {}", msg);
                                 result.set(
-                                        RpcResultBuilder.<Void>failed().withError(ErrorType.APPLICATION, msg).build());
+                                        RpcResultBuilder.<MonitorUnpauseOutput>failed()
+                                                .withError(ErrorType.APPLICATION, msg).build());
                             }
                         }
                     }, callbackExecutorService);
@@ -708,7 +717,8 @@ public class AlivenessMonitor extends AbstractClusteredSyncDataTreeChangeListene
                     tx.close();
                     String msg = String.format("Monitoring info associated with id %d is not present", monitorId);
                     LOG.warn("Monitor unpause Failed. {}", msg);
-                    result.set(RpcResultBuilder.<Void>failed().withError(ErrorType.APPLICATION, msg).build());
+                    result.set(RpcResultBuilder.<MonitorUnpauseOutput>failed()
+                            .withError(ErrorType.APPLICATION, msg).build());
                 }
             }
         }, callbackExecutorService);
@@ -901,7 +911,8 @@ public class AlivenessMonitor extends AbstractClusteredSyncDataTreeChangeListene
     }
 
     @Override
-    public Future<RpcResult<MonitorProfileCreateOutput>> monitorProfileCreate(final MonitorProfileCreateInput input) {
+    public ListenableFuture<RpcResult<MonitorProfileCreateOutput>> monitorProfileCreate(
+            final MonitorProfileCreateInput input) {
         LOG.debug("Monitor Profile Create operation - {}", input.getProfile());
         final SettableFuture<RpcResult<MonitorProfileCreateOutput>> returnFuture = SettableFuture.create();
         Profile profile = input.getProfile();
@@ -971,7 +982,7 @@ public class AlivenessMonitor extends AbstractClusteredSyncDataTreeChangeListene
     }
 
     @Override
-    public Future<RpcResult<MonitorProfileGetOutput>> monitorProfileGet(MonitorProfileGetInput input) {
+    public ListenableFuture<RpcResult<MonitorProfileGetOutput>> monitorProfileGet(MonitorProfileGetInput input) {
         LOG.debug("Monitor Profile Get operation for input profile- {}", input.getProfile());
         RpcResultBuilder<MonitorProfileGetOutput> rpcResultBuilder;
         final Long profileId = getExistingProfileId(input);
@@ -1004,56 +1015,60 @@ public class AlivenessMonitor extends AbstractClusteredSyncDataTreeChangeListene
     }
 
     @Override
-    public Future<RpcResult<Void>> monitorProfileDelete(final MonitorProfileDeleteInput input) {
+    public ListenableFuture<RpcResult<MonitorProfileDeleteOutput>> monitorProfileDelete(
+            final MonitorProfileDeleteInput input) {
         LOG.debug("Monitor Profile delete for Id: {}", input.getProfileId());
-        final SettableFuture<RpcResult<Void>> result = SettableFuture.create();
+        final SettableFuture<RpcResult<MonitorProfileDeleteOutput>> result = SettableFuture.create();
         final Long profileId = input.getProfileId();
         final ReadWriteTransaction tx = dataBroker.newReadWriteTransaction();
         ListenableFuture<Optional<MonitorProfile>> readFuture = tx.read(LogicalDatastoreType.OPERATIONAL,
                 getMonitorProfileId(profileId));
-        ListenableFuture<RpcResult<Void>> writeFuture = Futures.transformAsync(readFuture, optProfile -> {
-            if (optProfile.isPresent()) {
-                tx.delete(LogicalDatastoreType.OPERATIONAL, getMonitorProfileId(profileId));
-                Futures.addCallback(tx.submit(), new FutureCallback<Void>() {
-                        @Override
-                        public void onFailure(Throwable error) {
-                            String msg = String.format("Error when removing monitor profile %d from datastore",
-                                    profileId);
-                            LOG.error("Error when removing monitor profile {} from datastore", profileId, error);
-                            result.set(RpcResultBuilder.<Void>failed().withError(ErrorType.APPLICATION, msg, error)
-                                    .build());
-                        }
+        ListenableFuture<RpcResult<MonitorProfileDeleteOutput>> writeFuture =
+                Futures.transformAsync(readFuture, optProfile -> {
+                    if (optProfile.isPresent()) {
+                        tx.delete(LogicalDatastoreType.OPERATIONAL, getMonitorProfileId(profileId));
+                        Futures.addCallback(tx.submit(), new FutureCallback<Void>() {
+                            @Override
+                            public void onFailure(Throwable error) {
+                                String msg = String.format("Error when removing monitor profile %d from datastore",
+                                        profileId);
+                                LOG.error("Error when removing monitor profile {} from datastore", profileId, error);
+                                result.set(RpcResultBuilder.<MonitorProfileDeleteOutput>failed()
+                                        .withError(ErrorType.APPLICATION, msg, error)
+                                        .build());
+                            }
 
-                        @Override
-                        public void onSuccess(Void noarg) {
-                            MonitorProfile profile = optProfile.get();
-                            String id = getUniqueProfileKey(profile.getFailureThreshold(),
-                                    profile.getMonitorInterval(), profile.getMonitorWindow(),
-                                    profile.getProtocolType());
-                            releaseId(id);
-                            result.set(RpcResultBuilder.<Void>success().build());
-                        }
-                    }, callbackExecutorService);
-            } else {
-                String msg = String.format("Monitor profile with Id: %d does not exist", profileId);
-                LOG.info(msg);
-                result.set(RpcResultBuilder.<Void>success()
-                            .withWarning(ErrorType.PROTOCOL, "invalid-value", msg).build());
-            }
-            return result;
-        }, callbackExecutorService);
+                            @Override
+                            public void onSuccess(Void noarg) {
+                                MonitorProfile profile = optProfile.get();
+                                String id = getUniqueProfileKey(profile.getFailureThreshold(),
+                                        profile.getMonitorInterval(), profile.getMonitorWindow(),
+                                        profile.getProtocolType());
+                                releaseId(id);
+                                result.set(RpcResultBuilder.<MonitorProfileDeleteOutput>success().build());
+                            }
+                        }, callbackExecutorService);
+                    } else {
+                        String msg = String.format("Monitor profile with Id: %d does not exist", profileId);
+                        LOG.info(msg);
+                        result.set(RpcResultBuilder.<MonitorProfileDeleteOutput>success()
+                                .withWarning(ErrorType.PROTOCOL, "invalid-value", msg).build());
+                    }
+                    return result;
+                }, callbackExecutorService);
 
-        Futures.addCallback(writeFuture, new FutureCallback<RpcResult<Void>>() {
+        Futures.addCallback(writeFuture, new FutureCallback<RpcResult<MonitorProfileDeleteOutput>>() {
 
             @Override
             public void onFailure(Throwable error) {
                 String msg = String.format("Error when removing monitor profile %d from datastore", profileId);
                 LOG.error("Error when removing monitor profile {} from datastore", profileId, error);
-                result.set(RpcResultBuilder.<Void>failed().withError(ErrorType.APPLICATION, msg, error).build());
+                result.set(RpcResultBuilder.<MonitorProfileDeleteOutput>failed()
+                        .withError(ErrorType.APPLICATION, msg, error).build());
             }
 
             @Override
-            public void onSuccess(RpcResult<Void> noarg) {
+            public void onSuccess(RpcResult<MonitorProfileDeleteOutput> noarg) {
                 LOG.debug("Successfully removed Monitor Profile {}", profileId);
             }
         }, callbackExecutorService);
@@ -1061,9 +1076,9 @@ public class AlivenessMonitor extends AbstractClusteredSyncDataTreeChangeListene
     }
 
     @Override
-    public Future<RpcResult<Void>> monitorStop(MonitorStopInput input) {
+    public ListenableFuture<RpcResult<MonitorStopOutput>> monitorStop(MonitorStopInput input) {
         LOG.debug("Monitor Stop operation for monitor id - {}", input.getMonitorId());
-        SettableFuture<RpcResult<Void>> result = SettableFuture.create();
+        SettableFuture<RpcResult<MonitorStopOutput>> result = SettableFuture.create();
 
         final Long monitorId = input.getMonitorId();
         Optional<MonitoringInfo> optInfo =
@@ -1097,11 +1112,11 @@ public class AlivenessMonitor extends AbstractClusteredSyncDataTreeChangeListene
                 lockMap.remove(monitorKey);
             }
 
-            result.set(RpcResultBuilder.<Void>success().build());
+            result.set(RpcResultBuilder.<MonitorStopOutput>success().build());
         } else {
             String errorMsg = String.format("Do not have monitoring information associated with key %d", monitorId);
             LOG.error("Delete monitoring operation Failed - {}", errorMsg);
-            result.set(RpcResultBuilder.<Void>failed().withError(ErrorType.APPLICATION, errorMsg).build());
+            result.set(RpcResultBuilder.<MonitorStopOutput>failed().withError(ErrorType.APPLICATION, errorMsg).build());
         }
 
         return result;
index 626abfce03b3ac73fbd1203c9adb8c4044130f84..7058ee94ce5580df5b912ead4753341335719c77 100644 (file)
@@ -60,7 +60,9 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.arputil.rev160406.Ma
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.arputil.rev160406.OdlArputilService;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.arputil.rev160406.SendArpRequestInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.arputil.rev160406.SendArpRequestInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.arputil.rev160406.SendArpRequestOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.arputil.rev160406.SendArpResponseInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.arputil.rev160406.SendArpResponseOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.arputil.rev160406.interfaces.InterfaceAddress;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rpcs.rev160406.GetEgressActionsForInterfaceInputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rpcs.rev160406.GetEgressActionsForInterfaceOutput;
@@ -85,6 +87,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.Pa
 import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.SendToController;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.TransmitPacketInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.TransmitPacketInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.TransmitPacketOutput;
 import org.opendaylight.yangtools.concepts.ListenerRegistration;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.opendaylight.yangtools.yang.common.RpcError.ErrorType;
@@ -159,7 +162,7 @@ public class ArpUtilImpl extends AbstractLifecycle implements OdlArputilService,
     }
 
     @Override
-    public Future<RpcResult<GetMacOutput>> getMac(GetMacInput input) {
+    public ListenableFuture<RpcResult<GetMacOutput>> getMac(GetMacInput input) {
         try {
             final String dstIpAddress = getIpAddressInString(input.getIpaddress());
             LOG.trace("getMac rpc invoked for ip {}", dstIpAddress);
@@ -171,11 +174,11 @@ public class ArpUtilImpl extends AbstractLifecycle implements OdlArputilService,
             }
             SendArpRequestInputBuilder builder = new SendArpRequestInputBuilder()
                     .setInterfaceAddress(input.getInterfaceAddress()).setIpaddress(input.getIpaddress());
-            Future<RpcResult<Void>> arpReqFt = sendArpRequest(builder.build());
+            ListenableFuture<RpcResult<SendArpRequestOutput>> arpReqFt = sendArpRequest(builder.build());
             final SettableFuture<RpcResult<GetMacOutput>> ft = SettableFuture.create();
 
             Futures.addCallback(JdkFutureAdapters.listenInPoolThread(arpReqFt, threadPool),
-                    new FutureCallback<RpcResult<Void>>() {
+                    new FutureCallback<RpcResult<SendArpRequestOutput>>() {
                         @Override
                         public void onFailure(Throwable ex) {
                             RpcResultBuilder<GetMacOutput> resultBuilder = RpcResultBuilder.<GetMacOutput>failed()
@@ -184,7 +187,7 @@ public class ArpUtilImpl extends AbstractLifecycle implements OdlArputilService,
                         }
 
                         @Override
-                        public void onSuccess(RpcResult<Void> result) {
+                        public void onSuccess(RpcResult<SendArpRequestOutput> result) {
                             LOG.trace("Successfully sent the arp pkt out for ip {}", dstIpAddress);
                         }
                     }, MoreExecutors.directExecutor());
@@ -204,7 +207,7 @@ public class ArpUtilImpl extends AbstractLifecycle implements OdlArputilService,
     }
 
     @Override
-    public Future<RpcResult<Void>> sendArpRequest(SendArpRequestInput arpReqInput) {
+    public ListenableFuture<RpcResult<SendArpRequestOutput>> sendArpRequest(SendArpRequestInput arpReqInput) {
         LOG.trace("rpc sendArpRequest invoked for ip {}", arpReqInput.getIpaddress());
         BigInteger dpnId;
         byte[] payload;
@@ -213,8 +216,8 @@ public class ArpUtilImpl extends AbstractLifecycle implements OdlArputilService,
         byte[] dstIpBytes;
         byte[] srcMac;
 
-        RpcResultBuilder<Void> failureBuilder = RpcResultBuilder.failed();
-        RpcResultBuilder<Void> successBuilder = RpcResultBuilder.success();
+        RpcResultBuilder<SendArpRequestOutput> failureBuilder = RpcResultBuilder.failed();
+        RpcResultBuilder<SendArpRequestOutput> successBuilder = RpcResultBuilder.success();
 
         try {
             dstIpBytes = getIpAddressBytes(arpReqInput.getIpaddress());
@@ -276,7 +279,8 @@ public class ArpUtilImpl extends AbstractLifecycle implements OdlArputilService,
         return Futures.immediateFuture(successBuilder.build());
     }
 
-    public Future<RpcResult<Void>> sendPacketOut(BigInteger dpnId, byte[] payload, NodeConnectorRef ref) {
+    public ListenableFuture<RpcResult<TransmitPacketOutput>> sendPacketOut(
+            BigInteger dpnId, byte[] payload, NodeConnectorRef ref) {
         NodeConnectorRef nodeConnectorRef = MDSALUtil.getNodeConnRef(dpnId, "0xfffffffd");
         return packetProcessingService.transmitPacket(new TransmitPacketInputBuilder().setPayload(payload)
                 .setNode(new NodeRef(InstanceIdentifier.builder(Nodes.class)
@@ -284,8 +288,8 @@ public class ArpUtilImpl extends AbstractLifecycle implements OdlArputilService,
                 .setIngress(nodeConnectorRef).setEgress(ref).build());
     }
 
-    private Future<RpcResult<Void>> sendPacketOutWithActions(BigInteger dpnId, byte[] payload, NodeConnectorRef ref,
-                                                             List<Action> actions) {
+    private Future<RpcResult<TransmitPacketOutput>> sendPacketOutWithActions(
+            BigInteger dpnId, byte[] payload, NodeConnectorRef ref, List<Action> actions) {
         NodeConnectorRef nodeConnectorRef = MDSALUtil.getNodeConnRef(dpnId, "0xfffffffd");
         TransmitPacketInput transmitPacketInput = new TransmitPacketInputBuilder().setPayload(payload)
                 .setNode(new NodeRef(InstanceIdentifier.builder(Nodes.class)
@@ -322,7 +326,7 @@ public class ArpUtilImpl extends AbstractLifecycle implements OdlArputilService,
     }
 
     @Override
-    public Future<RpcResult<Void>> sendArpResponse(SendArpResponseInput input) {
+    public ListenableFuture<RpcResult<SendArpResponseOutput>> sendArpResponse(SendArpResponseInput input) {
         LOG.trace("sendArpResponse rpc invoked");
         BigInteger dpnId;
         byte[] payload;
@@ -362,9 +366,10 @@ public class ArpUtilImpl extends AbstractLifecycle implements OdlArputilService,
         } catch (UnknownHostException | PacketException | InterruptedException | UnsupportedEncodingException
                 | ExecutionException e) {
             LOG.error("failed to send arp response for {}: ", input.getSrcIpaddress(), e);
-            return RpcResultBuilder.<Void>failed().withError(ErrorType.APPLICATION, e.getMessage(), e).buildFuture();
+            return RpcResultBuilder.<SendArpResponseOutput>failed()
+                    .withError(ErrorType.APPLICATION, e.getMessage(), e).buildFuture();
         }
-        RpcResultBuilder<Void> rpcResultBuilder = RpcResultBuilder.success();
+        RpcResultBuilder<SendArpResponseOutput> rpcResultBuilder = RpcResultBuilder.success();
         return Futures.immediateFuture(rpcResultBuilder.build());
     }
 
index cd8fc698d058e3745b03b8cc5f516b35cfb70267..5d29af1670a8f6dc2409882cd58c3e8fc7002035 100644 (file)
@@ -14,9 +14,10 @@ import static org.opendaylight.genius.arputil.test.ArpUtilTestUtil.URI;
 import static org.opendaylight.yangtools.testutils.mockito.MoreAnswers.realOrException;
 
 import com.google.common.util.concurrent.Futures;
+import com.google.common.util.concurrent.ListenableFuture;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.concurrent.Future;
+
 import org.mockito.Mockito;
 import org.opendaylight.genius.mdsalutil.ActionInfo;
 import org.opendaylight.genius.mdsalutil.actions.ActionOutput;
@@ -42,7 +43,8 @@ public abstract class TestOdlInterfaceRpcService implements OdlInterfaceRpcServi
     }
 
     @Override
-    public Future<RpcResult<GetPortFromInterfaceOutput>> getPortFromInterface(GetPortFromInterfaceInput input) {
+    public ListenableFuture<RpcResult<GetPortFromInterfaceOutput>> getPortFromInterface(
+            GetPortFromInterfaceInput input) {
         RpcResultBuilder<GetPortFromInterfaceOutput> rpcResultBuilder;
         GetPortFromInterfaceOutputBuilder output = new GetPortFromInterfaceOutputBuilder().setDpid(DPN_ID)
                 .setPortname(INTERFACE_NAME).setPortno(PORT_NUMBER).setPhyAddress("1F:1F:1F:1F:1F:1F");
@@ -52,7 +54,7 @@ public abstract class TestOdlInterfaceRpcService implements OdlInterfaceRpcServi
     }
 
     @Override
-    public Future<RpcResult<GetEgressActionsForInterfaceOutput>>
+    public ListenableFuture<RpcResult<GetEgressActionsForInterfaceOutput>>
         getEgressActionsForInterface(GetEgressActionsForInterfaceInput input) {
 
         RpcResultBuilder<GetEgressActionsForInterfaceOutput> rpcResultBuilder;
@@ -70,7 +72,7 @@ public abstract class TestOdlInterfaceRpcService implements OdlInterfaceRpcServi
     }
 
     @Override
-    public Future<RpcResult<GetInterfaceFromIfIndexOutput>>
+    public ListenableFuture<RpcResult<GetInterfaceFromIfIndexOutput>>
         getInterfaceFromIfIndex(GetInterfaceFromIfIndexInput input) {
         RpcResultBuilder<GetInterfaceFromIfIndexOutput> rpcResultBuilder;
         GetInterfaceFromIfIndexOutputBuilder output = new GetInterfaceFromIfIndexOutputBuilder()
index 3550f1b285538216388fac868169a9a6a3b0ff6e..350e69a0aadc1f640877adcbd0adc472007e8321 100644 (file)
@@ -10,10 +10,12 @@ package org.opendaylight.genius.arputil.test;
 import static org.opendaylight.yangtools.testutils.mockito.MoreAnswers.realOrException;
 
 import com.google.common.util.concurrent.Futures;
-import java.util.concurrent.Future;
+import com.google.common.util.concurrent.ListenableFuture;
+
 import org.mockito.Mockito;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.PacketProcessingService;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.TransmitPacketInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.TransmitPacketOutput;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
 
@@ -24,8 +26,8 @@ public class TestPacketProcessingService implements PacketProcessingService {
     }
 
     @Override
-    public Future<RpcResult<Void>> transmitPacket(TransmitPacketInput input) {
-        RpcResultBuilder<Void> rpcResultBuilder = RpcResultBuilder.success();
+    public ListenableFuture<RpcResult<TransmitPacketOutput>> transmitPacket(TransmitPacketInput input) {
+        RpcResultBuilder<TransmitPacketOutput> rpcResultBuilder = RpcResultBuilder.success();
         return Futures.immediateFuture(rpcResultBuilder.build());
     }
 }
index 66b4f485502c5c9476688278b6623216ee58c6a3..21b81edcbf1a1b5a438c98fc3f9b8c33c0d1dd6a 100644 (file)
@@ -8,19 +8,27 @@
 package org.opendaylight.genius.testutils.itm;
 
 import com.google.common.collect.Lists;
+import com.google.common.util.concurrent.ListenableFuture;
 import java.math.BigInteger;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.Future;
+
 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.opendaylight.genius.itm.rpcs.rev160406.AddExternalTunnelEndpointInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.AddExternalTunnelEndpointOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.AddL2GwDeviceInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.AddL2GwDeviceOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.AddL2GwMlagDeviceInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.AddL2GwMlagDeviceOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.BuildExternalTunnelFromDpnsInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.BuildExternalTunnelFromDpnsOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.CreateTerminatingServiceActionsInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.CreateTerminatingServiceActionsOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.DeleteL2GwDeviceInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.DeleteL2GwDeviceOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.DeleteL2GwMlagDeviceInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.DeleteL2GwMlagDeviceOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.GetDpnEndpointIpsInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.GetDpnEndpointIpsOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.GetDpnEndpointIpsOutputBuilder;
@@ -45,9 +53,13 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.I
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.IsTunnelInternalOrExternalOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.ItmRpcService;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.RemoveExternalTunnelEndpointInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.RemoveExternalTunnelEndpointOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.RemoveExternalTunnelFromDpnsInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.RemoveExternalTunnelFromDpnsOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.RemoveTerminatingServiceActionsInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.RemoveTerminatingServiceActionsOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.SetBfdEnableOnTunnelInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.SetBfdEnableOnTunnelOutput;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
 
@@ -78,48 +90,53 @@ public final class ItmRpcTestImpl implements ItmRpcService {
     }
 
     @Override
-    public synchronized Future<RpcResult<Void>> buildExternalTunnelFromDpns(BuildExternalTunnelFromDpnsInput input) {
-        return RpcResultBuilder.<Void>success().buildFuture();
+    public synchronized ListenableFuture<RpcResult<BuildExternalTunnelFromDpnsOutput>> buildExternalTunnelFromDpns(
+            BuildExternalTunnelFromDpnsInput input) {
+        return RpcResultBuilder.<BuildExternalTunnelFromDpnsOutput>success().buildFuture();
     }
 
     @Override
-    public synchronized Future<RpcResult<Void>> removeExternalTunnelEndpoint(RemoveExternalTunnelEndpointInput input) {
-        return RpcResultBuilder.<Void>success().buildFuture();
+    public synchronized ListenableFuture<RpcResult<RemoveExternalTunnelEndpointOutput>> removeExternalTunnelEndpoint(
+            RemoveExternalTunnelEndpointInput input) {
+        return RpcResultBuilder.<RemoveExternalTunnelEndpointOutput>success().buildFuture();
     }
 
     @Override
-    public Future<RpcResult<GetDpnInfoOutput>> getDpnInfo(GetDpnInfoInput input) {
+    public ListenableFuture<RpcResult<GetDpnInfoOutput>> getDpnInfo(GetDpnInfoInput input) {
         throw new UnsupportedOperationException("getDpnInfo");
     }
 
     @Override
-    public synchronized Future<RpcResult<Void>> addL2GwMlagDevice(AddL2GwMlagDeviceInput input) {
-        return RpcResultBuilder.<Void>success().buildFuture();
+    public synchronized ListenableFuture<RpcResult<AddL2GwMlagDeviceOutput>> addL2GwMlagDevice(
+            AddL2GwMlagDeviceInput input) {
+        return RpcResultBuilder.<AddL2GwMlagDeviceOutput>success().buildFuture();
     }
 
     @Override
-    public synchronized Future<RpcResult<Void>> removeExternalTunnelFromDpns(RemoveExternalTunnelFromDpnsInput input) {
-        return RpcResultBuilder.<Void>success().buildFuture();
+    public synchronized ListenableFuture<RpcResult<RemoveExternalTunnelFromDpnsOutput>> removeExternalTunnelFromDpns(
+            RemoveExternalTunnelFromDpnsInput input) {
+        return RpcResultBuilder.<RemoveExternalTunnelFromDpnsOutput>success().buildFuture();
     }
 
     @Override
-    public synchronized Future<RpcResult<Void>> deleteL2GwDevice(DeleteL2GwDeviceInput input) {
-        return RpcResultBuilder.<Void>success().buildFuture();
+    public synchronized ListenableFuture<RpcResult<DeleteL2GwDeviceOutput>> deleteL2GwDevice(
+            DeleteL2GwDeviceInput input) {
+        return RpcResultBuilder.<DeleteL2GwDeviceOutput>success().buildFuture();
     }
 
     @Override
-    public synchronized Future<RpcResult<Void>> addL2GwDevice(AddL2GwDeviceInput input) {
-        return RpcResultBuilder.<Void>success().buildFuture();
+    public synchronized ListenableFuture<RpcResult<AddL2GwDeviceOutput>> addL2GwDevice(AddL2GwDeviceInput input) {
+        return RpcResultBuilder.<AddL2GwDeviceOutput>success().buildFuture();
     }
 
     @Override
-    public synchronized Future<RpcResult<IsTunnelInternalOrExternalOutput>> isTunnelInternalOrExternal(
+    public synchronized ListenableFuture<RpcResult<IsTunnelInternalOrExternalOutput>> isTunnelInternalOrExternal(
             IsTunnelInternalOrExternalInput input) {
         throw new UnsupportedOperationException("TODO");
     }
 
     @Override
-    public synchronized Future<RpcResult<GetTunnelInterfaceNameOutput>> getTunnelInterfaceName(
+    public synchronized ListenableFuture<RpcResult<GetTunnelInterfaceNameOutput>> getTunnelInterfaceName(
             GetTunnelInterfaceNameInput input) {
         String interfaceName = interfaceNames.get(input.getSourceDpid())
                 .get(new String(tepIps.get(input.getDestinationDpid()).getValue()));
@@ -129,14 +146,14 @@ public final class ItmRpcTestImpl implements ItmRpcService {
     }
 
     @Override
-    public synchronized Future<RpcResult<IsDcgwPresentOutput>> isDcgwPresent(IsDcgwPresentInput input) {
+    public synchronized ListenableFuture<RpcResult<IsDcgwPresentOutput>> isDcgwPresent(IsDcgwPresentInput input) {
         IsDcgwPresentOutput output = new IsDcgwPresentOutputBuilder().setRetVal(0L).build();
         return RpcResultBuilder.success(output).buildFuture();
     }
 
     @Override
-    public synchronized Future<RpcResult<GetExternalTunnelInterfaceNameOutput>> getExternalTunnelInterfaceName(
-            GetExternalTunnelInterfaceNameInput input) {
+    public synchronized ListenableFuture<RpcResult<GetExternalTunnelInterfaceNameOutput>>
+            getExternalTunnelInterfaceName(GetExternalTunnelInterfaceNameInput input) {
         String interfaceName = externalInterfaceNames.get(new BigInteger(input.getSourceNode(), 10))
                 .get(input.getDestinationNode());
         GetExternalTunnelInterfaceNameOutput output = new GetExternalTunnelInterfaceNameOutputBuilder()
@@ -146,53 +163,57 @@ public final class ItmRpcTestImpl implements ItmRpcService {
     }
 
     @Override
-    public synchronized Future<RpcResult<Void>> createTerminatingServiceActions(
-            CreateTerminatingServiceActionsInput input) {
-        return RpcResultBuilder.<Void>success().buildFuture();
+    public synchronized ListenableFuture<RpcResult<CreateTerminatingServiceActionsOutput>>
+        createTerminatingServiceActions(CreateTerminatingServiceActionsInput input) {
+        return RpcResultBuilder.<CreateTerminatingServiceActionsOutput>success().buildFuture();
     }
 
     @Override
-    public synchronized Future<RpcResult<GetDpnEndpointIpsOutput>> getDpnEndpointIps(GetDpnEndpointIpsInput input) {
+    public synchronized ListenableFuture<RpcResult<GetDpnEndpointIpsOutput>> getDpnEndpointIps(
+            GetDpnEndpointIpsInput input) {
         GetDpnEndpointIpsOutput output = new GetDpnEndpointIpsOutputBuilder()
                 .setNexthopipList(Lists.newArrayList(tepIps.get(input.getSourceDpid()))).build();
         return RpcResultBuilder.success(output).buildFuture();
     }
 
     @Override
-    public synchronized Future<RpcResult<Void>> deleteL2GwMlagDevice(DeleteL2GwMlagDeviceInput input) {
-        return RpcResultBuilder.<Void>success().buildFuture();
+    public synchronized ListenableFuture<RpcResult<DeleteL2GwMlagDeviceOutput>> deleteL2GwMlagDevice(
+            DeleteL2GwMlagDeviceInput input) {
+        return RpcResultBuilder.<DeleteL2GwMlagDeviceOutput>success().buildFuture();
     }
 
     @Override
-    public synchronized Future<RpcResult<GetInternalOrExternalInterfaceNameOutput>> getInternalOrExternalInterfaceName(
-            GetInternalOrExternalInterfaceNameInput input) {
+    public synchronized ListenableFuture<RpcResult<GetInternalOrExternalInterfaceNameOutput>>
+            getInternalOrExternalInterfaceName(GetInternalOrExternalInterfaceNameInput input) {
         throw new UnsupportedOperationException("TODO");
     }
 
     @Override
-    public synchronized Future<RpcResult<Void>> removeTerminatingServiceActions(
-            RemoveTerminatingServiceActionsInput input) {
-        return RpcResultBuilder.<Void>success().buildFuture();
+    public synchronized ListenableFuture<RpcResult<RemoveTerminatingServiceActionsOutput>>
+        removeTerminatingServiceActions(RemoveTerminatingServiceActionsInput input) {
+        return RpcResultBuilder.<RemoveTerminatingServiceActionsOutput>success().buildFuture();
     }
 
     @Override
-    public synchronized Future<RpcResult<Void>> addExternalTunnelEndpoint(AddExternalTunnelEndpointInput input) {
-        return RpcResultBuilder.<Void>success().buildFuture();
+    public synchronized ListenableFuture<RpcResult<AddExternalTunnelEndpointOutput>> addExternalTunnelEndpoint(
+            AddExternalTunnelEndpointInput input) {
+        return RpcResultBuilder.<AddExternalTunnelEndpointOutput>success().buildFuture();
     }
 
     @Override
-    public synchronized Future<RpcResult<Void>> setBfdEnableOnTunnel(SetBfdEnableOnTunnelInput input) {
+    public synchronized ListenableFuture<RpcResult<SetBfdEnableOnTunnelOutput>> setBfdEnableOnTunnel(
+            SetBfdEnableOnTunnelInput input) {
         throw new UnsupportedOperationException("TODO");
     }
 
     @Override
-    public synchronized Future<RpcResult<GetEgressActionsForTunnelOutput>>
+    public synchronized ListenableFuture<RpcResult<GetEgressActionsForTunnelOutput>>
         getEgressActionsForTunnel(GetEgressActionsForTunnelInput input) {
         throw new UnsupportedOperationException("TODO");
     }
 
     @Override
-    public synchronized Future<RpcResult<GetTunnelTypeOutput>> getTunnelType(GetTunnelTypeInput input) {
+    public synchronized ListenableFuture<RpcResult<GetTunnelTypeOutput>> getTunnelType(GetTunnelTypeInput input) {
         throw new UnsupportedOperationException("TODO");
     }
 }
index 7bf2ebd5a46838e0a53022e3e2115095866b6a7c..4c533b5045c5f33b5232f10188ebb43cdcaf7c34 100644 (file)
@@ -13,6 +13,8 @@ import static org.opendaylight.controller.md.sal.common.api.data.LogicalDatastor
 
 import com.google.common.base.Optional;
 import com.google.common.util.concurrent.Futures;
+import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.MoreExecutors;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
@@ -26,12 +28,12 @@ import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.ExecutionException;
-import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
 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.binding.api.WriteTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException;
@@ -56,10 +58,14 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.AllocateIdRangeOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.AllocateIdRangeOutputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.CreateIdPoolInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.CreateIdPoolOutput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.CreateIdPoolOutputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.DeleteIdPoolInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.DeleteIdPoolOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.IdManagerService;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.IdPools;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.ReleaseIdInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.ReleaseIdOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.id.pools.IdPool;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.id.pools.IdPoolBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.id.pools.IdPoolKey;
@@ -185,7 +191,7 @@ public class IdManager implements IdManagerService, IdManagerMonitor {
     }
 
     @Override
-    public Future<RpcResult<Void>> createIdPool(CreateIdPoolInput input) {
+    public ListenableFuture<RpcResult<CreateIdPoolOutput>> createIdPool(CreateIdPoolInput input) {
         LOG.info("createIdPool called with input {}", input);
         long low = input.getLow();
         long high = input.getHigh();
@@ -194,7 +200,7 @@ public class IdManager implements IdManagerService, IdManagerMonitor {
             String poolName = input.getPoolName().intern();
             try {
                 idUtils.lock(lockManager, poolName);
-                return txRunner.callWithNewWriteOnlyTransactionAndSubmit(tx -> {
+                return Futures.transform(txRunner.callWithNewWriteOnlyTransactionAndSubmit(tx -> {
                     IdPool idPool = createGlobalPool(tx, poolName, low, high, blockSize);
                     String localPoolName = idUtils.getLocalPoolName(poolName);
                     IdLocalPool idLocalPool = localPool.get(poolName);
@@ -202,7 +208,7 @@ public class IdManager implements IdManagerService, IdManagerMonitor {
                         createLocalPool(tx, localPoolName, idPool);
                         idUtils.updateChildPool(tx, idPool.getPoolName(), localPoolName);
                     }
-                });
+                }), unused -> new CreateIdPoolOutputBuilder().build(), MoreExecutors.directExecutor());
             } finally {
                 idUtils.unlock(lockManager, poolName);
             }
@@ -210,7 +216,7 @@ public class IdManager implements IdManagerService, IdManagerMonitor {
     }
 
     @Override
-    public Future<RpcResult<AllocateIdOutput>> allocateId(AllocateIdInput input) {
+    public ListenableFuture<RpcResult<AllocateIdOutput>> allocateId(AllocateIdInput input) {
         String idKey = input.getIdKey();
         String poolName = input.getPoolName();
         return FutureRpcResults.fromBuilder(LOG, "allocateId", input, () -> {
@@ -230,7 +236,7 @@ public class IdManager implements IdManagerService, IdManagerMonitor {
     }
 
     @Override
-    public Future<RpcResult<AllocateIdRangeOutput>> allocateIdRange(AllocateIdRangeInput input) {
+    public ListenableFuture<RpcResult<AllocateIdRangeOutput>> allocateIdRange(AllocateIdRangeInput input) {
         String idKey = input.getIdKey();
         String poolName = input.getPoolName();
         long size = input.getSize();
@@ -245,7 +251,7 @@ public class IdManager implements IdManagerService, IdManagerMonitor {
     }
 
     @Override
-    public Future<RpcResult<Void>> deleteIdPool(DeleteIdPoolInput input) {
+    public ListenableFuture<RpcResult<DeleteIdPoolOutput>> deleteIdPool(DeleteIdPoolInput input) {
         return FutureRpcResults.fromListenableFuture(LOG, "deleteIdPool", input, () -> {
             String poolName = input.getPoolName().intern();
             InstanceIdentifier<IdPool> idPoolToBeDeleted = idUtils.getIdPoolInstance(poolName);
@@ -258,12 +264,12 @@ public class IdManager implements IdManagerService, IdManagerMonitor {
                 singleTxDB.syncDelete(CONFIGURATION, idPoolToBeDeleted);
             }
             // TODO return the Future from a TBD asyncDelete instead.. BUT check that all callers @CheckReturnValue
-            return Futures.immediateFuture((Void) null);
+            return Futures.immediateFuture((DeleteIdPoolOutput) null);
         }).build();
     }
 
     @Override
-    public Future<RpcResult<Void>> releaseId(ReleaseIdInput input) {
+    public ListenableFuture<RpcResult<ReleaseIdOutput>> releaseId(ReleaseIdInput input) {
         String poolName = input.getPoolName();
         String idKey = input.getIdKey();
         String uniqueKey = idUtils.getUniqueKey(poolName, idKey);
@@ -271,7 +277,7 @@ public class IdManager implements IdManagerService, IdManagerMonitor {
             idUtils.lock(lockManager, uniqueKey);
             releaseIdFromLocalPool(poolName, idUtils.getLocalPoolName(poolName), idKey);
             // TODO return the Future from releaseIdFromLocalPool() instead.. check all callers @CheckReturnValue
-            return Futures.immediateFuture((Void) null);
+            return Futures.immediateFuture((ReleaseIdOutput) null);
         }).onFailureLogLevel(org.opendaylight.genius.tools.mdsal.rpc.FutureRpcResults.LogLevel.NONE).onFailure(e -> {
             if (e instanceof IdDoesNotExistException) {
                 // Do not log full stack trace in case ID does not exist
index 1196ff90b8b768454942862846968978d5319cfa..311043d1b1edc3b9aec2c94287aa51a529fdd22c 100644 (file)
@@ -44,8 +44,10 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.lockmanager.rev160413.LockInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.lockmanager.rev160413.LockInputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.lockmanager.rev160413.LockManagerService;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.lockmanager.rev160413.LockOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.lockmanager.rev160413.UnlockInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.lockmanager.rev160413.UnlockInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.lockmanager.rev160413.UnlockOutput;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.slf4j.Logger;
@@ -238,7 +240,7 @@ public class IdUtils {
 
     public void lock(LockManagerService lockManager, String poolName) throws IdManagerException {
         LockInput input = new LockInputBuilder().setLockName(poolName).build();
-        Future<RpcResult<Void>> result = lockManager.lock(input);
+        Future<RpcResult<LockOutput>> result = lockManager.lock(input);
         try {
             if (result != null && result.get().isSuccessful()) {
                 if (LOG.isDebugEnabled()) {
@@ -255,7 +257,7 @@ public class IdUtils {
 
     public void unlock(LockManagerService lockManager, String poolName) {
         UnlockInput input = new UnlockInputBuilder().setLockName(poolName).build();
-        Future<RpcResult<Void>> result = lockManager.unlock(input);
+        Future<RpcResult<UnlockOutput>> result = lockManager.unlock(input);
         try {
             if (result != null && result.get().isSuccessful()) {
                 if (LOG.isDebugEnabled()) {
index 351fb69e158b0e7ec5fecafb9c3996b161c78064..538b8fc93f30d972e2e65e4ea20968c8dd1bb853 100755 (executable)
@@ -15,6 +15,7 @@ import static org.opendaylight.genius.interfacemanager.globals.InterfaceInfo.Int
 
 import com.google.common.base.Optional;
 import com.google.common.collect.ImmutableMap;
+import com.google.common.util.concurrent.ListenableFuture;
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.math.BigInteger;
 import java.util.ArrayList;
@@ -67,6 +68,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.IdPools;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.ReleaseIdInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.ReleaseIdInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.ReleaseIdOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.id.pools.IdPool;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.id.pools.IdPoolKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.IfL2vlan;
@@ -420,8 +422,8 @@ public final class IfmUtil {
     public static void releaseId(IdManagerService idManager, String poolName, String idKey) {
         ReleaseIdInput idInput = new ReleaseIdInputBuilder().setPoolName(poolName).setIdKey(idKey).build();
         try {
-            Future<RpcResult<Void>> result = idManager.releaseId(idInput);
-            RpcResult<Void> rpcResult = result.get();
+            ListenableFuture<RpcResult<ReleaseIdOutput>> result = idManager.releaseId(idInput);
+            RpcResult<ReleaseIdOutput> rpcResult = result.get();
             if (!rpcResult.isSuccessful()) {
                 LOG.warn("RPC Call to release Id with Key {} returned with Errors {}", idKey, rpcResult.getErrors());
             }
index 0a5f14d5e091c5c10ab32a1fab1bdde57b39314c..19def4826f255fe6cbb9404ee06238d9a933a370 100644 (file)
@@ -60,6 +60,7 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.PhysAddress;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.CreateIdPoolInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.CreateIdPoolInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.CreateIdPoolOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.IdManagerService;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.config.rev160406.IfmConfig;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406._interface.child.info.InterfaceParentEntry;
@@ -176,7 +177,7 @@ public class InterfacemgrProvider implements AutoCloseable, IInterfaceManager {
         CreateIdPoolInput createPool = new CreateIdPoolInputBuilder().setPoolName(IfmConstants.IFM_IDPOOL_NAME)
                 .setLow(IfmConstants.IFM_ID_POOL_START).setHigh(IfmConstants.IFM_ID_POOL_END).build();
         // TODO: Error handling
-        Future<RpcResult<Void>> result = idManager.createIdPool(createPool);
+        ListenableFuture<RpcResult<CreateIdPoolOutput>> result = idManager.createIdPool(createPool);
         try {
             if (result != null && result.get().isSuccessful()) {
                 LOG.debug("Created IdPool for InterfaceMgr");
index 52769ad706f47e347e4cf0a2bedd5d3f0b2ed756..2e0af94a2b69088763a57db02c06406dddebd08a 100644 (file)
@@ -9,12 +9,14 @@ package org.opendaylight.genius.interfacemanager.commons;
 
 import com.google.common.base.Optional;
 import com.google.common.util.concurrent.JdkFutureAdapters;
+import com.google.common.util.concurrent.ListenableFuture;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Future;
 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.ReadTransaction;
 import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
@@ -32,6 +34,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411.MonitorProfileCreateOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411.MonitorProfileDeleteInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411.MonitorProfileDeleteInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411.MonitorProfileDeleteOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411.MonitorProfileGetInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411.MonitorProfileGetInputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411.MonitorProfileGetOutput;
@@ -40,6 +43,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411.MonitorStartOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411.MonitorStopInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411.MonitorStopInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411.MonitorStopOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411.MonitoringMode;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411.monitor.params.SourceBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.alivenessmonitor.rev160411.monitor.profile.create.input.Profile;
@@ -125,7 +129,7 @@ public final class AlivenessMonitorUtils {
                 if (interfaceName != null) {
                     MonitorStopInput input = new MonitorStopInputBuilder().setMonitorId(monitorId).build();
 
-                    Future<RpcResult<Void>> future = alivenessMonitorService.monitorStop(input);
+                    ListenableFuture<RpcResult<MonitorStopOutput>> future = alivenessMonitorService.monitorStop(input);
                     ListenableFutures.addErrorLogging(JdkFutureAdapters.listenInPoolThread(future),
                             LOG, "Stop LLDP monitoring for {}", trunkInterface);
 
@@ -202,7 +206,8 @@ public final class AlivenessMonitorUtils {
                 MonitorProfileDeleteInput profileDeleteInput = new MonitorProfileDeleteInputBuilder()
                         .setProfileId(profileId).build();
 
-                Future<RpcResult<Void>> future = alivenessMonitorService.monitorProfileDelete(profileDeleteInput);
+                ListenableFuture<RpcResult<MonitorProfileDeleteOutput>> future =
+                        alivenessMonitorService.monitorProfileDelete(profileDeleteInput);
                 ListenableFutures.addErrorLogging(JdkFutureAdapters.listenInPoolThread(future),
                         LOG, "Delete monitor profile {}", interfaceName);
             }
index 3933c5e7c49c899c14b2e6b8e9286e79695eb58a..35c0d7112600aa1be41900598f63148ff5679f93 100644 (file)
@@ -11,9 +11,10 @@ import static org.opendaylight.genius.tools.mdsal.rpc.FutureRpcResults.LogLevel.
 import static org.opendaylight.genius.tools.mdsal.rpc.FutureRpcResults.LogLevel.NONE;
 import static org.opendaylight.genius.tools.mdsal.rpc.FutureRpcResults.fromListenableFuture;
 
-import java.util.concurrent.Future;
+import com.google.common.util.concurrent.ListenableFuture;
 import javax.inject.Inject;
 import javax.inject.Singleton;
+
 import org.opendaylight.genius.interfacemanager.interfaces.InterfaceManagerService;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rpcs.rev160406.GetDpidFromInterfaceInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rpcs.rev160406.GetDpidFromInterfaceOutput;
@@ -53,59 +54,61 @@ public class InterfaceManagerRpcService implements OdlInterfaceRpcService {
     }
 
     @Override
-    public Future<RpcResult<GetEndpointIpForDpnOutput>> getEndpointIpForDpn(GetEndpointIpForDpnInput input) {
+    public ListenableFuture<RpcResult<GetEndpointIpForDpnOutput>> getEndpointIpForDpn(GetEndpointIpForDpnInput input) {
         return fromListenableFuture(LOG, input, () -> interfaceManagerService.getEndpointIpForDpn(input)).build();
     }
 
     @Override
-    public Future<RpcResult<GetInterfaceTypeOutput>> getInterfaceType(GetInterfaceTypeInput input) {
+    public ListenableFuture<RpcResult<GetInterfaceTypeOutput>> getInterfaceType(GetInterfaceTypeInput input) {
         return fromListenableFuture(LOG, input, () -> interfaceManagerService.getInterfaceType(input)).build();
     }
 
     @Override
-    public Future<RpcResult<GetTunnelTypeOutput>> getTunnelType(GetTunnelTypeInput input) {
+    public ListenableFuture<RpcResult<GetTunnelTypeOutput>> getTunnelType(GetTunnelTypeInput input) {
         return fromListenableFuture(LOG, input, () -> interfaceManagerService.getTunnelType(input)).build();
     }
 
     @Override
-    public Future<RpcResult<GetPortFromInterfaceOutput>> getPortFromInterface(GetPortFromInterfaceInput input) {
+    public ListenableFuture<RpcResult<GetPortFromInterfaceOutput>> getPortFromInterface(
+            GetPortFromInterfaceInput input) {
         return fromListenableFuture(LOG, input, () -> interfaceManagerService.getPortFromInterface(input)).build();
     }
 
     @Override
-    public Future<RpcResult<GetNodeconnectorIdFromInterfaceOutput>> getNodeconnectorIdFromInterface(
+    public ListenableFuture<RpcResult<GetNodeconnectorIdFromInterfaceOutput>> getNodeconnectorIdFromInterface(
             GetNodeconnectorIdFromInterfaceInput input) {
         return fromListenableFuture(LOG, input, () -> interfaceManagerService.getNodeconnectorIdFromInterface(input))
                 .build();
     }
 
     @Override
-    public Future<RpcResult<GetInterfaceFromIfIndexOutput>> getInterfaceFromIfIndex(
+    public ListenableFuture<RpcResult<GetInterfaceFromIfIndexOutput>> getInterfaceFromIfIndex(
             GetInterfaceFromIfIndexInput input) {
         return fromListenableFuture(LOG, input, () -> interfaceManagerService.getInterfaceFromIfIndex(input)).build();
     }
 
     @Override
-    public Future<RpcResult<GetDpnInterfaceListOutput>> getDpnInterfaceList(GetDpnInterfaceListInput input) {
+    public ListenableFuture<RpcResult<GetDpnInterfaceListOutput>> getDpnInterfaceList(GetDpnInterfaceListInput input) {
         return fromListenableFuture(LOG, input, () -> interfaceManagerService.getDpnInterfaceList(input)).build();
     }
 
     @Override
-    public Future<RpcResult<GetEgressInstructionsForInterfaceOutput>> getEgressInstructionsForInterface(
+    public ListenableFuture<RpcResult<GetEgressInstructionsForInterfaceOutput>> getEgressInstructionsForInterface(
             GetEgressInstructionsForInterfaceInput input) {
         return fromListenableFuture(LOG, input, () -> interfaceManagerService.getEgressInstructionsForInterface(input))
                 .onFailureLogLevel(DEBUG).build();
     }
 
     @Override
-    public Future<RpcResult<GetEgressActionsForInterfaceOutput>> getEgressActionsForInterface(
+    public ListenableFuture<RpcResult<GetEgressActionsForInterfaceOutput>> getEgressActionsForInterface(
             GetEgressActionsForInterfaceInput input) {
         return fromListenableFuture(LOG, input, () -> interfaceManagerService.getEgressActionsForInterface(input))
                 .onFailureLogLevel(DEBUG).build();
     }
 
     @Override
-    public Future<RpcResult<GetDpidFromInterfaceOutput>> getDpidFromInterface(GetDpidFromInterfaceInput input) {
+    public ListenableFuture<RpcResult<GetDpidFromInterfaceOutput>> getDpidFromInterface(
+            GetDpidFromInterfaceInput input) {
         String interfaceName = input.getIntfName();
         return fromListenableFuture(LOG, input, () -> interfaceManagerService.getDpidFromInterface(input))
                 .withRpcErrorMessage(e -> getDpidFromInterfaceErrorMessage(interfaceName, e.getMessage()))
index b8e7616c5d63153b27b4757dd014cf88993a7ea8..3cb0fdc061661394de694f8789203aac6c9e8794 100644 (file)
@@ -8,17 +8,18 @@
 package org.opendaylight.genius.itm.impl;
 
 import com.google.common.base.Preconditions;
+import com.google.common.util.concurrent.ListenableFuture;
 import java.math.BigInteger;
 import java.util.Collection;
 import java.util.List;
 import java.util.concurrent.ExecutionException;
-import java.util.concurrent.Future;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import javax.annotation.PostConstruct;
 import javax.annotation.PreDestroy;
 import javax.inject.Inject;
 import javax.inject.Singleton;
+
 import org.apache.felix.service.command.CommandSession;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
@@ -46,6 +47,7 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.CreateIdPoolInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.CreateIdPoolInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.CreateIdPoolOutput;
 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.VtepConfigSchemas;
@@ -165,7 +167,7 @@ public class ItmProvider implements AutoCloseable, IITMProvider /*,ItmStateServi
                 .setHigh(new BigInteger(ITMConstants.ITM_IDPOOL_SIZE).longValue())
                 .build();
         try {
-            Future<RpcResult<Void>> result = idManager.createIdPool(createPool);
+            ListenableFuture<RpcResult<CreateIdPoolOutput>> result = idManager.createIdPool(createPool);
             if (result != null && result.get().isSuccessful()) {
                 LOG.debug("Created IdPool for ITM Service");
             }
index 3739b4750f572fdb47744c0892c95de0260b20df..9baaae4f6798464948973c0ac24b43c208b4f1a4 100644 (file)
@@ -9,17 +9,18 @@ package org.opendaylight.genius.itm.itmdirecttunnels.renderer.ovs.utilities;
 
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.ImmutableMap.Builder;
+import com.google.common.util.concurrent.ListenableFuture;
 import java.math.BigInteger;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
 import java.util.concurrent.ExecutionException;
-import java.util.concurrent.Future;
 import java.util.function.Predicate;
 import java.util.regex.Pattern;
 import javax.inject.Inject;
 import javax.inject.Singleton;
+
 import org.opendaylight.genius.interfacemanager.globals.IfmConstants;
 import org.opendaylight.genius.itm.globals.ITMConstants;
 import org.opendaylight.genius.itm.impl.ITMBatchingUtils;
@@ -44,6 +45,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.IdManagerService;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.ReleaseIdInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.ReleaseIdInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.ReleaseIdOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.IfL2vlan;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.IfTunnel;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.TunnelMonitoringTypeBfd;
@@ -437,8 +439,8 @@ public final class DirectTunnelUtils {
     private void releaseId(String poolName, String idKey) throws InterruptedException, ExecutionException,
             OperationFailedException {
         ReleaseIdInput idInput = new ReleaseIdInputBuilder().setPoolName(poolName).setIdKey(idKey).build();
-        Future<RpcResult<Void>> result = idManagerService.releaseId(idInput);
-        RpcResult<Void> rpcResult = result.get();
+        ListenableFuture<RpcResult<ReleaseIdOutput>> result = idManagerService.releaseId(idInput);
+        RpcResult<ReleaseIdOutput> rpcResult = result.get();
         if (!rpcResult.isSuccessful()) {
             LOG.error("RPC Call to release Id with Key {} returned with Errors {}", idKey, rpcResult.getErrors());
             Optional<RpcError> rpcError = rpcResult.getErrors().stream().findFirst();
index 71ff9d2fc2c65c23dbd7dfd272cfe1ad83d05e4d..c1595a493de029bece64f1ea6460925959d83949 100644 (file)
@@ -25,7 +25,6 @@ import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.concurrent.Future;
 import java.util.stream.Collectors;
 import javax.annotation.Nonnull;
 import javax.annotation.PostConstruct;
@@ -91,12 +90,19 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.transp
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.transport.zones.transport.zone.subnets.DeviceVtepsKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.transport.zones.transport.zone.subnets.Vteps;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.AddExternalTunnelEndpointInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.AddExternalTunnelEndpointOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.AddL2GwDeviceInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.AddL2GwDeviceOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.AddL2GwMlagDeviceInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.AddL2GwMlagDeviceOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.BuildExternalTunnelFromDpnsInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.BuildExternalTunnelFromDpnsOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.CreateTerminatingServiceActionsInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.CreateTerminatingServiceActionsOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.DeleteL2GwDeviceInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.DeleteL2GwDeviceOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.DeleteL2GwMlagDeviceInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.DeleteL2GwMlagDeviceOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.GetDpnEndpointIpsInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.GetDpnEndpointIpsOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.GetDpnEndpointIpsOutputBuilder;
@@ -126,9 +132,13 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.I
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.IsTunnelInternalOrExternalOutputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.ItmRpcService;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.RemoveExternalTunnelEndpointInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.RemoveExternalTunnelEndpointOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.RemoveExternalTunnelFromDpnsInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.RemoveExternalTunnelFromDpnsOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.RemoveTerminatingServiceActionsInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.RemoveTerminatingServiceActionsOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.SetBfdEnableOnTunnelInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.SetBfdEnableOnTunnelOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.get.dpn.info.output.Computes;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.get.dpn.info.output.ComputesBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes;
@@ -183,7 +193,8 @@ public class ItmManagerRpcService implements ItmRpcService {
     }
 
     @Override
-    public Future<RpcResult<GetTunnelInterfaceNameOutput>> getTunnelInterfaceName(GetTunnelInterfaceNameInput input) {
+    public ListenableFuture<RpcResult<GetTunnelInterfaceNameOutput>> getTunnelInterfaceName(
+            GetTunnelInterfaceNameInput input) {
         RpcResultBuilder<GetTunnelInterfaceNameOutput> resultBld = null;
         BigInteger sourceDpn = input.getSourceDpid();
         BigInteger destinationDpn = input.getDestinationDpid();
@@ -216,7 +227,7 @@ public class ItmManagerRpcService implements ItmRpcService {
     }
 
     @Override
-    public Future<RpcResult<GetEgressActionsForTunnelOutput>>
+    public ListenableFuture<RpcResult<GetEgressActionsForTunnelOutput>>
         getEgressActionsForTunnel(GetEgressActionsForTunnelInput input) {
         String tunnelName = input.getIntfName();
         if (tunnelName == null) {
@@ -263,7 +274,7 @@ public class ItmManagerRpcService implements ItmRpcService {
     }
 
     @Override
-    public Future<RpcResult<GetTunnelTypeOutput>> getTunnelType(GetTunnelTypeInput input) {
+    public ListenableFuture<RpcResult<GetTunnelTypeOutput>> getTunnelType(GetTunnelTypeInput input) {
         String tunnelName = input.getIntfName();
         if (tunnelName == null) {
             return Futures.immediateFuture(RpcResultBuilder.<GetTunnelTypeOutput>failed()
@@ -307,17 +318,18 @@ public class ItmManagerRpcService implements ItmRpcService {
     }
 
     @Override
-    public Future<RpcResult<Void>> setBfdEnableOnTunnel(SetBfdEnableOnTunnelInput input) {
+    public ListenableFuture<RpcResult<SetBfdEnableOnTunnelOutput>> setBfdEnableOnTunnel(
+            SetBfdEnableOnTunnelInput input) {
         //TODO
         return null;
     }
 
 
     @Override
-    public Future<RpcResult<Void>> removeExternalTunnelEndpoint(
+    public ListenableFuture<RpcResult<RemoveExternalTunnelEndpointOutput>> removeExternalTunnelEndpoint(
             RemoveExternalTunnelEndpointInput input) {
         //Ignore the Futures for now
-        final SettableFuture<RpcResult<Void>> result = SettableFuture.create();
+        final SettableFuture<RpcResult<RemoveExternalTunnelEndpointOutput>> result = SettableFuture.create();
         Collection<DPNTEPsInfo> meshedDpnList = dpnTEPsInfoCache.getAllPresent();
         ItmExternalTunnelDeleteWorker.deleteTunnels(dataBroker, meshedDpnList,
                 input.getDestinationIp(), input.getTunnelType());
@@ -329,7 +341,7 @@ public class ItmManagerRpcService implements ItmRpcService {
         Futures.addCallback(futureCheck, new FutureCallback<Void>() {
 
             @Override public void onSuccess(Void voidInstance) {
-                result.set(RpcResultBuilder.<Void>success().build());
+                result.set(RpcResultBuilder.<RemoveExternalTunnelEndpointOutput>success().build());
             }
 
             @Override public void onFailure(Throwable error) {
@@ -337,7 +349,7 @@ public class ItmManagerRpcService implements ItmRpcService {
                         + " in datastore and tunnel type " + input.getTunnelType();
                 LOG.error("Unable to delete DcGatewayIp {} in datastore and tunnel type {}", input.getDestinationIp(),
                         input.getTunnelType());
-                result.set(RpcResultBuilder.<Void>failed()
+                result.set(RpcResultBuilder.<RemoveExternalTunnelEndpointOutput>failed()
                         .withError(RpcError.ErrorType.APPLICATION, msg, error).build());
             }
         });
@@ -345,22 +357,22 @@ public class ItmManagerRpcService implements ItmRpcService {
     }
 
     @Override
-    public Future<RpcResult<Void>> removeExternalTunnelFromDpns(
+    public ListenableFuture<RpcResult<RemoveExternalTunnelFromDpnsOutput>> removeExternalTunnelFromDpns(
             RemoveExternalTunnelFromDpnsInput input) {
         //Ignore the Futures for now
-        final SettableFuture<RpcResult<Void>> result = SettableFuture.create();
+        final SettableFuture<RpcResult<RemoveExternalTunnelFromDpnsOutput>> result = SettableFuture.create();
         List<DPNTEPsInfo> cfgDpnList = ItmUtils.getDpnTepListFromDpnId(dpnTEPsInfoCache, input.getDpnId()) ;
         ItmExternalTunnelDeleteWorker.deleteTunnels(dataBroker, cfgDpnList,
                 input.getDestinationIp(), input.getTunnelType());
-        result.set(RpcResultBuilder.<Void>success().build());
+        result.set(RpcResultBuilder.<RemoveExternalTunnelFromDpnsOutput>success().build());
         return result;
     }
 
     @Override
-    public Future<RpcResult<Void>> buildExternalTunnelFromDpns(
+    public ListenableFuture<RpcResult<BuildExternalTunnelFromDpnsOutput>> buildExternalTunnelFromDpns(
             BuildExternalTunnelFromDpnsInput input) {
         //Ignore the Futures for now
-        final SettableFuture<RpcResult<Void>> result = SettableFuture.create();
+        final SettableFuture<RpcResult<BuildExternalTunnelFromDpnsOutput>> result = SettableFuture.create();
         List<ListenableFuture<Void>> extTunnelResultList = externalTunnelAddWorker
             .buildTunnelsFromDpnToExternalEndPoint(input.getDpnId(), input.getDestinationIp(),input.getTunnelType());
         for (ListenableFuture<Void> extTunnelResult : extTunnelResultList) {
@@ -368,14 +380,14 @@ public class ItmManagerRpcService implements ItmRpcService {
 
                 @Override
                 public void onSuccess(Void voidInstance) {
-                    result.set(RpcResultBuilder.<Void>success().build());
+                    result.set(RpcResultBuilder.<BuildExternalTunnelFromDpnsOutput>success().build());
                 }
 
                 @Override
                 public void onFailure(Throwable error) {
                     String msg = "Unable to create ext tunnel";
                     LOG.error("create ext tunnel failed. {}.", msg, error);
-                    result.set(RpcResultBuilder.<Void>failed()
+                    result.set(RpcResultBuilder.<BuildExternalTunnelFromDpnsOutput>failed()
                             .withError(RpcError.ErrorType.APPLICATION, msg, error).build());
                 }
             });
@@ -384,12 +396,12 @@ public class ItmManagerRpcService implements ItmRpcService {
     }
 
     @Override
-    public Future<RpcResult<Void>> addExternalTunnelEndpoint(
+    public ListenableFuture<RpcResult<AddExternalTunnelEndpointOutput>> addExternalTunnelEndpoint(
             AddExternalTunnelEndpointInput input) {
         // TODO Auto-generated method stub
 
         //Ignore the Futures for now
-        final SettableFuture<RpcResult<Void>> result = SettableFuture.create();
+        final SettableFuture<RpcResult<AddExternalTunnelEndpointOutput>> result = SettableFuture.create();
         Collection<DPNTEPsInfo> meshedDpnList = dpnTEPsInfoCache.getAllPresent();
         externalTunnelAddWorker.buildTunnelsToExternalEndPoint(meshedDpnList,
                 input.getDestinationIp(), input.getTunnelType());
@@ -404,7 +416,7 @@ public class ItmManagerRpcService implements ItmRpcService {
         Futures.addCallback(futureCheck, new FutureCallback<Void>() {
 
             @Override public void onSuccess(Void voidInstance) {
-                result.set(RpcResultBuilder.<Void>success().build());
+                result.set(RpcResultBuilder.<AddExternalTunnelEndpointOutput>success().build());
             }
 
             @Override public void onFailure(Throwable error) {
@@ -414,7 +426,7 @@ public class ItmManagerRpcService implements ItmRpcService {
 
                 LOG.error("Unable to create DcGatewayIp in datastore for ip {} and tunnel type {}",
                         input.getDestinationIp() , input.getTunnelType());
-                result.set(RpcResultBuilder.<Void>failed()
+                result.set(RpcResultBuilder.<AddExternalTunnelEndpointOutput>failed()
                         .withError(RpcError.ErrorType.APPLICATION, msg, error).build());
             }
         });
@@ -422,7 +434,7 @@ public class ItmManagerRpcService implements ItmRpcService {
     }
 
     @Override
-    public Future<RpcResult<GetExternalTunnelInterfaceNameOutput>> getExternalTunnelInterfaceName(
+    public ListenableFuture<RpcResult<GetExternalTunnelInterfaceNameOutput>> getExternalTunnelInterfaceName(
             GetExternalTunnelInterfaceNameInput input) {
         SettableFuture.create();
         RpcResultBuilder<GetExternalTunnelInterfaceNameOutput> resultBld;
@@ -447,11 +459,11 @@ public class ItmManagerRpcService implements ItmRpcService {
     }
 
     @Override
-    public Future<RpcResult<java.lang.Void>>
+    public ListenableFuture<RpcResult<CreateTerminatingServiceActionsOutput>>
         createTerminatingServiceActions(final CreateTerminatingServiceActionsInput input) {
         LOG.info("create terminatingServiceAction on DpnId = {} for service id {} and instructions {}",
                 input.getDpnId() , input.getServiceId(), input.getInstruction());
-        final SettableFuture<RpcResult<Void>> result = SettableFuture.create();
+        final SettableFuture<RpcResult<CreateTerminatingServiceActionsOutput>> result = SettableFuture.create();
         int serviceId = input.getServiceId() ;
         final List<MatchInfo> mkMatches = getTunnelMatchesForServiceId(serviceId);
 
@@ -466,14 +478,15 @@ public class ItmManagerRpcService implements ItmRpcService {
 
             @Override
             public void onSuccess(Void voidInstance) {
-                result.set(RpcResultBuilder.<Void>success().build());
+                result.set(RpcResultBuilder.<CreateTerminatingServiceActionsOutput>success().build());
             }
 
             @Override
             public void onFailure(Throwable error) {
                 String msg = String.format("Unable to install terminating service flow for %s", input.getDpnId());
                 LOG.error("create terminating service actions failed. {}", msg, error);
-                result.set(RpcResultBuilder.<Void>failed().withError(RpcError.ErrorType.APPLICATION, msg, error)
+                result.set(RpcResultBuilder.<CreateTerminatingServiceActionsOutput>failed()
+                        .withError(RpcError.ErrorType.APPLICATION, msg, error)
                         .build());
             }
         }, MoreExecutors.directExecutor());
@@ -482,11 +495,11 @@ public class ItmManagerRpcService implements ItmRpcService {
     }
 
     @Override
-    public Future<RpcResult<java.lang.Void>>
+    public ListenableFuture<RpcResult<RemoveTerminatingServiceActionsOutput>>
         removeTerminatingServiceActions(final RemoveTerminatingServiceActionsInput input) {
         LOG.info("remove terminatingServiceActions called with DpnId = {} and serviceId = {}",
                 input.getDpnId(), input.getServiceId());
-        final SettableFuture<RpcResult<Void>> result = SettableFuture.create();
+        final SettableFuture<RpcResult<RemoveTerminatingServiceActionsOutput>> result = SettableFuture.create();
         Flow terminatingServiceTableFlow = MDSALUtil.buildFlowNew(NwConstants.INTERNAL_TUNNEL_TABLE,
                 getFlowRef(NwConstants.INTERNAL_TUNNEL_TABLE,input.getServiceId()), 5,
                 String.format("%s:%d","ITM Flow Entry ",input.getServiceId()), 0, 0,
@@ -499,14 +512,15 @@ public class ItmManagerRpcService implements ItmRpcService {
 
             @Override
             public void onSuccess(Void voidInstance) {
-                result.set(RpcResultBuilder.<Void>success().build());
+                result.set(RpcResultBuilder.<RemoveTerminatingServiceActionsOutput>success().build());
             }
 
             @Override
             public void onFailure(Throwable error) {
                 String msg = String.format("Unable to remove terminating service flow for %s", input.getDpnId());
                 LOG.error("remove terminating service actions failed. {}", msg, error);
-                result.set(RpcResultBuilder.<Void>failed().withError(RpcError.ErrorType.APPLICATION, msg, error)
+                result.set(RpcResultBuilder.<RemoveTerminatingServiceActionsOutput>failed()
+                        .withError(RpcError.ErrorType.APPLICATION, msg, error)
                         .build());
             }
         }, MoreExecutors.directExecutor());
@@ -530,7 +544,7 @@ public class ItmManagerRpcService implements ItmRpcService {
     }
 
     @Override
-    public Future<RpcResult<GetInternalOrExternalInterfaceNameOutput>> getInternalOrExternalInterfaceName(
+    public ListenableFuture<RpcResult<GetInternalOrExternalInterfaceNameOutput>> getInternalOrExternalInterfaceName(
             GetInternalOrExternalInterfaceNameInput input) {
         RpcResultBuilder<GetInternalOrExternalInterfaceNameOutput> resultBld = failed();
         BigInteger srcDpn = input.getSourceDpid() ;
@@ -592,8 +606,8 @@ public class ItmManagerRpcService implements ItmRpcService {
 
     @SuppressWarnings("checkstyle:IllegalCatch")
     @Override
-    public Future<RpcResult<java.lang.Void>> deleteL2GwDevice(DeleteL2GwDeviceInput input) {
-        final SettableFuture<RpcResult<Void>> result = SettableFuture.create();
+    public ListenableFuture<RpcResult<DeleteL2GwDeviceOutput>> deleteL2GwDevice(DeleteL2GwDeviceInput input) {
+        final SettableFuture<RpcResult<DeleteL2GwDeviceOutput>> result = SettableFuture.create();
         boolean foundVxlanTzone = false;
         try {
             final IpAddress hwIp = input.getIpAddress();
@@ -605,7 +619,7 @@ public class ItmManagerRpcService implements ItmRpcService {
                 TransportZones transportZones = transportZonesOptional.get();
                 if (transportZones.getTransportZone() == null || transportZones.getTransportZone().isEmpty()) {
                     LOG.error("No teps configured");
-                    result.set(RpcResultBuilder.<Void>failed()
+                    result.set(RpcResultBuilder.<DeleteL2GwDeviceOutput>failed()
                             .withError(RpcError.ErrorType.APPLICATION, "No teps Configured").build());
                     return result;
                 }
@@ -616,7 +630,7 @@ public class ItmManagerRpcService implements ItmRpcService {
                     foundVxlanTzone = true;
                     String transportZone = tzone.getZoneName();
                     if (tzone.getSubnets() == null || tzone.getSubnets().isEmpty()) {
-                        result.set(RpcResultBuilder.<Void>failed()
+                        result.set(RpcResultBuilder.<DeleteL2GwDeviceOutput>failed()
                                 .withError(RpcError.ErrorType.APPLICATION, "No subnets Configured").build());
                         return result;
                     }
@@ -635,33 +649,33 @@ public class ItmManagerRpcService implements ItmRpcService {
                     Futures.addCallback(futureCheck, new FutureCallback<Void>() {
 
                         @Override public void onSuccess(Void voidInstance) {
-                            result.set(RpcResultBuilder.<Void>success().build());
+                            result.set(RpcResultBuilder.<DeleteL2GwDeviceOutput>success().build());
                         }
 
                         @Override public void onFailure(Throwable error) {
                             String msg = String.format("Unable to delete HwVtep %s from datastore", nodeId);
                             LOG.error("Unable to delete HwVtep {}, {} from datastore", nodeId, hwIp);
-                            result.set(RpcResultBuilder.<Void>failed()
+                            result.set(RpcResultBuilder.<DeleteL2GwDeviceOutput>failed()
                                     .withError(RpcError.ErrorType.APPLICATION, msg, error).build());
                         }
                     });
 
                 }
             } else {
-                result.set(RpcResultBuilder.<Void>failed()
+                result.set(RpcResultBuilder.<DeleteL2GwDeviceOutput>failed()
                         .withError(RpcError.ErrorType.APPLICATION, "No TransportZones configured").build());
                 return result;
             }
 
             if (!foundVxlanTzone) {
-                result.set(RpcResultBuilder.<Void>failed()
+                result.set(RpcResultBuilder.<DeleteL2GwDeviceOutput>failed()
                         .withError(RpcError.ErrorType.APPLICATION, "No VxLan TransportZones configured")
                         .build());
             }
 
             return result;
         } catch (Exception e) {
-            RpcResultBuilder<java.lang.Void> resultBuilder = RpcResultBuilder.<Void>failed()
+            RpcResultBuilder<DeleteL2GwDeviceOutput> resultBuilder = RpcResultBuilder.<DeleteL2GwDeviceOutput>failed()
                     .withError(RpcError.ErrorType.APPLICATION, "Deleting l2 Gateway to DS Failed", e);
             return Futures.immediateFuture(resultBuilder.build());
         }
@@ -669,9 +683,9 @@ public class ItmManagerRpcService implements ItmRpcService {
 
     @SuppressWarnings("checkstyle:IllegalCatch")
     @Override
-    public Future<RpcResult<java.lang.Void>> addL2GwDevice(AddL2GwDeviceInput input) {
+    public ListenableFuture<RpcResult<AddL2GwDeviceOutput>> addL2GwDevice(AddL2GwDeviceInput input) {
 
-        final SettableFuture<RpcResult<Void>> result = SettableFuture.create();
+        final SettableFuture<RpcResult<AddL2GwDeviceOutput>> result = SettableFuture.create();
         boolean foundVxlanTzone = false;
         try {
             final IpAddress hwIp = input.getIpAddress();
@@ -685,7 +699,7 @@ public class ItmManagerRpcService implements ItmRpcService {
                 TransportZones transportZones = transportZonesOptional.get();
                 if (transportZones.getTransportZone() == null || transportZones.getTransportZone().isEmpty()) {
                     LOG.error("No transportZone configured");
-                    result.set(RpcResultBuilder.<Void>failed()
+                    result.set(RpcResultBuilder.<AddL2GwDeviceOutput>failed()
                             .withError(RpcError.ErrorType.APPLICATION, "No transportZone Configured").build());
                     return result;
                 }
@@ -714,33 +728,33 @@ public class ItmManagerRpcService implements ItmRpcService {
                     Futures.addCallback(futureCheck, new FutureCallback<Void>() {
 
                         @Override public void onSuccess(Void voidInstance) {
-                            result.set(RpcResultBuilder.<Void>success().build());
+                            result.set(RpcResultBuilder.<AddL2GwDeviceOutput>success().build());
                         }
 
                         @Override public void onFailure(Throwable error) {
                             String msg = String.format("Unable to write HwVtep %s to datastore", nodeId);
                             LOG.error("Unable to write HwVtep {}, {} to datastore", nodeId, hwIp);
-                            result.set(RpcResultBuilder.<Void>failed()
+                            result.set(RpcResultBuilder.<AddL2GwDeviceOutput>failed()
                                     .withError(RpcError.ErrorType.APPLICATION, msg, error).build());
                         }
                     });
 
                 }
             } else {
-                result.set(RpcResultBuilder.<Void>failed()
+                result.set(RpcResultBuilder.<AddL2GwDeviceOutput>failed()
                         .withError(RpcError.ErrorType.APPLICATION, "No TransportZones configured").build());
                 return result;
             }
 
             if (!foundVxlanTzone) {
-                result.set(RpcResultBuilder.<Void>failed()
+                result.set(RpcResultBuilder.<AddL2GwDeviceOutput>failed()
                         .withError(RpcError.ErrorType.APPLICATION, "No VxLan TransportZones configured")
                         .build());
             }
 
             return result;
         } catch (Exception e) {
-            RpcResultBuilder<java.lang.Void> resultBuilder = RpcResultBuilder.<Void>failed()
+            RpcResultBuilder<AddL2GwDeviceOutput> resultBuilder = RpcResultBuilder.<AddL2GwDeviceOutput>failed()
                     .withError(RpcError.ErrorType.APPLICATION, "Adding l2 Gateway to DS Failed", e);
             return Futures.immediateFuture(resultBuilder.build());
         }
@@ -748,9 +762,9 @@ public class ItmManagerRpcService implements ItmRpcService {
 
     @SuppressWarnings("checkstyle:IllegalCatch")
     @Override
-    public Future<RpcResult<java.lang.Void>> addL2GwMlagDevice(AddL2GwMlagDeviceInput input) {
+    public ListenableFuture<RpcResult<AddL2GwMlagDeviceOutput>> addL2GwMlagDevice(AddL2GwMlagDeviceInput input) {
 
-        final SettableFuture<RpcResult<Void>> result = SettableFuture.create();
+        final SettableFuture<RpcResult<AddL2GwMlagDeviceOutput>> result = SettableFuture.create();
         try {
             final IpAddress hwIp = input.getIpAddress();
             final List<String> nodeId = input.getNodeId();
@@ -761,14 +775,14 @@ public class ItmManagerRpcService implements ItmRpcService {
                 TransportZones transportZones = transportZonesOptional.get();
                 if (transportZones.getTransportZone() == null || transportZones.getTransportZone().isEmpty()) {
                     LOG.error("No teps configured");
-                    result.set(RpcResultBuilder.<Void>failed()
+                    result.set(RpcResultBuilder.<AddL2GwMlagDeviceOutput>failed()
                             .withError(RpcError.ErrorType.APPLICATION, "No teps Configured").build());
                     return result;
                 }
                 String transportZone = transportZones.getTransportZone().get(0).getZoneName();
                 if (transportZones.getTransportZone().get(0).getSubnets() == null
                         || transportZones.getTransportZone().get(0).getSubnets().isEmpty()) {
-                    result.set(RpcResultBuilder.<Void>failed()
+                    result.set(RpcResultBuilder.<AddL2GwMlagDeviceOutput>failed()
                             .withError(RpcError.ErrorType.APPLICATION, "No subnets Configured").build());
                     return result;
                 }
@@ -803,21 +817,22 @@ public class ItmManagerRpcService implements ItmRpcService {
 
                     @Override
                     public void onSuccess(Void voidInstance) {
-                        result.set(RpcResultBuilder.<Void>success().build());
+                        result.set(RpcResultBuilder.<AddL2GwMlagDeviceOutput>success().build());
                     }
 
                     @Override
                     public void onFailure(Throwable error) {
                         String msg = String.format("Unable to write HwVtep %s to datastore", nodeId);
                         LOG.error("Unable to write HwVtep {}, {} to datastore", nodeId , hwIp);
-                        result.set(RpcResultBuilder.<Void>failed().withError(RpcError.ErrorType.APPLICATION, msg, error)
+                        result.set(RpcResultBuilder.<AddL2GwMlagDeviceOutput>failed()
+                                .withError(RpcError.ErrorType.APPLICATION, msg, error)
                                 .build());
                     }
                 }, MoreExecutors.directExecutor());
             }
             return result;
         } catch (RuntimeException e) {
-            RpcResultBuilder<java.lang.Void> resultBuilder = RpcResultBuilder.<Void>failed()
+            RpcResultBuilder<AddL2GwMlagDeviceOutput> resultBuilder = RpcResultBuilder.<AddL2GwMlagDeviceOutput>failed()
                     .withError(RpcError.ErrorType.APPLICATION, "Adding l2 Gateway to DS Failed", e);
             return Futures.immediateFuture(resultBuilder.build());
         }
@@ -825,9 +840,9 @@ public class ItmManagerRpcService implements ItmRpcService {
 
     @SuppressWarnings("checkstyle:IllegalCatch")
     @Override
-    public Future<RpcResult<Void>> deleteL2GwMlagDevice(DeleteL2GwMlagDeviceInput input) {
-
-        final SettableFuture<RpcResult<Void>> result = SettableFuture.create();
+    public ListenableFuture<RpcResult<DeleteL2GwMlagDeviceOutput>> deleteL2GwMlagDevice(
+            DeleteL2GwMlagDeviceInput input) {
+        final SettableFuture<RpcResult<DeleteL2GwMlagDeviceOutput>> result = SettableFuture.create();
         try {
             final IpAddress hwIp = input.getIpAddress();
             final List<String> nodeId = input.getNodeId();
@@ -838,14 +853,14 @@ public class ItmManagerRpcService implements ItmRpcService {
                 TransportZones tzones = transportZonesOptional.get();
                 if (tzones.getTransportZone() == null || tzones.getTransportZone().isEmpty()) {
                     LOG.error("No teps configured");
-                    result.set(RpcResultBuilder.<Void>failed()
+                    result.set(RpcResultBuilder.<DeleteL2GwMlagDeviceOutput>failed()
                             .withError(RpcError.ErrorType.APPLICATION, "No teps Configured").build());
                     return result;
                 }
                 String transportZone = tzones.getTransportZone().get(0).getZoneName();
                 if (tzones.getTransportZone().get(0).getSubnets() == null || tzones.getTransportZone()
                         .get(0).getSubnets().isEmpty()) {
-                    result.set(RpcResultBuilder.<Void>failed()
+                    result.set(RpcResultBuilder.<DeleteL2GwMlagDeviceOutput>failed()
                             .withError(RpcError.ErrorType.APPLICATION, "No subnets Configured").build());
                     return result;
                 }
@@ -874,28 +889,30 @@ public class ItmManagerRpcService implements ItmRpcService {
 
                     @Override
                     public void onSuccess(Void voidInstance) {
-                        result.set(RpcResultBuilder.<Void>success().build());
+                        result.set(RpcResultBuilder.<DeleteL2GwMlagDeviceOutput>success().build());
                     }
 
                     @Override
                     public void onFailure(Throwable error) {
                         String msg = String.format("Unable to write HwVtep %s to datastore", nodeId);
                         LOG.error("Unable to write HwVtep {}, {} to datastore", nodeId , hwIp);
-                        result.set(RpcResultBuilder.<Void>failed().withError(RpcError.ErrorType.APPLICATION, msg, error)
+                        result.set(RpcResultBuilder.<DeleteL2GwMlagDeviceOutput>failed()
+                                .withError(RpcError.ErrorType.APPLICATION, msg, error)
                                 .build());
                     }
                 });
             }
             return result;
         } catch (Exception e) {
-            RpcResultBuilder<java.lang.Void> resultBuilder = RpcResultBuilder.<Void>failed()
-                    .withError(RpcError.ErrorType.APPLICATION, "Deleting l2 Gateway to DS Failed", e);
+            RpcResultBuilder<DeleteL2GwMlagDeviceOutput> resultBuilder =
+                    RpcResultBuilder.<DeleteL2GwMlagDeviceOutput>failed().withError(RpcError.ErrorType.APPLICATION,
+                            "Deleting l2 Gateway to DS Failed", e);
             return Futures.immediateFuture(resultBuilder.build());
         }
     }
 
     @Override
-    public Future<RpcResult<IsTunnelInternalOrExternalOutput>> isTunnelInternalOrExternal(
+    public ListenableFuture<RpcResult<IsTunnelInternalOrExternalOutput>> isTunnelInternalOrExternal(
             IsTunnelInternalOrExternalInput input) {
         RpcResultBuilder<IsTunnelInternalOrExternalOutput> resultBld;
         String tunIfName = input.getTunnelInterfaceName();
@@ -915,7 +932,7 @@ public class ItmManagerRpcService implements ItmRpcService {
     }
 
     @Override
-    public Future<RpcResult<IsDcgwPresentOutput>> isDcgwPresent(IsDcgwPresentInput input) {
+    public ListenableFuture<RpcResult<IsDcgwPresentOutput>> isDcgwPresent(IsDcgwPresentInput input) {
         RpcResultBuilder<IsDcgwPresentOutput> resultBld = RpcResultBuilder.success();
 
         List<DcGatewayIp> dcGatewayIpList = ItmUtils.getDcGatewayIpList(dataBroker);
@@ -939,7 +956,7 @@ public class ItmManagerRpcService implements ItmRpcService {
     }
 
     @Override
-    public Future<RpcResult<GetDpnEndpointIpsOutput>> getDpnEndpointIps(GetDpnEndpointIpsInput input) {
+    public ListenableFuture<RpcResult<GetDpnEndpointIpsOutput>> getDpnEndpointIps(GetDpnEndpointIpsInput input) {
         BigInteger srcDpn = input.getSourceDpid() ;
         RpcResultBuilder<GetDpnEndpointIpsOutput> resultBld = failed();
         InstanceIdentifier<DPNTEPsInfo> tunnelInfoId =
@@ -967,7 +984,7 @@ public class ItmManagerRpcService implements ItmRpcService {
     }
 
     @Override
-    public Future<RpcResult<GetDpnInfoOutput>> getDpnInfo(GetDpnInfoInput input) {
+    public ListenableFuture<RpcResult<GetDpnInfoOutput>> getDpnInfo(GetDpnInfoInput input) {
         return FutureRpcResults.fromListenableFuture(LOG, "getDpnInfo", input,
             () -> Futures.immediateFuture(getDpnInfoInternal(input))).build();
     }
index 109cb2e7566666c4cbe829421ab06c68a71f60aa..ac57ed44c1aab19635a359bc6986bca80ba0eb78 100644 (file)
@@ -44,6 +44,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.AllocateIdOutputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.IdManagerService;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.ReleaseIdInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.ReleaseIdOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.TunnelTypeBase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.TunnelTypeVxlan;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.ExternalTunnelList;
@@ -147,7 +148,7 @@ public class ItmExternalTunnelDeleteTest {
         setupMocks();
 
         when(idManagerService.releaseId(any(ReleaseIdInput.class))).thenReturn(Futures.immediateFuture(RpcResultBuilder
-                .<Void>success().build()));
+                .<ReleaseIdOutput>success().build()));
     }
 
     @After
index 0565a831dfd5f279fef826e296daf3a39d05041c..2168a4cebdcdab19629ce6329c68e61b1bf2de30 100644 (file)
@@ -12,12 +12,14 @@ import static com.google.common.truth.Truth.assertThat;
 import static org.opendaylight.mdsal.binding.testutils.AssertDataObjects.assertEqualBeans;
 
 import com.google.common.base.Optional;
+import com.google.common.util.concurrent.ListenableFuture;
 import java.math.BigInteger;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 import java.util.concurrent.Future;
 import javax.inject.Inject;
+
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
@@ -64,16 +66,22 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.transp
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.transport.zones.transport.zone.subnets.DeviceVtepsKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.AddExternalTunnelEndpointInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.AddExternalTunnelEndpointInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.AddExternalTunnelEndpointOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.AddL2GwDeviceInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.AddL2GwDeviceInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.AddL2GwDeviceOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.AddL2GwMlagDeviceInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.AddL2GwMlagDeviceInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.AddL2GwMlagDeviceOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.BuildExternalTunnelFromDpnsInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.BuildExternalTunnelFromDpnsInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.BuildExternalTunnelFromDpnsOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.DeleteL2GwDeviceInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.DeleteL2GwDeviceInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.DeleteL2GwDeviceOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.DeleteL2GwMlagDeviceInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.DeleteL2GwMlagDeviceInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.DeleteL2GwMlagDeviceOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.GetExternalTunnelInterfaceNameInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.GetExternalTunnelInterfaceNameInputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.GetExternalTunnelInterfaceNameOutput;
@@ -86,8 +94,10 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.G
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.GetTunnelInterfaceNameOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.RemoveExternalTunnelEndpointInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.RemoveExternalTunnelEndpointInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.RemoveExternalTunnelEndpointOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.RemoveExternalTunnelFromDpnsInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.RemoveExternalTunnelFromDpnsInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.RemoveExternalTunnelFromDpnsOutput;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 
@@ -302,7 +312,8 @@ public class ItmManagerRpcServiceTest {
 
     @Test
     public void testAddExternalTunnelEndpoint() throws Exception {
-        Future<RpcResult<Void>> rpcRes = itmManagerRpcService.addExternalTunnelEndpoint(addExternalTunnelEndpointInput);
+        ListenableFuture<RpcResult<AddExternalTunnelEndpointOutput>> rpcRes =
+                itmManagerRpcService.addExternalTunnelEndpoint(addExternalTunnelEndpointInput);
 
         // check RPC response is SUCCESS
         assertThat(rpcRes.get().isSuccessful()).isTrue();
@@ -315,7 +326,8 @@ public class ItmManagerRpcServiceTest {
 
     @Test
     public void testAddL2GwDevice() throws Exception {
-        Future<RpcResult<java.lang.Void>> rpcRes = itmManagerRpcService.addL2GwDevice(addL2GwDeviceInput);
+        ListenableFuture<RpcResult<AddL2GwDeviceOutput>> rpcRes =
+                itmManagerRpcService.addL2GwDevice(addL2GwDeviceInput);
 
         // check RPC response is SUCCESS
         assertThat(rpcRes.get().isSuccessful()).isTrue();
@@ -327,7 +339,8 @@ public class ItmManagerRpcServiceTest {
 
     @Test
     public void testAddL2GwMlagDevice() throws Exception {
-        Future<RpcResult<java.lang.Void>> rpcRes = itmManagerRpcService.addL2GwMlagDevice(addL2GwMlagDeviceInput);
+        ListenableFuture<RpcResult<AddL2GwMlagDeviceOutput>> rpcRes =
+                itmManagerRpcService.addL2GwMlagDevice(addL2GwMlagDeviceInput);
 
         // check RPC response is SUCCESS
         assertThat(rpcRes.get().isSuccessful()).isTrue();
@@ -341,7 +354,8 @@ public class ItmManagerRpcServiceTest {
 
     @Test
     public void testDeleteL2GwDevice() throws Exception {
-        Future<RpcResult<java.lang.Void>> rpcRes = itmManagerRpcService.deleteL2GwDevice(deleteL2GwDeviceInput);
+        ListenableFuture<RpcResult<DeleteL2GwDeviceOutput>> rpcRes =
+                itmManagerRpcService.deleteL2GwDevice(deleteL2GwDeviceInput);
 
         // check RPC response is SUCCESS
         assertThat(rpcRes.get().isSuccessful()).isTrue();
@@ -353,7 +367,7 @@ public class ItmManagerRpcServiceTest {
 
     @Test
     public void testDeleteL2GwMlagDevice() throws Exception {
-        Future<RpcResult<java.lang.Void>> rpcRes =
+        ListenableFuture<RpcResult<DeleteL2GwMlagDeviceOutput>> rpcRes =
                 itmManagerRpcService.deleteL2GwMlagDevice(deleteL2GwMlagDeviceInput);
 
         // check RPC response is SUCCESS
@@ -368,7 +382,7 @@ public class ItmManagerRpcServiceTest {
 
     @Test
     public void testBuildExternalTunnelFromDpns() throws Exception {
-        Future<RpcResult<Void>> rpcRes =
+        ListenableFuture<RpcResult<BuildExternalTunnelFromDpnsOutput>> rpcRes =
                 itmManagerRpcService.buildExternalTunnelFromDpns(buildExternalTunnelFromDpnsInput);
 
         // check RPC response is SUCCESS
@@ -382,7 +396,7 @@ public class ItmManagerRpcServiceTest {
 
     @Test
     public void testRemoveExternalTunnelFromDpns() throws Exception {
-        Future<RpcResult<Void>> rpcRes =
+        ListenableFuture<RpcResult<RemoveExternalTunnelFromDpnsOutput>> rpcRes =
                 itmManagerRpcService.removeExternalTunnelFromDpns(removeExternalTunnelFromDpnsInput);
 
         // check RPC response is SUCCESS
@@ -399,16 +413,17 @@ public class ItmManagerRpcServiceTest {
     @Test
     public void testRemoveExternalTunnelEndpoint() throws Exception {
         // call RPC to add ExternalTunnelEndpoint as pre-requisite
-        Future<RpcResult<Void>> rpcRes =
+        ListenableFuture<RpcResult<AddExternalTunnelEndpointOutput>> rpcRes =
                 itmManagerRpcService.addExternalTunnelEndpoint(addExternalTunnelEndpointInput);
 
         // check RPC response is SUCCESS
         assertThat(rpcRes.get().isSuccessful()).isTrue();
 
-        rpcRes = itmManagerRpcService.removeExternalTunnelEndpoint(removeExternalTunnelEndpointInput);
+        ListenableFuture<RpcResult<RemoveExternalTunnelEndpointOutput>> removeExternalTunnelEndpoint =
+                itmManagerRpcService.removeExternalTunnelEndpoint(removeExternalTunnelEndpointInput);
 
         // check RPC response is SUCCESS
-        assertThat(rpcRes.get().isSuccessful()).isTrue();
+        assertThat(removeExternalTunnelEndpoint.get().isSuccessful()).isTrue();
 
         // check ExternalTunnelEndpoint is deleted from config DS
         assertThat(Optional.absent()).isEqualTo(dataBroker.newReadOnlyTransaction()
index 62971de01382e7ddee3ad1b0d422fa56393b0a48..807cfc8337e85e19077c37795c2097d432d5591c 100644 (file)
@@ -10,14 +10,15 @@ package org.opendaylight.genius.lockmanager.impl;
 import com.google.common.base.Optional;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.MoreExecutors;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ExecutionException;
-import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
 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.ReadWriteTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
@@ -26,8 +27,12 @@ import org.opendaylight.genius.infra.RetryingManagedNewTransactionRunner;
 import org.opendaylight.genius.tools.mdsal.rpc.FutureRpcResults;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.lockmanager.rev160413.LockInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.lockmanager.rev160413.LockManagerService;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.lockmanager.rev160413.LockOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.lockmanager.rev160413.TryLockInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.lockmanager.rev160413.TryLockOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.lockmanager.rev160413.UnlockInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.lockmanager.rev160413.UnlockOutput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.lockmanager.rev160413.UnlockOutputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.lockmanager.rev160413.locks.Lock;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.opendaylight.yangtools.yang.common.RpcResult;
@@ -60,7 +65,7 @@ public class LockManagerServiceImpl implements LockManagerService {
     }
 
     @Override
-    public Future<RpcResult<Void>> lock(LockInput input) {
+    public ListenableFuture<RpcResult<LockOutput>> lock(LockInput input) {
         String lockName = input.getLockName();
         String owner = lockManagerUtils.getUniqueID();
         return FutureRpcResults.fromListenableFuture(LOG, input, () -> {
@@ -71,7 +76,7 @@ public class LockManagerServiceImpl implements LockManagerService {
     }
 
     @Override
-    public Future<RpcResult<Void>> tryLock(TryLockInput input) {
+    public ListenableFuture<RpcResult<TryLockOutput>> tryLock(TryLockInput input) {
         String lockName = input.getLockName();
         String owner = lockManagerUtils.getUniqueID();
         LOG.debug("Locking {}, owner {}" , lockName, owner);
@@ -83,7 +88,7 @@ public class LockManagerServiceImpl implements LockManagerService {
         InstanceIdentifier<Lock> lockInstanceIdentifier = lockManagerUtils.getLockInstanceIdentifier(lockName);
         Lock lockData = lockManagerUtils.buildLock(lockName, owner);
 
-        RpcResultBuilder<Void> lockRpcBuilder;
+        RpcResultBuilder<TryLockOutput> lockRpcBuilder;
         try {
             if (getLock(lockInstanceIdentifier, lockData, retryCount)) {
                 lockRpcBuilder = RpcResultBuilder.success();
@@ -100,19 +105,19 @@ public class LockManagerServiceImpl implements LockManagerService {
     }
 
     @Override
-    public Future<RpcResult<Void>> unlock(UnlockInput input) {
+    public ListenableFuture<RpcResult<UnlockOutput>> unlock(UnlockInput input) {
         String lockName = input.getLockName();
         LOG.debug("Unlocking {}", lockName);
         InstanceIdentifier<Lock> lockInstanceIdentifier = lockManagerUtils.getLockInstanceIdentifier(lockName);
         return FutureRpcResults.fromListenableFuture(LOG, input,
-            () -> txRunner.callWithNewReadWriteTransactionAndSubmit(tx -> {
+            () -> Futures.transform(txRunner.callWithNewReadWriteTransactionAndSubmit(tx -> {
                 Optional<Lock> result = tx.read(LogicalDatastoreType.OPERATIONAL, lockInstanceIdentifier).get();
                 if (!result.isPresent()) {
                     LOG.debug("unlock ignored, as unnecessary; lock is already unlocked: {}", lockName);
                 } else {
                     tx.delete(LogicalDatastoreType.OPERATIONAL, lockInstanceIdentifier);
                 }
-            })).build();
+            }), unused -> new UnlockOutputBuilder().build(), MoreExecutors.directExecutor())).build();
     }
 
     public CompletableFuture<Void> getSynchronizerForLock(String lockName) {
@@ -122,7 +127,8 @@ public class LockManagerServiceImpl implements LockManagerService {
     /**
      * Try to acquire lock indefinitely until it is successful.
      */
-    private ListenableFuture<Void> getLock(final InstanceIdentifier<Lock> lockInstanceIdentifier, final Lock lockData)
+    private ListenableFuture<LockOutput> getLock(final InstanceIdentifier<Lock> lockInstanceIdentifier,
+                                                 final Lock lockData)
             throws InterruptedException {
         // Count from 1 to provide human-comprehensible messages
         String lockName = lockData.getLockName();
index f567d20dfac20d62dc30faeb469b5898adf02967..7a772bbd871ce4d7c6943c5701f56d4dcbf167ac 100644 (file)
@@ -9,7 +9,7 @@ package org.opendaylight.genius.lockmanager.tests;
 
 import static org.opendaylight.genius.tools.mdsal.testutils.TestFutureRpcResults.assertRpcErrorCause;
 import static org.opendaylight.genius.tools.mdsal.testutils.TestFutureRpcResults.assertRpcErrorWithoutCausesOrMessages;
-import static org.opendaylight.genius.tools.mdsal.testutils.TestFutureRpcResults.assertVoidRpcSuccess;
+import static org.opendaylight.genius.tools.mdsal.testutils.TestFutureRpcResults.assertRpcSuccess;
 
 import java.util.Timer;
 import java.util.TimerTask;
@@ -60,16 +60,16 @@ public class LockManagerTest extends AbstractConcurrentDataBrokerTest {
     @Test
     public void testLockAndUnLock() throws InterruptedException, ExecutionException, TimeoutException {
         LockInput lockInput = new LockInputBuilder().setLockName("testLock").build();
-        assertVoidRpcSuccess(lockManager.lock(lockInput));
+        assertRpcSuccess(lockManager.lock(lockInput));
 
         UnlockInput unlockInput = new UnlockInputBuilder().setLockName("testLock").build();
-        assertVoidRpcSuccess(lockManager.unlock(unlockInput));
+        assertRpcSuccess(lockManager.unlock(unlockInput));
     }
 
     @Test
     public void testUnLockOfUnknownShouldNotFail() throws InterruptedException, ExecutionException, TimeoutException {
         UnlockInput unlockInput = new UnlockInputBuilder().setLockName("unknownLock").build();
-        assertVoidRpcSuccess(lockManager.unlock(unlockInput));
+        assertRpcSuccess(lockManager.unlock(unlockInput));
     }
 
     @Test
@@ -77,12 +77,12 @@ public class LockManagerTest extends AbstractConcurrentDataBrokerTest {
     // lock() RPC will infinitely retry, and it will only come out when the key is unlocked
     public void testLockAndReLockSameAgain() throws InterruptedException, ExecutionException, TimeoutException {
         LockInput lockInput = new LockInputBuilder().setLockName("testLock").build();
-        assertVoidRpcSuccess(lockManager.lock(lockInput));
+        assertRpcSuccess(lockManager.lock(lockInput));
         runUnlockTimerTask("testLock", 3000);
 
         // This will retry infinitely since the other lock is not released!
         // After 5 seconds, the parallel thread will unlock the key, and the below TC will pass
-        assertVoidRpcSuccess(lockManager.lock(lockInput));
+        assertRpcSuccess(lockManager.lock(lockInput));
     }
 
     @Test
@@ -94,7 +94,7 @@ public class LockManagerTest extends AbstractConcurrentDataBrokerTest {
 
         TryLockInput lockInput = new TryLockInputBuilder().setLockName("testTryLock").setTime(3L)
                 .setTimeUnit(TimeUnits.Seconds).build();
-        assertVoidRpcSuccess(lockManager.tryLock(lockInput));
+        assertRpcSuccess(lockManager.tryLock(lockInput));
 
         // The second acquireLock request will retry for 3 seconds
         // and since the first lock is not unlocked, the request will fail.
@@ -108,7 +108,7 @@ public class LockManagerTest extends AbstractConcurrentDataBrokerTest {
 
         lockInput = new TryLockInputBuilder().setLockName("testTryLock").setTime(4000000L)
                 .setTimeUnit(TimeUnits.Microseconds).build();
-        assertVoidRpcSuccess(lockManager.tryLock(lockInput));
+        assertRpcSuccess(lockManager.tryLock(lockInput));
     }
 
     @Test
@@ -117,7 +117,7 @@ public class LockManagerTest extends AbstractConcurrentDataBrokerTest {
         dbFailureSimulator.failSubmits(new OptimisticLockFailedException("bada boum bam!"));
         LockInput lockInput = new LockInputBuilder().setLockName("testLock").build();
         runUnfailSubmitsTimerTask(3000); // see other tests above
-        assertVoidRpcSuccess(lockManager.lock(lockInput));
+        assertRpcSuccess(lockManager.lock(lockInput));
     }
 
     @Test
@@ -156,7 +156,7 @@ public class LockManagerTest extends AbstractConcurrentDataBrokerTest {
             public void run() {
                 UnlockInput unlockInput = new UnlockInputBuilder().setLockName(lockKey).build();
                 try {
-                    assertVoidRpcSuccess(lockManager.unlock(unlockInput));
+                    assertRpcSuccess(lockManager.unlock(unlockInput));
                 } catch (InterruptedException | ExecutionException | TimeoutException e) {
                     LOG.error("runUnlockTimerTask() failed", e);
                     // throw new RuntimeException(e) is useless here, as this in a BG Thread, and it would go nowhere
index 3f068a44a6e9c45183dde31a5e0ff1d0c88176c3..63e927588c413b127b492629ff41382132ac1bc7 100644 (file)
@@ -21,7 +21,6 @@ import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
-import java.util.concurrent.Future;
 import javax.inject.Inject;
 import javax.inject.Singleton;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
@@ -68,6 +67,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.N
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.PacketProcessingService;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.TransmitPacketOutput;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.InstanceIdentifierBuilder;
 import org.opendaylight.yangtools.yang.common.RpcResult;
@@ -362,8 +362,9 @@ public class MDSALManager extends AbstractLifecycle implements IMdsalApiManager
     }
 
     public void sendPacketOutWithActionsInternal(BigInteger dpnId, byte[] payload, List<ActionInfo> actionInfos) {
-        Future<RpcResult<Void>> future = packetProcessingService.transmitPacket(
-                MDSALUtil.getPacketOut(actionInfos, payload, dpnId, getNodeConnRef("openflow:" + dpnId, "0xfffffffd")));
+        ListenableFuture<RpcResult<TransmitPacketOutput>> future = packetProcessingService.transmitPacket(
+                MDSALUtil.getPacketOut(actionInfos, payload, dpnId,
+                        getNodeConnRef("openflow:" + dpnId, "0xfffffffd")));
         JdkFutures.addErrorLogging(future, LOG, "Transmit packet");
     }
 
index 84de45ccec6067c9461e7fca8154fa786d8ee256..c0a1b8db991d82b56e4ca9016bd3658f5b46718f 100644 (file)
@@ -10,6 +10,8 @@ package org.opendaylight.genius.resourcemanager;
 
 import com.google.common.base.Optional;
 import com.google.common.util.concurrent.Futures;
+import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.MoreExecutors;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
@@ -29,6 +31,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.CreateIdPoolInputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.IdManagerService;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.ReleaseIdInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.ReleaseIdOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.id.pools.IdPool;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.id.pools.id.pool.AvailableIdsHolder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.id.pools.id.pool.ReleasedIdsHolder;
@@ -43,6 +46,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.resourcemanager.rev1
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.resourcemanager.rev160622.GetResourcePoolOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.resourcemanager.rev160622.GetResourcePoolOutputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.resourcemanager.rev160622.ReleaseResourceInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.resourcemanager.rev160622.ReleaseResourceOutput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.resourcemanager.rev160622.ReleaseResourceOutputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.resourcemanager.rev160622.ResourceManagerService;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.resourcemanager.rev160622.ResourceTypeBase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.resourcemanager.rev160622.ResourceTypeGroupIds;
@@ -117,7 +122,7 @@ public class ResourceManager implements ResourceManagerService, AutoCloseable {
     }
 
     @Override
-    public Future<RpcResult<AllocateResourceOutput>> allocateResource(AllocateResourceInput input) {
+    public ListenableFuture<RpcResult<AllocateResourceOutput>> allocateResource(AllocateResourceInput input) {
         Objects.requireNonNull(input.getResourceType(), RESOURCE_TYPE_CANNOT_BE_NULL);
         Objects.requireNonNull(input.getIdKey(), RESOURCE_ID_CANNOT_BE_NULL);
         Objects.requireNonNull(input.getSize(), RESOURCE_SIZE_CANNOT_BE_NULL);
@@ -152,7 +157,7 @@ public class ResourceManager implements ResourceManagerService, AutoCloseable {
     }
 
     @Override
-    public Future<RpcResult<GetResourcePoolOutput>> getResourcePool(GetResourcePoolInput input) {
+    public ListenableFuture<RpcResult<GetResourcePoolOutput>> getResourcePool(GetResourcePoolInput input) {
         Objects.requireNonNull(input.getResourceType(), RESOURCE_TYPE_CANNOT_BE_NULL);
         Objects.requireNonNull(resourcesCache.get(input.getResourceType()), RESOURCE_TYPE_CANNOT_BE_NULL);
 
@@ -213,7 +218,8 @@ public class ResourceManager implements ResourceManagerService, AutoCloseable {
     }
 
     @Override
-    public Future<RpcResult<GetAvailableResourcesOutput>> getAvailableResources(GetAvailableResourcesInput input) {
+    public ListenableFuture<RpcResult<GetAvailableResourcesOutput>> getAvailableResources(
+            GetAvailableResourcesInput input) {
         Objects.requireNonNull(input.getResourceType(), RESOURCE_TYPE_CANNOT_BE_NULL);
         Objects.requireNonNull(resourcesCache.get(input.getResourceType()), RESOURCE_TYPE_NOT_FOUND);
 
@@ -272,7 +278,7 @@ public class ResourceManager implements ResourceManagerService, AutoCloseable {
     }
 
     @Override
-    public Future<RpcResult<Void>> releaseResource(ReleaseResourceInput input) {
+    public ListenableFuture<RpcResult<ReleaseResourceOutput>> releaseResource(ReleaseResourceInput input) {
         Objects.requireNonNull(input.getIdKey(), RESOURCE_ID_CANNOT_BE_NULL);
         Objects.requireNonNull(input.getResourceType(), RESOURCE_TYPE_CANNOT_BE_NULL);
 
@@ -281,7 +287,23 @@ public class ResourceManager implements ResourceManagerService, AutoCloseable {
         ReleaseIdInputBuilder releaseIdInputBuilder = new ReleaseIdInputBuilder();
         releaseIdInputBuilder.setIdKey(input.getIdKey()).setPoolName(resourcesCache.get(input.getResourceType()));
 
-        return idManager.releaseId(releaseIdInputBuilder.build());
+        return transform(idManager.releaseId(releaseIdInputBuilder.build()));
+    }
+
+    private ListenableFuture<RpcResult<ReleaseResourceOutput>> transform(
+            final ListenableFuture<RpcResult<ReleaseIdOutput>> rpcResultListenableFuture) {
+        return Futures.transform(rpcResultListenableFuture, input -> {
+            final RpcResult<ReleaseResourceOutput> rpcOutput;
+            if (input.isSuccessful()) {
+                final ReleaseResourceOutput sendEchoOutput = new ReleaseResourceOutputBuilder().build();
+                rpcOutput = RpcResultBuilder.success(sendEchoOutput).build();
+            } else {
+                rpcOutput = RpcResultBuilder.<ReleaseResourceOutput>failed()
+                        .withRpcErrors(input.getErrors())
+                        .build();
+            }
+            return rpcOutput;
+        }, MoreExecutors.directExecutor());
     }
 
     private void createIdPool(String poolNameProperty, String lowIdProperty, String highIdProperty,
index aad96b286f329b9bd871b04bd9fcba931260badd..470ba4f9580a4a48777e4a986b988d0258d00e0c 100644 (file)
@@ -10,6 +10,7 @@ package org.opendaylight.genius.resourcemanager.tests;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 
+import com.google.common.util.concurrent.ListenableFuture;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.concurrent.ExecutionException;
@@ -35,6 +36,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.resourcemanager.rev1
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.resourcemanager.rev160622.GetResourcePoolOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.resourcemanager.rev160622.ReleaseResourceInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.resourcemanager.rev160622.ReleaseResourceInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.resourcemanager.rev160622.ReleaseResourceOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.resourcemanager.rev160622.ResourceManagerService;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.resourcemanager.rev160622.ResourceTypeBase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.resourcemanager.rev160622.ResourceTypeGroupIds;
@@ -141,7 +143,7 @@ public class ResourceManagerTest extends AbstractConcurrentDataBrokerTest {
             allocateResource(resourceType.getName(), resourceType, NUMBER_OF_RESOURCES);
 
             // Release resources
-            RpcResult<Void> result = releaseResource(resourceType.getName(), resourceType).get();
+            RpcResult<ReleaseResourceOutput> result = releaseResource(resourceType.getName(), resourceType).get();
             assertSuccessfulFutureRpcResult(result);
         }
     }
@@ -151,7 +153,7 @@ public class ResourceManagerTest extends AbstractConcurrentDataBrokerTest {
         releaseResource(null, ResourceTypeTableIds.class).get();
     }
 
-    private Future<RpcResult<Void>> releaseResource(String resourceKey,
+    private ListenableFuture<RpcResult<ReleaseResourceOutput>> releaseResource(String resourceKey,
             Class<? extends ResourceTypeBase> resourceType) throws Exception {
         final ReleaseResourceInput input = new ReleaseResourceInputBuilder().setResourceType(resourceType)
                 .setIdKey(resourceKey).build();
index 0663151b40941a269a93ac24c92d4989d2839e90..c0cdce6e8640a869a1083caca1860f591701269c 100644 (file)
@@ -9,9 +9,10 @@
 package org.opendaylight.genius.srm.impl;
 
 import com.google.common.util.concurrent.Futures;
-import java.util.concurrent.Future;
+import com.google.common.util.concurrent.ListenableFuture;
 import javax.inject.Inject;
 import javax.inject.Singleton;
+
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.genius.tools.mdsal.rpc.FutureRpcResults;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.srm.rpcs.rev170711.RecoverInput;
@@ -36,13 +37,13 @@ public class SrmRpcProvider implements SrmRpcsService {
     }
 
     @Override
-    public Future<RpcResult<RecoverOutput>> recover(RecoverInput input) {
+    public ListenableFuture<RpcResult<RecoverOutput>> recover(RecoverInput input) {
         return FutureRpcResults.fromListenableFuture(LOG, "recover", input,
             () -> Futures.immediateFuture(SrmRpcUtils.callSrmOp(dataBroker, input))).build();
     }
 
     @Override
-    public Future<RpcResult<ReinstallOutput>> reinstall(ReinstallInput input) {
+    public ListenableFuture<RpcResult<ReinstallOutput>> reinstall(ReinstallInput input) {
         return FutureRpcResults.fromListenableFuture(LOG, "reinstall", input,
             () -> Futures.immediateFuture(SrmRpcUtils.callSrmOp(dataBroker, input))).build();
     }
index 9fa53fc2ce9484b9d4542d2e014aa13bd119d3e2..a264ab968ff28da2a07748f0d270e9f9590aea30 100644 (file)
@@ -182,7 +182,7 @@ public final class FutureRpcResults {
         @Override
         @CheckReturnValue
         @SuppressWarnings("checkstyle:IllegalCatch")
-        public Future<RpcResult<O>> build() {
+        public ListenableFuture<RpcResult<O>> build() {
             SettableFuture<RpcResult<O>> futureRpcResult = SettableFuture.create();
             FutureCallback<O> callback = new FutureCallback<O>() {
                 @Override
index d6348d149213fd15420be0cb447cfb708c496673..7ccb7696a71f14593a85fef3882413a4dfb35205 100644 (file)
@@ -16,6 +16,7 @@ import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Future;
 import java.util.concurrent.TimeoutException;
 import org.opendaylight.genius.tools.mdsal.rpc.FutureRpcResults;
+import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.common.RpcError;
 import org.opendaylight.yangtools.yang.common.RpcError.ErrorType;
 import org.opendaylight.yangtools.yang.common.RpcResult;
@@ -49,6 +50,13 @@ public final class TestFutureRpcResults {
         assertThat(rpcResult.getErrors()).isEmpty();
     }
 
+    public static <O extends DataObject> void assertRpcSuccess(Future<RpcResult<O>> futureRpcResult)
+            throws InterruptedException, ExecutionException, TimeoutException {
+        RpcResult<O> rpcResult = futureRpcResult.get(1, MINUTES);
+        assertThat(rpcResult.isSuccessful()).isTrue();
+        assertThat(rpcResult.getErrors()).isEmpty();
+    }
+
     public static <T> void assertRpcErrorWithoutCausesOrMessages(Future<RpcResult<T>> futureRpcResult)
             throws InterruptedException, ExecutionException, TimeoutException {
         RpcResult<T> rpcResult = futureRpcResult.get(1, MINUTES);