Class NaptSwitchHA


  • @Singleton
    public class NaptSwitchHA
    extends java.lang.Object
    • Constructor Summary

      Constructors 
      Constructor Description
      NaptSwitchHA​(org.opendaylight.controller.md.sal.binding.api.DataBroker dataBroker, org.opendaylight.genius.mdsalutil.interfaces.IMdsalApiManager mdsalManager, ExternalRoutersListener externalRouterListener, org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.ItmRpcService itmManager, org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rpcs.rev160406.OdlInterfaceRpcService odlInterfaceRpcService, org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.IdManagerService idManager, NAPTSwitchSelector naptSwitchSelector, IFibManager fibManager, EvpnNaptSwitchHA evpnNaptSwitchHA, IElanService elanManager, SnatServiceManager natServiceManager, NatserviceConfig config, NaptEventHandler naptEventHandler, org.opendaylight.genius.interfacemanager.interfaces.IInterfaceManager interfaceManager, NatOverVxlanUtil natOverVxlanUtil)  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected void bestEffortDeletion​(org.opendaylight.yangtools.yang.common.Uint32 routerId, java.lang.String routerName, java.util.Map<java.lang.String,​org.opendaylight.yangtools.yang.common.Uint32> externalIpLabel, org.opendaylight.genius.infra.TypedReadWriteTransaction<org.opendaylight.genius.infra.Datastore.Configuration> confTx)  
      org.opendaylight.genius.mdsalutil.FlowEntity buildSnatFlowEntity​(org.opendaylight.yangtools.yang.common.Uint64 dpId, java.lang.String routerName, long groupId, org.opendaylight.yangtools.yang.common.Uint32 routerVpnId, int addordel)  
      org.opendaylight.genius.mdsalutil.FlowEntity buildSnatFlowEntityForNaptSwitch​(org.opendaylight.yangtools.yang.common.Uint64 dpId, java.lang.String routerName, org.opendaylight.yangtools.yang.common.Uint32 routerVpnId, int addordel)  
      protected @Nullable java.lang.String getTunnelInterfaceName​(org.opendaylight.yangtools.yang.common.Uint64 srcDpId, org.opendaylight.yangtools.yang.common.Uint64 dstDpId)  
      @NonNull java.util.List<org.opendaylight.genius.mdsalutil.BucketInfo> handleGroupInNeighborSwitches​(org.opendaylight.yangtools.yang.common.Uint64 dpnId, java.lang.String routerName, org.opendaylight.yangtools.yang.common.Uint32 routerId, org.opendaylight.yangtools.yang.common.Uint64 naptSwitch)  
      protected void installSnatFlows​(java.lang.String routerName, org.opendaylight.yangtools.yang.common.Uint32 routerId, org.opendaylight.yangtools.yang.common.Uint64 naptSwitch, org.opendaylight.yangtools.yang.common.Uint32 routerVpnId, org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid networkId, java.lang.String vpnName, org.opendaylight.genius.infra.TypedReadWriteTransaction<org.opendaylight.genius.infra.Datastore.Configuration> confTx)  
      protected void installSnatGroupEntry​(org.opendaylight.yangtools.yang.common.Uint64 dpnId, java.util.List<org.opendaylight.genius.mdsalutil.BucketInfo> bucketInfo, java.lang.String routerName)  
      boolean isNaptSwitchDown​(Routers extRouter, org.opendaylight.yangtools.yang.common.Uint32 routerId, org.opendaylight.yangtools.yang.common.Uint64 dpnId, org.opendaylight.yangtools.yang.common.Uint64 naptSwitch, org.opendaylight.yangtools.yang.common.Uint32 routerVpnId, java.util.Collection<java.lang.String> externalIpCache, boolean isClearBgpRts, org.opendaylight.genius.infra.TypedReadWriteTransaction<org.opendaylight.genius.infra.Datastore.Configuration> confTx)  
      boolean isNaptSwitchDown​(Routers extRouter, org.opendaylight.yangtools.yang.common.Uint32 routerId, org.opendaylight.yangtools.yang.common.Uint64 dpnId, org.opendaylight.yangtools.yang.common.Uint64 naptSwitch, org.opendaylight.yangtools.yang.common.Uint32 routerVpnId, java.util.Collection<java.lang.String> externalIpCache, org.opendaylight.genius.infra.TypedReadWriteTransaction<org.opendaylight.genius.infra.Datastore.Configuration> confTx)  
      protected void removeSnatFlowsInOldNaptSwitch​(Routers extRouter, org.opendaylight.yangtools.yang.common.Uint32 routerId, org.opendaylight.yangtools.yang.common.Uint64 naptSwitch, @Nullable java.util.Map<java.lang.String,​org.opendaylight.yangtools.yang.common.Uint32> externalIpmap, java.lang.String externalVpnName, org.opendaylight.genius.infra.TypedReadWriteTransaction<org.opendaylight.genius.infra.Datastore.Configuration> confTx)  
      protected void subnetRegisterMapping​(Routers routerEntry, org.opendaylight.yangtools.yang.common.Uint32 segmentId)  
      boolean updateNaptSwitch​(java.lang.String routerName, org.opendaylight.yangtools.yang.common.Uint64 naptSwitchId)  
      void updateNaptSwitchBucketStatus​(java.lang.String routerName, org.opendaylight.yangtools.yang.common.Uint32 routerId, org.opendaylight.yangtools.yang.common.Uint64 naptSwitch)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • NaptSwitchHA

        @Inject
        public NaptSwitchHA​(org.opendaylight.controller.md.sal.binding.api.DataBroker dataBroker,
                            org.opendaylight.genius.mdsalutil.interfaces.IMdsalApiManager mdsalManager,
                            ExternalRoutersListener externalRouterListener,
                            org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.ItmRpcService itmManager,
                            org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rpcs.rev160406.OdlInterfaceRpcService odlInterfaceRpcService,
                            org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.IdManagerService idManager,
                            NAPTSwitchSelector naptSwitchSelector,
                            IFibManager fibManager,
                            EvpnNaptSwitchHA evpnNaptSwitchHA,
                            IElanService elanManager,
                            SnatServiceManager natServiceManager,
                            NatserviceConfig config,
                            NaptEventHandler naptEventHandler,
                            org.opendaylight.genius.interfacemanager.interfaces.IInterfaceManager interfaceManager,
                            NatOverVxlanUtil natOverVxlanUtil)
    • Method Detail

      • removeSnatFlowsInOldNaptSwitch

        protected void removeSnatFlowsInOldNaptSwitch​(Routers extRouter,
                                                      org.opendaylight.yangtools.yang.common.Uint32 routerId,
                                                      org.opendaylight.yangtools.yang.common.Uint64 naptSwitch,
                                                      @Nullable java.util.Map<java.lang.String,​org.opendaylight.yangtools.yang.common.Uint32> externalIpmap,
                                                      java.lang.String externalVpnName,
                                                      org.opendaylight.genius.infra.TypedReadWriteTransaction<org.opendaylight.genius.infra.Datastore.Configuration> confTx)
                                               throws java.util.concurrent.ExecutionException,
                                                      java.lang.InterruptedException
        Throws:
        java.util.concurrent.ExecutionException
        java.lang.InterruptedException
      • isNaptSwitchDown

        public boolean isNaptSwitchDown​(Routers extRouter,
                                        org.opendaylight.yangtools.yang.common.Uint32 routerId,
                                        org.opendaylight.yangtools.yang.common.Uint64 dpnId,
                                        org.opendaylight.yangtools.yang.common.Uint64 naptSwitch,
                                        org.opendaylight.yangtools.yang.common.Uint32 routerVpnId,
                                        java.util.Collection<java.lang.String> externalIpCache,
                                        org.opendaylight.genius.infra.TypedReadWriteTransaction<org.opendaylight.genius.infra.Datastore.Configuration> confTx)
                                 throws java.util.concurrent.ExecutionException,
                                        java.lang.InterruptedException
        Throws:
        java.util.concurrent.ExecutionException
        java.lang.InterruptedException
      • isNaptSwitchDown

        public boolean isNaptSwitchDown​(Routers extRouter,
                                        org.opendaylight.yangtools.yang.common.Uint32 routerId,
                                        org.opendaylight.yangtools.yang.common.Uint64 dpnId,
                                        org.opendaylight.yangtools.yang.common.Uint64 naptSwitch,
                                        org.opendaylight.yangtools.yang.common.Uint32 routerVpnId,
                                        java.util.Collection<java.lang.String> externalIpCache,
                                        boolean isClearBgpRts,
                                        org.opendaylight.genius.infra.TypedReadWriteTransaction<org.opendaylight.genius.infra.Datastore.Configuration> confTx)
                                 throws java.util.concurrent.ExecutionException,
                                        java.lang.InterruptedException
        Throws:
        java.util.concurrent.ExecutionException
        java.lang.InterruptedException
      • updateNaptSwitchBucketStatus

        public void updateNaptSwitchBucketStatus​(java.lang.String routerName,
                                                 org.opendaylight.yangtools.yang.common.Uint32 routerId,
                                                 org.opendaylight.yangtools.yang.common.Uint64 naptSwitch)
      • handleGroupInNeighborSwitches

        public @NonNull java.util.List<org.opendaylight.genius.mdsalutil.BucketInfo> handleGroupInNeighborSwitches​(org.opendaylight.yangtools.yang.common.Uint64 dpnId,
                                                                                                                   java.lang.String routerName,
                                                                                                                   org.opendaylight.yangtools.yang.common.Uint32 routerId,
                                                                                                                   org.opendaylight.yangtools.yang.common.Uint64 naptSwitch)
      • installSnatGroupEntry

        protected void installSnatGroupEntry​(org.opendaylight.yangtools.yang.common.Uint64 dpnId,
                                             java.util.List<org.opendaylight.genius.mdsalutil.BucketInfo> bucketInfo,
                                             java.lang.String routerName)
      • getTunnelInterfaceName

        protected @Nullable java.lang.String getTunnelInterfaceName​(org.opendaylight.yangtools.yang.common.Uint64 srcDpId,
                                                                    org.opendaylight.yangtools.yang.common.Uint64 dstDpId)
      • updateNaptSwitch

        public boolean updateNaptSwitch​(java.lang.String routerName,
                                        org.opendaylight.yangtools.yang.common.Uint64 naptSwitchId)
      • buildSnatFlowEntity

        public org.opendaylight.genius.mdsalutil.FlowEntity buildSnatFlowEntity​(org.opendaylight.yangtools.yang.common.Uint64 dpId,
                                                                                java.lang.String routerName,
                                                                                long groupId,
                                                                                org.opendaylight.yangtools.yang.common.Uint32 routerVpnId,
                                                                                int addordel)
      • buildSnatFlowEntityForNaptSwitch

        public org.opendaylight.genius.mdsalutil.FlowEntity buildSnatFlowEntityForNaptSwitch​(org.opendaylight.yangtools.yang.common.Uint64 dpId,
                                                                                             java.lang.String routerName,
                                                                                             org.opendaylight.yangtools.yang.common.Uint32 routerVpnId,
                                                                                             int addordel)
      • installSnatFlows

        protected void installSnatFlows​(java.lang.String routerName,
                                        org.opendaylight.yangtools.yang.common.Uint32 routerId,
                                        org.opendaylight.yangtools.yang.common.Uint64 naptSwitch,
                                        org.opendaylight.yangtools.yang.common.Uint32 routerVpnId,
                                        org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid networkId,
                                        java.lang.String vpnName,
                                        org.opendaylight.genius.infra.TypedReadWriteTransaction<org.opendaylight.genius.infra.Datastore.Configuration> confTx)
      • bestEffortDeletion

        protected void bestEffortDeletion​(org.opendaylight.yangtools.yang.common.Uint32 routerId,
                                          java.lang.String routerName,
                                          java.util.Map<java.lang.String,​org.opendaylight.yangtools.yang.common.Uint32> externalIpLabel,
                                          org.opendaylight.genius.infra.TypedReadWriteTransaction<org.opendaylight.genius.infra.Datastore.Configuration> confTx)
                                   throws java.util.concurrent.ExecutionException,
                                          java.lang.InterruptedException
        Throws:
        java.util.concurrent.ExecutionException
        java.lang.InterruptedException
      • subnetRegisterMapping

        protected void subnetRegisterMapping​(Routers routerEntry,
                                             org.opendaylight.yangtools.yang.common.Uint32 segmentId)