- The Identity (Keystone) service is now implemented on top of the unified
openstacksdkinstead ofpython-keystoneclient. It is reachable as theclients.keystoneattribute and exposes version-agnostic methods that work across Keystone v2 and v3. - Authentication is now performed once, in the
userscontext, and the resulting token is cached and reused across all iterations of a workload (for both the regular users and the admin) instead of re-authenticating every time. A reused token is proactively refreshed just before it expires, so the refresh request never lands inside a measured action. - Neutron FWaaS v2 firewall rule scenarios:
NeutronFWaaS.create_and_list_firewall_rulesNeutronFWaaS.create_and_delete_firewall_rulesNeutronFWaaS.create_and_update_firewall_rules
- Neutron FWaaS v2 firewall policy scenarios:
NeutronFWaaS.create_and_list_firewall_policiesNeutronFWaaS.create_and_delete_firewall_policiesNeutronFWaaS.create_and_update_firewall_policiesNeutronFWaaS.create_policy_add_and_remove_rules
- Neutron FWaaS v2 firewall group scenarios:
NeutronFWaaS.create_and_list_firewall_groupsNeutronFWaaS.create_and_delete_firewall_groupsNeutronFWaaS.create_and_update_firewall_groups
- Dedicated non-voting CI job
rally-task-fwaasthat enablesneutron-fwaasand runs the new FWaaS scenarios.
- Bump minimal required version to Rally 5.1.1. Switch docker image to use it.
- The OpenStack client and service utilities have been restructured into a
dedicated
rally_openstack.common.clientspackage (base,keystone, ...), splitting the previously monolithicosclientsmodule. This is the foundation for gradually moving every service off its per-projectpython-*clientontoopenstacksdk. OpenStackCredentialis now a typed dataclass instead of a plain dict. Dict-style access (credential["auth_url"]) is kept for backward compatibility.- All resource type plugins are ported to the latest interface of
Rally 5.1.1 and annotate the specification they accept. As a result
rally plugin showfor resource types and scenarios documents every key of the specification, and a task is checked against it before the workload starts. - The
size/volume_sizearguments of the Cinder and Nova scenarios now document their range form: either an integer (GB) or an object with exactly the requiredminandmaxkeys. A range carrying anything else (a typo such as{"min": 1, "maximum": 5}, or only one of the two keys) is now rejected by the task validation instead of failing mid-workload. - Numeric arguments declare their bounds, so a nonsensical value is reported by the task validation instead of failing (or silently doing nothing) in the middle of a workload: sizes are at least 1 GB, sleeps and image minimums are non-negative, and counts are at least 1.
GlanceImages.create_and_deactivate_imagenow pre-processes itsimage_locationwith thepath_or_urlresource type, like every other Glance scenario does.- The arguments that accept a fixed set of values are declared with a real
enumeration instead of the
enumvalidator: the Glancecontainer_format/disk_format/import_methodand the BGP VPNbgpvpn_type. The accepted values are published inrally plugin showand the plugin reference rather than only spelled out in prose, and a wrong value is reported per argument.
- The
identity.Identityservice layer, together with thekeystone_v2/keystone_v3service implementations, is deprecated in favour of theclients.keystoneclient. Using it now emits a warning. - Accessing the raw
python-keystoneclientviaclients.keystone(...)is deprecated. It stays the default for backward compatibility but emits a warning; use theclients.keystoneattribute (orclients.keystone(legacy=False)) for the openstacksdk-backed client. OpenStackCredential.clients()is deprecated and emits a warning. A credential is plain data that crosses the process boundary, while a client container holds live sessions and connections, so the two should not be reachable through each other. Build the container explicitly instead:osclients.Clients(credential).
- Proactive token refresh for the clients built by a scenario never actually worked; it does now, so long-running workloads no longer risk a reused token expiring in the middle of a measured action.
- The certification task (
tasks/openstack/task.yaml) passed an emptyimage_locationto the Glance scenarios whenglance_image_locationwas set to an empty string (astask_arguments.yamldoes) instead of falling back to the default image url. NovaServers.boot_server_and_attach_interfacecrashed with aTypeErrorwhen its optionalboot_server_argsargument was omitted.CinderVolumes.create_nested_snapshots_and_attach_volumeaccepted only the{"min": ..., "max": ...}form ofsize— an integer, which every other volume scenario accepts, raised aTypeError.
- Enable ansible-split-streams
for
rally-task-at-devstackZuul job.
Support for specifying Cinder API microversions, added in Rally OpenStack 3.0.0, never actually worked. The failure slipped through because CI silently ignored it (a Rally framework bug, fixed in the first Rally release after 5.0.1). The unified BlockStorage service layer had two problems:
- it selected the implementation without accounting for the requested microversion;
- it created the cinderclient without passing the requested microversion.
Both are now fixed, so scenarios that request a Cinder microversion work as expected.
CinderMixin.extend_volumenow treats thein-usestate, along withavailable, as a successful result.in-useis valid when the volume is attached to a server while being extended (an online extend, supported since Cinder microversion 3.42). This fixes the logic of theNovaServers.boot_server_attach_created_volume_and_extendscenario, which previously timed out waiting for the attached volume to becomeavailable.Automatic update of Docker Hub description for Rally-OpenStack images
- CI jobs for checking compatibility with python 3.12, 3.13 and 3.14
- New
GlanceImages.import_and_delete_imagescenario that exercises the Glance v2 interoperable image import workflow (glance-directandweb-download), including multistore deployments via thestoresandall_storesparameters. - Support for
create_volume_kwargsandboot_server_kwargsin more scenarios that boot a server from a volume. force_deleteargument for theCinderVolumes.create_and_attach_volumescenario.- Base support for mypy static type checking.
- Support for Python 3.8 and Python 3.9 is dropped
- Removed all support for the retired Murano project
- Removed all support for the retired Sahara project
- Removed all support for the retired Senlin project
- Removed all support for the retired Monasca project
- Packaging metadata is moved to
pyproject.toml(PEP 621), while pbr is kept as the build backend - Zaqar scenarios now use messaging v2 API, instead of deprecated v1 API.
- Bump minimal required version to Rally 5.0.0. Switch docker image to use it.
- All task samples are ported to Task format V2
- Tempest verifier configures the OVN agent instead of the removed OVN Metadata agent.
- Manila now defaults to the
shared-file-systemservice type (v2 API).
- Fix restoring quotas bug while rally cleanup
- Don't load compute resources in tempest verifier if nova is not enabled
- Fix cleanup when neutron is not available
- Fix tempest config failure when nova is not available
- Fix neutron cleanup order to delete routers before networks
- Fix live migration host check race under concurrent load
- Select a public network accessible by all tenants when RBAC is enabled
- Support for specifying microversions for Cinder service.
- Support Python 3.11
nova_servers_list_page_sizeconfiguration option to limit the size of pages during listing Nova Servers
Support of Python 3.6 and Python 3.7
Bump docker image to use Rally 4.1.0
Manila scenarios can not use "share_networks" context
confirmargument ofNovaServers.resize_serverscenario cannot be passed any longer due to more strict validation from python-novaclient library.Neutron ports cleanup does not use API filtering by project_id which causes redundant load to the cloud.
Nova server cleanup fails to list resources due to wrong marker.
Heat template validation when multi users.
Deprecate plugins of the following projects as they are marked as retired by OpenStack governance.
This is the last release with support of Python 3.6 and Python 3.7
- Bump min required version of Rally to 3.4.0.
- Switch docker image to rally 3.4.0 base.
- Nova API doesn't include listing agents for a long time, so no need to provide NovaAgents.list_agents scenario any more.
- Two cinder scenarios CinderVolumeTypes.create_and_update_volume_type and CinderVolumeTypes.create_volume_type_add_and_list_type_access were incompatible with Cinder API v3
- Switch docker image to rally 3.3.0 base.
- Update upper-constraints file
Ceilometer service was splitted into Gnocchi, Aodh, Panko long time ago. We kept ceilometer api plugins for backward compatibility, but it is time to go forward (ceilometerclient was deprecated and is not compatible with modern python libraries).
Compatibility with Tempest >= 27
openstack.pre_newton_neutron config option can be configured via environment spec.
{ "openstack": { "api_info": { "neutron": {"pre_newton": true} }, "auth_url": "http://example.net:5000/v3/", "region_name": "RegionOne", "endpoint_type": "public", "admin": { "username": "admin", "password": "myadminpass", "user_domain_name": "admin", "project_name": "admin", "project_domain_name": "admin" }, "https_insecure": false, "https_cacert": "", } }Reminder: Based on this option, Rally will use or not some external fields that can help to identify own resources during cleanup.
- Location of rally-openstack code with docs and samples inside the docker image changed from /rally/xrally_opentstack to /rally/xrally_openstack (there was a typo in work openstack)
- network@openstack context does not require admin credentials anymore and work with regular users as well
Some neutron scenarios accepted name parameter for create or update actions on various entities. The value of the parameter was always ignored, but anyway it gave wrong assumption.
[verification component] Make config parser case sensitivity in TempestContext and TempestConfigfileManager.
- Remove deprecated api version 1 for designate
- The rally_openstack.task.context.OpenStackContext class which provides helpers for all OpenStack context.
- Declare Python 3.8 support
- ManilaShares.create_share_and_access_from_vm scenario which allows to check share access from within a VM.
- Regular automated builds for docker image
- VMTasks.check_designate_dns_resolving scenario which tests resolving hostname from within a VM using existing designate DNS.
- xrally-openstack docker image is switched to use xrally/xrally docker image as a base user that brings use python 3.6 and ubuntu bionic.
- Bump min supported Rally framework version to 3.1.0 (rally>=3.1.0)
- Extend network@openstack context to save information about created subnets and existing_network@openstack context with listing subnets.
a huge project restructure had happened. Old paths are deprecated now.
rally_openstack.cfg -> rally_openstack.common.cfg
rally_openstack.cleanup -> rally_openstack.task.cleanup
rally_openstack.consts -> rally_openstack.common.consts
rally_openstack.contexts -> rally_openstack.task.contexts
rally_openstack.credential -> rally_openstack.common.credential
rally_openstack.embedcharts -> rally_openstack.task.ui.charts
rally_openstack.exceptions -> rally_openstack.common.exceptions
rally_openstack.hook -> rally_openstack.task.hooks
rally_openstack.osclients -> rally_openstack.common.osclients
rally_openstack.platforms -> rally_openstack.environment.platforms
rally_openstack.scenario -> rally_openstack.task.scenario
rally_openstack.scenarios -> rally_openstack.task.scenarios
rally_openstack.service -> rally_openstack.common.service
rally_openstack.services -> rally_openstack.common.services
rally_openstack.types -> rally_openstack.task.types
rally_openstack.validators -> rally_openstack.common.validators
rally_openstack.wrappers -> rally_openstack.common.wrappers
- Support for Python < 3.6
- required_clients validator was deprecated since Rally 0.10.0 (at the time when OpenStack plugins were part of Rally framework).
- api_info argument of OSClient plugins since it was merged into credentials object long time ago.
- The keyword arguments for GlanceImages.create_image_and_boot_instances scenario. They were deprecated since Rally 0.8.0 (at the time when OpenStack plugins were part of Rally framework). Use boot_server_kwargs for additional parameters when booting servers.
- server_kwargs alias for boot_server_kwargs of NovaKeypair.boot_and_delete_server_with_keypair scenario was deprecated since Rally 0.3.2 (at the time when OpenStack plugins were part of Rally framework).
- api_versions argument of cleanup manager.
- An ability to specify Primary and Alternate reference flavor disk sized.
- Support to upload an image from a https server
[tempest] Only volume-backed servers are allowed for flavors with zero disk on stein
[tempest] Failing to configure Tempest with nullable fields at Python 3 envs
Please note that Python 2.7 will reach the end of its life on January 1st, 2020. A future version of Rally will drop support for Python 2.7, it will happen soon. Also, the same will happen with support of Python 3.4 and Python 3.5
Scenarios:
- NeutronNetworks.create_and_bind_ports
- BarbicanOrders.list
- BarbicanOrders.create_key_and_delete
- BarbicanOrders.create_certificate_and_delete
- BarbicanOrders.create_asymmetric_and_delete
- Removed the former multiattach support dropped in Cinder Train (5.0.0)
- Removed the former
sort_keyandsort_dirsupport at listing cinder volumes.
- Improved logging message for the number of used threads while creating keystone users and projects/tenants at users@openstack context.
- Updated upper-constraints
- Improved check for existing rules at allow_ssh context.
Handling of errors while cleaning up octavia resources
Missing project_id key for several Octavia API calls
- libpq-dev dependency to docker image for supporting external PostgreSQL backend
- Extend configuration of identity section for tempest with endpoint type
- A new option user_password is added to users context for specifying certain password for new users.
- Default Cinder service type is switched to block-storage as it is
new unversioned endpoint.
api_versions@openstackcontext orapi_infoproperty of environment configuration should be used for selecting another service type. - Rally 1.5.1 is used by default. Minimum required version is not changed.
- Default source of tempest is switched from git.openstack.org to git.opendev.org due to recent infrastructure changes.
For performance optimization some calls from python-barbicanclient to Barbican API are lazy. In case of secret representation, until any property is invoked on it, no real call to API is made which affects timings of obtaining the resource and slows down cleanup process.
Tempest configurator was case sensitive while filtering roles by name.
python 3 incompatibility while uploading glance images
- Added neutron trunk scenarios
- Added barbican scenarios * [scenario plugin] BarbicanContainers.list * [scenario plugin] BarbicanContainers.create_and_delete * [scenario plugin] BarbicanContainers.create_and_add * [scenario plugin] BarbicanContainers.create_certificate_and_delete * [scenario plugin] BarbicanContainers.create_rsa_and_delete * [scenario plugin] BarbicanSecrets.list * [scenario plugin] BarbicanSecrets.create * [scenario plugin] BarbicanSecrets.create_and_delete * [scenario plugin] BarbicanSecrets.create_and_get * [scenario plugin] BarbicanSecrets.get * [scenario plugin] BarbicanSecrets.create_and_list * [scenario plugin] BarbicanSecrets.create_symmetric_and_delete
- Added octavia scenarios * [scenario plugin] Octavia.create_and_list_loadbalancers * [scenario plugin] Octavia.create_and_delete_loadbalancers * [scenario plugin] Octavia.create_and_update_loadbalancers * [scenario plugin] Octavia.create_and_stats_loadbalancers * [scenario plugin] Octavia.create_and_show_loadbalancers * [scenario plugin] Octavia.create_and_list_pools * [scenario plugin] Octavia.create_and_delete_pools * [scenario plugin] Octavia.create_and_update_pools * [scenario plugin] Octavia.create_and_show_pools
- Support for osprofiler config in Devstack plugin.
- Added property 'floating_ip_enabled' in magnum cluster_templates context.
- Enhanced neutron trunk port scenario to create multiple trunks
- Enhanced NeutronSecurityGroup.create_and_list_security_group_rules
- Added three new trunk port related scenarios * [scenario plugin] NeutronTrunks.boot_server_with_subports * [scenario plugin] NeutronTrunks.boot_server_and_add_subports * [scenario plugin] NeutronTrunks.boot_server_and_batch_add_subports
- Added neutron scenarios [scenario plugin] NeutronNetworks.associate_and_dissociate_floating_ips
- Extend CinderVolumes.list_volumes scenario arguments.
- Ignoring
region_namefrom environment specification while initializing keystone client. - Fetching OSProfiler trace-info for some drivers.
https_insecureis not passed to manilaclient
- Support Python 3.7 environment.
- New options
https_certandhttps_keyare added to the spec forexisting@openstackplatform to represent client certificate bundle and key files. Also the support for appropriate system environment variables (OS_CERT,OS_KEY) is added. existing@openstackplugin now supports a new fieldapi_infofor specifying not default API version/service_type to use. The format and purpose is similar to api_versions task context.- Added Cinder V3 support and use it as the default version. You could use api_versions context or api_info option of the spec to choose the proper version.
- The documentation for
existing@openstackplugin is extended with information about accepted system environment variables viarally env create --from-sysenvcommand.
- Our requirements are updated as like upper-constraints (the list of suggested tested versions to use)
- Error messages become more user-friendly in
rally env check. - Deprecate api_info argument of all clients plugins which inherits from
OSClient and deprecate api_version argument of
rally_openstack.cleanup.manager.cleanup. API information (not default version/service_type to use) has been included into credentials dictionary. - The proper packages are added to docker image to support MySQL and PostgreSQL as DB backends.
- Rename an action
nova.create_imagetonova.snapshot_serverfor better understanding for what is actually done.
- Remove deprecated wrappers (rally_openstack.wrappers) and
helpers (scenario utils) for Keystone, Cinder, Glance
services. The new service model should be used instead
(see
rally_openstack.servicesmodule for more details) while developing custom plugins. All the inner plugins have been using the new code for a long time. - Remove deprecated properties insecure, cacert (use https_insecure and https_cacert properties instead) and method list_services (use appropriate method of Clients object) from rally_openstack.credentials.OpenStackCredentials object.
- Remove deprecated in Rally 0.10.0
NovaImages.list_imagesscenario.
- Keypairs are now properly cleaned up after the execution of Magnum workloads.
Rally 1.0.0 has released. This is a major release which doesn't contain in-tree OpenStack plugins. Also, this release extends flexibility of validating required platforms which means that logic of required admin/users for the plugin can be implemented at rally-openstack side and this is done in rally-openstack 1.2.0
Also, it is sad to mention, but due to OpenStack policies we need to stop
duplicating release notes at git tag message. At least for now.
- [scenario plugin] GnocchiMetric.list_metric
- [scenario plugin] GnocchiMetric.create_metric
- [scenario plugin] GnocchiMetric.create_delete_metric
- [scenario plugin] GnocchiResource.create_resource
- [scenario plugin] GnocchiResource.create_delete_resource
- Introduce __version__, __version_tuple__ at rally_openstack module. As like other python packages each release of rally-openstack package can introduce new things, deprecate or even remove other ones. To simplify integration with other plugins which depends on rally-openstack, the new properties can be used with proper checks.
- Docker image ported to publish images from rally-openstack repo instead of using the rally framework repository. Also, the CI is extended to check ability to build Docker image for any of changes.
- An interface of ResourceType plugins is changed since Rally 0.12. All our plugins are adopted to support it. The port is done in a backward compatible way, so the minimum required version of Rally still is 0.11.0, but we suggest you to use the latest release of Rally.
- Calculation of the duration for "nova.bind_actions" action. It shows only duration of initialization Rally inner class and can be easily misunderstood as some kind of "Nova operation". Affects 1 inner scenario "NovaServers.boot_and_bounce_server".
required_servicesvalidator should not check services which are configured viaapi_versions@openstackcontext since the proper validation is done at the context itself. The inner check forapi_versions@openstackinrequired_serviceschecked onlyapi_versions@openstack, butapi_versionsstring is also valid name for the context (if there is no otherapi_versionscontexts for other platforms, but the case of name conflict is covered by another check).
A start of a fork from rally/plugins/openstack module of original OpenStack Rally project
- [scenario plugin] GnocchiArchivePolicy.list_archive_policy
- [scenario plugin] GnocchiArchivePolicy.create_archive_policy
- [scenario plugin] GnocchiArchivePolicy.create_delete_archive_policy
- [scenario plugin] GnocchiResourceType.list_resource_type
- [scenario plugin] GnocchiResourceType.create_resource_type
- [scenario plugin] GnocchiResourceType.create_delete_resource_type
- [scenario plugin] NeutronSubnets.delete_subnets
- [ci] New Zuul V3 native jobs
- Extend existing@openstack platform to support creating a specification based on system environment variables. This feature should be available with Rally>0.11.1
- Methods for association and dissociation floating ips were deprecated in novaclient a year ago and latest major release (python-novaclient 10) doesn't include them. These actions should be performed via neutronclient now. It is not as simple as it was via Nova-API and you can find more neutron-related atomic actions in results of workloads.
- os-hosts CLIs and python API bindings had been deprecated in python-novaclient 9.0.0 and became removed in 10.0.0 release. This decision affected 2 scenarios NovaHosts.list_hosts and NovaHosts.list_and_get_hosts which become redundant and we cannot leave them (python-novaclient doesn't have proper interfaces any more).
- The support of kubernetes python client (which is used by Magnum plugins) is not limited by 3.0.0 max version. You can use more modern releases of that library.