func()

in pkg/controller/jenkinsserviceaccount/jenkinsserviceaccount_controller.go [207:237]


func (r *ReconcileJenkinsServiceAccount) getOrCreateInstanceOwner(ctx context.Context, jenkinsServiceAccount *jenkinsApi.JenkinsServiceAccount) (*jenkinsApi.Jenkins, error) {
	log := r.log.WithValues(logNamespaceKey, jenkinsServiceAccount.Namespace, logNameKey, jenkinsServiceAccount.Name)

	owner := r.getOwnerByCr(jenkinsServiceAccount)
	if owner != nil {
		return r.getInstanceByName(ctx, jenkinsServiceAccount.Namespace, owner.Name)
	}

	if jenkinsServiceAccount.Spec.OwnerName != "" {
		return r.getInstanceByOwnerFromSpec(ctx, jenkinsServiceAccount)
	}

	jenkinsInstance, err := r.getJenkinsInstance(ctx, jenkinsServiceAccount.Namespace)
	if err != nil {
		return nil, err
	}

	if jenkinsInstance == nil {
		return nil, nil
	}

	jenkinsServiceAccount = r.setOwnerReference(jenkinsInstance, jenkinsServiceAccount)

	log.Info(fmt.Sprintf("jenkinsServiceAccount.GetOwnerReferences() - %v", jenkinsServiceAccount.GetOwnerReferences()))

	if err := r.client.Update(ctx, jenkinsServiceAccount); err != nil {
		return nil, fmt.Errorf("failed to set owner reference for %v: %w", jenkinsServiceAccount.Name, err)
	}

	return jenkinsInstance, nil
}