package database import ( "github.com/caos/orbos/pkg/kubernetes" "github.com/caos/orbos/pkg/tree" "github.com/caos/zitadel/operator/api/core" databasev1 "github.com/caos/zitadel/operator/api/database/v1" macherrs "k8s.io/apimachinery/pkg/api/errors" "k8s.io/apimachinery/pkg/api/meta" ) const ( Namespace = "caos-system" kind = "Database" apiVersion = "caos.ch/v1" Name = "database" ) func ReadCrd(k8sClient kubernetes.ClientInt) (*tree.Tree, error) { unstruct, err := k8sClient.GetNamespacedCRDResource(databasev1.GroupVersion.Group, databasev1.GroupVersion.Version, kind, Namespace, Name) if err != nil { if macherrs.IsNotFound(err) || meta.IsNoMatchError(err) { return nil, nil } return nil, err } return core.UnmarshalUnstructuredSpec(unstruct) } func WriteCrd(k8sClient kubernetes.ClientInt, t *tree.Tree) error { unstruct, err := core.MarshalToUnstructuredSpec(t) if err != nil { return err } unstruct.SetName(Name) unstruct.SetNamespace(Namespace) unstruct.SetKind(kind) unstruct.SetAPIVersion(apiVersion) return k8sClient.ApplyNamespacedCRDResource(databasev1.GroupVersion.Group, databasev1.GroupVersion.Version, kind, Namespace, Name, unstruct) }