controllers/keycloakrealmgroup/terminator.go (39 lines of code) (raw):

package keycloakrealmgroup import ( "context" "fmt" ctrl "sigs.k8s.io/controller-runtime" "github.com/epam/edp-keycloak-operator/pkg/client/keycloak" "github.com/epam/edp-keycloak-operator/pkg/client/keycloak/adapter" ) type terminator struct { kClient keycloak.Client realmName, groupName string preserveResourcesOnDeletion bool } func (t *terminator) DeleteResource(ctx context.Context) error { log := ctrl.LoggerFrom(ctx).WithValues("realm_name", t.realmName, "group_name", t.groupName) if t.preserveResourcesOnDeletion { log.Info("PreserveResourcesOnDeletion is enabled, skipping deletion.") return nil } log.Info("Start deleting group") if err := t.kClient.DeleteGroup(ctx, t.realmName, t.groupName); err != nil { if adapter.IsErrNotFound(err) { log.Info("Group not found, skipping deletion") return nil } return fmt.Errorf("unable to delete group %w", err) } log.Info("Group has been deleted") return nil } func makeTerminator(kClient keycloak.Client, realmName, groupName string, preserveResourcesOnDeletion bool) *terminator { return &terminator{ kClient: kClient, realmName: realmName, groupName: groupName, preserveResourcesOnDeletion: preserveResourcesOnDeletion, } }