X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=natservice%2Fimpl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fnetvirt%2Fnatservice%2Finternal%2FSnatServiceImplFactory.java;h=ec8881f79fa2891f7fcce363a0aa7da24ac2cfa1;hb=2f0569ed75ef8a1fb60f992d19c8bbdf92ff45bf;hp=660a8f6ead77b11296e45729716f0250c17dcc41;hpb=72bd2d39aefb0e36308765cd15b3bdbda8275fc7;p=netvirt.git diff --git a/natservice/impl/src/main/java/org/opendaylight/netvirt/natservice/internal/SnatServiceImplFactory.java b/natservice/impl/src/main/java/org/opendaylight/netvirt/natservice/internal/SnatServiceImplFactory.java index 660a8f6ead..ec8881f79f 100644 --- a/natservice/impl/src/main/java/org/opendaylight/netvirt/natservice/internal/SnatServiceImplFactory.java +++ b/natservice/impl/src/main/java/org/opendaylight/netvirt/natservice/internal/SnatServiceImplFactory.java @@ -9,11 +9,16 @@ package org.opendaylight.netvirt.natservice.internal; import javax.inject.Inject; import javax.inject.Singleton; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; +import org.eclipse.jdt.annotation.Nullable; +import org.opendaylight.genius.datastoreutils.listeners.DataTreeEventCallbackRegistrar; +import org.opendaylight.genius.interfacemanager.interfaces.IInterfaceManager; import org.opendaylight.genius.mdsalutil.interfaces.IMdsalApiManager; import org.opendaylight.infrautils.inject.AbstractLifecycle; +import org.opendaylight.mdsal.binding.api.DataBroker; import org.opendaylight.netvirt.elanmanager.api.IElanService; -import org.opendaylight.netvirt.neutronvpn.interfaces.INeutronVpnManager; +import org.opendaylight.netvirt.fibmanager.api.IFibManager; +import org.opendaylight.netvirt.natservice.ha.NatDataUtil; +import org.opendaylight.netvirt.vpnmanager.api.IVpnFootprintService; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.IdManagerService; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rpcs.rev160406.OdlInterfaceRpcService; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.ItmRpcService; @@ -30,28 +35,40 @@ public class SnatServiceImplFactory extends AbstractLifecycle { private final DataBroker dataBroker; private final IMdsalApiManager mdsalManager; private final ItmRpcService itmManager; - private final OdlInterfaceRpcService interfaceManager; + private final OdlInterfaceRpcService odlInterfaceRpcService; private final IdManagerService idManager; private final NAPTSwitchSelector naptSwitchSelector; private final NatMode natMode; - private final INeutronVpnManager nvpnManager; private final ExternalRoutersListener externalRouterListener; private final IElanService elanManager; + private final IInterfaceManager interfaceManager; + private final IVpnFootprintService vpnFootprintService; + private final IFibManager fibManager; + private final NatDataUtil natDataUtil; + private final DataTreeEventCallbackRegistrar eventCallbacks; + private final NatOverVxlanUtil natOverVxlanUtil; + private final Ipv6SubnetFlowProgrammer ipv6SubnetFlowProgrammer; @Inject public SnatServiceImplFactory(final DataBroker dataBroker, final IMdsalApiManager mdsalManager, - final ItmRpcService itmManager, - final OdlInterfaceRpcService interfaceManager, - final IdManagerService idManager, - final NAPTSwitchSelector naptSwitchSelector, - final NatserviceConfig config, - final INeutronVpnManager nvpnManager, - final ExternalRoutersListener externalRouterListener, - final IElanService elanManager) { + final ItmRpcService itmManager, + final OdlInterfaceRpcService odlInterfaceRpcService, + final IdManagerService idManager, + final NAPTSwitchSelector naptSwitchSelector, + final NatserviceConfig config, + final ExternalRoutersListener externalRouterListener, + final IElanService elanManager, + final IInterfaceManager interfaceManager, + final IVpnFootprintService vpnFootprintService, + final IFibManager fibManager, + final NatDataUtil natDataUtil, + final DataTreeEventCallbackRegistrar eventCallbacks, + final NatOverVxlanUtil natOverVxlanUtil, + final Ipv6SubnetFlowProgrammer ipv6SubnetFlowProgrammer) { this.dataBroker = dataBroker; this.mdsalManager = mdsalManager; this.itmManager = itmManager; - this.interfaceManager = interfaceManager; + this.odlInterfaceRpcService = odlInterfaceRpcService; this.idManager = idManager; this.naptSwitchSelector = naptSwitchSelector; if (config != null) { @@ -59,9 +76,15 @@ public class SnatServiceImplFactory extends AbstractLifecycle { } else { this.natMode = null; } - this.nvpnManager = nvpnManager; this.externalRouterListener = externalRouterListener; this.elanManager = elanManager; + this.interfaceManager = interfaceManager; + this.vpnFootprintService = vpnFootprintService; + this.fibManager = fibManager; + this.natDataUtil = natDataUtil; + this.eventCallbacks = eventCallbacks; + this.natOverVxlanUtil = natOverVxlanUtil; + this.ipv6SubnetFlowProgrammer = ipv6SubnetFlowProgrammer; } @Override @@ -74,25 +97,28 @@ public class SnatServiceImplFactory extends AbstractLifecycle { LOG.info("{} close", getClass().getSimpleName()); } + @Nullable public AbstractSnatService createFlatVlanSnatServiceImpl() { - if (natMode == NatMode.Conntrack) { - return new FlatVlanConntrackBasedSnatService(dataBroker, mdsalManager, itmManager, interfaceManager, - idManager, naptSwitchSelector); + return new FlatVlanConntrackBasedSnatService(dataBroker, mdsalManager, itmManager, odlInterfaceRpcService, + idManager, naptSwitchSelector, interfaceManager, vpnFootprintService, fibManager, natDataUtil, + eventCallbacks); } return null; } - public AbstractSnatService createVxlanGreSnatServiceImpl() { + public Ipv6ForwardingService createFlatVlanIpv6ServiceImpl() { + return new Ipv6ForwardingService(dataBroker, mdsalManager, itmManager, odlInterfaceRpcService, + idManager, naptSwitchSelector, interfaceManager, ipv6SubnetFlowProgrammer); + } + @Nullable + public AbstractSnatService createVxlanGreSnatServiceImpl() { if (natMode == NatMode.Conntrack) { - NatOverVxlanUtil.validateAndCreateVxlanVniPool(dataBroker, nvpnManager, idManager, - NatConstants.ODL_VNI_POOL_NAME); - return new VxlanGreConntrackBasedSnatService(dataBroker, mdsalManager, itmManager, interfaceManager, - idManager, naptSwitchSelector, externalRouterListener, elanManager); + return new VxlanGreConntrackBasedSnatService(dataBroker, mdsalManager, itmManager, odlInterfaceRpcService, + idManager, naptSwitchSelector, externalRouterListener, elanManager, interfaceManager, + vpnFootprintService, fibManager, natDataUtil, eventCallbacks, natOverVxlanUtil); } return null; } - - }