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