X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=vpnservice.git;a=blobdiff_plain;f=itm%2Fitm-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fvpnservice%2Fitm%2Frpc%2FItmManagerRpcService.java;h=36ad7a41f63afbdad800aca54cfc7fa64f167568;hp=69aa9044e265da50b869d16d0b54579f019f52e7;hb=8e3be9c632b1b774191e602d8abb2a0592a9e2a8;hpb=e310af569b148ec3a28edaba22144bcd21b3e4a8 diff --git a/itm/itm-impl/src/main/java/org/opendaylight/vpnservice/itm/rpc/ItmManagerRpcService.java b/itm/itm-impl/src/main/java/org/opendaylight/vpnservice/itm/rpc/ItmManagerRpcService.java index 69aa9044..36ad7a41 100644 --- a/itm/itm-impl/src/main/java/org/opendaylight/vpnservice/itm/rpc/ItmManagerRpcService.java +++ b/itm/itm-impl/src/main/java/org/opendaylight/vpnservice/itm/rpc/ItmManagerRpcService.java @@ -297,45 +297,47 @@ public class ItmManagerRpcService implements ItmRpcService { @Override public Future> getInternalOrExternalInterfaceName( GetInternalOrExternalInterfaceNameInput input) { - RpcResultBuilder resultBld = null; + RpcResultBuilder resultBld = RpcResultBuilder.failed(); BigInteger srcDpn = input.getSourceDpid() ; IpAddress dstIp = input.getDestinationIp() ; - List meshedDpnList = ItmUtils.getTunnelMeshInfo(dataBroker) ; - // Look for external tunnels if not look for internal tunnel - for( DPNTEPsInfo teps : meshedDpnList) { - TunnelEndPoints firstEndPt = teps.getTunnelEndPoints().get(0) ; - if( dstIp.equals(firstEndPt.getIpAddress())) { - InstanceIdentifier path = InstanceIdentifier.create( - TunnelList.class) - .child(InternalTunnel.class, new InternalTunnelKey(srcDpn, teps.getDPNID())); - - Optional tnl = ItmUtils.read(LogicalDatastoreType.CONFIGURATION, path, dataBroker); - if( tnl != null && tnl.isPresent()) - { - InternalTunnel tunnel = tnl.get(); - GetInternalOrExternalInterfaceNameOutputBuilder output = new GetInternalOrExternalInterfaceNameOutputBuilder().setInterfaceName(tunnel.getTunnelInterfaceName() ); - resultBld = RpcResultBuilder.success(); - resultBld.withResult(output.build()) ; - }else { - //resultBld = RpcResultBuilder.failed(); - InstanceIdentifier path1 = InstanceIdentifier.create( - ExternalTunnelList.class) - .child(ExternalTunnel.class, new ExternalTunnelKey(dstIp, srcDpn)); - - Optional ext = ItmUtils.read(LogicalDatastoreType.CONFIGURATION, path1, dataBroker); - - if( ext != null && ext.isPresent()) - { - ExternalTunnel extTunnel = ext.get(); - GetInternalOrExternalInterfaceNameOutputBuilder output = new GetInternalOrExternalInterfaceNameOutputBuilder().setInterfaceName(extTunnel.getTunnelInterfaceName() ); - resultBld = RpcResultBuilder.success(); - resultBld.withResult(output.build()) ; - }else { - resultBld = RpcResultBuilder.failed(); - } - } - } - } + InstanceIdentifier path1 = InstanceIdentifier.create( + ExternalTunnelList.class) + .child(ExternalTunnel.class, new ExternalTunnelKey(dstIp, srcDpn)); + + Optional ext = ItmUtils.read(LogicalDatastoreType.CONFIGURATION, path1, dataBroker); + + if( ext != null && ext.isPresent()) + { + ExternalTunnel extTunnel = ext.get(); + GetInternalOrExternalInterfaceNameOutputBuilder output = new GetInternalOrExternalInterfaceNameOutputBuilder().setInterfaceName(extTunnel.getTunnelInterfaceName() ); + resultBld = RpcResultBuilder.success(); + resultBld.withResult(output.build()) ; + } else { + List meshedDpnList = ItmUtils.getTunnelMeshInfo(dataBroker); + // Look for external tunnels if not look for internal tunnel + for (DPNTEPsInfo teps : meshedDpnList) { + TunnelEndPoints firstEndPt = teps.getTunnelEndPoints().get(0); + if (dstIp.equals(firstEndPt.getIpAddress())) { + InstanceIdentifier path = InstanceIdentifier.create( + TunnelList.class) + .child(InternalTunnel.class, new InternalTunnelKey(srcDpn, teps.getDPNID())); + + Optional + tnl = + ItmUtils.read(LogicalDatastoreType.CONFIGURATION, path, dataBroker); + if (tnl != null && tnl.isPresent()) { + InternalTunnel tunnel = tnl.get(); + GetInternalOrExternalInterfaceNameOutputBuilder + output = + new GetInternalOrExternalInterfaceNameOutputBuilder() + .setInterfaceName(tunnel.getTunnelInterfaceName()); + resultBld = RpcResultBuilder.success(); + resultBld.withResult(output.build()); + break; + } + } + } + } return Futures.immediateFuture(resultBld.build()); }