setup project for pypi releases

The intent of this patch is to update the vmware-nsx-tempest-plugin
project so that it's capable of being published to PYPI. To do so
the doc requirements are separated from test-requirements, tox.ini is
updated in a few places and .gitignore file is included for good
measure.

Also see https://review.openstack.org/#/c/584498/

Change-Id: If02713fd427613433f554272c9962e0ebb95b1d6
This commit is contained in:
Boden R 2018-07-20 13:39:28 -06:00
parent 437f3509b2
commit 31e981d236
8 changed files with 99 additions and 28 deletions

31
.gitignore vendored Normal file
View File

@ -0,0 +1,31 @@
AUTHORS
build/*
build-stamp
ChangeLog
cover/
covhtml/
dist/
doc/build
etc/*.sample
*.DS_Store
*.pyc
vmware_nsx_tempest_plugin.egg-info/
pbr*.egg/
run_tests.err.log
run_tests.log
setuptools*.egg/
subunit.log
*.mo
*.sw?
*~
/.*
!/.coveragerc
!/.gitignore
!/.gitreview
!/.mailmap
!/.pylintrc
!/.testr.conf
!/.zuul.yaml
# Files created by releasenotes build
releasenotes/build

4
doc/requirements.txt Normal file
View File

@ -0,0 +1,4 @@
sphinx!=1.6.6,!=1.6.7,>=1.6.2 # BSD
openstackdocstheme>=1.18.1 # Apache-2.0
reno>=2.5.0 # Apache-2.0
mock>=2.0.0 # BSD

View File

@ -4,12 +4,11 @@
hacking<0.13,>=0.12.0 # Apache-2.0 hacking<0.13,>=0.12.0 # Apache-2.0
bandit>=1.1.0 # Apache-2.0
coverage!=4.4,>=4.0 # Apache-2.0 coverage!=4.4,>=4.0 # Apache-2.0
python-subunit>=1.0.0 # Apache-2.0/BSD python-subunit>=1.0.0 # Apache-2.0/BSD
sphinx!=1.6.6,!=1.6.7,>=1.6.2 # BSD
oslotest>=3.2.0 # Apache-2.0 oslotest>=3.2.0 # Apache-2.0
testtools>=2.2.0 # MIT testtools>=2.2.0 # MIT
openstackdocstheme>=1.18.1 # Apache-2.0
# releasenotes # releasenotes
reno>=2.5.0 # Apache-2.0 reno>=2.5.0 # Apache-2.0
tempest>=17.1.0 # Apache-2.0 tempest>=17.1.0 # Apache-2.0

57
tox.ini
View File

@ -3,20 +3,25 @@ minversion = 2.0
envlist = py35,py27,pep8,docs envlist = py35,py27,pep8,docs
skipsdist = True skipsdist = True
[testenv] [testenv]
usedevelop = True usedevelop = True
install_command = pip install -c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt} {opts} {packages} install_command = pip install {opts} {packages}
setenv = setenv =
VIRTUAL_ENV={envdir} PYTHONWARNINGS=default::DeprecationWarning
PYTHONWARNINGS=default::DeprecationWarning OS_LOG_CAPTURE={env:OS_LOG_CAPTURE:true}
deps = -r{toxinidir}/test-requirements.txt OS_STDOUT_CAPTURE={env:OS_STDOUT_CAPTURE:true}
-r{toxinidir}/requirements.txt OS_STDERR_CAPTURE={env:OS_STDERR_CAPTURE:true}
deps =
-c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt}
-r{toxinidir}/requirements.txt
-r{toxinidir}/test-requirements.txt
whitelist_externals = sh whitelist_externals = sh
rm rm
find find
commands = commands =
find . -type f -name "*.pyc" -delete find . -type f -name "*.pyc" -delete
stestr run --slowest {posargs} stestr run --slowest {posargs}
passenv = http_proxy passenv = http_proxy
HTTP_PROXY HTTP_PROXY
https_proxy https_proxy
@ -27,9 +32,13 @@ passenv = http_proxy
OS_LOG_CAPTURE OS_LOG_CAPTURE
OS_STDERR_CAPTURE OS_STDERR_CAPTURE
OS_STDOUT_CAPTURE OS_STDOUT_CAPTURE
TRACE_FAILONLY
[testenv:pep8] [testenv:pep8]
commands = flake8 {posargs} basepython = python3
commands =
flake8
{[testenv:bandit]commands}
[testenv:py27] [testenv:py27]
setenv = OS_FAIL_ON_MISSING_DEPS=1 setenv = OS_FAIL_ON_MISSING_DEPS=1
@ -38,14 +47,31 @@ setenv = OS_FAIL_ON_MISSING_DEPS=1
commands = {posargs} commands = {posargs}
[testenv:cover] [testenv:cover]
commands = python setup.py test --coverage --testr-args='{posargs}' basepython = python3
setenv =
{[testenv]setenv}
PYTHON=coverage run --source vmware_nsx_tempest --parallel-mode
commands =
stestr run --no-subunit-trace {posargs}
coverage combine
coverage html -d cover
coverage xml -o cover/coverage.xml
[testenv:docs] [testenv:docs]
commands = python setup.py build_sphinx basepython = python3
deps =
-c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt}
-r{toxinidir}/requirements.txt
-r{toxinidir}/doc/requirements.txt
commands = sphinx-build -W -b html doc/source doc/build/html
[testenv:releasenotes] [testenv:releasenotes]
commands = basepython = python3
sphinx-build -a -E -W -d releasenotes/build/doctrees -b html releasenotes/source releasenotes/build/html deps =
-c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt}
-r{toxinidir}/requirements.txt
-r{toxinidir}/doc/requirements.txt
commands = sphinx-build -a -E -W -d releasenotes/build/doctrees -b html releasenotes/source releasenotes/build/html
[testenv:debug] [testenv:debug]
commands = oslo_debug_helper {posargs} commands = oslo_debug_helper {posargs}
@ -58,3 +84,10 @@ ignore = E125,E126,E128,E129,E265,H305,H307,H404,H405,H904,N530,N531
builtins = _ builtins = _
exclude=.venv,.git,.tox,dist,doc,*lib/python*,*egg,build,.ropeproject exclude=.venv,.git,.tox,dist,doc,*lib/python*,*egg,build,.ropeproject
import-order-style = pep8 import-order-style = pep8
[testenv:bandit]
# B108 hardcoded_tmp_directory - remove when fixed
# B109 password_config_option_not_marked_secret
# B602 subprocess_popen_with_shell_equals_true - removed when fixed
# B605 start_process_with_a_shell - remove when fixed
commands = bandit -r vmware_nsx_tempest -n 5 -s B108,B109,B602,B605 -ll

View File

@ -291,10 +291,12 @@ class IperfManager(TrafficManager):
if self.traffic == 'udp': if self.traffic == 'udp':
cmd = ('iperf -p 49162 -c %s -b %sM -t 1 -u | grep %%' cmd = ('iperf -p 49162 -c %s -b %sM -t 1 -u | grep %%'
% (unicode(destination_ip), unicode(traffic_send_rate))) % (unicode(destination_ip), # noqa
unicode(traffic_send_rate))) # noqa
else: else:
cmd = ('iperf -p 49162 -c %s -b %sM -t 1 ' cmd = ('iperf -p 49162 -c %s -b %sM -t 1 '
% (unicode(destination_ip), unicode(traffic_send_rate))) % (unicode(destination_ip), # noqa
unicode(traffic_send_rate))) # noqa
output = ssh_source.exec_command(cmd) output = ssh_source.exec_command(cmd)
if output is None or float(output.split()[7]) < 0: if output is None or float(output.split()[7]) < 0:
LOG.error('Incorrect IPERF output %s' % output) LOG.error('Incorrect IPERF output %s' % output)
@ -310,7 +312,7 @@ class IperfManager(TrafficManager):
if 'iperf -p 49162 -s' in line: if 'iperf -p 49162 -s' in line:
LOG.info("Killing iperf process") LOG.info("Killing iperf process")
iperf_process_id = line.split()[1] iperf_process_id = line.split()[1]
cmd = ('kill %s' % (unicode(iperf_process_id))) cmd = ('kill %s' % (unicode(iperf_process_id))) # noqa
ssh_source.exec_command(cmd) ssh_source.exec_command(cmd)
def kill_tcpdump_process(self, ssh_source): def kill_tcpdump_process(self, ssh_source):
@ -321,7 +323,7 @@ class IperfManager(TrafficManager):
if 'tcpdump -ni eth0 -w' in line: if 'tcpdump -ni eth0 -w' in line:
LOG.info("Killing TCPDUMP process") LOG.info("Killing TCPDUMP process")
tcpdump_process_id = line.split()[1] tcpdump_process_id = line.split()[1]
cmd = ('kill %s' % (unicode(tcpdump_process_id))) cmd = ('kill %s' % (unicode(tcpdump_process_id))) # noqa
ssh_source.exec_command(cmd) ssh_source.exec_command(cmd)
def use_iperf_send_traffic( def use_iperf_send_traffic(

View File

@ -108,14 +108,15 @@ class L2GatewayTest(base.BaseAdminNetworkTest):
MSG_DIFF % ('name', _res_new['name'], _name)) MSG_DIFF % ('name', _res_new['name'], _name))
# w/wo vlan provided, need to check it is assigned/not-assigned # w/wo vlan provided, need to check it is assigned/not-assigned
_seg_list = self.get_segmentation_id(_res_new, 0, 0) _seg_list = self.get_segmentation_id(_res_new, 0, 0)
self.assertEqual(0, cmp(_vlan_id_list, _seg_list), self.assertItemsEqual(_vlan_id_list, _seg_list,
MSG_DIFF % ('vlan', _seg_list, _vlan_id_list)) MSG_DIFF % ('vlan', _seg_list, _vlan_id_list))
_res_show = self.l2gw_client.show_l2_gateway( _res_show = self.l2gw_client.show_l2_gateway(
_res_new['id'])[L2GW_RID] _res_new['id'])[L2GW_RID]
_if_created = _res_new['devices'][0]['interfaces'] _if_created = _res_new['devices'][0]['interfaces']
_if_shown = _res_show['devices'][0]['interfaces'] _if_shown = _res_show['devices'][0]['interfaces']
self.assertEqual(0, cmp(_if_created, _if_shown), self.assertItemsEqual(_if_created, _if_shown,
MSG_DIFF % ('interfaces', _if_created, _if_shown)) MSG_DIFF % ('interfaces',
_if_created, _if_shown))
_name2 = _name + "-day2" _name2 = _name + "-day2"
_res_upd = self.l2gw_client.update_l2_gateway( _res_upd = self.l2gw_client.update_l2_gateway(
_res_new['id'], name=_name2)[L2GW_RID] _res_new['id'], name=_name2)[L2GW_RID]

View File

@ -241,8 +241,8 @@ class L2GatewayConnectionTest(base.BaseAdminNetworkTest):
(_gw, _seg_list) = self.create_l2gw_switch(_name, _devices) (_gw, _seg_list) = self.create_l2gw_switch(_name, _devices)
(_res_new, _seg_id_list) = self.create_l2gw_connection(_gw) (_res_new, _seg_id_list) = self.create_l2gw_connection(_gw)
_seg_id_list = _res_new.get('segmentation_id') _seg_id_list = _res_new.get('segmentation_id')
self.assertEqaul(0, cmp(_vlan_id_list, _seg_id_list), self.assertItemsEqual(_vlan_id_list, _seg_id_list,
MSG_DIFF % ('vlan', _vlan_id_list, _seg_id_list)) MSG_DIFF % ('vlan', _vlan_id_list, _seg_id_list))
self.do_suld_l2gw_connection(_res_new) self.do_suld_l2gw_connection(_res_new)
self.addCleanup(self.l2gw_cleanup) self.addCleanup(self.l2gw_cleanup)

View File

@ -263,7 +263,7 @@ class TopoDeployScenarioManager(manager.NetworkScenarioTest):
flavor = flavor or CONF.compute.flavor_ref flavor = flavor or CONF.compute.flavor_ref
servers_client = servers_client or self.servers_client servers_client = servers_client or self.servers_client
create_kwargs = create_kwargs or {} create_kwargs = create_kwargs or {}
if type(tenant_id) in (str, unicode): if type(tenant_id) in (str, unicode): # noqa
if servers_client.tenant_id != tenant_id: if servers_client.tenant_id != tenant_id:
create_kwargs['tenant_id'] = tenant_id create_kwargs['tenant_id'] = tenant_id
@ -465,7 +465,7 @@ class TopoDeployScenarioManager(manager.NetworkScenarioTest):
PING_INSESSION = 'ping-progress-in-session' PING_INSESSION = 'ping-progress-in-session'
PING_DONE = 'ping-progress-completed' PING_DONE = 'ping-progress-completed'
PING_TIMEOUT = 'ping-progress-timeout' PING_TIMEOUT = 'ping-progress-timeout'
if msg and type(msg) in (str, unicode): if msg and type(msg) in (str, unicode): # noqa
xmsg = ("waitfor_host_connected ip=%(ip)s! %(msg)s" % xmsg = ("waitfor_host_connected ip=%(ip)s! %(msg)s" %
{'ip': host_ip, 'msg': msg}) {'ip': host_ip, 'msg': msg})
LOG.debug(xmsg) LOG.debug(xmsg)
@ -677,8 +677,9 @@ def check_hosts_connectivity(host, dest_list, ignore_helper=None,
n_not_reachable = 0 n_not_reachable = 0
for dest in dest_list: for dest in dest_list:
# caller can say to ignore dest ipaddr # caller can say to ignore dest ipaddr
if ('helper' in dest and type(ignore_helper) in (str, unicode) and if ('helper' in dest and
re.search(ignore_helper, dest['helper'], re.I)): type(ignore_helper) in (str, unicode) and # noqa
re.search(ignore_helper, dest['helper'], re.I)): # noqa
dest['reachable'] = None dest['reachable'] = None
continue continue
dest['reachable'] = is_reachable(ssh_client, dest['ipaddr'], dest['reachable'] = is_reachable(ssh_client, dest['ipaddr'],