From 75125c3d15f99bb022d4ed3a81eedd5ea62bf807 Mon Sep 17 00:00:00 2001 From: chenhanzhang Date: Wed, 29 Oct 2025 15:42:59 +0800 Subject: [PATCH] resource/alicloud_esa_site: Added the field paused. --- alicloud/resource_alicloud_esa_site.go | 47 ++++++++++----------- alicloud/resource_alicloud_esa_site_test.go | 40 ++++++++++-------- alicloud/service_alicloud_esa_v2.go | 32 +++++++------- go.sum | 1 + website/docs/r/esa_site.html.markdown | 17 +++----- 5 files changed, 70 insertions(+), 67 deletions(-) diff --git a/alicloud/resource_alicloud_esa_site.go b/alicloud/resource_alicloud_esa_site.go index 91a311b2bbce..6eb98ec81726 100644 --- a/alicloud/resource_alicloud_esa_site.go +++ b/alicloud/resource_alicloud_esa_site.go @@ -23,12 +23,12 @@ func resourceAliCloudEsaSite() *schema.Resource { Timeouts: &schema.ResourceTimeout{ Create: schema.DefaultTimeout(5 * time.Minute), Update: schema.DefaultTimeout(5 * time.Minute), - Delete: schema.DefaultTimeout(5 * time.Minute), + Delete: schema.DefaultTimeout(15 * time.Minute), }, Schema: map[string]*schema.Schema{ "access_type": { Type: schema.TypeString, - Optional: true, + Required: true, ForceNew: true, }, "add_client_geolocation_header": { @@ -91,6 +91,10 @@ func resourceAliCloudEsaSite() *schema.Resource { Optional: true, Computed: true, }, + "paused": { + Type: schema.TypeBool, + Optional: true, + }, "resource_group_id": { Type: schema.TypeString, Optional: true, @@ -141,7 +145,6 @@ func resourceAliCloudEsaSiteCreate(d *schema.ResourceData, meta interface{}) err query := make(map[string]interface{}) var err error request = make(map[string]interface{}) - request["RegionId"] = client.RegionId request["Coverage"] = d.Get("coverage") if v, ok := d.GetOk("resource_group_id"); ok { @@ -304,22 +307,19 @@ func resourceAliCloudEsaSiteUpdate(d *schema.ResourceData, meta interface{}) err update := false d.Partial(true) + esaServiceV2 := EsaServiceV2{client} + objectRaw, _ := esaServiceV2.DescribeEsaSite(d.Id()) + if d.HasChange("version_management") { var err error - esaServiceV2 := EsaServiceV2{client} - object, err := esaServiceV2.DescribeEsaSite(d.Id()) - if err != nil { - return WrapError(err) - } - target := d.Get("version_management").(bool) - if object["VersionManagement"].(bool) != target { + if objectRaw["VersionManagement"].(bool) != target { if target == true { action := "ActivateVersionManagement" request = make(map[string]interface{}) query = make(map[string]interface{}) request["SiteId"] = d.Id() - request["RegionId"] = client.RegionId + wait := incrementalWait(3*time.Second, 5*time.Second) err = resource.Retry(d.Timeout(schema.TimeoutUpdate), func() *resource.RetryError { response, err = client.RpcPost("ESA", "2024-09-10", action, query, request, true) @@ -343,7 +343,7 @@ func resourceAliCloudEsaSiteUpdate(d *schema.ResourceData, meta interface{}) err request = make(map[string]interface{}) query = make(map[string]interface{}) request["SiteId"] = d.Id() - request["RegionId"] = client.RegionId + wait := incrementalWait(3*time.Second, 5*time.Second) err = resource.Retry(d.Timeout(schema.TimeoutUpdate), func() *resource.RetryError { response, err = client.RpcPost("ESA", "2024-09-10", action, query, request, true) @@ -370,7 +370,7 @@ func resourceAliCloudEsaSiteUpdate(d *schema.ResourceData, meta interface{}) err request = make(map[string]interface{}) query = make(map[string]interface{}) request["SiteId"] = d.Id() - request["RegionId"] = client.RegionId + if !d.IsNewResource() && d.HasChange("coverage") { update = true } @@ -436,7 +436,7 @@ func resourceAliCloudEsaSiteUpdate(d *schema.ResourceData, meta interface{}) err request = make(map[string]interface{}) query = make(map[string]interface{}) request["SiteId"] = d.Id() - request["RegionId"] = client.RegionId + if d.HasChange("cache_architecture_mode") { update = true } @@ -464,7 +464,7 @@ func resourceAliCloudEsaSiteUpdate(d *schema.ResourceData, meta interface{}) err request = make(map[string]interface{}) query = make(map[string]interface{}) request["SiteId"] = d.Id() - request["RegionId"] = client.RegionId + if d.HasChange("add_real_client_ip_header") { update = true request["AddRealClientIpHeader"] = d.Get("add_real_client_ip_header") @@ -503,7 +503,7 @@ func resourceAliCloudEsaSiteUpdate(d *schema.ResourceData, meta interface{}) err request = make(map[string]interface{}) query = make(map[string]interface{}) request["SiteId"] = d.Id() - request["RegionId"] = client.RegionId + if d.HasChange("cross_border_optimization") { update = true } @@ -531,7 +531,7 @@ func resourceAliCloudEsaSiteUpdate(d *schema.ResourceData, meta interface{}) err request = make(map[string]interface{}) query = make(map[string]interface{}) request["SiteId"] = d.Id() - request["RegionId"] = client.RegionId + if d.HasChange("site_name_exclusive") { update = true } @@ -559,7 +559,7 @@ func resourceAliCloudEsaSiteUpdate(d *schema.ResourceData, meta interface{}) err request = make(map[string]interface{}) query = make(map[string]interface{}) request["SiteId"] = d.Id() - request["RegionId"] = client.RegionId + if d.HasChange("flatten_mode") { update = true } @@ -587,7 +587,7 @@ func resourceAliCloudEsaSiteUpdate(d *schema.ResourceData, meta interface{}) err request = make(map[string]interface{}) query = make(map[string]interface{}) request["SiteId"] = d.Id() - request["RegionId"] = client.RegionId + if d.HasChange("seo_bypass") { update = true } @@ -615,7 +615,7 @@ func resourceAliCloudEsaSiteUpdate(d *schema.ResourceData, meta interface{}) err request = make(map[string]interface{}) query = make(map[string]interface{}) request["SiteId"] = d.Id() - request["RegionId"] = client.RegionId + if d.HasChange("case_insensitive") { update = true request["CaseInsensitive"] = d.Get("case_insensitive") @@ -654,7 +654,7 @@ func resourceAliCloudEsaSiteUpdate(d *schema.ResourceData, meta interface{}) err request = make(map[string]interface{}) query = make(map[string]interface{}) request["SiteId"] = d.Id() - request["RegionId"] = client.RegionId + if d.HasChange("development_mode") { update = true } @@ -682,7 +682,7 @@ func resourceAliCloudEsaSiteUpdate(d *schema.ResourceData, meta interface{}) err request = make(map[string]interface{}) query = make(map[string]interface{}) request["SiteId"] = d.Id() - request["RegionId"] = client.RegionId + if d.HasChange("paused") { update = true } @@ -710,7 +710,7 @@ func resourceAliCloudEsaSiteUpdate(d *schema.ResourceData, meta interface{}) err request = make(map[string]interface{}) query = make(map[string]interface{}) request["SiteId"] = d.Id() - request["RegionId"] = client.RegionId + if d.HasChange("cache_reserve_instance_id") { update = true request["CacheReserveInstanceId"] = d.Get("cache_reserve_instance_id") @@ -764,7 +764,6 @@ func resourceAliCloudEsaSiteDelete(d *schema.ResourceData, meta interface{}) err wait := incrementalWait(3*time.Second, 5*time.Second) err = resource.Retry(d.Timeout(schema.TimeoutDelete), func() *resource.RetryError { response, err = client.RpcPost("ESA", "2024-09-10", action, query, request, true) - if err != nil { if IsExpectedErrors(err, []string{"Site.ServiceBusy"}) || NeedRetry(err) { wait() diff --git a/alicloud/resource_alicloud_esa_site_test.go b/alicloud/resource_alicloud_esa_site_test.go index dbbd4b498e3f..90edc217196f 100644 --- a/alicloud/resource_alicloud_esa_site_test.go +++ b/alicloud/resource_alicloud_esa_site_test.go @@ -19,7 +19,7 @@ func TestAccAliCloudEsaSite_basic8490(t *testing.T) { rac := resourceAttrCheckInit(rc, ra) testAccCheck := rac.resourceAttrMapUpdateSet() rand := acctest.RandIntRange(10000, 99999) - name := fmt.Sprintf("bcd%d.com", rand) + name := fmt.Sprintf("bcd%d.queniuwk.cn", rand) testAccConfig := resourceTestAccConfigFunc(resourceId, name, AlicloudEsaSiteBasicDependence8490) resource.Test(t, resource.TestCase{ PreCheck: func() { @@ -50,13 +50,11 @@ func TestAccAliCloudEsaSite_basic8490(t *testing.T) { }, { Config: testAccConfig(map[string]interface{}{ - "coverage": "global", - "resource_group_id": "${data.alicloud_resource_manager_resource_groups.default.ids.1}", + "coverage": "global", }), Check: resource.ComposeTestCheckFunc( testAccCheck(map[string]string{ - "coverage": "global", - "resource_group_id": CHECKSET, + "coverage": "global", }), ), }, @@ -151,7 +149,7 @@ func TestAccAliCloudEsaSite_basic8484(t *testing.T) { rac := resourceAttrCheckInit(rc, ra) testAccCheck := rac.resourceAttrMapUpdateSet() rand := acctest.RandIntRange(10000, 99999) - name := fmt.Sprintf("bcd%d.com", rand) + name := fmt.Sprintf("bcd%d.queniuwk.cn", rand) testAccConfig := resourceTestAccConfigFunc(resourceId, name, AlicloudEsaSiteBasicDependence8484) resource.Test(t, resource.TestCase{ PreCheck: func() { @@ -182,13 +180,21 @@ func TestAccAliCloudEsaSite_basic8484(t *testing.T) { }, { Config: testAccConfig(map[string]interface{}{ - "coverage": "global", - "resource_group_id": "${data.alicloud_resource_manager_resource_groups.default.ids.1}", + "coverage": "global", }), Check: resource.ComposeTestCheckFunc( testAccCheck(map[string]string{ - "coverage": "global", - "resource_group_id": CHECKSET, + "coverage": "global", + }), + ), + }, + { + Config: testAccConfig(map[string]interface{}{ + "paused": "false", + }), + Check: resource.ComposeTestCheckFunc( + testAccCheck(map[string]string{ + "paused": "false", }), ), }, @@ -284,7 +290,7 @@ func TestAccAliCloudEsaSite_basic8288(t *testing.T) { rac := resourceAttrCheckInit(rc, ra) testAccCheck := rac.resourceAttrMapUpdateSet() rand := acctest.RandIntRange(10000, 99999) - name := fmt.Sprintf("bcd%d.com", rand) + name := fmt.Sprintf("bcd%d.queniuwk.cn", rand) testAccConfig := resourceTestAccConfigFunc(resourceId, name, AlicloudEsaSiteBasicDependence8288) resource.Test(t, resource.TestCase{ PreCheck: func() { @@ -315,13 +321,11 @@ func TestAccAliCloudEsaSite_basic8288(t *testing.T) { }, { Config: testAccConfig(map[string]interface{}{ - "coverage": "global", - "resource_group_id": "${data.alicloud_resource_manager_resource_groups.default.ids.1}", + "coverage": "global", }), Check: resource.ComposeTestCheckFunc( testAccCheck(map[string]string{ - "coverage": "global", - "resource_group_id": CHECKSET, + "coverage": "global", }), ), }, @@ -417,7 +421,7 @@ func TestAccAliCloudEsaSite_basic8106(t *testing.T) { rac := resourceAttrCheckInit(rc, ra) testAccCheck := rac.resourceAttrMapUpdateSet() rand := acctest.RandIntRange(10000, 99999) - name := fmt.Sprintf("bcd%d.com", rand) + name := fmt.Sprintf("bcd%d.queniuwk.cn", rand) testAccConfig := resourceTestAccConfigFunc(resourceId, name, AlicloudEsaSiteBasicDependence8106) resource.Test(t, resource.TestCase{ PreCheck: func() { @@ -550,7 +554,7 @@ func TestAccAliCloudEsaSite_basic9798(t *testing.T) { rac := resourceAttrCheckInit(rc, ra) testAccCheck := rac.resourceAttrMapUpdateSet() rand := acctest.RandIntRange(10000, 99999) - name := fmt.Sprintf("bcd%d.com", rand) + name := fmt.Sprintf("bcd%d.queniuwk.cn", rand) testAccConfig := resourceTestAccConfigFunc(resourceId, name, AlicloudEsaSiteBasicDependence9798) resource.Test(t, resource.TestCase{ PreCheck: func() { @@ -678,7 +682,7 @@ func TestAccAliCloudEsaSite_basic10677(t *testing.T) { rac := resourceAttrCheckInit(rc, ra) testAccCheck := rac.resourceAttrMapUpdateSet() rand := acctest.RandIntRange(10000, 99999) - name := fmt.Sprintf("bcd%d.com", rand) + name := fmt.Sprintf("bcd%d.queniuwk.cn", rand) testAccConfig := resourceTestAccConfigFunc(resourceId, name, AlicloudEsaSiteBasicDependence10677) resource.Test(t, resource.TestCase{ PreCheck: func() { diff --git a/alicloud/service_alicloud_esa_v2.go b/alicloud/service_alicloud_esa_v2.go index 53e384465701..2009331c68fd 100644 --- a/alicloud/service_alicloud_esa_v2.go +++ b/alicloud/service_alicloud_esa_v2.go @@ -28,7 +28,7 @@ func (s *EsaServiceV2) DescribeEsaSite(id string) (object map[string]interface{} request = make(map[string]interface{}) query = make(map[string]interface{}) query["SiteId"] = id - query["RegionId"] = client.RegionId + action := "GetSite" wait := incrementalWait(3*time.Second, 5*time.Second) @@ -102,7 +102,7 @@ func (s *EsaServiceV2) DescribeSiteGetManagedTransform(id string) (object map[st request = make(map[string]interface{}) query = make(map[string]interface{}) query["SiteId"] = id - query["RegionId"] = client.RegionId + action := "GetManagedTransform" wait := incrementalWait(3*time.Second, 5*time.Second) @@ -136,7 +136,7 @@ func (s *EsaServiceV2) DescribeSiteGetCacheTag(id string) (object map[string]int request = make(map[string]interface{}) query = make(map[string]interface{}) query["SiteId"] = id - query["RegionId"] = client.RegionId + action := "GetCacheTag" wait := incrementalWait(3*time.Second, 5*time.Second) @@ -204,7 +204,7 @@ func (s *EsaServiceV2) DescribeSiteGetCacheReserve(id string) (object map[string request = make(map[string]interface{}) query = make(map[string]interface{}) query["SiteId"] = id - query["RegionId"] = client.RegionId + action := "GetCacheReserve" wait := incrementalWait(3*time.Second, 5*time.Second) @@ -238,7 +238,7 @@ func (s *EsaServiceV2) DescribeSiteGetTieredCache(id string) (object map[string] request = make(map[string]interface{}) query = make(map[string]interface{}) query["SiteId"] = id - query["RegionId"] = client.RegionId + action := "GetTieredCache" wait := incrementalWait(3*time.Second, 5*time.Second) @@ -272,7 +272,7 @@ func (s *EsaServiceV2) DescribeSiteGetCrossBorderOptimization(id string) (object request = make(map[string]interface{}) query = make(map[string]interface{}) query["SiteId"] = id - query["RegionId"] = client.RegionId + action := "GetCrossBorderOptimization" wait := incrementalWait(3*time.Second, 5*time.Second) @@ -306,7 +306,7 @@ func (s *EsaServiceV2) DescribeSiteGetSiteNameExclusive(id string) (object map[s request = make(map[string]interface{}) query = make(map[string]interface{}) query["SiteId"] = id - query["RegionId"] = client.RegionId + action := "GetSiteNameExclusive" wait := incrementalWait(3*time.Second, 5*time.Second) @@ -340,7 +340,7 @@ func (s *EsaServiceV2) DescribeSiteGetCnameFlattening(id string) (object map[str request = make(map[string]interface{}) query = make(map[string]interface{}) query["SiteId"] = id - query["RegionId"] = client.RegionId + action := "GetCnameFlattening" wait := incrementalWait(3*time.Second, 5*time.Second) @@ -374,7 +374,7 @@ func (s *EsaServiceV2) DescribeSiteGetSeoBypass(id string) (object map[string]in request = make(map[string]interface{}) query = make(map[string]interface{}) query["SiteId"] = id - query["RegionId"] = client.RegionId + action := "GetSeoBypass" wait := incrementalWait(3*time.Second, 5*time.Second) @@ -408,7 +408,7 @@ func (s *EsaServiceV2) DescribeSiteGetDevelopmentMode(id string) (object map[str request = make(map[string]interface{}) query = make(map[string]interface{}) query["SiteId"] = id - query["RegionId"] = client.RegionId + action := "GetDevelopmentMode" wait := incrementalWait(3*time.Second, 5*time.Second) @@ -442,7 +442,7 @@ func (s *EsaServiceV2) DescribeSiteGetSitePause(id string) (object map[string]in request = make(map[string]interface{}) query = make(map[string]interface{}) query["SiteId"] = id - query["RegionId"] = client.RegionId + action := "GetSitePause" wait := incrementalWait(3*time.Second, 5*time.Second) @@ -470,15 +470,18 @@ func (s *EsaServiceV2) DescribeSiteGetSitePause(id string) (object map[string]in } func (s *EsaServiceV2) EsaSiteStateRefreshFunc(id string, field string, failStates []string) resource.StateRefreshFunc { + return s.EsaSiteStateRefreshFuncWithApi(id, field, failStates, s.DescribeEsaSite) +} + +func (s *EsaServiceV2) EsaSiteStateRefreshFuncWithApi(id string, field string, failStates []string, call func(id string) (map[string]interface{}, error)) resource.StateRefreshFunc { return func() (interface{}, string, error) { - object, err := s.DescribeEsaSite(id) + object, err := call(id) if err != nil { if NotFoundError(err) { return nil, "", nil } return nil, "", WrapError(err) } - v, err := jsonpath.Get(field, object) currentStatus := fmt.Sprint(v) @@ -506,7 +509,6 @@ func (s *EsaServiceV2) DescribeAsyncEsaSiteStateRefreshFunc(d *schema.ResourceDa return nil, "", nil } } - v, err := jsonpath.Get(field, object) currentStatus := fmt.Sprint(v) @@ -1303,7 +1305,7 @@ func (s *EsaServiceV2) DescribeAsyncGetSite(d *schema.ResourceData, res map[stri request = make(map[string]interface{}) query = make(map[string]interface{}) query["SiteId"] = d.Id() - query["RegionId"] = client.RegionId + action := "GetSite" wait := incrementalWait(3*time.Second, 5*time.Second) diff --git a/go.sum b/go.sum index 83214f479be1..8abdf8678911 100644 --- a/go.sum +++ b/go.sum @@ -187,6 +187,7 @@ cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoIS dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/DataDog/zstd v1.5.5/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= github.com/HdrHistogram/hdrhistogram-go v1.1.2/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= github.com/Masterminds/goutils v1.1.0/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI= diff --git a/website/docs/r/esa_site.html.markdown b/website/docs/r/esa_site.html.markdown index 1509fba75d3d..1de64b6675f3 100644 --- a/website/docs/r/esa_site.html.markdown +++ b/website/docs/r/esa_site.html.markdown @@ -20,12 +20,6 @@ For information about ESA Site and how to use it, see [What is Site](https://www Basic Usage -
- ```terraform variable "name" { default = "terraform-example" @@ -65,7 +59,7 @@ resource "alicloud_esa_site" "default" { ## Argument Reference The following arguments are supported: -* `access_type` - (Optional, ForceNew) The DNS setup. Valid values: +* `access_type` - (Required, ForceNew) The DNS setup. Valid values: - `NS` - `CNAME` * `add_client_geolocation_header` - (Optional, Available since v1.244.0) Add visitor geolocation header. Value range: @@ -103,9 +97,12 @@ The following arguments are supported: * `ipv6_enable` - (Optional, Computed, Available since v1.244.0) Specifies whether to enable IPv6. Valid values: - `on` - `off` -* `ipv6_region` - (Optional, Available since v1.251.0) The region in which Ipv6 is enabled. The default value is x.x: +* `ipv6_region` - (Optional, Computed, Available since v1.251.0) The region in which Ipv6 is enabled. The default value is x.x: - 'x.x': Global. - 'Cn.cn ': Mainland China. +* `paused` - (Optional, Available since v1.262.0) Specifies whether to temporarily pause ESA on the website. If you set this parameter to true, all requests to the domains in your DNS records go directly to your origin server. Valid values: + - `true` + - `false` * `resource_group_id` - (Optional, ForceNew, Computed) The ID of the resource group * `seo_bypass` - (Optional, Available since v1.251.0) Release the search engine crawler configuration. Value: - `on` @@ -117,7 +114,7 @@ The following arguments are supported: * `site_version` - (Optional, Int, Available since v1.244.0) The version number of the site. For sites with version management enabled, you can use this parameter to specify the site version for which the configuration will take effect, defaulting to version 0. * `tag_name` - (Optional, Available since v1.251.0) Custom CacheTag name. * `tags` - (Optional, Map) Resource tags -* `version_management` - (Optional, Available since v1.251.0) Version management enabled. When true, version management is turned on for the table site. +* `version_management` - (Optional) Version management enabled. When true, version management is turned on for the table site. ## Attributes Reference @@ -130,7 +127,7 @@ The following attributes are exported: The `timeouts` block allows you to specify [timeouts](https://developer.hashicorp.com/terraform/language/resources/syntax#operation-timeouts) for certain actions: * `create` - (Defaults to 5 mins) Used when create the Site. -* `delete` - (Defaults to 5 mins) Used when delete the Site. +* `delete` - (Defaults to 15 mins) Used when delete the Site. * `update` - (Defaults to 5 mins) Used when update the Site. ## Import