Correct lower-constraints.txt and the related tox job

In the review of a similar change in placement [1], it was realized that
the nova lower-constraints tox job probably had the same problems.
Testing revealed this to be the case. This change fixes the job and
updates the related requirements problems accordingly.

The are two main factors at play here:

* The default install_command in tox.ini uses the upper_contraints.txt
  file. When there is more than one constraints.txt they are merged and
  the higher constraints win. Using upper and lower at the same time
  violates the point of lower (which is to indicate the bare minimum
  we are capable of using).

* When usedevelop is true in tox, the command that is run to install the
  current projects code is something like 'python setup.py develop',
  which installs a project's requirements _after_ the install_command has
  run, clobbering the constrained installs. When using pbr,
  'python setup.py install' (used when usedevelop is False) does not do
  this.

Fixing those then makes it possible to use the test to fix the
lower-constraints.txt and *requirements.txt files, changes include:

* Defining 'usedevelop = False' in the 'lower-constraints' target and
  removing the otherwise superfluous 'skipsdist' global setting to
  ensure requirements aren't clobbered.

* Removing packages which show up in lower-constraints.txt but not in
  the created virtualenv. Note that the job only runs unit tests, so
  this may be incomplete. In the placement version of this both unit and
  functional are run. We may want to consider that here.

* Updating cryptography. This version is needed with more recent
  pyopenssl.

* Updated keystonemiddleware. This is needed for some tests which
  confirm passing configuration to the middleware.

* Update psycopg2 to a version that can talk with postgresql 10.

* Add PyJWT, used by zVMCloudConnector

* Update zVMCloudConnector to a version that works with Python 3.5 and
  beyond.

* Update olso.messaging to versions that work with the tests, under
  Python 3.

* Adding missing transitive packages.

* Adjusting alpha-ordering to map to how pip freeze does it.

* setuptools is removed from requirements.txt because the created
  virtualenv doesn't contain it

NOTE: The lower-constraints.txt file makes no commitment to expressing
minimum requirements for anything other than the current basepython.
So the fact that a different set of lower-constraints would be present
if we were using python2 is not relevant. See discussion at [1].
However, since requirements.txt _is_ used for python2, the
requirements-check gate job requires that enum34 be present in
lower-constraints.txt because it is in requirements.txt.

NOTE: A test is removed because it cannot work in the
lower-constraints context: 'test_policy_generator_from_command_line'
forks a call to 'oslopolicy-policy-generator --namespace nova' which
fails because stevedore fails to pick up nova-based entry points when
in a different process. This is because of the change to usedevelop.
After discussion with the original author of the test removal was
considered an acceptable choice.

[1] http://eavesdrop.openstack.org/irclogs/%23openstack-dev/%23openstack-dev.2019-03-05.log.html#t2019-03-05T13:28:23

Closes-Bug: #1822575

Change-Id: Ic6466b0440a4fe012731a63715cf5d793b6ae4dd
This commit is contained in:
Chris Dent 2018-12-05 14:01:04 +00:00 committed by Eric Fried
parent bed9d49163
commit e5269f2fbb
5 changed files with 29 additions and 44 deletions

View File

@ -5,28 +5,25 @@ asn1crypto==0.24.0
attrs==17.4.0
automaton==1.14.0
Babel==2.3.4
enum34==1.0.4
bandit==1.1.0
bcrypt==3.1.4
cachetools==2.0.1
castellan==0.16.0
certifi==2018.1.18
cffi==1.11.5
chardet==3.0.4
cliff==2.11.0
cmd2==0.8.1
colorama==0.3.9
contextlib2==0.5.5
coverage==4.0
cryptography==2.1
cryptography==2.1.4
cursive==0.2.1
ddt==1.0.1
debtcollector==1.19.0
decorator==3.4.0
deprecation==2.0
dogpile.cache==0.6.5
enum34==1.0.4
enum-compat==0.0.2
eventlet==0.18.2
eventlet==0.20.0
extras==1.0.0
fasteners==0.14.1
fixtures==3.0.0
@ -43,12 +40,12 @@ iso8601==0.1.11
Jinja2==2.10
jmespath==0.9.3
jsonpatch==1.21
jsonpath-rw-ext==1.1.3
jsonpath-rw==1.4.0
jsonpath-rw-ext==1.1.3
jsonpointer==2.0
jsonschema==2.6.0
keystoneauth1==3.9.0
keystonemiddleware==4.17.0
keystonemiddleware==4.20.0
kombu==4.1.0
linecache2==1.0.0
lxml==3.4.1
@ -60,6 +57,7 @@ mock==2.0.0
monotonic==1.4
mox3==0.20.0
msgpack==0.5.6
msgpack-python==0.5.6
munch==2.2.0
netaddr==0.7.18
netifaces==0.10.4
@ -82,7 +80,7 @@ oslo.context==2.19.2
oslo.db==4.44.0
oslo.i18n==3.15.3
oslo.log==3.36.0
oslo.messaging==6.3.0
oslo.messaging==7.0.0
oslo.middleware==3.31.0
oslo.policy==1.35.0
oslo.privsep==1.32.0
@ -96,33 +94,33 @@ oslo.versionedobjects==1.33.3
oslo.vmware==2.17.0
oslotest==3.2.0
osprofiler==1.4.0
ovs==2.10.0
ovsdbapp==0.15.0
packaging==17.1
paramiko==2.0.0
Paste==2.0.2
PasteDeploy==1.5.0
pbr==2.0.0
pep8==1.5.7
pika-pool==0.1.3
pika==0.10.0
pluggy==0.6.0
ply==3.11
prettytable==0.7.1
psutil==3.2.2
psycopg2==2.6.2
psycopg2==2.7
py==1.5.2
pyasn1-modules==0.2.1
pyasn1==0.4.2
pyasn1-modules==0.2.1
pycadf==2.7.0
pycparser==2.18
pyflakes==0.8.1
pyinotify==0.9.6
pyroute2==0.5.4
PyJWT==1.7.0
PyMySQL==0.7.6
PyNaCl==1.2.1
pyOpenSSL==17.5.0
pyparsing==2.2.0
pyperclip==1.6.0
pypowervm==1.1.15
pyroute2==0.4.21
pytest==3.4.2
python-barbicanclient==4.5.2
python-cinderclient==3.3.0
@ -137,8 +135,8 @@ python-subunit==1.2.0
pytz==2018.3
PyYAML==3.12
repoze.lru==0.7
requests-mock==1.2.0
requests==2.14.2
requests-mock==1.2.0
requestsexceptions==1.4.0
retrying==1.3.3
rfc3986==1.1.0
@ -146,13 +144,13 @@ Routes==2.3.1
simplejson==3.13.2
six==1.10.0
smmap2==2.0.3
sqlalchemy-migrate==0.11.0
sortedcontainers==2.1.0
SQLAlchemy==1.0.10
sqlalchemy-migrate==0.11.0
sqlparse==0.2.4
statsd==3.2.2
stestr==1.0.0
stevedore==1.20.0
setuptools==21.0.0
suds-jurko==0.6
taskflow==2.16.0
Tempita==0.5.2
@ -167,9 +165,9 @@ unittest2==1.1.0
urllib3==1.22
vine==1.1.4
voluptuous==0.11.1
warlock==1.3.0
warlock==1.2.0
WebOb==1.8.2
websockify==0.8.0
wrapt==1.10.11
wsgi-intercept==1.7.0
zVMCloudConnector==1.1.1
zVMCloudConnector==1.3.0

View File

@ -16,7 +16,6 @@
"""Test of Policy Engine For Nova."""
import os.path
import subprocess
import mock
from oslo_policy import policy as oslo_policy
@ -470,18 +469,3 @@ class RealRolePolicyTestCase(test.NoDBTestCase):
self.admin_or_owner_rules +
self.allow_all_rules + special_rules)
self.assertEqual(set([]), result)
class GeneratePolicyFileTestCase(test.NoDBTestCase):
def test_policy_generator_from_command_line(self):
# This test ensures nova.policy:get_enforcer ignores unexpected
# arguments before handing them off to oslo.config, which will fail and
# prevent users from generating policy files.
ret_val = subprocess.Popen(
['oslopolicy-policy-generator', '--namespace', 'nova'],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE
)
ret_val.communicate()
self.assertEqual(0, ret_val.returncode)

View File

@ -5,12 +5,12 @@
pbr!=2.1.0,>=2.0.0 # Apache-2.0
SQLAlchemy!=1.1.5,!=1.1.6,!=1.1.7,!=1.1.8,>=1.0.10 # MIT
decorator>=3.4.0 # BSD
eventlet!=0.18.3,!=0.20.1,>=0.18.2 # MIT
eventlet!=0.20.1,>=0.20.0 # MIT
Jinja2>=2.10 # BSD License (3 clause)
keystonemiddleware>=4.17.0 # Apache-2.0
keystonemiddleware>=4.20.0 # Apache-2.0
lxml!=3.7.0,>=3.4.1 # BSD
Routes>=2.3.1 # MIT
cryptography>=2.1 # BSD/Apache-2.0
cryptography>=2.1.4 # BSD/Apache-2.0
WebOb>=1.8.2 # MIT
# NOTE(mriedem): greenlet 0.4.14 does not work with older versions of gcc on
# ppc64le systems, see https://github.com/python-greenlet/greenlet/issues/136.
@ -33,7 +33,6 @@ python-glanceclient>=2.8.0 # Apache-2.0
requests>=2.14.2 # Apache-2.0
six>=1.10.0 # MIT
stevedore>=1.20.0 # Apache-2.0
setuptools!=24.0.0,!=34.0.0,!=34.0.1,!=34.0.2,!=34.0.3,!=34.1.0,!=34.1.1,!=34.2.0,!=34.3.0,!=34.3.1,!=34.3.2,!=36.2.0,>=21.0.0 # PSF/ZPL
websockify>=0.8.0 # LGPLv3
oslo.cache>=1.26.0 # Apache-2.0
oslo.concurrency>=3.26.0 # Apache-2.0
@ -46,7 +45,7 @@ oslo.upgradecheck>=0.1.1
oslo.utils>=3.37.0 # Apache-2.0
oslo.db>=4.44.0 # Apache-2.0
oslo.rootwrap>=5.8.0 # Apache-2.0
oslo.messaging>=6.3.0 # Apache-2.0
oslo.messaging>=7.0.0 # Apache-2.0
oslo.policy>=1.35.0 # Apache-2.0
oslo.privsep>=1.32.0 # Apache-2.0
oslo.i18n>=3.15.3 # Apache-2.0
@ -70,5 +69,5 @@ retrying>=1.3.3,!=1.3.0 # Apache-2.0
os-service-types>=1.2.0 # Apache-2.0
taskflow>=2.16.0 # Apache-2.0
python-dateutil>=2.5.3 # BSD
zVMCloudConnector>=1.1.1;sys_platform!='win32' # Apache 2.0 License
zVMCloudConnector>=1.3.0;sys_platform!='win32' # Apache 2.0 License
futurist>=1.8.0 # Apache-2.0

View File

@ -8,7 +8,7 @@ ddt>=1.0.1 # MIT
fixtures>=3.0.0 # Apache-2.0/BSD
mock>=2.0.0 # BSD
mox3>=0.20.0 # Apache-2.0
psycopg2>=2.6.2 # LGPL/ZPL
psycopg2>=2.7 # LGPL/ZPL
PyMySQL>=0.7.6 # MIT License
python-barbicanclient>=4.5.2 # Apache-2.0
python-ironicclient>=2.7.0 # Apache-2.0

View File

@ -1,7 +1,6 @@
[tox]
minversion = 3.1.1
envlist = py{27,35},functional,pep8
skipsdist = True
# Automatic envs (pyXX) will use the python version appropriate to that
# env and ignore basepython inherited from [testenv]. That's what we
# want, and we don't need to be warned about it.
@ -277,6 +276,11 @@ commands =
bindep test
[testenv:lower-constraints]
# We need our own install command to avoid upper constraints being considered
# when making the environment. Set usedevelop to false to avoid pbr installing
# requirements for us so all requirements are installed in one call to pip.
usedevelop = False
install_command = pip install {opts} {packages}
deps =
-c{toxinidir}/lower-constraints.txt
-r{toxinidir}/test-requirements.txt