in internal/checkpoint/checkpoint.go [29:52]
func (c *Checkpoint) DoCheckpointWithDesiredStage(ctx context.Context, desiredStage Stage) error {
currentStage, err := c.FetchCurrentStageFromCluster(ctx)
if err != nil {
if errors.IsNotFound(err) {
c.CurrentStage = desiredStage
err = c.Create(ctx)
if err != nil {
return err
}
return nil
}
return err
}
c.CurrentStage = currentStage
canChangeStage, err := c.CurrentStage.canChangeStageValue(desiredStage)
if err != nil {
return err
}
if canChangeStage {
c.CurrentStage = desiredStage
err = c.Update(ctx)
}
return nil
}