config/sysinv/cgts-client/cgts-client/cgtsclient/v1/port_shell.py
Al Bailey d7330d0f44 Convert cgtsclient from setuptools to pbr. Add tox.
Primary reason for this change was to update the spec and setup files
from basic setuptools to use pbr
This allows the autogenerated  /usr/bin/system file to directly call the
main method without using pkg-resources.
This will provide a performance improvement of .5 seconds per CLI call,
once the other pkg_resources issues are resolved

Second reason for this change was to wire in the tox unit tests.  This
also includes pep8, pylint and coverage.
Currently pep8 does not perform the 80 char limit check
Currently pylint still reports some issues

This should not affect the RPM names being generated or otherwise affect
patching or upgrades.

Change-Id: I9f14c9216fdcc63930a4b2849102b58442706144
2018-06-28 22:07:37 -04:00

100 lines
3.3 KiB
Python

#!/usr/bin/env python
#
# Copyright (c) 2013-2015 Wind River Systems, Inc.
#
# SPDX-License-Identifier: Apache-2.0
#
# vim: tabstop=4 shiftwidth=4 softtabstop=4
# All Rights Reserved.
#
from cgtsclient.common import utils
from cgtsclient import exc
from cgtsclient.v1 import ihost as ihost_utils
def _print_port_show(port):
fields = ['name', 'namedisplay',
'type', 'pciaddr', 'dev_id', 'numa_node',
'sriov_totalvfs', 'sriov_numvfs',
'sriov_vfs_pci_address', 'driver',
'pclass', 'pvendor', 'pdevice',
'capabilities',
'uuid', 'host_uuid', 'interface_uuid',
'dpdksupport',
'created_at', 'updated_at']
labels = ['name', 'namedisplay',
'type', 'pciaddr', 'dev_id', 'processor',
'sriov_totalvfs', 'sriov_numvfs',
'sriov_vfs_pci_address', 'driver',
'pclass', 'pvendor', 'pdevice',
'capabilities',
'uuid', 'host_uuid', 'interface_uuid',
'accelerated',
'created_at', 'updated_at']
data = [(f, getattr(port, f, '')) for f in fields]
utils.print_tuple_list(data, labels)
def _find_port(cc, ihost, portnameoruuid):
ports = cc.port.list(ihost.uuid)
for p in ports:
if p.name == portnameoruuid or p.uuid == portnameoruuid:
break
else:
raise exc.CommandError('Port not found: host %s port %s' % (ihost.id, portnameoruuid))
return p
@utils.arg('hostnameorid',
metavar='<hostname or id>',
help="Name or ID of host")
@utils.arg('pnameoruuid', metavar='<port name or uuid>', help="Name or UUID of port")
def do_host_port_show(cc, args):
"""Show host port details."""
ihost = ihost_utils._find_ihost(cc, args.hostnameorid)
port = _find_port(cc, ihost, args.pnameoruuid)
_print_port_show(port)
@utils.arg('hostnameorid',
metavar='<hostname or id>',
help="Name or ID of host")
def do_host_port_list(cc, args):
"""List host ports."""
from cgtsclient.common import wrapping_formatters
terminal_width = utils.get_terminal_size()[0]
ihost = ihost_utils._find_ihost(cc, args.hostnameorid)
ports = cc.port.list(ihost.uuid)
field_labels = ['uuid', 'name', 'type', 'pci address', 'device',
'processor', 'accelerated', 'device type']
fields = ['uuid', 'name', 'type', 'pciaddr', 'dev_id', 'numa_node',
'dpdksupport', 'pdevice']
format_spec = wrapping_formatters.build_best_guess_formatters_using_average_widths(ports, fields, field_labels,
no_wrap_fields=['pciaddr'])
# best-guess formatter does not make a good guess for
# proper width of pdevice until terminal is > 155
# We override that width here.
pdevice_width = None
if terminal_width <= 130:
pdevice_width = .1
elif 131 >= terminal_width <= 150:
pdevice_width = .13
elif 151 >= terminal_width <= 155:
pdevice_width = .14
if pdevice_width and format_spec["pdevice"] > pdevice_width:
format_spec["pdevice"] = pdevice_width
formatters = wrapping_formatters.build_wrapping_formatters(ports, fields, field_labels, format_spec)
utils.print_list(ports, fields, field_labels, formatters=formatters, sortby=1)