summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Klozik <martinx.klozik@intel.com>2018-01-05 13:24:09 +0000
committerMartin Klozik <martinx.klozik@intel.com>2018-01-05 14:16:00 +0000
commit58d53561bad01ae7829fdeee0c67f5dae4a9dc34 (patch)
treeeb3c8288e4dff5cf9f8a3c5622689e436dd4399a
parentb47717bb0cf09f739feb4ee9b47173c28581bf20 (diff)
vswitch: Improve add_phy_port error messages
In case that vSwitch can't add required number of physical ports, then error message should be printed. Previous implementation was not consistent. Thus error handling has been united across all vswitches and message explicitly states the cause of the failure. NOTE: A better solution would be a refactoring of all vSwitch classes to follow VPP port handling and to move port related structures and physical port check into parent vswitch class. JIRA: VSPERF-555 Change-Id: Id09a61432ea93e261f563254829348ac61f5dc8a Signed-off-by: Martin Klozik <martinx.klozik@intel.com> Reviewed-by: Jose Lausuch <jalausuch@suse.com> Reviewed-by: Al Morton <acmorton@att.com> Reviewed-by: Christian Trautman <ctrautma@redhat.com> Reviewed-by: Sridhar Rao <sridhar.rao@spirent.com> Reviewed-by: Trevor Cooper <trevor.cooper@intel.com>
-rw-r--r--testcases/testcase.py2
-rw-r--r--vswitches/ovs_dpdk_vhost.py5
-rw-r--r--vswitches/ovs_vanilla.py6
-rw-r--r--vswitches/vpp_dpdk_vhost.py3
4 files changed, 9 insertions, 7 deletions
diff --git a/testcases/testcase.py b/testcases/testcase.py
index b3300b89..cf71d596 100644
--- a/testcases/testcase.py
+++ b/testcases/testcase.py
@@ -169,7 +169,7 @@ class TestCase(object):
self._traffic['l3'] = S.getValue(self._tunnel_type.upper() + '_FRAME_L3')
self._traffic['l4'] = S.getValue(self._tunnel_type.upper() + '_FRAME_L4')
self._traffic['l2']['dstmac'] = S.getValue('NICS')[1]['mac']
- elif len(S.getValue('NICS')) and \
+ elif len(S.getValue('NICS')) >= 2 and \
(S.getValue('NICS')[0]['type'] == 'vf' or
S.getValue('NICS')[1]['type'] == 'vf'):
mac1 = S.getValue('NICS')[0]['mac']
diff --git a/vswitches/ovs_dpdk_vhost.py b/vswitches/ovs_dpdk_vhost.py
index 11b32c88..6deb0c25 100644
--- a/vswitches/ovs_dpdk_vhost.py
+++ b/vswitches/ovs_dpdk_vhost.py
@@ -114,12 +114,15 @@ class OvsDpdkVhost(IVSwitchOvs):
Creates a port of type dpdk.
The new port is named dpdk<n> where n is an integer starting from 0.
"""
+ _nics = S.getValue('NICS')
bridge = self._bridges[switch_name]
dpdk_count = self._get_port_count('type=dpdk')
+ if dpdk_count == len(_nics):
+ raise RuntimeError("Can't add phy port! There are only {} ports defined "
+ "by WHITELIST_NICS parameter!".format(len(_nics)))
port_name = 'dpdk' + str(dpdk_count)
# PCI info. Please note there must be no blank space, eg must be
# like 'options:dpdk-devargs=0000:06:00.0'
- _nics = S.getValue('NICS')
nic_pci = 'options:dpdk-devargs=' + _nics[dpdk_count]['pci']
params = ['--', 'set', 'Interface', port_name, 'type=dpdk', nic_pci]
# multi-queue enable
diff --git a/vswitches/ovs_vanilla.py b/vswitches/ovs_vanilla.py
index 942ddd41..83c52050 100644
--- a/vswitches/ovs_vanilla.py
+++ b/vswitches/ovs_vanilla.py
@@ -75,10 +75,8 @@ class OvsVanilla(IVSwitchOvs):
See IVswitch for general description
"""
if self._current_id == len(self._ports):
- self._logger.error("Can't add port! There are only " +
- len(self._ports) + " ports " +
- "defined in config!")
- raise RuntimeError('Failed to add phy port')
+ raise RuntimeError("Can't add phy port! There are only {} ports defined "
+ "by WHITELIST_NICS parameter!".format(len(self._ports)))
if not self._ports[self._current_id]:
self._logger.error("Can't detect device name for NIC %s", self._current_id)
raise ValueError("Invalid device name for %s" % self._current_id)
diff --git a/vswitches/vpp_dpdk_vhost.py b/vswitches/vpp_dpdk_vhost.py
index c62e28d4..58d6bf51 100644
--- a/vswitches/vpp_dpdk_vhost.py
+++ b/vswitches/vpp_dpdk_vhost.py
@@ -225,7 +225,8 @@ class VppDpdkVhost(IVSwitch, tasks.Process):
vpp_nics = self._get_nic_info(key='Pci')
# check if there are any NICs left
if len(self._phy_ports) >= len(S.getValue('NICS')):
- raise RuntimeError('All available NICs are already configured!')
+ raise RuntimeError("Can't add phy port! There are only {} ports defined "
+ "by WHITELIST_NICS parameter!".format(len(S.getValue('NICS'))))
nic = S.getValue('NICS')[len(self._phy_ports)]
if not nic['pci'] in vpp_nics: