in controllers/helper/controller_helper.go [175:224]
func (h *Helper) SetRealmOwnerRef(ctx context.Context, object ObjectWithRealmRef) error {
if metav1.GetControllerOf(object) != nil {
return nil
}
kind := object.GetRealmRef().Kind
name := object.GetRealmRef().Name
switch kind {
case keycloakApi.KeycloakRealmKind:
realm := &keycloakApi.KeycloakRealm{}
if err := h.client.Get(ctx, types.NamespacedName{
Namespace: object.GetNamespace(),
Name: name,
}, realm); err != nil {
return fmt.Errorf("failed to get KeycloakRealm: %w", err)
}
if err := controllerutil.SetControllerReference(realm, 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 realm owner reference %s: %w", realm.GetName(), err)
}
return nil
case keycloakAlpha.ClusterKeycloakRealmKind:
clusterRealm := &keycloakAlpha.ClusterKeycloakRealm{}
if err := h.client.Get(ctx, types.NamespacedName{
Name: name,
}, clusterRealm); err != nil {
return fmt.Errorf("failed to get ClusterKeycloakRealm: %w", err)
}
if err := controllerutil.SetControllerReference(clusterRealm, object, h.scheme); err != nil {
return fmt.Errorf("unable 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 realm owner reference %s: %w", clusterRealm.GetName(), err)
}
return nil
default:
return fmt.Errorf("unknown realm kind: %s", kind)
}
}