Add documentation
Change-Id: I4ab97018c6a2776da76b7b36b86cf17340cab3dd
This commit is contained in:
parent
acdd2b2262
commit
4de3521e80
46
README.rst
46
README.rst
@ -1,34 +1,42 @@
|
||||
Shaker
|
||||
======
|
||||
|
||||
Shake VMs with our sheer-class tests!
|
||||
The distributed data-plane testing tool for OpenStack.
|
||||
|
||||
Installation
|
||||
Features
|
||||
--------
|
||||
|
||||
* User-defined topology via Heat templates
|
||||
* Simultaneously test execution on multiple instances
|
||||
* Pluggable tools
|
||||
* Interactive report with stats and charts
|
||||
|
||||
Requirements
|
||||
------------
|
||||
|
||||
The tool consists of a single server running on master node and set of dynamically
|
||||
provisioned agents. In order to run the server needs to know OpenStack parameters
|
||||
(credentials, auth_url), they can be set via environment (e.g. by sourcing openrc file)
|
||||
or via parameters.
|
||||
* Shaker server routable from OpenStack cloud
|
||||
* Admin-user access to OpenStack API
|
||||
|
||||
To install:
|
||||
1. ``git clone git://git.openstack.org/stackforge/shaker``
|
||||
2. ``python setup.py install`` - installs the tool and all its python dependencies
|
||||
3. ``shaker-image-builder`` - builds image for agent VMs inside OpenStack
|
||||
Setup
|
||||
-----
|
||||
|
||||
Note: image builder is able to create Nova flavor optimized for the image and this requires
|
||||
admin user privileges. However if the flavor is already exists then it can be provided via
|
||||
``flavor-name`` config parameter and the tool executed from an ordinary user.
|
||||
1. ``pip install pyshaker`` - installs the tool and all its python dependencies
|
||||
2. ``shaker-image-builder`` - builds shaker image and stores it in Glance
|
||||
|
||||
How to run
|
||||
----------
|
||||
1. ``shaker --server-endpoint <host>:<port> --scenario <scenario-file> --report <report-file>``
|
||||
|
||||
During the run the tool deploys topology, spawns instances, distributes
|
||||
tasks among instances and generates report in HTML format.
|
||||
Run
|
||||
---
|
||||
|
||||
``shaker --server-endpoint <host:port> --scenario <scenario.yaml> --report <report.html>``
|
||||
|
||||
where:
|
||||
* ``<host:port>`` - address of machine where Shaker is deployed and any free port
|
||||
* ``<scenario.yaml>`` - the scenario to execute; L2, L3 east-west and L3 north-south already included
|
||||
* ``<report.html>`` - file to store the report
|
||||
|
||||
|
||||
Links
|
||||
-----
|
||||
* Launchpad - https://launchpad.net/shaker/
|
||||
* Docs - http://shaker-docs.readthedocs.org/
|
||||
* Docs - http://pyshaker.readthedocs.org/
|
||||
* PyPi - https://pypi.python.org/pypi/pyshaker/
|
||||
|
50
doc/source/architecture.rst
Normal file
50
doc/source/architecture.rst
Normal file
@ -0,0 +1,50 @@
|
||||
============
|
||||
Architecture
|
||||
============
|
||||
|
||||
Shaker tool consists of server and agent modules. The server is executed by ``shaker`` command
|
||||
and is responsible for deployment of instances, execution of tests as specified in the scenario,
|
||||
for results processing and report generation. The agent is light-weight and polls tasks from
|
||||
the server and replies with the results. Agents have connectivity to the server, but the server does not
|
||||
(so it is easy to keep agents behind NAT).
|
||||
|
||||
.. image:: images/architecture.svg
|
||||
|
||||
|
||||
Under the Hood
|
||||
^^^^^^^^^^^^^^
|
||||
|
||||
Scenario execution involves the following steps:
|
||||
|
||||
1. User launches shaker with the following minimum set of parameters::
|
||||
|
||||
shaker --server-endpoint <host:port> --scenario <scenario> --report <report>
|
||||
|
||||
where:
|
||||
* host:port - address of the machine where Shaker is installed and port is some arbitrary free port to bind the server to;
|
||||
* scenario - file name of the scenario (yaml file);
|
||||
* report - file name where report will be saved.
|
||||
|
||||
2. Shaker verifies connection to OpenStack. The parameters are taken from set of os-* params or from the env (``openrc``).
|
||||
|
||||
3. Based on ``accommodation`` parameter the list of agents is generated.
|
||||
|
||||
4. The topology is deployed with help of Heat. The list of agents is extended with IP addresses and instance names.
|
||||
|
||||
5. Shaker waits for all agents to connect. Once all agents are alive it means that the Quorum is full and everyone ready to execute the tests.
|
||||
|
||||
6. Shaker starts tests one by one in order they listed in the scenario. The test definition is converted into the actual command that will be
|
||||
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
|
||||
are involved. Slave agents are used as back-end for corresponding commands (i.e. they run iperf in server mode).
|
||||
|
||||
7. Agents send their results to the server. Once all replies are received the test execution meant to be finished. If some agent didn't make it in
|
||||
dedicated time it is marked as lost.
|
||||
|
||||
8. Once all tests are executed Shaker can output the raw result in JSON format (option ``--output``).
|
||||
|
||||
9. Shaker clears the topology with help of Heat.
|
||||
|
||||
10. Shaker calculates statistics and aggregated charts. If there are any SLA statements they are also evaluated, the result can be stored in subunit format
|
||||
(option ``--subunit``).
|
||||
|
||||
11. Shaker generates report in HTML format.
|
78
doc/source/contributing.rst
Normal file
78
doc/source/contributing.rst
Normal file
@ -0,0 +1,78 @@
|
||||
============
|
||||
Contributing
|
||||
============
|
||||
|
||||
Contribute to Shaker
|
||||
--------------------
|
||||
|
||||
Shaker follows standard OpenStack contribution workflow as described at http://docs.openstack.org/infra/manual/developers.html
|
||||
|
||||
|
||||
Start working
|
||||
^^^^^^^^^^^^^
|
||||
|
||||
1. Clone the repo::
|
||||
|
||||
$ git clone git://git.openstack.org/stackforge/shaker
|
||||
|
||||
2. From the root of your workspace, check out a new branch to work on::
|
||||
|
||||
$ git checkout -b <TOPIC-BRANCH>
|
||||
|
||||
3. Implement your code
|
||||
|
||||
|
||||
Before Commit
|
||||
^^^^^^^^^^^^^
|
||||
|
||||
4. Make sure your code works by running the tests::
|
||||
|
||||
$ tox
|
||||
|
||||
By default tox executes the same set of tests as configured in Jenkins, i.e.: py34 and py27 unit tests,
|
||||
pep8 style check and documentation build.
|
||||
|
||||
5. If there are any changes in config parameters, also do::
|
||||
|
||||
$ tox -egenconfig
|
||||
|
||||
This job updates sample config file as well as documentation on CLI utils.
|
||||
|
||||
|
||||
Submit Review
|
||||
^^^^^^^^^^^^^
|
||||
|
||||
6. Commit the code::
|
||||
|
||||
$ git commit -a
|
||||
|
||||
Commit message should indicate what the change is, for a bug fix commit it needs to contain reference to Launchpad bug number.
|
||||
|
||||
7. Submit the review::
|
||||
|
||||
$ git review
|
||||
|
||||
8. If the code is approved with a +2 review, Gerrit will automatically merge your code.
|
||||
|
||||
|
||||
Bug Tracking
|
||||
------------
|
||||
|
||||
Bugs are tracked at Launchpad:
|
||||
|
||||
https://bugs.launchpad.net/shaker
|
||||
|
||||
|
||||
Developer's Guide of OpenStack
|
||||
------------------------------
|
||||
|
||||
If you would like to contribute to the development of OpenStack, you must follow the steps in this page:
|
||||
|
||||
http://docs.openstack.org/infra/manual/developers.html
|
||||
|
||||
Once those steps have been completed, changes to OpenStack should be submitted for review via the Gerrit tool, following the workflow documented at:
|
||||
|
||||
http://docs.openstack.org/infra/manual/developers.html#development-workflow
|
||||
|
||||
Pull requests submitted through GitHub will be ignored.
|
||||
|
67
doc/source/examples.rst
Normal file
67
doc/source/examples.rst
Normal file
@ -0,0 +1,67 @@
|
||||
========
|
||||
Examples
|
||||
========
|
||||
|
||||
L2 Same Domain
|
||||
--------------
|
||||
|
||||
This scenario tests the bandwidth between pairs of instances in the same virtual network (L2 domain).
|
||||
Each instance is deployed on own compute node. The test increases the load from 1 pair until all
|
||||
available instances are used.
|
||||
|
||||
.. image:: images/topology_l2.png
|
||||
|
||||
How To Run
|
||||
^^^^^^^^^^
|
||||
.. code::
|
||||
|
||||
shaker --server-endpoint <host:port> --scenario <full_l2.yaml> --report <full_l2.html>
|
||||
|
||||
Scenario
|
||||
^^^^^^^^
|
||||
|
||||
.. literalinclude:: ../../scenarios/networking/full_l2.yaml
|
||||
|
||||
|
||||
L3 East-West
|
||||
------------
|
||||
|
||||
This scenario tests the bandwidth between pairs of instances deployed in different virtual networks
|
||||
plugged into the same router. Each instance is deployed on its own compute node. The test increases the load
|
||||
from 1 pair pair until all available instances are used.
|
||||
|
||||
.. image:: images/topology_l3_east_west.png
|
||||
|
||||
How To Run
|
||||
^^^^^^^^^^
|
||||
.. code::
|
||||
|
||||
shaker --server-endpoint <host:port> --scenario <full_l3_east_west.yaml> --report <full_l3_east_west.html>
|
||||
|
||||
Scenario
|
||||
^^^^^^^^
|
||||
|
||||
.. literalinclude:: ../../scenarios/networking/full_l3_east_west.yaml
|
||||
|
||||
|
||||
|
||||
L3 North-South
|
||||
--------------
|
||||
|
||||
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 floating IP.
|
||||
Each instance is deployed on its own compute node. The test increases the load from 1 pair pair until
|
||||
all available instances are used.
|
||||
|
||||
.. image:: images/topology_l3_north_south.png
|
||||
|
||||
How To Run
|
||||
^^^^^^^^^^
|
||||
.. code::
|
||||
|
||||
shaker --server-endpoint <host:port> --scenario <full_l3_north_south.yaml> --report <full_l3_north_south.html>
|
||||
|
||||
Scenario
|
||||
^^^^^^^^
|
||||
|
||||
.. literalinclude:: ../../scenarios/networking/full_l3_north_south.yaml
|
359
doc/source/images/accommodation_double_room.svg
Normal file
359
doc/source/images/accommodation_double_room.svg
Normal file
@ -0,0 +1,359 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="210mm"
|
||||
height="100mm"
|
||||
viewBox="0 0 744.09449 354.3307"
|
||||
id="svg2"
|
||||
version="1.1"
|
||||
inkscape:version="0.91 r13725"
|
||||
sodipodi:docname="accommodation_double_room.svg"
|
||||
inkscape:export-filename="/home/ishakhat/Work/shaker/doc/source/images/architecture.png"
|
||||
inkscape:export-xdpi="90"
|
||||
inkscape:export-ydpi="90">
|
||||
<defs
|
||||
id="defs4">
|
||||
<marker
|
||||
inkscape:isstock="true"
|
||||
style="overflow:visible"
|
||||
id="marker4699"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow1Mend">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
transform="matrix(-0.4,0,0,-0.4,-4,0)"
|
||||
style="fill:#37c8ab;fill-opacity:1;fill-rule:evenodd;stroke:#37c8ab;stroke-width:1pt;stroke-opacity:1"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
|
||||
id="path4701" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="Arrow1Mend"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="Arrow1Mend"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
id="path4426"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
|
||||
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
|
||||
transform="matrix(-0.4,0,0,-0.4,-4,0)"
|
||||
inkscape:connector-curvature="0" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="Arrow1Mend"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="marker4305"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4307"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
|
||||
style="fill:#ff7f2a;fill-opacity:1;fill-rule:evenodd;stroke:#ff7f2a;stroke-width:1pt;stroke-opacity:1"
|
||||
transform="matrix(-0.4,0,0,-0.4,-4,0)" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:isstock="true"
|
||||
style="overflow:visible"
|
||||
id="marker4265"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow1Mend">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
transform="matrix(-0.4,0,0,-0.4,-4,0)"
|
||||
style="fill:#ff7f2a;fill-opacity:1;fill-rule:evenodd;stroke:#ff7f2a;stroke-width:1pt;stroke-opacity:1"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
|
||||
id="path4267" />
|
||||
</marker>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1.4"
|
||||
inkscape:cx="381.46369"
|
||||
inkscape:cy="259.20889"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
showguides="true"
|
||||
inkscape:guide-bbox="true"
|
||||
inkscape:window-width="1855"
|
||||
inkscape:window-height="1056"
|
||||
inkscape:window-x="65"
|
||||
inkscape:window-y="24"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata7">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-698.0315)">
|
||||
<rect
|
||||
style="fill:none;stroke:#e6e6e6;stroke-width:3.6471231;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="rect4703"
|
||||
width="647.29901"
|
||||
height="301.79739"
|
||||
x="47.405239"
|
||||
y="723.89954"
|
||||
rx="7.3739171"
|
||||
ry="11.274119" />
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text4215"
|
||||
y="742.11792"
|
||||
x="379.08273"
|
||||
style="font-style:normal;font-weight:normal;font-size:17.25123024px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"
|
||||
transform="scale(0.97958908,1.0208362)"><tspan
|
||||
y="742.11792"
|
||||
x="379.08273"
|
||||
sodipodi:role="line"
|
||||
id="tspan4217"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:center;text-anchor:middle;fill:#000000">accomodation: [pair double_room]</tspan></text>
|
||||
<rect
|
||||
style="fill:#b3b3b3;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:3, 6;stroke-dashoffset:0;stroke-opacity:0.59215686"
|
||||
id="rect4791"
|
||||
width="95"
|
||||
height="221.19464"
|
||||
x="72.438728"
|
||||
y="778.72052"
|
||||
rx="5.0763359"
|
||||
ry="6.7910633" />
|
||||
<text
|
||||
transform="matrix(0,-0.97958908,1.0208362,0,0,0)"
|
||||
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:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="-907.52356"
|
||||
y="96.334244"
|
||||
id="text4793"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
style="text-align:center;text-anchor:middle;fill:#ffffff"
|
||||
id="tspan4797"
|
||||
sodipodi:role="line"
|
||||
x="-907.52356"
|
||||
y="96.334244">compute node-1</tspan></text>
|
||||
<rect
|
||||
style="fill:#00aad4;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:3, 6;stroke-dashoffset:0;stroke-opacity:0.59215686"
|
||||
id="rect4801"
|
||||
width="42.142857"
|
||||
height="95.714287"
|
||||
x="112.79585"
|
||||
y="790.14905"
|
||||
rx="6.923945"
|
||||
ry="5.3510919" />
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text4803"
|
||||
y="135.38878"
|
||||
x="-855.45026"
|
||||
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:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"
|
||||
transform="matrix(0,-0.97958908,1.0208362,0,0,0)"><tspan
|
||||
y="135.38878"
|
||||
x="-855.45026"
|
||||
sodipodi:role="line"
|
||||
id="tspan4805"
|
||||
style="text-align:center;text-anchor:middle;fill:#ffffff">master_1</tspan></text>
|
||||
<rect
|
||||
ry="5.3510919"
|
||||
rx="6.923945"
|
||||
y="891.57764"
|
||||
x="112.79585"
|
||||
height="95.714287"
|
||||
width="42.142857"
|
||||
id="rect4813"
|
||||
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" />
|
||||
<text
|
||||
transform="matrix(0,-0.97958908,1.0208362,0,0,0)"
|
||||
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:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="-958.99225"
|
||||
y="135.65411"
|
||||
id="text4815"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
style="text-align:center;text-anchor:middle;fill:#ffffff"
|
||||
id="tspan4817"
|
||||
sodipodi:role="line"
|
||||
x="-958.99225"
|
||||
y="135.65411">slave_1</tspan></text>
|
||||
<text
|
||||
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"
|
||||
x="228.77196"
|
||||
y="233.99899"
|
||||
id="text4280"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4282"
|
||||
x="228.77196"
|
||||
y="233.99899" /></text>
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:5.81815529;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:5.81815535, 11.6363107;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="m 362.14286,889.31784 155.71429,0"
|
||||
id="path4899"
|
||||
inkscape:connector-curvature="0" />
|
||||
<rect
|
||||
ry="6.7910633"
|
||||
rx="5.0763359"
|
||||
y="778.72052"
|
||||
x="202.43874"
|
||||
height="221.19464"
|
||||
width="95"
|
||||
id="rect4260"
|
||||
style="fill:#b3b3b3;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:3, 6;stroke-dashoffset:0;stroke-opacity:0.59215686" />
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text4262"
|
||||
y="223.68082"
|
||||
x="-907.52356"
|
||||
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:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"
|
||||
transform="matrix(0,-0.97958908,1.0208362,0,0,0)"><tspan
|
||||
y="223.68082"
|
||||
x="-907.52356"
|
||||
sodipodi:role="line"
|
||||
id="tspan4264"
|
||||
style="text-align:center;text-anchor:middle;fill:#ffffff">compute node-2</tspan></text>
|
||||
<rect
|
||||
ry="5.3510919"
|
||||
rx="6.923945"
|
||||
y="790.14905"
|
||||
x="242.79585"
|
||||
height="95.714287"
|
||||
width="42.142857"
|
||||
id="rect4266"
|
||||
style="fill:#00aad4;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:3, 6;stroke-dashoffset:0;stroke-opacity:0.59215686" />
|
||||
<text
|
||||
transform="matrix(0,-0.97958908,1.0208362,0,0,0)"
|
||||
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:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="-855.45026"
|
||||
y="262.73535"
|
||||
id="text4268"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
style="text-align:center;text-anchor:middle;fill:#ffffff"
|
||||
id="tspan4270"
|
||||
sodipodi:role="line"
|
||||
x="-855.45026"
|
||||
y="262.73535">master_2</tspan></text>
|
||||
<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"
|
||||
id="rect4272"
|
||||
width="42.142857"
|
||||
height="95.714287"
|
||||
x="242.79585"
|
||||
y="891.57764"
|
||||
rx="6.923945"
|
||||
ry="5.3510919" />
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text4274"
|
||||
y="263.0007"
|
||||
x="-958.99225"
|
||||
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:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"
|
||||
transform="matrix(0,-0.97958908,1.0208362,0,0,0)"><tspan
|
||||
y="263.0007"
|
||||
x="-958.99225"
|
||||
sodipodi:role="line"
|
||||
id="tspan4276"
|
||||
style="text-align:center;text-anchor:middle;fill:#ffffff">slave_2</tspan></text>
|
||||
<rect
|
||||
style="fill:#b3b3b3;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:3, 6;stroke-dashoffset:0;stroke-opacity:0.59215686"
|
||||
id="rect4362"
|
||||
width="95"
|
||||
height="221.19464"
|
||||
x="566.01013"
|
||||
y="778.72052"
|
||||
rx="5.0763359"
|
||||
ry="6.7910633" />
|
||||
<text
|
||||
transform="matrix(0,-0.97958908,1.0208362,0,0,0)"
|
||||
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:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="-907.52356"
|
||||
y="579.83142"
|
||||
id="text4364"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
style="text-align:center;text-anchor:middle;fill:#ffffff"
|
||||
id="tspan4366"
|
||||
sodipodi:role="line"
|
||||
x="-907.52356"
|
||||
y="579.83142">compute node-N</tspan></text>
|
||||
<rect
|
||||
style="fill:#00aad4;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:3, 6;stroke-dashoffset:0;stroke-opacity:0.59215686"
|
||||
id="rect4368"
|
||||
width="42.142857"
|
||||
height="95.714287"
|
||||
x="606.36725"
|
||||
y="790.14905"
|
||||
rx="6.923945"
|
||||
ry="5.3510919" />
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text4370"
|
||||
y="618.88593"
|
||||
x="-855.45026"
|
||||
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:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"
|
||||
transform="matrix(0,-0.97958908,1.0208362,0,0,0)"><tspan
|
||||
y="618.88593"
|
||||
x="-855.45026"
|
||||
sodipodi:role="line"
|
||||
id="tspan4372"
|
||||
style="text-align:center;text-anchor:middle;fill:#ffffff">master_N</tspan></text>
|
||||
<rect
|
||||
ry="5.3510919"
|
||||
rx="6.923945"
|
||||
y="891.57764"
|
||||
x="606.36725"
|
||||
height="95.714287"
|
||||
width="42.142857"
|
||||
id="rect4374"
|
||||
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" />
|
||||
<text
|
||||
transform="matrix(0,-0.97958908,1.0208362,0,0,0)"
|
||||
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:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="-958.99225"
|
||||
y="619.15131"
|
||||
id="text4376"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
style="text-align:center;text-anchor:middle;fill:#ffffff"
|
||||
id="tspan4378"
|
||||
sodipodi:role="line"
|
||||
x="-958.99225"
|
||||
y="619.15131">slave_N</tspan></text>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 14 KiB |
337
doc/source/images/accommodation_single_room.svg
Normal file
337
doc/source/images/accommodation_single_room.svg
Normal file
@ -0,0 +1,337 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="210mm"
|
||||
height="100mm"
|
||||
viewBox="0 0 744.09449 354.3307"
|
||||
id="svg2"
|
||||
version="1.1"
|
||||
inkscape:version="0.91 r13725"
|
||||
sodipodi:docname="accomodation_single_room.svg"
|
||||
inkscape:export-filename="/home/ishakhat/Work/shaker/doc/source/images/architecture.png"
|
||||
inkscape:export-xdpi="90"
|
||||
inkscape:export-ydpi="90">
|
||||
<defs
|
||||
id="defs4">
|
||||
<marker
|
||||
inkscape:isstock="true"
|
||||
style="overflow:visible"
|
||||
id="marker4699"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow1Mend">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
transform="matrix(-0.4,0,0,-0.4,-4,0)"
|
||||
style="fill:#37c8ab;fill-opacity:1;fill-rule:evenodd;stroke:#37c8ab;stroke-width:1pt;stroke-opacity:1"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
|
||||
id="path4701" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="Arrow1Mend"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="Arrow1Mend"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
id="path4426"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
|
||||
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
|
||||
transform="matrix(-0.4,0,0,-0.4,-4,0)"
|
||||
inkscape:connector-curvature="0" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="Arrow1Mend"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="marker4305"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4307"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
|
||||
style="fill:#ff7f2a;fill-opacity:1;fill-rule:evenodd;stroke:#ff7f2a;stroke-width:1pt;stroke-opacity:1"
|
||||
transform="matrix(-0.4,0,0,-0.4,-4,0)" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:isstock="true"
|
||||
style="overflow:visible"
|
||||
id="marker4265"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow1Mend">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
transform="matrix(-0.4,0,0,-0.4,-4,0)"
|
||||
style="fill:#ff7f2a;fill-opacity:1;fill-rule:evenodd;stroke:#ff7f2a;stroke-width:1pt;stroke-opacity:1"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
|
||||
id="path4267" />
|
||||
</marker>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1.4"
|
||||
inkscape:cx="381.46369"
|
||||
inkscape:cy="259.20889"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
showguides="true"
|
||||
inkscape:guide-bbox="true"
|
||||
inkscape:window-width="1855"
|
||||
inkscape:window-height="1056"
|
||||
inkscape:window-x="65"
|
||||
inkscape:window-y="24"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata7">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-698.0315)">
|
||||
<rect
|
||||
style="fill:none;stroke:#e6e6e6;stroke-width:3.29181743;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="rect4703"
|
||||
width="647.6543"
|
||||
height="245.72414"
|
||||
x="47.227585"
|
||||
y="750.15045"
|
||||
rx="7.3779645"
|
||||
ry="9.1794138" />
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text4215"
|
||||
y="768.00708"
|
||||
x="379.08273"
|
||||
style="font-style:normal;font-weight:normal;font-size:17.25123024px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"
|
||||
transform="scale(0.97958908,1.0208362)"><tspan
|
||||
y="768.00708"
|
||||
x="379.08273"
|
||||
sodipodi:role="line"
|
||||
id="tspan4217"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:center;text-anchor:middle;fill:#000000">accomodation: [pair single room]</tspan></text>
|
||||
<rect
|
||||
style="fill:#b3b3b3;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:3, 6;stroke-dashoffset:0;stroke-opacity:0.59215686"
|
||||
id="rect4791"
|
||||
width="95"
|
||||
height="162.85715"
|
||||
x="72.438728"
|
||||
y="805.14911"
|
||||
rx="5.0763359"
|
||||
ry="5" />
|
||||
<text
|
||||
transform="matrix(0,-0.97958908,1.0208362,0,0,0)"
|
||||
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:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="-904.72632"
|
||||
y="96.334244"
|
||||
id="text4793"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
style="text-align:center;text-anchor:middle;fill:#ffffff"
|
||||
id="tspan4797"
|
||||
sodipodi:role="line"
|
||||
x="-904.72632"
|
||||
y="96.334244">compute node-1</tspan></text>
|
||||
<rect
|
||||
style="fill:#00aad4;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:3, 6;stroke-dashoffset:0;stroke-opacity:0.59215686"
|
||||
id="rect4801"
|
||||
width="42.142857"
|
||||
height="95.714287"
|
||||
x="113.86729"
|
||||
y="838.72052"
|
||||
rx="6.923945"
|
||||
ry="5.3510919" />
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text4803"
|
||||
y="137.47696"
|
||||
x="-905.03375"
|
||||
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:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"
|
||||
transform="matrix(0,-0.97958908,1.0208362,0,0,0)"><tspan
|
||||
y="137.47696"
|
||||
x="-905.03375"
|
||||
sodipodi:role="line"
|
||||
id="tspan4805"
|
||||
style="text-align:center;text-anchor:middle;fill:#ffffff">master_1</tspan></text>
|
||||
<rect
|
||||
ry="5"
|
||||
rx="5.0763359"
|
||||
y="805.14911"
|
||||
x="188.153"
|
||||
height="162.85715"
|
||||
width="95"
|
||||
id="rect4807"
|
||||
style="fill:#b3b3b3;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:3, 6;stroke-dashoffset:0;stroke-opacity:0.59215686" />
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text4809"
|
||||
y="209.68669"
|
||||
x="-904.72632"
|
||||
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:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"
|
||||
transform="matrix(0,-0.97958908,1.0208362,0,0,0)"><tspan
|
||||
y="209.68669"
|
||||
x="-904.72632"
|
||||
sodipodi:role="line"
|
||||
id="tspan4811"
|
||||
style="text-align:center;text-anchor:middle;fill:#ffffff">compute node-2</tspan></text>
|
||||
<rect
|
||||
ry="5.3510919"
|
||||
rx="6.923945"
|
||||
y="838.72052"
|
||||
x="229.58157"
|
||||
height="95.714287"
|
||||
width="42.142857"
|
||||
id="rect4813"
|
||||
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" />
|
||||
<text
|
||||
transform="matrix(0,-0.97958908,1.0208362,0,0,0)"
|
||||
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:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="-905.03375"
|
||||
y="250.82941"
|
||||
id="text4815"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
style="text-align:center;text-anchor:middle;fill:#ffffff"
|
||||
id="tspan4817"
|
||||
sodipodi:role="line"
|
||||
x="-905.03375"
|
||||
y="250.82941">slave_1</tspan></text>
|
||||
<rect
|
||||
ry="5"
|
||||
rx="5.0763359"
|
||||
y="805.8634"
|
||||
x="458.15302"
|
||||
height="162.85715"
|
||||
width="95"
|
||||
id="rect4819"
|
||||
style="fill:#b3b3b3;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:3, 6;stroke-dashoffset:0;stroke-opacity:0.59215686" />
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text4821"
|
||||
y="474.17575"
|
||||
x="-905.45551"
|
||||
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:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"
|
||||
transform="matrix(0,-0.97958908,1.0208362,0,0,0)"><tspan
|
||||
y="474.17575"
|
||||
x="-905.45551"
|
||||
sodipodi:role="line"
|
||||
id="tspan4823"
|
||||
style="text-align:center;text-anchor:middle;fill:#ffffff">compute node-N-1</tspan></text>
|
||||
<rect
|
||||
ry="5.3510919"
|
||||
rx="6.923945"
|
||||
y="839.43481"
|
||||
x="499.5816"
|
||||
height="95.714287"
|
||||
width="42.142857"
|
||||
id="rect4825"
|
||||
style="fill:#00aad4;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:3, 6;stroke-dashoffset:0;stroke-opacity:0.59215686" />
|
||||
<text
|
||||
transform="matrix(0,-0.97958908,1.0208362,0,0,0)"
|
||||
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:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="-905.76294"
|
||||
y="515.31848"
|
||||
id="text4827"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
style="text-align:center;text-anchor:middle;fill:#ffffff"
|
||||
id="tspan4829"
|
||||
sodipodi:role="line"
|
||||
x="-905.76294"
|
||||
y="515.31848">master_M</tspan></text>
|
||||
<rect
|
||||
style="fill:#b3b3b3;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:3, 6;stroke-dashoffset:0;stroke-opacity:0.59215686"
|
||||
id="rect4831"
|
||||
width="95"
|
||||
height="162.85715"
|
||||
x="573.86725"
|
||||
y="805.8634"
|
||||
rx="5.0763359"
|
||||
ry="5" />
|
||||
<text
|
||||
transform="matrix(0,-0.97958908,1.0208362,0,0,0)"
|
||||
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:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="-905.45551"
|
||||
y="587.5282"
|
||||
id="text4833"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
style="text-align:center;text-anchor:middle;fill:#ffffff"
|
||||
id="tspan4835"
|
||||
sodipodi:role="line"
|
||||
x="-905.45551"
|
||||
y="587.5282">compute node-N</tspan></text>
|
||||
<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"
|
||||
id="rect4837"
|
||||
width="42.142857"
|
||||
height="95.714287"
|
||||
x="615.29584"
|
||||
y="839.43481"
|
||||
rx="6.923945"
|
||||
ry="5.3510919" />
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text4839"
|
||||
y="628.67096"
|
||||
x="-905.76294"
|
||||
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:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"
|
||||
transform="matrix(0,-0.97958908,1.0208362,0,0,0)"><tspan
|
||||
y="628.67096"
|
||||
x="-905.76294"
|
||||
sodipodi:role="line"
|
||||
id="tspan4841"
|
||||
style="text-align:center;text-anchor:middle;fill:#ffffff">slave_M</tspan></text>
|
||||
<text
|
||||
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"
|
||||
x="228.77196"
|
||||
y="233.99899"
|
||||
id="text4280"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4282"
|
||||
x="228.77196"
|
||||
y="233.99899" /></text>
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:5,10;stroke-dashoffset:0"
|
||||
d="m 310,886.64791 115,0"
|
||||
id="path4899"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 13 KiB |
475
doc/source/images/architecture.svg
Normal file
475
doc/source/images/architecture.svg
Normal file
@ -0,0 +1,475 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="210mm"
|
||||
height="148mm"
|
||||
viewBox="0 0 744.09449 524.40944"
|
||||
id="svg2"
|
||||
version="1.1"
|
||||
inkscape:version="0.91 r13725"
|
||||
sodipodi:docname="architecture.svg">
|
||||
<defs
|
||||
id="defs4">
|
||||
<marker
|
||||
inkscape:stockid="Arrow1Mend"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="marker4634"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
id="path4636"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
|
||||
style="fill:#37c8ab;fill-opacity:1;fill-rule:evenodd;stroke:#37c8ab;stroke-width:1pt;stroke-opacity:1"
|
||||
transform="matrix(-0.4,0,0,-0.4,-4,0)"
|
||||
inkscape:connector-curvature="0" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:isstock="true"
|
||||
style="overflow:visible"
|
||||
id="marker4580"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow1Mend">
|
||||
<path
|
||||
transform="matrix(-0.4,0,0,-0.4,-4,0)"
|
||||
style="fill:#ff7f2a;fill-opacity:1;fill-rule:evenodd;stroke:#ff7f2a;stroke-width:1pt;stroke-opacity:1"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
|
||||
id="path4582"
|
||||
inkscape:connector-curvature="0" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="Arrow1Mend"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="Arrow1Mend"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true"
|
||||
inkscape:collect="always">
|
||||
<path
|
||||
id="path4299"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
|
||||
style="fill:#ff7f2a;fill-opacity:1;fill-rule:evenodd;stroke:#ff7f2a;stroke-width:1pt;stroke-opacity:1"
|
||||
transform="matrix(-0.4,0,0,-0.4,-4,0)"
|
||||
inkscape:connector-curvature="0" />
|
||||
</marker>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1.4"
|
||||
inkscape:cx="442.66797"
|
||||
inkscape:cy="308.96644"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
showguides="true"
|
||||
inkscape:guide-bbox="true"
|
||||
inkscape:window-width="1855"
|
||||
inkscape:window-height="1056"
|
||||
inkscape:window-x="65"
|
||||
inkscape:window-y="24"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata7">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-527.95276)">
|
||||
<rect
|
||||
style="fill:#00aad4;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
id="rect3342"
|
||||
width="124.42634"
|
||||
height="83.808189"
|
||||
x="70.560921"
|
||||
y="596.76105"
|
||||
rx="7.5107188"
|
||||
ry="7.8269691" />
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text3350"
|
||||
y="608.96271"
|
||||
x="135.55745"
|
||||
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:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"
|
||||
transform="scale(0.97958908,1.0208362)"><tspan
|
||||
y="608.96271"
|
||||
x="135.55745"
|
||||
id="tspan3352"
|
||||
sodipodi:role="line"
|
||||
style="text-align:center;text-anchor:middle;fill:#ffffff" /><tspan
|
||||
y="630.52673"
|
||||
x="135.55745"
|
||||
sodipodi:role="line"
|
||||
id="tspan4695"
|
||||
style="text-align:center;text-anchor:middle;fill:#ffffff">master_1</tspan></text>
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text3406"
|
||||
y="633.49957"
|
||||
x="248.09406"
|
||||
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"
|
||||
xml:space="preserve"
|
||||
transform="scale(0.97958908,1.0208362)"><tspan
|
||||
y="633.49957"
|
||||
x="248.09406"
|
||||
id="tspan3408"
|
||||
sodipodi:role="line">master_1</tspan></text>
|
||||
<rect
|
||||
style="fill:#00aad4;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
id="rect3410"
|
||||
width="124.42634"
|
||||
height="83.808189"
|
||||
x="228.82253"
|
||||
y="596.76105"
|
||||
rx="7.5107188"
|
||||
ry="7.8269691" />
|
||||
<text
|
||||
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:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="256.95361"
|
||||
y="629.99701"
|
||||
id="text3412"
|
||||
sodipodi:linespacing="125%"
|
||||
transform="scale(0.97958908,1.0208362)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3414"
|
||||
x="256.95361"
|
||||
y="629.99701">master_2</tspan></text>
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text3418"
|
||||
y="634.59491"
|
||||
x="427.17822"
|
||||
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"
|
||||
xml:space="preserve"
|
||||
transform="scale(0.97958908,1.0208362)"><tspan
|
||||
y="634.59491"
|
||||
x="427.17822"
|
||||
id="tspan3420"
|
||||
sodipodi:role="line">master_1</tspan></text>
|
||||
<rect
|
||||
style="fill:#d35fbc;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
id="rect3422"
|
||||
width="124.42634"
|
||||
height="83.808189"
|
||||
x="387.08411"
|
||||
y="596.76105"
|
||||
rx="7.5107188"
|
||||
ry="7.8269691" />
|
||||
<text
|
||||
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:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="426.59503"
|
||||
y="630.14862"
|
||||
id="text3424"
|
||||
sodipodi:linespacing="125%"
|
||||
transform="scale(0.97958908,1.0208362)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3426"
|
||||
x="426.59503"
|
||||
y="630.14862">slave_1</tspan></text>
|
||||
<text
|
||||
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"
|
||||
x="579.97485"
|
||||
y="636.23785"
|
||||
id="text3430"
|
||||
sodipodi:linespacing="125%"
|
||||
transform="scale(0.97958908,1.0208362)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3432"
|
||||
x="579.97485"
|
||||
y="636.23785">master_1</tspan></text>
|
||||
<rect
|
||||
ry="7.8269691"
|
||||
rx="7.5107188"
|
||||
y="596.76105"
|
||||
x="545.34564"
|
||||
height="83.808189"
|
||||
width="124.42634"
|
||||
id="rect3434"
|
||||
style="fill:#d35fbc;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text3436"
|
||||
y="630.14862"
|
||||
x="588.22156"
|
||||
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:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"
|
||||
transform="scale(0.97958908,1.0208362)"><tspan
|
||||
y="630.14862"
|
||||
x="588.22156"
|
||||
id="tspan3438"
|
||||
sodipodi:role="line">slave_2</tspan></text>
|
||||
<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"
|
||||
d="m 127.96125,680.49784 0,30.55703 161.39162,0 0.0141,-31.98749"
|
||||
id="path3440"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccc" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4268"
|
||||
d="m 449.13986,679.86384 0,30.5371 164.21361,0 0,-30.88442"
|
||||
style="fill:none;fill-rule:evenodd;stroke:#d35fbc;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
sodipodi:nodetypes="cccc" />
|
||||
<rect
|
||||
ry="7.8269691"
|
||||
rx="7.5107188"
|
||||
y="827.70325"
|
||||
x="307.83142"
|
||||
height="83.808189"
|
||||
width="124.42634"
|
||||
id="rect4274"
|
||||
style="fill:#ff9955;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text4276"
|
||||
y="857.53717"
|
||||
x="377.34213"
|
||||
style="font-style:normal;font-weight:normal;font-size:17.25123024px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"
|
||||
transform="scale(0.97958908,1.0208362)"><tspan
|
||||
y="857.53717"
|
||||
x="377.34213"
|
||||
id="tspan4278"
|
||||
sodipodi:role="line"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';text-align:center;text-anchor:middle">shaker</tspan></text>
|
||||
<text
|
||||
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"
|
||||
x="228.77196"
|
||||
y="233.99899"
|
||||
id="text4280"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4282"
|
||||
x="228.77196"
|
||||
y="233.99899" /></text>
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ff7f2a;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.5, 3;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
|
||||
d="m 119.34001,679.92681 0,38.42111 227.48853,0 0,106.85197"
|
||||
id="path4284"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccc" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ff7f2a;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.5, 3;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker4580)"
|
||||
d="m 295.84777,680.59646 -0.50508,25.41618 64.33905,0 0.50508,119.30682"
|
||||
id="path4572"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccc" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#37c8ab;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.5, 3;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker4634)"
|
||||
d="m 136.50599,679.59471 0,20.5358 321.88795,0 0,-17.63196"
|
||||
id="path4632"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccc" />
|
||||
<rect
|
||||
style="fill:none;stroke:#e6e6e6;stroke-width:2.82461405;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="rect4693"
|
||||
width="689.07178"
|
||||
height="450.00497"
|
||||
x="30.1672"
|
||||
y="556.23651"
|
||||
rx="6.4744992"
|
||||
ry="7.7017975" />
|
||||
<rect
|
||||
style="fill:none;stroke:#e6e6e6;stroke-width:3.19071031;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="rect4703"
|
||||
width="647.75543"
|
||||
height="230.82523"
|
||||
x="46.166878"
|
||||
y="572.31305"
|
||||
rx="7.3791161"
|
||||
ry="8.6228418" />
|
||||
<text
|
||||
transform="scale(0.97958908,1.0208362)"
|
||||
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:#666666;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="604.56537"
|
||||
y="776.30518"
|
||||
id="text4726"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Italic';fill:#666666"
|
||||
sodipodi:role="line"
|
||||
id="tspan4728"
|
||||
x="604.56537"
|
||||
y="776.30518">OpenStack</tspan></text>
|
||||
<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"
|
||||
d="m 288.90363,711.12227 64.39722,0 0,39.39595"
|
||||
id="path4904"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#d35fbc;stroke-width:2.97473931;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 448.5142,710.37625 -59.61163,0 0,40.38809"
|
||||
id="path5206"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<text
|
||||
transform="scale(0.97958908,1.0208362)"
|
||||
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:#37abc8;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="213.57849"
|
||||
y="719.7962"
|
||||
id="text5232"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Italic';text-align:center;text-anchor:middle;fill:#37abc8"
|
||||
id="tspan5236"
|
||||
sodipodi:role="line"
|
||||
x="213.57849"
|
||||
y="719.7962">network A</tspan></text>
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text5240"
|
||||
y="718.39679"
|
||||
x="516.18353"
|
||||
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:#d35fbc;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"
|
||||
transform="scale(0.97958908,1.0208362)"><tspan
|
||||
y="718.39679"
|
||||
x="516.18353"
|
||||
sodipodi:role="line"
|
||||
id="tspan5242"
|
||||
style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Italic';text-align:center;text-anchor:middle;fill:#d35fbc;fill-opacity:1">network B</tspan></text>
|
||||
<path
|
||||
sodipodi:nodetypes="cccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3389"
|
||||
d="m 622.13762,685.92681 0,32.42111 -226.47838,0 0,107.86213"
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ff7f2a;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.5, 3;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#Arrow1Mend)" />
|
||||
<path
|
||||
sodipodi:nodetypes="cccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3391"
|
||||
d="m 442.64001,680.59646 0.50508,25.41618 -60.33905,0 -0.50508,119.8119"
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ff7f2a;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.5, 3;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker4580)" />
|
||||
<rect
|
||||
style="fill:#b3b3b3;stroke:none;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
id="rect4262"
|
||||
width="337.3356"
|
||||
height="29.630671"
|
||||
x="201.37679"
|
||||
y="750.7063"
|
||||
rx="9.7375231"
|
||||
ry="7.8269691" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:17.25123024px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="373.55719"
|
||||
y="755.96625"
|
||||
id="text4264"
|
||||
sodipodi:linespacing="125%"
|
||||
transform="scale(0.97958908,1.0208362)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4266"
|
||||
x="373.55719"
|
||||
y="755.96625">virtual router</tspan></text>
|
||||
<path
|
||||
sodipodi:nodetypes="cccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3393"
|
||||
d="m 302.67608,679.59471 0,14.5358 299.88795,0 0,-13.41767"
|
||||
style="fill:none;fill-rule:evenodd;stroke:#37c8ab;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.5, 3;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker4634)" />
|
||||
<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"
|
||||
d="m 71.50484,951.2193 62.12439,0 0,-1.51523"
|
||||
id="path3395"
|
||||
inkscape:connector-curvature="0" />
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text4215"
|
||||
y="936.7052"
|
||||
x="155.39075"
|
||||
style="font-style:normal;font-weight:normal;font-size:17.25123024px;line-height:125%;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#999999;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"
|
||||
transform="scale(0.97958908,1.0208362)"><tspan
|
||||
y="936.7052"
|
||||
x="155.39075"
|
||||
sodipodi:role="line"
|
||||
id="tspan4217"
|
||||
style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Italic';text-align:start;text-anchor:start;fill:#999999">tenant network A</tspan></text>
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4219"
|
||||
d="m 71.50484,975.2193 62.12439,0 0,-1.51523"
|
||||
style="fill:none;fill-rule:evenodd;stroke:#d35fbc;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<text
|
||||
transform="scale(0.97958908,1.0208362)"
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:17.25123024px;line-height:125%;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#999999;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="155.39075"
|
||||
y="960.21521"
|
||||
id="text4230"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Italic';text-align:start;text-anchor:start;fill:#999999"
|
||||
id="tspan4232"
|
||||
sodipodi:role="line"
|
||||
x="155.39075"
|
||||
y="960.21521">tenant network B</tspan></text>
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ff7f2a;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 6;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="m 425.79056,953.64787 62.12439,0 0,-1.51523"
|
||||
id="path4234"
|
||||
inkscape:connector-curvature="0" />
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text4236"
|
||||
y="939.08392"
|
||||
x="517.05841"
|
||||
style="font-style:normal;font-weight:normal;font-size:17.25123024px;line-height:125%;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#999999;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"
|
||||
transform="scale(0.97958908,1.0208362)"><tspan
|
||||
y="939.08392"
|
||||
x="517.05841"
|
||||
sodipodi:role="line"
|
||||
id="tspan4238"
|
||||
style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Italic';text-align:start;text-anchor:start;fill:#999999">shaker agents traffic</tspan></text>
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4240"
|
||||
d="m 425.79056,973.64787 62.12439,0 0,-1.51523"
|
||||
style="fill:none;fill-rule:evenodd;stroke:#38c7ab;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 6;stroke-dashoffset:0;stroke-opacity:0.59215686" />
|
||||
<text
|
||||
transform="scale(0.97958908,1.0208362)"
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:17.25123024px;line-height:125%;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#999999;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="517.05841"
|
||||
y="958.6756"
|
||||
id="text4242"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Italic';text-align:start;text-anchor:start;fill:#999999"
|
||||
id="tspan4244"
|
||||
sodipodi:role="line"
|
||||
x="517.05841"
|
||||
y="958.6756">iperf/netperf traffic</tspan></text>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 22 KiB |
BIN
doc/source/images/topology_l2.png
Normal file
BIN
doc/source/images/topology_l2.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 23 KiB |
BIN
doc/source/images/topology_l3_east_west.png
Normal file
BIN
doc/source/images/topology_l3_east_west.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 29 KiB |
BIN
doc/source/images/topology_l3_north_south.png
Normal file
BIN
doc/source/images/topology_l3_north_south.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 33 KiB |
@ -1,6 +1,22 @@
|
||||
Welcome to Shaker!
|
||||
==================
|
||||
|
||||
Shake VMs with our sheer-class tests!
|
||||
The distributed data-plane testing tool for OpenStack.
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
installation
|
||||
usage
|
||||
examples
|
||||
tools
|
||||
architecture
|
||||
contributing
|
||||
|
||||
.. Indices and tables
|
||||
.. ==================
|
||||
|
||||
.. * :ref:`genindex`
|
||||
.. * :ref:`modindex`
|
||||
.. * :ref:`search`
|
||||
|
||||
.. include:: tools.rst
|
||||
|
54
doc/source/installation.rst
Normal file
54
doc/source/installation.rst
Normal file
@ -0,0 +1,54 @@
|
||||
============
|
||||
Installation
|
||||
============
|
||||
|
||||
Installation in Python environment
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Shaker is distributed as Python package and available through PyPi (https://pypi.python.org/pypi/pyshaker/).
|
||||
It is recommended to be installed inside virtualenv.
|
||||
|
||||
.. code::
|
||||
|
||||
$ virtualenv venv
|
||||
$ . venv/bin/activate
|
||||
$ pip install pyshaker
|
||||
|
||||
|
||||
Installation on Ubuntu Cloud Image
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Installation on fresh system requires additional libraries needed by some of dependencies.
|
||||
|
||||
.. code::
|
||||
|
||||
$ sudo apt-add-repository "deb http://nova.clouds.archive.ubuntu.com/ubuntu/ trusty multiverse"
|
||||
$ sudo apt-get update
|
||||
$ sudo apt-get -y install python-dev libzmq-dev
|
||||
$ wget -O get-pip.py https://bootstrap.pypa.io/get-pip.py && sudo python get-pip.py
|
||||
$ sudo pip install pbr pyshaker
|
||||
$ shaker --help
|
||||
|
||||
|
||||
Deployment
|
||||
^^^^^^^^^^
|
||||
|
||||
.. image:: images/architecture.svg
|
||||
|
||||
Requirements:
|
||||
|
||||
* User with admin privileges OpenStack cloud
|
||||
* Computer where shaker is executed should be routable from OpenStack instances
|
||||
* Open port to accept connections from agents running on instances
|
||||
|
||||
|
||||
First Run
|
||||
^^^^^^^^^
|
||||
|
||||
Build the master image. The process downloads Ubuntu cloud image, installs all necessary packages and stores
|
||||
snapshot into Glance. This snapshot is used by ``shaker`` as base of instances.
|
||||
|
||||
.. code::
|
||||
|
||||
$ shaker-image-builder
|
||||
|
@ -1,28 +1,40 @@
|
||||
===================
|
||||
CLI Tools Reference
|
||||
===================
|
||||
|
||||
shaker
|
||||
------
|
||||
|
||||
The tool runs specified scenario
|
||||
Executes specified scenario in OpenStack cloud, stores results and generates HTML report.
|
||||
|
||||
.. literalinclude:: tools/shaker.txt
|
||||
|
||||
|
||||
shaker-image-builder
|
||||
--------------------
|
||||
|
||||
Builds master image in OpenStack cloud. The image is based on Ubuntu cloud image distro and
|
||||
configured to run ``shaker-agent``.
|
||||
|
||||
.. literalinclude:: tools/shaker-image-builder.txt
|
||||
|
||||
shaker-agent
|
||||
------------
|
||||
|
||||
Client-side process that is run inside pre-configured image.
|
||||
|
||||
.. literalinclude:: tools/shaker-agent.txt
|
||||
|
||||
shaker-report
|
||||
-------------
|
||||
|
||||
Generates report based on raw results stored in JSON format.
|
||||
|
||||
.. literalinclude:: tools/shaker-report.txt
|
||||
|
||||
shaker-image-builder
|
||||
--------------------
|
||||
|
||||
The tool that creates master image in OpenStack cloud.
|
||||
|
||||
.. literalinclude:: tools/shaker-image-builder.txt
|
||||
|
||||
shaker-cleanup
|
||||
--------------
|
||||
|
||||
Removes master image from OpenStack cloud.
|
||||
|
||||
.. literalinclude:: tools/shaker-cleanup.txt
|
||||
|
82
doc/source/usage.rst
Normal file
82
doc/source/usage.rst
Normal file
@ -0,0 +1,82 @@
|
||||
=====
|
||||
Usage
|
||||
=====
|
||||
|
||||
Configuration
|
||||
-------------
|
||||
|
||||
The connection to OpenStack is configured using standard ``openrc`` file. (Refer to
|
||||
http://docs.openstack.org/cli-reference/content/cli_openrc.html on how to retrieve it)
|
||||
|
||||
The config can be passed to Shaker rather by sourcing into system env ``source openrc``
|
||||
or via set of CLI parameters ``--os-tenant-name``, ``--os-username``, ``--os-password``,
|
||||
``--os-auth-url`` and ``--os-region-name``. Note that Shaker requires a user with admin privileges.
|
||||
|
||||
|
||||
Scenario Explained
|
||||
------------------
|
||||
|
||||
Shaker scenario is file in YAML format. It describes how agents are deployed
|
||||
(at OpenStack instances or statically) and sequence of tests to execute. When agents
|
||||
are deployed at OpenStack instances a reference to Heat template is provided.
|
||||
|
||||
.. code::
|
||||
|
||||
description:
|
||||
This scenario launches pairs of VMs in the same private network. Every VM is
|
||||
hosted on a separate compute node.
|
||||
|
||||
deployment:
|
||||
template: l2.hot
|
||||
accommodation: [pair, single_room]
|
||||
|
||||
execution:
|
||||
size: quadratic_progression
|
||||
tests:
|
||||
-
|
||||
title: Iperf TCP
|
||||
class: iperf_graph
|
||||
time: 60
|
||||
|
||||
Deployment
|
||||
^^^^^^^^^^
|
||||
|
||||
By default Shaker spawns instances on every available compute node. The distribution
|
||||
of instances is configured by parameter ``accommodation``. There are several instructions
|
||||
that allow control the scheduling precisely:
|
||||
|
||||
* ``pair`` - instances are grouped in pairs, meaning that one can be used as source of traffic and the other as a consumer (needed for networking tests)
|
||||
* ``single_room`` - 1 instance per compute node
|
||||
* ``double_room`` - 2 instances per compute node
|
||||
* ``density: N`` - the multiplier for number of instances per compute node
|
||||
* ``compute_nodes: N`` - how many compute nodes should be used (by default Shaker use all of them)
|
||||
|
||||
Examples:
|
||||
|
||||
.. image:: images/accommodation_single_room.svg
|
||||
|
||||
.. image:: images/accommodation_double_room.svg
|
||||
|
||||
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.
|
||||
Slaves are used as back-ends and do not receive any commands directly.
|
||||
|
||||
Execution
|
||||
^^^^^^^^^
|
||||
|
||||
The execution part of scenario contains a list of tests that are executed one by one. By default Shaker runs the test
|
||||
simultaneously on all available agents. The level of concurrency can be controlled by option ``size``. There are
|
||||
3 values available:
|
||||
|
||||
* ``size: linear_progression`` - the execution starts with 1 agent and increases by 1 until all agents are involved;
|
||||
* ``size: quadratic_progression`` - the execution starts with 1 agent (or 1 pair) and doubles until all agents are involved.
|
||||
|
||||
Tests are executed in order of definition. The exact action is defined by option ``class``, additional attributes are provided
|
||||
by respective parameters. The following classes are available:
|
||||
|
||||
* ``iperf_graph`` - runs ``iperf`` tool and shows chart and statistics
|
||||
* ``netperf_wrapper`` - runs ``netperf-wrapper`` and shows chart and statistics
|
||||
* ``iperf`` - runs ``iperf`` tool and shows plain output
|
||||
* ``netperf`` - runs ``netpers`` tool and shows plain output
|
||||
* ``shell`` - runs any shell command or process and shows plain output
|
||||
|
@ -4,7 +4,7 @@
|
||||
<head profile="http://gmpg.org/xfn/11">
|
||||
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
|
||||
|
||||
<title>Shaker | The Report</title>
|
||||
<title>Shaker | The distributed data-plane testing tool for OpenStack</title>
|
||||
|
||||
<!-- LIBS -->
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user