Skip to content

Commit 007a9e7

Browse files
Cleaner: continue on error for PE and peering connections (#1054)
Cleaner to continue on error
1 parent 7d09557 commit 007a9e7

File tree

14 files changed

+69
-31
lines changed

14 files changed

+69
-31
lines changed

.github/actions/clean-vpc/azure.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package main
22

33
import (
44
"context"
5+
"errors"
56
"fmt"
67
"log"
78
"strings"
@@ -23,16 +24,17 @@ func deleteAzureVPCBySubstr(ctx context.Context, subID, resourceGroupName, subst
2324
if err != nil {
2425
return false, fmt.Errorf("error fetching vnets: %v", err)
2526
}
27+
var allErr error
2628
for _, vnet := range vnets.Values() {
2729
if vnet.Name != nil && strings.HasPrefix(*vnet.Name, substr) {
2830
log.Printf("deleting vnet %s", *vnet.Name)
2931
_, err = vnetClient.Delete(ctx, resourceGroupName, *vnet.Name)
3032
if err != nil {
31-
log.Printf("error deleting vnet: %v", err)
33+
allErr = errors.Join(allErr, fmt.Errorf("error deleting vnet: %v", err))
3234
ok = false
3335
}
3436
}
3537
}
3638

37-
return ok, nil
39+
return ok, allErr
3840
}

.github/actions/clean-vpc/gcp.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package main
22

33
import (
44
"context"
5+
"errors"
56
"fmt"
67
"log"
78
"os"
@@ -26,17 +27,18 @@ func deleteGCPVPCBySubstr(gcpProjectID, nameSubstr string) (bool, error) {
2627
if err != nil {
2728
return false, fmt.Errorf("failed to list networks: %s", err)
2829
}
30+
var allErr error
2931
for _, network := range networks.Items {
3032
if strings.HasPrefix(network.Name, nameSubstr) {
3133
log.Printf("deleting network %s", network.Name)
3234
_, err = networkService.Delete(gcpProjectID, network.Name).Do()
3335
if err != nil {
34-
log.Printf(fmt.Sprintf("failed to delete network %s: %s", network.Name, err))
36+
allErr = errors.Join(allErr, fmt.Errorf("failed to delete network %s: %s", network.Name, err))
3537
ok = false
3638
}
3739
}
3840
}
39-
return ok, nil
41+
return ok, allErr
4042
}
4143

4244
func setGCPCredentials() error {

.github/actions/clean-vpc/main.go

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ package main
22

33
import (
44
"context"
5+
"errors"
6+
"fmt"
57
"log"
68
"os"
79
)
@@ -18,9 +20,11 @@ func main() {
1820
if err != nil {
1921
log.Fatal(err)
2022
}
23+
var allErr error
2124
gcpOk, err := deleteGCPVPCBySubstr(googleProjectID, gcpVPCName)
2225
if err != nil {
23-
log.Fatal(err)
26+
allErr = errors.Join(allErr, err)
27+
log.Println(err)
2428
}
2529
if !gcpOk {
2630
log.Println("Not all GCP VPC was deleted")
@@ -32,11 +36,15 @@ func main() {
3236
ctx := context.Background()
3337
azureOk, err := deleteAzureVPCBySubstr(ctx, subID, resourceGroupName, azureVPCName)
3438
if err != nil {
35-
log.Fatal(err)
39+
allErr = errors.Join(allErr, err)
40+
log.Println(err)
3641
}
3742
if !azureOk {
3843
log.Println("Not all Azure VPC was deleted")
3944
}
45+
if allErr != nil {
46+
fmt.Println("ERRORS: ", allErr)
47+
}
4048
if !azureOk || !gcpOk {
4149
os.Exit(1)
4250
}

.github/actions/cleanup-pe/cleanall.go

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package main
22

33
import (
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

170175
func 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

193200
func formNetworkURL(network, projectID string) string {

.github/actions/cleanup-pe/main.go

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package main
22

33
import (
44
"context"
5+
"errors"
56
"fmt"
67
"log"
78
"os"
@@ -58,22 +59,23 @@ func CleanAllPE() error {
5859
gcpRegion := "europe-west1"
5960
subscriptionID := os.Getenv("AZURE_SUBSCRIPTION_ID")
6061

62+
var allErr error
6163
err := cleanAllAzurePE(ctx, groupNameAzure, subscriptionID, []string{subnet1Name, subnet2Name})
6264
if err != nil {
63-
return fmt.Errorf("error while cleaning all azure pe: %v", err)
65+
allErr = errors.Join(allErr, fmt.Errorf("error while cleaning all azure pe: %v", err))
6466
}
6567

6668
for _, awsRegion := range awsRegions {
6769
errClean := cleanAllAWSPE(awsRegion, []string{subnet1Name, subnet2Name})
6870
if errClean != nil {
69-
return fmt.Errorf("error cleaning all aws PE. region %s. error: %v", awsRegion, errClean)
71+
allErr = errors.Join(allErr, fmt.Errorf("error cleaning all aws PE. region %s. error: %v", awsRegion, errClean))
7072
}
7173
}
7274

7375
err = cleanAllGCPPE(ctx, googleProjectID, gcpVPCName, gcpRegion, []string{subnet1Name, subnet2Name})
7476
if err != nil {
75-
return fmt.Errorf("error while cleaning all gcp pe: %v", err)
77+
allErr = errors.Join(allErr, fmt.Errorf("error while cleaning all gcp pe: %v", err))
7678
}
7779

78-
return nil
80+
return allErr
7981
}

.github/actions/cleanup/deployment/advanced.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package deployment
22

33
import (
44
"context"
5+
"errors"
56
"fmt"
67
"log"
78

@@ -21,11 +22,12 @@ func DeleteAllAdvancedClusters(ctx context.Context, client mongodbatlas.Advanced
2122
if err != nil {
2223
return fmt.Errorf("error getting advanced clusters: %w", err)
2324
}
25+
var allErr error
2426
for _, cluster := range advancedClusters {
2527
log.Printf("Deleting advanced cluster %s", cluster.Name)
2628
if _, err = client.Delete(ctx, projectID, cluster.Name); err != nil {
27-
return fmt.Errorf("error deleting advanced cluster: %w", err)
29+
allErr = errors.Join(allErr, fmt.Errorf("error deleting advanced cluster: %w", err))
2830
}
2931
}
30-
return nil
32+
return allErr
3133
}

.github/actions/cleanup/deployment/datafederation.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package deployment
22

33
import (
44
"context"
5+
"errors"
56
"fmt"
67
"log"
78

@@ -14,11 +15,12 @@ func DeleteAllDataFederationInstances(ctx context.Context, client mongodbatlas.D
1415
return fmt.Errorf("error listing datafederation instances: %w", err)
1516
}
1617

18+
var allErr error
1719
for _, df := range dfInstances {
1820
log.Printf("Removing DataFederation instance: %s", df.Name)
1921
if _, err := client.Delete(ctx, projectID, df.Name); err != nil {
20-
return fmt.Errorf("unable to remove DataFederation instance: %w", err)
22+
allErr = errors.Join(allErr, fmt.Errorf("unable to remove DataFederation instance: %w", err))
2123
}
2224
}
23-
return nil
25+
return allErr
2426
}

.github/actions/cleanup/deployment/deployment.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package deployment
22

33
import (
44
"context"
5+
"errors"
56
"fmt"
67
"log"
78

@@ -13,13 +14,14 @@ func DeleteAllDeployments(ctx context.Context, client mongodbatlas.ClustersServi
1314
if err != nil {
1415
return fmt.Errorf("error getting deployments: %s", err)
1516
}
17+
var allErr error
1618
for _, deployment := range deployments {
1719
log.Printf("Deleting deployment %s", deployment.Name)
1820
if _, err = client.Delete(ctx, projectID, deployment.Name); err != nil {
19-
return fmt.Errorf("error deleting deployment: %s", err)
21+
allErr = errors.Join(allErr, fmt.Errorf("error deleting deployment: %s", err))
2022
}
2123
}
22-
return nil
24+
return allErr
2325
}
2426

2527
func GetAllDeployments(ctx context.Context, client mongodbatlas.ClustersService, projectID string) ([]mongodbatlas.Cluster, error) {

.github/actions/cleanup/deployment/serverless.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package deployment
22

33
import (
44
"context"
5+
"errors"
56
"fmt"
67
"log"
78

@@ -13,13 +14,14 @@ func DeleteAllServerless(ctx context.Context, client mongodbatlas.ServerlessInst
1314
if err != nil {
1415
return fmt.Errorf("error getting serverless: %s", err)
1516
}
17+
var allErr error
1618
for _, s := range serverless {
1719
log.Printf("Deleting serverless %s", s.Name)
1820
if _, err = client.Delete(ctx, projectID, s.Name); err != nil {
19-
return fmt.Errorf("error deleting serverless: %s", err)
21+
allErr = errors.Join(allErr, fmt.Errorf("error deleting serverless: %s", err))
2022
}
2123
}
22-
return nil
24+
return allErr
2325
}
2426

2527
func GetAllServerless(ctx context.Context, client mongodbatlas.ServerlessInstancesService, projectID string) ([]*mongodbatlas.Cluster, error) {

.github/actions/cleanup/main.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ func main() {
3232
log.Fatal(err)
3333
}
3434

35+
log.Println("Total projects selected for deletion: ", len(projectList))
3536
ctx := context.Background()
3637
ok := project.DeleteProjects(ctx, client, projectList)
3738
if !ok {

0 commit comments

Comments
 (0)