CVP Shaker docker repo
Change-Id: If9d39409caaf4eb562ca6734a26808642b4ffd3b
Related-task: https://mirantis.jira.com/browse/PROD-24883
diff --git a/scenarios/additional/cross_az/full_l2.yaml b/scenarios/additional/cross_az/full_l2.yaml
new file mode 100644
index 0000000..49e25e3
--- /dev/null
+++ b/scenarios/additional/cross_az/full_l2.yaml
@@ -0,0 +1,28 @@
+title: OpenStack L2 Cross-AZ
+
+description:
+ In this scenario Shaker launches pairs of instances in the same tenant
+ network. Every instance is hosted on a separate compute node, all available
+ compute nodes are utilized. The master and slave instances are in different
+ availability zones. The scenario is used to test throughput between `nova`
+ and `vcenter` zones. The traffic goes within the tenant network (L2 domain).
+
+deployment:
+ template: l2.hot
+ accommodation: [pair, single_room, zones: [nova, vcenter], cross_az]
+
+execution:
+ progression: quadratic
+ tests:
+ -
+ title: Download
+ class: flent
+ method: tcp_download
+ -
+ title: Upload
+ class: flent
+ method: tcp_upload
+ -
+ title: Bi-directional
+ class: flent
+ method: tcp_bidirectional
diff --git a/scenarios/additional/cross_az/full_l3_east_west.yaml b/scenarios/additional/cross_az/full_l3_east_west.yaml
new file mode 100644
index 0000000..227787b
--- /dev/null
+++ b/scenarios/additional/cross_az/full_l3_east_west.yaml
@@ -0,0 +1,29 @@
+title: OpenStack L3 East-West Cross-AZ
+
+description:
+ In this scenario Shaker launches pairs of instances, each instance on its own
+ compute node. All available compute nodes are utilized. Instances are
+ connected to one of 2 tenant networks, which plugged into single router.
+ The traffic goes from one network to the other (L3 east-west).
+ The master and slave instances are in different availability zones.
+ The scenario is used to test throughput between `nova` and `vcenter` zones.
+
+deployment:
+ template: l3_east_west.hot
+ accommodation: [pair, single_room, zones: [nova, vcenter], cross_az]
+
+execution:
+ progression: quadratic
+ tests:
+ -
+ title: Download
+ class: flent
+ method: tcp_download
+ -
+ title: Upload
+ class: flent
+ method: tcp_upload
+ -
+ title: Bi-directional
+ class: flent
+ method: tcp_bidirectional
diff --git a/scenarios/additional/cross_az/full_l3_north_south.yaml b/scenarios/additional/cross_az/full_l3_north_south.yaml
new file mode 100644
index 0000000..fdcb11f
--- /dev/null
+++ b/scenarios/additional/cross_az/full_l3_north_south.yaml
@@ -0,0 +1,30 @@
+title: OpenStack L3 North-South Cross-AZ
+
+description:
+ In this scenario Shaker launches pairs of instances on different compute
+ nodes. All available compute nodes are utilized. Instances are in different
+ networks connected to different routers, master accesses slave by
+ floating ip. The traffic goes from one network via external network to the
+ other network. The master and slave instances are in different availability
+ zones. The scenario is used to test throughput between `nova` and `vcenter`
+ zones.
+
+deployment:
+ template: l3_north_south.hot
+ accommodation: [pair, single_room, zones: [nova, vcenter], cross_az]
+
+execution:
+ progression: quadratic
+ tests:
+ -
+ title: Download
+ class: flent
+ method: tcp_download
+ -
+ title: Upload
+ class: flent
+ method: tcp_upload
+ -
+ title: Bi-directional
+ class: flent
+ method: tcp_bidirectional
diff --git a/scenarios/additional/cross_az/l2.hot b/scenarios/additional/cross_az/l2.hot
new file mode 100644
index 0000000..349f68a
--- /dev/null
+++ b/scenarios/additional/cross_az/l2.hot
@@ -0,0 +1,102 @@
+heat_template_version: 2013-05-23
+
+description:
+ This Heat template creates a new Neutron network, a router to the external
+ network and plugs instances into this new network. All instances are located
+ in the same L2 domain.
+
+parameters:
+ image:
+ type: string
+ description: Name of image to use for servers
+ flavor:
+ type: string
+ description: Flavor to use for servers
+ external_net:
+ type: string
+ description: ID or name of external network
+ server_endpoint:
+ type: string
+ description: Server endpoint address
+ dns_nameservers:
+ type: comma_delimited_list
+ description: DNS nameservers for the subnet
+
+resources:
+ private_net:
+ type: OS::Neutron::Net
+ properties:
+ name: {{ unique }}_net
+
+ private_subnet:
+ type: OS::Neutron::Subnet
+ properties:
+ network_id: { get_resource: private_net }
+ cidr: 10.0.0.0/16
+ dns_nameservers: { get_param: dns_nameservers }
+
+ router:
+ type: OS::Neutron::Router
+ properties:
+ external_gateway_info:
+ network: { get_param: external_net }
+
+ router_interface:
+ type: OS::Neutron::RouterInterface
+ properties:
+ router_id: { get_resource: router }
+ subnet_id: { get_resource: private_subnet }
+
+ server_security_group:
+ type: OS::Neutron::SecurityGroup
+ properties:
+ rules: [
+ {remote_ip_prefix: 0.0.0.0/0,
+ protocol: tcp,
+ port_range_min: 1,
+ port_range_max: 65535},
+ {remote_ip_prefix: 0.0.0.0/0,
+ protocol: udp,
+ port_range_min: 1,
+ port_range_max: 65535},
+ {remote_ip_prefix: 0.0.0.0/0,
+ protocol: icmp}]
+
+{% for agent in agents.values() %}
+
+ {{ agent.id }}:
+ type: OS::Nova::Server
+ properties:
+ name: {{ agent.id }}
+ image: {% if agent.zone == 'vcenter' %} shaker-image-vcenter {% else %} shaker-image-nova {% endif %}
+ flavor: { get_param: flavor }
+ availability_zone: "{{ agent.availability_zone }}"
+ networks:
+ - port: { get_resource: {{ agent.id }}_port }
+ user_data_format: RAW
+ user_data:
+ str_replace:
+ template: |
+ #!/bin/sh
+ screen -dmS shaker-agent-screen shaker-agent --server-endpoint=$SERVER_ENDPOINT --agent-id=$AGENT_ID
+ params:
+ "$SERVER_ENDPOINT": { get_param: server_endpoint }
+ "$AGENT_ID": {{ agent.id }}
+
+ {{ agent.id }}_port:
+ type: OS::Neutron::Port
+ properties:
+ network_id: { get_resource: private_net }
+ fixed_ips:
+ - subnet_id: { get_resource: private_subnet }
+ security_groups: [{ get_resource: server_security_group }]
+
+{% endfor %}
+
+outputs:
+{% for agent in agents.values() %}
+ {{ agent.id }}_instance_name:
+ value: { get_attr: [ {{ agent.id }}, instance_name ] }
+ {{ agent.id }}_ip:
+ value: { get_attr: [ {{ agent.id }}, networks, { get_attr: [private_net, name] }, 0 ] }
+{% endfor %}
diff --git a/scenarios/additional/cross_az/l3_east_west.hot b/scenarios/additional/cross_az/l3_east_west.hot
new file mode 100644
index 0000000..2bcfede
--- /dev/null
+++ b/scenarios/additional/cross_az/l3_east_west.hot
@@ -0,0 +1,134 @@
+heat_template_version: 2013-05-23
+
+description:
+ This Heat template creates a pair of networks plugged into the same router.
+ Master instances and slave instances are connected into different networks.
+
+parameters:
+ image:
+ type: string
+ description: Name of image to use for servers
+ flavor:
+ type: string
+ description: Flavor to use for servers
+ external_net:
+ type: string
+ description: ID or name of external network for which floating IP addresses will be allocated
+ server_endpoint:
+ type: string
+ description: Server endpoint address
+ dns_nameservers:
+ type: comma_delimited_list
+ description: DNS nameservers for the subnets
+
+resources:
+ east_private_net:
+ type: OS::Neutron::Net
+ properties:
+ name: {{ unique }}_net_east
+
+ east_private_subnet:
+ type: OS::Neutron::Subnet
+ properties:
+ network_id: { get_resource: east_private_net }
+ cidr: 10.1.0.0/16
+ dns_nameservers: { get_param: dns_nameservers }
+
+ router:
+ type: OS::Neutron::Router
+ properties:
+ external_gateway_info:
+ network: { get_param: external_net }
+
+ router_interface:
+ type: OS::Neutron::RouterInterface
+ properties:
+ router_id: { get_resource: router }
+ subnet_id: { get_resource: east_private_subnet }
+
+ west_private_net:
+ type: OS::Neutron::Net
+ properties:
+ name: {{ unique }}_net_west
+
+ west_private_subnet:
+ type: OS::Neutron::Subnet
+ properties:
+ network_id: { get_resource: west_private_net }
+ cidr: 10.2.0.0/16
+ dns_nameservers: { get_param: dns_nameservers }
+
+ router_interface_2:
+ type: OS::Neutron::RouterInterface
+ properties:
+ router_id: { get_resource: router }
+ subnet_id: { get_resource: west_private_subnet }
+
+ server_security_group:
+ type: OS::Neutron::SecurityGroup
+ properties:
+ rules: [
+ {remote_ip_prefix: 0.0.0.0/0,
+ protocol: tcp,
+ port_range_min: 1,
+ port_range_max: 65535},
+ {remote_ip_prefix: 0.0.0.0/0,
+ protocol: udp,
+ port_range_min: 1,
+ port_range_max: 65535},
+ {remote_ip_prefix: 0.0.0.0/0,
+ protocol: icmp}]
+
+{% for agent in agents.values() %}
+
+ {{ agent.id }}:
+ type: OS::Nova::Server
+ properties:
+ name: {{ agent.id }}
+ image: {% if agent.zone == 'vcenter' %} shaker-image-vcenter {% else %} shaker-image-nova {% endif %}
+ flavor: { get_param: flavor }
+ availability_zone: "{{ agent.availability_zone }}"
+ networks:
+ - port: { get_resource: {{ agent.id }}_port }
+ user_data_format: RAW
+ user_data:
+ str_replace:
+ template: |
+ #!/bin/sh
+ screen -dmS shaker-agent-screen shaker-agent --server-endpoint=$SERVER_ENDPOINT --agent-id=$AGENT_ID
+ params:
+ "$SERVER_ENDPOINT": { get_param: server_endpoint }
+ "$AGENT_ID": {{ agent.id }}
+
+{% if agent.mode == 'master' %}
+ {{ agent.id }}_port:
+ type: OS::Neutron::Port
+ properties:
+ network_id: { get_resource: east_private_net }
+ fixed_ips:
+ - subnet_id: { get_resource: east_private_subnet }
+ security_groups: [{ get_resource: server_security_group }]
+{% else %}
+ {{ agent.id }}_port:
+ type: OS::Neutron::Port
+ properties:
+ network_id: { get_resource: west_private_net }
+ fixed_ips:
+ - subnet_id: { get_resource: west_private_subnet }
+ security_groups: [{ get_resource: server_security_group }]
+{% endif %}
+
+{% endfor %}
+
+outputs:
+{% for agent in agents.values() %}
+ {{ agent.id }}_instance_name:
+ value: { get_attr: [ {{ agent.id }}, instance_name ] }
+{% if agent.mode == 'master' %}
+ {{ agent.id }}_ip:
+ value: { get_attr: [ {{ agent.id }}, networks, { get_attr: [east_private_net, name] }, 0 ] }
+{% else %}
+ {{ agent.id }}_ip:
+ value: { get_attr: [ {{ agent.id }}, networks, { get_attr: [west_private_net, name] }, 0 ] }
+{% endif %}
+{% endfor %}
diff --git a/scenarios/additional/cross_az/l3_north_south.hot b/scenarios/additional/cross_az/l3_north_south.hot
new file mode 100644
index 0000000..76ffa6c
--- /dev/null
+++ b/scenarios/additional/cross_az/l3_north_south.hot
@@ -0,0 +1,148 @@
+heat_template_version: 2013-05-23
+
+description: >
+ This Heat template creates a new Neutron network plus a north_router to the
+ external network. The template also assigns floating IP addresses to each
+ instance so they are routable from the external network.
+
+parameters:
+ image:
+ type: string
+ description: Name of image to use for servers
+ flavor:
+ type: string
+ description: Flavor to use for servers
+ external_net:
+ type: string
+ description: ID or name of external network for which floating IP addresses will be allocated
+ server_endpoint:
+ type: string
+ description: Server endpoint address
+ dns_nameservers:
+ type: comma_delimited_list
+ description: DNS nameservers for the subnets
+
+resources:
+ north_private_net:
+ type: OS::Neutron::Net
+ properties:
+ name: {{ unique }}_net_north
+
+ north_private_subnet:
+ type: OS::Neutron::Subnet
+ properties:
+ network_id: { get_resource: north_private_net }
+ cidr: 10.1.0.0/16
+ dns_nameservers: { get_param: dns_nameservers }
+
+ north_router:
+ type: OS::Neutron::Router
+ properties:
+ external_gateway_info:
+ network: { get_param: external_net }
+
+ router_interface:
+ type: OS::Neutron::RouterInterface
+ properties:
+ router_id: { get_resource: north_router }
+ subnet_id: { get_resource: north_private_subnet }
+
+ south_private_net:
+ type: OS::Neutron::Net
+ properties:
+ name: {{ unique }}_net_south
+
+ south_private_subnet:
+ type: OS::Neutron::Subnet
+ properties:
+ network_id: { get_resource: south_private_net }
+ cidr: 10.2.0.0/16
+ dns_nameservers: { get_param: dns_nameservers }
+
+ south_router:
+ type: OS::Neutron::Router
+ properties:
+ external_gateway_info:
+ network: { get_param: external_net }
+
+ router_interface_2:
+ type: OS::Neutron::RouterInterface
+ properties:
+ router_id: { get_resource: south_router }
+ subnet_id: { get_resource: south_private_subnet }
+
+ server_security_group:
+ type: OS::Neutron::SecurityGroup
+ properties:
+ rules: [
+ {remote_ip_prefix: 0.0.0.0/0,
+ protocol: tcp,
+ port_range_min: 1,
+ port_range_max: 65535},
+ {remote_ip_prefix: 0.0.0.0/0,
+ protocol: udp,
+ port_range_min: 1,
+ port_range_max: 65535},
+ {remote_ip_prefix: 0.0.0.0/0,
+ protocol: icmp}]
+
+{% for agent in agents.values() %}
+
+ {{ agent.id }}:
+ type: OS::Nova::Server
+ properties:
+ name: {{ agent.id }}
+ image: {% if agent.zone == 'vcenter' %} shaker-image-vcenter {% else %} shaker-image-nova {% endif %}
+ flavor: { get_param: flavor }
+ availability_zone: "{{ agent.availability_zone }}"
+ networks:
+ - port: { get_resource: {{ agent.id }}_port }
+ user_data_format: RAW
+ user_data:
+ str_replace:
+ template: |
+ #!/bin/sh
+ screen -dmS shaker-agent-screen shaker-agent --server-endpoint=$SERVER_ENDPOINT --agent-id=$AGENT_ID
+ params:
+ "$SERVER_ENDPOINT": { get_param: server_endpoint }
+ "$AGENT_ID": {{ agent.id }}
+
+{% if agent.mode == 'master' %}
+ {{ agent.id }}_port:
+ type: OS::Neutron::Port
+ properties:
+ network_id: { get_resource: north_private_net }
+ fixed_ips:
+ - subnet_id: { get_resource: north_private_subnet }
+ security_groups: [{ get_resource: server_security_group }]
+{% else %}
+ {{ agent.id }}_port:
+ type: OS::Neutron::Port
+ properties:
+ network_id: { get_resource: south_private_net }
+ fixed_ips:
+ - subnet_id: { get_resource: south_private_subnet }
+ security_groups: [{ get_resource: server_security_group }]
+
+ {{ agent.id }}_floating_ip:
+ type: OS::Neutron::FloatingIP
+ depends_on: router_interface_2
+ properties:
+ floating_network: { get_param: external_net }
+ port_id: { get_resource: {{ agent.id }}_port }
+{% endif %}
+
+{% endfor %}
+
+outputs:
+{% for agent in agents.values() %}
+ {{ agent.id }}_instance_name:
+ value: { get_attr: [ {{ agent.id }}, instance_name ] }
+{% if agent.mode == 'master' %}
+ {{ agent.id }}_ip:
+ value: { get_attr: [ {{ agent.id }}, networks, { get_attr: [north_private_net, name] }, 0 ] }
+{% else %}
+ {{ agent.id }}_ip:
+ value: { get_attr: [ {{ agent.id }}_floating_ip, floating_ip_address ] }
+{% endif %}
+{% endfor %}
diff --git a/scenarios/additional/cross_az/perf_l2.yaml b/scenarios/additional/cross_az/perf_l2.yaml
new file mode 100644
index 0000000..6c53394
--- /dev/null
+++ b/scenarios/additional/cross_az/perf_l2.yaml
@@ -0,0 +1,35 @@
+title: OpenStack L2 Cross-AZ Performance
+
+description:
+ In this scenario Shaker launches 1 pair of instances in the same tenant
+ network. Each instance is hosted on a separate compute node.
+ The master and slave instances are in different availability zones.
+ The scenario is used to test throughput between `nova` and `vcenter` zones.
+
+deployment:
+ template: l2.hot
+ accommodation: [pair, single_room, zones: [nova, vcenter], cross_az, compute_nodes: 2]
+
+execution:
+ tests:
+ -
+ title: Ping
+ class: flent
+ method: ping
+ time: 10
+ sla:
+ - "[type == 'agent'] >> (stats.ping_icmp.avg < 2.0)"
+ -
+ title: TCP
+ class: iperf3
+ sla:
+ - "[type == 'agent'] >> (stats.bandwidth.avg > 5000)"
+ - "[type == 'agent'] >> (stats.retransmits.max < 10)"
+ -
+ title: UDP
+ class: iperf3
+ udp: on
+ bandwidth: 0
+ datagram_size: 32
+ sla:
+ - "[type == 'agent'] >> (stats.packets.avg > 100000)"
diff --git a/scenarios/additional/cross_az/perf_l3_east_west.yaml b/scenarios/additional/cross_az/perf_l3_east_west.yaml
new file mode 100644
index 0000000..606b172
--- /dev/null
+++ b/scenarios/additional/cross_az/perf_l3_east_west.yaml
@@ -0,0 +1,37 @@
+title: OpenStack L3 East-West Cross-AZ Performance
+
+description:
+ In this scenario Shaker launches 1 pair of instances, each instance on its own
+ compute node. Instances are connected to one of 2 tenant networks, which
+ plugged into single router. The traffic goes from one network to the other
+ (L3 east-west).
+ The master and slave instances are in different availability zones.
+ The scenario is used to test throughput between `nova` and `vcenter` zones.
+
+deployment:
+ template: l3_east_west.hot
+ accommodation: [pair, single_room, zones: [nova, vcenter], cross_az, compute_nodes: 2]
+
+execution:
+ tests:
+ -
+ title: Ping
+ class: flent
+ method: ping
+ time: 10
+ sla:
+ - "[type == 'agent'] >> (stats.ping_icmp.avg < 2.0)"
+ -
+ title: TCP
+ class: iperf3
+ sla:
+ - "[type == 'agent'] >> (stats.bandwidth.avg > 5000)"
+ - "[type == 'agent'] >> (stats.retransmits.max < 10)"
+ -
+ title: UDP
+ class: iperf3
+ udp: on
+ bandwidth: 0
+ datagram_size: 32
+ sla:
+ - "[type == 'agent'] >> (stats.packets.avg > 100000)"
diff --git a/scenarios/additional/cross_az/perf_l3_north_south.yaml b/scenarios/additional/cross_az/perf_l3_north_south.yaml
new file mode 100644
index 0000000..5f9a1fd
--- /dev/null
+++ b/scenarios/additional/cross_az/perf_l3_north_south.yaml
@@ -0,0 +1,37 @@
+title: OpenStack L3 North-South Cross-AZ Performance
+
+description:
+ In this scenario Shaker launches 1 pair of instances on different compute
+ nodes. Instances are in different networks connected to different routers,
+ master accesses slave by floating ip. The traffic goes from one network
+ via external network to the other network.
+ The master and slave instances are in different availability zones.
+ The scenario is used to test throughput between `nova` and `vcenter` zones.
+
+deployment:
+ template: l3_north_south.hot
+ accommodation: [pair, single_room, zones: [nova, vcenter], cross_az, compute_nodes: 2]
+
+execution:
+ tests:
+ -
+ title: Ping
+ class: flent
+ method: ping
+ time: 10
+ sla:
+ - "[type == 'agent'] >> (stats.ping_icmp.avg < 2.0)"
+ -
+ title: TCP
+ class: iperf3
+ sla:
+ - "[type == 'agent'] >> (stats.bandwidth.avg > 5000)"
+ - "[type == 'agent'] >> (stats.retransmits.max < 10)"
+ -
+ title: UDP
+ class: iperf3
+ udp: on
+ bandwidth: 0
+ datagram_size: 32
+ sla:
+ - "[type == 'agent'] >> (stats.packets.avg > 100000)"
diff --git a/scenarios/additional/cross_az/udp_l2.yaml b/scenarios/additional/cross_az/udp_l2.yaml
new file mode 100644
index 0000000..058db75
--- /dev/null
+++ b/scenarios/additional/cross_az/udp_l2.yaml
@@ -0,0 +1,22 @@
+title: OpenStack L2 Cross-AZ UDP
+
+description:
+ In this scenario Shaker launches pairs of instances in the same tenant
+ network. Every instance is hosted on a separate compute node.
+ The load is generated by UDP traffic.
+ The master and slave instances are in different availability zones.
+ The scenario is used to test throughput between `nova` and `vcenter` zones.
+
+deployment:
+ template: l2.hot
+ accommodation: [pair, single_room, zones: [nova, vcenter], cross_az]
+
+execution:
+ progression: quadratic
+ tests:
+ -
+ title: UDP
+ class: iperf3
+ udp: on
+ bandwidth: 1000M
+ datagram_size: 32
diff --git a/scenarios/additional/cross_az/udp_l2_mss8950.yaml b/scenarios/additional/cross_az/udp_l2_mss8950.yaml
new file mode 100644
index 0000000..9866e94
--- /dev/null
+++ b/scenarios/additional/cross_az/udp_l2_mss8950.yaml
@@ -0,0 +1,23 @@
+title: OpenStack L2 Cross-AZ UDP Jumbo
+
+description:
+ In this scenario Shaker launches pairs of instances in the same tenant
+ network. Every instance is hosted on a separate compute node.
+ The load is generated by UDP traffic and jumbo packets.
+ The master and slave instances are in different availability zones.
+ The scenario is used to test throughput between `nova` and `vcenter` zones.
+
+deployment:
+ template: l2.hot
+ accommodation: [pair, single_room, zones: [nova, vcenter], cross_az]
+
+execution:
+ progression: quadratic
+ tests:
+ -
+ title: UDP
+ class: iperf
+ udp: 1
+ threads: 2
+ bandwidth: 1000M
+ buffer_size: 8950
diff --git a/scenarios/additional/cross_az/udp_l3_east_west.yaml b/scenarios/additional/cross_az/udp_l3_east_west.yaml
new file mode 100644
index 0000000..647abbc
--- /dev/null
+++ b/scenarios/additional/cross_az/udp_l3_east_west.yaml
@@ -0,0 +1,23 @@
+title: OpenStack L3 East-West Cross-AZ UDP
+
+description:
+ In this scenario Shaker launches pairs of instances, each instance on its own
+ compute node. Instances are connected to one of 2 tenant networks, which
+ plugged into single router. The traffic goes from one network to the other
+ (L3 east-west). The load is generated by UDP traffic.
+ The master and slave instances are in different availability zones.
+ The scenario is used to test throughput between `nova` and `vcenter` zones.
+
+deployment:
+ template: l3_east_west.hot
+ accommodation: [pair, single_room, zones: [nova, vcenter], cross_az]
+
+execution:
+ progression: quadratic
+ tests:
+ -
+ title: UDP
+ class: iperf3
+ udp: on
+ bandwidth: 1000M
+ datagram_size: 32