Skip to content

Commit 6e3af00

Browse files
committed
add
1 parent a711045 commit 6e3af00

File tree

4 files changed

+114
-70
lines changed

4 files changed

+114
-70
lines changed

tencentcloud/services/clb/resource_tc_clb_log_set.go

Lines changed: 101 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,16 @@ package clb
33
import (
44
"context"
55
"fmt"
6-
"time"
6+
"log"
77

8+
"github.com/pkg/errors"
9+
clb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb/v20180317"
810
tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common"
911
svccls "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/cls"
1012

1113
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper"
1214

15+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
1316
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
1417
)
1518

@@ -22,6 +25,20 @@ func ResourceTencentCloudClbLogSet() *schema.Resource {
2225
State: schema.ImportStatePassthrough,
2326
},
2427
Schema: map[string]*schema.Schema{
28+
"logset_name": {
29+
Type: schema.TypeString,
30+
Optional: true,
31+
Computed: true,
32+
ForceNew: true,
33+
Description: "Logset name, which must be unique among all CLS logsets; default value: clb_logset.",
34+
},
35+
"logset_type": {
36+
Type: schema.TypeString,
37+
Optional: true,
38+
Computed: true,
39+
ForceNew: true,
40+
Description: "Logset type. Valid values: ACCESS (access logs; default value) and HEALTH (health check logs).",
41+
},
2542
"period": {
2643
Type: schema.TypeInt,
2744
Optional: true,
@@ -31,6 +48,7 @@ func ResourceTencentCloudClbLogSet() *schema.Resource {
3148
"name": {
3249
Type: schema.TypeString,
3350
Computed: true,
51+
Deprecated: "It has been deprecated from version 1.81.162+. Please use `logset_name` instead.",
3452
Description: "Logset name, which unique and fixed `clb_logset` among all CLS logsets.",
3553
},
3654
"create_time": {
@@ -47,64 +65,105 @@ func ResourceTencentCloudClbLogSet() *schema.Resource {
4765
}
4866
}
4967

50-
func resourceTencentCloudClbLogSetRead(d *schema.ResourceData, meta interface{}) error {
51-
defer tccommon.LogElapsed("resource.tencentcloud_clb_logset.read")()
52-
defer tccommon.InconsistentCheck(d, meta)()
68+
func resourceTencentCloudClbLogSetCreate(d *schema.ResourceData, meta interface{}) error {
69+
defer tccommon.LogElapsed("resource.tencentcloud_clb_logset.create")()
70+
defer clbActionMu.Unlock()
71+
clbActionMu.Lock()
5372

54-
logId := tccommon.GetLogId(tccommon.ContextNil)
55-
ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId)
56-
service := svccls.NewClsService(meta.(tccommon.ProviderMeta).GetAPIV3Conn())
73+
var (
74+
logId = tccommon.GetLogId(tccommon.ContextNil)
75+
ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId)
76+
service = ClbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()}
77+
)
5778

58-
id := d.Id()
79+
_, _, err := service.DescribeClbLogSet(ctx)
80+
if err != nil {
81+
return err
82+
}
5983

60-
info, err := service.DescribeClsLogset(ctx, id)
84+
request := clb.NewCreateClsLogSetRequest()
85+
response := clb.NewCreateClsLogSetResponse()
86+
if v, ok := d.GetOk("logset_name"); ok {
87+
request.LogsetName = helper.String(v.(string))
88+
}
89+
90+
if v, ok := d.GetOk("logset_type"); ok {
91+
request.LogsetType = helper.String(v.(string))
92+
}
93+
94+
if v, ok := d.GetOkExists("period"); ok {
95+
request.Period = helper.IntUint64(v.(int))
96+
}
97+
98+
err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError {
99+
result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseClbClient().CreateClsLogSet(request)
100+
if e != nil {
101+
return tccommon.RetryError(e)
102+
} else {
103+
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
104+
if result == nil || result.Response == nil || result.Response.RequestId == nil {
105+
return resource.NonRetryableError(fmt.Errorf("Create cls logset failed. Response is nil."))
106+
}
107+
108+
requestId := *result.Response.RequestId
109+
retryErr := waitForTaskFinish(requestId, meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseClbClient())
110+
if retryErr != nil {
111+
return tccommon.RetryError(errors.WithStack(retryErr))
112+
}
113+
}
114+
115+
response = result
116+
return nil
117+
})
61118

62119
if err != nil {
63120
return err
64121
}
65122

66-
if info == nil {
67-
d.SetId("")
68-
return fmt.Errorf("resource `Logset` %s does not exist", id)
123+
if response.Response.LogsetId == nil {
124+
return fmt.Errorf("LogsetId is nil.")
69125
}
70126

71-
_ = d.Set("name", info.LogsetName)
127+
d.SetId(*response.Response.LogsetId)
72128

73-
_ = d.Set("create_time", info.CreateTime)
74-
_ = d.Set("topic_count", helper.Int64ToStr(*info.TopicCount))
75-
76-
return nil
129+
return resourceTencentCloudClbLogSetRead(d, meta)
77130
}
78131

79-
func resourceTencentCloudClbLogSetCreate(d *schema.ResourceData, meta interface{}) error {
80-
defer tccommon.LogElapsed("resource.tencentcloud_clb_logset.create")()
81-
defer clbActionMu.Unlock()
82-
clbActionMu.Lock()
132+
func resourceTencentCloudClbLogSetRead(d *schema.ResourceData, meta interface{}) error {
133+
defer tccommon.LogElapsed("resource.tencentcloud_clb_logset.read")()
134+
defer tccommon.InconsistentCheck(d, meta)()
83135

84-
logId := tccommon.GetLogId(tccommon.ContextNil)
85-
ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId)
86-
service := ClbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()}
136+
var (
137+
logId = tccommon.GetLogId(tccommon.ContextNil)
138+
ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId)
139+
service = svccls.NewClsService(meta.(tccommon.ProviderMeta).GetAPIV3Conn())
140+
id = d.Id()
141+
)
87142

88-
_, _, err := service.DescribeClbLogSet(ctx)
143+
info, err := service.DescribeClsLogset(ctx, id)
89144
if err != nil {
90145
return err
91146
}
92147

93-
var (
94-
period = d.Get("period").(int)
95-
)
148+
if info == nil {
149+
d.SetId("")
150+
return fmt.Errorf("resource `Logset` %s does not exist", id)
151+
}
96152

97-
// We're not support specify name and health logs for now
98-
id, err := service.CreateClbLogSet(ctx, "clb_logset", "", period)
153+
if info.LogsetName != nil {
154+
_ = d.Set("logset_name", info.LogsetName)
155+
_ = d.Set("name", info.LogsetName)
156+
}
99157

100-
if err != nil {
101-
return err
158+
if info.CreateTime != nil {
159+
_ = d.Set("create_time", info.CreateTime)
102160
}
103-
//加一个创建保护
104-
time.Sleep(3 * time.Second)
105-
d.SetId(id)
106161

107-
return resourceTencentCloudClbLogSetRead(d, meta)
162+
if info.TopicCount != nil {
163+
_ = d.Set("topic_count", helper.Int64ToStrPoint(*info.TopicCount))
164+
}
165+
166+
return nil
108167
}
109168

110169
func resourceTencentCloudClbLogSetDelete(d *schema.ResourceData, meta interface{}) error {
@@ -113,10 +172,12 @@ func resourceTencentCloudClbLogSetDelete(d *schema.ResourceData, meta interface{
113172
clbActionMu.Lock()
114173
defer clbActionMu.Unlock()
115174

116-
logId := tccommon.GetLogId(tccommon.ContextNil)
117-
ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId)
118-
service := svccls.NewClsService(meta.(tccommon.ProviderMeta).GetAPIV3Conn())
119-
id := d.Id()
175+
var (
176+
logId = tccommon.GetLogId(tccommon.ContextNil)
177+
ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId)
178+
service = svccls.NewClsService(meta.(tccommon.ProviderMeta).GetAPIV3Conn())
179+
id = d.Id()
180+
)
120181

121182
if err := service.DeleteClsLogsetById(ctx, id); err != nil {
122183
return err

tencentcloud/services/clb/resource_tc_clb_log_set.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,10 @@ Provides a resource to create an exclusive CLB Logset.
33
Example Usage
44

55
```hcl
6-
resource "tencentcloud_clb_log_set" "foo" {
7-
period = 7
6+
resource "tencentcloud_clb_log_set" "example" {
7+
logset_name = "tf-example"
8+
logset_type = "ACCESS"
9+
period = 7
810
}
911
```
1012

@@ -13,5 +15,5 @@ Import
1315
CLB log set can be imported using the id, e.g.
1416

1517
```
16-
$ terraform import tencentcloud_clb_logset.foo 4eb9e3a8-9c42-4b32-9ddf-e215e9c92764
18+
$ terraform import tencentcloud_clb_logset.example 4eb9e3a8-9c42-4b32-9ddf-e215e9c92764
1719
```

tencentcloud/services/clb/service_tencentcloud_clb.go

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1659,29 +1659,6 @@ func (me *ClbService) DescribeClbLogSet(ctx context.Context) (logSetId string, h
16591659
return
16601660
}
16611661

1662-
func (me *ClbService) CreateClbLogSet(ctx context.Context, name string, logsetType string, period int) (id string, errRet error) {
1663-
logId := tccommon.GetLogId(ctx)
1664-
request := clb.NewCreateClsLogSetRequest()
1665-
request.Period = helper.IntUint64(period)
1666-
request.LogsetName = &name
1667-
if logsetType != "" {
1668-
request.LogsetType = &logsetType
1669-
}
1670-
ratelimit.Check(request.GetAction())
1671-
response, err := me.client.UseClbClient().CreateClsLogSet(request)
1672-
if err != nil {
1673-
errRet = err
1674-
return
1675-
}
1676-
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n",
1677-
logId, request.GetAction(), request.ToJsonString(), response.ToJsonString())
1678-
1679-
if response.Response != nil {
1680-
id = *response.Response.LogsetId
1681-
}
1682-
return
1683-
}
1684-
16851662
func (me *ClbService) UpdateClsLogSet(ctx context.Context, request *cls.ModifyLogsetRequest) (errRet error) {
16861663
logId := tccommon.GetLogId(ctx)
16871664

website/docs/r/clb_log_set.html.markdown

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,19 @@ Provides a resource to create an exclusive CLB Logset.
1414
## Example Usage
1515

1616
```hcl
17-
resource "tencentcloud_clb_log_set" "foo" {
18-
period = 7
17+
resource "tencentcloud_clb_log_set" "example" {
18+
logset_name = "tf-example"
19+
logset_type = "ACCESS"
20+
period = 7
1921
}
2022
```
2123

2224
## Argument Reference
2325

2426
The following arguments are supported:
2527

28+
* `logset_name` - (Optional, String, ForceNew) Logset name, which must be unique among all CLS logsets; default value: clb_logset.
29+
* `logset_type` - (Optional, String, ForceNew) Logset type. Valid values: ACCESS (access logs; default value) and HEALTH (health check logs).
2630
* `period` - (Optional, Int, ForceNew) Logset retention period in days. Maximun value is `90`.
2731

2832
## Attributes Reference
@@ -31,7 +35,7 @@ In addition to all arguments above, the following attributes are exported:
3135

3236
* `id` - ID of the resource.
3337
* `create_time` - Logset creation time.
34-
* `name` - Logset name, which unique and fixed `clb_logset` among all CLS logsets.
38+
* `name` - (**Deprecated**) It has been deprecated from version 1.81.162+. Please use `logset_name` instead. Logset name, which unique and fixed `clb_logset` among all CLS logsets.
3539
* `topic_count` - Number of log topics in logset.
3640

3741

@@ -40,6 +44,6 @@ In addition to all arguments above, the following attributes are exported:
4044
CLB log set can be imported using the id, e.g.
4145

4246
```
43-
$ terraform import tencentcloud_clb_logset.foo 4eb9e3a8-9c42-4b32-9ddf-e215e9c92764
47+
$ terraform import tencentcloud_clb_logset.example 4eb9e3a8-9c42-4b32-9ddf-e215e9c92764
4448
```
4549

0 commit comments

Comments
 (0)