Fix MVPN 54/72154/1
authorClaudio D. Gasparini <claudio.gasparini@pantheon.tech>
Tue, 22 May 2018 09:24:12 +0000 (11:24 +0200)
committerClaudio D. Gasparini <claudio.gasparini@pantheon.tech>
Tue, 22 May 2018 10:07:00 +0000 (12:07 +0200)
- Remove unnecesary prefix under mvpn route model
- register mvpn routes cases under CacheableNlriObjects
- correct registration of ribsupport with corresponding family

JIRA: BGPCEP-396
Change-Id: Ibf83e013b53dbda6120621990dc84781565ff70d
Signed-off-by: Claudio D. Gasparini <claudio.gasparini@pantheon.tech>
bgp/mvpn/src/main/java/org/opendaylight/protocol/bgp/mvpn/impl/AbstractMvpnRIBSupport.java
bgp/mvpn/src/main/java/org/opendaylight/protocol/bgp/mvpn/impl/MvpnIpv4RIBSupport.java
bgp/mvpn/src/main/java/org/opendaylight/protocol/bgp/mvpn/impl/MvpnIpv6RIBSupport.java
bgp/mvpn/src/main/java/org/opendaylight/protocol/bgp/mvpn/impl/RIBActivator.java
bgp/mvpn/src/main/java/org/opendaylight/protocol/bgp/mvpn/impl/nlri/Ipv4NlriHandler.java
bgp/mvpn/src/main/yang/bgp-mvpn-ipv4.yang
bgp/mvpn/src/main/yang/bgp-mvpn-ipv6.yang
bgp/mvpn/src/main/yang/bgp-mvpn.yang
bgp/mvpn/src/test/java/org/opendaylight/protocol/bgp/mvpn/impl/MvpnIpv4RIBSupportTest.java
bgp/mvpn/src/test/java/org/opendaylight/protocol/bgp/mvpn/impl/MvpnIpv6RIBSupportTest.java
bgp/rib-spi/src/main/java/org/opendaylight/protocol/bgp/rib/spi/AbstractRIBSupport.java

index 1954fc190f08cba3ce9d23fd2d33a0316ddfd74b..0b6dbe0417493978b7417f325f3e2982338d0703 100644 (file)
@@ -8,6 +8,8 @@
 
 package org.opendaylight.protocol.bgp.mvpn.impl;
 
+import com.google.common.collect.ImmutableCollection;
+import com.google.common.collect.ImmutableSet;
 import java.util.Optional;
 import org.opendaylight.controller.md.sal.dom.api.DOMDataWriteTransaction;
 import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer;
@@ -45,6 +47,7 @@ public abstract class AbstractMvpnRIBSupport<C extends Routes & DataObject>
         extends AbstractRIBSupport<C, MvpnRoutes, MvpnRoute, MvpnRouteKey> {
     private static final Logger LOG = LoggerFactory.getLogger(AbstractMvpnRIBSupport.class);
     private final NodeIdentifier nlriRoutesList;
+    private final ImmutableCollection<Class<? extends DataObject>> cacheableNlriObjects;
 
     /**
      * Default constructor. Requires the QName of the container augmented under the routes choice
@@ -67,6 +70,13 @@ public abstract class AbstractMvpnRIBSupport<C extends Routes & DataObject>
         super(mappingService, cazeClass, MvpnRoutes.class, MvpnRoute.class, afiClass,
                 McastVpnSubsequentAddressFamily.class, destContainerQname);
         this.nlriRoutesList = NodeIdentifier.create(destListQname);
+        this.cacheableNlriObjects = ImmutableSet.of(cazeClass);
+
+    }
+
+    @Override
+    public final ImmutableCollection<Class<? extends DataObject>> cacheableNlriObjects() {
+        return this.cacheableNlriObjects;
     }
 
     @Override
index f16691e3fad7408995d616242a009ac1e1b35332..e4e382ce4337c83d992dbdb2b408671ce18b6157 100644 (file)
@@ -19,7 +19,6 @@ import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSeriali
 import org.opendaylight.protocol.bgp.mvpn.impl.nlri.Ipv4NlriHandler;
 import org.opendaylight.protocol.bgp.parser.spi.PathIdUtil;
 import org.opendaylight.protocol.util.ByteArray;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Prefix;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.destination.DestinationType;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.mvpn.ipv4.rev180417.MvpnDestination;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.mvpn.ipv4.rev180417.bgp.rib.rib.loc.rib.tables.routes.MvpnRoutesIpv4Case;
@@ -74,7 +73,6 @@ public final class MvpnIpv4RIBSupport extends AbstractMvpnRIBSupport<MvpnRoutesI
     private org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.mvpn.ipv4.rev180417.mvpn
             .destination.MvpnDestination extractDestinations(final DataContainerNode<? extends PathArgument> mvpnDest) {
         return new MvpnDestinationBuilder()
-                .setPrefix(new Ipv4Prefix(extractPrefix(mvpnDest)))
                 .setMvpnChoice(extractMvpnChoice(mvpnDest))
                 .setPathId(PathIdUtil.buildPathId(mvpnDest, routePathIdNid()))
                 .build();
index af13889b7b296028edc896dde8a4e10328118748..6afa7bee58dee7d9426fe2d0232110c527928676 100644 (file)
@@ -19,7 +19,6 @@ import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSeriali
 import org.opendaylight.protocol.bgp.mvpn.impl.nlri.Ipv6NlriHandler;
 import org.opendaylight.protocol.bgp.parser.spi.PathIdUtil;
 import org.opendaylight.protocol.util.ByteArray;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6Prefix;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.destination.DestinationType;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.mvpn.ipv6.rev180417.MvpnDestination;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.mvpn.ipv6.rev180417.bgp.rib.rib.loc.rib.tables.routes.MvpnRoutesIpv6Case;
@@ -74,7 +73,6 @@ public final class MvpnIpv6RIBSupport extends AbstractMvpnRIBSupport<MvpnRoutesI
     private org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.mvpn.ipv6.rev180417.mvpn
             .destination.MvpnDestination extractDestination(final DataContainerNode<? extends PathArgument> mvpnDest) {
         return new MvpnDestinationBuilder()
-                .setPrefix(new Ipv6Prefix(extractPrefix(mvpnDest)))
                 .setMvpnChoice(extractMvpnChoice(mvpnDest))
                 .setPathId(PathIdUtil.buildPathId(mvpnDest, routePathIdNid()))
                 .build();
index 2409882350e47e7cebf4890700e162ad481dca47..657a580c8325a610ee29ca4dae84b283f064bf5b 100644 (file)
@@ -28,9 +28,9 @@ public final class RIBActivator extends AbstractRIBExtensionProviderActivator {
             final BindingNormalizedNodeSerializer mappingService) {
         return Lists.newArrayList(
                 context.registerRIBSupport(Ipv4AddressFamily.class, McastVpnSubsequentAddressFamily.class,
-                        MvpnIpv6RIBSupport.getInstance(mappingService)),
+                        MvpnIpv4RIBSupport.getInstance(mappingService)),
                 context.registerRIBSupport(Ipv6AddressFamily.class, McastVpnSubsequentAddressFamily.class,
-                        MvpnIpv4RIBSupport.getInstance(mappingService))
+                        MvpnIpv6RIBSupport.getInstance(mappingService))
         );
     }
 }
index b6ff76d228478e9325d88cb6403da4d58ed1622a..2d1272075effc988c41631f8c4ff864cfcd47153 100644 (file)
@@ -50,8 +50,8 @@ public final class Ipv4NlriHandler {
             dests.add(builder.build());
         }
 
-        return new DestinationMvpnIpv4AdvertizedCaseBuilder().setDestinationMvpn(
-                new DestinationMvpnBuilder().setMvpnDestination(dests).build()).build();
+        return new DestinationMvpnIpv4AdvertizedCaseBuilder()
+                .setDestinationMvpn(new DestinationMvpnBuilder().setMvpnDestination(dests).build()).build();
     }
 
     static DestinationMvpnIpv4WithdrawnCase parseIpv4UnreachNlri(
index bf313944f2b84e89e2a3f6a56e558337da118e99..d5425aab2dc534bffa20bb097ed460ee85efa0a0 100644 (file)
@@ -16,9 +16,6 @@ module bgp-mvpn-ipv4 {
     grouping mvpn-destination {
         list mvpn-destination {
             uses mvpn:mvpn;
-            leaf prefix {
-                type inet:ipv4-prefix;
-            }
             uses bgp-msg:path-id-grouping;
         }
     }
index c9cc62d9376f0b28c72441432b7f5b000503c40d..b6ddebd2a65378345376cc41976451231aa2f0e8 100644 (file)
@@ -16,9 +16,6 @@ module bgp-mvpn-ipv6 {
     grouping mvpn-destination {
         list mvpn-destination {
             uses mvpn:mvpn;
-            leaf prefix {
-                type inet:ipv6-prefix;
-            }
             uses bgp-msg:path-id-grouping;
         }
     }
index 49685ecac3e271f01073520f74a50ff7ba9f0561..57f12cc551c3e62f9397675dc7e898a97f99ee12 100644 (file)
@@ -266,11 +266,7 @@ module bgp-mvpn {
         container mvpn-routes {
             list mvpn-route {
                 key "route-key path-id";
-
                 uses mvpn-bgp-rib-route;
-                leaf prefix {
-                    type inet:ip-prefix;
-                }
             }
         }
     }
index 9a33989f816e5d7575469ced3124be75e48e0db5..9f5d7ec892af6873a79e32ed76d223fe207fce9b 100644 (file)
@@ -21,8 +21,6 @@ import org.junit.Ignore;
 import org.junit.Test;
 import org.opendaylight.protocol.bgp.rib.spi.AbstractRIBSupportTest;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.AsNumber;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefix;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Prefix;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev180329.PathId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev180329.Update;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.Attributes1;
@@ -61,7 +59,6 @@ import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidates;
 public class MvpnIpv4RIBSupportTest extends AbstractRIBSupportTest<MvpnRoute> {
     private static final MvpnRouteKey ROUTE_KEY;
     private static final MvpnRoute ROUTE;
-    private static final IpPrefix PREFIX = new IpPrefix(new Ipv4Prefix("127.0.0.1/32"));
     private static final org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.mvpn.rev180417.mvpn
             .routes.MvpnRoutes MVPN_ROUTES;
     private static final MvpnChoice MVPN = new InterAsIPmsiADCaseBuilder().setInterAsIPmsiAD(
@@ -72,7 +69,6 @@ public class MvpnIpv4RIBSupportTest extends AbstractRIBSupportTest<MvpnRoute> {
     private static final PathId PATH_ID = new PathId(0L);
     private static final MvpnDestination MVPN_DESTINATION = new MvpnDestinationBuilder()
             .setMvpnChoice(MVPN)
-            .setPrefix(PREFIX.getIpv4Prefix())
             .setPathId(PATH_ID)
             .build();
     private static final DestinationMvpnIpv4AdvertizedCase REACH_NLRI = new DestinationMvpnIpv4AdvertizedCaseBuilder()
@@ -88,7 +84,6 @@ public class MvpnIpv4RIBSupportTest extends AbstractRIBSupportTest<MvpnRoute> {
         ROUTE_KEY = new MvpnRouteKey(PATH_ID, "AgwAAQECAwQBAgAAAAE=");
         ROUTE = new MvpnRouteBuilder()
                 .setRouteKey(ROUTE_KEY.getRouteKey())
-                .setPrefix(PREFIX)
                 .setPathId(ROUTE_KEY.getPathId())
                 .setAttributes(ATTRIBUTES)
                 .setMvpnChoice(MVPN)
index 56d282e2b688fe6f3da1f514b62557703946598e..8cb4e431bb65dfbb74f6487576f1a906f3641cdd 100644 (file)
@@ -23,8 +23,6 @@ import org.junit.Test;
 import org.opendaylight.protocol.bgp.rib.spi.AbstractRIBSupportTest;
 import org.opendaylight.protocol.util.ByteArray;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.AsNumber;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefix;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6Prefix;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev180329.PathId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev180329.Update;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.Attributes1;
@@ -65,7 +63,6 @@ import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidates;
 public final class MvpnIpv6RIBSupportTest extends AbstractRIBSupportTest<MvpnRoute> {
     private static final MvpnRouteKey ROUTE_KEY;
     private static final MvpnRoute ROUTE;
-    private static final IpPrefix PREFIX = new IpPrefix(new Ipv6Prefix("2001:db8:1:1::/64"));
     private static final org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.mvpn.rev180417.mvpn
             .routes.MvpnRoutes MVPN_ROUTES;
     private static final MvpnChoice MVPN = new InterAsIPmsiADCaseBuilder().setInterAsIPmsiAD(
@@ -76,7 +73,6 @@ public final class MvpnIpv6RIBSupportTest extends AbstractRIBSupportTest<MvpnRou
     private static final PathId PATH_ID = new PathId(0L);
     private static final MvpnDestination MVPN_DESTINATION = new MvpnDestinationBuilder()
             .setMvpnChoice(MVPN)
-            .setPrefix(PREFIX.getIpv6Prefix())
             .setPathId(PATH_ID)
             .build();
     private static final DestinationMvpnIpv6AdvertizedCase REACH_NLRI = new DestinationMvpnIpv6AdvertizedCaseBuilder()
@@ -93,7 +89,6 @@ public final class MvpnIpv6RIBSupportTest extends AbstractRIBSupportTest<MvpnRou
         ROUTE_KEY = new MvpnRouteKey(PATH_ID, ByteArray.encodeBase64(buffer));
         ROUTE = new MvpnRouteBuilder()
                 .setRouteKey(ROUTE_KEY.getRouteKey())
-                .setPrefix(PREFIX)
                 .setPathId(ROUTE_KEY.getPathId())
                 .setAttributes(ATTRIBUTES)
                 .setMvpnChoice(MVPN)
index fad8797dd7a90f7780c92e99175c92907f8446b2..fcf04912cad70f8d5e561d3bd0b1dd22bf984a06 100644 (file)
@@ -82,7 +82,7 @@ public abstract class AbstractRIBSupport<
     private static final NodeIdentifier ADVERTISED_ROUTES = new NodeIdentifier(AdvertizedRoutes.QNAME);
     private static final NodeIdentifier WITHDRAWN_ROUTES = new NodeIdentifier(WithdrawnRoutes.QNAME);
     private static final NodeIdentifier DESTINATION_TYPE = new NodeIdentifier(DestinationType.QNAME);
-    private static final InstanceIdentifier TABLES_II = InstanceIdentifier.create(BgpRib.class)
+    private static final InstanceIdentifier<Tables> TABLES_II = InstanceIdentifier.create(BgpRib.class)
             .child(Rib.class).child(LocRib.class).child(Tables.class);
     private static final NodeIdentifier ROUTES = new NodeIdentifier(Routes.QNAME);
     private static final ApplyRoute DELETE_ROUTE = new DeleteRoute();