Skip to content

Commit 0d0bdaf

Browse files
authored
fix(cvm): [126079354] tencentcloud_cvm_image_share_permission optmize code logic and doc (#3468)
* add * add
1 parent b30e998 commit 0d0bdaf

File tree

6 files changed

+92
-70
lines changed

6 files changed

+92
-70
lines changed

.changelog/3468.txt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
```release-note:enhancement
2+
resource/tencentcloud_cvm_image_share_permission: optmize code logic and doc
3+
```
4+
5+
```release-note:enhancement
6+
datasource/tencentcloud_cvm_image_share_permission: optmize doc
7+
```
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
Use this data source to query detailed information of cvm image_share_permission
1+
Use this data source to query detailed information of CVM image share permission
22

33
Example Usage
44

55
```hcl
6-
data "tencentcloud_cvm_image_share_permission" "image_share_permission" {
7-
image_id = "img-xxxxxx"
6+
data "tencentcloud_cvm_image_share_permission" "example" {
7+
image_id = "img-0elsru2u"
88
}
9-
```
9+
```

tencentcloud/services/cvm/resource_tc_cvm_image_share_permission.go

Lines changed: 63 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package cvm
22

33
import (
44
"context"
5+
"fmt"
56
"log"
67

78
tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common"
@@ -16,8 +17,8 @@ import (
1617
func ResourceTencentCloudCvmImageSharePermission() *schema.Resource {
1718
return &schema.Resource{
1819
Create: resourceTencentCloudCvmImageSharePermissionCreate,
19-
Update: resourceTencentCloudCvmImageSharePermissionUpdate,
2020
Read: resourceTencentCloudCvmImageSharePermissionRead,
21+
Update: resourceTencentCloudCvmImageSharePermissionUpdate,
2122
Delete: resourceTencentCloudCvmImageSharePermissionDelete,
2223
Importer: &schema.ResourceImporter{
2324
State: schema.ImportStatePassthrough,
@@ -31,11 +32,9 @@ func ResourceTencentCloudCvmImageSharePermission() *schema.Resource {
3132
},
3233

3334
"account_ids": {
34-
Required: true,
35-
Type: schema.TypeSet,
36-
Elem: &schema.Schema{
37-
Type: schema.TypeString,
38-
},
35+
Required: true,
36+
Type: schema.TypeSet,
37+
Elem: &schema.Schema{Type: schema.TypeString},
3938
Description: "List of account IDs with which an image is shared.",
4039
},
4140
},
@@ -46,12 +45,12 @@ func resourceTencentCloudCvmImageSharePermissionCreate(d *schema.ResourceData, m
4645
defer tccommon.LogElapsed("resource.tencentcloud_cvm_image_share_permission.create")()
4746
defer tccommon.InconsistentCheck(d, meta)()
4847

49-
logId := tccommon.GetLogId(tccommon.ContextNil)
50-
5148
var (
49+
logId = tccommon.GetLogId(tccommon.ContextNil)
5250
request = cvm.NewModifyImageSharePermissionRequest()
5351
imageId string
5452
)
53+
5554
if v, ok := d.GetOk("image_id"); ok {
5655
imageId = v.(string)
5756
request.ImageId = helper.String(imageId)
@@ -66,33 +65,74 @@ func resourceTencentCloudCvmImageSharePermissionCreate(d *schema.ResourceData, m
6665
}
6766

6867
request.Permission = helper.String(IMAGE_SHARE_PERMISSION_SHARE)
69-
7068
err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError {
7169
result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseCvmClient().ModifyImageSharePermission(request)
7270
if e != nil {
7371
return tccommon.RetryError(e)
7472
} else {
7573
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
7674
}
75+
76+
if result == nil || result.Response == nil {
77+
return resource.NonRetryableError(fmt.Errorf("Operate cvm modifyImageSharePermission failed, Response is nil."))
78+
}
79+
7780
return nil
7881
})
82+
7983
if err != nil {
8084
log.Printf("[CRITAL]%s operate cvm modifyImageSharePermission failed, reason:%+v", logId, err)
8185
return err
8286
}
8387

8488
d.SetId(imageId)
85-
8689
return resourceTencentCloudCvmImageSharePermissionRead(d, meta)
8790
}
8891

92+
func resourceTencentCloudCvmImageSharePermissionRead(d *schema.ResourceData, meta interface{}) error {
93+
defer tccommon.LogElapsed("resource.tencentcloud_cvm_image_share_permission.read")()
94+
defer tccommon.InconsistentCheck(d, meta)()
95+
96+
var (
97+
logId = tccommon.GetLogId(tccommon.ContextNil)
98+
ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId)
99+
service = CvmService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()}
100+
sharePermissionSet []*cvm.SharePermission
101+
)
102+
103+
err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError {
104+
result, e := service.DescribeCvmImageSharePermissionByFilter(ctx, map[string]interface{}{"ImageId": helper.String(d.Id())})
105+
if e != nil {
106+
return tccommon.RetryError(e)
107+
}
108+
109+
sharePermissionSet = result
110+
return nil
111+
})
112+
113+
if err != nil {
114+
return err
115+
}
116+
117+
accountIds := make([]string, 0)
118+
for _, sharePermission := range sharePermissionSet {
119+
accountIds = append(accountIds, *sharePermission.AccountId)
120+
}
121+
122+
_ = d.Set("account_ids", accountIds)
123+
_ = d.Set("image_id", d.Id())
124+
return nil
125+
}
126+
89127
func resourceTencentCloudCvmImageSharePermissionUpdate(d *schema.ResourceData, meta interface{}) error {
90128
defer tccommon.LogElapsed("resource.tencentcloud_cvm_image_share_permission.update")()
91129
defer tccommon.InconsistentCheck(d, meta)()
92130

93-
logId := tccommon.GetLogId(tccommon.ContextNil)
94-
ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId)
95-
service := CvmService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()}
131+
var (
132+
logId = tccommon.GetLogId(tccommon.ContextNil)
133+
ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId)
134+
service = CvmService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()}
135+
)
96136

97137
if d.HasChange("account_ids") {
98138
old, new := d.GetChange("account_ids")
@@ -106,6 +146,7 @@ func resourceTencentCloudCvmImageSharePermissionUpdate(d *schema.ResourceData, m
106146
return addError
107147
}
108148
}
149+
109150
if len(remove) > 0 {
110151
removeError := service.ModifyImageSharePermission(ctx, d.Id(), IMAGE_SHARE_PERMISSION_CANCEL, helper.InterfacesStrings(remove))
111152
if removeError != nil {
@@ -117,53 +158,27 @@ func resourceTencentCloudCvmImageSharePermissionUpdate(d *schema.ResourceData, m
117158
return resourceTencentCloudCvmImageSharePermissionRead(d, meta)
118159
}
119160

120-
func resourceTencentCloudCvmImageSharePermissionRead(d *schema.ResourceData, meta interface{}) error {
121-
defer tccommon.LogElapsed("resource.tencentcloud_cvm_image_share_permission.read")()
122-
defer tccommon.InconsistentCheck(d, meta)()
123-
124-
logId := tccommon.GetLogId(tccommon.ContextNil)
125-
ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId)
126-
var sharePermissionSet []*cvm.SharePermission
127-
128-
service := CvmService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()}
129-
err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError {
130-
result, e := service.DescribeCvmImageSharePermissionByFilter(ctx, map[string]interface{}{"ImageId": helper.String(d.Id())})
131-
if e != nil {
132-
return tccommon.RetryError(e)
133-
}
134-
sharePermissionSet = result
135-
return nil
136-
})
137-
if err != nil {
138-
return err
139-
}
140-
141-
accountIds := make([]string, 0)
142-
for _, sharePermission := range sharePermissionSet {
143-
accountIds = append(accountIds, *sharePermission.AccountId)
144-
}
145-
146-
_ = d.Set("account_ids", accountIds)
147-
_ = d.Set("image_id", d.Id())
148-
return nil
149-
}
150-
151161
func resourceTencentCloudCvmImageSharePermissionDelete(d *schema.ResourceData, meta interface{}) error {
152162
defer tccommon.LogElapsed("resource.tencentcloud_cvm_image_share_permission.delete")()
153163
defer tccommon.InconsistentCheck(d, meta)()
154-
logId := tccommon.GetLogId(tccommon.ContextNil)
155-
ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId)
156-
var sharePermissionSet []*cvm.SharePermission
157164

158-
service := CvmService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()}
165+
var (
166+
logId = tccommon.GetLogId(tccommon.ContextNil)
167+
ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId)
168+
service = CvmService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()}
169+
sharePermissionSet []*cvm.SharePermission
170+
)
171+
159172
err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError {
160173
result, e := service.DescribeCvmImageSharePermissionByFilter(ctx, map[string]interface{}{"ImageId": helper.String(d.Id())})
161174
if e != nil {
162175
return tccommon.RetryError(e)
163176
}
177+
164178
sharePermissionSet = result
165179
return nil
166180
})
181+
167182
if err != nil {
168183
return err
169184
}
Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
1-
Provides a resource to create a cvm image_share_permission
1+
Provides a resource to create a CVM image share permission
22

33
Example Usage
44

55
```hcl
6-
resource "tencentcloud_cvm_image_share_permission" "image_share_permission" {
7-
image_id = "img-xxxxxx"
8-
account_ids = ["xxxxxx"]
6+
resource "tencentcloud_cvm_image_share_permission" "example" {
7+
image_id = "img-0elsru2u"
8+
account_ids = ["103849387508"]
99
}
1010
```
1111

1212
Import
1313

14-
cvm image_share_permission can be imported using the id, e.g.
14+
CVM image share permission can be imported using the id, e.g.
1515

1616
```
17-
terraform import tencentcloud_cvm_image_share_permission.image_share_permission image_share_permission_id
18-
```
17+
terraform import tencentcloud_cvm_image_share_permission.example img-0elsru2u
18+
```

website/docs/d/cvm_image_share_permission.html.markdown

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,18 @@ layout: "tencentcloud"
44
page_title: "TencentCloud: tencentcloud_cvm_image_share_permission"
55
sidebar_current: "docs-tencentcloud-datasource-cvm_image_share_permission"
66
description: |-
7-
Use this data source to query detailed information of cvm image_share_permission
7+
Use this data source to query detailed information of CVM image share permission
88
---
99

1010
# tencentcloud_cvm_image_share_permission
1111

12-
Use this data source to query detailed information of cvm image_share_permission
12+
Use this data source to query detailed information of CVM image share permission
1313

1414
## Example Usage
1515

1616
```hcl
17-
data "tencentcloud_cvm_image_share_permission" "image_share_permission" {
18-
image_id = "img-xxxxxx"
17+
data "tencentcloud_cvm_image_share_permission" "example" {
18+
image_id = "img-0elsru2u"
1919
}
2020
```
2121

website/docs/r/cvm_image_share_permission.html.markdown

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,19 @@ layout: "tencentcloud"
44
page_title: "TencentCloud: tencentcloud_cvm_image_share_permission"
55
sidebar_current: "docs-tencentcloud-resource-cvm_image_share_permission"
66
description: |-
7-
Provides a resource to create a cvm image_share_permission
7+
Provides a resource to create a CVM image share permission
88
---
99

1010
# tencentcloud_cvm_image_share_permission
1111

12-
Provides a resource to create a cvm image_share_permission
12+
Provides a resource to create a CVM image share permission
1313

1414
## Example Usage
1515

1616
```hcl
17-
resource "tencentcloud_cvm_image_share_permission" "image_share_permission" {
18-
image_id = "img-xxxxxx"
19-
account_ids = ["xxxxxx"]
17+
resource "tencentcloud_cvm_image_share_permission" "example" {
18+
image_id = "img-0elsru2u"
19+
account_ids = ["103849387508"]
2020
}
2121
```
2222

@@ -37,9 +37,9 @@ In addition to all arguments above, the following attributes are exported:
3737

3838
## Import
3939

40-
cvm image_share_permission can be imported using the id, e.g.
40+
CVM image share permission can be imported using the id, e.g.
4141

4242
```
43-
terraform import tencentcloud_cvm_image_share_permission.image_share_permission image_share_permission_id
43+
terraform import tencentcloud_cvm_image_share_permission.example img-0elsru2u
4444
```
4545

0 commit comments

Comments
 (0)