Rally Documentation
Rally Documentation
Rally Documentation
Release 3.3.1~dev12
OpenStack Foundation
1 Contents 3
1.1 Rally project overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Installation and upgrades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.3 Quick start . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.4 Command Line Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
1.5 Task Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
1.6 Verification Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
1.7 Rally Plugins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
1.8 Request New Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
1.9 Project Info and Release Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354
Index 431
i
ii
Rally Documentation, Release 3.3.1~dev12
OpenStack is, undoubtedly, a really huge ecosystem of cooperative services. Rally is a testing tool that answers the
question: “How does OpenStack work at scale?”. To make this possible, Rally automates and unifies multi-node
OpenStack deployment, cloud verification, testing & profiling. Rally does it in a generic way, making it possible to
check whether OpenStack is going to work well on, say, a 1k-servers installation under high load. Thus it can be used
as a basic tool for an OpenStack CI/CD system that would continuously improve its SLA, performance and stability.
Contents 1
Rally Documentation, Release 3.3.1~dev12
2 Contents
CHAPTER 1
Contents
• Overview
1.1.1 Overview
Rally is a generic testing tool that automates and unifies multi-node OpenStack deployment, verification, testing &
profiling. It can be used as a basic tool for an OpenStack CI/CD system that would continuously improve its SLA,
performance and stability.
3
Rally Documentation, Release 3.3.1~dev12
Use Cases
4 Chapter 1. Contents
Rally Documentation, Release 3.3.1~dev12
Generally, there are a few typical cases where Rally proves to be of great use:
1. Automate measuring & profiling focused on how new code changes affect the OS performance;
2. Using Rally profiler to detect scaling & performance issues;
3. Investigate how different deployments affect the OS performance:
• Find the set of suitable OpenStack deployment architectures;
• Create deployment specifications for different loads (amount of controllers, swift nodes, etc.);
4. Automate the search for hardware best suited for particular OpenStack cloud;
5. Automate the production cloud specification generation:
• Determine terminal loads for basic cloud operations: VM start & stop, Block Device create/destroy &
various OpenStack API methods;
Real-life examples
Rally allowed us to reveal a quite an interesting fact about Nova. We used NovaServers.boot_and_delete scenario
to see how the amqp_rpc_single_reply_queue option affects VM bootup time (it turns on a kind of fast RPC). Some
time ago it was shown that cloud performance can be boosted by setting it on, so we naturally decided to check this
result with Rally. To make this test, we issued requests for booting and deleting VMs for a number of concurrent users
ranging from 1 to 30 with and without the investigated option. For each group of users, a total number of 200 requests
was issued. Averaged time per request is shown below:
So Rally has unexpectedly indicated that setting the *amqp_rpc_single_reply_queue* option apparently affects
the cloud performance, but in quite an opposite way rather than it was thought before.
Another interesting result comes from the NovaServers.boot_and_list_server scenario, which enabled us to launch the
following task with Rally:
• Task context: 1 temporary OpenStack user.
6 Chapter 1. Contents
Rally Documentation, Release 3.3.1~dev12
• Task scenario: boot a single VM from this user & list all VMs.
• Task runner: repeat this procedure 200 times in a continuous way.
During the execution of this task, the user has more and more VMs on each iteration. Rally has shown that in this
case, the performance of the VM list command in Nova is degrading much faster than one might expect:
Complex scenarios
In fact, the vast majority of Rally scenarios is expressed as a sequence of “atomic” actions. For example, No-
vaServers.snapshot is composed of 6 atomic actions:
1. boot VM
2. snapshot VM
3. delete VM
4. boot VM from snapshot
5. delete VM
6. delete snapshot
Rally measures not only the performance of the scenario as a whole, but also that of single atomic actions. As a result,
Rally also displays the atomic actions performance data for each scenario iteration in a quite detailed way:
Architecture
Usually OpenStack projects are implemented “as-a-Service”, so Rally provides this approach. In addition, it imple-
ments a CLI-driven approach that does not require a daemon:
1. Rally as-a-Service: Run rally as a set of daemons that present Web UI (work in progress) so 1 RaaS could be
used by a whole team.
2. Rally as-an-App: Rally as a just lightweight and portable CLI app (without any daemons) that makes it simple
to use & develop.
The diagram below shows how this is possible:
8 Chapter 1. Contents
Rally Documentation, Release 3.3.1~dev12
The actual Rally core consists of 3 main components, listed below in the order they go into action:
1. Deploy - store credentials about your deployments, credentials are used by verify and task commands. It has
plugable mechanism that allows one to implement basic LCM for testing environment as well.
2. Verify - wraps unittest based functional testing framework to provide complete tool with result storage and
reporting. Currently has only plugin implemneted for OpenStack Tempest.
3. Task - framework that allows to write parametrized plugins and combine them in complex test cases using
YAML. Framework allows to produce all kinds of tests including functional, concurrency, regression, load,
scale, capacity and even chaos testing.
It should become fairly obvious why Rally core needs to be split to these parts if you take a look at the following
diagram that visualizes a rough algorithm for starting testing clouds at scale.
1.1.2 Glossary
Warning: Unfortunately, our glossary is not full, but the Rally team is working on improving it. If you cannot
find a definition in which you are interested, feel free to ping us via IRC (#openstack-rally channel at OFTC) or
via E-Mail ([email protected] with tag [Rally]).
• Common
• Deployment
10 Chapter 1. Contents
Rally Documentation, Release 3.3.1~dev12
• Task
• Verify
Common
Alembic
A lightweight database migration tool which powers Rally migrations. Read more at Official Alembic documentation
DB Migrations
Rally supports database schema and data transformations, which are also known as migrations. This allows you to get
your data up-to-date with latest Rally version.
Rally
A testing tool that automates and unifies multi-node OpenStack deployment and cloud verification. It can be used as a
basic tool for an OpenStack CI/CD system that would continuously improve its SLA, performance and stability.
Rally Config
Rally behavior can be customized by editing its configuration file, rally.conf, in configparser format. While being
installed, Rally generates a config with default values from its sample. When started, Rally searches for its config in
“<sys.prefix>/etc/rally/rally.conf”, “~/.rally/rally.conf”, “/etc/rally/rally.conf”
Rally DB
Rally uses a relational database as data storage. Several database backends are supported: SQLite (default), Post-
greSQL, and MySQL. The database connection can be set via the configuration file option [database]/connection.
Rally Plugin
Most parts of Rally are pluggable. Scenarios, runners, contexts and even charts for HTML report are plugins. It is
easy to create your own plugin and use it. Read more at plugin reference.
Deployment
Deployment
A set of information about target environment (for example: URI and authentication credentials) which is saved in the
database. It is used to define the target system for testing each time a task is started. It has a “type” value which changes
task behavior for the selected target system; for example type “openstack” will enable OpenStack authentication and
services.
Task
Cleanup
This is a specific context which removes all resources on target system that were created by the current task. If some
Rally-related resources remain, please file a bug and attach the task file and a list of remaining resources.
Context
A type of plugin that can run some actions on the target environment before the workloads start and after the last
workload finishes. This allows, for example, preparing the environment for workloads (e.g., create resources and
change parameters) and restoring the environment later. Each Context must implement setup() and cleanup()
methods.
Input task
A file that describes how to run a Rally Task. It can be in JSON or YAML format. The rally task start command needs
this file to run the task. The input task is pre-processed by the Jinja2 templating engine so it is very easy to create
repeated parts or calculate specific values at runtime. It is also possible to pass values via CLI arguments, using the
–task-args or –task-args-file options.
Runner
This is a Rally plugin which decides how to run Workloads. For example, they can be run serially in a single process,
or using concurrency.
Scenario
Service
Abstraction layer that represents target environment API. For example, this can be some OpenStack service. A Service
provides API versioning and action timings, simplifies API calls, and reduces code duplication. It can be used in any
Rally plugin.
SLA
Service-Level Agreement (Success Criteria). Allows you to determine whether a subtask or workload is successful by
setting success criteria rules.
Subtask
12 Chapter 1. Contents
Rally Documentation, Release 3.3.1~dev12
Task
An entity which includes all the necessary data for a test run, and results of this run.
Workload
An important part of Task: a plugin which is run by the runner. It is usually run in separate thread. Workloads are
grouped into Subtasks.
Verify
Rally can run different subunit-based testing tools against a target environment, for example tempest for OpenStack.
Verification
Rally has made it possible to find performance bugs and validate improvements for different OpenStack installations.
You can read some stories below:
4x performance increase in Keystone inside Apache using the token creation benchmark
Goal
• Get the data about performance of token creation under different load.
• Ensure that keystone with increased public_workers/admin_workers values and under Apache works better than
the default setup.
Summary
Setup
Results
1. Concurrency = 4
ac- min avg max 90 per- 95 per- suc- count apache enabled pub-
tion (sec) (sec) (sec) centile centile cess keystone lic_workers
total 0.537 0.998 4.553 1.233 1.391 100.0% 10000 N 1
total 0.189 0.296 5.099 0.417 0.474 100.0% 10000 N 4
total 0.208 0.299 3.228 0.437 0.485 100.0% 10000 Y NA
2. Concurrency = 16
ac- min avg max 90 per- 95 per- suc- count apache enabled pub-
tion (sec) (sec) (sec) centile centile cess keystone lic_workers
total 1.036 3.905 11.254 5.258 5.700 100.0% 10000 N 1
total 0.187 1.012 5.894 1.61 1.856 100.0% 10000 N 4
total 0.515 0.970 2.076 1.113 1.192 100.0% 10000 Y NA
3. Concurrency = 32
14 Chapter 1. Contents
Rally Documentation, Release 3.3.1~dev12
ac- min avg max 90 per- 95 per- suc- count apache enabled pub-
tion (sec) (sec) (sec) centile centile cess keystone lic_workers
total 1.493 7.752 16.007 10.428 11.183 100.0% 10000 N 1
total 0.198 1.967 8.54 3.223 3.701 100.0% 10000 N 4
total 1.115 1.986 6.224 2.133 2.244 100.0% 10000 Y NA
Finding a Keystone bug while testing 20 node HA cloud performance at creating 400 VMs
Goal
• Get data on how a cluster behaves when a huge amount of servers is started
• Get data on how good the neutron component is good in this case
Summary
Hardware
Cluster
Rally
Version
For this test case, we use custom Rally with the following patch:
https://review.openstack.org/#/c/96300/
Deployment
Rally was deployed for cluster using ExistingCloud type of deployment.
Server flavor
Server image
16 Chapter 1. Contents
Rally Documentation, Release 3.3.1~dev12
{
"NovaServers.boot_server": [
{
"args": {
"flavor": {
"name": "ram64"
},
"image": {
"name": "TestVM"
}
},
"runner": {
"type": "constant",
"concurrency": 5,
"times": 400
},
"context": {
"neutron_network": {
"network_ip_version": 4
},
"users": {
"concurrent": 30,
"users_per_tenant": 5,
"tenants": 5
},
"quotas": {
"neutron": {
"subnet": -1,
"port": -1,
"network": -1,
"router": -1
}
}
}
}
]
}
The only difference between first and second run is that runner.times for first time was set to 500
Results
action min (sec) avg (sec) max (sec) 90 per- 95 per- success count
centile centile
nova.boot_server 6.507 17.402 100.303 39.222 50.134 26.8% 500
total 6.507 17.402 100.303 39.222 50.134 26.8% 500
action min (sec) avg (sec) max (sec) 90 per- 95 per- success count
centile centile
nova.boot_server 5.031 8.008 14.093 9.616 9.716 100.0% 400
total 5.031 8.008 14.093 9.616 9.716 100.0% 400
Automated installation
The easiest way to install Rally is to use pip. The following command will install rally framework part of the latest
released version.
If you want to install package with rally plugins (for example, OpenStack plugins), you can ignore the step of instal-
lation rally framework step since it plugins package should include it as a dependency.
# this should install Rally framework and Rally plugins for OpenStack
# platform
pip install rally-openstack
There are official docker images for Rally package and plugins. Check Docker Hub for more details.
Rally supports DB schema versioning (schema versions are called revisions) and migration (upgrade to the latest
revision).
End user is provided with the following possibilities:
• Print current revision of DB.
18 Chapter 1. Contents
Rally Documentation, Release 3.3.1~dev12
rally db revision
rally db upgrade
AFTER upgrading Rally package. DB schema will get upgraded to the latest state and all existing data will be
kept.
WARNING Rally does NOT support DB schema downgrade. One should consider backing up existing database
in order to be able to rollback the change.
or
This section will guide you through all steps of using Rally - from installation to its advanced usage in different use
cases (including running Rally in OpenStack CI system gates to control merges of patches submitted for review on
Gerrit code review system).
In the following tutorial, we will guide you step-by-step through different use cases that might occur in Rally, starting
with the easy ones and moving towards more complicated cases.
In this demo basic operations in Rally are performed, such as adding OpenStack cloud deployment, running task
against it and generating report.
It’s assumed that you have gone through Installation process and have an already existing OpenStack deployment with
Keystone available at <KEYSTONE_AUTH_URL>.
First, you have to provider Rally with rally-openstack package, to be done with pip install
rally-openstack command.
After successful installation, you have to provide Rally with an OpenStack deployment that should be tested. This
should be done either through OpenRC files or through deployment configuration files. In case you already have an
OpenRC, it is extremely simple to register a deployment with the deployment create command:
$ . openrc admin admin
$ rally deployment create --fromenv --name=existing
+--------------------------------------+----------------------------+------------+----
˓→--------------+--------+
Alternatively, you can put the information about your cloud credentials into a JSON configuration file (let’s call it
existing.json). The deployment create command has a slightly different syntax in this case:
$ rally deployment create --file=existing.json --name=existing
+--------------------------------------+----------------------------+------------+----
˓→--------------+--------+
20 Chapter 1. Contents
Rally Documentation, Release 3.3.1~dev12
Note the last line in the output. It says that the just created deployment is now used by Rally; that means that all tasks
or verify commands are going to be run against it. Later in tutorial is described how to use multiple deployments.
Finally, the deployment check command enables you to verify that your current deployment is healthy and ready to be
tested:
$ rally deployment check
keystone endpoints are valid and following services are available:
+----------+----------------+-----------+
| Service | Service Type | Status |
+----------+----------------+-----------+
| cinder | volume | Available |
| cinderv2 | volumev2 | Available |
| ec2 | ec2 | Available |
| glance | image | Available |
| heat | orchestration | Available |
| heat-cfn | cloudformation | Available |
| keystone | identity | Available |
| nova | compute | Available |
| novav21 | computev21 | Available |
| s3 | s3 | Available |
+----------+----------------+-----------+
Now that we have a working and registered deployment, we can start testing it. The sequence of subtask to
be launched by Rally should be specified in a task input file (either in JSON or in YAML format). Let’s try
one of the task sample available in samples/tasks/scenarios, say, the one that boots and deletes multiple servers
(samples/tasks/scenarios/nova/boot-and-delete.json):
{
"NovaServers.boot_and_delete_server": [
{
"args": {
"flavor": {
"name": "m1.tiny"
},
"image": {
"name": "^cirros.*-disk$"
},
"force_delete": false
},
"runner": {
"type": "constant",
"times": 10,
"concurrency": 2
},
"context": {
"users": {
"tenants": 3,
(continues on next page)
To start a task, run the task start command (you can also add the -v option to print more logging information):
$ rally task start samples/tasks/scenarios/nova/boot-and-delete.json
--------------------------------------------------------------------------------
Preparing input task
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
Task 6fd9a19f-5cf8-4f76-ab72-2e34bb1d4996: started
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
Task 6fd9a19f-5cf8-4f76-ab72-2e34bb1d4996: finished
--------------------------------------------------------------------------------
+--------------------+-----------+-----------+-----------+---------------+------------
˓→---+---------+-------+
22 Chapter 1. Contents
Rally Documentation, Release 3.3.1~dev12
HINTS:
* To plot HTML graphics with this data, run:
rally task report 6fd9a19f-5cf8-4f76-ab72-2e34bb1d4996 --out output.html
Note that the Rally input task above uses regular expressions to specify the image and flavor name to be used for server
creation, since concrete names might differ from installation to installation. If this task fails, then the reason for that
might a non-existing image/flavor specified in the task. To check what images/flavors are available in the deployment,
you might use the the following commands:
$ . ~/.rally/openrc
$ openstack image list
+--------------------------------------+---------------------------------+--------+
| ID | Name | Status |
+--------------------------------------+---------------------------------+--------+
| 30dc3b46-4a4b-4fcc-932c-91fa87753902 | cirros-0.3.4-x86_64-uec | active |
| d687fc2a-75bd-4194-90c7-1619af255b04 | cirros-0.3.4-x86_64-uec-kernel | active |
| c764d543-027d-47a3-b46e-0c1c8a68635d | cirros-0.3.4-x86_64-uec-ramdisk | active |
+--------------------------------------+---------------------------------+--------+
Report generation
One of the most beautiful things in Rally is its task report generation mechanism. It enables you to create illustrative
and comprehensive HTML reports based on the task data. To create and open at once such a report for the last task
you have launched, call:
This is going produce an HTML page with the overview of all the scenarios that you’ve included into the last task
completed in Rally (in our case, this is just one scenario, and we will cover the topic of multiple scenarios in one task
in the next step of our tutorial):
This aggregating table shows the duration of the load produced by the corresponding scenario (“Load duration”), the
overall subtask execution time, including the duration of context creation (“Full duration”), the number of iterations
of each scenario (“Iterations”), the type of the load used while running the scenario (“Runner”), the number of failed
iterations (“Errors”) and finally whether the scenario has passed certain Success Criteria (“SLA”) that were set up by
the user in the input configuration file (we will cover these criteria in one of the next steps).
By navigating in the left panel, you can switch to the detailed view of the task results for the only scenario we included
into our task, namely NovaServers.boot_and_delete_server:
This page, along with the description of the success criteria used to check the outcome of this scenario, shows more
detailed information and statistics about the duration of its iterations. Now, the “Total durations” table splits the
duration of our scenario into the so-called “atomic actions”: in our case, the “boot_and_delete_server” scenario
consists of two actions - “boot_server” and “delete_server”. You can also see how the scenario duration changed
throughout its iterations in the “Charts for the total duration” section. Similar charts, but with atomic actions detailed
are on the “Details” tab of this page:
24 Chapter 1. Contents
Rally Documentation, Release 3.3.1~dev12
Note that all the charts on the report pages are very dynamic: you can change their contents by clicking the switches
above the graph and see more information about its single points by hovering the cursor over these points.
Take some time to play around with these graphs and then move on to the next step of our tutorial.
Rally comes with a really great collection of plugins and in most real-world cases you will use multiple plugins to test
your OpenStack cloud. Rally makes it very easy to run different test cases defined in a single task. To do so, use the
following syntax:
{
"<ScenarioName1>": [<config>, <config2>, ...]
"<ScenarioName2>": [<config>, ...]
}
{
"args": { <scenario-specific arguments> },
"runner": { <type of the runner and its specific parameters> },
"context": { <contexts needed for this scenario> },
"sla": { <different SLA configs> }
}
As an example, let’s edit our configuration file from step 1 so that it prescribes Rally to launch not only the No-
vaServers.boot_and_delete_server scenario, but also the KeystoneBasic.create_delete_user scenario. All we have
to do is to append the configuration of the second scenario as yet another top-level key of our JSON file:
multiple-scenarios.json
{
"NovaServers.boot_and_delete_server": [
{
"args": {
"flavor": {
"name": "m1.tiny"
},
"image": {
"name": "^cirros.*-disk$"
},
"force_delete": false
},
"runner": {
"type": "constant",
"times": 10,
"concurrency": 2
},
"context": {
"users": {
"tenants": 3,
"users_per_tenant": 2
}
}
}
],
"KeystoneBasic.create_delete_user": [
{
"args": {},
"runner": {
"type": "constant",
"times": 10,
"concurrency": 3
}
}
]
}
+--------------------+-----------+-----------+-----------+---------------+------------
˓→---+---------+-------+
26 Chapter 1. Contents
Rally Documentation, Release 3.3.1~dev12
...
+----------------------+-----------+-----------+-----------+---------------+----------
˓→-----+---------+-------+
+----------------------+-----------+-----------+-----------+---------------+----------
˓→-----+---------+-------+
...
Note that the HTML task reports can be generated by typing rally task report –out=report_name.html. This com-
mand works even if not all subtask are done.
Let’s take a look at the report overview page for a task with multiple subtasks
Yet another thing you can do in Rally is to launch the same scenario multiple times with different configurations.
That’s why our configuration file stores a list for the key “NovaServers.boot_and_delete_server”: you can just append
a different configuration of this scenario to this list to get it. Let’s say, you want to run the boot_and_delete_server
scenario twice: first using the “m1.tiny” flavor and then using the “m1.small” flavor:
multiple-configurations.json
{
"NovaServers.boot_and_delete_server": [
{
"args": {
"flavor": {
"name": "m1.tiny"
},
"image": {
"name": "^cirros.*-disk$"
},
"force_delete": false
},
"runner": {...},
"context": {...}
},
{
"args": {
"flavor": {
"name": "m1.small"
},
"image": {
"name": "^cirros.*-disk$"
},
"force_delete": false
},
"runner": {...},
"context": {...}
}
]
}
That’s it! You will get again the results for each configuration separately:
+--------------------+-----------+-----------+-----------+---------------+------------
˓→---+---------+-------+
...
+--------------------+-----------+-----------+-----------+---------------+------------
˓→---+---------+-------+
28 Chapter 1. Contents
Rally Documentation, Release 3.3.1~dev12
+--------------------+-----------+-----------+-----------+---------------+------------
˓→---+---------+-------+
The HTML report will also look similar to what we have seen before:
• Motivation
• Registering deployment with existing users in Rally
• Running tasks that uses existing users
Motivation
There are two very important reasons from the production world of why it is preferable to use some already existing
users to test your OpenStack cloud:
1. Read-only Keystone Backends: creating temporary users for running scenarios in Rally is just impossible in case of
r/o Keystone backends like LDAP and AD.
2. Safety: Rally can be run from an isolated group of users, and if something goes wrong, this won’t affect the rest of
the cloud users.
The information about existing users in your OpenStack cloud should be passed to Rally at the deployment initializa-
tion step. The difference from the deployment configuration we’ve seen previously is that you should set up the “users”
section with the credentials of already existing users. Let’s call this deployment configuration file existing_users.json:
{
"openstack": {
"auth_url": "http://example.net:5000/v2.0/",
"region_name": "RegionOne",
"endpoint_type": "public",
"admin": {
"username": "admin",
"password": "pa55word",
"tenant_name": "demo"
},
"users": [
{
"username": "b1",
"password": "1234",
"tenant_name": "testing"
},
{
"username": "b2",
"password": "1234",
"tenant_name": "testing"
}
]
}
}
This deployment configuration requires some basic information about the OpenStack cloud like the region name, auth
url. admin user credentials, and any amount of users already existing in the system. Rally will use their credentials to
generate load in against this deployment as soon as we register it as usual:
With this new deployment being active, Rally will use the already existing users instead of creating the temporary ones
when launching task that do not specify the “users” context.
After you have registered a deployment with existing users, don’t forget to remove the “users” context from your task
input file if you want to use existing users, like in the following configuration file (boot-and-delete.json):
30 Chapter 1. Contents
Rally Documentation, Release 3.3.1~dev12
{
"NovaServers.boot_and_delete_server": [
{
"args": {
"flavor": {
"name": "m1.tiny"
},
"image": {
"name": "^cirros.*-disk$"
},
"force_delete": false
},
"runner": {
"type": "constant",
"times": 10,
"concurrency": 2
},
"context": {}
}
]
}
When you start this task, it is going to use “b1” and “b2” for running subtask instead of creating the temporary users:
It goes without saying that support of running with predefined users simplifies the usage of Rally for generating loads
against production clouds.
(based on: http://boris-42.me/rally-can-generate-load-with-passed-users-now/)
Rally allows you to set success criteria (also called SLA - Service-Level Agreement) for every subtask. Rally will
automatically check them for you.
To configure the SLA, add the “sla” section to the configuration of the corresponding subtask (the check name is a
key associated with its target value). You can combine different success criteria:
{
"NovaServers.boot_and_delete_server": [
{
"args": {
...
},
(continues on next page)
Such configuration will mark the NovaServers.boot_and_delete_server task scenario as not successful if either some
iteration took more than 10 seconds or more than 25% iterations failed.
Checking SLA
Let us show you how Rally SLA work using a simple example based on Dummy scenarios. These scenarios actually
do not perform any OpenStack-related stuff but are very useful for testing the behaviors of Rally. Let us put in a new
task, test-sla.json, 2 scenarios – one that does nothing and another that just throws an exception:
{
"Dummy.dummy": [
{
"args": {},
"runner": {
"type": "constant",
"times": 5,
"concurrency": 2
},
"context": {
"users": {
"tenants": 3,
"users_per_tenant": 2
}
},
"sla": {
"failure_rate": {"max": 0.0}
}
}
],
"Dummy.dummy_exception": [
{
"args": {},
"runner": {
"type": "constant",
"times": 5,
"concurrency": 2
},
"context": {
"users": {
(continues on next page)
32 Chapter 1. Contents
Rally Documentation, Release 3.3.1~dev12
Note that both scenarios in these tasks have the maximum failure rate of 0% as their success criterion. We expect
that the first scenario is going to pass this criterion while the second will fail it. Let’s start the task:
After the task completes, run rally task sla_check to check the results again the success criteria you defined in the task:
+-----------------------+-----+--------------+--------+-------------------------------
˓→------------------------------------------------------------------------+
Exactly as expected.
SubTask that have passed SLA have a green check on the overview page:
Somewhat more detailed information about SLA is displayed on the subtask pages:
Success criteria present a very useful concept that enables not only to analyze the outcome of your tasks, but also to
control their execution. In one of the next sections of our tutorial, we will show how to use SLA to abort the load
generation before your OpenStack goes wrong.
A nice feature of the input task format used in Rally is that it supports the template syntax based on Jinja2. This turns
out to be extremely useful when, say, you have a fixed structure of your task but you want to parameterize this task in
some way. For example, imagine your input task file (task.yaml) runs a set of Nova scenarios:
34 Chapter 1. Contents
Rally Documentation, Release 3.3.1~dev12
---
NovaServers.boot_and_delete_server:
-
args:
flavor:
name: "m1.tiny"
image:
name: "^cirros.*-disk$"
runner:
type: "constant"
times: 2
concurrency: 1
context:
users:
tenants: 1
users_per_tenant: 1
NovaServers.resize_server:
-
args:
flavor:
name: "m1.tiny"
image:
name: "^cirros.*-disk$"
to_flavor:
name: "m1.small"
runner:
type: "constant"
times: 3
concurrency: 1
context:
users:
tenants: 1
users_per_tenant: 1
In both scenarios above, the “^cirros.-disk$”* image is passed to the scenario as an argument (so that these scenarios
use an appropriate image while booting servers). Let’s say you want to run the same set of scenarios with the same
runner/context/sla, but you want to try another image while booting server to compare the performance. The most
elegant solution is then to turn the image name into a template variable:
---
NovaServers.boot_and_delete_server:
-
args:
flavor:
name: "m1.tiny"
image:
name: {{image_name}}
runner:
type: "constant"
times: 2
concurrency: 1
context:
users:
tenants: 1
users_per_tenant: 1
and then pass the argument value for {{image_name}} when starting a task with this configuration file. Rally provides
you with different ways to do that:
1. Pass the argument values directly in the command-line interface (with either a JSON or YAML dictionary):
{
"image_name": "^cirros.*-disk$"
}
args.yaml:
---
image_name: "^cirros.*-disk$"
Passed in either way, these parameter values will be substituted by Rally when starting a task:
NovaServers.boot_and_delete_server:
-
args:
(continues on next page)
36 Chapter 1. Contents
Rally Documentation, Release 3.3.1~dev12
NovaServers.resize_server:
-
args:
flavor:
name: "m1.tiny"
image:
name: ^cirros.*-disk$
to_flavor:
name: "m1.small"
runner:
type: "constant"
times: 3
concurrency: 1
context:
users:
tenants: 1
users_per_tenant: 1
--------------------------------------------------------------------------------
Task cbf7eb97-0f1d-42d3-a1f1-3cc6f45ce23f: started
--------------------------------------------------------------------------------
Note that the Jinja2 template syntax allows you to set the default values for your parameters. With default values
set, your task file will work even if you don’t parameterize it explicitly while starting a task. The default values should
be set using the {% set . . . %} clause (task.yaml):
{% set image_name = image_name or "^cirros.*-disk$" %}
---
NovaServers.boot_and_delete_server:
-
args:
flavor:
name: "m1.tiny"
image:
name: {{image_name}}
runner:
type: "constant"
(continues on next page)
...
If you don’t pass the value for {{image_name}} while starting a task, the default one will be used:
NovaServers.boot_and_delete_server:
-
args:
flavor:
name: "m1.tiny"
image:
name: ^cirros.*-disk$
runner:
type: "constant"
times: 2
concurrency: 1
context:
users:
tenants: 1
users_per_tenant: 1
...
Advanced templates
Rally makes it possible to use all the power of Jinja2 template syntax, including the mechanism of built-in func-
tions. This enables you to construct elegant task files capable of generating complex load on your cloud.
As an example, let us make up a task file that will create new users with increasing concurrency. The input task file
(task.yaml) below uses the Jinja2 for-endfor construct to accomplish that:
---
KeystoneBasic.create_user:
{% for i in range(2, 11, 2) %}
-
args: {}
runner:
type: "constant"
times: 10
concurrency: {{i}}
sla:
(continues on next page)
38 Chapter 1. Contents
Rally Documentation, Release 3.3.1~dev12
In this case, you don’t need to pass any arguments via –task-args/–task-args-file, but as soon as you start this task,
Rally will automatically unfold the for-loop for you:
KeystoneBasic.create_user:
-
args: {}
runner:
type: "constant"
times: 10
concurrency: 2
sla:
failure_rate:
max: 0
-
args: {}
runner:
type: "constant"
times: 10
concurrency: 4
sla:
failure_rate:
max: 0
-
args: {}
runner:
type: "constant"
times: 10
concurrency: 6
sla:
failure_rate:
max: 0
-
args: {}
runner:
type: "constant"
times: 10
concurrency: 8
sla:
failure_rate:
max: 0
(continues on next page)
-
args: {}
runner:
type: "constant"
times: 10
concurrency: 10
sla:
failure_rate:
max: 0
--------------------------------------------------------------------------------
Task ea7e97e3-dd98-4a81-868a-5bb5b42b8610: started
--------------------------------------------------------------------------------
As you can see, the Rally task template syntax is a simple but powerful mechanism that not only enables you to write
elegant task configurations, but also makes them more readable for other people. When used appropriately, it can
really improve the understanding of your testing procedures in Rally when shared with others.
Testing pre-production and production OpenStack clouds is not a trivial task. From the one side it is important to
reach the OpenStack cloud’s limits, from the other side the cloud shouldn’t be damaged. Rally aims to make this task
as simple as possible. Since the very beginning Rally was able to generate enough load for any OpenStack cloud.
Generating too big a load was the major issue for production clouds, because Rally didn’t know how to stop the load
until it was too late.
With the “stop on SLA failure” feature, however, things are much better.
This feature can be easily tested in real life by running one of the most important and plain scenario called “Authen-
ticate.keystone”. This scenario just tries to authenticate from users that were pre-created by Rally. Rally input task
looks as follows (auth.yaml):
---
Authenticate.keystone:
-
runner:
type: "rps"
times: 6000
rps: 50
context:
users:
tenants: 5
users_per_tenant: 10
sla:
max_avg_duration: 5
In human-readable form this input task means: Create 5 tenants with 10 users in each, after that try to authenticate
to Keystone 6000 times performing 50 authentications per second (running new authentication request every 20ms).
Each time we are performing authentication from one of the Rally pre-created user. This task passes only if max
average duration of authentication takes less than 5 seconds.
Note that this test is quite dangerous because it can DDoS Keystone. We are running more and more simultaneously
40 Chapter 1. Contents
Rally Documentation, Release 3.3.1~dev12
authentication requests and things may go wrong if something is not set properly (like on my DevStack deployment in
Small VM on my laptop).
Let’s run Rally task with an argument that prescribes Rally to stop load on SLA failure:
....
+--------+-----------+-----------+-----------+---------------+---------------+--------
˓→-+-------+
+--------+-----------+-----------+-----------+---------------+---------------+--------
˓→-+-------+
On the chart with durations we can observe that the duration of authentication request reaches 65 seconds at the end
of the load generation. Rally stopped load at the very last moment just before bad things happened. The reason
why it runs so many attempts to authenticate is because of not enough good success criteria. We had to run a lot
of iterations to make average duration bigger than 5 seconds. Let’s chose better success criteria for this task and run it
one more time.
---
Authenticate.keystone:
-
runner:
type: "rps"
times: 6000
rps: 50
context:
users:
tenants: 5
users_per_tenant: 10
sla:
max_avg_duration: 5
max_seconds_per_iteration: 10
failure_rate:
max: 0
Now our task is going to be successful if the following three conditions hold:
1. maximum average duration of authentication should be less than 5 seconds
2. maximum duration of any authentication should be less than 10 seconds
3. no failed authentication should appear
Let’s run it!
...
+--------+-----------+-----------+-----------+---------------+---------------+--------
˓→-+-------+
+--------+-----------+-----------+-----------+---------------+---------------+--------
˓→-+-------+
42 Chapter 1. Contents
Rally Documentation, Release 3.3.1~dev12
This time load stopped after 1410 iterations versus 2495 which is much better. The interesting thing on this chart
is that first occurrence of “> 10 second” authentication happened on 950 iteration. The reasonable question: “Why
does Rally run 500 more authentication requests then?”. This appears from the math: During the execution of bad
authentication (10 seconds) Rally performed about 50 request/sec * 10 sec = 500 new requests as a result we run 1400
iterations instead of 950.
(based on: http://boris-42.me/rally-tricks-stop-load-before-your-openstack-goes-wrong/)
Rally is an awesome tool that allows you to work with multiple clouds and can itself deploy them. We already know
how to work with a single cloud. Let us now register 2 clouds in Rally: the one that we have access to and the other
that we know is registered with wrong credentials.
$ . openrc admin admin # openrc with correct credentials
$ rally deployment create --fromenv --name=cloud-1
+--------------------------------------+----------------------------+------------+----
˓→--------------+--------+
Note that the second is marked as “active” because this is the deployment we have created most recently. This means
that it will be automatically (unless its UUID or name is passed explicitly via the –deployment parameter) used by the
commands that need a deployment, like rally task start . . . or rally deployment check:
44 Chapter 1. Contents
Rally Documentation, Release 3.3.1~dev12
You can also switch the active deployment using the rally deployment use command:
$ rally deployment use cloud-1
Using deployment: 658b9bae-1f9c-4036-9400-9e71e88864fc
~/.rally/openrc was updated
...
Note the first two lines of the CLI output for the rally deployment use command. They tell you the UUID of the new
active deployment and also say that the ~/.rally/openrc file was updated – this is the place where the “active” UUID is
actually stored by Rally.
One last detail about managing different deployments in Rally is that the rally task list command outputs only those
tasks that were run against the currently active deployment, and you have to provide the –all-deployments parameter
to list all the tasks:
$ rally task list
+--------------------------------------+-----------------+----------------------------
˓→+----------------+----------+--------+-----+
Rally currently comes with a great collection of plugins that use the API of different OpenStack projects like Keystone,
Nova, Cinder, Glance and so on. The good news is that you can combine multiple plugins in one task to test your
cloud in a comprehensive way.
First, let’s see what plugins are available in Rally. One of the ways to discover these plugins is just to inspect their
source code. another is to use build-in rally plugin command.
Rally plugin CLI command is much more convenient way to learn about different plugins in Rally. This command
allows to list plugins and show detailed information about them:
--------------------------------------------------------------------------------
Create a meter and fetch its statistics.
--------------------------------------------------------------------------------
NAME
CeilometerStats.create_meter_and_get_stats
PLATFORM
openstack
MODULE
rally.plugins.openstack.scenarios.ceilometer.stats
DESCRIPTION
Meter is first created and then statistics is fetched for the same
using GET /v2/meters/(meter_name)/statistics.
PARAMETERS
+--------+-----------------------------------------------+
| name | description |
+--------+-----------------------------------------------+
(continues on next page)
46 Chapter 1. Contents
Rally Documentation, Release 3.3.1~dev12
In case if multiple plugins were found, all matched elements are listed:
$ rally plugin show NovaKeypair
+-------------+----------------------------------------------------+-----------+------
˓→-----------------------------------------------------------+
As you may know, Rally has a verification component (aka ‘rally verify’). Earlier the purpose of this component
was to simplify work with Tempest framework (The OpenStack Integration Test Suite). Rally provided a quite simple
interface to install and configure Tempest, run tests and build a report with results. But now the verification component
allows us to simplify work not only with Tempest but also with any test frameworks or tools. All you need is to create
a plugin for your framework or tool, and you will be able to use ‘rally verify’ interface for it. At this point, Rally
supports only one plugin in the verification component out of the box - as you might guess, Tempest plugin. In this
guide, we will show how to use Tempest and Rally together via the updated ‘rally verify’ interface. We assume that
you already have a Rally installation and have already registered an OpenStack deployment in Rally. So, let’s get
started!
48 Chapter 1. Contents
Rally Documentation, Release 3.3.1~dev12
The command clones Tempest from the https://git.openstack.org/openstack/tempest repository and installs it in a
Python virtual environment for the current deployment by default. All information about the created verifier is stored
in a database. It allows us to set up different Tempest versions and easily switch between them. How to do it will be
described bellow. You can list all installed verifiers via the rally verify list-verifiers command.
The arguments below allow us to override the default behavior.
Use the –source argument to specify an alternate git repository location. The path to a local Tempest repository or a
URL of a remote repository are both valid values.
$ rally verify create-verifier --type tempest --name tempest-verifier --source /home/
˓→ubuntu/tempest/
Use the –system-wide argument to perform system-wide Tempest installation. In this case, the virtual environment
will not be created and Tempest requirements will not be installed. Moreover, it is assumed that requirements are
already present in the local environment. This argument is useful when users don’t have an Internet connection to
install requirements, but they have pre-installed ones in the local environment.
$ rally verify create-verifier --type tempest --name tempest-verifier --source /home/
˓→ubuntu/tempest/ --version 13.0.0 --system-wide
To delete the Tempest verifier for all deployments execute the following command:
$ rally verify delete-verifier --id 14c94c12-633a-4522-bd3d-2508f2b9d681
2017-01-18 15:27:03.485 7474 INFO rally.api [-] Deleting verifier 'tempest-verifier'
˓→(UUID=14c94c12-633a-4522-bd3d-2508f2b9d681).
2017-01-18 15:27:03.607 7474 INFO rally.api [-] Verifier has been successfully
˓→deleted!
If you have any verifications, use the –force argument to delete the verifier and all stored verifications.
$ rally verify delete-verifier --id ec58af86-5217-4bbd-b9e5-491df6873b82
Failed to delete verifier 'tempest-verifier' (UUID=ec58af86-5217-4bbd-b9e5-
˓→491df6873b82) because there are stored verifier verifications! Please, make sure
˓→that they are not important to you. Use 'force' flag if you would like to delete
˓→verifications as well.
2017-01-18 15:49:12.951 8685 INFO rally.api [-] Verification has been successfully
˓→deleted! (continues on next page)
50 Chapter 1. Contents
Rally Documentation, Release 3.3.1~dev12
2017-01-18 15:49:13.052 8685 INFO rally.api [-] Verification has been successfully
˓→deleted!
2017-01-18 15:49:13.152 8685 INFO rally.api [-] Verification has been successfully
˓→deleted!
2017-01-18 15:49:13.270 8685 INFO rally.api [-] Verifier has been successfully
˓→deleted!
Use the –deployment-id argument to remove the only deployment-specific data, for example, the config file, etc.
2017-01-18 15:30:27.797 7659 INFO rally.api [-] Deployment-specific data has been
˓→successfully deleted!
When the –deployment-id and –force arguments are used together, the only deployment-specific data and only veri-
fications of the specified deployment will be deleted.
2017-01-18 15:55:02.657 9004 INFO rally.api [-] Deleting all verifications created by
˓→verifier 'tempest-verifier' (UUID=fbbd2bc0-dd92-4e1d-805c-672af7c5ec78) for
˓→deployment '351fdfa2-99ad-4447-ba31-22e76630df97'.
2017-01-18 15:55:02.767 9004 INFO rally.api [-] Verification has been successfully
˓→deleted!
2017-01-18 15:55:02.869 9004 INFO rally.api [-] Verification has been successfully
˓→deleted!
2017-01-18 15:55:02.870 9004 INFO rally.api [-] Deleting deployment-specific data for
˓→verifier 'tempest-verifier' (UUID=fbbd2bc0-dd92-4e1d-805c-672af7c5ec78).
2017-01-18 15:55:02.878 9004 INFO rally.api [-] Deployment-specific data has been
˓→successfully deleted!
Execute the following command to configure the Tempest verifier for the current deployment:
˓→(UUID=4a62f373-9ce7-47a3-8165-6dc7353f754a).
Use the –deployment-id argument to configure the verifier for any deployment registered in Rally.
If you want to reconfigure the Tempest verifier, just add the –reconfigure argument to the command.
˓→(UUID=351fdfa2-99ad-4447-ba31-22e76630df97).
Moreover, it is possible to extend the default verifier configuration by providing the –extend argument.
$ cat extra_options.conf
[some-section-1]
some-option = some-value
[some-section-2]
some-option = some-value
˓→(UUID=351fdfa2-99ad-4447-ba31-22e76630df97).
˓→(UUID=351fdfa2-99ad-4447-ba31-22e76630df97).
In order to see the generated Tempest config file use the –show argument.
˓→(UUID=351fdfa2-99ad-4447-ba31-22e76630df97).
[DEFAULT]
debug = True
(continues on next page)
52 Chapter 1. Contents
Rally Documentation, Release 3.3.1~dev12
[auth]
use_dynamic_credentials = True
admin_username = admin
admin_password = admin
admin_project_name = admin
admin_domain_name = Default
...
Start a verification
˓→2f2708b72c54).
˓→available
˓→available
˓→not available
˓→success [1.063s]
˓→success [0.224s]
...
By default, the command runs the full suite of Tempest tests for the current deployment. Also, it is possible to run
tests of any created verifier, and for any registered deployment in Rally, using the –id and –deployment-id arguments.
$ rally verify start --id <UUID or name of a verifier> --deployment-id <UUID or name
˓→of a deployment>
Also, there is a possibility to run a certain suite of Tempest tests, using the –pattern argument.
˓→2f2708b72c54).
˓→success [0.680s]
˓→success [0.280s]
˓→[1.015s]
˓→646s]
...
Available suites for Tempest 14.0.0 (the latest Tempest release when this documentation was written) are full, smoke,
compute, identity, image, network, object_storage, orchestration, volume, scenario. The number of available
suites depends on Tempest version because some test sets move from the Tempest tree to the corresponding Tempest
plugins.
Moreover, users can run a certain set of tests, using a regular expression.
˓→2f2708b72c54).
˓→[1.044s]
˓→754s]
54 Chapter 1. Contents
Rally Documentation, Release 3.3.1~dev12
˓→712s]
˓→684s]
˓→success [2.689s]
˓→success [0.680s]
˓→558s]
˓→success [0.673s]
˓→(UUID=351fdfa2-99ad-4447-ba31-22e76630df97)!
======
Totals
======
Ran: 10 tests in 14.578 sec.
- Success: 10
- Skipped: 0
- Expected failures: 0
- Unexpected success: 0
- Failures: 0
In such a way it is possible to run tests from a certain directory or class, and even run a single test.
$ rally verify start --pattern tempest.api.compute.admin.test_flavors.
˓→FlavorsAdminTestJSON.test_create_flavor_using_string_ram
˓→2f2708b72c54).
˓→[1.214s]
˓→(UUID=351fdfa2-99ad-4447-ba31-22e76630df97)!
======
Totals
======
Ran: 1 tests in 4.139 sec.
- Success: 1
(continues on next page)
In order to see errors of failed tests after the verification finished use the –detailed argument.
$ rally verify start --pattern tempest.api.compute.admin.test_aggregates.
˓→AggregatesAdminTestJSON --detailed
˓→b651e0541dde).
˓→success [1.401s]
˓→359s]
˓→[0.915s]
˓→714s]
˓→success [0.643s]
˓→success [0.714s]
˓→(UUID=38a397d0-ee11-475d-ab08-e17be09d0bcd)!
=============================
Failed 1 test - output below:
=============================
tempest.api.compute.admin.test_aggregates.AggregatesAdminTestJSON.test_aggregate_add_
˓→host_create_server_with_az
--------------------------------------------------------------------------------------
˓→-------------------------
56 Chapter 1. Contents
Rally Documentation, Release 3.3.1~dev12
======
Totals
======
Also, there is a possibility to run Tempest tests from a file. Users can specify a list of tests in the file and run them,
using the –load-list argument.
$ cat load-list.txt
tempest.api.identity.admin.v2.test_endpoints.EndPointsTestJSON.test_create_list_
˓→delete_endpoint[id-9974530a-aa28-4362-8403-f06db02b26c1]
tempest.api.identity.admin.v2.test_endpoints.EndPointsTestJSON.test_list_endpoints[id-
˓→11f590eb-59d8-4067-8b2b-980c7f387f51]
tempest.api.identity.admin.v2.test_roles.RolesTestJSON.test_assign_user_role[id-
˓→0146f675-ffbd-4208-b3a4-60eb628dbc5e]
tempest.api.identity.admin.v2.test_roles.RolesTestJSON.test_get_role_by_id[id-
˓→db6870bd-a6ed-43be-a9b1-2f10a5c9994f]
tempest.api.identity.admin.v2.test_roles.RolesTestJSON.test_list_roles[id-75d9593f-
˓→50b7-4fcf-bd64-e3fb4a278e23]
tempest.api.identity.admin.v2.test_roles.RolesTestJSON.test_list_user_roles[id-
˓→262e1e3e-ed71-4edd-a0e5-d64e83d66d05]
tempest.api.identity.admin.v2.test_roles.RolesTestJSON.test_remove_user_role[id-
˓→f0b9292c-d3ba-4082-aa6c-440489beef69]
tempest.api.identity.admin.v2.test_roles.RolesTestJSON.test_role_create_delete[id-
˓→c62d909d-6c21-48c0-ae40-0a0760e6db5e]
˓→2f2708b72c54).
˓→(UUID=351fdfa2-99ad-4447-ba31-22e76630df97)!
======
Totals
======
Ran: 8 tests in 14.748 sec.
- Success: 8
- Skipped: 0
- Expected failures: 0
- Unexpected success: 0
- Failures: 0
Moreover, it is possible to skip a certain list of Tempest tests, using the –skip-list argument; this should be a yaml file
containing key-value pairs, where the keys are a regex to match against the test name. The values are the reason why
the test was skipped. If an invalid regex is supplied the key is treated as a test id. For example:
$ cat skip-list.yaml
tempest.api.compute.admin.test_flavors.FlavorsAdminTestJSON.test_create_flavor_using_
˓→string_ram[id-3b541a2e-2ac2-4b42-8b8d-ba6e22fcd4da]:
tempest.api.compute.admin.test_flavors.FlavorsAdminTestJSON.test_create_flavor_verify_
˓→entry_in_list_details[id-8261d7b0-be58-43ec-a2e5-300573c3f6c5]: Reason 1
tempest.api.compute.admin.test_flavors.FlavorsAdminTestJSON.test_create_flavor_with_
˓→int_id[id-8b4330e1-12c4-4554-9390-e6639971f086]:
tempest.api.compute.admin.test_flavors.FlavorsAdminTestJSON.test_create_flavor_with_
˓→none_id[id-f83fe669-6758-448a-a85e-32d351f36fe0]: Reason 2
tempest.api.compute.admin.test_flavors.FlavorsAdminTestJSON.test_create_flavor_with_
˓→uuid_id[id-94c9bb4e-2c2a-4f3c-bb1f-5f0daf918e6d]:
The first five keys are invalid regular expressions and are included in the skip list as is.
$ rally verify start --pattern tempest.api.compute.admin.test_flavors.
˓→FlavorsAdminTestJSON --skip-list skip-list.yaml
˓→2f2708b72c54).
(continues on next page)
58 Chapter 1. Contents
Rally Documentation, Release 3.3.1~dev12
˓→success [1.889s]
˓→success [0.732s]
˓→709s]
˓→success [0.742s]
˓→(UUID=351fdfa2-99ad-4447-ba31-22e76630df97)!
======
Totals
======
Ran: 10 tests in 9.882 sec.
- Success: 5
- Skipped: 5
- Expected failures: 0
- Unexpected success: 0
- Failures: 0
Also, it is possible to specify the path to a file with a list of Tempest tests that are expected to fail. In this case, the
specified tests will have the xfail status instead of fail.
$ cat xfail-list.yaml
tempest.api.compute.admin.test_aggregates.AggregatesAdminTestJSON.test_aggregate_add_
˓→host_create_server_with_az[id-96be03c7-570d-409c-90f8-e4db3c646996]: Some reason
˓→2f2708b72c54).
˓→az ... xfail [6.328s]: Some reason why the test fails
˓→success [0.978s]
˓→042s]
˓→[0.833s]
˓→743s]
˓→success [0.815s]
˓→success [2.323s]
˓→(UUID=351fdfa2-99ad-4447-ba31-22e76630df97)!
======
Totals
======
Ran: 9 tests in 17.118 sec.
- Success: 8
- Skipped: 0
- Expected failures: 1
- Unexpected success: 0
- Failures: 0
Sometimes users may want to use the specific concurrency for running tests based on their deployments and available
resources. In this case, they can use the –concurrency argument to specify how many processes to use to run Tempest
tests. The default value (0) auto-detects CPU count.
˓→2f2708b72c54).
˓→success [0.917s]
60 Chapter 1. Contents
Rally Documentation, Release 3.3.1~dev12
˓→(UUID=351fdfa2-99ad-4447-ba31-22e76630df97)!
======
Totals
======
Ran: 8 tests in 23.043 sec.
- Success: 8
- Skipped: 0
- Expected failures: 0
- Unexpected success: 0
- Failures: 0
Also, there is a possibility to rerun tests from any verification. In order to rerun tests from some verification execute
the following command:
$ rally verify rerun --uuid cbf5e604-6bc9-47cd-9c8c-5e4c9e9545a0
2017-01-18 17:29:35.692 14127 INFO rally.api [-] Re-running tests from verification
˓→(UUID=cbf5e604-6bc9-47cd-9c8c-5e4c9e9545a0) for deployment 'tempest-2'
˓→(UUID=351fdfa2-99ad-4447-ba31-22e76630df97).
˓→2f2708b72c54).
˓→success [2.172s]
˓→(UUID=351fdfa2-99ad-4447-ba31-22e76630df97)!
======
Totals
======
Ran: 8 tests in 14.926 sec.
- Success: 8
- Skipped: 0
- Expected failures: 0
- Unexpected success: 0
- Failures: 0
In order to rerun only failed tests add the –failed argument to the command.
• Workflow
• Registering the HMAC key
• Getting the full trace
• Disabling the profiler
Rally leverage OSprofiler to generate traces of OpenStack internal calls happening during the run of a scenario. Inte-
gration of OSProfiler in Rally can help to dig into concurrency problems of OpenStack which is a huge ecosystem of
cooperative services.
Workflow
Enabling the profiler is based on a shared secret between the clients (here Rally) and the various Openstack services :
the HMAC key. In the following we assume that your OpenStack services have been configured to enable OSprofiler
and that the secret HMAC key is SECRET_KEY. This key is stored alongside the credentials of your deployment.
Once Rally is instructed about the HMAC key, a new trace can be initialized for each iteration of the workload. Rally
will then store in its reports a profiler trace id. This id can be finally used to query OSprofiler in order to get the full
trace of the iteration.
You can store your HMAC key in the environment variable OSPROFILER_HMAC_KEY. This variable will be loaded
if you create your deployment with the --from-env option.
62 Chapter 1. Contents
Rally Documentation, Release 3.3.1~dev12
Alternatively if you create your deployment using the --file option you can add the HMAC key with the following
:
{
"openstack": {
[...]
"profiler_hmac_key": "SECRET_KEY"
}
}
A trace id is stored on a per-iteration basis and can be found in the JSON report as-well as the HTML report :
OSProfiler can be asked to generate the full trace using this trace id:
Setting enable_profiler = False under the benchmark group in the configuration file will disabled the
profiler.
Gate jobs
The OpenStack CI system uses the so-called “Gate jobs” to control merges of patches submitted for review on Gerrit.
These Gate jobs usually just launch a set of tests – unit, functional, integration, style – that check that the proposed
patch does not break the software and can be merged into the target branch, thus providing additional guarantees for
the stability of the software.
You can create a Rally Gate job for your project to run Rally tasks against the patchsets proposed to be merged into
your project.
To create a rally-gate job, you should create a rally-jobs/ directory at the root of your project.
As a rule, this directory contains only {projectname}.yaml, but more scenarios and jobs can be added as well. This
yaml file is in fact an input Rally task file specifying scenarios that should be run in your gate job.
To make {projectname}.yaml run in gates, you need to add “rally-jobs” to the “jobs” section of projects.yaml in
openstack-infra/project-config.
jobs:
- python-jobs
- python-icehouse-bitrot-jobs
- python-juno-bitrot-jobs
- openstack-publish-jobs
- translation-jobs
- rally-jobs
Also add gate-rally-dsvm-{projectname} to zuul/layout.yaml:
- name: openstack/glance
template:
- name: merge-check
- name: python26-jobs
- name: python-jobs
- name: openstack-server-publish-jobs
- name: openstack-server-release-jobs
- name: periodic-icehouse
- name: periodic-juno
- name: check-requirements
- name: integrated-gate
- name: translation-jobs
- name: large-ops
- name: experimental-tripleo-jobs
check:
- check-devstack-dsvm-cells
- gate-rally-dsvm-glance
gate:
- gate-devstack-dsvm-cells
experimental:
- gate-grenade-dsvm-forward
To add one more scenario and job, you need to add {scenarioname}.yaml file here, and gate-rally-dsvm-
{scenarioname} to projects.yaml.
For example, you can add myscenario.yaml to rally-jobs directory in your project and then edit jenk-
ins/jobs/projects.yaml in this way:
- project:
name: glance
github-org: openstack
node: bare-precise
64 Chapter 1. Contents
Rally Documentation, Release 3.3.1~dev12
tarball-site: tarballs.openstack.org
doc-publisher-site: docs.openstack.org
jobs:
- python-jobs
- python-havana-bitrot-jobs
- openstack-publish-jobs
- translation-jobs
- rally-jobs
- 'gate-rally-dsvm-{name}':
name: myscenario
Finally, add gate-rally-dsvm-myscenario to zuul/layout.yaml:
- name: openstack/glance
template:
- name: python-jobs
- name: openstack-server-publish-jobs
- name: periodic-havana
- name: check-requirements
- name: integrated-gate
check:
- check-devstack-dsvm-cells
- check-tempest-dsvm-postgres-full
- gate-tempest-dsvm-large-ops
- gate-tempest-dsvm-neutron-large-ops
- gate-rally-dsvm-myscenario
It is also possible to arrange your input task files as templates based on Jinja2. Say, you want to set the image names
used throughout the myscenario.yaml task file as a variable parameter. Then, replace concrete image names in this file
with a variable:
...
NovaServers.boot_and_delete_server:
-
args:
image:
name: {{image_name}}
...
NovaServers.boot_and_list_server:
-
args:
image:
name: {{image_name}}
...
and create a file named myscenario_args.yaml that will define the parameter values:
---
image_name: "^cirros.*-disk$"
this file will be automatically used by Rally to substitute the variables in myscenario.yaml.
Along with scenario configs in yaml, the rally-jobs directory can also contain two subdirectories:
• plugins: Plugins needed for your gate job;
• extra: auxiliary files like bash scripts or images.
Both subdirectories will be copied to ~/.rally/ before the job gets started.
• Category: db
• Category: deployment
• Category: env
• Category: plugin
• Category: task
• Category: verify
1.4.1 Category: db
rally db create
rally db ensure
rally db recreate
rally db revision
66 Chapter 1. Contents
Rally Documentation, Release 3.3.1~dev12
rally db show
rally db upgrade
Note: The default value for the --deployment argument is taken from the Rally environment. Usually, the default
value is equal to the UUID of the last successful run of rally deployment create, if the --no-use argument
was not used.
Hint: You can set the default value by executing rally deployment use <uuid> (ref ).
Note: The default value for the --deployment argument is taken from the Rally environment. Usually, the default
value is equal to the UUID of the last successful run of rally deployment create, if the --no-use argument
was not used.
Hint: You can set the default value by executing rally deployment use <uuid> (ref ).
68 Chapter 1. Contents
Rally Documentation, Release 3.3.1~dev12
Note: The default value for the --deployment argument is taken from the Rally environment. Usually, the default
value is equal to the UUID of the last successful run of rally deployment create, if the --no-use argument
was not used.
Hint: You can set the default value by executing rally deployment use <uuid> (ref ).
Note: The default value for the --deployment argument is taken from the Rally environment. Usually, the default
value is equal to the UUID of the last successful run of rally deployment create, if the --no-use argument
was not used.
Hint: You can set the default value by executing rally deployment use <uuid> (ref ).
Note: The default value for the --deployment argument is taken from the Rally environment. Usually, the default
value is equal to the UUID of the last successful run of rally deployment create, if the --no-use argument
was not used.
Hint: You can set the default value by executing rally deployment use <uuid> (ref ).
70 Chapter 1. Contents
Rally Documentation, Release 3.3.1~dev12
• The environment or a particular platform became unreachable which fail Rally execution of cleanup
Command arguments:
• –json [ref ]
Format output as JSON.
• –env <uuid> [ref ]
UUID or name of the env.
type: str
72 Chapter 1. Contents
Rally Documentation, Release 3.3.1~dev12
74 Chapter 1. Contents
Rally Documentation, Release 3.3.1~dev12
Command arguments:
• –uuid <uuid> [ref ]
UUID of task. If –uuid is “last” the results of the most recently created task will be displayed.
type: str
• –iterations-data [ref ]
Print detailed results for each iteration.
• –filter-by <filter_by> [ref ]
Filter the displayed workloads.<sla-failures>: only display the failed workloads.
type: str
Note: The default value for the --deployment argument is taken from the Rally environment. Usually, the default
value is equal to the UUID of the last successful run of rally deployment create, if the --no-use argument
was not used.
Hint: You can set the default value by executing rally deployment use <uuid> (ref ).
Note: The default value for the --deployment argument is taken from the Rally environment. Usually, the default
value is equal to the UUID of the last successful run of rally deployment create, if the --no-use argument
was not used.
Hint: You can set the default value by executing rally deployment use <uuid> (ref ).
Note: The default value for the --deployment argument is taken from the Rally environment. Usually, the default
value is equal to the UUID of the last successful run of rally deployment create, if the --no-use argument
was not used.
Hint: You can set the default value by executing rally deployment use <uuid> (ref ).
76 Chapter 1. Contents
Rally Documentation, Release 3.3.1~dev12
Note: The default value for the --deployment argument is taken from the Rally environment. Usually, the default
value is equal to the UUID of the last successful run of rally deployment create, if the --no-use argument
was not used.
Hint: You can set the default value by executing rally deployment use <uuid> (ref ).
Note: The default value for the --deployment argument is taken from the Rally environment. Usually, the default
value is equal to the UUID of the last successful run of rally deployment create, if the --no-use argument
was not used.
Hint: You can set the default value by executing rally deployment use <uuid> (ref ).
78 Chapter 1. Contents
Rally Documentation, Release 3.3.1~dev12
Run task.
If both task_args and task_args_file are specified, they are going to be merged. task_args has a higher priority so it
overrides values from task_args_file. There are 3 kinds of return codes, 0: no error, 1: running error, 2: sla check
failed.
Command arguments:
• –deployment <uuid> [ref ]
Note: The default value for the --deployment argument is taken from the Rally environment. Usually, the default
value is equal to the UUID of the last successful run of rally deployment create, if the --no-use argument
was not used.
Hint: You can set the default value by executing rally deployment use <uuid> (ref ).
• –abort-on-sla-failure [ref ]
Abort the execution of a task when any SLA check for it fails for subtask or workload.
80 Chapter 1. Contents
Rally Documentation, Release 3.3.1~dev12
Note: The default value for the --deployment argument is taken from the Rally environment. Usually, the default
value is equal to the UUID of the last successful run of rally deployment create, if the --no-use argument
was not used.
Hint: You can set the default value by executing rally deployment use <uuid> (ref ).
type: str
Note: The default value for the --deployment-id argument is taken from the Rally environment. Usually, the
default value is equal to the UUID of the last successful run of rally deployment create, if the --no-use
argument was not used.
Hint: You can set the default value by executing rally deployment use <uuid> (ref ).
Deployment name or UUID. HINT: You can list all deployments, executing command rally deployment
list.
type: str
• –reconfigure [ref ]
Reconfigure verifier.
• –extend <path/json/yaml> [ref ]
Extend verifier configuration with extra options. If options are already present, the given ones will override
them. Can be a path to a regular config file or just a json/yaml.
type: str
• –override <path> [ref ]
Override verifier configuration by another one from a given source.
type: str
• –show [ref ]
Show verifier configuration.
Create a verifier.
Command arguments:
• –name <name> [ref ]
Verifier name (for example, ‘My verifier’).
82 Chapter 1. Contents
Rally Documentation, Release 3.3.1~dev12
type: str
• –type <type> [ref ]
Verifier plugin name. HINT: You can list all verifier plugins, executing command rally verify list-plugins.
type: str
• –platform <platform> [ref ]
Verifier plugin platform. Should be specified in case of two verifier plugins with equal names but in
different platforms.
type: str
• –source <source> [ref ]
Path or URL to the repo to clone verifier from.
type: str
• –version <version> [ref ]
Branch, tag or commit ID to checkout before verifier installation (the ‘master’ branch is used by default).
type: str
• –system-wide [ref ]
Use the system-wide environment for verifier instead of a virtual environment.
• –extra-settings <extra_settings> [ref ]
Extra installation settings for verifier.
type: str
• –no-use [ref ]
Not to set the created verifier as the default verifier for future operations.
Delete a verifier.
Command arguments:
• –id <id> [ref ]
Verifier name or UUID. HINT: You can list all verifiers, executing command rally verify list-verifiers.
type: str
• –deployment-id <id> [ref ]
Note: The default value for the --deployment-id argument is taken from the Rally environment. Usually, the
default value is equal to the UUID of the last successful run of rally deployment create, if the --no-use
argument was not used.
Hint: You can set the default value by executing rally deployment use <uuid> (ref ).
Deployment name or UUID. If specified, only the deployment-specific data will be deleted for verifier.
HINT: You can list all deployments, executing command rally deployment list.
type: str
• –force [ref ]
Delete all stored verifications of the specified verifier. If a deployment specified, only verifications of
this deployment will be deleted. Use this argument carefully! You can delete verifications that may be
important to you.
Note: The default value for the --deployment-id argument is taken from the Rally environment. Usually, the
default value is equal to the UUID of the last successful run of rally deployment create, if the --no-use
argument was not used.
Hint: You can set the default value by executing rally deployment use <uuid> (ref ).
84 Chapter 1. Contents
Rally Documentation, Release 3.3.1~dev12
Deployment name or UUID. HINT: You can list all deployments, executing command rally deployment
list.
type: str
• –file <path> [ref ]
File to import test results from.
type: str
• –run-args <run_args> [ref ]
Arguments that might be used when running tests. For example, ‘{concurrency: 2, pattern: set=identity}’.
type: str
• –no-use [ref ]
Not to set the created verification as the default verification for future operations.
Note: The default value for the --deployment-id argument is taken from the Rally environment. Usually, the
default value is equal to the UUID of the last successful run of rally deployment create, if the --no-use
argument was not used.
Hint: You can set the default value by executing rally deployment use <uuid> (ref ).
Deployment name or UUID. HINT: You can list all deployments, executing command rally deployment
list.
type: str
• –tag <tag> [ref ]
Tags to filter verifications by.
type: str
default: none
• –status <status> [ref ]
86 Chapter 1. Contents
Rally Documentation, Release 3.3.1~dev12
Note: The default value for the --deployment-id argument is taken from the Rally environment. Usually, the
default value is equal to the UUID of the last successful run of rally deployment create, if the --no-use
argument was not used.
Hint: You can set the default value by executing rally deployment use <uuid> (ref ).
Deployment name or UUID. HINT: You can list all deployments, executing command rally deployment
list.
type: str
• –failed [ref ]
Rerun only failed tests.
• –tag <tag> [ref ]
88 Chapter 1. Contents
Rally Documentation, Release 3.3.1~dev12
Note: The default value for the --deployment-id argument is taken from the Rally environment. Usually, the
default value is equal to the UUID of the last successful run of rally deployment create, if the --no-use
argument was not used.
Hint: You can set the default value by executing rally deployment use <uuid> (ref ).
Deployment name or UUID. HINT: You can list all deployments, executing command rally deployment
list.
type: str
• –tag <tag> [ref ]
Mark verification with a tag or a few tags.
type: str
• –pattern <pattern> [ref ]
Pattern which will be used for running tests. Can be a regexp or a verifier-specific entity (for example, in
case of Tempest you can specify ‘set=smoke’).
type: str
• –concurrency <N> [ref ]
How many processes to be used for running verifier tests. The default value (0) auto-detects your CPU
count.
type: int
• –load-list <path> [ref ]
Path to a file with a list of tests to run.
type: str
• –skip-list <path> [ref ]
Path to a file with a list of tests to skip. Format: json or yaml like a dictionary where keys are regexes
matching test names and values are reasons.
type: str
• –xfail-list <path> [ref ]
Path to a file with a list of tests that will be considered as expected failures. Format: json or yaml like a
dictionary where keys are test names and values are reasons.
type: str
• –detailed [ref ]
Show verification details such as errors of failed tests.
• –no-use [ref ]
Not to set the finished verification as the default verification for future operations.
Update a verifier.
Command arguments:
• –id <id> [ref ]
Verifier name or UUID. HINT: You can list all verifiers, executing command rally verify list-verifiers.
type: str
• –update-venv [ref ]
Update the virtual environment for verifier.
• –version <version> [ref ]
Branch, tag or commit ID to checkout. HINT: Specify the same version to pull the latest repo code.
type: str
• –system-wide [ref ]
Switch to using the system-wide environment.
• –no-system-wide [ref ]
Switch to using the virtual environment. If the virtual environment doesn’t exist, it will be created.
This section describes Rally Task Component (including feature presented since Rally v0.5.0, allowing to analyze
statistics trends for the given tasks).
90 Chapter 1. Contents
Rally Documentation, Release 3.3.1~dev12
• HTML Reports
– Task Report
– Trends Report
• CLI References
HTML reports provide comprehensive analysis. Data is structured and displayed interactively, with charts and tables.
Task Report
Get the whole information about task workloads results, in pretty and convenient format!
Example:
Report can be generated from a task results JSON file. This file can be generated with command rally task results:
Report can be generated from many tasks. All workloads from specified tasks results will be composed into an entire
report. To generate report, use –tasks argument with specified list of tasks UUIDs and/or tasks results JSON files.
Example:
Task Overview
This is a table with brief summary of all workloads results. All columns are sortable and clickable.
Load duration
Time from first iteration start to last iteration end. In other words, this is a time of all workload iterations execution.
Full duration
This time includes iterations time (Load duration) plus time taken by another actions related to the task, mostly
Contexts execution time.
Iterations
How many times the workload has run. This comes from the value of runner.times in task input file.
92 Chapter 1. Contents
Rally Documentation, Release 3.3.1~dev12
Failures
Number of failed iterations. Failure means that there was an Exception raised.
Success (SLA)
This is a boolean result of workload SLA. See Service-level agreement explanation below.
Input file
This shows JSON which can be used to run a task with exactly the same workloads list and configuration. This is not
an exact copy (neither concatenation) of actually used input files (in command rally task start), however this is exactly
what is needed to run workloads given in the report.
Tab «Overview»
Service-level agreement
SLA results appear in task report only if “sla” section is defined in task input file.
For example, having this in task input file:
"sla": {
"performance_degradation": {
"max_degradation": 50
},
"max_seconds_per_iteration": 1.0,
"failure_rate": {
"max": 0
(continues on next page)
If “sla” section is missed in input file, then block Service-level agreement is not displayed and its result is assumed to
be always passed (no matter how many failures occurred).
Total durations
There is a durations analysis, which is represented by statistics table and duration StackedArea chart.
94 Chapter 1. Contents
Rally Documentation, Release 3.3.1~dev12
Action Name of the workload metric that has some duration saved. This is either an atomic action name or Total
which points to workload load duration.
Min (sec) Minimal duration value
Median (sec) Median duration value
90%ile (sec) Percentile for 90% durations
95%ile (sec) Percentile for 95% durations
Max (sec) Maximal duration value
Avg (sec) Average duration value
Success Percent of successful runs. This is how many percent of this action runs (number of runs is given in Count
column) were successful.
Count Number of actually run atomic actions. This can differ from iterations count because some atomic actions do
not start if some exception is raised before in the workload runtime (for example in previous atomic action).
This chart shows load_duration and idle_duration values per iteration. If there is only one iteration, then chart is
useless so it is hidden.
Idle duration
Sometimes workload does nothing for some reason (waiting for something or just making a dummy load). This is
achieved by calling time.sleep() and spent time is called idle duration.
Load Profile
Load profile chart shows number of iterations running in parallel for each workload moment:
Distribution
Tab «Details»
There is a StackedArea chart that shows atomic actions durations per iteration. If there is only one iteration, then chart
is useless so it is hidden.
Distribution
This tab only appears if workload provides some custom output via method Scenario.add_output().
96 Chapter 1. Contents
Rally Documentation, Release 3.3.1~dev12
Aggregated
This shows charts with data aggregated from all iterations. This means that each X axis point represents an iteration,
so each iteration provided some values that are aggregated into charts or tables.
Per iteration
Each iteration can create its own, complete charts and tables.
Tab «Failures»
98 Chapter 1. Contents
Rally Documentation, Release 3.3.1~dev12
This shows JSON for input file which can be used to run current workload.
Trends Report
If same workload is run several times, some results of these runs can be compared. Compared metrics are success rate
(percent of successful iterations) and statistics for durations.
Use command rally task trends with given tasks UUIDs and/or tasks results JSON files and the name of desired output
file.
Example:
Workload run number in shown on charts X axis, the order of runs is exactly as it comes from tasks data in the moment
of report generation.
Trends overview
That is obvious that it is not possible to have trend for a single value. There should be at least two workload runs to
make results comparison possible. So in this case there is only a help message displayed.
Tab «Total»
Total durations
Statistics trends for atomic actions durations. Charts are same as for total durations.
Tab «Configuration»
For more information regarding Rally Task Component CLI please proceed to CLI reference
Functional testing is a first step to ensuring that your product works as expected and API covers all use-cases. Rally
Verification Component is all about this. It is not designed to generate a real big load (for this job we have Task Com-
ponent), but it should be enough to check that your environment works by different tools (we call them Verification).
1.6.1 Verifiers
• What is it?
• Verifier statuses
• Verification statuses
• Known verifier types
What is it?
Verifier Plugin is a compatibility layer between Rally and the specific tool (such as Tempest) which runs tests. It
implements features like installation, configuration, upgrades, running, etc in terms of the tool. It is a driver in other
words. It is a pluggable entity, which means that you can easily add support for whatever tool you want (see HowTo
add support for new tool page for more information). Even more, you can deliver such plugin separately from Rally
itself, but we firmly recommend to push a change to Rally upstream (see Contribute to Rally guide), so Rally core-team
will able to review it and help to improve.
Verifier is an instance of the Verifier Plugin. It is an installed tool. For example, “Tempest” is a set of functional tests,
it is Verifier Plugin (we have a plugin for it). Installed Tempest 12.0 from https://github.com/openstack/tempest in a
virtual environment is the verifier.
Verifier is not aligned to any particular deployment like it was in the past, you can use one verifier for testing unlimited
number of deployments (each deployment will have separate configuration files for the tool).
Verifier & Verifier Plugin are the main entities which Verification component operates with. Another one is the
verifications results.
Verifier statuses
• updating - This state identifies the process of updating verifier (version, source, packages, etc.).
• extending - The process of extending a verifier by its plugins.
• failed - Something went wrong while installation.
Verification statuses
• init - Initial state. It appears instantly after calling rally verify start command before the actual run of
verifier’s tool.
• running - Identifies the process of execution tool.
• finished- Verification is finished without errors and failures.
• failed - Verification is finished, but there are some failed tests.
• crashed - Unexpected error had happened while running verification.
You can execute command rally verify list-plugins locally to check available verifiers in your environ-
ment.
Cut down from Global Plugins Reference page:
tempest
Tempest verifier.
Description:
Quote from official documentation:
This is a set of integration tests to be run against a live OpenStack cluster. Tempest has batteries
of tests for OpenStack API validation, Scenarios, and other specific tests useful in validating
an OpenStack deployment.
Rally supports features listed below:
• cloning Tempest: repository and version can be specified
• installation: system-wide with checking existence of required packages or in virtual environment
• configuration: options are discovered via OpenStack API, but you can override them if you need
• running: pre-creating all required resources(i.e images, tenants, etc), prepare arguments, launching
Tempest, live-progress output
• results: all verifications are stored in db, you can built reports, compare verification at whatever you
want time.
Appeared in Rally 0.8.0 (actually, it appeared long time ago with first revision of Verification Component,
but 0.8.0 is mentioned since it is first release after Verification Component redesign)
Running arguments:
• concurrency: Number of processes to be used for launching tests. In case of 0 value, number of processes will
be equal to number of CPU cores.
Third-party
Rally stores all verifications results in its DataBase so that you can access and process results at any time. No matter
what verifier you use, results will be stored in a unified way and reports will be unified too.
We support several types of reports out of the box: HTML, HTML-Static, JSON, JUnit-XML; but our reporting system
is pluggable so that you can write your own plugin to build some specific reports or to export results to the specific
system (see HowTo add new reporting mechanism for more details‘).
• HTML reports
– Filtering results
– Tests Tags
– Tracebacks & Reasons
• Plugins Reference for all out-of-the-box reporters
– html
– html-static
– json
– junit-xml
HTML reports
HTML report is the most convenient type of reports. It includes as much as possible useful information about Verifi-
cations.
Here is an example of HTML report for 3 verifications. It was generated by next command:
Filtering results
You can filter tests by setting or removing a mark from check box of the particular status column of the summary table.
Tests Tags
Some of the tests tools support tests tagging. It can be used for setting unique IDs, groups, etc. Usually, such tags are
included in test name. It is inconvenient and Rally stores tags separately. By default they are hidden, but if you push
“Toggle tags” button, they will be displayed under tests names.
Tests with “failed” and “expected failure” statuses have tracebacks of failures. Tests with “skipped”, “expected fail-
ure”, “unexpected success” status has “reason” of events. By default, both tracebacks and reasons are hidden, but you
can show them by clicking on the appropriate test.
html
html-static
json
Platform: default
Module: rally.plugins.verification.reporters
junit-xml
Platform: default
Module: rally.plugins.verification.reporters
• Category: verify
– rally verify add-verifier-ext
– rally verify configure-verifier
– rally verify create-verifier
– rally verify delete
– rally verify delete-verifier
– rally verify delete-verifier-ext
– rally verify import
– rally verify list
– rally verify list-plugins
– rally verify list-verifier-exts
Category: verify
Verifier name or UUID. HINT: You can list all verifiers, executing command rally verify list-verifiers.
type: str
• –deployment-id <id> [ref ]
Note: The default value for the --deployment-id argument is taken from the Rally environment. Usually, the
default value is equal to the UUID of the last successful run of rally deployment create, if the --no-use
argument was not used.
Hint: You can set the default value by executing rally deployment use <uuid> (ref ).
Deployment name or UUID. HINT: You can list all deployments, executing command rally deployment
list.
type: str
• –reconfigure [ref ]
Reconfigure verifier.
• –extend <path/json/yaml> [ref ]
Extend verifier configuration with extra options. If options are already present, the given ones will override
them. Can be a path to a regular config file or just a json/yaml.
type: str
• –override <path> [ref ]
Override verifier configuration by another one from a given source.
type: str
• –show [ref ]
Show verifier configuration.
Create a verifier.
Command arguments:
• –name <name> [ref ]
Verifier name (for example, ‘My verifier’).
type: str
• –type <type> [ref ]
Verifier plugin name. HINT: You can list all verifier plugins, executing command rally verify list-plugins.
type: str
• –platform <platform> [ref ]
Verifier plugin platform. Should be specified in case of two verifier plugins with equal names but in
different platforms.
type: str
• –source <source> [ref ]
Path or URL to the repo to clone verifier from.
type: str
• –version <version> [ref ]
Branch, tag or commit ID to checkout before verifier installation (the ‘master’ branch is used by default).
type: str
• –system-wide [ref ]
Use the system-wide environment for verifier instead of a virtual environment.
• –extra-settings <extra_settings> [ref ]
Extra installation settings for verifier.
type: str
• –no-use [ref ]
Not to set the created verifier as the default verifier for future operations.
Delete a verifier.
Command arguments:
• –id <id> [ref ]
Verifier name or UUID. HINT: You can list all verifiers, executing command rally verify list-verifiers.
type: str
• –deployment-id <id> [ref ]
Note: The default value for the --deployment-id argument is taken from the Rally environment. Usually, the
default value is equal to the UUID of the last successful run of rally deployment create, if the --no-use
argument was not used.
Hint: You can set the default value by executing rally deployment use <uuid> (ref ).
Deployment name or UUID. If specified, only the deployment-specific data will be deleted for verifier.
HINT: You can list all deployments, executing command rally deployment list.
type: str
• –force [ref ]
Delete all stored verifications of the specified verifier. If a deployment specified, only verifications of
this deployment will be deleted. Use this argument carefully! You can delete verifications that may be
important to you.
Note: The default value for the --deployment-id argument is taken from the Rally environment. Usually, the
default value is equal to the UUID of the last successful run of rally deployment create, if the --no-use
argument was not used.
Hint: You can set the default value by executing rally deployment use <uuid> (ref ).
Deployment name or UUID. HINT: You can list all deployments, executing command rally deployment
list.
type: str
• –file <path> [ref ]
Note: The default value for the --deployment-id argument is taken from the Rally environment. Usually, the
default value is equal to the UUID of the last successful run of rally deployment create, if the --no-use
argument was not used.
Hint: You can set the default value by executing rally deployment use <uuid> (ref ).
Deployment name or UUID. HINT: You can list all deployments, executing command rally deployment
list.
type: str
• –tag <tag> [ref ]
Tags to filter verifications by.
type: str
default: none
• –status <status> [ref ]
Status to filter verifications by.
type: str
default: none
Note: The default value for the --deployment-id argument is taken from the Rally environment. Usually, the
default value is equal to the UUID of the last successful run of rally deployment create, if the --no-use
argument was not used.
Hint: You can set the default value by executing rally deployment use <uuid> (ref ).
Deployment name or UUID. HINT: You can list all deployments, executing command rally deployment
list.
type: str
• –failed [ref ]
Rerun only failed tests.
Verifier name or UUID. HINT: You can list all verifiers, executing command rally verify list-verifiers.
type: str
• –deployment-id <id> [ref ]
Note: The default value for the --deployment-id argument is taken from the Rally environment. Usually, the
default value is equal to the UUID of the last successful run of rally deployment create, if the --no-use
argument was not used.
Hint: You can set the default value by executing rally deployment use <uuid> (ref ).
Deployment name or UUID. HINT: You can list all deployments, executing command rally deployment
list.
type: str
• –tag <tag> [ref ]
Mark verification with a tag or a few tags.
type: str
• –pattern <pattern> [ref ]
Pattern which will be used for running tests. Can be a regexp or a verifier-specific entity (for example, in
case of Tempest you can specify ‘set=smoke’).
type: str
• –concurrency <N> [ref ]
How many processes to be used for running verifier tests. The default value (0) auto-detects your CPU
count.
type: int
• –load-list <path> [ref ]
Path to a file with a list of tests to run.
type: str
• –skip-list <path> [ref ]
Path to a file with a list of tests to skip. Format: json or yaml like a dictionary where keys are regexes
matching test names and values are reasons.
type: str
• –xfail-list <path> [ref ]
Path to a file with a list of tests that will be considered as expected failures. Format: json or yaml like a
dictionary where keys are test names and values are reasons.
type: str
• –detailed [ref ]
Show verification details such as errors of failed tests.
• –no-use [ref ]
Not to set the finished verification as the default verification for future operations.
Update a verifier.
Command arguments:
• –id <id> [ref ]
Verifier name or UUID. HINT: You can list all verifiers, executing command rally verify list-verifiers.
type: str
• –update-venv [ref ]
Update the virtual environment for verifier.
• –version <version> [ref ]
Branch, tag or commit ID to checkout. HINT: Specify the same version to pull the latest repo code.
type: str
• –system-wide [ref ]
Switch to using the system-wide environment.
• –no-system-wide [ref ]
Switch to using the virtual environment. If the virtual environment doesn’t exist, it will be created.
1.6.4 HowTo
Reporting mechanism for verifications is pluggable. Custom plugins can be used for custom output formats or for
exporting results to external systems.
We hardly recommend to read Rally Plugins page to understand how do Rally Plugins work.
• Spec
• Example of custom JSON Reporter
Spec
Basically, you need to implement only two methods “validate” and “generate”.
Method “validate” should check that destination of the report is right. Method “generate” should build a report or
export results somewhere; actually, it is up to you what it should do but return format is strict, see Spec section for
what it can return.
import json
@reporter.configure("summary-in-json")
class SummaryInJsonReporter(reporter.VerificationReporter):
"""Store summary of verification(s) in JSON format"""
# ISO 8601
TIME_FORMAT = "%Y-%m-%dT%H:%M:%S%z"
@classmethod
def validate(cls, output_destination):
# we do not have any restrictions for destination, so nothing to
# check
pass
def generate(self):
report = {}
for v in self.verifications:
report[v.uuid] = {
"started_at": v.created_at.strftime(self.TIME_FORMAT),
"finished_at": v.updated_at.strftime(self.TIME_FORMAT),
"status": v.status,
"run_args": v.run_args,
"tests_count": v.tests_count,
"tests_duration": v.tests_duration,
"skipped": v.skipped,
"success": v.success,
"expected_failures": v.expected_failures,
"unexpected_success": v.unexpected_success,
"failures": v.failures,
# v.tests includes all information about launched tests,
# but for simplification of this fake reporters, let's
# save just names
"launched_tests": [test["name"]
for test in v.tests.values()]
}
if self.output_destination:
# In case of output_destination existence report will be saved
# to hard drive and there is nothing to print to stdout, so
# "print" key is not used
return {"files": {self.output_destination: raw_report},
"open": self.output_destination}
else:
# it is something that will be print at CLI layer.
return {"print": raw_report}
First of all, you should start from the reading of Rally Plugins page. After you learned basic things about Rally plugin
mechanism, let’s move to Verifier interface itself.
• Spec
• Example of Fake Verifier Manager
Spec
<object>.totals = {
"tests_count": <total tests count>,
"tests_duration": <total tests duration>,
"failures": <total count of failed tests>,
"skipped": <total count of skipped tests>,
"success": <total count of successful tests>,
"unexpected_success":
<total count of unexpected successful tests>,
"expected_failures": <total count of expected failed tests>
}
<object>.tests = {
<test_id>: {
"status": <test status>,
"name": <test name>,
"duration": <test duration>,
"reason": <reason>, # optional
"traceback": <traceback> # optional
},
...
}
uninstall(full=False)
Uninstall a verifier.
Parameters full – If False (default behaviour), only deployment-specific data will
be removed
uninstall_extension(name)
Uninstall a verifier extension.
Parameters name – Name of extension to uninstall
Raises NotImplementedError – This feature is verifier-specific, so you should
override this method in your plugin if it supports extensions
validate_args(args)
Validate given arguments to be used for running verification.
Parameters args – A dict of arguments with values
import random
import re
@manager.configure("fake-tool", default_repo="https://example.com")
class FakeTool(manager.VerifierManager):
"""Fake Tool \o/"""
TESTS = ["fake_tool.tests.bar.FatalityTestCase.test_one",
"fake_tool.tests.bar.FatalityTestCase.test_two",
"fake_tool.tests.bar.FatalityTestCase.test_three",
"fake_tool.tests.bar.FatalityTestCase.test_four",
"fake_tool.tests.foo.MegaTestCase.test_one",
"fake_tool.tests.foo.MegaTestCase.test_two",
"fake_tool.tests.foo.MegaTestCase.test_three",
"fake_tool.tests.foo.MegaTestCase.test_four"]
def install(self):
pass
Note: This document describes migration process from 0.7.0 to 0.8.0 Rally version. You can apply this instruction
for migration to later versions, but check all references and release notes before trying to do it.
Verification Component was introduced long time ago even before the first Rally release. It started as a small helper
thing but became a big powerful tool. Since it was not designed to all features that were implemented there later, it
contained a lot of workarounds and hacks.
New Verification Component, which we are happy to introduce, should fix all architecture issues and improve user-
experience. Unfortunately, fixing all those obsolete architecture decisions could not be done in a backward-compatible
way, or it would produce much more workarounds. That is why we decided to redesign the whole component in a
clear way - remove old code and write a new one from scratch.
Migration to New Verification Component should be simple and do not take too much time. You can find description
of made changes below.
• Reports
• Verification statuses
• Command Line Interface
– Installing verifier
– Re-install verifier aka update
– Uninstall
– Installation extensions
– Uninstall extensions
– List extensions
– Discover available tests
– Configuring
– Show config
– Running verification
– Show verification result
– Listing all verifications
– Importing results
– Building reports
– The End
Reports
We completely reworked verification reports and merged comparison to main report. Now you can build one report
for multiple number of verifications.
For more details follow Verification reports
Verification statuses
The latest information about verification statuses you can find at Verification statuses.
You can find the latest information about Verification Component CLI here - Command Line Interface.
Installing verifier
Changes:
1) rally verify update-verifier doesn’t require deployment id
2) You can switch between usage of system-wide installation and virtual environment.
3) You can update just virtual environment without cloning verifier code again
Uninstall
Changes:
1) As it was mentioned before, Verifier doesn’t have an alignment to any particular deployment, so deployment ar-
gument is optional now. If –deployment-id argument is specified only deployment specific data will be removed
(i.e, configurations).
2) New –force flag for removing all verifications results for that verifier.
Installation extensions
Changes:
1) –system-wide flag is removed. Rally checks the verifier information to identify where to install the extension -
in a system-side way or use virtual environment.
2) New –extra-settings flag. In case of Tempest, it is redundant, but for other verifiers allows to transmit some extra
installation settings for verifier extension.
Uninstall extensions
Changes:
1) It is one more place where you do not need to pass –system-wide flag anymore.
2) –deployment flag is gone.
3) –repo-name is renamed to just –name.
List extensions
Changes:
1) No need to specify –system-wide flag.
2) –deployment flag is gone.
Changes:
1) No need to specify –system-wide flag.
2) –deployment flag is gone.
Configuring
Changes:
1) The argument --override replaces old --tempest-config name. First of all, argument name “override”
is a unified word without alignment to any tool. Also, it describes in the best way the meaning of the action: use
client specified configuration file.
2) The argument --extend replaces old --add-options. It accepts a path to config in INI format or
JSON/YAML string. In future, it will be extended with the ability to specify a path to JSON/YAML file.
3) The argument --reconfigure replaces old --override. It means that existing file will be ignored and
new one will be used/created.
Show config
Changes:
We do not have a separate command for that task. rally verify configure-verifier
--show shows an existing configuration (if it exists) if --reconfigure argument is not specified.
Running verification
Changes:
1) You need to pass verifier id
2) Arguments --set and --regex are merged in the new model to single --pattern argument. Name of tests
set should be specified like --pattern set=<set_name>. It was done to provide a way for each verifier
to support custom arguments.
3) The argument --tests-file was deprecated in Rally 0.6.0 and we are ready to remove it.
4) Arguments --skip-list and --xfail-list accept path to file in JSON/YAML format. Content should
be a dictionary, where keys are tests names (full name with id and tags) and values are reasons.
5) The argument --tempest-config is gone. Use rally verify configure-verifier --id
<id> --deployment-id <uuid> --override <path> instead.
6) The argument --system-wide is gone like in most of other commands.
7) In case of specified --detailed arguments, traces of failed tests will be displayed (default behaviour in old
verification design)
• Separate command which calls rally verify show with hardcoded --detailed flag rally verify de-
tailed
Changes:
1) Redundant rally verify detailed command is removed
2) Sorting tests via --sort-by argument is extended to name/duration/status
Changes:
You can filter verifications by verifiers, by deployments and results statuses.
Importing results
$ rally verify import --deployment <uuid> --set <set_name> --file <path> --no-use
Changes:
1) You need to specify verifier to import results for.
2) The argument --set is merged into unified --run-args.
Building reports
$ rally verify report --uuid <uuid> --type <type> --to <destination> --open
Changes:
1) Building reports becomes pluggable. You can extend reporters types. See Verification reports for more details.
2) The argument --type expects type of report (HTML/JSON). There are no more separate arguments for each
report type.
Hint: You can list all supported types, executing rally plugin list --plugin-base
VerificationReporter command.
3) Reports are not aligned to only local types, so the argument --to replaces --output-file. In case of
HTML/JSON reports, it can include a path to the local file like it was previously or URL to some external
system with credentials like https://username:[email protected]:777.
4) The comparison is embedded into main reports and it is not limited by two verifications results. There are no
reasons for the separate command for that task.
The End
Tempest, OpenStack’s official test suite, is a powerful tool for running a set of functional tests against an OpenStack
cluster. Tempest automatically runs against every patch in every project of OpenStack, which lets us avoid merging
changes that break functionality.
Unfortunately, it has limited opportunities to be used, to process its results, etc. That is why we started Verification
Component initiative a long time ago (see a blog post for more details, but be careful as all user interface is changed
completely since that time).
The primary goal of Rally Product is to provide a simple way to do complex things. As for functional testing, Verifi-
cation Component includes interfaces for:
• Managing things. Create an isolated virtual environment and install verification tool there? Yes, we can do
it! Clone tool from Git repositories? Sure! Store several versions of one tool (you know, sometimes they are
incompatible, with different required packages and so on)? Of course! In general, Verification Component
allows to install, upgrade, reinstall, configure your tool. You should not care about zillion options anymore
Rally will discover them via cloud UX and make the configuration file for you automatically.
• Launching verifiers. Launchers of specific tools don’t always contain all required features, Rally team tries to
fix this omission. Verification Component supports some of them like expected failures, a list of tests to skip, a
list of tests to launch, re-running previous verification or just failed tests from it and so on. Btw, all verification
runs arguments are stored in the database.
• Processing results. Rally DataBase stores all verifications and you can obtain unified (across different verifiers)
results at any time. You can find a verification run summary there, run arguments which were used, error
messages and etc. Comparison mechanism for several verifications is available too. Verification reports can
be generated in several formats: HTML, JSON, JUnit-XML (see Verification reports for more details). Also,
reports mechanism is expendable and you can write your own plugin for whatever system you want.
Rally has a plugin oriented architecture - in other words Rally team is trying to make all places of code pluggable.
Such architecture leads to the big amount of plugins. Plugins Reference contains a full list of all official Rally plugins
with detailed descriptions.
• Common
– Platforms
• Task Component
– Charts
– Contexts
– Hook Actions
– Hook Triggers
– SLAs
– Scenarios
– Scenario Runners
– Task Exporters
– Validators
• Verification Component
– Verification Reporters
– Verifier Contexts
– Verifier Managers
Common
Platforms
existing [Platform]
{
"$ref": "#/definitions/user"
}
• api_info [ref ]
N/a
Module: rally_openstack.environment.platforms.existing
Task Component
Charts
EmbeddedChart [Chart]
Platform: default
Module: rally.task.processing.charts
EmbeddedExternalChart [Chart]
Platform: default
Module: rally.task.processing.charts
Lines [Chart]
Platform: default
Module: rally.task.processing.charts
OSProfiler [Chart]
Pie [Chart]
self.add_output(
additive={"title": "Additive output",
"description": ("Pie with average data "
"from all iterations values"),
"chart_plugin": "Pie",
"data": [["foo", 12], ["bar", 34], ["spam", 56]]},
complete={"title": "Complete output",
"description": "Displayed as a pie, as-is",
"chart_plugin": "Pie",
"data": [["foo", 12], ["bar", 34], ["spam", 56]]})
Platform: default
Module: rally.task.processing.charts
StackedArea [Chart]
self.add_output(
additive={"title": "Additive data as stacked area",
"description": "Iterations trend for foo and bar",
"chart_plugin": "StackedArea",
"data": [["foo", 12], ["bar", 34]]},
(continues on next page)
Platform: default
Module: rally.task.processing.charts
StatsTable [Chart]
self.add_output(
additive={"title": "Statistics",
"description": ("Table with statistics generated "
"from all iterations values"),
"chart_plugin": "StatsTable",
"data": [["foo stat", 12], ["bar", 34], ["spam", 56]]})
Platform: default
Module: rally.task.processing.charts
Table [Chart]
Display complete output as table, can not be used for additive data.
Use this plugin for complete output data to display it in HTML report as table. This plugin can not be used for additive
data because it does not contain any processing logic.
Examples of using this plugin in Scenario, for saving output data:
self.add_output(
complete={"title": "Arbitrary Table",
"description": "Just show columns and rows as-is",
"chart_plugin": "Table",
"data": {"cols": ["foo", "bar", "spam"],
"rows": [["a row", 1, 2], ["b row", 3, 4],
["c row", 5, 6]]}})
Platform: default
Module: rally.task.processing.charts
TextArea [Chart]
Arbitrary text
This plugin processes complete data and displays of output in HTML report.
Examples of using this plugin in Scenario, for saving output data:
self.add_output(
complete={"title": "Script Inline",
"chart_plugin": "TextArea",
"data": ["first output", "second output",
"third output"]]})
Platform: default
Module: rally.task.processing.charts
Contexts
allow_ssh [Context]
api_versions [Context]
Also, it possible to use service name as an identifier of service endpoint, but an admin user is required (Keystone can
return map of service names - types, but such API is permitted only for admin). An example:
Platform: openstack
Parameters:
Dictionary is expected. Keys should follow pattern(s) described bellow.
• ^[a-z]+$ (str) [ref ]
Module: rally_openstack.task.contexts.api_versions
audit_templates [Context]
Min value: 1.
• fill_strategy [ref ]
Set of expected values: ‘round_robin’, ‘random’, ‘None’.
• params (list) [ref ]
Elements of the list should follow format(s) described below:
– Type: dict. Format:
{
"type": "object",
"properties": {
"goal": {
"type": "object",
"properties": {
"name": {
"type": "string"
}
},
"additionalProperties": false
},
"strategy": {
"type": "object",
"properties": {
"name": {
"type": "string"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}
Requires platform(s):
• openstack with credentials for admin user.
Module: rally_openstack.task.contexts.watcher.audit_templates
ca_certs [Context]
Creates ca certs.
Platform: openstack
Parameters:
• directory (str) [ref ]
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.contexts.magnum.ca_certs
cluster_templates [Context]
clusters [Context]
dummy_context [Context]
Dummy context.
Platform: default
Parameters:
• fail_setup (bool) [ref ]
• fail_cleanup (bool) [ref ]
Module: rally.plugins.task.contexts.dummy
existing_network [Context]
flavors [Context]
Requires platform(s):
• openstack with credentials for admin user.
Module: rally_openstack.task.contexts.nova.flavors
heat_dataplane [Context]
image_command_customizer [Context]
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.contexts.vm.image_command_customizer
images [Context]
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.contexts.glance.images
keypair [Context]
lbaas [Context]
manila_security_services [Context]
Format:
{
"type": "object",
"properties": {
"type": {
"enum": [
"active_directory",
"kerberos",
"ldap"
]
}
},
"required": [
"type"
],
"additionalProperties": true
}
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.contexts.manila.manila_security_services
manila_share_networks [Context]
Also, make sure that all ‘existing users’ in appropriate registered deployment have share networks if its usage is
enabled, else Rally will randomly take users that does not satisfy criteria.
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.contexts.manila.manila_share_networks
manila_shares [Context]
monasca_metrics [Context]
{
"type": "object",
"properties": {
"value_meta_key": {
"type": "string"
},
"value_meta_value": {
(continues on next page)
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.contexts.monasca.metrics
murano_environments [Context]
murano_packages [Context]
network [Context]
networking_agents [Context]
profiles [Context]
quotas [Context]
roles [Context]
{
"type": "string"
}
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.contexts.keystone.roles
router [Context]
{
"type": "object",
"properties": {
"ip_address": {
"type": "string"
},
"subnet_id": {
"type": "string"
}
},
"additionalProperties": false
}
sahara_cluster [Context]
{
"type": "string"
}
sahara_image [Context]
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.contexts.sahara.sahara_image
sahara_input_data_sources [Context]
Context class for setting up Input Data Sources for an EDP job.
Platform: openstack
Parameters:
• input_type [ref ]
Set of expected values: ‘swift’, ‘hdfs’.
• input_url (str) [ref ]
• swift_files (list) [ref ]
Elements of the list should follow format(s) described below:
– Type: dict. Format:
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"download_url": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"name",
"download_url"
]
}
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.contexts.sahara.sahara_input_data_sources
sahara_job_binaries [Context]
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"download_url": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"name",
"download_url"
]
}
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"download_url": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"name",
"download_url"
]
}
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.contexts.sahara.sahara_job_binaries
sahara_output_data_sources [Context]
Context class for setting up Output Data Sources for an EDP job.
Platform: openstack
Parameters:
• output_type [ref ]
Set of expected values: ‘swift’, ‘hdfs’.
servers [Context]
{
"oneOf": [
{
"type": "object",
"properties": {
"net-id": {
"type": "string"
}
},
"description": "Network ID in a format like OpenStack
˓→API expects to see.",
"additionalProperties": false
},
{
"type": "string",
"description": "Network ID."
}
]
}
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.contexts.nova.servers
stacks [Context]
swift_objects [Context]
users [Context]
volume_types [Context]
{
"type": "string"
}
Requires platform(s):
• openstack with credentials for admin user.
Module: rally_openstack.task.contexts.cinder.volume_types
volumes [Context]
zones [Context]
Hook Actions
• str [ref ]
Command to execute.
Module: rally.plugins.task.hooks.sys_call
Hook Triggers
Option 1 of parameters:
Triage hook based on specified seconds after start of workload.
• unit [ref ]
Set of expected values: ‘time’.
• at (list) [ref ]
Elements of the list should follow format(s) described below:
– Type: int. Format:
{
"type": "integer",
"minimum": 0
}
Option 2 of parameters:
Triage hook based on specific iterations.
• unit [ref ]
Set of expected values: ‘iteration’.
• at (list) [ref ]
Elements of the list should follow format(s) described below:
– Type: int. Format:
{
"type": "integer",
"minimum": 1
}
Module: rally.plugins.task.hook_triggers.event
Option 1 of parameters:
Periodically triage hook based on elapsed time after start of workload.
• unit [ref ]
Set of expected values: ‘time’.
• start (int) [ref ]
Min value: 0.
• end (int) [ref ]
Min value: 1.
• step (int) [ref ]
Min value: 1.
Option 2 of parameters:
Periodically triage hook based on iterations.
• unit [ref ]
Set of expected values: ‘iteration’.
• start (int) [ref ]
Min value: 1.
• end (int) [ref ]
Min value: 1.
• step (int) [ref ]
Min value: 1.
Module: rally.plugins.task.hook_triggers.periodic
SLAs
failure_rate [SLA]
max_avg_duration [SLA]
max_avg_duration_per_atomic [SLA]
max_seconds_per_iteration [SLA]
outliers [SLA]
Limit the number of outliers (iterations that take too much time).
The outliers are detected automatically using the computation of the mean and standard deviation (std) of the data.
Platform: default
Parameters:
performance_degradation [SLA]
Scenarios
Authenticate.keystone [Scenario]
Authenticate.validate_ceilometer [Scenario]
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.authenticate.authenticate
Authenticate.validate_cinder [Scenario]
Authenticate.validate_glance [Scenario]
Authenticate.validate_heat [Scenario]
• repetitions [ref ]
Number of times to validate
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.authenticate.authenticate
Authenticate.validate_monasca [Scenario]
Authenticate.validate_neutron [Scenario]
Authenticate.validate_nova [Scenario]
Platform: openstack
Parameters:
• repetitions [ref ]
Number of times to validate
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.authenticate.authenticate
Authenticate.validate_octavia [Scenario]
BarbicanContainers.create_and_add [Scenario]
BarbicanContainers.create_and_delete [Scenario]
BarbicanContainers.create_certificate_and_delete [Scenario]
BarbicanContainers.create_rsa_and_delete [Scenario]
BarbicanContainers.list [Scenario]
List secrets.
Platform: openstack
Requires platform(s):
• openstack with credentials for admin user.
Module: rally_openstack.task.scenarios.barbican.containers
BarbicanOrders.create_asymmetric_and_delete [Scenario]
BarbicanOrders.create_certificate_and_delete [Scenario]
BarbicanOrders.create_key_and_delete [Scenario]
BarbicanOrders.list [Scenario]
List secrets.
Platform: openstack
Requires platform(s):
• openstack with credentials for admin user.
Module: rally_openstack.task.scenarios.barbican.orders
BarbicanSecrets.create [Scenario]
Create secret.
Platform: openstack
Requires platform(s):
• openstack with credentials for admin user.
Module: rally_openstack.task.scenarios.barbican.secrets
BarbicanSecrets.create_and_delete [Scenario]
BarbicanSecrets.create_and_get [Scenario]
BarbicanSecrets.create_and_list [Scenario]
BarbicanSecrets.create_symmetric_and_delete [Scenario]
BarbicanSecrets.get [Scenario]
BarbicanSecrets.list [Scenario]
List secrets.
Platform: openstack
Requires platform(s):
• openstack with credentials for admin user.
Module: rally_openstack.task.scenarios.barbican.secrets
CinderQos.create_and_get_qos [Scenario]
CinderQos.create_and_list_qos [Scenario]
CinderQos.create_and_set_qos [Scenario]
CinderQos.create_qos_associate_and_disassociate_type [Scenario]
Create a qos, Associate and Disassociate the qos from volume type.
Platform: openstack
Parameters:
• consumer [ref ]
Consumer behavior
• write_iops_sec [ref ]
Random write limitation
• read_iops_sec [ref ]
Random read limitation
Requires platform(s):
• openstack with credentials for admin user.
Module: rally_openstack.task.scenarios.cinder.qos_specs
CinderVolumeBackups.create_incremental_volume_backup [Scenario]
CinderVolumeTypes.create_and_delete_encryption_type [Scenario]
Module: rally_openstack.task.scenarios.cinder.volume_types
CinderVolumeTypes.create_and_delete_volume_type [Scenario]
CinderVolumeTypes.create_and_get_volume_type [Scenario]
CinderVolumeTypes.create_and_list_encryption_type [Scenario]
• provider [ref ]
The class that provides encryption support. For example, LuksEncryptor.
• cipher [ref ]
The encryption algorithm or mode.
• key_size [ref ]
Size of encryption key, in bits.
• control_location [ref ]
Notional service where encryption is performed. Valid values are “front-end” or “back-end.”
• search_opts [ref ]
Options used when search for encryption types
Requires platform(s):
• openstack with credentials for admin user.
Module: rally_openstack.task.scenarios.cinder.volume_types
CinderVolumeTypes.create_and_list_volume_types [Scenario]
CinderVolumeTypes.create_and_set_volume_type_keys [Scenario]
• is_public [ref ]
Volume type visibility
Requires platform(s):
• openstack with credentials for admin user.
Module: rally_openstack.task.scenarios.cinder.volume_types
CinderVolumeTypes.create_and_update_encryption_type [Scenario]
CinderVolumeTypes.create_and_update_volume_type [Scenario]
• description [ref ]
Description of the volume type
• is_public [ref ]
Volume type visibility
• update_name [ref ]
If True, can update name by generating random name. if False, don’t update name.
• update_description [ref ]
Update Description of the volume type
• update_is_public [ref ]
Update Volume type visibility
Requires platform(s):
• openstack with credentials for admin user.
Module: rally_openstack.task.scenarios.cinder.volume_types
CinderVolumeTypes.create_get_and_delete_encryption_type [Scenario]
CinderVolumeTypes.create_volume_type_add_and_list_type_access [Scenario]
Add and list volume type access for the given project.
This scenario first creates a private volume type, then add project access and list project access to it.
Platform: openstack
Parameters:
• description [ref ]
Description of the volume type
• is_public [ref ]
Volume type visibility
Requires platform(s):
• openstack with credentials for admin user.
Module: rally_openstack.task.scenarios.cinder.volume_types
CinderVolumeTypes.create_volume_type_and_encryption_type [Scenario]
CinderVolumes.create_and_accept_transfer [Scenario]
Platform: openstack
Parameters:
• size [ref ]
Volume size (integer, in GB)
• image [ref ]
Image to be used to create initial volume
• kwargs [ref ]
Optional args to create a volume
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.cinder.volumes
CinderVolumes.create_and_attach_volume [Scenario]
CinderVolumes.create_and_delete_snapshot [Scenario]
CinderVolumes.create_and_delete_volume [Scenario]
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.cinder.volumes
CinderVolumes.create_and_extend_volume [Scenario]
CinderVolumes.create_and_get_volume [Scenario]
• image [ref ]
Image to be used to create volume
• kwargs [ref ]
Optional args to create a volume
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.cinder.volumes
CinderVolumes.create_and_list_snapshots [Scenario]
CinderVolumes.create_and_list_volume [Scenario]
• image [ref ]
Image to be used to create volume
• kwargs [ref ]
Optional args to create a volume
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.cinder.volumes
CinderVolumes.create_and_list_volume_backups [Scenario]
CinderVolumes.create_and_restore_volume_backup [Scenario]
• create_volume_kwargs [ref ]
Optional args to create a volume
• create_backup_kwargs [ref ]
Optional args to create a volume backup
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.cinder.volumes
CinderVolumes.create_and_update_volume [Scenario]
CinderVolumes.create_and_upload_volume_to_image [Scenario]
• force [ref ]
When set to True volume that is attached to an instance could be uploaded to image
• container_format [ref ]
Image container format
• disk_format [ref ]
Disk format for image
• do_delete [ref ]
Deletes image and volume after uploading if True
• kwargs [ref ]
Optional args to create a volume
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.cinder.volumes
CinderVolumes.create_from_volume_and_delete_volume [Scenario]
CinderVolumes.create_nested_snapshots_and_attach_volume [Scenario]
CinderVolumes.create_snapshot_and_attach_volume [Scenario]
• volume_type [ref ]
Name of volume type to use
• size [ref ]
Volume size - dictionary, contains two values: min - minimum size volumes will be created as; max - maxi-
mum size volumes will be created as.
default values: {“min”: 1, “max”: 5}
• create_vm_params [ref ]
Optional arguments for VM creation
• kwargs [ref ]
Optional parameters used during volume snapshot creation.
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.cinder.volumes
CinderVolumes.create_volume [Scenario]
Create a volume.
Good test to check how influence amount of active volumes on performance of creating new.
Platform: openstack
Parameters:
• size [ref ]
Volume size (integer, in GB) or dictionary, must contain two values:
min - minimum size volumes will be created as; max - maximum size volumes will be created as.
• image [ref ]
Image to be used to create volume
• kwargs [ref ]
Optional args to create a volume
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.cinder.volumes
CinderVolumes.create_volume_and_clone [Scenario]
CinderVolumes.create_volume_and_update_readonly_flag [Scenario]
CinderVolumes.create_volume_backup [Scenario]
CinderVolumes.create_volume_from_snapshot [Scenario]
CinderVolumes.list_transfers [Scenario]
Parameters:
• detailed [ref ]
If True, detailed information about volume transfer should be listed
• search_opts [ref ]
Search options to filter out volume transfers.
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.cinder.volumes
CinderVolumes.list_types [Scenario]
CinderVolumes.list_volumes [Scenario]
• limit [ref ]
Maximum number of volumes to return.
• sort [ref ]
Sort information
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.cinder.volumes
CinderVolumes.modify_volume_metadata [Scenario]
DesignateBasic.create_and_delete_recordsets [Scenario]
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.designate.basic
DesignateBasic.create_and_delete_zone [Scenario]
DesignateBasic.create_and_list_recordsets [Scenario]
DesignateBasic.create_and_list_zones [Scenario]
DesignateBasic.list_recordsets [Scenario]
DesignateBasic.list_zones [Scenario]
Dummy.dummy [Scenario]
Dummy.dummy_exception [Scenario]
Throws an exception.
Dummy.dummy_exception used for testing if exceptions are processed properly by task engine and analyze rally
results storing & displaying capabilities.
Platform: default
Parameters:
• size_of_message [ref ]
Int size of the exception message
• sleep [ref ]
Idle time of method (in seconds).
• message [ref ]
Message of the exception
Module: rally.plugins.task.scenarios.dummy.dummy
Dummy.dummy_exception_probability [Scenario]
Dummy.dummy_output [Scenario]
Dummy.dummy_random_action [Scenario]
• sleep_min [ref ]
Minimal time to sleep, numeric seconds
• sleep_max [ref ]
Maximum time to sleep, numeric seconds
Module: rally.plugins.task.scenarios.dummy.dummy
Dummy.dummy_random_fail_in_atomic [Scenario]
Dummy.dummy_timed_atomic_actions [Scenario]
Run some sleepy atomic actions for SLA atomic action tests.
Platform: default
Parameters:
• number_of_actions [ref ]
Int number of atomic actions to create
• sleep_factor [ref ]
Int multiplier for number of seconds to sleep
Module: rally.plugins.task.scenarios.dummy.dummy
Dummy.failure [Scenario]
• each [ref ]
Int cyclic number of iteration which actually raises an error in selected range. For example, each=3 will raise
error in each 3rd iteration.
Module: rally.plugins.task.scenarios.dummy.dummy
Dummy.openstack [Scenario]
ElasticsearchLogging.log_instance [Scenario]
• sleep_time [ref ]
Sleep time in seconds between elasticsearch request
• retries_total [ref ]
Total number of retries to check server name in elasticsearch
Requires platform(s):
• openstack with credentials for admin user.
Module: rally_openstack.task.scenarios.elasticsearch.logging
GlanceImages.create_and_deactivate_image [Scenario]
GlanceImages.create_and_delete_image [Scenario]
• image_location [ref ]
Image file location
• disk_format [ref ]
Disk format of image. Acceptable formats: ami, ari, aki, vhd, vmdk, raw, qcow2, vdi, and iso
• visibility [ref ]
The access permission for the created image
• min_disk [ref ]
The min disk of created images
• min_ram [ref ]
The min ram of created images
• properties [ref ]
A dict of image metadata properties to set on the image
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.glance.images
GlanceImages.create_and_download_image [Scenario]
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.glance.images
GlanceImages.create_and_get_image [Scenario]
GlanceImages.create_and_list_image [Scenario]
• image_location [ref ]
Image file location
• disk_format [ref ]
Disk format of image. Acceptable formats: ami, ari, aki, vhd, vmdk, raw, qcow2, vdi, and iso
• visibility [ref ]
The access permission for the created image
• min_disk [ref ]
The min disk of created images
• min_ram [ref ]
The min ram of created images
• properties [ref ]
A dict of image metadata properties to set on the image
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.glance.images
GlanceImages.create_and_update_image [Scenario]
• create_properties [ref ]
A dict of image metadata properties to set on the created image
• update_min_disk [ref ]
The min disk of updated images
• update_min_ram [ref ]
The min ram of updated images
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.glance.images
GlanceImages.create_image_and_boot_instances [Scenario]
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.glance.images
GlanceImages.list_images [Scenario]
Gnocchi.get_status [Scenario]
Gnocchi.list_capabilities [Scenario]
GnocchiArchivePolicy.create_archive_policy [Scenario]
Parameters:
• definition [ref ]
List of definitions
• aggregation_methods [ref ]
List of aggregation methods
Requires platform(s):
• openstack with credentials for admin user.
Module: rally_openstack.task.scenarios.gnocchi.archive_policy
GnocchiArchivePolicy.create_delete_archive_policy [Scenario]
GnocchiArchivePolicy.list_archive_policy [Scenario]
GnocchiArchivePolicyRule.create_archive_policy_rule [Scenario]
• archive_policy_name [ref ]
Archive policy name
Requires platform(s):
• openstack with credentials for admin user.
Module: rally_openstack.task.scenarios.gnocchi.archive_policy_rule
GnocchiArchivePolicyRule.create_delete_archive_policy_rule [Scenario]
GnocchiArchivePolicyRule.list_archive_policy_rule [Scenario]
GnocchiMetric.create_delete_metric [Scenario]
• unit [ref ]
The unit of the metric
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.gnocchi.metric
GnocchiMetric.create_metric [Scenario]
Create metric.
Platform: openstack
Parameters:
• archive_policy_name [ref ]
Archive policy name
• resource_id [ref ]
The resource ID to attach the metric to
• unit [ref ]
The unit of the metric
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.gnocchi.metric
GnocchiMetric.list_metric [Scenario]
List metrics.
Platform: openstack
Parameters:
• limit [ref ]
Maximum number of metrics to list
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.gnocchi.metric
GnocchiResource.create_delete_resource [Scenario]
Parameters:
• resource_type [ref ]
Type of the resource
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.gnocchi.resource
GnocchiResource.create_resource [Scenario]
Create resource.
Platform: openstack
Parameters:
• resource_type [ref ]
Type of the resource
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.gnocchi.resource
GnocchiResourceType.create_delete_resource_type [Scenario]
GnocchiResourceType.create_resource_type [Scenario]
GnocchiResourceType.list_resource_type [Scenario]
GrafanaMetrics.push_metric_from_instance [Scenario]
Module: rally_openstack.task.scenarios.grafana.metrics
GrafanaMetrics.push_metric_locally [Scenario]
HeatStacks.create_and_delete_stack [Scenario]
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.heat.stacks
HeatStacks.create_and_list_stack [Scenario]
HeatStacks.create_check_delete_stack [Scenario]
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.heat.stacks
HeatStacks.create_snapshot_restore_delete_stack [Scenario]
HeatStacks.create_stack_and_list_output [Scenario]
• environment [ref ]
Stack environment definition
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.heat.stacks
HeatStacks.create_stack_and_list_output_via_API [Scenario]
HeatStacks.create_stack_and_scale [Scenario]
• parameters [ref ]
Parameters to use in heat template
• files [ref ]
Files used in template (dict of file name to file path)
• environment [ref ]
Stack environment definition (dict)
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.heat.stacks
HeatStacks.create_stack_and_show_output [Scenario]
HeatStacks.create_stack_and_show_output_via_API [Scenario]
• template_path [ref ]
Path to stack template file
• output_key [ref ]
The stack output key that corresponds to the scaling webhook
• parameters [ref ]
Parameters to use in heat template
• files [ref ]
Files used in template
• environment [ref ]
Stack environment definition
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.heat.stacks
HeatStacks.create_suspend_resume_delete_stack [Scenario]
HeatStacks.create_update_delete_stack [Scenario]
HeatStacks.list_stacks_and_events [Scenario]
HeatStacks.list_stacks_and_resources [Scenario]
HttpRequests.check_random_request [Scenario]
HttpRequests.check_request [Scenario]
IronicNodes.create_and_delete_node [Scenario]
IronicNodes.create_and_list_node [Scenario]
• sort_key [ref ]
DEPRECATED since Rally 0.10.0
• kwargs [ref ]
Optional additional arguments for node creation
Requires platform(s):
• openstack with credentials for admin user.
Module: rally_openstack.task.scenarios.ironic.nodes
K8sPods.create_pods [Scenario]
K8sPods.create_rcs [Scenario]
K8sPods.list_pods [Scenario]
Module: rally_openstack.task.scenarios.magnum.k8s_pods
KeystoneBasic.add_and_remove_user_role [Scenario]
KeystoneBasic.authenticate_user_and_validate_token [Scenario]
KeystoneBasic.create_add_and_list_user_roles [Scenario]
Create user role, add it and list user roles for given user.
Platform: openstack
Requires platform(s):
• openstack with credentials for admin user and regular users (temporary users can be created via the ‘users’
context if admin user is specified for the platform).
Module: rally_openstack.task.scenarios.keystone.basic
KeystoneBasic.create_and_delete_ec2credential [Scenario]
KeystoneBasic.create_and_delete_role [Scenario]
KeystoneBasic.create_and_delete_service [Scenario]
KeystoneBasic.create_and_get_role [Scenario]
KeystoneBasic.create_and_list_ec2credentials [Scenario]
Module: rally_openstack.task.scenarios.keystone.basic
KeystoneBasic.create_and_list_roles [Scenario]
KeystoneBasic.create_and_list_services [Scenario]
KeystoneBasic.create_and_list_tenants [Scenario]
Create a keystone tenant with random name and list all tenants.
Platform: openstack
Parameters:
• kwargs [ref ]
Other optional parameters
Requires platform(s):
• openstack with credentials for admin user.
Module: rally_openstack.task.scenarios.keystone.basic
KeystoneBasic.create_and_list_users [Scenario]
Create a keystone user with random name and list all users.
Platform: openstack
Parameters:
• kwargs [ref ]
Other optional parameters to create users like “tenant_id”, “enabled”.
Requires platform(s):
• openstack with credentials for admin user.
Module: rally_openstack.task.scenarios.keystone.basic
KeystoneBasic.create_and_update_user [Scenario]
KeystoneBasic.create_delete_user [Scenario]
Create a keystone user with random name and then delete it.
Platform: openstack
Parameters:
• kwargs [ref ]
Other optional parameters to create users like “tenant_id”, “enabled”.
Requires platform(s):
• openstack with credentials for admin user.
Module: rally_openstack.task.scenarios.keystone.basic
KeystoneBasic.create_tenant [Scenario]
KeystoneBasic.create_tenant_with_users [Scenario]
KeystoneBasic.create_update_and_delete_tenant [Scenario]
KeystoneBasic.create_user [Scenario]
KeystoneBasic.create_user_set_enabled_and_delete [Scenario]
KeystoneBasic.create_user_update_password [Scenario]
KeystoneBasic.get_entities [Scenario]
Parameters:
• service_name [ref ]
The name of the service to get by ID; or None, to create an ephemeral service and get it by ID.
Requires platform(s):
• openstack with credentials for admin user.
Module: rally_openstack.task.scenarios.keystone.basic
MagnumClusterTemplates.list_cluster_templates [Scenario]
MagnumClusters.create_and_list_clusters [Scenario]
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.magnum.clusters
MagnumClusters.list_clusters [Scenario]
ManilaShares.attach_security_service_to_share_network [Scenario]
ManilaShares.create_and_delete_share [Scenario]
Parameters:
• share_proto [ref ]
Share protocol, valid values are NFS, CIFS, GlusterFS and HDFS
• size [ref ]
Share size in GB, should be greater than 0
• min_sleep [ref ]
Minimum sleep time in seconds (non-negative)
• max_sleep [ref ]
Maximum sleep time in seconds (non-negative)
• kwargs [ref ]
Optional args to create a share
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.manila.shares
ManilaShares.create_and_extend_share [Scenario]
• is_public [ref ]
Whether to set share as public or not.
• availability_zone [ref ]
Availability zone of the share
• share_group_id [ref ]
ID of the share group to which the share should belong
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.manila.shares
ManilaShares.create_and_list_share [Scenario]
ManilaShares.create_and_shrink_share [Scenario]
ManilaShares.create_security_service_and_delete [Scenario]
• security_service_type [ref ]
Security service type, permitted values are ‘ldap’, ‘kerberos’ or ‘active_directory’.
• dns_ip [ref ]
Dns ip address used inside tenant’s network
• server [ref ]
Security service server ip address or hostname
• domain [ref ]
Security service domain
• user [ref ]
Security identifier used by tenant
• password [ref ]
Password used by user
• description [ref ]
Security service description
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.manila.shares
ManilaShares.create_share_and_access_from_vm [Scenario]
• username [ref ]
Ssh username on server
• password [ref ]
Password on SSH authentication
• floating_network [ref ]
External network name, for floating ip
• port [ref ]
Ssh port for SSH connection
• use_floating_ip [ref ]
Bool, floating or fixed IP for SSH connection
• force_delete [ref ]
Whether to use force_delete for servers
• max_log_length [ref ]
The number of tail nova console-log lines user would like to retrieve
• kwargs [ref ]
Optional args to create a share or a VM
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.manila.shares
ManilaShares.create_share_network_and_delete [Scenario]
Module: rally_openstack.task.scenarios.manila.shares
ManilaShares.create_share_network_and_list [Scenario]
ManilaShares.create_share_then_allow_and_deny_access [Scenario]
• size [ref ]
Size in GiB
• new_size [ref ]
New size of the share in GiB
• snapshot_id [ref ]
ID of the snapshot
• description [ref ]
Description of a share
• metadata [ref ]
Optional metadata to set on share creation
• share_network [ref ]
Either instance of ShareNetwork or text with ID
• share_type [ref ]
Either instance of ShareType or text with ID
• is_public [ref ]
Whether to set share as public or not.
• availability_zone [ref ]
Availability zone of the share
• share_group_id [ref ]
ID of the share group to which the share should belong
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.manila.shares
ManilaShares.list_share_servers [Scenario]
ManilaShares.list_shares [Scenario]
ManilaShares.set_and_delete_metadata [Scenario]
Module: rally_openstack.task.scenarios.manila.shares
MistralExecutions.create_execution_from_workbook [Scenario]
MistralExecutions.list_executions [Scenario]
• sort_dirs [ref ]
[SORT_DIRS] Comma-separated list of sort directions. Default: asc.
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.mistral.executions
MistralWorkbooks.create_workbook [Scenario]
MistralWorkbooks.list_workbooks [Scenario]
MonascaMetrics.list_metrics [Scenario]
• kwargs [ref ]
Optional arguments for list query: name, dimensions, start_time, etc
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.monasca.metrics
MuranoEnvironments.create_and_delete_environment [Scenario]
MuranoEnvironments.create_and_deploy_environment [Scenario]
MuranoEnvironments.list_environments [Scenario]
MuranoPackages.import_and_delete_package [Scenario]
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.murano.packages
MuranoPackages.import_and_filter_applications [Scenario]
MuranoPackages.import_and_list_packages [Scenario]
MuranoPackages.package_lifecycle [Scenario]
NeutronBGPVPN.create_and_delete_bgpvpns [Scenario]
NeutronBGPVPN.create_and_list_bgpvpns [Scenario]
NeutronBGPVPN.create_and_list_networks_associations [Scenario]
• openstack with credentials for admin user and regular users (temporary users can be created via the ‘users’
context if admin user is specified for the platform).
Module: rally_openstack.task.scenarios.neutron.bgpvpn
NeutronBGPVPN.create_and_list_routers_associations [Scenario]
NeutronBGPVPN.create_and_update_bgpvpns [Scenario]
• import_targets [ref ]
Additional Route Targets that will be imported
• updated_import_targets [ref ]
Updated additional Route Targets that will be imported
• export_targets [ref ]
Additional Route Targets that will be used for export.
• updated_export_targets [ref ]
Updated additional Route Targets that will be used for export.
• route_distinguishers [ref ]
List of route distinguisher strings
• updated_route_distinguishers [ref ]
Updated list of route distinguisher strings
• bgpvpn_type [ref ]
Type of VPN and the technology behind it. Acceptable formats: l2 and l3
Requires platform(s):
• openstack with credentials for admin user.
Module: rally_openstack.task.scenarios.neutron.bgpvpn
NeutronBGPVPN.create_bgpvpn_assoc_disassoc_networks [Scenario]
• openstack with credentials for admin user and regular users (temporary users can be created via the ‘users’
context if admin user is specified for the platform).
Module: rally_openstack.task.scenarios.neutron.bgpvpn
NeutronBGPVPN.create_bgpvpn_assoc_disassoc_routers [Scenario]
NeutronLoadbalancerV1.create_and_delete_healthmonitors [Scenario]
NeutronLoadbalancerV1.create_and_delete_pools [Scenario]
NeutronLoadbalancerV1.create_and_delete_vips [Scenario]
NeutronLoadbalancerV1.create_and_list_healthmonitors [Scenario]
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.neutron.loadbalancer_v1
NeutronLoadbalancerV1.create_and_list_pools [Scenario]
NeutronLoadbalancerV1.create_and_list_vips [Scenario]
NeutronLoadbalancerV1.create_and_update_healthmonitors [Scenario]
Parameters:
• healthmonitor_create_args [ref ]
Dict, POST /lb/healthmonitors request options
• healthmonitor_update_args [ref ]
Dict, POST /lb/healthmonitors update options
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.neutron.loadbalancer_v1
NeutronLoadbalancerV1.create_and_update_pools [Scenario]
NeutronLoadbalancerV1.create_and_update_vips [Scenario]
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.neutron.loadbalancer_v1
NeutronLoadbalancerV2.create_and_list_loadbalancers [Scenario]
NeutronNetworks.associate_and_dissociate_floating_ips [Scenario]
NeutronNetworks.create_and_bind_ports [Scenario]
NeutronNetworks.create_and_delete_floating_ips [Scenario]
NeutronNetworks.create_and_delete_networks [Scenario]
NeutronNetworks.create_and_delete_ports [Scenario]
NeutronNetworks.create_and_delete_routers [Scenario]
NeutronNetworks.create_and_delete_subnets [Scenario]
• network_create_args [ref ]
Dict, POST /v2.0/networks request options. Deprecated.
• subnet_create_args [ref ]
Dict, POST /v2.0/subnets request options
• subnet_cidr_start [ref ]
Str, start value for subnets CIDR
• subnets_per_network [ref ]
Int, number of subnets for one network
Module: rally_openstack.task.scenarios.neutron.network
NeutronNetworks.create_and_list_floating_ips [Scenario]
NeutronNetworks.create_and_list_networks [Scenario]
Module: rally_openstack.task.scenarios.neutron.network
NeutronNetworks.create_and_list_ports [Scenario]
NeutronNetworks.create_and_list_routers [Scenario]
NeutronNetworks.create_and_list_subnets [Scenario]
NeutronNetworks.create_and_show_network [Scenario]
NeutronNetworks.create_and_show_ports [Scenario]
• network_create_args [ref ]
Dict, POST /v2.0/networks request options.
• port_create_args [ref ]
Dict, POST /v2.0/ports request options
• ports_per_network [ref ]
Int, number of ports for one network
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.neutron.network
NeutronNetworks.create_and_show_routers [Scenario]
NeutronNetworks.create_and_show_subnets [Scenario]
Parameters:
• network_create_args [ref ]
Dict, POST /v2.0/networks request options.
• subnet_create_args [ref ]
Dict, POST /v2.0/subnets request options
• subnet_cidr_start [ref ]
Str, start value for subnets CIDR
• subnets_per_network [ref ]
Int, number of subnets for one network
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.neutron.network
NeutronNetworks.create_and_update_networks [Scenario]
NeutronNetworks.create_and_update_ports [Scenario]
• network_create_args [ref ]
Dict, POST /v2.0/networks request options. Deprecated.
• port_create_args [ref ]
Dict, POST /v2.0/ports request options
• ports_per_network [ref ]
Int, number of ports for one network
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.neutron.network
NeutronNetworks.create_and_update_routers [Scenario]
NeutronNetworks.create_and_update_subnets [Scenario]
• subnet_update_args [ref ]
Dict, PUT /v2.0/subnets update options
• network_create_args [ref ]
Dict, POST /v2.0/networks request options. Deprecated.
• subnet_create_args [ref ]
Dict, POST /v2.0/subnets request options
• subnet_cidr_start [ref ]
Str, start value for subnets CIDR
• subnets_per_network [ref ]
Int, number of subnets for one network
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.neutron.network
NeutronNetworks.list_agents [Scenario]
NeutronNetworks.set_and_clear_router_gateway [Scenario]
• network_create_args [ref ]
Dict, POST /v2.0/networks request options
• router_create_args [ref ]
Dict, POST /v2.0/routers request options
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.neutron.network
NeutronSecurityGroup.create_and_delete_security_group_rule [Scenario]
NeutronSecurityGroup.create_and_delete_security_groups [Scenario]
NeutronSecurityGroup.create_and_list_security_group_rules [Scenario]
NeutronSecurityGroup.create_and_list_security_groups [Scenario]
NeutronSecurityGroup.create_and_show_security_group [Scenario]
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.neutron.security_groups
NeutronSecurityGroup.create_and_show_security_group_rule [Scenario]
NeutronSecurityGroup.create_and_update_security_groups [Scenario]
NeutronSubnets.delete_subnets [Scenario]
Concurrent execution of this scenario should help reveal any race conditions and other concurrency issues in Neutron
IP allocation layer, among other things.
Platform: openstack
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.neutron.network
NeutronTrunks.boot_server_and_add_subports [Scenario]
NeutronTrunks.boot_server_and_batch_add_subports [Scenario]
• network_create_args [ref ]
Arguments for creating network
• subports_per_batch [ref ]
Number of subports per batches
• batches [ref ]
Number of batches to create subports in
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.neutron.trunk
NeutronTrunks.boot_server_with_subports [Scenario]
NeutronTrunks.create_and_list_trunks [Scenario]
Create and a given number of trunks with subports and list all trunks
Platform: openstack
Parameters:
• network_create_args [ref ]
Dict, POST /v2.0/networks request options. Deprecated.
• trunk_count [ref ]
Int, number of trunk ports
• subport_count [ref ]
Int, number of subports per trunk
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.neutron.trunk
NovaAgents.list_agents [Scenario]
NovaAggregates.create_aggregate_add_and_remove_host [Scenario]
NovaAggregates.create_aggregate_add_host_and_boot_server [Scenario]
Parameters:
• image [ref ]
The image ID to boot from
• metadata [ref ]
The metadata to be set as flavor extra specs
• availability_zone [ref ]
The availability zone of the aggregate
• ram [ref ]
Memory in MB for the flavor
• vcpus [ref ]
Number of VCPUs for the flavor
• disk [ref ]
Size of local disk in GB
• boot_server_kwargs [ref ]
Optional additional arguments to verify host aggregates
Requires platform(s):
• openstack with credentials for admin user and regular users (temporary users can be created via the ‘users’
context if admin user is specified for the platform).
Module: rally_openstack.task.scenarios.nova.aggregates
NovaAggregates.create_and_delete_aggregate [Scenario]
NovaAggregates.create_and_get_aggregate_details [Scenario]
• availability_zone [ref ]
The availability zone of the aggregate
Requires platform(s):
• openstack with credentials for admin user.
Module: rally_openstack.task.scenarios.nova.aggregates
NovaAggregates.create_and_list_aggregates [Scenario]
NovaAggregates.create_and_update_aggregate [Scenario]
NovaAggregates.list_aggregates [Scenario]
NovaAvailabilityZones.list_availability_zones [Scenario]
NovaFlavors.create_and_delete_flavor [Scenario]
NovaFlavors.create_and_get_flavor [Scenario]
NovaFlavors.create_and_list_flavor_access [Scenario]
• flavorid [ref ]
ID for the flavor (optional). You can use the reserved value "auto" to have Nova generate a UUID for the
flavor in cases where you cannot simply pass None.
• ephemeral [ref ]
Ephemeral space size in GB (default 0).
• swap [ref ]
Swap space in MB
• rxtx_factor [ref ]
RX/TX factor
• is_public [ref ]
Make flavor accessible to the public (default true).
Requires platform(s):
• openstack with credentials for admin user.
Module: rally_openstack.task.scenarios.nova.flavors
NovaFlavors.create_flavor [Scenario]
Create a flavor.
Platform: openstack
Parameters:
• ram [ref ]
Memory in MB for the flavor
• vcpus [ref ]
Number of VCPUs for the flavor
• disk [ref ]
Size of local disk in GB
• flavorid [ref ]
ID for the flavor (optional). You can use the reserved value "auto" to have Nova generate a UUID for the
flavor in cases where you cannot simply pass None.
• ephemeral [ref ]
Ephemeral space size in GB (default 0).
• swap [ref ]
Swap space in MB
• rxtx_factor [ref ]
RX/TX factor
• is_public [ref ]
Make flavor accessible to the public (default true).
Requires platform(s):
• openstack with credentials for admin user.
Module: rally_openstack.task.scenarios.nova.flavors
NovaFlavors.create_flavor_and_add_tenant_access [Scenario]
Create a flavor and Add flavor access for the given tenant.
Platform: openstack
Parameters:
• ram [ref ]
Memory in MB for the flavor
• vcpus [ref ]
Number of VCPUs for the flavor
• disk [ref ]
Size of local disk in GB
• flavorid [ref ]
ID for the flavor (optional). You can use the reserved value "auto" to have Nova generate a UUID for the
flavor in cases where you cannot simply pass None.
• ephemeral [ref ]
Ephemeral space size in GB (default 0).
• swap [ref ]
Swap space in MB
• rxtx_factor [ref ]
RX/TX factor
• is_public [ref ]
Make flavor accessible to the public (default true).
Requires platform(s):
• openstack with credentials for admin user.
Module: rally_openstack.task.scenarios.nova.flavors
NovaFlavors.create_flavor_and_set_keys [Scenario]
• vcpus [ref ]
Number of VCPUs for the flavor
• disk [ref ]
Size of local disk in GB
• extra_specs [ref ]
Additional arguments for flavor set keys
• flavorid [ref ]
ID for the flavor (optional). You can use the reserved value "auto" to have Nova generate a UUID for the
flavor in cases where you cannot simply pass None.
• ephemeral [ref ]
Ephemeral space size in GB (default 0).
• swap [ref ]
Swap space in MB
• rxtx_factor [ref ]
RX/TX factor
• is_public [ref ]
Make flavor accessible to the public (default true).
Requires platform(s):
• openstack with credentials for admin user.
Module: rally_openstack.task.scenarios.nova.flavors
NovaFlavors.list_flavors [Scenario]
• min_ram [ref ]
Filters the flavors by a minimum RAM, in MB.
• limit [ref ]
Maximum number of flavors to return (optional).
• sort_key [ref ]
Flavors list sort key (optional).
• sort_dir [ref ]
Flavors list sort direction (optional).
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.nova.flavors
NovaHypervisors.list_and_get_hypervisors [Scenario]
NovaHypervisors.list_and_get_uptime_hypervisors [Scenario]
NovaHypervisors.list_and_search_hypervisors [Scenario]
NovaHypervisors.list_hypervisors [Scenario]
List hypervisors.
Measure the “nova hypervisor-list” command performance.
Platform: openstack
Parameters:
• detailed [ref ]
True if the hypervisor listing should contain detailed information about all of them
Requires platform(s):
• openstack with credentials for admin user.
Module: rally_openstack.task.scenarios.nova.hypervisors
NovaHypervisors.statistics_hypervisors [Scenario]
NovaKeypair.boot_and_delete_server_with_keypair [Scenario]
NovaKeypair.create_and_delete_keypair [Scenario]
NovaKeypair.create_and_get_keypair [Scenario]
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.nova.keypairs
NovaKeypair.create_and_list_keypairs [Scenario]
NovaServerGroups.create_and_delete_server_group [Scenario]
NovaServerGroups.create_and_get_server_group [Scenario]
• policies [ref ]
Server group policy
• kwargs [ref ]
The server group specifications to add. DEPRECATED, specify arguments explicitly.
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.nova.server_groups
NovaServerGroups.create_and_list_server_groups [Scenario]
NovaServers.boot_and_associate_floating_ip [Scenario]
• create_floating_ip_args [ref ]
Optional additional dict for specifying external network associated with floating IP (‘ext_network’ key).
• kwargs [ref ]
Optional additional arguments for server creation
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.nova.servers
NovaServers.boot_and_bounce_server [Scenario]
NovaServers.boot_and_delete_multiple_servers [Scenario]
• image [ref ]
The image to boot from
• flavor [ref ]
Flavor used to boot instance
• count [ref ]
Number of instances to boot
• min_sleep [ref ]
Minimum sleep time in seconds (non-negative)
• max_sleep [ref ]
Maximum sleep time in seconds (non-negative)
• force_delete [ref ]
True if force_delete should be used
• kwargs [ref ]
Optional additional arguments for instance creation
Requires platform(s):
• openstack with credentials for admin user and regular users (temporary users can be created via the ‘users’
context if admin user is specified for the platform).
Module: rally_openstack.task.scenarios.nova.servers
NovaServers.boot_and_delete_server [Scenario]
• kwargs [ref ]
Optional additional arguments for server creation
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.nova.servers
NovaServers.boot_and_get_console_output [Scenario]
NovaServers.boot_and_get_console_url [Scenario]
• console_type [ref ]
Type can be novnc/xvpvnc for protocol vnc; spice-html5 for protocol spice; rdp-html5 for protocol rdp; serial
for protocol serial. webmks for protocol mks (since version 2.8).
• kwargs [ref ]
Optional additional arguments for server creation
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.nova.servers
NovaServers.boot_and_list_server [Scenario]
NovaServers.boot_and_live_migrate_server [Scenario]
Parameters:
• image [ref ]
Image to be used to boot an instance
• flavor [ref ]
Flavor to be used to boot an instance
• block_migration [ref ]
Specifies the migration type
• disk_over_commit [ref ]
Specifies whether to allow overcommit on migrated instance or not
• min_sleep [ref ]
Minimum sleep time in seconds (non-negative)
• max_sleep [ref ]
Maximum sleep time in seconds (non-negative)
• kwargs [ref ]
Optional additional arguments for server creation
Requires platform(s):
• openstack with credentials for admin user and regular users (temporary users can be created via the ‘users’
context if admin user is specified for the platform).
Module: rally_openstack.task.scenarios.nova.servers
NovaServers.boot_and_migrate_server [Scenario]
Migrate a server.
This scenario launches a VM on a compute node available in the availability zone, and then migrates the VM to another
compute node on the same availability zone.
Platform: openstack
Parameters:
• image [ref ]
Image to be used to boot an instance
• flavor [ref ]
Flavor to be used to boot an instance
• kwargs [ref ]
Optional additional arguments for server creation
Requires platform(s):
• openstack with credentials for admin user and regular users (temporary users can be created via the ‘users’
context if admin user is specified for the platform).
Module: rally_openstack.task.scenarios.nova.servers
NovaServers.boot_and_rebuild_server [Scenario]
Rebuild a server.
This scenario launches a VM, then rebuilds that VM with a different image.
Platform: openstack
Parameters:
• from_image [ref ]
Image to be used to boot an instance
• to_image [ref ]
Image to be used to rebuild the instance
• flavor [ref ]
Flavor to be used to boot an instance
• kwargs [ref ]
Optional additional arguments for server creation
Requires platform(s):
• openstack with credentials for admin user and regular users (temporary users can be created via the ‘users’
context if admin user is specified for the platform).
Module: rally_openstack.task.scenarios.nova.servers
NovaServers.boot_and_show_server [Scenario]
NovaServers.boot_and_update_server [Scenario]
NovaServers.boot_lock_unlock_and_delete [Scenario]
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.nova.servers
NovaServers.boot_server [Scenario]
Boot a server.
Assumes that cleanup is done elsewhere.
Platform: openstack
Parameters:
• image [ref ]
Image to be used to boot an instance
• flavor [ref ]
Flavor to be used to boot an instance
• auto_assign_nic [ref ]
True if NICs should be assigned
• kwargs [ref ]
Optional additional arguments for server creation
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.nova.servers
NovaServers.boot_server_and_attach_interface [Scenario]
• subnet_cidr_start [ref ]
Str, start value for subnets CIDR
• boot_server_args [ref ]
Optional additional arguments for server creation
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.nova.servers
NovaServers.boot_server_and_list_interfaces [Scenario]
NovaServers.boot_server_associate_and_dissociate_floating_ip [Scenario]
• floating_network [ref ]
External network associated with floating IP.
• create_floating_ip_args [ref ]
Optional additional dict for specifying external network associated with floating IP (‘ext_network’ key).
• kwargs [ref ]
Optional additional arguments for server creation
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.nova.servers
NovaServers.boot_server_attach_created_volume_and_live_migrate [Scenario]
Requires platform(s):
• openstack with credentials for admin user and regular users (temporary users can be created via the ‘users’
context if admin user is specified for the platform).
Module: rally_openstack.task.scenarios.nova.servers
NovaServers.boot_server_attach_created_volume_and_resize [Scenario]
Module: rally_openstack.task.scenarios.nova.servers
NovaServers.boot_server_attach_volume_and_list_attachments [Scenario]
NovaServers.boot_server_from_volume [Scenario]
• volume_type [ref ]
Specifies volume type when there are multiple backends
• auto_assign_nic [ref ]
True if NICs should be assigned
• kwargs [ref ]
Optional additional arguments for server creation
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.nova.servers
NovaServers.boot_server_from_volume_and_delete [Scenario]
NovaServers.boot_server_from_volume_and_live_migrate [Scenario]
NovaServers.boot_server_from_volume_and_resize [Scenario]
This test will confirm the resize by default, or revert the resize if confirm is set to false.
Platform: openstack
Parameters:
• image [ref ]
Image to be used to boot an instance
• flavor [ref ]
Flavor to be used to boot an instance
• to_flavor [ref ]
Flavor to be used to resize the booted instance
• volume_size [ref ]
Volume size (in GB)
• min_sleep [ref ]
Minimum sleep time in seconds (non-negative)
• max_sleep [ref ]
Maximum sleep time in seconds (non-negative)
• force_delete [ref ]
True if force_delete should be used
• confirm [ref ]
True if need to confirm resize else revert resize
• do_delete [ref ]
True if resources needs to be deleted explicitly else use rally cleanup to remove resources
• boot_server_kwargs [ref ]
Optional arguments for VM creation
• create_volume_kwargs [ref ]
Optional arguments for volume creation
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.nova.servers
NovaServers.boot_server_from_volume_snapshot [Scenario]
• image [ref ]
Image to be used to boot an instance
• flavor [ref ]
Flavor to be used to boot an instance
• volume_size [ref ]
Volume size (in GB)
• volume_type [ref ]
Specifies volume type when there are multiple backends
• auto_assign_nic [ref ]
True if NICs should be assigned
• kwargs [ref ]
Optional additional arguments for server creation
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.nova.servers
NovaServers.list_servers [Scenario]
NovaServers.pause_and_unpause_server [Scenario]
• flavor [ref ]
Flavor to be used to boot an instance
• force_delete [ref ]
True if force_delete should be used
• kwargs [ref ]
Optional additional arguments for server creation
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.nova.servers
NovaServers.resize_server [Scenario]
NovaServers.resize_shutoff_server [Scenario]
Boot a server and stop it, then resize and delete it.
This test will confirm the resize by default, or revert the resize if confirm is set to false.
Platform: openstack
Parameters:
• image [ref ]
Image to be used to boot an instance
• flavor [ref ]
Flavor to be used to boot an instance
• to_flavor [ref ]
Flavor to be used to resize the booted instance
• confirm [ref ]
True if need to confirm resize else revert resize
• force_delete [ref ]
True if force_delete should be used
• kwargs [ref ]
Optional additional arguments for server creation
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.nova.servers
NovaServers.shelve_and_unshelve_server [Scenario]
NovaServers.snapshot_server [Scenario]
NovaServers.suspend_and_resume_server [Scenario]
NovaServices.list_services [Scenario]
Octavia.create_and_delete_loadbalancers [Scenario]
Octavia.create_and_delete_pools [Scenario]
Octavia.create_and_list_loadbalancers [Scenario]
Octavia.create_and_list_pools [Scenario]
Octavia.create_and_show_loadbalancers [Scenario]
Octavia.create_and_show_pools [Scenario]
Octavia.create_and_stats_loadbalancers [Scenario]
Octavia.create_and_update_loadbalancers [Scenario]
Octavia.create_and_update_pools [Scenario]
Quotas.cinder_get [Scenario]
Quotas.cinder_update [Scenario]
Quotas.cinder_update_and_delete [Scenario]
Quotas.neutron_update [Scenario]
• max_quota [ref ]
Max value to be updated for quota.
Requires platform(s):
• openstack with credentials for admin user and regular users (temporary users can be created via the ‘users’
context if admin user is specified for the platform).
Module: rally_openstack.task.scenarios.quotas.quotas
Quotas.nova_get [Scenario]
Quotas.nova_update [Scenario]
Quotas.nova_update_and_delete [Scenario]
SaharaClusters.create_and_delete_cluster [Scenario]
• enable_proxy [ref ]
Use Master Node of a Cluster as a Proxy node and do not assign floating ips to workers.
• use_autoconfig [ref ]
If True, instances of the node group will be automatically configured during cluster creation. If False, the
configuration values should be specify manually
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.sahara.clusters
SaharaClusters.create_scale_delete_cluster [Scenario]
• volumes_per_node [ref ]
Number of Cinder volumes that will be attached to every cluster node
• volumes_size [ref ]
Size of each Cinder volume in GB
• auto_security_group [ref ]
Boolean value. If set to True Sahara will create a Security Group for each Node Group in the Cluster automati-
cally.
• security_groups [ref ]
List of security groups that will be used while creating VMs. If auto_security_group is set to True this list can
be left empty.
• node_configs [ref ]
Configs dict that will be passed to each Node Group
• cluster_configs [ref ]
Configs dict that will be passed to the Cluster
• enable_anti_affinity [ref ]
If set to true the vms will be scheduled one per compute node.
• enable_proxy [ref ]
Use Master Node of a Cluster as a Proxy node and do not assign floating ips to workers.
• use_autoconfig [ref ]
If True, instances of the node group will be automatically configured during cluster creation. If False, the
configuration values should be specify manually
Module: rally_openstack.task.scenarios.sahara.clusters
SaharaJob.create_launch_job [Scenario]
SaharaJob.create_launch_job_sequence [Scenario]
SaharaJob.create_launch_job_sequence_with_scaling [Scenario]
SaharaNodeGroupTemplates.create_and_list_node_group_templates [Scenario]
• use_autoconfig [ref ]
If True, instances of the node group will be automatically configured during cluster creation. If False, the
configuration values should be specify manually
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.sahara.node_group_templates
SaharaNodeGroupTemplates.create_delete_node_group_templates [Scenario]
SenlinClusters.create_and_delete_cluster [Scenario]
• max_size [ref ]
The maximum number of nodes owned by the cluster. -1 means no limit
• timeout [ref ]
The timeout value in seconds for cluster creation
• metadata [ref ]
A set of key value pairs to associate with the cluster
Requires platform(s):
• openstack with credentials for admin user.
Module: rally_openstack.task.scenarios.senlin.clusters
SwiftObjects.create_container_and_object_then_delete_all [Scenario]
SwiftObjects.create_container_and_object_then_download_object [Scenario]
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.swift.objects
SwiftObjects.create_container_and_object_then_list_objects [Scenario]
SwiftObjects.list_and_download_objects_in_containers [Scenario]
SwiftObjects.list_objects_in_containers [Scenario]
VMTasks.boot_runcommand_delete [Scenario]
• volume_args [ref ]
Volume args for booting server from volume
• floating_network [ref ]
External network name, for floating ip
• port [ref ]
Ssh port for SSH connection
• use_floating_ip [ref ]
Bool, floating or fixed IP for SSH connection
• force_delete [ref ]
Whether to use force_delete for servers
• wait_for_ping [ref ]
Whether to check connectivity on server creation
• max_log_length [ref ]
The number of tail nova console-log lines user would like to retrieve
• kwargs [ref ]
Extra arguments for booting the server
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.vm.vmtasks
VMTasks.check_designate_dns_resolving [Scenario]
VMTasks.dd_load_test [Scenario]
Note: dd load test is prepared script by Rally team. It checks writing and reading metrics from the VM.
Platform: openstack
Parameters:
• image [ref ]
Glance image name to use for the vm. Optional in case of specified “image_command_customizer” context
• flavor [ref ]
VM flavor name
• username [ref ]
Ssh username on server, str
• password [ref ]
Password on SSH authentication
• interpreter [ref ]
The interpreter to execute script with dd load test (defaults to /bin/sh)
• command [ref ]
DEPRECATED. use interpreter instead.
• volume_args [ref ]
Volume args for booting server from volume
• floating_network [ref ]
External network name, for floating ip
• port [ref ]
Ssh port for SSH connection
• use_floating_ip [ref ]
Bool, floating or fixed IP for SSH connection
• force_delete [ref ]
Whether to use force_delete for servers
• wait_for_ping [ref ]
Whether to check connectivity on server creation
• max_log_length [ref ]
The number of tail nova console-log lines user would like to retrieve
• kwargs [ref ]
Extra arguments for booting the server
Requires platform(s):
• openstack with regular users (temporary users can be created via the ‘users’ context if admin user is specified
for the platform).
Module: rally_openstack.task.scenarios.vm.vmtasks
VMTasks.runcommand_heat [Scenario]
{"file": "/path/to/file.sh"}
{"resource": ["package.module", "workload.py"]}
Watcher.create_audit_and_delete [Scenario]
Watcher.create_audit_template_and_delete [Scenario]
• goal [ref ]
The goal audit template is based on
• strategy [ref ]
The strategy used to provide resource optimization algorithm
Requires platform(s):
• openstack with credentials for admin user.
Module: rally_openstack.task.scenarios.watcher.basic
Watcher.list_audit_templates [Scenario]
ZaqarBasic.create_queue [Scenario]
ZaqarBasic.producer_consumer [Scenario]
Scenario Runners
Parameters:
• times (int) [ref ]
Min value: 1.
• rps [ref ]
• timeout (float) [ref ]
• max_concurrency (int) [ref ]
Min value: 1.
• max_cpu_count (int) [ref ]
Min value: 1.
Module: rally.plugins.task.runners.rps
Task Exporters
<testsuites>
<!--Report is generated by Rally 0.10.0 at 2017-06-04T05:14:00-->
<testsuite id="task-uu-ii-dd"
errors="0"
failures="1"
skipped="0"
tests="2"
time="75.0"
timestamp="2017-06-04T05:14:00">
<testcase classname="CinderVolumes"
name="list_volumes"
id="workload-1-uuid"
time="29.9695231915"
timestamp="2017-06-04T05:14:44" />
<testcase classname="NovaServers"
name="list_keypairs"
id="workload-2-uuid"
time="5"
(continues on next page)
Platform: default
Module: rally.plugins.task.exporters.junit
Validators
args-spec [Validator]
check_api_versions [Validator]
check_cleanup_resources [Validator]
check_constant [Validator]
check_rps [Validator]
enum [Validator]
es_exporter_destination [Validator]
external_network_exists [Validator]
file_exists [Validator]
flavor_exists [Validator]
• param_name [ref ]
Defines which variable should be used to get flavor id value.
Module: rally_openstack.common.validators
image_exists [Validator]
image_valid_on_flavor [Validator]
jsonschema [Validator]
map_keys [Validator]
number [Validator]
required_api_versions [Validator]
required_cinder_services [Validator]
required_context_config [Validator]
required_contexts [Validator]
Module: rally.plugins.common.validators
required_neutron_extensions [Validator]
required_param_or_context [Validator]
required_params [Validator]
required_platform [Validator]
• platform [ref ]
Name of the platform
Module: rally.common.validation
required_platform [Validator]
required_services [Validator]
restricted_parameters [Validator]
valid_command [Validator]
validate_heat_template [Validator]
volume_type_exists [Validator]
workbook_contains_workflow [Validator]
• workbook_param [ref ]
Parameter containing the workbook definition
• workflow_param [ref ]
Parameter containing the workflow name
Module: rally_openstack.common.validators
Verification Component
Verification Reporters
{"verifications": {
"verification-uuid-1": {
"status": "finished",
"skipped": 1,
"started_at": "2001-01-01T00:00:00",
"finished_at": "2001-01-01T00:05:00",
"tests_duration": 5,
"run_args": {
"pattern": "set=smoke",
"xfail_list": {"some.test.TestCase.test_xfail":
"Some reason why it is expected."},
"skip_list": {"some.test.TestCase.test_skipped":
"This test was skipped intentionally"},
},
"success": 1,
"expected_failures": 1,
"tests_count": 3,
"failures": 0,
"unexpected_success": 0
(continues on next page)
Platform: default
Module: rally.plugins.verification.reporters
Platform: default
Module: rally.plugins.verification.reporters
Verifier Contexts
Verifier Managers
Tempest verifier.
Description:
Quote from official documentation:
This is a set of integration tests to be run against a live OpenStack cluster. Tempest has batteries
of tests for OpenStack API validation, Scenarios, and other specific tests useful in validating
an OpenStack deployment.
Rally supports features listed below:
• cloning Tempest: repository and version can be specified
• installation: system-wide with checking existence of required packages or in virtual environment
• configuration: options are discovered via OpenStack API, but you can override them if you need
• running: pre-creating all required resources(i.e images, tenants, etc), prepare arguments, launching
Tempest, live-progress output
• results: all verifications are stored in db, you can built reports, compare verification at whatever you
want time.
Appeared in Rally 0.8.0 (actually, it appeared long time ago with first revision of Verification Component,
but 0.8.0 is mentioned since it is first release after Verification Component redesign)
Running arguments:
• concurrency: Number of processes to be used for launching tests. In case of 0 value, number of processes will
be equal to number of CPU cores.
• load_list: a list of tests to launch.
• pattern: a regular expression of tests to launch.
• set: Name of predefined set of tests. Known names: full, smoke, baremetal, clustering, compute, database,
data_processing, identity, image, messaging, network, object_storage, orchestration, telemetry, volume, sce-
nario
• skip_list: a list of tests to skip (actually, it is a dict where keys are names of tests, values are reasons).
• xfail_list: a list of tests that are expected to fail (actually, it is a dict where keys are names of tests, values are
reasons).
Installation arguments:
• system_wide: Whether or not to use the system-wide environment for verifier instead of a virtual environment.
Defaults to False.
• source: Path or URL to the repo to clone verifier from. Defaults to https://opendev.org/openstack/tempest
• version: Branch, tag or commit ID to checkout before verifier installation. Defaults to ‘master’.
Platform: openstack
Module: rally_openstack.verification.tempest.manager
Rally provides an opportunity to create and use a custom task scenario, runner, SLA, deployment or context as a
plugin:
1.7.3 Placement
Plugins can be quickly written and used, with no need to contribute them to the actual Rally code. Just place a
Python module with your plugin class into the /opt/rally/plugins or ~/.rally/plugins directory (or its
subdirectories), and it will be automatically loaded. Additional paths can be specified with the --plugin-paths
argument, or with the RALLY_PLUGIN_PATHS environment variable, both of which accept comma-delimited lists.
Both --plugin-paths and RALLY_PLUGIN_PATHS can list either plugin module files, or directories containing
plugins. For instance, both of these are valid:
You can also use a script unpack_plugins_samples.sh from samples/plugins which will automatically
create the ~/.rally/plugins directory.
To create your own plugin you need to inherit your plugin class from plugin.Plugin class or its subclasses. Also you
need to decorate your class with rally.task.scenario.configure
@scenario.configure(name="my_new_plugin_name")
class MyNewPlugin(plugin.Plugin):
pass
Context as a plugin
So what are contexts doing? These plugins will be executed before scenario iteration starts. For example, a context
plugin could create resources (e.g., download 10 images) that will be used by the scenarios. All created objects must be
put into the self.context dict, through which they will be available in the scenarios. Let’s create a simple context plugin
that adds a flavor to the environment before runner start first iteration and deletes it after runner finishes execution of
all iterations.
Creation
Inherit a class for your plugin from the base Context class. Then, implement the Context API: the setup() method that
creates a flavor and the cleanup() method that deletes it.
LOG = logging.getLogger(__name__)
@context.configure(name="create_flavor", order=1000)
class CreateFlavorContext(context.Context):
"""This sample creates a flavor with specified option."""
CONFIG_SCHEMA = {
"type": "object",
"$schema": consts.JSON_SCHEMA,
"additionalProperties": False,
"properties": {
"flavor_name": {
"type": "string",
},
"ram": {
"type": "integer",
"minimum": 1
},
"vcpus": {
"type": "integer",
"minimum": 1
},
"disk": {
"type": "integer",
"minimum": 1
}
}
}
def setup(self):
"""This method is called before the task starts."""
try:
# use rally.osclients to get necessary client instance
nova = osclients.Clients(self.context["admin"]["credential"]).nova()
# and than do what you need with this client
self.context["flavor"] = nova.flavors.create(
# context settings are stored in self.config
name=self.config.get("flavor_name", "rally_test_flavor"),
ram=self.config.get("ram", 1),
vcpus=self.config.get("vcpus", 1),
disk=self.config.get("disk", 1)).to_dict()
(continues on next page)
def cleanup(self):
"""This method is called after the task finishes."""
try:
nova = osclients.Clients(self.context["admin"]["credential"]).nova()
nova.flavors.delete(self.context["flavor"]["id"])
LOG.debug("Flavor '%s' deleted" % self.context["flavor"]["id"])
except Exception as e:
msg = "Can't delete flavor: %s" % e.message
if logging.is_debug():
LOG.exception(msg)
else:
LOG.warning(msg)
Usage
The new plugin can be used by specifying it in context section. Like below:
{
"Dummy.dummy": [
{
"args": {
"sleep": 0.01
},
"runner": {
"type": "constant",
"times": 5,
"concurrency": 1
},
"context": {
"users": {
"tenants": 1,
"users_per_tenant": 1
},
"create_flavor": {
"ram": 1024
}
}
}
]
}
Why Hooks?
All Rally workloads repeat their actions as many times as it is configured by runner. Once run, there is no way to
interrupt the runner to evaluate any change or restart event on the stability of the cloud under test. For example we
would like to test how configuration change or cloud component restart would affect performance and stability.
Task hooks were added to fill this gap and allow to use Rally for reliability and high availability testing. Generally,
hooks allow to perform any actions on specified iteration or specified time since the workload has been started.
Also, task html-report provides results of hook execution. They can contain graphical or textual information with
timing and statistics.
Architecture
Rally uses runners to specify how many times the workload should be executed. Hooks do not use runners, instead
they rely on trigger plugins to specify when and how many times hook should be called. Therefore hooks are isolated
from workload runners and do not affect them because each hook is executed in separate thread.
Sample of usage
Hooks can be added to the task configuration. Lets take a look at hook configuration:
{
"name": "sys_call",
"args": "/bin/echo 123",
"trigger": {
"name": "event",
"args": {
"unit": "iteration",
"at": [5, 50, 200, 1000]
}
}
}
It specifies hook plugin with name “sys_call”. “args” field contains string that will be used by sys_call plugin, but
in case of any other hook plugin it can contain any other Python object, that is assumed to be passed to the hook.
“trigger” field specifies which trigger plugin should be used to run this hook. “trigger” contains similar fields “name”
and “args” which represent trigger plugin name and arguments for trigger plugin. In this example “event” trigger is
specified and configured to run the hook at 5th, 50th, 200th and 1000th iterations.
Here is a full task config that contains previous hook configuration:
{
"Dummy.dummy": [
{
"args": {
"sleep": 0.01
},
"runner": {
"type": "constant",
"times": 1500,
"concurrency": 1
(continues on next page)
Note: In this example, runner is configured to run workload 1500 times. So there is a limit for iterations and hook
will be triggered only if certain iteration is started by runner. In other words, if trigger specifies iteration out of runner
iterations scope then such trigger will not be called.
Task report for this example will contain minimal information about hook execution: duration of each hook call and
its status(success of failure).
Let’s take a look at more complicated config that can produce graphical and textual information.
---
Dummy.dummy:
-
args:
sleep: 0.75
runner:
type: "constant"
times: 20
concurrency: 2
hooks:
- name: sys_call
description: Run script
args: sh rally/rally-jobs/extra/hook_example_script.sh
trigger:
name: event
args:
unit: iteration
at: [2, 5, 8, 13, 17]
- name: sys_call
description: Show time
args: date +%Y-%m-%dT%H:%M:%S
trigger:
name: event
args:
unit: time
at: [0, 2, 5, 6, 9]
- name: sys_call
description: Show system name
(continues on next page)
hook_example_script.sh generates dummy output in JSON format. Graphical information format is the same as for
workloads and the same types of charts are supported for the hooks.
Here is a report that shows aggregated table and chart with hook results:
Here is report that shows lines chart and pie chart for first hook on the second iteration:
Problem description
Hook plugin should implement custom action that can be done one or multiple times during the workload. Examples
of such actions might be the following:
• Destructive action inside cloud (Fault Injection)
• Getting information about current state of cloud (load/health)
• Upgrading/downgrading a component of cloud
Plugin code
The following example shows simple hook code that performs system call. It is inherited from the base Hook class
and contains implemented run() method:
import shlex
import subprocess
@hook.configure(name="simple_sys_call")
class SimpleSysCallHook(hook.Hook):
"""Performs system call."""
CONFIG_SCHEMA = {
"$schema": consts.JSON_SCHEMA,
"type": "string",
}
def run(self):
proc = subprocess.Popen(shlex.split(self.config),
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT)
proc.wait()
if proc.returncode:
self.set_error(
exception_name="n/a", # no exception class
description="Subprocess returned {}".format(proc.returncode),
details=proc.stdout.read(),
)
Any exceptions risen during execution of run method will be caught by Hook base class and saved as a result.
Although hook should manually call Hook.set_error() to indicate logical error in case if there is no exception
raised.
Also there is a method for saving charts data: Hook.add_output().
Plugin Placement
{
"Dummy.dummy": [
{
"args": {
"sleep": 0.01
},
"runner": {
"type": "constant",
"times": 10,
"concurrency": 1
},
"hooks": [
{
"name": "simple_sys_call",
"args": "/bin/echo 123",
"trigger": {
"name": "event",
"args": {
"unit": "iteration",
"at": [3, 6]
}
}
}
]
}
]
}
Problem description
Trigger plugin should implement an event processor that decides whether to start hook or not. Rally has two basic
triggers that should cover most cases:
• Event Trigger
• Periodic Trigger
Plugin code
@trigger.configure(name="event")
class EventTrigger(trigger.Trigger):
"""Triggers hook on specified event and list of values."""
CONFIG_SCHEMA = {
"type": "object",
"$schema": consts.JSON_SCHEMA,
"oneOf": [
{
"properties": {
"unit": {"enum": ["time"]},
"at": {
"type": "array",
"minItems": 1,
"uniqueItems": True,
"items": {
"type": "integer",
"minimum": 0,
}
},
},
"required": ["unit", "at"],
"additionalProperties": False,
},
{
"properties": {
"unit": {"enum": ["iteration"]},
"at": {
"type": "array",
"minItems": 1,
"uniqueItems": True,
"items": {
"type": "integer",
"minimum": 1,
}
},
},
"required": ["unit", "at"],
"additionalProperties": False,
},
(continues on next page)
def get_listening_event(self):
return self.config["unit"]
Plugin Placement
Let’s create a runner plugin that runs a given scenario a random number of times (chosen at random from a given
range).
Creation
Inherit a class for your plugin from the base ScenarioRunner class and implement its API (the _run_scenario()
method):
import random
@runner.configure(name="random_times")
class RandomTimesScenarioRunner(runner.ScenarioRunner):
"""Sample scenario runner plugin.
CONFIG_SCHEMA = {
"type": "object",
"$schema": consts.JSON_SCHEMA,
"properties": {
"type": {
(continues on next page)
Usage
You can refer to your scenario runner in the input task files in the same way as any other runners. Don’t forget to put
your runner-specific parameters in the configuration as well (“min_times” and “max_times” in our example):
{
"Dummy.dummy": [
{
"runner": {
"type": "random_times",
"min_times": 10,
"max_times": 20,
},
"context": {
"users": {
"tenants": 1,
"users_per_tenant": 1
}
}
}
]
}
Scenario as a plugin
Creation
Inherit a class for your plugin from the base OpenStackScenario class and implement a scenario method inside it. In
our scenario, we’ll first list flavors as an ordinary user, and then repeat the same using admin clients:
@validation.add("required_services", services=[consts.Service.NOVA])
@validation.add("required_platform", platform="openstack", users=True)
@scenario.configure(name="ScenarioPlugin.list_flavors_useless")
class ListFlavors(scenario.OpenStackScenario):
"""Sample plugin which lists flavors."""
@atomic.action_timer("list_flavors")
def _list_flavors(self):
"""Sample of usage clients - list flavors
@atomic.action_timer("list_flavors_as_admin")
def _list_flavors_as_admin(self):
"""The same with admin clients"""
self.admin_clients("nova").flavors.list()
def run(self):
"""List flavors."""
self._list_flavors()
self._list_flavors_as_admin()
Usage
You can refer to your plugin scenario in the task input files in the same way as any other scenarios:
{
"ScenarioPlugin.list_flavors": [
{
"runner": {
"type": "serial",
"times": 5,
},
"context": {
"create_flavor": {
"ram": 512,
}
}
}
]
}
This configuration file uses the “create_flavor” context which we created in Context as a plugin.
SLA as a plugin
Let’s create an SLA (success criterion) plugin that checks whether the range of the observed performance measure-
ments does not exceed the allowed maximum value.
Creation
Inherit a class for your plugin from the base SLA class and implement its API (the add_iteration(iteration), the details()
method):
@sla.configure(name="max_duration_range")
class MaxDurationRange(sla.SLA):
"""Maximum allowed duration range in seconds."""
CONFIG_SCHEMA = {
"type": "number",
"minimum": 0.0,
}
def details(self):
return ("%s - Maximum allowed duration range: %.2f%% <= %.2f%%"
% (self.status(), self._max - self._min, self.criterion_value))
Usage
The new plugin can be used by specifying it in SLA section. Like below:
{
"Dummy.dummy": [
{
"args": {
"sleep": 0.01
},
"runner": {
(continues on next page)
To request a new feature, you should create a document similar to other feature requests and then contribute it to the
doc/feature_request directory of the Rally repository (see the How-to-contribute tutorial).
If you don’t have time to contribute your feature request via Gerrit, please contact Boris Pavlovic ([email protected])
Active feature requests:
Use case
A developer is executing various task and would like to capture logs as well as test results.
Problem description
Possible solution
• Add special context that can capture the logs from tested services.
Use case
Sometimes OpenStack services use common messaging system very prodigally. For example Neutron metering agent
sending all database table data on new object creation i.e https://review.openstack.org/#/c/143672/. It cause to Neutron
degradation and other obvious problems. It will be nice to have a way to track messages count and messages size in
queue during tasks.
Problem description
Possible solution
• Before running task start process which will connect to queue topics and measure messages count, size and
other data which we need.
Use case
During the work on performance it’s essential to be able to compare results of similar task before and after change in
system.
Problem description
There is no command to compare two or more tasks and get tables and graphs.
Possible solution
• Add command that accepts 2 tasks UUID and prints graphs that compares result
Use Case
Some OpenStack projects (Marconi, MagnetoDB) require a real huge load, like 10-100k request per second for load
testing.
To generate such huge load Rally has to create load from different servers.
Problem Description
Use Case
Rally allows to reuse existing users for scenario runs. And we should be able to use only specified set of existing users
for specific scenarios.
Problem Description
For the moment if used deployment with existing users then Rally chooses user for each scenario run randomly. But
there are cases when we may want to use one scenario with one user and another with different one specific user.
Main reason for it is in different set of resources that each user has and those resources may be required for scenarios.
Without this feature Rally user is forced to make all existing users similar and have all required resources set up for
all scenarios he uses. But it is redundant.
Possible solution
Use case
OpenStack is really rapidly developed. Hundreds of patches are merged daily and it’s really hard to track how perfor-
mance is changed during time. It will be nice to have a way to track performance of major functionality of OpenStack
running periodically rally task and building graphs that represent how performance of specific method is changed
during the time.
Problem description
Possible solution
Use case
User might wish to control which rally version is installed or even purge rally from the machine completely.
Problem description
Possible solution
Use case
Installation is pretty easy when there is an Internet connection available. And there is surely a number of OpenStack
uses when whole environment is isolated. In this case, we need somehow specify where installation script should take
required libs and packages.
Problem description
Possible solution #1
Use case
A developer is working on a feature that is covered by one or more specific subtask. He/she would like to execute a
rally task with an existing task template file (YAML or JSON) indicating exactly what subtask will be executed.
Problem description
When executing a task with a template file in Rally, all subtasks are executed without the ability to specify one or a set
of subtasks the user would like to execute.
Possible solution
• Add optional flag to rally task start command to specify one or more subtasks to execute as part of that test run.
Use Case
Rally should be able to generate real life load. Simultaneously create load on different components of OpenStack, e.g.
simultaneously booting VM, uploading image and listing users.
Problem Description
At the moment Rally is able to run only 1 scenario per subtask. Scenario are quite specific (e.g. boot and delete VM
for example) and can’t actually generate real life load.
Writing a lot of specific subtask scenarios that produces more real life load will produce mess and a lot of duplication
of code.
Possible solution
• Extend Rally subtask configuration in such way to support passing multiple scenarios in single subtask context
• Extend Rally task output format to support results of multiple scenarios in single subtask separately.
• Extend rally task plot2html and rally task detailed to show results separately for every scenario.
Use Case
Since multiple volume attaching support to OpenStack Mitaka, one volume can be attached to several instances or
hosts, Rally should add scenarios about multiple attach volume.
Problem Description
Possible solution
Use Case
There are situations when same environment is used across different tasks. For example you would like to improve
operation of listing objects. For example:
• Create hundreds of objects
• Collect baseline of list performance
• Fix something in system
• Repeat the performance test
• Repeat fixing and testing until things are fixed.
Current implementation of Rally will force you to recreate task context which is time consuming operation.
Problem Description
Fortunately Rally has already a mechanism for creating task environment via contexts. Unfortunately it’s atomic
operation: - Create task context - Perform subtask scenario-runner pairs - Destroy task context
This should be split to 3 separated steps.
Possible solution
• Add new CLI operations to work with task environment: (show, create, delete, list)
• Allow task to start against existing task context (instead of deployment)
Use Case
Rally should delete in all cases all resources that it creates during tasks.
Problem Description
1.9.1 Maintainers
If you would like to refactor whole Rally or have UX/community/other issues please contact me.
• Rally Deployment
Anton Studenov • Task Hooks
tohin (irc)
[email protected]
All cores from this list are reviewing all changes that are proposed to Rally. To avoid duplication of efforts, please
contact them before starting work on your code.
• Sahara plugins
Nikita Konovalov
NikitaKonovalov (irc)
[email protected]
• Neutron plugins
Oleg Bondarev
obondarev (irc)
[email protected]
• Heat plugins
Sergey Kraynev
skraynev (irc)
[email protected]
• Magnum plugins
Spyros Trigazis
strigazi (irc)
[email protected]
All cores from this list are responsible for their component plugins. To avoid duplication of efforts, please contact
them before starting working on your own plugins.
• Source code
• Rally roadmap
• Project space
• Bugs
• Patches on review
• Meeting logs (server: irc.oftc.net, channel: #openstack-meeting)
Rally v0.0.1
Information
Commits 1039
Bug fixes 0
Dev cycle 547 days
Release date 26/Jan/2015
Details
Rally v0.0.2
Information
Commits 100
Bug fixes 18
Dev cycle 45 days
Release date 12/Mar/2015
Details
This release contains new features, new task plugins, bug fixes, various code and API improvements.
New Features
API changes
Plugins
• Task Runners:
[improved] Improved algorithm of generation load in constant runner
Before we used processes to generate load, now it creates pool of processes (amount of
processes is equal to CPU count) after that in each process use threads to generate load. So
now you can easily generate load of 1k concurrent scenarios.
[improved] Unify code of constant and rps runners
[interface] Added abort() to runner’s plugin interface
New method abort() is used to immediately interrupt execution.
• Task Scenarios:
[new] DesignateBasic.create_and_delete_server
[new] DesignateBasic.create_and_list_servers
[new] DesignateBasic.list_servers
[new] MistralWorkbooks.list_workbooks
[new] MistralWorkbooks.create_workbook
[new] Quotas.neutron_update
[new] HeatStacks.create_update_delete_stack
[new] HeatStacks.list_stacks_and_resources
[new] HeatStacks.create_suspend_resume_delete_stac
[new] HeatStacks.create_check_delete_stack
[new] NeutronNetworks.create_and_delete_routers
[new] NovaKeypair.create_and_delete_keypair
[new] NovaKeypair.create_and_list_keypairs
[new] NovaKeypair.boot_and_delete_server_with_keypair
[new] NovaServers.boot_server_from_volume_and_live_migrate
[new] NovaServers.boot_server_attach_created_volume_and_live_migrate
[new] CinderVolumes.create_and_upload_volume_to_image
[fix] CinderVolumes.create_and_attach_volume
Pass optional **kwargs only to create server command
[fix] GlanceImages.create_image_and_boot_instances
Pass optional **kwargs only to create server command
[fix] TempestScenario.* removed stress cleanup.
Major issue is that tempest stress cleanup cleans whole OpenStack. This is very dangerous,
so it’s better to remove it and leave some extra resources.
[improved] NovaSecGroup.boot_and_delete_server_with_secgroups
Add optional **kwargs that are passed to boot server comment
• Task Context:
[new] stacks
Generates passed amount of heat stacks for all tenants.
[new] custom_image
Prepares images for internal VMs testing.
To Support generating workloads in VMs by existing tools like: IPerf, Blogbench, HPCC
and others we have to have prepared images, with already installed and configured tools.
Rally team decide to generate such images on fly from passed to avoid requirements of
having big repository with a lot of images.
This context is abstract context that allows to automate next steps:
1) runs VM with passed image (with floating ip and other stuff)
2) execute abstract method that has access to VM
3) snapshot this image
In future we are going to use this as a base for making context that prepares images.
[improved] allow_ssh
Automatically disable it if security group are disabled in neutron.
[improved] keypair
Key pairs are stored in “users” space it means that accessing keypair from scenario is sim-
pler now:
self.context[“user”][“keypair”][“private”]
[fix] users
Pass proper EndpointType for newly created users
[fix] sahara_edp
The Job Binaries data should be treated as a binary content
• Task SLA:
[interface] SLA calculations is done in additive way now
Resolves scale issues, because now we don’t need to have whole array of iterations in
memory to process SLA.
This is required to implement –abort-on-sla-failure feature
[all] SLA plugins were rewritten to implement new interface
Bug fixes
Documentation
Rally v0.0.3
Information
Commits 53
Bug fixes 14
Dev cycle 33 days
Release date 14/Apr/2015
Details
This release contains new features, new task plugins, bug fixes, various code and API improvements.
Specs
Plugins
• Task Runners:
– Add a maximum concurrency option to rps runner
To avoid running to heavy load you can set ‘concurrency’ to configuration and in case if cloud is not able
to process all requests it won’t start more parallel requests then ‘concurrency’ value.
• Task Scenarios:
[new] CeilometerAlarms.create_alarm_and_get_history
[new] KeystoneBasic.get_entities
[new] EC2Servers.boot_server
[new] KeystoneBasic.create_and_delete_service
[new] MuranoEnvironments.list_environments
[new] MuranoEnvironments.create_and_delete_environment
[new] NovaServers.suspend_and_resume_server
[new] NovaServers.pause_and_unpause_server
[new] NovaServers.boot_and_rebuild_server
[new] KeystoneBasic.create_and_list_services
[new] HeatStacks.list_stacks_and_events
[improved] VMTask.boot_runcommand_delete
restore ability to use fixed IP and floating IP to connect to VM via ssh
[fix] NovaServers.boot_server_attach_created_volume_and_live_migrate
Kwargs in nova scenario were wrongly passed
• Task SLA:
– [new] aborted_on_sla
This is internal SLA criteria, that is added if task was aborted
– [new] something_went_wrong
This is internal SLA criteria, that is added if something went wrong, context failed to create or runner
raised some exceptions
Bug fixes
Documentation
Rally v0.0.4
Information
Commits 87
Bug fixes 21
Dev cycle 30 days
Release date 14/May/2015
Details
This release contains new features, new task plugins, bug fixes, various code and API improvements.
• Rally now can generate load with users that already exist
Now one can use Rally for testing OpenStack clouds that are using LDAP, AD or any other read-only keystone
backend where it is not possible to create any users. To do this, one should set up the “users” section of
the deployment configuration of the ExistingCloud type. This feature also makes it safer to run Rally against
production clouds: when run from an isolated group of users, Rally won’t affect rest of the cloud users if
something goes wrong.
• New decorator @osclients.Clients.register can add new OpenStack clients at runtime
It is now possible to add a new OpenStack client dynamically at runtime. The added client will be available
from osclients.Clients at the module level and cached. Example:
Plugins
• Task Runners:
– Add limits for maximum Core usage to constant and rps runners
The new ‘max_cpu_usage’ parameter can be used to avoid possible 100% usage of all available CPU cores
by reducing the number of CPU cores available for processes started by the corresponding runner.
• Task Scenarios:
– [new] KeystoneBasic.create_update_and_delete_tenant
– [new] KeystoneBasic.create_user_update_password
– [new] NovaServers.shelve_and_unshelve_server
– [new] NovaServers.boot_and_associate_floating_ip
– [new] NovaServers.boot_lock_unlock_and_delete
– [new] NovaHypervisors.list_hypervisors
– [new] CeilometerSamples.list_samples
– [new] CeilometerResource.get_resources_on_tenant
– [new] SwiftObjects.create_container_and_object_then_delete_all
– [new] SwiftObjects.create_container_and_object_then_download_object
– [new] SwiftObjects.create_container_and_object_then_list_objects
– [new] MuranoEnvironments.create_and_deploy_environment
– [new] HttpRequests.check_random_request
– [new] HttpRequests.check_request
– [improved] NovaServers live migrate scenarios
add ‘min_sleep’ and ‘max_sleep’ parameters to simulate a pause between VM booting and run-
ning live migration
– [improved] NovaServers.boot_and_live_migrate_server
add a usage sample to samples/tasks
– [improved] CinderVolumes scenarios
support size range to be passed to the ‘size’ argument as a dictionary {“min”: <minimum_size>,
“max”: <maximum_size>}
• Task Contexts:
– [new] MuranoPackage
This new context can upload a package to Murano from some specified path.
– [new] CeilometerSampleGenerator
Context that can be used for creating samples and collecting resources for testing of list operations.
• Task SLA:
– [new] outliers
This new SLA checks that the number of outliers (calculated from the mean and standard deviation of the
iteration durations) does not exceed some maximum value. The SLA is highly configurable: the parameters
used for outliers threshold calculation can be set by the user.
Bug fixes
Other changes
Documentation
• Various fixes
– Remove obsolete .rst files (deploy_engines.rst / server_providers.rst / . . . )
– Restructure the docs files to make them easier to navigate through
– Move the chapter on task templates to the 4th step in the tutorial
– Update the info about meetings (new release meeting & time changes)
Rally v0.1.0
Information
Commits 355
Bug fixes 90
Dev cycle 132 days
Release date 25/September/2015
Details
This release contains new features, new 42 plugins, 90 bug fixes, various code and API improvements.
* Plugin configuration:
· context.context() -> context.configure()
· scenario.scenario() -> scenario.configure()
· Introduced runner.configure()
· Introduced sla.configure()
This resolves 3 problems:
· Unifies configuration of different types of plugins
· Simplifies plugin interface
· Looks nice with new modules path:
* Renames:
rally.benchmark.scenarios.base.AtomicAction -> rally.task.atomic.ActionTimer
rally.benchmark.scenarios.base.atomic_action() -> rally.task.atomic.action_timer()
– Context plugins decide how to map their data for scenario
Now Context.map_for_scenario method can be override to decide how to pass context object to each
iteration of scenario.
– Samples of NEW vs OLD context, sla, scenario and runner plugins:
* Context
# Old
from rally.benchmark.context import base
@base.context(name="users", order=100)
class YourContext(base.Context):
def setup(self):
# ...
def cleanup(self):
# ...
# New
from rally.task import context
@context.configure(name="users", order=100)
class YourContext(context.Context):
def setup(self):
# ...
def cleanup(self):
# ...
def map_for_scenario(self):
# Maps context object to the scenario context object
# like context["users"] -> context["user"] and so on.
* Scenario
# Old Scenario
class ScenarioPlugin(base.Scenario):
@base.scenario()
def some(self):
self._do_some_action()
@base.atomic_action_timer("some_timer")
def _do_some_action(self):
# ...
# New Scenario
@scenario.configure()
def some(self):
self._do_some_action()
@atomic.action_timer("some_action")
def _do_some_action(self):
# ...
* Runner
## Old
class SomeRunner(base.ScenarioRunner):
__execution_type__ = "some_runner"
def abort(self):
# Method that aborts load generation
## New
@runner.configure(name="some_runner")
class SomeRunner(runner.ScenarioRunner):
(continues on next page)
def abort(self):
# Method that aborts load generation
* SLA
# Old
class FailureRate(sla.SLA):
# ...
# New
@sla.configure(name="failure_rate")
class FailureRate(sla.SLA):
# ...
– New code is based on OOP style which is base step to make pluggable Reports
– Reports are now generated for only one iteration over the resulting data which resolves scalability issues
when we are working with large amount of iterations.
– New Load profiler plot that shows amount of iterations that are working in parallel
– Failed iterations are shown as a red areas on stacked are graphic.
Plugins
• Scenarios:
[new] CinderVolumes.create_volume_backup
[new] CinderVolumes.create_and_restore_volume_backup
[new] KeystoneBasic.add_and_remove_user_role
[new] KeystoneBasic.create_and_delete_role
[new] KeystoneBasic.create_add_and_list_user_roles
[new] FuelEnvironments.list_environments
[new] CinderVolumes.modify_volume_metadata
[new] NovaServers.boot_and_delete_multiple_servers
[new] NeutronLoadbalancerV1.create_and_list_pool
[new] ManilaShares.list_shares
[new] CeilometerEvents.create_user_and_get_event
[new] CeilometerEvents.create_user_and_list_event_types
[new] CeilometerEvents.create_user_and_list_events
[new] CeilometerTraits.create_user_and_list_trait_descriptions
[new] CeilometerTraits.create_user_and_list_traits
[new] NeutronLoadbalancerV1.create_and_delete_pools
[new] NeutronLoadbalancerV1.create_and_update_pools
[new] ManilaShares.create_and_delete_share
[new] ManilaShares.create_share_network_and_delete
[new] ManilaShares.create_share_network_and_list
[new] HeatStacks.create_and_delete_stack
[new] ManilaShares.list_share_servers
[new] HeatStacks.create_snapshot_restore_delete_stack
[new] KeystoneBasic.create_and_delete_ec2credential
[new] KeystoneBasic.create_and_list_ec2credentials
[new] HeatStacks.create_stack_and_scale
[new] ManilaShares.create_security_service_and_delete
[new] KeystoneBasic.create_user_set_enabled_and_delete
[new] ManilaShares.attach_security_service_to_share_network
[new] IronicNodes.create_and_delete_node
[new] IronicNodes.create_and_list_node
[new] CinderVolumes.create_and_list_volume_backups
[new] NovaNetworks.create_and_list_networks
[new] NovaNetworks.create_and_delete_network
[new] EC2Servers.list_servers
[new] VMTasks.boot_runcommand_delete_custom_imagea
[new] CinderVolumes.create_and_update_volume
• Contexts:
[new] ManilaQuotas
Add context for setting up Manila quotas: shares, gigabytes, snapshots, snapshot_gigabytes,
share_networks
[new] ManilaShareNetworks
Context for share networks that will be used in case of usage deployment with existing users. Pro-
vided share networks via context option “share_networks” will be balanced between all share cre-
ations of scenarios.
[new] Lbaas
Context to create LBaaS-v1 resources
[new] ImageCommandCustomizerContext
Allows image customization using side effects of a command execution. E.g. one can install an
application to the image and use these image for ‘boot_runcommand_delete’ scenario afterwards.
[new] EC2ServerGenerator
Context that creates servers using EC2 api
[new] ExistingNetwork
This context lets you use existing networks that have already been created instead of creating new
networks with Rally. This is useful when, for instance, you are using Neutron with a dumb router
that is not capable of creating new networks on the fly.
• SLA:
[remove] max_failure_rate - use failure_rate instead
Bug fixes
Documentation
Rally v0.1.1
Information
Commits 32
Bug fixes 9
Dev cycle 11 days
Release date 6/October/2015
Details
This release contains new features, new 6 plugins, 9 bug fixes, various code and API improvements.
New Features
API Changes
Plugins
• Scenarios:
[new] NeutronNetworks.create_and_list_floating_ips
[new] NeutronNetworks.create_and_delete_floating_ips
[new] MuranoPackages.import_and_list_packages
[new] MuranoPackages.import_and_delete_package
[new] MuranoPackages.import_and_filter_applications
[new] MuranoPackages.package_lifecycle
[improved] NovaKeypair.boot_and_delete_server_with_keypair
Bug fixes
Documentation
Rally v0.1.2
Information
Commits 208
Bug fixes 37
Dev cycle 77 days
Release date 23/December/2015
Details
This release, as well as all previous ones, includes a lot of internal and external changes. Most important of them are
listed below.
Warning: Release 0.1.2 is the last release with Python 2.6 support.
Deprecations
• Class rally.common.objects.Endpoint was renamed to Credentials. Old class is kept for backward compatibility.
Please, stop using the old class in your plugins.
Warning: dict key was changed too in user context from “endpoint” to “credential”
• rally.task.utils: wait_is_ready(), wait_for(), wait_for_delete() deprecated you should use wait_for_status() in-
stead.
Rally Verify
• Added possibility to run Tempest tests listed in a file(–tests-file argument in verify start)
• Added possibility to upload Tempest subunit stream logs into data base
• Improvements in generating Tempest config file
• Reworked subunit stream parser
• Don’t install Tempest when rally verify [gen/show]config
• Rally team tries to simplify usage of each our component. Now Rally verification has some kind of a context like
in Tasks. Before launching each verification, Rally checks existence of required resources(networks, images,
flavours, etc) in Tempest configuration file and pre-creates them. Do not worry, all these resources will not be
forgotten and left, Rally will clean them after verification.
Rally Task
• Add –html-static argument to rally task report which allows to generate HTML reports that doesn’t
require Internet.
• Rally supports different API versions now via api_versions context:
CinderVolumes.create_and_delete_volume:
-
args:
size: 1
runner:
type: "constant"
times: 2
concurrency: 2
context:
users:
(continues on next page)
Rally Certification
• Spec consistent-resource-names:
Resource name is based on Task id now. It is a huge step to persistence and disaster cleanups.
• Add a spec for distributed load generation:
https://github.com/openstack/rally/blob/master/doc/specs/in-progress/distributed_runner.rst
• Improvements for scenario output format
https://github.com/openstack/rally/blob/master/doc/specs/in-progress/improve_scenario_output_format.rst
• Task and Verify results export command
https://github.com/openstack/rally/blob/master/doc/specs/in-progress/task_and_verification_export.rst
Plugins
• Scenarios:
• [new] NovaServers.boot_and_get_console_output
• [new] NovaServers.boot_and_show_server
• [new] NovaServers.boot_server_attach_created_volume_and_resize
• [new] NovaServers.boot_server_from_volume_and_resize
• [new] NeutronSecurityGroup.create_and_delete_security_groups
• [new] NeutronSecurityGroup.create_and_list_security_groups
• [new] NeutronSecurityGroup.create_and_update_security_groups
• [new] NeutronLoadbalancerV1.create_and_delete_healthmonitors
• [new] NeutronLoadbalancerV1.create_and_list_healthmonitors
• [new] NeutronLoadbalancerV1.create_and_update_healthmonitors
• [new] SwiftObjects.list_and_download_objects_in_containers
• [new] SwiftObjects.list_objects_in_containers
• [new] FuelNodes.add_and_remove_node
• [new] CeilometerMeters.list_matched_meters
• [new] CeilometerResource.list_matched_resources
• [new] CeilometerSamples.list_matched_samples
• [new] CeilometerStats.get_stats
• [new] Authenticate.validate_monasca
• [new] DesignateBasic.create_and_delete_zone
• [new] DesignateBasic.create_and_list_zones
• [new] DesignateBasic.list_recordsets
• [new] DesignateBasic.list_zones
• [fix] CinderVolumes.create_nested_snapshots_and_attach_volume Remove random nested level which
produce different amount of atomic actions and bad reports.
• Support for Designate V2 api
• A lot of improvements in Sahara scenarios
• Context:
• [new] api_versions
Context allows us to setup client to communicate to specific service.
• [new] swift_objects
Context pre creates swift objects for future usage in scenarios
• [update] sahara_cluster
It supports proxy server which allows to use single floating IP for whole cluster.
• [fix] cleanup
Fix cleanup of networks remove vip before port.
Bug fixes
Documentation
Thanks
We would like to thank Andreas Jaeger for ability to provide Python 2.6 support in this release.
Rally v0.10.0
Overview
Details
• Introduce rally task import command for importing task results into database.
• Extend tags support for tasks. Now you can specify several tags for a single task using –tag argument. Also
filtering tasks by tags is now available.
• Move DB category from rally-manage db to rally db and introduce rally db show command for printing
the used connection string.
Deployments
This release we started a huge work related to simplification of deployment component of Rally. There is a good
progress which includes several nice features:
• The format. “ExistingCloud” deployment type covers 99.99% cases and is used as a base for all new things.
Also, it will be extended to support different platforms soon. The new format looks like (for OpenStack case):
{
"openstack": {
"admin": {
"username": "admin",
"password": "changeme",
"tenant_name": "foo",
},
"auth_url": "https://example.com",
}
}
• admin user is optional in case of setting existing users. From the beginning, setting admin credentials was a
required section of Rally deployment configuration. Even with introducing existing users feature, this behaviour
left. Finally, we finished a big code refactoring and admin credential become optional section. If a set of plugins
for particular workload doesn’t require admin user, you can launch this task at deployment without setting it.
The information about the requirements of plugins you can find at Plugins Reference page (see Requires
platform(s): section at the bottom of each plugin).
• Originally, Rally project was designed to check performance of OpenStack and we succeeded in building awe-
some tool. We do not plan to stop and just want to inform about our future plans to expand a number of supported
platforms. Subscribe to our GitHub organization to not miss new plugins.
Task component
• The new task format is introduced. It includes a bunch of improvements, unification, etc. All the docs and
samples will be updated soon.
As for now, you can check a spec for this big change.
• SLA failure_rate max=0 become a default if nothing else is specified.
• Totally reworked atomic actions. The atomic actions now supports nested actions which allows to measure
durations inside the scenario even more precise. You can find them in HTML report or in our new json report
(see rally task report --json).
• Generation of names for new resources takes care about particular workload id, so it helps to provide a better
cleanup and prepare for new feature - disaster cleanup.
Plugins
We started supporting discovering plugins by entry-points, so you can easily deliver your custom plugins as a simple
python package.
To make you package after-discoverable, you need to specify the proper entry-point at your setup.cfg file:
Deployment Engines:
Remove serverproviders & rarely used deployers
Unfortunately, seems like nobody is using deployers for deploying their clouds and mostly people would like just to
execute their code.
1) Remove server provides
2) Remove engines that uses server providers
OpenStack clients:
• Deprecate EC2 client. It wasn’t used in any of plugins and doesn’t support keystone v3
• Move rally.osclients module to rally.plugins.openstack.oscliens
Scenarios:
The old way to describe scenario plugin via method is finally removed. Initially Rally scenario plugins were methods
of special class, like below:
class SomeBasicClass(scenario.Scenario):
@scenario.configure()
def some_scenario(self, arg1):
"""An implementation of SomeBasicClass.foo scenario."""
@scenario.configure()
def another_scenario(self):
"""Implementation of another scenario, SomeBasicClass.bar."""
However to unify scenarios with other plugins we moved to model where plugin is class. It was done long time ago.
@scenario.configure(name="CustomName")
class Some(scenario.Scenario):
We had a bunch of code that was used for transition and backward compatibility that we finally removed.
• NEW!!
• CinderQos.create_and_get_qos
• CinderQos.create_and_list_qos
• CinderQos.create_and_set_qos
• CinderQos.create_qos_associate_and_disassociate_type
• CinderVolumeTypes.create_and_get_volume_type
• CinderVolumeTypes.create_and_list_volume_types
• CinderVolumeTypes.create_and_update_encryption_type
• CinderVolumeTypes.create_and_update_volume_type
• CinderVolumeTypes.create_get_and_delete_encryption_type
• CinderVolumeTypes.create_volume_type_add_and_list_type_access
• Dummy.openstack
• GlanceImages.create_and_deactivate_image
• GlanceImages.create_and_download_image
• GlanceImages.create_and_get_image
• GlanceImages.create_and_update_image
• K8sPods.create_pods
• K8sPods.create_rcs
• K8sPods.list_pods
• ManilaShares.create_and_extend_share
• ManilaShares.create_and_shrink_share
• ManilaShares.create_share_then_allow_and_deny_access
• NeutronBGPVPN.create_and_delete_bgpvpns
• NeutronBGPVPN.create_and_list_bgpvpns
• NeutronBGPVPN.create_and_list_networks_associations
• NeutronBGPVPN.create_and_list_routers_associations
• NeutronBGPVPN.create_and_update_bgpvpns
• NeutronBGPVPN.create_bgpvpn_assoc_disassoc_networks
• NeutronBGPVPN.create_bgpvpn_assoc_disassoc_routers
• NeutronNetworks.create_and_show_ports
• NeutronNetworks.create_and_show_routers
• NeutronNetworks.create_and_show_subnets
• NeutronNetworks.set_and_clear_router_gateway
• NeutronSecurityGroup.create_and_delete_security_group_rule
• NeutronSecurityGroup.create_and_list_security_group_rules
• NeutronSecurityGroup.create_and_show_security_group
• NeutronSecurityGroup.create_and_show_security_group_rule
• NovaServerGroups.create_and_delete_server_group
• NovaServerGroups.create_and_get_server_group
• NovaServers.boot_and_get_console_url
• NovaServers.boot_server_and_attach_interface
• NovaServers.boot_server_and_list_interfaces
• NovaServers.boot_server_attach_volume_and_list_attachments
• UPDATED!!
• The new argument properties is added to scenario IronicNodes.create_and_list_node
• DELETED
Fuel and Nova-Network are not alive any more. So we removed those scenarios. If any of those scenarios a critical
for you, please contact us.
• FuelEnvironments.create_and_delete_environment
• FuelEnvironments.create_and_list_environments
• FuelNodes.add_and_remove_node
• NovaFloatingIpsBulk.create_and_delete_floating_ips_bulk
• NovaFloatingIpsBulk.create_and_list_floating_ips_bulk
• NovaNetworks.create_and_delete_network
• NovaNetworks.create_and_list_networks
• NovaSecGroup.boot_and_delete_server_with_secgroups
• NovaSecGroup.boot_server_and_add_secgroups
• NovaSecGroup.create_and_delete_secgroups
• NovaSecGroup.create_and_list_secgroups
• NovaSecGroup.create_and_update_secgroups
Validators:
The validators refactoring was a long-term task which blocked us to abandon alignment to only OpenStack platform
and requirements of setting admin credentials. In this release, we made a great progress and fixed a lot of issues and
blockers which made possible to refactor validators. Now validation step is equal for all types of plugins (Scenario,
SLA, Context, Hooks, Runners, etc).
The old way to add validator for scenario is deprecated. The new unified way looks like:
import time
The old validators from rally.task.validators module is deprecated too, see equivalents which can be used
with add decorator:
• required_openstack –> required_platform with setting platform argument to “openstack”
• external_network_exists ->‘external_network_exists <https://rally.readthedocs.io/en/0.10.0/plugins/plugin_
reference.html#external-network-exists-validator>‘_
• file_exists ->‘file_exists <https://rally.readthedocs.io/en/0.10.0/plugins/plugin_reference.html#
file-exists-validator>‘_
• flavor_exists ->‘flavor_exists <https://rally.readthedocs.io/en/0.10.0/plugins/plugin_reference.html#
flavor-exists-validator>‘_
• image_exists ->‘image_exists <https://rally.readthedocs.io/en/0.10.0/plugins/plugin_reference.html#
image-exists-validator>‘_
• image_valid_on_flavor ->‘image_valid_on_flavor <https://rally.readthedocs.io/en/0.10.0/plugins/plugin_
reference.html#image-valid-on-flavor-validator>‘_
• number ->‘number <https://rally.readthedocs.io/en/0.10.0/plugins/plugin_reference.html#number-validator>‘_
• required_api_versions ->‘required_api_versions <https://rally.readthedocs.io/en/0.10.0/plugins/plugin_
reference.html#required-api-versions-validator>‘_
• required_cinder_services ->‘required_cinder_services <https://rally.readthedocs.io/en/0.10.0/plugins/plugin_
reference.html#required-cinder-services-validator>‘_
Fixed bugs
• [plugins] JSON schema of servers context allows to transmit a list of nics in two formats. First one is a format
that novaclient expects to see (each network should be represented like {"nic-id": "the id of the
network"}). The second one is more user-friendly - just list of strings (each network should be represented
just by id of the network). Unfortunately, the second case was not covered by our code base.
Also, the first described format works in limited cases due to bad serialization.
Launchpad bug-report #1695245
• [deployment] ~/rally/.openrc not working for keystone v3
Launchpad bug-report #1683820
• [plugins] Failed to list volumes in case of missed name in the object.
• [backported into 0.9.1][deployment] Credentials is not updated as soon as deployment is recreated. Need to call
recreate request twice.
Launchpad bug-report #1675271
• [backported into 0.9.1][plugins] Scenario IronicNodes.create_and_list_node had a wrong check that list of all
nodes contains newly created one.
• [backported into 0.9.1][task][cleanup] Do not remove quotas in case of existing users
• [backported into 0.9.1][task][cleanup] Various traces of neutron resources
• [backported into 0.9.1][core] Keystone v3, authentication error for Rally users if the value of
project_domain_name of admin user isn’t equal “default”
Launchpad bug-report #1680837
• [backported into 0.9.1][task] Scenario NovaHosts.list_and_get_hosts obtains hostname for all hosts. But it fails
in some environments if host is not compute.
Launchpad bug-report #1675254
• [backported into 0.9.1][verification] Rally fails to run on systems on which python-virtualenv is not installed
Launchpad bug-report #1678047
• [backported into 0.9.1][verification] CLI rally verify rerun fails with TypeError due to wrong integration with
Rally API.
• [plugins] Rally fails while creating neutron router on the clouds where ext-gw-mode extension is not installed.
• [plugins] Scenario CinderVolumes.create_nested_snapshots_and_attach_volume fails on a big load due to the
fact that one server is used for several iterations. In such case we are facing 2 issues: the maximum number of
volumes per VM is 26 (which is a number of available names for volumes); detaching volume of one iteration
can block attaching of other iterations.
Launchpad bug-report #1708160
Thanks
2 Everybody!
Rally v0.10.1
Overview
Details
This release is fully backward compatible with Rally 0.10.0 and contains just bug fixes.
Fixed bugs
• [deployment] Suppress deprecation warning about an old format in case of using –fromenv option of rally
deployment create
• [deployment] Failure rally deployment show while displaying the information about deployment with a config
in an old format.
• [task] New json report processed the hook results in a wrong way
Launchpad bug-report #1734336
• [task] Failure while generating trends reports in case of failures in setup method of any context
Launchpad bug-report #1732193
• [task] Failure to export results in ElasticSearch 5.x cluster in case of extra / in the end of destination url.
Thanks
2 Everybody!
Rally v0.11.0
Overview
Details
Requirements
As for long time we tried to make our releases stable and workable even after a year from release date. For this
purpose, upper limits for all our requirements were used. Such solution helped to make releases more stable, but it
did not work well and created more pain than a profit. The main issue was related to new releases of not-direct rally
dependencies which can be incompatible which each other.
From Rally 0.11.0 we are stopping adding upper version limits for our requirements (this does not apply to cases when
we sure that some new releases of dependency broke us for sure).
As alternative solution, the upper-constraints file is selected. It is a file with a list of packages and their versions which
we used in our CI while testing. Versions from this list are suggested to use in production. Please note, that it also
contains not direct Rally dependencies (dependencies of rally dependencies and dependencies of dependencies of rally
dependencies as well) and packages which possibly doesn’t relate to Rally at all.
The example ou usage:
Logging
The default value of use_stderr option of Rally config is changed to True. It is done to ensure that json output
of rally commands will not be messed with logging and integration with third-party tools and scripts should become
simpler.
Docker
Unfortunately, we lost access to rallyforge organization at DockerHub, so our docker images were not published
anywhere officially for some time. Docker Support did not help us a lot. At least, the original repo is removed now
and we can start new organization at DockerHub from the scratch.
The new docker images for Rally+OpenStack plugins with an updated HowTo you can find at xrally/xrally-openstack
repo. It contains all Rally releases + latest tag which maps to master branch.
• Introduce rally db ensure command. It is going to create Rally DB if it doesn’t exist, otherwise it does nothing.
• Various improvements for rally db. Such as printing results of operations as well as connection string to DB,
hiding credentials by default, etc.
• Various changes in returning error codes. Error codes become different for different exceptions. Also, rally task
start began to return 1 in case of any runtime issues and 2 if any workload doesn’t pass it’s SLA.
• The new CLI for new component (see Environments & Deployments section for more details) - rally
env
Deployment Component is fundamental part of Rally which is used by Task and Verification components. Whereas
Task and Verification components experienced redesigns (some parts were redesigned even several times), Deployment
component was only extended over the time. Currently, we are at the point when further extending requires much work
and user experience become worth. It is a hard decision, as like we had done with Verification component in Rally
0.8, the Deployment component is re-written from the scratch. To be clear, the new version of the component has not
only the new code, but the new name as well - it is the Environment.
We are at the stage when Rally is suitable not only for OpenStack but for various platforms and systems. The Envi-
ronment is some entity against which Rally should perform load. The specific Environment can include credentials
for OpenStack or for Kubernetes or for both. The Environment is a way to describe the complex system/cloud which
all of us have. As well it can be used for simple systems as easy as for complex.
If you are regular Rally user which tests OpenStack clusters, nothing is changing for you at this moment. rally
deployment CLI still works and it is not even deprecated. It will be kept for a while. But you can start looking at our
new CLI rally env .
As for writing plugins for external platforms - we are working on updating our documentary.
Task component
• The json results are extended with context execution stats (i.e when and which context was executed, how
much time setup and cleanup methods took, etc). Also, volumes@openstack and volume_types@openstack are
ported to include detailed stats of executed actions. In further releases, all existing contexts will be adopted to
the similar behavior.
• Better OSProfiler integration
Rally environment&deployment config began accept profiler_conn_str property which is used to gener-
ate OSProfiler native html-report and to embed it to Rally’s html-report.
• HTML report is extended to include a timestamp of failures.
Plugins
As it mentioned above, the Deployment Component will be replaced soon. Such decision led to abandoning all
deployment-related plugins (engines, providers, etc).
Scenarios:
• NEW!!
NovaServers.boot_server_attach_volume_and_list_attachments
• UPDATED!!
• Extend several Nova&Neutron related scenarios with create_floating_ip_args parameter
NovaServers.boot_and_associate_floating_ip NovaServers.boot_server_associate_and_dissociate_floating_ip
• Modify Bgpvpn scenarios to test true bgpvpn
All Bgpvpn scenarios began to boot a server to add active port in the network associated to the bgpvpn which
allows to test not only the record in the database, but true bgpvpn
Contexts:
UPDATED!!
network@openstack context is extended with ability to specify external router information.
Fixed bugs
• [backported into 0.10.1][deployment] Suppress deprecation warning about an old format in case of using
–fromenv option of rally deployment create
• [backported into 0.10.1][deployment] Failure rally deployment show while displaying the information about
deployment with a config in an old format.
• [backported into 0.10.1][task] New json report processed the hook results in a wrong way
Launchpad bug-report #1734336
• [backported into 0.10.1][task] Failure while generating trends reports in case of failures in setup method of any
context
Launchpad bug-report #1732193
• [backported into 0.10.1][task] Failure to export results in ElasticSearch 5.x cluster in case of extra / in the end
of destination url.
• [deployment] OpenStack deployment creation with –fromenv option used old deprecated format.
• [verify] Rally did not support creating verifiers from Gerrit/SSH source.
Launchpad bug-report #1737529
• [task][openstack] Removing default security group in users@openstack context did not take into account that
neutron can return multiple resources in some configuration instead of one security group which relates to
requested tenant.
• [task][openstack] Existing openstack users get their roles un-assigned if they are equal to what roles@openstack
context is configured to assign.
Launchpad bug-report #1720270
• [task][openstack] Validation step ignores roles@openstack context and marks as “invalid” valid cases
Some actions in openstack can be performed only if the user has specific role. Since these roles can be different
in different OpenStack installations Rally has roles@openstack context context which can assign roles to the
users. Validation step did not check for specified roles in workload config and made wrong assumption about
accessibility of resources
Launchpad bug-report #1539878
• [task][openstack] Wrong identifiers were used for filtering Mistral resources while cleanup step.
Thanks
2 Everybody!
Rally v0.11.1
Overview
Details
DataBase
Rally <0.10.0 was hardcoded to support only OpenStack platform. That is why deployment config had a flat schema
(i.e openstack credentials were at the same top-level as other properties).
Rally 0.10 includes an attempt to unify deployment component for supporting multiple platforms. The deployment
config was extended with a new top level property creds which was designed to include credentials for different
platforms. Since Task and Verification components used deployment.credentials object from database instead of using
deployment config directly, Rally 0.10 did not provide a database migration of deployment config.
While developing Rally 0.11.0 with new Environment component, we made a wrong assumption and forgot about an
old format. That is why a 7287df262dbc migration relied on “creds” property of deployment.config
If the database was created before Rally<0.10, the introduced assumption leads to KeyError failure[0] for old deploy-
ment configuration:
File ".../7287df262dbc_move_deployment_to_env.py", line 137, in upgrade
and (set(spec["creds"]) == {"openstack"}
KeyError: 'creds'
We fixed this issue and you should easily migrate from Rally < 0.11.0 to Rally 0.11.1 without any issues.
Verification component
OpenStack Tempest team made a decision to switch from testrepository test runner to stestr which is fork of testrepos-
itory.
Despite the fact that stestr is not 100% backwards compatible with testrepository, it is not a hard task to make Tempest
verifier work with both of them (to support new releases of tempest tool as like old ones) and it is what we did in Rally
0.11.1
Plugins
Scenarios:
• NEW!!
GnocchiArchivePolicyRule.list_archive_policy_rule GnocchiArchivePoli-
cyRule.create_archive_policy_rule GnocchiArchivePolicyRule.create_delete_archive_policy_rule
Thanks
2 Everybody!
Rally v0.11.2
• OpenStack plugins moved to the separate repo and package . In-tree OpenStack plugins are deprecated now and
will be removed soon. All further development should be done in the new repository.
• Environment manager and Platform plugins are extended with a new feature - creating a spec based on sys-
tem environment variables. We had similar feature in Deployment component like below, but it handles only
OpenStack platform.
The new feature is not limited by one platform and each platform plugin can implement it. The usage of the
feature is still pretty simple:
• There is a new argument for rally env show command: –only-spec. It is a trigger for showing only a specification
of the environment
• 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
scenarios.
• 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).
• Improvements of elasticsearch task exporter to cover the case when success rate of workload is not in range of
0-100. For example, it can happen when context fails.
Rally v0.12.0
Warning: It is friendly reminder about the future of in-tree OpenStack plugins. All further development is done
in a separate project. In-tree plugins are deprecated and will be removed in next major release!
@plugin.configure(name="glance")
class GlanceResource(type.ResourceType):
@classmethod
def transform(cls, clients, resource_config):
"""Transform the resource config to id.
@plugin.configure(name="glance")
class GlanceResource(type.ResourceType):
def __init__(self, context, cache=None):
"""init method
Fixed bugs
• Fix deprecated –tasks argument of rally task report. Use –uuid instead.
• Fix printing warning of an old deprecated deployment configuration format.
Thanks
2 Everybody!
Rally v0.12.1
Warning: It is friendly reminder about the future of in-tree OpenStack plugins. All further development is done
in a separate project. In-tree plugins are deprecated and will be removed in next major release!
Thanks
2 Everybody!
Rally v0.2.0
Information
Commits 48
Bug fixes 6*
Dev cycle 19 days
Release date 1/11/2015
Details
This release, as well as all previous ones, includes a lot of internal and external changes. Most important of them are
listed below.
Deprecations
• Option –system-wide-install for rally verify start was deprecated in favor of –system-wide
• rally show commands were deprecated because of 3 reasons:
– It blocks us to make Rally generic testing tool
– It complicates work on Rally as a Service
– You can always use standard OpenStack clients to do the same
Rally Verify
Rally Task
Rally Certification
None.
[Spec][Implemented] improve_scenario_output_format
https://github.com/openstack/rally/blob/master/doc/specs/implemented/improve_scenario_
output_format.rst
Plugins
• Scenarios:
• [new] DesignateBasic.create_and_update_domain
• [improved] CinderVolumes.create_and_attach_volume
Warning: Use “create_vm_params” dict argument instead of **kwargs for instance parameters.
• Context:
• [improved] images
Warning: The min_ram and min_disk arguments in favor of image_args, which lets the user specify any
image creation keyword arguments they want.
Bug fixes
Documentation
None.
Thanks
2 Everybody!
Rally v0.3.0
Information
Commits 69
Bug fixes 7
Dev cycle 29 days
Release date 2/16/2016
Details
This release, as well as all previous ones, includes a lot of internal and external changes. Most important of them are
listed below.
Warning: In this release Rally DB schema migration is introduced. While upgrading Rally from previous versions
it is required now to run rally-manade db upgrade. Please see ‘Documentation’ section for details.
CLI changes
•
Warning: [Removed] rally info in favor of rally plugin *. It was deprecated for a long time.
• [Modified] rally deployment check now prints services, which don’t have names, since such services
can be used via api_versions context.
•
Warning: [Modified] rally verify [re]install option –no-tempest-venv was deprecated in fa-
vor of –system-wide
• [Added] rally-manage db upgrade upgrades pre-existing Rally database schema to the latest revision
• [Added] rally-manage db downgrade to downgrades existing Rally database schema to previous revi-
sion
• [Added] rally task export exports task results to external services (only CLI command introduced, no
real service support implemented yet, however one could write own plugins)
• [Added] rally verify export exports verification results to external services (only CLI command intro-
duced, no real service support implemented yet, however one could write own plugins)
Rally Deployment
•
Warning: fuel deployment engine is removed since it was outdated and lacked both usage and support
Rally Task
Rally Certification
None.
Plugins
• Scenarios:
• [added] VMTasks.workload_heat
• [added] NovaFlavors.list_flavors
• [updated] Flavors for Master and Worker node groups are now configured separately for SaharaCluster.* sce-
narios
• Context:
•
Warning: [deprecated] rally.plugins.openstack.context.cleanup in favor of rally.plugins.openstack.cleanup
• [improved] sahara_cluster
Flavors for Master and Worker node groups are now configured separately in sahara_cluster context
Miscellaneous
Bug fixes
Documentation
Thanks
2 Everybody!
Rally v0.3.1
Information
Commits 9
Bug fixes 6
Dev cycle 2 days
Release date 2/18/2016
Details
Features
Bug fixes
Rally v0.3.2
Information
Commits 55
Dev cycle 25 days
Release date 3/14/2016
Details
This release, as well as all previous ones, includes a lot of internal and external changes. Most important of them are
listed below.
CLI changes
•
Warning: [Modified] Option ‘–tempest-config’ for ‘rally verify reinstall’ command was deprecated for
removal.
•
Warning: [Removed] Option –system-wide-install was removed from rally verify commands in favor of
–system-wide option.
•
Warning: [Modified] Step of installation of Tempest during execution of the rally verify start command
was deprecated and will be removed in the future. Please use rally verify install instead.
• Rework commands.task.TaskCommands.detailed. Now output of the command contains the same results as in
HTML report.
Rally Verify
Plugins
• Scenarios:
• [updated] Fix flavor for cloudera manager
Cloudera manager need master-node flavor
• [added] Add more Nova API scenarios
Add support for listing nova hosts, agents, availability-zones and aggregates.
• [updated] Make sure VolumeGenerator uses the api version info while cleanup
• Designate V2 - Add recordset scenarios
Add create_and_(list|delete)_recordset scenarios Remove the test also that checks the allowed methods, this is in
order for us to be able to have a private method _walk_pages that will do fetching of pages for us vs attempting
to fetch 1 giant list at once.
• unify *_kwargs name in scenarios
When running a scenario, kwargs is used as default key-word arguments. But in some scenarios, there are more
and one services being called, and we use xxx_kwargs for this case.
However, some xxx_kwargs are not unified for same usage[0]. Unifying these could avoid misleading for end
users. Another improvement is to add xxx_kwargs with empty settings for scenario config files.
[0] http://paste.openstack.org/show/489505/
•
Warning: Deprecated arguments ‘script’ and ‘interpreter’ were removed in favor of ‘command’ argument.
VM task scenarios executes a script with a interpreter provided through a formatted argument called ‘command’
which expects the remote_path or local_path of the script and optionally an interpreter with which the script has
to be executed.
Miscellaneous
Bug fixes
Documentation
Thanks
To Everybody!
Rally v0.3.3
Information
Commits 20
Dev cycle 10 days
Release date 3/24/2016
Details
A half of patches relate to Cleanup. We have once again proved that ideal stuff can be improved. :)
Plugins
• Cleanups:
• Use proper attribute to get heat stack name
• Always assign a name to created images.
This is necessary for name-based cleanup. If a name is not specified, one will be generated automatically.
• Improve filtering glance images in case of V2 API
• Delete only images created by images context
Since the images context allows creating images with arbitrary names, name-based cleanup won’t work for it,
so we have to delete the exact list of images that it created instead.
• New config option to set cleanup threads
Allow the user to change the number of cleanup threads via the rally config. When scaling out to thousands of
instances, the cleanup can take forever with the static 20 threads.
• Add inexact matching to name_matches_object
This will support places where we create resources with names that start with a given name pattern, but include
some additional identifier afterwards. For instance, when bulk creating instances, Nova appends a UUID to each
instance name.
• Scenarios:
• Add sample of template for testing for testing heat caching.
Bug fixes
• #1536172: rally deployment destroy failed with traceback for failed deployments. At current moment it is im-
possible to delete deployment if for some reason deployment engine plugin cannot be found, because exception
will be thrown.
Documentation
Thanks
To Everybody!
Rally v0.4.0
Information
Commits 76
Bug fixes 12
Dev cycle 28 days
Release date 4/18/2016
Details
Warning: Rally DB schema was changed since previous release. See HOWTO about updating your database.
CLI changes
Messages
• Removed deprecation warning in case of transmitted “name” attribute while creation neutron resources.
Database
Rally Task
Plugins
Scenarios:
• Extend VM bind actions with “pause_unpause”, “suspend_resume”, “lock_unlock”, “shelve_unshelve”.
• Add exact error message into VMTasks.runcommand_heat scenario
• Add heat scenarios: output-show, output-list
Current patch contains 4 scenarios from heat repo:
– output-show for old algorithm
– output-show for new algorithm
– output-list for old algorithm
– output-list for new algorithm
Contexts:
• Reduce default speed of users creation in users context from 30 to 20 by default.
SLAs:
• NEW!! MaxAverageDurationPerAtomic : Maximum average duration of one iterations atomic actions in sec-
onds.
Plugin Reference
Reports:
• Improve results calculation in charts.Table
• Use int instead of float for Y axis. It’s number of parallel iterations and it can’t be float.
• Remove accuracy that makes no sense, and creates a lot of noise on this graph
• Include failed iterations as well, otherwise we will calculate load incorrectly
• Graph should start from 0 (begging of experiment)
• Add 2 points at the end of graph to get at the end of graph 0 iterations in parallel
Task Exporter:
In previous release we introduced new mechanism to export results in various external systems and various formats.
In this release, we added first plugin for this stuff - file_exporter
Services:
Remove hardcoded timeout from heat service
Utils:
Make glance web uploads streamable
Without this change entire file get’s downloaded into memory and can cause issues.
Rally Verify
Bug fixes
Thanks
2 Everybody!
Rally v0.5.0
Information
Commits 175
Bug fixes 19
Dev cycle 93 days
Release date 7/20/2016
Details
This release took much more time than we expected, but we have a lot of reasons for such delay and if you look at our
change-log, you will understand them.:)
Here is a quick introduction:
• To make our releases as much as possible stable, we added upper limits for each of our requirements;
• A lot of deprecated lines of code were removed, so be careful;
• Statistics trends for given tasks were introduced;
• Support for tempest plugins was added;
• Several new pages at docs.
Logging
Database
[doesn’t require migration] Transform DB layer to return dicts, not SQLAlchemy models
Rally Deployment
Rally Task
Rally Verify
Warning: Using –tempest-config is became an error from this release. Use rally verify genconfig cmd for
all config related stuff.
Warning: Use should use rally verify install cmd to install tempest now
Plugins
In this release we are happy to introduce new entity - plugins Base classes
We have a lot of base plugin entities: Context, Scenario, SLA and etc. Sometimes plugins of different bases can have
equal names(i.e ceilometer OSClient and ceilometer Context). It is normal and we should allow such conflicts. To
support such cases we introduced new entity - plugin base. Statements of plugin bases:
• Each plugin base is unique entity;
• Names of plugin bases can’t conflict with each other;
• Names of two or more plugins in one plugin base can’t conflict with each other(in case of same platform).
• Names of two or more plugins in different plugin base can conflict
Current list of plugin bases:
• rally.task.context.Context
• rally.task.scenario.Scenario
• rally.task.types.ResourceType
• rally.task.exporter.TaskExporter
• rally.task.processing.charts.Chart
• rally.task.runner.ScenarioRunner
• rally.task.sla.SLA
• rally.deployment.serverprovider.provider.ProviderFactory
• rally.deployment.engine.Engine
• rally.osclients.OSClient
OSClients
• NEW!! Support for Senlin client
• NEW!! Support for Gnocchi client
• NEW!! Support for Magnum client
• NEW!! Support for Watcher client
• Transmit endpoint_type to saharaclient
Scenarios:
• NEW!!:
• Authenticate.validate_ceilometer
• CinderVolumes.create_volume_from_snapshot
• CinderVolumes.create_volume_and_clone
• NovaFlavors.create_and_list_flavor_access
• NovaFlavors.create_flavor
• NovaServers.boot_and_update_server
• NovaServers.boot_server_from_volume_snapshot
• [Sahara] Add configs to MapR plugin
• Extend CinderVolumes.create_and_upload_volume_to_image with “image” argument
Plugin Reference
• Deprecate Dummy.dummy_with_scenario_output scenario in favor of Dummy.dummy_output
Warning: All arguments related to snapshot creation should be transmitted only via cre-
ate_snapshot_kwargs.
Types:
Remove deprecated types.
Validators
• Add a required_api_version validator
• Add validators for scenario arguments
Utils:
Use glance wrapper where appropriate to support compatibility between V1 and V2
Bug fixes
Documentation
Thanks
2 Everybody!
Rally v0.6.0
Overview
Details
Common
Database
Docker image
• Add sudo rights to rally user Rally is a pluggable framework. External plugins can require installation of
additional python or system packages, so we decided to add sudo rights.
• Move from ubuntu:14.04 base image to ubuntu:16.04 . Ubuntu 16.04 is current/latest LTS release. Let’s use it.
• pre-install vim Since there are a lot of users who like to experiment and modify samples inside container, rally
team decided to pre-install vim
• configure/pre-install bash-completion Rally provides bash-completion script, but it doesn’t work without in-
stalled bash-completion package and now it is included in our image.
Rally Deployment
• Add strict jsonschema validation for ExistingCloud deployments. All incorrect and unexpected properties will
not be ignored anymore. If you need to store some extra parameters, you can use new “extra” property.
• Fix an issue with endpoint_type. Previously, endpoint type was not transmitted to keystone client. In this case,
keystoneclient used default endpoint type (for different API calls it can differ). Behaviour after the fix:
– None endpoint type -> Rally will initialize all clients without setting endpoint type. It means that clients
will choose what default values for endpoint type use by itself. Most of clients have “public” as default
values. Keystone use “admin” or “internal” by default.
– Not none endpoint type -> Rally will initialize all clients with this endpoint. Be careful, by default most
of keystone v2 api calls do not work with public endpoint type.
Rally Task
• [core] Iterations numbers in logging and reports must be synchronized. Now they start from 1 .
• [config] users_context.keystone_default_role is a new config option (Defaults to “member”) for setting default
user role for new users in case of Keystone V3.
• [Reports] Embed Rally version into HTML reports This adds Rally version via meta tag into HTML reports:
<meta name=”generator” content=”Rally version {{ version }}”>
• [Reports] Expand menu if there is only one menu group
• [logging] Remove deprecated rally.common.log module
• [Trends][Reports] Add success rate chart to trends report
• [Reports] Hide menu list if there is no data at all
Rally Verify
Plugins
Scenarios:
• Extend Sahara scenarios with autoconfig param
Affected plugins:
• SaharaClusters.create_and_delete_cluster
• SaharaClusters.create_scale_delete_cluster
• SaharaNodeGroupTemplates.create_and_list_node_group_templates
• SaharaNodeGroupTemplates.create_delete_node_group_templates
• NEW!!:
• MonascaMetrics.list_metrics
• SenlinClusters.create_and_delete_cluster
• Watcher.create_audit_template_and_delete
• Watcher.create_audit_and_delete
• Watcher.list_audit_templates
• Rename murano.create_service to murano.create_services atomic action
SLA:
NEW!!: performance degradation plugin
Contexts:
• NEW!!:
• Monasca monasca_metrics
• Senlin profiles
• Watcher audit_templates
• Extend manila_share_networks context with share-network autocreation support.
• Extend volumes context to allow volume_type to be None to allow using default value
Bug fixes
• [existing users] Quota context does not restore original settings on exit
Launchpad bug-report #1595578
• [keystone v3] Rally task’s test user role setting failed
Launchpad bug-report #1595081
• [existing users] context cannot fetch ‘tenant’ and ‘user’ details from cloud deployment
Launchpad bug-report #1602157
• UnboundLocalError: local variable ‘cmd’ referenced before assignment
Launchpad bug-report #1587941
• [Reports] Fix trends report generation if there are n/a results
Documentation
Thanks
2 Everybody!
Rally v0.7.0
Overview
Details
Database
Warning: Database schema is changed, you must run rally-manage db upgrade to be able to use old Rally
installation with latest release.
Rally Deployment
Rally Task
Rally Verify
Scenario tests in Tempest require an image file. Logic of obtaining this image is changed:
• If CONF.tempest.img_name_regex is set, Rally tries to find an image matching to the regex in Glance and
download it for the tests.
• If CONF.tempest.img_name_regex is not set (or Rally didn’t find the image matching to
CONF.tempest.img_name_regex), Rally downloads the image by the link specified in CONF.tempest.img_url.
Plugins
Scenarios:
• Removed: Dummy.dummy_with_scenario_output
It was deprecated in 0.5.0
• NEW!!:
• MagnumClusterTemplates.list_cluster_templates
• MagnumClusters.list_clusters
• MagnumClusters.create_and_list_clusters
• NovaAggregates.create_aggregate_add_and_remove_host
• NovaAggregates.create_and_list_aggregates
• NovaAggregates.create_and_delete_aggregate
• NovaAggregates.create_and_update_aggregate
• NovaFlavors.create_and_get_flavor
• NovaFlavors.create_flavor_and_set_keys
• NovaHypervisors.list_and_get_hypervisors
• NovaServers.boot_server_associate_and_dissociate_floating_ip
• KeystoneBasic.authenticate_user_and_validate_token
Contexts:
• NEW!!:
• Manila manila_security_services
• Magnum cluster_templates
• Magnum clusters
OSClients:
Port all openstack clients to use keystone session.
Bug fixes
Thanks
2 Everybody!
Rally v0.8.0
Overview
Details
Installation
We switched to use bindep library for checking required system packages. All our dependencies moved to separate
file (like requirements.txt for python packages) bindep.txt.
Database
Warning: Database schema is changed, you must run rally-manage db upgrade to be able to use old Rally
installation with latest release.
Rally API
Single entry point for Rally API is added - rally.api.API . Old API classes (rally.api.Task, rally.api.
Verification, rally.api.Deployment) are deprecated now.
Rally CLI
Task Component
• [Random names] scenario for checking performance of generate_random_name method is added to our CI with
proper SLA. Be sure, whatever number of random names you need, it will not affect performance of Rally at
all, we checked.
• [atomic actions] scenario for checking performance of calculating atomic actions is added to our CI with proper
SLA. Be sure, whatever number atomics you have in scenarios, it will not affect performance of Rally at all, we
checked.
• [services] new entity is introduced for helping to provide compatibility layer between different API versions of
one service.
Verification component
We completely redesign the whole Verification component. For more details see our new docs for that component
Unfortunately, such big change could not be done in backward compatible way, so old code is not compatible with
new one. See HowTo migrate from Verification component 0.7.0 to 0.8.0
Plugins
Services:
• Glance:
Switched from V1 to V2 API by default.
• Keystone:
• Transmit endpoint_type to keystoneclient
• Full keystone V3 support
Scenarios:
• Updated:
• The meaning of the volume_type argument is changes in CinderVolumes.create_snapshot_and_attach_volume
scenario. It should contain actual volume type instead of boolean value to choose random volume type.
• Extend GlanceImages.create_image_and_boot_instances with create_image_kwargs and boot_server_kwargs
arguments.
• NEW!!:
• CeilometerAlarms.create_and_get_alarm
• CinderVolumeBackups.create_incremental_volume_backup
• CinderVolumeTypes.create_and_delete_volume_type
• CinderVolumeTypes.create_volume_type_and_encryption_type
• CinderVolumes.create_and_accept_transfer
• CinderVolumes.create_and_get_volume
• CinderVolumes.create_volume_and_update_readonly_flag
• CinderVolumes.list_transfers
• CinderVolumes.list_types
• KeystoneBasic.create_and_get_role
• ManilaShares.create_and_list_share
• ManilaShares.set_and_delete_metadata
• MistralExecutions.create_execution_from_workbook
• MistralExecutions.list_executions
• NeutronLoadbalancerV2.create_and_list_loadbalancers
• NeutronNetworks.create_and_show_network
• NeutronNetworks.list_agents
• NovaAggregates.create_aggregate_add_host_and_boot_server
• NovaAggregates.create_and_get_aggregate_details
• NovaFlavors.create_and_delete_flavor
• NovaFlavors.create_flavor_and_add_tenant_access
• NovaHosts.list_and_get_hosts
• NovaHypervisors.list_and_get_uptime_hypervisors
• NovaHypervisors.list_and_search_hypervisors
• NovaHypervisors.statistics_hypervisors
• NovaSecGroup.boot_server_and_add_secgroups
• NovaServerGroups.create_and_list_server_groups
• Quotas.nova_get
Hooks:
• NEW!!:
• fault_injection
Runners
• Updated:
• RPS runner is extended with ability to increase ‘rps’ value by arithmetic progression across certain duration.
Now it can be also a dict specifying progression parameters:
rps": {
"start": 1,
"end": 10,
"step": 1,
"duration": 2
}
This will generate rps value: start, start + step, start + 2 * step, .., end across cer-
tain ‘duration’ seconds each step. If iteration count not ended at the last step of progression, then rps will
continue to generate with “end” value. Note that the last rps could be generated smaller.
Fixed bugs
• [hooks] incorrect encoding of stdout/stderr streams opened by sys_call hook for py3
• [hooks] sorting Hook column at HTML report doesn’t work
• [tasks][scenarios][neutron] L3 HA: Unable to complete operation on subnet
Launchpad bug-report #1562878
• [tasks] JSON report doesn’t save order of atomics
• [tasks][cleanup][nova] Failed to remove aggregate which has hosts in it
• [tasks] –abort-on-sla-failure mechanism works only for current workload, but does not stop the next ones.
• [hooks] hooks section isn’t displayed in HTML report
Thanks
2 Everybody!
Rally v0.8.1
Overview
Details
Plugins
Scenarios:
• Updated:
• Use new network for each subnet at NeutronNetworks.create_and_list_subnets scenario.
• NEW!!:
• CinderVolumeTypes.create_and_list_encryption_type
• Quotas.cinder_get
Thanks
2 Everybody!
Rally v0.9.0
Overview
Details
Task component
Verification component
• Fixed an issue with missed tests while listing all supported tests of specified verifier.
• Fixed an issue with displaying the wrong version of verifier in case of cloning from the local directory.
• Extend rally verify rerun with --detailed, --no-use, --tag and --concurrency arguments.
• Add output examples for JSON and JUnit-XML reporters.
Plugins
Contexts
• Extend cinder quotas to support backups and backup_gigabytes.
Deployment Engines:
Updated Extend DevstackEngine with enable_plugin option.
OpenStack clients:
• Extend support for auth urls like https://example.com:35357/foo/bar/v3
• Pass endpoint type to heatclient
Scenarios:
• NEW!!
• CinderVolumeTypes.create_and_delete_encryption_type
• CinderVolumeTypes.create_and_set_volume_type_keys
• KeystoneBasic.create_and_list_roles
• KeystoneBasic.create_and_update_user
• NovaKeypair.create_and_get_keypair
• NovaServers.resize_shutoff_server
• VMTasks.dd_load_test
• UPDATED!!
• Extend VMTasks.boot_runcommand_delete to display just raw text output of executed command.
• DELETED
Scenario VMTasks.boot_runcommand_delete_custom_image is removed since VM-
Tasks.boot_runcommand_delete covers the case of that particular scenario without adding any complexity.
Validators:
• Extend required_contexts validator to support at least one of the logic.
• Fix a bunch of JSON schemas which are used for validation of all plugins.
Documentation
We totally reworked Plugins Reference page. Now it looks more like Command Line Interface, which means that you
can get links for particular parameter of particular plugin.
Also, you can find expected parameters and their types of all contexts, hooks, SLAs and so on! Most of them still miss
descriptions, but we are working on adding them.
Fixed bugs
• [osclients] Custom auth mechanism was used for zaqarclient instead of unified keystonesession, which led to
auth errors at some envs.
• [plugins] During running CinderVolumes.create_and_restore_volume_backup scenario we had a race problem
with backup deleting due to wrong check of backup status.
Thanks
2 Everybody!
Rally v0.9.1
Overview
Details
Unfortunately, Rally 0.9.0 contains various bugs. We work hard to fix them, improve our CI to avoid such issues in
future and ready to present a new Rally release which includes only bug-fixes.
Fixed bugs
• [deployment] Credentials is not updated as soon as deployment is recreated. Need to call recreate request twice.
Launchpad bug-report #1675271
• [task] Scenario IronicNodes.create_and_list_node had a wrong check that list of all nodes contains newly created
one.
• [task][cleanup] Do not remove quotas in case of existing users
• [task][cleanup] Various traces of neutron resources
• [core] Keystone v3, authentication error for Rally users if the value of project_domain_name of admin user isn’t
equal “default”
Launchpad bug-report #1680837
• [task] Scenario NovaHosts.list_and_get_hosts obtains hostname for all hosts. But it fails in some environments
if host is not compute.
Launchpad bug-report #1675254
• [verification] Rally fails to run on systems on which python-virtualenv is not installed
Launchpad bug-report #1678047
• [verification] CLI rally verify rerun fails with TypeError due to wring integration with Rally API.
Thanks
2 Everybody!
Rally v0.9.2
Overview
Details
The latest OpenStack merged a bunch of incompatible changes. This release is an attempt to fix compatibitily issuses
in Rally 0.9. Now it works well for old and new OpenStack releases.
Note: OpenStack Nova abandoned networking and image API. It is impossible to do anything with it, so we suggest
you to use Neutron and Glance instead.
Fixed bugs
• [broken dependency] One of hook plugins required ansible which released incompatible version. To fix this, the
proper version of os-faults lib should be used
• [keystone] The format of keystone URL’s completely change which resulted in a wrong processing it from our
side.
Thanks
2 Everybody!
Rally v1.0.0
Warning: There is no in-tree OpenStack plugins anymore. They moved to the separate project.
Starting from the current release all notes are written in a single file CHANGELOG.rst Follow it for more details.
Thanks
2 Everybody!
Rally v1.0.0
Warning: There is no in-tree OpenStack plugins anymore. They moved to the separate project.
Starting from the current release all notes are written in a single file CHANGELOG.rst Follow it for more details.
Thanks
2 Everybody!
For Contributors
Licensed under the Apache License, Version 2.0 (the “License”); you may not use this file
except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the Li-
cense is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
ANY KIND, either express or implied. See the License for the specific language governing
permissions and limitations under the License.
For general information on contributing to OpenStack, please check out the contributor guide to get
started. It covers all the basics that are common to all OpenStack projects: the accounts you need, the
basics of interacting with our Gerrit review system, how we communicate as a community, etc. Below
will cover the more project specific information you need to get started with Rally.
2.1.1 Communication
429
Rally Documentation, Release 3.3.1~dev12
We track our tasks in Launchpad. If you’re looking for some smaller, easier work item to pick up and get
started on, search for the ‘low-hanging-fruit’ tag.
You found an issue and want to make sure we are aware of it? You can do so on Launchpad.
All changes proposed to the Rally project require one or two +2 votes from Rally core reviewers before
one of the core reviewers can approve patch by giving Workflow +1 vote.
B O
base_ref (rally.verification.reporter.VerificationReporter override_configuration()
attribute), 123 (rally.verification.manager.VerifierManager
method), 126
C
configure() (rally.verification.manager.VerifierManagerR
method), 125 run() (rally.verification.manager.VerifierManager
method), 126
E
extend_configuration() U
(rally.verification.manager.VerifierManager uninstall() (rally.verification.manager.VerifierManager
method), 125 method), 126
uninstall_extension()
G (rally.verification.manager.VerifierManager
generate() (rally.verification.reporter.VerificationReporter method), 126
method), 123
get_configuration() V
(rally.verification.manager.VerifierManager validate() (rally.verification.reporter.VerificationReporter
method), 125 class method), 123
validate_args() (rally.verification.manager.VerifierManager
I method), 126
install() (rally.verification.manager.VerifierManager VerificationReporter (class in
method), 125 rally.verification.reporter), 123
install_extension() VerifierManager (class in
(rally.verification.manager.VerifierManager rally.verification.manager), 125
method), 125
is_configured() (rally.verification.manager.VerifierManager
method), 125
L
list_extensions()
(rally.verification.manager.VerifierManager
method), 125
list_tests() (rally.verification.manager.VerifierManager
method), 126
M
make() (rally.verification.reporter.VerificationReporter
static method), 123
431