We are pleased to announce the release of: rally 5.0.0 The source is available from: https://opendev.org/openstack/rally Download the package from: https://pypi.org/project/rally For more details, please see below. Changes in rally 4.1.0..5.0.0 ----------------------------- 06e62af58 Propose Rally 5.0.0 release 1fa6c6aa2 Get back to pbr 5e947518c Revert "Propose Rally 5.0.0" cb347c318 Propose Rally 5.0.0 d87fb8ec3 refectoring: refectoring docstring 656571721 Port all samples to task v2 format cd921eafc [type-hints] Set config of context and hooks as Any c1e22f1d4 Remove several deprecated methods from rally.common.utils 983521807 Cover more task related things with type hints 3ca8e8628 Cover task plugins with type hints 4b2ef81da Update core code for plugins with type hints 765d90332 Start covering project with type hints 62eef9885 Use setuptools_scm instead of pbr and implement pep-517 5e83ecf74 Remove usage of deprecated pkg_resources lib dcba35a36 Replace deprecated abc.abstractproperty db7500c77 Get rid of pytest launcher 9806bb7da Remove implicit dependency on iso8601 4917ee6ea [ci] Extend deprecateion ignore list with eventuletutils module 087676be4 Update python versions 06cd8ce71 Python 3.14: do not use deprecated ast.Str b2cd26a4c Drop centos 8 stream jobs a776d2094 Replace retired oslosphinx Diffstat (except docs and test files) ------------------------------------- .zuul.d/docker-jobs.yaml | 4 +- .zuul.d/install-jobs.yaml | 9 +- .zuul.d/python-jobs.yaml | 33 +- .zuul.d/zuul.yaml | 31 +- CHANGELOG.rst | 26 ++ DOCKER_README.md | 8 +- .../tutorial/step_2_input_task_format.rst | 180 +++++++++- pyproject.toml | 288 ++++++++++++++++ rally/cli/cliutils.py | 14 +- rally/cli/commands/task.py | 4 +- rally/common/cfg.py | 2 +- rally/common/db/migrations/env.py | 2 +- .../2016_01_ca3626f62937_init_migration.py | 12 +- ...ea270_merge_credentials_from_users_and_admin.py | 4 +- ...2016_04_4ef544102ba7_change_task_status_enum.py | 4 +- .../2016_04_e654a0648db0_refactor_task_results.py | 4 +- ...16_07_54e844ebfbc3_update_deployment_configs.py | 8 +- ...016_08_32fada9b2fde_remove_admin_domain_name.py | 4 +- ...9_08e1515a576c_fix_invalid_verification_logs.py | 9 +- ...016_09_6ad4f426f005_add_hooks_to_task_result.py | 6 +- ...e66_new_db_schema_for_verification_component.py | 17 +- ...dbb373e8d_fix_test_results_for_verifications.py | 4 +- .../2017_01_a6f364988fc2_change_tag_type_enum.py | 4 +- ...01_f33f4610dcda_change_verification_statuses.py | 4 +- .../2017_02_92aaaa2a6bb3_refactor_credentials.py | 6 +- ...35fe16d4ab1c_update_tasks_based_on_workloads.py | 8 +- ...17_06_c517b0011857_fill_missed_workload_info.py | 4 +- ...7_07_7948b83229f6_workload_min_max_durations.py | 4 +- ...17_08_fab4f4f31f8a_fill_missed_workload_info.py | 4 +- ..._09_046a38742e89_port_configs_to_new_formats.py | 10 +- ...9_e0a5df2c5153_upsize_the_size_of_task_title.py | 4 +- ...10_4394bdc32cfd_fill_missed_workload_info_r3.py | 6 +- ...10_9a18c6fe265c_rename_namespace_to_platform.py | 4 +- .../2017_10_dc46687661df_update_contexts.py | 17 +- ...017_12_a43700a813a5_add_env_platforms_tables.py | 4 +- .../2018_01_44169f4d455e_deleted_worker_table.py | 4 +- .../2018_01_7287df262dbc_move_deployment_to_env.py | 4 +- ..._95208e4eface_add_config_field_to_env_models.py | 4 +- ...018_02_bc908ac9a1fc_move_deployment_to_env_2.py | 4 +- ...02_dc0fe6de6786_update_old_deployment_config.py | 4 +- rally/common/fileutils.py | 7 +- rally/common/io/junit.py | 94 +++-- rally/common/io/subunit_v2.py | 163 ++++++--- rally/common/plugin/discover.py | 101 +++--- rally/common/plugin/info.py | 48 ++- rally/common/plugin/meta.py | 28 +- rally/common/plugin/plugin.py | 75 ++-- rally/common/utils.py | 383 +++++++++------------ rally/common/validation.py | 121 ++++--- rally/common/version.py | 60 +++- rally/consts.py | 4 +- rally/env/platform.py | 2 +- rally/exceptions.py | 21 +- rally/plugins/__init__.py | 14 +- rally/plugins/common/validators.py | 249 ++++++++++---- rally/plugins/task/contexts/dummy.py | 8 +- rally/plugins/task/hook_triggers/event.py | 12 +- rally/plugins/task/hook_triggers/periodic.py | 24 +- rally/plugins/task/hooks/sys_call.py | 2 +- rally/plugins/task/runners/constant.py | 94 +++-- rally/plugins/task/runners/rps.py | 68 +++- rally/plugins/task/runners/serial.py | 15 +- rally/plugins/task/scenarios/dummy/dummy.py | 45 ++- .../task/scenarios/requests/http_requests.py | 13 +- rally/plugins/task/scenarios/requests/utils.py | 6 +- rally/plugins/task/sla/failure_rate.py | 15 +- rally/plugins/task/sla/iteration_time.py | 15 +- rally/plugins/task/sla/max_average_duration.py | 15 +- .../task/sla/max_average_duration_per_atomic.py | 43 ++- rally/plugins/task/sla/outliers.py | 17 +- rally/plugins/task/sla/performance_degradation.py | 15 +- rally/plugins/task/types.py | 13 +- rally/plugins/verification/testr.py | 15 +- rally/py.typed | 0 rally/task/atomic.py | 98 ++++-- rally/task/context.py | 110 ++++-- rally/task/hook.py | 110 ++++-- rally/task/processing/charts.py | 40 ++- rally/task/processing/plot.py | 4 +- rally/task/runner.py | 112 ++++-- rally/task/scenario.py | 72 +++- rally/task/sla.py | 66 ++-- rally/task/types.py | 56 ++- rally/utils/encodeutils.py | 17 +- rally/utils/strutils.py | 15 +- rally/verification/manager.py | 45 ++- requirements.txt | 20 +- samples/tasks/contexts/dummy-context.json | 22 +- samples/tasks/contexts/dummy-context.yaml | 23 +- .../runners/constant/constant-for-duration.json | 20 +- .../runners/constant/constant-for-duration.yaml | 15 +- .../tasks/runners/constant/constant-timeout.json | 22 +- .../tasks/runners/constant/constant-timeout.yaml | 15 +- samples/tasks/runners/rps/rps.json | 22 +- samples/tasks/runners/rps/rps.yaml | 15 +- samples/tasks/runners/serial/serial.json | 18 +- samples/tasks/runners/serial/serial.yaml | 15 +- .../dummy/dummy-exception-probability.json | 20 +- .../dummy/dummy-exception-probability.yaml | 21 +- samples/tasks/scenarios/dummy/dummy-exception.json | 20 +- samples/tasks/scenarios/dummy/dummy-exception.yaml | 21 +- samples/tasks/scenarios/dummy/dummy-failure.json | 26 +- samples/tasks/scenarios/dummy/dummy-failure.yaml | 21 +- samples/tasks/scenarios/dummy/dummy-output.json | 20 +- samples/tasks/scenarios/dummy/dummy-output.yaml | 21 +- .../tasks/scenarios/dummy/dummy-random-action.json | 24 +- .../tasks/scenarios/dummy/dummy-random-action.yaml | 21 +- .../dummy/dummy-random-fail-in-atomic.json | 20 +- .../dummy/dummy-random-fail-in-atomic.yaml | 22 +- .../dummy/dummy-timed-atomic-actions.json | 22 +- .../dummy/dummy-timed-atomic-actions.yaml | 21 +- samples/tasks/scenarios/dummy/dummy.json | 20 +- samples/tasks/scenarios/dummy/dummy.yaml | 21 +- .../scenarios/requests/check-random-request.json | 26 +- .../scenarios/requests/check-random-request.yaml | 21 +- .../tasks/scenarios/requests/check-request.json | 26 +- .../tasks/scenarios/requests/check-request.yaml | 21 +- samples/tasks/sla/dummy.json | 20 +- samples/tasks/sla/dummy.yaml | 33 +- setup.cfg | 43 --- setup.py | 6 +- test-requirements.txt | 4 +- .../ci/playbooks/docker-build-check-and-push.yaml | 4 +- .../ci/playbooks/fetch-html-and-json-reports.yaml | 17 +- .../roles/docker-build-image/defaults/main.yaml | 2 +- .../roles/docker-build-image/tasks/main.yaml | 4 +- .../playbooks/roles/rally-tox/defaults/main.yaml | 4 - .../rally-tox/files/find_python_for_tox_env.py | 2 +- .../playbooks/roles/rally-tox/tasks/install.yaml | 13 +- tox.ini | 80 ++--- types-requirements.txt | 8 + upper-constraints.txt | 98 +++--- 161 files changed, 3253 insertions(+), 1908 deletions(-) Requirements updates -------------------- diff --git a/requirements.txt b/requirements.txt index 72ec22aef..eaa0f87dc 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +0,0 @@ -# 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. @@ -6,4 +3,4 @@ -alembic!=1.2.0,!=1.6.3 # MIT -Jinja2 # BSD-3-Clause -jsonschema # MIT -markupsafe # BSD-3-Clause +alembic!=1.2.0,!=1.6.3 +Jinja2 # BSD +jsonschema +markupsafe @@ -14,0 +12 @@ oslo.log!=3.44.2,!=4.1.2,!=4.2.0,!=5.0.1,!=5.0.2,!=5.1.0 # Apache Software Lice +packaging!=20.5,!=20.6,!=20.7 # Apache Software License/BSD License @@ -16,2 +14,2 @@ paramiko!=2.9.0,!=2.9.1 # LGPL -pbr!=2.1.0 # Apache Software License -PrettyTable!=3.4.0 # BSD (3 clause) +pbr +PrettyTable!=3.4.0 @@ -21,2 +19,2 @@ python-subunit # Apache-2.0 or BSD -requests!=2.20.0,!=2.24.0 # Apache License, Version 2.0 -SQLAlchemy>=1.4.0 # MIT +requests!=2.20.0,!=2.24.0 # Apache-2.0 +SQLAlchemy>=2 # MIT diff --git a/test-requirements.txt b/test-requirements.txt index d4dce7205..6e7b36d96 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -7 +7 @@ hacking>=4.0 # Apache Software License -fixtures # Apache Software License/BSD License +fixtures # Apache-2.0 or BSD @@ -14 +14 @@ pytest-html # MIT -pytest-xdist # MIT +pytest-xdist diff --git a/types-requirements.txt b/types-requirements.txt new file mode 100644 index 000000000..3da34307f --- /dev/null +++ b/types-requirements.txt @@ -0,0 +1,8 @@ +mypy +# Type stubs for external packages +types-Jinja2 +types-jsonschema +types-paramiko +types-PyYAML +types-requests +types-setuptools