From fbf365a7ded90b08d411d34ed25dae57d832bd8f Mon Sep 17 00:00:00 2001 From: "guimin.hgm" Date: Sat, 25 Jan 2025 11:14:12 +0800 Subject: [PATCH] resource/alicloud_cloud_monitor_service_basic_public: Improves the invoking api method and supports refreshing credential automatically --- ...loud_cloud_monitor_service_basic_public.go | 25 +--------- ...rvice_alicloud_cloud_monitor_service_v2.go | 49 +++++-------------- 2 files changed, 15 insertions(+), 59 deletions(-) diff --git a/alicloud/resource_alicloud_cloud_monitor_service_basic_public.go b/alicloud/resource_alicloud_cloud_monitor_service_basic_public.go index a3cf6abdedae..959705a9ff3a 100644 --- a/alicloud/resource_alicloud_cloud_monitor_service_basic_public.go +++ b/alicloud/resource_alicloud_cloud_monitor_service_basic_public.go @@ -8,7 +8,6 @@ import ( "time" "github.com/PaesslerAG/jsonpath" - util "github.com/alibabacloud-go/tea-utils/service" "github.com/aliyun/terraform-provider-alicloud/alicloud/connectivity" "github.com/hashicorp/terraform-plugin-sdk/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/helper/schema" @@ -36,9 +35,7 @@ func resourceAliCloudCloudMonitorServiceBasicPublic() *schema.Resource { } func resourceAliCloudCloudMonitorServiceBasicPublicCreate(d *schema.ResourceData, meta interface{}) error { - client := meta.(*connectivity.AliyunClient) - action := "CreateInstance" var request map[string]interface{} var response map[string]interface{} @@ -48,20 +45,16 @@ func resourceAliCloudCloudMonitorServiceBasicPublicCreate(d *schema.ResourceData request = make(map[string]interface{}) request["ClientToken"] = buildClientToken(action) - request["ProductCode"] = "cms" request["ProductType"] = "cms_basic_public_cn" if client.IsInternationalAccount() { request["ProductType"] = "cms_basic_public_intl" } request["SubscriptionType"] = "PayAsYouGo" - runtime := util.RuntimeOptions{} - runtime.SetAutoretry(true) wait := incrementalWait(3*time.Second, 5*time.Second) err = resource.Retry(d.Timeout(schema.TimeoutCreate), func() *resource.RetryError { response, err = client.RpcPostWithEndpoint("BssOpenApi", "2017-12-14", action, query, request, true, endpoint) request["ClientToken"] = buildClientToken(action) - if err != nil { if NeedRetry(err) { wait() @@ -121,20 +114,14 @@ func resourceAliCloudCloudMonitorServiceBasicPublicDelete(d *schema.ResourceData action := "StopPostPayQuota" var request map[string]interface{} var response map[string]interface{} + var err error query := make(map[string]interface{}) - conn, err := client.NewCloudmonitorserviceClient() - if err != nil { - return WrapError(err) - } request = make(map[string]interface{}) query["InstanceId"] = d.Id() request["PostType"] = "postPayV2" - runtime := util.RuntimeOptions{} - runtime.SetAutoretry(true) wait := incrementalWait(3*time.Second, 5*time.Second) err = resource.Retry(d.Timeout(schema.TimeoutDelete), func() *resource.RetryError { - response, err = conn.DoRequest(StringPointer(action), nil, StringPointer("POST"), StringPointer("2019-01-01"), StringPointer("AK"), query, request, &runtime) - + response, err = client.RpcPost("Cms", "2019-01-01", action, query, request, false) if err != nil { if NeedRetry(err) { wait() @@ -157,11 +144,3 @@ func resourceAliCloudCloudMonitorServiceBasicPublicDelete(d *schema.ResourceData } return nil } - -func convertCloudMonitorServicePostTypeRequest(source interface{}) interface{} { - switch source { - case "cms_basic_public_cn": - return "postPayV2" - } - return source -} diff --git a/alicloud/service_alicloud_cloud_monitor_service_v2.go b/alicloud/service_alicloud_cloud_monitor_service_v2.go index 8d95c252fef4..5b21aa7ae4a3 100644 --- a/alicloud/service_alicloud_cloud_monitor_service_v2.go +++ b/alicloud/service_alicloud_cloud_monitor_service_v2.go @@ -272,12 +272,9 @@ func (s *CloudMonitorServiceServiceV2) DescribeCloudMonitorServiceBasicPublic(id client := s.client var request map[string]interface{} var response map[string]interface{} + var endpoint string var query map[string]interface{} action := "QueryAvailableInstances" - conn, err := client.NewBssopenapiClient() - if err != nil { - return object, WrapError(err) - } request = make(map[string]interface{}) query = make(map[string]interface{}) query["InstanceIDs"] = id @@ -288,13 +285,17 @@ func (s *CloudMonitorServiceServiceV2) DescribeCloudMonitorServiceBasicPublic(id runtime.SetAutoretry(true) wait := incrementalWait(3*time.Second, 5*time.Second) err = resource.Retry(1*time.Minute, func() *resource.RetryError { - response, err = conn.DoRequest(StringPointer(action), nil, StringPointer("POST"), StringPointer("2017-12-14"), StringPointer("AK"), query, request, &runtime) + response, err = client.RpcPostWithEndpoint("BssOpenApi", "2017-12-14", action, query, request, true, endpoint) if err != nil { if NeedRetry(err) { wait() return resource.RetryableError(err) } + if !client.IsInternationalAccount() && IsExpectedErrors(err, []string{"NotApplicable"}) { + endpoint = connectivity.BssOpenAPIEndpointInternational + return resource.RetryableError(err) + } return resource.NonRetryableError(err) } addDebug(action, response, request) @@ -458,12 +459,9 @@ func (s *CloudMonitorServiceServiceV2) DescribeCloudMonitorServiceNaamPublic(id client := s.client var request map[string]interface{} var response map[string]interface{} + var endpoint string var query map[string]interface{} action := "QueryAvailableInstances" - conn, err := client.NewBssopenapiClient() - if err != nil { - return object, WrapError(err) - } request = make(map[string]interface{}) query = make(map[string]interface{}) query["InstanceIDs"] = id @@ -471,20 +469,21 @@ func (s *CloudMonitorServiceServiceV2) DescribeCloudMonitorServiceNaamPublic(id request["SubscriptionType"] = "PayAsYouGo" request["ProductCode"] = "cms" request["ProductType"] = "cms_naam_public_cn" - runtime := util.RuntimeOptions{} - runtime.SetAutoretry(true) + if client.IsInternationalAccount() { + request["ProductType"] = "cms_naam_public_intl" + } wait := incrementalWait(3*time.Second, 5*time.Second) err = resource.Retry(1*time.Minute, func() *resource.RetryError { - response, err = conn.DoRequest(StringPointer(action), nil, StringPointer("POST"), StringPointer("2017-12-14"), StringPointer("AK"), query, request, &runtime) + response, err = client.RpcPostWithEndpoint("BssOpenApi", "2017-12-14", action, query, request, true, endpoint) if err != nil { if NeedRetry(err) { wait() return resource.RetryableError(err) } - if IsExpectedErrors(err, []string{"NotApplicable"}) { + if !client.IsInternationalAccount() && IsExpectedErrors(err, []string{"NotApplicable"}) { request["ProductType"] = "cms_naam_public_intl" - conn.Endpoint = String(connectivity.BssOpenAPIEndpointInternational) + endpoint = connectivity.BssOpenAPIEndpointInternational return resource.RetryableError(err) } return resource.NonRetryableError(err) @@ -524,26 +523,4 @@ func (s *CloudMonitorServiceServiceV2) DescribeCloudMonitorServiceNaamPublic(id return object, WrapErrorf(Error(GetNotFoundMessage("NaamPublic", id)), NotFoundMsg, response) } -func (s *CloudMonitorServiceServiceV2) CloudMonitorServiceNaamPublicStateRefreshFunc(id string, field string, failStates []string) resource.StateRefreshFunc { - return func() (interface{}, string, error) { - object, err := s.DescribeCloudMonitorServiceNaamPublic(id) - if err != nil { - if NotFoundError(err) { - return nil, "", nil - } - return nil, "", WrapError(err) - } - - v, err := jsonpath.Get(field, object) - currentStatus := fmt.Sprint(v) - - for _, failState := range failStates { - if currentStatus == failState { - return object, currentStatus, WrapError(Error(FailedToReachTargetStatus, currentStatus)) - } - } - return object, currentStatus, nil - } -} - // DescribeCloudMonitorServiceNaamPublic >>> Encapsulated.