Skip to content

Commit 14626e3

Browse files
authored
add snapshot sweeper (#2471)
1 parent 080ec87 commit 14626e3

File tree

1 file changed

+52
-0
lines changed

1 file changed

+52
-0
lines changed

tencentcloud/services/cbs/resource_tc_cbs_snapshot_test.go

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
package cbs_test
22

33
import (
4+
"log"
5+
"strings"
6+
"time"
7+
48
tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest"
59
tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common"
610
localcbs "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/cbs"
@@ -13,6 +17,54 @@ import (
1317
"github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
1418
)
1519

20+
func init() {
21+
resource.AddTestSweepers("tencentcloud_cbs_snapshot", &resource.Sweeper{
22+
Name: "tencentcloud_cbs_snapshot",
23+
F: testSweepCbsSnapshot,
24+
})
25+
}
26+
27+
func testSweepCbsSnapshot(region string) error {
28+
logId := tccommon.GetLogId(tccommon.ContextNil)
29+
ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId)
30+
31+
sharedClient, err := tcacctest.SharedClientForRegion(region)
32+
if err != nil {
33+
return fmt.Errorf("getting tencentcloud client error: %s", err.Error())
34+
}
35+
client := sharedClient.(tccommon.ProviderMeta)
36+
37+
cbsService := localcbs.NewCbsService(client.GetAPIV3Conn())
38+
39+
instances, err := cbsService.DescribeSnapshotsByFilter(ctx, nil)
40+
if err != nil {
41+
return fmt.Errorf("get instance list error: %s", err.Error())
42+
}
43+
44+
for _, v := range instances {
45+
instanceId := v.SnapshotId
46+
instanceName := v.SnapshotName
47+
48+
now := time.Now()
49+
50+
createTime := tccommon.StringToTime(*v.CreateTime)
51+
interval := now.Sub(createTime).Minutes()
52+
if strings.HasPrefix(*instanceName, tcacctest.KeepResource) || strings.HasPrefix(*instanceName, tcacctest.DefaultResource) {
53+
continue
54+
}
55+
// less than 30 minute, not delete
56+
if tccommon.NeedProtect == 1 && int64(interval) < 30 {
57+
continue
58+
}
59+
60+
if err = cbsService.DeleteSnapshot(ctx, *instanceId); err != nil {
61+
log.Printf("[ERROR] sweep instance %s error: %s", *instanceId, err.Error())
62+
}
63+
}
64+
65+
return nil
66+
}
67+
1668
func TestAccTencentCloudCbsSnapshot(t *testing.T) {
1769
t.Parallel()
1870

0 commit comments

Comments
 (0)