Skip to content

Commit ca9ea62

Browse files
MinReadySeconds for machinepools
1 parent 36e9aba commit ca9ea62

File tree

3 files changed

+10
-4
lines changed

3 files changed

+10
-4
lines changed

exp/internal/controllers/machinepool_controller_noderef.go

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,12 @@ import (
2323

2424
"github.com/pkg/errors"
2525
corev1 "k8s.io/api/core/v1"
26+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2627
ctrl "sigs.k8s.io/controller-runtime"
2728
"sigs.k8s.io/controller-runtime/pkg/client"
2829

2930
clusterv1 "sigs.k8s.io/cluster-api/api/v1beta1"
31+
"sigs.k8s.io/cluster-api/controllers/noderefutil"
3032
expv1 "sigs.k8s.io/cluster-api/exp/api/v1beta1"
3133
"sigs.k8s.io/cluster-api/internal/util/taints"
3234
"sigs.k8s.io/cluster-api/util"
@@ -81,7 +83,7 @@ func (r *MachinePoolReconciler) reconcileNodeRefs(ctx context.Context, cluster *
8183
}
8284

8385
// Get the Node references.
84-
nodeRefsResult, err := r.getNodeReferences(ctx, clusterClient, mp.Spec.ProviderIDList)
86+
nodeRefsResult, err := r.getNodeReferences(ctx, clusterClient, mp.Spec.ProviderIDList, mp.Spec.MinReadySeconds)
8587
if err != nil {
8688
if err == errNoAvailableNodes {
8789
log.Info("Cannot assign NodeRefs to MachinePool, no matching Nodes")
@@ -152,7 +154,7 @@ func (r *MachinePoolReconciler) deleteRetiredNodes(ctx context.Context, c client
152154
return nil
153155
}
154156

155-
func (r *MachinePoolReconciler) getNodeReferences(ctx context.Context, c client.Client, providerIDList []string) (getNodeReferencesResult, error) {
157+
func (r *MachinePoolReconciler) getNodeReferences(ctx context.Context, c client.Client, providerIDList []string, minReadySeconds *int32) (getNodeReferencesResult, error) {
156158
log := ctrl.LoggerFrom(ctx, "providerIDList", len(providerIDList))
157159

158160
var ready, available int
@@ -184,9 +186,11 @@ func (r *MachinePoolReconciler) getNodeReferences(ctx context.Context, c client.
184186
continue
185187
}
186188
if node, ok := nodeRefsMap[providerID]; ok {
187-
available++
188189
if nodeIsReady(&node) {
189190
ready++
191+
if noderefutil.IsNodeAvailable(&node, *minReadySeconds, metav1.Now()) {
192+
available++
193+
}
190194
}
191195
nodeRefs = append(nodeRefs, corev1.ObjectReference{
192196
Kind: node.Kind,

exp/internal/controllers/machinepool_controller_noderef_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import (
2323
corev1 "k8s.io/api/core/v1"
2424
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2525
"k8s.io/client-go/tools/record"
26+
"k8s.io/utils/ptr"
2627
"sigs.k8s.io/controller-runtime/pkg/client"
2728
"sigs.k8s.io/controller-runtime/pkg/client/fake"
2829

@@ -181,7 +182,7 @@ func TestMachinePoolGetNodeReference(t *testing.T) {
181182
t.Run(test.name, func(t *testing.T) {
182183
g := NewWithT(t)
183184

184-
result, err := r.getNodeReferences(ctx, client, test.providerIDList)
185+
result, err := r.getNodeReferences(ctx, client, test.providerIDList, ptr.To[int32](0))
185186
if test.err == nil {
186187
g.Expect(err).ToNot(HaveOccurred())
187188
} else {

exp/internal/controllers/machinepool_controller_phases_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1455,6 +1455,7 @@ func TestReconcileMachinePoolScaleToFromZero(t *testing.T) {
14551455
},
14561456
},
14571457
},
1458+
MinReadySeconds: ptr.To[int32](0),
14581459
},
14591460
Status: expv1.MachinePoolStatus{},
14601461
}

0 commit comments

Comments
 (0)