From b4b3888bc99c225747c6a0345a86521a623b1ffd Mon Sep 17 00:00:00 2001 From: Vegard Engen Date: Mon, 14 Apr 2025 13:47:53 +0200 Subject: [PATCH] Add configmap support --- internal/config/config.go | 50 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 internal/config/config.go diff --git a/internal/config/config.go b/internal/config/config.go new file mode 100644 index 0000000..7487d98 --- /dev/null +++ b/internal/config/config.go @@ -0,0 +1,50 @@ +package config + +import ( + "context" + "fmt" + + corev1 "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/types" + "sigs.k8s.io/controller-runtime/pkg/client" +) + +type OperatorConfig struct { + DefaultNamespace string +} + +type ConfigLoader struct { + Client client.Client + Name string + Namespace string +} + +func New(client client.Client, name, namespace string) *ConfigLoader { + return &ConfigLoader{ + Client: client, + Name: name, + Namespace: namespace, + } +} + +func (cl *ConfigLoader) Load(ctx context.Context) (*OperatorConfig, error) { + cm := &corev1.ConfigMap{} + err := cl.Client.Get(ctx, types.NamespacedName{ + Name: cl.Name, + Namespace: cl.Namespace, + }, cm) + if err != nil { + return nil, fmt.Errorf("failed to load configmap: %w", err) + } + + cfg := &OperatorConfig{ + DefaultNamespace: "default", // fallback + } + + if val, ok := cm.Data["defaultNamespace"]; ok && val != "" { + cfg.DefaultNamespace = val + } + + return cfg, nil +} +