@Beta public abstract class AbstractRIBSupport<C extends Routes & org.opendaylight.yangtools.yang.binding.DataObject & org.opendaylight.yangtools.yang.binding.ChoiceIn<Tables>,S extends org.opendaylight.yangtools.yang.binding.ChildOf<? super C>,R extends Route & org.opendaylight.yangtools.yang.binding.ChildOf<? super S> & org.opendaylight.yangtools.yang.binding.Identifiable<I>,I extends org.opendaylight.yangtools.yang.binding.Identifier<R>> extends Object implements RIBSupport<C,S,R,I>
RIBSupport.ApplyRoute| Modifier and Type | Field and Description |
|---|---|
protected org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer |
mappingService |
static String |
ROUTE_KEY |
protected org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier |
routeDefaultYii |
| Modifier | Constructor and Description |
|---|---|
protected |
AbstractRIBSupport(org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer mappingService,
Class<C> cazeClass,
Class<S> containerClass,
Class<R> listClass,
Class<? extends AddressFamily> afiClass,
Class<? extends SubsequentAddressFamily> safiClass,
org.opendaylight.yangtools.yang.common.QName destContainerQname)
Default constructor.
|
| Modifier and Type | Method and Description |
|---|---|
protected abstract DestinationType |
buildDestination(Collection<org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode> routes) |
Update |
buildUpdate(Collection<org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode> advertised,
Collection<org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode> withdrawn,
Attributes attr)
To send routes out, we'd need to transform the DOM representation of route to
binding-aware format.
|
protected abstract DestinationType |
buildWithdrawnDestination(Collection<org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode> routes) |
Collection<org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidateNode> |
changedRoutes(org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidateNode routes)
Returns routes that were modified within this RIB support instance.
|
org.opendaylight.yangtools.yang.binding.InstanceIdentifier<R> |
createRouteIdentifier(org.opendaylight.yangtools.yang.binding.KeyedInstanceIdentifier<Tables,TablesKey> tableIId,
I key)
Creates Route table Peer InstanceIdentifier.
|
void |
deleteRoutes(org.opendaylight.controller.md.sal.dom.api.DOMDataWriteTransaction tx,
org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier tablePath,
org.opendaylight.yangtools.yang.data.api.schema.ContainerNode nlri)
Given the NLRI as ContainerNode, this method should extract withdrawn routes
from the DOM model and delete them from RIBs.
|
void |
deleteRoutes(org.opendaylight.controller.md.sal.dom.api.DOMDataWriteTransaction tx,
org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier tablePath,
org.opendaylight.yangtools.yang.data.api.schema.ContainerNode nlri,
org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier routesNodeId)
Given the NLRI as ContainerNode, this method should extract withdrawn routes
from the DOM model and delete them from RIBs.
|
org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode |
emptyTable()
Return the table-type-specific empty table with routes empty container, as augmented into the
bgp-rib model under /rib/tables/routes choice node.
|
protected String |
extractPrefix(org.opendaylight.yangtools.yang.data.api.schema.DataContainerNode<? extends org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument> route) |
protected RouteDistinguisher |
extractRouteDistinguisher(org.opendaylight.yangtools.yang.data.api.schema.DataContainerNode<? extends org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument> route) |
Class<? extends AddressFamily> |
getAfi() |
Class<? extends SubsequentAddressFamily> |
getSafi() |
TablesKey |
getTablesKey()
Returns TablesKey which we are providing support.
|
protected org.opendaylight.yangtools.yang.common.QName |
pathIdQName() |
protected org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier |
prefixNid() |
protected abstract void |
processDestination(org.opendaylight.controller.md.sal.dom.api.DOMDataWriteTransaction tx,
org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier routesPath,
org.opendaylight.yangtools.yang.data.api.schema.ContainerNode destination,
org.opendaylight.yangtools.yang.data.api.schema.ContainerNode attributes,
RIBSupport.ApplyRoute applyFunction) |
void |
putRoutes(org.opendaylight.controller.md.sal.dom.api.DOMDataWriteTransaction tx,
org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier tablePath,
org.opendaylight.yangtools.yang.data.api.schema.ContainerNode nlri,
org.opendaylight.yangtools.yang.data.api.schema.ContainerNode attributes)
Given the NLRI as ContainerNode, this method should extract advertised routes
from the DOM model and put them into RIBs.
|
void |
putRoutes(org.opendaylight.controller.md.sal.dom.api.DOMDataWriteTransaction tx,
org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier tablePath,
org.opendaylight.yangtools.yang.data.api.schema.ContainerNode nlri,
org.opendaylight.yangtools.yang.data.api.schema.ContainerNode attributes,
org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier routesNodeId)
Given the NLRI as ContainerNode, this method should extract advertised routes
from the DOM model and put them into RIBs.
|
org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier |
routeAttributesIdentifier()
Return the localized identifier of the attributes route member, as expanded
from the route grouping in the specific augmentation of the base routes choice.
|
protected org.opendaylight.yangtools.yang.common.QName |
routeKeyQName() |
protected org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier |
routeNid() |
org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier |
routePath(org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier routesTablePaths,
org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument routeId)
Constructs an instance identifier path to routeId.
|
protected org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier |
routePathIdNid() |
org.opendaylight.yangtools.yang.common.QName |
routeQName() |
Class<C> |
routesCaseClass()
Return class object of the Routes Case statement.
|
Class<S> |
routesContainerClass()
Return class object of the Routes Container statement.
|
protected org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier |
routesContainerIdentifier()
Return the
YangInstanceIdentifier.NodeIdentifier of the AFI/SAFI-specific container under
the RIB routes. |
Class<R> |
routesListClass()
Return class object of the Routes List statement.
|
protected org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier |
routesYangInstanceIdentifier(org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier routesTablePaths) |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitcacheableAttributeObjects, cacheableNlriObjects, createRoute, createRouteListKey, emptyRoutesCase, emptyRoutesContainerpublic static final String ROUTE_KEY
protected final org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer mappingService
protected final org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier routeDefaultYii
protected AbstractRIBSupport(org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer mappingService,
Class<C> cazeClass,
Class<S> containerClass,
Class<R> listClass,
Class<? extends AddressFamily> afiClass,
Class<? extends SubsequentAddressFamily> safiClass,
org.opendaylight.yangtools.yang.common.QName destContainerQname)
mappingService - Serialization servicecazeClass - Binding class of the AFI/SAFI-specific case statement, must not be nullcontainerClass - Binding class of the container in routes choice, must not be null.listClass - Binding class of the route list, nust not be null;afiClass - address Family ClasssafiClass - SubsequentAddressFamilydestContainerQname - destination Container Qnamepublic final TablesKey getTablesKey()
RIBSupportgetTablesKey in interface RIBSupport<C extends Routes & org.opendaylight.yangtools.yang.binding.DataObject & org.opendaylight.yangtools.yang.binding.ChoiceIn<Tables>,S extends org.opendaylight.yangtools.yang.binding.ChildOf<? super C>,R extends Route & org.opendaylight.yangtools.yang.binding.ChildOf<? super S> & org.opendaylight.yangtools.yang.binding.Identifiable<I>,I extends org.opendaylight.yangtools.yang.binding.Identifier<R>>public final Class<C> routesCaseClass()
RIBSupportroutesCaseClass in interface RIBSupport<C extends Routes & org.opendaylight.yangtools.yang.binding.DataObject & org.opendaylight.yangtools.yang.binding.ChoiceIn<Tables>,S extends org.opendaylight.yangtools.yang.binding.ChildOf<? super C>,R extends Route & org.opendaylight.yangtools.yang.binding.ChildOf<? super S> & org.opendaylight.yangtools.yang.binding.Identifiable<I>,I extends org.opendaylight.yangtools.yang.binding.Identifier<R>>public final Class<S> routesContainerClass()
RIBSupportroutesContainerClass in interface RIBSupport<C extends Routes & org.opendaylight.yangtools.yang.binding.DataObject & org.opendaylight.yangtools.yang.binding.ChoiceIn<Tables>,S extends org.opendaylight.yangtools.yang.binding.ChildOf<? super C>,R extends Route & org.opendaylight.yangtools.yang.binding.ChildOf<? super S> & org.opendaylight.yangtools.yang.binding.Identifiable<I>,I extends org.opendaylight.yangtools.yang.binding.Identifier<R>>public final Class<R> routesListClass()
RIBSupportroutesListClass in interface RIBSupport<C extends Routes & org.opendaylight.yangtools.yang.binding.DataObject & org.opendaylight.yangtools.yang.binding.ChoiceIn<Tables>,S extends org.opendaylight.yangtools.yang.binding.ChildOf<? super C>,R extends Route & org.opendaylight.yangtools.yang.binding.ChildOf<? super S> & org.opendaylight.yangtools.yang.binding.Identifiable<I>,I extends org.opendaylight.yangtools.yang.binding.Identifier<R>>public final org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode emptyTable()
RIBSupportemptyTable in interface RIBSupport<C extends Routes & org.opendaylight.yangtools.yang.binding.DataObject & org.opendaylight.yangtools.yang.binding.ChoiceIn<Tables>,S extends org.opendaylight.yangtools.yang.binding.ChildOf<? super C>,R extends Route & org.opendaylight.yangtools.yang.binding.ChildOf<? super S> & org.opendaylight.yangtools.yang.binding.Identifiable<I>,I extends org.opendaylight.yangtools.yang.binding.Identifier<R>>public final org.opendaylight.yangtools.yang.common.QName routeQName()
protected final org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier prefixNid()
protected final org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier routeNid()
public final Class<? extends AddressFamily> getAfi()
getAfi in interface RIBSupport<C extends Routes & org.opendaylight.yangtools.yang.binding.DataObject & org.opendaylight.yangtools.yang.binding.ChoiceIn<Tables>,S extends org.opendaylight.yangtools.yang.binding.ChildOf<? super C>,R extends Route & org.opendaylight.yangtools.yang.binding.ChildOf<? super S> & org.opendaylight.yangtools.yang.binding.Identifiable<I>,I extends org.opendaylight.yangtools.yang.binding.Identifier<R>>public final Class<? extends SubsequentAddressFamily> getSafi()
getSafi in interface RIBSupport<C extends Routes & org.opendaylight.yangtools.yang.binding.DataObject & org.opendaylight.yangtools.yang.binding.ChoiceIn<Tables>,S extends org.opendaylight.yangtools.yang.binding.ChildOf<? super C>,R extends Route & org.opendaylight.yangtools.yang.binding.ChildOf<? super S> & org.opendaylight.yangtools.yang.binding.Identifiable<I>,I extends org.opendaylight.yangtools.yang.binding.Identifier<R>>protected abstract DestinationType buildDestination(Collection<org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode> routes)
protected abstract DestinationType buildWithdrawnDestination(Collection<org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode> routes)
protected final org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier routesContainerIdentifier()
YangInstanceIdentifier.NodeIdentifier of the AFI/SAFI-specific container under
the RIB routes.protected abstract void processDestination(org.opendaylight.controller.md.sal.dom.api.DOMDataWriteTransaction tx,
org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier routesPath,
org.opendaylight.yangtools.yang.data.api.schema.ContainerNode destination,
org.opendaylight.yangtools.yang.data.api.schema.ContainerNode attributes,
RIBSupport.ApplyRoute applyFunction)
public final org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier routeAttributesIdentifier()
RIBSupportrouteAttributesIdentifier in interface RIBSupport<C extends Routes & org.opendaylight.yangtools.yang.binding.DataObject & org.opendaylight.yangtools.yang.binding.ChoiceIn<Tables>,S extends org.opendaylight.yangtools.yang.binding.ChildOf<? super C>,R extends Route & org.opendaylight.yangtools.yang.binding.ChildOf<? super S> & org.opendaylight.yangtools.yang.binding.Identifiable<I>,I extends org.opendaylight.yangtools.yang.binding.Identifier<R>>public final Collection<org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidateNode> changedRoutes(org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidateNode routes)
RIBSupportchangedRoutes in interface RIBSupport<C extends Routes & org.opendaylight.yangtools.yang.binding.DataObject & org.opendaylight.yangtools.yang.binding.ChoiceIn<Tables>,S extends org.opendaylight.yangtools.yang.binding.ChildOf<? super C>,R extends Route & org.opendaylight.yangtools.yang.binding.ChildOf<? super S> & org.opendaylight.yangtools.yang.binding.Identifiable<I>,I extends org.opendaylight.yangtools.yang.binding.Identifier<R>>routes - DataTreeCandidateNodepublic final org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier routePath(org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier routesTablePaths,
org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument routeId)
RIBSupportroutePath in interface RIBSupport<C extends Routes & org.opendaylight.yangtools.yang.binding.DataObject & org.opendaylight.yangtools.yang.binding.ChoiceIn<Tables>,S extends org.opendaylight.yangtools.yang.binding.ChildOf<? super C>,R extends Route & org.opendaylight.yangtools.yang.binding.ChildOf<? super S> & org.opendaylight.yangtools.yang.binding.Identifiable<I>,I extends org.opendaylight.yangtools.yang.binding.Identifier<R>>routesTablePaths - YangInstanceIdentifier base pathrouteId - PathArgument leaf pathpublic final org.opendaylight.yangtools.yang.binding.InstanceIdentifier<R> createRouteIdentifier(org.opendaylight.yangtools.yang.binding.KeyedInstanceIdentifier<Tables,TablesKey> tableIId, I key)
RIBSupportcreateRouteIdentifier in interface RIBSupport<C extends Routes & org.opendaylight.yangtools.yang.binding.DataObject & org.opendaylight.yangtools.yang.binding.ChoiceIn<Tables>,S extends org.opendaylight.yangtools.yang.binding.ChildOf<? super C>,R extends Route & org.opendaylight.yangtools.yang.binding.ChildOf<? super S> & org.opendaylight.yangtools.yang.binding.Identifiable<I>,I extends org.opendaylight.yangtools.yang.binding.Identifier<R>>tableIId - table InstanceIdentifierkey - route keypublic final void deleteRoutes(org.opendaylight.controller.md.sal.dom.api.DOMDataWriteTransaction tx,
org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier tablePath,
org.opendaylight.yangtools.yang.data.api.schema.ContainerNode nlri)
RIBSupportdeleteRoutes in interface RIBSupport<C extends Routes & org.opendaylight.yangtools.yang.binding.DataObject & org.opendaylight.yangtools.yang.binding.ChoiceIn<Tables>,S extends org.opendaylight.yangtools.yang.binding.ChildOf<? super C>,R extends Route & org.opendaylight.yangtools.yang.binding.ChildOf<? super S> & org.opendaylight.yangtools.yang.binding.Identifiable<I>,I extends org.opendaylight.yangtools.yang.binding.Identifier<R>>tx - DOMDataWriteTransactiontablePath - YangInstanceIdentifiernlri - ContainerNode DOM representation of NLRI in Update messagepublic final void putRoutes(org.opendaylight.controller.md.sal.dom.api.DOMDataWriteTransaction tx,
org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier tablePath,
org.opendaylight.yangtools.yang.data.api.schema.ContainerNode nlri,
org.opendaylight.yangtools.yang.data.api.schema.ContainerNode attributes)
RIBSupportputRoutes in interface RIBSupport<C extends Routes & org.opendaylight.yangtools.yang.binding.DataObject & org.opendaylight.yangtools.yang.binding.ChoiceIn<Tables>,S extends org.opendaylight.yangtools.yang.binding.ChildOf<? super C>,R extends Route & org.opendaylight.yangtools.yang.binding.ChildOf<? super S> & org.opendaylight.yangtools.yang.binding.Identifiable<I>,I extends org.opendaylight.yangtools.yang.binding.Identifier<R>>tx - DOMDataWriteTransactiontablePath - YangInstanceIdentifiernlri - ContainerNode DOM representation of NLRI in Update messageattributes - ContainerNodepublic final Update buildUpdate(Collection<org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode> advertised, Collection<org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode> withdrawn, Attributes attr)
RIBSupportbuildUpdate in interface RIBSupport<C extends Routes & org.opendaylight.yangtools.yang.binding.DataObject & org.opendaylight.yangtools.yang.binding.ChoiceIn<Tables>,S extends org.opendaylight.yangtools.yang.binding.ChildOf<? super C>,R extends Route & org.opendaylight.yangtools.yang.binding.ChildOf<? super S> & org.opendaylight.yangtools.yang.binding.Identifiable<I>,I extends org.opendaylight.yangtools.yang.binding.Identifier<R>>advertised - Collection of advertised routes in DOM formatwithdrawn - Collection of withdrawn routes in DOM formatattr - Attributes MpReach is part of Attributes so we need to pass
it as argument, create new AttributesBuilder with existing
attributes and add MpReachpublic final void deleteRoutes(org.opendaylight.controller.md.sal.dom.api.DOMDataWriteTransaction tx,
org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier tablePath,
org.opendaylight.yangtools.yang.data.api.schema.ContainerNode nlri,
org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier routesNodeId)
RIBSupport
Use this method when removing routes stored in RIBs out of the "bgp-rib" module.
Provide YangInstanceIdentifier.NodeIdentifier with customized "routes" QName.
For default "bgp-rib" RIBs use RIBSupport.deleteRoutes(org.opendaylight.controller.md.sal.dom.api.DOMDataWriteTransaction, org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier, org.opendaylight.yangtools.yang.data.api.schema.ContainerNode)
deleteRoutes in interface RIBSupport<C extends Routes & org.opendaylight.yangtools.yang.binding.DataObject & org.opendaylight.yangtools.yang.binding.ChoiceIn<Tables>,S extends org.opendaylight.yangtools.yang.binding.ChildOf<? super C>,R extends Route & org.opendaylight.yangtools.yang.binding.ChildOf<? super S> & org.opendaylight.yangtools.yang.binding.Identifiable<I>,I extends org.opendaylight.yangtools.yang.binding.Identifier<R>>tx - DOMDataWriteTransactiontablePath - YangInstanceIdentifiernlri - ContainerNode DOM representation of NLRI in Update messageroutesNodeId - NodeIdentifier of "routes" data nodepublic final void putRoutes(org.opendaylight.controller.md.sal.dom.api.DOMDataWriteTransaction tx,
org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier tablePath,
org.opendaylight.yangtools.yang.data.api.schema.ContainerNode nlri,
org.opendaylight.yangtools.yang.data.api.schema.ContainerNode attributes,
org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier routesNodeId)
RIBSupport
Use this method when putting routes stored in RIBs out of the "bgp-rib" module.
Provide YangInstanceIdentifier.NodeIdentifier with customized "routes" QName.
For default "bgp-rib" RIBs use RIBSupport.putRoutes(org.opendaylight.controller.md.sal.dom.api.DOMDataWriteTransaction, org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier, org.opendaylight.yangtools.yang.data.api.schema.ContainerNode, org.opendaylight.yangtools.yang.data.api.schema.ContainerNode)
putRoutes in interface RIBSupport<C extends Routes & org.opendaylight.yangtools.yang.binding.DataObject & org.opendaylight.yangtools.yang.binding.ChoiceIn<Tables>,S extends org.opendaylight.yangtools.yang.binding.ChildOf<? super C>,R extends Route & org.opendaylight.yangtools.yang.binding.ChildOf<? super S> & org.opendaylight.yangtools.yang.binding.Identifiable<I>,I extends org.opendaylight.yangtools.yang.binding.Identifier<R>>tx - DOMDataWriteTransactiontablePath - YangInstanceIdentifiernlri - ContainerNode DOM representation of NLRI in Update messageattributes - ContainerNoderoutesNodeId - NodeIdentifier of "routes" data nodeprotected final org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier routePathIdNid()
protected final org.opendaylight.yangtools.yang.common.QName pathIdQName()
protected final org.opendaylight.yangtools.yang.common.QName routeKeyQName()
protected final String extractPrefix(org.opendaylight.yangtools.yang.data.api.schema.DataContainerNode<? extends org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument> route)
protected final RouteDistinguisher extractRouteDistinguisher(org.opendaylight.yangtools.yang.data.api.schema.DataContainerNode<? extends org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument> route)
protected final org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier routesYangInstanceIdentifier(org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier routesTablePaths)
Copyright © 2019 OpenDaylight. All rights reserved.