sigs.k8s.io/cluster-api@v1.7.1/docs/book/src/images/control-plane-controller.plantuml (about) 1 @startuml 2 3 start 4 5 :Control plane controller; 6 repeat 7 :Control plane controller enqueues a Reconcile call; 8 if (Deleted?) then (yes) 9 if (Has cluster owner?) then (yes) 10 :Reconcile deletion; 11 else (no) 12 endif 13 :Delete implementation-specific finalizer; 14 else (no) 15 if (OwnerReferences contains a Cluster) then (yes) 16 :Add implementation-specific finalizer if needed; 17 #LightBlue:Get cluster object for control plane; 18 if (Cluster object has status.ControlPlaneEndpoint and status.InfrastructureReady is true) then (yes) 19 :Reconcile control plane; 20 if (Control plane is initialized) then (yes) 21 #LightBlue:Set status.Initialized to true; 22 if (Control plane is contactable) then (yes) 23 #LightBlue:Set status.Ready to true; 24 else (no) 25 #Pink:Set status.Ready to false; 26 endif 27 else (no) 28 #Pink:Return Requeue; 29 endif 30 else (no) 31 endif 32 else (no) 33 endif 34 endif 35 #LightBlue:Patch ImplementationControlPlane back to API server; 36 repeat while (Reconcile returned RequeueError?) is (yes) 37 if (Reconcile returned error) then (yes) 38 #Pink:Error reconciling control plane; 39 else (no) 40 endif 41 stop 42 43 @enduml