diff options
author | Jan Srnicek <jsrnicek@cisco.com> | 2017-10-09 10:39:17 +0200 |
---|---|---|
committer | Jan Srnicek <jsrnicek@cisco.com> | 2017-10-09 10:39:17 +0200 |
commit | 2bca3b4a54e1b0a5206c7be14262e35753700d13 (patch) | |
tree | 7d4199802e65c0bbd21f4b4d3f89a12d7c9b94ba /infra/northbound/bgp/src/main/java/io/fd/honeycomb/infra/bgp/ApplicationRibWriterFactory.java | |
parent | 88f40ecade3b99675982be81a1774690a0977765 (diff) |
HONEYCOMB-363 - Bgp extension modules
Provides maven modules per bgp extension.
Defines common configuration that can be used to define new
extensions(AbstractBgpExtensionModule).
Change-Id: I1c8ff65b6f9aa5474026f4bdf42476bd0559208e
Signed-off-by: Jan Srnicek <jsrnicek@cisco.com>
Diffstat (limited to 'infra/northbound/bgp/src/main/java/io/fd/honeycomb/infra/bgp/ApplicationRibWriterFactory.java')
-rw-r--r-- | infra/northbound/bgp/src/main/java/io/fd/honeycomb/infra/bgp/ApplicationRibWriterFactory.java | 40 |
1 files changed, 6 insertions, 34 deletions
diff --git a/infra/northbound/bgp/src/main/java/io/fd/honeycomb/infra/bgp/ApplicationRibWriterFactory.java b/infra/northbound/bgp/src/main/java/io/fd/honeycomb/infra/bgp/ApplicationRibWriterFactory.java index 104a85922..02f1788f3 100644 --- a/infra/northbound/bgp/src/main/java/io/fd/honeycomb/infra/bgp/ApplicationRibWriterFactory.java +++ b/infra/northbound/bgp/src/main/java/io/fd/honeycomb/infra/bgp/ApplicationRibWriterFactory.java @@ -16,24 +16,15 @@ package io.fd.honeycomb.infra.bgp; -import com.google.common.collect.Sets; +import com.google.common.collect.ImmutableSet; import com.google.inject.Inject; import com.google.inject.name.Named; import io.fd.honeycomb.translate.util.write.BindingBrokerWriter; import io.fd.honeycomb.translate.write.WriterFactory; import io.fd.honeycomb.translate.write.registry.ModifiableWriterRegistryBuilder; import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.inet.rev150305.ipv4.routes.Ipv4Routes; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.inet.rev150305.ipv4.routes.ipv4.routes.Ipv4Route; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.labeled.unicast.rev150525.labeled.unicast.LabelStack; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.labeled.unicast.rev150525.labeled.unicast.routes.LabeledUnicastRoutes; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.labeled.unicast.rev150525.labeled.unicast.routes.list.LabeledUnicastRoute; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.Attributes; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.attributes.LocalPref; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.attributes.Origin; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.ApplicationRib; 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.types.rev130919.next.hop.c.next.hop.ipv4.next.hop._case.Ipv4NextHop; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; /** @@ -41,21 +32,19 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; * Uses BindingBrokerWriter to write routes via dedicated broker that, unlike * {@link io.fd.honeycomb.data.impl.DataBroker DataBroker}, supports tx chains and DOMDataChangeListener registration * extensively used by ODL's bgp. - * + * <p> * As a bonus BGP routes persisted and available for read via RESTCONF/NETCONF. */ final class ApplicationRibWriterFactory implements WriterFactory { + @Inject @Named(BgpModule.HONEYCOMB_BGP) private DataBroker dataBroker; private static final InstanceIdentifier<ApplicationRib> AR_IID = - InstanceIdentifier.create(ApplicationRib.class); + InstanceIdentifier.create(ApplicationRib.class); private static final InstanceIdentifier<Tables> TABLES_IID = AR_IID.child(Tables.class); - private static final InstanceIdentifier<Ipv4Routes> IPV4_ROUTES_IID = TABLES_IID.child((Class) Ipv4Routes.class); - private static final InstanceIdentifier<Ipv4Route> IPV4_ROUTE_IID = IPV4_ROUTES_IID.child(Ipv4Route.class); - private static final InstanceIdentifier<LabeledUnicastRoutes> LABELED_UNICAST_ROUTES_IID = TABLES_IID.child((Class) LabeledUnicastRoutes.class); - private static final InstanceIdentifier<LabeledUnicastRoute> LABELED_UNICAST_ROUTE_IID = LABELED_UNICAST_ROUTES_IID.child(LabeledUnicastRoute.class); + // TODO (HONEYCOMB-359): // BGP models are huge, we need some kind of wildcarded subtree writer, that works for whole subtree. @@ -66,24 +55,7 @@ final class ApplicationRibWriterFactory implements WriterFactory { // 2) alternative is to compute all child nodes during initialization (might introduce some footprint penalty). @Override public void init(final ModifiableWriterRegistryBuilder registry) { - registry.subtreeAdd( - Sets.newHashSet( - TABLES_IID, - IPV4_ROUTES_IID, - IPV4_ROUTES_IID.child(Ipv4Route.class), - IPV4_ROUTE_IID.child(Attributes.class), - IPV4_ROUTE_IID.child(Attributes.class).child(Origin.class), - IPV4_ROUTE_IID.child(Attributes.class).child(LocalPref.class), - IPV4_ROUTE_IID.child(Attributes.class).child(Ipv4NextHop.class), - LABELED_UNICAST_ROUTES_IID, - LABELED_UNICAST_ROUTE_IID, - LABELED_UNICAST_ROUTE_IID.child(Attributes.class), - LABELED_UNICAST_ROUTE_IID.child(Attributes.class).child(Origin.class), - LABELED_UNICAST_ROUTE_IID.child(Attributes.class).child(LocalPref.class), - LABELED_UNICAST_ROUTE_IID.child(Attributes.class).child(Ipv4NextHop.class), - LABELED_UNICAST_ROUTE_IID.child(LabelStack.class) - ), - new BindingBrokerWriter<>(InstanceIdentifier.create(ApplicationRib.class), dataBroker) + registry.subtreeAdd(ImmutableSet.of(TABLES_IID), new BindingBrokerWriter<>(InstanceIdentifier.create(ApplicationRib.class), dataBroker) ); } } |