Skip to content

Commit 8066fbb

Browse files
committed
feat/kms
1 parent 86edff0 commit 8066fbb

7 files changed

+310
-27
lines changed
Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
/*
2+
Use this data source to query detailed information of kms get_parameters_for_import
3+
4+
Example Usage
5+
6+
```hcl
7+
data "tencentcloud_kms_get_parameters_for_import" "example" {
8+
key_id = "786aea8c-4aec-11ee-b601-525400281a45"
9+
wrapping_algorithm = "RSAES_OAEP_SHA_1"
10+
wrapping_key_spec = "RSA_2048"
11+
}
12+
```
13+
*/
14+
package tencentcloud
15+
16+
import (
17+
"context"
18+
19+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
20+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
21+
kms "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/kms/v20190118"
22+
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper"
23+
)
24+
25+
func dataSourceTencentCloudKmsGetParametersForImport() *schema.Resource {
26+
return &schema.Resource{
27+
Read: dataSourceTencentCloudKmsGetParametersForImportRead,
28+
Schema: map[string]*schema.Schema{
29+
"key_id": {
30+
Required: true,
31+
Type: schema.TypeString,
32+
Description: "CMK unique identifier.",
33+
},
34+
"wrapping_algorithm": {
35+
Required: true,
36+
Type: schema.TypeString,
37+
Description: "Specifies the algorithm for encrypting key material, currently supports RSAES_PKCS1_V1_5, RSAES_OAEP_SHA_1, RSAES_OAEP_SHA_256.",
38+
},
39+
"wrapping_key_spec": {
40+
Required: true,
41+
Type: schema.TypeString,
42+
Description: "Specifies the type of encryption key material, currently only supports RSA_2048.",
43+
},
44+
"public_key": {
45+
Computed: true,
46+
Type: schema.TypeString,
47+
Description: "Base64-encoded public key content.",
48+
},
49+
"import_token": {
50+
Computed: true,
51+
Type: schema.TypeString,
52+
Description: "The token required for importing key material is used as the parameter of ImportKeyMaterial.",
53+
},
54+
"parameters_valid_to": {
55+
Computed: true,
56+
Type: schema.TypeInt,
57+
Description: "The validity period of the exported token and public key cannot be imported after this period, and you need to call GetParametersForImport again to obtain it.",
58+
},
59+
"result_output_file": {
60+
Type: schema.TypeString,
61+
Optional: true,
62+
Description: "Used to save results.",
63+
},
64+
},
65+
}
66+
}
67+
68+
func dataSourceTencentCloudKmsGetParametersForImportRead(d *schema.ResourceData, meta interface{}) error {
69+
defer logElapsed("data_source.tencentcloud_kms_get_parameters_for_import.read")()
70+
defer inconsistentCheck(d, meta)()
71+
72+
var (
73+
logId = getLogId(contextNil)
74+
ctx = context.WithValue(context.TODO(), logIdKey, logId)
75+
service = KmsService{client: meta.(*TencentCloudClient).apiV3Conn}
76+
getParametersForImport *kms.GetParametersForImportResponseParams
77+
keyId string
78+
)
79+
80+
paramMap := make(map[string]interface{})
81+
if v, ok := d.GetOk("key_id"); ok {
82+
paramMap["KeyId"] = helper.String(v.(string))
83+
keyId = v.(string)
84+
}
85+
86+
if v, ok := d.GetOk("wrapping_algorithm"); ok {
87+
paramMap["WrappingAlgorithm"] = helper.String(v.(string))
88+
}
89+
90+
if v, ok := d.GetOk("wrapping_key_spec"); ok {
91+
paramMap["WrappingKeySpec"] = helper.String(v.(string))
92+
}
93+
94+
err := resource.Retry(readRetryTimeout, func() *resource.RetryError {
95+
result, e := service.DescribeKmsGetParametersForImportByFilter(ctx, paramMap)
96+
if e != nil {
97+
return retryError(e)
98+
}
99+
100+
getParametersForImport = result
101+
return nil
102+
})
103+
104+
if err != nil {
105+
return err
106+
}
107+
108+
if getParametersForImport.KeyId != nil {
109+
_ = d.Set("key_id", getParametersForImport.KeyId)
110+
}
111+
112+
if getParametersForImport.PublicKey != nil {
113+
_ = d.Set("public_key", getParametersForImport.PublicKey)
114+
}
115+
116+
if getParametersForImport.ImportToken != nil {
117+
_ = d.Set("import_token", getParametersForImport.ImportToken)
118+
}
119+
120+
if getParametersForImport.ParametersValidTo != nil {
121+
_ = d.Set("parameters_valid_to", getParametersForImport.ParametersValidTo)
122+
}
123+
124+
d.SetId(keyId)
125+
output, ok := d.GetOk("result_output_file")
126+
if ok && output.(string) != "" {
127+
if e := writeToFile(output.(string), d); e != nil {
128+
return e
129+
}
130+
}
131+
132+
return nil
133+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package tencentcloud
2+
3+
import (
4+
"testing"
5+
6+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
7+
)
8+
9+
// go test -i; go test -test.run TestAccTencentCloudNeedFixKmsGetParametersForImportDataSource_basic -v
10+
func TestAccTencentCloudNeedFixKmsGetParametersForImportDataSource_basic(t *testing.T) {
11+
t.Parallel()
12+
resource.Test(t, resource.TestCase{
13+
PreCheck: func() {
14+
testAccPreCheck(t)
15+
},
16+
Providers: testAccProviders,
17+
Steps: []resource.TestStep{
18+
{
19+
Config: testAccKmsGetParametersForImportDataSource,
20+
Check: resource.ComposeTestCheckFunc(
21+
testAccCheckTencentCloudDataSourceID("data.tencentcloud_kms_get_parameters_for_import.example"),
22+
),
23+
},
24+
},
25+
})
26+
}
27+
28+
const testAccKmsGetParametersForImportDataSource = `
29+
data "tencentcloud_kms_get_parameters_for_import" "example" {
30+
key_id = "786aea8c-4aec-11ee-b601-525400281a45"
31+
wrapping_algorithm = "RSAES_OAEP_SHA_1"
32+
wrapping_key_spec = "RSA_2048"
33+
}
34+
`

tencentcloud/provider.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -543,6 +543,7 @@ Key Management Service(KMS)
543543
Data Source
544544
tencentcloud_kms_keys
545545
tencentcloud_kms_public_key
546+
tencentcloud_kms_get_parameters_for_import
546547
547548
Resource
548549
tencentcloud_kms_key
@@ -2072,6 +2073,7 @@ func Provider() *schema.Provider {
20722073
"tencentcloud_protocol_template_groups": dataSourceTencentCloudProtocolTemplateGroups(),
20732074
"tencentcloud_kms_keys": dataSourceTencentCloudKmsKeys(),
20742075
"tencentcloud_kms_public_key": dataSourceTencentCloudKmsPublicKey(),
2076+
"tencentcloud_kms_get_parameters_for_import": dataSourceTencentCloudKmsGetParametersForImport(),
20752077
"tencentcloud_ssm_products": dataSourceTencentCloudSsmProducts(),
20762078
"tencentcloud_ssm_secrets": dataSourceTencentCloudSsmSecrets(),
20772079
"tencentcloud_ssm_secret_versions": dataSourceTencentCloudSsmSecretVersions(),

0 commit comments

Comments
 (0)