NETVIRT-1630 migrate to md-sal APIs
[netvirt.git] / vpnmanager / api / src / main / java / org / opendaylight / netvirt / vpnmanager / api / IVpnManager.java
1 /*
2  * Copyright © 2015, 2017 Ericsson India Global Services Pvt Ltd. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8
9 package org.opendaylight.netvirt.vpnmanager.api;
10
11 import java.util.Collection;
12 import java.util.List;
13 import java.util.Set;
14 import java.util.concurrent.ExecutionException;
15 import org.eclipse.jdt.annotation.NonNull;
16 import org.eclipse.jdt.annotation.Nullable;
17 import org.opendaylight.genius.infra.Datastore.Configuration;
18 import org.opendaylight.genius.infra.Datastore.Operational;
19 import org.opendaylight.genius.infra.TypedReadTransaction;
20 import org.opendaylight.genius.infra.TypedReadWriteTransaction;
21 import org.opendaylight.genius.infra.TypedWriteTransaction;
22 import org.opendaylight.mdsal.binding.api.DataBroker;
23 import org.opendaylight.netvirt.fibmanager.api.RouteOrigin;
24 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fibmanager.rev150330.vrfentries.VrfEntry;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.l3vpn.rev200204.adjacency.list.Adjacency;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.l3vpn.rev200204.vpn.instances.VpnInstance;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.l3vpn.rev200204.vpn.instances.vpn.instance.vpntargets.VpnTarget;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.neutron.vpn.portip.port.data.VpnPortipToPort;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.subnetmaps.Subnetmap;
31 import org.opendaylight.yangtools.yang.common.Uint32;
32 import org.opendaylight.yangtools.yang.common.Uint64;
33
34
35 public interface IVpnManager {
36     void addExtraRoute(String vpnName, String destination, String nextHop, String rd, @Nullable String routerID,
37                        Uint32 l3vni, RouteOrigin origin, @Nullable String intfName, @Nullable Adjacency operationalAdj,
38                        VrfEntry.EncapType encapType, Set<String> prefixListForRefreshFib,
39                        @NonNull TypedWriteTransaction<Configuration> confTx);
40
41     void delExtraRoute(String vpnName, String destination, String nextHop, String rd, @Nullable String routerID,
42         @Nullable String intfName, @NonNull TypedWriteTransaction<Configuration> confTx,
43         @NonNull TypedWriteTransaction<Operational> operTx);
44
45     void removePrefixFromBGP(String vpnName, String primaryRd, String extraRouteRd, String vpnInterfaceName,
46                                     String prefix, String nextHop, String nextHopTunnelIp, Uint64 dpnId,
47                                     TypedWriteTransaction<Configuration> confTx,
48                                     TypedWriteTransaction<Operational> operTx);
49
50     boolean isVPNConfigured();
51
52     String getPrimaryRdFromVpnInstance(VpnInstance vpnInstance);
53
54     void addSubnetMacIntoVpnInstance(String vpnName, String subnetVpnName, String srcMacAddress,
55         Uint64 dpnId, TypedWriteTransaction<Configuration> confTx) throws ExecutionException, InterruptedException;
56
57     void removeSubnetMacFromVpnInstance(String vpnName, String subnetVpnName, String srcMacAddress,
58         Uint64 dpnId, TypedReadWriteTransaction<Configuration> confTx)
59         throws ExecutionException, InterruptedException;
60
61     void addRouterGwMacFlow(String routerName, String routerGwMac, Uint64 dpnId, Uuid extNetworkId,
62         String subnetVpnName, TypedWriteTransaction<Configuration> confTx)
63         throws ExecutionException, InterruptedException;
64
65     void removeRouterGwMacFlow(String routerName, String routerGwMac, Uint64 dpnId, Uuid extNetworkId,
66         String subnetVpnName, TypedReadWriteTransaction<Configuration> confTx)
67         throws ExecutionException, InterruptedException;
68
69     void addArpResponderFlowsToExternalNetworkIps(String id, Collection<String> fixedIps, String macAddress,
70         Uint64 dpnId, Uuid extNetworkId);
71
72     void addArpResponderFlowsToExternalNetworkIps(String id, Collection<String> fixedIps, String routerGwMac,
73             Uint64 dpnId, String extInterfaceName, int lportTag);
74
75     void removeArpResponderFlowsToExternalNetworkIps(String id, Collection<String> fixedIps, String macAddress,
76             Uint64 dpnId, Uuid extNetworkId);
77
78     void removeArpResponderFlowsToExternalNetworkIps(String id, Collection<String> fixedIps,
79             Uint64 dpnId, String extInterfaceName, int lportTag);
80
81     void onSubnetAddedToVpn(Subnetmap subnetmap, boolean isBgpVpn, Long elanTag);
82
83     void onSubnetDeletedFromVpn(Subnetmap subnetmap, boolean isBgpVpn);
84
85     VpnInstance getVpnInstance(DataBroker broker, String vpnInstanceName);
86
87     @Deprecated
88     String getVpnRd(DataBroker broker, String vpnName);
89
90     String getVpnRd(TypedReadTransaction<Configuration> confTx, String vpnName);
91
92     @Deprecated
93     VpnPortipToPort getNeutronPortFromVpnPortFixedIp(DataBroker broker, String vpnName, String fixedIp);
94
95     VpnPortipToPort getNeutronPortFromVpnPortFixedIp(TypedReadTransaction<Configuration> confTx, String vpnName,
96         String fixedIp);
97
98     void updateRouteTargetsToSubnetAssociation(Set<VpnTarget> routeTargets, String cidr, String vpnName);
99
100     void removeRouteTargetsToSubnetAssociation(Set<VpnTarget> routeTargets, String cidr, String vpnName);
101
102     boolean checkForOverlappingSubnets(Uuid network, List<Subnetmap> subnetmapList, Uuid vpn,
103                                        Set<VpnTarget> routeTargets, List<String> failedNwList);
104
105     Set<VpnTarget> getRtListForVpn(String vpnName);
106 }