func()

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
}