Created
July 11, 2019 15:38
-
-
Save akutz/a1decf2de925851fec10d809c529fa2d to your computer and use it in GitHub Desktop.
CAPV Machine Reconcile Workflow
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@startuml machine-controller-reconcile | |
start; | |
:Machine controller; | |
repeat | |
:Reconcile; | |
if (Machine has a TaskRef) then (yes) | |
if (Task exists) then (yes) | |
if (Task is running/pending) then (yes) | |
#LightGreen:Requeue; | |
elseif (Task is success/failed) then (yes) | |
#edf7de:Remove TaskRef from Machine; | |
endif | |
else (no) | |
#edf7de:Remove TaskRef from Machine; | |
#LightGreen:Requeue; | |
endif | |
endif | |
if (Is requeued or in error) then (no) | |
if (Machine has a MachineRef) then (no) | |
if (Can find VM by InstanceUUID) then (yes) | |
#edf7de:Assign MachineRef to Machine; | |
endif | |
endif | |
if (Machine has a MachineRef) then (no) | |
if (Can find VM by MachineRef) then (no) | |
#edf7de:Remove MachineRef from Machine; | |
endif | |
endif | |
if (Machine has DeletionTimestamp) then (yes) | |
if (Machine has a MachineRef) then (yes) | |
#edf7de:Delete VM; | |
#edf7de:Assign delete TaskRef to Machine; | |
#LightGreen:Requeue; | |
endif | |
else (no) | |
if (Machine has a MachineRef) then (yes) | |
if (VM metadata matches calculated metadata) then (no) | |
#edf7de:Reconfigure VM with calculated metadata; | |
#edf7de:Assign reconfigure TaskRef to Machine; | |
#LightGreen:Requeue; | |
else (yes) | |
#edf7de:Update Machine status with MAC addresses from VM; | |
if (VM powered on) then (no) | |
#edf7de:Power on VM; | |
#edf7de:Assign power TaskRef to Machine; | |
#LightGreen:Requeue; | |
else (yes) | |
if (VM has IP addresses) then (yes) | |
#edf7de:Update Machine status with IP addresses from VM; | |
else (no) | |
#LightGreen:Requeue; | |
endif | |
endif | |
endif | |
else (no) | |
#edf7de:Clone template to create new VM; | |
#edf7de:Assign clone TaskRef to Machine; | |
#LightGreen:Requeue; | |
endif | |
endif | |
endif | |
#edf7de:Machine state patched back to API server; | |
repeat while (Reconcile is requeued) is (yes) | |
-> no; | |
if (Error occurred) then (yes) | |
#Pink:Reconcile failed; | |
else (no) | |
#LightBlue:Reconcile success; | |
endif | |
stop; | |
@enduml |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="1872px" preserveAspectRatio="none" style="width:1497px;height:1872px;" version="1.1" viewBox="0 0 1497 1872" width="1497px" zoomAndPan="magnify"><defs><filter height="300%" id="f1it97cochu7t1" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><ellipse cx="563.6563" cy="20" fill="#000000" filter="url(#f1it97cochu7t1)" rx="10" ry="10" style="stroke: none; stroke-width: 1.0;"/><rect fill="#FEFECE" filter="url(#f1it97cochu7t1)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="125" x="501.1563" y="50"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="105" x="511.1563" y="71.6016">Machine controller</text><rect fill="#FEFECE" filter="url(#f1it97cochu7t1)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="74" x="526.6563" y="148.1328"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="54" x="536.6563" y="169.7344">Reconcile</text><polygon fill="#FEFECE" filter="url(#f1it97cochu7t1)" points="533.6563,250.7432,593.6563,250.7432,605.6563,262.7432,593.6563,274.7432,533.6563,274.7432,521.6563,262.7432,533.6563,250.7432" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="60" x="533.6563" y="266.9004">Task exists</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="18" x="503.6563" y="260.4229">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="605.6563" y="260.4229">no</text><polygon fill="#FEFECE" filter="url(#f1it97cochu7t1)" points="196.4063,309.7432,329.4063,309.7432,341.4063,321.7432,329.4063,333.7432,196.4063,333.7432,184.4063,321.7432,196.4063,309.7432" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="18" x="266.9063" y="344.3779">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="133" x="196.4063" y="325.9004">Task is running/pending</text><rect fill="#90EE90" filter="url(#f1it97cochu7t1)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="71" x="227.4063" y="366.6982"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="51" x="237.4063" y="388.2998">Requeue</text><polygon fill="#FEFECE" filter="url(#f1it97cochu7t1)" points="401.9063,309.7432,519.9063,309.7432,531.9063,321.7432,519.9063,333.7432,401.9063,333.7432,389.9063,321.7432,401.9063,309.7432" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="18" x="464.9063" y="344.3779">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="118" x="401.9063" y="325.9004">Task is success/failed</text><rect fill="#EDF7DE" filter="url(#f1it97cochu7t1)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="199" x="361.4063" y="366.6982"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="179" x="371.4063" y="388.2998">Remove TaskRef from Machine</text><rect fill="#EDF7DE" filter="url(#f1it97cochu7t1)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="199" x="630.4063" y="284.7432"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="179" x="640.4063" y="306.3447">Remove TaskRef from Machine</text><rect fill="#90EE90" filter="url(#f1it97cochu7t1)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="71" x="694.4063" y="353.876"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="51" x="704.4063" y="375.4775">Requeue</text><polygon fill="#FEFECE" filter="url(#f1it97cochu7t1)" points="563.6563,426.8311,575.6563,438.8311,563.6563,450.8311,551.6563,438.8311,563.6563,426.8311" style="stroke: #A80036; stroke-width: 1.5;"/><polygon fill="#FEFECE" filter="url(#f1it97cochu7t1)" points="503.6563,202.2656,623.6563,202.2656,635.6563,214.2656,623.6563,226.2656,503.6563,226.2656,491.6563,214.2656,503.6563,202.2656" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="18" x="567.6563" y="236.9004">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="120" x="503.6563" y="218.4229">Machine has a TaskRef</text><polygon fill="#FEFECE" filter="url(#f1it97cochu7t1)" points="563.6563,470.8311,575.6563,482.8311,563.6563,494.8311,551.6563,482.8311,563.6563,470.8311" style="stroke: #A80036; stroke-width: 1.5;"/><rect fill="#EDF7DE" filter="url(#f1it97cochu7t1)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="193" x="467.1563" y="660.2637"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="173" x="477.1563" y="681.8652">Assign MachineRef to Machine</text><polygon fill="#FEFECE" filter="url(#f1it97cochu7t1)" points="486.1563,611.7861,641.1563,611.7861,653.1563,623.7861,641.1563,635.7861,486.1563,635.7861,474.1563,623.7861,486.1563,611.7861" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="18" x="567.6563" y="646.4209">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="155" x="486.1563" y="627.9434">Can find VM by InstanceUUID</text><polygon fill="#FEFECE" filter="url(#f1it97cochu7t1)" points="563.6563,714.3965,575.6563,726.3965,563.6563,738.3965,551.6563,726.3965,563.6563,714.3965" style="stroke: #A80036; stroke-width: 1.5;"/><polygon fill="#FEFECE" filter="url(#f1it97cochu7t1)" points="494.1563,563.3086,633.1563,563.3086,645.1563,575.3086,633.1563,587.3086,494.1563,587.3086,482.1563,575.3086,494.1563,563.3086" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="567.6563" y="597.9434">no</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="139" x="494.1563" y="579.4658">Machine has a MachineRef</text><polygon fill="#FEFECE" filter="url(#f1it97cochu7t1)" points="563.6563,758.3965,575.6563,770.3965,563.6563,782.3965,551.6563,770.3965,563.6563,758.3965" style="stroke: #A80036; stroke-width: 1.5;"/><rect fill="#EDF7DE" filter="url(#f1it97cochu7t1)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="218" x="454.6563" y="899.3516"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="198" x="464.6563" y="920.9531">Remove MachineRef from Machine</text><polygon fill="#FEFECE" filter="url(#f1it97cochu7t1)" points="491.6563,850.874,635.6563,850.874,647.6563,862.874,635.6563,874.874,491.6563,874.874,479.6563,862.874,491.6563,850.874" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="567.6563" y="885.5088">no</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="144" x="491.6563" y="867.0313">Can find VM by MachineRef</text><polygon fill="#FEFECE" filter="url(#f1it97cochu7t1)" points="563.6563,953.4844,575.6563,965.4844,563.6563,977.4844,551.6563,965.4844,563.6563,953.4844" style="stroke: #A80036; stroke-width: 1.5;"/><polygon fill="#FEFECE" filter="url(#f1it97cochu7t1)" points="494.1563,802.3965,633.1563,802.3965,645.1563,814.3965,633.1563,826.3965,494.1563,826.3965,482.1563,814.3965,494.1563,802.3965" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="567.6563" y="837.0313">no</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="139" x="494.1563" y="818.5537">Machine has a MachineRef</text><polygon fill="#FEFECE" filter="url(#f1it97cochu7t1)" points="563.6563,997.4844,575.6563,1009.4844,563.6563,1021.4844,551.6563,1009.4844,563.6563,997.4844" style="stroke: #A80036; stroke-width: 1.5;"/><polygon fill="#FEFECE" filter="url(#f1it97cochu7t1)" points="477.6563,1055.7617,649.6563,1055.7617,661.6563,1067.7617,649.6563,1079.7617,477.6563,1079.7617,465.6563,1067.7617,477.6563,1055.7617" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="172" x="477.6563" y="1071.9189">Machine has DeletionTimestamp</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="18" x="447.6563" y="1065.4414">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="661.6563" y="1065.4414">no</text><rect fill="#EDF7DE" filter="url(#f1it97cochu7t1)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="79" x="77.5" y="1138.2393"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="59" x="87.5" y="1159.8408">Delete VM</text><rect fill="#EDF7DE" filter="url(#f1it97cochu7t1)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="214" x="10" y="1207.3721"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="194" x="20" y="1228.9736">Assign delete TaskRef to Machine</text><rect fill="#90EE90" filter="url(#f1it97cochu7t1)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="71" x="81.5" y="1276.5049"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="51" x="91.5" y="1298.1064">Requeue</text><polygon fill="#FEFECE" filter="url(#f1it97cochu7t1)" points="47.5,1089.7617,186.5,1089.7617,198.5,1101.7617,186.5,1113.7617,47.5,1113.7617,35.5,1101.7617,47.5,1089.7617" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="18" x="121" y="1124.3965">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="139" x="47.5" y="1105.9189">Machine has a MachineRef</text><polygon fill="#FEFECE" filter="url(#f1it97cochu7t1)" points="117,1335.1152,129,1347.1152,117,1359.1152,105,1347.1152,117,1335.1152" style="stroke: #A80036; stroke-width: 1.5;"/><polygon fill="#FEFECE" filter="url(#f1it97cochu7t1)" points="940.8125,1089.7617,1079.8125,1089.7617,1091.8125,1101.7617,1079.8125,1113.7617,940.8125,1113.7617,928.8125,1101.7617,940.8125,1089.7617" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="139" x="940.8125" y="1105.9189">Machine has a MachineRef</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="18" x="910.8125" y="1099.4414">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="1091.8125" y="1099.4414">no</text><polygon fill="#FEFECE" filter="url(#f1it97cochu7t1)" points="534.625,1123.7617,759.625,1123.7617,771.625,1135.7617,759.625,1147.7617,534.625,1147.7617,522.625,1135.7617,534.625,1123.7617" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="225" x="534.625" y="1139.9189">VM metadata matches calculated metadata</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="508.625" y="1133.4414">no</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="18" x="771.625" y="1133.4414">yes</text><rect fill="#EDF7DE" filter="url(#f1it97cochu7t1)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="258" x="286" y="1157.7617"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="238" x="296" y="1179.3633">Reconfigure VM with calculated metadata</text><rect fill="#EDF7DE" filter="url(#f1it97cochu7t1)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="243" x="293.5" y="1226.8945"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="223" x="303.5" y="1248.4961">Assign reconfigure TaskRef to Machine</text><rect fill="#90EE90" filter="url(#f1it97cochu7t1)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="71" x="379.5" y="1296.0273"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="51" x="389.5" y="1317.6289">Requeue</text><rect fill="#EDF7DE" filter="url(#f1it97cochu7t1)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="325" x="716.75" y="1157.7617"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="305" x="726.75" y="1179.3633">Update Machine status with MAC addresses from VM</text><polygon fill="#FEFECE" filter="url(#f1it97cochu7t1)" points="838.25,1226.8945,920.25,1226.8945,932.25,1238.8945,920.25,1250.8945,838.25,1250.8945,826.25,1238.8945,838.25,1226.8945" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="82" x="838.25" y="1243.0518">VM powered on</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="812.25" y="1236.5742">no</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="18" x="932.25" y="1236.5742">yes</text><rect fill="#EDF7DE" filter="url(#f1it97cochu7t1)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="95" x="633.5" y="1260.8945"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="75" x="643.5" y="1282.4961">Power on VM</text><rect fill="#EDF7DE" filter="url(#f1it97cochu7t1)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="214" x="574" y="1330.0273"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="194" x="584" y="1351.6289">Assign power TaskRef to Machine</text><rect fill="#90EE90" filter="url(#f1it97cochu7t1)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="71" x="645.5" y="1384.1602"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="51" x="655.5" y="1405.7617">Requeue</text><polygon fill="#FEFECE" filter="url(#f1it97cochu7t1)" points="1023.5,1260.8945,1131.5,1260.8945,1143.5,1272.8945,1131.5,1284.8945,1023.5,1284.8945,1011.5,1272.8945,1023.5,1260.8945" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="108" x="1023.5" y="1277.0518">VM has IP addresses</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="18" x="993.5" y="1270.5742">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="1143.5" y="1270.5742">no</text><rect fill="#EDF7DE" filter="url(#f1it97cochu7t1)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="309" x="818" y="1294.8945"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="289" x="828" y="1316.4961">Update Machine status with IP addresses from VM</text><rect fill="#90EE90" filter="url(#f1it97cochu7t1)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="71" x="1147" y="1294.8945"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="51" x="1157" y="1316.4961">Requeue</text><polygon fill="#FEFECE" filter="url(#f1it97cochu7t1)" points="1077.5,1335.0273,1089.5,1347.0273,1077.5,1359.0273,1065.5,1347.0273,1077.5,1335.0273" style="stroke: #A80036; stroke-width: 1.5;"/><polygon fill="#FEFECE" filter="url(#f1it97cochu7t1)" points="879.25,1424.293,891.25,1436.293,879.25,1448.293,867.25,1436.293,879.25,1424.293" style="stroke: #A80036; stroke-width: 1.5;"/><polygon fill="#FEFECE" filter="url(#f1it97cochu7t1)" points="647.125,1454.293,659.125,1466.293,647.125,1478.293,635.125,1466.293,647.125,1454.293" style="stroke: #A80036; stroke-width: 1.5;"/><rect fill="#EDF7DE" filter="url(#f1it97cochu7t1)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="211" x="1228" y="1123.7617"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="191" x="1238" y="1145.3633">Clone template to create new VM</text><rect fill="#EDF7DE" filter="url(#f1it97cochu7t1)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="208" x="1229.5" y="1192.8945"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="188" x="1239.5" y="1214.4961">Assign clone TaskRef to Machine</text><rect fill="#90EE90" filter="url(#f1it97cochu7t1)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="71" x="1298" y="1262.0273"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="51" x="1308" y="1283.6289">Requeue</text><polygon fill="#FEFECE" filter="url(#f1it97cochu7t1)" points="1010.3125,1484.293,1022.3125,1496.293,1010.3125,1508.293,998.3125,1496.293,1010.3125,1484.293" style="stroke: #A80036; stroke-width: 1.5;"/><polygon fill="#FEFECE" filter="url(#f1it97cochu7t1)" points="563.6563,1514.293,575.6563,1526.293,563.6563,1538.293,551.6563,1526.293,563.6563,1514.293" style="stroke: #A80036; stroke-width: 1.5;"/><polygon fill="#FEFECE" filter="url(#f1it97cochu7t1)" points="502.6563,514.8311,624.6563,514.8311,636.6563,526.8311,624.6563,538.8311,502.6563,538.8311,490.6563,526.8311,502.6563,514.8311" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="567.6563" y="549.4658">no</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="122" x="502.6563" y="530.9883">Is requeued or in error</text><polygon fill="#FEFECE" filter="url(#f1it97cochu7t1)" points="563.6563,1558.293,575.6563,1570.293,563.6563,1582.293,551.6563,1570.293,563.6563,1558.293" style="stroke: #A80036; stroke-width: 1.5;"/><rect fill="#EDF7DE" filter="url(#f1it97cochu7t1)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="259" x="434.1563" y="1602.293"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="239" x="444.1563" y="1623.8945">Machine state patched back to API server</text><polygon fill="#FEFECE" filter="url(#f1it97cochu7t1)" points="563.6563,104.1328,575.6563,116.1328,563.6563,128.1328,551.6563,116.1328,563.6563,104.1328" style="stroke: #A80036; stroke-width: 1.5;"/><polygon fill="#FEFECE" filter="url(#f1it97cochu7t1)" points="505.1563,1656.4258,622.1563,1656.4258,634.1563,1668.4258,622.1563,1680.4258,505.1563,1680.4258,493.1563,1668.4258,505.1563,1656.4258" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="117" x="505.1563" y="1672.583">Reconcile is requeued</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="18" x="634.1563" y="1666.1055">yes</text><polygon fill="#FEFECE" filter="url(#f1it97cochu7t1)" points="523.6563,1721.7012,603.6563,1721.7012,615.6563,1733.7012,603.6563,1745.7012,523.6563,1745.7012,511.6563,1733.7012,523.6563,1721.7012" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="80" x="523.6563" y="1737.8584">Error occurred</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="18" x="493.6563" y="1731.3809">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="615.6563" y="1731.3809">no</text><rect fill="#FFC0CB" filter="url(#f1it97cochu7t1)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="110" x="440.6563" y="1755.7012"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="90" x="450.6563" y="1777.3027">Reconcile failed</text><rect fill="#ADD8E6" filter="url(#f1it97cochu7t1)" height="34.1328" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="122" x="570.6563" y="1755.7012"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="102" x="580.6563" y="1777.3027">Reconcile success</text><polygon fill="#FEFECE" filter="url(#f1it97cochu7t1)" points="563.6563,1795.834,575.6563,1807.834,563.6563,1819.834,551.6563,1807.834,563.6563,1795.834" style="stroke: #A80036; stroke-width: 1.5;"/><ellipse cx="563.6563" cy="1850.834" fill="#FFFFFF" filter="url(#f1it97cochu7t1)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="563.6563" cy="1850.834" fill="#000000" rx="6" ry="6" style="stroke: #7F7F7F; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="563.6563" x2="563.6563" y1="30" y2="50"/><polygon fill="#A80036" points="559.6563,40,563.6563,50,567.6563,40,563.6563,44" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="262.9063" x2="262.9063" y1="333.7432" y2="366.6982"/><polygon fill="#A80036" points="258.9063,356.6982,262.9063,366.6982,266.9063,356.6982,262.9063,360.6982" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="262.9063" x2="262.9063" y1="400.8311" y2="420.8311"/><polygon fill="#A80036" points="258.9063,410.8311,262.9063,420.8311,266.9063,410.8311,262.9063,414.8311" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="460.9063" x2="460.9063" y1="333.7432" y2="366.6982"/><polygon fill="#A80036" points="456.9063,356.6982,460.9063,366.6982,464.9063,356.6982,460.9063,360.6982" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="460.9063" x2="460.9063" y1="400.8311" y2="420.8311"/><polygon fill="#A80036" points="456.9063,410.8311,460.9063,420.8311,464.9063,410.8311,460.9063,414.8311" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="341.4063" x2="389.9063" y1="321.7432" y2="321.7432"/><polygon fill="#A80036" points="379.9063,317.7432,389.9063,321.7432,379.9063,325.7432,383.9063,321.7432" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="521.6563" x2="262.9063" y1="262.7432" y2="262.7432"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="262.9063" x2="262.9063" y1="262.7432" y2="309.7432"/><polygon fill="#A80036" points="258.9063,299.7432,262.9063,309.7432,266.9063,299.7432,262.9063,303.7432" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="531.9063" x2="595.4063" y1="321.7432" y2="321.7432"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="595.4063" x2="595.4063" y1="321.7432" y2="420.8311"/><polygon fill="#A80036" points="591.4063,410.8311,595.4063,420.8311,599.4063,410.8311,595.4063,414.8311" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="262.9063" x2="595.4063" y1="420.8311" y2="420.8311"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="729.9063" x2="729.9063" y1="318.876" y2="353.876"/><polygon fill="#A80036" points="725.9063,343.876,729.9063,353.876,733.9063,343.876,729.9063,347.876" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="605.6563" x2="729.9063" y1="262.7432" y2="262.7432"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="729.9063" x2="729.9063" y1="262.7432" y2="284.7432"/><polygon fill="#A80036" points="725.9063,274.7432,729.9063,284.7432,733.9063,274.7432,729.9063,278.7432" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="397.4063" x2="397.4063" y1="420.8311" y2="438.8311"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="397.4063" x2="551.6563" y1="438.8311" y2="438.8311"/><polygon fill="#A80036" points="541.6563,434.8311,551.6563,438.8311,541.6563,442.8311,545.6563,438.8311" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="729.9063" x2="729.9063" y1="388.0088" y2="438.8311"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="729.9063" x2="575.6563" y1="438.8311" y2="438.8311"/><polygon fill="#A80036" points="585.6563,434.8311,575.6563,438.8311,585.6563,442.8311,581.6563,438.8311" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="563.6563" x2="563.6563" y1="226.2656" y2="250.7432"/><polygon fill="#A80036" points="559.6563,240.7432,563.6563,250.7432,567.6563,240.7432,563.6563,244.7432" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="635.6563" x2="849.4063" y1="214.2656" y2="214.2656"/><polygon fill="#A80036" points="845.4063,368.2871,849.4063,378.2871,853.4063,368.2871,849.4063,372.2871" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="849.4063" x2="849.4063" y1="214.2656" y2="482.8311"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="849.4063" x2="575.6563" y1="482.8311" y2="482.8311"/><polygon fill="#A80036" points="585.6563,478.8311,575.6563,482.8311,585.6563,486.8311,581.6563,482.8311" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="563.6563" x2="563.6563" y1="450.8311" y2="470.8311"/><polygon fill="#A80036" points="559.6563,460.8311,563.6563,470.8311,567.6563,460.8311,563.6563,464.8311" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="563.6563" x2="563.6563" y1="182.2656" y2="202.2656"/><polygon fill="#A80036" points="559.6563,192.2656,563.6563,202.2656,567.6563,192.2656,563.6563,196.2656" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="563.6563" x2="563.6563" y1="635.7861" y2="660.2637"/><polygon fill="#A80036" points="559.6563,650.2637,563.6563,660.2637,567.6563,650.2637,563.6563,654.2637" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="653.1563" x2="670.1563" y1="623.7861" y2="623.7861"/><polygon fill="#A80036" points="666.1563,667.3301,670.1563,677.3301,674.1563,667.3301,670.1563,671.3301" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="670.1563" x2="670.1563" y1="623.7861" y2="726.3965"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="670.1563" x2="575.6563" y1="726.3965" y2="726.3965"/><polygon fill="#A80036" points="585.6563,722.3965,575.6563,726.3965,585.6563,730.3965,581.6563,726.3965" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="563.6563" x2="563.6563" y1="694.3965" y2="714.3965"/><polygon fill="#A80036" points="559.6563,704.3965,563.6563,714.3965,567.6563,704.3965,563.6563,708.3965" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="563.6563" x2="563.6563" y1="587.3086" y2="611.7861"/><polygon fill="#A80036" points="559.6563,601.7861,563.6563,611.7861,567.6563,601.7861,563.6563,605.7861" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="645.1563" x2="692.1563" y1="575.3086" y2="575.3086"/><polygon fill="#A80036" points="688.1563,667.3301,692.1563,677.3301,696.1563,667.3301,692.1563,671.3301" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="692.1563" x2="692.1563" y1="575.3086" y2="770.3965"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="692.1563" x2="575.6563" y1="770.3965" y2="770.3965"/><polygon fill="#A80036" points="585.6563,766.3965,575.6563,770.3965,585.6563,774.3965,581.6563,770.3965" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="563.6563" x2="563.6563" y1="738.3965" y2="758.3965"/><polygon fill="#A80036" points="559.6563,748.3965,563.6563,758.3965,567.6563,748.3965,563.6563,752.3965" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="563.6563" x2="563.6563" y1="874.874" y2="899.3516"/><polygon fill="#A80036" points="559.6563,889.3516,563.6563,899.3516,567.6563,889.3516,563.6563,893.3516" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="647.6563" x2="682.6563" y1="862.874" y2="862.874"/><polygon fill="#A80036" points="678.6563,906.418,682.6563,916.418,686.6563,906.418,682.6563,910.418" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="682.6563" x2="682.6563" y1="862.874" y2="965.4844"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="682.6563" x2="575.6563" y1="965.4844" y2="965.4844"/><polygon fill="#A80036" points="585.6563,961.4844,575.6563,965.4844,585.6563,969.4844,581.6563,965.4844" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="563.6563" x2="563.6563" y1="933.4844" y2="953.4844"/><polygon fill="#A80036" points="559.6563,943.4844,563.6563,953.4844,567.6563,943.4844,563.6563,947.4844" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="563.6563" x2="563.6563" y1="826.3965" y2="850.874"/><polygon fill="#A80036" points="559.6563,840.874,563.6563,850.874,567.6563,840.874,563.6563,844.874" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="645.1563" x2="704.6563" y1="814.3965" y2="814.3965"/><polygon fill="#A80036" points="700.6563,906.418,704.6563,916.418,708.6563,906.418,704.6563,910.418" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="704.6563" x2="704.6563" y1="814.3965" y2="1009.4844"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="704.6563" x2="575.6563" y1="1009.4844" y2="1009.4844"/><polygon fill="#A80036" points="585.6563,1005.4844,575.6563,1009.4844,585.6563,1013.4844,581.6563,1009.4844" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="563.6563" x2="563.6563" y1="977.4844" y2="997.4844"/><polygon fill="#A80036" points="559.6563,987.4844,563.6563,997.4844,567.6563,987.4844,563.6563,991.4844" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="563.6563" x2="563.6563" y1="782.3965" y2="802.3965"/><polygon fill="#A80036" points="559.6563,792.3965,563.6563,802.3965,567.6563,792.3965,563.6563,796.3965" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="117" x2="117" y1="1172.3721" y2="1207.3721"/><polygon fill="#A80036" points="113,1197.3721,117,1207.3721,121,1197.3721,117,1201.3721" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="117" x2="117" y1="1241.5049" y2="1276.5049"/><polygon fill="#A80036" points="113,1266.5049,117,1276.5049,121,1266.5049,117,1270.5049" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="117" x2="117" y1="1113.7617" y2="1138.2393"/><polygon fill="#A80036" points="113,1128.2393,117,1138.2393,121,1128.2393,117,1132.2393" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="198.5" x2="234" y1="1101.7617" y2="1101.7617"/><polygon fill="#A80036" points="230,1214.4385,234,1224.4385,238,1214.4385,234,1218.4385" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="234" x2="234" y1="1101.7617" y2="1347.1152"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="234" x2="129" y1="1347.1152" y2="1347.1152"/><polygon fill="#A80036" points="139,1343.1152,129,1347.1152,139,1351.1152,135,1347.1152" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="117" x2="117" y1="1310.6377" y2="1335.1152"/><polygon fill="#A80036" points="113,1325.1152,117,1335.1152,121,1325.1152,117,1329.1152" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="415" x2="415" y1="1191.8945" y2="1226.8945"/><polygon fill="#A80036" points="411,1216.8945,415,1226.8945,419,1216.8945,415,1220.8945" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="415" x2="415" y1="1261.0273" y2="1296.0273"/><polygon fill="#A80036" points="411,1286.0273,415,1296.0273,419,1286.0273,415,1290.0273" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="681" x2="681" y1="1295.0273" y2="1330.0273"/><polygon fill="#A80036" points="677,1320.0273,681,1330.0273,685,1320.0273,681,1324.0273" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="681" x2="681" y1="1364.1602" y2="1384.1602"/><polygon fill="#A80036" points="677,1374.1602,681,1384.1602,685,1374.1602,681,1378.1602" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1011.5" x2="972.5" y1="1272.8945" y2="1272.8945"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="972.5" x2="972.5" y1="1272.8945" y2="1294.8945"/><polygon fill="#A80036" points="968.5,1284.8945,972.5,1294.8945,976.5,1284.8945,972.5,1288.8945" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1143.5" x2="1182.5" y1="1272.8945" y2="1272.8945"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1182.5" x2="1182.5" y1="1272.8945" y2="1294.8945"/><polygon fill="#A80036" points="1178.5,1284.8945,1182.5,1294.8945,1186.5,1284.8945,1182.5,1288.8945" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="972.5" x2="972.5" y1="1329.0273" y2="1347.0273"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="972.5" x2="1065.5" y1="1347.0273" y2="1347.0273"/><polygon fill="#A80036" points="1055.5,1343.0273,1065.5,1347.0273,1055.5,1351.0273,1059.5,1347.0273" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1182.5" x2="1182.5" y1="1329.0273" y2="1347.0273"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1182.5" x2="1089.5" y1="1347.0273" y2="1347.0273"/><polygon fill="#A80036" points="1099.5,1343.0273,1089.5,1347.0273,1099.5,1351.0273,1095.5,1347.0273" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="826.25" x2="681" y1="1238.8945" y2="1238.8945"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="681" x2="681" y1="1238.8945" y2="1260.8945"/><polygon fill="#A80036" points="677,1250.8945,681,1260.8945,685,1250.8945,681,1254.8945" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="932.25" x2="1077.5" y1="1238.8945" y2="1238.8945"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1077.5" x2="1077.5" y1="1238.8945" y2="1260.8945"/><polygon fill="#A80036" points="1073.5,1250.8945,1077.5,1260.8945,1081.5,1250.8945,1077.5,1254.8945" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="681" x2="681" y1="1418.293" y2="1436.293"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="681" x2="867.25" y1="1436.293" y2="1436.293"/><polygon fill="#A80036" points="857.25,1432.293,867.25,1436.293,857.25,1440.293,861.25,1436.293" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1077.5" x2="1077.5" y1="1359.0273" y2="1436.293"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1077.5" x2="891.25" y1="1436.293" y2="1436.293"/><polygon fill="#A80036" points="901.25,1432.293,891.25,1436.293,901.25,1440.293,897.25,1436.293" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="879.25" x2="879.25" y1="1191.8945" y2="1226.8945"/><polygon fill="#A80036" points="875.25,1216.8945,879.25,1226.8945,883.25,1216.8945,879.25,1220.8945" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="522.625" x2="415" y1="1135.7617" y2="1135.7617"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="415" x2="415" y1="1135.7617" y2="1157.7617"/><polygon fill="#A80036" points="411,1147.7617,415,1157.7617,419,1147.7617,415,1151.7617" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="771.625" x2="879.25" y1="1135.7617" y2="1135.7617"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="879.25" x2="879.25" y1="1135.7617" y2="1157.7617"/><polygon fill="#A80036" points="875.25,1147.7617,879.25,1157.7617,883.25,1147.7617,879.25,1151.7617" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="415" x2="415" y1="1330.1602" y2="1466.293"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="415" x2="635.125" y1="1466.293" y2="1466.293"/><polygon fill="#A80036" points="625.125,1462.293,635.125,1466.293,625.125,1470.293,629.125,1466.293" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="879.25" x2="879.25" y1="1448.293" y2="1466.293"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="879.25" x2="659.125" y1="1466.293" y2="1466.293"/><polygon fill="#A80036" points="669.125,1462.293,659.125,1466.293,669.125,1470.293,665.125,1466.293" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1333.5" x2="1333.5" y1="1157.8945" y2="1192.8945"/><polygon fill="#A80036" points="1329.5,1182.8945,1333.5,1192.8945,1337.5,1182.8945,1333.5,1186.8945" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1333.5" x2="1333.5" y1="1227.0273" y2="1262.0273"/><polygon fill="#A80036" points="1329.5,1252.0273,1333.5,1262.0273,1337.5,1252.0273,1333.5,1256.0273" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="928.8125" x2="647.125" y1="1101.7617" y2="1101.7617"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="647.125" x2="647.125" y1="1101.7617" y2="1123.7617"/><polygon fill="#A80036" points="643.125,1113.7617,647.125,1123.7617,651.125,1113.7617,647.125,1117.7617" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1091.8125" x2="1333.5" y1="1101.7617" y2="1101.7617"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1333.5" x2="1333.5" y1="1101.7617" y2="1123.7617"/><polygon fill="#A80036" points="1329.5,1113.7617,1333.5,1123.7617,1337.5,1113.7617,1333.5,1117.7617" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="647.125" x2="647.125" y1="1478.293" y2="1496.293"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="647.125" x2="998.3125" y1="1496.293" y2="1496.293"/><polygon fill="#A80036" points="988.3125,1492.293,998.3125,1496.293,988.3125,1500.293,992.3125,1496.293" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1333.5" x2="1333.5" y1="1296.1602" y2="1496.293"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1333.5" x2="1022.3125" y1="1496.293" y2="1496.293"/><polygon fill="#A80036" points="1032.3125,1492.293,1022.3125,1496.293,1032.3125,1500.293,1028.3125,1496.293" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="465.6563" x2="117" y1="1067.7617" y2="1067.7617"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="117" x2="117" y1="1067.7617" y2="1089.7617"/><polygon fill="#A80036" points="113,1079.7617,117,1089.7617,121,1079.7617,117,1083.7617" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="661.6563" x2="1010.3125" y1="1067.7617" y2="1067.7617"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1010.3125" x2="1010.3125" y1="1067.7617" y2="1089.7617"/><polygon fill="#A80036" points="1006.3125,1079.7617,1010.3125,1089.7617,1014.3125,1079.7617,1010.3125,1083.7617" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="117" x2="117" y1="1359.1152" y2="1526.293"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="117" x2="551.6563" y1="1526.293" y2="1526.293"/><polygon fill="#A80036" points="541.6563,1522.293,551.6563,1526.293,541.6563,1530.293,545.6563,1526.293" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1010.3125" x2="1010.3125" y1="1508.293" y2="1526.293"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1010.3125" x2="575.6563" y1="1526.293" y2="1526.293"/><polygon fill="#A80036" points="585.6563,1522.293,575.6563,1526.293,585.6563,1530.293,581.6563,1526.293" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="563.6563" x2="563.6563" y1="1021.4844" y2="1055.7617"/><polygon fill="#A80036" points="559.6563,1045.7617,563.6563,1055.7617,567.6563,1045.7617,563.6563,1049.7617" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="563.6563" x2="563.6563" y1="538.8311" y2="563.3086"/><polygon fill="#A80036" points="559.6563,553.3086,563.6563,563.3086,567.6563,553.3086,563.6563,557.3086" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="636.6563" x2="1453" y1="526.8311" y2="526.8311"/><polygon fill="#A80036" points="1449,1031.4844,1453,1041.4844,1457,1031.4844,1453,1035.4844" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1453" x2="1453" y1="526.8311" y2="1570.293"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1453" x2="575.6563" y1="1570.293" y2="1570.293"/><polygon fill="#A80036" points="585.6563,1566.293,575.6563,1570.293,585.6563,1574.293,581.6563,1570.293" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="563.6563" x2="563.6563" y1="1538.293" y2="1558.293"/><polygon fill="#A80036" points="559.6563,1548.293,563.6563,1558.293,567.6563,1548.293,563.6563,1552.293" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="563.6563" x2="563.6563" y1="494.8311" y2="514.8311"/><polygon fill="#A80036" points="559.6563,504.8311,563.6563,514.8311,567.6563,504.8311,563.6563,508.8311" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="563.6563" x2="563.6563" y1="1582.293" y2="1602.293"/><polygon fill="#A80036" points="559.6563,1592.293,563.6563,1602.293,567.6563,1592.293,563.6563,1596.293" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="563.6563" x2="563.6563" y1="128.1328" y2="148.1328"/><polygon fill="#A80036" points="559.6563,138.1328,563.6563,148.1328,567.6563,138.1328,563.6563,142.1328" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="634.1563" x2="1471" y1="1668.4258" y2="1668.4258"/><polygon fill="#A80036" points="1467,867.6406,1471,857.6406,1475,867.6406,1471,863.6406" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1471" x2="1471" y1="116.1328" y2="1668.4258"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1471" x2="575.6563" y1="116.1328" y2="116.1328"/><polygon fill="#A80036" points="585.6563,112.1328,575.6563,116.1328,585.6563,120.1328,581.6563,116.1328" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="563.6563" x2="563.6563" y1="1636.4258" y2="1656.4258"/><polygon fill="#A80036" points="559.6563,1646.4258,563.6563,1656.4258,567.6563,1646.4258,563.6563,1650.4258" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="563.6563" x2="563.6563" y1="84.1328" y2="104.1328"/><polygon fill="#A80036" points="559.6563,94.1328,563.6563,104.1328,567.6563,94.1328,563.6563,98.1328" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="511.6563" x2="495.6563" y1="1733.7012" y2="1733.7012"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="495.6563" x2="495.6563" y1="1733.7012" y2="1755.7012"/><polygon fill="#A80036" points="491.6563,1745.7012,495.6563,1755.7012,499.6563,1745.7012,495.6563,1749.7012" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="615.6563" x2="631.6563" y1="1733.7012" y2="1733.7012"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="631.6563" x2="631.6563" y1="1733.7012" y2="1755.7012"/><polygon fill="#A80036" points="627.6563,1745.7012,631.6563,1755.7012,635.6563,1745.7012,631.6563,1749.7012" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="495.6563" x2="495.6563" y1="1789.834" y2="1807.834"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="495.6563" x2="551.6563" y1="1807.834" y2="1807.834"/><polygon fill="#A80036" points="541.6563,1803.834,551.6563,1807.834,541.6563,1811.834,545.6563,1807.834" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="631.6563" x2="631.6563" y1="1789.834" y2="1807.834"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="631.6563" x2="575.6563" y1="1807.834" y2="1807.834"/><polygon fill="#A80036" points="585.6563,1803.834,575.6563,1807.834,585.6563,1811.834,581.6563,1807.834" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="563.6563" x2="563.6563" y1="1680.4258" y2="1721.7012"/><polygon fill="#A80036" points="559.6563,1711.7012,563.6563,1721.7012,567.6563,1711.7012,563.6563,1715.7012" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="567.6563" y="1701.8809">no</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="563.6563" x2="563.6563" y1="1819.834" y2="1839.834"/><polygon fill="#A80036" points="559.6563,1829.834,563.6563,1839.834,567.6563,1829.834,563.6563,1833.834" style="stroke: #A80036; stroke-width: 1.0;"/><!-- | |
@startuml machine-controller-reconcile | |
start; | |
:Machine controller; | |
repeat | |
:Reconcile; | |
if (Machine has a TaskRef) then (yes) | |
if (Task exists) then (yes) | |
if (Task is running/pending) then (yes) | |
#LightGreen:Requeue; | |
elseif (Task is success/failed) then (yes) | |
#edf7de:Remove TaskRef from Machine; | |
endif | |
else (no) | |
#edf7de:Remove TaskRef from Machine; | |
#LightGreen:Requeue; | |
endif | |
endif | |
if (Is requeued or in error) then (no) | |
if (Machine has a MachineRef) then (no) | |
if (Can find VM by InstanceUUID) then (yes) | |
#edf7de:Assign MachineRef to Machine; | |
endif | |
endif | |
if (Machine has a MachineRef) then (no) | |
if (Can find VM by MachineRef) then (no) | |
#edf7de:Remove MachineRef from Machine; | |
endif | |
endif | |
if (Machine has DeletionTimestamp) then (yes) | |
if (Machine has a MachineRef) then (yes) | |
#edf7de:Delete VM; | |
#edf7de:Assign delete TaskRef to Machine; | |
#LightGreen:Requeue; | |
endif | |
else (no) | |
if (Machine has a MachineRef) then (yes) | |
if (VM metadata matches calculated metadata) then (no) | |
#edf7de:Reconfigure VM with calculated metadata; | |
#edf7de:Assign reconfigure TaskRef to Machine; | |
#LightGreen:Requeue; | |
else (yes) | |
#edf7de:Update Machine status with MAC addresses from VM; | |
if (VM powered on) then (no) | |
#edf7de:Power on VM; | |
#edf7de:Assign power TaskRef to Machine; | |
#LightGreen:Requeue; | |
else (yes) | |
if (VM has IP addresses) then (yes) | |
#edf7de:Update Machine status with IP addresses from VM; | |
else (no) | |
#LightGreen:Requeue; | |
endif | |
endif | |
endif | |
else (no) | |
#edf7de:Clone template to create new VM; | |
#edf7de:Assign clone TaskRef to Machine; | |
#LightGreen:Requeue; | |
endif | |
endif | |
endif | |
#edf7de:Machine state patched back to API server; | |
repeat while (Reconcile is requeued) is (yes) | |
-> no; | |
if (Error occurred) then (yes) | |
#Pink:Reconcile failed; | |
else (no) | |
#LightBlue:Reconcile success; | |
endif | |
stop; | |
@enduml | |
PlantUML version 1.2019.06(Fri May 24 12:10:25 CDT 2019) | |
(GPL source distribution) | |
Java Runtime: Java(TM) SE Runtime Environment | |
JVM: Java HotSpot(TM) 64-Bit Server VM | |
Java Version: 1.8.0_191-b12 | |
Operating System: Mac OS X | |
OS Version: 10.14.5 | |
Default Encoding: UTF-8 | |
Language: en | |
Country: US | |
--></g></svg> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment