tools/uncordoncluster/uncordon/uncordon.go (34 lines of code) (raw):

/* Copyright (c) Microsoft Corporation. Licensed under the MIT license. */ package uncordon import ( "context" "k8s.io/apimachinery/pkg/types" "k8s.io/client-go/util/retry" "sigs.k8s.io/controller-runtime/pkg/client" clusterv1beta1 "go.goms.io/fleet/apis/cluster/v1beta1" toolsutils "go.goms.io/fleet/tools/utils" ) type Helper struct { HubClient client.Client ClusterName string } // Uncordon removes the taint from the member cluster. func (h *Helper) Uncordon(ctx context.Context) error { return retry.RetryOnConflict(retry.DefaultRetry, func() error { var mc clusterv1beta1.MemberCluster if err := h.HubClient.Get(ctx, types.NamespacedName{Name: h.ClusterName}, &mc); err != nil { return err } if len(mc.Spec.Taints) == 0 { return nil } // remove cordon taint from member cluster. var newTaints []clusterv1beta1.Taint for i := range mc.Spec.Taints { taint := mc.Spec.Taints[i] if taint == toolsutils.CordonTaint { continue } newTaints = append(newTaints, taint) } mc.Spec.Taints = newTaints return h.HubClient.Update(ctx, &mc) }) }