From b287c4273c9047e68201cb2f43cb4b102d15685e Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Wed, 11 Dec 2013 14:59:08 +0100 Subject: [PATCH] BUG-223: Support having multiple RIB instances Change-Id: Ie9b2786b13058b6ee622b6aed6a83f09556b0046 Signed-off-by: Robert Varga --- .../bgp/linkstate/LinkstateAdjRIBsIn.java | 51 ++++++++++--------- .../protocol/bgp/linkstate/RIBActivator.java | 5 +- .../src/main/yang/bgp-linkstate.yang | 2 +- .../src/main/yang/config-bgp-rib.yang | 2 +- ...eference.java => DefaultRibReference.java} | 6 +-- ...LocRibReference.java => RibReference.java} | 6 +-- bgp/rib-api/src/main/yang/bgp-rib.yang | 20 ++++++-- bgp/rib-impl-config/pom.xml | 4 ++ .../yang/bgp/rib/impl/RIBImplModule.java | 9 ++-- .../src/main/yang/bgp-rib-impl.yang | 6 +++ .../protocol/bgp/rib/impl/Ipv4AdjRIBsIn.java | 5 +- .../protocol/bgp/rib/impl/Ipv6AdjRIBsIn.java | 5 +- .../protocol/bgp/rib/impl/RIBActivator.java | 9 ++-- .../protocol/bgp/rib/impl/RIBImpl.java | 23 +++++---- .../protocol/bgp/rib/impl/RIBTables.java | 5 +- .../bgp/rib/spi/AbstractAdjRIBsIn.java | 7 +-- .../bgp/rib/spi/AdjRIBsInFactory.java | 3 +- .../AbstractReachabilityTopologyBuilder.java | 4 +- .../provider/AbstractTopologyBuilder.java | 9 ++-- .../Ipv4ReachabilityTopologyBuilder.java | 4 +- .../Ipv6ReachabilityTopologyBuilder.java | 4 +- .../provider/LinkstateTopologyBuilder.java | 30 +++++------ .../bgp/topology/provider/UriBuilder.java | 6 +-- .../integration/bgp/ParserToSalTest.java | 6 +-- 24 files changed, 133 insertions(+), 98 deletions(-) rename bgp/rib-api/src/main/java/org/opendaylight/protocol/bgp/rib/{DefaultLocRibReference.java => DefaultRibReference.java} (72%) rename bgp/rib-api/src/main/java/org/opendaylight/protocol/bgp/rib/{LocRibReference.java => RibReference.java} (77%) diff --git a/bgp/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/LinkstateAdjRIBsIn.java b/bgp/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/LinkstateAdjRIBsIn.java index 66308125a9..4e41e8b849 100644 --- a/bgp/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/LinkstateAdjRIBsIn.java +++ b/bgp/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/LinkstateAdjRIBsIn.java @@ -10,28 +10,29 @@ package org.opendaylight.protocol.bgp.linkstate; import java.util.Comparator; import org.opendaylight.controller.sal.binding.api.data.DataModificationTransaction; +import org.opendaylight.protocol.bgp.rib.RibReference; import org.opendaylight.protocol.bgp.rib.spi.AbstractAdjRIBsIn; import org.opendaylight.protocol.bgp.rib.spi.Peer; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.LinkstateDestination; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.PathAttributes1; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.bgp.rib.rib.loc.rib.tables.routes.linkstate.routes._case.LinkstateRoutes; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.bgp.rib.rib.loc.rib.tables.routes.linkstate.routes._case.linkstate.routes.LinkstateRoute; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.bgp.rib.rib.loc.rib.tables.routes.linkstate.routes._case.linkstate.routes.LinkstateRouteBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.bgp.rib.rib.loc.rib.tables.routes.linkstate.routes._case.linkstate.routes.LinkstateRouteKey; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.bgp.rib.rib.loc.rib.tables.routes.linkstate.routes._case.linkstate.routes.linkstate.route.Attributes1; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.bgp.rib.rib.loc.rib.tables.routes.linkstate.routes._case.linkstate.routes.linkstate.route.Attributes1Builder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.bgp.rib.rib.loc.rib.tables.routes.linkstate.routes._case.linkstate.routes.linkstate.route.ObjectType; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.bgp.rib.rib.loc.rib.tables.routes.linkstate.routes._case.linkstate.routes.linkstate.route.attributes.AttributeType; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.bgp.rib.rib.loc.rib.tables.routes.linkstate.routes._case.linkstate.routes.linkstate.route.object.type.LinkCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.bgp.rib.rib.loc.rib.tables.routes.linkstate.routes._case.linkstate.routes.linkstate.route.object.type.NodeCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.bgp.rib.rib.loc.rib.tables.routes.linkstate.routes._case.linkstate.routes.linkstate.route.object.type.PrefixCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.bgp.rib.rib.loc.rib.tables.routes.linkstate.routes._case.linkstate.routes.linkstate.route.object.type.link._case.LinkDescriptorsBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.bgp.rib.rib.loc.rib.tables.routes.linkstate.routes._case.linkstate.routes.linkstate.route.object.type.link._case.LocalNodeDescriptorsBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.bgp.rib.rib.loc.rib.tables.routes.linkstate.routes._case.linkstate.routes.linkstate.route.object.type.link._case.RemoteNodeDescriptorsBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.bgp.rib.rib.loc.rib.tables.routes.linkstate.routes._case.linkstate.routes.linkstate.route.object.type.node._case.NodeDescriptorsBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.bgp.rib.rib.loc.rib.tables.routes.linkstate.routes._case.linkstate.routes.linkstate.route.object.type.prefix._case.AdvertisingNodeDescriptorsBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.linkstate.destination.CLinkstateDestination; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.linkstate.destination.c.linkstate.destination.LocalNodeDescriptors; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.loc.rib.tables.routes.linkstate.routes._case.LinkstateRoutes; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.loc.rib.tables.routes.linkstate.routes._case.linkstate.routes.LinkstateRoute; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.loc.rib.tables.routes.linkstate.routes._case.linkstate.routes.LinkstateRouteBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.loc.rib.tables.routes.linkstate.routes._case.linkstate.routes.LinkstateRouteKey; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.loc.rib.tables.routes.linkstate.routes._case.linkstate.routes.linkstate.route.Attributes1; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.loc.rib.tables.routes.linkstate.routes._case.linkstate.routes.linkstate.route.Attributes1Builder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.loc.rib.tables.routes.linkstate.routes._case.linkstate.routes.linkstate.route.ObjectType; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.loc.rib.tables.routes.linkstate.routes._case.linkstate.routes.linkstate.route.attributes.AttributeType; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.loc.rib.tables.routes.linkstate.routes._case.linkstate.routes.linkstate.route.object.type.LinkCaseBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.loc.rib.tables.routes.linkstate.routes._case.linkstate.routes.linkstate.route.object.type.NodeCaseBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.loc.rib.tables.routes.linkstate.routes._case.linkstate.routes.linkstate.route.object.type.PrefixCaseBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.loc.rib.tables.routes.linkstate.routes._case.linkstate.routes.linkstate.route.object.type.link._case.LinkDescriptorsBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.loc.rib.tables.routes.linkstate.routes._case.linkstate.routes.linkstate.route.object.type.link._case.LocalNodeDescriptorsBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.loc.rib.tables.routes.linkstate.routes._case.linkstate.routes.linkstate.route.object.type.link._case.RemoteNodeDescriptorsBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.loc.rib.tables.routes.linkstate.routes._case.linkstate.routes.linkstate.route.object.type.node._case.NodeDescriptorsBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.loc.rib.tables.routes.linkstate.routes._case.linkstate.routes.linkstate.route.object.type.prefix._case.AdvertisingNodeDescriptorsBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.update.path.attributes.linkstate.path.attribute.LinkStateAttribute; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.update.path.attributes.linkstate.path.attribute.link.state.attribute.LinkAttributesCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.update.path.attributes.linkstate.path.attribute.link.state.attribute.NodeAttributesCase; @@ -52,7 +53,7 @@ import com.google.common.base.Preconditions; final class LinkstateAdjRIBsIn extends AbstractAdjRIBsIn { private abstract static class LinkstateRIBEntryData extends - RIBEntryData { + RIBEntryData { private final A lsattr; protected LinkstateRIBEntryData(final PathAttributes attributes, final A lsattr) { @@ -79,8 +80,8 @@ final class LinkstateAdjRIBsIn extends AbstractAdjRIBsIn comparator, final TablesKey key) { - super(trans, comparator, key); + LinkstateAdjRIBsIn(final DataModificationTransaction trans, final RibReference rib, final Comparator comparator, final TablesKey key) { + super(trans, rib, comparator, key); } @Override @@ -105,8 +106,8 @@ final class LinkstateAdjRIBsIn extends AbstractAdjRIBsIn startRIBExtensionProviderImpl(final RIBExtensionProviderContext context) { return Lists.newArrayList(context.registerAdjRIBsInFactory(LinkstateAddressFamily.class, LinkstateSubsequentAddressFamily.class, new AdjRIBsInFactory() { @Override - public AdjRIBsIn createAdjRIBsIn(final DataModificationTransaction trans, final Comparator comparator, final TablesKey key) { - return new LinkstateAdjRIBsIn(trans, comparator, key); + public AdjRIBsIn createAdjRIBsIn(final DataModificationTransaction trans, final RibReference rib, final Comparator comparator, final TablesKey key) { + return new LinkstateAdjRIBsIn(trans, rib, comparator, key); } })); } diff --git a/bgp/linkstate/src/main/yang/bgp-linkstate.yang b/bgp/linkstate/src/main/yang/bgp-linkstate.yang index 7b6803c7f5..600af4f520 100644 --- a/bgp/linkstate/src/main/yang/bgp-linkstate.yang +++ b/bgp/linkstate/src/main/yang/bgp-linkstate.yang @@ -566,7 +566,7 @@ module bgp-linkstate { } } - augment "/bgp-rib:loc-rib/bgp-rib:tables/bgp-rib:routes" { + augment "/bgp-rib:bgp-rib/bgp-rib:rib/bgp-rib:loc-rib/bgp-rib:tables/bgp-rib:routes" { case linkstate-routes-case { container linkstate-routes { list linkstate-route { diff --git a/bgp/rib-api-config/src/main/yang/config-bgp-rib.yang b/bgp/rib-api-config/src/main/yang/config-bgp-rib.yang index 41d5de1611..f0d7b17e9b 100644 --- a/bgp/rib-api-config/src/main/yang/config-bgp-rib.yang +++ b/bgp/rib-api-config/src/main/yang/config-bgp-rib.yang @@ -32,7 +32,7 @@ module config-bgp-rib { registration of listeners."; base "config:service-type"; - config:java-class "org.opendaylight.protocol.bgp.rib.LocRibReference"; + config:java-class "org.opendaylight.protocol.bgp.rib.RibReference"; } } diff --git a/bgp/rib-api/src/main/java/org/opendaylight/protocol/bgp/rib/DefaultLocRibReference.java b/bgp/rib-api/src/main/java/org/opendaylight/protocol/bgp/rib/DefaultRibReference.java similarity index 72% rename from bgp/rib-api/src/main/java/org/opendaylight/protocol/bgp/rib/DefaultLocRibReference.java rename to bgp/rib-api/src/main/java/org/opendaylight/protocol/bgp/rib/DefaultRibReference.java index 4753e42b70..402e825892 100644 --- a/bgp/rib-api/src/main/java/org/opendaylight/protocol/bgp/rib/DefaultLocRibReference.java +++ b/bgp/rib-api/src/main/java/org/opendaylight/protocol/bgp/rib/DefaultRibReference.java @@ -8,14 +8,14 @@ package org.opendaylight.protocol.bgp.rib; import org.opendaylight.protocol.concepts.DefaultInstanceReference; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.LocRib; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.bgp.rib.Rib; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; /** * */ -public class DefaultLocRibReference extends DefaultInstanceReference implements LocRibReference { - public DefaultLocRibReference(final InstanceIdentifier instanceIdentifier) { +public class DefaultRibReference extends DefaultInstanceReference implements RibReference { + public DefaultRibReference(final InstanceIdentifier instanceIdentifier) { super(instanceIdentifier); } } diff --git a/bgp/rib-api/src/main/java/org/opendaylight/protocol/bgp/rib/LocRibReference.java b/bgp/rib-api/src/main/java/org/opendaylight/protocol/bgp/rib/RibReference.java similarity index 77% rename from bgp/rib-api/src/main/java/org/opendaylight/protocol/bgp/rib/LocRibReference.java rename to bgp/rib-api/src/main/java/org/opendaylight/protocol/bgp/rib/RibReference.java index 0ecad882f1..4dbb997ae7 100644 --- a/bgp/rib-api/src/main/java/org/opendaylight/protocol/bgp/rib/LocRibReference.java +++ b/bgp/rib-api/src/main/java/org/opendaylight/protocol/bgp/rib/RibReference.java @@ -8,11 +8,11 @@ package org.opendaylight.protocol.bgp.rib; import org.opendaylight.protocol.concepts.InstanceReference; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.LocRib; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.bgp.rib.Rib; /** - * A reference to a LocRib instance. + * A reference to a Rib instance. */ -public interface LocRibReference extends InstanceReference { +public interface RibReference extends InstanceReference { } diff --git a/bgp/rib-api/src/main/yang/bgp-rib.yang b/bgp/rib-api/src/main/yang/bgp-rib.yang index b301f560e9..7df5312e92 100644 --- a/bgp/rib-api/src/main/yang/bgp-rib.yang +++ b/bgp/rib-api/src/main/yang/bgp-rib.yang @@ -27,6 +27,10 @@ module bgp-rib { reference "RFC4271"; } + typedef rib-id { + type inet:uri; + } + grouping route { container attributes { uses bgp-msg:path-attributes; @@ -76,8 +80,18 @@ module bgp-rib { } } - container loc-rib { - config false; - uses rib; + container bgp-rib { + list rib { + config false; + + leaf id { + type rib-id; + } + key id; + + container loc-rib { + uses rib; + } + } } } diff --git a/bgp/rib-impl-config/pom.xml b/bgp/rib-impl-config/pom.xml index c8cccdef97..510e94989f 100644 --- a/bgp/rib-impl-config/pom.xml +++ b/bgp/rib-impl-config/pom.xml @@ -22,6 +22,10 @@ junit junit + + ${project.groupId} + bgp-rib-api + ${project.groupId} bgp-rib-api-config diff --git a/bgp/rib-impl-config/src/main/java/org/opendaylight/controller/config/yang/bgp/rib/impl/RIBImplModule.java b/bgp/rib-impl-config/src/main/java/org/opendaylight/controller/config/yang/bgp/rib/impl/RIBImplModule.java index e9ba0e7dbb..9120af3449 100644 --- a/bgp/rib-impl-config/src/main/java/org/opendaylight/controller/config/yang/bgp/rib/impl/RIBImplModule.java +++ b/bgp/rib-impl-config/src/main/java/org/opendaylight/controller/config/yang/bgp/rib/impl/RIBImplModule.java @@ -19,8 +19,7 @@ import org.opendaylight.protocol.bgp.rib.spi.RIBExtensionConsumerContext; import org.opendaylight.protocol.concepts.ListenerRegistration; import org.opendaylight.protocol.framework.ReconnectStrategy; import org.opendaylight.protocol.framework.ReconnectStrategyFactory; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.LocRib; -import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.RibId; /** * @@ -51,7 +50,7 @@ org.opendaylight.controller.config.yang.bgp.rib.impl.AbstractRIBImplModule { @Override public java.lang.AutoCloseable createInstance() { - RibImplCloseable rib = new RibImplCloseable(getExtensionsDependency(), getDataProviderDependency()); + RibImplCloseable rib = new RibImplCloseable(getRibId(), getExtensionsDependency(), getDataProviderDependency()); BGP bgp = getBgpDependency(); final BGPPeer peer = new BGPPeer(rib, "peer-" + bgp.toString()); @@ -70,8 +69,8 @@ org.opendaylight.controller.config.yang.bgp.rib.impl.AbstractRIBImplModule { private static final class RibImplCloseable extends RIBImpl implements AutoCloseable { private ListenerRegistration reg; - private RibImplCloseable(final RIBExtensionConsumerContext extensions, final DataProviderService dps) { - super(InstanceIdentifier.builder(LocRib.class).toInstance(), extensions, dps); + private RibImplCloseable(final RibId ribId, final RIBExtensionConsumerContext extensions, final DataProviderService dps) { + super(ribId, extensions, dps); } @Override diff --git a/bgp/rib-impl-config/src/main/yang/bgp-rib-impl.yang b/bgp/rib-impl-config/src/main/yang/bgp-rib-impl.yang index 025ce10670..34e4d622af 100644 --- a/bgp/rib-impl-config/src/main/yang/bgp-rib-impl.yang +++ b/bgp/rib-impl-config/src/main/yang/bgp-rib-impl.yang @@ -5,6 +5,7 @@ module bgp-rib-impl { prefix "bgprib-impl"; import bgp-listener { prefix bgpl; revision-date 2013-04-09; } + import bgp-rib { prefix rib; revision-date 2013-09-25; } import config-bgp-rib { prefix bgprib; revision-date 2013-07-01; } import config-bgp-parser-spi { prefix bgpspi; revision-date 2013-11-15; } import config-bgp-rib-spi { prefix ribspi; revision-date 2013-11-15; } @@ -233,6 +234,11 @@ module bgp-rib-impl { } } } + + leaf rib-id { + type rib:rib-id; + mandatory true; + } } } } diff --git a/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/Ipv4AdjRIBsIn.java b/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/Ipv4AdjRIBsIn.java index 2a5d4774e4..03d93298fb 100644 --- a/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/Ipv4AdjRIBsIn.java +++ b/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/Ipv4AdjRIBsIn.java @@ -10,6 +10,7 @@ package org.opendaylight.protocol.bgp.rib.impl; import java.util.Comparator; import org.opendaylight.controller.sal.binding.api.data.DataModificationTransaction; +import org.opendaylight.protocol.bgp.rib.RibReference; import org.opendaylight.protocol.bgp.rib.spi.AbstractAdjRIBsIn; import org.opendaylight.protocol.bgp.rib.spi.Peer; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Prefix; @@ -27,8 +28,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib. import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; final class Ipv4AdjRIBsIn extends AbstractAdjRIBsIn { - Ipv4AdjRIBsIn(final DataModificationTransaction trans, final Comparator comparator, final TablesKey key) { - super(trans, comparator, key); + Ipv4AdjRIBsIn(final DataModificationTransaction trans, final RibReference rib, final Comparator comparator, final TablesKey key) { + super(trans, rib, comparator, key); } @Override diff --git a/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/Ipv6AdjRIBsIn.java b/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/Ipv6AdjRIBsIn.java index 6626cd68c6..5bcf66ae75 100644 --- a/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/Ipv6AdjRIBsIn.java +++ b/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/Ipv6AdjRIBsIn.java @@ -10,6 +10,7 @@ package org.opendaylight.protocol.bgp.rib.impl; import java.util.Comparator; import org.opendaylight.controller.sal.binding.api.data.DataModificationTransaction; +import org.opendaylight.protocol.bgp.rib.RibReference; import org.opendaylight.protocol.bgp.rib.spi.AbstractAdjRIBsIn; import org.opendaylight.protocol.bgp.rib.spi.Peer; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv6Prefix; @@ -27,8 +28,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib. import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; final class Ipv6AdjRIBsIn extends AbstractAdjRIBsIn { - Ipv6AdjRIBsIn(final DataModificationTransaction trans, final Comparator comparator, final TablesKey key) { - super(trans, comparator, key); + Ipv6AdjRIBsIn(final DataModificationTransaction trans, final RibReference rib, final Comparator comparator, final TablesKey key) { + super(trans, rib, comparator, key); } @Override diff --git a/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/RIBActivator.java b/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/RIBActivator.java index fe5c83a9eb..b362cd4744 100644 --- a/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/RIBActivator.java +++ b/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/RIBActivator.java @@ -11,6 +11,7 @@ import java.util.Comparator; import java.util.List; import org.opendaylight.controller.sal.binding.api.data.DataModificationTransaction; +import org.opendaylight.protocol.bgp.rib.RibReference; import org.opendaylight.protocol.bgp.rib.spi.AbstractRIBExtensionProviderActivator; import org.opendaylight.protocol.bgp.rib.spi.AdjRIBsIn; import org.opendaylight.protocol.bgp.rib.spi.AdjRIBsInFactory; @@ -30,14 +31,14 @@ public final class RIBActivator extends AbstractRIBExtensionProviderActivator { return Lists.newArrayList( context.registerAdjRIBsInFactory(Ipv4AddressFamily.class, UnicastSubsequentAddressFamily.class, new AdjRIBsInFactory() { @Override - public AdjRIBsIn createAdjRIBsIn(final DataModificationTransaction trans, final Comparator comparator, final TablesKey key) { - return new Ipv4AdjRIBsIn(trans, comparator, key); + public AdjRIBsIn createAdjRIBsIn(final DataModificationTransaction trans, final RibReference rib, final Comparator comparator, final TablesKey key) { + return new Ipv4AdjRIBsIn(trans, rib, comparator, key); } }), context.registerAdjRIBsInFactory(Ipv6AddressFamily.class, UnicastSubsequentAddressFamily.class, new AdjRIBsInFactory() { @Override - public AdjRIBsIn createAdjRIBsIn(final DataModificationTransaction trans, final Comparator comparator, final TablesKey key) { - return new Ipv6AdjRIBsIn(trans, comparator, key); + public AdjRIBsIn createAdjRIBsIn(final DataModificationTransaction trans, final RibReference rib, final Comparator comparator, final TablesKey key) { + return new Ipv6AdjRIBsIn(trans, rib, comparator, key); } })); } diff --git a/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/RIBImpl.java b/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/RIBImpl.java index 90cc57e163..9f6ff1fea8 100644 --- a/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/RIBImpl.java +++ b/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/RIBImpl.java @@ -12,7 +12,7 @@ import javax.annotation.concurrent.ThreadSafe; import org.opendaylight.controller.md.sal.common.api.TransactionStatus; import org.opendaylight.controller.sal.binding.api.data.DataModificationTransaction; import org.opendaylight.controller.sal.binding.api.data.DataProviderService; -import org.opendaylight.protocol.bgp.rib.DefaultLocRibReference; +import org.opendaylight.protocol.bgp.rib.DefaultRibReference; import org.opendaylight.protocol.bgp.rib.spi.AdjRIBsIn; import org.opendaylight.protocol.bgp.rib.spi.RIBExtensionConsumerContext; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.Update; @@ -30,7 +30,10 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.mult import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130919.update.path.attributes.MpUnreachNlriBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130919.update.path.attributes.mp.reach.nlri.AdvertizedRoutesBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130919.update.path.attributes.mp.unreach.nlri.WithdrawnRoutesBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.LocRib; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.BgpRib; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.RibId; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.bgp.rib.Rib; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.bgp.rib.RibKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.rib.TablesKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.Ipv4AddressFamily; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.UnicastSubsequentAddressFamily; @@ -47,14 +50,14 @@ import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.JdkFutureAdapters; @ThreadSafe -public class RIBImpl extends DefaultLocRibReference { +public class RIBImpl extends DefaultRibReference { private static final Logger LOG = LoggerFactory.getLogger(RIBImpl.class); private static final Update EOR = new UpdateBuilder().build(); private final DataProviderService dps; private final RIBTables tables; - public RIBImpl(final InstanceIdentifier instanceIdentifier, final RIBExtensionConsumerContext extensions, final DataProviderService dps) { - super(instanceIdentifier); + public RIBImpl(final RibId ribId, final RIBExtensionConsumerContext extensions, final DataProviderService dps) { + super(InstanceIdentifier.builder(BgpRib.class).child(Rib.class, new RibKey(ribId)).toInstance()); this.dps = Preconditions.checkNotNull(dps); this.tables = new RIBTables(BGPObjectComparator.INSTANCE, extensions); } @@ -63,7 +66,7 @@ public class RIBImpl extends DefaultLocRibReference { final DataModificationTransaction trans = this.dps.beginTransaction(); if (EOR.equals(message)) { - final AdjRIBsIn ari = this.tables.getOrCreate(trans, + final AdjRIBsIn ari = this.tables.getOrCreate(trans, this, new TablesKey(Ipv4AddressFamily.class, UnicastSubsequentAddressFamily.class)); if (ari != null) { ari.markUptodate(trans, peer); @@ -75,7 +78,7 @@ public class RIBImpl extends DefaultLocRibReference { final WithdrawnRoutes wr = message.getWithdrawnRoutes(); if (wr != null) { - final AdjRIBsIn ari = this.tables.getOrCreate(trans, + final AdjRIBsIn ari = this.tables.getOrCreate(trans, this, new TablesKey(Ipv4AddressFamily.class, UnicastSubsequentAddressFamily.class)); if (ari != null) { ari.removeRoutes( @@ -95,7 +98,7 @@ public class RIBImpl extends DefaultLocRibReference { if (mpu != null) { final MpUnreachNlri nlri = mpu.getMpUnreachNlri(); - final AdjRIBsIn ari = this.tables.getOrCreate(trans, new TablesKey(nlri.getAfi(), nlri.getSafi())); + final AdjRIBsIn ari = this.tables.getOrCreate(trans, this, new TablesKey(nlri.getAfi(), nlri.getSafi())); if (ari != null) { ari.removeRoutes(trans, peer, nlri); } else { @@ -105,7 +108,7 @@ public class RIBImpl extends DefaultLocRibReference { final Nlri ar = message.getNlri(); if (ar != null) { - final AdjRIBsIn ari = this.tables.getOrCreate(trans, + final AdjRIBsIn ari = this.tables.getOrCreate(trans, this, new TablesKey(Ipv4AddressFamily.class, UnicastSubsequentAddressFamily.class)); if (ari != null) { ari.addRoutes( @@ -126,7 +129,7 @@ public class RIBImpl extends DefaultLocRibReference { if (mpr != null) { final MpReachNlri nlri = mpr.getMpReachNlri(); - final AdjRIBsIn ari = this.tables.getOrCreate(trans, new TablesKey(nlri.getAfi(), nlri.getSafi())); + final AdjRIBsIn ari = this.tables.getOrCreate(trans, this, new TablesKey(nlri.getAfi(), nlri.getSafi())); if (ari != null) { ari.addRoutes(trans, peer, nlri, attrs); if (message.equals(ari.endOfRib())) { diff --git a/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/RIBTables.java b/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/RIBTables.java index f214ee905b..684a7648e7 100644 --- a/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/RIBTables.java +++ b/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/RIBTables.java @@ -5,6 +5,7 @@ import java.util.HashMap; import java.util.Map; import org.opendaylight.controller.sal.binding.api.data.DataModificationTransaction; +import org.opendaylight.protocol.bgp.rib.RibReference; import org.opendaylight.protocol.bgp.rib.spi.AdjRIBsIn; import org.opendaylight.protocol.bgp.rib.spi.AdjRIBsInFactory; import org.opendaylight.protocol.bgp.rib.spi.RIBExtensionConsumerContext; @@ -27,7 +28,7 @@ final class RIBTables { return tables.get(key); } - public synchronized AdjRIBsIn getOrCreate(final DataModificationTransaction trans, final TablesKey key) { + public synchronized AdjRIBsIn getOrCreate(final DataModificationTransaction trans, final RibReference rib, final TablesKey key) { if (tables.containsKey(key)) { return tables.get(key); } @@ -37,7 +38,7 @@ final class RIBTables { return null; } - final AdjRIBsIn table = Preconditions.checkNotNull(f.createAdjRIBsIn(trans, comparator, key)); + final AdjRIBsIn table = Preconditions.checkNotNull(f.createAdjRIBsIn(trans, rib, comparator, key)); tables.put(key, table); return table; } diff --git a/bgp/rib-spi/src/main/java/org/opendaylight/protocol/bgp/rib/spi/AbstractAdjRIBsIn.java b/bgp/rib-spi/src/main/java/org/opendaylight/protocol/bgp/rib/spi/AbstractAdjRIBsIn.java index d376bf2426..ea44284dd2 100644 --- a/bgp/rib-spi/src/main/java/org/opendaylight/protocol/bgp/rib/spi/AbstractAdjRIBsIn.java +++ b/bgp/rib-spi/src/main/java/org/opendaylight/protocol/bgp/rib/spi/AbstractAdjRIBsIn.java @@ -16,6 +16,7 @@ import javax.annotation.concurrent.GuardedBy; import javax.annotation.concurrent.ThreadSafe; import org.opendaylight.controller.sal.binding.api.data.DataModificationTransaction; +import org.opendaylight.protocol.bgp.rib.RibReference; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.PathAttributes; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.Update; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.UpdateBuilder; @@ -23,7 +24,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.mess import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130919.PathAttributes1; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130919.PathAttributes1Builder; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130919.update.path.attributes.MpReachNlriBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.LocRib; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.bgp.rib.rib.LocRib; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.rib.Tables; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.rib.TablesBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.rib.TablesKey; @@ -132,9 +133,9 @@ public abstract class AbstractAdjRIBsIn implements AdjR @GuardedBy("this") private final Map peers = new HashMap<>(); - protected AbstractAdjRIBsIn(final DataModificationTransaction trans, final Comparator comparator, final TablesKey key) { + protected AbstractAdjRIBsIn(final DataModificationTransaction trans, final RibReference rib, final Comparator comparator, final TablesKey key) { this.comparator = Preconditions.checkNotNull(comparator); - this.basePath = InstanceIdentifier.builder(LocRib.class).child(Tables.class, key).toInstance(); + this.basePath = InstanceIdentifier.builder(rib.getInstanceIdentifier()).child(LocRib.class).child(Tables.class, key).toInstance(); this.eor = new UpdateBuilder().setPathAttributes( new PathAttributesBuilder().addAugmentation( diff --git a/bgp/rib-spi/src/main/java/org/opendaylight/protocol/bgp/rib/spi/AdjRIBsInFactory.java b/bgp/rib-spi/src/main/java/org/opendaylight/protocol/bgp/rib/spi/AdjRIBsInFactory.java index cc49cabe96..f89c3b148c 100644 --- a/bgp/rib-spi/src/main/java/org/opendaylight/protocol/bgp/rib/spi/AdjRIBsInFactory.java +++ b/bgp/rib-spi/src/main/java/org/opendaylight/protocol/bgp/rib/spi/AdjRIBsInFactory.java @@ -10,9 +10,10 @@ package org.opendaylight.protocol.bgp.rib.spi; import java.util.Comparator; import org.opendaylight.controller.sal.binding.api.data.DataModificationTransaction; +import org.opendaylight.protocol.bgp.rib.RibReference; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.PathAttributes; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.rib.TablesKey; public interface AdjRIBsInFactory { - AdjRIBsIn createAdjRIBsIn(DataModificationTransaction trans, Comparator comparator, TablesKey key); + AdjRIBsIn createAdjRIBsIn(DataModificationTransaction trans, final RibReference rib, Comparator comparator, TablesKey key); } diff --git a/bgp/topology-provider/src/main/java/org/opendaylight/bgpcep/bgp/topology/provider/AbstractReachabilityTopologyBuilder.java b/bgp/topology-provider/src/main/java/org/opendaylight/bgpcep/bgp/topology/provider/AbstractReachabilityTopologyBuilder.java index 2a3b7da334..b714c29a23 100644 --- a/bgp/topology-provider/src/main/java/org/opendaylight/bgpcep/bgp/topology/provider/AbstractReachabilityTopologyBuilder.java +++ b/bgp/topology-provider/src/main/java/org/opendaylight/bgpcep/bgp/topology/provider/AbstractReachabilityTopologyBuilder.java @@ -11,7 +11,7 @@ import java.util.ArrayList; import org.opendaylight.controller.md.sal.common.api.data.DataModification; import org.opendaylight.controller.sal.binding.api.data.DataProviderService; -import org.opendaylight.protocol.bgp.rib.LocRibReference; +import org.opendaylight.protocol.bgp.rib.RibReference; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpPrefix; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.Route; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.route.Attributes; @@ -42,7 +42,7 @@ import org.slf4j.LoggerFactory; abstract class AbstractReachabilityTopologyBuilder extends AbstractTopologyBuilder { private static final Logger LOG = LoggerFactory.getLogger(AbstractReachabilityTopologyBuilder.class); - protected AbstractReachabilityTopologyBuilder(final DataProviderService dataProvider, final LocRibReference locRibReference, final TopologyId topologyId, + protected AbstractReachabilityTopologyBuilder(final DataProviderService dataProvider, final RibReference locRibReference, final TopologyId topologyId, final Class idClass) { super(dataProvider, locRibReference, topologyId, new TopologyTypesBuilder().build(), idClass); } diff --git a/bgp/topology-provider/src/main/java/org/opendaylight/bgpcep/bgp/topology/provider/AbstractTopologyBuilder.java b/bgp/topology-provider/src/main/java/org/opendaylight/bgpcep/bgp/topology/provider/AbstractTopologyBuilder.java index a01f583b8f..daa26b0bb2 100644 --- a/bgp/topology-provider/src/main/java/org/opendaylight/bgpcep/bgp/topology/provider/AbstractTopologyBuilder.java +++ b/bgp/topology-provider/src/main/java/org/opendaylight/bgpcep/bgp/topology/provider/AbstractTopologyBuilder.java @@ -19,8 +19,9 @@ import org.opendaylight.controller.md.sal.common.api.data.DataModification; import org.opendaylight.controller.sal.binding.api.data.DataChangeListener; import org.opendaylight.controller.sal.binding.api.data.DataModificationTransaction; import org.opendaylight.controller.sal.binding.api.data.DataProviderService; -import org.opendaylight.protocol.bgp.rib.LocRibReference; +import org.opendaylight.protocol.bgp.rib.RibReference; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.Route; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.bgp.rib.rib.LocRib; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.rib.Tables; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.rib.TablesKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.AddressFamily; @@ -45,12 +46,12 @@ import com.google.common.util.concurrent.JdkFutureAdapters; public abstract class AbstractTopologyBuilder implements AutoCloseable, DataChangeListener, LocRIBListener, TopologyReference { private static final Logger LOG = LoggerFactory.getLogger(AbstractTopologyBuilder.class); - private final LocRibReference locRibReference; + private final RibReference locRibReference; private final InstanceIdentifier topology; private final DataProviderService dataProvider; private final Class idClass; - protected AbstractTopologyBuilder(final DataProviderService dataProvider, final LocRibReference locRibReference, final TopologyId topologyId, final TopologyTypes types, final Class idClass) { + protected AbstractTopologyBuilder(final DataProviderService dataProvider, final RibReference locRibReference, final TopologyId topologyId, final TopologyTypes types, final Class idClass) { this.dataProvider = Preconditions.checkNotNull(dataProvider); this.locRibReference = Preconditions.checkNotNull(locRibReference); this.idClass = Preconditions.checkNotNull(idClass); @@ -79,7 +80,7 @@ TopologyReference { } public final InstanceIdentifier tableInstanceIdentifier(final Class afi, final Class safi) { - return InstanceIdentifier.builder(locRibReference.getInstanceIdentifier()).child(Tables.class, new TablesKey(afi, safi)).toInstance(); + return InstanceIdentifier.builder(locRibReference.getInstanceIdentifier()).child(LocRib.class).child(Tables.class, new TablesKey(afi, safi)).toInstance(); } protected abstract void createObject(DataModification, DataObject> trans, InstanceIdentifier id, T value); diff --git a/bgp/topology-provider/src/main/java/org/opendaylight/bgpcep/bgp/topology/provider/Ipv4ReachabilityTopologyBuilder.java b/bgp/topology-provider/src/main/java/org/opendaylight/bgpcep/bgp/topology/provider/Ipv4ReachabilityTopologyBuilder.java index 003a045453..ebbd6f2fda 100644 --- a/bgp/topology-provider/src/main/java/org/opendaylight/bgpcep/bgp/topology/provider/Ipv4ReachabilityTopologyBuilder.java +++ b/bgp/topology-provider/src/main/java/org/opendaylight/bgpcep/bgp/topology/provider/Ipv4ReachabilityTopologyBuilder.java @@ -8,14 +8,14 @@ package org.opendaylight.bgpcep.bgp.topology.provider; import org.opendaylight.controller.sal.binding.api.data.DataProviderService; -import org.opendaylight.protocol.bgp.rib.LocRibReference; +import org.opendaylight.protocol.bgp.rib.RibReference; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpPrefix; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.rib.tables.routes.ipv4.routes._case.ipv4.routes.Ipv4Route; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.route.Attributes; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TopologyId; public final class Ipv4ReachabilityTopologyBuilder extends AbstractReachabilityTopologyBuilder { - public Ipv4ReachabilityTopologyBuilder(final DataProviderService dataProvider, final LocRibReference locRibReference, final TopologyId topologyId) { + public Ipv4ReachabilityTopologyBuilder(final DataProviderService dataProvider, final RibReference locRibReference, final TopologyId topologyId) { super(dataProvider, locRibReference, topologyId, Ipv4Route.class); } diff --git a/bgp/topology-provider/src/main/java/org/opendaylight/bgpcep/bgp/topology/provider/Ipv6ReachabilityTopologyBuilder.java b/bgp/topology-provider/src/main/java/org/opendaylight/bgpcep/bgp/topology/provider/Ipv6ReachabilityTopologyBuilder.java index ac4149db84..9e471f2401 100644 --- a/bgp/topology-provider/src/main/java/org/opendaylight/bgpcep/bgp/topology/provider/Ipv6ReachabilityTopologyBuilder.java +++ b/bgp/topology-provider/src/main/java/org/opendaylight/bgpcep/bgp/topology/provider/Ipv6ReachabilityTopologyBuilder.java @@ -8,14 +8,14 @@ package org.opendaylight.bgpcep.bgp.topology.provider; import org.opendaylight.controller.sal.binding.api.data.DataProviderService; -import org.opendaylight.protocol.bgp.rib.LocRibReference; +import org.opendaylight.protocol.bgp.rib.RibReference; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpPrefix; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.rib.tables.routes.ipv6.routes._case.ipv6.routes.Ipv6Route; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.route.Attributes; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TopologyId; public final class Ipv6ReachabilityTopologyBuilder extends AbstractReachabilityTopologyBuilder { - public Ipv6ReachabilityTopologyBuilder(final DataProviderService dataProvider, final LocRibReference locRibReference, final TopologyId topologyId) { + public Ipv6ReachabilityTopologyBuilder(final DataProviderService dataProvider, final RibReference locRibReference, final TopologyId topologyId) { super(dataProvider, locRibReference, topologyId, Ipv6Route.class); } diff --git a/bgp/topology-provider/src/main/java/org/opendaylight/bgpcep/bgp/topology/provider/LinkstateTopologyBuilder.java b/bgp/topology-provider/src/main/java/org/opendaylight/bgpcep/bgp/topology/provider/LinkstateTopologyBuilder.java index ac40e9e704..adb8b9e81f 100644 --- a/bgp/topology-provider/src/main/java/org/opendaylight/bgpcep/bgp/topology/provider/LinkstateTopologyBuilder.java +++ b/bgp/topology-provider/src/main/java/org/opendaylight/bgpcep/bgp/topology/provider/LinkstateTopologyBuilder.java @@ -14,23 +14,23 @@ import java.util.List; import org.opendaylight.controller.md.sal.common.api.data.DataModification; import org.opendaylight.controller.sal.binding.api.data.DataProviderService; -import org.opendaylight.protocol.bgp.rib.LocRibReference; +import org.opendaylight.protocol.bgp.rib.RibReference; import org.opendaylight.protocol.util.ByteArray; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.Ipv4InterfaceIdentifier; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.Ipv6InterfaceIdentifier; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.NodeIdentifier; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.TopologyIdentifier; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.loc.rib.tables.routes.linkstate.routes._case.linkstate.routes.LinkstateRoute; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.loc.rib.tables.routes.linkstate.routes._case.linkstate.routes.linkstate.route.Attributes1; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.loc.rib.tables.routes.linkstate.routes._case.linkstate.routes.linkstate.route.ObjectType; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.loc.rib.tables.routes.linkstate.routes._case.linkstate.routes.linkstate.route.attributes.attribute.type.link._case.LinkAttributes; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.loc.rib.tables.routes.linkstate.routes._case.linkstate.routes.linkstate.route.attributes.attribute.type.node._case.NodeAttributes; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.loc.rib.tables.routes.linkstate.routes._case.linkstate.routes.linkstate.route.attributes.attribute.type.prefix._case.PrefixAttributes; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.loc.rib.tables.routes.linkstate.routes._case.linkstate.routes.linkstate.route.object.type.LinkCase; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.loc.rib.tables.routes.linkstate.routes._case.linkstate.routes.linkstate.route.object.type.NodeCase; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.loc.rib.tables.routes.linkstate.routes._case.linkstate.routes.linkstate.route.object.type.PrefixCase; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.loc.rib.tables.routes.linkstate.routes._case.linkstate.routes.linkstate.route.object.type.link._case.LinkDescriptors; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.bgp.rib.rib.loc.rib.tables.routes.linkstate.routes._case.linkstate.routes.LinkstateRoute; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.bgp.rib.rib.loc.rib.tables.routes.linkstate.routes._case.linkstate.routes.linkstate.route.Attributes1; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.bgp.rib.rib.loc.rib.tables.routes.linkstate.routes._case.linkstate.routes.linkstate.route.ObjectType; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.bgp.rib.rib.loc.rib.tables.routes.linkstate.routes._case.linkstate.routes.linkstate.route.attributes.attribute.type.link._case.LinkAttributes; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.bgp.rib.rib.loc.rib.tables.routes.linkstate.routes._case.linkstate.routes.linkstate.route.attributes.attribute.type.node._case.NodeAttributes; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.bgp.rib.rib.loc.rib.tables.routes.linkstate.routes._case.linkstate.routes.linkstate.route.attributes.attribute.type.prefix._case.PrefixAttributes; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.bgp.rib.rib.loc.rib.tables.routes.linkstate.routes._case.linkstate.routes.linkstate.route.object.type.LinkCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.bgp.rib.rib.loc.rib.tables.routes.linkstate.routes._case.linkstate.routes.linkstate.route.object.type.NodeCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.bgp.rib.rib.loc.rib.tables.routes.linkstate.routes._case.linkstate.routes.linkstate.route.object.type.PrefixCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.bgp.rib.rib.loc.rib.tables.routes.linkstate.routes._case.linkstate.routes.linkstate.route.object.type.link._case.LinkDescriptors; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.node.identifier.CRouterIdentifier; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.node.identifier.c.router.identifier.isis.node._case.IsisNode; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.node.identifier.c.router.identifier.isis.pseudonode._case.IsisPseudonode; @@ -91,7 +91,7 @@ import com.google.common.primitives.UnsignedInteger; public final class LinkstateTopologyBuilder extends AbstractTopologyBuilder { private static final Logger LOG = LoggerFactory.getLogger(LinkstateTopologyBuilder.class); - public LinkstateTopologyBuilder(final DataProviderService dataProvider, final LocRibReference locRibReference, final TopologyId topologyId) { + public LinkstateTopologyBuilder(final DataProviderService dataProvider, final RibReference locRibReference, final TopologyId topologyId) { super(dataProvider, locRibReference, topologyId, new TopologyTypesBuilder().addAugmentation(TopologyTypes1.class, new TopologyTypes1Builder().build()).build(), LinkstateRoute.class); } @@ -254,7 +254,7 @@ public final class LinkstateTopologyBuilder extends AbstractTopologyBuilder, DataObject> trans, final UriBuilder base, final LinkstateRoute value, final LinkCase l, final Attributes attributes) { final LinkAttributes la = - ((org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.loc.rib.tables.routes.linkstate.routes._case.linkstate.routes.linkstate.route.attributes.attribute.type.LinkCase) attributes.getAugmentation(Attributes1.class).getAttributeType()).getLinkAttributes(); + ((org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.bgp.rib.rib.loc.rib.tables.routes.linkstate.routes._case.linkstate.routes.linkstate.route.attributes.attribute.type.LinkCase) attributes.getAugmentation(Attributes1.class).getAttributeType()).getLinkAttributes(); final IgpLinkAttributesBuilder ilab = new IgpLinkAttributesBuilder(); ilab.setMetric(la.getMetric().getValue()); @@ -354,7 +354,7 @@ public final class LinkstateTopologyBuilder extends AbstractTopologyBuilder, DataObject> trans, final UriBuilder base, final LinkstateRoute value, final NodeCase n, final Attributes attributes) { final NodeAttributes na = - ((org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.loc.rib.tables.routes.linkstate.routes._case.linkstate.routes.linkstate.route.attributes.attribute.type.NodeCase) attributes.getAugmentation(Attributes1.class).getAttributeType()).getNodeAttributes(); + ((org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.bgp.rib.rib.loc.rib.tables.routes.linkstate.routes._case.linkstate.routes.linkstate.route.attributes.attribute.type.NodeCase) attributes.getAugmentation(Attributes1.class).getAttributeType()).getNodeAttributes(); final List ids = new ArrayList<>(); if (na.getIpv4RouterId() != null) { @@ -409,7 +409,7 @@ public final class LinkstateTopologyBuilder extends AbstractTopologyBuilder, DataObject> trans, final UriBuilder base, final LinkstateRoute value, final PrefixCase p, final Attributes attributes) { final PrefixAttributes pa = - ((org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.loc.rib.tables.routes.linkstate.routes._case.linkstate.routes.linkstate.route.attributes.attribute.type.PrefixCase) attributes.getAugmentation(Attributes1.class).getAttributeType()).getPrefixAttributes(); + ((org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.bgp.rib.rib.loc.rib.tables.routes.linkstate.routes._case.linkstate.routes.linkstate.route.attributes.attribute.type.PrefixCase) attributes.getAugmentation(Attributes1.class).getAttributeType()).getPrefixAttributes(); final PrefixBuilder pb = new PrefixBuilder(); pb.setPrefix(p.getIpReachabilityInformation()); diff --git a/bgp/topology-provider/src/main/java/org/opendaylight/bgpcep/bgp/topology/provider/UriBuilder.java b/bgp/topology-provider/src/main/java/org/opendaylight/bgpcep/bgp/topology/provider/UriBuilder.java index 49e1efc625..39dd65b531 100644 --- a/bgp/topology-provider/src/main/java/org/opendaylight/bgpcep/bgp/topology/provider/UriBuilder.java +++ b/bgp/topology-provider/src/main/java/org/opendaylight/bgpcep/bgp/topology/provider/UriBuilder.java @@ -8,9 +8,9 @@ package org.opendaylight.bgpcep.bgp.topology.provider; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.NodeIdentifier; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.loc.rib.tables.routes.linkstate.routes._case.linkstate.routes.LinkstateRoute; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.loc.rib.tables.routes.linkstate.routes._case.linkstate.routes.linkstate.route.object.type.LinkCase; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.loc.rib.tables.routes.linkstate.routes._case.linkstate.routes.linkstate.route.object.type.link._case.LinkDescriptors; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.bgp.rib.rib.loc.rib.tables.routes.linkstate.routes._case.linkstate.routes.LinkstateRoute; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.bgp.rib.rib.loc.rib.tables.routes.linkstate.routes._case.linkstate.routes.linkstate.route.object.type.LinkCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.bgp.rib.rib.loc.rib.tables.routes.linkstate.routes._case.linkstate.routes.linkstate.route.object.type.link._case.LinkDescriptors; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/integration-tests/src/test/java/org/opendaylight/protocol/integration/bgp/ParserToSalTest.java b/integration-tests/src/test/java/org/opendaylight/protocol/integration/bgp/ParserToSalTest.java index 901d50fa74..93fd94f731 100644 --- a/integration-tests/src/test/java/org/opendaylight/protocol/integration/bgp/ParserToSalTest.java +++ b/integration-tests/src/test/java/org/opendaylight/protocol/integration/bgp/ParserToSalTest.java @@ -38,7 +38,7 @@ import org.opendaylight.protocol.bgp.rib.spi.SimpleRIBExtensionProviderContext; import org.opendaylight.protocol.bgp.util.HexDumpBGPFileParser; import org.opendaylight.protocol.framework.ReconnectStrategy; import org.opendaylight.protocol.framework.ReconnectStrategyFactory; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.LocRib; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.RibId; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.common.RpcResult; @@ -100,7 +100,7 @@ public class ParserToSalTest { @Override public RpcResult get(final long timeout, final TimeUnit unit) throws InterruptedException, - ExecutionException, TimeoutException { + ExecutionException, TimeoutException { return null; } }).when(this.mockedTransaction).commit(); @@ -135,7 +135,7 @@ public class ParserToSalTest { final RIBExtensionProviderContext ext = new SimpleRIBExtensionProviderContext(); new RIBActivator().startRIBExtensionProvider(ext); new org.opendaylight.protocol.bgp.linkstate.RIBActivator().startRIBExtensionProvider(ext); - final RIBImpl rib = new RIBImpl(InstanceIdentifier.builder(LocRib.class).toInstance(), ext, this.providerService); + final RIBImpl rib = new RIBImpl(new RibId("testRib"), ext, this.providerService); final BGPPeer peer = new BGPPeer(rib, "peer-" + this.mock.toString()); this.mock.registerUpdateListener(peer, new ReconnectStrategyFactory() { -- 2.36.6