Adjust to RPC method signature update 99/72099/2
authorTom Pantelis <tompantelis@gmail.com>
Sat, 19 May 2018 00:55:00 +0000 (20:55 -0400)
committerSam Hague <shague@redhat.com>
Wed, 23 May 2018 19:02:01 +0000 (19:02 +0000)
Change-Id: I8c05b2da856ad19178570ce427c93c92443dad14
Signed-off-by: Tom Pantelis <tompantelis@gmail.com>
36 files changed:
aclservice/impl/src/main/java/org/opendaylight/netvirt/aclservice/stats/AclLiveStatisticsRpcServiceImpl.java
aclservice/impl/src/main/java/org/opendaylight/netvirt/aclservice/utils/AclServiceUtils.java
aclservice/impl/src/test/java/org/opendaylight/netvirt/aclservice/stats/TestOdlDirectStatisticsService.java
aclservice/impl/src/test/java/org/opendaylight/netvirt/aclservice/tests/AclServiceTestModule.java
dhcpservice/impl/src/main/java/org/opendaylight/netvirt/dhcpservice/DhcpAllocationPoolManager.java
elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/internal/ElanServiceProvider.java
elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/l2gw/utils/ElanL2GatewayUtils.java
elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/l2gw/utils/L2GatewayUtils.java
elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/statisitcs/ElanStatisticsImpl.java
elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/utils/ElanUtils.java
elanmanager/impl/src/test/java/org/opendaylight/netvirt/elanmanager/tests/utils/ElanEgressActionsHelper.java
elanmanager/impl/src/test/java/org/opendaylight/netvirt/elanmanager/tests/utils/IdHelper.java
fibmanager/impl/src/main/java/org/opendaylight/netvirt/fibmanager/FibRpcServiceImpl.java
fibmanager/impl/src/main/java/org/opendaylight/netvirt/fibmanager/FibUtil.java
fibmanager/impl/src/main/java/org/opendaylight/netvirt/fibmanager/NexthopManager.java
ipv6service/impl/src/main/java/org/opendaylight/netvirt/ipv6service/Ipv6NdUtilServiceImpl.java
natservice/impl/src/main/java/org/opendaylight/netvirt/natservice/internal/EvpnDnatFlowProgrammer.java
natservice/impl/src/main/java/org/opendaylight/netvirt/natservice/internal/EvpnSnatFlowProgrammer.java
natservice/impl/src/main/java/org/opendaylight/netvirt/natservice/internal/ExternalRoutersListener.java
natservice/impl/src/main/java/org/opendaylight/netvirt/natservice/internal/NaptManager.java
natservice/impl/src/main/java/org/opendaylight/netvirt/natservice/internal/NatEvpnUtil.java
natservice/impl/src/main/java/org/opendaylight/netvirt/natservice/internal/NatOverVxlanUtil.java
natservice/impl/src/main/java/org/opendaylight/netvirt/natservice/internal/NatTunnelInterfaceStateListener.java
natservice/impl/src/main/java/org/opendaylight/netvirt/natservice/internal/VpnFloatingIpHandler.java
natservice/impl/src/main/java/org/opendaylight/netvirt/natservice/rpcservice/NatRpcServiceImpl.java
natservice/impl/src/test/java/org/opendaylight/netvirt/natservice/internal/test/NaptManagerTest.java
neutronvpn/impl/src/main/java/org/opendaylight/netvirt/neutronvpn/NeutronBgpvpnChangeListener.java
neutronvpn/impl/src/main/java/org/opendaylight/netvirt/neutronvpn/NeutronvpnManager.java
neutronvpn/impl/src/main/java/org/opendaylight/netvirt/neutronvpn/NeutronvpnUtils.java
neutronvpn/impl/src/main/java/org/opendaylight/netvirt/neutronvpn/evpn/manager/NeutronEvpnManager.java
neutronvpn/impl/src/main/java/org/opendaylight/netvirt/neutronvpn/l2gw/L2GatewayUtils.java
sfc/classifier/impl/src/test/java/org/opendaylight/netvirt/sfc/classifier/providers/TestOdlInterfaceRpcService.java
statistics/impl/src/main/java/org/opendaylight/netvirt/statistics/StatisticsImpl.java
vpnmanager/impl/src/main/java/org/opendaylight/netvirt/vpnmanager/VpnManagerImpl.java
vpnmanager/impl/src/main/java/org/opendaylight/netvirt/vpnmanager/VpnRpcServiceImpl.java
vpnmanager/impl/src/main/java/org/opendaylight/netvirt/vpnmanager/VpnUtil.java

index 5d7341db42fca07110291e7d0683e0671612af4a..72361e73f818dcbc1bbfcfbe360110db35e07dab 100644 (file)
@@ -9,8 +9,8 @@
 package org.opendaylight.netvirt.aclservice.stats;
 
 import com.google.common.util.concurrent.Futures;
+import com.google.common.util.concurrent.ListenableFuture;
 import java.util.List;
-import java.util.concurrent.Future;
 import javax.inject.Inject;
 import javax.inject.Singleton;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
@@ -60,7 +60,8 @@ public class AclLiveStatisticsRpcServiceImpl implements AclLiveStatisticsService
     }
 
     @Override
-    public Future<RpcResult<GetAclPortStatisticsOutput>> getAclPortStatistics(GetAclPortStatisticsInput input) {
+    public ListenableFuture<RpcResult<GetAclPortStatisticsOutput>> getAclPortStatistics(
+            GetAclPortStatisticsInput input) {
         LOG.trace("Get ACL port statistics for input: {}", input);
         RpcResultBuilder<GetAclPortStatisticsOutput> rpcResultBuilder;
 
@@ -68,7 +69,7 @@ public class AclLiveStatisticsRpcServiceImpl implements AclLiveStatisticsService
             rpcResultBuilder = RpcResultBuilder.failed();
             rpcResultBuilder.withError(ErrorType.APPLICATION, "operation-not-supported",
                     "Operation not supported for ACL " + this.securityGroupMode + " mode");
-            return Futures.immediateFuture(rpcResultBuilder.build());
+            return rpcResultBuilder.buildFuture();
         }
         // Default direction is Both
         Direction direction = input.getDirection() == null ? Direction.Both : input.getDirection();
index 477cdef448076a30f3d1d139c12a92cd2800a31b..b64d68005b626e95568cb22cc2eedf360cb1d4ac 100644 (file)
@@ -94,11 +94,14 @@ 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.DeleteIdPoolInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.DeleteIdPoolInputBuilder;
+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.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.rpcs.rev160406.GetDpidFromInterfaceInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rpcs.rev160406.GetDpidFromInterfaceInputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rpcs.rev160406.GetDpidFromInterfaceOutput;
@@ -928,8 +931,7 @@ public final class AclServiceUtils {
     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();
+            RpcResult<ReleaseIdOutput> rpcResult = idManager.releaseId(idInput).get();
             if (!rpcResult.isSuccessful()) {
                 LOG.error("RPC Call to release Id with Key {} from pool {} returned with Errors {}",
                         idKey, poolName, rpcResult.getErrors());
@@ -1001,7 +1003,7 @@ public final class AclServiceUtils {
                 .setPoolName(poolName).setLow(AclConstants.ACL_TAG_POOL_START)
                 .setHigh(AclConstants.ACL_TAG_POOL_END).build();
         try {
-            Future<RpcResult<Void>> result = this.idManager.createIdPool(createPool);
+            Future<RpcResult<CreateIdPoolOutput>> result = this.idManager.createIdPool(createPool);
             if (result != null && result.get().isSuccessful()) {
                 LOG.debug("Created IdPool for {}", poolName);
             }
@@ -1019,7 +1021,7 @@ public final class AclServiceUtils {
     public void deleteIdPool(String poolName) {
         DeleteIdPoolInput deletePool = new DeleteIdPoolInputBuilder().setPoolName(poolName).build();
         try {
-            Future<RpcResult<Void>> result = this.idManager.deleteIdPool(deletePool);
+            Future<RpcResult<DeleteIdPoolOutput>> result = this.idManager.deleteIdPool(deletePool);
             if (result != null && result.get().isSuccessful()) {
                 LOG.debug("Deleted IdPool for {}", poolName);
             }
index 541748c1513ad548ecf9b0412c4512835e2cc785..99abac458b63209660de7a5a6c3550c94edf5730 100644 (file)
@@ -8,11 +8,10 @@
 
 package org.opendaylight.netvirt.aclservice.stats;
 
-import com.google.common.util.concurrent.Futures;
+import com.google.common.util.concurrent.ListenableFuture;
 import java.math.BigInteger;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.concurrent.Future;
 import org.opendaylight.genius.mdsalutil.NwConstants;
 import org.opendaylight.netvirt.aclservice.utils.AclConstants;
 import org.opendaylight.netvirt.aclservice.utils.AclServiceUtils;
@@ -45,23 +44,23 @@ public abstract class TestOdlDirectStatisticsService implements OpendaylightDire
     protected FlowCookie aclDropFlowCookieMask = new FlowCookie(AclLiveStatisticsHelper.COOKIE_ACL_DROP_FLOW_MASK);
 
     @Override
-    public Future<RpcResult<GetNodeConnectorStatisticsOutput>> getNodeConnectorStatistics(
+    public ListenableFuture<RpcResult<GetNodeConnectorStatisticsOutput>> getNodeConnectorStatistics(
             GetNodeConnectorStatisticsInput input) {
-        return Futures.immediateFuture(RpcResultBuilder.<GetNodeConnectorStatisticsOutput>success().build());
+        return RpcResultBuilder.<GetNodeConnectorStatisticsOutput>success().buildFuture();
     }
 
     @Override
-    public Future<RpcResult<GetQueueStatisticsOutput>> getQueueStatistics(GetQueueStatisticsInput input) {
-        return Futures.immediateFuture(RpcResultBuilder.<GetQueueStatisticsOutput>success().build());
+    public ListenableFuture<RpcResult<GetQueueStatisticsOutput>> getQueueStatistics(GetQueueStatisticsInput input) {
+        return RpcResultBuilder.<GetQueueStatisticsOutput>success().buildFuture();
     }
 
     @Override
-    public Future<RpcResult<GetGroupStatisticsOutput>> getGroupStatistics(GetGroupStatisticsInput input) {
-        return Futures.immediateFuture(RpcResultBuilder.<GetGroupStatisticsOutput>success().build());
+    public ListenableFuture<RpcResult<GetGroupStatisticsOutput>> getGroupStatistics(GetGroupStatisticsInput input) {
+        return RpcResultBuilder.<GetGroupStatisticsOutput>success().buildFuture();
     }
 
     @Override
-    public Future<RpcResult<GetFlowStatisticsOutput>> getFlowStatistics(GetFlowStatisticsInput input) {
+    public ListenableFuture<RpcResult<GetFlowStatisticsOutput>> getFlowStatistics(GetFlowStatisticsInput input) {
         LOG.info("getFlowStatistics rpc input = {}", input);
 
         List<FlowAndStatisticsMapList> flowStatsList = new ArrayList<>();
@@ -93,7 +92,7 @@ public abstract class TestOdlDirectStatisticsService implements OpendaylightDire
 
         RpcResultBuilder<GetFlowStatisticsOutput> rpcResultBuilder = RpcResultBuilder.success();
         rpcResultBuilder.withResult(output);
-        return Futures.immediateFuture(rpcResultBuilder.build());
+        return rpcResultBuilder.buildFuture();
     }
 
     private FlowAndStatisticsMapList buildFlowStats(short tableId, Integer priority, Integer lportTag, long byteCount,
@@ -108,8 +107,8 @@ public abstract class TestOdlDirectStatisticsService implements OpendaylightDire
     }
 
     @Override
-    public Future<RpcResult<GetMeterStatisticsOutput>> getMeterStatistics(GetMeterStatisticsInput input) {
-        return Futures.immediateFuture(RpcResultBuilder.<GetMeterStatisticsOutput>success().build());
+    public ListenableFuture<RpcResult<GetMeterStatisticsOutput>> getMeterStatistics(GetMeterStatisticsInput input) {
+        return RpcResultBuilder.<GetMeterStatisticsOutput>success().buildFuture();
     }
 
 }
index b15fc5d295bb3012b8cbf735e8010731d5e9728c..dcf9c648b2aaf1434f7b60582b2c6105b4076dcc 100644 (file)
@@ -11,8 +11,8 @@ import static org.mockito.Mockito.mock;
 import static org.opendaylight.yangtools.testutils.mockito.MoreAnswers.realOrException;
 
 import com.google.common.util.concurrent.Futures;
+import com.google.common.util.concurrent.ListenableFuture;
 import com.google.inject.AbstractModule;
-import java.util.concurrent.Future;
 import org.mockito.Mockito;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.test.DataBrokerTestModule;
@@ -31,9 +31,15 @@ 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.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.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.DeleteIdPoolOutputBuilder;
 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.idmanager.rev160406.ReleaseIdOutputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.aclservice.config.rev160806.AclserviceConfig;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.aclservice.config.rev160806.AclserviceConfig.SecurityGroupMode;
 import org.opendaylight.yangtools.yang.common.RpcResult;
@@ -85,12 +91,12 @@ public class AclServiceTestModule extends AbstractModule {
     private abstract static class TestIdManagerService implements IdManagerService {
 
         @Override
-        public Future<RpcResult<Void>> createIdPool(CreateIdPoolInput input) {
-            return Futures.immediateFuture(RpcResultBuilder.<Void>success().build());
+        public ListenableFuture<RpcResult<CreateIdPoolOutput>> createIdPool(CreateIdPoolInput input) {
+            return RpcResultBuilder.success(new CreateIdPoolOutputBuilder().build()).buildFuture();
         }
 
         @Override
-        public Future<RpcResult<AllocateIdOutput>> allocateId(AllocateIdInput input) {
+        public ListenableFuture<RpcResult<AllocateIdOutput>> allocateId(AllocateIdInput input) {
             String key = input.getIdKey();
             long id = IdHelper.getId(key) == null ? AclConstants.PROTO_MATCH_PRIORITY
                     : IdHelper.getId(key);
@@ -105,13 +111,13 @@ public class AclServiceTestModule extends AbstractModule {
         }
 
         @Override
-        public Future<RpcResult<Void>> releaseId(ReleaseIdInput input) {
-            return Futures.immediateFuture(RpcResultBuilder.<Void>success().build());
+        public ListenableFuture<RpcResult<ReleaseIdOutput>> releaseId(ReleaseIdInput input) {
+            return RpcResultBuilder.success(new ReleaseIdOutputBuilder().build()).buildFuture();
         }
 
         @Override
-        public Future<RpcResult<java.lang.Void>> deleteIdPool(DeleteIdPoolInput poolName) {
-            return Futures.immediateFuture(RpcResultBuilder.<Void>success().build());
+        public ListenableFuture<RpcResult<DeleteIdPoolOutput>> deleteIdPool(DeleteIdPoolInput poolName) {
+            return RpcResultBuilder.success(new DeleteIdPoolOutputBuilder().build()).buildFuture();
         }
     }
 
index 41189f26fdf0ae2c15ccf11ef45ab8852c0166d1..42e8b29b137020acdf71ad024b3238f77714886e 100644 (file)
@@ -32,8 +32,10 @@ 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.DeleteIdPoolInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.DeleteIdPoolInputBuilder;
+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.ReleaseIdInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.ReleaseIdInputBuilder;
@@ -182,7 +184,7 @@ public class DhcpAllocationPoolManager implements AutoCloseable, EventListener {
         CreateIdPoolInput createPool = new CreateIdPoolInputBuilder().setPoolName(poolName).setLow(low).setHigh(high)
                 .build();
         try {
-            Future<RpcResult<Void>> result = idManager.createIdPool(createPool);
+            Future<RpcResult<CreateIdPoolOutput>> result = idManager.createIdPool(createPool);
             if (result != null && result.get().isSuccessful()) {
                 LOG.info("DHCP Allocation Pool Service : Created IdPool name {}", poolName);
             } else {
@@ -197,7 +199,7 @@ public class DhcpAllocationPoolManager implements AutoCloseable, EventListener {
         String poolName = getPoolKeyIdByAllocationPool(networkId, pool);
         DeleteIdPoolInput deletePool = new DeleteIdPoolInputBuilder().setPoolName(poolName).build();
         try {
-            Future<RpcResult<Void>> result = idManager.deleteIdPool(deletePool);
+            Future<RpcResult<DeleteIdPoolOutput>> result = idManager.deleteIdPool(deletePool);
             if (result != null && result.get().isSuccessful()) {
                 LOG.info("DHCP Allocation Pool Service : Deleted IdPool name {}", poolName);
             } else {
index fb2e50e869b538401523fc160eececfad9f56867..84e07785e4ede96438d6c0c6b96e707f8409b7bf 100644 (file)
@@ -56,6 +56,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.rev160406.IfL2vlan;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.elan.etree.rev160614.EtreeInstance;
@@ -160,7 +161,7 @@ public class ElanServiceProvider extends AbstractLifecycle implements IElanServi
     private void createIdPool() throws Exception {
         CreateIdPoolInput createPool = new CreateIdPoolInputBuilder().setPoolName(ElanConstants.ELAN_ID_POOL_NAME)
                 .setLow(ElanConstants.ELAN_ID_LOW_VALUE).setHigh(ElanConstants.ELAN_ID_HIGH_VALUE).build();
-        Future<RpcResult<Void>> result = idManager.createIdPool(createPool);
+        Future<RpcResult<CreateIdPoolOutput>> result = idManager.createIdPool(createPool);
         if (result != null && result.get().isSuccessful()) {
             LOG.debug("ELAN Id Pool is created successfully");
         }
index a525acdce9bed65b4adddc68b3bf52c97f5cadbb..617f12ab1b2ad16a5c0cec2fbb40448da5a58ba8 100644 (file)
@@ -75,6 +75,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rpc
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.TransportZones;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.transport.zones.transport.zone.subnets.DeviceVteps;
 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.ItmRpcService;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.elan.config.rev150710.ElanConfig;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.elan.rev150602.ElanInstances;
@@ -984,8 +985,7 @@ public class ElanL2GatewayUtils {
         builder.setIpAddress(tunnelIp);
         try {
             deleteStaleTunnelsOfHwvtepInITM(dataBroker, itmRpcService, hwvtepId, psName, tunnelIp);
-            Future<RpcResult<Void>> result = itmRpcService.addL2GwDevice(builder.build());
-            RpcResult<Void> rpcResult = result.get();
+            RpcResult<AddL2GwDeviceOutput> rpcResult = itmRpcService.addL2GwDevice(builder.build()).get();
             if (rpcResult.isSuccessful()) {
                 LOG.info("Created ITM tunnels for {}", hwvtepId);
             } else {
index 34a1cc505059421f80d52321b5f98ff98deae6e9..574d310cfd6321aca801b7e5d4a310fac9cdb8c4 100644 (file)
@@ -8,11 +8,11 @@
 package org.opendaylight.netvirt.elan.l2gw.utils;
 
 import java.util.concurrent.ExecutionException;
-import java.util.concurrent.Future;
 import org.opendaylight.genius.utils.hwvtep.HwvtepSouthboundConstants;
 import org.opendaylight.genius.utils.hwvtep.HwvtepSouthboundUtils;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
 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.ItmRpcService;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
 import org.opendaylight.yangtools.yang.common.RpcResult;
@@ -31,8 +31,7 @@ public final class L2GatewayUtils {
         builder.setNodeId(HwvtepSouthboundUtils.createManagedNodeId(new NodeId(hwvtepId), psName).getValue());
         builder.setIpAddress(tunnelIp);
         try {
-            Future<RpcResult<Void>> result = itmRpcService.deleteL2GwDevice(builder.build());
-            RpcResult<Void> rpcResult = result.get();
+            RpcResult<DeleteL2GwDeviceOutput> rpcResult = itmRpcService.deleteL2GwDevice(builder.build()).get();
             if (rpcResult.isSuccessful()) {
                 LOG.info("Deleted ITM tunnels for {}", hwvtepId);
             } else {
index e080e0082f2e414d2545aa5ab192a7f689973b10..a0cae369a140130d0cc13fd4630d4dcc84df425b 100755 (executable)
@@ -9,7 +9,7 @@ package org.opendaylight.netvirt.elan.statisitcs;
 
 import com.google.common.base.Optional;
 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.genius.interfacemanager.globals.InterfaceInfo;
@@ -43,7 +43,7 @@ public class ElanStatisticsImpl implements ElanStatisticsService {
     }
 
     @Override
-    public Future<RpcResult<GetElanInterfaceStatisticsOutput>> getElanInterfaceStatistics(
+    public ListenableFuture<RpcResult<GetElanInterfaceStatisticsOutput>> getElanInterfaceStatistics(
         GetElanInterfaceStatisticsInput input) {
         String interfaceName = input.getInterfaceName();
         LOG.debug("getElanInterfaceStatistics is called for elan interface {}", interfaceName);
@@ -73,12 +73,11 @@ public class ElanStatisticsImpl implements ElanStatisticsService {
         if (!interfaceInfo.isOperational()) {
             LOG.debug("interface {} is down and returning with no statistics", interfaceName);
             rpcResultBuilder = RpcResultBuilder.success();
-            return Futures
-                    .immediateFuture(rpcResultBuilder.withResult(new GetElanInterfaceStatisticsOutputBuilder()
+            return rpcResultBuilder.withResult(new GetElanInterfaceStatisticsOutputBuilder()
                             .setStatResult(
                                     new StatResultBuilder().setStatResultCode(ResultCode.NotFound).setByteRxCount(0L)
                                             .setByteTxCount(0L).setPacketRxCount(0L).setPacketTxCount(0L).build())
-                            .build()).build());
+                            .build()).buildFuture();
         }
         rpcResultBuilder = RpcResultBuilder.success();
         return Futures.immediateFuture(rpcResultBuilder
@@ -121,10 +120,10 @@ public class ElanStatisticsImpl implements ElanStatisticsService {
         return null;
     }
 
-    private Future<RpcResult<GetElanInterfaceStatisticsOutput>> getFutureWithAppErrorMessage(
+    private ListenableFuture<RpcResult<GetElanInterfaceStatisticsOutput>> getFutureWithAppErrorMessage(
         RpcResultBuilder<GetElanInterfaceStatisticsOutput> rpcResultBuilder, String message) {
         rpcResultBuilder.withError(ErrorType.APPLICATION, message);
-        return Futures.immediateFuture(rpcResultBuilder.build());
+        return rpcResultBuilder.buildFuture();
     }
 
 }
index 80186bf335909fb7ed60c626ce93a39fe4a1b15b..2eaffa8d07c8a4789ff3fa7f55d2129f068d7706 100755 (executable)
@@ -117,6 +117,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.ext
 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.RemoveTerminatingServiceActionsInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.RemoveTerminatingServiceActionsInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.RemoveTerminatingServiceActionsOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
@@ -1240,9 +1241,10 @@ public class ElanUtils {
     public void removeTerminatingServiceAction(BigInteger destDpId, int serviceId) {
         RemoveTerminatingServiceActionsInput input = new RemoveTerminatingServiceActionsInputBuilder()
                 .setDpnId(destDpId).setServiceId(serviceId).build();
-        Future<RpcResult<Void>> futureObject = itmRpcService.removeTerminatingServiceActions(input);
+        Future<RpcResult<RemoveTerminatingServiceActionsOutput>> futureObject =
+                itmRpcService.removeTerminatingServiceActions(input);
         try {
-            RpcResult<Void> result = futureObject.get();
+            RpcResult<RemoveTerminatingServiceActionsOutput> result = futureObject.get();
             if (result.isSuccessful()) {
                 LOG.debug("Successfully completed removeTerminatingServiceActions for ELAN with serviceId {} on "
                                 + "dpn {}", serviceId, destDpId);
index a6a7f9744695d2cacf9acbfe13dbf47017ce55b2..0e91d8bc3ec42e68edf48713e2411f39a7dc74fe 100644 (file)
@@ -9,9 +9,8 @@ package org.opendaylight.netvirt.elanmanager.tests.utils;
 
 import static org.opendaylight.yangtools.testutils.mockito.MoreAnswers.realOrException;
 
+import com.google.common.util.concurrent.ListenableFuture;
 import java.util.List;
-import java.util.concurrent.Future;
-
 import org.mockito.Mockito;
 import org.opendaylight.genius.interfacemanager.IfmUtil;
 import org.opendaylight.genius.interfacemanager.commons.InterfaceManagerCommonUtils;
@@ -26,7 +25,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rpc
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rpcs.rev160406.GetEgressActionsForInterfaceOutputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rpcs.rev160406.OdlInterfaceRpcService;
 import org.opendaylight.yangtools.yang.common.RpcResult;
-
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -45,7 +43,7 @@ public abstract class ElanEgressActionsHelper implements OdlInterfaceRpcService
     }
 
     @Override
-    public Future<RpcResult<GetEgressActionsForInterfaceOutput>> getEgressActionsForInterface(
+    public ListenableFuture<RpcResult<GetEgressActionsForInterfaceOutput>> getEgressActionsForInterface(
             GetEgressActionsForInterfaceInput input) {
         return FutureRpcResults.fromBuilder(LOG, input, () -> {
             List<Action> actionsList = IfmUtil.getEgressActionsForInterface(input.getIntfName(), input.getTunnelKey(),
@@ -55,7 +53,7 @@ public abstract class ElanEgressActionsHelper implements OdlInterfaceRpcService
     }
 
     @Override
-    public Future<RpcResult<GetDpidFromInterfaceOutput>> getDpidFromInterface(
+    public ListenableFuture<RpcResult<GetDpidFromInterfaceOutput>> getDpidFromInterface(
             GetDpidFromInterfaceInput input) {
         return FutureRpcResults.fromBuilder(LOG, input, () -> {
             return new GetDpidFromInterfaceOutputBuilder().setDpid(
index 9b7d05d60995da1e5c8aa65ab2463dadaa9d4863..c82727c38056b21f23eb89e9d7eb9b7b08d34796 100644 (file)
@@ -10,11 +10,9 @@ package org.opendaylight.netvirt.elanmanager.tests.utils;
 
 import static org.opendaylight.netvirt.elanmanager.tests.ElanServiceTestBase.ELAN1;
 
-import com.google.common.util.concurrent.Futures;
+import com.google.common.util.concurrent.ListenableFuture;
 import java.util.HashMap;
 import java.util.Map;
-import java.util.concurrent.Future;
-
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.AllocateIdInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.AllocateIdOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.AllocateIdOutputBuilder;
@@ -31,9 +29,8 @@ public abstract class IdHelper implements
     }
 
     @Override
-    public Future<RpcResult<AllocateIdOutput>> allocateId(AllocateIdInput allocateIdInput) {
+    public ListenableFuture<RpcResult<AllocateIdOutput>> allocateId(AllocateIdInput allocateIdInput) {
         Long id = ids.get(allocateIdInput.getIdKey());
-        return Futures.immediateFuture(RpcResultBuilder.success(
-                new AllocateIdOutputBuilder().setIdValue(id).build()).build());
+        return RpcResultBuilder.success(new AllocateIdOutputBuilder().setIdValue(id).build()).buildFuture();
     }
 }
index 2b477a129e9b7b4bcb2bb77f3f0c250eab02243c..4ba7983be7deaafdf02f71631a4f48954b224008 100644 (file)
@@ -10,13 +10,12 @@ package org.opendaylight.netvirt.fibmanager;
 import static org.opendaylight.netvirt.fibmanager.FibConstants.DEFAULT_FIB_FLOW_PRIORITY;
 import static org.opendaylight.netvirt.fibmanager.FibConstants.FLOWID_PREFIX;
 
-import com.google.common.util.concurrent.Futures;
+import com.google.common.util.concurrent.ListenableFuture;
 import java.math.BigInteger;
 import java.net.InetAddress;
 import java.net.UnknownHostException;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.concurrent.Future;
 import javax.inject.Inject;
 import javax.inject.Singleton;
 import org.apache.commons.lang3.tuple.ImmutablePair;
@@ -35,10 +34,18 @@ import org.opendaylight.netvirt.vpnmanager.api.IVpnFootprintService;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.Flow;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.list.Instruction;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fib.rpc.rev160121.CleanupDpnForVpnInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fib.rpc.rev160121.CleanupDpnForVpnOutput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fib.rpc.rev160121.CleanupDpnForVpnOutputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fib.rpc.rev160121.CreateFibEntryInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fib.rpc.rev160121.CreateFibEntryOutput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fib.rpc.rev160121.CreateFibEntryOutputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fib.rpc.rev160121.FibRpcService;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fib.rpc.rev160121.PopulateFibOnDpnInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fib.rpc.rev160121.PopulateFibOnDpnOutput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fib.rpc.rev160121.PopulateFibOnDpnOutputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fib.rpc.rev160121.RemoveFibEntryInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fib.rpc.rev160121.RemoveFibEntryOutput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fib.rpc.rev160121.RemoveFibEntryOutputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.l3vpn.rev130911.VpnInstanceOpData;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.l3vpn.rev130911.VpnInstanceToVpnId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.l3vpn.rev130911.vpn.instance.op.data.VpnInstanceOpDataEntry;
@@ -76,7 +83,7 @@ public class FibRpcServiceImpl implements FibRpcService {
      * To install FIB routes on specified dpn with given instructions.
      */
     @Override
-    public Future<RpcResult<Void>> createFibEntry(CreateFibEntryInput input) {
+    public ListenableFuture<RpcResult<CreateFibEntryOutput>> createFibEntry(CreateFibEntryInput input) {
 
         BigInteger dpnId = input.getSourceDpid();
         String vpnName = input.getVpnName();
@@ -92,14 +99,14 @@ public class FibRpcServiceImpl implements FibRpcService {
         vpnFootprintService.updateVpnToDpnMapping(dpnId, vpnName, vpnRd, null /* interfaceName*/,
                 new ImmutablePair<>(ipAddressSource, ipAddress), true /*add*/);
         LOG.info("ADD: Added Custom Fib Entry rd {} prefix {} label {}", vpnRd, ipAddress, input.getServiceId());
-        return Futures.immediateFuture(RpcResultBuilder.<Void>success().build());
+        return RpcResultBuilder.success(new CreateFibEntryOutputBuilder().build()).buildFuture();
     }
 
     /**
      * To remove FIB/LFIB/TST routes from specified dpn.
      */
     @Override
-    public Future<RpcResult<Void>> removeFibEntry(RemoveFibEntryInput input) {
+    public ListenableFuture<RpcResult<RemoveFibEntryOutput>> removeFibEntry(RemoveFibEntryInput input) {
         BigInteger dpnId = input.getSourceDpid();
         String vpnName = input.getVpnName();
         long vpnId = getVpnId(dataBroker, vpnName);
@@ -115,20 +122,20 @@ public class FibRpcServiceImpl implements FibRpcService {
         vpnFootprintService.updateVpnToDpnMapping(dpnId, vpnName, vpnRd, null /* interfaceName*/,
                 new ImmutablePair<>(ipAddressSource, ipAddress), false /*add*/);
         LOG.info("REMOVE: Removed Custom Fib Entry rd {} prefix {} label {}", vpnRd, ipAddress, input.getServiceId());
-        return Futures.immediateFuture(RpcResultBuilder.<Void>success().build());
+        return RpcResultBuilder.success(new RemoveFibEntryOutputBuilder().build()).buildFuture();
     }
 
 
     @Override
-    public Future<RpcResult<Void>> populateFibOnDpn(PopulateFibOnDpnInput input) {
+    public ListenableFuture<RpcResult<PopulateFibOnDpnOutput>> populateFibOnDpn(PopulateFibOnDpnInput input) {
         fibManager.populateFibOnNewDpn(input.getDpid(), input.getVpnId(), input.getRd(), null);
-        return Futures.immediateFuture(RpcResultBuilder.<Void>success().build());
+        return RpcResultBuilder.success(new PopulateFibOnDpnOutputBuilder().build()).buildFuture();
     }
 
     @Override
-    public Future<RpcResult<Void>> cleanupDpnForVpn(CleanupDpnForVpnInput input) {
+    public ListenableFuture<RpcResult<CleanupDpnForVpnOutput>> cleanupDpnForVpn(CleanupDpnForVpnInput input) {
         fibManager.cleanUpDpnForVpn(input.getDpid(), input.getVpnId(), input.getRd(), null);
-        return Futures.immediateFuture(RpcResultBuilder.<Void>success().build());
+        return RpcResultBuilder.success(new CleanupDpnForVpnOutputBuilder().build()).buildFuture();
     }
 
     private void removeLocalFibEntry(BigInteger dpnId, long vpnId, String ipPrefix) {
index 4be3c7b795f3aba7fb9619f7c53835473e20e1f7..49c0934f4a365c84f486f5fc2912efc88e607831 100644 (file)
@@ -43,6 +43,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.Fl
 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.itm.op.rev160406.DpnEndpoints;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.dpn.endpoints.DPNTEPsInfo;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.dpn.endpoints.DPNTEPsInfoKey;
@@ -51,8 +52,10 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.lockmanager.rev16041
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.lockmanager.rev160413.TimeUnits;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.lockmanager.rev160413.TryLockInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.lockmanager.rev160413.TryLockInputBuilder;
+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.UnlockInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.lockmanager.rev160413.UnlockOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.BucketId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.Buckets;
@@ -223,8 +226,7 @@ public class FibUtil {
     void releaseId(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();
+            RpcResult<ReleaseIdOutput> rpcResult = idManager.releaseId(idInput).get();
             if (!rpcResult.isSuccessful()) {
                 LOG.error("RPC Call to Get Unique Id for key {} returned with Errors {}", idKey, rpcResult.getErrors());
             }
@@ -837,10 +839,10 @@ public class FibUtil {
     public static boolean lockCluster(LockManagerService lockManager, String lockName, long tryLockPeriod) {
         TryLockInput input = new TryLockInputBuilder().setLockName(lockName).setTime(tryLockPeriod)
                 .setTimeUnit(TimeUnits.Milliseconds).build();
-        Future<RpcResult<Void>> result = lockManager.tryLock(input);
+        Future<RpcResult<TryLockOutput>> result = lockManager.tryLock(input);
         boolean lockAcquired;
         try {
-            if ((result != null) && (result.get().isSuccessful())) {
+            if (result != null && result.get().isSuccessful()) {
                 LOG.debug("lockCluster: Acquired lock for {}", lockName);
                 lockAcquired = true;
             } else {
@@ -857,9 +859,9 @@ public class FibUtil {
 
     public static void unlockCluster(LockManagerService lockManager, String lockName) {
         UnlockInput input = new UnlockInputBuilder().setLockName(lockName).build();
-        Future<RpcResult<Void>> result = lockManager.unlock(input);
+        Future<RpcResult<UnlockOutput>> result = lockManager.unlock(input);
         try {
-            if ((result != null) && (result.get().isSuccessful())) {
+            if (result != null && result.get().isSuccessful()) {
                 LOG.debug("unlockCluster: Unlocked {}", lockName);
             } else {
                 LOG.error("unlockCluster: Unable to release lock for {}", lockName);
index e3d49f3474c2e978ae416914a898fbb38edcc800..13be7913ef6abc3ece1fb86a65a2965472f59937 100644 (file)
@@ -69,9 +69,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.genius.interfacemanager.rev160406.TunnelTypeBase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.TunnelTypeGre;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.TunnelTypeMplsOverGre;
@@ -146,7 +148,7 @@ public class NexthopManager implements AutoCloseable {
     private final ItmRpcService itmManager;
     private final IdManagerService idManager;
     private final IElanService elanService;
-    private LockManagerService lockManager;
+    private final LockManagerService lockManager;
     private final SalGroupService salGroupService;
     private final JobCoordinator jobCoordinator;
     private final FibUtil fibUtil;
@@ -197,7 +199,7 @@ public class NexthopManager implements AutoCloseable {
             .setHigh(175000L)
             .build();
         try {
-            Future<RpcResult<Void>> result = idManager.createIdPool(createPool);
+            Future<RpcResult<CreateIdPoolOutput>> result = idManager.createIdPool(createPool);
             if (result != null && result.get().isSuccessful()) {
                 LOG.info("Created IdPool for NextHopPointerPool");
             }
@@ -234,8 +236,7 @@ public class NexthopManager implements AutoCloseable {
             .setPoolName(NEXTHOP_ID_POOL_NAME)
             .setIdKey(nexthopKey).build();
         try {
-            Future<RpcResult<Void>> result = idManager.releaseId(idInput);
-            RpcResult<Void> rpcResult = result.get();
+            RpcResult<ReleaseIdOutput> rpcResult = idManager.releaseId(idInput).get();
             if (!rpcResult.isSuccessful()) {
                 LOG.error("RPC Call to Get Unique Id for nexthopKey {} returned with Errors {}",
                         nexthopKey, rpcResult.getErrors());
index bc6ab926064c83b13b4498b08d3aad951adf12da..3686fb38368f30195d68a1a1a5d3d6aa1499f02f 100644 (file)
@@ -10,7 +10,7 @@ package org.opendaylight.netvirt.ipv6service;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import com.google.common.util.concurrent.Futures;
+import com.google.common.util.concurrent.ListenableFuture;
 import java.math.BigInteger;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Future;
@@ -25,6 +25,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rpc
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorRef;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.ipv6service.ipv6util.rev170210.Ipv6NdutilService;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.ipv6service.ipv6util.rev170210.SendNeighborSolicitationInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.ipv6service.ipv6util.rev170210.SendNeighborSolicitationOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.ipv6service.ipv6util.rev170210.interfaces.InterfaceAddress;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.PacketProcessingService;
 import org.opendaylight.yangtools.yang.common.RpcError;
@@ -52,9 +53,10 @@ public class Ipv6NdUtilServiceImpl implements Ipv6NdutilService {
     }
 
     @Override
-    public Future<RpcResult<Void>> sendNeighborSolicitation(SendNeighborSolicitationInput ndInput) {
-        RpcResultBuilder<Void> failureBuilder = RpcResultBuilder.failed();
-        RpcResultBuilder<Void> successBuilder = RpcResultBuilder.success();
+    public ListenableFuture<RpcResult<SendNeighborSolicitationOutput>> sendNeighborSolicitation(
+            SendNeighborSolicitationInput ndInput) {
+        RpcResultBuilder<SendNeighborSolicitationOutput> failureBuilder = RpcResultBuilder.failed();
+        RpcResultBuilder<SendNeighborSolicitationOutput> successBuilder = RpcResultBuilder.success();
         Ipv6Address targetIpv6Address = null;
         Ipv6Address srcIpv6Address;
         String interfaceName = null;
@@ -96,10 +98,10 @@ public class Ipv6NdUtilServiceImpl implements Ipv6NdutilService {
         }
         if (localErrorCount == ndInput.getInterfaceAddress().size()) {
             // Failed to send IPv6 Neighbor Solicitation on all the interfaces, return failure.
-            return Futures.immediateFuture(failureBuilder.build());
+            return failureBuilder.buildFuture();
         }
 
-        return Futures.immediateFuture(successBuilder.build());
+        return successBuilder.buildFuture();
     }
 
     private GetPortFromInterfaceOutput getPortFromInterface(String interfaceName) {
index acb696986e79c0b3a42bd82e1aecb439caa51718..a1201b5c615394d5fc594758d31a780dcd84c391 100644 (file)
@@ -11,14 +11,12 @@ package org.opendaylight.netvirt.natservice.internal;
 import com.google.common.base.Optional;
 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 com.google.common.util.concurrent.MoreExecutors;
 import java.math.BigInteger;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
-import java.util.concurrent.Future;
 import javax.annotation.Nonnull;
 import javax.inject.Inject;
 import javax.inject.Singleton;
@@ -52,9 +50,11 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instru
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.IdManagerService;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fib.rpc.rev160121.CreateFibEntryInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fib.rpc.rev160121.CreateFibEntryInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fib.rpc.rev160121.CreateFibEntryOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fib.rpc.rev160121.FibRpcService;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fib.rpc.rev160121.RemoveFibEntryInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fib.rpc.rev160121.RemoveFibEntryInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fib.rpc.rev160121.RemoveFibEntryOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.l3vpn.rev130911.Adjacencies;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.l3vpn.rev130911.AdjacenciesOp;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.l3vpn.rev130911.AdjacenciesOpBuilder;
@@ -151,8 +151,7 @@ public class EvpnDnatFlowProgrammer {
                 .setServiceId(l3Vni).setIpAddressSource(CreateFibEntryInput.IpAddressSource.FloatingIP)
                 .setInstruction(instructionsFib).build();
 
-        Future<RpcResult<Void>> future1 = fibService.createFibEntry(input);
-        ListenableFuture<RpcResult<Void>> futureVxlan = JdkFutureAdapters.listenInPoolThread(future1);
+        ListenableFuture<RpcResult<CreateFibEntryOutput>> futureVxlan = fibService.createFibEntry(input);
         LOG.debug("onAddFloatingIp : Add Floating Ip {} , found associated to fixed port {}",
                 externalIp, interfaceName);
         if (floatingIpPortMacAddress != null) {
@@ -164,7 +163,7 @@ public class EvpnDnatFlowProgrammer {
             writeTx.submit();
         }
         final long finalL3Vni = l3Vni;
-        Futures.addCallback(futureVxlan, new FutureCallback<RpcResult<Void>>() {
+        Futures.addCallback(futureVxlan, new FutureCallback<RpcResult<CreateFibEntryOutput>>() {
 
             @Override
             public void onFailure(@Nonnull Throwable error) {
@@ -173,7 +172,7 @@ public class EvpnDnatFlowProgrammer {
             }
 
             @Override
-            public void onSuccess(@Nonnull RpcResult<Void> result) {
+            public void onSuccess(@Nonnull RpcResult<CreateFibEntryOutput> result) {
                 if (result.isSuccessful()) {
                     LOG.info("onAddFloatingIp : Successfully installed custom FIB routes for Floating "
                             + "IP Prefix {} on DPN {}", externalIp, dpnId);
@@ -290,10 +289,9 @@ public class EvpnDnatFlowProgrammer {
         RemoveFibEntryInput input = new RemoveFibEntryInputBuilder().setVpnName(vpnName)
                 .setSourceDpid(dpnId).setIpAddress(fibExternalIp).setServiceId(l3Vni)
                 .setIpAddressSource(RemoveFibEntryInput.IpAddressSource.FloatingIP).build();
-        Future<RpcResult<Void>> future = fibService.removeFibEntry(input);
-        ListenableFuture<RpcResult<Void>> futureVxlan = JdkFutureAdapters.listenInPoolThread(future);
+        ListenableFuture<RpcResult<RemoveFibEntryOutput>> futureVxlan = fibService.removeFibEntry(input);
         final long finalL3Vni = l3Vni;
-        Futures.addCallback(futureVxlan, new FutureCallback<RpcResult<Void>>() {
+        Futures.addCallback(futureVxlan, new FutureCallback<RpcResult<RemoveFibEntryOutput>>() {
 
             @Override
             public void onFailure(@Nonnull Throwable error) {
@@ -302,7 +300,7 @@ public class EvpnDnatFlowProgrammer {
             }
 
             @Override
-            public void onSuccess(@Nonnull RpcResult<Void> result) {
+            public void onSuccess(@Nonnull RpcResult<RemoveFibEntryOutput> result) {
                 if (result.isSuccessful()) {
                     LOG.info("onRemoveFloatingIp : Successfully removed custom FIB routes for Floating "
                             + "IP Prefix {} on DPN {}", externalIp, dpnId);
index 3ee30f9e899db2de139760ba51e6217575f19550..ebdbe48af3f9594c974c2da9c30e3eedda5cd8f4 100644 (file)
@@ -10,13 +10,11 @@ package org.opendaylight.netvirt.natservice.internal;
 
 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 com.google.common.util.concurrent.MoreExecutors;
 import java.math.BigInteger;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.concurrent.Future;
 import javax.annotation.Nonnull;
 import javax.inject.Inject;
 import javax.inject.Singleton;
@@ -36,9 +34,11 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instru
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.IdManagerService;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fib.rpc.rev160121.CreateFibEntryInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fib.rpc.rev160121.CreateFibEntryInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fib.rpc.rev160121.CreateFibEntryOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fib.rpc.rev160121.FibRpcService;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fib.rpc.rev160121.RemoveFibEntryInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fib.rpc.rev160121.RemoveFibEntryInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fib.rpc.rev160121.RemoveFibEntryOutput;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -134,11 +134,10 @@ public class EvpnSnatFlowProgrammer {
                 + "NAPT Switch {} with l3Vni {}, ExternalFixedIp {}, ExternalVpnName {} for RouterId {}",
                 NwConstants.L3_FIB_TABLE, tableId, dpnId, l3Vni, externalIp, vpnName, routerId);
 
-        Future<RpcResult<Void>> future1 = fibService.createFibEntry(input);
-        ListenableFuture<RpcResult<Void>> futureVxlan = JdkFutureAdapters.listenInPoolThread(future1);
+        ListenableFuture<RpcResult<CreateFibEntryOutput>> futureVxlan = fibService.createFibEntry(input);
 
         final long finalL3Vni = l3Vni;
-        Futures.addCallback(futureVxlan, new FutureCallback<RpcResult<Void>>() {
+        Futures.addCallback(futureVxlan, new FutureCallback<RpcResult<CreateFibEntryOutput>>() {
             @Override
             public void onFailure(@Nonnull Throwable error) {
                 LOG.error("evpnAdvToBgpAndInstallFibAndTsFlows : Error in custom fib routes install process for "
@@ -147,7 +146,7 @@ public class EvpnSnatFlowProgrammer {
             }
 
             @Override
-            public void onSuccess(@Nonnull RpcResult<Void> result) {
+            public void onSuccess(@Nonnull RpcResult<CreateFibEntryOutput> result) {
                 if (result.isSuccessful()) {
                     LOG.info("evpnAdvToBgpAndInstallFibAndTsFlows : Successfully installed custom FIB routes for "
                             + "External Fixed IP {} on DPN {} with l3Vni {}, ExternalVpnName {} for RouterId {}",
@@ -222,10 +221,9 @@ public class EvpnSnatFlowProgrammer {
                         + "NAPT Switch {} with l3Vni {}, ExternalFixedIp {}, ExternalVpnName {} for RouterId {}",
                 NwConstants.L3_FIB_TABLE, NwConstants.INBOUND_NAPT_TABLE, dpnId, l3Vni, externalIp, vpnName, routerId);
 
-        Future<RpcResult<Void>> future = fibService.removeFibEntry(input);
-        ListenableFuture<RpcResult<Void>> futureVxlan = JdkFutureAdapters.listenInPoolThread(future);
+        ListenableFuture<RpcResult<RemoveFibEntryOutput>> futureVxlan = fibService.removeFibEntry(input);
         final long finalL3Vni = l3Vni;
-        Futures.addCallback(futureVxlan, new FutureCallback<RpcResult<Void>>() {
+        Futures.addCallback(futureVxlan, new FutureCallback<RpcResult<RemoveFibEntryOutput>>() {
             @Override
             public void onFailure(@Nonnull Throwable error) {
                 LOG.error("evpnDelFibTsAndReverseTraffic : Error in custom fib routes remove process for "
@@ -234,7 +232,7 @@ public class EvpnSnatFlowProgrammer {
             }
 
             @Override
-            public void onSuccess(@Nonnull RpcResult<Void> result) {
+            public void onSuccess(@Nonnull RpcResult<RemoveFibEntryOutput> result) {
                 if (result.isSuccessful()) {
                     LOG.info("evpnDelFibTsAndReverseTraffic : Successfully removed custom FIB routes for "
                             + "External Fixed IP {} on DPN {} with l3Vni {}, ExternalVpnName {} for "
index bac3c1e39e90de8743fa1d98b0fbffa0fcaa318a..1c1231dda1ec6fd21849c6ec7ab6bc80c8e3ee4c 100644 (file)
@@ -11,7 +11,6 @@ import com.google.common.base.Optional;
 import com.google.common.util.concurrent.AsyncFunction;
 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 com.google.common.util.concurrent.MoreExecutors;
 import java.math.BigInteger;
@@ -81,6 +80,7 @@ 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.interfacemanager.rev160406.TunnelTypeBase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.TunnelTypeGre;
@@ -92,9 +92,11 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.I
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupTypes;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fib.rpc.rev160121.CreateFibEntryInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fib.rpc.rev160121.CreateFibEntryInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fib.rpc.rev160121.CreateFibEntryOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fib.rpc.rev160121.FibRpcService;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fib.rpc.rev160121.RemoveFibEntryInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fib.rpc.rev160121.RemoveFibEntryInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fib.rpc.rev160121.RemoveFibEntryOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.config.rev170206.NatserviceConfig;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.config.rev170206.NatserviceConfig.NatMode;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.rev160111.ExtRouters;
@@ -132,6 +134,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.vpn.rpc.rev160201.G
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.vpn.rpc.rev160201.GenerateVpnLabelOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.vpn.rpc.rev160201.RemoveVpnLabelInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.vpn.rpc.rev160201.RemoveVpnLabelInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.vpn.rpc.rev160201.RemoveVpnLabelOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.vpn.rpc.rev160201.VpnRpcService;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.ports.rev150712.ports.attributes.ports.Port;
 import org.opendaylight.yangtools.yang.binding.DataObject;
@@ -825,7 +828,7 @@ public class ExternalRoutersListener extends AsyncDataTreeChangeListenerBase<Rou
             .setHigh(NatConstants.SNAT_ID_HIGH_VALUE)
             .build();
         try {
-            Future<RpcResult<Void>> result = idManager.createIdPool(createPool);
+            Future<RpcResult<CreateIdPoolOutput>> result = idManager.createIdPool(createPool);
             if (result != null && result.get().isSuccessful()) {
                 LOG.debug("createGroupIdPool : GroupIdPool created successfully");
             } else {
@@ -998,12 +1001,12 @@ public class ExternalRoutersListener extends AsyncDataTreeChangeListenerBase<Rou
         //Generate VPN label for the external IP
         GenerateVpnLabelInput labelInput = new GenerateVpnLabelInputBuilder().setVpnName(vpnName)
             .setIpPrefix(externalIp).build();
-        Future<RpcResult<GenerateVpnLabelOutput>> labelFuture = vpnService.generateVpnLabel(labelInput);
+        ListenableFuture<RpcResult<GenerateVpnLabelOutput>> labelFuture = vpnService.generateVpnLabel(labelInput);
 
         //On successful generation of the VPN label, advertise the route to the BGP and install the FIB routes.
-        ListenableFuture<RpcResult<Void>> future =
-            Futures.transformAsync(JdkFutureAdapters.listenInPoolThread(labelFuture),
-                (AsyncFunction<RpcResult<GenerateVpnLabelOutput>, RpcResult<Void>>) result -> {
+        ListenableFuture<RpcResult<CreateFibEntryOutput>> future =
+            Futures.transformAsync(labelFuture,
+                (AsyncFunction<RpcResult<GenerateVpnLabelOutput>, RpcResult<CreateFibEntryOutput>>) result -> {
                     if (result.isSuccessful()) {
                         LOG.debug("advToBgpAndInstallFibAndTsFlows : inside apply with result success");
                         GenerateVpnLabelOutput output = result.getResult();
@@ -1080,8 +1083,7 @@ public class ExternalRoutersListener extends AsyncDataTreeChangeListenerBase<Rou
                             .setSourceDpid(dpnId).setIpAddress(fibExternalIp).setServiceId(label)
                             .setIpAddressSource(CreateFibEntryInput.IpAddressSource.ExternalFixedIP)
                             .setInstruction(fibTableCustomInstructions).build();
-                        Future<RpcResult<Void>> future1 = fibService.createFibEntry(input);
-                        return JdkFutureAdapters.listenInPoolThread(future1);
+                        return fibService.createFibEntry(input);
                     } else {
                         LOG.error("advToBgpAndInstallFibAndTsFlows : inside apply with result failed");
                         String errMsg = String.format("Could not retrieve the label for prefix %s in VPN %s, %s",
@@ -1090,7 +1092,7 @@ public class ExternalRoutersListener extends AsyncDataTreeChangeListenerBase<Rou
                     }
                 }, MoreExecutors.directExecutor());
 
-        Futures.addCallback(future, new FutureCallback<RpcResult<Void>>() {
+        Futures.addCallback(future, new FutureCallback<RpcResult<CreateFibEntryOutput>>() {
 
             @Override
             public void onFailure(@Nonnull Throwable error) {
@@ -1098,7 +1100,7 @@ public class ExternalRoutersListener extends AsyncDataTreeChangeListenerBase<Rou
             }
 
             @Override
-            public void onSuccess(@Nonnull RpcResult<Void> result) {
+            public void onSuccess(@Nonnull RpcResult<CreateFibEntryOutput> result) {
                 if (result.isSuccessful()) {
                     LOG.info("advToBgpAndInstallFibAndTsFlows : Successfully installed custom FIB routes for prefix {}",
                             externalIp);
@@ -2228,7 +2230,7 @@ public class ExternalRoutersListener extends AsyncDataTreeChangeListenerBase<Rou
         RemoveFibEntryInput input = new RemoveFibEntryInputBuilder().setVpnName(vpnName)
                 .setSourceDpid(dpnId).setIpAddress(externalIp).setServiceId(label)
                 .setIpAddressSource(RemoveFibEntryInput.IpAddressSource.ExternalFixedIP).build();
-        Future<RpcResult<Void>> future = fibService.removeFibEntry(input);
+        ListenableFuture<RpcResult<RemoveFibEntryOutput>> future = fibService.removeFibEntry(input);
 
         removeTunnelTableEntry(dpnId, label, removeFlowInvTx);
         removeLFibTableEntry(dpnId, label, removeFlowInvTx);
@@ -2237,26 +2239,24 @@ public class ExternalRoutersListener extends AsyncDataTreeChangeListenerBase<Rou
             NatUtil.removePreDnatToSnatTableEntry(mdsalManager, dpnId, removeFlowInvTx);
         }
         if (!switchOver) {
-            ListenableFuture<RpcResult<Void>> labelFuture =
-                    Futures.transformAsync(JdkFutureAdapters.listenInPoolThread(future),
-                            (AsyncFunction<RpcResult<Void>, RpcResult<Void>>) result -> {
+            ListenableFuture<RpcResult<RemoveVpnLabelOutput>> labelFuture =
+                    Futures.transformAsync(future, result -> {
                                 //Release label
-                            if (result.isSuccessful()) {
-                                NatUtil.removePreDnatToSnatTableEntry(mdsalManager, dpnId, removeFlowInvTx);
-                                RemoveVpnLabelInput labelInput = new RemoveVpnLabelInputBuilder()
-                                        .setVpnName(vpnName).setIpPrefix(externalIp).build();
-                                Future<RpcResult<Void>> labelFuture1 = vpnService.removeVpnLabel(labelInput);
-                                return JdkFutureAdapters.listenInPoolThread(labelFuture1);
-                            } else {
-                                String errMsg =
-                                        String.format("RPC call to remove custom FIB entries on dpn %s for "
-                                                + "prefix %s Failed - %s", dpnId, externalIp, result.getErrors());
-                                LOG.error(errMsg);
-                                return Futures.immediateFailedFuture(new RuntimeException(errMsg));
-                            }
-                        });
+                        if (result.isSuccessful()) {
+                            NatUtil.removePreDnatToSnatTableEntry(mdsalManager, dpnId, removeFlowInvTx);
+                            RemoveVpnLabelInput labelInput = new RemoveVpnLabelInputBuilder()
+                                    .setVpnName(vpnName).setIpPrefix(externalIp).build();
+                            return vpnService.removeVpnLabel(labelInput);
+                        } else {
+                            String errMsg =
+                                    String.format("RPC call to remove custom FIB entries on dpn %s for "
+                                            + "prefix %s Failed - %s", dpnId, externalIp, result.getErrors());
+                            LOG.error(errMsg);
+                            return Futures.immediateFailedFuture(new RuntimeException(errMsg));
+                        }
+                    }, MoreExecutors.directExecutor());
 
-            Futures.addCallback(labelFuture, new FutureCallback<RpcResult<Void>>() {
+            Futures.addCallback(labelFuture, new FutureCallback<RpcResult<RemoveVpnLabelOutput>>() {
 
                 @Override
                 public void onFailure(@Nonnull Throwable error) {
@@ -2265,7 +2265,7 @@ public class ExternalRoutersListener extends AsyncDataTreeChangeListenerBase<Rou
                 }
 
                 @Override
-                public void onSuccess(@Nonnull RpcResult<Void> result) {
+                public void onSuccess(@Nonnull RpcResult<RemoveVpnLabelOutput> result) {
                     if (result.isSuccessful()) {
                         LOG.debug("delFibTsAndReverseTraffic : Successfully removed the label for the prefix {} "
                             + "from VPN {}", externalIp, vpnName);
@@ -2335,7 +2335,7 @@ public class ExternalRoutersListener extends AsyncDataTreeChangeListenerBase<Rou
         RemoveFibEntryInput input = new RemoveFibEntryInputBuilder()
                 .setVpnName(vpnName).setSourceDpid(dpnId).setIpAddress(externalIp)
                 .setIpAddressSource(RemoveFibEntryInput.IpAddressSource.ExternalFixedIP).setServiceId(label).build();
-        Future<RpcResult<Void>> future = fibService.removeFibEntry(input);
+        ListenableFuture<RpcResult<RemoveFibEntryOutput>> future = fibService.removeFibEntry(input);
 
         removeTunnelTableEntry(dpnId, label, removeFlowInvTx);
         removeLFibTableEntry(dpnId, label, removeFlowInvTx);
@@ -2344,26 +2344,24 @@ public class ExternalRoutersListener extends AsyncDataTreeChangeListenerBase<Rou
             NatUtil.removePreDnatToSnatTableEntry(mdsalManager, dpnId, removeFlowInvTx);
         }
         if (!switchOver) {
-            ListenableFuture<RpcResult<Void>> labelFuture =
-                    Futures.transformAsync(JdkFutureAdapters.listenInPoolThread(future),
-                            (AsyncFunction<RpcResult<Void>, RpcResult<Void>>) result -> {
-                                //Release label
-                            if (result.isSuccessful()) {
-                                RemoveVpnLabelInput labelInput = new RemoveVpnLabelInputBuilder()
-                                        .setVpnName(vpnName).setIpPrefix(externalIp).build();
-                                Future<RpcResult<Void>> labelFuture1 = vpnService.removeVpnLabel(labelInput);
-                                return JdkFutureAdapters.listenInPoolThread(labelFuture1);
-                            } else {
-                                String errMsg =
-                                        String.format("RPC call to remove custom FIB entries on dpn %s for "
-                                                        + "prefix %s Failed - %s",
-                                                dpnId, externalIp, result.getErrors());
-                                LOG.error(errMsg);
-                                return Futures.immediateFailedFuture(new RuntimeException(errMsg));
-                            }
-                        });
+            ListenableFuture<RpcResult<RemoveVpnLabelOutput>> labelFuture =
+                    Futures.transformAsync(future, result -> {
+                        //Release label
+                        if (result.isSuccessful()) {
+                            RemoveVpnLabelInput labelInput = new RemoveVpnLabelInputBuilder()
+                                    .setVpnName(vpnName).setIpPrefix(externalIp).build();
+                            return vpnService.removeVpnLabel(labelInput);
+                        } else {
+                            String errMsg =
+                                    String.format("RPC call to remove custom FIB entries on dpn %s for "
+                                            + "prefix %s Failed - %s",
+                                            dpnId, externalIp, result.getErrors());
+                            LOG.error(errMsg);
+                            return Futures.immediateFailedFuture(new RuntimeException(errMsg));
+                        }
+                    }, MoreExecutors.directExecutor());
 
-            Futures.addCallback(labelFuture, new FutureCallback<RpcResult<Void>>() {
+            Futures.addCallback(labelFuture, new FutureCallback<RpcResult<RemoveVpnLabelOutput>>() {
 
                 @Override
                 public void onFailure(@Nonnull Throwable error) {
@@ -2371,7 +2369,7 @@ public class ExternalRoutersListener extends AsyncDataTreeChangeListenerBase<Rou
                 }
 
                 @Override
-                public void onSuccess(@Nonnull RpcResult<Void> result) {
+                public void onSuccess(@Nonnull RpcResult<RemoveVpnLabelOutput> result) {
                     if (result.isSuccessful()) {
                         LOG.debug("delFibTsAndReverseTraffic : Successfully removed the label for the prefix {} "
                             + "from VPN {}", externalIp, vpnName);
index 421f14a1209305777a759d1847274061ac0051ef..22d2e2c1b420e43cf3223bfc512f825d5ccf4bc4 100644 (file)
@@ -33,11 +33,14 @@ 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.DeleteIdPoolInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.DeleteIdPoolInputBuilder;
+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.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.netvirt.natservice.rev160111.ExternalIpsCounter;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.rev160111.IntextIpMap;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.rev160111.IntextIpPortMap;
@@ -101,7 +104,7 @@ public class NaptManager {
             .setHigh(HIGH_PORT)
             .build();
         try {
-            Future<RpcResult<Void>> result = idManager.createIdPool(createPool);
+            Future<RpcResult<CreateIdPoolOutput>> result = idManager.createIdPool(createPool);
             if (result != null && result.get().isSuccessful()) {
                 LOG.debug("createNaptPortPool : Created PortPool :{}", poolName);
             } else {
@@ -116,7 +119,7 @@ public class NaptManager {
         DeleteIdPoolInput deleteIdPoolInput = new DeleteIdPoolInputBuilder().setPoolName(poolName).build();
         LOG.debug("removeNaptPortPool : Remove Napt port pool requested for : {}", poolName);
         try {
-            Future<RpcResult<Void>> result = idManager.deleteIdPool(deleteIdPoolInput);
+            Future<RpcResult<DeleteIdPoolOutput>> result = idManager.deleteIdPool(deleteIdPoolInput);
             if (result != null && result.get().isSuccessful()) {
                 LOG.debug("removeNaptPortPool : Deleted PortPool {}", poolName);
             } else {
@@ -730,8 +733,7 @@ public class NaptManager {
             .setPoolName(externalIp)
             .setIdKey(internalIpPort).build();
         try {
-            Future<RpcResult<Void>> result = idManager.releaseId(idInput);
-            RpcResult<Void> rpcResult = result.get();
+            RpcResult<ReleaseIdOutput> rpcResult = idManager.releaseId(idInput).get();
             if (!rpcResult.isSuccessful()) {
                 LOG.error("removePortFromPool : idmanager failed to remove port from pool {}", rpcResult.getErrors());
             }
index 09f2e12d73bef7ce6a35b8e05837690ea436e36b..cda0d88804c0001dc0fc24d3c516e85259678cd2 100644 (file)
@@ -14,7 +14,6 @@ import java.util.Collections;
 import java.util.List;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Future;
-
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
@@ -41,6 +40,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.netvirt.fibmanager.rev150330.vrfentries.VrfEntry;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.l3vpn.rev130911.prefix.to._interface.vpn.ids.Prefixes;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.l3vpn.rev130911.vpn.instance.op.data.VpnInstanceOpDataEntry;
@@ -84,8 +84,7 @@ public final class NatEvpnUtil {
                 .setPoolName(IfmConstants.IFM_IDPOOL_NAME).setIdKey(routerName)
                 .build();
         try {
-            Future<RpcResult<Void>> result = idManager.releaseId(getIdInput);
-            RpcResult<Void> rpcResult = result.get();
+            RpcResult<ReleaseIdOutput> rpcResult = idManager.releaseId(getIdInput).get();
             if (!rpcResult.isSuccessful()) {
                 LOG.error("releaseLPortTagForRouter:ID manager failed while releasing allocated lport_tag "
                         + "for router {}. Exception {} ", routerName, rpcResult.getErrors());
@@ -137,7 +136,7 @@ public final class NatEvpnUtil {
     }
 
     private static boolean isL3VpnOverVxLan(Long l3Vni) {
-        return (l3Vni != null && l3Vni != 0);
+        return l3Vni != null && l3Vni != 0;
     }
 
     static ProviderTypes getExtNwProvTypeFromRouterName(DataBroker dataBroker, String routerName,
@@ -185,7 +184,7 @@ public final class NatEvpnUtil {
                     Collections.singletonList(nextHopIp), VrfEntry.EncapType.Vxlan, NatConstants.DEFAULT_LABEL_VALUE,
                     l3Vni, gwMacAddress, null /* parent-vpn-rd */, origin, writeTx);
             /* Publish to Bgp only if its an INTERNET VPN */
-            if ((rd != null) && (!rd.equalsIgnoreCase(vpnName))) {
+            if (rd != null && !rd.equalsIgnoreCase(vpnName)) {
                 bgpManager.advertisePrefix(rd, null /*macAddress*/, prefix, Collections.singletonList(nextHopIp),
                         VrfEntry.EncapType.Vxlan, NatConstants.DEFAULT_LABEL_VALUE, l3Vni, 0 /*l2vni*/,
                         gwMacAddress);
index c824d2d62a334bd283345eab7a7cdedcba9a52e1..a2a79c66daad8d525f766b14bf6db842dc73cc74 100644 (file)
@@ -8,11 +8,9 @@
 package org.opendaylight.netvirt.natservice.internal;
 
 import com.google.common.base.Optional;
-
 import java.math.BigInteger;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Future;
-
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.genius.datastoreutils.SingleTransactionDataBroker;
@@ -22,12 +20,15 @@ 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.DeleteIdPoolInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.DeleteIdPoolInputBuilder;
+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.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.yangtools.yang.binding.InstanceIdentifier;
@@ -80,8 +81,7 @@ public final class NatOverVxlanUtil {
         ReleaseIdInput releaseIdInput = new ReleaseIdInputBuilder().setPoolName(NatConstants.ODL_VNI_POOL_NAME)
             .setIdKey(vniKey).build();
         try {
-            Future<RpcResult<Void>> result = idManager.releaseId(releaseIdInput);
-            RpcResult<Void> rpcResult = result.get();
+            RpcResult<ReleaseIdOutput> rpcResult = idManager.releaseId(releaseIdInput).get();
             if (!rpcResult.isSuccessful()) {
                 LOG.warn("releaseVNI : Unable to release ID {} from OpenDaylight VXLAN VNI range pool. Error {}",
                         vniKey, rpcResult.getErrors());
@@ -142,7 +142,7 @@ public final class NatOverVxlanUtil {
         CreateIdPoolInput createPool = null;
         createPool = new CreateIdPoolInputBuilder().setPoolName(poolName).setLow(lowLimit).setHigh(highLimit).build();
         try {
-            Future<RpcResult<Void>> result = idManager.createIdPool(createPool);
+            Future<RpcResult<CreateIdPoolOutput>> result = idManager.createIdPool(createPool);
             if (result != null && result.get().isSuccessful()) {
                 LOG.debug("createOpenDaylightVniRangesPool : Created OpenDaylight VXLAN VNI range pool {} "
                         + "with range {}-{}", poolName, lowLimit, highLimit);
@@ -159,7 +159,7 @@ public final class NatOverVxlanUtil {
     public static void deleteOpenDaylightVniRangesPool(IdManagerService idManager, String poolName) {
 
         DeleteIdPoolInput deletePool = new DeleteIdPoolInputBuilder().setPoolName(poolName).build();
-        Future<RpcResult<Void>> result = idManager.deleteIdPool(deletePool);
+        Future<RpcResult<DeleteIdPoolOutput>> result = idManager.deleteIdPool(deletePool);
         try {
             if (result != null && result.get().isSuccessful()) {
                 LOG.debug("deleteOpenDaylightVniRangesPool : Deleted OpenDaylight VXLAN VNI range pool {} successfully",
index 5525511b434b80ae202b1a7de3c3472127062d2f..ce2d8dade40baa0c7254278b755816704aa21ba7 100644 (file)
@@ -12,7 +12,6 @@ import com.google.common.base.Optional;
 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 com.google.common.util.concurrent.MoreExecutors;
 import java.math.BigInteger;
@@ -21,7 +20,6 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
-import java.util.concurrent.Future;
 import javax.annotation.Nonnull;
 import javax.annotation.PostConstruct;
 import javax.inject.Inject;
@@ -62,9 +60,11 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.tun
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupTypes;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fib.rpc.rev160121.CreateFibEntryInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fib.rpc.rev160121.CreateFibEntryInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fib.rpc.rev160121.CreateFibEntryOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fib.rpc.rev160121.FibRpcService;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fib.rpc.rev160121.RemoveFibEntryInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fib.rpc.rev160121.RemoveFibEntryInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fib.rpc.rev160121.RemoveFibEntryOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.l3vpn.rev130911.dpn.routers.DpnRoutersList;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.l3vpn.rev130911.dpn.routers.dpn.routers.list.RoutersList;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.config.rev170206.NatserviceConfig;
@@ -762,10 +762,9 @@ public class NatTunnelInterfaceStateListener
                     new CreateFibEntryInputBuilder().setVpnName(externalVpnName).setSourceDpid(srcDpnId)
                     .setInstruction(customInstructions).setIpAddress(fibExternalIp)
                     .setServiceId(serviceId).setInstruction(customInstructions).build();
-            Future<RpcResult<Void>> future = fibRpcService.createFibEntry(input);
-            ListenableFuture<RpcResult<Void>> listenableFuture = JdkFutureAdapters.listenInPoolThread(future);
+            ListenableFuture<RpcResult<CreateFibEntryOutput>> listenableFuture = fibRpcService.createFibEntry(input);
 
-            Futures.addCallback(listenableFuture, new FutureCallback<RpcResult<Void>>() {
+            Futures.addCallback(listenableFuture, new FutureCallback<RpcResult<CreateFibEntryOutput>>() {
 
                 @Override
                 public void onFailure(@Nonnull Throwable error) {
@@ -774,7 +773,7 @@ public class NatTunnelInterfaceStateListener
                 }
 
                 @Override
-                public void onSuccess(@Nonnull RpcResult<Void> result) {
+                public void onSuccess(@Nonnull RpcResult<CreateFibEntryOutput> result) {
                     if (result.isSuccessful()) {
                         LOG.info("hndlTepAddOnNaptSwitch : SNAT -> Successfully installed custom FIB routes "
                                 + "for prefix {}", externalIp);
@@ -895,10 +894,10 @@ public class NatTunnelInterfaceStateListener
                     .setSourceDpid(fipCfgdDpnId).setInstruction(customInstructions)
                     .setIpAddress(fibExternalIp).setServiceId(serviceId).setInstruction(customInstructions)
                         .build();
-                Future<RpcResult<Void>> future = fibRpcService.createFibEntry(input);
-                ListenableFuture<RpcResult<Void>> listenableFuture = JdkFutureAdapters.listenInPoolThread(future);
+                ListenableFuture<RpcResult<CreateFibEntryOutput>> listenableFuture =
+                        fibRpcService.createFibEntry(input);
 
-                Futures.addCallback(listenableFuture, new FutureCallback<RpcResult<Void>>() {
+                Futures.addCallback(listenableFuture, new FutureCallback<RpcResult<CreateFibEntryOutput>>() {
 
                     @Override
                     public void onFailure(@Nonnull Throwable error) {
@@ -907,7 +906,7 @@ public class NatTunnelInterfaceStateListener
                     }
 
                     @Override
-                    public void onSuccess(@Nonnull RpcResult<Void> result) {
+                    public void onSuccess(@Nonnull RpcResult<CreateFibEntryOutput> result) {
                         if (result.isSuccessful()) {
                             LOG.info("hndlTepAddForDnatInEachRtr : DNAT -> Successfully installed custom FIB routes "
                                     + "for prefix {}", externalIp);
@@ -1095,10 +1094,10 @@ public class NatTunnelInterfaceStateListener
                 RemoveFibEntryInput input = new RemoveFibEntryInputBuilder().setVpnName(vpnName)
                     .setSourceDpid(fipCfgdDpnId).setIpAddress(externalIp).setServiceId(serviceId)
                     .setIpAddressSource(RemoveFibEntryInput.IpAddressSource.FloatingIP).build();
-                Future<RpcResult<Void>> future = fibRpcService.removeFibEntry(input);
-                ListenableFuture<RpcResult<Void>> listenableFuture = JdkFutureAdapters.listenInPoolThread(future);
+                ListenableFuture<RpcResult<RemoveFibEntryOutput>> listenableFuture =
+                        fibRpcService.removeFibEntry(input);
 
-                Futures.addCallback(listenableFuture, new FutureCallback<RpcResult<Void>>() {
+                Futures.addCallback(listenableFuture, new FutureCallback<RpcResult<RemoveFibEntryOutput>>() {
 
                     @Override
                     public void onFailure(@Nonnull Throwable error) {
@@ -1107,7 +1106,7 @@ public class NatTunnelInterfaceStateListener
                     }
 
                     @Override
-                    public void onSuccess(@Nonnull RpcResult<Void> result) {
+                    public void onSuccess(@Nonnull RpcResult<RemoveFibEntryOutput> result) {
                         if (result.isSuccessful()) {
                             LOG.info("hndlTepDelForDnatInEachRtr : DNAT -> Successfully removed the entry pushing the "
                                 + "MPLS label to the tunnel");
index b3e784067a6f8f774457eafd7a6656e0f439a31a..e47f43c453e5a30e77f436a5dd19f4f71523fc42 100644 (file)
@@ -10,17 +10,14 @@ package org.opendaylight.netvirt.natservice.internal;
 import static org.opendaylight.netvirt.natservice.internal.NatUtil.buildfloatingIpIdToPortMappingIdentifier;
 
 import com.google.common.base.Optional;
-import com.google.common.util.concurrent.AsyncFunction;
 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 com.google.common.util.concurrent.MoreExecutors;
 import java.math.BigInteger;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
-import java.util.concurrent.Future;
 import javax.annotation.Nonnull;
 import javax.inject.Inject;
 import javax.inject.Singleton;
@@ -66,9 +63,11 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.arputil.rev160406.in
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.IdManagerService;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fib.rpc.rev160121.CreateFibEntryInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fib.rpc.rev160121.CreateFibEntryInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fib.rpc.rev160121.CreateFibEntryOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fib.rpc.rev160121.FibRpcService;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fib.rpc.rev160121.RemoveFibEntryInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fib.rpc.rev160121.RemoveFibEntryInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fib.rpc.rev160121.RemoveFibEntryOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.rev160111.ProviderTypes;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.rev160111.external.subnets.Subnets;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.rev160111.floating.ip.info.router.ports.ports.InternalToExternalPortMap;
@@ -78,6 +77,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.vpn.rpc.rev160201.G
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.vpn.rpc.rev160201.GenerateVpnLabelOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.vpn.rpc.rev160201.RemoveVpnLabelInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.vpn.rpc.rev160201.RemoveVpnLabelInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.vpn.rpc.rev160201.RemoveVpnLabelOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.vpn.rpc.rev160201.VpnRpcService;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.opendaylight.yangtools.yang.common.RpcResult;
@@ -193,73 +193,71 @@ public class VpnFloatingIpHandler implements FloatingIPHandler {
          */
         GenerateVpnLabelInput labelInput = new GenerateVpnLabelInputBuilder().setVpnName(vpnName)
             .setIpPrefix(externalIp).build();
-        Future<RpcResult<GenerateVpnLabelOutput>> labelFuture = vpnService.generateVpnLabel(labelInput);
-
-        ListenableFuture<RpcResult<Void>> future = Futures.transformAsync(
-                JdkFutureAdapters.listenInPoolThread(labelFuture),
-                (AsyncFunction<RpcResult<GenerateVpnLabelOutput>, RpcResult<Void>>) result -> {
-                if (result.isSuccessful()) {
-                    GenerateVpnLabelOutput output = result.getResult();
-                    long label = output.getLabel();
-                    LOG.debug("onAddFloatingIp : Generated label {} for prefix {}", label, externalIp);
-                    FloatingIPListener.updateOperationalDS(dataBroker, routerUuid, interfaceName, label,
+        ListenableFuture<RpcResult<GenerateVpnLabelOutput>> labelFuture = vpnService.generateVpnLabel(labelInput);
+
+        ListenableFuture<RpcResult<CreateFibEntryOutput>> future = Futures.transformAsync(labelFuture, result -> {
+            if (result.isSuccessful()) {
+                GenerateVpnLabelOutput output = result.getResult();
+                long label = output.getLabel();
+                LOG.debug("onAddFloatingIp : Generated label {} for prefix {}", label, externalIp);
+                FloatingIPListener.updateOperationalDS(dataBroker, routerUuid, interfaceName, label,
                         internalIp, externalIp);
-                    /*
-                     * For external network of type VXLAN all packets going from VMs within the DC, towards the
-                     * external gateway device via the External VXLAN Tunnel,we are setting the VXLAN Tunnel ID to
-                     * the L3VNI value of VPNInstance to which the VM belongs to.
-                     */
-                    long l3vni = 0;
-                    if (NatUtil.isOpenStackVniSemanticsEnforcedForGreAndVxlan(elanService, provType)) {
-                        l3vni = NatOverVxlanUtil.getInternetVpnVni(idManager, vpnName, l3vni).longValue();
-                    }
-                    String fibExternalIp = NatUtil.validateAndAddNetworkMask(externalIp);
-                    //Inform BGP
-                    NatUtil.addPrefixToBGP(dataBroker, bgpManager, fibManager, vpnName, rd, subnetId,
-                            fibExternalIp, nextHopIp, networkId.getValue(), floatingIpPortMacAddress,
-                            label, l3vni, RouteOrigin.STATIC, dpnId);
-
-                    List<Instruction> instructions = new ArrayList<>();
-                    List<ActionInfo> actionsInfos = new ArrayList<>();
-                    actionsInfos.add(new ActionNxResubmit(NwConstants.PDNAT_TABLE));
-                    instructions.add(new InstructionApplyActions(actionsInfos).buildInstruction(0));
-                    makeTunnelTableEntry(vpnName, dpnId, label, instructions, writeFlowInvTx, provType);
-
-                    //Install custom FIB routes
-                    List<ActionInfo> actionInfoFib = new ArrayList<>();
-                    List<Instruction> customInstructions = new ArrayList<>();
-                    actionInfoFib.add(new ActionSetFieldEthernetDestination(new MacAddress(floatingIpPortMacAddress)));
-                    customInstructions.add(new InstructionApplyActions(actionInfoFib).buildInstruction(0));
-                    customInstructions.add(new InstructionGotoTable(NwConstants.PDNAT_TABLE).buildInstruction(1));
-
-                    makeLFibTableEntry(dpnId, label, floatingIpPortMacAddress, NwConstants.PDNAT_TABLE, writeFlowInvTx);
-                    CreateFibEntryInput input = new CreateFibEntryInputBuilder().setVpnName(vpnName)
+                /*
+                 * For external network of type VXLAN all packets going from VMs within the DC, towards the
+                 * external gateway device via the External VXLAN Tunnel,we are setting the VXLAN Tunnel ID to
+                 * the L3VNI value of VPNInstance to which the VM belongs to.
+                 */
+                long l3vni = 0;
+                if (NatUtil.isOpenStackVniSemanticsEnforcedForGreAndVxlan(elanService, provType)) {
+                    l3vni = NatOverVxlanUtil.getInternetVpnVni(idManager, vpnName, l3vni).longValue();
+                }
+                String fibExternalIp = NatUtil.validateAndAddNetworkMask(externalIp);
+                //Inform BGP
+                NatUtil.addPrefixToBGP(dataBroker, bgpManager, fibManager, vpnName, rd, subnetId,
+                        fibExternalIp, nextHopIp, networkId.getValue(), floatingIpPortMacAddress,
+                        label, l3vni, RouteOrigin.STATIC, dpnId);
+
+                List<Instruction> instructions = new ArrayList<>();
+                List<ActionInfo> actionsInfos = new ArrayList<>();
+                actionsInfos.add(new ActionNxResubmit(NwConstants.PDNAT_TABLE));
+                instructions.add(new InstructionApplyActions(actionsInfos).buildInstruction(0));
+                makeTunnelTableEntry(vpnName, dpnId, label, instructions, writeFlowInvTx, provType);
+
+                //Install custom FIB routes
+                List<ActionInfo> actionInfoFib = new ArrayList<>();
+                List<Instruction> customInstructions = new ArrayList<>();
+                actionInfoFib.add(new ActionSetFieldEthernetDestination(new MacAddress(floatingIpPortMacAddress)));
+                customInstructions.add(new InstructionApplyActions(actionInfoFib).buildInstruction(0));
+                customInstructions.add(new InstructionGotoTable(NwConstants.PDNAT_TABLE).buildInstruction(1));
+
+                makeLFibTableEntry(dpnId, label, floatingIpPortMacAddress, NwConstants.PDNAT_TABLE, writeFlowInvTx);
+                CreateFibEntryInput input = new CreateFibEntryInputBuilder().setVpnName(vpnName)
                         .setSourceDpid(dpnId).setInstruction(customInstructions)
                         .setIpAddress(fibExternalIp).setServiceId(label)
                         .setIpAddressSource(CreateFibEntryInput.IpAddressSource.FloatingIP)
                         .setInstruction(customInstructions).build();
-                    //Future<RpcResult<java.lang.Void>> createFibEntry(CreateFibEntryInput input);
-                    Future<RpcResult<Void>> future1 = fibService.createFibEntry(input);
-                    LOG.debug("onAddFloatingIp : Add Floating Ip {} , found associated to fixed port {}",
-                            externalIp, interfaceName);
-                    String networkVpnName =  NatUtil.getAssociatedVPN(dataBroker, networkId);
-                    txRunner.callWithNewWriteOnlyTransactionAndSubmit(tx -> {
-                        vpnManager.addSubnetMacIntoVpnInstance(networkVpnName, subnetVpnName,
-                                floatingIpPortMacAddress, dpnId, tx);
-                        vpnManager.addArpResponderFlowsToExternalNetworkIps(routerUuid,
-                                Collections.singleton(externalIp),
-                                floatingIpPortMacAddress, dpnId, networkId, tx);
-                    });
-                    return JdkFutureAdapters.listenInPoolThread(future1);
-                } else {
-                    String errMsg = String.format("onAddFloatingIp : Could not retrieve the label for prefix %s "
-                            + "in VPN %s, %s", externalIp, vpnName, result.getErrors());
-                    LOG.error(errMsg);
-                    return Futures.immediateFailedFuture(new RuntimeException(errMsg));
-                }
-            }, MoreExecutors.directExecutor());
+                //Future<RpcResult<java.lang.Void>> createFibEntry(CreateFibEntryInput input);
+                ListenableFuture<RpcResult<CreateFibEntryOutput>> future1 = fibService.createFibEntry(input);
+                LOG.debug("onAddFloatingIp : Add Floating Ip {} , found associated to fixed port {}",
+                        externalIp, interfaceName);
+                String networkVpnName =  NatUtil.getAssociatedVPN(dataBroker, networkId);
+                txRunner.callWithNewWriteOnlyTransactionAndSubmit(tx -> {
+                    vpnManager.addSubnetMacIntoVpnInstance(networkVpnName, subnetVpnName,
+                            floatingIpPortMacAddress, dpnId, tx);
+                    vpnManager.addArpResponderFlowsToExternalNetworkIps(routerUuid,
+                            Collections.singleton(externalIp),
+                            floatingIpPortMacAddress, dpnId, networkId, tx);
+                });
+                return future1;
+            } else {
+                String errMsg = String.format("onAddFloatingIp : Could not retrieve the label for prefix %s "
+                        + "in VPN %s, %s", externalIp, vpnName, result.getErrors());
+                LOG.error(errMsg);
+                return Futures.immediateFailedFuture(new RuntimeException(errMsg));
+            }
+        }, MoreExecutors.directExecutor());
 
-        Futures.addCallback(future, new FutureCallback<RpcResult<Void>>() {
+        Futures.addCallback(future, new FutureCallback<RpcResult<CreateFibEntryOutput>>() {
 
             @Override
             public void onFailure(@Nonnull Throwable error) {
@@ -267,7 +265,7 @@ public class VpnFloatingIpHandler implements FloatingIPHandler {
             }
 
             @Override
-            public void onSuccess(@Nonnull RpcResult<Void> result) {
+            public void onSuccess(@Nonnull RpcResult<CreateFibEntryOutput> result) {
                 if (result.isSuccessful()) {
                     LOG.info("onAddFloatingIp : Successfully installed custom FIB routes for prefix {}", externalIp);
                 } else {
@@ -344,39 +342,36 @@ public class VpnFloatingIpHandler implements FloatingIPHandler {
         RemoveFibEntryInput input = new RemoveFibEntryInputBuilder().setVpnName(vpnName)
             .setSourceDpid(dpnId).setIpAddress(fibExternalIp).setServiceId(label)
             .setIpAddressSource(RemoveFibEntryInput.IpAddressSource.FloatingIP).build();
-        Future<RpcResult<Void>> future = fibService.removeFibEntry(input);
+        ListenableFuture<RpcResult<RemoveFibEntryOutput>> future = fibService.removeFibEntry(input);
 
-        ListenableFuture<RpcResult<Void>> labelFuture = Futures.transformAsync(
-                JdkFutureAdapters.listenInPoolThread(future),
-                (AsyncFunction<RpcResult<Void>, RpcResult<Void>>) result -> {
-                //Release label
-                if (result.isSuccessful()) {
+        ListenableFuture<RpcResult<RemoveVpnLabelOutput>> labelFuture = Futures.transformAsync(future, result -> {
+            //Release label
+            if (result.isSuccessful()) {
                 /*  check if any floating IP information is available in vpn-to-dpn-list for given dpn id. If exist any
                  *  floating IP then do not remove INTERNAL_TUNNEL_TABLE (table=36) -> PDNAT_TABLE (table=25) flow entry
                  */
-                    Boolean removeTunnelFlow = Boolean.TRUE;
-                    if (NatUtil.isOpenStackVniSemanticsEnforcedForGreAndVxlan(elanService, provType)) {
-                        if (NatUtil.isFloatingIpPresentForDpn(dataBroker, dpnId, rd, vpnName, externalIp, false)) {
-                            removeTunnelFlow = Boolean.FALSE;
-                        }
-                    }
-                    if (removeTunnelFlow) {
-                        removeTunnelTableEntry(dpnId, label, removeFlowInvTx);
+                Boolean removeTunnelFlow = Boolean.TRUE;
+                if (NatUtil.isOpenStackVniSemanticsEnforcedForGreAndVxlan(elanService, provType)) {
+                    if (NatUtil.isFloatingIpPresentForDpn(dataBroker, dpnId, rd, vpnName, externalIp, false)) {
+                        removeTunnelFlow = Boolean.FALSE;
                     }
-                    removeLFibTableEntry(dpnId, label, removeFlowInvTx);
-                    RemoveVpnLabelInput labelInput = new RemoveVpnLabelInputBuilder()
-                        .setVpnName(vpnName).setIpPrefix(externalIp).build();
-                    Future<RpcResult<Void>> labelFuture1 = vpnService.removeVpnLabel(labelInput);
-                    return JdkFutureAdapters.listenInPoolThread(labelFuture1);
-                } else {
-                    String errMsg = String.format("onRemoveFloatingIp :RPC call to remove custom FIB entries "
-                            + "on dpn %s for prefix %s Failed - %s", dpnId, externalIp, result.getErrors());
-                    LOG.error(errMsg);
-                    return Futures.immediateFailedFuture(new RuntimeException(errMsg));
                 }
-            }, MoreExecutors.directExecutor());
+                if (removeTunnelFlow) {
+                    removeTunnelTableEntry(dpnId, label, removeFlowInvTx);
+                }
+                removeLFibTableEntry(dpnId, label, removeFlowInvTx);
+                RemoveVpnLabelInput labelInput = new RemoveVpnLabelInputBuilder()
+                        .setVpnName(vpnName).setIpPrefix(externalIp).build();
+                return vpnService.removeVpnLabel(labelInput);
+            } else {
+                String errMsg = String.format("onRemoveFloatingIp :RPC call to remove custom FIB entries "
+                        + "on dpn %s for prefix %s Failed - %s", dpnId, externalIp, result.getErrors());
+                LOG.error(errMsg);
+                return Futures.immediateFailedFuture(new RuntimeException(errMsg));
+            }
+        }, MoreExecutors.directExecutor());
 
-        Futures.addCallback(labelFuture, new FutureCallback<RpcResult<Void>>() {
+        Futures.addCallback(labelFuture, new FutureCallback<RpcResult<RemoveVpnLabelOutput>>() {
 
             @Override
             public void onFailure(@Nonnull Throwable error) {
@@ -384,7 +379,7 @@ public class VpnFloatingIpHandler implements FloatingIPHandler {
             }
 
             @Override
-            public void onSuccess(@Nonnull RpcResult<Void> result) {
+            public void onSuccess(@Nonnull RpcResult<RemoveVpnLabelOutput> result) {
                 if (result.isSuccessful()) {
                     LOG.debug("onRemoveFloatingIp : Successfully removed the label for the prefix {} from VPN {}",
                             externalIp, vpnName);
index a8857adef82df4c4a075b1b27edf671eb77e3bdc..1e828a0c4bd7b884b3f6e956efb62ac7281173ba 100644 (file)
@@ -8,11 +8,9 @@
 package org.opendaylight.netvirt.natservice.rpcservice;
 
 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 javax.inject.Inject;
 import javax.inject.Singleton;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
@@ -48,7 +46,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.subnets.rev150712.s
 import org.opendaylight.yangtools.yang.common.RpcError;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
-
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -66,7 +63,7 @@ public class NatRpcServiceImpl implements OdlNatRpcService {
     }
 
     @Override
-    public Future<RpcResult<GetNatTranslationsOnVpnOutput>> getNatTranslationsOnVpn(
+    public ListenableFuture<RpcResult<GetNatTranslationsOnVpnOutput>> getNatTranslationsOnVpn(
             GetNatTranslationsOnVpnInput input) {
         RpcResultBuilder<GetNatTranslationsOnVpnOutput> rpcResultBuilder = null;
 
@@ -76,7 +73,7 @@ public class NatRpcServiceImpl implements OdlNatRpcService {
                     input.getVpnUuid().getValue());
             rpcResultBuilder = RpcResultBuilder.<GetNatTranslationsOnVpnOutput>failed()
                     .withError(RpcError.ErrorType.APPLICATION, errMsg);
-            return Futures.immediateFuture(rpcResultBuilder.build());
+            return rpcResultBuilder.buildFuture();
         }
         List<RouterNat> natRouterList = new ArrayList<>();
         for (Uuid routerUuid : routerUuidList) {
@@ -95,7 +92,7 @@ public class NatRpcServiceImpl implements OdlNatRpcService {
     }
 
     @Override
-    public Future<RpcResult<GetNatTranslationsOnRouterOutput>> getNatTranslationsOnRouter(
+    public ListenableFuture<RpcResult<GetNatTranslationsOnRouterOutput>> getNatTranslationsOnRouter(
             GetNatTranslationsOnRouterInput input) {
         RpcResultBuilder<GetNatTranslationsOnRouterOutput> rpcResultBuilder = null;
         long routerId = NatUtil.getVpnId(dataBroker, input.getRouterUuid().getValue());
@@ -104,7 +101,7 @@ public class NatRpcServiceImpl implements OdlNatRpcService {
                     input.getRouterUuid().getValue());
             rpcResultBuilder = RpcResultBuilder.<GetNatTranslationsOnRouterOutput>failed()
                     .withError(RpcError.ErrorType.APPLICATION, errMsg);
-            return Futures.immediateFuture(rpcResultBuilder.build());
+            return rpcResultBuilder.buildFuture();
         }
 
         List<RouterNat> routerNatList = constructNatInformation(input.getRouterUuid(), routerId);
@@ -113,11 +110,12 @@ public class NatRpcServiceImpl implements OdlNatRpcService {
                 .setRouterNat(routerNatList);
         rpcResultBuilder = RpcResultBuilder.success();
         rpcResultBuilder.withResult(output.build());
-        return Futures.immediateFuture(rpcResultBuilder.build());
+        return rpcResultBuilder.buildFuture();
     }
 
-    public Future<RpcResult<GetNatTranslationsForNetworkAndIpaddressOutput>> getNatTranslationsForNetworkAndIpaddress(
-            GetNatTranslationsForNetworkAndIpaddressInput input) {
+    @Override
+    public ListenableFuture<RpcResult<GetNatTranslationsForNetworkAndIpaddressOutput>>
+            getNatTranslationsForNetworkAndIpaddress(GetNatTranslationsForNetworkAndIpaddressInput input) {
 
         String ipAddress = String.valueOf(input.getIpAddress().getValue());
         RpcResultBuilder<GetNatTranslationsForNetworkAndIpaddressOutput> rpcResultBuilder = null;
@@ -129,7 +127,7 @@ public class NatRpcServiceImpl implements OdlNatRpcService {
                     input.getNetworkUuid().getValue());
             rpcResultBuilder = RpcResultBuilder.<GetNatTranslationsForNetworkAndIpaddressOutput>failed()
                     .withError(RpcError.ErrorType.APPLICATION, errMsg);
-            return Futures.immediateFuture(rpcResultBuilder.build());
+            return rpcResultBuilder.buildFuture();
         }
         Subnet subNet = null;
         Boolean isIpInSubnet = Boolean.FALSE;
@@ -153,7 +151,7 @@ public class NatRpcServiceImpl implements OdlNatRpcService {
                     + " of Network {%s}", ipAddress, input.getNetworkUuid().getValue());
             rpcResultBuilder = RpcResultBuilder.<GetNatTranslationsForNetworkAndIpaddressOutput>failed()
                     .withError(RpcError.ErrorType.APPLICATION, errMsg);
-            return Futures.immediateFuture(rpcResultBuilder.build());
+            return rpcResultBuilder.buildFuture();
         }
 
         Subnetmap subnetMap = NatUtil.getSubnetMap(dataBroker, subNet.getUuid());
@@ -172,7 +170,7 @@ public class NatRpcServiceImpl implements OdlNatRpcService {
                                     .setNatTranslation("DNAT");
                         rpcResultBuilder = RpcResultBuilder.success();
                         rpcResultBuilder.withResult(output.build());
-                        return Futures.immediateFuture(rpcResultBuilder.build());
+                        return rpcResultBuilder.buildFuture();
                     }
                 }
             }
@@ -196,7 +194,7 @@ public class NatRpcServiceImpl implements OdlNatRpcService {
                                 .setProtocol(protocolType.getProtocol().getName());
                         rpcResultBuilder = RpcResultBuilder.success();
                         rpcResultBuilder.withResult(output.build());
-                        return Futures.immediateFuture(rpcResultBuilder.build());
+                        return rpcResultBuilder.buildFuture();
                     }
                 }
             }
@@ -205,7 +203,7 @@ public class NatRpcServiceImpl implements OdlNatRpcService {
         String errMsg = String.format("404 Not Found - No NAT Translation found for IP {%s}", ipAddress);
         rpcResultBuilder = RpcResultBuilder.<GetNatTranslationsForNetworkAndIpaddressOutput>failed()
                 .withError(RpcError.ErrorType.APPLICATION, errMsg);
-        return Futures.immediateFuture(rpcResultBuilder.build());
+        return rpcResultBuilder.buildFuture();
     }
 
     private List<RouterNat> constructNatInformation(Uuid routerUuid, long routerId) {
@@ -259,4 +257,4 @@ public class NatRpcServiceImpl implements OdlNatRpcService {
         natRouterList.add(natRouterBuilder.build());
         return natRouterList;
     }
-}
\ No newline at end of file
+}
index f8fcc9657f436e2577ca2343569887047336a0b5..51e32fe1ec7f400757798d6c8ef8a0e1f33f2a9a 100644 (file)
@@ -24,6 +24,7 @@ import org.opendaylight.genius.mdsalutil.MDSALUtil;
 import org.opendaylight.netvirt.natservice.internal.IPAddress;
 import org.opendaylight.netvirt.natservice.internal.NaptManager;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.CreateIdPoolInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.CreateIdPoolOutputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.IdManagerService;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.rev160111.IntextIpMap;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.rev160111.intext.ip.map.IpMapping;
@@ -56,8 +57,8 @@ public class NaptManagerTest {
     public void init() {
         MockitoAnnotations.initMocks(this);
         naptManager = new NaptManager(dataBroker, idMgr);
-        when(idMgr.createIdPool(any(CreateIdPoolInput.class)))
-            .thenReturn(Futures.immediateFuture(RpcResultBuilder.<Void>success().build()));
+        when(idMgr.createIdPool(any(CreateIdPoolInput.class))).thenReturn(
+                Futures.immediateFuture(RpcResultBuilder.success(new CreateIdPoolOutputBuilder().build()).build()));
 
         PowerMockito.mockStatic(MDSALUtil.class);
     }
index b3cedd3f61079ff59e7164472ced4eadc0e84e3d..0813cd744436a2810b956a4f571e349ab5e7c634 100644 (file)
@@ -27,6 +27,7 @@ import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev14081
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid;
 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.netvirt.neutronvpn.rev150602.vpnmaps.VpnMap;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.bgpvpns.rev150903.BgpvpnTypeBase;
@@ -279,7 +280,7 @@ public class NeutronBgpvpnChangeListener extends AsyncDataTreeChangeListenerBase
                 .setLow(NeutronConstants.RD_IDPOOL_START)
                 .setHigh(new BigInteger(NeutronConstants.RD_IDPOOL_SIZE).longValue()).build();
         try {
-            Future<RpcResult<Void>> result = idManager.createIdPool(createPool);
+            Future<RpcResult<CreateIdPoolOutput>> result = idManager.createIdPool(createPool);
             if (result != null && result.get().isSuccessful()) {
                 LOG.info("Created IdPool for Bgpvpn RD");
             } else {
index 45fb207a78bebf1993bc70f2db798871ad8d6f0a..7ade73d3976f37786c2841b67fcf7ca7d39fda9b 100644 (file)
@@ -20,7 +20,6 @@ import com.google.common.util.concurrent.JdkFutureAdapters;
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.MoreExecutors;
 import com.google.common.util.concurrent.SettableFuture;
-
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
@@ -101,6 +100,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev15060
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.AssociateNetworksOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.AssociateNetworksOutputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.AssociateRouterInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.AssociateRouterOutput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.AssociateRouterOutputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.CreateEVPNInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.CreateEVPNOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.CreateL3VPNInput;
@@ -115,6 +116,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev15060
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.DissociateNetworksOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.DissociateNetworksOutputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.DissociateRouterInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.DissociateRouterOutput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.DissociateRouterOutputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.GetEVPNInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.GetEVPNOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.GetFixedIPsForNeutronPortInput;
@@ -1178,7 +1181,7 @@ public class NeutronvpnManager implements NeutronvpnService, AutoCloseable, Even
     @Override
     // TODO Clean up the exception handling
     @SuppressWarnings("checkstyle:IllegalCatch")
-    public Future<RpcResult<CreateL3VPNOutput>> createL3VPN(CreateL3VPNInput input) {
+    public ListenableFuture<RpcResult<CreateL3VPNOutput>> createL3VPN(CreateL3VPNInput input) {
 
         CreateL3VPNOutputBuilder opBuilder = new CreateL3VPNOutputBuilder();
         SettableFuture<RpcResult<CreateL3VPNOutput>> result = SettableFuture.create();
@@ -1309,7 +1312,7 @@ public class NeutronvpnManager implements NeutronvpnService, AutoCloseable, Even
      * It handles the invocations to the neutronvpn:getL3VPN RPC method.
      */
     @Override
-    public Future<RpcResult<GetL3VPNOutput>> getL3VPN(GetL3VPNInput input) {
+    public ListenableFuture<RpcResult<GetL3VPNOutput>> getL3VPN(GetL3VPNInput input) {
 
         GetL3VPNOutputBuilder opBuilder = new GetL3VPNOutputBuilder();
         SettableFuture<RpcResult<GetL3VPNOutput>> result = SettableFuture.create();
@@ -1414,7 +1417,7 @@ public class NeutronvpnManager implements NeutronvpnService, AutoCloseable, Even
      * It handles the invocations to the neutronvpn:deleteL3VPN RPC method.
      */
     @Override
-    public Future<RpcResult<DeleteL3VPNOutput>> deleteL3VPN(DeleteL3VPNInput input) {
+    public ListenableFuture<RpcResult<DeleteL3VPNOutput>> deleteL3VPN(DeleteL3VPNInput input) {
 
         DeleteL3VPNOutputBuilder opBuilder = new DeleteL3VPNOutputBuilder();
         SettableFuture<RpcResult<DeleteL3VPNOutput>> result = SettableFuture.create();
@@ -2334,7 +2337,7 @@ public class NeutronvpnManager implements NeutronvpnService, AutoCloseable, Even
         }
         LOG.info("associateNetworksToVpn: update VPN {} with networks list: {}", vpnId.getValue(),
                  passedNwList.toString());
-        updateVpnMaps(vpnId, null, null, null, new ArrayList<Uuid>(passedNwList));
+        updateVpnMaps(vpnId, null, null, null, new ArrayList<>(passedNwList));
         return failedNwList;
     }
 
@@ -2358,8 +2361,8 @@ public class NeutronvpnManager implements NeutronvpnService, AutoCloseable, Even
                 continue;
             }
             updateVpnInternetForSubnet(sm, vpnId, true);
-            if (!(vpnOpDataEntry.isIpv6Configured())
-                    && (NeutronvpnUtils.getIpVersionFromString(sm.getSubnetIp()) == IpVersionChoice.IPV6)) {
+            if (!vpnOpDataEntry.isIpv6Configured()
+                    && NeutronvpnUtils.getIpVersionFromString(sm.getSubnetIp()) == IpVersionChoice.IPV6) {
                 LOG.info("associateExtNetworkToVpn: add IPv6 Internet default route in VPN {}", vpnId.getValue());
                 neutronvpnUtils.updateVpnInstanceWithFallback(vpnId.getValue(), true);
             }
@@ -2440,7 +2443,7 @@ public class NeutronvpnManager implements NeutronvpnService, AutoCloseable, Even
         }
         LOG.info("dissociateNetworksFromVpn: Withdraw networks list {} from VPN {}", networks.toString(),
                  vpnId.getValue());
-        clearFromVpnMaps(vpnId, null, new ArrayList<Uuid>(passedNwList));
+        clearFromVpnMaps(vpnId, null, new ArrayList<>(passedNwList));
         return failedNwList;
     }
 
@@ -2482,7 +2485,7 @@ public class NeutronvpnManager implements NeutronvpnService, AutoCloseable, Even
     @Override
     // TODO Clean up the exception handling
     @SuppressWarnings("checkstyle:IllegalCatch")
-    public Future<RpcResult<AssociateNetworksOutput>> associateNetworks(AssociateNetworksInput input) {
+    public ListenableFuture<RpcResult<AssociateNetworksOutput>> associateNetworks(AssociateNetworksInput input) {
 
         AssociateNetworksOutputBuilder opBuilder = new AssociateNetworksOutputBuilder();
         SettableFuture<RpcResult<AssociateNetworksOutput>> result = SettableFuture.create();
@@ -2525,9 +2528,9 @@ public class NeutronvpnManager implements NeutronvpnService, AutoCloseable, Even
     @Override
     // TODO Clean up the exception handling
     @SuppressWarnings("checkstyle:IllegalCatch")
-    public Future<RpcResult<Void>> associateRouter(AssociateRouterInput input) {
+    public ListenableFuture<RpcResult<AssociateRouterOutput>> associateRouter(AssociateRouterInput input) {
 
-        SettableFuture<RpcResult<Void>> result = SettableFuture.create();
+        SettableFuture<RpcResult<AssociateRouterOutput>> result = SettableFuture.create();
         LOG.debug("associateRouter {}", input);
         StringBuilder returnMsg = new StringBuilder();
         Uuid vpnId = input.getVpnId();
@@ -2554,14 +2557,14 @@ public class NeutronvpnManager implements NeutronvpnService, AutoCloseable, Even
                 returnMsg.append("VPN not found : ").append(vpnId.getValue());
             }
             if (returnMsg.length() != 0) {
-                result.set(RpcResultBuilder.<Void>failed().withWarning(ErrorType.PROTOCOL, "invalid-value",
-                        formatAndLog(LOG::error, "associate router to vpn {} failed due to {}", routerId.getValue(),
-                                returnMsg)).build());
+                result.set(RpcResultBuilder.<AssociateRouterOutput>failed().withWarning(ErrorType.PROTOCOL,
+                        "invalid-value", formatAndLog(LOG::error,
+                                "associate router to vpn {} failed due to {}", routerId.getValue(),returnMsg)).build());
             } else {
-                result.set(RpcResultBuilder.<Void>success().build());
+                result.set(RpcResultBuilder.success(new AssociateRouterOutputBuilder().build()).build());
             }
         } catch (Exception ex) {
-            result.set(RpcResultBuilder.<Void>failed().withError(ErrorType.APPLICATION,
+            result.set(RpcResultBuilder.<AssociateRouterOutput>failed().withError(ErrorType.APPLICATION,
                     formatAndLog(LOG::error, "associate router {} to vpn {} failed due to {}", routerId.getValue(),
                             vpnId.getValue(), ex.getMessage(), ex)).build());
         }
@@ -2574,7 +2577,7 @@ public class NeutronvpnManager implements NeutronvpnService, AutoCloseable, Even
     @Override
     // TODO Clean up the exception handling
     @SuppressWarnings("checkstyle:IllegalCatch")
-    public Future<RpcResult<GetFixedIPsForNeutronPortOutput>> getFixedIPsForNeutronPort(
+    public ListenableFuture<RpcResult<GetFixedIPsForNeutronPortOutput>> getFixedIPsForNeutronPort(
         GetFixedIPsForNeutronPortInput input) {
         GetFixedIPsForNeutronPortOutputBuilder opBuilder = new GetFixedIPsForNeutronPortOutputBuilder();
         SettableFuture<RpcResult<GetFixedIPsForNeutronPortOutput>> result = SettableFuture.create();
@@ -2616,7 +2619,7 @@ public class NeutronvpnManager implements NeutronvpnService, AutoCloseable, Even
     @Override
     // TODO Clean up the exception handling
     @SuppressWarnings("checkstyle:IllegalCatch")
-    public Future<RpcResult<DissociateNetworksOutput>> dissociateNetworks(DissociateNetworksInput input) {
+    public ListenableFuture<RpcResult<DissociateNetworksOutput>> dissociateNetworks(DissociateNetworksInput input) {
 
         DissociateNetworksOutputBuilder opBuilder = new DissociateNetworksOutputBuilder();
         SettableFuture<RpcResult<DissociateNetworksOutput>> result = SettableFuture.create();
@@ -2660,9 +2663,9 @@ public class NeutronvpnManager implements NeutronvpnService, AutoCloseable, Even
     @Override
     // TODO Clean up the exception handling
     @SuppressWarnings("checkstyle:IllegalCatch")
-    public Future<RpcResult<Void>> dissociateRouter(DissociateRouterInput input) {
+    public ListenableFuture<RpcResult<DissociateRouterOutput>> dissociateRouter(DissociateRouterInput input) {
 
-        SettableFuture<RpcResult<Void>> result = SettableFuture.create();
+        SettableFuture<RpcResult<DissociateRouterOutput>> result = SettableFuture.create();
 
         LOG.debug("dissociateRouter {}", input);
         StringBuilder returnMsg = new StringBuilder();
@@ -2694,14 +2697,14 @@ public class NeutronvpnManager implements NeutronvpnService, AutoCloseable, Even
                 returnMsg.append("VPN not found : ").append(vpnId.getValue());
             }
             if (returnMsg.length() != 0) {
-                result.set(RpcResultBuilder.<Void>failed().withWarning(ErrorType.PROTOCOL, "invalid-value",
-                        formatAndLog(LOG::error, "dissociate router {} to vpn {} failed due to {}", routerId.getValue(),
-                                vpnId.getValue(), returnMsg)).build());
+                result.set(RpcResultBuilder.<DissociateRouterOutput>failed().withWarning(ErrorType.PROTOCOL,
+                        "invalid-value", formatAndLog(LOG::error, "dissociate router {} to vpn {} failed due to {}",
+                                routerId.getValue(), vpnId.getValue(), returnMsg)).build());
             } else {
-                result.set(RpcResultBuilder.<Void>success().build());
+                result.set(RpcResultBuilder.success(new DissociateRouterOutputBuilder().build()).build());
             }
         } catch (Exception ex) {
-            result.set(RpcResultBuilder.<Void>failed().withError(ErrorType.APPLICATION,
+            result.set(RpcResultBuilder.<DissociateRouterOutput>failed().withError(ErrorType.APPLICATION,
                     formatAndLog(LOG::error, "disssociate router {} to vpn {} failed due to {}", routerId.getValue(),
                             vpnId.getValue(), ex.getMessage(), ex)).build());
         }
@@ -3044,17 +3047,17 @@ public class NeutronvpnManager implements NeutronvpnService, AutoCloseable, Even
     }
 
     @Override
-    public Future<RpcResult<CreateEVPNOutput>> createEVPN(CreateEVPNInput input) {
+    public ListenableFuture<RpcResult<CreateEVPNOutput>> createEVPN(CreateEVPNInput input) {
         return neutronEvpnManager.createEVPN(input);
     }
 
     @Override
-    public Future<RpcResult<GetEVPNOutput>> getEVPN(GetEVPNInput input) {
+    public ListenableFuture<RpcResult<GetEVPNOutput>> getEVPN(GetEVPNInput input) {
         return neutronEvpnManager.getEVPN(input);
     }
 
     @Override
-    public Future<RpcResult<DeleteEVPNOutput>> deleteEVPN(DeleteEVPNInput input) {
+    public ListenableFuture<RpcResult<DeleteEVPNOutput>> deleteEVPN(DeleteEVPNInput input) {
         return neutronEvpnManager.deleteEVPN(input);
     }
 
index 2d1c9a272ab64e6dcb15bd8b369973e3a86b6c37..c250d2d45de9e09f87de990d6d47f1535e2f3ecb 100644 (file)
@@ -66,6 +66,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.netvirt.aclservice.rev160608.Dhcpv6Base;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.aclservice.rev160608.InterfaceAclBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.aclservice.rev160608.IpPrefixOrAddress;
@@ -189,7 +190,7 @@ public class NeutronvpnUtils {
     private final ManagedNewTransactionRunner txRunner;
     private final IdManagerService idManager;
     private final JobCoordinator jobCoordinator;
-    private IPV6InternetDefaultRouteProgrammer ipV6InternetDefRt;
+    private final IPV6InternetDefaultRouteProgrammer ipV6InternetDefRt;
 
     @Inject
     public NeutronvpnUtils(final DataBroker dataBroker, final IdManagerService idManager,
@@ -1178,8 +1179,7 @@ public class NeutronvpnUtils {
     protected void releaseRDId(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();
+            RpcResult<ReleaseIdOutput> rpcResult = idManager.releaseId(idInput).get();
             if (!rpcResult.isSuccessful()) {
                 LOG.error("RPC Call to Get Unique Id returned with errors for poolname {} and ID Key {}: {}",
                         poolName, idKey, rpcResult.getErrors());
@@ -1529,7 +1529,7 @@ public class NeutronvpnUtils {
         InstanceIdentifier<VpnInstance> id = InstanceIdentifier.builder(VpnInstances.class).child(VpnInstance.class,
                 new VpnInstanceKey(vpnId.getValue())).build();
         Optional<VpnInstance> vpnInstance = read(LogicalDatastoreType.CONFIGURATION, id);
-        return (vpnInstance.isPresent()) ? vpnInstance.get() : null;
+        return vpnInstance.isPresent() ? vpnInstance.get() : null;
     }
 
     /**
index c5ec9a1c5ef2fae78ebe32ad13483e70c942848d..33ef39844b375a6dc457beeae6b7afdd627f9bc3 100644 (file)
@@ -8,10 +8,10 @@
 package org.opendaylight.netvirt.neutronvpn.evpn.manager;
 
 import com.google.common.base.Optional;
+import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.SettableFuture;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.concurrent.Future;
 import java.util.function.Consumer;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
@@ -62,7 +62,7 @@ public class NeutronEvpnManager {
     }
 
     @SuppressWarnings("checkstyle:IllegalCatch")
-    public Future<RpcResult<CreateEVPNOutput>> createEVPN(CreateEVPNInput input) {
+    public ListenableFuture<RpcResult<CreateEVPNOutput>> createEVPN(CreateEVPNInput input) {
         CreateEVPNOutputBuilder opBuilder = new CreateEVPNOutputBuilder();
         SettableFuture<RpcResult<CreateEVPNOutput>> result = SettableFuture.create();
         List<RpcError> errorList = new ArrayList<>();
@@ -120,12 +120,12 @@ public class NeutronEvpnManager {
                 errorResponseList.add("EVPN creation successful with no errors");
             }
             opBuilder.setResponse(errorResponseList);
-            result.set(RpcResultBuilder.<CreateEVPNOutput>success().withResult(opBuilder.build()).build());
+            result.set(RpcResultBuilder.success(opBuilder.build()).build());
         }
         return result;
     }
 
-    public Future<RpcResult<GetEVPNOutput>> getEVPN(GetEVPNInput input) {
+    public ListenableFuture<RpcResult<GetEVPNOutput>> getEVPN(GetEVPNInput input) {
         GetEVPNOutputBuilder opBuilder = new GetEVPNOutputBuilder();
         SettableFuture<RpcResult<GetEVPNOutput>> result = SettableFuture.create();
         Uuid inputVpnId = input.getId();
@@ -141,7 +141,7 @@ public class NeutronEvpnManager {
                 }
             } else {
                 // No VPN present
-                result.set(RpcResultBuilder.<GetEVPNOutput>success().withResult(opBuilder.build()).build());
+                result.set(RpcResultBuilder.success(opBuilder.build()).build());
                 return result;
             }
         } else {
@@ -197,11 +197,11 @@ public class NeutronEvpnManager {
         }
 
         opBuilder.setEvpnInstances(evpnList);
-        result.set(RpcResultBuilder.<GetEVPNOutput>success().withResult(opBuilder.build()).build());
+        result.set(RpcResultBuilder.success(opBuilder.build()).build());
         return result;
     }
 
-    public Future<RpcResult<DeleteEVPNOutput>> deleteEVPN(DeleteEVPNInput input) {
+    public ListenableFuture<RpcResult<DeleteEVPNOutput>> deleteEVPN(DeleteEVPNInput input) {
         DeleteEVPNOutputBuilder opBuilder = new DeleteEVPNOutputBuilder();
         SettableFuture<RpcResult<DeleteEVPNOutput>> result = SettableFuture.create();
         List<RpcError> errorList = new ArrayList<>();
@@ -234,7 +234,7 @@ public class NeutronEvpnManager {
                 errorResponseList.add("Deletion of EVPN operation successful");
             }
             opBuilder.setResponse(errorResponseList);
-            result.set(RpcResultBuilder.<DeleteEVPNOutput>success().withResult(opBuilder.build()).build());
+            result.set(RpcResultBuilder.success(opBuilder.build()).build());
         }
         return result;
     }
index 7392ff4b2c841076024790e26e37ed26338e6b16..b95fb2723deaeeb4aad4ca138d8a0b425651fbbc 100644 (file)
@@ -9,13 +9,14 @@
 package org.opendaylight.netvirt.neutronvpn.l2gw;
 
 import java.util.concurrent.ExecutionException;
-import java.util.concurrent.Future;
 import org.opendaylight.genius.utils.hwvtep.HwvtepSouthboundConstants;
 import org.opendaylight.genius.utils.hwvtep.HwvtepSouthboundUtils;
 import org.opendaylight.netvirt.neutronvpn.api.l2gw.L2GatewayDevice;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
 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.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.ItmRpcService;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
 import org.opendaylight.yangtools.yang.common.RpcResult;
@@ -28,15 +29,15 @@ public final class L2GatewayUtils {
     private L2GatewayUtils() { }
 
     protected static boolean isGatewayAssociatedToL2Device(L2GatewayDevice l2GwDevice) {
-        return (l2GwDevice.getL2GatewayIds().size() > 0);
+        return l2GwDevice.getL2GatewayIds().size() > 0;
     }
 
     protected static boolean isLastL2GatewayBeingDeleted(L2GatewayDevice l2GwDevice) {
-        return (l2GwDevice.getL2GatewayIds().size() == 1);
+        return l2GwDevice.getL2GatewayIds().size() == 1;
     }
 
     protected static boolean isItmTunnelsCreatedForL2Device(L2GatewayDevice l2GwDevice) {
-        return (l2GwDevice.getHwvtepNodeId() != null && l2GwDevice.getL2GatewayIds().size() > 0);
+        return l2GwDevice.getHwvtepNodeId() != null && l2GwDevice.getL2GatewayIds().size() > 0;
     }
 
     protected static void createItmTunnels(ItmRpcService itmRpcService, String hwvtepId, String psName,
@@ -46,8 +47,7 @@ public final class L2GatewayUtils {
         builder.setNodeId(HwvtepSouthboundUtils.createManagedNodeId(new NodeId(hwvtepId), psName).getValue());
         builder.setIpAddress(tunnelIp);
         try {
-            Future<RpcResult<Void>> result = itmRpcService.addL2GwDevice(builder.build());
-            RpcResult<Void> rpcResult = result.get();
+            RpcResult<AddL2GwDeviceOutput> rpcResult = itmRpcService.addL2GwDevice(builder.build()).get();
             if (rpcResult.isSuccessful()) {
                 LOG.info("Created ITM tunnels for {}", hwvtepId);
             } else {
@@ -65,8 +65,7 @@ public final class L2GatewayUtils {
         builder.setNodeId(HwvtepSouthboundUtils.createManagedNodeId(new NodeId(hwvtepId), psName).getValue());
         builder.setIpAddress(tunnelIp);
         try {
-            Future<RpcResult<Void>> result = itmRpcService.deleteL2GwDevice(builder.build());
-            RpcResult<Void> rpcResult = result.get();
+            RpcResult<DeleteL2GwDeviceOutput> rpcResult = itmRpcService.deleteL2GwDevice(builder.build()).get();
             if (rpcResult.isSuccessful()) {
                 LOG.info("Deleted ITM tunnels for {}", hwvtepId);
             } else {
index ddf5b1933775944f8fedf1567505aca58cba19a0..9ef3336db222ac737b7fea199319845933fc8c1b 100644 (file)
@@ -10,11 +10,10 @@ package org.opendaylight.netvirt.sfc.classifier.providers;
 
 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.math.BigInteger;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.concurrent.Future;
 import org.mockito.Mockito;
 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.Ipv4Address;
@@ -39,7 +38,7 @@ public abstract class TestOdlInterfaceRpcService implements OdlInterfaceRpcServi
     }
 
     @Override
-    public Future<RpcResult<GetEndpointIpForDpnOutput>> getEndpointIpForDpn(GetEndpointIpForDpnInput input) {
+    public ListenableFuture<RpcResult<GetEndpointIpForDpnOutput>> getEndpointIpForDpn(GetEndpointIpForDpnInput input) {
         BigInteger dpnId = input.getDpid();
 
         // if the dpnId is DPN_ID_NO_EXIST, then an empty response will be returned
@@ -49,16 +48,16 @@ public abstract class TestOdlInterfaceRpcService implements OdlInterfaceRpcServi
             localIpList.add(new IpAddress(new Ipv4Address(GeniusProviderTestParams.IPV4_ADDRESS_STR)));
             builder.setLocalIps(localIpList);
         } else if (dpnId == GeniusProviderTestParams.DPN_ID_INVALID) {
-            return Futures.immediateFuture(RpcResultBuilder.<GetEndpointIpForDpnOutput>failed()
-                    .withError(ErrorType.APPLICATION, "Invalid data.").build());
+            return RpcResultBuilder.<GetEndpointIpForDpnOutput>failed()
+                    .withError(ErrorType.APPLICATION, "Invalid data.").buildFuture();
         }
 
-        return Futures.immediateFuture(RpcResultBuilder
-                .<GetEndpointIpForDpnOutput>success(builder.build()).build());
+        return RpcResultBuilder.success(builder.build()).buildFuture();
     }
 
     @Override
-    public Future<RpcResult<GetDpidFromInterfaceOutput>> getDpidFromInterface(GetDpidFromInterfaceInput input) {
+    public ListenableFuture<RpcResult<GetDpidFromInterfaceOutput>> getDpidFromInterface(
+            GetDpidFromInterfaceInput input) {
         String ifName = input.getIntfName();
 
         // if the ifName is INTERFACE_NAME_NO_EXIST, then an empty response will be returned
@@ -66,16 +65,15 @@ public abstract class TestOdlInterfaceRpcService implements OdlInterfaceRpcServi
         if (ifName == GeniusProviderTestParams.INTERFACE_NAME) {
             builder.setDpid(GeniusProviderTestParams.DPN_ID);
         } else if (ifName == GeniusProviderTestParams.INTERFACE_NAME_INVALID) {
-            return Futures.immediateFuture(RpcResultBuilder.<GetDpidFromInterfaceOutput>failed()
-                    .withError(ErrorType.APPLICATION, "Invalid data.").build());
+            return RpcResultBuilder.<GetDpidFromInterfaceOutput>failed()
+                    .withError(ErrorType.APPLICATION, "Invalid data.").buildFuture();
         }
 
-        return Futures.immediateFuture(RpcResultBuilder
-                .<GetDpidFromInterfaceOutput>success(builder.build()).build());
+        return RpcResultBuilder.success(builder.build()).buildFuture();
     }
 
     @Override
-    public Future<RpcResult<GetNodeconnectorIdFromInterfaceOutput>>
+    public ListenableFuture<RpcResult<GetNodeconnectorIdFromInterfaceOutput>>
         getNodeconnectorIdFromInterface(GetNodeconnectorIdFromInterfaceInput input)  {
         String ifName = input.getIntfName();
 
@@ -86,12 +84,11 @@ public abstract class TestOdlInterfaceRpcService implements OdlInterfaceRpcServi
                     GeniusProviderTestParams.NODE_CONNECTOR_ID_PREFIX
                     + GeniusProviderTestParams.INTERFACE_NAME));
         } else if (ifName == GeniusProviderTestParams.INTERFACE_NAME_INVALID) {
-            return Futures.immediateFuture(RpcResultBuilder.<GetNodeconnectorIdFromInterfaceOutput>failed()
-                    .withError(ErrorType.APPLICATION, "Invalid data.").build());
+            return RpcResultBuilder.<GetNodeconnectorIdFromInterfaceOutput>failed()
+                    .withError(ErrorType.APPLICATION, "Invalid data.").buildFuture();
         }
 
-        return Futures.immediateFuture(RpcResultBuilder
-                .<GetNodeconnectorIdFromInterfaceOutput>success(builder.build()).build());
+        return RpcResultBuilder.success(builder.build()).buildFuture();
     }
 
 }
index fbe04c5ea53ad3ddaf81791ad50d77574fd1d239..07a1860279f2f60b244428cb3bf504af0fa557df 100644 (file)
@@ -11,7 +11,7 @@ import com.google.common.base.Optional;
 import com.google.common.util.concurrent.CheckedFuture;
 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 com.google.common.util.concurrent.MoreExecutors;
 import com.google.common.util.concurrent.SettableFuture;
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
@@ -27,7 +27,6 @@ import java.util.UUID;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Future;
 import javax.annotation.Nonnull;
-
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
 import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
@@ -52,10 +51,12 @@ 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.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.inventory.rev130819.NodeConnectorId;
@@ -128,7 +129,7 @@ public class StatisticsImpl implements StatisticsService, ICountersInterfaceChan
 
     @Override
     @SuppressWarnings("checkstyle:illegalCatch")
-    public Future<RpcResult<GetNodeCountersOutput>> getNodeCounters(GetNodeCountersInput input) {
+    public ListenableFuture<RpcResult<GetNodeCountersOutput>> getNodeCounters(GetNodeCountersInput input) {
         BigInteger dpId = input.getNodeId();
         LOG.trace("getting node counters for node {}", dpId);
         GetNodeCountersOutputBuilder gncob = new GetNodeCountersOutputBuilder();
@@ -153,7 +154,7 @@ public class StatisticsImpl implements StatisticsService, ICountersInterfaceChan
 
     @Override
     @SuppressWarnings("checkstyle:illegalCatch")
-    public Future<RpcResult<GetNodeAggregatedCountersOutput>> getNodeAggregatedCounters(
+    public ListenableFuture<RpcResult<GetNodeAggregatedCountersOutput>> getNodeAggregatedCounters(
             GetNodeAggregatedCountersInput input) {
         BigInteger dpId = input.getNodeId();
         LOG.trace("getting aggregated node counters for node {}", dpId);
@@ -180,7 +181,7 @@ public class StatisticsImpl implements StatisticsService, ICountersInterfaceChan
 
     @Override
     @SuppressWarnings("checkstyle:illegalCatch")
-    public Future<RpcResult<GetNodeConnectorCountersOutput>> getNodeConnectorCounters(
+    public ListenableFuture<RpcResult<GetNodeConnectorCountersOutput>> getNodeConnectorCounters(
             GetNodeConnectorCountersInput input) {
         String portId = input.getPortId();
         LOG.trace("getting port counters of port {}", portId);
@@ -217,7 +218,7 @@ public class StatisticsImpl implements StatisticsService, ICountersInterfaceChan
     }
 
     @Override
-    public Future<RpcResult<AcquireElementCountersRequestHandlerOutput>> acquireElementCountersRequestHandler(
+    public ListenableFuture<RpcResult<AcquireElementCountersRequestHandlerOutput>> acquireElementCountersRequestHandler(
             AcquireElementCountersRequestHandlerInput input) {
         AcquireElementCountersRequestHandlerOutputBuilder aecrhob =
                 new AcquireElementCountersRequestHandlerOutputBuilder();
@@ -295,7 +296,7 @@ public class StatisticsImpl implements StatisticsService, ICountersInterfaceChan
     }
 
     @Override
-    public Future<RpcResult<ReleaseElementCountersRequestHandlerOutput>> releaseElementCountersRequestHandler(
+    public ListenableFuture<RpcResult<ReleaseElementCountersRequestHandlerOutput>> releaseElementCountersRequestHandler(
             ReleaseElementCountersRequestHandlerInput input) {
         InstanceIdentifier<CounterRequests> ingressPath =
                 InstanceIdentifier.builder(IngressElementCountersRequestConfig.class)
@@ -347,7 +348,7 @@ public class StatisticsImpl implements StatisticsService, ICountersInterfaceChan
     }
 
     @Override
-    public Future<RpcResult<GetElementCountersByHandlerOutput>> getElementCountersByHandler(
+    public ListenableFuture<RpcResult<GetElementCountersByHandlerOutput>> getElementCountersByHandler(
             GetElementCountersByHandlerInput input) {
         InstanceIdentifier<CounterRequests> ingressPath =
                 InstanceIdentifier.builder(IngressElementCountersRequestConfig.class)
@@ -429,7 +430,7 @@ public class StatisticsImpl implements StatisticsService, ICountersInterfaceChan
     }
 
     @Override
-    public Future<RpcResult<CleanAllElementCounterRequestsOutput>> cleanAllElementCounterRequests(
+    public ListenableFuture<RpcResult<CleanAllElementCounterRequestsOutput>> cleanAllElementCounterRequests(
             CleanAllElementCounterRequestsInput input) {
         ReadOnlyTransaction tx = db.newReadOnlyTransaction();
         CheckedFuture<Optional<IngressElementCountersRequestConfig>, ReadFailedException> iecrc =
@@ -950,8 +951,8 @@ public class StatisticsImpl implements StatisticsService, ICountersInterfaceChan
         CreateIdPoolInput createPool = new CreateIdPoolInputBuilder()
                 .setPoolName(CountersServiceUtils.COUNTERS_PULL_NAME).setLow(CountersServiceUtils.COUNTERS_PULL_START)
                 .setHigh(CountersServiceUtils.COUNTERS_PULL_START + CountersServiceUtils.COUNTERS_PULL_END).build();
-        Future<RpcResult<Void>> result = idManagerService.createIdPool(createPool);
-        Futures.addCallback(JdkFutureAdapters.listenInPoolThread(result), new FutureCallback<RpcResult<Void>>() {
+        ListenableFuture<RpcResult<CreateIdPoolOutput>> result = idManagerService.createIdPool(createPool);
+        Futures.addCallback(result, new FutureCallback<RpcResult<CreateIdPoolOutput>>() {
 
             @Override
             public void onFailure(Throwable error) {
@@ -959,7 +960,7 @@ public class StatisticsImpl implements StatisticsService, ICountersInterfaceChan
             }
 
             @Override
-            public void onSuccess(@Nonnull RpcResult<Void> rpcResult) {
+            public void onSuccess(@Nonnull RpcResult<CreateIdPoolOutput> rpcResult) {
                 if (rpcResult.isSuccessful()) {
                     LOG.debug("Created IdPool for tap");
                 } else {
@@ -973,8 +974,7 @@ public class StatisticsImpl implements StatisticsService, ICountersInterfaceChan
         ReleaseIdInput idInput = new ReleaseIdInputBuilder().setPoolName(CountersServiceUtils.COUNTERS_PULL_NAME)
                 .setIdKey(idKey).build();
         try {
-            Future<RpcResult<Void>> result = idManagerService.releaseId(idInput);
-            RpcResult<Void> rpcResult = result.get();
+            RpcResult<ReleaseIdOutput> rpcResult = idManagerService.releaseId(idInput).get();
             if (!rpcResult.isSuccessful()) {
                 LOG.warn("RPC Call to release Id with Key {} returned with Errors {}", idKey, rpcResult.getErrors());
             }
index 8010ed730c6f9abb489c0135478341eac18e4159..dfd320b8fee88091b6c7ad690759228f8fc5c912 100644 (file)
@@ -57,6 +57,7 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.list.Instruction;
 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.rpcs.rev160406.OdlInterfaceRpcService;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.ItmRpcService;
@@ -139,7 +140,7 @@ public class VpnManagerImpl implements IVpnManager {
             .setHigh(VpnConstants.VPN_IDPOOL_HIGH)
             .build();
         try {
-            Future<RpcResult<Void>> result = idManager.createIdPool(createPool);
+            Future<RpcResult<CreateIdPoolOutput>> result = idManager.createIdPool(createPool);
             if (result != null && result.get().isSuccessful()) {
                 LOG.info("Created IdPool for VPN Service");
             }
@@ -154,7 +155,7 @@ public class VpnManagerImpl implements IVpnManager {
                 .setHigh(VpnConstants.UPPER_PSEUDO_LPORT_TAG)
                 .build();
         try {
-            Future<RpcResult<Void>> result = idManager.createIdPool(createPseudoLporTagPool);
+            Future<RpcResult<CreateIdPoolOutput>> result = idManager.createIdPool(createPseudoLporTagPool);
             if (result.get().isSuccessful()) {
                 LOG.debug("Created IdPool for Pseudo Port tags");
             } else {
@@ -540,7 +541,8 @@ public class VpnManagerImpl implements IVpnManager {
             ListenableFutures.addErrorLogging(listenableFuture, LOG,
                     "Error while configuring arp responder for ext. interface");
 
-            return DataTreeEventCallbackRegistrar.NextAction.UNREGISTER; });
+            return DataTreeEventCallbackRegistrar.NextAction.UNREGISTER;
+        });
 
     }
 
index ff9fe605a1eba7483c50e622e4c416e26d4bd112..a2a60b20b31ba2039858e5f16169eeb334ecb943 100644 (file)
@@ -8,10 +8,10 @@
 package org.opendaylight.netvirt.vpnmanager;
 
 import com.google.common.base.Optional;
+import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.SettableFuture;
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.concurrent.Future;
 import java.util.function.Consumer;
 import javax.inject.Inject;
 import javax.inject.Singleton;
@@ -33,7 +33,11 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.vpn.rpc.rev160201.G
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.vpn.rpc.rev160201.GenerateVpnLabelOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.vpn.rpc.rev160201.GenerateVpnLabelOutputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.vpn.rpc.rev160201.RemoveStaticRouteInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.vpn.rpc.rev160201.RemoveStaticRouteOutput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.vpn.rpc.rev160201.RemoveStaticRouteOutputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.vpn.rpc.rev160201.RemoveVpnLabelInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.vpn.rpc.rev160201.RemoveVpnLabelOutput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.vpn.rpc.rev160201.RemoveVpnLabelOutputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.vpn.rpc.rev160201.VpnRpcService;
 import org.opendaylight.yangtools.yang.common.RpcError;
 import org.opendaylight.yangtools.yang.common.RpcError.ErrorType;
@@ -70,7 +74,7 @@ public class VpnRpcServiceImpl implements VpnRpcService {
      * Generate label for the given ip prefix from the associated VPN.
      */
     @Override
-    public Future<RpcResult<GenerateVpnLabelOutput>> generateVpnLabel(GenerateVpnLabelInput input) {
+    public ListenableFuture<RpcResult<GenerateVpnLabelOutput>> generateVpnLabel(GenerateVpnLabelInput input) {
         String vpnName = input.getVpnName();
         String ipPrefix = input.getIpPrefix();
         SettableFuture<RpcResult<GenerateVpnLabelOutput>> futureResult = SettableFuture.create();
@@ -92,15 +96,13 @@ public class VpnRpcServiceImpl implements VpnRpcService {
      * Remove label for the given ip prefix from the associated VPN.
      */
     @Override
-    public Future<RpcResult<Void>> removeVpnLabel(RemoveVpnLabelInput input) {
+    public ListenableFuture<RpcResult<RemoveVpnLabelOutput>> removeVpnLabel(RemoveVpnLabelInput input) {
         String vpnName = input.getVpnName();
         String ipPrefix = input.getIpPrefix();
         String rd = VpnUtil.getVpnRd(dataBroker, vpnName);
-        SettableFuture<RpcResult<Void>> futureResult = SettableFuture.create();
         VpnUtil.releaseId(idManager, VpnConstants.VPN_IDPOOL_NAME,
             VpnUtil.getNextHopLabelKey(rd != null ? rd : vpnName, ipPrefix));
-        futureResult.set(RpcResultBuilder.<Void>success().build());
-        return futureResult;
+        return RpcResultBuilder.success(new RemoveVpnLabelOutputBuilder().build()).buildFuture();
     }
 
     private Collection<RpcError> validateAddStaticRouteInput(AddStaticRouteInput input) {
@@ -126,7 +128,7 @@ public class VpnRpcServiceImpl implements VpnRpcService {
     // TODO Clean up the exception handling
     @SuppressWarnings("checkstyle:IllegalCatch")
     @Override
-    public Future<RpcResult<AddStaticRouteOutput>> addStaticRoute(AddStaticRouteInput input) {
+    public ListenableFuture<RpcResult<AddStaticRouteOutput>> addStaticRoute(AddStaticRouteInput input) {
 
         SettableFuture<RpcResult<AddStaticRouteOutput>> result = SettableFuture.create();
         String destination = input.getDestination();
@@ -209,9 +211,9 @@ public class VpnRpcServiceImpl implements VpnRpcService {
     }
 
     @Override
-    public Future<RpcResult<Void>> removeStaticRoute(RemoveStaticRouteInput input) {
+    public ListenableFuture<RpcResult<RemoveStaticRouteOutput>> removeStaticRoute(RemoveStaticRouteInput input) {
 
-        SettableFuture<RpcResult<Void>> result = SettableFuture.create();
+        SettableFuture<RpcResult<RemoveStaticRouteOutput>> result = SettableFuture.create();
 
         String destination = input.getDestination();
         String vpnInstanceName = input.getVpnInstanceName();
@@ -220,14 +222,15 @@ public class VpnRpcServiceImpl implements VpnRpcService {
             destination, nexthop, vpnInstanceName);
         Collection<RpcError> rpcErrors = validateRemoveStaticRouteInput(input);
         if (!rpcErrors.isEmpty()) {
-            result.set(RpcResultBuilder.<Void>failed().withRpcErrors(rpcErrors).build());
+            result.set(RpcResultBuilder.<RemoveStaticRouteOutput>failed().withRpcErrors(rpcErrors).build());
             return result;
         }
 
         String vpnRd = VpnUtil.getVpnRd(dataBroker, input.getVpnInstanceName());
         if (vpnRd == null) {
             String message = "Could not find Route-Distinguisher for VpnName " + vpnInstanceName;
-            result.set(RpcResultBuilder.<Void>failed().withError(RpcError.ErrorType.APPLICATION, message).build());
+            result.set(RpcResultBuilder.<RemoveStaticRouteOutput>failed()
+                    .withError(RpcError.ErrorType.APPLICATION, message).build());
             return result;
         }
 
@@ -239,7 +242,7 @@ public class VpnRpcServiceImpl implements VpnRpcService {
             vpnManager.delExtraRoute(vpnInstanceName, destination,
                     nexthop, vpnRd, null /* routerId */, null /* intfName */, null);
         }
-        result.set(RpcResultBuilder.<Void>success().build());
+        result.set(RpcResultBuilder.success(new RemoveStaticRouteOutputBuilder().build()).build());
 
         return result;
     }
index dd0dcff9a7cb0b423375a57ce97fc4a7b548d8bf..bb94820554ac052da4717b3fa31e874bf29598a6 100755 (executable)
@@ -95,6 +95,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.meta.rev160406.IfIndexesInterfaceMap;
@@ -109,8 +110,10 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.lockmanager.rev16041
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.lockmanager.rev160413.TimeUnits;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.lockmanager.rev160413.TryLockInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.lockmanager.rev160413.TryLockInputBuilder;
+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.UnlockInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.lockmanager.rev160413.UnlockOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.elan.rev150602.ElanDpnInterfaces;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.elan.rev150602.ElanInterfaces;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.elan.rev150602.ElanTagNameMap;
@@ -250,7 +253,7 @@ public final class VpnUtil {
 
         public String get() {
             long microSeconds = (System.nanoTime() - this.startNanoseconds) / 1000 ;
-            long date = this.startDate + (microSeconds / 1000) ;
+            long date = this.startDate + microSeconds / 1000 ;
             return this.dateFormat.format(date) + String.format("%03d", microSeconds % 1000) ;
         }
     }
@@ -531,8 +534,7 @@ public final class VpnUtil {
     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();
+            RpcResult<ReleaseIdOutput> rpcResult = idManager.releaseId(idInput).get();
             if (!rpcResult.isSuccessful()) {
                 LOG.error("releaseId: RPC Call to release Id for key {} from pool {} returned with Errors {}",
                         idKey, poolName, rpcResult.getErrors());
@@ -1424,7 +1426,7 @@ public final class VpnUtil {
     public static void lockSubnet(LockManagerService lockManager, String subnetId) {
         TryLockInput input =
             new TryLockInputBuilder().setLockName(subnetId).setTime(3000L).setTimeUnit(TimeUnits.Milliseconds).build();
-        Future<RpcResult<Void>> result = lockManager.tryLock(input);
+        Future<RpcResult<TryLockOutput>> result = lockManager.tryLock(input);
         try {
             if (result != null && result.get().isSuccessful()) {
                 LOG.debug("lockSubnet: Acquired lock for {}", subnetId);
@@ -1442,7 +1444,7 @@ public final class VpnUtil {
     @SuppressWarnings("checkstyle:AvoidHidingCauseException")
     public static void unlockSubnet(LockManagerService lockManager, String subnetId) {
         UnlockInput input = new UnlockInputBuilder().setLockName(subnetId).build();
-        Future<RpcResult<Void>> result = lockManager.unlock(input);
+        Future<RpcResult<UnlockOutput>> result = lockManager.unlock(input);
         try {
             if (result != null && result.get().isSuccessful()) {
                 LOG.debug("unlockSubnet: Unlocked {}", subnetId);
@@ -2144,7 +2146,7 @@ public final class VpnUtil {
     }
 
     public static Set<BigInteger> getDpnInElan(DataBroker dataBroker,  Map<String,String> elanInstanceRouterPortMap) {
-        Set<BigInteger> dpnIdSet = new HashSet<BigInteger>();
+        Set<BigInteger> dpnIdSet = new HashSet<>();
         for (String elanInstanceName : elanInstanceRouterPortMap.keySet()) {
             InstanceIdentifier<ElanDpnInterfacesList> elanDpnInterfaceId = getElanDpnOperationalDataPath(
                     elanInstanceName);
@@ -2288,7 +2290,7 @@ public final class VpnUtil {
     }
 
     public static Map<String, String> getElanInstanceRouterPortMap(DataBroker dataBroker, String vpnName) {
-        Map<String, String> elanInstanceRouterPortMap = new HashMap<String, String>();
+        Map<String, String> elanInstanceRouterPortMap = new HashMap<>();
         Optional<Subnetmaps> subnetMapsData =
                 read(dataBroker, LogicalDatastoreType.CONFIGURATION, buildSubnetMapsWildCardPath());
         if (subnetMapsData.isPresent()) {