Fix inspection for 18.10, requirements

Change-Id: I1ecc278f43afff184a26f6f18fe22a49d8916eb1
Signed-off-by: jdenisco <jdenisco@cisco.com>
This commit is contained in:
jdenisco
2018-11-20 11:25:17 -05:00
committed by Dave Barach
parent 8ee72514d3
commit 7c37a67fda
5 changed files with 68 additions and 42 deletions

View File

@ -1,7 +1,7 @@
from setuptools import setup
setup(name="vpp_config",
version="18.01.11",
version="18.10.3",
author="John DeNisco",
author_email="jdenisco@cisco.com",
description="VPP Configuration Utility",
@ -9,7 +9,7 @@ setup(name="vpp_config",
keywords="vppconfig",
url = 'https://wiki.fd.io/view/VPP',
py_modules=['vpp_config'],
install_requires=['pyyaml','netaddr'],
install_requires=['pyyaml','netaddr', 'requests'],
packages=['vpplib'],
scripts=['scripts/vpp-config'],
data_files=[('vpp/vpp-config/scripts', ['scripts/dpdk-devbind.py']),

View File

@ -549,7 +549,7 @@ def autoconfig_main_menu():
main_menu_text = '\nWhat would you like to do?\n\n\
1) Show basic system information\n\
2) Dry Run (Will save the configuration files in {}/vpp/vpp-config/dryrun for inspection)\n\
2) Dry Run (Saves the configuration files in {}/vpp/vpp-config/dryrun.\n\
3) Full configuration (WARNING: This will change the system configuration)\n\
4) List/Install/Uninstall VPP.\n\
q) Quit'.format(rootdir, rootdir)

View File

@ -1048,10 +1048,11 @@ class AutoConfig(object):
if answer == 'y':
if 'unused' in device and len(device['unused']) != 0 and device['unused'][0] != '':
driver = device['unused'][0]
VppPCIUtil.bind_vpp_device(node, driver, dvid)
else:
logging.debug('Could not bind device {}'.format(dvid))
vppd[dvid] = device
ret = VppPCIUtil.bind_vpp_device(node, driver, dvid)
if ret:
logging.debug('Could not bind device {}'.format(dvid))
else:
vppd[dvid] = device
for dit in vppd.items():
dvid = dit[0]
device = dit[1]
@ -1081,11 +1082,12 @@ class AutoConfig(object):
if 'unused' in device and len(device['unused']) != 0 and device['unused'][0] != '':
driver = device['unused'][0]
logging.debug('Binding device {} to driver {}'.format(dvid, driver))
VppPCIUtil.bind_vpp_device(node, driver, dvid)
else:
logging.debug('Could not bind device {}'.format(dvid))
dpdk_devices[dvid] = device
del other_devices[dvid]
ret = VppPCIUtil.bind_vpp_device(node, driver, dvid)
if ret:
logging.debug('Could not bind device {}'.format(dvid))
else:
dpdk_devices[dvid] = device
del other_devices[dvid]
def update_interfaces_config(self):
"""
@ -1162,11 +1164,12 @@ class AutoConfig(object):
if 'unused' in device and len(device['unused']) != 0 and device['unused'][0] != '':
driver = device['unused'][0]
logging.debug('Binding device {} to driver {}'.format(dvid, driver))
VppPCIUtil.bind_vpp_device(node, driver, dvid)
else:
logging.debug('Could not bind device {}'.format(dvid))
dpdk_devices[dvid] = device
del kernel_devices[dvid]
ret = VppPCIUtil.bind_vpp_device(node, driver, dvid)
if ret:
logging.debug('Could not bind device {}'.format(dvid))
else:
dpdk_devices[dvid] = device
del kernel_devices[dvid]
dlen = len(dpdk_devices)
if dlen > 0:
@ -1191,11 +1194,12 @@ class AutoConfig(object):
if 'unused' in device and len(device['unused']) != 0 and device['unused'][0] != '':
driver = device['unused'][0]
logging.debug('Binding device {} to driver {}'.format(dvid, driver))
VppPCIUtil.bind_vpp_device(node, driver, dvid)
else:
logging.debug('Could not bind device {}'.format(dvid))
kernel_devices[dvid] = device
del dpdk_devices[dvid]
ret = VppPCIUtil.bind_vpp_device(node, driver, dvid)
if ret:
logging.debug('Could not bind device {}'.format(dvid))
else:
kernel_devices[dvid] = device
del dpdk_devices[dvid]
interfaces = {}
for dit in dpdk_devices.items():
@ -1386,6 +1390,14 @@ class AutoConfig(object):
else:
print ("\nNo devices bound to DPDK drivers")
other_devs = vpp.get_other_devices()
if len(other_devs):
print ("\nDevices not bound to Kernel or DPDK drivers:")
vpp.show_vpp_devices(other_devs, show_interfaces=True,
show_header=False)
else:
print ("\nNo devices not bound to Kernel or DPDK drivers")
vpputl = VPPUtil()
interfaces = vpputl.get_hardware(node)
if interfaces == {}:
@ -1397,17 +1409,17 @@ class AutoConfig(object):
print ("None")
return
print "{:30} {:6} {:4} {:7} {:4} {:7}". \
format('Name', 'Socket', 'RXQs',
print "{:30} {:4} {:4} {:7} {:4} {:7}". \
format('Name', 'Numa', 'RXQs',
'RXDescs', 'TXQs', 'TXDescs')
for intf in sorted(interfaces.items()):
name = intf[0]
value = intf[1]
if name == 'local0':
continue
socket = rx_qs = rx_ds = tx_qs = tx_ds = ''
if 'cpu socket' in value:
socket = int(value['cpu socket'])
numa = rx_qs = rx_ds = tx_qs = tx_ds = ''
if 'numa' in value:
numa = int(value['numa'])
if 'rx queues' in value:
rx_qs = int(value['rx queues'])
if 'rx descs' in value:
@ -1417,8 +1429,8 @@ class AutoConfig(object):
if 'tx descs' in value:
tx_ds = int(value['tx descs'])
print ("{:30} {:>6} {:>4} {:>7} {:>4} {:>7}".
format(name, socket, rx_qs, rx_ds, tx_qs, tx_ds))
print ("{:30} {:>4} {:>4} {:>7} {:>4} {:>7}".
format(name, numa, rx_qs, rx_ds, tx_qs, tx_ds))
@staticmethod
def hugepage_info(node):

View File

@ -138,7 +138,9 @@ class VPPUtil(object):
# When using release
reps += 'release/ubuntu {} main ./\n'.format(ubuntu_version)
# When using master
# reps += 'master/ubuntu {} main/ ./\n'.format(ubuntu_version)
# reps += 'master/ubuntu {} main ./\n'.format(ubuntu_version)
# When using 1807
# reps += '1807/ubuntu {} main ./\n'.format(ubuntu_version)
with open(sfile, 'w') as sfd:
sfd.write(reps)
@ -146,8 +148,8 @@ class VPPUtil(object):
# Add the key
key = requests.get('https://packagecloud.io/fdio/{}/gpgkey'.format('release'))
# cmd = 'curl -L https://packagecloud.io/fdio/{}/gpgkey | apt-key add -'.format(fdio_release)
# cmd = 'curl -L https://packagecloud.io/fdio/{}/gpgkey | apt-key add -'.format('mastert')
# key = requests.get('https://packagecloud.io/fdio/{}/gpgkey'.format('master'))
# key = requests.get('https://packagecloud.io/fdio/{}/gpgkey'.format('1807'))
cmd = 'echo "{}" | apt-key add -'.format(key.content)
(ret, stdout, stderr) = self.exec_command(cmd)
if ret != 0:
@ -541,19 +543,25 @@ class VPPUtil(object):
interfaces[name]['carrier'] = spl[1]
# Socket
rfall = re.findall(r'cpu socket', line)
rfall = re.findall(r'numa \d+', line)
if rfall:
spl = line.split('cpu socket ')
interfaces[name]['cpu socket'] = spl[1]
spl = rfall[0].split()
interfaces[name]['numa'] = rfall[0].split()[1]
# Queues and Descriptors
rfall = re.findall(r'rx queues', line)
rfall = re.findall(r'rx\: queues \d+', line)
if rfall:
spl = line.split(',')
interfaces[name]['rx queues'] = spl[0].lstrip(' ').split(' ')[2]
interfaces[name]['rx descs'] = spl[1].split(' ')[3]
interfaces[name]['tx queues'] = spl[2].split(' ')[3]
interfaces[name]['tx descs'] = spl[3].split(' ')[3]
interfaces[name]['rx queues'] = rfall[0].split()[2]
rdesc = re.findall(r'desc \d+', line)
if rdesc:
interfaces[name]['rx descs'] = rdesc[0].split()[1]
rfall = re.findall(r'tx\: queues \d+', line)
if rfall:
interfaces[name]['tx queues'] = rfall[0].split()[2]
rdesc = re.findall(r'desc \d+', line)
if rdesc:
interfaces[name]['tx descs'] = rdesc[0].split()[1]
return interfaces

View File

@ -14,6 +14,7 @@
"""VPP PCI Utility libraries"""
import re
import logging
from vpplib.VPPUtil import VPPUtil
@ -318,6 +319,7 @@ class VppPCIUtil(object):
:type node: dict
:type driver: string
:type device_id: string
:returns ret: Command return code
"""
rootdir = node['rootdir']
@ -325,5 +327,9 @@ class VppPCIUtil(object):
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