From 264cef7d12f63acf901eb8964d98ee3eb762f370 Mon Sep 17 00:00:00 2001 From: Julian Vanden Broeck Date: Fri, 26 Jun 2026 07:47:36 +0200 Subject: [PATCH 1/2] Fix default image to v0.0.3 on manifest Leftover from f0c7bc34a3fd591aebce7f517dc822da20a2e59e it might break plugin usage. --- kubernetes/prod/deployment-image-patch.yaml | 2 +- manifest.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/kubernetes/prod/deployment-image-patch.yaml b/kubernetes/prod/deployment-image-patch.yaml index e48efdf..65564fa 100644 --- a/kubernetes/prod/deployment-image-patch.yaml +++ b/kubernetes/prod/deployment-image-patch.yaml @@ -9,7 +9,7 @@ spec: spec: containers: - name: pgbackrest-controller - image: registry.hub.docker.com/dalibo/cnpg-pgbackrest-controller:0.0.2 + image: registry.hub.docker.com/dalibo/cnpg-pgbackrest-controller:0.0.3 env: - name: SIDECAR_IMAGE valueFrom: diff --git a/manifest.yaml b/manifest.yaml index df2a959..be834ae 100644 --- a/manifest.yaml +++ b/manifest.yaml @@ -1155,7 +1155,7 @@ spec: secretKeyRef: key: SIDECAR_EXPORTER_IMAGE name: plugin-pgbackrest-df48cbmd95 - image: registry.hub.docker.com/dalibo/cnpg-pgbackrest-controller:0.0.2 + image: registry.hub.docker.com/dalibo/cnpg-pgbackrest-controller:0.0.3 name: pgbackrest-controller ports: - containerPort: 9090 From 4ef65f3f77d944011fdedd24fe77c1331caafc10 Mon Sep 17 00:00:00 2001 From: Julian Vanden Broeck Date: Fri, 26 Jun 2026 09:43:19 +0200 Subject: [PATCH 2/2] Register metav1 types for CNPG & pgbackrest plugin On maintenance runnable client/service. --- internal/instance/manager.go | 3 ++ internal/instance/manager_test.go | 60 +++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 internal/instance/manager_test.go diff --git a/internal/instance/manager.go b/internal/instance/manager.go index b106e66..2e7751f 100644 --- a/internal/instance/manager.go +++ b/internal/instance/manager.go @@ -14,6 +14,7 @@ import ( cnpgv1 "github.com/cloudnative-pg/cloudnative-pg/api/v1" "github.com/spf13/viper" corev1 "k8s.io/api/core/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/types" @@ -118,5 +119,7 @@ func generateScheme(ctx context.Context) *runtime.Scheme { schemeLog := log.FromContext(ctx) schemeLog.Info("CNPG types registration", "schemeGroupVersion", schemeGroupVersion) + metav1.AddToGroupVersion(result, schemeGroupVersion) + return result } diff --git a/internal/instance/manager_test.go b/internal/instance/manager_test.go new file mode 100644 index 0000000..210ffdb --- /dev/null +++ b/internal/instance/manager_test.go @@ -0,0 +1,60 @@ +// SPDX-FileCopyrightText: 2026 Dalibo +// +// SPDX-License-Identifier: Apache-2.0 +package instance + +import ( + "context" + "testing" + + "github.com/spf13/viper" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +func TestGenerateScheme_RegistersMetaTypes(t *testing.T) { + viper.Reset() + group := "postgresql.cnpg.io" + version := "v1" + viper.Set("custom-cnpg-group", group) + viper.Set("custom-cnpg-version", version) + + ctx := context.Background() + scheme := generateScheme(ctx) + + if scheme == nil { + t.Fatal("expected scheme to not be nil") + } + + testsCases := []struct { + name string + gvk schema.GroupVersionKind + }{ + { + name: "CNPG Cluster Custom Resource Type", + gvk: schema.GroupVersionKind{Group: group, Version: version, Kind: "Cluster"}, + }, + { + name: "metav1 GetOptions under CNPG GroupVersion", + gvk: schema.GroupVersionKind{Group: group, Version: version, Kind: "GetOptions"}, + }, + { + name: "metav1 ListOptions under CNPG GroupVersion", + gvk: schema.GroupVersionKind{Group: group, Version: version, Kind: "ListOptions"}, + }, + } + + for _, tt := range testsCases { + t.Run(tt.name, func(t *testing.T) { + if !scheme.Recognizes(tt.gvk) { + t.Errorf( + "Scheme is missing registration for GVK: %v. Your fix failed to add it.", + tt.gvk, + ) + } + _, err := scheme.New(tt.gvk) + if err != nil { + t.Errorf("Failed to instantiate type for GVK %v: %v", tt.gvk, err) + } + }) + } +}