============
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() instead.


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:

.. code-block:: none

  CinderVolumes.create_and_delete_volume:
    -
      args:
        size: 1
      runner:
        type: "constant"
        times: 2
        concurrency: 2
      context:
        users:
          tenants: 2
          users_per_tenant: 2
        api_versions:
          cinder:
            version: 2
            service_name: cinderv2

* Move rally.osclients.Clients to plugin base

  Rally OSclients is pluggable now and it is very easy to extend OSClient for
  your cloud out of Rally tree.

* Add 'merge' functionality to SLA

  All SLA plugins  should implement merge() method now.
  In future this will be used for distributed load generation.
  Where SLA results from different runners will be merged together.

* New optional_action_timer decorator

  Allows to make the methods that can be both atomic_action or regular
  method. Method changes behavior based on value in extra key "atomic_action"


Rally Certification
~~~~~~~~~~~~~~~~~~~

* Fix Glance certification arguments

* Add Neutron Quotas only if Neutron service is available

Specs & Feature Requests
~~~~~~~~~~~~~~~~~~~~~~~~

* 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
~~~~~~~~~

**37 bugs were fixed, the most critical are**:

* Follow symlinks in plugin discovery
* Use sed without -i option for portability (install_rally.sh)
* Fixed race in rally.common.broker
* Fixed incorrect iteration number on "Failures" Tab
* Fixing issue with create_isolated_networks = False
* Fix docker build command

Documentation
~~~~~~~~~~~~~

Fixed some minor typos and inaccuracies.

Thanks
~~~~~~

We would like to thank Andreas Jaeger for ability to provide Python 2.6 support in this release.
