From 8edc2d8718d3a23dd990315323e5c284779c8f8b Mon Sep 17 00:00:00 2001 From: Md Raiyan Date: Sun, 24 May 2026 17:56:27 +0000 Subject: [PATCH] fix: sync SliceDisplayName on every reconcile in updateSliceConfig Signed-off-by: Md Raiyan --- pkg/hub/controllers/slice_controller.go | 2 + .../controllers/slice_controller_unit_test.go | 44 +++++++++++++++++++ 2 files changed, 46 insertions(+) diff --git a/pkg/hub/controllers/slice_controller.go b/pkg/hub/controllers/slice_controller.go index 8caef204b..6279704b1 100644 --- a/pkg/hub/controllers/slice_controller.go +++ b/pkg/hub/controllers/slice_controller.go @@ -281,6 +281,8 @@ func (r *SliceReconciler) updateSliceConfig(ctx context.Context, meshSlice *kube SliceType: spokeSlice.Spec.SliceType, } } + meshSlice.Status.SliceConfig.SliceDisplayName = spokeSlice.Spec.SliceName + if meshSlice.Status.SliceConfig.SliceSubnet == "" { meshSlice.Status.SliceConfig.SliceSubnet = spokeSlice.Spec.SliceSubnet } diff --git a/pkg/hub/controllers/slice_controller_unit_test.go b/pkg/hub/controllers/slice_controller_unit_test.go index 92ac76cca..b2e51ba26 100644 --- a/pkg/hub/controllers/slice_controller_unit_test.go +++ b/pkg/hub/controllers/slice_controller_unit_test.go @@ -384,6 +384,50 @@ func TestUpdateSliceConfigByModyfingSubnetOfControllerSlice(t *testing.T) { t.Error("Expected error:", controllerSlice.Spec.SliceSubnet, " but got ", workerslice.Status.SliceConfig.SliceSubnet) } } +func TestUpdateSliceConfigDisplayNameUpdatedOnSubsequentReconcile(t *testing.T) { + client := NewClient() + reconciler := &SliceReconciler{ + Client: client, + MeshClient: client, + Log: ctrl.Log.WithName("controller").WithName("controllers").WithName("SliceConfig"), + } + ctx := context.WithValue(context.Background(), types.NamespacedName{Name: "test-slice", Namespace: "kubeslice-system"}, controllerSlice) + + client.StatusMock.On("Update", + mock.IsType(ctx), + mock.IsType(&kubeslicev1beta1.Slice{}), + mock.IsType([]k8sclient.SubResourceUpdateOption(nil)), + ).Return(nil) + + slice := &kubeslicev1beta1.Slice{ + ObjectMeta: metav1.ObjectMeta{ + Name: "test-slice", + Namespace: "kubeslice-system", + }, + Status: kubeslicev1beta1.SliceStatus{ + SliceConfig: &kubeslicev1beta1.SliceConfig{ + SliceDisplayName: "old-display-name", + }, + }, + } + hubSlice := &workerv1alpha1.WorkerSliceConfig{ + Spec: workerv1alpha1.WorkerSliceConfigSpec{ + SliceName: "new-display-name", + SliceGatewayProvider: workerv1alpha1.WorkerSliceGatewayProvider{ + SliceGatewayServiceType: "NodePort", + }, + }, + } + err := reconciler.updateSliceConfig(ctx, slice, hubSlice) + if err != nil { + t.Error("Expected no error but got:", err) + } + if slice.Status.SliceConfig.SliceDisplayName != "new-display-name" { + t.Errorf("Expected SliceDisplayName to be updated to %q but got %q", + "new-display-name", slice.Status.SliceConfig.SliceDisplayName) + } +} + func TestDeleteSliceResourceOnWorker(t *testing.T) { expected := struct { ctx context.Context