Skip to content

Commit ffd2d09

Browse files
instance template sweeper (#4718) (#3177)
Signed-off-by: Modular Magician <[email protected]>
1 parent 3f62402 commit ffd2d09

File tree

2 files changed

+73
-0
lines changed

2 files changed

+73
-0
lines changed

.changelog/4718.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
```release-note:none
2+
```
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
package google
2+
3+
import (
4+
"context"
5+
"log"
6+
7+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
8+
)
9+
10+
// This will sweep Compute Instance Templates
11+
func init() {
12+
resource.AddTestSweepers("ComputeInstanceTemplate", &resource.Sweeper{
13+
Name: "ComputeInstanceTemplate",
14+
F: testSweepComputeInstanceTemplate,
15+
})
16+
}
17+
18+
// At the time of writing, the CI only passes us-central1 as the region
19+
func testSweepComputeInstanceTemplate(region string) error {
20+
resourceName := "ComputeInstanceTemplate"
21+
log.Printf("[INFO][SWEEPER_LOG] Starting sweeper for %s", resourceName)
22+
23+
config, err := sharedConfigForRegion(region)
24+
if err != nil {
25+
log.Printf("[INFO][SWEEPER_LOG] error getting shared config for region: %s", err)
26+
return err
27+
}
28+
29+
err = config.LoadAndValidate(context.Background())
30+
if err != nil {
31+
log.Printf("[INFO][SWEEPER_LOG] error loading: %s", err)
32+
return err
33+
}
34+
35+
instanceTemplates, err := config.NewComputeBetaClient(config.userAgent).InstanceTemplates.List(config.Project).Do()
36+
if err != nil {
37+
log.Printf("[INFO][SWEEPER_LOG] Error in response from request instance templates LIST: %s", err)
38+
return nil
39+
}
40+
41+
numTemplates := len(instanceTemplates.Items)
42+
if numTemplates == 0 {
43+
log.Printf("[INFO][SWEEPER_LOG] Nothing found in response.")
44+
return nil
45+
}
46+
47+
log.Printf("[INFO][SWEEPER_LOG] Found %d items in %s list response.", numTemplates, resourceName)
48+
// Count items that weren't sweeped.
49+
nonPrefixCount := 0
50+
for _, instanceTemplate := range instanceTemplates.Items {
51+
// Increment count and skip if resource is not sweepable.
52+
if !isSweepableTestResource(instanceTemplate.Name) {
53+
nonPrefixCount++
54+
continue
55+
}
56+
57+
// Don't wait on operations as we may have a lot to delete
58+
_, err := config.NewComputeBetaClient(config.userAgent).InstanceTemplates.Delete(config.Project, instanceTemplate.Name).Do()
59+
if err != nil {
60+
log.Printf("[INFO][SWEEPER_LOG] Error deleting instance template: %s", instanceTemplate.Name)
61+
} else {
62+
log.Printf("[INFO][SWEEPER_LOG] Sent delete request for %s resource: %s", resourceName, instanceTemplate.Name)
63+
}
64+
}
65+
66+
if nonPrefixCount > 0 {
67+
log.Printf("[INFO][SWEEPER_LOG] %d items without tf-test prefix remain.", nonPrefixCount)
68+
}
69+
70+
return nil
71+
}

0 commit comments

Comments
 (0)