From edce57e36ada203d7b621500f096fa23fb44d1e5 Mon Sep 17 00:00:00 2001 From: George Kechagias Date: Thu, 23 Jan 2025 10:45:53 +0200 Subject: [PATCH] use new custom webhook defaulter --- .../controller/postgrescluster/controller.go | 2 +- .../postgrescluster/instance_test.go | 6 ++++-- .../postgrescluster/pgbouncer_test.go | 3 ++- .../postgrescluster/pgmonitor_test.go | 6 ++++-- .../standalone_pgadmin/controller.go | 2 +- internal/patroni/config_test.go | 13 ++++++++---- internal/patroni/rbac_test.go | 4 +++- internal/patroni/reconcile_test.go | 6 ++++-- internal/pgadmin/reconcile_test.go | 10 ++++++--- internal/pgbackrest/rbac_test.go | 4 +++- internal/pgbackrest/reconcile_test.go | 15 ++++++++----- internal/pgbouncer/config_test.go | 4 +++- internal/pgbouncer/reconcile_test.go | 12 +++++++---- internal/postgres/reconcile_test.go | 6 ++++-- .../v2/perconapgcluster_types.go | 3 ++- .../v1beta1/crunchy_bridgecluster_types.go | 8 +++++-- .../v1beta1/postgrescluster_test.go | 21 +++++++++++++------ .../v1beta1/postgrescluster_types.go | 8 +++++-- .../v1beta1/standalone_pgadmin_types.go | 8 +++++-- 19 files changed, 98 insertions(+), 43 deletions(-) diff --git a/internal/controller/postgrescluster/controller.go b/internal/controller/postgrescluster/controller.go index ec3f3b9b5c..cfef210e83 100644 --- a/internal/controller/postgrescluster/controller.go +++ b/internal/controller/postgrescluster/controller.go @@ -95,7 +95,7 @@ func (r *Reconciler) Reconcile( // Set any defaults that may not have been stored in the API. No DeepCopy // is necessary because controller-runtime makes a copy before returning // from its cache. - cluster.Default() + _ = cluster.Default(ctx, nil) if cluster.Spec.OpenShift == nil { cluster.Spec.OpenShift = &r.IsOpenShift diff --git a/internal/controller/postgrescluster/instance_test.go b/internal/controller/postgrescluster/instance_test.go index 74f6593384..c4067ad303 100644 --- a/internal/controller/postgrescluster/instance_test.go +++ b/internal/controller/postgrescluster/instance_test.go @@ -529,7 +529,8 @@ func TestAddPGBackRestToInstancePodSpec(t *testing.T) { ctx := context.Background() cluster := v1beta1.PostgresCluster{} cluster.Name = "hippo" - cluster.Default() + err := cluster.Default(ctx, nil) + assert.NilError(t, err) cluster.SetLabels(map[string]string{ naming.LabelVersion: "2.5.0", }) @@ -1725,7 +1726,8 @@ func TestGenerateInstanceStatefulSetIntent(t *testing.T) { cluster = testCluster() } - cluster.Default() + err := cluster.Default(context.Background(), nil) + assert.NilError(t, err) cluster.UID = types.UID("hippouid") cluster.Namespace = test.name + "-ns" cluster.Spec.Shutdown = &test.ip.shutdown diff --git a/internal/controller/postgrescluster/pgbouncer_test.go b/internal/controller/postgrescluster/pgbouncer_test.go index 83df0662b3..9f92ee1857 100644 --- a/internal/controller/postgrescluster/pgbouncer_test.go +++ b/internal/controller/postgrescluster/pgbouncer_test.go @@ -409,7 +409,8 @@ namespace: ns3 cluster.Spec.Proxy = &v1beta1.PostgresProxySpec{ PGBouncer: &v1beta1.PGBouncerPodSpec{}, } - cluster.Default() + err := cluster.Default(context.Background(), nil) + assert.NilError(t, err) configmap := &corev1.ConfigMap{} configmap.Name = "some-cm2" diff --git a/internal/controller/postgrescluster/pgmonitor_test.go b/internal/controller/postgrescluster/pgmonitor_test.go index f8376c0cc1..b38d874ae7 100644 --- a/internal/controller/postgrescluster/pgmonitor_test.go +++ b/internal/controller/postgrescluster/pgmonitor_test.go @@ -713,7 +713,8 @@ func TestReconcileMonitoringSecret(t *testing.T) { reconciler := &Reconciler{Client: cc, Owner: client.FieldOwner(t.Name())} cluster := testCluster() - cluster.Default() + err := cluster.Default(context.Background(), nil) + assert.NilError(t, err) cluster.UID = types.UID("hippouid") cluster.Namespace = setupNamespace(t, cc).Name @@ -787,7 +788,8 @@ func TestReconcileExporterQueriesConfig(t *testing.T) { reconciler := &Reconciler{Client: cc, Owner: client.FieldOwner(t.Name())} cluster := testCluster() - cluster.Default() + err := cluster.Default(context.Background(), nil) + assert.NilError(t, err) cluster.UID = types.UID("hippouid") cluster.Namespace = setupNamespace(t, cc).Name diff --git a/internal/controller/standalone_pgadmin/controller.go b/internal/controller/standalone_pgadmin/controller.go index b4403ab7a3..f94000f440 100644 --- a/internal/controller/standalone_pgadmin/controller.go +++ b/internal/controller/standalone_pgadmin/controller.go @@ -105,7 +105,7 @@ func (r *PGAdminReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ct log.V(1).Info("Reconciling pgAdmin") // Set defaults if unset - pgAdmin.Default() + _ = pgAdmin.Default(ctx, nil) var ( configmap *corev1.ConfigMap diff --git a/internal/patroni/config_test.go b/internal/patroni/config_test.go index 24a8cc6858..45fd0dfc7d 100644 --- a/internal/patroni/config_test.go +++ b/internal/patroni/config_test.go @@ -5,6 +5,7 @@ package patroni import ( + "context" "os" "os/exec" "path/filepath" @@ -29,7 +30,8 @@ func TestClusterYAML(t *testing.T) { t.Run("PG version defaulted", func(t *testing.T) { cluster := new(v1beta1.PostgresCluster) - cluster.Default() + err := cluster.Default(context.Background(), nil) + assert.NilError(t, err) cluster.Namespace = "some-namespace" cluster.Name = "cluster-name" @@ -86,7 +88,8 @@ watchdog: t.Run(">PG10", func(t *testing.T) { cluster := new(v1beta1.PostgresCluster) - cluster.Default() + err := cluster.Default(context.Background(), nil) + assert.NilError(t, err) cluster.Namespace = "some-namespace" cluster.Name = "cluster-name" cluster.Spec.PostgresVersion = 14 @@ -759,7 +762,8 @@ func TestDynamicConfiguration(t *testing.T) { if cluster.Spec.PostgresVersion == 0 { cluster.Spec.PostgresVersion = 14 } - cluster.Default() + err := cluster.Default(context.Background(), nil) + assert.NilError(t, err) actual := DynamicConfiguration(cluster, tt.input, tt.hbas, tt.params) assert.DeepEqual(t, tt.expected, actual) }) @@ -792,7 +796,8 @@ func TestInstanceEnvironment(t *testing.T) { t.Parallel() cluster := new(v1beta1.PostgresCluster) - cluster.Default() + err := cluster.Default(context.Background(), nil) + assert.NilError(t, err) cluster.Spec.PostgresVersion = 12 leaderService := new(corev1.Service) podService := new(corev1.Service) diff --git a/internal/patroni/rbac_test.go b/internal/patroni/rbac_test.go index 74f223cd97..0bef7b4904 100644 --- a/internal/patroni/rbac_test.go +++ b/internal/patroni/rbac_test.go @@ -5,6 +5,7 @@ package patroni import ( + "context" "testing" "gotest.tools/v3/assert" @@ -28,7 +29,8 @@ func isUniqueAndSorted(slice []string) bool { func TestPermissions(t *testing.T) { cluster := new(v1beta1.PostgresCluster) - cluster.Default() + err := cluster.Default(context.Background(), nil) + assert.NilError(t, err) t.Run("Upstream", func(t *testing.T) { permissions := Permissions(cluster) diff --git a/internal/patroni/reconcile_test.go b/internal/patroni/reconcile_test.go index ec469a00d4..c7d60a1e9e 100644 --- a/internal/patroni/reconcile_test.go +++ b/internal/patroni/reconcile_test.go @@ -27,7 +27,8 @@ func TestClusterConfigMap(t *testing.T) { pgHBAs := postgres.HBAs{} pgParameters := postgres.Parameters{} - cluster.Default() + err := cluster.Default(context.Background(), nil) + assert.NilError(t, err) config := new(corev1.ConfigMap) assert.NilError(t, ClusterConfigMap(ctx, cluster, pgHBAs, pgParameters, config)) @@ -114,7 +115,8 @@ func TestInstancePod(t *testing.T) { t.Parallel() cluster := new(v1beta1.PostgresCluster) - cluster.Default() + err := cluster.Default(context.Background(), nil) + assert.NilError(t, err) cluster.Name = "some-such" cluster.Spec.PostgresVersion = 11 cluster.Spec.Image = "image" diff --git a/internal/pgadmin/reconcile_test.go b/internal/pgadmin/reconcile_test.go index 3332fc8760..5e9e051c0b 100644 --- a/internal/pgadmin/reconcile_test.go +++ b/internal/pgadmin/reconcile_test.go @@ -5,6 +5,7 @@ package pgadmin import ( + "context" "testing" "gotest.tools/v3/assert" @@ -33,7 +34,8 @@ func TestConfigMap(t *testing.T) { t.Run("Defaults", func(t *testing.T) { cluster.Spec.UserInterface = new(v1beta1.UserInterfaceSpec) cluster.Spec.UserInterface.PGAdmin = new(v1beta1.PGAdminPodSpec) - cluster.Default() + err := cluster.Default(context.Background(), nil) + assert.NilError(t, err) assert.NilError(t, ConfigMap(cluster, config)) @@ -52,7 +54,8 @@ pgadmin-settings.json: | "some": "thing", "UPPER_CASE": false, } - cluster.Default() + err := cluster.Default(context.Background(), nil) + assert.NilError(t, err) assert.NilError(t, ConfigMap(cluster, config)) @@ -92,7 +95,8 @@ func TestPod(t *testing.T) { t.Run("Defaults", func(t *testing.T) { cluster.Spec.UserInterface = new(v1beta1.UserInterfaceSpec) cluster.Spec.UserInterface.PGAdmin = new(v1beta1.PGAdminPodSpec) - cluster.Default() + err := cluster.Default(context.Background(), nil) + assert.NilError(t, err) call() diff --git a/internal/pgbackrest/rbac_test.go b/internal/pgbackrest/rbac_test.go index 7326a58a80..8cc4ee3617 100644 --- a/internal/pgbackrest/rbac_test.go +++ b/internal/pgbackrest/rbac_test.go @@ -5,6 +5,7 @@ package pgbackrest import ( + "context" "testing" "gotest.tools/v3/assert" @@ -28,7 +29,8 @@ func isUniqueAndSorted(slice []string) bool { func TestPermissions(t *testing.T) { cluster := new(v1beta1.PostgresCluster) - cluster.Default() + err := cluster.Default(context.Background(), nil) + assert.NilError(t, err) permissions := Permissions(cluster) for _, rule := range permissions { diff --git a/internal/pgbackrest/reconcile_test.go b/internal/pgbackrest/reconcile_test.go index 7d5bd2e380..1ceaade9b9 100644 --- a/internal/pgbackrest/reconcile_test.go +++ b/internal/pgbackrest/reconcile_test.go @@ -178,7 +178,8 @@ func TestAddConfigToInstancePod(t *testing.T) { }, } cluster.Name = "hippo" - cluster.Default() + err := cluster.Default(context.Background(), nil) + assert.NilError(t, err) pod := corev1.PodSpec{ Containers: []corev1.Container{ @@ -332,7 +333,8 @@ func TestAddConfigToInstancePod(t *testing.T) { func TestAddConfigToRepoPod(t *testing.T) { cluster := v1beta1.PostgresCluster{} cluster.Name = "hippo" - cluster.Default() + err := cluster.Default(context.Background(), nil) + assert.NilError(t, err) pod := corev1.PodSpec{ Containers: []corev1.Container{ @@ -405,7 +407,8 @@ func TestAddConfigToRepoPod(t *testing.T) { func TestAddConfigToRestorePod(t *testing.T) { cluster := v1beta1.PostgresCluster{} cluster.Name = "source" - cluster.Default() + err := cluster.Default(context.Background(), nil) + assert.NilError(t, err) pod := corev1.PodSpec{ Containers: []corev1.Container{ @@ -575,7 +578,8 @@ func TestAddServerToInstancePod(t *testing.T) { ctx := context.Background() cluster := v1beta1.PostgresCluster{} cluster.Name = "hippo" - cluster.Default() + err := cluster.Default(context.Background(), nil) + assert.NilError(t, err) cluster.SetLabels(map[string]string{ naming.LabelVersion: "2.5.0", }) @@ -838,7 +842,8 @@ func TestAddServerToRepoPod(t *testing.T) { ctx := context.Background() cluster := v1beta1.PostgresCluster{} cluster.Name = "hippo" - cluster.Default() + err := cluster.Default(context.Background(), nil) + assert.NilError(t, err) cluster.SetLabels(map[string]string{ naming.LabelVersion: "2.5.0", }) diff --git a/internal/pgbouncer/config_test.go b/internal/pgbouncer/config_test.go index 51dc76b288..de2068d063 100644 --- a/internal/pgbouncer/config_test.go +++ b/internal/pgbouncer/config_test.go @@ -5,6 +5,7 @@ package pgbouncer import ( + "context" "os" "os/exec" "path/filepath" @@ -43,7 +44,8 @@ func TestClusterINI(t *testing.T) { t.Parallel() cluster := new(v1beta1.PostgresCluster) - cluster.Default() + err := cluster.Default(context.Background(), nil) + assert.NilError(t, err) cluster.Name = "foo-baz" *cluster.Spec.Port = 9999 diff --git a/internal/pgbouncer/reconcile_test.go b/internal/pgbouncer/reconcile_test.go index cc0fad9bfa..0e88177461 100644 --- a/internal/pgbouncer/reconcile_test.go +++ b/internal/pgbouncer/reconcile_test.go @@ -36,7 +36,8 @@ func TestConfigMap(t *testing.T) { cluster.Spec.Proxy = new(v1beta1.PostgresProxySpec) cluster.Spec.Proxy.PGBouncer = new(v1beta1.PGBouncerPodSpec) - cluster.Default() + err := cluster.Default(context.Background(), nil) + assert.NilError(t, err) ConfigMap(cluster, config) @@ -71,7 +72,8 @@ func TestSecret(t *testing.T) { cluster.Spec.Proxy = new(v1beta1.PostgresProxySpec) cluster.Spec.Proxy.PGBouncer = new(v1beta1.PGBouncerPodSpec) - cluster.Default() + err = cluster.Default(context.Background(), nil) + assert.NilError(t, err) constant := existing.DeepCopy() assert.NilError(t, Secret(ctx, cluster, root, existing, service, intent)) @@ -120,7 +122,8 @@ func TestPod(t *testing.T) { t.Run("Defaults", func(t *testing.T) { cluster.Spec.Proxy = new(v1beta1.PostgresProxySpec) cluster.Spec.Proxy.PGBouncer = new(v1beta1.PGBouncerPodSpec) - cluster.Default() + err := cluster.Default(context.Background(), nil) + assert.NilError(t, err) call() @@ -487,7 +490,8 @@ func TestPostgreSQL(t *testing.T) { t.Run("Enabled", func(t *testing.T) { cluster.Spec.Proxy = new(v1beta1.PostgresProxySpec) cluster.Spec.Proxy.PGBouncer = new(v1beta1.PGBouncerPodSpec) - cluster.Default() + err := cluster.Default(context.Background(), nil) + assert.NilError(t, err) PostgreSQL(cluster, hbas) diff --git a/internal/postgres/reconcile_test.go b/internal/postgres/reconcile_test.go index edcfdeb499..cc6bc8b46d 100644 --- a/internal/postgres/reconcile_test.go +++ b/internal/postgres/reconcile_test.go @@ -64,7 +64,8 @@ func TestInstancePod(t *testing.T) { ctx := context.Background() cluster := new(v1beta1.PostgresCluster) - cluster.Default() + err := cluster.Default(context.Background(), nil) + assert.NilError(t, err) cluster.Spec.ImagePullPolicy = corev1.PullAlways cluster.Spec.PostgresVersion = 11 cluster.SetLabels(map[string]string{ @@ -711,7 +712,8 @@ volumes: func TestPodSecurityContext(t *testing.T) { cluster := new(v1beta1.PostgresCluster) - cluster.Default() + err := cluster.Default(context.Background(), nil) + assert.NilError(t, err) assert.Assert(t, cmp.MarshalMatches(PodSecurityContext(cluster), ` fsGroup: 26 diff --git a/pkg/apis/pgv2.percona.com/v2/perconapgcluster_types.go b/pkg/apis/pgv2.percona.com/v2/perconapgcluster_types.go index a02ed7a0e8..9793480283 100644 --- a/pkg/apis/pgv2.percona.com/v2/perconapgcluster_types.go +++ b/pkg/apis/pgv2.percona.com/v2/perconapgcluster_types.go @@ -256,7 +256,8 @@ func (cr *PerconaPGCluster) ToCrunchy(ctx context.Context, postgresCluster *crun return nil, err } - postgresCluster.Default() + // omitting error because it is always nil + _ = postgresCluster.Default(ctx, postgresCluster) annotations := make(map[string]string) for k, v := range cr.Annotations { diff --git a/pkg/apis/postgres-operator.crunchydata.com/v1beta1/crunchy_bridgecluster_types.go b/pkg/apis/postgres-operator.crunchydata.com/v1beta1/crunchy_bridgecluster_types.go index 801e75f51d..61cf886e4e 100644 --- a/pkg/apis/postgres-operator.crunchydata.com/v1beta1/crunchy_bridgecluster_types.go +++ b/pkg/apis/postgres-operator.crunchydata.com/v1beta1/crunchy_bridgecluster_types.go @@ -5,8 +5,11 @@ package v1beta1 import ( + "context" + "k8s.io/apimachinery/pkg/api/resource" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" ) // CrunchyBridgeClusterSpec defines the desired state of CrunchyBridgeCluster @@ -205,16 +208,17 @@ type CrunchyBridgeCluster struct { Status CrunchyBridgeClusterStatus `json:"status,omitempty"` } -// Default implements "sigs.k8s.io/controller-runtime/pkg/webhook.Defaulter" so +// Default implements webhook.CustomDefaulter so // a webhook can be registered for the type. // - https://book.kubebuilder.io/reference/webhook-overview.html -func (c *CrunchyBridgeCluster) Default() { +func (c *CrunchyBridgeCluster) Default(_ context.Context, _ runtime.Object) error { if len(c.APIVersion) == 0 { c.APIVersion = GroupVersion.String() } if len(c.Kind) == 0 { c.Kind = "CrunchyBridgeCluster" } + return nil } // +kubebuilder:object:root=true diff --git a/pkg/apis/postgres-operator.crunchydata.com/v1beta1/postgrescluster_test.go b/pkg/apis/postgres-operator.crunchydata.com/v1beta1/postgrescluster_test.go index d9e485f1c6..bb17d307c7 100644 --- a/pkg/apis/postgres-operator.crunchydata.com/v1beta1/postgrescluster_test.go +++ b/pkg/apis/postgres-operator.crunchydata.com/v1beta1/postgrescluster_test.go @@ -5,23 +5,28 @@ package v1beta1 import ( + "context" "reflect" "strings" "testing" + "github.com/stretchr/testify/require" + "gotest.tools/v3/assert" "sigs.k8s.io/controller-runtime/pkg/webhook" "sigs.k8s.io/yaml" ) func TestPostgresClusterWebhooks(t *testing.T) { - var _ webhook.Defaulter = new(PostgresCluster) + var _ webhook.CustomDefaulter = &PostgresCluster{} } func TestPostgresClusterDefault(t *testing.T) { + ctx := context.Background() t.Run("TypeMeta", func(t *testing.T) { var cluster PostgresCluster - cluster.Default() + err := cluster.Default(ctx, nil) + assert.NilError(t, err) assert.Equal(t, cluster.APIVersion, GroupVersion.String()) assert.Equal(t, cluster.Kind, reflect.TypeOf(cluster).Name()) @@ -29,7 +34,8 @@ func TestPostgresClusterDefault(t *testing.T) { t.Run("no instance sets", func(t *testing.T) { var cluster PostgresCluster - cluster.Default() + err := cluster.Default(ctx, nil) + assert.NilError(t, err) b, err := yaml.Marshal(cluster) assert.NilError(t, err) @@ -63,7 +69,8 @@ status: t.Run("one instance set", func(t *testing.T) { var cluster PostgresCluster cluster.Spec.InstanceSets = []PostgresInstanceSetSpec{{}} - cluster.Default() + err := cluster.Default(ctx, nil) + assert.NilError(t, err) b, err := yaml.Marshal(cluster) assert.NilError(t, err) @@ -102,7 +109,8 @@ status: t.Run("empty proxy", func(t *testing.T) { var cluster PostgresCluster cluster.Spec.Proxy = new(PostgresProxySpec) - cluster.Default() + err := cluster.Default(ctx, nil) + require.NoError(t, err) b, err := yaml.Marshal(cluster.Spec.Proxy) assert.NilError(t, err) @@ -112,7 +120,8 @@ status: t.Run("PgBouncer proxy", func(t *testing.T) { var cluster PostgresCluster cluster.Spec.Proxy = &PostgresProxySpec{PGBouncer: &PGBouncerPodSpec{}} - cluster.Default() + err := cluster.Default(ctx, nil) + require.NoError(t, err) b, err := yaml.Marshal(cluster.Spec.Proxy) assert.NilError(t, err) diff --git a/pkg/apis/postgres-operator.crunchydata.com/v1beta1/postgrescluster_types.go b/pkg/apis/postgres-operator.crunchydata.com/v1beta1/postgrescluster_types.go index 391f68cb70..4cc53cba9f 100644 --- a/pkg/apis/postgres-operator.crunchydata.com/v1beta1/postgrescluster_types.go +++ b/pkg/apis/postgres-operator.crunchydata.com/v1beta1/postgrescluster_types.go @@ -5,12 +5,14 @@ package v1beta1 import ( + "context" "fmt" gover "github.com/hashicorp/go-version" "github.com/pkg/errors" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/util/intstr" pNaming "github.com/percona/percona-postgresql-operator/percona/naming" @@ -690,10 +692,10 @@ type PostgresCluster struct { Status PostgresClusterStatus `json:"status,omitempty"` } -// Default implements "sigs.k8s.io/controller-runtime/pkg/webhook.Defaulter" so +// Default implements webhook.CustomDefaulter so // a webhook can be registered for the type. // - https://book.kubebuilder.io/reference/webhook-overview.html -func (c *PostgresCluster) Default() { +func (c *PostgresCluster) Default(_ context.Context, _ runtime.Object) error { if len(c.APIVersion) == 0 { c.APIVersion = GroupVersion.String() } @@ -701,6 +703,8 @@ func (c *PostgresCluster) Default() { c.Kind = "PostgresCluster" } c.Spec.Default() + + return nil } // +kubebuilder:object:root=true diff --git a/pkg/apis/postgres-operator.crunchydata.com/v1beta1/standalone_pgadmin_types.go b/pkg/apis/postgres-operator.crunchydata.com/v1beta1/standalone_pgadmin_types.go index 4fbc90a3b9..7a17bf7b88 100644 --- a/pkg/apis/postgres-operator.crunchydata.com/v1beta1/standalone_pgadmin_types.go +++ b/pkg/apis/postgres-operator.crunchydata.com/v1beta1/standalone_pgadmin_types.go @@ -5,8 +5,11 @@ package v1beta1 import ( + "context" + corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" ) // PGAdminConfiguration represents pgAdmin configuration files. @@ -193,16 +196,17 @@ type PGAdmin struct { Status PGAdminStatus `json:"status,omitempty"` } -// Default implements "sigs.k8s.io/controller-runtime/pkg/webhook.Defaulter" so +// Default implements webhook.CustomDefaulter so // a webhook can be registered for the type. // - https://book.kubebuilder.io/reference/webhook-overview.html -func (p *PGAdmin) Default() { +func (p *PGAdmin) Default(_ context.Context, _ runtime.Object) error { if len(p.APIVersion) == 0 { p.APIVersion = GroupVersion.String() } if len(p.Kind) == 0 { p.Kind = "PGAdmin" } + return nil } //+kubebuilder:object:root=true