From f3f1cb631595e56c8dbfbc676a2f0f859ce0606a Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Thu, 6 Dec 2018 00:29:44 +0100 Subject: [PATCH] provide way to extract routes from routesContainer EffectiveRibInWriter operates with binding databroker and while we have tools to construct InstanceIdentifier for routesContainer we are missing tool to extract routes from it. This patch should provide just that. JIRA:BGPCEP-495 Change-Id: I1aea06ec4f082d11643566aed761fcc4092b6fcc Signed-off-by: Robert Varga Signed-off-by: Matej Perina --- .../protocol/bgp/evpn/impl/EvpnRibSupport.java | 5 +++++ .../protocol/bgp/flowspec/FlowspecIpv4RIBSupport.java | 6 ++++++ .../protocol/bgp/flowspec/FlowspecIpv6RIBSupport.java | 6 ++++++ .../flowspec/l3vpn/ipv4/FlowspecL3vpnIpv4RIBSupport.java | 8 +++++++- .../flowspec/l3vpn/ipv6/FlowspecL3vpnIpv6RIBSupport.java | 8 +++++++- .../opendaylight/protocol/bgp/inet/IPv4RIBSupport.java | 5 +++++ .../opendaylight/protocol/bgp/inet/IPv6RIBSupport.java | 5 +++++ .../bgp/l3vpn/mcast/AbstractL3vpnMcastIpRIBSupport.java | 6 ++++++ .../protocol/bgp/l3vpn/unicast/AbstractVpnRIBSupport.java | 7 ++++++- .../bgp/l3vpn/unicast/ipv4/VpnIpv4RIBSupport.java | 4 ++-- .../bgp/l3vpn/unicast/ipv6/VpnIpv6RIBSupport.java | 4 ++-- .../labeled/unicast/AbstractLabeledUnicastRIBSupport.java | 5 +++++ .../protocol/bgp/linkstate/impl/LinkstateRIBSupport.java | 5 +++++ .../protocol/bgp/mvpn/impl/AbstractMvpnRIBSupport.java | 5 +++++ .../impl/RouteTargetConstrainRIBSupport.java | 5 +++++ .../org/opendaylight/protocol/bgp/rib/spi/RIBSupport.java | 3 +++ .../protocol/bgp/rib/spi/RIBSupportTestImp.java | 6 ++++++ 17 files changed, 86 insertions(+), 7 deletions(-) diff --git a/bgp/extensions/evpn/src/main/java/org/opendaylight/protocol/bgp/evpn/impl/EvpnRibSupport.java b/bgp/extensions/evpn/src/main/java/org/opendaylight/protocol/bgp/evpn/impl/EvpnRibSupport.java index be3c3a7c5c..eb6ce80b77 100644 --- a/bgp/extensions/evpn/src/main/java/org/opendaylight/protocol/bgp/evpn/impl/EvpnRibSupport.java +++ b/bgp/extensions/evpn/src/main/java/org/opendaylight/protocol/bgp/evpn/impl/EvpnRibSupport.java @@ -160,4 +160,9 @@ final class EvpnRibSupport extends AbstractRIBSupport routesFromContainer(final EvpnRoutes container) { + return container.getEvpnRoute(); + } } diff --git a/bgp/extensions/flowspec/src/main/java/org/opendaylight/protocol/bgp/flowspec/FlowspecIpv4RIBSupport.java b/bgp/extensions/flowspec/src/main/java/org/opendaylight/protocol/bgp/flowspec/FlowspecIpv4RIBSupport.java index 0a077ad9a3..d5a8014cbd 100644 --- a/bgp/extensions/flowspec/src/main/java/org/opendaylight/protocol/bgp/flowspec/FlowspecIpv4RIBSupport.java +++ b/bgp/extensions/flowspec/src/main/java/org/opendaylight/protocol/bgp/flowspec/FlowspecIpv4RIBSupport.java @@ -8,6 +8,7 @@ package org.opendaylight.protocol.bgp.flowspec; import java.util.Collections; +import java.util.List; import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.flowspec.rev180329.FlowspecSubsequentAddressFamily; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.flowspec.rev180329.bgp.rib.rib.loc.rib.tables.routes.FlowspecRoutesCase; @@ -85,4 +86,9 @@ public final class FlowspecIpv4RIBSupport public FlowspecRouteKey createRouteListKey(final long pathId, final String routeKey) { return new FlowspecRouteKey(new PathId(pathId), routeKey); } + + @Override + public List routesFromContainer(final FlowspecRoutes container) { + return container.getFlowspecRoute(); + } } diff --git a/bgp/extensions/flowspec/src/main/java/org/opendaylight/protocol/bgp/flowspec/FlowspecIpv6RIBSupport.java b/bgp/extensions/flowspec/src/main/java/org/opendaylight/protocol/bgp/flowspec/FlowspecIpv6RIBSupport.java index 7729d8942e..9fd1c50113 100644 --- a/bgp/extensions/flowspec/src/main/java/org/opendaylight/protocol/bgp/flowspec/FlowspecIpv6RIBSupport.java +++ b/bgp/extensions/flowspec/src/main/java/org/opendaylight/protocol/bgp/flowspec/FlowspecIpv6RIBSupport.java @@ -8,6 +8,7 @@ package org.opendaylight.protocol.bgp.flowspec; import java.util.Collections; +import java.util.List; import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.flowspec.rev180329.FlowspecSubsequentAddressFamily; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.flowspec.rev180329.bgp.rib.rib.loc.rib.tables.routes.FlowspecIpv6RoutesCase; @@ -85,4 +86,9 @@ public final class FlowspecIpv6RIBSupport public FlowspecRouteKey createRouteListKey(final long pathId, final String routeKey) { return new FlowspecRouteKey(new PathId(pathId), routeKey); } + + @Override + public List routesFromContainer(final FlowspecIpv6Routes container) { + return container.getFlowspecRoute(); + } } diff --git a/bgp/extensions/flowspec/src/main/java/org/opendaylight/protocol/bgp/flowspec/l3vpn/ipv4/FlowspecL3vpnIpv4RIBSupport.java b/bgp/extensions/flowspec/src/main/java/org/opendaylight/protocol/bgp/flowspec/l3vpn/ipv4/FlowspecL3vpnIpv4RIBSupport.java index 3e5b762b0c..561a050cd0 100644 --- a/bgp/extensions/flowspec/src/main/java/org/opendaylight/protocol/bgp/flowspec/l3vpn/ipv4/FlowspecL3vpnIpv4RIBSupport.java +++ b/bgp/extensions/flowspec/src/main/java/org/opendaylight/protocol/bgp/flowspec/l3vpn/ipv4/FlowspecL3vpnIpv4RIBSupport.java @@ -8,6 +8,7 @@ package org.opendaylight.protocol.bgp.flowspec.l3vpn.ipv4; import java.util.Collections; +import java.util.List; import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer; import org.opendaylight.protocol.bgp.flowspec.SimpleFlowspecExtensionProviderContext; import org.opendaylight.protocol.bgp.flowspec.l3vpn.AbstractFlowspecL3vpnRIBSupport; @@ -61,7 +62,7 @@ public final class FlowspecL3vpnIpv4RIBSupport } @Override - public final FlowspecL3vpnRouteKey createRouteListKey(final long pathId, final String routeKey) { + public FlowspecL3vpnRouteKey createRouteListKey(final long pathId, final String routeKey) { return new FlowspecL3vpnRouteKey(new PathId(pathId), routeKey); } @@ -87,4 +88,9 @@ public final class FlowspecL3vpnIpv4RIBSupport public FlowspecL3vpnIpv4Routes emptyRoutesContainer() { return EMPTY_CONTAINER; } + + @Override + public List routesFromContainer(final FlowspecL3vpnIpv4Routes container) { + return container.getFlowspecL3vpnRoute(); + } } diff --git a/bgp/extensions/flowspec/src/main/java/org/opendaylight/protocol/bgp/flowspec/l3vpn/ipv6/FlowspecL3vpnIpv6RIBSupport.java b/bgp/extensions/flowspec/src/main/java/org/opendaylight/protocol/bgp/flowspec/l3vpn/ipv6/FlowspecL3vpnIpv6RIBSupport.java index 8232685f08..1114a7cd5a 100644 --- a/bgp/extensions/flowspec/src/main/java/org/opendaylight/protocol/bgp/flowspec/l3vpn/ipv6/FlowspecL3vpnIpv6RIBSupport.java +++ b/bgp/extensions/flowspec/src/main/java/org/opendaylight/protocol/bgp/flowspec/l3vpn/ipv6/FlowspecL3vpnIpv6RIBSupport.java @@ -8,6 +8,7 @@ package org.opendaylight.protocol.bgp.flowspec.l3vpn.ipv6; import java.util.Collections; +import java.util.List; import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer; import org.opendaylight.protocol.bgp.flowspec.SimpleFlowspecExtensionProviderContext; import org.opendaylight.protocol.bgp.flowspec.l3vpn.AbstractFlowspecL3vpnRIBSupport; @@ -61,7 +62,7 @@ public final class FlowspecL3vpnIpv6RIBSupport } @Override - public final FlowspecL3vpnRouteKey createRouteListKey(final long pathId, final String routeKey) { + public FlowspecL3vpnRouteKey createRouteListKey(final long pathId, final String routeKey) { return new FlowspecL3vpnRouteKey(new PathId(pathId), routeKey); } @@ -87,4 +88,9 @@ public final class FlowspecL3vpnIpv6RIBSupport public FlowspecL3vpnIpv6Routes emptyRoutesContainer() { return EMPTY_CONTAINER; } + + @Override + public List routesFromContainer(final FlowspecL3vpnIpv6Routes container) { + return container.getFlowspecL3vpnRoute(); + } } diff --git a/bgp/extensions/inet/src/main/java/org/opendaylight/protocol/bgp/inet/IPv4RIBSupport.java b/bgp/extensions/inet/src/main/java/org/opendaylight/protocol/bgp/inet/IPv4RIBSupport.java index 7db4eec453..00426892fb 100644 --- a/bgp/extensions/inet/src/main/java/org/opendaylight/protocol/bgp/inet/IPv4RIBSupport.java +++ b/bgp/extensions/inet/src/main/java/org/opendaylight/protocol/bgp/inet/IPv4RIBSupport.java @@ -115,4 +115,9 @@ final class IPv4RIBSupport extends AbstractIPRibSupport routesFromContainer(final Ipv4Routes container) { + return container.getIpv4Route(); + } } diff --git a/bgp/extensions/inet/src/main/java/org/opendaylight/protocol/bgp/inet/IPv6RIBSupport.java b/bgp/extensions/inet/src/main/java/org/opendaylight/protocol/bgp/inet/IPv6RIBSupport.java index 94a45427c8..acc8d56a9a 100644 --- a/bgp/extensions/inet/src/main/java/org/opendaylight/protocol/bgp/inet/IPv6RIBSupport.java +++ b/bgp/extensions/inet/src/main/java/org/opendaylight/protocol/bgp/inet/IPv6RIBSupport.java @@ -111,4 +111,9 @@ final class IPv6RIBSupport extends AbstractIPRibSupport routesFromContainer(final Ipv6Routes container) { + return container.getIpv6Route(); + } } diff --git a/bgp/extensions/l3vpn/src/main/java/org/opendaylight/protocol/bgp/l3vpn/mcast/AbstractL3vpnMcastIpRIBSupport.java b/bgp/extensions/l3vpn/src/main/java/org/opendaylight/protocol/bgp/l3vpn/mcast/AbstractL3vpnMcastIpRIBSupport.java index 8c5badf5fa..50587d24d9 100644 --- a/bgp/extensions/l3vpn/src/main/java/org/opendaylight/protocol/bgp/l3vpn/mcast/AbstractL3vpnMcastIpRIBSupport.java +++ b/bgp/extensions/l3vpn/src/main/java/org/opendaylight/protocol/bgp/l3vpn/mcast/AbstractL3vpnMcastIpRIBSupport.java @@ -162,5 +162,11 @@ abstract class AbstractL3vpnMcastIpRIBSupport< .build(); } + + @Override + public final List routesFromContainer(final S container) { + return container.getL3vpnMcastRoute(); + } + abstract NodeIdentifierWithPredicates createRouteKey(UnkeyedListEntryNode l3vpn); } diff --git a/bgp/extensions/l3vpn/src/main/java/org/opendaylight/protocol/bgp/l3vpn/unicast/AbstractVpnRIBSupport.java b/bgp/extensions/l3vpn/src/main/java/org/opendaylight/protocol/bgp/l3vpn/unicast/AbstractVpnRIBSupport.java index 5d8edc7bc5..1ffa2395a8 100644 --- a/bgp/extensions/l3vpn/src/main/java/org/opendaylight/protocol/bgp/l3vpn/unicast/AbstractVpnRIBSupport.java +++ b/bgp/extensions/l3vpn/src/main/java/org/opendaylight/protocol/bgp/l3vpn/unicast/AbstractVpnRIBSupport.java @@ -184,7 +184,12 @@ public abstract class AbstractVpnRIBSupport routesFromContainer(final S container) { + return container.getVpnRoute(); + } } diff --git a/bgp/extensions/l3vpn/src/main/java/org/opendaylight/protocol/bgp/l3vpn/unicast/ipv4/VpnIpv4RIBSupport.java b/bgp/extensions/l3vpn/src/main/java/org/opendaylight/protocol/bgp/l3vpn/unicast/ipv4/VpnIpv4RIBSupport.java index e70995246d..25ff6525d3 100644 --- a/bgp/extensions/l3vpn/src/main/java/org/opendaylight/protocol/bgp/l3vpn/unicast/ipv4/VpnIpv4RIBSupport.java +++ b/bgp/extensions/l3vpn/src/main/java/org/opendaylight/protocol/bgp/l3vpn/unicast/ipv4/VpnIpv4RIBSupport.java @@ -57,14 +57,14 @@ public final class VpnIpv4RIBSupport extends AbstractVpnRIBSupport dests) { + protected DestinationType getAdvertisedDestinationType(final List dests) { return new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.vpn.ipv4.rev180329.update .attributes.mp.reach.nlri.advertized.routes.destination.type.DestinationVpnIpv4CaseBuilder() .setVpnIpv4Destination(new VpnIpv4DestinationBuilder().setVpnDestination(dests).build()).build(); } @Override - protected DestinationType getWithdrawnDestinationType(List dests) { + protected DestinationType getWithdrawnDestinationType(final List dests) { return new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.vpn.ipv4.rev180329.update .attributes.mp.unreach.nlri.withdrawn.routes.destination.type.DestinationVpnIpv4CaseBuilder() .setVpnIpv4Destination(new VpnIpv4DestinationBuilder().setVpnDestination(dests).build()).build(); diff --git a/bgp/extensions/l3vpn/src/main/java/org/opendaylight/protocol/bgp/l3vpn/unicast/ipv6/VpnIpv6RIBSupport.java b/bgp/extensions/l3vpn/src/main/java/org/opendaylight/protocol/bgp/l3vpn/unicast/ipv6/VpnIpv6RIBSupport.java index 639a49e48b..fe88aefe67 100644 --- a/bgp/extensions/l3vpn/src/main/java/org/opendaylight/protocol/bgp/l3vpn/unicast/ipv6/VpnIpv6RIBSupport.java +++ b/bgp/extensions/l3vpn/src/main/java/org/opendaylight/protocol/bgp/l3vpn/unicast/ipv6/VpnIpv6RIBSupport.java @@ -57,14 +57,14 @@ public final class VpnIpv6RIBSupport extends AbstractVpnRIBSupport dests) { + protected DestinationType getAdvertisedDestinationType(final List dests) { return new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.vpn.ipv6.rev180329.update .attributes.mp.reach.nlri.advertized.routes.destination.type.DestinationVpnIpv6CaseBuilder() .setVpnIpv6Destination(new VpnIpv6DestinationBuilder().setVpnDestination(dests).build()).build(); } @Override - protected DestinationType getWithdrawnDestinationType(List dests) { + protected DestinationType getWithdrawnDestinationType(final List dests) { return new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.vpn.ipv6.rev180329.update .attributes.mp.unreach.nlri.withdrawn.routes.destination.type.DestinationVpnIpv6CaseBuilder() .setVpnIpv6Destination(new VpnIpv6DestinationBuilder().setVpnDestination(dests).build()).build(); diff --git a/bgp/extensions/labeled-unicast/src/main/java/org/opendaylight/protocol/bgp/labeled/unicast/AbstractLabeledUnicastRIBSupport.java b/bgp/extensions/labeled-unicast/src/main/java/org/opendaylight/protocol/bgp/labeled/unicast/AbstractLabeledUnicastRIBSupport.java index b2a5f37f96..04b90f36bd 100644 --- a/bgp/extensions/labeled-unicast/src/main/java/org/opendaylight/protocol/bgp/labeled/unicast/AbstractLabeledUnicastRIBSupport.java +++ b/bgp/extensions/labeled-unicast/src/main/java/org/opendaylight/protocol/bgp/labeled/unicast/AbstractLabeledUnicastRIBSupport.java @@ -187,4 +187,9 @@ abstract class AbstractLabeledUnicastRIBSupport< return builder.withKey(new LabeledUnicastRouteKey(new PathId(pathId), routeKey)) .setAttributes(attributes).build(); } + + @Override + public final List routesFromContainer(final S container) { + return container.getLabeledUnicastRoute(); + } } diff --git a/bgp/extensions/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/impl/LinkstateRIBSupport.java b/bgp/extensions/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/impl/LinkstateRIBSupport.java index 47229e29df..4d0e30b5dd 100644 --- a/bgp/extensions/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/impl/LinkstateRIBSupport.java +++ b/bgp/extensions/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/impl/LinkstateRIBSupport.java @@ -172,4 +172,9 @@ public final class LinkstateRIBSupport public LinkstateRouteKey createRouteListKey(final long pathId, final String routeKey) { return new LinkstateRouteKey(new PathId(pathId), routeKey); } + + @Override + public List routesFromContainer(final LinkstateRoutes container) { + return container.getLinkstateRoute(); + } } diff --git a/bgp/extensions/mvpn/src/main/java/org/opendaylight/protocol/bgp/mvpn/impl/AbstractMvpnRIBSupport.java b/bgp/extensions/mvpn/src/main/java/org/opendaylight/protocol/bgp/mvpn/impl/AbstractMvpnRIBSupport.java index 1f43825460..042564c24a 100644 --- a/bgp/extensions/mvpn/src/main/java/org/opendaylight/protocol/bgp/mvpn/impl/AbstractMvpnRIBSupport.java +++ b/bgp/extensions/mvpn/src/main/java/org/opendaylight/protocol/bgp/mvpn/impl/AbstractMvpnRIBSupport.java @@ -104,6 +104,11 @@ abstract class AbstractMvpnRIBSupport routesFromContainer(final S container) { + return container.getMvpnRoute(); + } + final MvpnChoice extractMvpnChoice(final DataContainerNode route) { final DataObject nn = this.mappingService.fromNormalizedNode(this.routeDefaultYii, route).getValue(); return ((MvpnRoute) nn).getMvpnChoice(); diff --git a/bgp/extensions/route-target/src/main/java/org/opendaylight/protocol/bgp/route/targetcontrain/impl/RouteTargetConstrainRIBSupport.java b/bgp/extensions/route-target/src/main/java/org/opendaylight/protocol/bgp/route/targetcontrain/impl/RouteTargetConstrainRIBSupport.java index d2a719b371..4f76384db4 100644 --- a/bgp/extensions/route-target/src/main/java/org/opendaylight/protocol/bgp/route/targetcontrain/impl/RouteTargetConstrainRIBSupport.java +++ b/bgp/extensions/route-target/src/main/java/org/opendaylight/protocol/bgp/route/targetcontrain/impl/RouteTargetConstrainRIBSupport.java @@ -223,4 +223,9 @@ public final class RouteTargetConstrainRIBSupport public RouteTargetConstrainRouteKey createRouteListKey(final long pathId, final String routeKey) { return new RouteTargetConstrainRouteKey(new PathId(pathId), routeKey); } + + @Override + public List routesFromContainer(final RouteTargetConstrainRoutes container) { + return container.getRouteTargetConstrainRoute(); + } } diff --git a/bgp/rib-spi/src/main/java/org/opendaylight/protocol/bgp/rib/spi/RIBSupport.java b/bgp/rib-spi/src/main/java/org/opendaylight/protocol/bgp/rib/spi/RIBSupport.java index f55b149a88..9b5c981036 100644 --- a/bgp/rib-spi/src/main/java/org/opendaylight/protocol/bgp/rib/spi/RIBSupport.java +++ b/bgp/rib-spi/src/main/java/org/opendaylight/protocol/bgp/rib/spi/RIBSupport.java @@ -12,6 +12,7 @@ import static org.opendaylight.protocol.bgp.parser.spi.PathIdUtil.NON_PATH_ID_VA import com.google.common.collect.ImmutableCollection; import com.google.common.collect.ImmutableSet; import java.util.Collection; +import java.util.List; import javax.annotation.Nonnull; import javax.annotation.Nullable; import org.opendaylight.controller.md.sal.dom.api.DOMDataWriteTransaction; @@ -92,6 +93,8 @@ public interface RIBSupport< @Nonnull Class routesListClass(); + @Nullable List routesFromContainer(@Nonnull S container); + @Nonnull default ImmutableCollection> cacheableAttributeObjects() { return ImmutableSet.of(); diff --git a/bgp/rib-spi/src/test/java/org/opendaylight/protocol/bgp/rib/spi/RIBSupportTestImp.java b/bgp/rib-spi/src/test/java/org/opendaylight/protocol/bgp/rib/spi/RIBSupportTestImp.java index 79918a3b31..49c60c08d9 100644 --- a/bgp/rib-spi/src/test/java/org/opendaylight/protocol/bgp/rib/spi/RIBSupportTestImp.java +++ b/bgp/rib-spi/src/test/java/org/opendaylight/protocol/bgp/rib/spi/RIBSupportTestImp.java @@ -11,6 +11,7 @@ package org.opendaylight.protocol.bgp.rib.spi; import com.google.common.collect.ImmutableMap; import java.util.Collection; import java.util.Collections; +import java.util.List; import org.opendaylight.controller.md.sal.dom.api.DOMDataWriteTransaction; import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev180329.PathId; @@ -83,4 +84,9 @@ public final class RIBSupportTestImp extends AbstractRIBSupport routesFromContainer(final Ipv4Routes container) { + return container.getIpv4Route(); + } } \ No newline at end of file -- 2.36.6