{%- set cirros_image_url = "http://download.cirros-cloud.net/0.3.5/cirros-0.3.5-x86_64-disk.img" %}
---
  KeystoneBasic.create_user:
    -
      args: {}
      runner:
        type: "constant"
        times: 10
        concurrency: 10
      sla:
        failure_rate:
          max: 0

  KeystoneBasic.create_delete_user:
    -
      args: {}
      runner:
        type: "constant"
        times: 10
        concurrency: 10
      sla:
        failure_rate:
          max: 0

  KeystoneBasic.create_user_set_enabled_and_delete:
    -
      args:
        enabled: true
      runner:
        type: "constant"
        times: 10
        concurrency: 10
      sla:
        failure_rate:
          max: 0
    -
      args:
        enabled: false
      runner:
        type: "constant"
        times: 10
        concurrency: 10
      sla:
        failure_rate:
          max: 0

  KeystoneBasic.create_and_list_tenants:
    -
      args: {}
      runner:
        type: "constant"
        times: 10
        concurrency: 10
      sla:
        failure_rate:
          max: 0

  KeystoneBasic.get_entities:
    -
      runner:
        type: "constant"
        times: 20
        concurrency: 10
      sla:
        failure_rate:
          max: 0
    -
      args:
        service_name: null
      runner:
        type: "constant"
        times: 20
        concurrency: 10
      sla:
        failure_rate:
          max: 0
    -
      args:
        service_name: "nova"
      runner:
        type: "constant"
        times: 20
        concurrency: 10
      sla:
        failure_rate:
          max: 0

  KeystoneBasic.add_and_remove_user_role:
    -
      runner:
        type: "constant"
        times: 10
        concurrency: 5
      context:
        users:
          tenants: 1
          users_per_tenant: 1
      sla:
        failure_rate:
          max: 0

  KeystoneBasic.create_and_delete_role:
    -
      runner:
        type: "constant"
        times: 10
        concurrency: 5
      sla:
        failure_rate:
          max: 0

  KeystoneBasic.create_and_get_role:
    -
      args: {}
      runner:
        type: "constant"
        times: 10
        concurrency: 5
      context:
        users:
          tenants: 2
          users_per_tenant: 2
      sla:
        failure_rate:
          max: 0

  KeystoneBasic.create_add_and_list_user_roles:
    -
      runner:
        type: "constant"
        times: 10
        concurrency: 5
      context:
        users:
          tenants: 1
          users_per_tenant: 1
      sla:
        failure_rate:
          max: 0

  KeystoneBasic.create_and_list_roles:
    -
      runner:
        type: "constant"
        times: 10
        concurrency: 2
      context:
        users:
          tenants: 3
          users_per_tenant: 2
      sla:
        failure_rate:
          max: 0

  KeystoneBasic.create_and_list_users:
    -
      args: {}
      runner:
        type: "constant"
        times: 10
        concurrency: 10
      sla:
        failure_rate:
          max: 0

  KeystoneBasic.create_tenant:
    -
      args: {}
      runner:
        type: "constant"
        times: 10
        concurrency: 10
      sla:
        failure_rate:
          max: 0

  KeystoneBasic.create_tenant_with_users:
    -
      args:
        users_per_tenant: 10
      runner:
        type: "constant"
        times: 10
        concurrency: 10
      context:
        users:
          tenants: 3
      sla:
        failure_rate:
          max: 0

  KeystoneBasic.create_user_update_password:
    -
      args: {}
      runner:
        type: "constant"
        times: 10
        concurrency: 5
      sla:
        failure_rate:
          max: 0

  KeystoneBasic.create_and_update_user:
    -
      args:
        create_user_kwargs: {}
        update_user_kwargs:
          enabled: False
      runner:
        type: "constant"
        times: 10
        concurrency: 2
      context:
        users:
          tenants: 2
          users_per_tenant: 2
      sla:
        failure_rate:
          max: 0

  KeystoneBasic.create_update_and_delete_tenant:
    -
      args: {}
      runner:
        type: "constant"
        times: 10
        concurrency: 5
      sla:
        failure_rate:
          max: 0

  KeystoneBasic.create_and_delete_service:
    -
      runner:
        type: "constant"
        times: 10
        concurrency: 5
      sla:
        failure_rate:
          max: 0

  KeystoneBasic.create_and_list_services:
    -
      runner:
        type: "constant"
        times: 10
        concurrency: 5
      sla:
        failure_rate:
          max: 0

  KeystoneBasic.create_and_list_ec2credentials:
    -
      runner:
        type: "constant"
        times: 10
        concurrency: 5
      context:
        users:
          tenants: 2
          users_per_tenant: 2
      sla:
        failure_rate:
          max: 0

  KeystoneBasic.create_and_delete_ec2credential:
    -
      runner:
        type: "constant"
        times: 10
        concurrency: 5
      context:
        users:
          tenants: 2
          users_per_tenant: 2
      sla:
        failure_rate:
          max: 0

  Dummy.openstack:
    -
      args:
        sleep: 0.01
      runner:
        type: "constant"
        times: 1
        concurrency: 1
      context:
          users:
            tenants: 8
            users_per_tenant: 4
      sla:
        failure_rate:
          max: 0
    -
      args:
        sleep: 0.6
      runner:
        type: "constant"
        concurrency: 2
        times: 4
        timeout: 1
      context:
        users:
          tenants: 1
          users_per_tenant: 1
      sla:
        failure_rate:
          max: 0
    -
      args:
        sleep: 0.6
      runner:
        type: "rps"
        rps: 2
        times: 5
        timeout: 1
      context:
        users:
          tenants: 1
          users_per_tenant: 1
      sla:
        failure_rate:
          max: 0
    -
      description: "Check 'quotas' context."
      args:
        sleep: 0.01
      runner:
        type: "constant"
        times: 1
        concurrency: 1
      context:
        quotas:
          nova:
            instances: 200
            cores: 200
            ram: -1
            floating_ips: 200
            fixed_ips: 200
            metadata_items: -1
            injected_files: -1
            injected_file_content_bytes: -1
            injected_file_path_bytes: -1
            key_pairs: 500
            security_groups: 400
            security_group_rules: 600
          cinder:
            gigabytes: -1
            snapshots: -1
            volumes: -1
      sla:
        failure_rate:
          max: 0

  Authenticate.keystone:
    -
      runner:
        type: "constant"
        times: 40
        concurrency: 20
      context:
        users:
          tenants: 2
          users_per_tenant: 10
      sla:
        failure_rate:
          max: 0

  Authenticate.validate_glance:
    -
      args:
        repetitions: 2
      runner:
        type: "constant"
        times: 10
        concurrency: 5
      context:
        users:
          tenants: 3
          users_per_tenant: 5
      sla:
        failure_rate:
          max: 0

  HttpRequests.check_request:
    -
      args:
        url: "http://www.example.com"
        method: "GET"
        status_code: 200
      runner:
        type: "constant"
        times: 2
        concurrency: 2
      sla:
        failure_rate:
          max: 0

  HttpRequests.check_random_request:
    -
      args:
        requests:
          -
            url: "http://www.example.com"
            method: "GET"
          -
            url: "http://localhost"
            method: "GET"
        status_code: 200
      runner:
        type: "constant"
        times: 2
        concurrency: 2
      sla:
        failure_rate:
          max: 0

  GlanceImages.list_images:
    -
      runner:
        type: "constant"
        times: 5
        concurrency: 5
      context:
        users:
          tenants: 1
          users_per_tenant: 2
        images:
          image_url: "{{ cirros_image_url }}"
          disk_format: "qcow2"
          container_format: "bare"
          images_per_tenant: 1
      sla:
        failure_rate:
          max: 100

    -
      runner:
        type: "constant"
        times: 5
        concurrency: 5
      context:
        users:
          tenants: 2
          users_per_tenant: 1
        images:
          image_url: "~/.rally/extra/fake-image.img"
          disk_format: "qcow2"
          container_format: "bare"
          images_per_tenant: 2
      sla:
        failure_rate:
          max: 100

  GlanceImages.create_and_get_image:
    -
      args:
        image_location: "{{ cirros_image_url }}"
        container_format: "bare"
        disk_format: "qcow2"
      runner:
        type: "constant"
        times: 4
        concurrency: 2
      context:
        users:
          tenants: 2
          users_per_tenant: 2
        api_versions:
          glance:
            version: 2
      sla:
        failure_rate:
          max: 100

  GlanceImages.create_and_download_image:
    -
      args:
        image_location: "{{ cirros_image_url }}"
        container_format: "bare"
        disk_format: "qcow2"
      runner:
        type: "constant"
        times: 4
        concurrency: 2
      context:
        users:
          tenants: 2
          users_per_tenant: 2
      sla:
        failure_rate:
          max: 0

  GlanceImages.create_and_delete_image:
#    -
#      args:
#        image_location: "{{ cirros_image_url }}"
#        container_format: "bare"
#        disk_format: "qcow2"
#      runner:
#        type: "constant"
#        times: 1
#        concurrency: 1
#      context:
#        users:
#          tenants: 2
#          users_per_tenant: 3
#        api_versions:
#          glance:
#            version: 1
#      sla:
#        failure_rate:
#          max: 0
#

    -
      args:
        image_location: "{{ cirros_image_url }}"
        container_format: "bare"
        disk_format: "qcow2"
      runner:
        type: "constant"
        times: 1
        concurrency: 1
      context:
        users:
          tenants: 2
          users_per_tenant: 3
        api_versions:
          glance:
            version: 2
      sla:
        failure_rate:
          max: 100

#
#    -
#      args:
#        image_location: "{{ cirros_image_url }}"
#        container_format: "bare"
#        disk_format: "qcow2"
#      runner:
#        type: "constant"
#        times: 1
#        concurrency: 1
#      context:
#        users:
#          tenants: 1
#          users_per_tenant: 1
#        api_versions:
#          glance:
#            version: 1
#        roles:
#          - admin
#      sla:
#        failure_rate:
#          max: 0

  GlanceImages.create_and_list_image:
#    -
#      args:
#        image_location: "~/.rally/extra/fake-image.img"
#        container_format: "bare"
#        disk_format: "qcow2"
#      runner:
#        type: "constant"
#        times: 1
#        concurrency: 1
#      context:
#        users:
#          tenants: 1
#          users_per_tenant: 1
#        api_versions:
#          glance:
#            version: 1
#      sla:
#        failure_rate:
#          max: 0
#

    -
      args:
        image_location: "~/.rally/extra/fake-image.img"
        container_format: "bare"
        disk_format: "qcow2"
      runner:
        type: "constant"
        times: 1
        concurrency: 1
      context:
        users:
          tenants: 1
          users_per_tenant: 1
        api_versions:
          glance:
            version: 2
      sla:
        failure_rate:
          max: 100

  GlanceImages.create_image_and_boot_instances:
    -
      args:
        image_location: "{{ cirros_image_url }}"
        container_format: "bare"
        disk_format: "qcow2"
        flavor:
            name: "m1.tiny"
        number_instances: 2
        create_image_kwargs:
          properties:
            hw_video_model: vga
      runner:
        type: "constant"
        times: 1
        concurrency: 1
      context:
        users:
          tenants: 3
          users_per_tenant: 1
      sla:
        failure_rate:
          max: 100

  GlanceImages.create_and_update_image:
    -
      args:
        image_location: "{{ cirros_image_url }}"
        container_format: "bare"
        disk_format: "qcow2"
      runner:
        type: "constant"
        times: 4
        concurrency: 2
      context:
        users:
          tenants: 2
          users_per_tenant: 2
      sla:
        failure_rate:
          max: 100

  GlanceImages.create_and_deactivate_image:
    -
      args:
        image_location: "{{ cirros_image_url }}"
        container_format: "bare"
        disk_format: "qcow2"
      runner:
        type: "constant"
        times: 4
        concurrency: 2
      context:
        users:
          tenants: 2
          users_per_tenant: 2
      sla:
        failure_rate:
          max: 100

  SwiftObjects.create_container_and_object_then_list_objects:
    -
      args:
        objects_per_container: 2
        object_size: 5120
      runner:
        type: "constant"
        times: 2
        concurrency: 2
      context:
        users:
          tenants: 1
          users_per_tenant: 1
        roles:
          - "admin"
      sla:
        failure_rate:
          max: 0

  SwiftObjects.create_container_and_object_then_delete_all:
    -
      args:
        objects_per_container: 5
        object_size: 102400
      runner:
        type: "constant"
        times: 4
        concurrency: 2
      context:
        users:
          tenants: 1
          users_per_tenant: 1
        roles:
          - "admin"
      sla:
        failure_rate:
          max: 0

  SwiftObjects.create_container_and_object_then_download_object:
    -
      args:
        objects_per_container: 5
        object_size: 1024
      runner:
        type: "constant"
        times: 6
        concurrency: 3
      context:
        users:
          tenants: 1
          users_per_tenant: 1
        roles:
          - "admin"
      sla:
        failure_rate:
          max: 0

  SwiftObjects.list_and_download_objects_in_containers:
    -
      runner:
        type: "constant"
        times: 2
        concurrency: 2
      context:
        users:
          tenants: 1
          users_per_tenant: 1
        roles:
          - "admin"
        swift_objects:
          containers_per_tenant: 1
          objects_per_container: 5
          object_size: 10240
      sla:
        failure_rate:
          max: 0

  SwiftObjects.list_objects_in_containers:
    -
      runner:
        type: "constant"
        times: 6
        concurrency: 3
      context:
        users:
          tenants: 1
          users_per_tenant: 1
        roles:
          - "admin"
        swift_objects:
          containers_per_tenant: 1
          objects_per_container: 10
          object_size: 1024
      sla:
        failure_rate:
          max: 0
