alicloud/service_alicloud_ga.go (1,560 lines of code) (raw):
package alicloud
import (
"fmt"
"strings"
"time"
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
"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"
)
type GaService struct {
client *connectivity.AliyunClient
}
func (s *GaService) DescribeGaAccelerator(id string) (object map[string]interface{}, err error) {
var response map[string]interface{}
client := s.client
action := "DescribeAccelerator"
request := map[string]interface{}{
"RegionId": s.client.RegionId,
"AcceleratorId": id,
}
wait := incrementalWait(3*time.Second, 3*time.Second)
err = resource.Retry(5*time.Minute, func() *resource.RetryError {
response, err = client.RpcPost("Ga", "2019-11-20", action, nil, request, true)
if err != nil {
if NeedRetry(err) {
wait()
return resource.RetryableError(err)
}
return resource.NonRetryableError(err)
}
return nil
})
addDebug(action, response, request)
if err != nil {
if IsExpectedErrors(err, []string{"NotExist.Accelerator", "UnknownError"}) {
return object, WrapErrorf(NotFoundErr("Ga:Accelerator", id), NotFoundMsg, ProviderERROR, fmt.Sprint(response["RequestId"]))
}
return object, WrapErrorf(err, DefaultErrorMsg, id, action, AlibabaCloudSdkGoERROR)
}
v, err := jsonpath.Get("$", response)
if err != nil {
return object, WrapErrorf(err, FailedGetAttributeMsg, id, "$", response)
}
object = v.(map[string]interface{})
return object, nil
}
func (s *GaService) GaAcceleratorStateRefreshFunc(id string, failStates []string) resource.StateRefreshFunc {
return func() (interface{}, string, error) {
object, err := s.DescribeGaAccelerator(id)
if err != nil {
if NotFoundError(err) {
// Set this to nil as if we didn't find anything.
return nil, "", nil
}
return nil, "", WrapError(err)
}
for _, failState := range failStates {
if fmt.Sprint(object["State"]) == failState {
return object, fmt.Sprint(object["State"]), WrapError(Error(FailedToReachTargetStatus, fmt.Sprint(object["State"])))
}
}
return object, fmt.Sprint(object["State"]), nil
}
}
func (s *GaService) DescribeGaListener(id string) (object map[string]interface{}, err error) {
var response map[string]interface{}
client := s.client
action := "DescribeListener"
request := map[string]interface{}{
"RegionId": s.client.RegionId,
"ListenerId": id,
}
wait := incrementalWait(3*time.Second, 3*time.Second)
err = resource.Retry(5*time.Minute, func() *resource.RetryError {
response, err = client.RpcPost("Ga", "2019-11-20", action, nil, request, true)
if err != nil {
if NeedRetry(err) {
wait()
return resource.RetryableError(err)
}
return resource.NonRetryableError(err)
}
return nil
})
addDebug(action, response, request)
if err != nil {
if IsExpectedErrors(err, []string{"NotExist.Listener", "UnknownError"}) {
return object, WrapErrorf(NotFoundErr("Ga:GaListener", id), NotFoundMsg, ProviderERROR, fmt.Sprint(response["RequestId"]))
}
return object, WrapErrorf(err, DefaultErrorMsg, id, action, AlibabaCloudSdkGoERROR)
}
v, err := jsonpath.Get("$", response)
if err != nil {
return object, WrapErrorf(err, FailedGetAttributeMsg, id, "$", response)
}
object = v.(map[string]interface{})
return object, nil
}
func (s *GaService) GaListenerStateRefreshFunc(id string, failStates []string) resource.StateRefreshFunc {
return func() (interface{}, string, error) {
object, err := s.DescribeGaListener(id)
if err != nil {
if NotFoundError(err) {
// Set this to nil as if we didn't find anything.
return nil, "", nil
}
return nil, "", WrapError(err)
}
for _, failState := range failStates {
if fmt.Sprint(object["State"]) == failState {
return object, object["State"].(string), WrapError(Error(FailedToReachTargetStatus, object["State"].(string)))
}
}
return object, fmt.Sprint(object["State"]), nil
}
}
func (s *GaService) DescribeGaBandwidthPackage(id string) (object map[string]interface{}, err error) {
var response map[string]interface{}
client := s.client
action := "DescribeBandwidthPackage"
request := map[string]interface{}{
"RegionId": s.client.RegionId,
"BandwidthPackageId": id,
}
runtime := util.RuntimeOptions{}
runtime.SetAutoretry(true)
wait := incrementalWait(3*time.Second, 5*time.Second)
err = resource.Retry(5*time.Minute, func() *resource.RetryError {
response, err = client.RpcPost("Ga", "2019-11-20", action, nil, request, true)
if err != nil {
if NeedRetry(err) {
wait()
return resource.RetryableError(err)
}
return resource.NonRetryableError(err)
}
return nil
})
addDebug(action, response, request)
if err != nil {
if IsExpectedErrors(err, []string{"NotExist.BandwidthPackage"}) {
return object, WrapErrorf(NotFoundErr("Ga:BandwidthPackage", id), NotFoundWithResponse, response)
}
return object, WrapErrorf(err, DefaultErrorMsg, id, action, AlibabaCloudSdkGoERROR)
}
v, err := jsonpath.Get("$", response)
if err != nil {
return object, WrapErrorf(err, FailedGetAttributeMsg, id, "$", response)
}
object = v.(map[string]interface{})
return object, nil
}
func (s *GaService) GaBandwidthPackageStateRefreshFunc(id string, failStates []string) resource.StateRefreshFunc {
return func() (interface{}, string, error) {
object, err := s.DescribeGaBandwidthPackage(id)
if err != nil {
if NotFoundError(err) {
// Set this to nil as if we didn't find anything.
return nil, "", nil
}
return nil, "", WrapError(err)
}
for _, failState := range failStates {
if fmt.Sprint(object["State"]) == failState {
return object, fmt.Sprint(object["State"]), WrapError(Error(FailedToReachTargetStatus, fmt.Sprint(object["State"])))
}
}
return object, fmt.Sprint(object["State"]), nil
}
}
func (s *GaService) DescribeGaEndpointGroup(id string) (object map[string]interface{}, err error) {
var response map[string]interface{}
client := s.client
action := "DescribeEndpointGroup"
request := map[string]interface{}{
"RegionId": s.client.RegionId,
"EndpointGroupId": id,
}
wait := incrementalWait(3*time.Second, 3*time.Second)
err = resource.Retry(5*time.Minute, func() *resource.RetryError {
response, err = client.RpcPost("Ga", "2019-11-20", action, nil, request, true)
if err != nil {
if NeedRetry(err) {
wait()
return resource.RetryableError(err)
}
return resource.NonRetryableError(err)
}
return nil
})
addDebug(action, response, request)
if err != nil {
if IsExpectedErrors(err, []string{"NotExist.EndPointGroup"}) {
return nil, WrapErrorf(NotFoundErr("Ga:EndpointGroup", id), NotFoundWithResponse, response)
}
return object, WrapErrorf(err, DefaultErrorMsg, id, action, AlibabaCloudSdkGoERROR)
}
v, err := jsonpath.Get("$", response)
if err != nil {
return object, WrapErrorf(err, FailedGetAttributeMsg, id, "$", response)
}
object = v.(map[string]interface{})
if object["State"] == nil {
return object, WrapErrorf(NotFoundErr("Ga:EndpointGroup", id), NotFoundWithResponse, response)
}
return object, nil
}
func (s *GaService) DescribeGaForwardingRule(id string) (object map[string]interface{}, err error) {
var response map[string]interface{}
client := s.client
action := "ListForwardingRules"
parts, err := ParseResourceId(id, 3)
if err != nil {
err = WrapError(err)
return
}
request := map[string]interface{}{
"RegionId": s.client.RegionId,
"ClientToken": buildClientToken("ListForwardingRules"),
"AcceleratorId": parts[0],
"ListenerId": parts[1],
"ForwardingRuleId": parts[2],
"MaxResults": PageSizeLarge,
}
idExist := false
for {
runtime := util.RuntimeOptions{}
runtime.SetAutoretry(true)
wait := incrementalWait(3*time.Second, 3*time.Second)
err = resource.Retry(5*time.Minute, func() *resource.RetryError {
response, err = client.RpcPost("Ga", "2019-11-20", action, nil, request, true)
if err != nil {
if IsExpectedErrors(err, []string{"StateError.Accelerator"}) || NeedRetry(err) {
wait()
return resource.RetryableError(err)
}
return resource.NonRetryableError(err)
}
return nil
})
addDebug(action, response, request)
if err != nil {
return object, WrapErrorf(err, DefaultErrorMsg, id, action, AlibabaCloudSdkGoERROR)
}
resp, err := jsonpath.Get("$.ForwardingRules", response)
if err != nil {
return object, WrapErrorf(err, FailedGetAttributeMsg, id, "$.ForwardingRules", response)
}
if v, ok := resp.([]interface{}); !ok || len(v) < 1 {
return object, WrapErrorf(NotFoundErr("Ga:ForwardingRule", id), NotFoundWithResponse, response)
}
for _, v := range resp.([]interface{}) {
if fmt.Sprint(v.(map[string]interface{})["ListenerId"]) == parts[1] && fmt.Sprint(v.(map[string]interface{})["ForwardingRuleId"]) == parts[2] {
idExist = true
return v.(map[string]interface{}), nil
}
}
if nextToken, ok := response["NextToken"].(string); ok && nextToken != "" {
request["NextToken"] = nextToken
} else {
break
}
}
if !idExist {
return object, WrapErrorf(NotFoundErr("Ga:ForwardingRule", id), NotFoundWithResponse, response)
}
return object, nil
}
func (s *GaService) DescribeGaIpSet(id string) (object map[string]interface{}, err error) {
client := s.client
request := map[string]interface{}{
"IpSetId": id,
"RegionId": s.client.RegionId,
}
var response map[string]interface{}
action := "DescribeIpSet"
wait := incrementalWait(3*time.Second, 3*time.Second)
err = resource.Retry(5*time.Minute, func() *resource.RetryError {
response, err = client.RpcPost("Ga", "2019-11-20", action, nil, request, true)
if err != nil {
if NeedRetry(err) {
wait()
return resource.RetryableError(err)
}
return resource.NonRetryableError(err)
}
return nil
})
addDebug(action, response, request)
if err != nil {
if IsExpectedErrors(err, []string{"UnknownError", "NotExist.IpSet"}) {
return object, WrapErrorf(NotFoundErr("Ga:IpSet", id), NotFoundWithResponse, response)
}
return object, WrapErrorf(err, DefaultErrorMsg, id, action, AlibabaCloudSdkGoERROR)
}
v, err := jsonpath.Get("$", response)
if err != nil {
return object, WrapErrorf(err, FailedGetAttributeMsg, id, "$", response)
}
object = v.(map[string]interface{})
if object["State"] == nil {
return object, WrapErrorf(NotFoundErr("Ga:IpSet", id), NotFoundWithResponse, response)
}
return object, nil
}
func (s *GaService) DescribeGaBandwidthPackageAttachment(id string) (object map[string]interface{}, err error) {
parts, err := ParseResourceId(id, 2)
if err != nil {
return nil, WrapError(err)
}
object, err = s.DescribeGaBandwidthPackage(fmt.Sprint(parts[1]))
if err != nil {
return object, WrapError(err)
}
idExist := false
if accelerators, ok := object["Accelerators"]; ok {
acceleratorList := accelerators.([]interface{})
for _, accelerator := range acceleratorList {
if accelerator == fmt.Sprint(parts[0]) {
idExist = true
return object, nil
}
}
}
if !idExist {
return object, WrapErrorf(NotFoundErr("Ga:BandwidthPackageAttachment", id), NotFoundMsg, ProviderERROR, fmt.Sprint(object["RequestId"]))
}
return object, nil
}
func (s *GaService) GaBandwidthPackageAttachmentStateRefreshFunc(id string, failStates []string) resource.StateRefreshFunc {
return func() (interface{}, string, error) {
object, err := s.DescribeGaBandwidthPackageAttachment(id)
if err != nil {
if NotFoundError(err) {
// Set this to nil as if we didn't find anything.
return nil, "", nil
}
return nil, "", WrapError(err)
}
for _, failState := range failStates {
if fmt.Sprint(object["State"]) == failState {
return object, fmt.Sprint(object["State"]), WrapError(Error(FailedToReachTargetStatus, fmt.Sprint(object["State"])))
}
}
return object, fmt.Sprint(object["State"]), nil
}
}
func (s *GaService) GaEndpointGroupStateRefreshFunc(id string, failStates []string) resource.StateRefreshFunc {
return func() (interface{}, string, error) {
object, err := s.DescribeGaEndpointGroup(id)
if err != nil {
if NotFoundError(err) {
// Set this to nil as if we didn't find anything.
return nil, "", nil
}
return nil, "", WrapError(err)
}
for _, failState := range failStates {
if object["State"].(string) == failState {
return object, object["State"].(string), WrapError(Error(FailedToReachTargetStatus, object["State"].(string)))
}
}
return object, object["State"].(string), nil
}
}
func (s *GaService) GaForwardingRuleStateRefreshFunc(id string, failStates []string) resource.StateRefreshFunc {
return func() (interface{}, string, error) {
object, err := s.DescribeGaForwardingRule(id)
if err != nil {
if NotFoundError(err) {
// Set this to nil as if we didn't find anything.
return nil, "", nil
}
return nil, "", WrapError(err)
}
for _, failState := range failStates {
if object["ForwardingRuleStatus"].(string) == failState {
return object, object["ForwardingRuleStatus"].(string), WrapError(Error(FailedToReachTargetStatus, object["ForwardingRuleStatus"].(string)))
}
}
return object, object["ForwardingRuleStatus"].(string), nil
}
}
func (s *GaService) GaIpSetStateRefreshFunc(d *schema.ResourceData, failStates []string) resource.StateRefreshFunc {
return func() (interface{}, string, error) {
object, err := s.DescribeGaIpSet(d.Id())
if err != nil {
if NotFoundError(err) {
return nil, "", nil
}
return nil, "", WrapError(err)
}
for _, failState := range failStates {
if fmt.Sprint(object["State"]) == failState {
return object, fmt.Sprint(object["State"]), WrapError(Error(FailedToReachTargetStatus, fmt.Sprint(object["State"])))
}
}
return object, fmt.Sprint(object["State"]), nil
}
}
func (s *GaService) DescribeAcceleratorAutoRenewAttribute(id string) (object map[string]interface{}, err error) {
var response map[string]interface{}
client := s.client
action := "DescribeAcceleratorAutoRenewAttribute"
request := map[string]interface{}{
"RegionId": s.client.RegionId,
"AcceleratorId": id,
}
wait := incrementalWait(3*time.Second, 3*time.Second)
err = resource.Retry(5*time.Minute, func() *resource.RetryError {
response, err = client.RpcPost("Ga", "2019-11-20", action, nil, request, true)
if err != nil {
if NeedRetry(err) || IsExpectedErrors(err, []string{"StateError.Accelerator"}) {
wait()
return resource.RetryableError(err)
}
return resource.NonRetryableError(err)
}
return nil
})
addDebug(action, response, request)
if err != nil {
return object, WrapErrorf(err, DefaultErrorMsg, id, action, AlibabaCloudSdkGoERROR)
}
v, err := jsonpath.Get("$", response)
if err != nil {
return object, WrapErrorf(err, FailedGetAttributeMsg, id, "$", response)
}
object = v.(map[string]interface{})
return object, nil
}
func (s *GaService) DescribeGaAcl(id string) (object map[string]interface{}, err error) {
var response map[string]interface{}
client := s.client
action := "GetAcl"
request := map[string]interface{}{
"RegionId": s.client.RegionId,
"AclId": id,
}
wait := incrementalWait(3*time.Second, 3*time.Second)
err = resource.Retry(5*time.Minute, func() *resource.RetryError {
response, err = client.RpcPost("Ga", "2019-11-20", action, nil, request, true)
if err != nil {
if NeedRetry(err) {
wait()
return resource.RetryableError(err)
}
return resource.NonRetryableError(err)
}
return nil
})
addDebug(action, response, request)
if err != nil {
if IsExpectedErrors(err, []string{"NotExist.Acl"}) {
return object, WrapErrorf(NotFoundErr("Ga:Acl", id), NotFoundMsg, ProviderERROR, fmt.Sprint(response["RequestId"]))
}
return object, WrapErrorf(err, DefaultErrorMsg, id, action, AlibabaCloudSdkGoERROR)
}
v, err := jsonpath.Get("$", response)
if err != nil {
return object, WrapErrorf(err, FailedGetAttributeMsg, id, "$", response)
}
object = v.(map[string]interface{})
return object, nil
}
func (s *GaService) GaAclStateRefreshFunc(id string, failStates []string) resource.StateRefreshFunc {
return func() (interface{}, string, error) {
object, err := s.DescribeGaAcl(id)
if err != nil {
if NotFoundError(err) {
// Set this to nil as if we didn't find anything.
return nil, "", nil
}
return nil, "", WrapError(err)
}
for _, failState := range failStates {
if fmt.Sprint(object["AclStatus"]) == failState {
return object, fmt.Sprint(object["AclStatus"]), WrapError(Error(FailedToReachTargetStatus, fmt.Sprint(object["AclStatus"])))
}
}
return object, fmt.Sprint(object["AclStatus"]), nil
}
}
func (s *GaService) GetAcl(id string) (object map[string]interface{}, err error) {
var response map[string]interface{}
client := s.client
action := "GetAcl"
request := map[string]interface{}{
"RegionId": s.client.RegionId,
"AclId": id,
}
wait := incrementalWait(3*time.Second, 3*time.Second)
err = resource.Retry(5*time.Minute, func() *resource.RetryError {
response, err = client.RpcPost("Ga", "2019-11-20", action, nil, request, true)
if err != nil {
if NeedRetry(err) {
wait()
return resource.RetryableError(err)
}
return resource.NonRetryableError(err)
}
return nil
})
addDebug(action, response, request)
if err != nil {
if IsExpectedErrors(err, []string{"NotExist.Acl"}) {
return object, WrapErrorf(NotFoundErr("Ga:Acl", id), NotFoundMsg, ProviderERROR, fmt.Sprint(response["RequestId"]))
}
return object, WrapErrorf(err, DefaultErrorMsg, id, action, AlibabaCloudSdkGoERROR)
}
v, err := jsonpath.Get("$", response)
if err != nil {
return object, WrapErrorf(err, FailedGetAttributeMsg, id, "$", response)
}
object = v.(map[string]interface{})
return object, nil
}
func (s *GaService) DescribeGaAclAttachment(id string) (object map[string]interface{}, err error) {
var response map[string]interface{}
client := s.client
action := "DescribeListener"
parts, err := ParseResourceId(id, 2)
if err != nil {
err = WrapError(err)
return
}
request := map[string]interface{}{
"RegionId": s.client.RegionId,
"ListenerId": parts[0],
}
idExist := false
wait := incrementalWait(3*time.Second, 3*time.Second)
err = resource.Retry(5*time.Minute, func() *resource.RetryError {
response, err = client.RpcPost("Ga", "2019-11-20", action, nil, request, true)
if err != nil {
if NeedRetry(err) {
wait()
return resource.RetryableError(err)
}
return resource.NonRetryableError(err)
}
return nil
})
addDebug(action, response, request)
if err != nil {
if IsExpectedErrors(err, []string{"NotExist.Listener"}) {
return object, WrapErrorf(NotFoundErr("Ga::AclAttachment", id), NotFoundWithResponse, response)
}
return object, WrapErrorf(err, DefaultErrorMsg, id, action, AlibabaCloudSdkGoERROR)
}
v, err := jsonpath.Get("$", response)
if err != nil {
return object, WrapErrorf(err, FailedGetAttributeMsg, id, "$", response)
}
resp, _ := v.(map[string]interface{})
if v, ok := resp["RelatedAcls"].([]interface{}); ok && len(v) > 0 {
for _, aclArgs := range v {
aclArg := aclArgs.(map[string]interface{})
if fmt.Sprint(aclArg["AclId"]) == parts[1] {
idExist = true
resp["status"] = aclArg["Status"]
return resp, nil
}
}
}
if !idExist {
return object, WrapErrorf(NotFoundErr("Ga::AclAttachment", id), NotFoundWithResponse, response)
}
return object, nil
}
func (s *GaService) GaAclAttachmentStateRefreshFunc(id string, failStates []string) resource.StateRefreshFunc {
return func() (interface{}, string, error) {
object, err := s.DescribeGaAclAttachment(id)
if err != nil {
if NotFoundError(err) {
// Set this to nil as if we didn't find anything.
return nil, "", nil
}
return nil, "", WrapError(err)
}
for _, failState := range failStates {
if fmt.Sprint(object["status"]) == failState {
return object, fmt.Sprint(object["status"]), WrapError(Error(FailedToReachTargetStatus, fmt.Sprint(object["RelatedAcls[*].Status"])))
}
}
return object, fmt.Sprint(object["status"]), nil
}
}
func (s *GaService) DescribeGaAdditionalCertificate(id string) (object map[string]interface{}, err error) {
var response map[string]interface{}
client := s.client
action := "ListListenerCertificates"
parts, err := ParseResourceId(id, 3)
if err != nil {
err = WrapError(err)
return
}
request := map[string]interface{}{
"RegionId": s.client.RegionId,
"AcceleratorId": parts[0],
"ListenerId": parts[1],
"Role": "additional",
"MaxResults": PageSizeMedium,
}
idExist := false
for {
runtime := util.RuntimeOptions{}
runtime.SetAutoretry(true)
wait := incrementalWait(3*time.Second, 3*time.Second)
err = resource.Retry(5*time.Minute, func() *resource.RetryError {
response, err = client.RpcPost("Ga", "2019-11-20", action, nil, request, true)
if err != nil {
if NeedRetry(err) {
wait()
return resource.RetryableError(err)
}
return resource.NonRetryableError(err)
}
return nil
})
addDebug(action, response, request)
if err != nil {
return object, WrapErrorf(err, DefaultErrorMsg, id, action, AlibabaCloudSdkGoERROR)
}
v, err := jsonpath.Get("$.Certificates", response)
if err != nil {
return object, WrapErrorf(err, FailedGetAttributeMsg, id, "$.Certificates", response)
}
if len(v.([]interface{})) < 1 {
return object, WrapErrorf(NotFoundErr("Ga", id), NotFoundWithResponse, response)
}
for _, v := range v.([]interface{}) {
if fmt.Sprint(v.(map[string]interface{})["Domain"]) == parts[2] {
idExist = true
return v.(map[string]interface{}), nil
}
}
if nextToken, ok := response["NextToken"].(string); ok && nextToken != "" {
request["NextToken"] = nextToken
} else {
break
}
}
if !idExist {
return object, WrapErrorf(NotFoundErr("Ga", id), NotFoundWithResponse, response)
}
return
}
func (s *GaService) DescribeGaAcceleratorSpareIpAttachment(id string) (object map[string]interface{}, err error) {
var response map[string]interface{}
client := s.client
action := "GetSpareIp"
parts, err := ParseResourceId(id, 2)
if err != nil {
err = WrapError(err)
return
}
request := map[string]interface{}{
"RegionId": s.client.RegionId,
"AcceleratorId": parts[0],
"SpareIp": parts[1],
}
wait := incrementalWait(3*time.Second, 3*time.Second)
err = resource.Retry(5*time.Minute, func() *resource.RetryError {
response, err = client.RpcPost("Ga", "2019-11-20", action, nil, request, true)
if err != nil {
if NeedRetry(err) {
wait()
return resource.RetryableError(err)
}
return resource.NonRetryableError(err)
}
return nil
})
addDebug(action, response, request)
if err != nil {
return object, WrapErrorf(err, DefaultErrorMsg, id, action, AlibabaCloudSdkGoERROR)
}
v, err := jsonpath.Get("$", response)
if err != nil {
return object, WrapErrorf(err, FailedGetAttributeMsg, id, "$", response)
}
object = v.(map[string]interface{})
if _, ok := object["State"]; !ok {
return object, WrapErrorf(NotFoundErr("Ga:SpareIp", id), NotFoundMsg, ProviderERROR, fmt.Sprint(response["RequestId"]))
}
return object, nil
}
func (s *GaService) GaAcceleratorSpareIpAttachmentStateRefreshFunc(id string, failStates []string) resource.StateRefreshFunc {
return func() (interface{}, string, error) {
object, err := s.DescribeGaAcceleratorSpareIpAttachment(id)
if err != nil {
if NotFoundError(err) {
// Set this to nil as if we didn't find anything.
return nil, "", nil
}
return nil, "", WrapError(err)
}
for _, failState := range failStates {
if fmt.Sprint(object["State"]) == failState {
return object, fmt.Sprint(object["State"]), WrapError(Error(FailedToReachTargetStatus, fmt.Sprint(object["State"])))
}
}
return object, fmt.Sprint(object["State"]), nil
}
}
func (s *GaService) DescribeBandwidthPackageAutoRenewAttribute(id string) (object map[string]interface{}, err error) {
var response map[string]interface{}
client := s.client
action := "DescribeBandwidthPackageAutoRenewAttribute"
request := map[string]interface{}{
"RegionId": s.client.RegionId,
"InstanceId": id,
}
wait := incrementalWait(3*time.Second, 3*time.Second)
err = resource.Retry(5*time.Minute, func() *resource.RetryError {
response, err = client.RpcPost("Ga", "2019-11-20", action, nil, request, true)
if err != nil {
if NeedRetry(err) {
wait()
return resource.RetryableError(err)
}
return resource.NonRetryableError(err)
}
return nil
})
addDebug(action, response, request)
if err != nil {
return object, WrapErrorf(err, DefaultErrorMsg, id, action, AlibabaCloudSdkGoERROR)
}
v, err := jsonpath.Get("$", response)
if err != nil {
return object, WrapErrorf(err, FailedGetAttributeMsg, id, "$", response)
}
object = v.(map[string]interface{})
return object, nil
}
func (s *GaService) DescribeGaAccessLog(id string) (object map[string]interface{}, err error) {
var response map[string]interface{}
client := s.client
action := "DescribeLogStoreOfEndpointGroup"
parts, err := ParseResourceId(id, 3)
if err != nil {
return nil, WrapError(err)
}
request := map[string]interface{}{
"RegionId": s.client.RegionId,
"AcceleratorId": parts[0],
"ListenerId": parts[1],
"EndpointGroupId": parts[2],
}
wait := incrementalWait(3*time.Second, 3*time.Second)
err = resource.Retry(5*time.Minute, func() *resource.RetryError {
response, err = client.RpcPost("Ga", "2019-11-20", action, nil, request, true)
if err != nil {
if NeedRetry(err) {
wait()
return resource.RetryableError(err)
}
return resource.NonRetryableError(err)
}
return nil
})
addDebug(action, response, request)
if err != nil {
return object, WrapErrorf(err, DefaultErrorMsg, id, action, AlibabaCloudSdkGoERROR)
}
v, err := jsonpath.Get("$", response)
if err != nil {
return object, WrapErrorf(err, FailedGetAttributeMsg, id, "$", response)
}
object = v.(map[string]interface{})
if object["Status"] == nil {
return object, WrapErrorf(NotFoundErr("GaAccessLog", id), NotFoundMsg, ProviderERROR)
}
return object, nil
}
func (s *GaService) GaAccessLogStateRefreshFunc(id string, failStates []string) resource.StateRefreshFunc {
return func() (interface{}, string, error) {
object, err := s.DescribeGaAccessLog(id)
if err != nil {
if NotFoundError(err) {
// Set this to nil as if we didn't find anything.
return nil, "", nil
}
return nil, "", WrapError(err)
}
for _, failState := range failStates {
if fmt.Sprint(object["Status"]) == failState {
return object, fmt.Sprint(object["Status"]), WrapError(Error(FailedToReachTargetStatus, fmt.Sprint(object["Status"])))
}
}
return object, fmt.Sprint(object["Status"]), nil
}
}
func (s *GaService) DescribeGaAclEntryAttachment(id string) (object map[string]interface{}, err error) {
var response map[string]interface{}
parts, err := ParseResourceId(id, 2)
if err != nil {
return object, WrapError(err)
}
client := s.client
action := "GetAcl"
request := map[string]interface{}{
"RegionId": s.client.RegionId,
"AclId": parts[0],
}
idExist := false
wait := incrementalWait(3*time.Second, 3*time.Second)
err = resource.Retry(5*time.Minute, func() *resource.RetryError {
response, err = client.RpcPost("Ga", "2019-11-20", action, nil, request, true)
if err != nil {
if NeedRetry(err) {
wait()
return resource.RetryableError(err)
}
return resource.NonRetryableError(err)
}
return nil
})
addDebug(action, response, request)
if err != nil {
if IsExpectedErrors(err, []string{"NotExist.Acl"}) {
return object, WrapErrorf(NotFoundErr("Ga:AclEntryAttachment", id), NotFoundWithResponse, response)
}
return object, WrapErrorf(err, DefaultErrorMsg, id, action, AlibabaCloudSdkGoERROR)
}
resp, err := jsonpath.Get("$.AclEntries", response)
if err != nil {
return object, WrapErrorf(err, FailedGetAttributeMsg, id, "$.AclEntries", response)
}
if v, ok := resp.([]interface{}); !ok || len(v) < 1 {
return object, WrapErrorf(NotFoundErr("Ga:AclEntryAttachment", id), NotFoundWithResponse, response)
}
for _, v := range resp.([]interface{}) {
if fmt.Sprint(v.(map[string]interface{})["Entry"]) == parts[1] {
idExist = true
return v.(map[string]interface{}), nil
}
}
if !idExist {
return object, WrapErrorf(NotFoundErr("Ga:AclEntryAttachment", id), NotFoundWithResponse, response)
}
return object, nil
}
func (s *GaService) DescribeGaBasicAccelerator(id string) (object map[string]interface{}, err error) {
client := s.client
var response map[string]interface{}
action := "GetBasicAccelerator"
request := map[string]interface{}{
"RegionId": s.client.RegionId,
"AcceleratorId": id,
}
wait := incrementalWait(3*time.Second, 3*time.Second)
err = resource.Retry(5*time.Minute, func() *resource.RetryError {
response, err = client.RpcPost("Ga", "2019-11-20", action, nil, request, true)
if err != nil {
if NeedRetry(err) {
wait()
return resource.RetryableError(err)
}
return resource.NonRetryableError(err)
}
return nil
})
addDebug(action, response, request)
if err != nil {
return object, WrapErrorf(err, DefaultErrorMsg, id, action, AlibabaCloudSdkGoERROR)
}
v, err := jsonpath.Get("$", response)
if err != nil {
return object, WrapErrorf(err, FailedGetAttributeMsg, id, "$", response)
}
object = v.(map[string]interface{})
if object["State"] == nil {
return object, WrapErrorf(NotFoundErr("Ga:BasicAccelerator", id), NotFoundMsg, ProviderERROR)
}
return object, nil
}
func (s *GaService) GaBasicAcceleratorStateRefreshFunc(id string, failStates []string) resource.StateRefreshFunc {
return func() (interface{}, string, error) {
object, err := s.DescribeGaBasicAccelerator(id)
if err != nil {
if NotFoundError(err) {
// Set this to nil as if we didn't find anything.
return nil, "", nil
}
return nil, "", WrapError(err)
}
for _, failState := range failStates {
if fmt.Sprint(object["State"]) == failState {
return object, fmt.Sprint(object["State"]), WrapError(Error(FailedToReachTargetStatus, fmt.Sprint(object["State"])))
}
}
return object, fmt.Sprint(object["State"]), nil
}
}
func (s *GaService) DescribeGaBasicEndpointGroup(id string) (object map[string]interface{}, err error) {
client := s.client
var response map[string]interface{}
action := "GetBasicEndpointGroup"
request := map[string]interface{}{
"RegionId": s.client.RegionId,
"ClientToken": buildClientToken("GetBasicEndpointGroup"),
"EndpointGroupId": id,
}
wait := incrementalWait(3*time.Second, 3*time.Second)
err = resource.Retry(5*time.Minute, func() *resource.RetryError {
response, err = client.RpcPost("Ga", "2019-11-20", action, nil, request, true)
if err != nil {
if NeedRetry(err) {
wait()
return resource.RetryableError(err)
}
return resource.NonRetryableError(err)
}
return nil
})
addDebug(action, response, request)
if err != nil {
if IsExpectedErrors(err, []string{"NotExist.EndPointGroup"}) {
return object, WrapErrorf(NotFoundErr("Ga:BasicEndpointGroup", id), NotFoundMsg, ProviderERROR, fmt.Sprint(response["RequestId"]))
}
return object, WrapErrorf(err, DefaultErrorMsg, id, action, AlibabaCloudSdkGoERROR)
}
v, err := jsonpath.Get("$", response)
if err != nil {
return object, WrapErrorf(err, FailedGetAttributeMsg, id, "$", response)
}
object = v.(map[string]interface{})
return object, nil
}
func (s *GaService) GaBasicEndpointGroupStateRefreshFunc(id string, failStates []string) resource.StateRefreshFunc {
return func() (interface{}, string, error) {
object, err := s.DescribeGaBasicEndpointGroup(id)
if err != nil {
if NotFoundError(err) {
// Set this to nil as if we didn't find anything.
return nil, "", nil
}
return nil, "", WrapError(err)
}
for _, failState := range failStates {
if fmt.Sprint(object["State"]) == failState {
return object, fmt.Sprint(object["State"]), WrapError(Error(FailedToReachTargetStatus, fmt.Sprint(object["State"])))
}
}
return object, fmt.Sprint(object["State"]), nil
}
}
func (s *GaService) DescribeGaBasicIpSet(id string) (object map[string]interface{}, err error) {
client := s.client
var response map[string]interface{}
action := "GetBasicIpSet"
request := map[string]interface{}{
"RegionId": s.client.RegionId,
"ClientToken": buildClientToken("GetBasicIpSet"),
"IpSetId": id,
}
wait := incrementalWait(3*time.Second, 3*time.Second)
err = resource.Retry(5*time.Minute, func() *resource.RetryError {
response, err = client.RpcPost("Ga", "2019-11-20", action, nil, request, true)
if err != nil {
if NeedRetry(err) {
wait()
return resource.RetryableError(err)
}
return resource.NonRetryableError(err)
}
return nil
})
addDebug(action, response, request)
if err != nil {
if IsExpectedErrors(err, []string{"NotExist.IpSet"}) {
return object, WrapErrorf(NotFoundErr("Ga:BasicIpSet", id), NotFoundMsg, ProviderERROR, fmt.Sprint(response["RequestId"]))
}
return object, WrapErrorf(err, DefaultErrorMsg, id, action, AlibabaCloudSdkGoERROR)
}
v, err := jsonpath.Get("$", response)
if err != nil {
return object, WrapErrorf(err, FailedGetAttributeMsg, id, "$", response)
}
object = v.(map[string]interface{})
return object, nil
}
func (s *GaService) GaBasicIpSetStateRefreshFunc(id string, failStates []string) resource.StateRefreshFunc {
return func() (interface{}, string, error) {
object, err := s.DescribeGaBasicIpSet(id)
if err != nil {
if NotFoundError(err) {
// Set this to nil as if we didn't find anything.
return nil, "", nil
}
return nil, "", WrapError(err)
}
for _, failState := range failStates {
if fmt.Sprint(object["State"]) == failState {
return object, fmt.Sprint(object["State"]), WrapError(Error(FailedToReachTargetStatus, fmt.Sprint(object["State"])))
}
}
return object, fmt.Sprint(object["State"]), nil
}
}
func (s *GaService) DescribeGaBasicAccelerateIp(id string) (object map[string]interface{}, err error) {
var response map[string]interface{}
action := "GetBasicAccelerateIp"
client := s.client
request := map[string]interface{}{
"RegionId": s.client.RegionId,
"ClientToken": buildClientToken("GetBasicAccelerateIp"),
"AccelerateIpId": id,
}
wait := incrementalWait(3*time.Second, 3*time.Second)
err = resource.Retry(5*time.Minute, func() *resource.RetryError {
response, err = client.RpcPost("Ga", "2019-11-20", action, nil, request, true)
if err != nil {
if NeedRetry(err) {
wait()
return resource.RetryableError(err)
}
return resource.NonRetryableError(err)
}
return nil
})
addDebug(action, response, request)
if err != nil {
if IsExpectedErrors(err, []string{"NotExist.AccelerateIpId"}) {
return object, WrapErrorf(NotFoundErr("Ga:BasicAccelerateIp", id), NotFoundMsg, ProviderERROR, fmt.Sprint(response["RequestId"]))
}
return object, WrapErrorf(err, DefaultErrorMsg, id, action, AlibabaCloudSdkGoERROR)
}
v, err := jsonpath.Get("$", response)
if err != nil {
return object, WrapErrorf(err, FailedGetAttributeMsg, id, "$", response)
}
object = v.(map[string]interface{})
return object, nil
}
func (s *GaService) GaBasicAccelerateIpStateRefreshFunc(id string, failStates []string) resource.StateRefreshFunc {
return func() (interface{}, string, error) {
object, err := s.DescribeGaBasicAccelerateIp(id)
if err != nil {
if NotFoundError(err) {
// Set this to nil as if we didn't find anything.
return nil, "", nil
}
return nil, "", WrapError(err)
}
for _, failState := range failStates {
if fmt.Sprint(object["State"]) == failState {
return object, fmt.Sprint(object["State"]), WrapError(Error(FailedToReachTargetStatus, fmt.Sprint(object["State"])))
}
}
return object, fmt.Sprint(object["State"]), nil
}
}
func (s *GaService) DescribeGaBasicEndpoint(id string) (object map[string]interface{}, err error) {
var response map[string]interface{}
action := "GetBasicEndpoint"
client := s.client
parts, err := ParseResourceId(id, 2)
if err != nil {
return nil, WrapError(err)
}
request := map[string]interface{}{
"RegionId": s.client.RegionId,
"ClientToken": buildClientToken("GetBasicEndpoint"),
"EndpointId": parts[1],
}
wait := incrementalWait(3*time.Second, 3*time.Second)
err = resource.Retry(5*time.Minute, func() *resource.RetryError {
response, err = client.RpcPost("Ga", "2019-11-20", action, nil, request, true)
if err != nil {
if NeedRetry(err) {
wait()
return resource.RetryableError(err)
}
return resource.NonRetryableError(err)
}
return nil
})
addDebug(action, response, request)
if err != nil {
if IsExpectedErrors(err, []string{"NotExist.EndPoints"}) {
return object, WrapErrorf(NotFoundErr("Ga:BasicEndpoint", id), NotFoundMsg, ProviderERROR, fmt.Sprint(response["RequestId"]))
}
return object, WrapErrorf(err, DefaultErrorMsg, id, action, AlibabaCloudSdkGoERROR)
}
v, err := jsonpath.Get("$", response)
if err != nil {
return object, WrapErrorf(err, FailedGetAttributeMsg, id, "$", response)
}
object = v.(map[string]interface{})
return object, nil
}
func (s *GaService) GaBasicEndpointStateRefreshFunc(id string, failStates []string) resource.StateRefreshFunc {
return func() (interface{}, string, error) {
object, err := s.DescribeGaBasicEndpoint(id)
if err != nil {
if NotFoundError(err) {
// Set this to nil as if we didn't find anything.
return nil, "", nil
}
return nil, "", WrapError(err)
}
for _, failState := range failStates {
if fmt.Sprint(object["State"]) == failState {
return object, fmt.Sprint(object["State"]), WrapError(Error(FailedToReachTargetStatus, fmt.Sprint(object["State"])))
}
}
return object, fmt.Sprint(object["State"]), nil
}
}
func (s *GaService) DescribeGaBasicAccelerateIpEndpointRelation(id string) (object map[string]interface{}, err error) {
client := s.client
var response map[string]interface{}
action := "GetBasicAccelerateIpEndpointRelation"
parts, err := ParseResourceId(id, 3)
if err != nil {
return nil, WrapError(err)
}
request := map[string]interface{}{
"RegionId": s.client.RegionId,
"ClientToken": buildClientToken("GetBasicAccelerateIpEndpointRelation"),
"AcceleratorId": parts[0],
"AccelerateIpId": parts[1],
"EndpointId": parts[2],
}
wait := incrementalWait(3*time.Second, 3*time.Second)
err = resource.Retry(5*time.Minute, func() *resource.RetryError {
response, err = client.RpcPost("Ga", "2019-11-20", action, nil, request, true)
if err != nil {
if NeedRetry(err) {
wait()
return resource.RetryableError(err)
}
return resource.NonRetryableError(err)
}
return nil
})
addDebug(action, response, request)
if err != nil {
return object, WrapErrorf(err, DefaultErrorMsg, id, action, AlibabaCloudSdkGoERROR)
}
v, err := jsonpath.Get("$", response)
if err != nil {
return object, WrapErrorf(err, FailedGetAttributeMsg, id, "$", response)
}
object = v.(map[string]interface{})
if object["State"] == nil {
return object, WrapErrorf(NotFoundErr("Ga:BasicAccelerateIpEndpointRelation", id), NotFoundMsg, ProviderERROR)
}
return object, nil
}
func (s *GaService) GaBasicAccelerateIpEndpointRelationStateRefreshFunc(id string, failStates []string) resource.StateRefreshFunc {
return func() (interface{}, string, error) {
object, err := s.DescribeGaBasicAccelerateIpEndpointRelation(id)
if err != nil {
if NotFoundError(err) {
// Set this to nil as if we didn't find anything.
return nil, "", nil
}
return nil, "", WrapError(err)
}
for _, failState := range failStates {
if fmt.Sprint(object["State"]) == failState {
return object, fmt.Sprint(object["State"]), WrapError(Error(FailedToReachTargetStatus, fmt.Sprint(object["State"])))
}
}
return object, fmt.Sprint(object["State"]), nil
}
}
func (s *GaService) DescribeGaDomain(id string) (object map[string]interface{}, err error) {
client := s.client
parts, err := ParseResourceId(id, 2)
if err != nil {
return object, WrapError(err)
}
request := map[string]interface{}{
"AcceleratorId": parts[0],
"Domain": parts[1],
"RegionId": s.client.RegionId,
}
var response map[string]interface{}
action := "ListDomains"
wait := incrementalWait(3*time.Second, 3*time.Second)
err = resource.Retry(5*time.Minute, func() *resource.RetryError {
response, err = client.RpcPost("Ga", "2019-11-20", action, nil, request, true)
if err != nil {
if NeedRetry(err) {
wait()
return resource.RetryableError(err)
}
return resource.NonRetryableError(err)
}
addDebug(action, response, request)
return nil
})
if err != nil {
return object, WrapErrorf(err, DefaultErrorMsg, id, action, AlibabaCloudSdkGoERROR)
}
v, err := jsonpath.Get("$.Domains", response)
if err != nil {
return object, WrapErrorf(err, FailedGetAttributeMsg, id, "$.Domains", response)
}
if len(v.([]interface{})) < 1 {
return object, WrapErrorf(NotFoundErr("Ga", id), NotFoundWithResponse, response)
}
return v.([]interface{})[0].(map[string]interface{}), nil
}
func (s *GaService) DescribeGaCustomRoutingEndpointGroup(id string) (object map[string]interface{}, err error) {
var response map[string]interface{}
action := "DescribeCustomRoutingEndpointGroup"
client := s.client
request := map[string]interface{}{
"RegionId": s.client.RegionId,
"EndpointGroupId": id,
}
wait := incrementalWait(3*time.Second, 3*time.Second)
err = resource.Retry(5*time.Minute, func() *resource.RetryError {
response, err = client.RpcPost("Ga", "2019-11-20", action, nil, request, true)
if err != nil {
if NeedRetry(err) {
wait()
return resource.RetryableError(err)
}
return resource.NonRetryableError(err)
}
return nil
})
addDebug(action, response, request)
if err != nil {
if IsExpectedErrors(err, []string{"NotExist.EndPointGroup"}) {
return object, WrapErrorf(NotFoundErr("Ga:CustomRoutingEndpointGroup", id), NotFoundMsg, ProviderERROR, fmt.Sprint(response["RequestId"]))
}
return object, WrapErrorf(err, DefaultErrorMsg, id, action, AlibabaCloudSdkGoERROR)
}
v, err := jsonpath.Get("$", response)
if err != nil {
return object, WrapErrorf(err, FailedGetAttributeMsg, id, "$", response)
}
object = v.(map[string]interface{})
if object["State"] == nil {
return object, WrapErrorf(NotFoundErr("Ga:CustomRoutingEndpointGroup", id), NotFoundMsg, ProviderERROR)
}
return object, nil
}
func (s *GaService) GaCustomRoutingEndpointGroupStateRefreshFunc(id string, failStates []string) resource.StateRefreshFunc {
return func() (interface{}, string, error) {
object, err := s.DescribeGaCustomRoutingEndpointGroup(id)
if err != nil {
if NotFoundError(err) {
// Set this to nil as if we didn't find anything.
return nil, "", nil
}
return nil, "", WrapError(err)
}
for _, failState := range failStates {
if fmt.Sprint(object["State"]) == failState {
return object, fmt.Sprint(object["State"]), WrapError(Error(FailedToReachTargetStatus, fmt.Sprint(object["State"])))
}
}
return object, fmt.Sprint(object["State"]), nil
}
}
func (s *GaService) DescribeGaCustomRoutingEndpointGroupDestination(id string) (object map[string]interface{}, err error) {
var response map[string]interface{}
action := "DescribeCustomRoutingEndpointGroupDestinations"
client := s.client
parts, err := ParseResourceId(id, 2)
if err != nil {
return nil, WrapError(err)
}
request := map[string]interface{}{
"RegionId": s.client.RegionId,
"DestinationId": parts[1],
}
wait := incrementalWait(3*time.Second, 3*time.Second)
err = resource.Retry(5*time.Minute, func() *resource.RetryError {
response, err = client.RpcPost("Ga", "2019-11-20", action, nil, request, true)
if err != nil {
if NeedRetry(err) {
wait()
return resource.RetryableError(err)
}
return resource.NonRetryableError(err)
}
return nil
})
addDebug(action, response, request)
if err != nil {
if IsExpectedErrors(err, []string{"NotExist.Destination"}) {
return object, WrapErrorf(NotFoundErr("Ga:CustomRoutingEndpointGroupDestination", id), NotFoundMsg, ProviderERROR)
}
return object, WrapErrorf(err, DefaultErrorMsg, id, action, AlibabaCloudSdkGoERROR)
}
v, err := jsonpath.Get("$", response)
if err != nil {
return object, WrapErrorf(err, FailedGetAttributeMsg, id, "$", response)
}
object = v.(map[string]interface{})
if object["State"] == nil {
return object, WrapErrorf(NotFoundErr("Ga:CustomRoutingEndpointGroupDestination", id), NotFoundMsg, ProviderERROR)
}
return object, nil
}
func (s *GaService) GaCustomRoutingEndpointGroupDestinationStateRefreshFunc(id string, failStates []string) resource.StateRefreshFunc {
return func() (interface{}, string, error) {
object, err := s.DescribeGaCustomRoutingEndpointGroupDestination(id)
if err != nil {
if NotFoundError(err) {
// Set this to nil as if we didn't find anything.
return nil, "", nil
}
return nil, "", WrapError(err)
}
for _, failState := range failStates {
if fmt.Sprint(object["State"]) == failState {
return object, fmt.Sprint(object["State"]), WrapError(Error(FailedToReachTargetStatus, fmt.Sprint(object["State"])))
}
}
return object, fmt.Sprint(object["State"]), nil
}
}
func (s *GaService) DescribeGaCustomRoutingEndpoint(id string) (object map[string]interface{}, err error) {
var response map[string]interface{}
action := "DescribeCustomRoutingEndpoint"
client := s.client
parts, err := ParseResourceId(id, 2)
if err != nil {
return nil, WrapError(err)
}
request := map[string]interface{}{
"RegionId": s.client.RegionId,
"EndpointGroup": parts[0],
"EndpointId": parts[1],
}
wait := incrementalWait(3*time.Second, 3*time.Second)
err = resource.Retry(5*time.Minute, func() *resource.RetryError {
response, err = client.RpcPost("Ga", "2019-11-20", action, nil, request, true)
if err != nil {
if NeedRetry(err) {
wait()
return resource.RetryableError(err)
}
return resource.NonRetryableError(err)
}
return nil
})
addDebug(action, response, request)
if err != nil {
if IsExpectedErrors(err, []string{"NotExist.EndPointGroup"}) {
return object, WrapErrorf(NotFoundErr("Ga:CustomRoutingEndpoint", id), NotFoundMsg, ProviderERROR)
}
return object, WrapErrorf(err, DefaultErrorMsg, id, action, AlibabaCloudSdkGoERROR)
}
v, err := jsonpath.Get("$", response)
if err != nil {
return object, WrapErrorf(err, FailedGetAttributeMsg, id, "$", response)
}
object = v.(map[string]interface{})
if object["State"] == nil {
return object, WrapErrorf(NotFoundErr("Ga:CustomRoutingEndpoint", id), NotFoundMsg, ProviderERROR)
}
return object, nil
}
func (s *GaService) GaCustomRoutingEndpointStateRefreshFunc(id string, failStates []string) resource.StateRefreshFunc {
return func() (interface{}, string, error) {
object, err := s.DescribeGaCustomRoutingEndpoint(id)
if err != nil {
if NotFoundError(err) {
// Set this to nil as if we didn't find anything.
return nil, "", nil
}
return nil, "", WrapError(err)
}
for _, failState := range failStates {
if fmt.Sprint(object["State"]) == failState {
return object, fmt.Sprint(object["State"]), WrapError(Error(FailedToReachTargetStatus, fmt.Sprint(object["State"])))
}
}
return object, fmt.Sprint(object["State"]), nil
}
}
func (s *GaService) DescribeGaCustomRoutingEndpointTrafficPolicy(id string) (object map[string]interface{}, err error) {
var response map[string]interface{}
action := "DescribeCustomRoutingEndPointTrafficPolicy"
client := s.client
parts, err := ParseResourceId(id, 2)
if err != nil {
return nil, WrapError(err)
}
request := map[string]interface{}{
"RegionId": s.client.RegionId,
"EndpointId": parts[0],
"PolicyId": parts[1],
}
wait := incrementalWait(3*time.Second, 3*time.Second)
err = resource.Retry(5*time.Minute, func() *resource.RetryError {
response, err = client.RpcPost("Ga", "2019-11-20", action, nil, request, true)
if err != nil {
if NeedRetry(err) {
wait()
return resource.RetryableError(err)
}
return resource.NonRetryableError(err)
}
return nil
})
addDebug(action, response, request)
if err != nil {
if IsExpectedErrors(err, []string{"NotExist.Policy"}) {
return object, WrapErrorf(NotFoundErr("Ga:CustomRoutingEndpointTrafficPolicy", id), NotFoundMsg, ProviderERROR)
}
return object, WrapErrorf(err, DefaultErrorMsg, id, action, AlibabaCloudSdkGoERROR)
}
v, err := jsonpath.Get("$", response)
if err != nil {
return object, WrapErrorf(err, FailedGetAttributeMsg, id, "$", response)
}
object = v.(map[string]interface{})
if object["State"] == nil {
return object, WrapErrorf(NotFoundErr("Ga:CustomRoutingEndpointTrafficPolicy", id), NotFoundMsg, ProviderERROR)
}
return object, nil
}
func (s *GaService) GaCustomRoutingEndpointTrafficPolicyStateRefreshFunc(id string, failStates []string) resource.StateRefreshFunc {
return func() (interface{}, string, error) {
object, err := s.DescribeGaCustomRoutingEndpointTrafficPolicy(id)
if err != nil {
if NotFoundError(err) {
// Set this to nil as if we didn't find anything.
return nil, "", nil
}
return nil, "", WrapError(err)
}
for _, failState := range failStates {
if fmt.Sprint(object["State"]) == failState {
return object, fmt.Sprint(object["State"]), WrapError(Error(FailedToReachTargetStatus, fmt.Sprint(object["State"])))
}
}
return object, fmt.Sprint(object["State"]), nil
}
}
func (s *GaService) ListTagResources(id string, resourceType string) (object interface{}, err error) {
client := s.client
action := "ListTagResources"
request := map[string]interface{}{
"RegionId": s.client.RegionId,
"ResourceType": resourceType,
"ResourceId.1": id,
}
tags := make([]interface{}, 0)
var response map[string]interface{}
for {
wait := incrementalWait(3*time.Second, 3*time.Second)
err = resource.Retry(5*time.Minute, func() *resource.RetryError {
response, err = client.RpcPost("Ga", "2019-11-20", action, nil, request, true)
if err != nil {
if NeedRetry(err) {
wait()
return resource.RetryableError(err)
}
return resource.NonRetryableError(err)
}
addDebug(action, response, request)
v, err := jsonpath.Get("$.TagResources.TagResource", response)
if err != nil {
return resource.NonRetryableError(WrapErrorf(err, FailedGetAttributeMsg, id, "$.TagResources.TagResource", response))
}
if v != nil {
tags = append(tags, v.([]interface{})...)
}
return nil
})
if err != nil {
err = WrapErrorf(err, DefaultErrorMsg, id, action, AlibabaCloudSdkGoERROR)
return
}
if response["NextToken"] == nil || response["NextToken"].(string) == "" {
break
}
request["NextToken"] = response["NextToken"]
}
return tags, nil
}
func (s *GaService) SetResourceTags(d *schema.ResourceData, resourceType string) error {
client := s.client
resourceIdNum := strings.Count(d.Id(), ":")
if d.HasChange("tags") {
added, removed := parsingTags(d)
var response map[string]interface{}
var err error
removedTagKeys := make([]string, 0)
for _, v := range removed {
if !ignoredTags(v, "") {
removedTagKeys = append(removedTagKeys, v)
}
}
if len(removedTagKeys) > 0 {
action := "UntagResources"
request := map[string]interface{}{
"RegionId": s.client.RegionId,
"ResourceType": resourceType,
}
switch resourceIdNum {
case 0:
request["ResourceId.1"] = d.Id()
case 1:
parts, err := ParseResourceId(d.Id(), 2)
if err != nil {
return WrapError(err)
}
request["ResourceId.1"] = parts[resourceIdNum]
}
for i, key := range removedTagKeys {
request[fmt.Sprintf("TagKey.%d", i+1)] = key
}
wait := incrementalWait(2*time.Second, 1*time.Second)
err := resource.Retry(10*time.Minute, func() *resource.RetryError {
response, err = client.RpcPost("Ga", "2019-11-20", action, nil, request, false)
if err != nil {
if NeedRetry(err) {
wait()
return resource.RetryableError(err)
}
return resource.NonRetryableError(err)
}
return nil
})
addDebug(action, response, request)
if err != nil {
return WrapErrorf(err, DefaultErrorMsg, d.Id(), action, AlibabaCloudSdkGoERROR)
}
}
if len(added) > 0 {
action := "TagResources"
request := map[string]interface{}{
"RegionId": s.client.RegionId,
"ResourceType": resourceType,
}
switch resourceIdNum {
case 0:
request["ResourceId.1"] = d.Id()
case 1:
parts, err := ParseResourceId(d.Id(), 2)
if err != nil {
return WrapError(err)
}
request["ResourceId.1"] = parts[resourceIdNum]
}
count := 1
for key, value := range added {
request[fmt.Sprintf("Tag.%d.Key", count)] = key
request[fmt.Sprintf("Tag.%d.Value", count)] = value
count++
}
wait := incrementalWait(2*time.Second, 1*time.Second)
err := resource.Retry(10*time.Minute, func() *resource.RetryError {
response, err = client.RpcPost("Ga", "2019-11-20", action, nil, request, false)
if err != nil {
if NeedRetry(err) {
wait()
return resource.RetryableError(err)
}
return resource.NonRetryableError(err)
}
return nil
})
addDebug(action, response, request)
if err != nil {
return WrapErrorf(err, DefaultErrorMsg, d.Id(), action, AlibabaCloudSdkGoERROR)
}
}
d.SetPartial("tags")
}
return nil
}