chore: avoid using SchemeBuilder

Signed-off-by: Leonardo Cecchi <leonardo.cecchi@gmail.com>
This commit is contained in:
Leonardo Cecchi 2026-05-04 17:34:53 +02:00
parent 4384ec198b
commit fdb9c495f7
13 changed files with 34 additions and 40 deletions

View File

@ -16,7 +16,7 @@ linters:
- gocyclo
- goheader
- gomoddirectives
- gomodguard
- gomodguard_v2
- goprintffuncname
- gosec
- govet

View File

@ -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)
}

View File

@ -124,7 +124,3 @@ type ObjectStoreList struct {
metav1.ListMeta `json:"metadata,omitempty"`
Items []ObjectStore `json:"items"`
}
func init() {
SchemeBuilder.Register(&ObjectStore{}, &ObjectStoreList{})
}

View File

@ -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.

View File

@ -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)

View File

@ -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
}

View File

@ -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))

View File

@ -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}

View File

@ -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
}

View File

@ -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
}

View File

@ -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
}

View File

@ -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)
}

View File

@ -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
}