Skip to content

Commit 83c6c21

Browse files
committed
makes sure all nodes belong to the node group before removement.
1 parent 91c5796 commit 83c6c21

File tree

1 file changed

+17
-5
lines changed

1 file changed

+17
-5
lines changed

cluster-autoscaler/cloudprovider/huaweicloud/huaweicloud_auto_scaling_group.go

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
"fmt"
2121

2222
apiv1 "k8s.io/api/core/v1"
23+
"k8s.io/apimachinery/pkg/util/sets"
2324
"k8s.io/autoscaler/cluster-autoscaler/cloudprovider"
2425
huaweicloudsdkasmodel "k8s.io/autoscaler/cluster-autoscaler/cloudprovider/huaweicloud/huaweicloud-sdk-go-v3/services/as/v1/model"
2526
"k8s.io/klog/v2"
@@ -98,13 +99,24 @@ func (asg *AutoScalingGroup) DeleteNodes(nodes []*apiv1.Node) error {
9899
return err
99100
}
100101

101-
instanceIds := make([]string, 0, len(instances))
102+
instanceSet := sets.NewString()
102103
for _, instance := range instances {
103-
for _, n := range nodes {
104-
if n.Spec.ProviderID == instance.Id {
105-
instanceIds = append(instanceIds, instance.Id)
106-
}
104+
instanceSet.Insert(instance.Id)
105+
}
106+
107+
instanceIds := make([]string, 0, len(instances))
108+
for _, node := range nodes {
109+
providerID := node.Spec.ProviderID
110+
111+
// If one of the nodes not belongs to this auto scaling group, means there is something wrong happened,
112+
// so, we should reject the whole deleting request.
113+
if !instanceSet.Has(providerID) {
114+
klog.Errorf("delete node not belongs this node group is not allowed. group: %s, node: %s", asg.groupID, providerID)
115+
return fmt.Errorf("node does not belong to this node group")
107116
}
117+
118+
klog.V(1).Infof("going to remove node from scaling group. group: %s, node: %s", asg.groupID, providerID)
119+
instanceIds = append(instanceIds, providerID)
108120
}
109121

110122
err = asg.cloudServiceManager.DeleteScalingInstances(asg.groupID, instanceIds)

0 commit comments

Comments
 (0)