Fix GRE tunnel after API changes 20/19120/1
authorMichal Cmarada <[email protected]>
Tue, 23 Apr 2019 18:55:01 +0000 (20:55 +0200)
committerMichal Cmarada <[email protected]>
Tue, 23 Apr 2019 18:55:01 +0000 (20:55 +0200)
Change-Id: I346a2e1793e3fc5758a23ca4f049e8118a81b54b
Signed-off-by: Michal Cmarada <[email protected]>
v3po/v3po2vpp/src/main/java/io/fd/hc2vpp/v3po/interfaces/GreCustomizer.java
v3po/v3po2vpp/src/main/java/io/fd/hc2vpp/v3po/interfacesstate/GreCustomizer.java
v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfaces/GreCustomizerTest.java
v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/GreCustomizerTest.java

index e449097..b1ecc3a 100644 (file)
@@ -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<Gre> 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<Gre> implemen
         int outerFibId = gre.getOuterFibId().intValue();
 
         LOG.debug("Setting gre tunnel for interface: {}. Gre: {}", swIfName, gre);
-        final CompletionStage<GreAddDelTunnelReply> greAddDelTunnelReplyCompletionStage =
-            getFutureJVpp().greAddDelTunnel(getGreTunnelRequest((byte) 1 /* is add */, gre.getSrc(),
+        final CompletionStage<GreTunnelAddDelReply> 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<Gre> implemen
         int outerFibId = gre.getOuterFibId().intValue();
 
         LOG.debug("Deleting gre tunnel for interface: {}. Gre: {}", swIfName, gre);
-        final CompletionStage<GreAddDelTunnelReply> greAddDelTunnelReplyCompletionStage =
-            getFutureJVpp().greAddDelTunnel(getGreTunnelRequest((byte) 0 /* is add */, gre.getSrc(),
+        final CompletionStage<GreTunnelAddDelReply> greAddDelTunnelReplyCompletionStage =
+            getFutureJVpp().greTunnelAddDel(getGreTunnelRequest((byte) 0 /* is add */, gre.getSrc(),
                 gre.getDst(), outerFibId, isIpv6));
 
         getReplyForDelete(greAddDelTunnelReplyCompletionStage.toCompletableFuture(), id);
index 874330f..19d0a12 100644 (file)
@@ -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);
     }
 
index 133e5ec..0e0875b 100644 (file)
@@ -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<GreAddDelTunnel> 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<GreTunnelAddDel> 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);
     }
 
index 0e07759..33617fb 100644 (file)
@@ -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<Gre, GreBuilder> 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));