{%- set cirros_image_url = "https://github.com/cirros-dev/cirros/releases/download/0.5.2/cirros-0.5.2-x86_64-disk.img" %}
{% set image_name = "^(cirros.*-disk|TestVM)$" %}
{% set flavor_name = "m1.tiny" %}
{% set volume_type = "" %}
---
  version: 2
  title: Task for gate-rally-dsvm-rally-nova-nv job
  description: >
    This task contains various scenarios for testing nova plugins
  subtasks:
    -
      title: Authenticate.validate_nova tests
      scenario:
        Authenticate.validate_nova:
          repetitions: 2
      runner:
        constant:
          times: 10
          concurrency: 5
      contexts:
        users:
          tenants: 2
          users_per_tenant: 2
    -
      title: Quotas test cases
      workloads:
        -
          scenario:
            Quotas.nova_update_and_delete:
              max_quota: 1024
          runner:
            constant:
              times: 4
              concurrency: 1
          contexts:
            users:
              tenants: 2
              users_per_tenant: 2
        -
          scenario:
            Quotas.nova_get: {}
          runner:
            constant:
              times: 4
              concurrency: 2
          contexts:
            users:
              tenants: 2
              users_per_tenant: 2
        -
          scenario:
            Quotas.nova_update:
              max_quota: 1024
          runner:
            constant:
              times: 4
              concurrency: 1
          contexts:
            users:
              tenants: 2
              users_per_tenant: 2
    -
      title: NovaServers.boot_and_delete_server tests
      workloads:
        -
          scenario:
            NovaServers.boot_and_delete_server:
              flavor:
                name: {{flavor_name}}
              image:
                name: {{image_name}}
          runner:
            constant:
              times: 2
              concurrency: 2
          contexts:
            users:
              tenants: 2
              users_per_tenant: 2
        -
          scenario:
            NovaServers.boot_and_delete_server:
              flavor:
                name: {{flavor_name}}
              image:
                name: {{image_name}}
              auto_assign_nic: true
          runner:
            constant:
              times: 2
              concurrency: 2
          contexts:
            users:
              tenants: 2
              users_per_tenant: 2
            network:
              start_cidr: "10.2.0.0/24"
              networks_per_tenant: 2
        -
          scenario:
            NovaServers.boot_and_delete_server:
              flavor:
                name: {{flavor_name}}
              image:
                name: {{image_name}}
              force_delete: true
          runner:
            constant:
              times: 2
              concurrency: 2
          contexts:
            users:
              tenants: 2
              users_per_tenant: 2

    -
      title: NovaServers.boot_and_list_server tests
      workloads:
        -
          scenario:
            NovaServers.boot_and_list_server:
              flavor:
                name: {{flavor_name}}
              image:
                name: {{image_name}}
              detailed: True
          runner:
            constant:
              times: 2
              concurrency: 2
          contexts:
            users:
              tenants: 2
              users_per_tenant: 1
        -
          scenario:
            NovaServers.boot_and_list_server:
              flavor:
                name: {{flavor_name}}
              image:
                name: {{image_name}}
              detailed: True
          runner:
            constant:
              times: 4
              concurrency: 2
          contexts:
            users:
              tenants: 2
              users_per_tenant: 2
              user_choice_method: "round_robin"
        -
          scenario:
            NovaServers.boot_and_list_server:
              flavor:
                name: {{flavor_name}}
              image:
                name: {{image_name}}
              files:
                /home/bootfile: "rallytest"
              detailed: True
          runner:
            constant:
              times: 2
              concurrency: 2
          contexts:
            users:
              tenants: 2
              users_per_tenant: 1
    -
      title: NovaServerGroups.create_and_get_server_group tests
      workloads:
      {% for s in (["affinity"], ["anti-affinity"]) %}
        -
          scenario:
            NovaServerGroups.create_and_get_server_group:
              policies: {{s}}
          runner:
            constant:
              times: 4
              concurrency: 2
          contexts:
            users:
              tenants: 2
              users_per_tenant: 2
      {% endfor %}

    -
      title: NovaServerGroups.create_and_list_server_groups tests
      workloads:
     {% for s in (["affinity"], ["anti-affinity"]) %}
        -
          scenario:
            NovaServerGroups.create_and_list_server_groups:
              policies: {{s}}
              all_projects: false
          runner:
            constant:
              times: 4
              concurrency: 2
          contexts:
            users:
              tenants: 2
              users_per_tenant: 2

      {% endfor %}
    -
      title: NovaServerGroups.create_and_delete_server_group tests
      workloads:
      {% for s in (["affinity"], ["anti-affinity"]) %}
        -
          scenario:
            NovaServerGroups.create_and_delete_server_group:
              policies: {{s}}
          runner:
            constant:
              times: 4
              concurrency: 2
          contexts:
            users:
              tenants: 2
              users_per_tenant: 2
      {% endfor %}
    -
      title: NovaServers.suspend_and_resume_server tests
      scenario:
        NovaServers.suspend_and_resume_server:
          flavor:
            name: {{flavor_name}}
          image:
            name: {{image_name}}
      runner:
        constant:
          times: 2
          concurrency: 2
      contexts:
        users:
          tenants: 2
          users_per_tenant: 1
    -
      title: NovaServers.pause_and_unpause_server tests
      scenario:
        NovaServers.pause_and_unpause_server:
          flavor:
            name: {{flavor_name}}
          image:
            name: {{image_name}}
      runner:
        constant:
          times: 2
          concurrency: 2
      contexts:
        users:
          tenants: 2
          users_per_tenant: 1
    -
      title: NovaServers.shelve_and_unshelve_server tests
      scenario:
        NovaServers.shelve_and_unshelve_server:
          flavor:
            name: {{flavor_name}}
          image:
            name: {{image_name}}
      runner:
        constant:
          times: 2
          concurrency: 2
      contexts:
        users:
          tenants: 2
          users_per_tenant: 1
    -
      title: NovaServers.boot_and_rebuild_server tests
      scenario:
        NovaServers.boot_and_rebuild_server:
          flavor:
            name: {{flavor_name}}
          from_image:
            name: {{image_name}}
          to_image:
            name: {{image_name}}
      runner:
        constant:
          times: 2
          concurrency: 2
      contexts:
        users:
          tenants: 2
          users_per_tenant: 1
    -
      title: NovaServers.boot_and_associate_floating_ip tests
      scenario:
        NovaServers.boot_and_associate_floating_ip:
          flavor:
            name: {{flavor_name}}
          image:
            name: {{image_name}}
      runner:
        constant:
          times: 2
          concurrency: 2
      contexts:
        users:
          tenants: 2
          users_per_tenant: 1
        network: {}
    -
      title: NovaServers.boot_server_associate_and_dissociate_floating_ip tests
      scenario:
        NovaServers.boot_server_associate_and_dissociate_floating_ip:
          flavor:
            name: {{flavor_name}}
          image:
            name: {{image_name}}
      runner:
        constant:
          times: 2
          concurrency: 2
      contexts:
        users:
          tenants: 2
          users_per_tenant: 2
        network: {}
    -
      title: NovaServers.list_servers tests
      scenario:
        NovaServers.list_servers:
          detailed: True
      runner:
        constant:
          times: 4
          concurrency: 2
      contexts:
        users:
          tenants: 2
          users_per_tenant: 1
        servers:
          flavor:
            name: {{flavor_name}}
          image:
            name: {{image_name}}
          servers_per_tenant: 2
          auto_assign_nic: True
        network:
          networks_per_tenant: 1
    -
      title: NovaServers.boot_and_show_server tests
      scenario:
        NovaServers.boot_and_show_server:
          image:
            name: {{image_name}}
          flavor:
            name: {{flavor_name}}
      runner:
        constant:
          times: 2
          concurrency: 2
      contexts:
        users:
          tenants: 2
          users_per_tenant: 1
    -
      title: NovaServers.boot_and_get_console_output tests
      scenario:
        NovaServers.boot_and_get_console_output:
          image:
            name: {{image_name}}
          flavor:
            name: {{flavor_name}}
      runner:
        constant:
          times: 2
          concurrency: 2
      contexts:
        users:
          tenants: 2
          users_per_tenant: 1
    -
      title: NovaServers.boot_and_get_console_url tests
      workloads:
        -
          scenario:
            NovaServers.boot_and_get_console_url:
              flavor:
                name: "{{flavor_name}}"
              image:
                name: "{{image_name}}"
              console_type: novnc
          runner:
            constant:
              times: 4
              concurrency: 2
          contexts:
            users:
              tenants: 2
              users_per_tenant: 2
    -
      title: NovaServers.resize_server tests
      workloads:
        -
          scenario:
            NovaServers.resize_server:
              flavor:
                name: {{flavor_name}}
              image:
                name: {{image_name}}
              to_flavor:
                name: "m1.small"
              confirm: true
          runner:
            constant:
              times: 2
              concurrency: 2
          contexts:
            users:
              tenants: 2
              users_per_tenant: 1
        -
          scenario:
            NovaServers.resize_server:
              flavor:
                name: {{flavor_name}}
              image:
                name: {{image_name}}
              to_flavor:
                name: "m1.small"
              confirm: false
          runner:
            constant:
              times: 2
              concurrency: 2
          contexts:
            users:
              tenants: 2
              users_per_tenant: 1
    -
      title: NovaServers.resize_shutoff_server tests
      workloads:
      {% for s in ("true", "false") %}
        -
          scenario:
            NovaServers.resize_shutoff_server:
              flavor:
                name: {{flavor_name}}
              image:
                name: {{image_name}}
              to_flavor:
                name: "m1.small"
              confirm: {{s}}
          runner:
            constant:
              times: 2
              concurrency: 2
          contexts:
            users:
              tenants: 2
              users_per_tenant: 2
      {% endfor %}
    -
      title: NovaServers.boot_server_attach_created_volume_and_resize tests
      scenario:
        NovaServers.boot_server_attach_created_volume_and_resize:
          flavor:
            name: {{flavor_name}}
          image:
            name: {{image_name}}
          to_flavor:
            name: "m1.small"
          volume_size: 1
          confirm: true
          force_delete: false
          do_delete: true
          boot_server_kwargs: {}
          create_volume_kwargs: {}
      runner:
        constant:
          times: 2
          concurrency: 2
      contexts:
        users:
          tenants: 2
          users_per_tenant: 1
    -
      title: NovaServers.boot_server_attach_created_volume_and_extend tests
      scenario:
        NovaServers.boot_server_attach_created_volume_and_extend:
          flavor:
            name: {{flavor_name}}
          image:
            name: {{image_name}}
          volume_size: 1
          new_volume_size: 2
          force_delete: false
          do_delete: true
          boot_server_kwargs: {}
          create_volume_kwargs: {}
      runner:
        constant:
          times: 2
          concurrency: 2
      contexts:
        api_versions:
          cinder:
            version: 3.42
        users:
          tenants: 2
          users_per_tenant: 1
    -
      title: NovaServers.boot_server_from_volume_and_resize tests
      scenario:
        NovaServers.boot_server_from_volume_and_resize:
          flavor:
            name: {{flavor_name}}
          image:
            name: {{image_name}}
          to_flavor:
            name: "m1.small"
          volume_size: 1
          confirm: true
          force_delete: false
          do_delete: true
          boot_server_kwargs: {}
          create_volume_kwargs: {}
      runner:
        constant:
          times: 2
          concurrency: 2
      contexts:
        users:
          tenants: 2
          users_per_tenant: 1
    -
      title: NovaServers.boot_and_bounce_server tests
      scenario:
        NovaServers.boot_and_bounce_server:
          flavor:
            name: {{flavor_name}}
          image:
            name: {{image_name}}
          actions:
            -
              hard_reboot: 1
            -
              stop_start: 1
            -
              rescue_unrescue: 1
            -
              pause_unpause: 1
            -
              suspend_resume: 1
            -
              lock_unlock: 1
            -
              shelve_unshelve: 1
      runner:
        constant:
          times: 2
          concurrency: 2
      contexts:
        users:
          tenants: 2
          users_per_tenant: 1
    -
      title: NovaServers.boot_lock_unlock_and_delete tests
      scenario:
        NovaServers.boot_lock_unlock_and_delete:
          flavor:
            name: {{flavor_name}}
          image:
            name: {{image_name}}
      runner:
        constant:
          times: 2
          concurrency: 2
      contexts:
        users:
          tenants: 2
          users_per_tenant: 1
    -
      title: NovaServers.boot_server_from_volume_and_delete tests
      scenario:
        NovaServers.boot_server_from_volume_and_delete:
          flavor:
            name: {{flavor_name}}
          image:
            name: {{image_name}}
          volume_size: 1
          volume_type: {{volume_type}}
      runner:
        constant:
          times: 2
          concurrency: 2
      contexts:
        users:
          tenants: 2
          users_per_tenant: 2
    -
      title: NovaServers.boot_server_from_volume tests
      scenario:
        NovaServers.boot_server_from_volume:
          flavor:
            name: {{flavor_name}}
          image:
            name: {{image_name}}
          volume_size: 1
          volume_type: {{volume_type}}
      runner:
        constant:
          times: 2
          concurrency: 2
      contexts:
        users:
          tenants: 2
          users_per_tenant: 2
    -
      title: NovaServers.snapshot_server tests
      workloads:
        -
          scenario:
            NovaServers.snapshot_server:
              flavor:
                name: {{flavor_name}}
              image:
                name: {{image_name}}
          runner:
            constant:
              times: 2
              concurrency: 2
          contexts:
            users:
              tenants: 2
              users_per_tenant: 2
        -
          scenario:
            NovaServers.snapshot_server:
              flavor:
                name: {{flavor_name}}
              image:
                name: {{image_name}}
          runner:
            constant:
              times: 2
              concurrency: 2
          contexts:
            users:
              tenants: 2
              users_per_tenant: 2
            api_versions:
              glance:
                version: 2
    -
      title: NovaServers.boot_server tests
      workloads:
        -
          scenario:
            NovaServers.boot_server:
              flavor:
                name: "^ram64$"
              image:
                name: {{image_name}}
              auto_assign_nic: false
          runner:
            constant:
              times: 2
              concurrency: 2
          contexts:
            users:
              tenants: 2
              users_per_tenant: 2
            flavors:
              -
                name: "ram64"
                ram: 64
                disk: 1
        -
          scenario:
            NovaServers.boot_server:
              flavor:
                name: {{flavor_name}}
              image:
                name: {{image_name}}
          runner:
            constant:
              times: 2
              concurrency: 2
          contexts:
            users:
              tenants: 2
              users_per_tenant: 2
        -
          scenario:
            NovaServers.boot_server:
              flavor:
                name: {{flavor_name}}
              image:
                name: "rally-named-image-from-context"
          runner:
            constant:
              times: 4
              concurrency: 2
          contexts:
            users:
              tenants: 1
              users_per_tenant: 2
            roles:
              - admin
            images:
              image_url: "{{ cirros_image_url }}"
              disk_format: "qcow2"
              container_format: "bare"
              images_per_tenant: 1
              image_name: "rally-named-image-from-context"
              visibility: "public"

    -
      title: NovaHypervisors.list_hypervisors tests
      scenario:
        NovaHypervisors.list_hypervisors:
          detailed: True
      runner:
        constant:
          times: 4
          concurrency: 2
    -
      title: NovaHypervisors.statistics_hypervisors tests
      scenario:
        NovaHypervisors.statistics_hypervisors: {}
      runner:
        constant:
          times: 5
          concurrency: 2
      contexts:
        users:
          tenants: 2
          users_per_tenant: 2
    -
      title: NovaHypervisors.list_and_get_hypervisors tests
      scenario:
        NovaHypervisors.list_and_get_hypervisors:
          detailed: True
      runner:
        constant:
          times: 4
          concurrency: 2
      contexts:
        users:
          tenants: 2
          users_per_tenant: 2
    -
      title: NovaHypervisors.list_and_get_uptime_hypervisors tests
      scenario:
        NovaHypervisors.list_and_get_uptime_hypervisors:
          detailed: True
      runner:
        constant:
          times: 4
          concurrency: 2
      contexts:
        users:
          tenants: 2
          users_per_tenant: 2
    -
      title:  NovaHypervisors.list_and_search_hypervisors tests
      scenario:
        NovaHypervisors.list_and_search_hypervisors:
          detailed: True
      runner:
        constant:
          times: 4
          concurrency: 2
      contexts:
        users:
          tenants: 2
          users_per_tenant: 2
    -
      title: NovaKeypair.create_and_delete_keypair tests
      workloads:
        -
          scenario:
            NovaKeypair.create_and_delete_keypair: {}
          runner:
            constant:
              times: 4
              concurrency: 4
          contexts:
            users:
              tenants: 2
              users_per_tenant: 2
        -
          scenario:
            NovaKeypair.create_and_delete_keypair:
              key_type: "x509"
          runner:
            constant:
              times: 4
              concurrency: 4
          contexts:
            users:
              tenants: 2
              users_per_tenant: 2
            api_versions:
              nova:
                version: 2.2
    -
      title: NovaKeypair.create_and_list_keypairs tests
      scenario:
        NovaKeypair.create_and_list_keypairs: {}
      runner:
        constant:
          times: 4
          concurrency: 4
      contexts:
        users:
          tenants: 2
          users_per_tenant: 2
    -
      title: NovaKeypair.create_and_get_keypair tests
      scenario:
        NovaKeypair.create_and_get_keypair: {}
      runner:
        constant:
          times: 4
          concurrency: 4
      contexts:
        users:
          tenants: 2
          users_per_tenant: 2
    -
      title: NovaKeypair.create_and_get_keypair tests
      workloads:
        -
          scenario:
            NovaKeypair.boot_and_delete_server_with_keypair:
              flavor:
                name: {{flavor_name}}
              image:
                name: {{image_name}}
          runner:
            constant:
              times: 2
              concurrency: 2
          contexts:
            users:
              tenants: 2
              users_per_tenant: 2
            network:
              start_cidr: "10.2.0.0/24"
        -
          scenario:
            NovaKeypair.boot_and_delete_server_with_keypair:
              flavor:
                name: {{flavor_name}}
              image:
                name: {{image_name}}
              key_type: "x509"
          runner:
            constant:
              times: 2
              concurrency: 2
          contexts:
            users:
              tenants: 2
              users_per_tenant: 2
            network:
              start_cidr: "10.2.0.0/24"
            api_versions:
              nova:
                version: 2.2
    -
      title: NovaServers.boot_and_delete_multiple_servers tests
      scenario:
        NovaServers.boot_and_delete_multiple_servers:
          flavor:
            name: {{flavor_name}}
          image:
            name: {{image_name}}
          count: 5
      runner:
        constant:
          times: 2
          concurrency: 2
      contexts:
        users:
          tenants: 2
          users_per_tenant: 2
    -
      title: NovaFlavors.list_flavors tests
      scenario:
        NovaFlavors.list_flavors:
          detailed: True
      runner:
        constant:
          times: 4
          concurrency: 2
      contexts:
        users:
          tenants: 2
          users_per_tenant: 2
    -
      title: NovaAggregates.list_aggregates tests
      scenario:
        NovaAggregates.list_aggregates: {}
      runner:
        constant:
          concurrency: 2
          times : 4
    -
      title: NovaAggregates.create_aggregate_add_and_remove_host tests
      scenario:
        NovaAggregates.create_aggregate_add_and_remove_host:
          availability_zone: "nova"
      runner:
        constant:
          times: 4
          concurrency: 2
      contexts:
        users:
          tenants: 2
          users_per_tenant: 2
    -
      title: NovaAvailabilityZones.list_availability_zones tests
      scenario:
        NovaAvailabilityZones.list_availability_zones:
          detailed: true
      runner:
        constant:
          concurrency: 2
          times: 4
    -
      title: NovaServices.list_services tests
      scenario:
        NovaServices.list_services: {}
      runner:
        constant:
          times: 4
          concurrency: 2
    -
      title: NovaFlavors.create_flavor tests
      scenario:
        NovaFlavors.create_flavor:
          ram: 500
          vcpus: 1
          disk: 1
      runner:
        constant:
          times: 4
          concurrency: 2
    -
      title: NovaFlavors.create_flavor_and_set_keys tests
      scenario:
        NovaFlavors.create_flavor_and_set_keys:
          ram: 500
          vcpus : 1
          disk: 1
          extra_specs:
            quota:disk_read_bytes_sec: 10240
      runner:
        constant:
          concurrency: 2
          times: 4
    -
      title: NovaFlavors.create_and_get_flavor tests
      scenario:
        NovaFlavors.create_and_get_flavor:
          ram: 500
          vcpus: 1
          disk: 1
      runner:
        constant:
          times: 4
          concurrency: 2
    -
      title: NovaFlavors.create_and_delete_flavor tests
      scenario:
        NovaFlavors.create_and_delete_flavor:
          ram: 500
          vcpus : 1
          disk: 1
      runner:
        constant:
          concurrency: 2
          times: 10
    -
      title: NovaFlavors.create_and_list_flavor_access tests
      scenario:
        NovaFlavors.create_and_list_flavor_access:
          ram: 500
          vcpus: 1
          disk: 1
      runner:
        constant:
          times: 4
          concurrency: 2
    -
      title: NovaFlavors.create_flavor_and_add_tenant_access tests
      scenario:
        NovaFlavors.create_flavor_and_add_tenant_access:
          ram: 500
          vcpus : 1
          disk: 1
      runner:
        constant:
          concurrency: 2
          times: 4
      contexts:
        users:
          tenants: 2
          users_per_tenant: 2
    -
      title: NovaServers.boot_and_update_server tests
      scenario:
        NovaServers.boot_and_update_server:
          flavor:
            name: {{flavor_name}}
          image:
            name: {{image_name}}
      runner:
        constant:
          times: 4
          concurrency: 2
      contexts:
        users:
          tenants: 2
          users_per_tenant: 2
    -
      title: NovaServers.boot_server_from_volume_snapshot tests
      scenario:
        NovaServers.boot_server_from_volume_snapshot:
          flavor:
            name: {{flavor_name}}
          image:
            name: {{image_name}}
          volume_size: 1
          volume_type: {{volume_type}}
      runner:
        constant:
          times: 2
          concurrency: 2
      contexts:
        users:
          tenants: 2
          users_per_tenant: 2
    -
      title: NovaAggregates.create_and_list_aggregates tests
      scenario:
        NovaAggregates.create_and_list_aggregates:
          availability_zone: "nova"
      runner:
        constant:
          times: 4
          concurrency: 2
      contexts:
        users:
          tenants: 2
          users_per_tenant: 2
    -
      title: NovaAggregates.create_and_delete_aggregate tests
      scenario:
        NovaAggregates.create_and_delete_aggregate:
          availability_zone: "nova"
      runner:
        constant:
          times: 4
          concurrency: 2
      contexts:
        users:
          tenants: 2
          users_per_tenant: 2
    -
      title: NovaAggregates.create_and_update_aggregate tests
      scenario:
        NovaAggregates.create_and_update_aggregate:
          availability_zone: "nova"
      runner:
        constant:
          times: 4
          concurrency: 2
      contexts:
        users:
          tenants: 2
          users_per_tenant: 2
    -
      title: NovaAggregates.create_and_get_aggregate_details tests
      scenario:
        NovaAggregates.create_and_get_aggregate_details:
          availability_zone: "nova"
      runner:
        constant:
          times: 4
          concurrency: 2
      contexts:
        users:
          tenants: 2
          users_per_tenant: 2
    -
      title: NovaServers.boot_server_and_attach_interface tests
      scenario:
        NovaServers.boot_server_and_attach_interface:
          flavor:
            name: {{flavor_name}}
          image:
            name: {{image_name}}
          network_create_args: {}
          subnet_create_args: {}
          subnet_cidr_start: "1.1.0.0/30"
          boot_server_args: {}
      runner:
        constant:
          times: 2
          concurrency: 2
      contexts:
        network: {}
        users:
          tenants: 2
          users_per_tenant: 2
        quotas:
          neutron:
            network: -1
            subnet: -1
    -
      title: NovaAggregates.create_aggregate_add_host_and_boot_server tests
      scenario:
        NovaAggregates.create_aggregate_add_host_and_boot_server:
          image:
            name: {{image_name}}
          metadata:
            test_metadata: "true"
          availability_zone: "nova"
          ram: 512
          vcpus: 1
          disk: 1
          boot_server_kwargs: {}
      runner:
        constant:
          times: 4
          concurrency: 2
      contexts:
        users:
          tenants: 2
          users_per_tenant: 2
    -
      title: NovaServers.boot_server_and_list_interfaces tests
      scenario:
        NovaServers.boot_server_and_list_interfaces:
          flavor:
            name: "{{flavor_name}}"
          image:
            name: {{image_name}}
      runner:
        constant:
          times: 3
          concurrency: 3
      contexts:
        users:
          tenants: 2
          users_per_tenant: 2
        network:
          start_cidr: "100.1.0.0/26"
    -
      title: NovaServers.boot_server_attach_volume_and_list_attachments tests
      scenario:
        NovaServers.boot_server_attach_volume_and_list_attachments:
          flavor:
            name: {{flavor_name}}
          image:
            name: {{image_name}}
          volume_size: 1
          volume_num: 2
          boot_server_kwargs: {}
          create_volume_kwargs: {}
      runner:
        constant:
          times: 2
          concurrency: 2
      contexts:
        users:
          tenants: 1
          users_per_tenant: 1
