update master/slave terms
This commit replaces all master/slave references with primary/minion in an effort to be more socially aware and inclusive Change-Id: I3d5db71de6506d458707403e8f8c5e0493b78f4f
@ -38,8 +38,8 @@ Scenario execution involves the following steps:
|
|||||||
6. Shaker starts tests one by one in order they are listed in the scenario.
|
6. Shaker starts tests one by one in order they are listed in the scenario.
|
||||||
Test definition is converted into the actual command that will be
|
Test definition is converted into the actual command that will be
|
||||||
executed by agent. Shaker schedules the command to be started at the same
|
executed by agent. Shaker schedules the command to be started at the same
|
||||||
time on all agents. For networking testing only agents in ``master`` role
|
time on all agents. For networking testing only agents in ``primary`` role
|
||||||
are involved. Slave agents are used as back-end for corresponding commands
|
are involved. Minion agents are used as back-end for corresponding commands
|
||||||
(i.e. they run iperf in server mode).
|
(i.e. they run iperf in server mode).
|
||||||
|
|
||||||
7. Agents send their results to the server. Once all replies are received
|
7. Agents send their results to the server. Once all replies are received
|
||||||
|
@ -23,7 +23,7 @@ OpenStack L2 Cross-AZ
|
|||||||
^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^
|
||||||
In this scenario Shaker launches pairs of instances in the same tenant network.
|
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
|
Every instance is hosted on a separate compute node, all available compute
|
||||||
nodes are utilized. The master and slave instances are in different
|
nodes are utilized. The primary and minion instances are in different
|
||||||
availability zones. The scenario is used to test throughput between `nova` and
|
availability zones. The scenario is used to test throughput between `nova` and
|
||||||
`vcenter` zones. The traffic goes within the tenant network (L2 domain).
|
`vcenter` zones. The traffic goes within the tenant network (L2 domain).
|
||||||
|
|
||||||
@ -37,7 +37,7 @@ OpenStack L3 East-West Cross-AZ
|
|||||||
In this scenario Shaker launches pairs of instances, each instance on its own
|
In this scenario Shaker launches pairs of instances, each instance on its own
|
||||||
compute node. All available compute nodes are utilized. Instances are connected
|
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
|
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
|
from one network to the other (L3 east-west). The primary and minion instances
|
||||||
are in different availability zones. The scenario is used to test throughput
|
are in different availability zones. The scenario is used to test throughput
|
||||||
between `nova` and `vcenter` zones.
|
between `nova` and `vcenter` zones.
|
||||||
|
|
||||||
@ -50,10 +50,10 @@ OpenStack L3 North-South Cross-AZ
|
|||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
In this scenario Shaker launches pairs of instances on different compute nodes.
|
In this scenario Shaker launches pairs of instances on different compute nodes.
|
||||||
All available compute nodes are utilized. Instances are in different networks
|
All available compute nodes are utilized. Instances are in different networks
|
||||||
connected to different routers, master accesses slave by floating ip. The
|
connected to different routers, primary accesses minion by floating ip. The
|
||||||
traffic goes from one network via external network to the other network. 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
|
primary and minion instances are in different availability zones. The scenario
|
||||||
used to test throughput between `nova` and `vcenter` zones.
|
is used to test throughput between `nova` and `vcenter` zones.
|
||||||
|
|
||||||
To use this scenario specify parameter ``--scenario openstack/cross_az/full_l3_north_south``.
|
To use this scenario specify parameter ``--scenario openstack/cross_az/full_l3_north_south``.
|
||||||
Scenario source is available at: https://opendev.org/performa/shaker/src/branch/master/shaker/scenarios/openstack/cross_az/full_l3_north_south.yaml
|
Scenario source is available at: https://opendev.org/performa/shaker/src/branch/master/shaker/scenarios/openstack/cross_az/full_l3_north_south.yaml
|
||||||
@ -63,8 +63,8 @@ Scenario source is available at: https://opendev.org/performa/shaker/src/branch/
|
|||||||
OpenStack L2 Cross-AZ Performance
|
OpenStack L2 Cross-AZ Performance
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
In this scenario Shaker launches 1 pair of instances in the same tenant
|
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
|
network. Each instance is hosted on a separate compute node. The primary and
|
||||||
slave instances are in different availability zones. The scenario is used to
|
minion instances are in different availability zones. The scenario is used to
|
||||||
test throughput between `nova` and `vcenter` zones.
|
test throughput between `nova` and `vcenter` zones.
|
||||||
|
|
||||||
To use this scenario specify parameter ``--scenario openstack/cross_az/perf_l2``.
|
To use this scenario specify parameter ``--scenario openstack/cross_az/perf_l2``.
|
||||||
@ -77,8 +77,9 @@ OpenStack L3 East-West Cross-AZ Performance
|
|||||||
In this scenario Shaker launches 1 pair of instances, each instance on its own
|
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
|
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
|
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.
|
east-west). The primary and minion instances are in different availability
|
||||||
The scenario is used to test throughput between `nova` and `vcenter` zones.
|
zones. The scenario is used to test throughput between `nova` and `vcenter`
|
||||||
|
zones.
|
||||||
|
|
||||||
To use this scenario specify parameter ``--scenario openstack/cross_az/perf_l3_east_west``.
|
To use this scenario specify parameter ``--scenario openstack/cross_az/perf_l3_east_west``.
|
||||||
Scenario source is available at: https://opendev.org/performa/shaker/src/branch/master/shaker/scenarios/openstack/cross_az/perf_l3_east_west.yaml
|
Scenario source is available at: https://opendev.org/performa/shaker/src/branch/master/shaker/scenarios/openstack/cross_az/perf_l3_east_west.yaml
|
||||||
@ -89,8 +90,8 @@ OpenStack L3 North-South Cross-AZ Performance
|
|||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
In this scenario Shaker launches 1 pair of instances on different compute
|
In this scenario Shaker launches 1 pair of instances on different compute
|
||||||
nodes. Instances are in different networks connected to different routers,
|
nodes. Instances are in different networks connected to different routers,
|
||||||
master accesses slave by floating ip. The traffic goes from one network via
|
primary accesses minion by floating ip. The traffic goes from one network via
|
||||||
external network to the other network. The master and slave instances are in
|
external network to the other network. The primary and minion instances are in
|
||||||
different availability zones. The scenario is used to test throughput between
|
different availability zones. The scenario is used to test throughput between
|
||||||
`nova` and `vcenter` zones.
|
`nova` and `vcenter` zones.
|
||||||
|
|
||||||
@ -103,7 +104,7 @@ OpenStack L2 Cross-AZ UDP
|
|||||||
^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
In this scenario Shaker launches pairs of instances in the same tenant network.
|
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
|
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
|
UDP traffic. The primary and minion instances are in different availability
|
||||||
zones. The scenario is used to test throughput between `nova` and `vcenter`
|
zones. The scenario is used to test throughput between `nova` and `vcenter`
|
||||||
zones.
|
zones.
|
||||||
|
|
||||||
@ -116,9 +117,9 @@ OpenStack L2 Cross-AZ UDP Jumbo
|
|||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
In this scenario Shaker launches pairs of instances in the same tenant network.
|
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
|
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
|
UDP traffic and jumbo packets. The primary and minion instances are in
|
||||||
availability zones. The scenario is used to test throughput between `nova` and
|
different availability zones. The scenario is used to test throughput between
|
||||||
`vcenter` zones.
|
`nova` and `vcenter` zones.
|
||||||
|
|
||||||
To use this scenario specify parameter ``--scenario openstack/cross_az/udp_l2_mss8950``.
|
To use this scenario specify parameter ``--scenario openstack/cross_az/udp_l2_mss8950``.
|
||||||
Scenario source is available at: https://opendev.org/performa/shaker/src/branch/master/shaker/scenarios/openstack/cross_az/udp_l2_mss8950.yaml
|
Scenario source is available at: https://opendev.org/performa/shaker/src/branch/master/shaker/scenarios/openstack/cross_az/udp_l2_mss8950.yaml
|
||||||
@ -130,7 +131,7 @@ OpenStack L3 East-West Cross-AZ UDP
|
|||||||
In this scenario Shaker launches pairs of instances, each instance on its own
|
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
|
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
|
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
|
east-west). The load is generated by UDP traffic. The primary and minion
|
||||||
instances are in different availability zones. The scenario is used to test
|
instances are in different availability zones. The scenario is used to test
|
||||||
throughput between `nova` and `vcenter` zones.
|
throughput between `nova` and `vcenter` zones.
|
||||||
|
|
||||||
@ -276,7 +277,7 @@ OpenStack L3 North-South
|
|||||||
^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
In this scenario Shaker launches pairs of instances on different compute nodes.
|
In this scenario Shaker launches pairs of instances on different compute nodes.
|
||||||
All available compute nodes are utilized. Instances are in different networks
|
All available compute nodes are utilized. Instances are in different networks
|
||||||
connected to different routers, master accesses slave by floating ip. The
|
connected to different routers, primary accesses minion by floating ip. The
|
||||||
traffic goes from one network via external network to the other network.
|
traffic goes from one network via external network to the other network.
|
||||||
|
|
||||||
To use this scenario specify parameter ``--scenario openstack/full_l3_north_south``.
|
To use this scenario specify parameter ``--scenario openstack/full_l3_north_south``.
|
||||||
@ -311,7 +312,7 @@ OpenStack L3 North-South Performance
|
|||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
In this scenario Shaker launches 1 pair of instances on different compute
|
In this scenario Shaker launches 1 pair of instances on different compute
|
||||||
nodes. Instances are in different networks connected to different routers,
|
nodes. Instances are in different networks connected to different routers,
|
||||||
master accesses slave by floating ip. The traffic goes from one network via
|
primary accesses minion by floating ip. The traffic goes from one network via
|
||||||
external network to the other network.
|
external network to the other network.
|
||||||
|
|
||||||
To use this scenario specify parameter ``--scenario openstack/perf_l3_north_south``.
|
To use this scenario specify parameter ``--scenario openstack/perf_l3_north_south``.
|
||||||
@ -357,8 +358,8 @@ Scenario source is available at: https://opendev.org/performa/shaker/src/branch/
|
|||||||
OpenStack L3 North-South UDP
|
OpenStack L3 North-South UDP
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
In this scenario Shaker launches pairs of instances on different compute nodes.
|
In this scenario Shaker launches pairs of instances on different compute nodes.
|
||||||
Instances are in different networks connected to different routers, master
|
Instances are in different networks connected to different routers, primary
|
||||||
accesses slave by floating ip. The traffic goes from one network via external
|
accesses minion by floating ip. The traffic goes from one network via external
|
||||||
network to the other network. The load is generated by UDP traffic.
|
network to the other network. The load is generated by UDP traffic.
|
||||||
|
|
||||||
To use this scenario specify parameter ``--scenario openstack/udp_l3_north_south``.
|
To use this scenario specify parameter ``--scenario openstack/udp_l3_north_south``.
|
||||||
@ -498,7 +499,7 @@ Template source is available at: https://opendev.org/performa/shaker/src/branch/
|
|||||||
openstack/cross_az/l3_east_west
|
openstack/cross_az/l3_east_west
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
This Heat template creates a pair of networks plugged into the same router.
|
This Heat template creates a pair of networks plugged into the same router.
|
||||||
Master instances and slave instances are connected into different networks.
|
Primary instances and minion instances are connected into different networks.
|
||||||
|
|
||||||
Template source is available at: https://opendev.org/performa/shaker/src/branch/master/shaker/scenarios/openstack/cross_az/l3_east_west.hot
|
Template source is available at: https://opendev.org/performa/shaker/src/branch/master/shaker/scenarios/openstack/cross_az/l3_east_west.hot
|
||||||
|
|
||||||
@ -546,7 +547,7 @@ Template source is available at: https://opendev.org/performa/shaker/src/branch/
|
|||||||
openstack/l3_east_west
|
openstack/l3_east_west
|
||||||
^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^
|
||||||
This Heat template creates a pair of networks plugged into the same router.
|
This Heat template creates a pair of networks plugged into the same router.
|
||||||
Master instances and slave instances are connected into different networks.
|
Primary instances and minion instances are connected into different networks.
|
||||||
|
|
||||||
Template source is available at: https://opendev.org/performa/shaker/src/branch/master/shaker/scenarios/openstack/l3_east_west.hot
|
Template source is available at: https://opendev.org/performa/shaker/src/branch/master/shaker/scenarios/openstack/l3_east_west.hot
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@ L3 North-South
|
|||||||
--------------
|
--------------
|
||||||
|
|
||||||
This scenario tests the bandwidth between pairs of instances deployed in different virtual networks. Instances
|
This scenario tests the bandwidth between pairs of instances deployed in different virtual networks. Instances
|
||||||
with master agents are located in one network, instances with slave agents are reached via their floating IPs.
|
with primary agents are located in one network, instances with minion agents are reached via their floating IPs.
|
||||||
Each instance is deployed on its own compute node. The test increases the load from 1 pair pair until
|
Each instance is deployed on its own compute node. The test increases the load from 1 pair pair until
|
||||||
all available instances are used.
|
all available instances are used.
|
||||||
|
|
||||||
|
@ -184,7 +184,7 @@
|
|||||||
x="-855.45026"
|
x="-855.45026"
|
||||||
sodipodi:role="line"
|
sodipodi:role="line"
|
||||||
id="tspan4805"
|
id="tspan4805"
|
||||||
style="text-align:center;text-anchor:middle;fill:#ffffff">master_1</tspan></text>
|
style="text-align:center;text-anchor:middle;fill:#ffffff">primary_1</tspan></text>
|
||||||
<rect
|
<rect
|
||||||
ry="5.3510919"
|
ry="5.3510919"
|
||||||
rx="6.923945"
|
rx="6.923945"
|
||||||
@ -206,7 +206,7 @@
|
|||||||
id="tspan4817"
|
id="tspan4817"
|
||||||
sodipodi:role="line"
|
sodipodi:role="line"
|
||||||
x="-958.99225"
|
x="-958.99225"
|
||||||
y="135.65411">slave_1</tspan></text>
|
y="135.65411">minion_1</tspan></text>
|
||||||
<text
|
<text
|
||||||
xml:space="preserve"
|
xml:space="preserve"
|
||||||
style="font-style:normal;font-weight:normal;font-size:11.25px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
style="font-style:normal;font-weight:normal;font-size:11.25px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
@ -266,7 +266,7 @@
|
|||||||
id="tspan4270"
|
id="tspan4270"
|
||||||
sodipodi:role="line"
|
sodipodi:role="line"
|
||||||
x="-855.45026"
|
x="-855.45026"
|
||||||
y="262.73535">master_2</tspan></text>
|
y="262.73535">primary_2</tspan></text>
|
||||||
<rect
|
<rect
|
||||||
style="fill:#d35fbc;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:3, 6;stroke-dashoffset:0;stroke-opacity:0.59215686"
|
style="fill:#d35fbc;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:3, 6;stroke-dashoffset:0;stroke-opacity:0.59215686"
|
||||||
id="rect4272"
|
id="rect4272"
|
||||||
@ -288,7 +288,7 @@
|
|||||||
x="-958.99225"
|
x="-958.99225"
|
||||||
sodipodi:role="line"
|
sodipodi:role="line"
|
||||||
id="tspan4276"
|
id="tspan4276"
|
||||||
style="text-align:center;text-anchor:middle;fill:#ffffff">slave_2</tspan></text>
|
style="text-align:center;text-anchor:middle;fill:#ffffff">minion_2</tspan></text>
|
||||||
<rect
|
<rect
|
||||||
style="fill:#b3b3b3;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:3, 6;stroke-dashoffset:0;stroke-opacity:0.59215686"
|
style="fill:#b3b3b3;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:3, 6;stroke-dashoffset:0;stroke-opacity:0.59215686"
|
||||||
id="rect4362"
|
id="rect4362"
|
||||||
@ -332,7 +332,7 @@
|
|||||||
x="-855.45026"
|
x="-855.45026"
|
||||||
sodipodi:role="line"
|
sodipodi:role="line"
|
||||||
id="tspan4372"
|
id="tspan4372"
|
||||||
style="text-align:center;text-anchor:middle;fill:#ffffff">master_N</tspan></text>
|
style="text-align:center;text-anchor:middle;fill:#ffffff">primary_N</tspan></text>
|
||||||
<rect
|
<rect
|
||||||
ry="5.3510919"
|
ry="5.3510919"
|
||||||
rx="6.923945"
|
rx="6.923945"
|
||||||
@ -354,6 +354,6 @@
|
|||||||
id="tspan4378"
|
id="tspan4378"
|
||||||
sodipodi:role="line"
|
sodipodi:role="line"
|
||||||
x="-958.99225"
|
x="-958.99225"
|
||||||
y="619.15131">slave_N</tspan></text>
|
y="619.15131">minion_N</tspan></text>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
@ -184,7 +184,7 @@
|
|||||||
x="-905.03375"
|
x="-905.03375"
|
||||||
sodipodi:role="line"
|
sodipodi:role="line"
|
||||||
id="tspan4805"
|
id="tspan4805"
|
||||||
style="text-align:center;text-anchor:middle;fill:#ffffff">master_1</tspan></text>
|
style="text-align:center;text-anchor:middle;fill:#ffffff">primary_1</tspan></text>
|
||||||
<rect
|
<rect
|
||||||
ry="5"
|
ry="5"
|
||||||
rx="5.0763359"
|
rx="5.0763359"
|
||||||
@ -228,7 +228,7 @@
|
|||||||
id="tspan4817"
|
id="tspan4817"
|
||||||
sodipodi:role="line"
|
sodipodi:role="line"
|
||||||
x="-905.03375"
|
x="-905.03375"
|
||||||
y="250.82941">slave_1</tspan></text>
|
y="250.82941">minion_1</tspan></text>
|
||||||
<rect
|
<rect
|
||||||
ry="5"
|
ry="5"
|
||||||
rx="5.0763359"
|
rx="5.0763359"
|
||||||
@ -272,7 +272,7 @@
|
|||||||
id="tspan4829"
|
id="tspan4829"
|
||||||
sodipodi:role="line"
|
sodipodi:role="line"
|
||||||
x="-905.76294"
|
x="-905.76294"
|
||||||
y="515.31848">master_M</tspan></text>
|
y="515.31848">primary_M</tspan></text>
|
||||||
<rect
|
<rect
|
||||||
style="fill:#b3b3b3;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:3, 6;stroke-dashoffset:0;stroke-opacity:0.59215686"
|
style="fill:#b3b3b3;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:3, 6;stroke-dashoffset:0;stroke-opacity:0.59215686"
|
||||||
id="rect4831"
|
id="rect4831"
|
||||||
@ -316,7 +316,7 @@
|
|||||||
x="-905.76294"
|
x="-905.76294"
|
||||||
sodipodi:role="line"
|
sodipodi:role="line"
|
||||||
id="tspan4841"
|
id="tspan4841"
|
||||||
style="text-align:center;text-anchor:middle;fill:#ffffff">slave_M</tspan></text>
|
style="text-align:center;text-anchor:middle;fill:#ffffff">minion_M</tspan></text>
|
||||||
<text
|
<text
|
||||||
xml:space="preserve"
|
xml:space="preserve"
|
||||||
style="font-style:normal;font-weight:normal;font-size:11.25px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
style="font-style:normal;font-weight:normal;font-size:11.25px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
@ -128,7 +128,7 @@
|
|||||||
x="135.55745"
|
x="135.55745"
|
||||||
sodipodi:role="line"
|
sodipodi:role="line"
|
||||||
id="tspan4695"
|
id="tspan4695"
|
||||||
style="text-align:center;text-anchor:middle;fill:#ffffff">master_1</tspan></text>
|
style="text-align:center;text-anchor:middle;fill:#ffffff">primary_1</tspan></text>
|
||||||
<text
|
<text
|
||||||
sodipodi:linespacing="125%"
|
sodipodi:linespacing="125%"
|
||||||
id="text3406"
|
id="text3406"
|
||||||
@ -140,7 +140,7 @@
|
|||||||
y="633.49957"
|
y="633.49957"
|
||||||
x="248.09406"
|
x="248.09406"
|
||||||
id="tspan3408"
|
id="tspan3408"
|
||||||
sodipodi:role="line">master_1</tspan></text>
|
sodipodi:role="line">primary_1</tspan></text>
|
||||||
<rect
|
<rect
|
||||||
style="fill:#00aad4;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
style="fill:#00aad4;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
id="rect3410"
|
id="rect3410"
|
||||||
@ -161,7 +161,7 @@
|
|||||||
sodipodi:role="line"
|
sodipodi:role="line"
|
||||||
id="tspan3414"
|
id="tspan3414"
|
||||||
x="256.95361"
|
x="256.95361"
|
||||||
y="629.99701">master_2</tspan></text>
|
y="629.99701">primary_2</tspan></text>
|
||||||
<text
|
<text
|
||||||
sodipodi:linespacing="125%"
|
sodipodi:linespacing="125%"
|
||||||
id="text3418"
|
id="text3418"
|
||||||
@ -173,7 +173,7 @@
|
|||||||
y="634.59491"
|
y="634.59491"
|
||||||
x="427.17822"
|
x="427.17822"
|
||||||
id="tspan3420"
|
id="tspan3420"
|
||||||
sodipodi:role="line">master_1</tspan></text>
|
sodipodi:role="line">primary_1</tspan></text>
|
||||||
<rect
|
<rect
|
||||||
style="fill:#d35fbc;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
style="fill:#d35fbc;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
id="rect3422"
|
id="rect3422"
|
||||||
@ -194,7 +194,7 @@
|
|||||||
sodipodi:role="line"
|
sodipodi:role="line"
|
||||||
id="tspan3426"
|
id="tspan3426"
|
||||||
x="426.59503"
|
x="426.59503"
|
||||||
y="630.14862">slave_1</tspan></text>
|
y="630.14862">minion_1</tspan></text>
|
||||||
<text
|
<text
|
||||||
xml:space="preserve"
|
xml:space="preserve"
|
||||||
style="font-style:normal;font-weight:normal;font-size:17.25123024px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
style="font-style:normal;font-weight:normal;font-size:17.25123024px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
@ -206,7 +206,7 @@
|
|||||||
sodipodi:role="line"
|
sodipodi:role="line"
|
||||||
id="tspan3432"
|
id="tspan3432"
|
||||||
x="579.97485"
|
x="579.97485"
|
||||||
y="636.23785">master_1</tspan></text>
|
y="636.23785">primary_1</tspan></text>
|
||||||
<rect
|
<rect
|
||||||
ry="7.8269691"
|
ry="7.8269691"
|
||||||
rx="7.5107188"
|
rx="7.5107188"
|
||||||
@ -227,7 +227,7 @@
|
|||||||
y="630.14862"
|
y="630.14862"
|
||||||
x="588.22156"
|
x="588.22156"
|
||||||
id="tspan3438"
|
id="tspan3438"
|
||||||
sodipodi:role="line">slave_2</tspan></text>
|
sodipodi:role="line">minion_2</tspan></text>
|
||||||
<path
|
<path
|
||||||
style="fill:none;fill-rule:evenodd;stroke:#00aad4;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
style="fill:none;fill-rule:evenodd;stroke:#00aad4;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
d="m 127.96125,680.49784 0,30.55703 161.39162,0 0.0141,-31.98749"
|
d="m 127.96125,680.49784 0,30.55703 161.39162,0 0.0141,-31.98749"
|
||||||
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
@ -386,7 +386,7 @@
|
|||||||
x="205.87675"
|
x="205.87675"
|
||||||
sodipodi:role="line"
|
sodipodi:role="line"
|
||||||
id="tspan4695"
|
id="tspan4695"
|
||||||
style="text-align:center;text-anchor:middle;fill:#ffffff">master_1</tspan></text>
|
style="text-align:center;text-anchor:middle;fill:#ffffff">primary_1</tspan></text>
|
||||||
<rect
|
<rect
|
||||||
style="fill:#2ca089;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
style="fill:#2ca089;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
id="rect3410"
|
id="rect3410"
|
||||||
@ -407,7 +407,7 @@
|
|||||||
sodipodi:role="line"
|
sodipodi:role="line"
|
||||||
id="tspan3414"
|
id="tspan3414"
|
||||||
x="165.6969"
|
x="165.6969"
|
||||||
y="758.66028">master_2</tspan></text>
|
y="758.66028">primary_2</tspan></text>
|
||||||
<rect
|
<rect
|
||||||
style="fill:#dd34bc;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
style="fill:#dd34bc;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
id="rect3422"
|
id="rect3422"
|
||||||
@ -428,7 +428,7 @@
|
|||||||
sodipodi:role="line"
|
sodipodi:role="line"
|
||||||
id="tspan3426"
|
id="tspan3426"
|
||||||
x="569.36975"
|
x="569.36975"
|
||||||
y="647.55859">slave_1</tspan></text>
|
y="647.55859">minion_1</tspan></text>
|
||||||
<rect
|
<rect
|
||||||
ry="7.8269691"
|
ry="7.8269691"
|
||||||
rx="8.4507885"
|
rx="8.4507885"
|
||||||
@ -449,7 +449,7 @@
|
|||||||
y="758.81189"
|
y="758.81189"
|
||||||
x="569.43719"
|
x="569.43719"
|
||||||
id="tspan3438"
|
id="tspan3438"
|
||||||
sodipodi:role="line">slave_2</tspan></text>
|
sodipodi:role="line">minion_2</tspan></text>
|
||||||
<text
|
<text
|
||||||
sodipodi:linespacing="125%"
|
sodipodi:linespacing="125%"
|
||||||
id="text4965"
|
id="text4965"
|
||||||
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
@ -4,7 +4,7 @@ OpenStack L3 North-South
|
|||||||
************************
|
************************
|
||||||
|
|
||||||
This scenario launches pairs of VMs on different compute nodes. VMs are in the
|
This scenario launches pairs of VMs on different compute nodes. VMs are in the
|
||||||
different networks connected via different routers, master accesses slave by
|
different networks connected via different routers, primary accesses minion by
|
||||||
floating ip
|
floating ip
|
||||||
|
|
||||||
**Scenario**:
|
**Scenario**:
|
||||||
@ -17,7 +17,7 @@ floating ip
|
|||||||
- single_room
|
- single_room
|
||||||
template: l3_north_south.hot
|
template: l3_north_south.hot
|
||||||
description: This scenario launches pairs of VMs on different compute nodes. VMs are
|
description: This scenario launches pairs of VMs on different compute nodes. VMs are
|
||||||
in the different networks connected via different routers, master accesses slave
|
in the different networks connected via different routers, primary accesses minion
|
||||||
by floating ip
|
by floating ip
|
||||||
execution:
|
execution:
|
||||||
progression: quadratic
|
progression: quadratic
|
||||||
|
@ -4,7 +4,7 @@ OpenStack L3 North-South Performance
|
|||||||
************************************
|
************************************
|
||||||
|
|
||||||
This scenario launches 1 pair of VMs on different compute nodes. VMs are in the
|
This scenario launches 1 pair of VMs on different compute nodes. VMs are in the
|
||||||
different networks connected via different routers, master accesses slave by
|
different networks connected via different routers, primary accesses minion by
|
||||||
floating ip
|
floating ip
|
||||||
|
|
||||||
**Scenario**:
|
**Scenario**:
|
||||||
@ -18,7 +18,7 @@ floating ip
|
|||||||
- compute_nodes: 2
|
- compute_nodes: 2
|
||||||
template: l3_north_south.hot
|
template: l3_north_south.hot
|
||||||
description: This scenario launches 1 pair of VMs on different compute nodes. VMs
|
description: This scenario launches 1 pair of VMs on different compute nodes. VMs
|
||||||
are in the different networks connected via different routers, master accesses slave
|
are in the different networks connected via different routers, primary accesses minion
|
||||||
by floating ip
|
by floating ip
|
||||||
execution:
|
execution:
|
||||||
tests:
|
tests:
|
||||||
|
@ -24,7 +24,7 @@ Executes specified scenario from the local node, stores results and generates HT
|
|||||||
shaker-image-builder
|
shaker-image-builder
|
||||||
--------------------
|
--------------------
|
||||||
|
|
||||||
Builds master image in OpenStack cloud. The image is based on Ubuntu cloud image distro and
|
Builds base image in OpenStack cloud. The image is based on Ubuntu cloud image distro and
|
||||||
configured to run ``shaker-agent``.
|
configured to run ``shaker-agent``.
|
||||||
|
|
||||||
.. literalinclude:: tools/shaker-image-builder.txt
|
.. literalinclude:: tools/shaker-image-builder.txt
|
||||||
@ -46,6 +46,6 @@ Generates report based on raw results stored in JSON format.
|
|||||||
shaker-cleanup
|
shaker-cleanup
|
||||||
--------------
|
--------------
|
||||||
|
|
||||||
Removes master image from OpenStack cloud.
|
Removes base image from OpenStack cloud.
|
||||||
|
|
||||||
.. literalinclude:: tools/shaker-cleanup.txt
|
.. literalinclude:: tools/shaker-cleanup.txt
|
||||||
|
@ -1,9 +1,12 @@
|
|||||||
usage: shaker-agent [-h] [--agent-id AGENT_ID] [--config-dir DIR]
|
usage: shaker-agent [-h] [--agent-id AGENT_ID]
|
||||||
[--config-file PATH] [--debug] [--log-config-append PATH]
|
[--agent-socket-conn-retries AGENT_SOCKET_CONN_RETRIES]
|
||||||
[--log-date-format DATE_FORMAT] [--log-dir LOG_DIR]
|
[--agent-socket-recv-timeout AGENT_SOCKET_RECV_TIMEOUT]
|
||||||
[--log-file PATH] [--nodebug] [--nouse-journal]
|
[--agent-socket-send-timeout AGENT_SOCKET_SEND_TIMEOUT]
|
||||||
[--nouse-json] [--nouse-syslog] [--nowatch-log-file]
|
[--config-dir DIR] [--config-file PATH] [--debug]
|
||||||
[--polling-interval POLLING_INTERVAL]
|
[--log-config-append PATH] [--log-date-format DATE_FORMAT]
|
||||||
|
[--log-dir LOG_DIR] [--log-file PATH] [--nodebug]
|
||||||
|
[--nouse-journal] [--nouse-json] [--nouse-syslog]
|
||||||
|
[--nowatch-log-file] [--polling-interval POLLING_INTERVAL]
|
||||||
[--server-endpoint SERVER_ENDPOINT]
|
[--server-endpoint SERVER_ENDPOINT]
|
||||||
[--syslog-log-facility SYSLOG_LOG_FACILITY]
|
[--syslog-log-facility SYSLOG_LOG_FACILITY]
|
||||||
[--use-journal] [--use-json] [--use-syslog]
|
[--use-journal] [--use-json] [--use-syslog]
|
||||||
@ -12,6 +15,16 @@ usage: shaker-agent [-h] [--agent-id AGENT_ID] [--config-dir DIR]
|
|||||||
optional arguments:
|
optional arguments:
|
||||||
-h, --help show this help message and exit
|
-h, --help show this help message and exit
|
||||||
--agent-id AGENT_ID Agent unique id, defaults to MAC of primary interface.
|
--agent-id AGENT_ID Agent unique id, defaults to MAC of primary interface.
|
||||||
|
--agent-socket-conn-retries AGENT_SOCKET_CONN_RETRIES
|
||||||
|
Prior to exiting, the number of reconnects the Agent
|
||||||
|
will attempt with the server upon socket operation
|
||||||
|
errors.
|
||||||
|
--agent-socket-recv-timeout AGENT_SOCKET_RECV_TIMEOUT
|
||||||
|
The amount of time the socket will wait for a response
|
||||||
|
from a sent message, in milliseconds.
|
||||||
|
--agent-socket-send-timeout AGENT_SOCKET_SEND_TIMEOUT
|
||||||
|
The amount of time the socket will wait until a sent
|
||||||
|
message is accepted, in milliseconds.
|
||||||
--config-dir DIR Path to a config directory to pull `*.conf` files
|
--config-dir DIR Path to a config directory to pull `*.conf` files
|
||||||
from. This file set is sorted, so as to provide a
|
from. This file set is sorted, so as to provide a
|
||||||
predictable parse order if individual options are
|
predictable parse order if individual options are
|
||||||
|
@ -98,8 +98,8 @@ Examples:
|
|||||||
.. image:: images/accommodation_double_room.*
|
.. image:: images/accommodation_double_room.*
|
||||||
|
|
||||||
As result of deployment the set of agents is produced. For networking testing this set contains
|
As result of deployment the set of agents is produced. For networking testing this set contains
|
||||||
agents in ``master`` and ``slave`` roles. Master agents are controlled by ``shaker`` tool and execute commands.
|
agents in ``primary`` and ``minion`` roles. Primary agents are controlled by ``shaker`` tool and execute commands.
|
||||||
Slaves are used as back-ends and do not receive any commands directly.
|
Minions are used as back-ends and do not receive any commands directly.
|
||||||
|
|
||||||
\*If a flavor is chosen, which has aggregate_instance_extra_specs metadata set to match a host aggregate, Shaker will only use matching computes for compute_nodes calculations.
|
\*If a flavor is chosen, which has aggregate_instance_extra_specs metadata set to match a host aggregate, Shaker will only use matching computes for compute_nodes calculations.
|
||||||
If no aggregate_instance_extra_specs is set on a flavor Shaker will use all computes by default.
|
If no aggregate_instance_extra_specs is set on a flavor Shaker will use all computes by default.
|
||||||
@ -141,7 +141,7 @@ iperf3, iperf, iperf_graph:
|
|||||||
* ``interval`` - seconds between periodic bandwidth reports, defaults to `1 s`
|
* ``interval`` - seconds between periodic bandwidth reports, defaults to `1 s`
|
||||||
* ``bandwidth`` - for UDP, bandwidth to send at in bits/sec, defaults to `1 Mbit/s`
|
* ``bandwidth`` - for UDP, bandwidth to send at in bits/sec, defaults to `1 Mbit/s`
|
||||||
* ``threads`` - number of parallel client threads to run
|
* ``threads`` - number of parallel client threads to run
|
||||||
* ``host`` - the address of destination host to run the tool against, defaults to IP address of slave agent
|
* ``host`` - the address of destination host to run the tool against, defaults to IP address of minion agent
|
||||||
* ``datagram_size`` - the size of UDP datagrams
|
* ``datagram_size`` - the size of UDP datagrams
|
||||||
* ``mss`` - set TCP maximum segment size
|
* ``mss`` - set TCP maximum segment size
|
||||||
|
|
||||||
@ -150,14 +150,14 @@ flent:
|
|||||||
* ``time`` - time in seconds to transmit for, defaults to `60`
|
* ``time`` - time in seconds to transmit for, defaults to `60`
|
||||||
* ``interval`` - seconds between periodic bandwidth reports, defaults to `1`
|
* ``interval`` - seconds between periodic bandwidth reports, defaults to `1`
|
||||||
* ``method`` - which flent scenario to use, see https://github.com/tohojo/flent/tree/master/flent/tests for the whole list, defaults to `tcp_download`
|
* ``method`` - which flent scenario to use, see https://github.com/tohojo/flent/tree/master/flent/tests for the whole list, defaults to `tcp_download`
|
||||||
* ``host`` - the address of destination host to run the tool against, defaults to IP address of slave agent
|
* ``host`` - the address of destination host to run the tool against, defaults to IP address of minion agent
|
||||||
|
|
||||||
|
|
||||||
netperf:
|
netperf:
|
||||||
~~~~~~~~
|
~~~~~~~~
|
||||||
* ``time`` - time in seconds to transmit for, defaults to `60`
|
* ``time`` - time in seconds to transmit for, defaults to `60`
|
||||||
* ``method`` - one of built-in test names, see http://linux.die.net/man/1/netperf for the whole list, defaults to `TCP_STREAM`
|
* ``method`` - one of built-in test names, see http://linux.die.net/man/1/netperf for the whole list, defaults to `TCP_STREAM`
|
||||||
* ``host`` - the address of destination host to run the tool against, defaults to IP address of slave agent
|
* ``host`` - the address of destination host to run the tool against, defaults to IP address of minion agent
|
||||||
|
|
||||||
shell:
|
shell:
|
||||||
~~~~~~
|
~~~~~~
|
||||||
|
@ -335,6 +335,14 @@
|
|||||||
# Agent unique id, defaults to MAC of primary interface. (string value)
|
# Agent unique id, defaults to MAC of primary interface. (string value)
|
||||||
#agent_id = <None>
|
#agent_id = <None>
|
||||||
|
|
||||||
|
# The amount of time the socket will wait for a response from a sent message,
|
||||||
|
# in milliseconds. (integer value)
|
||||||
|
#agent_socket_recv_timeout = <None>
|
||||||
|
|
||||||
|
# The amount of time the socket will wait until a sent message is accepted, in
|
||||||
|
# milliseconds. (integer value)
|
||||||
|
#agent_socket_send_timeout = <None>
|
||||||
|
|
||||||
# Prior to exiting, the number of reconnects the Agent will attempt with the
|
# Prior to exiting, the number of reconnects the Agent will attempt with the
|
||||||
# server upon socket operation errors. (integer value)
|
# server upon socket operation errors. (integer value)
|
||||||
#agent_socket_conn_retries = 10
|
#agent_socket_conn_retries = 10
|
||||||
|
@ -40,18 +40,18 @@ def prepare_for_cross_az(compute_nodes, zones):
|
|||||||
LOG.warn('cross_az is specified, but len(zones) is not 2')
|
LOG.warn('cross_az is specified, but len(zones) is not 2')
|
||||||
return compute_nodes
|
return compute_nodes
|
||||||
|
|
||||||
masters = []
|
primary_list = []
|
||||||
slaves = []
|
minions = []
|
||||||
for node in compute_nodes:
|
for node in compute_nodes:
|
||||||
if node['zone'] == zones[0]:
|
if node['zone'] == zones[0]:
|
||||||
masters.append(node)
|
primary_list.append(node)
|
||||||
else:
|
else:
|
||||||
slaves.append(node)
|
minions.append(node)
|
||||||
|
|
||||||
res = []
|
res = []
|
||||||
for i in range(min(len(masters), len(slaves))):
|
for i in range(min(len(primary_list), len(minions))):
|
||||||
res.append(masters[i])
|
res.append(primary_list[i])
|
||||||
res.append(slaves[i])
|
res.append(minions[i])
|
||||||
|
|
||||||
return res
|
return res
|
||||||
|
|
||||||
@ -103,28 +103,28 @@ def generate_agents(compute_nodes, accommodation, unique):
|
|||||||
|
|
||||||
for i in range(iterations):
|
for i in range(iterations):
|
||||||
if 'pair' in accommodation:
|
if 'pair' in accommodation:
|
||||||
master_id = '%s_master_%s' % (unique, i)
|
primary_id = '%s_primary_%s' % (unique, i)
|
||||||
slave_id = '%s_slave_%s' % (unique, i)
|
minion_id = '%s_minion_%s' % (unique, i)
|
||||||
master = dict(id=master_id, mode='master', slave_id=slave_id)
|
primary = dict(id=primary_id, mode='primary', minion_id=minion_id)
|
||||||
slave = dict(id=slave_id, mode='slave', master_id=master_id)
|
minion = dict(id=minion_id, mode='minion', primary_id=primary_id)
|
||||||
|
|
||||||
if 'single_room' in accommodation:
|
if 'single_room' in accommodation:
|
||||||
master_formula = lambda x: i * 2
|
primary_formula = lambda x: i * 2
|
||||||
slave_formula = lambda x: i * 2 + 1
|
minion_formula = lambda x: i * 2 + 1
|
||||||
elif 'double_room' in accommodation:
|
elif 'double_room' in accommodation:
|
||||||
master_formula = lambda x: i
|
primary_formula = lambda x: i
|
||||||
slave_formula = lambda x: i
|
minion_formula = lambda x: i
|
||||||
else: # mixed_room
|
else: # mixed_room
|
||||||
master_formula = lambda x: i
|
primary_formula = lambda x: i
|
||||||
slave_formula = lambda x: i + 1
|
minion_formula = lambda x: i + 1
|
||||||
|
|
||||||
m = node_formula(master_formula(i))
|
m = node_formula(primary_formula(i))
|
||||||
master['node'], master['zone'] = m['host'], m['zone']
|
primary['node'], primary['zone'] = m['host'], m['zone']
|
||||||
s = node_formula(slave_formula(i))
|
s = node_formula(minion_formula(i))
|
||||||
slave['node'], slave['zone'] = s['host'], s['zone']
|
minion['node'], minion['zone'] = s['host'], s['zone']
|
||||||
|
|
||||||
agents[master['id']] = master
|
agents[primary['id']] = primary
|
||||||
agents[slave['id']] = slave
|
agents[minion['id']] = minion
|
||||||
else:
|
else:
|
||||||
if 'single_room' in accommodation:
|
if 'single_room' in accommodation:
|
||||||
agent_id = '%s_agent_%s' % (unique, i)
|
agent_id = '%s_agent_%s' % (unique, i)
|
||||||
@ -174,7 +174,7 @@ def filter_agents(agents, stack_outputs, override=None):
|
|||||||
agent.update(stack_values)
|
agent.update(stack_values)
|
||||||
|
|
||||||
# workaround of Nova bug 1422686
|
# workaround of Nova bug 1422686
|
||||||
if agent.get('mode') == 'slave' and not agent.get('ip'):
|
if agent.get('mode') == 'minion' and not agent.get('ip'):
|
||||||
LOG.info('IP address is missing in agent: %s', agent)
|
LOG.info('IP address is missing in agent: %s', agent)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
@ -184,10 +184,10 @@ def filter_agents(agents, stack_outputs, override=None):
|
|||||||
result = {}
|
result = {}
|
||||||
for agent in deployed_agents.values():
|
for agent in deployed_agents.values():
|
||||||
if (agent.get('mode') == 'alone' or
|
if (agent.get('mode') == 'alone' or
|
||||||
(agent.get('mode') == 'master' and
|
(agent.get('mode') == 'primary' and
|
||||||
agent.get('slave_id') in deployed_agents) or
|
agent.get('minion_id') in deployed_agents) or
|
||||||
(agent.get('mode') == 'slave' and
|
(agent.get('mode') == 'minion' and
|
||||||
agent.get('master_id') in deployed_agents)):
|
agent.get('primary_id') in deployed_agents)):
|
||||||
result[agent['id']] = agent
|
result[agent['id']] = agent
|
||||||
|
|
||||||
return result
|
return result
|
||||||
@ -214,12 +214,12 @@ def distribute_agents(agents, get_host_fn):
|
|||||||
if buckets['alone']:
|
if buckets['alone']:
|
||||||
result = dict((a['id'], a) for a in buckets['alone'])
|
result = dict((a['id'], a) for a in buckets['alone'])
|
||||||
else:
|
else:
|
||||||
for master, slave in zip(buckets['master'], buckets['slave']):
|
for primary, minion in zip(buckets['primary'], buckets['minion']):
|
||||||
master['slave_id'] = slave['id']
|
primary['minion_id'] = minion['id']
|
||||||
slave['master_id'] = master['id']
|
minion['primary_id'] = primary['id']
|
||||||
|
|
||||||
result[master['id']] = master
|
result[primary['id']] = primary
|
||||||
result[slave['id']] = slave
|
result[minion['id']] = minion
|
||||||
|
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@ class FlentExecutor(base.BaseExecutor):
|
|||||||
def get_command(self):
|
def get_command(self):
|
||||||
cmd = base.CommandLine('flent')
|
cmd = base.CommandLine('flent')
|
||||||
cmd.add('-H', self.test_definition.get('host') or
|
cmd.add('-H', self.test_definition.get('host') or
|
||||||
self.agent['slave']['ip'])
|
self.agent['minion']['ip'])
|
||||||
cmd.add('-l', self.test_definition.get('time') or 60)
|
cmd.add('-l', self.test_definition.get('time') or 60)
|
||||||
cmd.add('-s', self.test_definition.get('interval') or 1)
|
cmd.add('-s', self.test_definition.get('interval') or 1)
|
||||||
cmd.add(self.test_definition.get('method') or 'tcp_download')
|
cmd.add(self.test_definition.get('method') or 'tcp_download')
|
||||||
|
@ -26,7 +26,7 @@ LOG = logging.getLogger(__name__)
|
|||||||
|
|
||||||
def add_common_iperf_params(cmd, executor):
|
def add_common_iperf_params(cmd, executor):
|
||||||
cmd.add('--client', executor.test_definition.get('host') or
|
cmd.add('--client', executor.test_definition.get('host') or
|
||||||
executor.agent['slave']['ip'])
|
executor.agent['minion']['ip'])
|
||||||
cmd.add('--format', 'm')
|
cmd.add('--format', 'm')
|
||||||
if executor.test_definition.get('mss'):
|
if executor.test_definition.get('mss'):
|
||||||
cmd.add('--mss', executor.test_definition.get('mss'))
|
cmd.add('--mss', executor.test_definition.get('mss'))
|
||||||
|
@ -20,7 +20,7 @@ class NetperfExecutor(base.BaseExecutor):
|
|||||||
def get_command(self):
|
def get_command(self):
|
||||||
cmd = base.CommandLine('netperf')
|
cmd = base.CommandLine('netperf')
|
||||||
cmd.add('-H', self.test_definition.get('host') or
|
cmd.add('-H', self.test_definition.get('host') or
|
||||||
self.agent['slave']['ip'])
|
self.agent['minion']['ip'])
|
||||||
cmd.add('-l', self.get_expected_duration())
|
cmd.add('-l', self.get_expected_duration())
|
||||||
cmd.add('-t', self.test_definition.get('method') or 'TCP_STREAM')
|
cmd.add('-t', self.test_definition.get('method') or 'TCP_STREAM')
|
||||||
return cmd.make()
|
return cmd.make()
|
||||||
|
@ -39,10 +39,11 @@ def _extend_agents(agents_map):
|
|||||||
extended_agents = {}
|
extended_agents = {}
|
||||||
for agent in agents_map.values():
|
for agent in agents_map.values():
|
||||||
extended = copy.deepcopy(agent)
|
extended = copy.deepcopy(agent)
|
||||||
if agent.get('slave_id'):
|
if agent.get('minion_id'):
|
||||||
extended['slave'] = copy.deepcopy(agents_map[agent['slave_id']])
|
extended['minion'] = copy.deepcopy(agents_map[agent['minion_id']])
|
||||||
if agent.get('master_id'):
|
if agent.get('primary_id'):
|
||||||
extended['master'] = copy.deepcopy(agents_map[agent['master_id']])
|
extended['primary'] = copy.deepcopy(
|
||||||
|
agents_map[agent['primary_id']])
|
||||||
extended_agents[agent['id']] = extended
|
extended_agents[agent['id']] = extended
|
||||||
return extended_agents
|
return extended_agents
|
||||||
|
|
||||||
@ -51,13 +52,13 @@ def _make_test_title(test, params=None):
|
|||||||
s = test.get('title') or test.get('class')
|
s = test.get('title') or test.get('class')
|
||||||
if params:
|
if params:
|
||||||
s += ' '.join([','.join(['%s=%s' % (k, v) for k, v in params.items()
|
s += ' '.join([','.join(['%s=%s' % (k, v) for k, v in params.items()
|
||||||
if k != 'host'])])
|
if k != 'host'])])
|
||||||
return re.sub(r'[^\x20-\x7e\x80-\xff]+', '_', s)
|
return re.sub(r'[^\x20-\x7e\x80-\xff]+', '_', s)
|
||||||
|
|
||||||
|
|
||||||
def _pick_agents(agents, progression):
|
def _pick_agents(agents, progression):
|
||||||
# slave agents do not execute any tests
|
# minion agents do not execute any tests
|
||||||
agents = [a for a in agents.values() if a.get('mode') != 'slave']
|
agents = [a for a in agents.values() if a.get('mode') != 'minion']
|
||||||
|
|
||||||
if not progression:
|
if not progression:
|
||||||
yield agents
|
yield agents
|
||||||
|
@ -40,7 +40,7 @@ resources:
|
|||||||
router_id: { get_resource: router }
|
router_id: { get_resource: router }
|
||||||
subnet_id: { get_resource: private_subnet }
|
subnet_id: { get_resource: private_subnet }
|
||||||
|
|
||||||
master_image:
|
primary_image:
|
||||||
type: OS::Glance::Image
|
type: OS::Glance::Image
|
||||||
properties:
|
properties:
|
||||||
container_format: bare
|
container_format: bare
|
||||||
@ -50,21 +50,21 @@ resources:
|
|||||||
min_ram: 512
|
min_ram: 512
|
||||||
name: shaker_image_build_template
|
name: shaker_image_build_template
|
||||||
|
|
||||||
master_image_server_port:
|
primary_image_server_port:
|
||||||
type: OS::Neutron::Port
|
type: OS::Neutron::Port
|
||||||
properties:
|
properties:
|
||||||
network_id: { get_resource: private_net }
|
network_id: { get_resource: private_net }
|
||||||
fixed_ips:
|
fixed_ips:
|
||||||
- subnet_id: { get_resource: private_subnet }
|
- subnet_id: { get_resource: private_subnet }
|
||||||
|
|
||||||
master_image_server:
|
primary_image_server:
|
||||||
type: OS::Nova::Server
|
type: OS::Nova::Server
|
||||||
properties:
|
properties:
|
||||||
name: shaker_image_builder_server
|
name: shaker_image_builder_server
|
||||||
image: { get_resource: master_image }
|
image: { get_resource: primary_image }
|
||||||
flavor: { get_param: flavor }
|
flavor: { get_param: flavor }
|
||||||
networks:
|
networks:
|
||||||
- port: { get_resource: master_image_server_port }
|
- port: { get_resource: primary_image_server_port }
|
||||||
user_data_format: RAW
|
user_data_format: RAW
|
||||||
user_data: |
|
user_data: |
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
@ -121,4 +121,4 @@ resources:
|
|||||||
|
|
||||||
outputs:
|
outputs:
|
||||||
server_info:
|
server_info:
|
||||||
value: { get_attr: [ master_image_server, show ] }
|
value: { get_attr: [ primary_image_server, show ] }
|
||||||
|
@ -40,7 +40,7 @@ resources:
|
|||||||
router_id: { get_resource: router }
|
router_id: { get_resource: router }
|
||||||
subnet_id: { get_resource: private_subnet }
|
subnet_id: { get_resource: private_subnet }
|
||||||
|
|
||||||
master_image:
|
primary_image:
|
||||||
type: OS::Glance::Image
|
type: OS::Glance::Image
|
||||||
properties:
|
properties:
|
||||||
container_format: bare
|
container_format: bare
|
||||||
@ -50,21 +50,21 @@ resources:
|
|||||||
min_ram: 512
|
min_ram: 512
|
||||||
name: shaker_image_build_template
|
name: shaker_image_build_template
|
||||||
|
|
||||||
master_image_server_port:
|
primary_image_server_port:
|
||||||
type: OS::Neutron::Port
|
type: OS::Neutron::Port
|
||||||
properties:
|
properties:
|
||||||
network_id: { get_resource: private_net }
|
network_id: { get_resource: private_net }
|
||||||
fixed_ips:
|
fixed_ips:
|
||||||
- subnet_id: { get_resource: private_subnet }
|
- subnet_id: { get_resource: private_subnet }
|
||||||
|
|
||||||
master_image_server:
|
primary_image_server:
|
||||||
type: OS::Nova::Server
|
type: OS::Nova::Server
|
||||||
properties:
|
properties:
|
||||||
name: shaker_image_builder_server
|
name: shaker_image_builder_server
|
||||||
image: { get_resource: master_image }
|
image: { get_resource: primary_image }
|
||||||
flavor: { get_param: flavor }
|
flavor: { get_param: flavor }
|
||||||
networks:
|
networks:
|
||||||
- port: { get_resource: master_image_server_port }
|
- port: { get_resource: primary_image_server_port }
|
||||||
user_data_format: RAW
|
user_data_format: RAW
|
||||||
user_data: |
|
user_data: |
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
@ -79,4 +79,4 @@ resources:
|
|||||||
|
|
||||||
outputs:
|
outputs:
|
||||||
server_info:
|
server_info:
|
||||||
value: { get_attr: [ master_image_server, show ] }
|
value: { get_attr: [ primary_image_server, show ] }
|
||||||
|
@ -39,7 +39,7 @@ resources:
|
|||||||
router_id: { get_resource: router }
|
router_id: { get_resource: router }
|
||||||
subnet_id: { get_resource: private_subnet }
|
subnet_id: { get_resource: private_subnet }
|
||||||
|
|
||||||
master_image:
|
primary_image:
|
||||||
type: OS::Glance::Image
|
type: OS::Glance::Image
|
||||||
properties:
|
properties:
|
||||||
container_format: bare
|
container_format: bare
|
||||||
@ -49,21 +49,21 @@ resources:
|
|||||||
min_ram: 512
|
min_ram: 512
|
||||||
name: shaker_image_build_template
|
name: shaker_image_build_template
|
||||||
|
|
||||||
master_image_server_port:
|
primary_image_server_port:
|
||||||
type: OS::Neutron::Port
|
type: OS::Neutron::Port
|
||||||
properties:
|
properties:
|
||||||
network_id: { get_resource: private_net }
|
network_id: { get_resource: private_net }
|
||||||
fixed_ips:
|
fixed_ips:
|
||||||
- subnet_id: { get_resource: private_subnet }
|
- subnet_id: { get_resource: private_subnet }
|
||||||
|
|
||||||
master_image_server:
|
primary_image_server:
|
||||||
type: OS::Nova::Server
|
type: OS::Nova::Server
|
||||||
properties:
|
properties:
|
||||||
name: shaker_image_builder_server
|
name: shaker_image_builder_server
|
||||||
image: { get_resource: master_image }
|
image: { get_resource: primary_image }
|
||||||
flavor: { get_param: flavor }
|
flavor: { get_param: flavor }
|
||||||
networks:
|
networks:
|
||||||
- port: { get_resource: master_image_server_port }
|
- port: { get_resource: primary_image_server_port }
|
||||||
user_data_format: RAW
|
user_data_format: RAW
|
||||||
user_data: |
|
user_data: |
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
@ -97,4 +97,4 @@ resources:
|
|||||||
|
|
||||||
outputs:
|
outputs:
|
||||||
server_info:
|
server_info:
|
||||||
value: { get_attr: [ master_image_server, show ] }
|
value: { get_attr: [ primary_image_server, show ] }
|
||||||
|
@ -303,14 +303,14 @@
|
|||||||
var agents = getAgentsByIds(agent_ids);
|
var agents = getAgentsByIds(agent_ids);
|
||||||
if (agents.length == 0) return;
|
if (agents.length == 0) return;
|
||||||
|
|
||||||
// add slave agents
|
// add minion agents
|
||||||
var slave_agent_ids = {};
|
var minion_agent_ids = {};
|
||||||
$.each(agents, function(_i, agent){
|
$.each(agents, function(_i, agent){
|
||||||
if (agent.slave_id) {
|
if (agent.minion_id) {
|
||||||
slave_agent_ids[agent.slave_id] = true;
|
minion_agent_ids[agent.minion_id] = true;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
agents = $.merge(agents, getAgentsByIds(slave_agent_ids));
|
agents = $.merge(agents, getAgentsByIds(minion_agent_ids));
|
||||||
|
|
||||||
contentArea.append(agents_table_template({
|
contentArea.append(agents_table_template({
|
||||||
agents: agents,
|
agents: agents,
|
||||||
|
@ -3,7 +3,7 @@ title: OpenStack L2 Cross-AZ
|
|||||||
description:
|
description:
|
||||||
In this scenario Shaker launches pairs of instances in the same tenant
|
In this scenario Shaker launches pairs of instances in the same tenant
|
||||||
network. Every instance is hosted on a separate compute node, all available
|
network. Every instance is hosted on a separate compute node, all available
|
||||||
compute nodes are utilized. The master and slave instances are in different
|
compute nodes are utilized. The primary and minion instances are in different
|
||||||
availability zones. The scenario is used to test throughput between `nova`
|
availability zones. The scenario is used to test throughput between `nova`
|
||||||
and `vcenter` zones. The traffic goes within the tenant network (L2 domain).
|
and `vcenter` zones. The traffic goes within the tenant network (L2 domain).
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@ description:
|
|||||||
compute node. All available compute nodes are utilized. Instances are
|
compute node. All available compute nodes are utilized. Instances are
|
||||||
connected to one of 2 tenant networks, which plugged into single router.
|
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 traffic goes from one network to the other (L3 east-west).
|
||||||
The master and slave instances are in different availability zones.
|
The primary and minion instances are in different availability zones.
|
||||||
The scenario is used to test throughput between `nova` and `vcenter` zones.
|
The scenario is used to test throughput between `nova` and `vcenter` zones.
|
||||||
|
|
||||||
deployment:
|
deployment:
|
||||||
|
@ -3,9 +3,9 @@ title: OpenStack L3 North-South Cross-AZ
|
|||||||
description:
|
description:
|
||||||
In this scenario Shaker launches pairs of instances on different compute
|
In this scenario Shaker launches pairs of instances on different compute
|
||||||
nodes. All available compute nodes are utilized. Instances are in different
|
nodes. All available compute nodes are utilized. Instances are in different
|
||||||
networks connected to different routers, master accesses slave by
|
networks connected to different routers, primary accesses minion by
|
||||||
floating ip. The traffic goes from one network via external network to the
|
floating ip. The traffic goes from one network via external network to the
|
||||||
other network. The master and slave instances are in different availability
|
other network. The primary and minion instances are in different availability
|
||||||
zones. The scenario is used to test throughput between `nova` and `vcenter`
|
zones. The scenario is used to test throughput between `nova` and `vcenter`
|
||||||
zones.
|
zones.
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@ heat_template_version: 2013-05-23
|
|||||||
|
|
||||||
description:
|
description:
|
||||||
This Heat template creates a pair of networks plugged into the same router.
|
This Heat template creates a pair of networks plugged into the same router.
|
||||||
Master instances and slave instances are connected into different networks.
|
Primary instances and minion instances are connected into different networks.
|
||||||
|
|
||||||
parameters:
|
parameters:
|
||||||
image:
|
image:
|
||||||
@ -100,7 +100,7 @@ resources:
|
|||||||
"$SERVER_ENDPOINT": { get_param: server_endpoint }
|
"$SERVER_ENDPOINT": { get_param: server_endpoint }
|
||||||
"$AGENT_ID": {{ agent.id }}
|
"$AGENT_ID": {{ agent.id }}
|
||||||
|
|
||||||
{% if agent.mode == 'master' %}
|
{% if agent.mode == 'primary' %}
|
||||||
{{ agent.id }}_port:
|
{{ agent.id }}_port:
|
||||||
type: OS::Neutron::Port
|
type: OS::Neutron::Port
|
||||||
properties:
|
properties:
|
||||||
@ -124,7 +124,7 @@ outputs:
|
|||||||
{% for agent in agents.values() %}
|
{% for agent in agents.values() %}
|
||||||
{{ agent.id }}_instance_name:
|
{{ agent.id }}_instance_name:
|
||||||
value: { get_attr: [ {{ agent.id }}, instance_name ] }
|
value: { get_attr: [ {{ agent.id }}, instance_name ] }
|
||||||
{% if agent.mode == 'master' %}
|
{% if agent.mode == 'primary' %}
|
||||||
{{ agent.id }}_ip:
|
{{ agent.id }}_ip:
|
||||||
value: { get_attr: [ {{ agent.id }}, networks, { get_attr: [east_private_net, name] }, 0 ] }
|
value: { get_attr: [ {{ agent.id }}, networks, { get_attr: [east_private_net, name] }, 0 ] }
|
||||||
{% else %}
|
{% else %}
|
||||||
|
@ -107,7 +107,7 @@ resources:
|
|||||||
"$SERVER_ENDPOINT": { get_param: server_endpoint }
|
"$SERVER_ENDPOINT": { get_param: server_endpoint }
|
||||||
"$AGENT_ID": {{ agent.id }}
|
"$AGENT_ID": {{ agent.id }}
|
||||||
|
|
||||||
{% if agent.mode == 'master' %}
|
{% if agent.mode == 'primary' %}
|
||||||
{{ agent.id }}_port:
|
{{ agent.id }}_port:
|
||||||
type: OS::Neutron::Port
|
type: OS::Neutron::Port
|
||||||
properties:
|
properties:
|
||||||
@ -138,7 +138,7 @@ outputs:
|
|||||||
{% for agent in agents.values() %}
|
{% for agent in agents.values() %}
|
||||||
{{ agent.id }}_instance_name:
|
{{ agent.id }}_instance_name:
|
||||||
value: { get_attr: [ {{ agent.id }}, instance_name ] }
|
value: { get_attr: [ {{ agent.id }}, instance_name ] }
|
||||||
{% if agent.mode == 'master' %}
|
{% if agent.mode == 'primary' %}
|
||||||
{{ agent.id }}_ip:
|
{{ agent.id }}_ip:
|
||||||
value: { get_attr: [ {{ agent.id }}, networks, { get_attr: [north_private_net, name] }, 0 ] }
|
value: { get_attr: [ {{ agent.id }}, networks, { get_attr: [north_private_net, name] }, 0 ] }
|
||||||
{% else %}
|
{% else %}
|
||||||
|
@ -3,7 +3,7 @@ title: OpenStack L2 Cross-AZ Performance
|
|||||||
description:
|
description:
|
||||||
In this scenario Shaker launches 1 pair of instances in the same tenant
|
In this scenario Shaker launches 1 pair of instances in the same tenant
|
||||||
network. Each instance is hosted on a separate compute node.
|
network. Each instance is hosted on a separate compute node.
|
||||||
The master and slave instances are in different availability zones.
|
The primary and minion instances are in different availability zones.
|
||||||
The scenario is used to test throughput between `nova` and `vcenter` zones.
|
The scenario is used to test throughput between `nova` and `vcenter` zones.
|
||||||
|
|
||||||
deployment:
|
deployment:
|
||||||
|
@ -5,7 +5,7 @@ description:
|
|||||||
compute node. Instances are connected to one of 2 tenant networks, which
|
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
|
plugged into single router. The traffic goes from one network to the other
|
||||||
(L3 east-west).
|
(L3 east-west).
|
||||||
The master and slave instances are in different availability zones.
|
The primary and minion instances are in different availability zones.
|
||||||
The scenario is used to test throughput between `nova` and `vcenter` zones.
|
The scenario is used to test throughput between `nova` and `vcenter` zones.
|
||||||
|
|
||||||
deployment:
|
deployment:
|
||||||
|
@ -3,9 +3,9 @@ title: OpenStack L3 North-South Cross-AZ Performance
|
|||||||
description:
|
description:
|
||||||
In this scenario Shaker launches 1 pair of instances on different compute
|
In this scenario Shaker launches 1 pair of instances on different compute
|
||||||
nodes. Instances are in different networks connected to different routers,
|
nodes. Instances are in different networks connected to different routers,
|
||||||
master accesses slave by floating ip. The traffic goes from one network
|
primary accesses minion by floating ip. The traffic goes from one network
|
||||||
via external network to the other network.
|
via external network to the other network.
|
||||||
The master and slave instances are in different availability zones.
|
The primary and minion instances are in different availability zones.
|
||||||
The scenario is used to test throughput between `nova` and `vcenter` zones.
|
The scenario is used to test throughput between `nova` and `vcenter` zones.
|
||||||
|
|
||||||
deployment:
|
deployment:
|
||||||
|
@ -4,7 +4,7 @@ description:
|
|||||||
In this scenario Shaker launches pairs of instances in the same tenant
|
In this scenario Shaker launches pairs of instances in the same tenant
|
||||||
network. Every instance is hosted on a separate compute node.
|
network. Every instance is hosted on a separate compute node.
|
||||||
The load is generated by UDP traffic.
|
The load is generated by UDP traffic.
|
||||||
The master and slave instances are in different availability zones.
|
The primary and minion instances are in different availability zones.
|
||||||
The scenario is used to test throughput between `nova` and `vcenter` zones.
|
The scenario is used to test throughput between `nova` and `vcenter` zones.
|
||||||
|
|
||||||
deployment:
|
deployment:
|
||||||
|
@ -4,7 +4,7 @@ description:
|
|||||||
In this scenario Shaker launches pairs of instances in the same tenant
|
In this scenario Shaker launches pairs of instances in the same tenant
|
||||||
network. Every instance is hosted on a separate compute node.
|
network. Every instance is hosted on a separate compute node.
|
||||||
The load is generated by UDP traffic and jumbo packets.
|
The load is generated by UDP traffic and jumbo packets.
|
||||||
The master and slave instances are in different availability zones.
|
The primary and minion instances are in different availability zones.
|
||||||
The scenario is used to test throughput between `nova` and `vcenter` zones.
|
The scenario is used to test throughput between `nova` and `vcenter` zones.
|
||||||
|
|
||||||
deployment:
|
deployment:
|
||||||
|
@ -5,7 +5,7 @@ description:
|
|||||||
compute node. Instances are connected to one of 2 tenant networks, which
|
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
|
plugged into single router. The traffic goes from one network to the other
|
||||||
(L3 east-west). The load is generated by UDP traffic.
|
(L3 east-west). The load is generated by UDP traffic.
|
||||||
The master and slave instances are in different availability zones.
|
The primary and minion instances are in different availability zones.
|
||||||
The scenario is used to test throughput between `nova` and `vcenter` zones.
|
The scenario is used to test throughput between `nova` and `vcenter` zones.
|
||||||
|
|
||||||
deployment:
|
deployment:
|
||||||
|
@ -3,7 +3,7 @@ title: OpenStack L3 North-South
|
|||||||
description:
|
description:
|
||||||
In this scenario Shaker launches pairs of instances on different compute
|
In this scenario Shaker launches pairs of instances on different compute
|
||||||
nodes. All available compute nodes are utilized. Instances are in different
|
nodes. All available compute nodes are utilized. Instances are in different
|
||||||
networks connected to different routers, master accesses slave by
|
networks connected to different routers, primary accesses minion by
|
||||||
floating ip. The traffic goes from one network via external network to
|
floating ip. The traffic goes from one network via external network to
|
||||||
the other network.
|
the other network.
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@ heat_template_version: 2013-05-23
|
|||||||
|
|
||||||
description:
|
description:
|
||||||
This Heat template creates a pair of networks plugged into the same router.
|
This Heat template creates a pair of networks plugged into the same router.
|
||||||
Master instances and slave instances are connected into different networks.
|
Primary instances and minion instances are connected into different networks.
|
||||||
|
|
||||||
parameters:
|
parameters:
|
||||||
image:
|
image:
|
||||||
@ -100,7 +100,7 @@ resources:
|
|||||||
"$SERVER_ENDPOINT": { get_param: server_endpoint }
|
"$SERVER_ENDPOINT": { get_param: server_endpoint }
|
||||||
"$AGENT_ID": {{ agent.id }}
|
"$AGENT_ID": {{ agent.id }}
|
||||||
|
|
||||||
{% if agent.mode == 'master' %}
|
{% if agent.mode == 'primary' %}
|
||||||
{{ agent.id }}_port:
|
{{ agent.id }}_port:
|
||||||
type: OS::Neutron::Port
|
type: OS::Neutron::Port
|
||||||
properties:
|
properties:
|
||||||
@ -124,7 +124,7 @@ outputs:
|
|||||||
{% for agent in agents.values() %}
|
{% for agent in agents.values() %}
|
||||||
{{ agent.id }}_instance_name:
|
{{ agent.id }}_instance_name:
|
||||||
value: { get_attr: [ {{ agent.id }}, instance_name ] }
|
value: { get_attr: [ {{ agent.id }}, instance_name ] }
|
||||||
{% if agent.mode == 'master' %}
|
{% if agent.mode == 'primary' %}
|
||||||
{{ agent.id }}_ip:
|
{{ agent.id }}_ip:
|
||||||
value: { get_attr: [ {{ agent.id }}, networks, { get_attr: [east_private_net, name] }, 0 ] }
|
value: { get_attr: [ {{ agent.id }}, networks, { get_attr: [east_private_net, name] }, 0 ] }
|
||||||
{% else %}
|
{% else %}
|
||||||
|
@ -107,7 +107,7 @@ resources:
|
|||||||
"$SERVER_ENDPOINT": { get_param: server_endpoint }
|
"$SERVER_ENDPOINT": { get_param: server_endpoint }
|
||||||
"$AGENT_ID": {{ agent.id }}
|
"$AGENT_ID": {{ agent.id }}
|
||||||
|
|
||||||
{% if agent.mode == 'master' %}
|
{% if agent.mode == 'primary' %}
|
||||||
{{ agent.id }}_port:
|
{{ agent.id }}_port:
|
||||||
type: OS::Neutron::Port
|
type: OS::Neutron::Port
|
||||||
properties:
|
properties:
|
||||||
@ -138,7 +138,7 @@ outputs:
|
|||||||
{% for agent in agents.values() %}
|
{% for agent in agents.values() %}
|
||||||
{{ agent.id }}_instance_name:
|
{{ agent.id }}_instance_name:
|
||||||
value: { get_attr: [ {{ agent.id }}, instance_name ] }
|
value: { get_attr: [ {{ agent.id }}, instance_name ] }
|
||||||
{% if agent.mode == 'master' %}
|
{% if agent.mode == 'primary' %}
|
||||||
{{ agent.id }}_ip:
|
{{ agent.id }}_ip:
|
||||||
value: { get_attr: [ {{ agent.id }}, networks, { get_attr: [north_private_net, name] }, 0 ] }
|
value: { get_attr: [ {{ agent.id }}, networks, { get_attr: [north_private_net, name] }, 0 ] }
|
||||||
{% else %}
|
{% else %}
|
||||||
|
@ -3,7 +3,7 @@ title: OpenStack L3 North-South Performance
|
|||||||
description:
|
description:
|
||||||
In this scenario Shaker launches 1 pair of instances on different compute
|
In this scenario Shaker launches 1 pair of instances on different compute
|
||||||
nodes. Instances are in different networks connected to different routers,
|
nodes. Instances are in different networks connected to different routers,
|
||||||
master accesses slave by floating ip. The traffic goes from one network
|
primary accesses minion by floating ip. The traffic goes from one network
|
||||||
via external network to the other network.
|
via external network to the other network.
|
||||||
|
|
||||||
deployment:
|
deployment:
|
||||||
|
@ -3,7 +3,7 @@ title: OpenStack L3 North-South UDP
|
|||||||
description:
|
description:
|
||||||
In this scenario Shaker launches pairs of instances on different compute
|
In this scenario Shaker launches pairs of instances on different compute
|
||||||
nodes. Instances are in different networks connected to different routers,
|
nodes. Instances are in different networks connected to different routers,
|
||||||
master accesses slave by floating ip. The traffic goes from one network
|
primary accesses minion by floating ip. The traffic goes from one network
|
||||||
via external network to the other network. The load is generated by UDP
|
via external network to the other network. The load is generated by UDP
|
||||||
traffic.
|
traffic.
|
||||||
|
|
||||||
|
@ -9,13 +9,13 @@ deployment:
|
|||||||
-
|
-
|
||||||
id: a-001
|
id: a-001
|
||||||
ip: 10.20.1.2
|
ip: 10.20.1.2
|
||||||
mode: master
|
mode: primary
|
||||||
slave_id: a-002
|
minion_id: a-002
|
||||||
-
|
-
|
||||||
id: a-002
|
id: a-002
|
||||||
ip: 10.20.1.8
|
ip: 10.20.1.8
|
||||||
mode: slave
|
mode: minion
|
||||||
master_id: a-001
|
primary_id: a-001
|
||||||
|
|
||||||
execution:
|
execution:
|
||||||
tests:
|
tests:
|
||||||
|
@ -93,17 +93,17 @@ class TestDeploy(testtools.TestCase):
|
|||||||
def test_generate_agents_pair_single_room(self):
|
def test_generate_agents_pair_single_room(self):
|
||||||
unique = 'UU1D'
|
unique = 'UU1D'
|
||||||
expected = {
|
expected = {
|
||||||
'UU1D_master_0': {
|
'UU1D_primary_0': {
|
||||||
'id': 'UU1D_master_0',
|
'id': 'UU1D_primary_0',
|
||||||
'mode': 'master',
|
'mode': 'primary',
|
||||||
'availability_zone': '%s:uno' % ZONE,
|
'availability_zone': '%s:uno' % ZONE,
|
||||||
'node': 'uno',
|
'node': 'uno',
|
||||||
'zone': ZONE,
|
'zone': ZONE,
|
||||||
'slave_id': 'UU1D_slave_0'},
|
'minion_id': 'UU1D_minion_0'},
|
||||||
'UU1D_slave_0': {
|
'UU1D_minion_0': {
|
||||||
'id': 'UU1D_slave_0',
|
'id': 'UU1D_minion_0',
|
||||||
'master_id': 'UU1D_master_0',
|
'primary_id': 'UU1D_primary_0',
|
||||||
'mode': 'slave',
|
'mode': 'minion',
|
||||||
'availability_zone': '%s:dos' % ZONE,
|
'availability_zone': '%s:dos' % ZONE,
|
||||||
'zone': ZONE,
|
'zone': ZONE,
|
||||||
'node': 'dos'},
|
'node': 'dos'},
|
||||||
@ -117,17 +117,17 @@ class TestDeploy(testtools.TestCase):
|
|||||||
def test_generate_agents_pair_single_room_az_host(self):
|
def test_generate_agents_pair_single_room_az_host(self):
|
||||||
unique = 'UU1D'
|
unique = 'UU1D'
|
||||||
expected = {
|
expected = {
|
||||||
'UU1D_master_0': {
|
'UU1D_primary_0': {
|
||||||
'id': 'UU1D_master_0',
|
'id': 'UU1D_primary_0',
|
||||||
'mode': 'master',
|
'mode': 'primary',
|
||||||
'availability_zone': '%s:uno' % ZONE,
|
'availability_zone': '%s:uno' % ZONE,
|
||||||
'node': 'uno',
|
'node': 'uno',
|
||||||
'zone': ZONE,
|
'zone': ZONE,
|
||||||
'slave_id': 'UU1D_slave_0'},
|
'minion_id': 'UU1D_minion_0'},
|
||||||
'UU1D_slave_0': {
|
'UU1D_minion_0': {
|
||||||
'id': 'UU1D_slave_0',
|
'id': 'UU1D_minion_0',
|
||||||
'master_id': 'UU1D_master_0',
|
'primary_id': 'UU1D_primary_0',
|
||||||
'mode': 'slave',
|
'mode': 'minion',
|
||||||
'availability_zone': '%s:dos' % ZONE,
|
'availability_zone': '%s:dos' % ZONE,
|
||||||
'zone': ZONE,
|
'zone': ZONE,
|
||||||
'node': 'dos'},
|
'node': 'dos'},
|
||||||
@ -149,17 +149,17 @@ class TestDeploy(testtools.TestCase):
|
|||||||
def test_generate_agents_pair_single_room_best_effort(self):
|
def test_generate_agents_pair_single_room_best_effort(self):
|
||||||
unique = 'UU1D'
|
unique = 'UU1D'
|
||||||
expected = {
|
expected = {
|
||||||
'UU1D_master_0': {
|
'UU1D_primary_0': {
|
||||||
'id': 'UU1D_master_0',
|
'id': 'UU1D_primary_0',
|
||||||
'mode': 'master',
|
'mode': 'primary',
|
||||||
'availability_zone': '%s:uno' % ZONE,
|
'availability_zone': '%s:uno' % ZONE,
|
||||||
'node': 'uno',
|
'node': 'uno',
|
||||||
'zone': ZONE,
|
'zone': ZONE,
|
||||||
'slave_id': 'UU1D_slave_0'},
|
'minion_id': 'UU1D_minion_0'},
|
||||||
'UU1D_slave_0': {
|
'UU1D_minion_0': {
|
||||||
'id': 'UU1D_slave_0',
|
'id': 'UU1D_minion_0',
|
||||||
'master_id': 'UU1D_master_0',
|
'primary_id': 'UU1D_primary_0',
|
||||||
'mode': 'slave',
|
'mode': 'minion',
|
||||||
'availability_zone': '%s:uno' % ZONE,
|
'availability_zone': '%s:uno' % ZONE,
|
||||||
'zone': ZONE,
|
'zone': ZONE,
|
||||||
'node': 'uno'},
|
'node': 'uno'},
|
||||||
@ -174,17 +174,17 @@ class TestDeploy(testtools.TestCase):
|
|||||||
def test_generate_agents_pair_single_room_best_effort_three_nodes(self):
|
def test_generate_agents_pair_single_room_best_effort_three_nodes(self):
|
||||||
unique = 'UU1D'
|
unique = 'UU1D'
|
||||||
expected = {
|
expected = {
|
||||||
'UU1D_master_0': {
|
'UU1D_primary_0': {
|
||||||
'id': 'UU1D_master_0',
|
'id': 'UU1D_primary_0',
|
||||||
'mode': 'master',
|
'mode': 'primary',
|
||||||
'availability_zone': '%s:uno' % ZONE,
|
'availability_zone': '%s:uno' % ZONE,
|
||||||
'node': 'uno',
|
'node': 'uno',
|
||||||
'zone': ZONE,
|
'zone': ZONE,
|
||||||
'slave_id': 'UU1D_slave_0'},
|
'minion_id': 'UU1D_minion_0'},
|
||||||
'UU1D_slave_0': {
|
'UU1D_minion_0': {
|
||||||
'id': 'UU1D_slave_0',
|
'id': 'UU1D_minion_0',
|
||||||
'master_id': 'UU1D_master_0',
|
'primary_id': 'UU1D_primary_0',
|
||||||
'mode': 'slave',
|
'mode': 'minion',
|
||||||
'availability_zone': '%s:dos' % ZONE,
|
'availability_zone': '%s:dos' % ZONE,
|
||||||
'zone': ZONE,
|
'zone': ZONE,
|
||||||
'node': 'dos'},
|
'node': 'dos'},
|
||||||
@ -206,17 +206,17 @@ class TestDeploy(testtools.TestCase):
|
|||||||
def test_generate_agents_pair_single_room_compute_nodes_best_effort(self):
|
def test_generate_agents_pair_single_room_compute_nodes_best_effort(self):
|
||||||
unique = 'UU1D'
|
unique = 'UU1D'
|
||||||
expected = {
|
expected = {
|
||||||
'UU1D_master_0': {
|
'UU1D_primary_0': {
|
||||||
'id': 'UU1D_master_0',
|
'id': 'UU1D_primary_0',
|
||||||
'mode': 'master',
|
'mode': 'primary',
|
||||||
'availability_zone': '%s:uno' % ZONE,
|
'availability_zone': '%s:uno' % ZONE,
|
||||||
'node': 'uno',
|
'node': 'uno',
|
||||||
'zone': ZONE,
|
'zone': ZONE,
|
||||||
'slave_id': 'UU1D_slave_0'},
|
'minion_id': 'UU1D_minion_0'},
|
||||||
'UU1D_slave_0': {
|
'UU1D_minion_0': {
|
||||||
'id': 'UU1D_slave_0',
|
'id': 'UU1D_minion_0',
|
||||||
'master_id': 'UU1D_master_0',
|
'primary_id': 'UU1D_primary_0',
|
||||||
'mode': 'slave',
|
'mode': 'minion',
|
||||||
'availability_zone': '%s:uno' % ZONE,
|
'availability_zone': '%s:uno' % ZONE,
|
||||||
'zone': ZONE,
|
'zone': ZONE,
|
||||||
'node': 'uno'},
|
'node': 'uno'},
|
||||||
@ -231,45 +231,45 @@ class TestDeploy(testtools.TestCase):
|
|||||||
def test_generate_agents_pair_double_room(self):
|
def test_generate_agents_pair_double_room(self):
|
||||||
unique = 'UU1D'
|
unique = 'UU1D'
|
||||||
expected = {
|
expected = {
|
||||||
'UU1D_master_0': {
|
'UU1D_primary_0': {
|
||||||
'id': 'UU1D_master_0',
|
'id': 'UU1D_primary_0',
|
||||||
'mode': 'master',
|
'mode': 'primary',
|
||||||
'availability_zone': '%s:uno' % ZONE,
|
'availability_zone': '%s:uno' % ZONE,
|
||||||
'node': 'uno',
|
'node': 'uno',
|
||||||
'zone': ZONE,
|
'zone': ZONE,
|
||||||
'slave_id': 'UU1D_slave_0'},
|
'minion_id': 'UU1D_minion_0'},
|
||||||
'UU1D_slave_0': {
|
'UU1D_minion_0': {
|
||||||
'id': 'UU1D_slave_0',
|
'id': 'UU1D_minion_0',
|
||||||
'master_id': 'UU1D_master_0',
|
'primary_id': 'UU1D_primary_0',
|
||||||
'mode': 'slave',
|
'mode': 'minion',
|
||||||
'availability_zone': '%s:uno' % ZONE,
|
'availability_zone': '%s:uno' % ZONE,
|
||||||
'zone': ZONE,
|
'zone': ZONE,
|
||||||
'node': 'uno'},
|
'node': 'uno'},
|
||||||
'UU1D_master_1': {
|
'UU1D_primary_1': {
|
||||||
'id': 'UU1D_master_1',
|
'id': 'UU1D_primary_1',
|
||||||
'mode': 'master',
|
'mode': 'primary',
|
||||||
'availability_zone': '%s:dos' % ZONE,
|
'availability_zone': '%s:dos' % ZONE,
|
||||||
'node': 'dos',
|
'node': 'dos',
|
||||||
'zone': ZONE,
|
'zone': ZONE,
|
||||||
'slave_id': 'UU1D_slave_1'},
|
'minion_id': 'UU1D_minion_1'},
|
||||||
'UU1D_slave_1': {
|
'UU1D_minion_1': {
|
||||||
'id': 'UU1D_slave_1',
|
'id': 'UU1D_minion_1',
|
||||||
'master_id': 'UU1D_master_1',
|
'primary_id': 'UU1D_primary_1',
|
||||||
'mode': 'slave',
|
'mode': 'minion',
|
||||||
'availability_zone': '%s:dos' % ZONE,
|
'availability_zone': '%s:dos' % ZONE,
|
||||||
'zone': ZONE,
|
'zone': ZONE,
|
||||||
'node': 'dos'},
|
'node': 'dos'},
|
||||||
'UU1D_master_2': {
|
'UU1D_primary_2': {
|
||||||
'id': 'UU1D_master_2',
|
'id': 'UU1D_primary_2',
|
||||||
'mode': 'master',
|
'mode': 'primary',
|
||||||
'availability_zone': '%s:tre' % ZONE,
|
'availability_zone': '%s:tre' % ZONE,
|
||||||
'node': 'tre',
|
'node': 'tre',
|
||||||
'zone': ZONE,
|
'zone': ZONE,
|
||||||
'slave_id': 'UU1D_slave_2'},
|
'minion_id': 'UU1D_minion_2'},
|
||||||
'UU1D_slave_2': {
|
'UU1D_minion_2': {
|
||||||
'id': 'UU1D_slave_2',
|
'id': 'UU1D_minion_2',
|
||||||
'master_id': 'UU1D_master_2',
|
'primary_id': 'UU1D_primary_2',
|
||||||
'mode': 'slave',
|
'mode': 'minion',
|
||||||
'availability_zone': '%s:tre' % ZONE,
|
'availability_zone': '%s:tre' % ZONE,
|
||||||
'zone': ZONE,
|
'zone': ZONE,
|
||||||
'node': 'tre'},
|
'node': 'tre'},
|
||||||
@ -283,31 +283,31 @@ class TestDeploy(testtools.TestCase):
|
|||||||
def test_generate_agents_pair_double_room_az_host(self):
|
def test_generate_agents_pair_double_room_az_host(self):
|
||||||
unique = 'UU1D'
|
unique = 'UU1D'
|
||||||
expected = {
|
expected = {
|
||||||
'UU1D_master_0': {
|
'UU1D_primary_0': {
|
||||||
'id': 'UU1D_master_0',
|
'id': 'UU1D_primary_0',
|
||||||
'mode': 'master',
|
'mode': 'primary',
|
||||||
'availability_zone': '%s:uno' % ZONE,
|
'availability_zone': '%s:uno' % ZONE,
|
||||||
'node': 'uno',
|
'node': 'uno',
|
||||||
'zone': ZONE,
|
'zone': ZONE,
|
||||||
'slave_id': 'UU1D_slave_0'},
|
'minion_id': 'UU1D_minion_0'},
|
||||||
'UU1D_slave_0': {
|
'UU1D_minion_0': {
|
||||||
'id': 'UU1D_slave_0',
|
'id': 'UU1D_minion_0',
|
||||||
'master_id': 'UU1D_master_0',
|
'primary_id': 'UU1D_primary_0',
|
||||||
'mode': 'slave',
|
'mode': 'minion',
|
||||||
'availability_zone': '%s:uno' % ZONE,
|
'availability_zone': '%s:uno' % ZONE,
|
||||||
'zone': ZONE,
|
'zone': ZONE,
|
||||||
'node': 'uno'},
|
'node': 'uno'},
|
||||||
'UU1D_master_1': {
|
'UU1D_primary_1': {
|
||||||
'id': 'UU1D_master_1',
|
'id': 'UU1D_primary_1',
|
||||||
'mode': 'master',
|
'mode': 'primary',
|
||||||
'availability_zone': '%s:dos' % ZONE,
|
'availability_zone': '%s:dos' % ZONE,
|
||||||
'node': 'dos',
|
'node': 'dos',
|
||||||
'zone': ZONE,
|
'zone': ZONE,
|
||||||
'slave_id': 'UU1D_slave_1'},
|
'minion_id': 'UU1D_minion_1'},
|
||||||
'UU1D_slave_1': {
|
'UU1D_minion_1': {
|
||||||
'id': 'UU1D_slave_1',
|
'id': 'UU1D_minion_1',
|
||||||
'master_id': 'UU1D_master_1',
|
'primary_id': 'UU1D_primary_1',
|
||||||
'mode': 'slave',
|
'mode': 'minion',
|
||||||
'availability_zone': '%s:dos' % ZONE,
|
'availability_zone': '%s:dos' % ZONE,
|
||||||
'zone': ZONE,
|
'zone': ZONE,
|
||||||
'node': 'dos'},
|
'node': 'dos'},
|
||||||
@ -323,31 +323,31 @@ class TestDeploy(testtools.TestCase):
|
|||||||
def test_generate_agents_pair_mixed_room(self):
|
def test_generate_agents_pair_mixed_room(self):
|
||||||
unique = 'UU1D'
|
unique = 'UU1D'
|
||||||
expected = {
|
expected = {
|
||||||
'UU1D_master_0': {
|
'UU1D_primary_0': {
|
||||||
'id': 'UU1D_master_0',
|
'id': 'UU1D_primary_0',
|
||||||
'mode': 'master',
|
'mode': 'primary',
|
||||||
'availability_zone': '%s:uno' % ZONE,
|
'availability_zone': '%s:uno' % ZONE,
|
||||||
'zone': ZONE,
|
'zone': ZONE,
|
||||||
'node': 'uno',
|
'node': 'uno',
|
||||||
'slave_id': 'UU1D_slave_0'},
|
'minion_id': 'UU1D_minion_0'},
|
||||||
'UU1D_slave_0': {
|
'UU1D_minion_0': {
|
||||||
'id': 'UU1D_slave_0',
|
'id': 'UU1D_minion_0',
|
||||||
'master_id': 'UU1D_master_0',
|
'primary_id': 'UU1D_primary_0',
|
||||||
'mode': 'slave',
|
'mode': 'minion',
|
||||||
'availability_zone': '%s:dos' % ZONE,
|
'availability_zone': '%s:dos' % ZONE,
|
||||||
'zone': ZONE,
|
'zone': ZONE,
|
||||||
'node': 'dos'},
|
'node': 'dos'},
|
||||||
'UU1D_master_1': {
|
'UU1D_primary_1': {
|
||||||
'id': 'UU1D_master_1',
|
'id': 'UU1D_primary_1',
|
||||||
'mode': 'master',
|
'mode': 'primary',
|
||||||
'availability_zone': '%s:dos' % ZONE,
|
'availability_zone': '%s:dos' % ZONE,
|
||||||
'zone': ZONE,
|
'zone': ZONE,
|
||||||
'node': 'dos',
|
'node': 'dos',
|
||||||
'slave_id': 'UU1D_slave_1'},
|
'minion_id': 'UU1D_minion_1'},
|
||||||
'UU1D_slave_1': {
|
'UU1D_minion_1': {
|
||||||
'id': 'UU1D_slave_1',
|
'id': 'UU1D_minion_1',
|
||||||
'master_id': 'UU1D_master_1',
|
'primary_id': 'UU1D_primary_1',
|
||||||
'mode': 'slave',
|
'mode': 'minion',
|
||||||
'availability_zone': '%s:uno' % ZONE,
|
'availability_zone': '%s:uno' % ZONE,
|
||||||
'zone': ZONE,
|
'zone': ZONE,
|
||||||
'node': 'uno'},
|
'node': 'uno'},
|
||||||
@ -483,17 +483,17 @@ class TestDeploy(testtools.TestCase):
|
|||||||
def test_generate_agents_zones_specified(self):
|
def test_generate_agents_zones_specified(self):
|
||||||
unique = 'UU1D'
|
unique = 'UU1D'
|
||||||
expected = {
|
expected = {
|
||||||
'UU1D_master_0': {
|
'UU1D_primary_0': {
|
||||||
'id': 'UU1D_master_0',
|
'id': 'UU1D_primary_0',
|
||||||
'slave_id': 'UU1D_slave_0',
|
'minion_id': 'UU1D_minion_0',
|
||||||
'mode': 'master',
|
'mode': 'primary',
|
||||||
'availability_zone': '%s:uno' % ZONE,
|
'availability_zone': '%s:uno' % ZONE,
|
||||||
'zone': ZONE,
|
'zone': ZONE,
|
||||||
'node': 'uno'},
|
'node': 'uno'},
|
||||||
'UU1D_slave_0': {
|
'UU1D_minion_0': {
|
||||||
'id': 'UU1D_slave_0',
|
'id': 'UU1D_minion_0',
|
||||||
'master_id': 'UU1D_master_0',
|
'primary_id': 'UU1D_primary_0',
|
||||||
'mode': 'slave',
|
'mode': 'minion',
|
||||||
'availability_zone': '%s:tre' % ZONE,
|
'availability_zone': '%s:tre' % ZONE,
|
||||||
'zone': ZONE,
|
'zone': ZONE,
|
||||||
'node': 'tre'},
|
'node': 'tre'},
|
||||||
@ -515,17 +515,17 @@ class TestDeploy(testtools.TestCase):
|
|||||||
mr.side_effect = lambda x, n: x[:n]
|
mr.side_effect = lambda x, n: x[:n]
|
||||||
unique = 'UU1D'
|
unique = 'UU1D'
|
||||||
expected = {
|
expected = {
|
||||||
'UU1D_master_0': {
|
'UU1D_primary_0': {
|
||||||
'id': 'UU1D_master_0',
|
'id': 'UU1D_primary_0',
|
||||||
'slave_id': 'UU1D_slave_0',
|
'minion_id': 'UU1D_minion_0',
|
||||||
'mode': 'master',
|
'mode': 'primary',
|
||||||
'availability_zone': '%s:uno' % ZONE,
|
'availability_zone': '%s:uno' % ZONE,
|
||||||
'zone': ZONE,
|
'zone': ZONE,
|
||||||
'node': 'uno'},
|
'node': 'uno'},
|
||||||
'UU1D_slave_0': {
|
'UU1D_minion_0': {
|
||||||
'id': 'UU1D_slave_0',
|
'id': 'UU1D_minion_0',
|
||||||
'master_id': 'UU1D_master_0',
|
'primary_id': 'UU1D_primary_0',
|
||||||
'mode': 'slave',
|
'mode': 'minion',
|
||||||
'availability_zone': '%s:tre' % ZONE,
|
'availability_zone': '%s:tre' % ZONE,
|
||||||
'zone': ZONE,
|
'zone': ZONE,
|
||||||
'node': 'tre'},
|
'node': 'tre'},
|
||||||
@ -547,31 +547,31 @@ class TestDeploy(testtools.TestCase):
|
|||||||
def test_generate_agents_cross_zones(self):
|
def test_generate_agents_cross_zones(self):
|
||||||
unique = 'UU1D'
|
unique = 'UU1D'
|
||||||
expected = {
|
expected = {
|
||||||
'UU1D_master_0': {
|
'UU1D_primary_0': {
|
||||||
'id': 'UU1D_master_0',
|
'id': 'UU1D_primary_0',
|
||||||
'slave_id': 'UU1D_slave_0',
|
'minion_id': 'UU1D_minion_0',
|
||||||
'mode': 'master',
|
'mode': 'primary',
|
||||||
'availability_zone': 'nova:uno',
|
'availability_zone': 'nova:uno',
|
||||||
'zone': 'nova',
|
'zone': 'nova',
|
||||||
'node': 'uno'},
|
'node': 'uno'},
|
||||||
'UU1D_slave_0': {
|
'UU1D_minion_0': {
|
||||||
'id': 'UU1D_slave_0',
|
'id': 'UU1D_minion_0',
|
||||||
'master_id': 'UU1D_master_0',
|
'primary_id': 'UU1D_primary_0',
|
||||||
'mode': 'slave',
|
'mode': 'minion',
|
||||||
'availability_zone': 'vcenter:tre',
|
'availability_zone': 'vcenter:tre',
|
||||||
'zone': 'vcenter',
|
'zone': 'vcenter',
|
||||||
'node': 'tre'},
|
'node': 'tre'},
|
||||||
'UU1D_master_1': {
|
'UU1D_primary_1': {
|
||||||
'id': 'UU1D_master_1',
|
'id': 'UU1D_primary_1',
|
||||||
'slave_id': 'UU1D_slave_1',
|
'minion_id': 'UU1D_minion_1',
|
||||||
'mode': 'master',
|
'mode': 'primary',
|
||||||
'availability_zone': 'nova:duo',
|
'availability_zone': 'nova:duo',
|
||||||
'zone': 'nova',
|
'zone': 'nova',
|
||||||
'node': 'duo'},
|
'node': 'duo'},
|
||||||
'UU1D_slave_1': {
|
'UU1D_minion_1': {
|
||||||
'id': 'UU1D_slave_1',
|
'id': 'UU1D_minion_1',
|
||||||
'master_id': 'UU1D_master_1',
|
'primary_id': 'UU1D_primary_1',
|
||||||
'mode': 'slave',
|
'mode': 'minion',
|
||||||
'availability_zone': 'vcenter:cinco',
|
'availability_zone': 'vcenter:cinco',
|
||||||
'zone': 'vcenter',
|
'zone': 'vcenter',
|
||||||
'node': 'cinco'},
|
'node': 'cinco'},
|
||||||
@ -630,87 +630,87 @@ class TestDeploy(testtools.TestCase):
|
|||||||
|
|
||||||
def test_filter_agents_pair_single_room(self):
|
def test_filter_agents_pair_single_room(self):
|
||||||
agents = {
|
agents = {
|
||||||
'UU1D_master_0': {
|
'UU1D_primary_0': {
|
||||||
'id': 'UU1D_master_0',
|
'id': 'UU1D_primary_0',
|
||||||
'mode': 'master',
|
'mode': 'primary',
|
||||||
'node': 'uno',
|
'node': 'uno',
|
||||||
'slave_id': 'UU1D_slave_0'},
|
'minion_id': 'UU1D_minion_0'},
|
||||||
'UU1D_slave_0': {
|
'UU1D_minion_0': {
|
||||||
'id': 'UU1D_slave_0',
|
'id': 'UU1D_minion_0',
|
||||||
'master_id': 'UU1D_master_0',
|
'primary_id': 'UU1D_primary_0',
|
||||||
'mode': 'slave',
|
'mode': 'minion',
|
||||||
'node': 'dos'},
|
'node': 'dos'},
|
||||||
}
|
}
|
||||||
stack_outputs = {
|
stack_outputs = {
|
||||||
'UU1D_master_0_ip': '10.0.0.1',
|
'UU1D_primary_0_ip': '10.0.0.1',
|
||||||
'UU1D_master_0_instance_name': 'i-000001',
|
'UU1D_primary_0_instance_name': 'i-000001',
|
||||||
'UU1D_slave_0_ip': '10.0.0.2',
|
'UU1D_minion_0_ip': '10.0.0.2',
|
||||||
'UU1D_slave_0_instance_name': 'i-000002',
|
'UU1D_minion_0_instance_name': 'i-000002',
|
||||||
}
|
}
|
||||||
expected = {'UU1D_master_0': agents['UU1D_master_0'],
|
expected = {'UU1D_primary_0': agents['UU1D_primary_0'],
|
||||||
'UU1D_slave_0': agents['UU1D_slave_0']}
|
'UU1D_minion_0': agents['UU1D_minion_0']}
|
||||||
|
|
||||||
filtered = deploy.filter_agents(agents, stack_outputs)
|
filtered = deploy.filter_agents(agents, stack_outputs)
|
||||||
self.assertEqual(expected, filtered)
|
self.assertEqual(expected, filtered)
|
||||||
|
|
||||||
def test_filter_agents_pair_double_room_partially_deployed(self):
|
def test_filter_agents_pair_double_room_partially_deployed(self):
|
||||||
agents = {
|
agents = {
|
||||||
'UU1D_master_0': {
|
'UU1D_primary_0': {
|
||||||
'id': 'UU1D_master_0',
|
'id': 'UU1D_primary_0',
|
||||||
'mode': 'master',
|
'mode': 'primary',
|
||||||
'node': 'uno',
|
'node': 'uno',
|
||||||
'slave_id': 'UU1D_slave_0'},
|
'minion_id': 'UU1D_minion_0'},
|
||||||
'UU1D_slave_0': {
|
'UU1D_minion_0': {
|
||||||
'id': 'UU1D_slave_0',
|
'id': 'UU1D_minion_0',
|
||||||
'master_id': 'UU1D_master_0',
|
'primary_id': 'UU1D_primary_0',
|
||||||
'mode': 'slave',
|
'mode': 'minion',
|
||||||
'node': 'uno'},
|
'node': 'uno'},
|
||||||
'UU1D_master_1': {
|
'UU1D_primary_1': {
|
||||||
'id': 'UU1D_master_1',
|
'id': 'UU1D_primary_1',
|
||||||
'mode': 'master',
|
'mode': 'primary',
|
||||||
'node': 'dos',
|
'node': 'dos',
|
||||||
'slave_id': 'UU1D_slave_1'},
|
'minion_id': 'UU1D_minion_1'},
|
||||||
'UU1D_slave_1': {
|
'UU1D_minion_1': {
|
||||||
'id': 'UU1D_slave_1',
|
'id': 'UU1D_minion_1',
|
||||||
'master_id': 'UU1D_master_1',
|
'primary_id': 'UU1D_primary_1',
|
||||||
'mode': 'slave',
|
'mode': 'minion',
|
||||||
'node': 'dos'},
|
'node': 'dos'},
|
||||||
}
|
}
|
||||||
stack_outputs = {
|
stack_outputs = {
|
||||||
'UU1D_master_0_ip': '10.0.0.1',
|
'UU1D_primary_0_ip': '10.0.0.1',
|
||||||
'UU1D_master_0_instance_name': 'i-000001',
|
'UU1D_primary_0_instance_name': 'i-000001',
|
||||||
'UU1D_slave_0_ip': '10.0.0.2',
|
'UU1D_minion_0_ip': '10.0.0.2',
|
||||||
'UU1D_slave_0_instance_name': 'i-000002',
|
'UU1D_minion_0_instance_name': 'i-000002',
|
||||||
'UU1D_master_1_ip': '10.0.0.3',
|
'UU1D_primary_1_ip': '10.0.0.3',
|
||||||
'UU1D_master_1_instance_name': 'i-000003',
|
'UU1D_primary_1_instance_name': 'i-000003',
|
||||||
'UU1D_slave_1_instance_name': 'i-000004',
|
'UU1D_minion_1_instance_name': 'i-000004',
|
||||||
}
|
}
|
||||||
expected = {'UU1D_master_0': agents['UU1D_master_0'],
|
expected = {'UU1D_primary_0': agents['UU1D_primary_0'],
|
||||||
'UU1D_slave_0': agents['UU1D_slave_0'], }
|
'UU1D_minion_0': agents['UU1D_minion_0'], }
|
||||||
|
|
||||||
filtered = deploy.filter_agents(agents, stack_outputs)
|
filtered = deploy.filter_agents(agents, stack_outputs)
|
||||||
self.assertEqual(expected, filtered)
|
self.assertEqual(expected, filtered)
|
||||||
|
|
||||||
def test_filter_agents_pair_single_room_with_overrides(self):
|
def test_filter_agents_pair_single_room_with_overrides(self):
|
||||||
agents = {
|
agents = {
|
||||||
'UU1D_master_0': {
|
'UU1D_primary_0': {
|
||||||
'id': 'UU1D_master_0',
|
'id': 'UU1D_primary_0',
|
||||||
'mode': 'master',
|
'mode': 'primary',
|
||||||
'node': 'uno',
|
'node': 'uno',
|
||||||
'slave_id': 'UU1D_slave_0'},
|
'minion_id': 'UU1D_minion_0'},
|
||||||
'UU1D_slave_0': {
|
'UU1D_minion_0': {
|
||||||
'id': 'UU1D_slave_0',
|
'id': 'UU1D_minion_0',
|
||||||
'master_id': 'UU1D_master_0',
|
'primary_id': 'UU1D_primary_0',
|
||||||
'mode': 'slave',
|
'mode': 'minion',
|
||||||
'node': 'dos'},
|
'node': 'dos'},
|
||||||
}
|
}
|
||||||
ips = {
|
ips = {
|
||||||
'UU1D_master_0': '10.0.0.2',
|
'UU1D_primary_0': '10.0.0.2',
|
||||||
'UU1D_slave_0': '10.0.0.4',
|
'UU1D_minion_0': '10.0.0.4',
|
||||||
}
|
}
|
||||||
stack_outputs = {}
|
stack_outputs = {}
|
||||||
expected = {'UU1D_master_0': agents['UU1D_master_0'],
|
expected = {'UU1D_primary_0': agents['UU1D_primary_0'],
|
||||||
'UU1D_slave_0': agents['UU1D_slave_0']}
|
'UU1D_minion_0': agents['UU1D_minion_0']}
|
||||||
|
|
||||||
def override(agent):
|
def override(agent):
|
||||||
return dict(ip=ips[agent['id']])
|
return dict(ip=ips[agent['id']])
|
||||||
@ -718,7 +718,8 @@ class TestDeploy(testtools.TestCase):
|
|||||||
filtered = deploy.filter_agents(agents, stack_outputs,
|
filtered = deploy.filter_agents(agents, stack_outputs,
|
||||||
override=override)
|
override=override)
|
||||||
self.assertEqual(expected, filtered)
|
self.assertEqual(expected, filtered)
|
||||||
self.assertEqual(filtered['UU1D_master_0']['ip'], ips['UU1D_master_0'])
|
self.assertEqual(filtered['UU1D_primary_0']
|
||||||
|
['ip'], ips['UU1D_primary_0'])
|
||||||
|
|
||||||
def test_prepare_for_cross_az(self):
|
def test_prepare_for_cross_az(self):
|
||||||
source = [
|
source = [
|
||||||
@ -797,28 +798,30 @@ class TestDeploy(testtools.TestCase):
|
|||||||
create_stack_mock.return_value = uuid.uuid4()
|
create_stack_mock.return_value = uuid.uuid4()
|
||||||
|
|
||||||
heat_outputs = {
|
heat_outputs = {
|
||||||
stack_name + '_master_0_instance_name': 'instance-0000052f',
|
stack_name + '_primary_0_instance_name': 'instance-0000052f',
|
||||||
stack_name + '_master_0_ip': '192.0.0.3',
|
stack_name + '_primary_0_ip': '192.0.0.3',
|
||||||
stack_name + '_slave_0_ip': '192.0.0.4',
|
stack_name + '_minion_0_ip': '192.0.0.4',
|
||||||
stack_name + '_slave_0_instance_name': 'instance-0000052c'}
|
stack_name + '_minion_0_instance_name': 'instance-0000052c'}
|
||||||
|
|
||||||
stack_output_mock.return_value = heat_outputs
|
stack_output_mock.return_value = heat_outputs
|
||||||
|
|
||||||
expected = {
|
expected = {
|
||||||
'shaker_abcdefg_master_0': {'availability_zone': 'nova:host-1',
|
'shaker_abcdefg_primary_0': {'availability_zone': 'nova:host-1',
|
||||||
'id': 'shaker_abcdefg_master_0',
|
'id': 'shaker_abcdefg_primary_0',
|
||||||
'ip': cidr + '.3',
|
'ip': cidr + '.3',
|
||||||
'mode': 'master',
|
'mode': 'primary',
|
||||||
|
'node': 'host-1',
|
||||||
|
'minion_id':
|
||||||
|
'shaker_abcdefg_minion_0',
|
||||||
|
'zone': 'nova'},
|
||||||
|
'shaker_abcdefg_minion_0': {'availability_zone': 'nova:host-1',
|
||||||
|
'id': 'shaker_abcdefg_minion_0',
|
||||||
|
'ip': cidr + '.4',
|
||||||
|
'primary_id':
|
||||||
|
'shaker_abcdefg_primary_0',
|
||||||
|
'mode': 'minion',
|
||||||
'node': 'host-1',
|
'node': 'host-1',
|
||||||
'slave_id': 'shaker_abcdefg_slave_0',
|
'zone': 'nova'}}
|
||||||
'zone': 'nova'},
|
|
||||||
'shaker_abcdefg_slave_0': {'availability_zone': 'nova:host-1',
|
|
||||||
'id': 'shaker_abcdefg_slave_0',
|
|
||||||
'ip': cidr + '.4',
|
|
||||||
'master_id': 'shaker_abcdefg_master_0',
|
|
||||||
'mode': 'slave',
|
|
||||||
'node': 'host-1',
|
|
||||||
'zone': 'nova'}}
|
|
||||||
|
|
||||||
agents = deployment._deploy_from_hot(scenario['deployment'],
|
agents = deployment._deploy_from_hot(scenario['deployment'],
|
||||||
server_endpoint,
|
server_endpoint,
|
||||||
@ -856,28 +859,30 @@ class TestDeploy(testtools.TestCase):
|
|||||||
create_stack_mock.return_value = uuid.uuid4()
|
create_stack_mock.return_value = uuid.uuid4()
|
||||||
|
|
||||||
heat_outputs = {
|
heat_outputs = {
|
||||||
stack_name + '_master_0_instance_name': 'instance-0000052f',
|
stack_name + '_primary_0_instance_name': 'instance-0000052f',
|
||||||
stack_name + '_master_0_ip': '10.0.0.3',
|
stack_name + '_primary_0_ip': '10.0.0.3',
|
||||||
stack_name + '_slave_0_ip': '10.0.0.4',
|
stack_name + '_minion_0_ip': '10.0.0.4',
|
||||||
stack_name + '_slave_0_instance_name': 'instance-0000052c'}
|
stack_name + '_minion_0_instance_name': 'instance-0000052c'}
|
||||||
|
|
||||||
stack_output_mock.return_value = heat_outputs
|
stack_output_mock.return_value = heat_outputs
|
||||||
|
|
||||||
expected = {
|
expected = {
|
||||||
'shaker_abcdefg_master_0': {'availability_zone': 'nova:host-1',
|
'shaker_abcdefg_primary_0': {'availability_zone': 'nova:host-1',
|
||||||
'id': 'shaker_abcdefg_master_0',
|
'id': 'shaker_abcdefg_primary_0',
|
||||||
'ip': '10.0.0.3',
|
'ip': '10.0.0.3',
|
||||||
'mode': 'master',
|
'mode': 'primary',
|
||||||
|
'node': 'host-1',
|
||||||
|
'minion_id':
|
||||||
|
'shaker_abcdefg_minion_0',
|
||||||
|
'zone': 'nova'},
|
||||||
|
'shaker_abcdefg_minion_0': {'availability_zone': 'nova:host-1',
|
||||||
|
'id': 'shaker_abcdefg_minion_0',
|
||||||
|
'ip': '10.0.0.4',
|
||||||
|
'primary_id':
|
||||||
|
'shaker_abcdefg_primary_0',
|
||||||
|
'mode': 'minion',
|
||||||
'node': 'host-1',
|
'node': 'host-1',
|
||||||
'slave_id': 'shaker_abcdefg_slave_0',
|
'zone': 'nova'}}
|
||||||
'zone': 'nova'},
|
|
||||||
'shaker_abcdefg_slave_0': {'availability_zone': 'nova:host-1',
|
|
||||||
'id': 'shaker_abcdefg_slave_0',
|
|
||||||
'ip': '10.0.0.4',
|
|
||||||
'master_id': 'shaker_abcdefg_master_0',
|
|
||||||
'mode': 'slave',
|
|
||||||
'node': 'host-1',
|
|
||||||
'zone': 'nova'}}
|
|
||||||
|
|
||||||
agents = deployment._deploy_from_hot(scenario['deployment'],
|
agents = deployment._deploy_from_hot(scenario['deployment'],
|
||||||
server_endpoint,
|
server_endpoint,
|
||||||
@ -1174,32 +1179,32 @@ class TestDeploy(testtools.TestCase):
|
|||||||
|
|
||||||
def test_distribute_agents(self):
|
def test_distribute_agents(self):
|
||||||
agents = {
|
agents = {
|
||||||
'UU1D_master_0': {
|
'UU1D_primary_0': {
|
||||||
'id': 'UU1D_master_0',
|
'id': 'UU1D_primary_0',
|
||||||
'mode': 'master',
|
'mode': 'primary',
|
||||||
'ip': '10.0.0.3',
|
'ip': '10.0.0.3',
|
||||||
'slave_id': 'UU1D_slave_0'},
|
'minion_id': 'UU1D_minion_0'},
|
||||||
'UU1D_slave_0': {
|
'UU1D_minion_0': {
|
||||||
'id': 'UU1D_slave_0',
|
'id': 'UU1D_minion_0',
|
||||||
'master_id': 'UU1D_master_0',
|
'primary_id': 'UU1D_primary_0',
|
||||||
'ip': '10.0.0.4',
|
'ip': '10.0.0.4',
|
||||||
'mode': 'slave'},
|
'mode': 'minion'},
|
||||||
'UU1D_master_1': {
|
'UU1D_primary_1': {
|
||||||
'id': 'UU1D_master_1',
|
'id': 'UU1D_primary_1',
|
||||||
'mode': 'master',
|
'mode': 'primary',
|
||||||
'ip': '10.0.0.5',
|
'ip': '10.0.0.5',
|
||||||
'slave_id': 'UU1D_slave_1'},
|
'minion_id': 'UU1D_minion_1'},
|
||||||
'UU1D_slave_1': {
|
'UU1D_minion_1': {
|
||||||
'id': 'UU1D_slave_1',
|
'id': 'UU1D_minion_1',
|
||||||
'master_id': 'UU1D_master_1',
|
'primary_id': 'UU1D_primary_1',
|
||||||
'ip': '10.0.0.6',
|
'ip': '10.0.0.6',
|
||||||
'mode': 'slave'},
|
'mode': 'minion'},
|
||||||
}
|
}
|
||||||
hosts = {
|
hosts = {
|
||||||
'UU1D_master_0': '001',
|
'UU1D_primary_0': '001',
|
||||||
'UU1D_slave_0': '002',
|
'UU1D_minion_0': '002',
|
||||||
'UU1D_master_1': '003',
|
'UU1D_primary_1': '003',
|
||||||
'UU1D_slave_1': '004',
|
'UU1D_minion_1': '004',
|
||||||
}
|
}
|
||||||
|
|
||||||
expected = copy.deepcopy(agents)
|
expected = copy.deepcopy(agents)
|
||||||
@ -1214,47 +1219,47 @@ class TestDeploy(testtools.TestCase):
|
|||||||
# todo refactor code to use lists instead of dicts
|
# todo refactor code to use lists instead of dicts
|
||||||
def _test_distribute_agents_collision(self):
|
def _test_distribute_agents_collision(self):
|
||||||
agents = {
|
agents = {
|
||||||
'UU1D_master_0': {
|
'UU1D_primary_0': {
|
||||||
'id': 'UU1D_master_0',
|
'id': 'UU1D_primary_0',
|
||||||
'mode': 'master',
|
'mode': 'primary',
|
||||||
'ip': '10.0.0.3',
|
'ip': '10.0.0.3',
|
||||||
'slave_id': 'UU1D_slave_0'},
|
'minion_id': 'UU1D_minion_0'},
|
||||||
'UU1D_slave_0': {
|
'UU1D_minion_0': {
|
||||||
'id': 'UU1D_slave_0',
|
'id': 'UU1D_minion_0',
|
||||||
'master_id': 'UU1D_master_0',
|
'primary_id': 'UU1D_primary_0',
|
||||||
'ip': '10.0.0.4',
|
'ip': '10.0.0.4',
|
||||||
'mode': 'slave'},
|
'mode': 'minion'},
|
||||||
'UU1D_master_1': {
|
'UU1D_primary_1': {
|
||||||
'id': 'UU1D_master_1',
|
'id': 'UU1D_primary_1',
|
||||||
'mode': 'master',
|
'mode': 'primary',
|
||||||
'ip': '10.0.0.5',
|
'ip': '10.0.0.5',
|
||||||
'slave_id': 'UU1D_slave_1'},
|
'minion_id': 'UU1D_minion_1'},
|
||||||
'UU1D_slave_1': {
|
'UU1D_minion_1': {
|
||||||
'id': 'UU1D_slave_1',
|
'id': 'UU1D_minion_1',
|
||||||
'master_id': 'UU1D_master_1',
|
'primary_id': 'UU1D_primary_1',
|
||||||
'ip': '10.0.0.6',
|
'ip': '10.0.0.6',
|
||||||
'mode': 'slave'},
|
'mode': 'minion'},
|
||||||
}
|
}
|
||||||
hosts = {
|
hosts = {
|
||||||
'UU1D_master_0': '001',
|
'UU1D_primary_0': '001',
|
||||||
'UU1D_slave_0': '001', # collides with master_0
|
'UU1D_minion_0': '001', # collides with primary_0
|
||||||
'UU1D_master_1': '003',
|
'UU1D_primary_1': '003',
|
||||||
'UU1D_slave_1': '004',
|
'UU1D_minion_1': '004',
|
||||||
}
|
}
|
||||||
|
|
||||||
expected = {
|
expected = {
|
||||||
'UU1D_master_0': {
|
'UU1D_primary_0': {
|
||||||
'id': 'UU1D_master_0',
|
'id': 'UU1D_primary_0',
|
||||||
'mode': 'master',
|
'mode': 'primary',
|
||||||
'ip': '10.0.0.3',
|
'ip': '10.0.0.3',
|
||||||
'node': '001',
|
'node': '001',
|
||||||
'slave_id': 'UU1D_slave_1'},
|
'minion_id': 'UU1D_minion_1'},
|
||||||
'UU1D_slave_1': {
|
'UU1D_minion_1': {
|
||||||
'id': 'UU1D_slave_1',
|
'id': 'UU1D_minion_1',
|
||||||
'master_id': 'UU1D_master_0',
|
'primary_id': 'UU1D_primary_0',
|
||||||
'ip': '10.0.0.6',
|
'ip': '10.0.0.6',
|
||||||
'node': '004',
|
'node': '004',
|
||||||
'mode': 'slave'},
|
'mode': 'minion'},
|
||||||
}
|
}
|
||||||
|
|
||||||
observed = deploy.distribute_agents(agents, lambda x: hosts[x])
|
observed = deploy.distribute_agents(agents, lambda x: hosts[x])
|
||||||
|
@ -19,7 +19,7 @@ from shaker.engine.executors import flent
|
|||||||
|
|
||||||
|
|
||||||
IP = '10.0.0.10'
|
IP = '10.0.0.10'
|
||||||
AGENT = {'slave': {'ip': IP}}
|
AGENT = {'minion': {'ip': IP}}
|
||||||
|
|
||||||
|
|
||||||
class TestFlentExecutor(testtools.TestCase):
|
class TestFlentExecutor(testtools.TestCase):
|
||||||
|
@ -20,7 +20,7 @@ from shaker.engine.executors import iperf
|
|||||||
|
|
||||||
|
|
||||||
IP = '10.0.0.10'
|
IP = '10.0.0.10'
|
||||||
AGENT = {'slave': {'ip': IP}}
|
AGENT = {'minion': {'ip': IP}}
|
||||||
|
|
||||||
|
|
||||||
class TestIperfGraphExecutor(testtools.TestCase):
|
class TestIperfGraphExecutor(testtools.TestCase):
|
||||||
|
@ -19,7 +19,7 @@ from shaker.engine.executors import netperf
|
|||||||
|
|
||||||
|
|
||||||
IP = '10.0.0.10'
|
IP = '10.0.0.10'
|
||||||
AGENT = {'slave': {'ip': IP}}
|
AGENT = {'minion': {'ip': IP}}
|
||||||
|
|
||||||
|
|
||||||
class TestNetperfExecutor(testtools.TestCase):
|
class TestNetperfExecutor(testtools.TestCase):
|
||||||
|
@ -27,22 +27,22 @@ class TestServer(testtools.TestCase):
|
|||||||
|
|
||||||
def test_extend_agents(self):
|
def test_extend_agents(self):
|
||||||
agents_map = {
|
agents_map = {
|
||||||
'UU1D_master_0': {
|
'UU1D_primary_0': {
|
||||||
'id': 'UU1D_master_0',
|
'id': 'UU1D_primary_0',
|
||||||
'mode': 'master',
|
'mode': 'primary',
|
||||||
'node': 'uno',
|
'node': 'uno',
|
||||||
'slave_id': 'UU1D_slave_0'},
|
'minion_id': 'UU1D_minion_0'},
|
||||||
'UU1D_slave_0': {
|
'UU1D_minion_0': {
|
||||||
'id': 'UU1D_slave_0',
|
'id': 'UU1D_minion_0',
|
||||||
'master_id': 'UU1D_master_0',
|
'primary_id': 'UU1D_primary_0',
|
||||||
'mode': 'slave',
|
'mode': 'minion',
|
||||||
'node': 'dos'},
|
'node': 'dos'},
|
||||||
}
|
}
|
||||||
agents = server._extend_agents(agents_map)
|
agents = server._extend_agents(agents_map)
|
||||||
self.assertDictContainsSubset(agents['UU1D_master_0']['slave'],
|
self.assertDictContainsSubset(agents['UU1D_primary_0']['minion'],
|
||||||
agents['UU1D_slave_0'])
|
agents['UU1D_minion_0'])
|
||||||
self.assertDictContainsSubset(agents['UU1D_slave_0']['master'],
|
self.assertDictContainsSubset(agents['UU1D_minion_0']['primary'],
|
||||||
agents['UU1D_master_0'])
|
agents['UU1D_primary_0'])
|
||||||
|
|
||||||
def test_pick_agents_full(self):
|
def test_pick_agents_full(self):
|
||||||
agents = {}
|
agents = {}
|
||||||
@ -54,18 +54,18 @@ class TestServer(testtools.TestCase):
|
|||||||
for arr in server._pick_agents(agents, None)]
|
for arr in server._pick_agents(agents, None)]
|
||||||
self.assertEqual([set(range(10))], picked)
|
self.assertEqual([set(range(10))], picked)
|
||||||
|
|
||||||
def test_pick_agents_full_filter_slaves(self):
|
def test_pick_agents_full_filter_minions(self):
|
||||||
agents = {}
|
agents = {}
|
||||||
for i in range(10):
|
for i in range(10):
|
||||||
agents['master_%s' % i] = {
|
agents['primary_%s' % i] = {
|
||||||
'id': 'master_%s' % i, 'mode': 'master', 'node': 'uno',
|
'id': 'primary_%s' % i, 'mode': 'primary', 'node': 'uno',
|
||||||
}
|
}
|
||||||
agents['slave_%s' % i] = {
|
agents['minion_%s' % i] = {
|
||||||
'id': 'slave_%s' % i, 'mode': 'slave', 'node': 'uno',
|
'id': 'minion_%s' % i, 'mode': 'minion', 'node': 'uno',
|
||||||
}
|
}
|
||||||
picked = [set(a['id'] for a in arr)
|
picked = [set(a['id'] for a in arr)
|
||||||
for arr in server._pick_agents(agents, None)]
|
for arr in server._pick_agents(agents, None)]
|
||||||
self.assertEqual([set('master_%s' % i for i in range(10))],
|
self.assertEqual([set('primary_%s' % i for i in range(10))],
|
||||||
picked)
|
picked)
|
||||||
|
|
||||||
def test_pick_agents_linear(self):
|
def test_pick_agents_linear(self):
|
||||||
|