11package cbs_test
22
33import (
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+
1668func TestAccTencentCloudCbsSnapshot (t * testing.T ) {
1769 t .Parallel ()
1870
0 commit comments