From 89e23da8e473387b2e6cb37a2b882d2d3c68655c Mon Sep 17 00:00:00 2001 From: Martin Klozik Date: Fri, 25 Sep 2015 18:00:17 +0100 Subject: Enable PVVP deployment for DPDK Vhost User and Vhost Cuse Generic PVVP deployment support has been added. Two new testcase scenarios for throughput and back2back tests with PVVP deployment were added. Original implementation of PVP has been refactored Following files were affected: modified: conf/01_testcases.conf modified: conf/02_vswitch.conf modified: conf/04_vnf.conf modified: core/__init__.py modified: core/component_factory.py modified: core/loader/loader_servant.py modified: core/vnf_controller.py deleted: core/vnf_controller_p2p.py deleted: core/vnf_controller_pvp.py modified: core/vswitch_controller_p2p.py modified: core/vswitch_controller_pvp.py new file: core/vswitch_controller_pvvp.py modified: docs/to-be-reorganized/NEWS.rst modified: docs/to-be-reorganized/quickstart.rst modified: src/dpdk/dpdk.py modified: src/ovs/ofctl.py modified: testcases/testcase.py modified: tools/tasks.py new file: vnfs/qemu/qemu.py new file: vnfs/qemu/qemu_dpdk.py modified: vnfs/qemu/qemu_dpdk_vhost_cuse.py modified: vnfs/qemu/qemu_dpdk_vhost_user.py modified: vnfs/vnf/vnf.py modified: vswitches/ovs_dpdk_vhost.py Change-Id: Ib6869a29337a184cb58c57fd96bba1183aba00ab JIRA: VSPERF-68, VSPERF-69 Signed-off-by: Martin Klozik (martinx.klozik@intel.com) Reviewed-by: Maryam Tahhan Reviewed-by: Brian Castelli --- src/dpdk/dpdk.py | 38 +++++++++++++++++++------------------- src/ovs/ofctl.py | 11 +++++++---- 2 files changed, 26 insertions(+), 23 deletions(-) (limited to 'src') diff --git a/src/dpdk/dpdk.py b/src/dpdk/dpdk.py index 093670c4..0633c7a1 100644 --- a/src/dpdk/dpdk.py +++ b/src/dpdk/dpdk.py @@ -302,7 +302,7 @@ def _unbind_nics_get_driver(): for line in _output.decode(_my_encoding).split('\n'): for nic in settings.getValue('WHITELIST_NICS'): if nic in line: - _driver_list.append((line.split("unused=",1)[1])) + _driver_list.append((line.split("unused=", 1)[1])) return _driver_list def _unbind_nics(): @@ -325,10 +325,10 @@ def _unbind_nics(): try: if nic_drivers[i] != '': tasks.run_task(['sudo', RTE_PCI_TOOL, '--bind', - nic_drivers[i], nic], - _LOGGER, 'Binding NIC %s...' % - nic, - True) + nic_drivers[i], nic], + _LOGGER, 'Binding NIC %s...' % + nic, + True) except subprocess.CalledProcessError: _LOGGER.error('Unable to bind NICs %s to drivers %s', str(settings.getValue('WHITELIST_NICS')), @@ -336,23 +336,23 @@ def _unbind_nics(): def _copy_dpdk_for_guest(): - """Copy dpdk code to GUEST_SHARE_DIR for use by guests. + """Copy dpdk code to GUEST_SHARE_DIR[s] for use by guests. """ - guest_share_dir = os.path.join( - settings.getValue('GUEST_SHARE_DIR'), 'DPDK') + for guest_dir in settings.getValue('GUEST_SHARE_DIR'): + guest_share_dir = os.path.join(guest_dir, 'DPDK') - if not os.path.exists(guest_share_dir): - os.makedirs(guest_share_dir) + if not os.path.exists(guest_share_dir): + os.makedirs(guest_share_dir) - try: - tasks.run_task(['rsync', '-a', '-r', '-l', r'--exclude="\.git"', - os.path.join(settings.getValue('RTE_SDK'), ''), - guest_share_dir], - _LOGGER, - 'Copying DPDK to shared directory...', - True) - except subprocess.CalledProcessError: - _LOGGER.error('Unable to copy DPDK to shared directory') + try: + tasks.run_task(['rsync', '-a', '-r', '-l', r'--exclude="\.git"', + os.path.join(settings.getValue('RTE_SDK'), ''), + guest_share_dir], + _LOGGER, + 'Copying DPDK to shared directory...', + True) + except subprocess.CalledProcessError: + _LOGGER.error('Unable to copy DPDK to shared directory') # diff --git a/src/ovs/ofctl.py b/src/ovs/ofctl.py index 1c5e6513..7cbdfe2c 100644 --- a/src/ovs/ofctl.py +++ b/src/ovs/ofctl.py @@ -34,6 +34,8 @@ _OVS_OFCTL_BIN = os.path.join(settings.getValue('OVS_DIR'), 'utilities', _OVS_VAR_DIR = '/usr/local/var/run/openvswitch/' +_OVS_BRIDGE_NAME = settings.getValue('VSWITCH_BRIDGE_NAME') + class OFBase(object): """Add/remove/show datapaths using ``ovs-ofctl``. """ @@ -63,7 +65,7 @@ class OFBase(object): # datapath management - def add_br(self, br_name='br0'): + def add_br(self, br_name=_OVS_BRIDGE_NAME): """Add datapath. :param br_name: Name of bridge @@ -75,7 +77,7 @@ class OFBase(object): return OFBridge(br_name, self.timeout) - def del_br(self, br_name='br0'): + def del_br(self, br_name=_OVS_BRIDGE_NAME): """Delete datapath. :param br_name: Name of bridge @@ -89,7 +91,7 @@ class OFBase(object): class OFBridge(OFBase): """Control a bridge instance using ``ovs-vsctl`` and ``ovs-ofctl``. """ - def __init__(self, br_name='br0', timeout=10): + def __init__(self, br_name=_OVS_BRIDGE_NAME, timeout=10): """Initialise bridge. :param br_name: Bridge name @@ -126,7 +128,8 @@ class OFBridge(OFBase): :return: None """ - cmd = ['sudo', _OVS_OFCTL_BIN, '-O', 'OpenFlow13', '--timeout', str(self.timeout)] + args + cmd = ['sudo', _OVS_OFCTL_BIN, '-O', 'OpenFlow13', '--timeout', + str(self.timeout)] + args return tasks.run_task( cmd, self.logger, 'Running ovs-ofctl...', check_error) -- cgit 1.2.3-korg