func()

in controllers/keycloakrealmgroup/keycloakrealmgroup_controller.go [118:161]


func (r *ReconcileKeycloakRealmGroup) tryReconcile(ctx context.Context, keycloakRealmGroup *keycloakApi.KeycloakRealmGroup) error {
	err := r.helper.SetRealmOwnerRef(ctx, keycloakRealmGroup)
	if err != nil {
		return fmt.Errorf("unable to set realm owner ref: %w", err)
	}

	kClient, err := r.helper.CreateKeycloakClientFromRealmRef(ctx, keycloakRealmGroup)
	if err != nil {
		return fmt.Errorf("unable to create keycloak client from realm ref: %w", err)
	}

	realm, err := r.helper.GetKeycloakRealmFromRef(ctx, keycloakRealmGroup, kClient)
	if err != nil {
		return fmt.Errorf("unable to get keycloak realm from ref: %w", err)
	}

	deleted, err := r.helper.TryToDelete(
		ctx,
		keycloakRealmGroup,
		makeTerminator(
			kClient,
			gocloak.PString(realm.Realm),
			keycloakRealmGroup.Spec.Name,
			objectmeta.PreserveResourcesOnDeletion(keycloakRealmGroup),
		),
		keyCloakRealmGroupOperatorFinalizerName,
	)
	if err != nil {
		return fmt.Errorf("failed to delete keycloak realm group: %w", err)
	}

	if deleted {
		return nil
	}

	id, err := kClient.SyncRealmGroup(ctx, gocloak.PString(realm.Realm), &keycloakRealmGroup.Spec)
	if err != nil {
		return fmt.Errorf("unable to sync realm group: %w", err)
	}

	keycloakRealmGroup.Status.ID = id

	return nil
}