controllers/clusterkeycloakrealm/chain/put_realm.go (40 lines of code) (raw):

package chain import ( "context" "fmt" ctrl "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/client" "github.com/epam/edp-keycloak-operator/api/v1alpha1" "github.com/epam/edp-keycloak-operator/pkg/client/keycloak" "github.com/epam/edp-keycloak-operator/pkg/client/keycloak/dto" ) type PutRealm struct { client client.Client } // NewPutRealm returns PutRealm chain handler. func NewPutRealm(client client.Client) *PutRealm { return &PutRealm{client: client} } func (h PutRealm) ServeRequest(ctx context.Context, realm *v1alpha1.ClusterKeycloakRealm, kClient keycloak.Client) error { log := ctrl.LoggerFrom(ctx) log.Info("Start putting realm") rDto := convertSpecToRealm(&realm.Spec) exist, err := kClient.ExistRealm(realm.Spec.RealmName) if err != nil { return fmt.Errorf("failed to check realm existence: %w", err) } if exist { log.Info("Realm already exists") return nil } err = kClient.CreateRealmWithDefaultConfig(rDto) if err != nil { return fmt.Errorf("failed to create realm: %w", err) } log.Info("Realm has been created") return nil } func convertSpecToRealm(spec *v1alpha1.ClusterKeycloakRealmSpec) *dto.Realm { return &dto.Realm{ Name: spec.RealmName, } }