Replace ascii art architecture diagram with svg image

architecture.svg diagram was generated using dia
(http://dia-installer.de/) and can be found in image_src

This is an attempt to show the same information as previously found in
the ascii art.

blueprint devref-refresh-liberty
Change-Id: Iab5811bcc7ec4b3fa457a07d33a0373ba95723ca
This commit is contained in:
Joe Gordon 2015-06-23 14:58:28 -07:00
parent ca59f81ec1
commit 33d671d7eb
3 changed files with 467 additions and 20 deletions

View File

@ -27,25 +27,15 @@ Components
Below you will find a helpful explanation of the different components.
::
.. image:: ./images/architecture.svg
:width: 100%
/- ( LDAP )
[ Auth Manager ] ---
| \- ( DB )
|
|
|
[ Web Dashboard ] -> [ api ] -- < AMQP > ------ [ network ] - ( Flat/Vlan )
| \
< HTTP > [ scheduler ] - [ compute ] - ( libvirt/xen )
| |
[ objectstore ] < - retrieves images
* DB: sql database for data storage.
* API: component that receives HTTP requests, converts commands and communicates with other components via the **oslo.messaging** queue or HTTP
* Scheduler: decides which host gets each instance
* Network: manages ip forwarding, bridges, and vlans
* Compute: manages communication with hypervisor and virtual machines.
* Conductor: handles requests that need coordination(build/resize), acts as a
database proxy, or handles object conversions.
* DB: sql database for data storage. Used by all components (LINKS NOT SHOWN)
* Web Dashboard: potential external component that talks to the api
* api: component that receives http requests, converts commands and communicates with other components via the queue or http (in the case of objectstore)
* Auth Manager: component responsible for users/projects/and roles. Can backend to DB or LDAP. This is not a separate binary, but rather a python class that is used by most components in the system.
* objectstore: http server that replicates s3 api and allows storage and retrieval of images
* scheduler: decides which host gets each vm
* network: manages ip forwarding, bridges, and vlans
* compute: manages communication with hypervisor and virtual machines.
While all services are designed to be horizontally scalable, you should have significantly more computes then anything else.

Binary file not shown.

View File

@ -0,0 +1,457 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/PR-SVG-20010719/DTD/svg10.dtd">
<svg width="41cm" height="58cm" viewBox="-80 120 814 1149" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g>
<rect style="fill: #ffffff" x="0.83798" y="344.412" width="110.242" height="113.917"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="0.83798" y="344.412" width="110.242" height="113.917"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="0.83798" y="344.412" width="110.242" height="113.917"/>
</g>
<g>
<path style="fill: #a5a585" d="M 474.259 262.827 L 474.22,262.329 L 474.111,261.839 L 473.924,261.348 L 473.668,260.866 L 473.349,260.384 L 472.952,259.909 L 472.485,259.442 L 471.948,258.983 L 471.341,258.532 L 470.672,258.104 L 469.941,257.676 L 469.155,257.256 L 468.291,256.859 L 467.381,256.478 L 466.416,256.112 L 465.389,255.762 L 464.323,255.435 L 463.203,255.124 L 462.044,254.836 L 460.83,254.564 L 459.593,254.307 L 458.309,254.081 L 456.994,253.863 L 455.663,253.685 L 454.294,253.529 L 452.901,253.397 L 451.501,253.28 L 450.077,253.202 L 448.645,253.132 L 447.206,253.085 L 445.767,253.085 L 445.767,253.085 L 444.319,253.085 L 442.88,253.132 L 441.448,253.202 L 440.024,253.28 L 438.624,253.397 L 437.231,253.529 L 435.87,253.685 L 434.531,253.863 L 433.216,254.081 L 431.933,254.307 L 430.696,254.564 L 429.49,254.836 L 428.33,255.124 L 427.21,255.435 L 426.136,255.762 L 425.109,256.112 L 424.152,256.478 L 423.234,256.859 L 422.378,257.256 L 421.584,257.676 L 420.853,258.104 L 420.184,258.532 L 419.577,258.983 L 419.04,259.442 L 418.573,259.909 L 418.177,260.384 L 417.858,260.866 L 417.601,261.348 L 417.414,261.839 L 417.313,262.329 L 417.274,262.827 L 417.274,262.827 L 417.313,263.325 L 417.414,263.807 L 417.601,264.305 L 417.858,264.787 L 418.177,265.27 L 418.573,265.744 L 419.04,266.211 L 419.577,266.67 L 420.184,267.114 L 420.853,267.55 L 421.584,267.977 L 422.378,268.398 L 423.234,268.794 L 424.152,269.176 L 425.109,269.541 L 426.136,269.891 L 427.21,270.218 L 428.33,270.529 L 429.49,270.817 L 430.696,271.09 L 431.933,271.346 L 433.216,271.572 L 434.531,271.782 L 435.87,271.969 L 437.231,272.125 L 438.624,272.257 L 440.024,272.366 L 441.448,272.451 L 442.88,272.514 L 444.319,272.56 L 445.767,272.568 L 445.767,272.568 L 447.206,272.56 L 448.645,272.514 L 450.077,272.451 L 451.501,272.366 L 452.901,272.257 L 454.294,272.125 L 455.663,271.969 L 456.994,271.782 L 458.309,271.572 L 459.593,271.346 L 460.83,271.09 L 462.044,270.817 L 463.203,270.529 L 464.323,270.218 L 465.389,269.891 L 466.416,269.541 L 467.381,269.176 L 468.291,268.794 L 469.155,268.398 L 469.941,267.977 L 470.672,267.55 L 471.341,267.114 L 471.948,266.67 L 472.485,266.211 L 472.952,265.744 L 473.349,265.27 L 473.668,264.787 L 473.924,264.305 L 474.111,263.807 L 474.22,263.325 L 474.259,262.827z"/>
<path style="fill: none; fill-opacity:0; stroke-width: 0.02; stroke: #494936" d="M 473.924 262.671 L 473.886,262.173 L 473.784,261.699 L 473.605,261.216 L 473.356,260.742 L 473.022,260.259 L 472.617,259.8 L 472.174,259.333 L 471.629,258.898 L 471.03,258.454 L 470.369,258.018 L 469.637,257.606 L 468.852,257.194 L 468.003,256.805 L 467.109,256.416 L 466.128,256.065 L 465.109,255.723 L 464.043,255.396 L 462.938,255.093 L 461.787,254.813 L 460.589,254.54 L 459.344,254.299 L 458.075,254.074 L 456.768,253.863 L 455.446,253.685 L 454.092,253.529 L 452.699,253.404 L 451.306,253.28 L 449.89,253.21 L 448.474,253.148 L 447.027,253.109 L 445.595,253.085 L 445.595,253.085 L 444.164,253.109 L 442.732,253.148 L 441.3,253.21 L 439.9,253.28 L 438.499,253.404 L 437.114,253.529 L 435.753,253.685 L 434.422,253.863 L 433.123,254.074 L 431.855,254.299 L 430.61,254.54 L 429.412,254.813 L 428.268,255.093 L 427.148,255.396 L 426.074,255.723 L 425.062,256.065 L 424.098,256.416 L 423.203,256.805 L 422.347,257.194 L 421.553,257.606 L 420.838,258.018 L 420.176,258.454 L 419.561,258.898 L 419.032,259.333 L 418.573,259.8 L 418.177,260.259 L 417.85,260.742 L 417.593,261.216 L 417.414,261.699 L 417.313,262.173 L 417.274,262.671 L 417.274,262.671 L 417.313,263.153 L 417.414,263.628 L 417.593,264.118 L 417.85,264.593 L 418.177,265.068 L 418.573,265.534 L 419.032,265.993 L 419.561,266.437 L 420.176,266.873 L 420.838,267.316 L 421.553,267.736 L 422.347,268.133 L 423.203,268.53 L 424.098,268.911 L 425.062,269.269 L 426.074,269.611 L 427.148,269.93 L 428.268,270.242 L 429.412,270.522 L 430.61,270.794 L 431.855,271.043 L 433.123,271.261 L 434.422,271.463 L 435.753,271.642 L 437.114,271.798 L 438.499,271.93 L 439.9,272.047 L 441.3,272.125 L 442.732,272.187 L 444.164,272.226 L 445.595,272.241 L 445.595,272.241 L 447.027,272.226 L 448.474,272.187 L 449.89,272.125 L 451.306,272.047 L 452.699,271.93 L 454.092,271.798 L 455.446,271.642 L 456.768,271.463 L 458.075,271.261 L 459.344,271.043 L 460.589,270.794 L 461.787,270.522 L 462.938,270.242 L 464.043,269.93 L 465.109,269.611 L 466.128,269.269 L 467.109,268.911 L 468.003,268.53 L 468.852,268.133 L 469.637,267.736 L 470.369,267.316 L 471.03,266.873 L 471.629,266.437 L 472.174,265.993 L 472.617,265.534 L 473.022,265.068 L 473.356,264.593 L 473.605,264.118 L 473.784,263.628 L 473.886,263.153 L 473.924,262.671"/>
<path style="fill: #a5a585" d="M 417.274 242.48 L 417.274,262.998 L 473.924,262.998 L 473.924,242.48 L 417.274,242.48z"/>
<path style="fill: #c9c9b6" d="M 474.259 242.309 L 474.22,241.804 L 474.111,241.313 L 473.924,240.831 L 473.668,240.349 L 473.349,239.858 L 472.952,239.384 L 472.485,238.909 L 471.948,238.466 L 471.341,238.022 L 470.672,237.571 L 469.941,237.159 L 469.155,236.738 L 468.291,236.334 L 467.381,235.96 L 466.416,235.595 L 465.389,235.237 L 464.323,234.91 L 463.203,234.607 L 462.044,234.311 L 460.83,234.039 L 459.593,233.79 L 458.309,233.564 L 456.994,233.354 L 455.663,233.167 L 454.294,233.011 L 452.901,232.879 L 451.501,232.77 L 450.077,232.685 L 448.645,232.615 L 447.206,232.576 L 445.767,232.568 L 445.767,232.568 L 444.319,232.576 L 442.88,232.615 L 441.448,232.685 L 440.024,232.77 L 438.624,232.879 L 437.231,233.011 L 435.87,233.167 L 434.531,233.354 L 433.216,233.564 L 431.933,233.79 L 430.696,234.039 L 429.49,234.311 L 428.33,234.607 L 427.21,234.91 L 426.136,235.237 L 425.109,235.595 L 424.152,235.96 L 423.234,236.334 L 422.378,236.738 L 421.584,237.159 L 420.853,237.571 L 420.184,238.022 L 419.577,238.466 L 419.04,238.909 L 418.573,239.384 L 418.177,239.858 L 417.858,240.349 L 417.601,240.831 L 417.414,241.313 L 417.313,241.804 L 417.274,242.309 L 417.274,242.309 L 417.313,242.799 L 417.414,243.297 L 417.601,243.772 L 417.858,244.27 L 418.177,244.745 L 418.573,245.227 L 419.04,245.694 L 419.577,246.145 L 420.184,246.596 L 420.853,247.032 L 421.584,247.46 L 422.378,247.872 L 423.234,248.269 L 424.152,248.65 L 425.109,249.024 L 426.136,249.366 L 427.21,249.701 L 428.33,250.012 L 429.49,250.3 L 430.696,250.572 L 431.933,250.829 L 433.216,251.047 L 434.531,251.265 L 435.87,251.444 L 437.231,251.599 L 438.624,251.739 L 440.024,251.841 L 441.448,251.934 L 442.88,251.996 L 444.319,252.035 L 445.767,252.051 L 445.767,252.051 L 447.206,252.035 L 448.645,251.996 L 450.077,251.934 L 451.501,251.841 L 452.901,251.739 L 454.294,251.599 L 455.663,251.444 L 456.994,251.265 L 458.309,251.047 L 459.593,250.829 L 460.83,250.572 L 462.044,250.3 L 463.203,250.012 L 464.323,249.701 L 465.389,249.366 L 466.416,249.024 L 467.381,248.65 L 468.291,248.269 L 469.155,247.872 L 469.941,247.46 L 470.672,247.032 L 471.341,246.596 L 471.948,246.145 L 472.485,245.694 L 472.952,245.227 L 473.349,244.745 L 473.668,244.27 L 473.924,243.772 L 474.111,243.297 L 474.22,242.799 L 474.259,242.309z"/>
<path style="fill: none; fill-opacity:0; stroke-width: 0.02; stroke: #494936" d="M 473.924 242.154 L 473.886,241.656 L 473.784,241.181 L 473.605,240.706 L 473.356,240.224 L 473.022,239.734 L 472.617,239.275 L 472.174,238.831 L 471.629,238.372 L 471.03,237.937 L 470.369,237.493 L 469.637,237.089 L 468.852,236.676 L 468.003,236.279 L 467.109,235.914 L 466.128,235.548 L 465.109,235.213 L 464.043,234.887 L 462.938,234.575 L 461.787,234.288 L 460.589,234.023 L 459.344,233.782 L 458.075,233.556 L 456.768,233.354 L 455.446,233.167 L 454.092,233.011 L 452.699,232.879 L 451.306,232.77 L 449.89,232.685 L 449.416,232.661 L 441.775,232.661 L 441.3,232.685 L 439.9,232.77 L 438.499,232.879 L 437.114,233.011 L 435.753,233.167 L 434.422,233.354 L 433.123,233.556 L 431.855,233.782 L 430.61,234.023 L 429.412,234.288 L 428.268,234.575 L 427.148,234.887 L 426.074,235.213 L 425.062,235.548 L 424.098,235.914 L 423.203,236.279 L 422.347,236.676 L 421.553,237.089 L 420.838,237.493 L 420.176,237.937 L 419.561,238.372 L 419.032,238.831 L 418.573,239.275 L 418.177,239.734 L 417.85,240.224 L 417.593,240.706 L 417.414,241.181 L 417.313,241.656 L 417.274,242.154 L 417.274,242.154 L 417.313,242.628 L 417.414,243.118 L 417.593,243.601 L 417.85,244.075 L 418.177,244.55 L 418.573,245.017 L 419.032,245.468 L 419.561,245.927 L 420.176,246.363 L 420.838,246.799 L 421.553,247.219 L 422.347,247.616 L 423.203,248.005 L 424.098,248.394 L 425.062,248.752 L 426.074,249.086 L 427.148,249.405 L 428.268,249.716 L 429.412,249.997 L 430.61,250.269 L 431.855,250.526 L 433.123,250.728 L 434.422,250.946 L 435.753,251.117 L 437.114,251.28 L 438.499,251.42 L 439.9,251.529 L 441.3,251.615 L 442.732,251.669 L 444.164,251.7 L 445.595,251.724 L 445.595,251.724 L 447.027,251.7 L 448.474,251.669 L 449.89,251.615 L 451.306,251.529 L 452.699,251.42 L 454.092,251.28 L 455.446,251.117 L 456.768,250.946 L 458.075,250.728 L 459.344,250.526 L 460.589,250.269 L 461.787,249.997 L 462.938,249.716 L 464.043,249.405 L 465.109,249.086 L 466.128,248.752 L 467.109,248.394 L 468.003,248.005 L 468.852,247.616 L 469.637,247.219 L 470.369,246.799 L 471.03,246.363 L 471.629,245.927 L 472.174,245.468 L 472.617,245.017 L 473.022,244.55 L 473.356,244.075 L 473.605,243.601 L 473.784,243.118 L 473.886,242.628 L 473.924,242.154"/>
<path style="fill: none; fill-opacity:0; stroke-width: 0.02; stroke: #000000" d="M 417.274 242.154 L 417.274,262.656"/>
<path style="fill: none; fill-opacity:0; stroke-width: 0.02; stroke: #000000" d="M 473.924 242.154 L 473.924,262.656"/>
</g>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="147.413" y="85.9834">
<tspan x="147.413" y="85.9834"></tspan>
</text>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="147.413" y="85.9834">
<tspan x="147.413" y="85.9834"></tspan>
</text>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="273.57" y="237.668">
<tspan x="273.57" y="237.668">API</tspan>
</text>
<text font-size="12.8" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="282.526" y="391.16">
<tspan x="282.526" y="391.16">Conductor</tspan>
</text>
<g>
<rect style="fill: #ffffff" x="231.792" y="183.68" width="110.242" height="113.917"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="231.792" y="183.68" width="110.242" height="113.917"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="231.792" y="183.68" width="110.242" height="113.917"/>
</g>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="286.914" y="240.638">
<tspan x="286.914" y="240.638">API</tspan>
</text>
<g>
<rect style="fill: #ffffff" x="240.084" y="193.077" width="110.242" height="113.917"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="240.084" y="193.077" width="110.242" height="113.917"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="240.084" y="193.077" width="110.242" height="113.917"/>
</g>
<text font-size="12.8" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="295.206" y="250.036">
<tspan x="295.206" y="250.036">API</tspan>
</text>
<g>
<rect style="fill: #ffffff" x="234.004" y="341.222" width="110.242" height="113.917"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="234.004" y="341.222" width="110.242" height="113.917"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="234.004" y="341.222" width="110.242" height="113.917"/>
</g>
<text font-size="12.8" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="289.124" y="398.18">
<tspan x="289.124" y="398.18">Conductor</tspan>
</text>
<g>
<rect style="fill: #ffffff" x="241.3" y="350.066" width="110.242" height="113.917"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="241.3" y="350.066" width="110.242" height="113.917"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="241.3" y="350.066" width="110.242" height="113.917"/>
</g>
<text font-size="12.8" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="296.422" y="407.024">
<tspan x="296.422" y="407.024">Conductor</tspan>
</text>
<text font-size="12.8" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="446.114" y="386.848">
<tspan x="446.114" y="386.848">Scheduler</tspan>
</text>
<g>
<rect style="fill: #ffffff" x="401.496" y="339.288" width="110.242" height="113.917"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="401.496" y="339.288" width="110.242" height="113.917"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="401.496" y="339.288" width="110.242" height="113.917"/>
</g>
<text font-size="12.8" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="456.618" y="396.246">
<tspan x="456.618" y="396.246">Scheduler</tspan>
</text>
<g>
<rect style="fill: #ffffff" x="410.34" y="349.79" width="110.242" height="113.917"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="410.34" y="349.79" width="110.242" height="113.917"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="410.34" y="349.79" width="110.242" height="113.917"/>
</g>
<text font-size="12.8" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="465.462" y="406.748">
<tspan x="465.462" y="406.748">Scheduler</tspan>
</text>
<g>
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="295.206" y1="306.994" x2="295.599" y2="339.337"/>
<polygon style="fill: #000000" points="295.69,346.836 290.569,336.898 295.599,339.337 300.568,336.776 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="295.69,346.836 290.569,336.898 295.599,339.337 300.568,336.776 "/>
</g>
<g>
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="351.542" y1="407.024" x2="399.628" y2="406.908"/>
<polygon style="fill: #000000" points="407.128,406.889 397.14,411.914 399.628,406.908 397.116,401.914 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="407.128,406.889 397.14,411.914 399.628,406.908 397.116,401.914 "/>
</g>
<text font-size="12.8" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="445.56" y="252.52">
<tspan x="445.56" y="252.52">DB</tspan>
</text>
<g>
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #000000" x1="349.53" y1="249.014" x2="407.544" y2="251.131"/>
<polygon style="fill: #000000" points="415.039,251.405 404.863,256.037 407.544,251.131 405.228,246.043 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="415.039,251.405 404.863,256.037 407.544,251.131 405.228,246.043 "/>
</g>
<g>
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #000000" x1="451.701" y1="340.205" x2="446.619" y2="282.267"/>
<polygon style="fill: #000000" points="445.963,274.796 451.818,284.32 446.619,282.267 441.856,285.194 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="445.963,274.796 451.818,284.32 446.619,282.267 441.856,285.194 "/>
</g>
<g>
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #000000" x1="352.366" y1="349.066" x2="421.448" y2="277.498"/>
<polygon style="fill: #000000" points="426.657,272.102 423.309,282.769 421.448,277.498 416.114,275.824 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="426.657,272.102 423.309,282.769 421.448,277.498 416.114,275.824 "/>
</g>
<g>
<rect style="fill: #ffffff" x="222.396" y="495.172" width="110.242" height="113.917"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="222.396" y="495.172" width="110.242" height="113.917"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="222.396" y="495.172" width="110.242" height="113.917"/>
</g>
<text font-size="12.8" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="277.516" y="552.13">
<tspan x="277.516" y="552.13">Compute</tspan>
</text>
<g>
<rect style="fill: #ffffff" x="230.134" y="503.602" width="110.242" height="113.917"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="230.134" y="503.602" width="110.242" height="113.917"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="230.134" y="503.602" width="110.242" height="113.917"/>
</g>
<text font-size="12.8" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="285.256" y="560.56">
<tspan x="285.256" y="560.56">Compute</tspan>
</text>
<g>
<rect style="fill: #ffffff" x="237.874" y="512.446" width="110.242" height="113.917"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="237.874" y="512.446" width="110.242" height="113.917"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="237.874" y="512.446" width="110.242" height="113.917"/>
</g>
<text font-size="12.8" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="292.994" y="569.404">
<tspan x="292.994" y="569.404">Compute</tspan>
</text>
<g>
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="296.422" y1="463.984" x2="295.194" y2="501.764"/>
<polygon style="fill: #000000" points="294.95,509.26 290.278,499.103 295.194,501.764 300.272,499.428 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="294.95,509.26 290.278,499.103 295.194,501.764 300.272,499.428 "/>
</g>
<g>
<path style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" d="M 354.655,511.236 A 183.844,183.844 0 0 0 351.329,304.267"/>
<polygon style="fill: #000000" points="350.422,517.416 352.327,506.399 354.87,511.377 360.378,512.329 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="350.422,517.416 352.327,506.399 354.87,511.377 360.378,512.329 "/>
</g>
<g>
<polygon style="fill: #ffffff" points="17.5517,182.431 83.4669,182.431 127.41,247.431 83.4669,312.431 17.5517,312.431 -26.3918,247.431 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="17.5517,182.431 83.4669,182.431 127.41,247.431 83.4669,312.431 17.5517,312.431 -26.3918,247.431 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="17.5517,182.431 83.4669,182.431 127.41,247.431 83.4669,312.431 17.5517,312.431 -26.3918,247.431 "/>
</g>
<text font-size="12.8" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="55.5028" y="250.386">
<tspan x="55.5028" y="250.386">Keystone</tspan>
</text>
<g>
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 20 4 4 4 4 4; stroke: #000000" x1="239.113" y1="250.117" x2="136.415" y2="250.267"/>
<polygon style="fill: #000000" points="128.915,250.278 138.908,245.264 136.415,250.267 138.922,255.264 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="128.915,250.278 138.908,245.264 136.415,250.267 138.922,255.264 "/>
</g>
<g>
<rect style="fill: #ffffff" x="11.0492" y="350.62" width="110.242" height="113.917"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="11.0492" y="350.62" width="110.242" height="113.917"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="11.0492" y="350.62" width="110.242" height="113.917"/>
</g>
<text font-size="12.8" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="66.1702" y="407.578">
<tspan x="66.1702" y="407.578"></tspan>
</text>
<text font-size="12.8" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="66.1702" y="407.578">
<tspan x="66.1702" y="407.578"></tspan>
</text>
<text font-size="12.8" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="66.1702" y="407.578">
<tspan x="66.1702" y="407.578">Network</tspan>
</text>
<g>
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="239.176" y1="288.575" x2="130.22" y2="363.521"/>
<polygon style="fill: #000000" points="124.041,367.772 129.446,357.985 130.22,363.521 135.114,366.224 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="124.041,367.772 129.446,357.985 130.22,363.521 135.114,366.224 "/>
</g>
<g>
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="240.306" y1="407.159" x2="132.021" y2="407.42"/>
<polygon style="fill: #000000" points="124.521,407.438 134.509,402.414 132.021,407.42 134.533,412.414 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="124.521,407.438 134.509,402.414 132.021,407.42 134.533,412.414 "/>
</g>
<g>
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="236.884" y1="529.373" x2="130.207" y2="453.265"/>
<polygon style="fill: #000000" points="124.101,448.909 135.146,450.646 130.207,453.265 129.338,458.787 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="124.101,448.909 135.146,450.646 130.207,453.265 129.338,458.787 "/>
</g>
<g>
<polygon style="fill: #ffffff" points="622.817,335.286 688.733,335.286 732.676,400.286 688.733,465.285 622.817,465.285 578.874,400.286 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="622.817,335.286 688.733,335.286 732.676,400.286 688.733,465.285 622.817,465.285 578.874,400.286 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="622.817,335.286 688.733,335.286 732.676,400.286 688.733,465.285 622.817,465.285 578.874,400.286 "/>
</g>
<text font-size="12.8" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="660.768" y="403.24">
<tspan x="660.768" y="403.24">Glance &amp;</tspan>
<tspan x="660.768" y="419.24"> Cinder</tspan>
</text>
<g>
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 20 4 4 4 4 4; stroke: #000000" x1="351.298" y1="273.543" x2="585.522" y2="371.705"/>
<polygon style="fill: #000000" points="592.439,374.604 581.284,375.35 585.522,371.705 585.149,366.127 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="592.439,374.604 581.284,375.35 585.522,371.705 585.149,366.127 "/>
</g>
<g>
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 20 4 4 4 4 4; stroke: #000000" x1="349.124" y1="544.045" x2="589.942" y2="435.24"/>
<polygon style="fill: #000000" points="596.777,432.152 589.722,440.826 589.942,435.24 585.605,431.713 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="596.777,432.152 589.722,440.826 589.942,435.24 585.605,431.713 "/>
</g>
<g>
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="-78.1822" y1="647.644" x2="-30.381" y2="647.662"/>
<polygon style="fill: #000000" points="-22.881,647.665 -32.8829,652.661 -30.381,647.662 -32.8791,642.661 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="-22.881,647.665 -32.8829,652.661 -30.381,647.662 -32.8791,642.661 "/>
</g>
<g>
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #000000" x1="-76.931" y1="667.662" x2="-31.2966" y2="667.571"/>
<polygon style="fill: #000000" points="-23.7966,667.556 -33.7867,672.576 -31.2966,667.571 -33.8065,662.576 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="-23.7966,667.556 -33.7867,672.576 -31.2966,667.571 -33.8065,662.576 "/>
</g>
<g>
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 20 4 4 4 4 4; stroke: #000000" x1="-77.406" y1="688.096" x2="-34.043" y2="688.137"/>
<polygon style="fill: #000000" points="-26.543,688.144 -36.5477,693.134 -34.043,688.137 -36.5383,683.134 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="-26.543,688.144 -36.5477,693.134 -34.043,688.137 -36.5383,683.134 "/>
</g>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="-1.94095" y="651.602">
<tspan x="-1.94095" y="651.602">oslo.messaging</tspan>
</text>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="-2.09635" y="671.704">
<tspan x="-2.09635" y="671.704">DB</tspan>
</text>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="-0.00755235" y="682.166">
<tspan x="-0.00755235" y="682.166"></tspan>
</text>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="-2.04795" y="691.422">
<tspan x="-2.04795" y="691.422">HTTP</tspan>
</text>
<g>
<rect style="fill: #ffffff" x="-60.5022" y="609.866" width="21.859" height="22.5877"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="-60.5022" y="609.866" width="21.859" height="22.5877"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="-60.5022" y="609.866" width="21.859" height="22.5877"/>
</g>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="-2.08015" y="622.434">
<tspan x="-2.08015" y="622.434">Nova service</tspan>
</text>
<g>
<polygon style="fill: #ffffff" points="-55.5864,583.818 -42.3658,583.818 -33.552,595.129 -42.3658,606.44 -55.5864,606.44 -64.4002,595.129 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="-55.5864,583.818 -42.3658,583.818 -33.552,595.129 -42.3658,606.44 -55.5864,606.44 -64.4002,595.129 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="-55.5864,583.818 -42.3658,583.818 -33.552,595.129 -42.3658,606.44 -55.5864,606.44 -64.4002,595.129 "/>
</g>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="-2.14495" y="595.712">
<tspan x="-2.14495" y="595.712">External service</tspan>
</text>
<g>
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="294.217" y1="511.485" x2="294.994" y2="474.677"/>
<polygon style="fill: #000000" points="295.152,467.179 299.94,477.282 294.994,474.677 289.942,477.071 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="295.152,467.179 299.94,477.282 294.994,474.677 289.942,477.071 "/>
</g>
<g>
<polygon style="fill: #ffffff" points="292.066,580.371 346.107,627.371 292.066,674.371 238.025,627.371 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="292.066,580.371 346.107,627.371 292.066,674.371 238.025,627.371 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="292.066,580.371 346.107,627.371 292.066,674.371 238.025,627.371 "/>
</g>
<text font-size="12.8" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="292.066" y="627.371">
<tspan x="292.066" y="627.371">Hypervisor</tspan>
</text>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="259.145" y="132.647">
<tspan x="259.145" y="132.647">Nova-Networking</tspan>
</text>
<g>
<path style="fill: #a5a585" d="M 473.725 856.395 L 473.686,855.897 L 473.577,855.407 L 473.39,854.917 L 473.133,854.434 L 472.814,853.952 L 472.417,853.477 L 471.951,853.011 L 471.414,852.551 L 470.807,852.1 L 470.138,851.672 L 469.406,851.244 L 468.621,850.824 L 467.757,850.427 L 466.847,850.046 L 465.882,849.68 L 464.855,849.33 L 463.789,849.004 L 462.668,848.692 L 461.509,848.404 L 460.295,848.132 L 459.058,847.875 L 457.774,847.65 L 456.459,847.432 L 455.129,847.253 L 453.76,847.097 L 452.367,846.965 L 450.966,846.848 L 449.543,846.771 L 448.111,846.7 L 446.672,846.654 L 445.232,846.654 L 445.232,846.654 L 443.785,846.654 L 442.345,846.7 L 440.914,846.771 L 439.49,846.848 L 438.09,846.965 L 436.697,847.097 L 435.335,847.253 L 433.997,847.432 L 432.682,847.65 L 431.398,847.875 L 430.161,848.132 L 428.955,848.404 L 427.796,848.692 L 426.675,849.004 L 425.602,849.33 L 424.575,849.68 L 423.618,850.046 L 422.7,850.427 L 421.844,850.824 L 421.05,851.244 L 420.319,851.672 L 419.65,852.1 L 419.043,852.551 L 418.506,853.011 L 418.039,853.477 L 417.642,853.952 L 417.323,854.434 L 417.066,854.917 L 416.88,855.407 L 416.778,855.897 L 416.74,856.395 L 416.74,856.395 L 416.778,856.893 L 416.88,857.375 L 417.066,857.873 L 417.323,858.356 L 417.642,858.838 L 418.039,859.313 L 418.506,859.78 L 419.043,860.239 L 419.65,860.682 L 420.319,861.118 L 421.05,861.546 L 421.844,861.966 L 422.7,862.363 L 423.618,862.744 L 424.575,863.11 L 425.602,863.46 L 426.675,863.787 L 427.796,864.098 L 428.955,864.386 L 430.161,864.658 L 431.398,864.915 L 432.682,865.14 L 433.997,865.351 L 435.335,865.537 L 436.697,865.693 L 438.09,865.825 L 439.49,865.934 L 440.914,866.02 L 442.345,866.082 L 443.785,866.129 L 445.232,866.136 L 445.232,866.136 L 446.672,866.129 L 448.111,866.082 L 449.543,866.02 L 450.966,865.934 L 452.367,865.825 L 453.76,865.693 L 455.129,865.537 L 456.459,865.351 L 457.774,865.14 L 459.058,864.915 L 460.295,864.658 L 461.509,864.386 L 462.668,864.098 L 463.789,863.787 L 464.855,863.46 L 465.882,863.11 L 466.847,862.744 L 467.757,862.363 L 468.621,861.966 L 469.406,861.546 L 470.138,861.118 L 470.807,860.682 L 471.414,860.239 L 471.951,859.78 L 472.417,859.313 L 472.814,858.838 L 473.133,858.356 L 473.39,857.873 L 473.577,857.375 L 473.686,856.893 L 473.725,856.395z"/>
<path style="fill: none; fill-opacity:0; stroke-width: 0.02; stroke: #494936" d="M 473.39 856.239 L 473.351,855.742 L 473.25,855.267 L 473.071,854.785 L 472.822,854.31 L 472.487,853.828 L 472.083,853.368 L 471.639,852.902 L 471.095,852.466 L 470.496,852.022 L 469.834,851.587 L 469.103,851.174 L 468.317,850.762 L 467.469,850.373 L 466.574,849.984 L 465.594,849.634 L 464.575,849.291 L 463.509,848.965 L 462.404,848.661 L 461.252,848.381 L 460.054,848.109 L 458.809,847.868 L 457.541,847.642 L 456.234,847.432 L 454.911,847.253 L 453.557,847.097 L 452.165,846.973 L 450.772,846.848 L 449.356,846.778 L 447.94,846.716 L 446.493,846.677 L 445.061,846.654 L 445.061,846.654 L 443.629,846.677 L 442.198,846.716 L 440.766,846.778 L 439.366,846.848 L 437.965,846.973 L 436.58,847.097 L 435.218,847.253 L 433.888,847.432 L 432.589,847.642 L 431.32,847.868 L 430.076,848.109 L 428.877,848.381 L 427.734,848.661 L 426.613,848.965 L 425.539,849.291 L 424.528,849.634 L 423.563,849.984 L 422.668,850.373 L 421.813,850.762 L 421.019,851.174 L 420.303,851.587 L 419.642,852.022 L 419.027,852.466 L 418.498,852.902 L 418.039,853.368 L 417.642,853.828 L 417.315,854.31 L 417.059,854.785 L 416.88,855.267 L 416.778,855.742 L 416.74,856.239 L 416.74,856.239 L 416.778,856.722 L 416.88,857.197 L 417.059,857.687 L 417.315,858.161 L 417.642,858.636 L 418.039,859.103 L 418.498,859.562 L 419.027,860.005 L 419.642,860.441 L 420.303,860.885 L 421.019,861.305 L 421.813,861.701 L 422.668,862.098 L 423.563,862.48 L 424.528,862.837 L 425.539,863.18 L 426.613,863.499 L 427.734,863.81 L 428.877,864.09 L 430.076,864.362 L 431.32,864.611 L 432.589,864.829 L 433.888,865.032 L 435.218,865.211 L 436.58,865.366 L 437.965,865.498 L 439.366,865.615 L 440.766,865.693 L 442.198,865.755 L 443.629,865.794 L 445.061,865.81 L 445.061,865.81 L 446.493,865.794 L 447.94,865.755 L 449.356,865.693 L 450.772,865.615 L 452.165,865.498 L 453.557,865.366 L 454.911,865.211 L 456.234,865.032 L 457.541,864.829 L 458.809,864.611 L 460.054,864.362 L 461.252,864.09 L 462.404,863.81 L 463.509,863.499 L 464.575,863.18 L 465.594,862.837 L 466.574,862.48 L 467.469,862.098 L 468.317,861.701 L 469.103,861.305 L 469.834,860.885 L 470.496,860.441 L 471.095,860.005 L 471.639,859.562 L 472.083,859.103 L 472.487,858.636 L 472.822,858.161 L 473.071,857.687 L 473.25,857.197 L 473.351,856.722 L 473.39,856.239"/>
<path style="fill: #a5a585" d="M 416.74 836.049 L 416.74,856.566 L 473.39,856.566 L 473.39,836.049 L 416.74,836.049z"/>
<path style="fill: #c9c9b6" d="M 473.725 835.878 L 473.686,835.372 L 473.577,834.882 L 473.39,834.399 L 473.133,833.917 L 472.814,833.427 L 472.417,832.952 L 471.951,832.478 L 471.414,832.034 L 470.807,831.591 L 470.138,831.139 L 469.406,830.727 L 468.621,830.307 L 467.757,829.902 L 466.847,829.529 L 465.882,829.163 L 464.855,828.805 L 463.789,828.478 L 462.668,828.175 L 461.509,827.879 L 460.295,827.607 L 459.058,827.358 L 457.774,827.132 L 456.459,826.922 L 455.129,826.736 L 453.76,826.58 L 452.367,826.448 L 450.966,826.339 L 449.543,826.253 L 448.111,826.183 L 446.672,826.144 L 445.232,826.136 L 445.232,826.136 L 443.785,826.144 L 442.345,826.183 L 440.914,826.253 L 439.49,826.339 L 438.09,826.448 L 436.697,826.58 L 435.335,826.736 L 433.997,826.922 L 432.682,827.132 L 431.398,827.358 L 430.161,827.607 L 428.955,827.879 L 427.796,828.175 L 426.675,828.478 L 425.602,828.805 L 424.575,829.163 L 423.618,829.529 L 422.7,829.902 L 421.844,830.307 L 421.05,830.727 L 420.319,831.139 L 419.65,831.591 L 419.043,832.034 L 418.506,832.478 L 418.039,832.952 L 417.642,833.427 L 417.323,833.917 L 417.066,834.399 L 416.88,834.882 L 416.778,835.372 L 416.74,835.878 L 416.74,835.878 L 416.778,836.368 L 416.88,836.866 L 417.066,837.34 L 417.323,837.838 L 417.642,838.313 L 418.039,838.795 L 418.506,839.262 L 419.043,839.714 L 419.65,840.165 L 420.319,840.601 L 421.05,841.028 L 421.844,841.441 L 422.7,841.838 L 423.618,842.219 L 424.575,842.592 L 425.602,842.935 L 426.675,843.269 L 427.796,843.58 L 428.955,843.868 L 430.161,844.141 L 431.398,844.397 L 432.682,844.615 L 433.997,844.833 L 435.335,845.012 L 436.697,845.168 L 438.09,845.308 L 439.49,845.409 L 440.914,845.502 L 442.345,845.565 L 443.785,845.603 L 445.232,845.619 L 445.232,845.619 L 446.672,845.603 L 448.111,845.565 L 449.543,845.502 L 450.966,845.409 L 452.367,845.308 L 453.76,845.168 L 455.129,845.012 L 456.459,844.833 L 457.774,844.615 L 459.058,844.397 L 460.295,844.141 L 461.509,843.868 L 462.668,843.58 L 463.789,843.269 L 464.855,842.935 L 465.882,842.592 L 466.847,842.219 L 467.757,841.838 L 468.621,841.441 L 469.406,841.028 L 470.138,840.601 L 470.807,840.165 L 471.414,839.714 L 471.951,839.262 L 472.417,838.795 L 472.814,838.313 L 473.133,837.838 L 473.39,837.34 L 473.577,836.866 L 473.686,836.368 L 473.725,835.878z"/>
<path style="fill: none; fill-opacity:0; stroke-width: 0.02; stroke: #494936" d="M 473.39 835.722 L 473.351,835.224 L 473.25,834.75 L 473.071,834.275 L 472.822,833.793 L 472.487,833.302 L 472.083,832.843 L 471.639,832.4 L 471.095,831.941 L 470.496,831.505 L 469.834,831.062 L 469.103,830.657 L 468.317,830.245 L 467.469,829.848 L 466.574,829.482 L 465.594,829.116 L 464.575,828.782 L 463.509,828.455 L 462.404,828.144 L 461.252,827.856 L 460.054,827.591 L 458.809,827.35 L 457.541,827.125 L 456.234,826.922 L 454.911,826.736 L 453.557,826.58 L 452.165,826.448 L 450.772,826.339 L 449.356,826.253 L 448.881,826.23 L 441.241,826.23 L 440.766,826.253 L 439.366,826.339 L 437.965,826.448 L 436.58,826.58 L 435.218,826.736 L 433.888,826.922 L 432.589,827.125 L 431.32,827.35 L 430.076,827.591 L 428.877,827.856 L 427.734,828.144 L 426.613,828.455 L 425.539,828.782 L 424.528,829.116 L 423.563,829.482 L 422.668,829.848 L 421.813,830.245 L 421.019,830.657 L 420.303,831.062 L 419.642,831.505 L 419.027,831.941 L 418.498,832.4 L 418.039,832.843 L 417.642,833.302 L 417.315,833.793 L 417.059,834.275 L 416.88,834.75 L 416.778,835.224 L 416.74,835.722 L 416.74,835.722 L 416.778,836.197 L 416.88,836.687 L 417.059,837.169 L 417.315,837.644 L 417.642,838.119 L 418.039,838.585 L 418.498,839.037 L 419.027,839.496 L 419.642,839.931 L 420.303,840.367 L 421.019,840.787 L 421.813,841.184 L 422.668,841.573 L 423.563,841.962 L 424.528,842.32 L 425.539,842.655 L 426.613,842.974 L 427.734,843.285 L 428.877,843.565 L 430.076,843.837 L 431.32,844.094 L 432.589,844.296 L 433.888,844.514 L 435.218,844.685 L 436.58,844.849 L 437.965,844.989 L 439.366,845.098 L 440.766,845.183 L 442.198,845.238 L 443.629,845.269 L 445.061,845.292 L 445.061,845.292 L 446.493,845.269 L 447.94,845.238 L 449.356,845.183 L 450.772,845.098 L 452.165,844.989 L 453.557,844.849 L 454.911,844.685 L 456.234,844.514 L 457.541,844.296 L 458.809,844.094 L 460.054,843.837 L 461.252,843.565 L 462.404,843.285 L 463.509,842.974 L 464.575,842.655 L 465.594,842.32 L 466.574,841.962 L 467.469,841.573 L 468.317,841.184 L 469.103,840.787 L 469.834,840.367 L 470.496,839.931 L 471.095,839.496 L 471.639,839.037 L 472.083,838.585 L 472.487,838.119 L 472.822,837.644 L 473.071,837.169 L 473.25,836.687 L 473.351,836.197 L 473.39,835.722"/>
<path style="fill: none; fill-opacity:0; stroke-width: 0.02; stroke: #000000" d="M 416.74 835.722 L 416.74,856.224"/>
<path style="fill: none; fill-opacity:0; stroke-width: 0.02; stroke: #000000" d="M 473.39 835.722 L 473.39,856.224"/>
</g>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="273.036" y="831.236">
<tspan x="273.036" y="831.236">API</tspan>
</text>
<text font-size="12.8" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="281.992" y="984.728">
<tspan x="281.992" y="984.728">Conductor</tspan>
</text>
<g>
<rect style="fill: #ffffff" x="231.258" y="777.248" width="110.242" height="113.917"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="231.258" y="777.248" width="110.242" height="113.917"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="231.258" y="777.248" width="110.242" height="113.917"/>
</g>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="286.379" y="834.206">
<tspan x="286.379" y="834.206">API</tspan>
</text>
<g>
<rect style="fill: #ffffff" x="239.55" y="786.645" width="110.242" height="113.917"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="239.55" y="786.645" width="110.242" height="113.917"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="239.55" y="786.645" width="110.242" height="113.917"/>
</g>
<text font-size="12.8" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="294.671" y="843.604">
<tspan x="294.671" y="843.604">API</tspan>
</text>
<g>
<rect style="fill: #ffffff" x="233.47" y="934.79" width="110.242" height="113.917"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="233.47" y="934.79" width="110.242" height="113.917"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="233.47" y="934.79" width="110.242" height="113.917"/>
</g>
<text font-size="12.8" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="288.591" y="991.749">
<tspan x="288.591" y="991.749">Conductor</tspan>
</text>
<g>
<rect style="fill: #ffffff" x="240.766" y="943.634" width="110.242" height="113.917"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="240.766" y="943.634" width="110.242" height="113.917"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="240.766" y="943.634" width="110.242" height="113.917"/>
</g>
<text font-size="12.8" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="295.887" y="1000.59">
<tspan x="295.887" y="1000.59">Conductor</tspan>
</text>
<text font-size="12.8" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="445.58" y="980.416">
<tspan x="445.58" y="980.416">Scheduler</tspan>
</text>
<g>
<rect style="fill: #ffffff" x="400.962" y="932.856" width="110.242" height="113.917"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="400.962" y="932.856" width="110.242" height="113.917"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="400.962" y="932.856" width="110.242" height="113.917"/>
</g>
<text font-size="12.8" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="456.083" y="989.815">
<tspan x="456.083" y="989.815">Scheduler</tspan>
</text>
<g>
<rect style="fill: #ffffff" x="409.806" y="943.358" width="110.242" height="113.917"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="409.806" y="943.358" width="110.242" height="113.917"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="409.806" y="943.358" width="110.242" height="113.917"/>
</g>
<text font-size="12.8" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="464.927" y="1000.32">
<tspan x="464.927" y="1000.32">Scheduler</tspan>
</text>
<g>
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="294.671" y1="900.562" x2="295.064" y2="932.905"/>
<polygon style="fill: #000000" points="295.155,940.404 290.034,930.466 295.064,932.905 300.033,930.344 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="295.155,940.404 290.034,930.466 295.064,932.905 300.033,930.344 "/>
</g>
<g>
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="351.008" y1="1000.59" x2="399.093" y2="1000.48"/>
<polygon style="fill: #000000" points="406.593,1000.46 396.605,1005.48 399.093,1000.48 396.581,995.482 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="406.593,1000.46 396.605,1005.48 399.093,1000.48 396.581,995.482 "/>
</g>
<text font-size="12.8" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="445.025" y="846.087">
<tspan x="445.025" y="846.087">DB</tspan>
</text>
<g>
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #000000" x1="349.792" y1="843.604" x2="407.008" y2="845.096"/>
<polygon style="fill: #000000" points="414.506,845.291 404.379,850.029 407.008,845.096 404.639,840.032 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="414.506,845.291 404.379,850.029 407.008,845.096 404.639,840.032 "/>
</g>
<g>
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #000000" x1="451.166" y1="933.773" x2="446.083" y2="875.835"/>
<polygon style="fill: #000000" points="445.428,868.364 451.282,877.889 446.083,875.835 441.321,878.763 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="445.428,868.364 451.282,877.889 446.083,875.835 441.321,878.763 "/>
</g>
<g>
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #000000" x1="351.832" y1="942.634" x2="420.914" y2="871.066"/>
<polygon style="fill: #000000" points="426.122,865.67 422.775,876.337 420.914,871.066 415.58,869.392 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="426.122,865.67 422.775,876.337 420.914,871.066 415.58,869.392 "/>
</g>
<g>
<rect style="fill: #ffffff" x="221.862" y="1088.74" width="110.242" height="113.917"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="221.862" y="1088.74" width="110.242" height="113.917"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="221.862" y="1088.74" width="110.242" height="113.917"/>
</g>
<text font-size="12.8" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="276.983" y="1145.7">
<tspan x="276.983" y="1145.7">Compute</tspan>
</text>
<g>
<rect style="fill: #ffffff" x="229.6" y="1097.17" width="110.242" height="113.917"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="229.6" y="1097.17" width="110.242" height="113.917"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="229.6" y="1097.17" width="110.242" height="113.917"/>
</g>
<text font-size="12.8" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="284.721" y="1154.13">
<tspan x="284.721" y="1154.13">Compute</tspan>
</text>
<g>
<rect style="fill: #ffffff" x="237.34" y="1106.01" width="110.242" height="113.917"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="237.34" y="1106.01" width="110.242" height="113.917"/>
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="237.34" y="1106.01" width="110.242" height="113.917"/>
</g>
<text font-size="12.8" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="292.461" y="1162.97">
<tspan x="292.461" y="1162.97">Compute</tspan>
</text>
<g>
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="295.887" y1="1057.55" x2="294.659" y2="1095.33"/>
<polygon style="fill: #000000" points="294.415,1102.83 289.743,1092.67 294.659,1095.33 299.737,1093 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="294.415,1102.83 289.743,1092.67 294.659,1095.33 299.737,1093 "/>
</g>
<g>
<path style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" d="M 354.277,1106.36 A 183.848,183.848 0 0 0 350.784,894.023"/>
<polygon style="fill: #000000" points="349.938,1112.46 352.033,1101.48 354.49,1106.5 359.981,1107.55 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="349.938,1112.46 352.033,1101.48 354.49,1106.5 359.981,1107.55 "/>
</g>
<g>
<polygon style="fill: #ffffff" points="17.0172,776 82.9324,776 126.876,841 82.9324,905.999 17.0172,905.999 -26.9262,841 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="17.0172,776 82.9324,776 126.876,841 82.9324,905.999 17.0172,905.999 -26.9262,841 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="17.0172,776 82.9324,776 126.876,841 82.9324,905.999 17.0172,905.999 -26.9262,841 "/>
</g>
<text font-size="12.8" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="54.9684" y="843.954">
<tspan x="54.9684" y="843.954">Keystone</tspan>
</text>
<g>
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 20 4 4 4 4 4; stroke: #000000" x1="238.578" y1="843.686" x2="135.881" y2="843.836"/>
<polygon style="fill: #000000" points="128.381,843.847 138.373,838.832 135.881,843.836 138.388,848.832 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="128.381,843.847 138.373,838.832 135.881,843.836 138.388,848.832 "/>
</g>
<g>
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 20 4 4 4 4 4; stroke: #000000" x1="238.545" y1="881.13" x2="114.84" y2="963.842"/>
<polygon style="fill: #000000" points="108.605,968.011 114.139,958.296 114.84,963.842 119.697,966.609 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="108.605,968.011 114.139,958.296 114.84,963.842 119.697,966.609 "/>
</g>
<g>
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 20 4 4 4 4 4; stroke: #000000" x1="236.339" y1="1125.36" x2="112.045" y2="1042.06"/>
<polygon style="fill: #000000" points="105.815,1037.89 116.905,1039.3 112.045,1042.06 111.338,1047.61 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="105.815,1037.89 116.905,1039.3 112.045,1042.06 111.338,1047.61 "/>
</g>
<g>
<polygon style="fill: #ffffff" points="622.283,928.854 688.198,928.854 732.142,993.854 688.198,1058.85 622.283,1058.85 578.34,993.854 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="622.283,928.854 688.198,928.854 732.142,993.854 688.198,1058.85 622.283,1058.85 578.34,993.854 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="622.283,928.854 688.198,928.854 732.142,993.854 688.198,1058.85 622.283,1058.85 578.34,993.854 "/>
</g>
<text font-size="12.8" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="660.234" y="996.809">
<tspan x="660.234" y="996.809">Glance &amp;</tspan>
<tspan x="660.234" y="1012.81"> Cinder</tspan>
</text>
<g>
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 20 4 4 4 4 4; stroke: #000000" x1="350.764" y1="867.112" x2="584.987" y2="965.273"/>
<polygon style="fill: #000000" points="591.905,968.172 580.749,968.918 584.987,965.273 584.614,959.696 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="591.905,968.172 580.749,968.918 584.987,965.273 584.614,959.696 "/>
</g>
<g>
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 20 4 4 4 4 4; stroke: #000000" x1="348.59" y1="1137.61" x2="589.408" y2="1028.81"/>
<polygon style="fill: #000000" points="596.242,1025.72 589.188,1034.39 589.408,1028.81 585.071,1025.28 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="596.242,1025.72 589.188,1034.39 589.408,1028.81 585.071,1025.28 "/>
</g>
<g>
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="293.683" y1="1105.05" x2="294.459" y2="1068.25"/>
<polygon style="fill: #000000" points="294.617,1060.75 299.405,1070.85 294.459,1068.25 289.408,1070.64 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="294.617,1060.75 299.405,1070.85 294.459,1068.25 289.408,1070.64 "/>
</g>
<g>
<polygon style="fill: #ffffff" points="291.532,1173.94 345.573,1220.94 291.532,1267.94 237.491,1220.94 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="291.532,1173.94 345.573,1220.94 291.532,1267.94 237.491,1220.94 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="291.532,1173.94 345.573,1220.94 291.532,1267.94 237.491,1220.94 "/>
</g>
<text font-size="12.8" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="291.532" y="1220.94">
<tspan x="291.532" y="1220.94">Hypervisor</tspan>
</text>
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="258.61" y="726.215">
<tspan x="258.61" y="726.215">Neutron</tspan>
</text>
<g>
<polygon style="fill: #ffffff" points="17.0653,935.887 82.9804,935.887 126.924,1000.89 82.9804,1065.89 17.0653,1065.89 -26.8782,1000.89 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="17.0653,935.887 82.9804,935.887 126.924,1000.89 82.9804,1065.89 17.0653,1065.89 -26.8782,1000.89 "/>
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="17.0653,935.887 82.9804,935.887 126.924,1000.89 82.9804,1065.89 17.0653,1065.89 -26.8782,1000.89 "/>
</g>
<text font-size="12.8" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="55.0164" y="1003.84">
<tspan x="55.0164" y="1003.84">Neutron</tspan>
</text>
</svg>

After

Width:  |  Height:  |  Size: 53 KiB