82c13668f85c0c9c146548c83f2cee6c28338c15
[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
15 import java.util.concurrent.ExecutionException;
16 import org.eclipse.jdt.annotation.NonNull;
17 import org.eclipse.jdt.annotation.Nullable;
18 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
19 import org.opendaylight.genius.infra.Datastore.Configuration;
20 import org.opendaylight.genius.infra.Datastore.Operational;
21 import org.opendaylight.genius.infra.TypedReadTransaction;
22 import org.opendaylight.genius.infra.TypedReadWriteTransaction;
23 import org.opendaylight.genius.infra.TypedWriteTransaction;
24 import org.opendaylight.netvirt.fibmanager.api.RouteOrigin;
25 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fibmanager.rev150330.vrfentries.VrfEntry;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.l3vpn.rev200204.adjacency.list.Adjacency;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.l3vpn.rev200204.vpn.instances.VpnInstance;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.l3vpn.rev200204.vpn.instances.vpn.instance.vpntargets.VpnTarget;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.neutron.vpn.portip.port.data.VpnPortipToPort;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.subnetmaps.Subnetmap;
32 import org.opendaylight.yangtools.yang.common.Uint32;
33 import org.opendaylight.yangtools.yang.common.Uint64;
34
35
36 public interface IVpnManager {
37     void addExtraRoute(String vpnName, String destination, String nextHop, String rd, @Nullable String routerID,
38                        Uint32 l3vni, RouteOrigin origin, @Nullable String intfName, @Nullable Adjacency operationalAdj,
39                        VrfEntry.EncapType encapType, Set<String> prefixListForRefreshFib,
40                        @NonNull TypedWriteTransaction<Configuration> confTx);
41
42     void delExtraRoute(String vpnName, String destination, String nextHop, String rd, @Nullable String routerID,
43         @Nullable String intfName, @NonNull TypedWriteTransaction<Configuration> confTx,
44         @NonNull TypedWriteTransaction<Operational> operTx);
45
46     void removePrefixFromBGP(String vpnName, String primaryRd, String extraRouteRd, String vpnInterfaceName,
47                                     String prefix, String nextHop, String nextHopTunnelIp, Uint64 dpnId,
48                                     TypedWriteTransaction<Configuration> confTx,
49                                     TypedWriteTransaction<Operational> operTx);
50
51     boolean isVPNConfigured();
52
53     String getPrimaryRdFromVpnInstance(VpnInstance vpnInstance);
54
55     void addSubnetMacIntoVpnInstance(String vpnName, String subnetVpnName, String srcMacAddress,
56         Uint64 dpnId, TypedWriteTransaction<Configuration> confTx) throws ExecutionException, InterruptedException;
57
58     void removeSubnetMacFromVpnInstance(String vpnName, String subnetVpnName, String srcMacAddress,
59         Uint64 dpnId, TypedReadWriteTransaction<Configuration> confTx)
60         throws ExecutionException, InterruptedException;
61
62     void addRouterGwMacFlow(String routerName, String routerGwMac, Uint64 dpnId, Uuid extNetworkId,
63         String subnetVpnName, TypedWriteTransaction<Configuration> confTx)
64         throws ExecutionException, InterruptedException;
65
66     void removeRouterGwMacFlow(String routerName, String routerGwMac, Uint64 dpnId, Uuid extNetworkId,
67         String subnetVpnName, TypedReadWriteTransaction<Configuration> confTx)
68         throws ExecutionException, InterruptedException;
69
70     void addArpResponderFlowsToExternalNetworkIps(String id, Collection<String> fixedIps, String macAddress,
71         Uint64 dpnId, Uuid extNetworkId);
72
73     void addArpResponderFlowsToExternalNetworkIps(String id, Collection<String> fixedIps, String routerGwMac,
74             Uint64 dpnId, String extInterfaceName, int lportTag);
75
76     void removeArpResponderFlowsToExternalNetworkIps(String id, Collection<String> fixedIps, String macAddress,
77             Uint64 dpnId, Uuid extNetworkId);
78
79     void removeArpResponderFlowsToExternalNetworkIps(String id, Collection<String> fixedIps,
80             Uint64 dpnId, String extInterfaceName, int lportTag);
81
82     void onSubnetAddedToVpn(Subnetmap subnetmap, boolean isBgpVpn, Long elanTag);
83
84     void onSubnetDeletedFromVpn(Subnetmap subnetmap, boolean isBgpVpn);
85
86     VpnInstance getVpnInstance(DataBroker broker, String vpnInstanceName);
87
88     @Deprecated
89     String getVpnRd(DataBroker broker, String vpnName);
90
91     String getVpnRd(TypedReadTransaction<Configuration> confTx, String vpnName);
92
93     @Deprecated
94     VpnPortipToPort getNeutronPortFromVpnPortFixedIp(DataBroker broker, String vpnName, String fixedIp);
95
96     VpnPortipToPort getNeutronPortFromVpnPortFixedIp(TypedReadTransaction<Configuration> confTx, String vpnName,
97         String fixedIp);
98
99     void updateRouteTargetsToSubnetAssociation(Set<VpnTarget> routeTargets, String cidr, String vpnName);
100
101     void removeRouteTargetsToSubnetAssociation(Set<VpnTarget> routeTargets, String cidr, String vpnName);
102
103     boolean checkForOverlappingSubnets(Uuid network, List<Subnetmap> subnetmapList, Uuid vpn,
104                                        Set<VpnTarget> routeTargets, List<String> failedNwList);
105
106     Set<VpnTarget> getRtListForVpn(String vpnName);
107 }