X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=vswitches%2Fovs_vanilla.py;h=6a380b1b0ccb662afcfeacc87f10f9a433373a37;hb=refs%2Fchanges%2F63%2F11063%2F5;hp=04058d97ceac14b56d54224ce77fe8c16d56e00d;hpb=67b0760d2b123ee834f8552057aed0e68a282257;p=vswitchperf.git diff --git a/vswitches/ovs_vanilla.py b/vswitches/ovs_vanilla.py index 04058d97..6a380b1b 100644 --- a/vswitches/ovs_vanilla.py +++ b/vswitches/ovs_vanilla.py @@ -1,4 +1,4 @@ -# 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. @@ -17,16 +17,13 @@ import logging from conf import settings -from vswitches.vswitch import IVSwitch -from src.ovs import VSwitchd, OFBridge +from vswitches.ovs import IVSwitchOvs +from src.ovs import VSwitchd, DPCtl from tools.module_manager import ModuleManager from tools import tasks -_LOGGER = logging.getLogger(__name__) -VSWITCHD_CONST_ARGS = ['--', '--log-file'] - -class OvsVanilla(IVSwitch): - """VSwitch Vanilla implementation +class OvsVanilla(IVSwitchOvs): + """ Open vSwitch This is wrapper for functionality implemented in src.ovs. @@ -35,16 +32,16 @@ class OvsVanilla(IVSwitch): see the interface definition. """ - _logger = logging.getLogger() _ports = settings.getValue('VSWITCH_VANILLA_PHY_PORT_NAMES') _current_id = 0 _vport_id = 0 def __init__(self): - #vswitchd_args = VSWITCHD_CONST_ARGS - vswitchd_args = ["unix:%s" % VSwitchd.get_db_sock_path()] - vswitchd_args += settings.getValue('VSWITCHD_VANILLA_ARGS') - self._vswitchd = VSwitchd(vswitchd_args=vswitchd_args, + super(OvsVanilla, self).__init__() + self._logger = logging.getLogger(__name__) + self._vswitchd_args = ["unix:%s" % VSwitchd.get_db_sock_path()] + self._vswitchd_args += settings.getValue('VSWITCHD_VANILLA_ARGS') + self._vswitchd = VSwitchd(vswitchd_args=self._vswitchd_args, expected_cmd="db.sock: connected") self._bridges = {} self._module_manager = ModuleManager() @@ -56,9 +53,7 @@ class OvsVanilla(IVSwitch): """ self._module_manager.insert_modules( settings.getValue('VSWITCH_VANILLA_KERNEL_MODULES')) - self._logger.info("Starting Vswitchd...") - self._vswitchd.start() - self._logger.info("Vswitchd...Started.") + super(OvsVanilla, self).start() def stop(self): """See IVswitch for general description @@ -70,28 +65,15 @@ class OvsVanilla(IVSwitch): tapx = 'tap' + str(i) tasks.run_task(['sudo', 'ip', 'tuntap', 'del', tapx, 'mode', 'tap'], - _LOGGER, 'Deleting ' + tapx, False) + self._logger, 'Deleting ' + tapx, False) self._vport_id = 0 - self._vswitchd.kill() - self._module_manager.remove_modules() - + super(OvsVanilla, self).stop() + dpctl = DPCtl() + dpctl.del_dp() - def add_switch(self, switch_name, params=None): - """See IVswitch for general description - """ - bridge = OFBridge(switch_name) - bridge.create(params) - bridge.set_db_attribute('Open_vSwitch', '.', - 'other_config:max-idle', '60000') - self._bridges[switch_name] = bridge + self._module_manager.remove_modules() - def del_switch(self, switch_name): - """See IVswitch for general description - """ - bridge = self._bridges[switch_name] - self._bridges.pop(switch_name) - bridge.destroy() def add_phy_port(self, switch_name): """ @@ -116,7 +98,7 @@ class OvsVanilla(IVSwitch): # For PVP only tasks.run_task(['sudo', 'ifconfig', port_name, '0'], - _LOGGER, 'Remove IP', False) + self._logger, 'Remove IP', False) of_port = bridge.add_port(port_name, params) self._current_id += 1 @@ -134,48 +116,17 @@ class OvsVanilla(IVSwitch): tasks.run_task(['sudo', 'ip', 'tuntap', 'del', tap_name, 'mode', 'tap'], - _LOGGER, 'Creating tap device...', False) + self._logger, 'Creating tap device...', False) tasks.run_task(['sudo', 'ip', 'tuntap', 'add', tap_name, 'mode', 'tap'], - _LOGGER, 'Creating tap device...', False) + self._logger, 'Creating tap device...', False) tasks.run_task(['sudo', 'ifconfig', tap_name, '0'], - _LOGGER, 'Bring up ' + tap_name, False) + self._logger, 'Bring up ' + tap_name, False) bridge = self._bridges[switch_name] of_port = bridge.add_port(tap_name, []) return (tap_name, of_port) - def get_ports(self, switch_name): - """See IVswitch for general description - """ - bridge = self._bridges[switch_name] - ports = list(bridge.get_ports().items()) - return [(name, of_port) for (name, (of_port, _)) in ports] - - def del_port(self, switch_name, port_name): - """See IVswitch for general description - """ - bridge = self._bridges[switch_name] - bridge.del_port(port_name) - - def add_flow(self, switch_name, flow): - """See IVswitch for general description - """ - bridge = self._bridges[switch_name] - bridge.add_flow(flow) - - def del_flow(self, switch_name, flow=None): - """See IVswitch for general description - """ - flow = flow or {} - bridge = self._bridges[switch_name] - bridge.del_flow(flow) - - def dump_flows(self, switch_name): - """See IVswitch for general description - """ - bridge = self._bridges[switch_name] - bridge.dump_flows()