From 2415267fa79372807e52d0dc5d800166829dac27 Mon Sep 17 00:00:00 2001 From: Michal Cmarada Date: Tue, 23 Apr 2019 20:55:01 +0200 Subject: Fix GRE tunnel after API changes Change-Id: I346a2e1793e3fc5758a23ca4f049e8118a81b54b Signed-off-by: Michal Cmarada --- .../fd/hc2vpp/v3po/interfaces/GreCustomizer.java | 40 ++++++++++++++-------- .../hc2vpp/v3po/interfacesstate/GreCustomizer.java | 16 +++++---- .../hc2vpp/v3po/interfaces/GreCustomizerTest.java | 30 ++++++++-------- .../v3po/interfacesstate/GreCustomizerTest.java | 14 +++++--- 4 files changed, 59 insertions(+), 41 deletions(-) diff --git a/v3po/v3po2vpp/src/main/java/io/fd/hc2vpp/v3po/interfaces/GreCustomizer.java b/v3po/v3po2vpp/src/main/java/io/fd/hc2vpp/v3po/interfaces/GreCustomizer.java index e44909752..b1ecc3a9f 100644 --- a/v3po/v3po2vpp/src/main/java/io/fd/hc2vpp/v3po/interfaces/GreCustomizer.java +++ b/v3po/v3po2vpp/src/main/java/io/fd/hc2vpp/v3po/interfaces/GreCustomizer.java @@ -24,8 +24,8 @@ import io.fd.hc2vpp.common.translate.util.JvppReplyConsumer; import io.fd.hc2vpp.common.translate.util.NamingContext; import io.fd.honeycomb.translate.write.WriteContext; import io.fd.honeycomb.translate.write.WriteFailedException; -import io.fd.jvpp.core.dto.GreAddDelTunnel; -import io.fd.jvpp.core.dto.GreAddDelTunnelReply; +import io.fd.jvpp.core.dto.GreTunnelAddDel; +import io.fd.jvpp.core.dto.GreTunnelAddDelReply; import io.fd.jvpp.core.future.FutureJVppCore; import java.util.concurrent.CompletionStage; import javax.annotation.Nonnull; @@ -48,16 +48,26 @@ public class GreCustomizer extends AbstractInterfaceTypeCustomizer implemen this.interfaceContext = interfaceContext; } - private static GreAddDelTunnel getGreTunnelRequest(final byte isAdd, final IpAddressNoZone srcAddr, + private static GreTunnelAddDel getGreTunnelRequest(final byte isAdd, final IpAddressNoZone srcAddr, final IpAddressNoZone dstAddr, final int outerFibId, final byte isIpv6) { - final GreAddDelTunnel greAddDelTunnel = new GreAddDelTunnel(); - greAddDelTunnel.isAdd = isAdd; - greAddDelTunnel.srcAddress = AddressTranslator.INSTANCE.ipAddressToArray(srcAddr); - greAddDelTunnel.dstAddress = AddressTranslator.INSTANCE.ipAddressToArray(dstAddr); - greAddDelTunnel.outerFibId = outerFibId; - greAddDelTunnel.isIpv6 = isIpv6; - return greAddDelTunnel; + final GreTunnelAddDel greTunnelAddDel = new GreTunnelAddDel(); + greTunnelAddDel.isAdd = isAdd; + greTunnelAddDel.tunnel = new io.fd.jvpp.core.types.GreTunnel(); + if (isIpv6==0) { + greTunnelAddDel.tunnel.src = + AddressTranslator.INSTANCE.ipv4AddressNoZoneToAddress(srcAddr.getIpv4AddressNoZone()); + greTunnelAddDel.tunnel.dst = + AddressTranslator.INSTANCE.ipv4AddressNoZoneToAddress(dstAddr.getIpv4AddressNoZone()); + } else { + greTunnelAddDel.tunnel.src = + AddressTranslator.INSTANCE.ipv6AddressToAddress(srcAddr.getIpv6AddressNoZone()); + greTunnelAddDel.tunnel.dst = + AddressTranslator.INSTANCE.ipv6AddressToAddress(dstAddr.getIpv6AddressNoZone()); + } + greTunnelAddDel.tunnel.outerFibId = outerFibId; + greTunnelAddDel.tunnel.isIpv6 = isIpv6; + return greTunnelAddDel; } @Override @@ -90,11 +100,11 @@ public class GreCustomizer extends AbstractInterfaceTypeCustomizer implemen int outerFibId = gre.getOuterFibId().intValue(); LOG.debug("Setting gre tunnel for interface: {}. Gre: {}", swIfName, gre); - final CompletionStage greAddDelTunnelReplyCompletionStage = - getFutureJVpp().greAddDelTunnel(getGreTunnelRequest((byte) 1 /* is add */, gre.getSrc(), + final CompletionStage greAddDelTunnelReplyCompletionStage = + getFutureJVpp().greTunnelAddDel(getGreTunnelRequest((byte) 1 /* is add */, gre.getSrc(), gre.getDst(), outerFibId, isIpv6)); - final GreAddDelTunnelReply reply = + final GreTunnelAddDelReply reply = getReplyForCreate(greAddDelTunnelReplyCompletionStage.toCompletableFuture(), id, gre); LOG.debug("Gre tunnel set successfully for: {}, gre: {}", swIfName, gre); if (interfaceContext.containsName(reply.swIfIndex, writeContext.getMappingContext())) { @@ -135,8 +145,8 @@ public class GreCustomizer extends AbstractInterfaceTypeCustomizer implemen int outerFibId = gre.getOuterFibId().intValue(); LOG.debug("Deleting gre tunnel for interface: {}. Gre: {}", swIfName, gre); - final CompletionStage greAddDelTunnelReplyCompletionStage = - getFutureJVpp().greAddDelTunnel(getGreTunnelRequest((byte) 0 /* is add */, gre.getSrc(), + final CompletionStage greAddDelTunnelReplyCompletionStage = + getFutureJVpp().greTunnelAddDel(getGreTunnelRequest((byte) 0 /* is add */, gre.getSrc(), gre.getDst(), outerFibId, isIpv6)); getReplyForDelete(greAddDelTunnelReplyCompletionStage.toCompletableFuture(), id); diff --git a/v3po/v3po2vpp/src/main/java/io/fd/hc2vpp/v3po/interfacesstate/GreCustomizer.java b/v3po/v3po2vpp/src/main/java/io/fd/hc2vpp/v3po/interfacesstate/GreCustomizer.java index 874330ff6..19d0a12dd 100644 --- a/v3po/v3po2vpp/src/main/java/io/fd/hc2vpp/v3po/interfacesstate/GreCustomizer.java +++ b/v3po/v3po2vpp/src/main/java/io/fd/hc2vpp/v3po/interfacesstate/GreCustomizer.java @@ -112,14 +112,18 @@ public class GreCustomizer extends FutureJVppCustomizer LOG.trace("Gre tunnel: {} attributes returned from VPP: {}", key.getName(), reply); final GreTunnelDetails swInterfaceGreDetails = reply.greTunnelDetails.get(0); - if (swInterfaceGreDetails.isIpv6 == 1) { - builder.setDst(new IpAddressNoZone(arrayToIpv6AddressNoZone(swInterfaceGreDetails.dstAddress))); - builder.setSrc(new IpAddressNoZone(arrayToIpv6AddressNoZone(swInterfaceGreDetails.srcAddress))); + if (swInterfaceGreDetails.tunnel.isIpv6 == 1) { + builder.setDst(new IpAddressNoZone( + arrayToIpv4AddressNoZone(swInterfaceGreDetails.tunnel.dst.un.getIp6().ip6Address))); + builder.setSrc(new IpAddressNoZone( + arrayToIpv6AddressNoZone(swInterfaceGreDetails.tunnel.src.un.getIp6().ip6Address))); } else { - builder.setDst(new IpAddressNoZone(arrayToIpv4AddressNoZone(swInterfaceGreDetails.dstAddress))); - builder.setSrc(new IpAddressNoZone(arrayToIpv4AddressNoZone(swInterfaceGreDetails.srcAddress))); + builder.setDst(new IpAddressNoZone( + arrayToIpv4AddressNoZone(swInterfaceGreDetails.tunnel.dst.un.getIp4().ip4Address))); + builder.setSrc(new IpAddressNoZone( + arrayToIpv4AddressNoZone(swInterfaceGreDetails.tunnel.src.un.getIp4().ip4Address))); } - builder.setOuterFibId((long) swInterfaceGreDetails.outerFibId); + builder.setOuterFibId((long) swInterfaceGreDetails.tunnel.outerFibId); LOG.debug("Gre tunnel: {}, id: {} attributes read as: {}", key.getName(), index, builder); } diff --git a/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfaces/GreCustomizerTest.java b/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfaces/GreCustomizerTest.java index 133e5ec54..0e0875baf 100644 --- a/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfaces/GreCustomizerTest.java +++ b/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfaces/GreCustomizerTest.java @@ -32,8 +32,8 @@ import io.fd.hc2vpp.common.translate.util.NamingContext; import io.fd.honeycomb.translate.write.WriteFailedException; import io.fd.jvpp.VppBaseCallException; import io.fd.jvpp.VppInvocationException; -import io.fd.jvpp.core.dto.GreAddDelTunnel; -import io.fd.jvpp.core.dto.GreAddDelTunnelReply; +import io.fd.jvpp.core.dto.GreTunnelAddDel; +import io.fd.jvpp.core.dto.GreTunnelAddDelReply; import org.junit.Test; import org.mockito.ArgumentCaptor; import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.v3po.rev190128.VppInterfaceAugmentation; @@ -73,33 +73,33 @@ public class GreCustomizerTest extends WriterCustomizerTest implements AddressTr } private void whenGreAddDelTunnelThenSuccess() { - final GreAddDelTunnelReply reply = new GreAddDelTunnelReply(); + final GreTunnelAddDelReply reply = new GreTunnelAddDelReply(); reply.swIfIndex = IFACE_ID; - doReturn(future(reply)).when(api).greAddDelTunnel(any(GreAddDelTunnel.class)); + doReturn(future(reply)).when(api).greTunnelAddDel(any(GreTunnelAddDel.class)); } private void whenGreAddDelTunnelThenFailure() { - doReturn(failedFuture()).when(api).greAddDelTunnel(any(GreAddDelTunnel.class)); + doReturn(failedFuture()).when(api).greTunnelAddDel(any(GreTunnelAddDel.class)); } - private GreAddDelTunnel verifyGreAddDelTunnelWasInvoked(final Gre gre) throws VppInvocationException { - ArgumentCaptor argumentCaptor = ArgumentCaptor.forClass(GreAddDelTunnel.class); - verify(api).greAddDelTunnel(argumentCaptor.capture()); - final GreAddDelTunnel actual = argumentCaptor.getValue(); - assertEquals(0, actual.isIpv6); - assertArrayEquals(ipAddressToArray(gre.getSrc()), actual.srcAddress); - assertArrayEquals(ipAddressToArray(gre.getDst()), actual.dstAddress); - assertEquals(gre.getOuterFibId().intValue(), actual.outerFibId); + private GreTunnelAddDel verifyGreAddDelTunnelWasInvoked(final Gre gre) throws VppInvocationException { + ArgumentCaptor argumentCaptor = ArgumentCaptor.forClass(GreTunnelAddDel.class); + verify(api).greTunnelAddDel(argumentCaptor.capture()); + final GreTunnelAddDel actual = argumentCaptor.getValue(); + assertEquals(0, actual.tunnel.isIpv6); + assertArrayEquals(ipAddressToArray(gre.getSrc()), actual.tunnel.src.un.getIp4().ip4Address); + assertArrayEquals(ipAddressToArray(gre.getDst()), actual.tunnel.dst.un.getIp4().ip4Address); + assertEquals(gre.getOuterFibId().intValue(), actual.tunnel.outerFibId); return actual; } private void verifyGreAddWasInvoked(final Gre gre) throws VppInvocationException { - final GreAddDelTunnel actual = verifyGreAddDelTunnelWasInvoked(gre); + final GreTunnelAddDel actual = verifyGreAddDelTunnelWasInvoked(gre); assertEquals(ADD_GRE, actual.isAdd); } private void verifyGreDeleteWasInvoked(final Gre gre) throws VppInvocationException { - final GreAddDelTunnel actual = verifyGreAddDelTunnelWasInvoked(gre); + final GreTunnelAddDel actual = verifyGreAddDelTunnelWasInvoked(gre); assertEquals(DEL_GRE, actual.isAdd); } diff --git a/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/GreCustomizerTest.java b/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/GreCustomizerTest.java index 0e0775916..33617fbc6 100644 --- a/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/GreCustomizerTest.java +++ b/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/GreCustomizerTest.java @@ -37,12 +37,15 @@ import io.fd.jvpp.core.dto.GreTunnelDetails; import io.fd.jvpp.core.dto.GreTunnelDetailsReplyDump; import io.fd.jvpp.core.dto.GreTunnelDump; import io.fd.jvpp.core.dto.SwInterfaceDetails; +import io.fd.jvpp.core.types.Address; +import io.fd.jvpp.core.types.GreTunnel; import org.junit.Test; import org.mockito.Mock; import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.v3po.rev190128.VppInterfaceStateAugmentation; import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.v3po.rev190128.VppInterfaceStateAugmentationBuilder; import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.v3po.rev190128.interfaces.state._interface.Gre; import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.v3po.rev190128.interfaces.state._interface.GreBuilder; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.InterfacesState; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.InterfaceKey; @@ -78,11 +81,12 @@ public class GreCustomizerTest extends ReaderCustomizerTest imp final GreTunnelDetailsReplyDump value = new GreTunnelDetailsReplyDump(); final GreTunnelDetails greTunnelDetails = new GreTunnelDetails(); - greTunnelDetails.isIpv6 = 0; - greTunnelDetails.dstAddress = ipv4AddressNoZoneToArray("1.2.3.4"); - greTunnelDetails.srcAddress = ipv4AddressNoZoneToArray("1.2.3.5"); - greTunnelDetails.outerFibId = 55; - greTunnelDetails.swIfIndex = 0; + greTunnelDetails.tunnel = new GreTunnel(); + greTunnelDetails.tunnel.isIpv6 = 0; + greTunnelDetails.tunnel.dst = ipv4AddressToAddress(new Ipv4Address("1.2.3.4")); + greTunnelDetails.tunnel.src = ipv4AddressToAddress(new Ipv4Address("1.2.3.5")); + greTunnelDetails.tunnel.outerFibId = 55; + greTunnelDetails.tunnel.swIfIndex = 0; value.greTunnelDetails = Lists.newArrayList(greTunnelDetails); doReturn(future(value)).when(api).greTunnelDump(any(GreTunnelDump.class)); -- cgit 1.2.3-korg