MRI version bumpup for Aluminium
[netvirt.git] / elanmanager / api / src / main / java / org / opendaylight / netvirt / elanmanager / api / IElanService.java
1 /*
2  * Copyright (c) 2016 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.elanmanager.api;
10
11 import java.util.Collection;
12 import java.util.List;
13 import org.opendaylight.netvirt.elan.arp.responder.ArpResponderInput;
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.elan.rev150602.elan.dpn.interfaces.elan.dpn.interfaces.list.DpnInterfaces;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.elan.rev150602.elan.instances.ElanInstance;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.elan.rev150602.elan.interfaces.ElanInterface;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.elan.rev150602.forwarding.entries.MacEntry;
18 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
19 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
20 import org.opendaylight.yangtools.yang.common.Uint32;
21 import org.opendaylight.yangtools.yang.common.Uint64;
22
23 public interface IElanService extends IEtreeService {
24
25     boolean createElanInstance(String elanInstanceName, long macTimeout, String description);
26
27     void updateElanInstance(String elanInstanceName, long newMacTimout, String newDescription);
28
29     boolean deleteElanInstance(String elanInstanceName);
30
31     void addElanInterface(String elanInstanceName, String interfaceName, List<String> staticMacAddresses,
32             String description);
33
34     void updateElanInterface(String elanInstanceName, String interfaceName, List<String> updatedStaticMacAddresses,
35             String newDescription);
36
37     void deleteElanInterface(String interfaceName);
38
39     void addStaticMacAddress(String interfaceName, String macAddress);
40
41     void deleteStaticMacAddress(String interfaceName, String macAddress);
42
43     Collection<MacEntry> getElanMacTable(String elanInstanceName);
44
45     void flushMACTable(String elanInstanceName);
46
47     ElanInstance getElanInstance(String elanInstanceName);
48
49     List<ElanInstance> getElanInstances();
50
51     List<String> getElanInterfaces(String elanInstanceName);
52
53     void createExternalElanNetwork(ElanInstance elanInstance);
54
55     void updateExternalElanNetwork(ElanInstance elanInstance);
56
57     void createExternalElanNetworks(Node node);
58
59     void updateExternalElanNetworks(Node origNode, Node updatedNode);
60
61     void deleteExternalElanNetwork(ElanInstance elanInstance);
62
63     void deleteExternalElanNetworks(Node node);
64
65     Collection<String> getExternalElanInterfaces(String elanInstanceName);
66
67     String getExternalElanInterface(String elanInstanceName, Uint64 dpnId);
68
69     boolean isExternalInterface(String interfaceName);
70
71     ElanInterface getElanInterfaceByElanInterfaceName(String interfaceName);
72
73     @Deprecated
74     void handleKnownL3DmacAddress(String macAddress, String elanInstanceName, int addOrRemove);
75
76     void addKnownL3DmacAddress(String macAddress, String elanInstanceName);
77
78     void removeKnownL3DmacAddress(String macAddress, String elanInstanceName);
79
80     Boolean isOpenStackVniSemanticsEnforced();
81
82     /**
83      * Add ARP Responder Flow on the given dpn for the ingress interface.
84      *
85      * @param arpResponderInput
86      *            ArpResponder Input parameters
87      * @see ArpResponderInput
88      */
89     void addArpResponderFlow(ArpResponderInput arpResponderInput);
90
91     /**
92      * Add ARP Responder Flow on the given dpn for the SR-IOV VMs ingress interface.
93      *
94      * @param arpResponderInput
95      *            ArpResponder Input parameters
96      * @see ArpResponderInput
97      * @param elanInstanceName
98      *           The elanInstance  corresponding to the interface
99      */
100     void addExternalTunnelArpResponderFlow(ArpResponderInput arpResponderInput, String elanInstanceName);
101
102     /**
103      * Remove ARP Responder flow from the given dpn for the ingress interface.
104      *
105      * @param arpResponderInput
106      *            ArpResponder Input parameters
107      * @see ArpResponderInput
108      */
109     void removeArpResponderFlow(ArpResponderInput arpResponderInput);
110
111     Uint32 retrieveNewElanTag(String idKey);
112
113     InstanceIdentifier<DpnInterfaces> getElanDpnInterfaceOperationalDataPath(String elanInstanceName, Uint64 dpnId);
114
115     DpnInterfaces getElanInterfaceInfoByElanDpn(String elanInstanceName, Uint64 dpId);
116 }