diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 4232e1cbf6..842c3d5502 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -20,6 +20,8 @@ Changelog [unreleased] ------------ +This is the last release with support of Python 3.6 and Python 3.7 + Fixed ~~~~~ diff --git a/rally/common/db/migrations/versions/2016_09_08e1515a576c_fix_invalid_verification_logs.py b/rally/common/db/migrations/versions/2016_09_08e1515a576c_fix_invalid_verification_logs.py index 109eed6667..5cbb63cfe1 100644 --- a/rally/common/db/migrations/versions/2016_09_08e1515a576c_fix_invalid_verification_logs.py +++ b/rally/common/db/migrations/versions/2016_09_08e1515a576c_fix_invalid_verification_logs.py @@ -41,9 +41,8 @@ task_helper = sa.Table( sa.MetaData(), sa.Column("id", sa.Integer, primary_key=True, autoincrement=True), sa.Column("uuid", sa.String(36), nullable=False), - sa.Column("status", sa.Enum(*list(consts.TaskStatus), - name="enum_tasks_status"), - default=consts.TaskStatus.INIT, nullable=False), + sa.Column("status", sa.String(36), default=consts.TaskStatus.INIT, + nullable=False), sa.Column("verification_log", sa.Text, default=""), sa.Column("tag", sa.String(64), default=""), sa.Column("deployment_uuid", sa.String(36), nullable=False) diff --git a/rally/common/db/migrations/versions/2018_02_bc908ac9a1fc_move_deployment_to_env_2.py b/rally/common/db/migrations/versions/2018_02_bc908ac9a1fc_move_deployment_to_env_2.py index 53b56f9fd1..ee9eed9ebb 100644 --- a/rally/common/db/migrations/versions/2018_02_bc908ac9a1fc_move_deployment_to_env_2.py +++ b/rally/common/db/migrations/versions/2018_02_bc908ac9a1fc_move_deployment_to_env_2.py @@ -30,7 +30,6 @@ import uuid from alembic import op import sqlalchemy as sa -from sqlalchemy.engine import reflection from rally.common.db import sa_types from rally import exceptions @@ -127,7 +126,7 @@ verifications_helper = sa.Table( def upgrade(): connection = op.get_bind() - inspector = reflection.Inspector.from_engine(connection) + inspector = sa.inspect(connection) if "deployments" not in inspector.get_table_names(): # 7287df262dbc did not fail. nothing to do return diff --git a/rally/common/db/migrations/versions/2018_02_dc0fe6de6786_update_old_deployment_config.py b/rally/common/db/migrations/versions/2018_02_dc0fe6de6786_update_old_deployment_config.py index bcbadd1759..7048d8183b 100644 --- a/rally/common/db/migrations/versions/2018_02_dc0fe6de6786_update_old_deployment_config.py +++ b/rally/common/db/migrations/versions/2018_02_dc0fe6de6786_update_old_deployment_config.py @@ -22,7 +22,6 @@ Create Date: 2018-02-22 21:02:41.822469 from alembic import op import sqlalchemy as sa -from sqlalchemy.engine import reflection from rally.common.db import sa_types from rally import exceptions @@ -44,7 +43,7 @@ deployments_helper = sa.Table( def upgrade(): connection = op.get_bind() - inspector = reflection.Inspector.from_engine(connection) + inspector = sa.inspect(connection) if "deployments" not in inspector.get_table_names(): # 7287df262dbc did not fail. nothing to do return diff --git a/rally/common/db/sa_types.py b/rally/common/db/sa_types.py index 8eaea6c1bc..46f959728e 100644 --- a/rally/common/db/sa_types.py +++ b/rally/common/db/sa_types.py @@ -33,6 +33,7 @@ class TimeStamp(sa_types.TypeDecorator): impl = sa_types.BigInteger _coefficient = 1000000.0 + cache_ok = True def process_bind_param(self, value, dialect): if value is None: @@ -57,6 +58,8 @@ class LongText(sa_types.TypeDecorator): LONGTEXT that allows us to store 4GiB. """ + cache_ok = True + def load_dialect_impl(self, dialect): if dialect.name == "mysql": return dialect.type_descriptor(mysql_types.LONGTEXT) @@ -68,6 +71,7 @@ class JSONEncodedDict(LongText): """Represents an immutable structure as a json-encoded string.""" impl = sa_types.Text + cache_ok = True def process_bind_param(self, value, dialect): if value is not None: @@ -75,7 +79,7 @@ class JSONEncodedDict(LongText): return value def process_result_value(self, value, dialect): - if value is not None: + if value: value = json.loads( value, object_pairs_hook=collections.OrderedDict) return value @@ -84,6 +88,8 @@ class JSONEncodedDict(LongText): class JSONEncodedList(JSONEncodedDict): """Represents an immutable structure as a json-encoded string.""" + cache_ok = True + def process_result_value(self, value, dialect): if value is not None: value = json.loads(value) @@ -153,10 +159,12 @@ class MutableList(mutable.Mutable, list): class MutableJSONEncodedList(JSONEncodedList): """Represent a mutable structure as a json-encoded string.""" + cache_ok = True class MutableJSONEncodedDict(JSONEncodedDict): """Represent a mutable structure as a json-encoded string.""" + cache_ok = True MutableDict.associate_with(MutableJSONEncodedDict) diff --git a/requirements.txt b/requirements.txt index 8408bd844b..b74bae4af6 100644 --- a/requirements.txt +++ b/requirements.txt @@ -11,10 +11,10 @@ oslo.config!=4.3.0,!=4.4.0 # Apache Software License # do not forget to remove `testresources` from test-requirements. it is a # dependency of oslo.db for tests oslo.db # Apache Software License -oslo.log!=3.44.2,!=4.1.2,!=4.2.0 # Apache Software License -paramiko # LGPL +oslo.log!=3.44.2,!=4.1.2,!=4.2.0,!=5.0.1,!=5.0.2,!=5.1.0 # Apache Software License +paramiko!=2.9.0,!=2.9.1 # LGPL pbr!=2.1.0 # Apache Software License -PrettyTable # BSD (3 clause) +PrettyTable!=3.4.0 # BSD (3 clause) pyOpenSSL # Apache License, Version 2.0 PyYAML # MIT python-subunit # Apache-2.0 or BSD diff --git a/test-requirements.txt b/test-requirements.txt index e9572d8682..8245a381e8 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -6,7 +6,7 @@ hacking>=3.0 # Apache Software License pytest # MIT # py.test plugin for measuring coverage. -pytest-cov>=2.2.1 # MIT +pytest-cov # MIT # py.test plugin for generating HTML reports pytest-html # Mozilla Public License 2.0 (MPL 2.0) # py.test xdist plugin for distributed testing and loop-on-failing modes @@ -17,5 +17,5 @@ testtools # MIT testresources # UNKNOWN -docutils # public domain, Python, 2-Clause BSD, GPL 3 (see COPYING.txt) -Pygments # BSD +docutils<0.18 # public domain, Python, 2-Clause BSD, GPL 3 (see COPYING.txt) +Pygments # BSD-2-Clause diff --git a/tests/ci/playbooks/rally-install-run.yaml b/tests/ci/playbooks/rally-install-run.yaml index 47f93b2a5a..6e0a9115f8 100644 --- a/tests/ci/playbooks/rally-install-run.yaml +++ b/tests/ci/playbooks/rally-install-run.yaml @@ -4,7 +4,7 @@ - name: Get list of packages to install from bindep command: "bindep -b -f {{ zuul.project.src_dir }}/bindep.txt" register: bindep_output - ignore_errors: True + failed_when: bindep_output.rc != 0 and bindep_output.rc != 1 - name: Install distro packages from bindep package: diff --git a/upper-constraints.txt b/upper-constraints.txt index 3d8336210a..7a2fdff1b2 100644 --- a/upper-constraints.txt +++ b/upper-constraints.txt @@ -1,71 +1,84 @@ -alembic===1.6.5 -appdirs===1.4.4 -argparse===1.4.0 -attrs===21.2.0 -bcrypt===3.2.0 -certifi===2021.5.30 -cffi===1.14.5 -chardet===4.0.0 -cryptography===3.4.7 -debtcollector===2.2.0 -decorator===4.4.2 -distlib===0.3.2 +alembic===1.6.5;python_version < '3.7' +alembic===1.9.4;python_version >= '3.7' +attrs===21.2.0;python_version < '3.7' +attrs===23.1.0;python_version >= '3.7' +bcrypt===4.0.1 +certifi===2023.5.7 +cffi===1.15.1 +charset-normalizer===3.1.0 +cryptography===3.4.7;python_version < '3.7' +cryptography===40.0.2;python_version >= '3.7' +debtcollector===2.5.0 +distlib===0.3.6 extras===1.0.0 -filelock===3.0.12 -fixtures===3.0.0 -greenlet===1.1.0 -idna===2.10 -importlib-metadata===4.5.0 -importlib-resources===5.1.4 -iso8601===0.1.14 -Jinja2===3.0.1 -jsonschema===3.2.0 -linecache2===1.0.0 -Mako===1.1.4 -MarkupSafe===2.0.1 -msgpack===1.0.2 +filelock===3.0.12;python_version < '3.7' +filelock===3.12.0;python_version >= '3.7' +fixtures===4.0.1 +idna===2.10;python_version < '3.7' +idna===3.4;python_version >= '3.7' +iso8601===1.1.0 +Jinja2===3.0.1;python_version < '3.7' +Jinja2===3.1.2;python_version >= '3.7' +jsonschema===3.2.0;python_version < '3.7' +jsonschema===4.17.3;python_version >= '3.7' +Mako===1.1.4;python_version < '3.7' +Mako===1.2.4;python_version >= '3.7' +MarkupSafe===2.0.1;python_version < '3.7' +MarkupSafe===2.1.2;python_version >= '3.7' +msgpack===1.0.5 netaddr===0.8.0 netifaces===0.11.0 -oslo.config===8.7.0 -oslo.context===3.3.0 -oslo.db===9.0.0 -oslo.i18n===5.0.1 -oslo.log===4.5.0 -oslo.serialization===4.1.0 -oslo.utils===4.9.0 -packaging===20.9 -paramiko===2.7.2 -pbr===5.6.0 -pip===21.0.1 -prettytable===0.7.2 -pycparser===2.20 -pyinotify===0.9.6 -PyNaCl===1.4.0 -pyOpenSSL===20.0.1 -pyparsing===2.4.7 -pyrsistent===0.17.3 -python-dateutil===2.8.1 -python-editor===1.0.4 -python-mimeparse===1.6.0 -python-subunit===1.4.0 -pytz===2021.1 -PyYAML===5.4.1 -requests===2.25.1 -rfc3986===1.5.0 -setuptools===57.0.0 +oslo.config===8.7.0;python_version < '3.8' +oslo.context===3.3.0;python_version < '3.8' +oslo.db===9.0.0;python_version < '3.8' +oslo.i18n===5.0.1;python_version < '3.8' +oslo.log===4.5.0;python_version < '3.8' +oslo.serialization===4.1.0;python_version < '3.8' +oslo.utils===4.9.0;python_version < '3.8' +oslo.config===9.1.1;python_version >= '3.8' +oslo.context===5.1.1;python_version >= '3.8' +oslo.db===12.3.1;python_version >= '3.8' +oslo.i18n===6.0.0;python_version >= '3.8' +oslo.log===5.2.0;python_version >= '3.8' +oslo.serialization===5.1.1;python_version >= '3.8' +oslo.utils===6.1.0;python_version >= '3.8' +packaging===20.9;python_version < '3.7' +packaging===23.1;python_version >= '3.7' +paramiko===2.7.2;python_version < '3.7' +paramiko===3.1.0;python_version >= '3.7' +pbr===5.11.1 +pip===23.0.1 +platformdirs===3.2.0 +prettytable===0.7.2;python_version < '3.7' +prettytable===3.7.0;python_version >= '3.7' +pycparser===2.21 +PyNaCl===1.5.0 +pyOpenSSL===20.0.1;python_version < '3.7' +pyOpenSSL===23.1.1;python_version >= '3.7' +pyparsing===3.0.9 +pyrsistent===0.17.3;python_version < '3.7' +pyrsistent===0.19.3;python_version >= '3.7' +python-dateutil===2.8.2 +python-subunit===1.4.2 +pytz===2023.3 +PyYAML===6.0 +requests===2.25.1;python_version < '3.7' +requests===2.28.2;python_version >= '3.7' +rfc3986===1.5.0;python_version < '3.7' +rfc3986===2.0.0;python_version >= '3.7' +setuptools===57.0.0;python_version < '3.7' +setuptools===67.6.1;python_version >= '3.7' six===1.16.0 -SQLAlchemy===1.3.23 -sqlparse===0.4.1 -stevedore===3.3.0 -Tempita===0.5.2 +SQLAlchemy===1.4.41 +stevedore===3.3.0;python_version < '3.8' +stevedore===5.0.0;python_version >= '3.8' testresources===2.0.1 testscenarios===0.5.0 -testtools===2.5.0 -traceback2===1.4.0 -typing-extensions===3.10.0.0 -unittest2===1.1.0 -urllib3===1.26.5 -virtualenv===20.4.7 -wheel===0.36.2 -wrapt===1.12.1 -zipp===3.4.1 +testtools===2.6.0 +typing-extensions===4.5.0 +urllib3===1.26.15 +virtualenv===20.4.7;python_version < '3.7' +virtualenv===20.22.0;python_version >= '3.7' +wcwidth===0.2.6 +wheel===0.40.0 +wrapt===1.15.0