# See the License for the specific language governing permissions and
# limitations under the License.
+from __future__ import print_function
+
"""VPP PCI Utility libraries"""
import re
+import logging
from vpplib.VPPUtil import VPPUtil
ids = re.findall(PCI_DEV_ID_REGEX, device_string)
descriptions = re.findall(r'\'([\s\S]*?)\'', device_string)
- unused = re.findall(r'unused=[\w,]+', device_string)
+ unused = re.findall(r'unused=\w+|unused=', device_string)
for i, j in enumerate(ids):
device = {'description': descriptions[i]}
:param devices: A list of devices
:param show_interfaces: show the kernel information
+ :param show_header: Display the header if true
:type devices: dict
:type show_interfaces: bool
+ :type show_header: bool
"""
-
if show_interfaces:
header = "{:15} {:25} {:50}".format("PCI ID",
"Kernel Interface(s)",
"Description")
dashseparator = ("-" * (len(header) - 2))
-
- if show_header == True:
- print header
- print dashseparator
+ if show_header is True:
+ print (header)
+ print (dashseparator)
for dit in devices.items():
dvid = dit[0]
device = dit[1]
else:
interface = interfaces[i]
- print "{:15} {:25} {:50}".format(
- dvid, interface, device['description'])
+ print ("{:15} {:25} {:50}".format(
+ dvid, interface, device['description']))
else:
- print "{:15} {:50}".format(
- dvid, device['description'])
+ print ("{:15} {:50}".format(
+ dvid, device['description']))
@staticmethod
def unbind_vpp_device(node, device_id):
:type device_id: string
"""
-
rootdir = node['rootdir']
dpdk_script = rootdir + DPDK_SCRIPT
cmd = dpdk_script + ' -u ' + ' ' + device_id
:type node: dict
:type driver: string
:type device_id: string
+ :returns ret: Command return code
"""
rootdir = node['rootdir']
cmd = dpdk_script + ' -b ' + driver + ' ' + device_id
(ret, stdout, stderr) = VPPUtil.exec_command(cmd)
if ret != 0:
- raise RuntimeError('{} failed on node {} {} {}'.format(
+ logging.error('{} failed on node {}'.format(
cmd, node['host'], stdout, stderr))
+ logging.error('{} {}'.format(
+ stdout, stderr))
+
+ return ret