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
}