Skip to content

Commit cc7b3a2

Browse files
authored
support cam policy (#1271)
1 parent ddc9c8a commit cc7b3a2

File tree

4 files changed

+42
-13
lines changed

4 files changed

+42
-13
lines changed

tencentcloud/common.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ const logIdKey = contextLogId("logId")
3333
const (
3434
PROVIDER_READ_RETRY_TIMEOUT = "TENCENTCLOUD_READ_RETRY_TIMEOUT"
3535
PROVIDER_WRITE_RETRY_TIMEOUT = "TENCENTCLOUD_WRITE_RETRY_TIMEOUT"
36+
PROVIDER_WAIT_READ_TIMEOUT = "TENCENTCLOUD_WAIT_READ_TIMEOUT"
3637

3738
SWEEPER_NEED_PROTECT = "SWEEPER_NEED_PROTECT"
3839
TENCENTCLOUD_COMMON_TIME_LAYOUT = "2006-01-02 15:04:05"
@@ -51,6 +52,11 @@ var readRetryTimeout = time.Duration(readRetry) * time.Minute
5152
var writeRetry = getEnvDefault(PROVIDER_WRITE_RETRY_TIMEOUT, 5)
5253
var writeRetryTimeout = time.Duration(writeRetry) * time.Minute
5354

55+
// writeRetryTimeout is write retry timeout
56+
//const writeRetryTimeout = 5 * time.Minute
57+
var waitRead = getEnvDefault(PROVIDER_WAIT_READ_TIMEOUT, 1)
58+
var waitReadTimeout = time.Duration(waitRead) * time.Second
59+
5460
//const writeRetryTimeout = 5 * time.Minute
5561
var needProtect = getEnvDefault(SWEEPER_NEED_PROTECT, 0)
5662

tencentcloud/resource_tc_instance.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -708,6 +708,22 @@ func resourceTencentCloudInstanceCreate(d *schema.ResourceData, meta interface{}
708708
request.UserData = &userData
709709
}
710710

711+
if v := helper.GetTags(d, "tags"); len(v) > 0 {
712+
tags := make([]*cvm.Tag, 0)
713+
for tagKey, tagValue := range v {
714+
tag := cvm.Tag{
715+
Key: helper.String(tagKey),
716+
Value: helper.String(tagValue),
717+
}
718+
tags = append(tags, &tag)
719+
}
720+
tagSpecification := cvm.TagSpecification{
721+
ResourceType: helper.String("instance"),
722+
Tags: tags,
723+
}
724+
request.TagSpecification = append(request.TagSpecification, &tagSpecification)
725+
}
726+
711727
instanceId := ""
712728

713729
err := resource.Retry(writeRetryTimeout, func() *resource.RetryError {

tencentcloud/resource_tc_vpc.go

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ import (
4444
"context"
4545
"fmt"
4646
"log"
47+
"time"
4748

4849
vpc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc/v20170312"
4950

@@ -142,6 +143,7 @@ func resourceTencentCloudVpcInstanceCreate(d *schema.ResourceData, meta interfac
142143
cidrBlock string
143144
dnsServers = make([]string, 0, 4)
144145
isMulticast bool
146+
tags map[string]string
145147
)
146148
if temp, ok := d.GetOk("name"); ok {
147149
name = temp.(string)
@@ -166,7 +168,10 @@ func resourceTencentCloudVpcInstanceCreate(d *schema.ResourceData, meta interfac
166168
}
167169
isMulticast = d.Get("is_multicast").(bool)
168170

169-
vpcId, _, err := vpcService.CreateVpc(ctx, name, cidrBlock, isMulticast, dnsServers)
171+
if temp := helper.GetTags(d, "tags"); len(temp) > 0 {
172+
tags = temp
173+
}
174+
vpcId, _, err := vpcService.CreateVpc(ctx, name, cidrBlock, isMulticast, dnsServers, tags)
170175
if err != nil {
171176
return err
172177
}
@@ -183,17 +188,8 @@ func resourceTencentCloudVpcInstanceCreate(d *schema.ResourceData, meta interfac
183188
return err
184189
}
185190
}
186-
187-
if tags := helper.GetTags(d, "tags"); len(tags) > 0 {
188-
tagService := TagService{client: meta.(*TencentCloudClient).apiV3Conn}
189-
190-
region := meta.(*TencentCloudClient).apiV3Conn.Region
191-
resourceName := fmt.Sprintf("qcs::vpc:%s:uin/:vpc/%s", region, vpcId)
192-
193-
if err := tagService.ModifyTags(ctx, resourceName, tags, nil); err != nil {
194-
return err
195-
}
196-
}
191+
// protected while tag is not ready, default is 1s
192+
time.Sleep(waitReadTimeout)
197193

198194
return resourceTencentCloudVpcInstanceRead(d, meta)
199195
}

tencentcloud/service_tencentcloud_vpc.go

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ func (me *VpcService) fillFilter(ins []*vpc.Filter, key, value string) (outs []*
174174

175175
// ////////api
176176
func (me *VpcService) CreateVpc(ctx context.Context, name, cidr string,
177-
isMulticast bool, dnsServers []string) (vpcId string, isDefault bool, errRet error) {
177+
isMulticast bool, dnsServers []string, tags map[string]string) (vpcId string, isDefault bool, errRet error) {
178178

179179
logId := getLogId(ctx)
180180
request := vpc.NewCreateVpcRequest()
@@ -197,6 +197,17 @@ func (me *VpcService) CreateVpc(ctx context.Context, name, cidr string,
197197
request.DnsServers = append(request.DnsServers, &dnsServers[index])
198198
}
199199
}
200+
201+
if len(tags) > 0 {
202+
for tagKey, tagValue := range tags {
203+
tag := vpc.Tag{
204+
Key: helper.String(tagKey),
205+
Value: helper.String(tagValue),
206+
}
207+
request.Tags = append(request.Tags, &tag)
208+
}
209+
}
210+
200211
var response *vpc.CreateVpcResponse
201212
if err := resource.Retry(readRetryTimeout, func() *resource.RetryError {
202213
ratelimit.Check(request.GetAction())

0 commit comments

Comments
 (0)