Skip to content

Commit 21c7072

Browse files
authored
Merge pull request #2075 from tencentcloudstack/feat/ssm
Feat/ssm
2 parents 467ddfe + 302861b commit 21c7072

22 files changed

+1080
-458
lines changed

.changelog/2075.txt

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
```release-note:enhancement
2+
data_source/tencentcloud_ssm_secrets: Support `secret_type`, `product_name`, Update return value
3+
```
4+
5+
```release-note:enhancement
6+
resource/tencentcloud_ssm_product_secret: Support `tags`, Update return value
7+
```
8+
9+
```release-note:enhancement
10+
resource/tencentcloud_ssm_secret: Support `tags`
11+
```
12+
13+
```release-note:enhancement
14+
resource/tencentcloud_ssm_ssh_key_pair_secret: Support `tags`
15+
```

tencentcloud/data_source_tc_ssm_products.go

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,11 @@ func dataSourceTencentCloudSsmProducts() *schema.Resource {
2222
Read: dataSourceTencentCloudSsmProductsRead,
2323
Schema: map[string]*schema.Schema{
2424
"products": {
25-
Computed: true,
26-
Type: schema.TypeSet,
27-
Elem: &schema.Schema{
28-
Type: schema.TypeString,
29-
},
25+
Computed: true,
26+
Type: schema.TypeSet,
27+
Elem: &schema.Schema{Type: schema.TypeString},
3028
Description: "List of supported services.",
3129
},
32-
3330
"result_output_file": {
3431
Type: schema.TypeString,
3532
Optional: true,
@@ -43,37 +40,38 @@ func dataSourceTencentCloudSsmProductsRead(d *schema.ResourceData, meta interfac
4340
defer logElapsed("data_source.tencentcloud_ssm_products.read")()
4441
defer inconsistentCheck(d, meta)()
4542

46-
logId := getLogId(contextNil)
47-
48-
ctx := context.WithValue(context.TODO(), logIdKey, logId)
49-
50-
service := SsmService{client: meta.(*TencentCloudClient).apiV3Conn}
51-
52-
var products []*string
43+
var (
44+
logId = getLogId(contextNil)
45+
ctx = context.WithValue(context.TODO(), logIdKey, logId)
46+
service = SsmService{client: meta.(*TencentCloudClient).apiV3Conn}
47+
products []*string
48+
)
5349

5450
err := resource.Retry(readRetryTimeout, func() *resource.RetryError {
5551
result, e := service.DescribeSsmProductsByFilter(ctx)
5652
if e != nil {
5753
return retryError(e)
5854
}
55+
5956
products = result
6057
return nil
6158
})
59+
6260
if err != nil {
6361
return err
6462
}
6563

6664
if products != nil {
6765
_ = d.Set("products", products)
6866
}
69-
ids := helper.StrListToStr(products)
7067

71-
d.SetId(ids)
68+
d.SetId(helper.StrListToStr(products))
7269
output, ok := d.GetOk("result_output_file")
7370
if ok && output.(string) != "" {
7471
if e := writeToFile(output.(string), products); e != nil {
7572
return e
7673
}
7774
}
75+
7876
return nil
7977
}

tencentcloud/data_source_tc_ssm_products_test.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
77
)
88

9+
// go test -i; go test -test.run TestAccTencentCloudSsmProductsDataSource_basic -v
910
func TestAccTencentCloudSsmProductsDataSource_basic(t *testing.T) {
1011
t.Parallel()
1112
resource.Test(t, resource.TestCase{
@@ -16,13 +17,14 @@ func TestAccTencentCloudSsmProductsDataSource_basic(t *testing.T) {
1617
Steps: []resource.TestStep{
1718
{
1819
Config: testAccSsmProductsDataSource,
19-
Check: resource.ComposeTestCheckFunc(testAccCheckTencentCloudDataSourceID("data.tencentcloud_ssm_products.products")),
20+
Check: resource.ComposeTestCheckFunc(
21+
testAccCheckTencentCloudDataSourceID("data.tencentcloud_ssm_products.products"),
22+
),
2023
},
2124
},
2225
})
2326
}
2427

2528
const testAccSsmProductsDataSource = `
26-
2729
data "tencentcloud_ssm_products" "products" {}
2830
`

tencentcloud/data_source_tc_ssm_secret_versions.go

Lines changed: 33 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,27 @@
11
/*
22
Use this data source to query detailed information of SSM secret version
3+
34
Example Usage
5+
46
```hcl
7+
data "tencentcloud_ssm_secret_versions" "example" {
8+
secret_name = tencentcloud_ssm_secret_version.v1.secret_name
9+
version_id = tencentcloud_ssm_secret_version.v1.version_id
10+
}
11+
12+
resource "tencentcloud_ssm_secret" "example" {
13+
secret_name = "tf-example"
14+
description = "desc."
515
6-
data "tencentcloud_ssm_secret_versions" "foo" {
7-
secret_name = "test"
8-
version_id = "v1"
16+
tags = {
17+
createdBy = "terraform"
18+
}
19+
}
20+
21+
resource "tencentcloud_ssm_secret_version" "v1" {
22+
secret_name = tencentcloud_ssm_secret.example.secret_name
23+
version_id = "v1"
24+
secret_binary = "MTIzMTIzMTIzMTIzMTIzQQ=="
925
}
1026
```
1127
*/
@@ -72,22 +88,24 @@ func dataSourceTencentCloudSsmSecretVersions() *schema.Resource {
7288
func dataSourceTencentCloudSsmSecretVersionsRead(d *schema.ResourceData, meta interface{}) error {
7389
defer logElapsed("data_source.tencentcloud_ssm_secret_versions.read")()
7490

75-
logId := getLogId(contextNil)
76-
ctx := context.WithValue(context.TODO(), logIdKey, logId)
77-
ssmService := SsmService{
78-
client: meta.(*TencentCloudClient).apiV3Conn,
79-
}
91+
var (
92+
logId = getLogId(contextNil)
93+
ctx = context.WithValue(context.TODO(), logIdKey, logId)
94+
ssmService = SsmService{client: meta.(*TencentCloudClient).apiV3Conn}
95+
secretName = d.Get("secret_name").(string)
96+
outErr, inErr error
97+
secretInfo *SecretInfo
98+
)
8099

81-
secretName := d.Get("secret_name").(string)
82-
var outErr, inErr error
83-
var secretInfo *SecretInfo
84100
outErr = resource.Retry(readRetryTimeout, func() *resource.RetryError {
85101
secretInfo, inErr = ssmService.DescribeSecretByName(ctx, secretName)
86102
if inErr != nil {
87103
return retryError(inErr)
88104
}
105+
89106
return nil
90107
})
108+
91109
if outErr != nil {
92110
sdkErr, ok := outErr.(*sdkError.TencentCloudSDKError)
93111
if ok && sdkErr.Code == SSMResourceNotFound {
@@ -99,10 +117,12 @@ func dataSourceTencentCloudSsmSecretVersionsRead(d *schema.ResourceData, meta in
99117
log.Printf("[CRITAL]%s read SSM secret failed, reason:%+v", logId, outErr)
100118
return outErr
101119
}
120+
102121
if secretInfo.status != SSM_STATUS_ENABLED {
103122
log.Printf("[CRITAL]%s read SSM secret version failed, reason: secret status is not Enabled", logId)
104123
return nil
105124
}
125+
106126
var secretVersionInfos []*SecretVersionInfo
107127
var versionIds []string
108128
if v, ok := d.GetOk("version_id"); ok {
@@ -154,8 +174,10 @@ func dataSourceTencentCloudSsmSecretVersionsRead(d *schema.ResourceData, meta in
154174
log.Printf("[CRITAL]%s provider set SSM secret version list fail, reason:%+v", logId, e)
155175
return e
156176
}
177+
157178
if output, ok := d.GetOk("result_output_file"); ok && output.(string) != "" {
158179
return writeToFile(output.(string), secretVersionList)
159180
}
181+
160182
return nil
161183
}

tencentcloud/data_source_tc_ssm_secret_versions_test.go

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,10 @@ import (
66
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
77
)
88

9+
// go test -i; go test -test.run TestAccTencentCloudSsmSecretVersionsDataSource -v
910
func TestAccTencentCloudSsmSecretVersionsDataSource(t *testing.T) {
1011
t.Parallel()
11-
dataSourceName := "data.tencentcloud_ssm_secret_versions.secret_version"
12+
dataSourceName := "data.tencentcloud_ssm_secret_versions.example"
1213

1314
resource.Test(t, resource.TestCase{
1415
PreCheck: func() { testAccPreCheck(t) },
@@ -27,23 +28,23 @@ func TestAccTencentCloudSsmSecretVersionsDataSource(t *testing.T) {
2728
}
2829

2930
const TestAccTencentCloudSsmSecretVersionsDataSourceConfig = `
30-
resource "tencentcloud_ssm_secret" "secret" {
31-
secret_name = "unit-test-ver-data"
32-
description = "test secret"
31+
data "tencentcloud_ssm_secret_versions" "example" {
32+
secret_name = tencentcloud_ssm_secret_version.v1.secret_name
33+
version_id = tencentcloud_ssm_secret_version.v1.version_id
34+
}
35+
36+
resource "tencentcloud_ssm_secret" "example" {
37+
secret_name = "tf-example-ssm-unit-test"
38+
description = "desc."
3339
3440
tags = {
35-
test-tag = "test"
41+
createdBy = "terraform"
3642
}
3743
}
3844
3945
resource "tencentcloud_ssm_secret_version" "v1" {
40-
secret_name = tencentcloud_ssm_secret.secret.secret_name
41-
version_id = "v1"
46+
secret_name = tencentcloud_ssm_secret.example.secret_name
47+
version_id = "v1"
4248
secret_binary = "MTIzMTIzMTIzMTIzMTIzQQ=="
4349
}
44-
45-
data "tencentcloud_ssm_secret_versions" "secret_version" {
46-
secret_name = tencentcloud_ssm_secret_version.v1.secret_name
47-
version_id = tencentcloud_ssm_secret_version.v1.version_id
48-
}
4950
`

0 commit comments

Comments
 (0)