/
resource_apsarastack_kms_alias.go
103 lines (94 loc) · 3.77 KB
/
resource_apsarastack_kms_alias.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
package alibabacloudstack
import (
"github.com/aliyun/alibaba-cloud-sdk-go/services/kms"
"github.com/aliyun/terraform-provider-alibabacloudstack/alibabacloudstack/connectivity"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
)
func resourceAlibabacloudStackKmsAlias() *schema.Resource {
return &schema.Resource{
Create: resourceAlibabacloudStackKmsAliasCreate,
Read: resourceAlibabacloudStackKmsAliasRead,
Update: resourceAlibabacloudStackKmsAliasUpdate,
Delete: resourceAlibabacloudStackKmsAliasDelete,
Importer: &schema.ResourceImporter{
State: schema.ImportStatePassthrough,
},
Schema: map[string]*schema.Schema{
"alias_name": {
Type: schema.TypeString,
Required: true,
ForceNew: true,
},
"key_id": {
Type: schema.TypeString,
Required: true,
},
},
}
}
func resourceAlibabacloudStackKmsAliasCreate(d *schema.ResourceData, meta interface{}) error {
client := meta.(*connectivity.AlibabacloudStackClient)
request := kms.CreateCreateAliasRequest()
request.Headers = map[string]string{"RegionId": client.RegionId}
request.QueryParams = map[string]string{"AccessKeySecret": client.SecretKey, "Product": "kms", "Department": client.Department, "ResourceGroup": client.ResourceGroup}
request.AliasName = d.Get("alias_name").(string)
request.KeyId = d.Get("key_id").(string)
raw, err := client.WithKmsClient(func(kmsClient *kms.Client) (interface{}, error) {
return kmsClient.CreateAlias(request)
})
if err != nil {
return WrapErrorf(err, DefaultErrorMsg, "alibabacloudstack_kms_alias", request.GetActionName(), AlibabacloudStackSdkGoERROR)
}
addDebug(request.GetActionName(), raw)
d.SetId(request.AliasName)
return resourceAlibabacloudStackKmsAliasRead(d, meta)
}
func resourceAlibabacloudStackKmsAliasRead(d *schema.ResourceData, meta interface{}) error {
waitSecondsIfWithTest(1)
client := meta.(*connectivity.AlibabacloudStackClient)
kmsService := KmsService{client}
object, err := kmsService.DescribeKmsAlias(d.Id())
if err != nil {
if NotFoundError(err) {
d.SetId("")
return nil
}
return WrapError(err)
}
d.Set("alias_name", d.Id())
d.Set("key_id", object.KeyId)
return nil
}
func resourceAlibabacloudStackKmsAliasUpdate(d *schema.ResourceData, meta interface{}) error {
client := meta.(*connectivity.AlibabacloudStackClient)
if d.HasChange("key_id") {
request := kms.CreateUpdateAliasRequest()
request.Headers = map[string]string{"RegionId": client.RegionId}
request.QueryParams = map[string]string{"AccessKeySecret": client.SecretKey, "Product": "kms", "Department": client.Department, "ResourceGroup": client.ResourceGroup}
request.AliasName = d.Id()
request.KeyId = d.Get("key_id").(string)
raw, err := client.WithKmsClient(func(kmsClient *kms.Client) (interface{}, error) {
return kmsClient.UpdateAlias(request)
})
addDebug(request.GetActionName(), raw)
if err != nil {
return WrapErrorf(err, DefaultErrorMsg, d.Id(), request.GetActionName(), AlibabacloudStackSdkGoERROR)
}
}
return resourceAlibabacloudStackKmsAliasRead(d, meta)
}
func resourceAlibabacloudStackKmsAliasDelete(d *schema.ResourceData, meta interface{}) error {
client := meta.(*connectivity.AlibabacloudStackClient)
request := kms.CreateDeleteAliasRequest()
request.Headers = map[string]string{"RegionId": client.RegionId}
request.QueryParams = map[string]string{"AccessKeySecret": client.SecretKey, "Product": "kms", "Department": client.Department, "ResourceGroup": client.ResourceGroup}
request.AliasName = d.Id()
raw, err := client.WithKmsClient(func(kmsClient *kms.Client) (interface{}, error) {
return kmsClient.DeleteAlias(request)
})
addDebug(request.GetActionName(), raw)
if err != nil {
return WrapErrorf(err, DefaultErrorMsg, d.Id(), request.GetActionName(), AlibabacloudStackSdkGoERROR)
}
return nil
}