diff options
author | Maryam Tahhan <maryam.tahhan@intel.com> | 2015-06-08 15:03:08 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@172.30.200.206> | 2015-06-08 15:03:08 +0000 |
commit | f3f1ff9b08efa4a18bdcd2284d0a5f3b6ee526e0 (patch) | |
tree | a736bab8be95381d2277626c8df2f88ccce714d0 /vswitches/vswitch.py | |
parent | 1612a95c88e6ccff6f9b158f9b106e410b1d7324 (diff) | |
parent | 8d6777df09c3dc441013a31f21cc50ab3b0f42a3 (diff) |
Merge "framework: Add reworked framework to repo"
Diffstat (limited to 'vswitches/vswitch.py')
-rw-r--r-- | vswitches/vswitch.py | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/vswitches/vswitch.py b/vswitches/vswitch.py new file mode 100644 index 00000000..713974ae --- /dev/null +++ b/vswitches/vswitch.py @@ -0,0 +1,114 @@ +# Copyright 2015 Intel Corporation. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Generic interface VSPERF uses for controlling a vSwitch +""" + +class IVSwitch(object): + """Interface class that is implemented by vSwitch-specific classes + + Other methods are called only between start() and stop() + """ + def start(self): + """Start the vSwitch + + If vSwitch is split to multiple processes, has kernel modules etc., + this is expected to set them all up in correct sequence + """ + raise NotImplementedError() + + def stop(self): + """Stop the vSwitch + + If vSwitch is split to multiple processes, has kernel modules etc., + this is expected to terminate and clean all of them in correct sequence + """ + raise NotImplementedError() + + def add_switch(self, switch_name): + """Create a new logical switch with no ports + + :param switch_name: The name of the new logical switch + :returns: None + """ + raise NotImplementedError() + + def del_switch(self, switch_name): + """Destroy the given logical switch + + :param switch_name: The name of the logical switch to be destroyed + :returns: None + """ + raise NotImplementedError() + + def add_phy_port(self, switch_name): + """Create a new port to the logical switch that is attached to a + physical port + + :param switch_name: The switch where the port is attached to + :returns: (port name, OpenFlow port number) + """ + raise NotImplementedError() + + def add_vport(self, switch_name): + """Create a new port to the logical switch for VM connections + + :param switch_name: The switch where the port is attached to + :returns: (port name, OpenFlow port number) + """ + raise NotImplementedError() + + def get_ports(self, switch_name): + """Return a list of tuples describing the ports of the logical switch + + :param switch_name: The switch whose ports to return + :returns: [(port name, OpenFlow port number), ...] + """ + raise NotImplementedError() + + def del_port(self, switch_name, port_name): + """Delete the port from the logical switch + + The port can be either physical or virtual + + :param switch_name: The switch on which to operate + :param port_name: The port to delete + """ + raise NotImplementedError() + + def add_flow(self, switch_name, flow): + """Add a flow rule to the logical switch + + :param switch_name: The switch on which to operate + :param flow: Flow description as a dictionary + + Example flow dictionary: + flow = { + 'in_port': '1', + 'idle_timeout': '0', + 'actions': ['output:3'] + } + """ + raise NotImplementedError() + + def del_flow(self, switch_name, flow=None): + """Delete the flow rule from the logical switch + + :param switch_name: The switch on which to operate + :param flow: Flow description as a dictionary + + For flow dictionary description, see add_flow + For flow==None, all flows are deleted + """ + raise NotImplementedError() |