Separate pods for Ubuntu Rally due to dependency mess
Related-PROD: PROD-36128
Change-Id: I5020af4ba036cab9a59403610a4a2ce40678abc9
diff --git a/k8s/rally-files/gen_kubespec.sh b/k8s/rally-files/gen_kubespec.sh
new file mode 100644
index 0000000..49b8082
--- /dev/null
+++ b/k8s/rally-files/gen_kubespec.sh
@@ -0,0 +1,48 @@
+#!/bin/bash
+# files
+ca_crt=$(pwd)/ca.crt
+client_crt=$(pwd)/client.crt
+client_key=$(pwd)/client.key
+
+function show_help() {
+ printf "\ngen_kubespec.sh <kubeconfig.yaml>\n"
+ exit 1
+}
+
+# Check for a config file
+if [[ -z ${1+x} ]]; then
+ show_help
+ printf "\nERROR: No kubeconfig.yaml specified\n"
+ exit 1
+fi
+
+# Check if file exists
+if [[ ! -f $1 ]]; then
+ show_help
+ printf "\nERROR: Supplied kubeconfig file not exists at '$1'\n"
+ exit 1
+fi
+
+# extract data as variables
+declare $(sed -e 's/:[^:\/\/,:443,:6443]/=/g;s/ *=/=/g;s/-/_/g' $1 | grep 'certificate\|key\|server' | tr -d ' ')
+echo "# Declared variable: server=$server"
+
+### Uncomment if separate files needed
+printf "# Creating 'ca.crt', 'client.crt' and 'client.key'\n"
+echo "# '${ca_crt}'"
+echo $certificate_authority_data | base64 -d >${ca_crt}
+echo "# '${client_crt}'"
+echo $client_certificate_data | base64 -d >${client_crt}
+echo "# '${client_key}'"
+echo $client_key_data | base64 -d >${client_key}
+
+printf "Generating 'kubespec.yaml'\n"
+cat << EOF >kubespec_generated.yaml
+---
+existing@kubernetes:
+ server: $server
+ certificate-authority: ${ca_crt}
+ client-certificate: ${client_crt}
+ client-key: ${client_key}
+ tls_insecure: True
+EOF
diff --git a/k8s/rally-files/init-rally.sh b/k8s/rally-files/init-rally.sh
new file mode 100644
index 0000000..797cf0b
--- /dev/null
+++ b/k8s/rally-files/init-rally.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+cd /artifacts
+# Installing prerequisites
+#apt -y update
+#apt -y install python3-pip vim git iperf3 mtr htop iputils-ping traceroute tcpdump wget iproute2 curl
+#pip3 install rally-openstack python-neutronclient pyghmi
+
+# Prepare Rally
+rally db create
+
+# Create openstack env
+rally env create --from-sysenv --name openstack
+rally env check
+
+# Prepare rally for kubernetes
+bash res-files/k8s/gen_kubespec.sh ./mos-kubeconf.yaml
+git clone https://github.com/Mirantis/rally-plugins.git
+cd rally-plugins/
+pip3 install .
+rally plugin list | grep kubernetes
+
+# Configure kubernetes
+rally env create --name kubernetes --spec /artifacts/kubespec_generated.yaml
+rally env check
+cd /artifacts
diff --git a/k8s/rally-files/k8s-mos-scn-i1.yaml b/k8s/rally-files/k8s-mos-scn-i1.yaml
new file mode 100644
index 0000000..c14c94a
--- /dev/null
+++ b/k8s/rally-files/k8s-mos-scn-i1.yaml
@@ -0,0 +1,94 @@
+{% set image_box = "busybox" %}
+{% set image_pause = "mirantis.azurecr.io/general/external/pause:3.1" %}
+{% set image_cirros = "virtlet/download.cirros-cloud.net/0.3.5/cirros-0.3.5-x86_64-disk.img" %}
+{% set concurrency = 1 %}
+{% set times = 1 %}
+{% set replicas = 1 %}
+{% set replicas_scaled = 2 %}
+{% set namespaces = 1 %}
+{% set serviceacc_delay = 60 %}
+
+
+---
+version: 2
+title: MOS Kubenetes performance checks
+subtasks:
+- title: Run a single workload with listing existing kubernetes namespaces
+ scenario:
+ Kubernetes.list_namespaces: {}
+ runner:
+ constant:
+ concurrency: {{concurrency}}
+ times: {{times}}
+- title: Run a single workload with create/read/delete namespace
+ scenario:
+ Kubernetes.create_and_delete_namespace: {}
+ runner:
+ constant:
+ concurrency: {{concurrency}}
+ times: {{times}}
+- title: Run a single workload with create/read/delete job
+ scenario:
+ Kubernetes.create_and_delete_job:
+ image: {{image_box}}
+ command:
+ - echo
+ - "SUCCESS"
+ runner:
+ constant:
+ concurrency: {{concurrency}}
+ times: {{times}}
+ contexts:
+ namespaces:
+ count: {{namespaces}}
+ with_serviceaccount: true
+ serviceaccount_delay: {{serviceacc_delay}}
+- title: Run a single workload with create/read/delete pod with configMap volume
+ scenario:
+ Kubernetes.create_and_delete_pod_with_configmap_volume:
+ image: {{image_box}}
+ mount_path: /var/log/check.txt
+ subpath: check.txt
+ configmap_data:
+ check.txt: |
+ test
+ runner:
+ constant:
+ concurrency: {{concurrency}}
+ times: {{times}}
+ contexts:
+ namespaces:
+ count: {{namespaces}}
+ with_serviceaccount: true
+ serviceaccount_delay: {{serviceacc_delay}}
+- title: Run a single workload with create/delete NodePort service
+ scenario:
+ Kubernetes.create_and_delete_pod_with_node_port_service:
+ image: {{image_box}}
+ port: 80
+ protocol: TCP
+ runner:
+ constant:
+ concurrency: {{concurrency}}
+ times: {{times}}
+ contexts:
+ namespaces:
+ count: {{namespaces}}
+ with_serviceaccount: true
+ serviceaccount_delay: {{serviceacc_delay}}
+ kubernetes.cfg:
+ prepoll_delay: 1
+- title: Run a single workload with create/read/delete pod
+ scenario:
+ Kubernetes.create_and_delete_pod:
+ image: {{image_box}}
+ runner:
+ constant:
+ concurrency: {{concurrency}}
+ times: {{times}}
+ contexts:
+ namespaces:
+ count: {{namespaces}}
+ with_serviceaccount: true
+ serviceaccount_delay: {{serviceacc_delay}}
+
diff --git a/k8s/rally-files/k8s-mos-scn-i100c5.yaml b/k8s/rally-files/k8s-mos-scn-i100c5.yaml
new file mode 100644
index 0000000..da897ef
--- /dev/null
+++ b/k8s/rally-files/k8s-mos-scn-i100c5.yaml
@@ -0,0 +1,94 @@
+{% set image_box = "busybox" %}
+{% set image_pause = "mirantis.azurecr.io/general/external/pause:3.1" %}
+{% set image_cirros = "virtlet/download.cirros-cloud.net/0.3.5/cirros-0.3.5-x86_64-disk.img" %}
+{% set concurrency = 5 %}
+{% set times = 100 %}
+{% set replicas = 1 %}
+{% set replicas_scaled = 2 %}
+{% set namespaces = 2 %}
+{% set serviceacc_delay = 60 %}
+
+
+---
+version: 2
+title: MOS Kubenetes performance checks
+subtasks:
+- title: Run a single workload with listing existing kubernetes namespaces
+ scenario:
+ Kubernetes.list_namespaces: {}
+ runner:
+ constant:
+ concurrency: {{concurrency}}
+ times: {{times}}
+- title: Run a single workload with create/read/delete namespace
+ scenario:
+ Kubernetes.create_and_delete_namespace: {}
+ runner:
+ constant:
+ concurrency: {{concurrency}}
+ times: {{times}}
+- title: Run a single workload with create/read/delete job
+ scenario:
+ Kubernetes.create_and_delete_job:
+ image: {{image_box}}
+ command:
+ - echo
+ - "SUCCESS"
+ runner:
+ constant:
+ concurrency: {{concurrency}}
+ times: {{times}}
+ contexts:
+ namespaces:
+ count: {{namespaces}}
+ with_serviceaccount: true
+ serviceaccount_delay: {{serviceacc_delay}}
+- title: Run a single workload with create/read/delete pod with configMap volume
+ scenario:
+ Kubernetes.create_and_delete_pod_with_configmap_volume:
+ image: {{image_box}}
+ mount_path: /var/log/check.txt
+ subpath: check.txt
+ configmap_data:
+ check.txt: |
+ test
+ runner:
+ constant:
+ concurrency: {{concurrency}}
+ times: {{times}}
+ contexts:
+ namespaces:
+ count: {{namespaces}}
+ with_serviceaccount: true
+ serviceaccount_delay: {{serviceacc_delay}}
+- title: Run a single workload with create/delete NodePort service
+ scenario:
+ Kubernetes.create_and_delete_pod_with_node_port_service:
+ image: {{image_box}}
+ port: 80
+ protocol: TCP
+ runner:
+ constant:
+ concurrency: {{concurrency}}
+ times: {{times}}
+ contexts:
+ namespaces:
+ count: {{namespaces}}
+ with_serviceaccount: true
+ serviceaccount_delay: {{serviceacc_delay}}
+ kubernetes.cfg:
+ prepoll_delay: 1
+- title: Run a single workload with create/read/delete pod
+ scenario:
+ Kubernetes.create_and_delete_pod:
+ image: {{image_box}}
+ runner:
+ constant:
+ concurrency: {{concurrency}}
+ times: {{times}}
+ contexts:
+ namespaces:
+ count: {{namespaces}}
+ with_serviceaccount: true
+ serviceaccount_delay: {{serviceacc_delay}}
+
diff --git a/k8s/rally-files/openstack-mos-scn-i1.json b/k8s/rally-files/openstack-mos-scn-i1.json
new file mode 100644
index 0000000..cac67f4
--- /dev/null
+++ b/k8s/rally-files/openstack-mos-scn-i1.json
@@ -0,0 +1,454 @@
+{% set flavor_name = flavor_name or "cvp.tiny" %}
+{% set image_name = image_name or "cvp.cirros.35" %}
+{% set availability_zone = "nova" %}
+{% set concurrency = 1 %}
+{% set volume_size = 1 %}
+{% set times = 1 %}
+{% set users = 1 %}
+{% set tenants = 1 %}
+{% set rbd_image = "http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img" %}
+{% set heat_template = "/artifacts/res-files/rally/default.yaml.template" %}
+{% set fixed_net = "id" %}
+
+{
+ "KeystoneBasic.authenticate_user_and_validate_token": [
+ {
+ "args": {},
+ "runner": {
+ "type": "constant",
+ "times": {{times}},
+ "concurrency": {{concurrency}}
+ },
+ "sla": { "failure_rate": { "max": 0 } }
+ }
+ ],
+ "KeystoneBasic.create_tenant_with_users": [
+ {
+ "args": { "users_per_tenant": 10 },
+ "runner": {
+ "type": "constant",
+ "concurrency": {{concurrency}},
+ "times": {{times}}
+ },
+ "sla": { "failure_rate": { "max": 0 } }
+ }
+ ],
+ "Authenticate.validate_cinder": [
+ {
+ "args": { "repetitions": 2 },
+ "runner": {
+ "type": "constant",
+ "times": {{times}},
+ "concurrency": {{concurrency}}
+ },
+ "context": {
+ "users": {
+ "users_per_tenant": {{users}},
+ "tenants": {{tenants}}
+ },
+ "api_versions@openstack": { "cinder": {"service_type": "volumev3"} }
+ },
+ "sla": { "failure_rate": { "max": 0 } }
+ }
+ ],
+ "Authenticate.validate_glance": [
+ {
+ "args": { "repetitions": 2 },
+ "runner": {
+ "type": "constant",
+ "times": {{times}},
+ "concurrency": {{concurrency}}
+ },
+ "context": {
+ "users": {
+ "users_per_tenant": {{users}},
+ "tenants": {{tenants}}
+ }
+ },
+ "sla": { "failure_rate": { "max": 0 } }
+ }
+ ],
+ "Authenticate.validate_heat": [
+ {
+ "args": { "repetitions": 2 },
+ "runner": {
+ "type": "constant",
+ "times": {{times}},
+ "concurrency": {{concurrency}}
+ },
+ "context": {
+ "users": {
+ "users_per_tenant": {{users}},
+ "tenants": {{tenants}}
+ }
+ },
+ "sla": { "failure_rate": { "max": 0 } }
+ }
+ ],
+ "Authenticate.validate_nova": [
+ {
+ "args": { "repetitions": 2 },
+ "runner": {
+ "type": "constant",
+ "times": {{times}},
+ "concurrency": {{concurrency}}
+ },
+ "context": {
+ "users": {
+ "users_per_tenant": {{users}},
+ "tenants": {{tenants}}
+ }
+ },
+ "sla": { "failure_rate": { "max": 0 } }
+ }
+ ],
+ "Authenticate.validate_neutron": [
+ {
+ "args": { "repetitions": 2 },
+ "runner": {
+ "type": "constant",
+ "times": {{times}},
+ "concurrency": {{concurrency}}
+ },
+ "context": {
+ "users": {
+ "users_per_tenant": {{users}},
+ "tenants": {{tenants}}
+ }
+ },
+ "sla": { "failure_rate": { "max": 0 } }
+ }
+ ],
+ "NovaServers.boot_and_migrate_server": [
+ {
+ "args": {
+ "flavor": {
+ "name": "{{flavor_name}}"
+ },
+ "image": {
+ "name": "{{image_name}}"
+ },
+ "nics": [
+ {"net-id": "{{fixed_net}}"}
+ ]
+ },
+ "runner": {
+ "type": "constant",
+ "times": {{times}},
+ "concurrency": {{concurrency}}
+ },
+ "context": {
+ "users": {
+ "users_per_tenant": {{users}},
+ "tenants": {{tenants}}
+ },
+ "quotas": {
+ "nova": {
+ "instances": -1,
+ "cores": -1,
+ "ram": -1,
+ "key_pairs": -1,
+ "security_groups": -1,
+ "security_group_rules": -1
+ }
+ }
+ },
+ "sla": { "failure_rate": { "max": 0 } }
+ }
+ ],
+ "NovaServers.boot_and_delete_server": [
+ {
+ "args": {
+ "flavor": {
+ "name": "{{flavor_name}}"
+ },
+ "image": {
+ "name": "{{image_name}}"
+ },
+ "nics": [
+ {"net-id": "{{fixed_net}}"}
+ ],
+ "detailed": true,
+ "availability_zone": "{{availability_zone}}"
+ },
+ "runner": {
+ "type": "constant",
+ "concurrency": {{concurrency}},
+ "times": {{times}}
+ },
+ "context": {
+ "users": {
+ "tenants": {{users}},
+ "users_per_tenant": {{tenants}}
+ },
+ "quotas": {
+ "nova": {
+ "instances": -1,
+ "cores": -1,
+ "ram": -1,
+ "key_pairs": -1,
+ "security_groups": -1,
+ "security_group_rules": -1
+ }
+ }
+ },
+ "sla": { "failure_rate": { "max": 0 } }
+ }
+ ],
+ "NovaServers.boot_server_from_volume_and_delete": [
+ {
+ "args": {
+ "flavor": {
+ "name": "{{flavor_name}}"
+ },
+ "image": {
+ "name": "{{image_name}}"
+ },
+ "nics": [
+ {"net-id": "{{fixed_net}}"}
+ ],
+ "volume_size": {{volume_size}},
+ "force_delete": false,
+ "availability_zone": "{{availability_zone}}"
+ },
+ "runner": {
+ "type": "constant",
+ "concurrency": {{concurrency}},
+ "times": {{times}}
+ },
+ "context": {
+ "users": {
+ "tenants": {{users}},
+ "users_per_tenant": {{tenants}}
+ },
+ "api_versions@openstack": { "cinder": {"service_type": "volumev3"} },
+ "quotas": {
+ "nova": {
+ "instances": -1,
+ "cores": -1,
+ "ram": -1,
+ "key_pairs": -1,
+ "security_groups": -1,
+ "security_group_rules": -1
+ },
+ "cinder": { "volumes": -1 }
+ }
+ },
+ "sla": { "failure_rate": { "max": 0 } }
+ }
+ ],
+ "NeutronNetworks.create_and_delete_networks": [
+ {
+ "runner": {
+ "type": "constant",
+ "concurrency": {{concurrency}},
+ "times": {{times}}
+ },
+ "context": {
+ "users": {
+ "tenants": {{users}},
+ "users_per_tenant": {{tenants}}
+ },
+ "quotas": {
+ "neutron": { "network": -1 }
+ }
+ },
+ "sla": { "failure_rate": { "max": 0 } }
+ }
+ ],
+ "NeutronNetworks.create_and_delete_ports": [
+ {
+ "args": {
+ "network_create_args": {},
+ "port_create_args": {},
+ "ports_per_network": 10
+ },
+ "runner": {
+ "type": "constant",
+ "concurrency": {{concurrency}},
+ "times": {{times}}
+ },
+ "context": {
+ "users": {
+ "tenants": {{users}},
+ "users_per_tenant": {{tenants}}
+ },
+ "quotas": {
+ "neutron": {
+ "network": -1,
+ "port": -1
+ }
+ }
+ },
+ "sla": { "failure_rate": { "max": 0 } }
+ }
+ ],
+ "NeutronNetworks.create_and_delete_routers": [
+ {
+ "args": {
+ "network_create_args": {},
+ "subnet_create_args": {},
+ "subnet_cidr_start": "1.1.0.0/30",
+ "subnets_per_network": 2,
+ "router_create_args": {}
+ },
+ "runner": {
+ "type": "constant",
+ "concurrency": {{concurrency}},
+ "times": {{times}}
+ },
+ "context": {
+ "users": {
+ "tenants": {{users}},
+ "users_per_tenant": {{tenants}}
+ },
+ "quotas": {
+ "neutron": {
+ "network": -1,
+ "subnet": -1,
+ "router": -1
+ }
+ }
+ },
+ "sla": { "failure_rate": { "max": 0 } }
+ }
+ ],
+ "CinderVolumes.create_and_attach_volume": [
+ {
+ "args": {
+ "size": {{volume_size}},
+ "image": {
+ "name": "{{image_name}}"
+ },
+ "flavor": {
+ "name": "{{flavor_name}}"
+ },
+ "nics": [
+ {"net-id": "{{fixed_net}}"}
+ ],
+ "create_volume_params": {},
+ "availability_zone": "{{availability_zone}}"
+ },
+ "runner": {
+ "type": "constant",
+ "concurrency": {{concurrency}},
+ "times": {{times}}
+ },
+ "context": {
+ "users": {
+ "tenants": {{users}},
+ "users_per_tenant": {{tenants}}
+ },
+ "api_versions@openstack": { "cinder": {"service_type": "volumev3"} },
+ "quotas": {
+ "nova": {
+ "instances": -1,
+ "cores": -1,
+ "ram": -1,
+ "key_pairs": -1,
+ "security_groups": -1,
+ "security_group_rules": -1
+ },
+ "cinder": { "volumes": -1 }
+ }
+ },
+ "sla": { "failure_rate": { "max": 0 } }
+ }
+ ],
+ "CinderVolumes.create_and_delete_snapshot": [
+ {
+ "args": { "force": false },
+ "runner": {
+ "type": "constant",
+ "concurrency": {{concurrency}},
+ "times": {{times}}
+ },
+ "context": {
+ "users": {
+ "tenants": {{users}},
+ "users_per_tenant": {{tenants}}
+ },
+ "volumes": { "size": {{volume_size}} },
+ "quotas": {
+ "cinder": {
+ "snapshots": -1,
+ "volumes": -1
+ }
+ },
+ "api_versions@openstack": { "cinder": {"service_type": "volumev3"} }
+ },
+ "sla": { "failure_rate": { "max": 0 } }
+ }
+ ],
+ "CinderVolumes.create_and_upload_volume_to_image": [
+ {
+ "args": {
+ "size": {{volume_size}},
+ "force": false,
+ "container_format": "bare",
+ "disk_format": "raw",
+ "do_delete": true,
+ "image": {
+ "name": "{{image_name}}"
+ }
+ },
+ "runner": {
+ "type": "constant",
+ "concurrency": {{concurrency}},
+ "times": {{times}}
+ },
+ "context": {
+ "users": {
+ "tenants": {{users}},
+ "users_per_tenant": {{tenants}}
+ },
+ "quotas": {
+ "cinder": {
+ "snapshots": -1,
+ "volumes": -1
+ }
+ },
+ "api_versions@openstack": { "cinder": {"service_type": "volumev3"} }
+ },
+ "sla": { "failure_rate": { "max": 0 } }
+ }
+ ],
+ "GlanceImages.create_and_delete_image": [
+ {
+ "args": {
+ "image_location": "{{rbd_image}}",
+ "container_format": "bare",
+ "disk_format": "qcow2"
+ },
+ "runner": {
+ "type": "constant",
+ "concurrency": {{concurrency}},
+ "times": {{times}}
+ },
+ "context": {
+ "users": {
+ "tenants": {{users}},
+ "users_per_tenant": {{tenants}}
+ }
+ },
+ "sla": { "failure_rate": { "max": 0 } }
+ }
+ ],
+ "HeatStacks.create_and_delete_stack": [
+ {
+ "args": { "template_path": "{{heat_template}}" },
+ "runner": {
+ "type": "constant",
+ "concurrency": {{concurrency}},
+ "times": {{times}}
+ },
+ "context": {
+ "users": {
+ "tenants": {{users}},
+ "users_per_tenant": {{tenants}}
+ }
+ },
+ "sla": { "failure_rate": { "max": 0 } }
+ }
+ ]
+}
diff --git a/k8s/rally-files/openstack-mos-scn-i100.json b/k8s/rally-files/openstack-mos-scn-i100.json
new file mode 100644
index 0000000..58eb219
--- /dev/null
+++ b/k8s/rally-files/openstack-mos-scn-i100.json
@@ -0,0 +1,455 @@
+{% set concurrency = 10 %}
+{% set volume_size = 1 %}
+{% set times = 100 %}
+{% set users = 3 %}
+{% set tenants = 3 %}
+
+{% set flavor_name = flavor_name or "cvp.tiny" %}
+{% set image_name = image_name or "cvp.cirros.35" %}
+{% set availability_zone = "nova" %}
+{% set rbd_image = "http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img" %}
+{% set heat_template = "/artifacts/res-files/rally/default.yaml.template" %}
+{% set fixed_net = "id" %}
+
+{
+ "KeystoneBasic.authenticate_user_and_validate_token": [
+ {
+ "args": {},
+ "runner": {
+ "type": "constant",
+ "times": {{times}},
+ "concurrency": {{concurrency}}
+ },
+ "sla": { "failure_rate": { "max": 0 } }
+ }
+ ],
+ "KeystoneBasic.create_tenant_with_users": [
+ {
+ "args": { "users_per_tenant": 10 },
+ "runner": {
+ "type": "constant",
+ "concurrency": {{concurrency}},
+ "times": {{times}}
+ },
+ "sla": { "failure_rate": { "max": 0 } }
+ }
+ ],
+ "Authenticate.validate_cinder": [
+ {
+ "args": { "repetitions": 2 },
+ "runner": {
+ "type": "constant",
+ "times": {{times}},
+ "concurrency": {{concurrency}}
+ },
+ "context": {
+ "users": {
+ "users_per_tenant": {{users}},
+ "tenants": {{tenants}}
+ },
+ "api_versions@openstack": { "cinder": {"service_type": "volumev3"} }
+ },
+ "sla": { "failure_rate": { "max": 0 } }
+ }
+ ],
+ "Authenticate.validate_glance": [
+ {
+ "args": { "repetitions": 2 },
+ "runner": {
+ "type": "constant",
+ "times": {{times}},
+ "concurrency": {{concurrency}}
+ },
+ "context": {
+ "users": {
+ "users_per_tenant": {{users}},
+ "tenants": {{tenants}}
+ }
+ },
+ "sla": { "failure_rate": { "max": 0 } }
+ }
+ ],
+ "Authenticate.validate_heat": [
+ {
+ "args": { "repetitions": 2 },
+ "runner": {
+ "type": "constant",
+ "times": {{times}},
+ "concurrency": {{concurrency}}
+ },
+ "context": {
+ "users": {
+ "users_per_tenant": {{users}},
+ "tenants": {{tenants}}
+ }
+ },
+ "sla": { "failure_rate": { "max": 0 } }
+ }
+ ],
+ "Authenticate.validate_nova": [
+ {
+ "args": { "repetitions": 2 },
+ "runner": {
+ "type": "constant",
+ "times": {{times}},
+ "concurrency": {{concurrency}}
+ },
+ "context": {
+ "users": {
+ "users_per_tenant": {{users}},
+ "tenants": {{tenants}}
+ }
+ },
+ "sla": { "failure_rate": { "max": 0 } }
+ }
+ ],
+ "Authenticate.validate_neutron": [
+ {
+ "args": { "repetitions": 2 },
+ "runner": {
+ "type": "constant",
+ "times": {{times}},
+ "concurrency": {{concurrency}}
+ },
+ "context": {
+ "users": {
+ "users_per_tenant": {{users}},
+ "tenants": {{tenants}}
+ }
+ },
+ "sla": { "failure_rate": { "max": 0 } }
+ }
+ ],
+ "NovaServers.boot_and_migrate_server": [
+ {
+ "args": {
+ "flavor": {
+ "name": "{{flavor_name}}"
+ },
+ "image": {
+ "name": "{{image_name}}"
+ },
+ "nics": [
+ {"net-id": "{{fixed_net}}"}
+ ]
+ },
+ "runner": {
+ "type": "constant",
+ "times": {{times}},
+ "concurrency": {{concurrency}}
+ },
+ "context": {
+ "users": {
+ "users_per_tenant": {{users}},
+ "tenants": {{tenants}}
+ },
+ "quotas": {
+ "nova": {
+ "instances": -1,
+ "cores": -1,
+ "ram": -1,
+ "key_pairs": -1,
+ "security_groups": -1,
+ "security_group_rules": -1
+ }
+ }
+ },
+ "sla": { "failure_rate": { "max": 0 } }
+ }
+ ],
+ "NovaServers.boot_and_delete_server": [
+ {
+ "args": {
+ "flavor": {
+ "name": "{{flavor_name}}"
+ },
+ "image": {
+ "name": "{{image_name}}"
+ },
+ "nics": [
+ {"net-id": "{{fixed_net}}"}
+ ],
+ "detailed": true,
+ "availability_zone": "{{availability_zone}}"
+ },
+ "runner": {
+ "type": "constant",
+ "concurrency": {{concurrency}},
+ "times": {{times}}
+ },
+ "context": {
+ "users": {
+ "tenants": {{users}},
+ "users_per_tenant": {{tenants}}
+ },
+ "quotas": {
+ "nova": {
+ "instances": -1,
+ "cores": -1,
+ "ram": -1,
+ "key_pairs": -1,
+ "security_groups": -1,
+ "security_group_rules": -1
+ }
+ }
+ },
+ "sla": { "failure_rate": { "max": 0 } }
+ }
+ ],
+ "NovaServers.boot_server_from_volume_and_delete": [
+ {
+ "args": {
+ "flavor": {
+ "name": "{{flavor_name}}"
+ },
+ "image": {
+ "name": "{{image_name}}"
+ },
+ "nics": [
+ {"net-id": "{{fixed_net}}"}
+ ],
+ "volume_size": {{volume_size}},
+ "force_delete": false,
+ "availability_zone": "{{availability_zone}}"
+ },
+ "runner": {
+ "type": "constant",
+ "concurrency": {{concurrency}},
+ "times": {{times}}
+ },
+ "context": {
+ "users": {
+ "tenants": {{users}},
+ "users_per_tenant": {{tenants}}
+ },
+ "api_versions@openstack": { "cinder": {"service_type": "volumev3"} },
+ "quotas": {
+ "nova": {
+ "instances": -1,
+ "cores": -1,
+ "ram": -1,
+ "key_pairs": -1,
+ "security_groups": -1,
+ "security_group_rules": -1
+ },
+ "cinder": { "volumes": -1 }
+ }
+ },
+ "sla": { "failure_rate": { "max": 0 } }
+ }
+ ],
+ "NeutronNetworks.create_and_delete_networks": [
+ {
+ "runner": {
+ "type": "constant",
+ "concurrency": {{concurrency}},
+ "times": {{times}}
+ },
+ "context": {
+ "users": {
+ "tenants": {{users}},
+ "users_per_tenant": {{tenants}}
+ },
+ "quotas": {
+ "neutron": { "network": -1 }
+ }
+ },
+ "sla": { "failure_rate": { "max": 0 } }
+ }
+ ],
+ "NeutronNetworks.create_and_delete_ports": [
+ {
+ "args": {
+ "network_create_args": {},
+ "port_create_args": {},
+ "ports_per_network": 10
+ },
+ "runner": {
+ "type": "constant",
+ "concurrency": {{concurrency}},
+ "times": {{times}}
+ },
+ "context": {
+ "users": {
+ "tenants": {{users}},
+ "users_per_tenant": {{tenants}}
+ },
+ "quotas": {
+ "neutron": {
+ "network": -1,
+ "port": -1
+ }
+ }
+ },
+ "sla": { "failure_rate": { "max": 0 } }
+ }
+ ],
+ "NeutronNetworks.create_and_delete_routers": [
+ {
+ "args": {
+ "network_create_args": {},
+ "subnet_create_args": {},
+ "subnet_cidr_start": "1.1.0.0/30",
+ "subnets_per_network": 2,
+ "router_create_args": {}
+ },
+ "runner": {
+ "type": "constant",
+ "concurrency": {{concurrency}},
+ "times": {{times}}
+ },
+ "context": {
+ "users": {
+ "tenants": {{users}},
+ "users_per_tenant": {{tenants}}
+ },
+ "quotas": {
+ "neutron": {
+ "network": -1,
+ "subnet": -1,
+ "router": -1
+ }
+ }
+ },
+ "sla": { "failure_rate": { "max": 0 } }
+ }
+ ],
+ "CinderVolumes.create_and_attach_volume": [
+ {
+ "args": {
+ "size": {{volume_size}},
+ "image": {
+ "name": "{{image_name}}"
+ },
+ "flavor": {
+ "name": "{{flavor_name}}"
+ },
+ "nics": [
+ {"net-id": "{{fixed_net}}"}
+ ],
+ "create_volume_params": {},
+ "availability_zone": "{{availability_zone}}"
+ },
+ "runner": {
+ "type": "constant",
+ "concurrency": {{concurrency}},
+ "times": {{times}}
+ },
+ "context": {
+ "users": {
+ "tenants": {{users}},
+ "users_per_tenant": {{tenants}}
+ },
+ "api_versions@openstack": { "cinder": {"service_type": "volumev3"} },
+ "quotas": {
+ "nova": {
+ "instances": -1,
+ "cores": -1,
+ "ram": -1,
+ "key_pairs": -1,
+ "security_groups": -1,
+ "security_group_rules": -1
+ },
+ "cinder": { "volumes": -1 }
+ }
+ },
+ "sla": { "failure_rate": { "max": 0 } }
+ }
+ ],
+ "CinderVolumes.create_and_delete_snapshot": [
+ {
+ "args": { "force": false },
+ "runner": {
+ "type": "constant",
+ "concurrency": {{concurrency}},
+ "times": {{times}}
+ },
+ "context": {
+ "users": {
+ "tenants": {{users}},
+ "users_per_tenant": {{tenants}}
+ },
+ "volumes": { "size": {{volume_size}} },
+ "quotas": {
+ "cinder": {
+ "snapshots": -1,
+ "volumes": -1
+ }
+ },
+ "api_versions@openstack": { "cinder": {"service_type": "volumev3"} }
+ },
+ "sla": { "failure_rate": { "max": 0 } }
+ }
+ ],
+ "CinderVolumes.create_and_upload_volume_to_image": [
+ {
+ "args": {
+ "size": {{volume_size}},
+ "force": false,
+ "container_format": "bare",
+ "disk_format": "raw",
+ "do_delete": true,
+ "image": {
+ "name": "{{image_name}}"
+ }
+ },
+ "runner": {
+ "type": "constant",
+ "concurrency": {{concurrency}},
+ "times": {{times}}
+ },
+ "context": {
+ "users": {
+ "tenants": {{users}},
+ "users_per_tenant": {{tenants}}
+ },
+ "quotas": {
+ "cinder": {
+ "snapshots": -1,
+ "volumes": -1
+ }
+ },
+ "api_versions@openstack": { "cinder": {"service_type": "volumev3"} }
+ },
+ "sla": { "failure_rate": { "max": 0 } }
+ }
+ ],
+ "GlanceImages.create_and_delete_image": [
+ {
+ "args": {
+ "image_location": "{{rbd_image}}",
+ "container_format": "bare",
+ "disk_format": "qcow2"
+ },
+ "runner": {
+ "type": "constant",
+ "concurrency": {{concurrency}},
+ "times": {{times}}
+ },
+ "context": {
+ "users": {
+ "tenants": {{users}},
+ "users_per_tenant": {{tenants}}
+ }
+ },
+ "sla": { "failure_rate": { "max": 0 } }
+ }
+ ],
+ "HeatStacks.create_and_delete_stack": [
+ {
+ "args": { "template_path": "{{heat_template}}" },
+ "runner": {
+ "type": "constant",
+ "concurrency": {{concurrency}},
+ "times": {{times}}
+ },
+ "context": {
+ "users": {
+ "tenants": {{users}},
+ "users_per_tenant": {{tenants}}
+ }
+ },
+ "sla": { "failure_rate": { "max": 0 } }
+ }
+ ]
+}