Skip to content

Instantly share code, notes, and snippets.

@akutz
Created July 11, 2019 15:38
Show Gist options
  • Save akutz/a1decf2de925851fec10d809c529fa2d to your computer and use it in GitHub Desktop.
Save akutz/a1decf2de925851fec10d809c529fa2d to your computer and use it in GitHub Desktop.
CAPV Machine Reconcile Workflow
@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
Display the source blob
Display the rendered blob
Raw
<?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