From 41bcdc3c38633bade2a55cec9b9e993d774edb7c Mon Sep 17 00:00:00 2001 From: Chetan Arakere Gowdru Date: Tue, 5 May 2020 13:32:03 +0530 Subject: [PATCH] L2GW Junit failure Description: Th Junit case as adding DeviceTeps for External tunnels only into default-transport-zone and was querying in TZA resulting in read failure. Since the current RPC only have ip and node-id as inputs, Changes are done in addL2GwMlagDevice() API to add the given Teps in all available transportzone. Signed-off-by: Chetan Arakere Gowdru Change-Id: I75db7338b696471db653417bd3124bc742e5e85d Signed-off-by: Chetan Arakere Gowdru --- .../genius/itm/rpc/ItmManagerRpcService.java | 78 +++++++++++-------- .../itm/tests/ItmManagerRpcServiceTest.java | 4 +- 2 files changed, 45 insertions(+), 37 deletions(-) diff --git a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/rpc/ItmManagerRpcService.java b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/rpc/ItmManagerRpcService.java index c2ecab9ae..db71fa6a4 100644 --- a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/rpc/ItmManagerRpcService.java +++ b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/rpc/ItmManagerRpcService.java @@ -878,54 +878,64 @@ public class ItmManagerRpcService implements ItmRpcService { containerPath, dataBroker); if (transportZonesOptional.isPresent()) { TransportZones transportZones = transportZonesOptional.get(); - if (transportZones.getTransportZone() == null || transportZones.getTransportZone().isEmpty()) { + if (transportZones.getTransportZone() == null || transportZones.getTransportZone() + .isEmpty()) { LOG.error("No teps configured"); result.set(RpcResultBuilder.failed() - .withError(RpcError.ErrorType.APPLICATION, "No teps Configured").build()); + .withError(RpcError.ErrorType.APPLICATION, "No teps Configured").build()); return result; } - String transportZone = transportZones.getTransportZone().get(0).getZoneName(); - DeviceVtepsKey deviceVtepKey = new DeviceVtepsKey(hwIp, nodeId.get(0)); - InstanceIdentifier path = + for (TransportZone tzone : transportZones.getTransportZone()) { + if (!TunnelTypeVxlan.class.equals(tzone.getTunnelType())) { + continue; + } + String transportZone = tzone.getZoneName(); + DeviceVtepsKey deviceVtepKey = new DeviceVtepsKey(hwIp, nodeId.get(0)); + InstanceIdentifier path = InstanceIdentifier.builder(TransportZones.class) - .child(TransportZone.class, new TransportZoneKey(transportZone)) - .child(DeviceVteps.class, deviceVtepKey).build(); - DeviceVteps deviceVtep = new DeviceVtepsBuilder().withKey(deviceVtepKey).setIpAddress(hwIp) + .child(TransportZone.class, new TransportZoneKey(transportZone)) + .child(DeviceVteps.class, deviceVtepKey).build(); + DeviceVteps deviceVtep = new DeviceVtepsBuilder().withKey(deviceVtepKey) + .setIpAddress(hwIp) .setNodeId(nodeId.get(0)).setTopologyId(input.getTopologyId()).build(); - LOG.trace("writing hWvtep{}", deviceVtep); - FluentFuture future = - retryingTxRunner.callWithNewWriteOnlyTransactionAndSubmit(CONFIGURATION, - tx -> { - tx.mergeParentStructurePut(path, deviceVtep); - if (nodeId.size() == 2) { - LOG.trace("second node-id {}", nodeId.get(1)); - DeviceVtepsKey deviceVtepKey2 = new DeviceVtepsKey(hwIp, nodeId.get(1)); - InstanceIdentifier path2 = InstanceIdentifier + LOG.trace("writing hWvtep{}", deviceVtep); + FluentFuture future = + retryingTxRunner.callWithNewWriteOnlyTransactionAndSubmit(CONFIGURATION, + tx -> { + tx.mergeParentStructurePut(path, deviceVtep); + if (nodeId.size() == 2) { + LOG.trace("second node-id {}", nodeId.get(1)); + DeviceVtepsKey deviceVtepKey2 = new DeviceVtepsKey(hwIp, + nodeId.get(1)); + InstanceIdentifier path2 = InstanceIdentifier .builder(TransportZones.class) .child(TransportZone.class, new TransportZoneKey(transportZone)) .child(DeviceVteps.class, deviceVtepKey2).build(); - DeviceVteps deviceVtep2 = new DeviceVtepsBuilder().withKey(deviceVtepKey2) + DeviceVteps deviceVtep2 = new DeviceVtepsBuilder() + .withKey(deviceVtepKey2) .setIpAddress(hwIp).setNodeId(nodeId.get(1)) .setTopologyId(input.getTopologyId()).build(); - LOG.trace("writing {}", deviceVtep2); - tx.mergeParentStructurePut(path2, deviceVtep2); - } - }); - future.addCallback(new FutureCallback() { - @Override - public void onSuccess(Void voidInstance) { - result.set(RpcResultBuilder.success().build()); - } + LOG.trace("writing {}", deviceVtep2); + tx.mergeParentStructurePut(path2, deviceVtep2); + } + }); + future.addCallback(new FutureCallback() { + @Override + public void onSuccess(Void voidInstance) { + result.set(RpcResultBuilder.success().build()); + } - @Override - public void onFailure(Throwable error) { - String msg = String.format("Unable to write HwVtep %s to datastore", nodeId); - LOG.error("Unable to write HwVtep {}, {} to datastore", nodeId , hwIp); - result.set(RpcResultBuilder.failed() + @Override + public void onFailure(Throwable error) { + String msg = String + .format("Unable to write HwVtep %s to datastore", nodeId); + LOG.error("Unable to write HwVtep {}, {} to datastore", nodeId, hwIp); + result.set(RpcResultBuilder.failed() .withError(RpcError.ErrorType.APPLICATION, msg, error) .build()); - } - }, MoreExecutors.directExecutor()); + } + }, MoreExecutors.directExecutor()); + } } return result; } catch (RuntimeException e) { diff --git a/itm/itm-impl/src/test/java/org/opendaylight/genius/itm/tests/ItmManagerRpcServiceTest.java b/itm/itm-impl/src/test/java/org/opendaylight/genius/itm/tests/ItmManagerRpcServiceTest.java index 275e8e91d..6b348c2a7 100644 --- a/itm/itm-impl/src/test/java/org/opendaylight/genius/itm/tests/ItmManagerRpcServiceTest.java +++ b/itm/itm-impl/src/test/java/org/opendaylight/genius/itm/tests/ItmManagerRpcServiceTest.java @@ -19,7 +19,6 @@ import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; import javax.inject.Inject; import org.junit.Before; -import org.junit.Ignore; import org.junit.Rule; import org.junit.Test; import org.junit.rules.MethodRule; @@ -360,14 +359,13 @@ public class ItmManagerRpcServiceTest { .read(LogicalDatastoreType.CONFIGURATION, deviceVtepsIdentifier).get().get()); } - @Ignore @Test public void testAddL2GwMlagDevice() throws Exception { ListenableFuture> rpcRes = itmManagerRpcService.addL2GwMlagDevice(addL2GwMlagDeviceInput); coordinatorEventsWaiter.awaitEventsConsumption(); - Thread.sleep(8000); + Thread.sleep(5000); // check RPC response is SUCCESS -- 2.36.6