sigs.k8s.io/cluster-api-provider-azure@v1.14.3/docs/proposals/images/async-reconcile.plantuml (about) 1 @startuml 2 title Figure 1. Azure service async reconcile 3 state longrunningopinprogress <<choice>> 4 5 [*] --> longrunningopinprogress : start Reconcile 6 longrunningopinprogress --> GetResultIfDone : long running operation\nalready in progress 7 GetResultIfDone : fetch the future data from the scope 8 GetResultIfDone : check if future is done 9 10 GetResultIfDone --> [*] : requeue if not done 11 GetResultIfDone --> UpdateStatus : done 12 UpdateStatus : update the resource spec and status 13 UpdateStatus : update the object conditions 14 UpdateStatus --> [*] 15 16 longrunningopinprogress --> GetExisting : no long running operation\n in progress 17 GetExisting : GET the resource from Azure if it exists 18 GetExisting --> UpdateStatus : resource exists\n no update needed 19 GetExisting --> CreateOrUpdate : resource does not exist,\n create it 20 GetExisting --> CreateOrUpdate : resource exists\n but needs to be updated 21 22 CreateOrUpdate : PUT the resource to Azure 23 CreateOrUpdate : wait for the operation to complete 24 CreateOrUpdate : timeout after x seconds 25 26 CreateOrUpdate --> ResetLongRunningState : PUT operation completes \n before timeout 27 ResetLongRunningState : set the long running operation state to nil 28 ResetLongRunningState --> UpdateStatus 29 30 CreateOrUpdate --> StoreLongRunningState : PUT operation does not\n complete before timeout 31 StoreLongRunningState: store the future in long running operation state 32 33 StoreLongRunningState --> UpdateStatus 34 35 @enduml