diff --git a/.changelog/3074.txt b/.changelog/3074.txt new file mode 100644 index 0000000000..112f2bb4ab --- /dev/null +++ b/.changelog/3074.txt @@ -0,0 +1,3 @@ +```release-note:enhancement +resource/tencentcloud_cls_logset: update code +``` diff --git a/tencentcloud/services/cls/resource_tc_cls_logset.go b/tencentcloud/services/cls/resource_tc_cls_logset.go index 51d305c824..cf798e386b 100644 --- a/tencentcloud/services/cls/resource_tc_cls_logset.go +++ b/tencentcloud/services/cls/resource_tc_cls_logset.go @@ -31,6 +31,12 @@ func ResourceTencentCloudClsLogset() *schema.Resource { Description: "Logset name, which must be unique.", }, + "tags": { + Type: schema.TypeMap, + Optional: true, + Description: "Tag description list.", + }, + "create_time": { Type: schema.TypeString, Computed: true, @@ -48,12 +54,6 @@ func ResourceTencentCloudClsLogset() *schema.Resource { Computed: true, Description: "If assumer_uin is not empty, it indicates the service provider who creates the logset.", }, - - "tags": { - Type: schema.TypeMap, - Optional: true, - Description: "Tag description list.", - }, }, } } @@ -62,11 +62,11 @@ func resourceTencentCloudClsLogsetCreate(d *schema.ResourceData, meta interface{ defer tccommon.LogElapsed("resource.tencentcloud_cls_logset.create")() defer tccommon.InconsistentCheck(d, meta)() - logId := tccommon.GetLogId(tccommon.ContextNil) - var ( + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) request = cls.NewCreateLogsetRequest() - response *cls.CreateLogsetResponse + response = cls.NewCreateLogsetResponse() ) if v, ok := d.GetOk("logset_name"); ok { @@ -81,6 +81,11 @@ func resourceTencentCloudClsLogsetCreate(d *schema.ResourceData, meta interface{ log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } + + if result == nil || result.Response == nil { + return resource.NonRetryableError(fmt.Errorf("Create cls logset failed, Response is nil.")) + } + response = result return nil }) @@ -90,9 +95,13 @@ func resourceTencentCloudClsLogsetCreate(d *schema.ResourceData, meta interface{ return err } + if response.Response.LogsetId == nil { + return fmt.Errorf("LogsetId is nil.") + } + logsetId := *response.Response.LogsetId + d.SetId(logsetId) - ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) if tags := helper.GetTags(d, "tags"); len(tags) > 0 { tagService := svctag.NewTagService(meta.(tccommon.ProviderMeta).GetAPIV3Conn()) region := meta.(tccommon.ProviderMeta).GetAPIV3Conn().Region @@ -101,7 +110,7 @@ func resourceTencentCloudClsLogsetCreate(d *schema.ResourceData, meta interface{ return err } } - d.SetId(logsetId) + return resourceTencentCloudClsLogsetRead(d, meta) } @@ -109,15 +118,14 @@ func resourceTencentCloudClsLogsetRead(d *schema.ResourceData, meta interface{}) defer tccommon.LogElapsed("resource.tencentcloud_cls_logset.read")() defer tccommon.InconsistentCheck(d, meta)() - logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - - service := ClsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - - logsetId := d.Id() + var ( + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = ClsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + logsetId = d.Id() + ) logset, err := service.DescribeClsLogset(ctx, logsetId) - if err != nil { return err } @@ -149,6 +157,7 @@ func resourceTencentCloudClsLogsetRead(d *schema.ResourceData, meta interface{}) if err != nil { return err } + _ = d.Set("tags", tags) return nil @@ -158,32 +167,33 @@ func resourceTencentCloudClsLogsetUpdate(d *schema.ResourceData, meta interface{ defer tccommon.LogElapsed("resource.tencentcloud_cls_logset.update")() defer tccommon.InconsistentCheck(d, meta)() - logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - - request := cls.NewModifyLogsetRequest() - - request.LogsetId = helper.String(d.Id()) + var ( + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + ) if d.HasChange("logset_name") { + request := cls.NewModifyLogsetRequest() + request.LogsetId = helper.String(d.Id()) if v, ok := d.GetOk("logset_name"); ok { request.LogsetName = helper.String(v.(string)) } - } - err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { - result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseClsClient().ModifyLogset(request) - if e != nil { - return tccommon.RetryError(e) - } else { - log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", - logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) - } - return nil - }) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseClsClient().ModifyLogset(request) + if e != nil { + return tccommon.RetryError(e) + } else { + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) + } - if err != nil { - return err + return nil + }) + + if err != nil { + return err + } } if d.HasChange("tags") { @@ -204,11 +214,12 @@ func resourceTencentCloudClsLogsetDelete(d *schema.ResourceData, meta interface{ defer tccommon.LogElapsed("resource.tencentcloud_cls_logset.delete")() defer tccommon.InconsistentCheck(d, meta)() - logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - - service := ClsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - logsetId := d.Id() + var ( + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = ClsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + logsetId = d.Id() + ) if err := service.DeleteClsLogsetById(ctx, logsetId); err != nil { return err diff --git a/tencentcloud/services/cls/resource_tc_cls_logset.md b/tencentcloud/services/cls/resource_tc_cls_logset.md index e5afdae64e..4c2ca9ca56 100644 --- a/tencentcloud/services/cls/resource_tc_cls_logset.md +++ b/tencentcloud/services/cls/resource_tc_cls_logset.md @@ -1,19 +1,18 @@ -Provides a resource to create a cls logset +Provides a resource to create a CLS logset Example Usage ```hcl -resource "tencentcloud_cls_logset" "logset" { - logset_name = "demo" +resource "tencentcloud_cls_logset" "example" { + logset_name = "tf-example" tags = { - "createdBy" = "terraform" + createdBy = "Terraform" } } - ``` Import -cls logset can be imported using the id, e.g. +CLS logset can be imported using the id, e.g. ``` -$ terraform import tencentcloud_cls_logset.logset logset_id +$ terraform import tencentcloud_cls_logset.example 698902ff-8b5a-4c65-824b-d8956f366351 ``` \ No newline at end of file diff --git a/tencentcloud/services/cls/service_tencentcloud_cls.go b/tencentcloud/services/cls/service_tencentcloud_cls.go index c13111b321..3fe934ea95 100644 --- a/tencentcloud/services/cls/service_tencentcloud_cls.go +++ b/tencentcloud/services/cls/service_tencentcloud_cls.go @@ -4,6 +4,7 @@ import ( "context" "log" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" cls "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cls/v20201016" @@ -97,14 +98,22 @@ func (me *ClsService) DeleteClsLogsetById(ctx context.Context, logsetId string) } }() - ratelimit.Check(request.GetAction()) - response, err := me.client.UseClsClient().DeleteLogset(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + result, e := me.client.UseClsClient().DeleteLogset(request) + if e != nil { + return tccommon.RetryError(e) + } else { + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) + } + + return nil + }) + if err != nil { - errRet = err return err } - log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", - logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) return } diff --git a/website/docs/r/cls_logset.html.markdown b/website/docs/r/cls_logset.html.markdown index 0e7c649b9d..ea18fcfda9 100644 --- a/website/docs/r/cls_logset.html.markdown +++ b/website/docs/r/cls_logset.html.markdown @@ -4,20 +4,20 @@ layout: "tencentcloud" page_title: "TencentCloud: tencentcloud_cls_logset" sidebar_current: "docs-tencentcloud-resource-cls_logset" description: |- - Provides a resource to create a cls logset + Provides a resource to create a CLS logset --- # tencentcloud_cls_logset -Provides a resource to create a cls logset +Provides a resource to create a CLS logset ## Example Usage ```hcl -resource "tencentcloud_cls_logset" "logset" { - logset_name = "demo" +resource "tencentcloud_cls_logset" "example" { + logset_name = "tf-example" tags = { - "createdBy" = "terraform" + createdBy = "Terraform" } } ``` @@ -41,8 +41,8 @@ In addition to all arguments above, the following attributes are exported: ## Import -cls logset can be imported using the id, e.g. +CLS logset can be imported using the id, e.g. ``` -$ terraform import tencentcloud_cls_logset.logset logset_id +$ terraform import tencentcloud_cls_logset.example 698902ff-8b5a-4c65-824b-d8956f366351 ```