Skip to content

Commit

Permalink
UPSTREAM: <carry>: Compare against minSize in deleteNodes()
Browse files Browse the repository at this point in the history
When calling deleteNodes() we should fail early if the operation could delete nodes below the nodeGroup minSize().

This is one in a series of PR to mitigate kubernetes#3104
Once we got all merge we'll put a PR upstream.
  • Loading branch information
enxebre committed May 4, 2020
1 parent be87f46 commit 2d24858
Showing 1 changed file with 10 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,13 @@ func (ng *nodegroup) IncreaseSize(delta int) error {
// group. This function should wait until node group size is updated.
// Implementation required.
func (ng *nodegroup) DeleteNodes(nodes []*corev1.Node) error {
replicas := ng.scalableResource.Replicas()

// fail early if we are at minSize already.
if replicas <= int32(ng.MinSize()) {
return fmt.Errorf("unable to delete %d machines in %q, machine replicas are <= %d", len(nodes), ng.Id(), ng.MinSize())
}

// Step 1: Verify all nodes belong to this node group.
for _, node := range nodes {
actualNodeGroup, err := ng.machineController.nodeGroupForNode(node)
Expand All @@ -108,14 +115,10 @@ func (ng *nodegroup) DeleteNodes(nodes []*corev1.Node) error {
}

// Step 2: if deleting len(nodes) would make the replica count
// <= 0, then the request to delete that many nodes is bogus
// < MinSize, then the request to delete that many nodes is bogus
// and we fail fast.
replicas := ng.scalableResource.Replicas()

if replicas-int32(len(nodes)) < 0 {
return fmt.Errorf("unable to delete %d machines in %q, machine replicas are < 0 ", len(nodes), ng.Id())
} else if replicas-int32(len(nodes)) == 0 && !ng.scalableResource.CanScaleFromZero() {
return fmt.Errorf("unable to delete %d machines in %q, machine replicas are 0", len(nodes), ng.Id())
if replicas-int32(len(nodes)) < int32(ng.MinSize()) {
return fmt.Errorf("unable to delete %d machines in %q, machine replicas are %d, minSize is %d", len(nodes), ng.Id(), replicas, ng.MinSize())
}

// Step 3: annotate the corresponding machine that it is a
Expand Down

0 comments on commit 2d24858

Please sign in to comment.