controllers/keycloakrealm/chain/factory.go (46 lines of code) (raw):

package chain import ( "context" "fmt" "reflect" "k8s.io/apimachinery/pkg/runtime" ctrl "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/client" keycloakApi "github.com/epam/edp-keycloak-operator/api/v1" "github.com/epam/edp-keycloak-operator/controllers/keycloakrealm/chain/handler" "github.com/epam/edp-keycloak-operator/pkg/client/keycloak" ) var log = ctrl.Log.WithName("realm_handler") func CreateDefChain(client client.Client, scheme *runtime.Scheme, hlp Helper) handler.RealmHandler { return PutRealm{ hlp: hlp, client: client, next: SetLabels{ client: client, next: PutUsers{ next: PutUsersRoles{ next: RealmSettings{ next: AuthFlow{ next: UserProfile{ next: ConfigureEmail{ client: client, }, }, }, }, }, }, }, } } func nextServeOrNil(ctx context.Context, next handler.RealmHandler, realm *keycloakApi.KeycloakRealm, kClient keycloak.Client) error { if next != nil { err := next.ServeRequest(ctx, realm, kClient) if err != nil { return fmt.Errorf("chain failed %s: %w", reflect.TypeOf(next).Name(), err) } return nil } log.Info("handling of realm has been finished", "realm name", realm.Spec.RealmName) return nil }