Class ElanInterfaceManager

  • All Implemented Interfaces:
    java.lang.AutoCloseable, java.util.EventListener, org.opendaylight.controller.md.sal.binding.api.DataTreeChangeListener<ElanInterface>, org.opendaylight.serviceutils.srm.RecoverableListener, org.opendaylight.serviceutils.tools.mdsal.listener.ChainableDataTreeChangeListener<ElanInterface>

    @Singleton
    public class ElanInterfaceManager
    extends org.opendaylight.genius.datastoreutils.AsyncDataTreeChangeListenerBase<ElanInterface,​ElanInterfaceManager>
    implements org.opendaylight.serviceutils.srm.RecoverableListener
    Class in charge of handling creations, modifications and removals of ElanInterfaces.
    See Also:
    ElanInterface
    • Nested Class Summary

      • Nested classes/interfaces inherited from class org.opendaylight.genius.datastoreutils.AsyncDataTreeChangeListenerBase

        org.opendaylight.genius.datastoreutils.AsyncDataTreeChangeListenerBase.DataTreeChangeHandler
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static long WAIT_TIME_FOR_SYNC_INSTALL  
      • Fields inherited from class org.opendaylight.genius.datastoreutils.AsyncDataTreeChangeListenerBase

        clazz
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected void add​(org.opendaylight.yangtools.yang.binding.InstanceIdentifier<ElanInterface> identifier, ElanInterface elanInterfaceAdded)  
      protected ElanInterfaceManager getDataTreeChangeListener()  
      org.opendaylight.yangtools.yang.binding.InstanceIdentifier<org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.groups.Group> getGroupIid​(ElanInstance elanInfo, org.opendaylight.yangtools.yang.common.Uint64 dpnId)  
      protected org.opendaylight.yangtools.yang.binding.InstanceIdentifier<ElanInterface> getWildCardPath()  
      void handleExternalInterfaceEvent​(ElanInstance elanInstance, DpnInterfaces dpnInterfaces, org.opendaylight.yangtools.yang.common.Uint64 dpId)  
      void handleInternalTunnelStateEvent​(org.opendaylight.yangtools.yang.common.Uint64 srcDpId, org.opendaylight.yangtools.yang.common.Uint64 dstDpId)  
      void init()  
      java.util.List<com.google.common.util.concurrent.ListenableFuture<java.lang.Void>> installDMacAddressTables​(ElanInstance elanInfo, org.opendaylight.genius.interfacemanager.globals.InterfaceInfo interfaceInfo, org.opendaylight.yangtools.yang.common.Uint64 dstDpId)  
      void registerListener()  
      protected void remove​(org.opendaylight.yangtools.yang.binding.InstanceIdentifier<ElanInterface> identifier, ElanInterface del)  
      void removeElanBroadcastGroup​(ElanInstance elanInfo, org.opendaylight.genius.interfacemanager.globals.InterfaceInfo interfaceInfo, org.opendaylight.genius.infra.TypedReadWriteTransaction<org.opendaylight.genius.infra.Datastore.Configuration> deleteFlowGroupTx)  
      java.util.List<com.google.common.util.concurrent.ListenableFuture<java.lang.Void>> removeElanInterface​(ElanInstance elanInfo, java.lang.String interfaceName, org.opendaylight.genius.interfacemanager.globals.InterfaceInfo interfaceInfo)  
      void removeFilterEqualsTable​(ElanInstance elanInfo, org.opendaylight.genius.interfacemanager.globals.InterfaceInfo interfaceInfo, org.opendaylight.genius.infra.TypedReadWriteTransaction<org.opendaylight.genius.infra.Datastore.Configuration> flowTx)  
      protected void removeInterfaceStaticMacEntries​(java.lang.String elanInstanceName, java.lang.String interfaceName, org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.PhysAddress physAddress)  
      void removeLocalBroadcastGroup​(ElanInstance elanInfo, org.opendaylight.genius.interfacemanager.globals.InterfaceInfo interfaceInfo, org.opendaylight.genius.infra.TypedReadWriteTransaction<org.opendaylight.genius.infra.Datastore.Configuration> deleteFlowGroupTx)  
      void scheduleElanInterfaceWorkerAfterRemoteBcGroup​(ElanInstance elanInfo, org.opendaylight.genius.interfacemanager.globals.InterfaceInfo interfaceInfo, DpnInterfaces dpnInterfaces, boolean isFirstInterfaceInDpn, ElanInterface elanInterface)  
      void setupFilterEqualsTable​(ElanInstance elanInfo, org.opendaylight.genius.interfacemanager.globals.InterfaceInfo interfaceInfo, org.opendaylight.genius.infra.TypedWriteTransaction<org.opendaylight.genius.infra.Datastore.Configuration> writeFlowGroupTx)  
      void setupTerminateServiceTable​(ElanInstance elanInfo, org.opendaylight.yangtools.yang.common.Uint64 dpId, org.opendaylight.genius.infra.TypedWriteTransaction<org.opendaylight.genius.infra.Datastore.Configuration> writeFlowGroupTx)  
      void setupTerminateServiceTable​(ElanInstance elanInfo, org.opendaylight.yangtools.yang.common.Uint64 dpId, org.opendaylight.yangtools.yang.common.Uint32 elanTag, org.opendaylight.genius.infra.TypedWriteTransaction<org.opendaylight.genius.infra.Datastore.Configuration> writeFlowGroupTx)  
      void setupUnknownDMacTable​(ElanInstance elanInfo, org.opendaylight.yangtools.yang.common.Uint64 dpId, org.opendaylight.genius.infra.TypedWriteTransaction<org.opendaylight.genius.infra.Datastore.Configuration> writeFlowGroupTx)  
      protected void unbindService​(java.lang.String interfaceName, org.opendaylight.genius.infra.TypedReadWriteTransaction<org.opendaylight.genius.infra.Datastore.Configuration> tx)  
      protected void update​(org.opendaylight.yangtools.yang.binding.InstanceIdentifier<ElanInterface> identifier, ElanInterface original, ElanInterface update)  
      • Methods inherited from class org.opendaylight.genius.datastoreutils.AsyncDataTreeChangeListenerBase

        addAfterListener, addBeforeListener, close, deregisterListener, onDataTreeChanged, registerListener
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • Methods inherited from interface org.opendaylight.serviceutils.srm.RecoverableListener

        deregisterListener
    • Field Detail

      • WAIT_TIME_FOR_SYNC_INSTALL

        public static final long WAIT_TIME_FOR_SYNC_INSTALL
    • Constructor Detail

      • ElanInterfaceManager

        @Inject
        public ElanInterfaceManager​(org.opendaylight.controller.md.sal.binding.api.DataBroker dataBroker,
                                    org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.IdManagerService managerService,
                                    org.opendaylight.genius.mdsalutil.interfaces.IMdsalApiManager mdsalApiManager,
                                    org.opendaylight.genius.interfacemanager.interfaces.IInterfaceManager interfaceManager,
                                    ElanForwardingEntriesHandler elanForwardingEntriesHandler,
                                    INeutronVpnManager neutronVpnManager,
                                    ElanItmUtils elanItmUtils,
                                    ElanEtreeUtils elanEtreeUtils,
                                    ElanL2GatewayUtils elanL2GatewayUtils,
                                    ElanUtils elanUtils,
                                    org.opendaylight.infrautils.jobcoordinator.JobCoordinator jobCoordinator,
                                    ElanL2GatewayMulticastUtils elanL2GatewayMulticastUtils,
                                    ElanInstanceCache elanInstanceCache,
                                    ElanInterfaceCache elanInterfaceCache,
                                    ElanServiceRecoveryHandler elanServiceRecoveryHandler,
                                    ElanGroupCache elanGroupCache,
                                    org.opendaylight.serviceutils.srm.ServiceRecoveryRegistry serviceRecoveryRegistry)
    • Method Detail

      • init

        @PostConstruct
        public void init()
        Overrides:
        init in class org.opendaylight.genius.datastoreutils.AsyncDataTreeChangeListenerBase<ElanInterface,​ElanInterfaceManager>
      • registerListener

        public void registerListener()
        Specified by:
        registerListener in interface org.opendaylight.serviceutils.srm.RecoverableListener
      • getWildCardPath

        protected org.opendaylight.yangtools.yang.binding.InstanceIdentifier<ElanInterface> getWildCardPath()
        Specified by:
        getWildCardPath in class org.opendaylight.genius.datastoreutils.AsyncDataTreeChangeListenerBase<ElanInterface,​ElanInterfaceManager>
      • removeElanInterface

        public java.util.List<com.google.common.util.concurrent.ListenableFuture<java.lang.Void>> removeElanInterface​(ElanInstance elanInfo,
                                                                                                                      java.lang.String interfaceName,
                                                                                                                      org.opendaylight.genius.interfacemanager.globals.InterfaceInfo interfaceInfo)
      • removeInterfaceStaticMacEntries

        protected void removeInterfaceStaticMacEntries​(java.lang.String elanInstanceName,
                                                       java.lang.String interfaceName,
                                                       org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.PhysAddress physAddress)
      • getGroupIid

        public org.opendaylight.yangtools.yang.binding.InstanceIdentifier<org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.groups.Group> getGroupIid​(ElanInstance elanInfo,
                                                                                                                                                                        org.opendaylight.yangtools.yang.common.Uint64 dpnId)
      • scheduleElanInterfaceWorkerAfterRemoteBcGroup

        public void scheduleElanInterfaceWorkerAfterRemoteBcGroup​(ElanInstance elanInfo,
                                                                  org.opendaylight.genius.interfacemanager.globals.InterfaceInfo interfaceInfo,
                                                                  DpnInterfaces dpnInterfaces,
                                                                  boolean isFirstInterfaceInDpn,
                                                                  ElanInterface elanInterface)
      • setupFilterEqualsTable

        public void setupFilterEqualsTable​(ElanInstance elanInfo,
                                           org.opendaylight.genius.interfacemanager.globals.InterfaceInfo interfaceInfo,
                                           org.opendaylight.genius.infra.TypedWriteTransaction<org.opendaylight.genius.infra.Datastore.Configuration> writeFlowGroupTx)
      • removeFilterEqualsTable

        public void removeFilterEqualsTable​(ElanInstance elanInfo,
                                            org.opendaylight.genius.interfacemanager.globals.InterfaceInfo interfaceInfo,
                                            org.opendaylight.genius.infra.TypedReadWriteTransaction<org.opendaylight.genius.infra.Datastore.Configuration> flowTx)
                                     throws java.util.concurrent.ExecutionException,
                                            java.lang.InterruptedException
        Throws:
        java.util.concurrent.ExecutionException
        java.lang.InterruptedException
      • installDMacAddressTables

        public java.util.List<com.google.common.util.concurrent.ListenableFuture<java.lang.Void>> installDMacAddressTables​(ElanInstance elanInfo,
                                                                                                                           org.opendaylight.genius.interfacemanager.globals.InterfaceInfo interfaceInfo,
                                                                                                                           org.opendaylight.yangtools.yang.common.Uint64 dstDpId)
      • removeLocalBroadcastGroup

        public void removeLocalBroadcastGroup​(ElanInstance elanInfo,
                                              org.opendaylight.genius.interfacemanager.globals.InterfaceInfo interfaceInfo,
                                              org.opendaylight.genius.infra.TypedReadWriteTransaction<org.opendaylight.genius.infra.Datastore.Configuration> deleteFlowGroupTx)
                                       throws java.util.concurrent.ExecutionException,
                                              java.lang.InterruptedException
        Throws:
        java.util.concurrent.ExecutionException
        java.lang.InterruptedException
      • removeElanBroadcastGroup

        public void removeElanBroadcastGroup​(ElanInstance elanInfo,
                                             org.opendaylight.genius.interfacemanager.globals.InterfaceInfo interfaceInfo,
                                             org.opendaylight.genius.infra.TypedReadWriteTransaction<org.opendaylight.genius.infra.Datastore.Configuration> deleteFlowGroupTx)
                                      throws java.util.concurrent.ExecutionException,
                                             java.lang.InterruptedException
        Throws:
        java.util.concurrent.ExecutionException
        java.lang.InterruptedException
      • setupTerminateServiceTable

        public void setupTerminateServiceTable​(ElanInstance elanInfo,
                                               org.opendaylight.yangtools.yang.common.Uint64 dpId,
                                               org.opendaylight.genius.infra.TypedWriteTransaction<org.opendaylight.genius.infra.Datastore.Configuration> writeFlowGroupTx)
      • setupTerminateServiceTable

        public void setupTerminateServiceTable​(ElanInstance elanInfo,
                                               org.opendaylight.yangtools.yang.common.Uint64 dpId,
                                               org.opendaylight.yangtools.yang.common.Uint32 elanTag,
                                               org.opendaylight.genius.infra.TypedWriteTransaction<org.opendaylight.genius.infra.Datastore.Configuration> writeFlowGroupTx)
      • setupUnknownDMacTable

        public void setupUnknownDMacTable​(ElanInstance elanInfo,
                                          org.opendaylight.yangtools.yang.common.Uint64 dpId,
                                          org.opendaylight.genius.infra.TypedWriteTransaction<org.opendaylight.genius.infra.Datastore.Configuration> writeFlowGroupTx)
      • unbindService

        protected void unbindService​(java.lang.String interfaceName,
                                     org.opendaylight.genius.infra.TypedReadWriteTransaction<org.opendaylight.genius.infra.Datastore.Configuration> tx)
                              throws java.util.concurrent.ExecutionException,
                                     java.lang.InterruptedException
        Throws:
        java.util.concurrent.ExecutionException
        java.lang.InterruptedException
      • handleInternalTunnelStateEvent

        public void handleInternalTunnelStateEvent​(org.opendaylight.yangtools.yang.common.Uint64 srcDpId,
                                                   org.opendaylight.yangtools.yang.common.Uint64 dstDpId)
      • handleExternalInterfaceEvent

        public void handleExternalInterfaceEvent​(ElanInstance elanInstance,
                                                 DpnInterfaces dpnInterfaces,
                                                 org.opendaylight.yangtools.yang.common.Uint64 dpId)