func()

in pkg/objectmodifier/stage.go [119:148]


func (m *stageOwnerRefModifier) Apply(ctx context.Context, stage *cdPipeApi.Stage) (bool, error) {
	log := ctrl.LoggerFrom(ctx)

	log.Info("Trying to update owner reference for stage")

	if stage == nil {
		return false, errors.New("failed to update stage owner reference: stage is nil")
	}

	if ow := helper.GetOwnerReference(consts.CDPipelineKind, stage.GetOwnerReferences()); ow != nil {
		log.Info("CDPipeline owner reference already exists")
		return false, nil
	}

	pipeline := &cdPipeApi.CDPipeline{}
	if err := m.k8sClient.Get(ctx, client.ObjectKey{
		Namespace: stage.Namespace,
		Name:      stage.Spec.CdPipeline,
	}, pipeline); err != nil {
		return false, fmt.Errorf("cdpipeline %s doesn't exist: %w", stage.Spec.CdPipeline, err)
	}

	if err := controllerutil.SetControllerReference(pipeline, stage, m.scheme); err != nil {
		return false, fmt.Errorf("couldn't set CDPipeline %s owner ref: %w", stage.Spec.CdPipeline, err)
	}

	log.Info("CDPipeline owner reference was updated")

	return true, nil
}