@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, wait
cacheableAttributeObjects, cacheableNlriObjects, createRoute, createRouteListKey, emptyRoutesCase, emptyRoutesContainer
public 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()
RIBSupport
getTablesKey
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()
RIBSupport
routesCaseClass
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()
RIBSupport
routesContainerClass
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()
RIBSupport
routesListClass
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()
RIBSupport
emptyTable
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()
RIBSupport
routeAttributesIdentifier
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)
RIBSupport
changedRoutes
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)
RIBSupport
routePath
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)
RIBSupport
createRouteIdentifier
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)
RIBSupport
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 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)
RIBSupport
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
- 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)
RIBSupport
buildUpdate
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.