From b22ec0edb8a66ace0003e3fffc0a796b259df50d Mon Sep 17 00:00:00 2001 From: zhangchi Date: Wed, 22 Dec 2021 05:09:37 +0000 Subject: [PATCH] update hacking reference url Signed-off-by: zhangchi Co-Authored-by: tangzhuo Change-Id: Ic8dbe8d802dca8c6574292299e14e7fbbc045aab --- .stestr.conf | 3 + .zuul.yaml | 14 +++ HACKING.rst | 2 +- lower-constraints.txt | 155 +++++++++++++++++++++++++ requirements.txt | 85 ++++++++------ test-requirements.txt | 28 ++--- tox.ini | 56 ++++++--- trio2o/common/quota.py | 16 ++- trio2o/db/api.py | 10 +- trio2o/nova_apigw/controllers/image.py | 2 +- 10 files changed, 294 insertions(+), 77 deletions(-) create mode 100644 .stestr.conf create mode 100644 .zuul.yaml create mode 100644 lower-constraints.txt diff --git a/.stestr.conf b/.stestr.conf new file mode 100644 index 0000000..4f13fb7 --- /dev/null +++ b/.stestr.conf @@ -0,0 +1,3 @@ +[DEFAULT] +test_path=./trio2o/tests/unit +top_dir=./ diff --git a/.zuul.yaml b/.zuul.yaml new file mode 100644 index 0000000..d6288df --- /dev/null +++ b/.zuul.yaml @@ -0,0 +1,14 @@ +- job: + name: trio20-tox-lower-constraint + parent: openstack-tox-lower-constraints + required-projects: + - openstack/nova + - openstack/networking-sfc + + +- job: + name: trio2o-tox-cover + parent: openstack-tox-cover + required-projects: + - openstack/nova + - openstack/networking-sfc diff --git a/HACKING.rst b/HACKING.rst index 2b7ff7b..3f55368 100644 --- a/HACKING.rst +++ b/HACKING.rst @@ -3,4 +3,4 @@ The Trio2o Style Commandments ================================ Please read the OpenStack Style Commandments - http://docs.openstack.org/developer/hacking/ +http://docs.openstack.org/developer/hacking/latest diff --git a/lower-constraints.txt b/lower-constraints.txt new file mode 100644 index 0000000..a196147 --- /dev/null +++ b/lower-constraints.txt @@ -0,0 +1,155 @@ +alabaster==0.7.10 +alembic==0.8.10 +amqp==2.1.1 +appdirs==1.3.0 +astroid==1.6.5 +Babel==2.3.4 +bandit==1.1.0 +bashate==0.5.1 +beautifulsoup4==4.6.0 +cachetools==2.0.0 +cliff==2.8.0 +cmd2==0.8.0 +contextlib2==0.4.0 +coverage==4.0 +ddt==1.0.1 +debtcollector==1.19.0 +decorator==3.4.0 +deprecation==1.0 +docutils==0.11 +dogpile.cache==0.6.2 +dulwich==0.15.0 +eventlet==0.18.2 +extras==1.0.0 +fasteners==0.7.0 +fixtures==3.0.0 +future==0.16.0 +futurist==1.2.0 +gitdb==0.6.4 +GitPython==1.0.1 +greenlet==0.4.10 +httplib2==0.9.1 +imagesize==0.7.1 +iso8601==0.1.11 +Jinja2==2.10 +jmespath==0.9.0 +jsonpatch==1.16 +jsonpointer==1.13 +jsonschema==2.6.0 +keystoneauth1==3.4.0;python_version<'3.3' +keystoneauth1==3.14.0;python_version>'3.3' +keystonemiddleware==4.17.0 +kombu==4.0.0 +linecache2==1.0.0 +logilab-common==1.4.1 +logutils==0.3.5 +#Mako==1.0.1 +#MarkupSafe==1.0 +mccabe==0.2.1 +mock==3.0.0 +monotonic==0.6;python_version<'3.3' +mox3==0.20.0 +msgpack-python==0.4.0 +munch==2.1.0 +netaddr==0.7.18 +netifaces==0.10.4 +networking-sfc==8.0.0.0b1 +neutron-lib==1.25.0;python_version<'3.3' +neutron-lib==1.29.1;python_version>'3.3' +openstackdocstheme==1.30.0 +openstacksdk==0.31.2 +os-client-config==1.28.0 +os-service-types==1.7.0 +os-xenapi==0.3.1 +osc-lib==1.8.0 +oslo.cache==1.26.0 +oslo.concurrency==3.26.0 +oslo.config==5.2.0 +oslo.context==2.19.2 +oslo.db==4.37.0 +oslo.i18n==3.15.3 +oslo.log==3.36.0 +oslo.messaging==5.29.0 +oslo.middleware==3.31.0 +oslo.policy==1.30.0 +oslo.privsep==1.32.0 +oslo.reports==1.18.0 +oslo.rootwrap==5.8.0 +oslo.serialization==2.18.0 +oslo.service==1.24.0 +oslo.upgradecheck==0.1.1 +oslo.utils==3.33.0 +oslo.versionedobjects==1.35.1 +oslosphinx==4.7.0 +oslotest==3.2.0 +osprofiler==2.3.0 +os-testr==1.0.0 +ovs==2.8.0 +ovsdbapp==0.12.1 +Paste==2.0.2 +PasteDeploy==1.5.0 +pbr==4.0.0 +#pecan==1.3.2 +pika-pool==0.1.3 +pika==0.10.0 +positional==1.2.1 +prettytable==0.7.2 +psutil==3.2.2 +pycadf==1.1.0 +pycodestyle==2.4.0 +pycparser==2.18 +Pygments==2.2.0 +pyinotify==0.9.6 +pylint==2.2.0 +PyMySQL==0.7.6 +pyparsing==2.1.0 +pyperclip==1.5.27 +pyroute2==0.5.3 +python-cinderclient==3.3.0 +python-dateutil==2.5.3 +python-designateclient==2.7.0 +python-editor==1.0.3 +python-glanceclient==2.8.0 +python-keystoneclient==3.8.0 +python-mimeparse==1.6.0 +python-neutronclient==6.7.0 +python-novaclient==9.1.0 +python-subunit==1.0.0 +pytz==2013.6 +PyYAML==3.12 +reno==2.5.0 +repoze.lru==0.7 +requests==2.14.2 +requests-mock==1.2.0 +requestsexceptions==1.2.0 +rfc3986==0.3.1 +Routes==2.3.1 +ryu==4.24 +simplejson==3.5.1 +six==1.10.0 +smmap==0.9.0 +snowballstemmer==1.2.1 +Sphinx==1.6.5 +sphinxcontrib-websupport==1.0.1 +sqlalchemy-migrate==0.11.0 +SQLAlchemy==1.2.0 +sqlparse==0.2.2 +statsd==3.2.1 +stestr==1.0.0 +stevedore==1.20.0 +Tempita==0.5.2 +tenacity==3.2.1 +testrepository==0.0.18 +testresources==2.0.0 +testscenarios==0.4 +testtools==2.2.0 +tinyrpc==0.6 +traceback2==1.4.0 +unittest2==1.1.0 +vine==1.1.4 +waitress==1.1.0 +weakrefmethod==1.0.2 +WebOb==1.8.2 +WebTest==2.0.27 +wrapt==1.7.0alabaster==0.7.10 + diff --git a/requirements.txt b/requirements.txt index 56b9530..3766b18 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,45 +1,54 @@ -# The order of packages is significant, because pip processes them in the order +#The order of packages is significant, because pip processes them in the order # of appearance. Changing the order has an impact on the overall integration # process, which may cause wedges in the gate later. -pbr>=2.0.0 # Apache-2.0 +pbr!=2.1.0,>=4.0.0 # Apache-2.0 Babel!=2.4.0,>=2.3.4 # BSD - -Paste # MIT -PasteDeploy>=1.5.0 # MIT -Routes!=2.0,!=2.1,!=2.3.0,>=1.12.3;python_version=='2.7' # MIT -Routes!=2.0,!=2.3.0,>=1.12.3;python_version!='2.7' # MIT -debtcollector>=1.2.0 # Apache-2.0 -eventlet!=0.18.3,>=0.18.2 # MIT -pecan!=1.0.2,!=1.0.3,!=1.0.4,!=1.2,>=1.0.0 # BSD -requests!=2.12.2,!=2.13.0,>=2.10.0 # Apache-2.0 -Jinja2!=2.9.0,!=2.9.1,!=2.9.2,!=2.9.3,!=2.9.4,>=2.8 # BSD License (3 clause) -keystonemiddleware>=4.12.0 # Apache-2.0 -netaddr!=0.7.16,>=0.7.13 # BSD +Paste>=2.0.2 # MIT +#PasteDeploy>=1.5.0 # MIT +#Routes>=2.3.1 # MIT +#debtcollector>=1.19.0 # Apache-2.0 +eventlet!=0.18.3,!=0.20.1,>=0.18.2 # MIT +#pecan!=1.0.2,!=1.0.3,!=1.0.4,!=1.2,>=1.3.2 # BSD +requests>=2.14.2 # Apache-2.0 +Jinja2>=2.10 # BSD License (3 clause) +keystonemiddleware>=4.17.0 # Apache-2.0 +netaddr>=0.7.18 # BSD netifaces>=0.10.4 # MIT -neutron-lib>=1.3.0 # Apache-2.0 -retrying!=1.3.0,>=1.2.3 # Apache-2.0 -SQLAlchemy!=1.1.5,!=1.1.6,!=1.1.7,!=1.1.8,>=1.0.10 # MIT -WebOb>=1.7.1 # MIT -python-cinderclient>=2.0.1 # Apache-2.0 -python-glanceclient>=2.5.0 # Apache-2.0 +SQLAlchemy!=1.1.5,!=1.1.6,!=1.1.7,!=1.1.8,>=1.2.0 # MIT +#WebOb>=1.8.2 # MIT +python-cinderclient>=3.3.0 # Apache-2.0 +#python-glanceclient>=2.8.0 # Apache-2.0 python-keystoneclient>=3.8.0 # Apache-2.0 -python-neutronclient>=5.1.0 # Apache-2.0 -python-novaclient>=7.1.0 # Apache-2.0 +python-neutronclient>=6.7.0 # Apache-2.0 +python-novaclient>=9.1.0 # Apache-2.0 alembic>=0.8.10 # MIT -six>=1.9.0 # MIT +six>=1.10.0 # MIT stevedore>=1.20.0 # Apache-2.0 -oslo.concurrency>=3.8.0 # Apache-2.0 -oslo.config>=3.22.0 # Apache-2.0 -oslo.context>=2.12.0 # Apache-2.0 -oslo.db>=4.19.0 # Apache-2.0 -oslo.i18n>=2.1.0 # Apache-2.0 -oslo.log>=3.22.0 # Apache-2.0 -oslo.messaging>=5.19.0 # Apache-2.0 -oslo.middleware>=3.10.0 # Apache-2.0 -oslo.policy>=1.17.0 # Apache-2.0 -oslo.rootwrap>=5.0.0 # Apache-2.0 -oslo.serialization>=1.10.0 # Apache-2.0 -oslo.service>=1.10.0 # Apache-2.0 -oslo.utils>=3.20.0 # Apache-2.0 -oslo.versionedobjects>=1.17.0 # Apache-2.0 -sqlalchemy-migrate>=0.9.6 # Apache-2.0 +#oslo.concurrency>=3.26.0 # Apache-2.0 +oslo.config>=5.2.0 # Apache-2.0 +#oslo.context>=2.19.2 # Apache-2.0 +oslo.db>=4.37.0 # Apache-2.0 +#oslo.i18n>=3.15.3 # Apache-2.0 +oslo.log>=3.36.0 # Apache-2.0 +oslo.messaging>=5.29.0 # Apache-2.0 +oslo.middleware>=3.31.0 # Apache-2.0 +oslo.policy>=1.30.0 # Apache-2.0 +oslo.rootwrap>=5.8.0 # Apache-2.0 +oslo.serialization!=2.19.1,>=2.18.0 # Apache-2.0 +#oslo.service!=1.28.1,>=1.24.0 # Apache-2.0 +oslo.upgradecheck>=0.1.1 # Apache-2.0 +oslo.utils>=3.33.0 # Apache-2.0 +sqlalchemy-migrate>=0.11.0 # Apache-2.0 + +# These repos are installed from git in OpenStack CI if the job +# configures them as required-projects: +#keystoneauth1>=3.4.0;python_version<'3.3' # Apache-2.0 +#neutron-lib>=1.29.1;python_version>'3.3' # Apache-2.0 +neutron>=12.0.0 # Apache-2.0 +networking-sfc>=8.0.0.0b1 # Apache-2.0 + + # The comment below indicates this project repo is current with neutron-lib +# and should receive neutron-lib consumption patches as they are released +# in neutron-lib. It also implies the project will stay current with TC +# and infra initiatives ensuring consumption patches can land. +# neutron-lib-current diff --git a/test-requirements.txt b/test-requirements.txt index 11fa4e8..18231dc 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -1,22 +1,16 @@ # The order of packages is significant, because pip processes them in the order # of appearance. Changing the order has an impact on the overall integration # process, which may cause wedges in the gate later. -hacking!=0.13.0,<0.14,>=0.12.0 # Apache-2.0 - -coverage>=4.0 # Apache-2.0 +hacking # Apache-2.0 +coverage!=4.4,>=4.0 # Apache-2.0 fixtures>=3.0.0 # Apache-2.0/BSD -mock>=2.0 # BSD -python-subunit>=0.0.18 # Apache-2.0/BSD -requests-mock>=1.1 # Apache-2.0 -docutils>=0.11 # OSI-Approved Open Source, Public Domain -sphinx>=1.5.1 # BSD -oslosphinx>=4.7.0 # Apache-2.0 -testrepository>=0.0.18 # Apache-2.0/BSD -testtools>=1.4.0 # MIT -testresources>=0.2.4 # Apache-2.0/BSD +python-subunit>=1.0.0 # Apache-2.0/BSD +testtools>=2.2.0 # MIT +testresources>=2.0.0 # Apache-2.0/BSD testscenarios>=0.4 # Apache-2.0/BSD -oslotest>=1.10.0 # Apache-2.0 -os-testr>=0.8.0 # Apache-2.0 -tempest-lib>=0.14.0 # Apache-2.0 -ddt>=1.0.1 # MIT -reno>=1.8.0 # Apache-2.0 +WebTest>=2.0.27 # MIT +oslotest>=3.2.0 # Apache-2.0 +stestr>=1.0.0 # Apache-2.0 +#ddt>=1.0.1 # MIT +# Needed to run DB commands in virtualenvs +PyMySQL>=0.7.6 # MIT License diff --git a/tox.ini b/tox.ini index aad5f85..41abc21 100644 --- a/tox.ini +++ b/tox.ini @@ -1,20 +1,27 @@ [tox] -minversion = 1.6 -envlist = py35,py27,pypy,pep8 +minversion = 3.18.0 +envlist = py38,pep8 skipsdist = True +ignore_basepython_conflict = True [testenv] -sitepackages = True +basepython = python3 +setenv = VIRTUAL_ENV={envdir} + PYTHONWARNINGS=default::DeprecationWarning + TRIO2O_TEST_DIRECTORY=trio2o/tests +passenv = OS_DEBUG GENERATE_HASHES usedevelop = True -install_command = pip install -c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt} {opts} {packages} -setenv = - VIRTUAL_ENV={envdir} - PYTHONWARNINGS=default::DeprecationWarning - TRIO2O_TEST_DIRECTORY=trio2o/tests -deps = - -r{toxinidir}/test-requirements.txt -commands = python setup.py testr --slowest --testr-args='{posargs}' -whitelist_externals = rm +deps = -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master} + -r{toxinidir}/requirements.txt + -r{toxinidir}/test-requirements.txt +whitelist_externals = + sh + stestr +commands = + stestr run {posargs} + stestr slowest +ignore_basepython_conflict = True + [testenv:releasenotes] commands = sphinx-build -a -W -E -d releasenotes/build/doctrees -b html releasenotes/source releasenotes/build/html @@ -22,7 +29,8 @@ commands = sphinx-build -a -W -E -d releasenotes/build/doctrees -b html releasen [testenv:pep8] deps = -r{toxinidir}/test-requirements.txt -commands = flake8 +commands = + flake8 [testenv:venv] commands = {posargs} @@ -52,6 +60,28 @@ commands = oslo_debug_helper {posargs} show-source = True builtins = _ exclude=.venv,.git,.tox,dist,doc,*lib/python*,*egg,build +ignore=F401,F632,F821,F841,W291,W503,W504,W605,E123,E117,E265,E266,E305,E402,E501,504,506,E722,E741, + H101,H104,H201,H216,H238,H30 [hacking] import_exceptions = trio2o.common.i18n + +[testenv:dev] +# run locally (not in the gate) using editable mode +# https://pip.pypa.io/en/stable/reference/pip_install/#editable-installs +# note that order is important to ensure dependencies don't override +commands = + pip install -q -e "git+https://opendev.org/openstack/networking-sfc#egg=networking_sfc" + pip install -q -e "git+https://opendev.org/openstack/neutron#egg=neutron" + +[testenv:py3-dev] +basepython = python3 +commands = + {[testenv:dev]commands} + {[testenv]commands} + +[testenv:pep8-dev] +basepython = python3 +deps = {[testenv]deps} + -r{toxinidir}/test-requirements.txt +commands = flake diff --git a/trio2o/common/quota.py b/trio2o/common/quota.py index 3904333..625ae92 100644 --- a/trio2o/common/quota.py +++ b/trio2o/common/quota.py @@ -500,13 +500,19 @@ class DbQuotaDriver(object): """ # Filter resources - if has_sync: - sync_filt = lambda x: hasattr(x, 'sync') - else: - sync_filt = lambda x: not hasattr(x, 'sync') + #if has_sync: + # sync_filt = lambda x: hasattr(x, 'sync') + #else: + # sync_filt = lambda x: not hasattr(x, 'sync') + def _sync_filter(self, x): + if has_sync: + return hasattr(x, 'sync') + else: + return not hasattr(x, 'sync') + desired = set(keys) sub_resources = {k: v for k, v in resources.items() - if k in desired and sync_filt(v)} + if k in desired and _sync_filter(v)} # Make sure we accounted for all of them... if len(keys) != len(sub_resources): diff --git a/trio2o/db/api.py b/trio2o/db/api.py index 3d33092..ee7d280 100644 --- a/trio2o/db/api.py +++ b/trio2o/db/api.py @@ -1069,13 +1069,19 @@ def volume_type_delete(context, id, session): :param context: The request context, for access checks. :param id: The id of volume type to be deleted. """ - model_query(context, models.VolumeTypes, session=session, read_deleted="no").\ + model_query(context, + models.VolumeTypes, + session=session, + read_deleted="no"). \ filter_by(id=id). \ update({'deleted': True, 'deleted_at': timeutils.utcnow(), 'updated_at': literal_column('updated_at')}) - model_query(context, models.VolumeTypeExtraSpecs, session=session, read_deleted="no"). \ + model_query(context, + models.VolumeTypeExtraSpecs, + session=session, + read_deleted="no"). \ filter_by(volume_type_id=id). \ update({'deleted': True, 'deleted_at': timeutils.utcnow(), diff --git a/trio2o/nova_apigw/controllers/image.py b/trio2o/nova_apigw/controllers/image.py index a186161..fec8a0a 100644 --- a/trio2o/nova_apigw/controllers/image.py +++ b/trio2o/nova_apigw/controllers/image.py @@ -34,7 +34,7 @@ SUPPORTED_FILTERS = { 'created': 'created_at', 'updated': 'updated_at', 'visibility': 'visibility', - 'tags': 'tags', + 'tags': 'tags', }