func HandleMainShuttingDown()

in internal/controller/checkpoint_stages.go [115:136]


func HandleMainShuttingDown(r *TeamcityReconciler, ctx context.Context, checkpoint *Checkpoint) (bool, error) {
	instance := checkpoint.Instance
	mainStatefulSetNamespacedName := instance.Spec.MainNode.GetNamespacedNameFromNamespace(instance.Namespace)

	mainNodeUpdateFinished, err := isNodeUpdateFinished(r, ctx, mainStatefulSetNamespacedName)
	if err != nil {
		return false, err
	}
	isMainNodeStatefulSetNewestGeneration, err := isNewestGeneration(r, ctx, mainStatefulSetNamespacedName)
	if err != nil {
		return false, err
	}

	if mainNodeUpdateFinished && isMainNodeStatefulSetNewestGeneration {
		err := checkpoint.DoCheckpointWithDesiredStage(ctx, MainReady)
		if err != nil {
			return false, err
		}
	}
	return true, nil

}