diff --git a/.changelog/2680.txt b/.changelog/2680.txt new file mode 100644 index 0000000000..f9b9d1eca1 --- /dev/null +++ b/.changelog/2680.txt @@ -0,0 +1,3 @@ +```release-note:enhancement +resource/tencentcloud_clb_instance: Change the record list type to a set to solve the order problem. +``` diff --git a/tencentcloud/services/teo/resource_tc_teo_origin_group.go b/tencentcloud/services/teo/resource_tc_teo_origin_group.go index b979c440cb..843f8d560b 100644 --- a/tencentcloud/services/teo/resource_tc_teo_origin_group.go +++ b/tencentcloud/services/teo/resource_tc_teo_origin_group.go @@ -51,7 +51,7 @@ func ResourceTencentCloudTeoOriginGroup() *schema.Resource { }, "records": { - Type: schema.TypeList, + Type: schema.TypeSet, Required: true, Description: "Origin site records.", Elem: &schema.Resource{ @@ -173,7 +173,7 @@ func resourceTencentCloudTeoOriginGroupCreate(d *schema.ResourceData, meta inter zoneId = v.(string) } - request.ZoneId = &zoneId + request.ZoneId = helper.String(zoneId) if v, ok := d.GetOk("name"); ok { request.Name = helper.String(v.(string)) @@ -184,7 +184,7 @@ func resourceTencentCloudTeoOriginGroupCreate(d *schema.ResourceData, meta inter } if v, ok := d.GetOk("records"); ok { - for _, item := range v.([]interface{}) { + for _, item := range v.(*schema.Set).List() { recordsMap := item.(map[string]interface{}) originRecord := teo.OriginRecord{} if v, ok := recordsMap["record"]; ok { @@ -398,9 +398,9 @@ func resourceTencentCloudTeoOriginGroupUpdate(d *schema.ResourceData, meta inter if needChange { request := teo.NewModifyOriginGroupRequest() - request.ZoneId = &zoneId + request.ZoneId = helper.String(zoneId) - request.GroupId = &originGroupId + request.GroupId = helper.String(originGroupId) if v, ok := d.GetOk("name"); ok { request.Name = helper.String(v.(string)) @@ -411,7 +411,7 @@ func resourceTencentCloudTeoOriginGroupUpdate(d *schema.ResourceData, meta inter } if v, ok := d.GetOk("records"); ok { - for _, item := range v.([]interface{}) { + for _, item := range v.(*schema.Set).List() { recordsMap := item.(map[string]interface{}) originRecord := teo.OriginRecord{} if v, ok := recordsMap["record"]; ok { @@ -487,13 +487,9 @@ func resourceTencentCloudTeoOriginGroupDelete(d *schema.ResourceData, meta inter response = teo.NewDeleteOriginGroupResponse() ) - if v, ok := d.GetOk("zone_id"); ok { - zoneId = v.(string) - } - - request.ZoneId = &zoneId + request.ZoneId = helper.String(zoneId) - request.GroupId = &originGroupId + request.GroupId = helper.String(originGroupId) err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseTeoClient().DeleteOriginGroupWithContext(ctx, request) @@ -506,7 +502,7 @@ func resourceTencentCloudTeoOriginGroupDelete(d *schema.ResourceData, meta inter return nil }) if err != nil { - log.Printf("[CRITAL]%s create teo origin group failed, reason:%+v", logId, err) + log.Printf("[CRITAL]%s delete teo origin group failed, reason:%+v", logId, err) return err } diff --git a/tencentcloud/services/teo/resource_tc_teo_origin_group_test.go b/tencentcloud/services/teo/resource_tc_teo_origin_group_test.go index 390ecb7344..631ef3fece 100644 --- a/tencentcloud/services/teo/resource_tc_teo_origin_group_test.go +++ b/tencentcloud/services/teo/resource_tc_teo_origin_group_test.go @@ -30,11 +30,19 @@ func TestAccTencentCloudTeoOriginGroup_basic(t *testing.T) { resource.TestCheckResourceAttrSet("tencentcloud_teo_origin_group.basic", "zone_id"), resource.TestCheckResourceAttr("tencentcloud_teo_origin_group.basic", "name", "keep-group-1"), resource.TestCheckResourceAttr("tencentcloud_teo_origin_group.basic", "type", "GENERAL"), - resource.TestCheckResourceAttr("tencentcloud_teo_origin_group.basic", "records.#", "1"), + resource.TestCheckResourceAttr("tencentcloud_teo_origin_group.basic", "records.#", "3"), resource.TestCheckResourceAttrSet("tencentcloud_teo_origin_group.basic", "records.0.record"), - resource.TestCheckResourceAttr("tencentcloud_teo_origin_group.basic", "records.0.type", "IP_DOMAIN"), - resource.TestCheckResourceAttr("tencentcloud_teo_origin_group.basic", "records.0.weight", "100"), - resource.TestCheckResourceAttr("tencentcloud_teo_origin_group.basic", "records.0.private", "false"), + resource.TestCheckResourceAttrSet("tencentcloud_teo_origin_group.basic", "records.0.type"), + resource.TestCheckResourceAttrSet("tencentcloud_teo_origin_group.basic", "records.0.weight"), + resource.TestCheckResourceAttrSet("tencentcloud_teo_origin_group.basic", "records.0.private"), + resource.TestCheckResourceAttrSet("tencentcloud_teo_origin_group.basic", "records.1.record"), + resource.TestCheckResourceAttrSet("tencentcloud_teo_origin_group.basic", "records.1.type"), + resource.TestCheckResourceAttrSet("tencentcloud_teo_origin_group.basic", "records.1.weight"), + resource.TestCheckResourceAttrSet("tencentcloud_teo_origin_group.basic", "records.1.private"), + resource.TestCheckResourceAttrSet("tencentcloud_teo_origin_group.basic", "records.2.record"), + resource.TestCheckResourceAttrSet("tencentcloud_teo_origin_group.basic", "records.2.type"), + resource.TestCheckResourceAttrSet("tencentcloud_teo_origin_group.basic", "records.2.weight"), + resource.TestCheckResourceAttrSet("tencentcloud_teo_origin_group.basic", "records.2.private"), ), }, { @@ -127,6 +135,18 @@ resource "tencentcloud_teo_origin_group" "basic" { weight = 100 private = false } + records { + private = false + record = "21.1.1.1" + type = "IP_DOMAIN" + weight = 100 + } + records { + private = false + record = "21.1.1.2" + type = "IP_DOMAIN" + weight = 11 + } } ` diff --git a/tencentcloud/services/teo/service_tencentcloud_teo.go b/tencentcloud/services/teo/service_tencentcloud_teo.go index ab3e68198b..68d34d3146 100644 --- a/tencentcloud/services/teo/service_tencentcloud_teo.go +++ b/tencentcloud/services/teo/service_tencentcloud_teo.go @@ -990,7 +990,7 @@ func (me *TeoService) DescribeTeoOriginGroupById(ctx context.Context, originGrou request := teo.NewDescribeOriginGroupRequest() advancedFilter := &teo.AdvancedFilter{ Name: helper.String("origin-group-id"), - Values: []*string{&originGroupId}, + Values: []*string{helper.String(originGroupId)}, } request.Filters = append(request.Filters, advancedFilter) diff --git a/website/docs/r/teo_origin_group.html.markdown b/website/docs/r/teo_origin_group.html.markdown index 4018694e01..8d569a0b5b 100644 --- a/website/docs/r/teo_origin_group.html.markdown +++ b/website/docs/r/teo_origin_group.html.markdown @@ -41,7 +41,7 @@ resource "tencentcloud_teo_origin_group" "basic" { The following arguments are supported: -* `records` - (Required, List) Origin site records. +* `records` - (Required, Set) Origin site records. * `type` - (Required, String) Type of the origin site. Valid values: - `GENERAL`: Universal origin site group, only supports adding IP/domain name origin sites, which can be referenced by domain name service, rule engine, four-layer proxy, general load balancing, and HTTP-specific load balancing. - `HTTP`: The HTTP-specific origin site group, supports adding IP/domain name and object storage origin site as the origin site, it cannot be referenced by the four-layer proxy, it can only be added to the acceleration domain name, rule engine-modify origin site, and HTTP-specific load balancing reference.