Skip to content

Commit abb6141

Browse files
authored
Feat/adjust e2e case for tcr repo and retention rule (#1676)
* feat:support tencentcloud_tcr_tag_retention_rule resource * add changelog * adjust e2e case for tcr repo and retention rule
1 parent 2c4a42f commit abb6141

File tree

2 files changed

+87
-6
lines changed

2 files changed

+87
-6
lines changed

tencentcloud/resource_tc_tcr_repository_test.go

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,67 @@ import (
88

99
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
1010
"github.com/hashicorp/terraform-plugin-sdk/terraform"
11+
tcr "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tcr/v20190924"
12+
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper"
1113
)
1214

15+
func init() {
16+
resource.AddTestSweepers("tencentcloud_tcr_repository", &resource.Sweeper{
17+
Name: "tencentcloud_tcr_repository",
18+
F: testSweepTCRRepository,
19+
})
20+
}
21+
22+
// go test -v ./tencentcloud -sweep=ap-guangzhou -sweep-run=tencentcloud_tcr_repository
23+
func testSweepTCRRepository(r string) error {
24+
logId := getLogId(contextNil)
25+
ctx := context.WithValue(context.TODO(), logIdKey, logId)
26+
cli, _ := sharedClientForRegion(r)
27+
tcrService := TCRService{client: cli.(*TencentCloudClient).apiV3Conn}
28+
29+
var filters []*tcr.Filter
30+
filters = append(filters, &tcr.Filter{
31+
Name: helper.String("RegistryName"),
32+
Values: []*string{helper.String(defaultTCRInstanceName)},
33+
})
34+
35+
instances, err := tcrService.DescribeTCRInstances(ctx, "", filters)
36+
37+
if err != nil {
38+
return err
39+
}
40+
41+
if len(instances) == 0 {
42+
return fmt.Errorf("instance %s not exist", defaultTCRInstanceName)
43+
}
44+
45+
instanceId := *instances[0].RegistryId
46+
// the non-keep namespace will be removed directly when run sweeper tencentcloud_tcr_namespace
47+
// so... only need to care about the repos under the keep namespace
48+
repos, err := tcrService.DescribeTCRRepositories(ctx, instanceId, "", "")
49+
50+
if err != nil {
51+
return err
52+
}
53+
54+
for i := range repos {
55+
n := repos[i]
56+
names := strings.Split(*n.Name, "/")
57+
if len(names) != 2 {
58+
continue
59+
}
60+
repoName := names[1]
61+
if isResourcePersist(repoName, nil) {
62+
continue
63+
}
64+
err = tcrService.DeleteTCRRepository(ctx, instanceId, *n.Namespace, repoName)
65+
if err != nil {
66+
continue
67+
}
68+
}
69+
return nil
70+
}
71+
1372
func TestAccTencentCloudTCRRepository_basic_and_update(t *testing.T) {
1473
t.Parallel()
1574
resource.Test(t, resource.TestCase{

tencentcloud/resource_tc_tcr_tag_retention_rule_test.go

Lines changed: 28 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88

99
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
1010
"github.com/hashicorp/terraform-plugin-sdk/terraform"
11+
sdkErrors "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors"
1112
)
1213

1314
func TestAccTencentCloudTCRTagRetentionRuleResource_basic(t *testing.T) {
@@ -76,6 +77,11 @@ func testAccCheckTCRTagRetentionRuleDestroy(s *terraform.State) error {
7677

7778
rule, err := service.DescribeTcrTagRetentionRuleById(ctx, registryId, namespaceName, &retentionId)
7879
if err != nil {
80+
if ee, ok := err.(*sdkErrors.TencentCloudSDKError); ok {
81+
if ee.Code == "ResourceNotFound" {
82+
return nil
83+
}
84+
}
7985
return err
8086
}
8187

@@ -110,6 +116,11 @@ func testAccCheckTCRTagRetentionRuleExists(re string) resource.TestCheckFunc {
110116

111117
rule, err := service.DescribeTcrTagRetentionRuleById(ctx, registryId, namespaceName, &retentionId)
112118
if err != nil {
119+
if ee, ok := err.(*sdkErrors.TencentCloudSDKError); ok {
120+
if ee.Code == "ResourceNotFound" {
121+
return fmt.Errorf("Tcr Tag Retention Rule not found[ResourceNotFound], Id: %v", rs.Primary.ID)
122+
}
123+
}
113124
return err
114125
}
115126

@@ -120,10 +131,21 @@ func testAccCheckTCRTagRetentionRuleExists(re string) resource.TestCheckFunc {
120131
}
121132
}
122133

123-
const testAccTcrTagRetentionRule = defaultTCRInstanceData + `
134+
const testAccTCRInstance_retention = `
135+
resource "tencentcloud_tcr_instance" "mytcr_retention" {
136+
name = "tf-test-tcr-retention"
137+
instance_type = "basic"
138+
delete_bucket = true
139+
140+
tags ={
141+
test = "test"
142+
}
143+
}`
144+
145+
const testAccTcrTagRetentionRule = testAccTCRInstance_retention + `
124146
125147
resource "tencentcloud_tcr_namespace" "my_ns" {
126-
instance_id = local.tcr_id
148+
instance_id = tencentcloud_tcr_instance.mytcr_retention.id
127149
name = "tf_test_ns_retention"
128150
is_public = true
129151
is_auto_scan = true
@@ -135,7 +157,7 @@ resource "tencentcloud_tcr_namespace" "my_ns" {
135157
}
136158
137159
resource "tencentcloud_tcr_tag_retention_rule" "my_rule" {
138-
registry_id = local.tcr_id
160+
registry_id = tencentcloud_tcr_instance.mytcr_retention.id
139161
namespace_name = tencentcloud_tcr_namespace.my_ns.name
140162
retention_rule {
141163
key = "nDaysSinceLastPush"
@@ -147,10 +169,10 @@ resource "tencentcloud_tcr_tag_retention_rule" "my_rule" {
147169
148170
`
149171

150-
const testAccTcrTagRetentionRule_update = defaultTCRInstanceData + `
172+
const testAccTcrTagRetentionRule_update = testAccTCRInstance_retention + `
151173
152174
resource "tencentcloud_tcr_namespace" "my_ns" {
153-
instance_id = local.tcr_id
175+
instance_id = tencentcloud_tcr_instance.mytcr_retention.id
154176
name = "tf_test_ns_retention"
155177
is_public = true
156178
is_auto_scan = true
@@ -162,7 +184,7 @@ resource "tencentcloud_tcr_namespace" "my_ns" {
162184
}
163185
164186
resource "tencentcloud_tcr_tag_retention_rule" "my_rule" {
165-
registry_id = local.tcr_id
187+
registry_id = tencentcloud_tcr_instance.mytcr_retention.id
166188
namespace_name = tencentcloud_tcr_namespace.my_ns.name
167189
retention_rule {
168190
key = "nDaysSinceLastPush"

0 commit comments

Comments
 (0)