1 # Copyright 2015 Intel Corporation.
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
7 # http://www.apache.org/licenses/LICENSE-2.0
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
15 """Generic interface VSPERF uses for controlling a vSwitch
18 class IVSwitch(object):
19 """Interface class that is implemented by vSwitch-specific classes
21 Other methods are called only between start() and stop()
26 If vSwitch is split to multiple processes, has kernel modules etc.,
27 this is expected to set them all up in correct sequence
29 raise NotImplementedError()
34 If vSwitch is split to multiple processes, has kernel modules etc.,
35 this is expected to terminate and clean all of them in correct sequence
37 raise NotImplementedError()
39 def add_switch(self, switch_name):
40 """Create a new logical switch with no ports
42 :param switch_name: The name of the new logical switch
45 raise NotImplementedError()
47 def del_switch(self, switch_name):
48 """Destroy the given logical switch
50 :param switch_name: The name of the logical switch to be destroyed
53 raise NotImplementedError()
55 def add_phy_port(self, switch_name):
56 """Create a new port to the logical switch that is attached to a
59 :param switch_name: The switch where the port is attached to
60 :returns: (port name, OpenFlow port number)
62 raise NotImplementedError()
64 def add_vport(self, switch_name):
65 """Create a new port to the logical switch for VM connections
67 :param switch_name: The switch where the port is attached to
68 :returns: (port name, OpenFlow port number)
70 raise NotImplementedError()
72 def get_ports(self, switch_name):
73 """Return a list of tuples describing the ports of the logical switch
75 :param switch_name: The switch whose ports to return
76 :returns: [(port name, OpenFlow port number), ...]
78 raise NotImplementedError()
80 def del_port(self, switch_name, port_name):
81 """Delete the port from the logical switch
83 The port can be either physical or virtual
85 :param switch_name: The switch on which to operate
86 :param port_name: The port to delete
88 raise NotImplementedError()
90 def add_flow(self, switch_name, flow):
91 """Add a flow rule to the logical switch
93 :param switch_name: The switch on which to operate
94 :param flow: Flow description as a dictionary
96 Example flow dictionary:
100 'actions': ['output:3']
103 raise NotImplementedError()
105 def del_flow(self, switch_name, flow=None):
106 """Delete the flow rule from the logical switch
108 :param switch_name: The switch on which to operate
109 :param flow: Flow description as a dictionary
111 For flow dictionary description, see add_flow
112 For flow==None, all flows are deleted
114 raise NotImplementedError()