Rally v0.12.0

Release date 05/08/2018

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!

  • Improve performance of rally task import command.

  • Port internals of Verification component to support pip 10

  • Extend plugins interface to provide config options to load. An example of setup.cfg/setup.py:

    Method list_opts in the above example, returns a dict where key is a category name, value is a list of options.

  • Rework ResourceType plugin type. Previously, it was hard-coded for OpenStack resources only (initialization of OpenStack clients).

    An old interface looked like:

    from rally.common.plugin import plugin
    from rally.task import type
    
    @plugin.configure(name="glance")
    class GlanceResource(type.ResourceType):
        @classmethod
        def transform(cls, clients, resource_config):
            """Transform the resource config to id.
    
            :param clients: Initialized OpenStack clients
            :param resource_config: a dict with resource description
                taken from workload
            """
            pass
    

    The new one:

    from rally.common.plugin import plugin
    from rally.task import type
    
    @plugin.configure(name="glance")
    class GlanceResource(type.ResourceType):
        def __init__(self, context, cache=None):
            """init method
    
            :param context: A context object as like other plugins accept.
            :param cache: A global cache which can be used for listing
                the similar resources.
            """
            super(GlanceResource, self).__init__(context, cache)
            # NOTE #1: the next code is copy-pasted from
            #    *rally_openstack.types.OpenStackResourceType* class and
            #    there is no need to copy it to plugins itself, just inherit
            #    from the right parent.
            # NOTE #2: the following code is equal to what we have in
            #    an old ResourceType implementation. Property *self._clients*
            #    is what was transmitted to transform method as *clients*
            #    argument
            self._clients = None
            if self._context.get("admin"):
                self._clients = osclients.Clients(
                    self._context["admin"]["credential"])
            elif self._context.get("users"):
                self._clients = osclients.Clients(
                    self._context["users"][0]["credential"])
    
        def pre_process(self, resource_spec, config):
            """Pre process the resource config to id.
    
            :param resource_spec: a dict with resource description
                taken from workload
            :param config: A resource specification from scenario
                plugin. Usually it contains only *type* of resource.
            """
            #
            pass
    

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!