in controllers/keycloakrealmcomponent/keycloakrealmcomponent_controller.go [249:292]
func (r *Reconcile) getParentID(
ctx context.Context,
component *keycloakApi.KeycloakRealmComponent,
kcRealmName string,
kClient keycloak.Client,
) (string, error) {
if component.Spec.ParentRef == nil {
return "", nil
}
if component.Spec.ParentRef.Kind == keycloakApi.KeycloakRealmKind {
parentRealm := &keycloakApi.KeycloakRealm{}
if err := r.client.Get(ctx, types.NamespacedName{Name: component.Spec.ParentRef.Name, Namespace: component.GetNamespace()}, parentRealm); err != nil {
return "", fmt.Errorf("unable to get parent kcRealmName: %w", err)
}
kcParentRealm, err := kClient.GetRealm(ctx, parentRealm.Spec.RealmName)
if err != nil {
return "", fmt.Errorf("unable to get parent kcRealmName: %w", err)
}
if kcParentRealm.ID == nil || *kcParentRealm.ID == "" {
return "", fmt.Errorf("kcRealmName id is empty")
}
return *kcParentRealm.ID, nil
}
if component.Spec.ParentRef.Kind == keycloakApi.KeycloakRealmComponentKind {
parentComponent := &keycloakApi.KeycloakRealmComponent{}
if err := r.client.Get(ctx, types.NamespacedName{Name: component.Spec.ParentRef.Name, Namespace: component.GetNamespace()}, parentComponent); err != nil {
return "", fmt.Errorf("unable to get parent component: %w", err)
}
kcParentComponent, err := kClient.GetComponent(ctx, kcRealmName, parentComponent.Spec.Name)
if err != nil {
return "", fmt.Errorf("unable to get parent component: %w", err)
}
return kcParentComponent.ID, nil
}
return "", fmt.Errorf("parent kind %s is not supported", component.Spec.ParentRef.Kind)
}