From fdb9c495f73a761cb0077fd809537f7f93db0338 Mon Sep 17 00:00:00 2001 From: Leonardo Cecchi Date: Mon, 4 May 2026 17:34:53 +0200 Subject: [PATCH] chore: avoid using SchemeBuilder Signed-off-by: Leonardo Cecchi --- .golangci.yml | 2 +- api/v1/groupversion_info.go | 20 ++++++++++--------- api/v1/objectstore_types.go | 4 ---- api/v1/zz_generated.deepcopy.go | 2 +- internal/cnpgi/common/scheme.go | 13 ++++++------ .../instance/internal/client/client_test.go | 2 +- internal/cnpgi/instance/metrics_test.go | 2 +- internal/cnpgi/operator/lifecycle_test.go | 6 +++--- internal/cnpgi/operator/manager.go | 2 +- internal/cnpgi/operator/rbac/ensure_test.go | 2 +- .../controller/objectstore_controller_test.go | 2 +- internal/scheme/cnpg.go | 12 +++++------ test/e2e/internal/client/client.go | 5 ++--- 13 files changed, 34 insertions(+), 40 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index a4cce38..fbff241 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -16,7 +16,7 @@ linters: - gocyclo - goheader - gomoddirectives - - gomodguard + - gomodguard_v2 - goprintffuncname - gosec - govet diff --git a/api/v1/groupversion_info.go b/api/v1/groupversion_info.go index d0e2f09..bc99ba2 100644 --- a/api/v1/groupversion_info.go +++ b/api/v1/groupversion_info.go @@ -20,17 +20,19 @@ SPDX-License-Identifier: Apache-2.0 package v1 import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" - "sigs.k8s.io/controller-runtime/pkg/scheme" ) -var ( - // GroupVersion is group version used to register these objects. - GroupVersion = schema.GroupVersion{Group: "barmancloud.cnpg.io", Version: "v1"} +// GroupVersion is group version used to register these objects. +var GroupVersion = schema.GroupVersion{Group: "barmancloud.cnpg.io", Version: "v1"} - // SchemeBuilder is used to add go types to the GroupVersionKind scheme. - SchemeBuilder = &scheme.Builder{GroupVersion: GroupVersion} +// AddKnownTypes add to the passed schema the Kubernetes types +// exposed by this package. +func AddKnownTypes(scheme *runtime.Scheme) { + scheme.AddKnownTypes(GroupVersion, + &ObjectStore{}, &ObjectStoreList{}) - // AddToScheme adds the types in this group-version to the given scheme. - AddToScheme = SchemeBuilder.AddToScheme -) + metav1.AddToGroupVersion(scheme, GroupVersion) +} diff --git a/api/v1/objectstore_types.go b/api/v1/objectstore_types.go index f179af9..928d52c 100644 --- a/api/v1/objectstore_types.go +++ b/api/v1/objectstore_types.go @@ -124,7 +124,3 @@ type ObjectStoreList struct { metav1.ListMeta `json:"metadata,omitempty"` Items []ObjectStore `json:"items"` } - -func init() { - SchemeBuilder.Register(&ObjectStore{}, &ObjectStoreList{}) -} diff --git a/api/v1/zz_generated.deepcopy.go b/api/v1/zz_generated.deepcopy.go index 05f7e61..09f115f 100644 --- a/api/v1/zz_generated.deepcopy.go +++ b/api/v1/zz_generated.deepcopy.go @@ -25,7 +25,7 @@ package v1 import ( corev1 "k8s.io/api/core/v1" - runtime "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime" ) // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. diff --git a/internal/cnpgi/common/scheme.go b/internal/cnpgi/common/scheme.go index 7aa6b74..8f74015 100644 --- a/internal/cnpgi/common/scheme.go +++ b/internal/cnpgi/common/scheme.go @@ -29,7 +29,6 @@ import ( "k8s.io/apimachinery/pkg/runtime/schema" utilruntime "k8s.io/apimachinery/pkg/util/runtime" clientgoscheme "k8s.io/client-go/kubernetes/scheme" - "sigs.k8s.io/controller-runtime/pkg/scheme" barmancloudv1 "github.com/cloudnative-pg/plugin-barman-cloud/api/v1" ) @@ -40,7 +39,7 @@ import ( func GenerateScheme(ctx context.Context) *runtime.Scheme { result := runtime.NewScheme() - utilruntime.Must(barmancloudv1.AddToScheme(result)) + barmancloudv1.AddKnownTypes(result) utilruntime.Must(clientgoscheme.AddToScheme(result)) cnpgGroup := viper.GetString("custom-cnpg-group") @@ -54,11 +53,11 @@ func GenerateScheme(ctx context.Context) *runtime.Scheme { // Proceed with custom registration of the CNPG scheme schemeGroupVersion := schema.GroupVersion{Group: cnpgGroup, Version: cnpgVersion} - schemeBuilder := &scheme.Builder{GroupVersion: schemeGroupVersion} - schemeBuilder.Register(&cnpgv1.Cluster{}, &cnpgv1.ClusterList{}) - schemeBuilder.Register(&cnpgv1.Backup{}, &cnpgv1.BackupList{}) - schemeBuilder.Register(&cnpgv1.ScheduledBackup{}, &cnpgv1.ScheduledBackupList{}) - utilruntime.Must(schemeBuilder.AddToScheme(result)) + result.AddKnownTypes(schemeGroupVersion, + &cnpgv1.Cluster{}, &cnpgv1.ClusterList{}, + &cnpgv1.Backup{}, &cnpgv1.BackupList{}, + &cnpgv1.ScheduledBackup{}, &cnpgv1.ScheduledBackupList{}, + ) schemeLog := log.FromContext(ctx) schemeLog.Info("CNPG types registration", "schemeGroupVersion", schemeGroupVersion) diff --git a/internal/cnpgi/instance/internal/client/client_test.go b/internal/cnpgi/instance/internal/client/client_test.go index c7d2fa6..48947a0 100644 --- a/internal/cnpgi/instance/internal/client/client_test.go +++ b/internal/cnpgi/instance/internal/client/client_test.go @@ -39,7 +39,7 @@ var scheme = buildScheme() func buildScheme() *runtime.Scheme { scheme := runtime.NewScheme() _ = corev1.AddToScheme(scheme) - _ = barmancloudv1.AddToScheme(scheme) + barmancloudv1.AddKnownTypes(scheme) return scheme } diff --git a/internal/cnpgi/instance/metrics_test.go b/internal/cnpgi/instance/metrics_test.go index 963332f..6976d81 100644 --- a/internal/cnpgi/instance/metrics_test.go +++ b/internal/cnpgi/instance/metrics_test.go @@ -55,7 +55,7 @@ var _ = Describe("Metrics Collect method", func() { BeforeEach(func() { ctx = context.Background() scheme := runtime.NewScheme() - Expect(barmancloudv1.AddToScheme(scheme)).To(Succeed()) + barmancloudv1.AddKnownTypes(scheme) // Timestamps for the test firstRecoverabilityPoint := metav1.NewTime(time.Now().Add(-24 * time.Hour)) diff --git a/internal/cnpgi/operator/lifecycle_test.go b/internal/cnpgi/operator/lifecycle_test.go index 1d76bf7..d2755ed 100644 --- a/internal/cnpgi/operator/lifecycle_test.go +++ b/internal/cnpgi/operator/lifecycle_test.go @@ -55,7 +55,7 @@ var _ = Describe("LifecycleImplementation", func() { // helper to build a fake client with our scheme and optional objects buildClientFunc := func(objs ...runtime.Object) *fake.ClientBuilder { s := runtime.NewScheme() - _ = barmancloudv1.AddToScheme(s) + barmancloudv1.AddKnownTypes(s) return fake.NewClientBuilder().WithScheme(s).WithRuntimeObjects(objs...) } @@ -351,7 +351,7 @@ var _ = Describe("LifecycleImplementation", func() { }, } s := runtime.NewScheme() - _ = barmancloudv1.AddToScheme(s) + barmancloudv1.AddKnownTypes(s) cli := fake.NewClientBuilder().WithScheme(s).WithRuntimeObjects(store).Build() impl := LifecycleImplementation{Client: cli} @@ -378,7 +378,7 @@ var _ = Describe("LifecycleImplementation", func() { }, } s := runtime.NewScheme() - _ = barmancloudv1.AddToScheme(s) + barmancloudv1.AddKnownTypes(s) cli := fake.NewClientBuilder().WithScheme(s).WithRuntimeObjects(store).Build() impl := LifecycleImplementation{Client: cli} diff --git a/internal/cnpgi/operator/manager.go b/internal/cnpgi/operator/manager.go index 53db11e..d6daf0a 100644 --- a/internal/cnpgi/operator/manager.go +++ b/internal/cnpgi/operator/manager.go @@ -47,7 +47,7 @@ var scheme = runtime.NewScheme() func init() { utilruntime.Must(clientgoscheme.AddToScheme(scheme)) - utilruntime.Must(barmancloudv1.AddToScheme(scheme)) + barmancloudv1.AddKnownTypes(scheme) // +kubebuilder:scaffold:scheme } diff --git a/internal/cnpgi/operator/rbac/ensure_test.go b/internal/cnpgi/operator/rbac/ensure_test.go index 7744444..238ca0a 100644 --- a/internal/cnpgi/operator/rbac/ensure_test.go +++ b/internal/cnpgi/operator/rbac/ensure_test.go @@ -83,7 +83,7 @@ func newScheme() *runtime.Scheme { s := runtime.NewScheme() utilruntime.Must(rbacv1.AddToScheme(s)) utilruntime.Must(cnpgv1.AddToScheme(s)) - utilruntime.Must(barmancloudv1.AddToScheme(s)) + barmancloudv1.AddKnownTypes(s) return s } diff --git a/internal/controller/objectstore_controller_test.go b/internal/controller/objectstore_controller_test.go index a8b896e..0f64ac5 100644 --- a/internal/controller/objectstore_controller_test.go +++ b/internal/controller/objectstore_controller_test.go @@ -46,7 +46,7 @@ import ( func newFakeScheme() *runtime.Scheme { s := runtime.NewScheme() utilruntime.Must(rbacv1.AddToScheme(s)) - utilruntime.Must(barmancloudv1.AddToScheme(s)) + barmancloudv1.AddKnownTypes(s) return s } diff --git a/internal/scheme/cnpg.go b/internal/scheme/cnpg.go index a012e9d..43146c3 100644 --- a/internal/scheme/cnpg.go +++ b/internal/scheme/cnpg.go @@ -27,8 +27,6 @@ import ( "github.com/spf13/viper" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" - utilruntime "k8s.io/apimachinery/pkg/util/runtime" - crscheme "sigs.k8s.io/controller-runtime/pkg/scheme" ) // AddCNPGToScheme registers CNPG types into the given scheme using @@ -46,11 +44,11 @@ func AddCNPGToScheme(ctx context.Context, s *runtime.Scheme) { } schemeGroupVersion := schema.GroupVersion{Group: cnpgGroup, Version: cnpgVersion} - schemeBuilder := &crscheme.Builder{GroupVersion: schemeGroupVersion} - schemeBuilder.Register(&cnpgv1.Cluster{}, &cnpgv1.ClusterList{}) - schemeBuilder.Register(&cnpgv1.Backup{}, &cnpgv1.BackupList{}) - schemeBuilder.Register(&cnpgv1.ScheduledBackup{}, &cnpgv1.ScheduledBackupList{}) - utilruntime.Must(schemeBuilder.AddToScheme(s)) + s.AddKnownTypes(schemeGroupVersion, + &cnpgv1.Cluster{}, &cnpgv1.ClusterList{}, + &cnpgv1.Backup{}, &cnpgv1.BackupList{}, + &cnpgv1.ScheduledBackup{}, &cnpgv1.ScheduledBackupList{}, + ) log.FromContext(ctx).Info("CNPG types registration", "schemeGroupVersion", schemeGroupVersion) } diff --git a/test/e2e/internal/client/client.go b/test/e2e/internal/client/client.go index d3fe21e..ec85f5c 100644 --- a/test/e2e/internal/client/client.go +++ b/test/e2e/internal/client/client.go @@ -91,12 +91,11 @@ func addScheme(cl client.Client) error { if err := certmanagerv1.AddToScheme(scheme); err != nil { return fmt.Errorf("failed to add cert-manager/v1 to scheme: %w", err) } - if err := pluginBarmanCloudV1.AddToScheme(scheme); err != nil { - return fmt.Errorf("failed to add plugin-barman-cloud/v1 to scheme: %w", err) - } if err := cloudnativepgv1.AddToScheme(scheme); err != nil { return fmt.Errorf("failed to add cloudnativepg/v1 to scheme: %w", err) } + + pluginBarmanCloudV1.AddKnownTypes(scheme) return nil }