Merge pull request #16229 from hakman/aws_skip_deleting_asg_instances

aws: Skip deleting ASG instances without volumes
This commit is contained in:
Kubernetes Prow Robot 2024-01-06 18:54:58 +01:00 committed by GitHub
commit 0162f39aae
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 16 additions and 4 deletions

View File

@ -356,8 +356,16 @@ func ListInstances(cloud fi.Cloud, vpcID, clusterName string) ([]*resources.Reso
for _, instance := range reservation.Instances { for _, instance := range reservation.Instances {
id := aws.StringValue(instance.InstanceId) id := aws.StringValue(instance.InstanceId)
managedByASG := false
for _, tag := range instance.Tags {
if fi.ValueOf(tag.Key) == "aws:autoscaling:groupName" {
managedByASG = true
break
}
}
if instance.State != nil { if instance.State != nil {
stateName := aws.StringValue(instance.State.Name) stateName := fi.ValueOf(instance.State.Name)
switch stateName { switch stateName {
case "terminated", "shutting-down": case "terminated", "shutting-down":
continue continue
@ -384,11 +392,13 @@ func ListInstances(cloud fi.Cloud, vpcID, clusterName string) ([]*resources.Reso
blocks = append(blocks, "subnet:"+aws.StringValue(instance.SubnetId)) blocks = append(blocks, "subnet:"+aws.StringValue(instance.SubnetId))
blocks = append(blocks, "vpc:"+aws.StringValue(instance.VpcId)) blocks = append(blocks, "vpc:"+aws.StringValue(instance.VpcId))
hasVolumes := false
for _, volume := range instance.BlockDeviceMappings { for _, volume := range instance.BlockDeviceMappings {
if volume.Ebs == nil { if volume.Ebs == nil || fi.ValueOf(volume.Ebs.DeleteOnTermination) {
continue continue
} }
blocks = append(blocks, "volume:"+aws.StringValue(volume.Ebs.VolumeId)) blocks = append(blocks, "volume:"+aws.StringValue(volume.Ebs.VolumeId))
hasVolumes = true
} }
for _, sg := range instance.SecurityGroups { for _, sg := range instance.SecurityGroups {
blocks = append(blocks, "security-group:"+aws.StringValue(sg.GroupId)) blocks = append(blocks, "security-group:"+aws.StringValue(sg.GroupId))
@ -396,8 +406,10 @@ func ListInstances(cloud fi.Cloud, vpcID, clusterName string) ([]*resources.Reso
resourceTracker.Blocks = blocks resourceTracker.Blocks = blocks
resourceTrackers = append(resourceTrackers, resourceTracker) // Track only instances not managed by ASG or with volumes
if !managedByASG || hasVolumes {
resourceTrackers = append(resourceTrackers, resourceTracker)
}
} }
} }
return true return true