All checks were successful
Build and Publish / build-release (push) Successful in 8m29s
74 lines
2.1 KiB
Go
74 lines
2.1 KiB
Go
package core
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
|
|
zitadelv1alpha1 "gitea.corredorconect.com/software-engineering/zitadel-resources-operator/api/v1alpha1"
|
|
zitadelClient "gitea.corredorconect.com/software-engineering/zitadel-resources-operator/pkg/zitadel"
|
|
apierrors "k8s.io/apimachinery/pkg/api/errors"
|
|
"sigs.k8s.io/controller-runtime/pkg/client"
|
|
)
|
|
|
|
type CoreFinalizer struct {
|
|
Client client.Client
|
|
RefResolver *zitadelv1alpha1.RefResolver
|
|
|
|
WrappedFinalizer WrappedCoreFinalizer
|
|
}
|
|
|
|
func NewCoreFinalizer(client client.Client, wf WrappedCoreFinalizer) Finalizer {
|
|
return &CoreFinalizer{
|
|
Client: client,
|
|
RefResolver: zitadelv1alpha1.NewRefResolver(client),
|
|
WrappedFinalizer: wf,
|
|
}
|
|
}
|
|
|
|
func (tf *CoreFinalizer) AddFinalizer(ctx context.Context) error {
|
|
if tf.WrappedFinalizer.ContainsFinalizer() {
|
|
return nil
|
|
}
|
|
if err := tf.WrappedFinalizer.AddFinalizer(ctx); err != nil {
|
|
return fmt.Errorf("error adding finalizer in TemplateFinalizer: %v", err)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (tf *CoreFinalizer) Finalize(ctx context.Context, resource Resource) error {
|
|
if !tf.WrappedFinalizer.ContainsFinalizer() {
|
|
return nil
|
|
}
|
|
|
|
connectionRef, err := resource.ConnectionRef(ctx, tf.RefResolver)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
connection, err := tf.RefResolver.ConnectionRef(ctx, connectionRef, resource.GetNamespace())
|
|
if err != nil {
|
|
if apierrors.IsNotFound(err) {
|
|
if err := tf.WrappedFinalizer.RemoveFinalizer(ctx); err != nil {
|
|
return fmt.Errorf("error removing %s finalizer: %v", resource.GetName(), err)
|
|
}
|
|
return nil
|
|
}
|
|
return fmt.Errorf("error getting Cluster: %v", err)
|
|
}
|
|
|
|
ztdClient, err := zitadelClient.NewV2Client(ctx, connection, *tf.RefResolver)
|
|
if err != nil {
|
|
return fmt.Errorf("error connecting to Zitadel: %v", err)
|
|
}
|
|
defer ztdClient.Close()
|
|
|
|
if err := tf.WrappedFinalizer.Reconcile(ctx, ztdClient); err != nil {
|
|
return fmt.Errorf("error reconciling in TemplateFinalizer: %v", err)
|
|
}
|
|
|
|
if err := tf.WrappedFinalizer.RemoveFinalizer(ctx); err != nil {
|
|
return fmt.Errorf("error removing finalizer in TemplateFinalizer: %v", err)
|
|
}
|
|
return nil
|
|
}
|