func()

in controllers/helper/controller_helper.go [121:170]


func (h *Helper) SetKeycloakOwnerRef(ctx context.Context, object ObjectWithKeycloakRef) error {
	if metav1.GetControllerOf(object) != nil {
		return nil
	}

	kind := object.GetKeycloakRef().Kind
	name := object.GetKeycloakRef().Name

	switch kind {
	case keycloakApi.KeycloakKind:
		kc := &keycloakApi.Keycloak{}
		if err := h.client.Get(ctx, types.NamespacedName{
			Namespace: object.GetNamespace(),
			Name:      name,
		}, kc); err != nil {
			return fmt.Errorf("failed to get Keycloak: %w", err)
		}

		if err := controllerutil.SetControllerReference(kc, object, h.scheme); err != nil {
			return fmt.Errorf("failed to set controller reference for %s: %w", object.GetName(), err)
		}

		if err := h.client.Update(ctx, object); err != nil {
			return fmt.Errorf("failed to update keycloak owner reference %s: %w", kc.GetName(), err)
		}

		return nil

	case keycloakAlpha.ClusterKeycloakKind:
		clusterKc := &keycloakAlpha.ClusterKeycloak{}
		if err := h.client.Get(ctx, types.NamespacedName{
			Name: name,
		}, clusterKc); err != nil {
			return fmt.Errorf("failed to get ClusterKeycloak: %w", err)
		}

		if err := controllerutil.SetControllerReference(clusterKc, object, h.scheme); err != nil {
			return fmt.Errorf("failed to set controller reference for %s: %w", object.GetName(), err)
		}

		if err := h.client.Update(ctx, object); err != nil {
			return fmt.Errorf("failed to update keycloak owner reference %s: %w", clusterKc.GetName(), err)
		}

		return nil

	default:
		return fmt.Errorf("unknown keycloak kind: %s", kind)
	}
}