ci: show TC results inside Jenkins job console output
[vswitchperf.git] / vswitches / vswitch.py
1 # Copyright 2015 Intel Corporation.
2 #
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
6 #
7 #   http://www.apache.org/licenses/LICENSE-2.0
8 #
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.
14
15 """Generic interface VSPERF uses for controlling a vSwitch
16 """
17
18 class IVSwitch(object):
19     """Interface class that is implemented by vSwitch-specific classes
20
21     Other methods are called only between start() and stop()
22     """
23     def start(self):
24         """Start the vSwitch
25
26         If vSwitch is split to multiple processes, has kernel modules etc.,
27         this is expected to set them all up in correct sequence
28         """
29         raise NotImplementedError()
30
31     def stop(self):
32         """Stop the vSwitch
33
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
36         """
37         raise NotImplementedError()
38
39     def add_switch(self, switch_name, params):
40         """Create a new logical switch with no ports
41
42         :param switch_name: The name of the new logical switch
43         :param params: Optional parameters to configure switch
44
45         :returns: None
46         """
47         raise NotImplementedError()
48
49     def del_switch(self, switch_name):
50         """Destroy the given logical switch
51
52         :param switch_name: The name of the logical switch to be destroyed
53         :returns: None
54         """
55         raise NotImplementedError()
56
57     def add_phy_port(self, switch_name):
58         """Create a new port to the logical switch that is attached to a
59         physical port
60
61         :param switch_name: The switch where the port is attached to
62         :returns: (port name, OpenFlow port number)
63         """
64         raise NotImplementedError()
65
66     def add_vport(self, switch_name):
67         """Create a new port to the logical switch for VM connections
68
69         :param switch_name: The switch where the port is attached to
70         :returns: (port name, OpenFlow port number)
71         """
72         raise NotImplementedError()
73
74     def get_ports(self, switch_name):
75         """Return a list of tuples describing the ports of the logical switch
76
77         :param switch_name: The switch whose ports to return
78         :returns: [(port name, OpenFlow port number), ...]
79         """
80         raise NotImplementedError()
81
82     def del_port(self, switch_name, port_name):
83         """Delete the port from the logical switch
84
85         The port can be either physical or virtual
86
87         :param switch_name: The switch on which to operate
88         :param port_name: The port to delete
89         """
90         raise NotImplementedError()
91
92     def add_flow(self, switch_name, flow):
93         """Add a flow rule to the logical switch
94
95         :param switch_name: The switch on which to operate
96         :param flow: Flow description as a dictionary
97
98         Example flow dictionary:
99             flow = {
100                 'in_port': '1',
101                 'idle_timeout': '0',
102                 'actions': ['output:3']
103             }
104         """
105         raise NotImplementedError()
106
107     def del_flow(self, switch_name, flow=None):
108         """Delete the flow rule from the logical switch
109
110         :param switch_name: The switch on which to operate
111         :param flow: Flow description as a dictionary
112
113         For flow dictionary description, see add_flow
114         For flow==None, all flows are deleted
115         """
116         raise NotImplementedError()
117
118     def dump_flows(self, switch_name):
119         """Dump flows from the logical switch
120
121         :param switch_name: The switch on which to operate
122         """
123         raise NotImplementedError()