Skip to content

Commit 9caa60b

Browse files
committed
feat: allow customization of CNPG group-version
Signed-off-by: Leonardo Cecchi <[email protected]>
1 parent d959e07 commit 9caa60b

File tree

3 files changed

+49
-11
lines changed

3 files changed

+49
-11
lines changed

internal/cmd/instance/main.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ func NewCmd() *cobra.Command {
3838
_ = viper.BindEnv("pod-name", "POD_NAME")
3939
_ = viper.BindEnv("pgdata", "PGDATA")
4040
_ = viper.BindEnv("spool-directory", "SPOOL_DIRECTORY")
41+
_ = viper.BindEnv("custom-cnpg-group", "CUSTOM_CNPG_GROUP")
42+
_ = viper.BindEnv("custom-cnpg-version", "CUSTOM_CNPG_VERSIONXS")
4143

4244
return cmd
4345
}

internal/cnpgi/instance/manager.go

Lines changed: 39 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,34 +8,30 @@ import (
88
"github.com/spf13/viper"
99
corev1 "k8s.io/api/core/v1"
1010
"k8s.io/apimachinery/pkg/runtime"
11+
"k8s.io/apimachinery/pkg/runtime/schema"
1112
"k8s.io/apimachinery/pkg/types"
1213
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
1314
clientgoscheme "k8s.io/client-go/kubernetes/scheme"
1415
ctrl "sigs.k8s.io/controller-runtime"
1516
"sigs.k8s.io/controller-runtime/pkg/client"
1617
"sigs.k8s.io/controller-runtime/pkg/log"
18+
"sigs.k8s.io/controller-runtime/pkg/scheme"
1719

1820
barmancloudv1 "github.com/cloudnative-pg/plugin-barman-cloud/api/v1"
1921
extendedclient "github.com/cloudnative-pg/plugin-barman-cloud/internal/cnpgi/instance/internal/client"
2022
)
2123

22-
var scheme = runtime.NewScheme()
23-
24-
func init() {
25-
utilruntime.Must(barmancloudv1.AddToScheme(scheme))
26-
utilruntime.Must(cnpgv1.AddToScheme(scheme))
27-
utilruntime.Must(clientgoscheme.AddToScheme(scheme))
28-
}
29-
3024
// Start starts the sidecar informers and CNPG-i server
3125
func Start(ctx context.Context) error {
32-
setupLog := log.FromContext(ctx)
33-
setupLog.Info("Starting barman cloud instance plugin")
34-
3526
podName := viper.GetString("pod-name")
3627
clusterName := viper.GetString("cluster-name")
3728
namespace := viper.GetString("namespace")
3829

30+
scheme := generateScheme(ctx)
31+
32+
setupLog := log.FromContext(ctx)
33+
setupLog.Info("Starting barman cloud instance plugin")
34+
3935
controllerOptions := ctrl.Options{
4036
Scheme: scheme,
4137
Client: client.Options{
@@ -89,3 +85,35 @@ func Start(ctx context.Context) error {
8985

9086
return nil
9187
}
88+
89+
// generateScheme creates a runtime.Scheme object with all the
90+
// definition needed to support the sidecar. This allows
91+
// the plugin to be used in every CNPG-based operator.
92+
func generateScheme(ctx context.Context) *runtime.Scheme {
93+
result := runtime.NewScheme()
94+
95+
utilruntime.Must(barmancloudv1.AddToScheme(result))
96+
utilruntime.Must(clientgoscheme.AddToScheme(result))
97+
98+
cnpgGroup := viper.GetString("custom-cnpg-group")
99+
cnpgVersion := viper.GetString("custom-cnpg-version")
100+
if len(cnpgGroup) == 0 {
101+
cnpgGroup = cnpgv1.SchemeGroupVersion.Group
102+
}
103+
if len(cnpgVersion) == 0 {
104+
cnpgVersion = cnpgv1.SchemeGroupVersion.Version
105+
}
106+
107+
// Proceed with custom registration of the CNPG scheme
108+
schemeGroupVersion := schema.GroupVersion{Group: cnpgGroup, Version: cnpgVersion}
109+
schemeBuilder := &scheme.Builder{GroupVersion: schemeGroupVersion}
110+
schemeBuilder.Register(&cnpgv1.Cluster{}, &cnpgv1.ClusterList{})
111+
schemeBuilder.Register(&cnpgv1.Backup{}, &cnpgv1.BackupList{})
112+
schemeBuilder.Register(&cnpgv1.ScheduledBackup{}, &cnpgv1.ScheduledBackupList{})
113+
utilruntime.Must(schemeBuilder.AddToScheme(result))
114+
115+
schemeLog := log.FromContext(ctx)
116+
schemeLog.Info("CNPG types registration", "schemeGroupVersion", schemeGroupVersion)
117+
118+
return result
119+
}

internal/cnpgi/operator/lifecycle.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -307,6 +307,14 @@ func reconcilePodSpec(
307307
Name: "SPOOL_DIRECTORY",
308308
Value: "/controller/wal-restore-spool",
309309
},
310+
{
311+
Name: "CUSTOM_CNPG_GROUP",
312+
Value: "postgresql.cnpg.io",
313+
},
314+
{
315+
Name: "CUSTOM_CNPG_VERSION",
316+
Value: "v1",
317+
},
310318
}
311319

312320
envs = append(envs, additionalEnvs...)

0 commit comments

Comments
 (0)