in tools/workflow/clean_aws_resources.go [277:334]
func destroyLoadBalancerResource() {
//Set up aws go sdk ec2 client
testSession, err := session.NewSession()
if err != nil {
log.Fatalf("Error creating session %v", err)
}
elbv2client := elbv2.New(testSession)
//Allow to load all the load balancers since the default respond is paginated load balancers.
//Look into the documentations and read the starting-token for more details
//Documentation: https://docs.aws.amazon.com/cli/latest/reference/elbv2/describe-load-balancers.html#options
var nextMarker *string
for {
//ELB Go SDK currently does not support filter tag or filter wildcard. Only supports with matching name
//Documentation: https://github.com/aws/aws-sdk-go/blob/02266ed24221ac21bb37d6ac614d1ced95407556/service/elbv2/api.go#L5879-L5895
describeLoadBalancerInputs := &elbv2.DescribeLoadBalancersInput{Marker: nextMarker}
describeLoadBalancerOutputs, err := elbv2client.DescribeLoadBalancers(describeLoadBalancerInputs)
if err != nil {
log.Fatalf("Failed to get metadata from load balancer because of %v", err)
}
for _, lb := range describeLoadBalancerOutputs.LoadBalancers {
//Skipping lb that does not contain aoc-lb string (relating to aws-otel-test-framework)
if filterLbNameResult := strings.Contains(*lb.LoadBalancerName, containLbName); !filterLbNameResult {
continue
}
//Skipping lb that does not older than 5 days
if !time.Now().UTC().Add(pastDayDeleteCalculation).After(*lb.CreatedTime) {
continue
}
log.Printf("Trying to delete lb %s with launch-date %v", *lb.LoadBalancerName, lb.CreatedTime)
//Delete load balancer
//Documentation: https://github.com/aws/aws-sdk-go/blob/main/service/elbv2/api.go#L829-L844
deleteLoadBalancerInput := &elbv2.DeleteLoadBalancerInput{
LoadBalancerArn: lb.LoadBalancerArn,
}
_, err = elbv2client.DeleteLoadBalancer(deleteLoadBalancerInput)
if err != nil {
log.Fatalf("Failed to delete lb %s because of %v", *lb.LoadBalancerName, err)
}
log.Printf("Delete lb %s successfully", *lb.LoadBalancerName)
}
if describeLoadBalancerOutputs.NextMarker == nil {
break
}
nextMarker = describeLoadBalancerOutputs.NextMarker
}
}