NETVIRT-1630 migrate to md-sal APIs
[netvirt.git] / natservice / impl / src / main / java / org / opendaylight / netvirt / natservice / internal / SnatServiceImplFactory.java
index ea536fdafab186840336f2c8502b8040a0ce4722..ec8881f79fa2891f7fcce363a0aa7da24ac2cfa1 100644 (file)
@@ -7,18 +7,17 @@
  */
 package org.opendaylight.netvirt.natservice.internal;
 
-import javax.annotation.Nullable;
 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.fibmanager.api.IFibManager;
 import org.opendaylight.netvirt.natservice.ha.NatDataUtil;
-import org.opendaylight.netvirt.neutronvpn.interfaces.INeutronVpnManager;
 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;
@@ -40,7 +39,6 @@ public class SnatServiceImplFactory extends AbstractLifecycle {
     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;
@@ -49,6 +47,7 @@ public class SnatServiceImplFactory extends AbstractLifecycle {
     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,
@@ -57,7 +56,6 @@ public class SnatServiceImplFactory extends AbstractLifecycle {
                                   final IdManagerService idManager,
                                   final NAPTSwitchSelector naptSwitchSelector,
                                   final NatserviceConfig config,
-                                  final INeutronVpnManager nvpnManager,
                                   final ExternalRoutersListener externalRouterListener,
                                   final IElanService elanManager,
                                   final IInterfaceManager interfaceManager,
@@ -65,7 +63,8 @@ public class SnatServiceImplFactory extends AbstractLifecycle {
                                   final IFibManager fibManager,
                                   final NatDataUtil natDataUtil,
                                   final DataTreeEventCallbackRegistrar eventCallbacks,
-                                  final NatOverVxlanUtil natOverVxlanUtil) {
+                                  final NatOverVxlanUtil natOverVxlanUtil,
+                                  final Ipv6SubnetFlowProgrammer ipv6SubnetFlowProgrammer) {
         this.dataBroker = dataBroker;
         this.mdsalManager = mdsalManager;
         this.itmManager = itmManager;
@@ -77,7 +76,6 @@ public class SnatServiceImplFactory extends AbstractLifecycle {
         } else {
             this.natMode = null;
         }
-        this.nvpnManager = nvpnManager;
         this.externalRouterListener = externalRouterListener;
         this.elanManager = elanManager;
         this.interfaceManager = interfaceManager;
@@ -86,6 +84,7 @@ public class SnatServiceImplFactory extends AbstractLifecycle {
         this.natDataUtil = natDataUtil;
         this.eventCallbacks = eventCallbacks;
         this.natOverVxlanUtil = natOverVxlanUtil;
+        this.ipv6SubnetFlowProgrammer = ipv6SubnetFlowProgrammer;
     }
 
     @Override
@@ -108,6 +107,11 @@ public class SnatServiceImplFactory extends AbstractLifecycle {
         return null;
     }
 
+    public Ipv6ForwardingService createFlatVlanIpv6ServiceImpl() {
+        return new Ipv6ForwardingService(dataBroker, mdsalManager, itmManager, odlInterfaceRpcService,
+                idManager, naptSwitchSelector, interfaceManager, ipv6SubnetFlowProgrammer);
+    }
+
     @Nullable
     public AbstractSnatService createVxlanGreSnatServiceImpl() {
         if (natMode == NatMode.Conntrack) {