diff --git a/.changelog/3263.txt b/.changelog/3263.txt new file mode 100644 index 0000000000..8bf93176d9 --- /dev/null +++ b/.changelog/3263.txt @@ -0,0 +1,3 @@ +```release-note:enhancement +resource/tencentcloud_cbs_snapshot_share_permission: update code and doc +``` \ No newline at end of file diff --git a/tencentcloud/services/cbs/resource_tc_cbs_snapshot_share_permission.go b/tencentcloud/services/cbs/resource_tc_cbs_snapshot_share_permission.go index 8b8c74d46c..74e8b4bd51 100644 --- a/tencentcloud/services/cbs/resource_tc_cbs_snapshot_share_permission.go +++ b/tencentcloud/services/cbs/resource_tc_cbs_snapshot_share_permission.go @@ -3,8 +3,10 @@ package cbs import ( "context" + cbs "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cbs/v20170312" tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" @@ -69,14 +71,21 @@ func resourceTencentCloudCbsSnapshotSharePermissionRead(d *schema.ResourceData, defer tccommon.InconsistentCheck(d, meta)() logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := CbsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - snapshotId := d.Id() + snapshotSharePermissions := []*cbs.SharePermission{} + + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := service.DescribeCbsSnapshotSharePermissionById(ctx, snapshotId) + if e != nil { + return tccommon.RetryError(e) + } + + snapshotSharePermissions = result + return nil + }) - snapshotSharePermissions, err := service.DescribeCbsSnapshotSharePermissionById(ctx, snapshotId) if err != nil { return err } @@ -99,6 +108,7 @@ func resourceTencentCloudCbsSnapshotSharePermissionUpdate(d *schema.ResourceData logId := tccommon.GetLogId(tccommon.ContextNil) ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) service := CbsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + if d.HasChange("account_ids") { old, new := d.GetChange("account_ids") oldSet := old.(*schema.Set) @@ -111,6 +121,7 @@ func resourceTencentCloudCbsSnapshotSharePermissionUpdate(d *schema.ResourceData return addError } } + if len(remove) > 0 { removeError := service.ModifySnapshotsSharePermission(ctx, snapshotId, SNAPSHOT_SHARE_PERMISSION_CANCEL, helper.InterfacesStrings(remove)) if removeError != nil { @@ -128,10 +139,20 @@ func resourceTencentCloudCbsSnapshotSharePermissionDelete(d *schema.ResourceData logId := tccommon.GetLogId(tccommon.ContextNil) ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := CbsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} snapshotId := d.Id() - snapshotSharePermissions, err := service.DescribeCbsSnapshotSharePermissionById(ctx, snapshotId) + snapshotSharePermissions := []*cbs.SharePermission{} + + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := service.DescribeCbsSnapshotSharePermissionById(ctx, snapshotId) + if e != nil { + return tccommon.RetryError(e) + } + + snapshotSharePermissions = result + return nil + }) + if err != nil { return err } @@ -140,6 +161,7 @@ func resourceTencentCloudCbsSnapshotSharePermissionDelete(d *schema.ResourceData for _, snapshotSharePermission := range snapshotSharePermissions { accountIds = append(accountIds, *snapshotSharePermission.AccountId) } + if err := service.ModifySnapshotsSharePermission(ctx, snapshotId, SNAPSHOT_SHARE_PERMISSION_CANCEL, accountIds); err != nil { return err } diff --git a/tencentcloud/services/cbs/resource_tc_cbs_snapshot_share_permission.md b/tencentcloud/services/cbs/resource_tc_cbs_snapshot_share_permission.md index d5cf62e621..b1351c38e4 100644 --- a/tencentcloud/services/cbs/resource_tc_cbs_snapshot_share_permission.md +++ b/tencentcloud/services/cbs/resource_tc_cbs_snapshot_share_permission.md @@ -1,18 +1,18 @@ -Provides a resource to create a cbs snapshot_share_permission +Provides a resource to create a CBS snapshot share permission Example Usage ```hcl -resource "tencentcloud_cbs_snapshot_share_permission" "snapshot_share_permission" { - account_ids = ["1xxxxxx", "2xxxxxx"] - snapshot_id = "snap-xxxxxx" +resource "tencentcloud_cbs_snapshot_share_permission" "example" { + account_ids = ["10002320****", "10002277****"] + snapshot_id = "snap-cs5kj0j8" } ``` Import -cbs snapshot_share_permission can be imported using the id, e.g. +CBS snapshot share permission can be imported using the id, e.g. ``` -terraform import tencentcloud_cbs_snapshot_share_permission.snapshot_share_permission snap-xxxxxx -``` \ No newline at end of file +terraform import tencentcloud_cbs_snapshot_share_permission.example snap-cs5kj0j8 +``` diff --git a/tencentcloud/services/cbs/resource_tc_cbs_storage.go b/tencentcloud/services/cbs/resource_tc_cbs_storage.go index 6b2e1dea2b..efd78db42c 100644 --- a/tencentcloud/services/cbs/resource_tc_cbs_storage.go +++ b/tencentcloud/services/cbs/resource_tc_cbs_storage.go @@ -248,7 +248,15 @@ func resourceTencentCloudCbsStorageCreate(d *schema.ResourceData, meta interface return err } if v, ok := d.GetOk("disk_backup_quota"); ok { - err = cbsService.ModifyDiskBackupQuota(ctx, storageId, v.(int)) + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + e := cbsService.ModifyDiskBackupQuota(ctx, storageId, v.(int)) + if e != nil { + return tccommon.RetryError(e, tccommon.InternalError) + } + + return nil + }) + if err != nil { return err } diff --git a/website/docs/r/cbs_snapshot_share_permission.html.markdown b/website/docs/r/cbs_snapshot_share_permission.html.markdown index 01e6adcce3..86764ef43f 100644 --- a/website/docs/r/cbs_snapshot_share_permission.html.markdown +++ b/website/docs/r/cbs_snapshot_share_permission.html.markdown @@ -4,19 +4,19 @@ layout: "tencentcloud" page_title: "TencentCloud: tencentcloud_cbs_snapshot_share_permission" sidebar_current: "docs-tencentcloud-resource-cbs_snapshot_share_permission" description: |- - Provides a resource to create a cbs snapshot_share_permission + Provides a resource to create a CBS snapshot share permission --- # tencentcloud_cbs_snapshot_share_permission -Provides a resource to create a cbs snapshot_share_permission +Provides a resource to create a CBS snapshot share permission ## Example Usage ```hcl -resource "tencentcloud_cbs_snapshot_share_permission" "snapshot_share_permission" { - account_ids = ["1xxxxxx", "2xxxxxx"] - snapshot_id = "snap-xxxxxx" +resource "tencentcloud_cbs_snapshot_share_permission" "example" { + account_ids = ["10002320****", "10002277****"] + snapshot_id = "snap-cs5kj0j8" } ``` @@ -37,9 +37,9 @@ In addition to all arguments above, the following attributes are exported: ## Import -cbs snapshot_share_permission can be imported using the id, e.g. +CBS snapshot share permission can be imported using the id, e.g. ``` -terraform import tencentcloud_cbs_snapshot_share_permission.snapshot_share_permission snap-xxxxxx +terraform import tencentcloud_cbs_snapshot_share_permission.example snap-cs5kj0j8 ```