Files
onepassword-operator/pkg/testhelper/kube/namespace.go
2025-08-28 13:17:27 -05:00

42 lines
960 B
Go

package kube
import (
"context"
//nolint:staticcheck // ST1001
. "github.com/onsi/ginkgo/v2"
//nolint:staticcheck // ST1001
. "github.com/onsi/gomega"
corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/labels"
"sigs.k8s.io/controller-runtime/pkg/client"
)
type Namespace struct {
client client.Client
config *Config
name string
}
// LabelNamespace applies the given labels to the specified namespace
func (n *Namespace) LabelNamespace(ctx context.Context, labelsMap map[string]string) {
if labelsMap == nil || len(labelsMap) == 0 {
return
}
By("Setting labelsMap " + labels.Set(labelsMap).String() + " to namespace/" + n.name)
ns := &corev1.Namespace{}
err := n.client.Get(ctx, client.ObjectKey{Name: n.name}, ns)
Expect(err).NotTo(HaveOccurred())
if ns.Labels == nil {
ns.Labels = map[string]string{}
}
for k, v := range labelsMap {
ns.Labels[k] = v
}
err = n.client.Update(ctx, ns)
Expect(err).NotTo(HaveOccurred())
}