@@ -2,6 +2,7 @@ package main
22
33import (
44 "context"
5+ "errors"
56 "fmt"
67 "log"
78 "strings"
@@ -25,6 +26,7 @@ func cleanAllAWSPE(region string, subnets []string) error {
2526
2627 svc := ec2 .New (awsSession )
2728
29+ var allErr error
2830 for _ , subnet := range subnets {
2931 subnetInput := & ec2.DescribeSubnetsInput {
3032 Filters : []* ec2.Filter {{
@@ -61,7 +63,8 @@ func cleanAllAWSPE(region string, subnets []string) error {
6163
6264 err = deleteAWSPEsByID (svc , endpointIDs )
6365 if err != nil {
64- return err
66+ allErr = errors .Join (allErr , err )
67+ continue
6568 }
6669
6770 log .Printf ("deleted %d AWS PEs in region %s" , len (endpointIDs ), region )
@@ -132,6 +135,7 @@ func cleanAllGCPPE(ctx context.Context, projectID, vpc, region string, subnets [
132135
133136 networkURL := formNetworkURL (vpc , projectID )
134137
138+ var allErr error
135139 for _ , subnet := range subnets {
136140 subnetURL := formSubnetURL (region , subnet , projectID )
137141
@@ -147,7 +151,8 @@ func cleanAllGCPPE(ctx context.Context, projectID, vpc, region string, subnets [
147151 if forwardRule .Network == networkURL {
148152 _ , err = computeService .ForwardingRules .Delete (projectID , region , forwardRule .Name ).Do ()
149153 if err != nil {
150- return fmt .Errorf ("error while deleting forwarding rule: %v" , err )
154+ allErr = errors .Join (allErr , fmt .Errorf ("error while deleting forwarding rule: %v" , err ))
155+ continue
151156 }
152157
153158 counter ++
@@ -160,11 +165,11 @@ func cleanAllGCPPE(ctx context.Context, projectID, vpc, region string, subnets [
160165 time .Sleep (time .Second * 20 ) // need to wait for GCP to delete the forwarding rule
161166 err = deleteGCPAddressBySubnet (computeService , projectID , region , subnetURL )
162167 if err != nil {
163- return fmt .Errorf ("error while deleting GCP address: %v" , err )
168+ allErr = errors . Join ( allErr , fmt .Errorf ("error while deleting GCP address: %v" , err ) )
164169 }
165170 }
166171
167- return nil
172+ return allErr
168173}
169174
170175func deleteGCPAddressBySubnet (service * compute.Service , projectID , region , subnetURL string ) error {
@@ -175,19 +180,21 @@ func deleteGCPAddressBySubnet(service *compute.Service, projectID, region, subne
175180 }
176181
177182 counter := 0
183+ var allErr error
178184 for _ , address := range addressList .Items {
179185 if address .Subnetwork == subnetURL {
180186 _ , err = service .Addresses .Delete (projectID , region , address .Name ).Do ()
181187 if err != nil {
182- return fmt .Errorf ("error while deleting address: %v" , err )
188+ allErr = errors .Join (allErr , fmt .Errorf ("error while deleting address: %v" , err ))
189+ continue
183190 }
184191 counter ++
185192 log .Printf ("successfully deleted GCP address: %s. subnet: %s" , address .Name , address .Subnetwork )
186193 }
187194 }
188195
189196 log .Printf ("deleted %d GCP addresses" , counter )
190- return nil
197+ return allErr
191198}
192199
193200func formNetworkURL (network , projectID string ) string {
0 commit comments