-# Copyright 2015 Intel Corporation.
+# Copyright 2015-2016 Intel Corporation.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
Other methods are called only between start() and stop()
"""
+ def get_version(self):
+ """Return version of vSwitch and DPDK (if used by vSwitch)
+ This method should be implemented in case, that version
+ of vswitch or DPDK can be read only during vSwitch runtime.
+ Otherwise it can be implemented inside tools/systeminfo.py.
+ """
+ raise NotImplementedError()
+
def start(self):
"""Start the vSwitch
"""
raise NotImplementedError()
+ def restart(self):
+ """Retart the vSwitch
+
+ Restart of vSwitch is required for failover testcases.
+ """
+ raise NotImplementedError()
+
def stop(self):
"""Stop the vSwitch
"""
raise NotImplementedError()
+ def add_tunnel_port(self, switch_name, remote_ip, tunnel_type, params=None):
+ """Create a new port to the logical switch for tunneling
+
+ :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
"""
raise NotImplementedError()
- def add_flow(self, switch_name, flow):
+ def add_flow(self, switch_name, flow, cache='off'):
"""Add a flow rule to the logical switch
:param switch_name: The switch on which to operate
:param flow: Flow description as a dictionary
+ :param cache: Optional. Specifies if flow should be inserted
+ to the switch or cached to increase performance during manipulation
+ with large number of flows.
+ Values:
+ 'off' - cache is off and flow is inserted directly to the switch
+ 'on' - cache is on and flow is inserted into the cache
+ 'flush' - cache content will be inserted into the switch
Example flow dictionary:
flow = {
"""
raise NotImplementedError()
+ def add_connection(self, switch_name, port1, port2, bidir=False):
+ """Creates connection between given ports.
+
+ :param switch_name: switch on which to operate
+ :param port1: port to be used in connection
+ :param port2: port to be used in connection
+ :param bidir: switch between uni and bidirectional traffic
+
+ :raises: RuntimeError
+ """
+ raise NotImplementedError()
+
+ def del_connection(self, switch_name, port1, port2, bidir=False):
+ """Remove connection between two interfaces.
+
+ :param switch_name: switch on which to operate
+ :param port1: port to be used in connection
+ :param port2: port to be used in connection
+ :param bidir: switch between uni and bidirectional traffic
+
+ :raises: RuntimeError
+ """
+ raise NotImplementedError()
+
+ def dump_connections(self, switch_name):
+ """Dump connections between interfaces.
+
+ :param switch_name: switch on which to operate
+
+ :raises: RuntimeError
+ """
+ raise NotImplementedError()
+
def dump_flows(self, switch_name):
"""Dump flows from the logical switch
:param switch_name: The switch on which to operate
"""
raise NotImplementedError()
+
+ def add_route(self, switch_name, network, destination):
+ """Add a route for tunneling routing table
+
+ :param switch_name: The switch on which to operate
+ :param network: Target destination network
+ :param destination: Gateway IP
+ """
+ raise NotImplementedError()
+
+ def set_tunnel_arp(self, ip_addr, mac_addr, switch_name):
+ """Add arp entry for tunneling
+
+ :param ip_addr: IP of bridge
+ :param mac_addr: MAC address of the bridge
+ :param switch_name: Name of the bridge
+ """
+ raise NotImplementedError()