diff --git a/.zuul.d/rally-task-murano.yaml b/.zuul.d/rally-task-murano.yaml deleted file mode 100644 index bbb7aa48..00000000 --- a/.zuul.d/rally-task-murano.yaml +++ /dev/null @@ -1,30 +0,0 @@ -- job: - name: rally-task-murano - parent: rally-task-at-devstack - required-projects: - - name: openstack/devstack - - name: openstack/rally - - name: openstack/rally-openstack - - name: openstack/heat - - name: openstack/murano - vars: - devstack_localrc: - # TODO(frickler): drop this once heat no longer needs it - KEYSTONE_ADMIN_ENDPOINT: true - devstack_plugins: - rally-openstack: https://opendev.org/openstack/rally-openstack - murano: https://opendev.org/openstack/murano - heat: https://opendev.org/openstack/heat - devstack_services: - murano: true - # disable redundant services for the job - ceilometer-acentral: false - ceilometer-acompute: false - ceilometer-alarm-evaluator: false - ceilometer-alarm-notifier: false - ceilometer-anotification: false - ceilometer-api: false - ceilometer-collector: false - horizon: false - tempest: false - rally_task: rally-jobs/murano.yaml diff --git a/.zuul.d/zuul.yaml b/.zuul.d/zuul.yaml index f49525c2..b5fb8664 100644 --- a/.zuul.d/zuul.yaml +++ b/.zuul.d/zuul.yaml @@ -20,6 +20,7 @@ - rally_openstack/task/cleanup/resources.py - rally_openstack/task/scenarios/barbican - tests/ci/playbooks + voting: false - rally-task-cinder - rally-task-designate: files: @@ -51,9 +52,6 @@ - rally-task-mistral # it did not work for a long time. try to re-configure it #- rally-task-monasca - #- rally-task-murano: - # voting: false - - rally-task-neutron - rally-task-neutron-trunk: files: - .zuul.d/zuul.yaml @@ -68,8 +66,6 @@ - rally-task-neutron-with-extensions: voting: false - rally-task-nova - # it did not work for a long time - #- rally-task-senlin #- rally-task-octavia: # voting: false - rally-task-telemetry: @@ -91,15 +87,15 @@ - rally-openstack-docker-build #- rally-task-basic-with-existing-users - rally-task-simple-job - - rally-task-barbican: - files: - - .zuul.d/zuul.yaml - - rally-jobs/barbican.yaml - - rally_openstack/common/osclients.py - - rally_openstack/common/services/key_manager - - rally_openstack/task/cleanup/resources.py - - rally_openstack/task/scenarios/barbican - - tests/ci/playbooks + #- rally-task-barbican: + # files: + # - .zuul.d/zuul.yaml + # - rally-jobs/barbican.yaml + # - rally_openstack/common/osclients.py + # - rally_openstack/common/services/key_manager + # - rally_openstack/task/cleanup/resources.py + # - rally_openstack/task/scenarios/barbican + # - tests/ci/playbooks - rally-task-cinder #- rally-task-heat #- rally-task-ironic diff --git a/CHANGELOG.rst b/CHANGELOG.rst index a903105c..881fe9c9 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -35,7 +35,7 @@ Support of Python 3.6 and Python 3.7 Changed ~~~~~~~ -Bump docker image to use Rally 4.0.0 +Bump docker image to use Rally 4.1.0 Fixed ~~~~~ @@ -55,6 +55,16 @@ Fixed * Heat template validation when multi users. +Deprecated +~~~~~~~~~~ + +Deprecate plugins of the following projects as they are marked as retired by +OpenStack governance. + +* `Murano `_ +* `Sahara `_ +* `Senlin `_ + [2.3.0] - 2023-08-01 -------------------- diff --git a/Dockerfile b/Dockerfile index 5b3901d9..82a36152 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM xrally/xrally:4.0.0 +FROM xrally/xrally:4.1.0 # "rally" user (which is selected by-default) is owner of "/rally" directory, # so there is no need to call chown or switch the user diff --git a/requirements.txt b/requirements.txt index e4123ac4..a049f83c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,9 +1,9 @@ # of appearance. Changing the order has an impact on the overall integration # process, which may cause wedges in the gate later. -requests!=2.20.0,!=2.24.0 # Apache License, Version 2.0 +requests!=2.20.0,!=2.24.0 # Apache-2.0 -rally>=3.4.0 # Apache License, Version 2.0 +rally>=4.1.0 # Apache License, Version 2.0 # OpenStack related gnocchiclient # Apache Software License diff --git a/test-requirements.txt b/test-requirements.txt index 5c6586e3..3b31155d 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -15,8 +15,7 @@ pytest-xdist # MIT coverage!=4.4 # Apache-2.0 ddt # MIT -testtools # MIT # docs -docutils # public domain, Python, 2-Clause BSD, GPL 3 (see COPYING.txt) +docutils # BSD License/GNU General Public License (GPL)/Python Software Foundation License Pygments # BSD-2-Clause diff --git a/tests/functional/test_cli_deployment.py b/tests/functional/test_cli_deployment.py index fac02b4e..9a2c880d 100644 --- a/tests/functional/test_cli_deployment.py +++ b/tests/functional/test_cli_deployment.py @@ -14,8 +14,7 @@ # under the License. import json import re - -import testtools +import unittest from tests.functional import utils @@ -28,7 +27,7 @@ TEST_ENV = { } -class DeploymentTestCase(testtools.TestCase): +class DeploymentTestCase(unittest.TestCase): def test_create_fromenv_list_show(self): # NOTE(andreykurilin): `rally deployment create --fromenv` is @@ -82,12 +81,12 @@ class DeploymentTestCase(testtools.TestCase): "--filename %s" % file.filename) self.assertIn("t_create_file_debug", rally("deployment list")) self.assertEqual(config, rally("deployment config", getjson=True)) - e = self.assertRaises(utils.RallyCliError, rally, - "--debug deployment check") + with self.assertRaises(utils.RallyCliError) as e_ctx: + rally("--debug deployment check") self.assertIn( "AuthenticationFailed: Could not find versioned identity " "endpoints when attempting to authenticate.", - e.output) + e_ctx.exception.output) def test_use(self): rally = utils.Rally() diff --git a/tests/unit/doc/test_format.py b/tests/unit/doc/test_format.py index b8fde5ef..fe5d02df 100644 --- a/tests/unit/doc/test_format.py +++ b/tests/unit/doc/test_format.py @@ -14,12 +14,12 @@ import fnmatch import io import os import re +import unittest import rally_openstack -import testtools -class TestFormat(testtools.TestCase): +class TestFormat(unittest.TestCase): def _check_lines_wrapping(self, doc_file, raw): code_block = False text_inside_simple_tables = False diff --git a/tests/unit/rally_jobs/test_zuul_jobs.py b/tests/unit/rally_jobs/test_zuul_jobs.py index b4dae215..0e9aa3bd 100644 --- a/tests/unit/rally_jobs/test_zuul_jobs.py +++ b/tests/unit/rally_jobs/test_zuul_jobs.py @@ -50,8 +50,9 @@ class RallyJobsTestCase(test.TestCase): def _tox_job_sorter(job_name): python_maj_version = 0 python_min_version = 0 - _rally, _tox, job_name = job_name.split("-", 3) + _rally, _tox, job_name = job_name.split("-", 2) if job_name.startswith("py"): + job_name = job_name.split("-", 1)[0] python_maj_version = int(job_name[2]) python_min_version = int(job_name[3:]) job_name = "py" diff --git a/tests/unit/test.py b/tests/unit/test.py index bdf06256..3201d7e6 100644 --- a/tests/unit/test.py +++ b/tests/unit/test.py @@ -15,11 +15,11 @@ import fixtures import os +import unittest from unittest import mock import uuid from oslo_config import fixture as cfg_fixture # noqa N311 -import testtools from rally.common import db from rally import plugins @@ -41,15 +41,28 @@ class DatabaseFixture(cfg_fixture.Config): db.schema_create() -class TestCase(testtools.TestCase): +class TestCase(fixtures.TestWithFixtures, unittest.TestCase): """Test case base class for all unit tests.""" def setUp(self): super(TestCase, self).setUp() self.addCleanup(mock.patch.stopall) + # TODO(andreykurilin): port existing code to use 'standard' flow + def assertRaises( + self, + expected_exception, + callable, + *args, + **kwargs, + ): + with super().assertRaises(expected_exception) as ctx: + callable(*args, **kwargs) + return ctx.exception + def _test_atomic_action_timer(self, atomic_actions, name, count=1, - parent=[]): + parent=None): + parent = parent or [] if parent: is_found = False @@ -76,9 +89,6 @@ class TestCase(testtools.TestCase): % {"name": name, "count": count, "actual_count": actual_count}) - def assertSequenceEqual(self, iterable_1, iterable_2, msg=None): - self.assertEqual(tuple(iterable_1), tuple(iterable_2), msg) - class DBTestCase(TestCase): """Base class for tests which use DB.""" diff --git a/upper-constraints.txt b/upper-constraints.txt index 884fed38..a6eec36c 100644 --- a/upper-constraints.txt +++ b/upper-constraints.txt @@ -1,124 +1,123 @@ -alembic===1.9.4 +alembic===1.13.1 appdirs===1.4.4 -attrs===23.1.0 -autopage===0.5.1 -Babel===2.12.1 -bcrypt===4.0.1 -cachetools===5.3.1 -certifi===2023.11.17 -cffi===1.15.1 -charset-normalizer===3.2.0 +attrs===23.2.0 +autopage===0.5.2 +Babel===2.14.0 +bcrypt===4.1.2 +cachetools===5.3.3 +certifi===2024.2.2 +cffi===1.16.0 +charset-normalizer===3.3.2 click===8.1.7 -cliff===4.4.0 +cliff===4.6.0 cmd2===2.4.3 -cryptography===41.0.4 -debtcollector===2.5.0 +cryptography===42.0.5 +debtcollector===3.0.0 decorator===5.1.1 -distlib===0.3.7 -dogpile.cache===1.2.2 +distlib===0.3.8 +dogpile.cache===1.3.2 fasteners===0.19 -filelock===3.12.4 -futurist===2.4.1 +filelock===3.13.3 +futurist===3.0.0 gnocchiclient===7.0.8 -google-auth===2.23.0 -idna===3.4 -iso8601===2.0.0 -Jinja2===3.1.2 +google-auth===2.29.0 +idna===3.6 +iso8601===2.1.0 +jinja2===3.1.4 jmespath===1.0.1 jsonpatch===1.33 jsonpointer===2.4 -jsonschema===4.19.1 -jsonschema-specifications===2023.7.1 -keystoneauth1===5.5.0 -kubernetes===28.1.0 -Mako===1.2.4 -MarkupSafe===2.1.3 -msgpack===1.0.6 +jsonschema===4.19.2 +jsonschema-specifications===2023.12.1 +keystoneauth1===5.6.0 +kubernetes===29.0.0 +Mako===1.3.2 +MarkupSafe===2.1.5 +msgpack===1.0.8 murano-pkg-check===0.3.0 -netaddr===0.9.0 +netaddr===0.10.1 netifaces===0.11.0 oauthlib===3.2.2 -openstacksdk===2.1.0 +openstacksdk===3.1.0 os-client-config===2.1.0 os-faults===0.2.7 os-service-types===1.7.0 -osc-lib===3.0.0 -oslo.concurrency===5.3.0 -oslo.config===9.3.0 -oslo.context===5.3.0 -oslo.db===14.1.0 -oslo.i18n===6.2.0 -oslo.log===5.4.0 -oslo.serialization===5.3.0 -oslo.utils===7.0.0 +osc-lib===3.0.1 +oslo.concurrency===6.0.0 +oslo.config===9.4.0 +oslo.context===5.5.0 +oslo.db===15.0.0 +oslo.i18n===6.3.0 +oslo.log===5.5.1 +oslo.serialization===5.4.0 +oslo.utils===7.1.0 osprofiler===4.1.0 -packaging===23.1 -paramiko===3.3.1 +packaging===24.0 +paramiko===3.4.0 pbr===6.0.0 -pip===23.3.2 -platformdirs===3.10.0 +pip===24.0 +platformdirs===4.2.0 ply===3.11 -prettytable===3.9.0 -pyasn1===0.4.8 -pyasn1-modules===0.3.0 -pycparser===2.21 -pyghmi===1.5.63 +prettytable===3.10.0 +pyasn1===0.6.0 +pyasn1-modules===0.4.0 +pycparser===2.22 +pyghmi===1.5.68 PyNaCl===1.5.0 -pyOpenSSL===23.2.0 -pyparsing===3.1.1 +pyOpenSSL===24.1.0 +pyparsing===3.1.2 pyperclip===1.8.2 -python-barbicanclient===5.6.1 -python-cinderclient===9.4.0 -python-dateutil===2.8.2 -python-designateclient===5.3.0 -python-glanceclient===4.4.0 -python-heatclient===3.4.0 -python-ironicclient===5.4.0 -python-keystoneclient===5.3.0 -python-magnumclient===4.3.0 -python-manilaclient===4.7.0 -python-mistralclient===5.1.0 +python-barbicanclient===5.7.0 +python-cinderclient===9.5.0 +python-dateutil===2.9.0.post0 +python-designateclient===6.0.1 +python-glanceclient===4.5.0 +python-heatclient===3.5.0 +python-ironicclient===5.6.0 +python-keystoneclient===5.4.0 +python-magnumclient===4.4.0 +python-manilaclient===4.8.0 +python-mistralclient===5.2.0 python-monascaclient===2.8.0 -python-muranoclient===2.7.0 -python-neutronclient===11.1.0 -python-novaclient===18.4.0 -python-octaviaclient===3.6.0 -python-openstackclient===6.4.0 +python-muranoclient===2.8.0 +python-neutronclient===11.2.0 +python-novaclient===18.6.0 +python-octaviaclient===3.7.0 +python-openstackclient===6.6.0 python-saharaclient===4.2.0 python-senlinclient===3.1.0 -python-subunit===1.4.3 -python-swiftclient===4.4.0 -python-troveclient===8.3.0 -python-watcherclient===4.2.0 -python-zaqarclient===2.6.0 -pytz===2023.3.post1 +python-subunit===1.4.4 +python-swiftclient===4.5.0 +python-troveclient===8.4.0 +python-watcherclient===4.4.0 +python-zaqarclient===2.7.0 PyYAML===6.0.1 -rally===4.0.0 -referencing===0.30.2 +rally===4.1.0 +referencing===0.34.0 requests===2.31.0 requests-oauthlib===1.3.1 requestsexceptions===1.4.0 rfc3986===2.0.0 -rpds-py===0.10.3 +rpds-py===0.18.0 rsa===4.9 semantic-version===2.10.0 -setuptools===69.0.3 -simplejson===3.19.1 +setuptools===69.2.0 +simplejson===3.19.2 six===1.16.0 -SQLAlchemy===1.4.41 -stevedore===5.1.0 +SQLAlchemy===2.0.29 +stevedore===5.2.0 testresources===2.0.1 testscenarios===0.5.0 -testtools===2.7.0 -typing-extensions===4.9.0 -tzdata===2023.3 -ujson===5.8.0 -urllib3===1.26.16 -virtualenv===20.24.5 +testtools===2.7.1 +typing-extensions===4.11.0 +tzdata===2024.1 +ujson===5.9.0 +urllib3===1.26.18 +virtualenv===20.25.1 warlock===2.0.1 -wcwidth===0.2.6 +wcwidth===0.2.13 WebOb===1.8.7 -websocket-client===1.6.3 -wheel===0.42.0 -wrapt===1.15.0 -yaql===2.0.1 +websocket-client===1.7.0 +wheel===0.43.0 +wrapt===1.16.0 +yaql===3.0.0