From 2ac805aece4af1d93960ec176bc61f9090051de3 Mon Sep 17 00:00:00 2001 From: Dmitri Fedotov Date: Thu, 23 Jan 2025 17:34:09 +0200 Subject: [PATCH 1/2] 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), From 63f098e68cf6ebed223607b05bc94614db62f782 Mon Sep 17 00:00:00 2001 From: Dmitri Fedotov Date: Thu, 23 Jan 2025 18:07:07 +0200 Subject: [PATCH 2/2] use metautils instead --- internal/controller/bmc_controller.go | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/internal/controller/bmc_controller.go b/internal/controller/bmc_controller.go index 695b3ab..db9cb9d 100644 --- a/internal/controller/bmc_controller.go +++ b/internal/controller/bmc_controller.go @@ -12,6 +12,7 @@ import ( "github.com/go-logr/logr" "github.com/ironcore-dev/controller-utils/clientutils" + "github.com/ironcore-dev/controller-utils/metautils" metalv1alpha1 "github.com/ironcore-dev/metal-operator/api/v1alpha1" "github.com/ironcore-dev/metal-operator/bmc" "github.com/ironcore-dev/metal-operator/internal/bmcutils" @@ -164,7 +165,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) + metautils.SetLabels(server, bmcObj.Labels) server.Spec.UUID = strings.ToLower(s.UUID) server.Spec.SystemUUID = strings.ToLower(s.UUID) server.Spec.BMCRef = &v1.LocalObjectReference{Name: bmcObj.Name} @@ -187,13 +188,3 @@ 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 -}