"neutronvpn:createL3VPN" fails to create L3VPN for IPv6 use case.
[netvirt.git] / vpnmanager / api / src / main / java / org / opendaylight / netvirt / vpnmanager / api / IVpnManager.java
index 03a43ab7a08beb57b76ff0bf3736237bf5c89519..82c13668f85c0c9c146548c83f2cee6c28338c15 100644 (file)
@@ -8,95 +8,94 @@
 
 package org.opendaylight.netvirt.vpnmanager.api;
 
-import java.math.BigInteger;
 import java.util.Collection;
 import java.util.List;
 import java.util.Set;
 
+import java.util.concurrent.ExecutionException;
+import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.jdt.annotation.Nullable;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
-import org.opendaylight.genius.mdsalutil.MatchInfoBase;
+import org.opendaylight.genius.infra.Datastore.Configuration;
+import org.opendaylight.genius.infra.Datastore.Operational;
+import org.opendaylight.genius.infra.TypedReadTransaction;
+import org.opendaylight.genius.infra.TypedReadWriteTransaction;
+import org.opendaylight.genius.infra.TypedWriteTransaction;
 import org.opendaylight.netvirt.fibmanager.api.RouteOrigin;
-import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.vpn.af.config.vpntargets.VpnTarget;
-import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.vpn.instances.VpnInstance;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fibmanager.rev150330.vrfentries.VrfEntry;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.l3vpn.rev130911.adjacency.list.Adjacency;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.l3vpn.rev200204.adjacency.list.Adjacency;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.l3vpn.rev200204.vpn.instances.VpnInstance;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.l3vpn.rev200204.vpn.instances.vpn.instance.vpntargets.VpnTarget;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.neutron.vpn.portip.port.data.VpnPortipToPort;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.subnetmaps.Subnetmap;
+import org.opendaylight.yangtools.yang.common.Uint32;
+import org.opendaylight.yangtools.yang.common.Uint64;
 
 
 public interface IVpnManager {
-    void addExtraRoute(String vpnName, String destination, String nextHop,
-            String rd, String routerID, int label, RouteOrigin origin);
+    void addExtraRoute(String vpnName, String destination, String nextHop, String rd, @Nullable String routerID,
+                       Uint32 l3vni, RouteOrigin origin, @Nullable String intfName, @Nullable Adjacency operationalAdj,
+                       VrfEntry.EncapType encapType, Set<String> prefixListForRefreshFib,
+                       @NonNull TypedWriteTransaction<Configuration> confTx);
 
-    void addExtraRoute(String vpnName, String destination, String nextHop, String rd, String routerID,
-            Long l3vni, RouteOrigin origin, String intfName, Adjacency operationalAdj,
-            VrfEntry.EncapType encapType, WriteTransaction writeConfigTxn);
+    void delExtraRoute(String vpnName, String destination, String nextHop, String rd, @Nullable String routerID,
+        @Nullable String intfName, @NonNull TypedWriteTransaction<Configuration> confTx,
+        @NonNull TypedWriteTransaction<Operational> operTx);
 
-    void delExtraRoute(String vpnName, String destination, String nextHop, String rd, String routerID);
-
-    void delExtraRoute(String vpnName, String destination, String nextHop, String rd, String routerID,
-            String intfName, WriteTransaction writeConfigTxn);
-
-    void removePrefixFromBGP(String primaryRd, String rd, String vpnName, String prefix, String nextHop,
-            String tunnelIp, BigInteger dpnId, WriteTransaction writeConfigTxn);
-
-    /**
-     * Returns true if the specified VPN exists.
-     *
-     * @param vpnName it must match against the vpn-instance-name attrib in one of the VpnInstances
-     */
-    boolean existsVpn(String vpnName);
+    void removePrefixFromBGP(String vpnName, String primaryRd, String extraRouteRd, String vpnInterfaceName,
+                                    String prefix, String nextHop, String nextHopTunnelIp, Uint64 dpnId,
+                                    TypedWriteTransaction<Configuration> confTx,
+                                    TypedWriteTransaction<Operational> operTx);
 
     boolean isVPNConfigured();
 
-    /**
-     * Retrieves the list of DPNs where the specified VPN has footprint.
-     *
-     * @param vpnInstanceName The name of the Vpn instance
-     * @return The list of DPNs
-     */
-    List<BigInteger> getDpnsOnVpn(String vpnInstanceName);
-
     String getPrimaryRdFromVpnInstance(VpnInstance vpnInstance);
 
     void addSubnetMacIntoVpnInstance(String vpnName, String subnetVpnName, String srcMacAddress,
-            BigInteger dpnId, WriteTransaction tx);
+        Uint64 dpnId, TypedWriteTransaction<Configuration> confTx) throws ExecutionException, InterruptedException;
 
     void removeSubnetMacFromVpnInstance(String vpnName, String subnetVpnName, String srcMacAddress,
-            BigInteger dpnId, WriteTransaction tx);
+        Uint64 dpnId, TypedReadWriteTransaction<Configuration> confTx)
+        throws ExecutionException, InterruptedException;
 
-    void addRouterGwMacFlow(String routerName, String routerGwMac, BigInteger dpnId, Uuid extNetworkId,
-            String subnetVpnName, WriteTransaction writeTx);
+    void addRouterGwMacFlow(String routerName, String routerGwMac, Uint64 dpnId, Uuid extNetworkId,
+        String subnetVpnName, TypedWriteTransaction<Configuration> confTx)
+        throws ExecutionException, InterruptedException;
 
-    void removeRouterGwMacFlow(String routerName, String routerGwMac, BigInteger dpnId, Uuid extNetworkId,
-            String subnetVpnName, WriteTransaction writeTx);
+    void removeRouterGwMacFlow(String routerName, String routerGwMac, Uint64 dpnId, Uuid extNetworkId,
+        String subnetVpnName, TypedReadWriteTransaction<Configuration> confTx)
+        throws ExecutionException, InterruptedException;
 
     void addArpResponderFlowsToExternalNetworkIps(String id, Collection<String> fixedIps, String macAddress,
-            BigInteger dpnId, Uuid extNetworkId, WriteTransaction writeTx);
+        Uint64 dpnId, Uuid extNetworkId);
 
     void addArpResponderFlowsToExternalNetworkIps(String id, Collection<String> fixedIps, String routerGwMac,
-            BigInteger dpnId, String extInterfaceName, int lportTag, WriteTransaction writeTx);
+            Uint64 dpnId, String extInterfaceName, int lportTag);
 
     void removeArpResponderFlowsToExternalNetworkIps(String id, Collection<String> fixedIps, String macAddress,
-            BigInteger dpnId, Uuid extNetworkId);
+            Uint64 dpnId, Uuid extNetworkId);
 
     void removeArpResponderFlowsToExternalNetworkIps(String id, Collection<String> fixedIps,
-            BigInteger dpnId, String extInterfaceName, int lportTag);
+            Uint64 dpnId, String extInterfaceName, int lportTag);
 
     void onSubnetAddedToVpn(Subnetmap subnetmap, boolean isBgpVpn, Long elanTag);
 
     void onSubnetDeletedFromVpn(Subnetmap subnetmap, boolean isBgpVpn);
 
-    List<MatchInfoBase> getEgressMatchesForVpn(String vpnName);
-
     VpnInstance getVpnInstance(DataBroker broker, String vpnInstanceName);
 
+    @Deprecated
     String getVpnRd(DataBroker broker, String vpnName);
 
+    String getVpnRd(TypedReadTransaction<Configuration> confTx, String vpnName);
+
+    @Deprecated
     VpnPortipToPort getNeutronPortFromVpnPortFixedIp(DataBroker broker, String vpnName, String fixedIp);
 
+    VpnPortipToPort getNeutronPortFromVpnPortFixedIp(TypedReadTransaction<Configuration> confTx, String vpnName,
+        String fixedIp);
+
     void updateRouteTargetsToSubnetAssociation(Set<VpnTarget> routeTargets, String cidr, String vpnName);
 
     void removeRouteTargetsToSubnetAssociation(Set<VpnTarget> routeTargets, String cidr, String vpnName);