From e5768e2dd1721bd454d2ddbd4e6dc647a5daebe5 Mon Sep 17 00:00:00 2001 From: Marek Gradzki Date: Tue, 3 Jul 2018 09:56:58 +0200 Subject: HC2VPP-346: use fib-table-list-ref for FIB to ifc assignment Change-Id: Ie57776ab9784b7c57630b7ea9ce9b96b71feb5a5 Signed-off-by: Marek Gradzki --- v3po/api/src/main/yang/v3po@2017-06-07.yang | 4 ++-- .../hc2vpp/v3po/interfaces/RoutingCustomizer.java | 9 ++++---- .../v3po/interfacesstate/RoutingCustomizer.java | 9 ++++---- .../interfaces/InterfaceRoutingCustomizerTest.java | 3 ++- .../SubInterfaceRoutingCustomizerTest.java | 25 +++++++++++++--------- .../InterfaceRoutingCustomizerTest.java | 5 +++-- .../SubInterfaceRoutingCustomizerTest.java | 6 +++--- 7 files changed, 35 insertions(+), 26 deletions(-) diff --git a/v3po/api/src/main/yang/v3po@2017-06-07.yang b/v3po/api/src/main/yang/v3po@2017-06-07.yang index 09ac9848d..e25fc2e7f 100644 --- a/v3po/api/src/main/yang/v3po@2017-06-07.yang +++ b/v3po/api/src/main/yang/v3po@2017-06-07.yang @@ -353,10 +353,10 @@ module v3po { grouping routing-base-attributes { leaf ipv4-vrf-id { - type uint32; + type fib-management:fib-table-list-ref; } leaf ipv6-vrf-id { - type uint32; + type fib-management:fib-table-list-ref; } description "Defines VRF tables used for ipv4 and ipv6 traffic"; diff --git a/v3po/v3po2vpp/src/main/java/io/fd/hc2vpp/v3po/interfaces/RoutingCustomizer.java b/v3po/v3po2vpp/src/main/java/io/fd/hc2vpp/v3po/interfaces/RoutingCustomizer.java index fb5ec3371..1f8e2364b 100644 --- a/v3po/v3po2vpp/src/main/java/io/fd/hc2vpp/v3po/interfaces/RoutingCustomizer.java +++ b/v3po/v3po2vpp/src/main/java/io/fd/hc2vpp/v3po/interfaces/RoutingCustomizer.java @@ -30,6 +30,7 @@ import io.fd.vpp.jvpp.core.future.FutureJVppCore; import java.util.concurrent.CompletionStage; import javax.annotation.Nonnull; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev170607.RoutingBaseAttributes; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.fib.table.management.rev180521.VniReference; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -59,13 +60,13 @@ abstract class RoutingCustomizer extends FutureJVppCustomizer implements JvppRep } private void setVrfId(final InstanceIdentifier id, final int swIfc, - final Long vrfId, boolean isIp6) + final VniReference vniRef, boolean isIp6) throws WriteFailedException { - if (vrfId == null) { + if (vniRef == null || vniRef.getValue() == null) { return; } - final CompletionStage cs = getFutureJVpp() - .swInterfaceSetTable(getInterfaceSetTableRequest(swIfc, booleanToByte(isIp6), vrfId.intValue())); + final CompletionStage cs = getFutureJVpp().swInterfaceSetTable( + getInterfaceSetTableRequest(swIfc, booleanToByte(isIp6), vniRef.getValue().intValue())); getReplyForWrite(cs.toCompletableFuture(), id); } diff --git a/v3po/v3po2vpp/src/main/java/io/fd/hc2vpp/v3po/interfacesstate/RoutingCustomizer.java b/v3po/v3po2vpp/src/main/java/io/fd/hc2vpp/v3po/interfacesstate/RoutingCustomizer.java index 58603c742..9727c4d35 100644 --- a/v3po/v3po2vpp/src/main/java/io/fd/hc2vpp/v3po/interfacesstate/RoutingCustomizer.java +++ b/v3po/v3po2vpp/src/main/java/io/fd/hc2vpp/v3po/interfacesstate/RoutingCustomizer.java @@ -28,6 +28,7 @@ import io.fd.vpp.jvpp.core.future.FutureJVppCore; import java.util.function.Consumer; import javax.annotation.Nonnull; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev170607.RoutingBaseAttributes; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.fib.table.management.rev180521.VniReference; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; abstract class RoutingCustomizer extends FutureJVppCustomizer implements JvppReplyConsumer { @@ -40,8 +41,8 @@ abstract class RoutingCustomizer extends FutureJVppCustomizer implements JvppRep } protected void readInterfaceRouting(@Nonnull final InstanceIdentifier id, - @Nonnull final Consumer v4VrfConsumer, - @Nonnull final Consumer v6VrfConsumer, + @Nonnull final Consumer v4VrfConsumer, + @Nonnull final Consumer v6VrfConsumer, @Nonnull final ReadContext ctx, final String interfaceName) throws ReadFailedException { final SwInterfaceGetTable request = new SwInterfaceGetTable(); @@ -55,10 +56,10 @@ abstract class RoutingCustomizer extends FutureJVppCustomizer implements JvppRep getReplyForRead(getFutureJVpp().swInterfaceGetTable(request).toCompletableFuture(), id); if (ip4Reply.vrfId != 0) { - v4VrfConsumer.accept(UnsignedInts.toLong(ip4Reply.vrfId)); + v4VrfConsumer.accept(new VniReference(UnsignedInts.toLong(ip4Reply.vrfId))); } if (ip6Reply.vrfId != 0) { - v6VrfConsumer.accept(UnsignedInts.toLong(ip6Reply.vrfId)); + v6VrfConsumer.accept(new VniReference(UnsignedInts.toLong(ip6Reply.vrfId))); } } } diff --git a/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfaces/InterfaceRoutingCustomizerTest.java b/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfaces/InterfaceRoutingCustomizerTest.java index 2ef32721e..21d388050 100644 --- a/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfaces/InterfaceRoutingCustomizerTest.java +++ b/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfaces/InterfaceRoutingCustomizerTest.java @@ -41,6 +41,7 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ip.rev14061 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev170607.VppInterfaceAugmentation; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev170607.interfaces._interface.Routing; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev170607.interfaces._interface.RoutingBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.fib.table.management.rev180521.VniReference; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; public class InterfaceRoutingCustomizerTest extends WriterCustomizerTest { @@ -144,7 +145,7 @@ public class InterfaceRoutingCustomizerTest extends WriterCustomizerTest { } private Routing routing(final long vrfId) { - return new RoutingBuilder().setIpv4VrfId(vrfId).build(); + return new RoutingBuilder().setIpv4VrfId(new VniReference(vrfId)).build(); } private SwInterfaceSetTable expectedRequest(final int vrfId) { diff --git a/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfaces/SubInterfaceRoutingCustomizerTest.java b/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfaces/SubInterfaceRoutingCustomizerTest.java index e7e108746..3b3de2ae8 100644 --- a/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfaces/SubInterfaceRoutingCustomizerTest.java +++ b/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfaces/SubInterfaceRoutingCustomizerTest.java @@ -37,6 +37,7 @@ import org.mockito.Captor; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.Interfaces; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.InterfaceKey; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.fib.table.management.rev180521.VniReference; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev180319.SubinterfaceAugmentation; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev180319.interfaces._interface.SubInterfaces; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.vlan.rev180319.interfaces._interface.sub.interfaces.SubInterface; @@ -82,21 +83,21 @@ public class SubInterfaceRoutingCustomizerTest extends WriterCustomizerTest impl @Test(expected = IllegalStateException.class) public void testWriteFailedV4AddressPresent() throws WriteFailedException { when(writeContext.readBefore(any(InstanceIdentifier.class))).thenReturn(Optional.of(v4AddressPresent())); - final Routing v4Routing = new RoutingBuilder().setIpv4VrfId(4L).build(); + final Routing v4Routing = new RoutingBuilder().setIpv4VrfId(new VniReference(4L)).build(); customizer.writeCurrentAttributes(VALID_ID, v4Routing, writeContext); } @Test(expected = IllegalStateException.class) public void testWriteFailedV6AddressPresent() throws WriteFailedException { when(writeContext.readBefore(any(InstanceIdentifier.class))).thenReturn(Optional.of(v6AddressPresent())); - final Routing v4Routing = new RoutingBuilder().setIpv4VrfId(4L).build(); + final Routing v4Routing = new RoutingBuilder().setIpv4VrfId(new VniReference(4L)).build(); customizer.writeCurrentAttributes(VALID_ID, v4Routing, writeContext); } @Test public void testWriteIpv4Vrf() throws WriteFailedException { when(writeContext.readBefore(any(InstanceIdentifier.class))).thenReturn(Optional.absent()); - final Routing v4Routing = new RoutingBuilder().setIpv4VrfId(4L).build(); + final Routing v4Routing = new RoutingBuilder().setIpv4VrfId(new VniReference(4L)).build(); customizer.writeCurrentAttributes(VALID_ID, v4Routing, writeContext); verifySetTableRequest(1, Collections.singleton(request(false, SUBIF_INDEX, 4))); } @@ -105,7 +106,7 @@ public class SubInterfaceRoutingCustomizerTest extends WriterCustomizerTest impl @Test public void testWriteIpv6Vrf() throws WriteFailedException { when(writeContext.readBefore(any(InstanceIdentifier.class))).thenReturn(Optional.absent()); - final Routing v6Routing = new RoutingBuilder().setIpv6VrfId(3L).build(); + final Routing v6Routing = new RoutingBuilder().setIpv6VrfId(new VniReference(3L)).build(); customizer.writeCurrentAttributes(VALID_ID, v6Routing, writeContext); verifySetTableRequest(1, Collections.singleton(request(true, SUBIF_INDEX, 3))); } @@ -113,8 +114,10 @@ public class SubInterfaceRoutingCustomizerTest extends WriterCustomizerTest impl @Test public void testUpdateIpv4Vrf() throws WriteFailedException { when(writeContext.readBefore(any(InstanceIdentifier.class))).thenReturn(Optional.absent()); - final Routing routingBefore = new RoutingBuilder().setIpv6VrfId(3L).setIpv4VrfId(4L).build(); - final Routing routingAfter = new RoutingBuilder().setIpv6VrfId(3L).setIpv4VrfId(5L).build(); + final Routing routingBefore = new RoutingBuilder().setIpv6VrfId(new VniReference(3L)) + .setIpv4VrfId(new VniReference(4L)).build(); + final Routing routingAfter = new RoutingBuilder().setIpv6VrfId(new VniReference(3L)) + .setIpv4VrfId(new VniReference(5L)).build(); customizer.updateCurrentAttributes(VALID_ID, routingBefore, routingAfter, writeContext); verifySetTableRequest(2, ImmutableSet.of(request(false, SUBIF_INDEX, 5), request(true, SUBIF_INDEX, 3))); @@ -123,8 +126,10 @@ public class SubInterfaceRoutingCustomizerTest extends WriterCustomizerTest impl @Test public void testUpdateIpv6Vrf() throws WriteFailedException { when(writeContext.readBefore(any(InstanceIdentifier.class))).thenReturn(Optional.absent()); - final Routing routingBefore = new RoutingBuilder().setIpv6VrfId(3L).setIpv4VrfId(4L).build(); - final Routing routingAfter = new RoutingBuilder().setIpv6VrfId(8L).setIpv4VrfId(4L).build(); + final Routing routingBefore = new RoutingBuilder().setIpv6VrfId(new VniReference(3L)) + .setIpv4VrfId(new VniReference(4L)).build(); + final Routing routingAfter = new RoutingBuilder().setIpv6VrfId(new VniReference(8L)) + .setIpv4VrfId(new VniReference(4L)).build(); customizer.updateCurrentAttributes(VALID_ID, routingBefore, routingAfter, writeContext); verifySetTableRequest(2, ImmutableSet.of(request(false, SUBIF_INDEX, 4), request(true, SUBIF_INDEX, 8))); @@ -133,7 +138,7 @@ public class SubInterfaceRoutingCustomizerTest extends WriterCustomizerTest impl @Test public void testDeleteIpv4Vrf() throws WriteFailedException { when(writeContext.readAfter(any(InstanceIdentifier.class))).thenReturn(Optional.absent()); - final Routing v4Routing = new RoutingBuilder().setIpv4VrfId(4L).build(); + final Routing v4Routing = new RoutingBuilder().setIpv4VrfId(new VniReference(4L)).build(); customizer.deleteCurrentAttributes(VALID_ID, v4Routing, writeContext); verifySetTableRequest(1, Collections.singleton(request(false, SUBIF_INDEX, DISABLE_VRF))); } @@ -142,7 +147,7 @@ public class SubInterfaceRoutingCustomizerTest extends WriterCustomizerTest impl @Test public void testDeleteIpv6Vrf() throws WriteFailedException { when(writeContext.readAfter(any(InstanceIdentifier.class))).thenReturn(Optional.absent()); - final Routing v6Routing = new RoutingBuilder().setIpv6VrfId(3L).build(); + final Routing v6Routing = new RoutingBuilder().setIpv6VrfId(new VniReference(3L)).build(); customizer.deleteCurrentAttributes(VALID_ID, v6Routing, writeContext); verifySetTableRequest(1, Collections.singleton(request(true, SUBIF_INDEX, DISABLE_VRF))); } diff --git a/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/InterfaceRoutingCustomizerTest.java b/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/InterfaceRoutingCustomizerTest.java index 6e8e8be9e..1af58de14 100644 --- a/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/InterfaceRoutingCustomizerTest.java +++ b/v3po/v3po2vpp/src/test/java/io/fd/hc2vpp/v3po/interfacesstate/InterfaceRoutingCustomizerTest.java @@ -34,6 +34,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev170607.VppInterfaceStateAugmentationBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev170607.interfaces.state._interface.Routing; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev170607.interfaces.state._interface.RoutingBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.fib.table.management.rev180521.VniReference; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; public class InterfaceRoutingCustomizerTest extends ReaderCustomizerTest { @@ -72,8 +73,8 @@ public class InterfaceRoutingCustomizerTest extends ReaderCustomizerTest