Merge "Add servicing states to states doc, fix state diagram"

This commit is contained in:
Zuul 2024-05-15 04:22:53 +00:00 committed by Gerrit Code Review
commit 339e149c50
4 changed files with 832 additions and 3 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 531 KiB

View File

@ -0,0 +1,795 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 9.0.0 (20230911.1827)
-->
<!-- Title: Ironic states Pages: 1 -->
<svg width="3401pt" height="1067pt"
viewBox="0.00 0.00 3400.79 1067.25" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 1063.25)">
<title>Ironic states</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-1063.25 3396.79,-1063.25 3396.79,4 -4,4"/>
<!-- enroll -->
<g id="node1" class="node">
<title>enroll</title>
<ellipse fill="none" stroke="black" stroke-width="1.7" cx="27" cy="-275" rx="27" ry="18"/>
<text text-anchor="middle" x="27" y="-271.3" font-family="Times,serif" font-size="11.00">enroll</text>
</g>
<!-- verifying -->
<g id="node2" class="node">
<title>verifying</title>
<ellipse fill="none" stroke="black" cx="208" cy="-275" rx="34.75" ry="18"/>
<text text-anchor="middle" x="208" y="-271.3" font-family="Times,serif" font-size="11.00" fill="gray">verifying</text>
</g>
<!-- enroll&#45;&gt;verifying -->
<g id="edge1" class="edge">
<title>enroll&#45;&gt;verifying</title>
<path fill="none" stroke="black" d="M54.41,-275C82.51,-275 127.49,-275 161.35,-275"/>
<polygon fill="black" stroke="black" points="161.3,-278.5 171.3,-275 161.3,-271.5 161.3,-278.5"/>
<text text-anchor="middle" x="113.62" y="-277.85" font-family="Times,serif" font-size="12.00">manage (via API)</text>
</g>
<!-- verifying&#45;&gt;enroll -->
<g id="edge18" class="edge">
<title>verifying&#45;&gt;enroll</title>
<path fill="none" stroke="black" d="M180.34,-263.66C172.41,-260.82 163.61,-258.18 155.25,-256.75 118.78,-250.51 108.29,-249.52 72,-256.75 67.86,-257.57 63.63,-258.79 59.5,-260.22"/>
<polygon fill="black" stroke="black" points="58.4,-256.89 50.36,-263.79 60.95,-263.41 58.4,-256.89"/>
<text text-anchor="middle" x="113.62" y="-259.85" font-family="Times,serif" font-size="12.00" fill="gray">fail</text>
</g>
<!-- manageable -->
<g id="node3" class="node">
<title>manageable</title>
<ellipse fill="none" stroke="black" stroke-width="1.7" cx="345.18" cy="-275" rx="43.17" ry="18"/>
<text text-anchor="middle" x="345.18" y="-271.3" font-family="Times,serif" font-size="11.00">manageable</text>
</g>
<!-- verifying&#45;&gt;manageable -->
<g id="edge17" class="edge">
<title>verifying&#45;&gt;manageable</title>
<path fill="none" stroke="black" d="M243.11,-275C257.46,-275 274.51,-275 290.47,-275"/>
<polygon fill="black" stroke="black" points="290.33,-278.5 300.33,-275 290.33,-271.5 290.33,-278.5"/>
<text text-anchor="middle" x="272.38" y="-277.85" font-family="Times,serif" font-size="12.00" fill="gray">done</text>
</g>
<!-- cleaning -->
<g id="node4" class="node">
<title>cleaning</title>
<ellipse fill="none" stroke="black" cx="548.47" cy="-349" rx="33.35" ry="18"/>
<text text-anchor="middle" x="548.47" y="-345.3" font-family="Times,serif" font-size="11.00" fill="gray">cleaning</text>
</g>
<!-- manageable&#45;&gt;cleaning -->
<g id="edge2" class="edge">
<title>manageable&#45;&gt;cleaning</title>
<path fill="none" stroke="black" d="M361,-292.1C372.22,-303.88 388.68,-318.82 406.35,-327 436.9,-341.15 474.75,-346.48 503.55,-348.36"/>
<polygon fill="black" stroke="black" points="503.22,-351.85 513.39,-348.88 503.59,-344.86 503.22,-351.85"/>
<text text-anchor="middle" x="447.6" y="-349.85" font-family="Times,serif" font-size="12.00">provide (via API)</text>
</g>
<!-- manageable&#45;&gt;cleaning -->
<g id="edge3" class="edge">
<title>manageable&#45;&gt;cleaning</title>
<path fill="none" stroke="black" d="M382.74,-284.24C390.52,-286.18 398.7,-288.18 406.35,-290 442.92,-298.71 454.4,-293.67 488.85,-308.75 499.67,-313.49 510.6,-320.31 520.04,-327"/>
<polygon fill="black" stroke="black" points="517.94,-329.79 528.06,-332.93 522.1,-324.17 517.94,-329.79"/>
<text text-anchor="middle" x="447.6" y="-310.85" font-family="Times,serif" font-size="12.00">clean (via API)</text>
</g>
<!-- inspecting -->
<g id="node5" class="node">
<title>inspecting</title>
<ellipse fill="none" stroke="black" cx="548.47" cy="-72" rx="38.03" ry="18"/>
<text text-anchor="middle" x="548.47" y="-68.3" font-family="Times,serif" font-size="11.00" fill="gray">inspecting</text>
</g>
<!-- manageable&#45;&gt;inspecting -->
<g id="edge4" class="edge">
<title>manageable&#45;&gt;inspecting</title>
<path fill="none" stroke="black" d="M346.36,-256.71C347.81,-219.66 356.71,-135.69 406.35,-93.75 420.14,-82.09 463.96,-76.66 499.15,-74.14"/>
<polygon fill="black" stroke="black" points="498.96,-77.66 508.72,-73.52 498.51,-70.68 498.96,-77.66"/>
<text text-anchor="middle" x="447.6" y="-96.85" font-family="Times,serif" font-size="12.00">inspect (via API)</text>
</g>
<!-- adopting -->
<g id="node6" class="node">
<title>adopting</title>
<ellipse fill="none" stroke="black" cx="548.47" cy="-618" rx="33.35" ry="18"/>
<text text-anchor="middle" x="548.47" y="-614.3" font-family="Times,serif" font-size="11.00" fill="gray">adopting</text>
</g>
<!-- manageable&#45;&gt;adopting -->
<g id="edge5" class="edge">
<title>manageable&#45;&gt;adopting</title>
<path fill="none" stroke="black" d="M347.36,-293.39C351.53,-352.43 367.43,-535.83 406.35,-578 431.03,-604.75 472.15,-614.1 503.66,-617.14"/>
<polygon fill="black" stroke="black" points="503.03,-620.6 513.27,-617.88 503.57,-613.62 503.03,-620.6"/>
<text text-anchor="middle" x="447.6" y="-616.85" font-family="Times,serif" font-size="12.00">adopt (via API)</text>
</g>
<!-- cleaning&#45;&gt;manageable -->
<g id="edge36" class="edge">
<title>cleaning&#45;&gt;manageable</title>
<path fill="none" stroke="black" d="M539.95,-331.34C530.89,-312.62 513.73,-284.1 488.85,-271.75 459.46,-257.16 422.3,-258.53 393.27,-263.26"/>
<polygon fill="black" stroke="black" points="392.88,-259.77 383.67,-265.02 394.14,-266.66 392.88,-259.77"/>
<text text-anchor="middle" x="447.6" y="-274.85" font-family="Times,serif" font-size="12.00" fill="gray">manage</text>
</g>
<!-- available -->
<g id="node7" class="node">
<title>available</title>
<ellipse fill="none" stroke="black" stroke-width="1.7" cx="752.98" cy="-514" rx="35.22" ry="18"/>
<text text-anchor="middle" x="752.98" y="-510.3" font-family="Times,serif" font-size="11.00">available</text>
</g>
<!-- cleaning&#45;&gt;available -->
<g id="edge32" class="edge">
<title>cleaning&#45;&gt;available</title>
<path fill="none" stroke="black" d="M553.79,-366.93C560.82,-392.17 577.15,-437.91 608.1,-463 637.89,-487.16 655.33,-472.55 691.35,-485.75 699.86,-488.87 708.81,-492.71 717.15,-496.55"/>
<polygon fill="black" stroke="black" points="715.4,-499.59 725.94,-500.7 718.39,-493.26 715.4,-499.59"/>
<text text-anchor="middle" x="649.72" y="-487.85" font-family="Times,serif" font-size="12.00" fill="gray">done</text>
</g>
<!-- clean failed -->
<g id="node19" class="node">
<title>clean failed</title>
<ellipse fill="none" stroke="black" cx="1166.84" cy="-273" rx="42.7" ry="18"/>
<text text-anchor="middle" x="1166.84" y="-269.3" font-family="Times,serif" font-size="11.00" fill="red">clean failed</text>
</g>
<!-- cleaning&#45;&gt;clean failed -->
<g id="edge33" class="edge">
<title>cleaning&#45;&gt;clean failed</title>
<path fill="none" stroke="black" d="M579.1,-356.77C588.32,-358.86 598.57,-360.86 608.1,-362 652.79,-367.34 664.34,-363.56 709.35,-364 883.77,-365.72 937.98,-384.79 1099.12,-318 1112.53,-312.44 1126.05,-303.98 1137.37,-295.89"/>
<polygon fill="black" stroke="black" points="1139.16,-298.93 1145.11,-290.16 1134.99,-293.3 1139.16,-298.93"/>
<text text-anchor="middle" x="851.74" y="-369.85" font-family="Times,serif" font-size="12.00" fill="gray">fail</text>
</g>
<!-- clean wait -->
<g id="node20" class="node">
<title>clean wait</title>
<ellipse fill="none" stroke="black" cx="954.25" cy="-310" rx="38.96" ry="18"/>
<text text-anchor="middle" x="954.25" y="-306.3" font-family="Times,serif" font-size="11.00" fill="gray">clean wait</text>
</g>
<!-- cleaning&#45;&gt;clean wait -->
<g id="edge34" class="edge">
<title>cleaning&#45;&gt;clean wait</title>
<path fill="none" stroke="black" d="M581.97,-349.32C629.32,-349.45 720.01,-348.41 796.62,-340 838.06,-335.45 847.93,-330.9 888.87,-323 894.82,-321.85 901.07,-320.62 907.24,-319.39"/>
<polygon fill="black" stroke="black" points="907.59,-322.89 916.7,-317.49 906.21,-316.03 907.59,-322.89"/>
<text text-anchor="middle" x="752.98" y="-348.85" font-family="Times,serif" font-size="12.00" fill="gray">wait</text>
</g>
<!-- clean hold -->
<g id="node21" class="node">
<title>clean hold</title>
<ellipse fill="none" stroke="black" cx="752.98" cy="-268" rx="38.49" ry="18"/>
<text text-anchor="middle" x="752.98" y="-264.3" font-family="Times,serif" font-size="11.00" fill="gray">clean hold</text>
</g>
<!-- cleaning&#45;&gt;clean hold -->
<g id="edge35" class="edge">
<title>cleaning&#45;&gt;clean hold</title>
<path fill="none" stroke="black" d="M562.54,-332.25C573.35,-319.61 589.86,-302.93 608.1,-293.75 637.38,-279.01 673.75,-272.59 702.6,-269.84"/>
<polygon fill="black" stroke="black" points="702.87,-273.33 712.55,-269.03 702.3,-266.36 702.87,-273.33"/>
<text text-anchor="middle" x="649.72" y="-295.85" font-family="Times,serif" font-size="12.00" fill="gray">hold</text>
</g>
<!-- inspecting&#45;&gt;manageable -->
<g id="edge46" class="edge">
<title>inspecting&#45;&gt;manageable</title>
<path fill="none" stroke="black" d="M520.85,-59.34C490.06,-46.75 439.37,-32.63 406.35,-57.75 376.37,-80.55 357.46,-191.84 349.92,-245.69"/>
<polygon fill="black" stroke="black" points="346.48,-244.98 348.61,-255.36 353.42,-245.93 346.48,-244.98"/>
<text text-anchor="middle" x="447.6" y="-60.85" font-family="Times,serif" font-size="12.00" fill="gray">done</text>
</g>
<!-- inspect failed -->
<g id="node22" class="node">
<title>inspect failed</title>
<ellipse fill="none" stroke="black" cx="954.25" cy="-80" rx="47.38" ry="18"/>
<text text-anchor="middle" x="954.25" y="-76.3" font-family="Times,serif" font-size="11.00" fill="red">inspect failed</text>
</g>
<!-- inspecting&#45;&gt;inspect failed -->
<g id="edge47" class="edge">
<title>inspecting&#45;&gt;inspect failed</title>
<path fill="none" stroke="black" d="M558.82,-89.76C568.62,-106.24 585.71,-129.74 608.1,-140 644.15,-156.52 802.99,-169.12 888.87,-136 905.22,-129.69 920.2,-117.26 931.59,-105.71"/>
<polygon fill="black" stroke="black" points="933.91,-108.35 938.19,-98.66 928.8,-103.57 933.91,-108.35"/>
<text text-anchor="middle" x="752.98" y="-159.85" font-family="Times,serif" font-size="12.00" fill="gray">fail</text>
</g>
<!-- inspect wait -->
<g id="node23" class="node">
<title>inspect wait</title>
<ellipse fill="none" stroke="black" cx="752.98" cy="-18" rx="43.64" ry="18"/>
<text text-anchor="middle" x="752.98" y="-14.3" font-family="Times,serif" font-size="11.00" fill="gray">inspect wait</text>
</g>
<!-- inspecting&#45;&gt;inspect wait -->
<g id="edge48" class="edge">
<title>inspecting&#45;&gt;inspect wait</title>
<path fill="none" stroke="black" d="M579.41,-61C588.55,-57.82 598.68,-54.47 608.1,-51.75 639.07,-42.79 674.32,-34.49 702.17,-28.37"/>
<polygon fill="black" stroke="black" points="702.72,-31.83 711.75,-26.29 701.24,-24.99 702.72,-31.83"/>
<text text-anchor="middle" x="649.72" y="-54.85" font-family="Times,serif" font-size="12.00" fill="gray">wait</text>
</g>
<!-- active -->
<g id="node9" class="node">
<title>active</title>
<ellipse fill="none" stroke="black" stroke-width="1.7" cx="1166.84" cy="-682" rx="27" ry="18"/>
<text text-anchor="middle" x="1166.84" y="-678.3" font-family="Times,serif" font-size="11.00">active</text>
</g>
<!-- adopting&#45;&gt;active -->
<g id="edge55" class="edge">
<title>adopting&#45;&gt;active</title>
<path fill="none" stroke="black" d="M580.54,-612.44C640.49,-602.59 776.16,-584.56 888.87,-600.75 979.21,-613.73 1081.2,-649.37 1132.53,-668.85"/>
<polygon fill="black" stroke="black" points="1130.99,-672.01 1141.58,-672.32 1133.5,-665.47 1130.99,-672.01"/>
<text text-anchor="middle" x="851.74" y="-602.85" font-family="Times,serif" font-size="12.00" fill="gray">done</text>
</g>
<!-- adopt failed -->
<g id="node24" class="node">
<title>adopt failed</title>
<ellipse fill="none" stroke="black" cx="752.98" cy="-635" rx="42.7" ry="18"/>
<text text-anchor="middle" x="752.98" y="-631.3" font-family="Times,serif" font-size="11.00" fill="red">adopt failed</text>
</g>
<!-- adopting&#45;&gt;adopt failed -->
<g id="edge56" class="edge">
<title>adopting&#45;&gt;adopt failed</title>
<path fill="none" stroke="black" d="M576.18,-628.61C586.05,-632 597.42,-635.31 608.1,-637 638.22,-641.76 672.33,-641.53 699.77,-639.98"/>
<polygon fill="black" stroke="black" points="699.83,-643.48 709.59,-639.34 699.38,-636.5 699.83,-643.48"/>
<text text-anchor="middle" x="649.72" y="-642.85" font-family="Times,serif" font-size="12.00" fill="gray">fail</text>
</g>
<!-- available&#45;&gt;manageable -->
<g id="edge7" class="edge">
<title>available&#45;&gt;manageable</title>
<path fill="none" stroke="black" d="M717.53,-515.31C687.72,-515.35 643.9,-512.8 608.1,-500 506.5,-463.68 482.62,-441.31 406.35,-365 387.85,-346.49 371.67,-321.5 360.77,-302.55"/>
<polygon fill="black" stroke="black" points="363.94,-301.06 356.01,-294.04 357.84,-304.47 363.94,-301.06"/>
<text text-anchor="middle" x="548.47" y="-494.85" font-family="Times,serif" font-size="12.00">manage (via API)</text>
</g>
<!-- deploying -->
<g id="node8" class="node">
<title>deploying</title>
<ellipse fill="none" stroke="black" cx="954.25" cy="-840" rx="36.62" ry="18"/>
<text text-anchor="middle" x="954.25" y="-836.3" font-family="Times,serif" font-size="11.00" fill="gray">deploying</text>
</g>
<!-- available&#45;&gt;deploying -->
<g id="edge6" class="edge">
<title>available&#45;&gt;deploying</title>
<path fill="none" stroke="black" d="M764.42,-531.07C797.02,-584.42 897.21,-748.33 936.85,-813.18"/>
<polygon fill="black" stroke="black" points="933.69,-814.71 941.89,-821.42 939.66,-811.06 933.69,-814.71"/>
<text text-anchor="middle" x="851.74" y="-736.85" font-family="Times,serif" font-size="12.00">active (via API)</text>
</g>
<!-- deploying&#45;&gt;active -->
<g id="edge22" class="edge">
<title>deploying&#45;&gt;active</title>
<path fill="none" stroke="black" d="M957.35,-821.69C962.09,-789.72 976.78,-724.22 1019.62,-693.75 1051.42,-671.14 1097.51,-671.38 1129.41,-675.22"/>
<polygon fill="black" stroke="black" points="1128.59,-678.64 1138.97,-676.56 1129.55,-671.71 1128.59,-678.64"/>
<text text-anchor="middle" x="1059.37" y="-695.85" font-family="Times,serif" font-size="12.00" fill="gray">done</text>
</g>
<!-- deploy failed -->
<g id="node16" class="node">
<title>deploy failed</title>
<ellipse fill="none" stroke="black" cx="1568.06" cy="-879" rx="45.97" ry="18"/>
<text text-anchor="middle" x="1568.06" y="-875.3" font-family="Times,serif" font-size="11.00" fill="red">deploy failed</text>
</g>
<!-- deploying&#45;&gt;deploy failed -->
<g id="edge19" class="edge">
<title>deploying&#45;&gt;deploy failed</title>
<path fill="none" stroke="black" d="M960.92,-857.86C969.45,-881.31 988.03,-921.57 1019.62,-939 1189.51,-1032.71 1434.05,-940.15 1528.14,-897.75"/>
<polygon fill="black" stroke="black" points="1529.32,-901.06 1536.96,-893.71 1526.41,-894.69 1529.32,-901.06"/>
<text text-anchor="middle" x="1274.3" y="-979.85" font-family="Times,serif" font-size="12.00" fill="gray">fail</text>
</g>
<!-- wait call&#45;back -->
<g id="node17" class="node">
<title>wait call&#45;back</title>
<ellipse fill="none" stroke="black" cx="1166.84" cy="-841" rx="49.71" ry="18"/>
<text text-anchor="middle" x="1166.84" y="-837.3" font-family="Times,serif" font-size="11.00" fill="gray">wait call&#45;back</text>
</g>
<!-- deploying&#45;&gt;wait call&#45;back -->
<g id="edge20" class="edge">
<title>deploying&#45;&gt;wait call&#45;back</title>
<path fill="none" stroke="black" d="M990.97,-840.17C1022.34,-840.32 1068.63,-840.54 1105.7,-840.71"/>
<polygon fill="black" stroke="black" points="1105.35,-844.21 1115.37,-840.76 1105.39,-837.21 1105.35,-844.21"/>
<text text-anchor="middle" x="1059.37" y="-842.85" font-family="Times,serif" font-size="12.00" fill="gray">wait</text>
</g>
<!-- deploy hold -->
<g id="node18" class="node">
<title>deploy hold</title>
<ellipse fill="none" stroke="black" cx="1373.82" cy="-797" rx="41.77" ry="18"/>
<text text-anchor="middle" x="1373.82" y="-793.3" font-family="Times,serif" font-size="11.00" fill="gray">deploy hold</text>
</g>
<!-- deploying&#45;&gt;deploy hold -->
<g id="edge21" class="edge">
<title>deploying&#45;&gt;deploy hold</title>
<path fill="none" stroke="black" d="M981.69,-827.66C993.14,-822.75 1006.83,-817.47 1019.62,-814 1061.89,-802.55 1073.44,-802.93 1117.12,-799.75 1161.2,-796.55 1175.06,-784.54 1216.55,-799.75 1226.4,-803.36 1224.71,-811.39 1234.55,-815 1267.73,-827.16 1279.11,-820.23 1314.05,-815 1319.38,-814.2 1324.89,-813.02 1330.3,-811.64"/>
<polygon fill="black" stroke="black" points="1331.06,-815.06 1339.74,-808.98 1329.16,-808.32 1331.06,-815.06"/>
<text text-anchor="middle" x="1166.84" y="-801.85" font-family="Times,serif" font-size="12.00" fill="gray">hold</text>
</g>
<!-- active&#45;&gt;deploying -->
<g id="edge8" class="edge">
<title>active&#45;&gt;deploying</title>
<path fill="none" stroke="black" d="M1142.86,-691C1112.55,-703.59 1058.5,-728.58 1019.62,-760.75 1001.36,-775.87 984.61,-796.82 972.77,-813.38"/>
<polygon fill="black" stroke="black" points="970.1,-811.1 967.26,-821.31 975.84,-815.1 970.1,-811.1"/>
<text text-anchor="middle" x="1059.37" y="-762.85" font-family="Times,serif" font-size="12.00">rebuild (via API)</text>
</g>
<!-- deleting -->
<g id="node10" class="node">
<title>deleting</title>
<ellipse fill="none" stroke="black" cx="3190.59" cy="-760" rx="31.95" ry="18"/>
<text text-anchor="middle" x="3190.59" y="-756.3" font-family="Times,serif" font-size="11.00" fill="gray">deleting</text>
</g>
<!-- active&#45;&gt;deleting -->
<g id="edge9" class="edge">
<title>active&#45;&gt;deleting</title>
<path fill="none" stroke="black" d="M1187.64,-693.91C1200.59,-701.23 1218.1,-710.28 1234.55,-716 1404.04,-774.97 1453.3,-770.96 1632.03,-787 2299.86,-846.93 2479.96,-889.4 3140.64,-775 3144.32,-774.36 3148.11,-773.53 3151.87,-772.59"/>
<polygon fill="black" stroke="black" points="3152.81,-775.96 3161.5,-769.9 3150.92,-769.22 3152.81,-775.96"/>
<text text-anchor="middle" x="2172.56" y="-840.85" font-family="Times,serif" font-size="12.00">deleted (via API)</text>
</g>
<!-- rescuing -->
<g id="node11" class="node">
<title>rescuing</title>
<ellipse fill="none" stroke="black" cx="2172.56" cy="-677" rx="33.35" ry="18"/>
<text text-anchor="middle" x="2172.56" y="-673.3" font-family="Times,serif" font-size="11.00" fill="gray">rescuing</text>
</g>
<!-- active&#45;&gt;rescuing -->
<g id="edge10" class="edge">
<title>active&#45;&gt;rescuing</title>
<path fill="none" stroke="black" d="M1192.91,-687.51C1280.79,-706.63 1574.75,-769 1670.78,-769 1670.78,-769 1670.78,-769 1973.09,-769 2039.5,-769 2107.79,-726.07 2144.4,-698.86"/>
<polygon fill="black" stroke="black" points="2146.4,-701.74 2152.23,-692.9 2142.16,-696.18 2146.4,-701.74"/>
<text text-anchor="middle" x="1671.78" y="-771.85" font-family="Times,serif" font-size="12.00">rescue (via API)</text>
</g>
<!-- servicing -->
<g id="node12" class="node">
<title>servicing</title>
<ellipse fill="none" stroke="black" cx="1373.82" cy="-639" rx="35.22" ry="18"/>
<text text-anchor="middle" x="1373.82" y="-635.3" font-family="Times,serif" font-size="11.00" fill="gray">servicing</text>
</g>
<!-- active&#45;&gt;servicing -->
<g id="edge11" class="edge">
<title>active&#45;&gt;servicing</title>
<path fill="none" stroke="black" d="M1193.29,-677.61C1222.54,-672.45 1271.93,-663.4 1314.05,-654 1319.63,-652.76 1325.48,-651.37 1331.23,-649.95"/>
<polygon fill="black" stroke="black" points="1331.79,-653.42 1340.63,-647.58 1330.08,-646.63 1331.79,-653.42"/>
<text text-anchor="middle" x="1274.3" y="-672.85" font-family="Times,serif" font-size="12.00">service (via API)</text>
</g>
<!-- deleting&#45;&gt;cleaning -->
<g id="edge45" class="edge">
<title>deleting&#45;&gt;cleaning</title>
<path fill="none" stroke="black" d="M3165.35,-748.56C3135.93,-733.4 3086.99,-703.87 3060.39,-664 3042.08,-636.56 3065.48,-615.56 3042.39,-592 2675.7,-217.85 2395.88,-452 1871.99,-452 751.98,-452 751.98,-452 751.98,-452 681.8,-452 611.35,-402.25 574.91,-371.9"/>
<polygon fill="black" stroke="black" points="577.43,-369.45 567.55,-365.63 572.89,-374.78 577.43,-369.45"/>
<text text-anchor="middle" x="1870.99" y="-454.85" font-family="Times,serif" font-size="12.00" fill="gray">clean</text>
</g>
<!-- error -->
<g id="node13" class="node">
<title>error</title>
<ellipse fill="none" stroke="black" stroke-width="1.7" cx="3365.79" cy="-797" rx="27" ry="18"/>
<text text-anchor="middle" x="3365.79" y="-793.3" font-family="Times,serif" font-size="11.00" fill="red">error</text>
</g>
<!-- deleting&#45;&gt;error -->
<g id="edge44" class="edge">
<title>deleting&#45;&gt;error</title>
<path fill="none" stroke="black" d="M3220.65,-753.05C3247.58,-748.03 3288.26,-744.12 3320.79,-756.75 3329.61,-760.18 3337.74,-766.29 3344.55,-772.73"/>
<polygon fill="black" stroke="black" points="3341.91,-775.03 3351.37,-779.8 3346.95,-770.17 3341.91,-775.03"/>
<text text-anchor="middle" x="3280.66" y="-758.85" font-family="Times,serif" font-size="12.00" fill="gray">fail</text>
</g>
<!-- rescue -->
<g id="node14" class="node">
<title>rescue</title>
<ellipse fill="none" stroke="black" stroke-width="1.7" cx="2462.9" cy="-776" rx="28.21" ry="18"/>
<text text-anchor="middle" x="2462.9" y="-772.3" font-family="Times,serif" font-size="11.00">rescue</text>
</g>
<!-- rescuing&#45;&gt;rescue -->
<g id="edge59" class="edge">
<title>rescuing&#45;&gt;rescue</title>
<path fill="none" stroke="black" d="M2185.96,-693.69C2196.42,-706.51 2212.57,-723.58 2230.68,-733 2263.65,-750.15 2366.66,-764.65 2423.42,-771.6"/>
<polygon fill="black" stroke="black" points="2422.94,-775.07 2433.29,-772.79 2423.78,-768.12 2422.94,-775.07"/>
<text text-anchor="middle" x="2268.93" y="-755.85" font-family="Times,serif" font-size="12.00" fill="gray">done</text>
</g>
<!-- rescue wait -->
<g id="node25" class="node">
<title>rescue wait</title>
<ellipse fill="none" stroke="black" cx="2367.42" cy="-614" rx="42.23" ry="18"/>
<text text-anchor="middle" x="2367.42" y="-610.3" font-family="Times,serif" font-size="11.00" fill="gray">rescue wait</text>
</g>
<!-- rescuing&#45;&gt;rescue wait -->
<g id="edge60" class="edge">
<title>rescuing&#45;&gt;rescue wait</title>
<path fill="none" stroke="black" d="M2196.69,-664.19C2206.9,-658.9 2219.17,-653.02 2230.68,-648.75 2258.8,-638.33 2291.3,-629.89 2317.46,-623.93"/>
<polygon fill="black" stroke="black" points="2318.13,-627.37 2327.14,-621.79 2316.62,-620.54 2318.13,-627.37"/>
<text text-anchor="middle" x="2268.93" y="-650.85" font-family="Times,serif" font-size="12.00" fill="gray">wait</text>
</g>
<!-- rescue failed -->
<g id="node26" class="node">
<title>rescue failed</title>
<ellipse fill="none" stroke="black" cx="2562.13" cy="-577" rx="45.97" ry="18"/>
<text text-anchor="middle" x="2562.13" y="-573.3" font-family="Times,serif" font-size="11.00" fill="red">rescue failed</text>
</g>
<!-- rescuing&#45;&gt;rescue failed -->
<g id="edge61" class="edge">
<title>rescuing&#45;&gt;rescue failed</title>
<path fill="none" stroke="black" d="M2206.4,-676.69C2266.75,-675.02 2398.29,-666.11 2498.15,-622 2510.48,-616.55 2522.81,-608.47 2533.26,-600.65"/>
<polygon fill="black" stroke="black" points="2535.34,-603.46 2541.07,-594.55 2531.03,-597.94 2535.34,-603.46"/>
<text text-anchor="middle" x="2367.42" y="-668.85" font-family="Times,serif" font-size="12.00" fill="gray">fail</text>
</g>
<!-- servicing&#45;&gt;active -->
<g id="edge74" class="edge">
<title>servicing&#45;&gt;active</title>
<path fill="none" stroke="black" d="M1340.43,-632.48C1311.88,-628.07 1269.5,-624.82 1234.55,-635.75 1218.95,-640.63 1203.79,-650.58 1191.88,-660.01"/>
<polygon fill="black" stroke="black" points="1189.67,-657.29 1184.23,-666.38 1194.15,-662.67 1189.67,-657.29"/>
<text text-anchor="middle" x="1274.3" y="-637.85" font-family="Times,serif" font-size="12.00" fill="gray">done</text>
</g>
<!-- service failed -->
<g id="node28" class="node">
<title>service failed</title>
<ellipse fill="none" stroke="black" cx="1972.09" cy="-668" rx="47.84" ry="18"/>
<text text-anchor="middle" x="1972.09" y="-664.3" font-family="Times,serif" font-size="11.00" fill="red">service failed</text>
</g>
<!-- servicing&#45;&gt;service failed -->
<g id="edge75" class="edge">
<title>servicing&#45;&gt;service failed</title>
<path fill="none" stroke="black" d="M1396.64,-653.06C1407.39,-659.41 1420.77,-666.48 1433.59,-671 1471.29,-684.28 1482.27,-683.43 1522.09,-687 1692.14,-702.25 1737.24,-711.25 1906.24,-687 1912.41,-686.11 1918.81,-684.78 1925.08,-683.22"/>
<polygon fill="black" stroke="black" points="1925.96,-686.61 1934.69,-680.61 1924.13,-679.85 1925.96,-686.61"/>
<text text-anchor="middle" x="1671.78" y="-703.85" font-family="Times,serif" font-size="12.00" fill="gray">fail</text>
</g>
<!-- service wait -->
<g id="node29" class="node">
<title>service wait</title>
<ellipse fill="none" stroke="black" cx="1773.64" cy="-652" rx="44.1" ry="18"/>
<text text-anchor="middle" x="1773.64" y="-648.3" font-family="Times,serif" font-size="11.00" fill="gray">service wait</text>
</g>
<!-- servicing&#45;&gt;service wait -->
<g id="edge76" class="edge">
<title>servicing&#45;&gt;service wait</title>
<path fill="none" stroke="black" d="M1405.42,-647.41C1414.43,-649.58 1424.35,-651.68 1433.59,-653 1555.95,-670.51 1588.41,-673.99 1711.53,-663 1715.13,-662.68 1718.83,-662.25 1722.55,-661.76"/>
<polygon fill="black" stroke="black" points="1722.8,-665.26 1732.17,-660.31 1721.76,-658.34 1722.8,-665.26"/>
<text text-anchor="middle" x="1568.06" y="-671.85" font-family="Times,serif" font-size="12.00" fill="gray">wait</text>
</g>
<!-- service hold -->
<g id="node30" class="node">
<title>service hold</title>
<ellipse fill="none" stroke="black" cx="1568.06" cy="-585" rx="43.64" ry="18"/>
<text text-anchor="middle" x="1568.06" y="-581.3" font-family="Times,serif" font-size="11.00" fill="gray">service hold</text>
</g>
<!-- servicing&#45;&gt;service hold -->
<g id="edge77" class="edge">
<title>servicing&#45;&gt;service hold</title>
<path fill="none" stroke="black" d="M1398.54,-625.87C1409.02,-620.53 1421.66,-614.69 1433.59,-610.75 1459.72,-602.11 1489.75,-596 1514.7,-591.9"/>
<polygon fill="black" stroke="black" points="1514.94,-595.41 1524.27,-590.4 1513.85,-588.49 1514.94,-595.41"/>
<text text-anchor="middle" x="1468.84" y="-612.85" font-family="Times,serif" font-size="12.00" fill="gray">hold</text>
</g>
<!-- error&#45;&gt;deploying -->
<g id="edge12" class="edge">
<title>error&#45;&gt;deploying</title>
<path fill="none" stroke="black" d="M3361.32,-815.24C3349.28,-872.51 3303.71,-1045 3191.59,-1045 1165.84,-1045 1165.84,-1045 1165.84,-1045 1092.19,-1045 1071.16,-1019.62 1019.62,-967 992.11,-938.9 973.93,-896.69 964.11,-868.74"/>
<polygon fill="black" stroke="black" points="967.51,-867.88 961.01,-859.52 960.88,-870.11 967.51,-867.88"/>
<text text-anchor="middle" x="2172.56" y="-1047.85" font-family="Times,serif" font-size="12.00">rebuild (via API)</text>
</g>
<!-- error&#45;&gt;deleting -->
<g id="edge13" class="edge">
<title>error&#45;&gt;deleting</title>
<path fill="none" stroke="black" d="M3338.9,-793.36C3313.63,-789.58 3274.19,-783.1 3240.54,-775 3236.99,-774.15 3233.33,-773.18 3229.68,-772.16"/>
<polygon fill="black" stroke="black" points="3230.9,-768.88 3220.32,-769.43 3228.94,-775.59 3230.9,-768.88"/>
<text text-anchor="middle" x="3280.66" y="-792.85" font-family="Times,serif" font-size="12.00">deleted (via API)</text>
</g>
<!-- rescue&#45;&gt;deleting -->
<g id="edge15" class="edge">
<title>rescue&#45;&gt;deleting</title>
<path fill="none" stroke="black" d="M2491.46,-775.39C2601.91,-772.96 3013.01,-763.89 3147.04,-760.94"/>
<polygon fill="black" stroke="black" points="3146.97,-764.44 3156.89,-760.72 3146.81,-757.44 3146.97,-764.44"/>
<text text-anchor="middle" x="2772.73" y="-772.85" font-family="Times,serif" font-size="12.00">deleted (via API)</text>
</g>
<!-- rescue&#45;&gt;rescuing -->
<g id="edge14" class="edge">
<title>rescue&#45;&gt;rescuing</title>
<path fill="none" stroke="black" d="M2436.54,-783.2C2391.61,-794.4 2296.57,-811.03 2230.68,-773 2205.68,-758.57 2190.44,-728.46 2182.06,-705.79"/>
<polygon fill="black" stroke="black" points="2185.43,-704.81 2178.88,-696.48 2178.8,-707.07 2185.43,-704.81"/>
<text text-anchor="middle" x="2268.93" y="-797.85" font-family="Times,serif" font-size="12.00">rescue (via API)</text>
</g>
<!-- unrescuing -->
<g id="node15" class="node">
<title>unrescuing</title>
<ellipse fill="none" stroke="black" cx="2772.73" cy="-577" rx="39.9" ry="18"/>
<text text-anchor="middle" x="2772.73" y="-573.3" font-family="Times,serif" font-size="11.00" fill="gray">unrescuing</text>
</g>
<!-- rescue&#45;&gt;unrescuing -->
<g id="edge16" class="edge">
<title>rescue&#45;&gt;unrescuing</title>
<path fill="none" stroke="black" d="M2469.78,-758.23C2477.44,-737.54 2492.7,-703.58 2516.15,-682.75 2548.92,-653.65 2664.9,-612.28 2728.76,-590.94"/>
<polygon fill="black" stroke="black" points="2729.85,-594.26 2738.24,-587.79 2727.64,-587.62 2729.85,-594.26"/>
<text text-anchor="middle" x="2562.13" y="-684.85" font-family="Times,serif" font-size="12.00">unrescue (via API)</text>
</g>
<!-- unrescuing&#45;&gt;active -->
<g id="edge69" class="edge">
<title>unrescuing&#45;&gt;active</title>
<path fill="none" stroke="black" d="M2749.02,-562.14C2711.8,-539.26 2634.77,-498 2563.13,-498 2075.18,-498 2075.18,-498 2075.18,-498 1896.31,-498 1851.66,-491 1672.78,-491 1372.82,-491 1372.82,-491 1372.82,-491 1277.94,-491 1208.64,-601.89 1181.02,-654.68"/>
<polygon fill="black" stroke="black" points="1178.02,-652.87 1176.6,-663.36 1184.26,-656.04 1178.02,-652.87"/>
<text text-anchor="middle" x="1972.09" y="-499.85" font-family="Times,serif" font-size="12.00" fill="gray">done</text>
</g>
<!-- unrescue failed -->
<g id="node27" class="node">
<title>unrescue failed</title>
<ellipse fill="none" stroke="black" cx="2989.87" cy="-619" rx="52.52" ry="18"/>
<text text-anchor="middle" x="2989.87" y="-615.3" font-family="Times,serif" font-size="11.00" fill="red">unrescue failed</text>
</g>
<!-- unrescuing&#45;&gt;unrescue failed -->
<g id="edge70" class="edge">
<title>unrescuing&#45;&gt;unrescue failed</title>
<path fill="none" stroke="black" d="M2805.85,-587.37C2813.96,-589.76 2822.68,-592.15 2830.85,-594 2862.91,-601.27 2899.11,-607.17 2928.77,-611.4"/>
<polygon fill="black" stroke="black" points="2927.9,-614.81 2938.29,-612.73 2928.87,-607.88 2927.9,-614.81"/>
<text text-anchor="middle" x="2875.1" y="-611.85" font-family="Times,serif" font-size="12.00" fill="gray">fail</text>
</g>
<!-- deploy failed&#45;&gt;deploying -->
<g id="edge27" class="edge">
<title>deploy failed&#45;&gt;deploying</title>
<path fill="none" stroke="black" d="M1521.87,-878.06C1474.12,-877.99 1396.91,-880.53 1332.05,-895 1323.67,-896.87 1322.49,-900.42 1314.05,-902 1185.44,-926.13 1140.99,-950.94 1019.62,-902 1001.5,-894.69 985.63,-879.57 974.18,-866.09"/>
<polygon fill="black" stroke="black" points="976.92,-863.92 967.93,-858.32 971.47,-868.3 976.92,-863.92"/>
<text text-anchor="middle" x="1274.3" y="-919.85" font-family="Times,serif" font-size="12.00">rebuild (via API)</text>
</g>
<!-- deploy failed&#45;&gt;deploying -->
<g id="edge28" class="edge">
<title>deploy failed&#45;&gt;deploying</title>
<path fill="none" stroke="black" d="M1522.7,-875.12C1516.45,-874.68 1510.11,-874.29 1504.09,-874 1332.27,-865.86 1288.83,-878.12 1117.12,-868 1073.64,-865.44 1062.42,-866.12 1019.62,-858 1012.12,-856.58 1004.21,-854.69 996.61,-852.68"/>
<polygon fill="black" stroke="black" points="997.8,-849.38 987.23,-850.09 995.94,-856.13 997.8,-849.38"/>
<text text-anchor="middle" x="1274.3" y="-874.85" font-family="Times,serif" font-size="12.00">active (via API)</text>
</g>
<!-- deploy failed&#45;&gt;deleting -->
<g id="edge29" class="edge">
<title>deploy failed&#45;&gt;deleting</title>
<path fill="none" stroke="black" d="M1614.34,-879C1655.6,-879 1718.21,-879 1772.64,-879 1772.64,-879 1772.64,-879 2671.35,-879 2796.89,-879 2814.81,-811.27 2937.35,-784 3009.9,-767.86 3096.55,-762.57 3147.1,-760.84"/>
<polygon fill="black" stroke="black" points="3147.13,-764.34 3157.02,-760.53 3146.91,-757.34 3147.13,-764.34"/>
<text text-anchor="middle" x="2367.42" y="-881.85" font-family="Times,serif" font-size="12.00">deleted (via API)</text>
</g>
<!-- wait call&#45;back&#45;&gt;deploying -->
<g id="edge24" class="edge">
<title>wait call&#45;back&#45;&gt;deploying</title>
<path fill="none" stroke="black" d="M1129.88,-828.63C1120.03,-825.79 1109.27,-823.18 1099.12,-821.75 1064.14,-816.8 1054.62,-816.89 1019.62,-821.75 1011.89,-822.82 1003.79,-824.59 996.03,-826.62"/>
<polygon fill="black" stroke="black" points="995.15,-823.23 986.47,-829.3 997.04,-829.97 995.15,-823.23"/>
<text text-anchor="middle" x="1059.37" y="-823.85" font-family="Times,serif" font-size="12.00" fill="gray">resume</text>
</g>
<!-- wait call&#45;back&#45;&gt;deleting -->
<g id="edge26" class="edge">
<title>wait call&#45;back&#45;&gt;deleting</title>
<path fill="none" stroke="black" d="M1174.63,-859.23C1184.14,-881.77 1203.79,-919.11 1234.55,-935 1265.95,-951.22 1278.72,-935.53 1314.05,-935 1936.73,-925.67 2097.5,-976.68 2714.6,-893 2882.57,-870.22 3074.76,-803.16 3153.29,-773.91"/>
<polygon fill="black" stroke="black" points="3154.06,-777.36 3162.19,-770.57 3151.6,-770.8 3154.06,-777.36"/>
<text text-anchor="middle" x="2172.56" y="-943.85" font-family="Times,serif" font-size="12.00">deleted (via API)</text>
</g>
<!-- wait call&#45;back&#45;&gt;deploy failed -->
<g id="edge25" class="edge">
<title>wait call&#45;back&#45;&gt;deploy failed</title>
<path fill="none" stroke="black" d="M1215.2,-845.51C1289.42,-852.57 1432.77,-866.22 1511.66,-873.73"/>
<polygon fill="black" stroke="black" points="1511.02,-877.18 1521.31,-874.64 1511.68,-870.21 1511.02,-877.18"/>
<text text-anchor="middle" x="1373.82" y="-866.85" font-family="Times,serif" font-size="12.00" fill="gray">fail</text>
</g>
<!-- wait call&#45;back&#45;&gt;deploy hold -->
<g id="edge23" class="edge">
<title>wait call&#45;back&#45;&gt;deploy hold</title>
<path fill="none" stroke="black" d="M1209.45,-831.36C1217.76,-829.47 1226.43,-827.52 1234.55,-825.75 1264.42,-819.23 1297.99,-812.24 1324.58,-806.79"/>
<polygon fill="black" stroke="black" points="1324.93,-810.29 1334.03,-804.85 1323.53,-803.43 1324.93,-810.29"/>
<text text-anchor="middle" x="1274.3" y="-827.85" font-family="Times,serif" font-size="12.00" fill="gray">hold</text>
</g>
<!-- deploy hold&#45;&gt;deploy failed -->
<g id="edge31" class="edge">
<title>deploy hold&#45;&gt;deploy failed</title>
<path fill="none" stroke="black" d="M1415.85,-795.94C1442.31,-796.83 1476.76,-801.01 1504.09,-814.75 1521.43,-823.47 1536.78,-838.87 1547.98,-852.41"/>
<polygon fill="black" stroke="black" points="1545.17,-854.5 1554.11,-860.19 1550.67,-850.17 1545.17,-854.5"/>
<text text-anchor="middle" x="1468.84" y="-816.85" font-family="Times,serif" font-size="12.00">abort (via API)</text>
</g>
<!-- deploy hold&#45;&gt;wait call&#45;back -->
<g id="edge30" class="edge">
<title>deploy hold&#45;&gt;wait call&#45;back</title>
<path fill="none" stroke="black" d="M1337.67,-787.58C1308.89,-781.68 1267.66,-777.45 1234.55,-790.75 1224.27,-794.88 1225.17,-801.03 1216.55,-808 1212,-811.68 1207.05,-815.36 1202.1,-818.87"/>
<polygon fill="black" stroke="black" points="1200.2,-815.92 1193.95,-824.47 1204.17,-821.69 1200.2,-815.92"/>
<text text-anchor="middle" x="1274.3" y="-792.85" font-family="Times,serif" font-size="12.00" fill="gray">unhold</text>
</g>
<!-- clean failed&#45;&gt;manageable -->
<g id="edge41" class="edge">
<title>clean failed&#45;&gt;manageable</title>
<path fill="none" stroke="black" d="M1128.56,-264.49C1119,-262.49 1108.71,-260.51 1099.12,-259 794.99,-211 708.41,-197.31 406.35,-257 401.14,-258.03 395.73,-259.32 390.4,-260.73"/>
<polygon fill="black" stroke="black" points="389.76,-257.27 381.08,-263.35 391.66,-264.01 389.76,-257.27"/>
<text text-anchor="middle" x="752.98" y="-222.85" font-family="Times,serif" font-size="12.00">manage (via API)</text>
</g>
<!-- clean wait&#45;&gt;cleaning -->
<g id="edge40" class="edge">
<title>clean wait&#45;&gt;cleaning</title>
<path fill="none" stroke="black" d="M915.11,-310.42C867.02,-311.27 781.83,-313.86 709.35,-321.75 668.96,-326.15 623.31,-334.24 591.16,-340.47"/>
<polygon fill="black" stroke="black" points="590.59,-337.02 581.45,-342.38 591.94,-343.89 590.59,-337.02"/>
<text text-anchor="middle" x="752.98" y="-323.85" font-family="Times,serif" font-size="12.00" fill="gray">resume</text>
</g>
<!-- clean wait&#45;&gt;clean failed -->
<g id="edge37" class="edge">
<title>clean wait&#45;&gt;clean failed</title>
<path fill="none" stroke="black" d="M992.03,-305.09C1021.17,-301.03 1062.87,-294.84 1099.12,-288 1105.17,-286.86 1111.51,-285.56 1117.77,-284.22"/>
<polygon fill="black" stroke="black" points="1118.38,-287.67 1127.4,-282.11 1116.88,-280.84 1118.38,-287.67"/>
<text text-anchor="middle" x="1059.37" y="-302.85" font-family="Times,serif" font-size="12.00" fill="gray">fail</text>
</g>
<!-- clean wait&#45;&gt;clean failed -->
<g id="edge38" class="edge">
<title>clean wait&#45;&gt;clean failed</title>
<path fill="none" stroke="black" d="M974.15,-294.2C986.31,-285.1 1002.9,-274.55 1019.62,-269.75 1050.73,-260.83 1087.1,-261.59 1115.78,-264.61"/>
<polygon fill="black" stroke="black" points="1115.32,-268.08 1125.67,-265.79 1116.15,-261.13 1115.32,-268.08"/>
<text text-anchor="middle" x="1059.37" y="-272.85" font-family="Times,serif" font-size="12.00">abort (via API)</text>
</g>
<!-- clean wait&#45;&gt;clean hold -->
<g id="edge39" class="edge">
<title>clean wait&#45;&gt;clean hold</title>
<path fill="none" stroke="black" d="M915.07,-308.09C886.93,-306.01 847.92,-301.74 814.62,-293 806.83,-290.96 798.72,-288.14 791.06,-285.12"/>
<polygon fill="black" stroke="black" points="792.59,-281.97 782.01,-281.38 789.91,-288.44 792.59,-281.97"/>
<text text-anchor="middle" x="851.74" y="-307.85" font-family="Times,serif" font-size="12.00" fill="gray">hold</text>
</g>
<!-- clean hold&#45;&gt;clean failed -->
<g id="edge42" class="edge">
<title>clean hold&#45;&gt;clean failed</title>
<path fill="none" stroke="black" d="M781.67,-255.86C841.35,-231.48 985.89,-182.08 1099.12,-221 1115.17,-226.52 1130.32,-237.65 1142.12,-248.2"/>
<polygon fill="black" stroke="black" points="1139.67,-250.7 1149.34,-255.01 1144.47,-245.61 1139.67,-250.7"/>
<text text-anchor="middle" x="954.25" y="-219.85" font-family="Times,serif" font-size="12.00">abort (via API)</text>
</g>
<!-- clean hold&#45;&gt;clean wait -->
<g id="edge43" class="edge">
<title>clean hold&#45;&gt;clean wait</title>
<path fill="none" stroke="black" d="M791.76,-268.71C819.11,-269.98 856.77,-273.3 888.87,-281.75 898.37,-284.25 908.26,-287.97 917.36,-291.9"/>
<polygon fill="black" stroke="black" points="915.67,-294.98 926.22,-295.92 918.56,-288.6 915.67,-294.98"/>
<text text-anchor="middle" x="851.74" y="-284.85" font-family="Times,serif" font-size="12.00" fill="gray">unhold</text>
</g>
<!-- inspect failed&#45;&gt;manageable -->
<g id="edge49" class="edge">
<title>inspect failed&#45;&gt;manageable</title>
<path fill="none" stroke="black" d="M912.29,-88.54C788.99,-114.36 428.4,-190.62 406.35,-204 388.56,-214.79 373.44,-232.7 362.8,-247.82"/>
<polygon fill="black" stroke="black" points="359.98,-245.75 357.32,-256 365.8,-249.64 359.98,-245.75"/>
<text text-anchor="middle" x="649.72" y="-156.85" font-family="Times,serif" font-size="12.00">manage (via API)</text>
</g>
<!-- inspect failed&#45;&gt;inspecting -->
<g id="edge50" class="edge">
<title>inspect failed&#45;&gt;inspecting</title>
<path fill="none" stroke="black" d="M906.56,-79.07C829.52,-77.55 676.54,-74.52 598.19,-72.97"/>
<polygon fill="black" stroke="black" points="598.31,-69.47 588.25,-72.77 598.18,-76.47 598.31,-69.47"/>
<text text-anchor="middle" x="752.98" y="-79.85" font-family="Times,serif" font-size="12.00">inspect (via API)</text>
</g>
<!-- inspect wait&#45;&gt;manageable -->
<g id="edge51" class="edge">
<title>inspect wait&#45;&gt;manageable</title>
<path fill="none" stroke="black" d="M709.74,-14.65C627.7,-9.09 450.9,-2.02 406.35,-40 375.15,-66.59 356.61,-188.61 349.51,-245.57"/>
<polygon fill="black" stroke="black" points="346.08,-244.82 348.35,-255.17 353.03,-245.66 346.08,-244.82"/>
<text text-anchor="middle" x="548.47" y="-15.85" font-family="Times,serif" font-size="12.00" fill="gray">done</text>
</g>
<!-- inspect wait&#45;&gt;inspecting -->
<g id="edge54" class="edge">
<title>inspect wait&#45;&gt;inspecting</title>
<path fill="none" stroke="black" d="M715.81,-8.11C685.51,-1.84 641.93,2.4 608.1,-13.75 596.62,-19.23 598.89,-26.81 590.1,-36 585.97,-40.32 581.4,-44.7 576.85,-48.86"/>
<polygon fill="black" stroke="black" points="574.55,-46.22 569.4,-55.48 579.2,-51.46 574.55,-46.22"/>
<text text-anchor="middle" x="649.72" y="-16.85" font-family="Times,serif" font-size="12.00" fill="gray">resume</text>
</g>
<!-- inspect wait&#45;&gt;inspect failed -->
<g id="edge52" class="edge">
<title>inspect wait&#45;&gt;inspect failed</title>
<path fill="none" stroke="black" d="M792.86,-25.9C820.08,-31.88 857.12,-40.9 888.87,-51.75 896.98,-54.52 905.49,-57.9 913.56,-61.34"/>
<polygon fill="black" stroke="black" points="911.9,-64.44 922.47,-65.25 914.72,-58.03 911.9,-64.44"/>
<text text-anchor="middle" x="851.74" y="-54.85" font-family="Times,serif" font-size="12.00" fill="gray">fail</text>
</g>
<!-- inspect wait&#45;&gt;inspect failed -->
<g id="edge53" class="edge">
<title>inspect wait&#45;&gt;inspect failed</title>
<path fill="none" stroke="black" d="M791,-8.73C819,-3.6 857.79,-0.62 888.87,-13.75 907.89,-21.79 924.07,-38.51 935.45,-53.14"/>
<polygon fill="black" stroke="black" points="932.57,-55.14 941.32,-61.12 938.21,-50.99 932.57,-55.14"/>
<text text-anchor="middle" x="851.74" y="-16.85" font-family="Times,serif" font-size="12.00">abort (via API)</text>
</g>
<!-- adopt failed&#45;&gt;manageable -->
<g id="edge58" class="edge">
<title>adopt failed&#45;&gt;manageable</title>
<path fill="none" stroke="black" d="M721.4,-622.72C673.44,-602.74 578.61,-560.35 506.85,-510 456.78,-474.87 441.44,-466.09 406.35,-416 381.68,-380.78 364.18,-333.86 354.63,-304.03"/>
<polygon fill="black" stroke="black" points="358,-303.09 351.7,-294.57 351.31,-305.16 358,-303.09"/>
<text text-anchor="middle" x="548.47" y="-562.85" font-family="Times,serif" font-size="12.00">manage (via API)</text>
</g>
<!-- adopt failed&#45;&gt;adopting -->
<g id="edge57" class="edge">
<title>adopt failed&#45;&gt;adopting</title>
<path fill="none" stroke="black" d="M717.98,-624.25C709.38,-621.98 700.09,-619.93 691.35,-618.75 658.77,-614.37 621.61,-614.36 593.49,-615.34"/>
<polygon fill="black" stroke="black" points="593.39,-611.84 583.55,-615.75 593.68,-618.84 593.39,-611.84"/>
<text text-anchor="middle" x="649.72" y="-620.85" font-family="Times,serif" font-size="12.00">adopt (via API)</text>
</g>
<!-- rescue wait&#45;&gt;deleting -->
<g id="edge65" class="edge">
<title>rescue wait&#45;&gt;deleting</title>
<path fill="none" stroke="black" d="M2407.89,-619.62C2414.48,-620.47 2421.26,-621.3 2427.65,-622 2507.65,-630.72 2528.44,-625.58 2608.1,-637 2847.25,-671.29 2905.99,-688.52 3140.64,-746 3143.97,-746.81 3147.41,-747.7 3150.85,-748.63"/>
<polygon fill="black" stroke="black" points="3149.7,-751.94 3160.27,-751.23 3151.57,-745.19 3149.7,-751.94"/>
<text text-anchor="middle" x="2772.73" y="-671.85" font-family="Times,serif" font-size="12.00">deleted (via API)</text>
</g>
<!-- rescue wait&#45;&gt;rescuing -->
<g id="edge62" class="edge">
<title>rescue wait&#45;&gt;rescuing</title>
<path fill="none" stroke="black" d="M2332.05,-603.85C2303.52,-597.37 2262.58,-592.71 2230.68,-607.75 2212.18,-616.47 2197.63,-634.45 2187.85,-649.91"/>
<polygon fill="black" stroke="black" points="2184.98,-647.89 2182.89,-658.27 2191,-651.46 2184.98,-647.89"/>
<text text-anchor="middle" x="2268.93" y="-609.85" font-family="Times,serif" font-size="12.00" fill="gray">resume</text>
</g>
<!-- rescue wait&#45;&gt;rescue failed -->
<g id="edge63" class="edge">
<title>rescue wait&#45;&gt;rescue failed</title>
<path fill="none" stroke="black" d="M2407.71,-608.03C2433.51,-603.94 2467.93,-598.15 2498.15,-592 2502.49,-591.12 2506.98,-590.15 2511.48,-589.15"/>
<polygon fill="black" stroke="black" points="2512.14,-592.59 2521.11,-586.94 2510.58,-585.76 2512.14,-592.59"/>
<text text-anchor="middle" x="2462.9" y="-606.85" font-family="Times,serif" font-size="12.00" fill="gray">fail</text>
</g>
<!-- rescue wait&#45;&gt;rescue failed -->
<g id="edge64" class="edge">
<title>rescue wait&#45;&gt;rescue failed</title>
<path fill="none" stroke="black" d="M2386.37,-597.59C2397.4,-588.65 2412.32,-578.47 2427.65,-573.75 2453.59,-565.77 2483.72,-565.77 2508.78,-568.12"/>
<polygon fill="black" stroke="black" points="2508.08,-571.56 2518.4,-569.18 2508.84,-564.6 2508.08,-571.56"/>
<text text-anchor="middle" x="2462.9" y="-575.85" font-family="Times,serif" font-size="12.00">abort (via API)</text>
</g>
<!-- rescue failed&#45;&gt;deleting -->
<g id="edge68" class="edge">
<title>rescue failed&#45;&gt;deleting</title>
<path fill="none" stroke="black" d="M2599.28,-587.9C2608.03,-590.38 2617.37,-592.9 2626.1,-595 2682.75,-608.63 3091.15,-665.26 3140.64,-696 3155.03,-704.94 3166.76,-719.75 3175.13,-732.87"/>
<polygon fill="black" stroke="black" points="3171.95,-734.36 3180.08,-741.15 3177.95,-730.77 3171.95,-734.36"/>
<text text-anchor="middle" x="2875.1" y="-646.85" font-family="Times,serif" font-size="12.00">deleted (via API)</text>
</g>
<!-- rescue failed&#45;&gt;rescuing -->
<g id="edge66" class="edge">
<title>rescue failed&#45;&gt;rescuing</title>
<path fill="none" stroke="black" d="M2523.75,-566.58C2515.39,-564.68 2506.52,-562.98 2498.15,-562 2379.3,-548.04 2329.97,-526.19 2230.68,-593 2210.38,-606.66 2195.3,-630.2 2185.75,-648.88"/>
<polygon fill="black" stroke="black" points="2182.62,-647.32 2181.43,-657.85 2188.92,-650.36 2182.62,-647.32"/>
<text text-anchor="middle" x="2367.42" y="-552.85" font-family="Times,serif" font-size="12.00">rescue (via API)</text>
</g>
<!-- rescue failed&#45;&gt;unrescuing -->
<g id="edge67" class="edge">
<title>rescue failed&#45;&gt;unrescuing</title>
<path fill="none" stroke="black" d="M2608.39,-577C2641.65,-577 2686.87,-577 2721.29,-577"/>
<polygon fill="black" stroke="black" points="2721,-580.5 2731,-577 2721,-573.5 2721,-580.5"/>
<text text-anchor="middle" x="2670.35" y="-579.85" font-family="Times,serif" font-size="12.00">unrescue (via API)</text>
</g>
<!-- unrescue failed&#45;&gt;deleting -->
<g id="edge73" class="edge">
<title>unrescue failed&#45;&gt;deleting</title>
<path fill="none" stroke="black" d="M3042.32,-616.88C3073.79,-618.19 3113.14,-624.83 3140.64,-646.75 3166.64,-667.48 3179.1,-704.71 3184.89,-730.8"/>
<polygon fill="black" stroke="black" points="3181.42,-731.31 3186.81,-740.43 3188.29,-729.94 3181.42,-731.31"/>
<text text-anchor="middle" x="3100.51" y="-648.85" font-family="Times,serif" font-size="12.00">deleted (via API)</text>
</g>
<!-- unrescue failed&#45;&gt;rescuing -->
<g id="edge71" class="edge">
<title>unrescue failed&#45;&gt;rescuing</title>
<path fill="none" stroke="black" d="M2938.34,-614.71C2907.14,-613.12 2866.42,-612.95 2830.85,-619 2727.44,-636.58 2711.51,-679.42 2608.1,-697 2465.76,-721.2 2293.66,-698.1 2215.64,-684.85"/>
<polygon fill="black" stroke="black" points="2216.33,-681.42 2205.88,-683.16 2215.13,-688.31 2216.33,-681.42"/>
<text text-anchor="middle" x="2562.13" y="-708.85" font-family="Times,serif" font-size="12.00">rescue (via API)</text>
</g>
<!-- unrescue failed&#45;&gt;unrescuing -->
<g id="edge72" class="edge">
<title>unrescue failed&#45;&gt;unrescuing</title>
<path fill="none" stroke="black" d="M2968.08,-602.19C2954.95,-592.69 2937.17,-581.74 2919.35,-576.75 2887.9,-567.94 2851.1,-568.09 2822.36,-570.39"/>
<polygon fill="black" stroke="black" points="2822.12,-566.9 2812.49,-571.31 2822.77,-573.87 2822.12,-566.9"/>
<text text-anchor="middle" x="2875.1" y="-578.85" font-family="Times,serif" font-size="12.00">unrescue (via API)</text>
</g>
<!-- service failed&#45;&gt;rescuing -->
<g id="edge83" class="edge">
<title>service failed&#45;&gt;rescuing</title>
<path fill="none" stroke="black" d="M2019.87,-670.12C2052.53,-671.6 2095.83,-673.57 2127.81,-675.02"/>
<polygon fill="black" stroke="black" points="2127.37,-678.5 2137.52,-675.46 2127.69,-671.51 2127.37,-678.5"/>
<text text-anchor="middle" x="2076.18" y="-676.85" font-family="Times,serif" font-size="12.00">rescue (via API)</text>
</g>
<!-- service failed&#45;&gt;servicing -->
<g id="edge82" class="edge">
<title>service failed&#45;&gt;servicing</title>
<path fill="none" stroke="black" d="M1940.95,-653.93C1930.09,-649.02 1917.69,-643.59 1906.24,-639 1781.15,-588.87 1748.56,-566.08 1614.03,-558 1533.95,-553.19 1504.58,-525.63 1433.59,-563 1413.66,-573.49 1398.41,-594.04 1388.44,-611.14"/>
<polygon fill="black" stroke="black" points="1385.39,-609.43 1383.65,-619.88 1391.53,-612.79 1385.39,-609.43"/>
<text text-anchor="middle" x="1671.78" y="-571.85" font-family="Times,serif" font-size="12.00">service (via API)</text>
</g>
<!-- service wait&#45;&gt;servicing -->
<g id="edge79" class="edge">
<title>service wait&#45;&gt;servicing</title>
<path fill="none" stroke="black" d="M1729.56,-650.17C1697.66,-648.85 1653.14,-647.07 1614.03,-645.75 1546.71,-643.47 1468.71,-641.37 1420.57,-640.14"/>
<polygon fill="black" stroke="black" points="1420.89,-636.65 1410.8,-639.89 1420.71,-643.64 1420.89,-636.65"/>
<text text-anchor="middle" x="1568.06" y="-647.85" font-family="Times,serif" font-size="12.00" fill="gray">resume</text>
</g>
<!-- service wait&#45;&gt;service failed -->
<g id="edge80" class="edge">
<title>service wait&#45;&gt;service failed</title>
<path fill="none" stroke="black" d="M1812.27,-661.16C1819.99,-662.71 1828.09,-664.11 1835.74,-665 1860.82,-667.92 1888.68,-668.92 1912.58,-669.09"/>
<polygon fill="black" stroke="black" points="1912.44,-672.59 1922.45,-669.11 1912.46,-665.59 1912.44,-672.59"/>
<text text-anchor="middle" x="1870.99" y="-671.85" font-family="Times,serif" font-size="12.00" fill="gray">fail</text>
</g>
<!-- service wait&#45;&gt;service failed -->
<g id="edge81" class="edge">
<title>service wait&#45;&gt;service failed</title>
<path fill="none" stroke="black" d="M1815.79,-646.21C1841.86,-643.56 1876.21,-641.95 1906.24,-646.75 1913.23,-647.87 1920.49,-649.62 1927.5,-651.65"/>
<polygon fill="black" stroke="black" points="1926.23,-654.92 1936.82,-654.56 1928.32,-648.24 1926.23,-654.92"/>
<text text-anchor="middle" x="1870.99" y="-648.85" font-family="Times,serif" font-size="12.00">abort (via API)</text>
</g>
<!-- service wait&#45;&gt;service hold -->
<g id="edge78" class="edge">
<title>service wait&#45;&gt;service hold</title>
<path fill="none" stroke="black" d="M1730.26,-648.06C1701.73,-644.41 1663.69,-637.56 1632.03,-625 1620.75,-620.52 1609.28,-613.96 1599.28,-607.44"/>
<polygon fill="black" stroke="black" points="1601.32,-604.59 1591.08,-601.86 1597.39,-610.38 1601.32,-604.59"/>
<text text-anchor="middle" x="1671.78" y="-647.85" font-family="Times,serif" font-size="12.00" fill="gray">hold</text>
</g>
<!-- service hold&#45;&gt;servicing -->
<g id="edge84" class="edge">
<title>service hold&#45;&gt;servicing</title>
<path fill="none" stroke="black" d="M1532.66,-574.12C1504.79,-567.25 1465.1,-562.01 1433.59,-575.75 1416.28,-583.29 1401.78,-598.72 1391.51,-612.45"/>
<polygon fill="black" stroke="black" points="1388.86,-610.14 1385.97,-620.33 1394.59,-614.17 1388.86,-610.14"/>
<text text-anchor="middle" x="1468.84" y="-577.85" font-family="Times,serif" font-size="12.00" fill="gray">service</text>
</g>
<!-- service hold&#45;&gt;service failed -->
<g id="edge86" class="edge">
<title>service hold&#45;&gt;service failed</title>
<path fill="none" stroke="black" d="M1591.26,-569.5C1602.84,-562.35 1617.58,-554.65 1632.03,-551 1693.3,-535.52 1878.21,-548.18 1906.24,-565 1933.77,-581.52 1951.47,-614.71 1961.3,-638.97"/>
<polygon fill="black" stroke="black" points="1958.03,-640.2 1964.85,-648.3 1964.57,-637.71 1958.03,-640.2"/>
<text text-anchor="middle" x="1773.64" y="-550.85" font-family="Times,serif" font-size="12.00">abort (via API)</text>
</g>
<!-- service hold&#45;&gt;service wait -->
<g id="edge85" class="edge">
<title>service hold&#45;&gt;service wait</title>
<path fill="none" stroke="black" d="M1611.93,-586.64C1640.97,-588.99 1679.71,-594.57 1711.53,-607.75 1723.67,-612.78 1735.68,-620.66 1745.79,-628.38"/>
<polygon fill="black" stroke="black" points="1743.32,-630.89 1753.32,-634.4 1747.7,-625.42 1743.32,-630.89"/>
<text text-anchor="middle" x="1671.78" y="-609.85" font-family="Times,serif" font-size="12.00" fill="gray">unhold</text>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 52 KiB

View File

@ -17,7 +17,7 @@ API-initiated-transitions that are possible from non-stable states.
The events for these API-initiated transitions are indicated with '(via API)'.
Internally, the conductor initiates the other transitions (depicted in gray).
.. figure:: ../images/states.png
.. figure:: ../images/states.svg
:width: 660px
:align: left
:alt: Ironic state transitions
@ -256,3 +256,37 @@ unrescue failed
using the ``unrescue`` verb.
* ``available`` (through ``deleting``) by setting the node's provision state
using the ``deleted`` verb.
Servicing
=========
servicing
Nodes in the ``servicing`` state are nodes that are having service performed
on them. This service is similar to cleaning, but is performed on nodes currently
in ``active`` state and returns them to ``active`` state when complete.
When a node is in the ``servicing`` state it means that the conductor is
executing the service step or preparing the environment to execute the step.
See :doc:`/admin/servicing` for more details on Node servicing.
service wait
Just like the ``servicing`` state, the nodes in the ``service wait`` state are
being serviced with service steps. The difference is that in the
``service wait`` state the conductor is waiting for the ramdisk to boot or the
clean step which is running in-band to finish.
The servicing of a node in the ``service wait`` state can be interrupted
by setting the node's provision state using the ``abort`` verb if the task
that is running allows it.
service failed
This is the state a node will move into when a service operation fails,
for example a timeout waiting for the ramdisk to PXE boot. From here the
node can be transitioned to:
* ``active`` (through ``servicing``) by setting the node's provision state
using the ``service`` verb.
* ``rescue`` (through ``rescuing``) by setting the node's provision state
using the ``rescue`` verb.

View File

@ -36,7 +36,7 @@ deps = {[testenv]deps}
[testenv:genstates]
allowlist_externals = {toxinidir}/tools/states_to_dot.py
deps = {[testenv]deps}
pydot2
pydot
commands = {toxinidir}/tools/states_to_dot.py -f {toxinidir}/doc/source/images/states.svg --format svg
[testenv:pep8]
@ -177,4 +177,4 @@ deps = codespell
# note(JayF): {posargs} lets us run `tox -ecodespell -- -w` to get codespell
# to correct spelling issues in our code it's aware of.
commands =
codespell {posargs}
codespell {posargs}