From 2ac805aece4af1d93960ec176bc61f9090051de3 Mon Sep 17 00:00:00 2001 From: Dmitri Fedotov Date: Thu, 23 Jan 2025 17:34:09 +0200 Subject: [PATCH] Merge `BMC` labels to `Server` --- internal/controller/bmc_controller.go | 11 +++++++++++ internal/controller/bmc_controller_test.go | 6 ++++++ 2 files changed, 17 insertions(+) diff --git a/internal/controller/bmc_controller.go b/internal/controller/bmc_controller.go index 4e6ba52..695b3ab 100644 --- a/internal/controller/bmc_controller.go +++ b/internal/controller/bmc_controller.go @@ -164,6 +164,7 @@ func (r *BMCReconciler) discoverServers(ctx context.Context, log logr.Logger, bm server.Name = bmcutils.GetServerNameFromBMCandIndex(i, bmcObj) opResult, err := controllerutil.CreateOrPatch(ctx, r.Client, server, func() error { + server.Labels = mergeLabels(bmcObj.Labels, server.Labels) server.Spec.UUID = strings.ToLower(s.UUID) server.Spec.SystemUUID = strings.ToLower(s.UUID) server.Spec.BMCRef = &v1.LocalObjectReference{Name: bmcObj.Name} @@ -186,3 +187,13 @@ func (r *BMCReconciler) SetupWithManager(mgr ctrl.Manager) error { // TODO: add watches for Endpoints and BMCSecrets Complete(r) } + +func mergeLabels(bmcLabels, serverLabels map[string]string) map[string]string { + if serverLabels == nil { + serverLabels = make(map[string]string) + } + for key, value := range bmcLabels { + serverLabels[key] = value + } + return serverLabels +} diff --git a/internal/controller/bmc_controller_test.go b/internal/controller/bmc_controller_test.go index 75b40bc..92d5e1f 100644 --- a/internal/controller/bmc_controller_test.go +++ b/internal/controller/bmc_controller_test.go @@ -105,10 +105,15 @@ var _ = Describe("BMC Controller", func() { Expect(k8sClient.Create(ctx, bmcSecret)).To(Succeed()) DeferCleanup(k8sClient.Delete, bmcSecret) + bmcLabels := map[string]string{ + "foo": "bar", + } + By("Creating a BMC resource") bmc := &metalv1alpha1.BMC{ ObjectMeta: metav1.ObjectMeta{ GenerateName: "test-", + Labels: bmcLabels, }, Spec: metalv1alpha1.BMCSpec{ Endpoint: &metalv1alpha1.InlineEndpoint{ @@ -151,6 +156,7 @@ var _ = Describe("BMC Controller", func() { Controller: ptr.To(true), BlockOwnerDeletion: ptr.To(true), })), + HaveField("ObjectMeta.Labels", bmcLabels), HaveField("Spec.UUID", "38947555-7742-3448-3784-823347823834"), HaveField("Spec.SystemUUID", "38947555-7742-3448-3784-823347823834"), HaveField("Spec.BMCRef.Name", bmc.Name),