alicloud/service_alicloud_cen_v2.go (1,007 lines of code) (raw):

package alicloud import ( "encoding/json" "fmt" "strings" "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" "github.com/tidwall/sjson" ) type CenServiceV2 struct { client *connectivity.AliyunClient } // DescribeCenTransitRouterPeerAttachment <<< Encapsulated get interface for Cen TransitRouterPeerAttachment. func (s *CenServiceV2) DescribeCenTransitRouterPeerAttachment(id string) (object map[string]interface{}, err error) { client := s.client var request map[string]interface{} var response map[string]interface{} var query map[string]interface{} request = make(map[string]interface{}) query = make(map[string]interface{}) parts, _ := ParseResourceId(id, 2) request["TransitRouterAttachmentId"] = parts[1] request["RegionId"] = client.RegionId action := "ListTransitRouterPeerAttachments" wait := incrementalWait(3*time.Second, 5*time.Second) err = resource.Retry(1*time.Minute, func() *resource.RetryError { response, err = client.RpcPost("Cbn", "2017-09-12", action, query, 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("$.TransitRouterAttachments[*]", response) if err != nil { if IsExpectedErrors(err, []string{"ParameterCenInstanceId", "IllegalParam.Region"}) { return nil, WrapErrorf(NotFoundErr("CEN Instance ID", id), NotFoundMsg, ProviderERROR) } return object, WrapErrorf(err, FailedGetAttributeMsg, id, "$.TransitRouterAttachments[*]", response) } if len(v.([]interface{})) == 0 { return object, WrapErrorf(NotFoundErr("TransitRouterPeerAttachment", id), NotFoundMsg, response) } return v.([]interface{})[0].(map[string]interface{}), nil } func (s *CenServiceV2) CenTransitRouterPeerAttachmentStateRefreshFunc(id string, field string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { object, err := s.DescribeCenTransitRouterPeerAttachment(id) if err != nil { if NotFoundError(err) { return nil, "", nil } return nil, "", WrapError(err) } v, err := jsonpath.Get(field, object) currentStatus := fmt.Sprint(v) if strings.HasPrefix(field, "#") { v, _ := jsonpath.Get(strings.TrimPrefix(field, "#"), object) if v != nil { currentStatus = "#CHECKSET" } } for _, failState := range failStates { if currentStatus == failState { return object, currentStatus, WrapError(Error(FailedToReachTargetStatus, currentStatus)) } } return object, currentStatus, nil } } // DescribeCenTransitRouterPeerAttachment >>> Encapsulated. // SetResourceTags <<< Encapsulated tag function for Cen. func (s *CenServiceV2) SetResourceTags(d *schema.ResourceData, resourceType string) error { if d.HasChange("tags") { var action string var err error client := s.client var request map[string]interface{} var response map[string]interface{} query := make(map[string]interface{}) added, removed := parsingTags(d) removedTagKeys := make([]string, 0) for _, v := range removed { if !ignoredTags(v, "") { removedTagKeys = append(removedTagKeys, v) } } if len(removedTagKeys) > 0 { action = "UntagResources" request = make(map[string]interface{}) query = make(map[string]interface{}) request["ResourceId.1"] = d.Id() request["RegionId"] = client.RegionId request["ResourceType"] = resourceType for i, key := range removedTagKeys { request[fmt.Sprintf("TagKey.%d", i+1)] = key } wait := incrementalWait(3*time.Second, 5*time.Second) err = resource.Retry(d.Timeout(schema.TimeoutUpdate), func() *resource.RetryError { response, err = client.RpcPost("Cbn", "2017-09-12", action, query, 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 WrapErrorf(err, DefaultErrorMsg, d.Id(), action, AlibabaCloudSdkGoERROR) } } if len(added) > 0 { action = "TagResources" request = make(map[string]interface{}) query = make(map[string]interface{}) request["ResourceId.1"] = d.Id() request["RegionId"] = client.RegionId count := 1 for key, value := range added { request[fmt.Sprintf("Tag.%d.Key", count)] = key request[fmt.Sprintf("Tag.%d.Value", count)] = value count++ } request["ResourceType"] = resourceType wait := incrementalWait(3*time.Second, 5*time.Second) err = resource.Retry(d.Timeout(schema.TimeoutUpdate), func() *resource.RetryError { response, err = client.RpcPost("Cbn", "2017-09-12", action, query, 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 WrapErrorf(err, DefaultErrorMsg, d.Id(), action, AlibabaCloudSdkGoERROR) } } } return nil } // SetResourceTags >>> tag function encapsulated. // DescribeCenTransitRouterEcrAttachment <<< Encapsulated get interface for Cen TransitRouterEcrAttachment. func (s *CenServiceV2) DescribeCenTransitRouterEcrAttachment(id string) (object map[string]interface{}, err error) { client := s.client var request map[string]interface{} var response map[string]interface{} var query map[string]interface{} action := "ListTransitRouterEcrAttachments" request = make(map[string]interface{}) query = make(map[string]interface{}) request["TransitRouterAttachmentId"] = id request["RegionId"] = client.RegionId runtime := util.RuntimeOptions{} runtime.SetAutoretry(true) wait := incrementalWait(3*time.Second, 5*time.Second) err = resource.Retry(1*time.Minute, func() *resource.RetryError { response, err = client.RpcPost("Cbn", "2017-09-12", action, query, 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("$.TransitRouterAttachments[*]", response) if err != nil { return object, WrapErrorf(err, FailedGetAttributeMsg, id, "$.TransitRouterAttachments[*]", response) } if len(v.([]interface{})) == 0 { return object, WrapErrorf(NotFoundErr("TransitRouterEcrAttachment", id), NotFoundMsg, response) } result, _ := v.([]interface{}) for _, v := range result { item := v.(map[string]interface{}) if item["ResourceType"] != "ECR" { continue } if fmt.Sprint(item["TransitRouterAttachmentId"]) != id { continue } return item, nil } return object, WrapErrorf(NotFoundErr("TransitRouterEcrAttachment", id), NotFoundMsg, response) } func (s *CenServiceV2) CenTransitRouterEcrAttachmentStateRefreshFunc(id string, field string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { object, err := s.DescribeCenTransitRouterEcrAttachment(id) if err != nil { if NotFoundError(err) { return nil, "", nil } return nil, "", WrapError(err) } v, err := jsonpath.Get(field, object) currentStatus := fmt.Sprint(v) if strings.HasPrefix(field, "#") { v, _ := jsonpath.Get(strings.TrimPrefix(field, "#"), object) if v != nil { currentStatus = "#CHECKSET" } } for _, failState := range failStates { if currentStatus == failState { return object, currentStatus, WrapError(Error(FailedToReachTargetStatus, currentStatus)) } } return object, currentStatus, nil } } // DescribeCenTransitRouterEcrAttachment >>> Encapsulated. // DescribeCenTrafficMarkingPolicy <<< Encapsulated get interface for Cen TrafficMarkingPolicy. func (s *CenServiceV2) DescribeCenTrafficMarkingPolicy(id string) (object map[string]interface{}, err error) { client := s.client var request map[string]interface{} var response map[string]interface{} var query map[string]interface{} parts := strings.Split(id, ":") if len(parts) != 2 { err = WrapError(fmt.Errorf("invalid Resource Id %s. Expected parts' length %d, got %d", id, 2, len(parts))) } request = make(map[string]interface{}) query = make(map[string]interface{}) request["TrafficMarkingPolicyId"] = parts[1] request["TransitRouterId"] = parts[0] action := "ListTrafficMarkingPolicies" wait := incrementalWait(3*time.Second, 5*time.Second) err = resource.Retry(1*time.Minute, func() *resource.RetryError { response, err = client.RpcPost("Cbn", "2017-09-12", action, query, 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("$.TrafficMarkingPolicies[*]", response) if err != nil { return object, WrapErrorf(err, FailedGetAttributeMsg, id, "$.TrafficMarkingPolicies[*]", response) } if len(v.([]interface{})) == 0 { return object, WrapErrorf(NotFoundErr("TrafficMarkingPolicy", id), NotFoundMsg, response) } result, _ := v.([]interface{}) for _, v := range result { item := v.(map[string]interface{}) if fmt.Sprint(item["TrafficMarkingPolicyId"]) != parts[1] { continue } if fmt.Sprint(item["TransitRouterId"]) != parts[0] { continue } return item, nil } return object, WrapErrorf(NotFoundErr("TrafficMarkingPolicy", id), NotFoundMsg, response) } func (s *CenServiceV2) CenTrafficMarkingPolicyStateRefreshFunc(id string, field string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { object, err := s.DescribeCenTrafficMarkingPolicy(id) if err != nil { if NotFoundError(err) { return object, "", nil } return nil, "", WrapError(err) } v, err := jsonpath.Get(field, object) currentStatus := fmt.Sprint(v) if strings.HasPrefix(field, "#") { v, _ := jsonpath.Get(strings.TrimPrefix(field, "#"), object) if v != nil { currentStatus = "#CHECKSET" } } for _, failState := range failStates { if currentStatus == failState { return object, currentStatus, WrapError(Error(FailedToReachTargetStatus, currentStatus)) } } return object, currentStatus, nil } } // DescribeCenTrafficMarkingPolicy >>> Encapsulated. // DescribeCenTransitRouterVpcAttachment <<< Encapsulated get interface for Cen TransitRouterVpcAttachment. func (s *CenServiceV2) DescribeCenTransitRouterVpcAttachment(id string) (object map[string]interface{}, err error) { client := s.client var request map[string]interface{} var response map[string]interface{} var query map[string]interface{} action := "ListTransitRouterVpcAttachments" request = make(map[string]interface{}) query = make(map[string]interface{}) parts, err1 := ParseResourceId(id, 2) if err1 != nil { return nil, WrapError(err1) } query["TransitRouterAttachmentId"] = parts[1] query["RegionId"] = client.RegionId runtime := util.RuntimeOptions{} runtime.SetAutoretry(true) wait := incrementalWait(3*time.Second, 5*time.Second) err = resource.Retry(1*time.Minute, func() *resource.RetryError { response, err = client.RpcPost("Cbn", "2017-09-12", action, query, 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 { if IsExpectedErrors(err, []string{"IllegalParam.Region"}) { return object, WrapErrorf(NotFoundErr("Cen:TransitRouterVpcAttachment", id), NotFoundWithResponse, response) } return object, WrapErrorf(err, DefaultErrorMsg, id, action, AlibabaCloudSdkGoERROR) } v, err := jsonpath.Get("$.TransitRouterAttachments[*]", response) if err != nil { return object, WrapErrorf(err, FailedGetAttributeMsg, id, "$.TransitRouterAttachments[*]", response) } if len(v.([]interface{})) == 0 { return object, WrapErrorf(NotFoundErr("TransitRouterVpcAttachment", id), NotFoundMsg, response) } result, _ := v.([]interface{}) for _, v := range result { item := v.(map[string]interface{}) if fmt.Sprint(item["TransitRouterAttachmentId"]) != parts[1] { continue } return item, nil } return object, WrapErrorf(NotFoundErr("TransitRouterVpcAttachment", id), NotFoundMsg, response) } func (s *CenServiceV2) CenTransitRouterVpcAttachmentStateRefreshFunc(id string, field string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { object, err := s.DescribeCenTransitRouterVpcAttachment(id) if err != nil { if NotFoundError(err) { return object, "", 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 } } // DescribeCenTransitRouterVpcAttachment >>> Encapsulated. // DescribeCenFlowLog <<< Encapsulated get interface for Cen FlowLog. func (s *CenServiceV2) DescribeCenFlowLog(id string) (object map[string]interface{}, err error) { client := s.client var request map[string]interface{} var response map[string]interface{} var query map[string]interface{} action := "DescribeFlowlogs" request = make(map[string]interface{}) query = make(map[string]interface{}) request["FlowLogId"] = id request["RegionId"] = client.RegionId request["ClientToken"] = buildClientToken(action) runtime := util.RuntimeOptions{} runtime.SetAutoretry(true) wait := incrementalWait(3*time.Second, 5*time.Second) err = resource.Retry(1*time.Minute, func() *resource.RetryError { response, err = client.RpcPost("Cbn", "2017-09-12", action, query, request, true) request["ClientToken"] = buildClientToken(action) 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("$.FlowLogs.FlowLog[*]", response) if err != nil { return object, WrapErrorf(err, FailedGetAttributeMsg, id, "$.FlowLogs.FlowLog[*]", response) } if len(v.([]interface{})) == 0 { return object, WrapErrorf(NotFoundErr("FlowLog", id), NotFoundMsg, response) } return v.([]interface{})[0].(map[string]interface{}), nil } func (s *CenServiceV2) CenFlowLogStateRefreshFunc(id string, field string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { object, err := s.DescribeCenFlowLog(id) if err != nil { if NotFoundError(err) { return nil, "", nil } return nil, "", WrapError(err) } v, err := jsonpath.Get(field, object) currentStatus := fmt.Sprint(v) if strings.HasPrefix(field, "#") { v, _ := jsonpath.Get(strings.TrimPrefix(field, "#"), object) if v != nil { currentStatus = "#CHECKSET" } } for _, failState := range failStates { if currentStatus == failState { return object, currentStatus, WrapError(Error(FailedToReachTargetStatus, currentStatus)) } } return object, currentStatus, nil } } // DescribeCenFlowLog >>> Encapsulated. // DescribeCenFlowLog >>> Encapsulated. // DescribeCenTransitRouterMulticastDomain <<< Encapsulated get interface for Cen TransitRouterMulticastDomain. func (s *CenServiceV2) DescribeCenTransitRouterMulticastDomain(id string) (object map[string]interface{}, err error) { client := s.client var request map[string]interface{} var response map[string]interface{} var query map[string]interface{} request = make(map[string]interface{}) query = make(map[string]interface{}) request["TransitRouterMulticastDomainId"] = id request["RegionId"] = client.RegionId action := "ListTransitRouterMulticastDomains" request["ClientToken"] = buildClientToken(action) runtime := util.RuntimeOptions{} runtime.SetAutoretry(true) wait := incrementalWait(3*time.Second, 5*time.Second) err = resource.Retry(1*time.Minute, func() *resource.RetryError { response, err = client.RpcPost("Cbn", "2017-09-12", action, query, request, true) request["ClientToken"] = buildClientToken(action) 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("$.TransitRouterMulticastDomains[*]", response) if err != nil { return object, WrapErrorf(err, FailedGetAttributeMsg, id, "$.TransitRouterMulticastDomains[*]", response) } if len(v.([]interface{})) == 0 { return object, WrapErrorf(NotFoundErr("TransitRouterMulticastDomain", id), NotFoundMsg, response) } return v.([]interface{})[0].(map[string]interface{}), nil } func (s *CenServiceV2) CenTransitRouterMulticastDomainStateRefreshFunc(id string, field string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { object, err := s.DescribeCenTransitRouterMulticastDomain(id) if err != nil { if NotFoundError(err) { return object, "", nil } return nil, "", WrapError(err) } v, err := jsonpath.Get(field, object) currentStatus := fmt.Sprint(v) if strings.HasPrefix(field, "#") { v, _ := jsonpath.Get(strings.TrimPrefix(field, "#"), object) if v != nil { currentStatus = "#CHECKSET" } } for _, failState := range failStates { if currentStatus == failState { return object, currentStatus, WrapError(Error(FailedToReachTargetStatus, currentStatus)) } } return object, currentStatus, nil } } // DescribeCenTransitRouterMulticastDomain >>> Encapsulated. // DescribeCenTransitRouteTableAggregation <<< Encapsulated get interface for Cen TransitRouteTableAggregation. func (s *CenServiceV2) DescribeCenTransitRouteTableAggregation(id string) (object map[string]interface{}, err error) { client := s.client var request map[string]interface{} var response map[string]interface{} var query map[string]interface{} parts := strings.Split(id, "#") if len(parts) != 2 { parts = strings.Split(id, ":") } request = make(map[string]interface{}) query = make(map[string]interface{}) request["TransitRouteTableAggregationCidr"] = parts[1] request["TransitRouteTableId"] = parts[0] action := "DescribeTransitRouteTableAggregation" request["ClientToken"] = buildClientToken(action) wait := incrementalWait(3*time.Second, 5*time.Second) err = resource.Retry(1*time.Minute, func() *resource.RetryError { response, err = client.RpcPost("Cbn", "2017-09-12", action, query, request, true) request["ClientToken"] = buildClientToken(action) if err != nil { if IsExpectedErrors(err, []string{"Operation.Blocking"}) || NeedRetry(err) { wait() return resource.RetryableError(err) } return resource.NonRetryableError(err) } return nil }) addDebug(action, response, request) if err != nil { if IsExpectedErrors(err, []string{"InstanceNotExist.AggregationRoute", "InstanceNotExist.TransitRouterRouteTable"}) { return object, WrapErrorf(NotFoundErr("TransitRouteTableAggregation", id), NotFoundMsg, response) } return object, WrapErrorf(err, DefaultErrorMsg, id, action, AlibabaCloudSdkGoERROR) } v, err := jsonpath.Get("$.Data[*]", response) if err != nil { return object, WrapErrorf(err, FailedGetAttributeMsg, id, "$.Data[*]", response) } if len(v.([]interface{})) == 0 { return object, WrapErrorf(NotFoundErr("TransitRouteTableAggregation", id), NotFoundMsg, response) } return v.([]interface{})[0].(map[string]interface{}), nil } func (s *CenServiceV2) CenTransitRouteTableAggregationStateRefreshFunc(id string, field string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { object, err := s.DescribeCenTransitRouteTableAggregation(id) if err != nil { if NotFoundError(err) { return nil, "", nil } return nil, "", WrapError(err) } v, err := jsonpath.Get(field, object) currentStatus := fmt.Sprint(v) if strings.HasPrefix(field, "#") { v, _ := jsonpath.Get(strings.TrimPrefix(field, "#"), object) if v != nil { currentStatus = "#CHECKSET" } } for _, failState := range failStates { if currentStatus == failState { return object, currentStatus, WrapError(Error(FailedToReachTargetStatus, currentStatus)) } } return object, currentStatus, nil } } // DescribeCenTransitRouteTableAggregation >>> Encapsulated. // DescribeCenCenInstance <<< Encapsulated get interface for Cen CenInstance. func (s *CenServiceV2) DescribeCenCenInstance(id string) (object map[string]interface{}, err error) { client := s.client var request map[string]interface{} var response map[string]interface{} var query map[string]interface{} request = make(map[string]interface{}) query = make(map[string]interface{}) jsonString := convertObjectToJsonString(request) jsonString, _ = sjson.Set(jsonString, "Filter.0.Value.0", id) jsonString, _ = sjson.Set(jsonString, "Filter.0.Key", "CenId") _ = json.Unmarshal([]byte(jsonString), &request) action := "DescribeCens" wait := incrementalWait(3*time.Second, 5*time.Second) err = resource.Retry(1*time.Minute, func() *resource.RetryError { response, err = client.RpcPost("Cbn", "2017-09-12", action, query, 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("$.Cens.Cen[*]", response) if err != nil { return object, WrapErrorf(err, FailedGetAttributeMsg, id, "$.Cens.Cen[*]", response) } if len(v.([]interface{})) == 0 { return object, WrapErrorf(NotFoundErr("CenInstance", id), NotFoundMsg, response) } return v.([]interface{})[0].(map[string]interface{}), nil } func (s *CenServiceV2) CenCenInstanceStateRefreshFunc(id string, field string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { object, err := s.DescribeCenCenInstance(id) if err != nil { if NotFoundError(err) { return object, "", nil } return nil, "", WrapError(err) } v, err := jsonpath.Get(field, object) currentStatus := fmt.Sprint(v) if strings.HasPrefix(field, "#") { v, _ := jsonpath.Get(strings.TrimPrefix(field, "#"), object) if v != nil { currentStatus = "#CHECKSET" } } for _, failState := range failStates { if currentStatus == failState { return object, currentStatus, WrapError(Error(FailedToReachTargetStatus, currentStatus)) } } return object, currentStatus, nil } } // DescribeCenCenInstance >>> Encapsulated. // DescribeCenInterRegionTrafficQosPolicy <<< Encapsulated get interface for Cen InterRegionTrafficQosPolicy. func (s *CenServiceV2) DescribeCenInterRegionTrafficQosPolicy(id string) (object map[string]interface{}, err error) { client := s.client var request map[string]interface{} var response map[string]interface{} var query map[string]interface{} request = make(map[string]interface{}) query = make(map[string]interface{}) request["TrafficQosPolicyId"] = id action := "ListCenInterRegionTrafficQosPolicies" wait := incrementalWait(3*time.Second, 5*time.Second) err = resource.Retry(1*time.Minute, func() *resource.RetryError { response, err = client.RpcPost("Cbn", "2017-09-12", action, query, 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("$.TrafficQosPolicies[*]", response) if err != nil { return object, WrapErrorf(err, FailedGetAttributeMsg, id, "$.TrafficQosPolicies[*]", response) } if len(v.([]interface{})) == 0 { return object, WrapErrorf(NotFoundErr("InterRegionTrafficQosPolicy", id), NotFoundMsg, response) } return v.([]interface{})[0].(map[string]interface{}), nil } func (s *CenServiceV2) CenInterRegionTrafficQosPolicyStateRefreshFunc(id string, field string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { object, err := s.DescribeCenInterRegionTrafficQosPolicy(id) if err != nil { if NotFoundError(err) { return object, "", nil } return nil, "", WrapError(err) } v, err := jsonpath.Get(field, object) currentStatus := fmt.Sprint(v) if strings.HasPrefix(field, "#") { v, _ := jsonpath.Get(strings.TrimPrefix(field, "#"), object) if v != nil { currentStatus = "#CHECKSET" } } for _, failState := range failStates { if currentStatus == failState { return object, currentStatus, WrapError(Error(FailedToReachTargetStatus, currentStatus)) } } return object, currentStatus, nil } } // DescribeCenInterRegionTrafficQosPolicy >>> Encapsulated. // DescribeCenInterRegionTrafficQosQueue <<< Encapsulated get interface for Cen InterRegionTrafficQosQueue. func (s *CenServiceV2) DescribeCenInterRegionTrafficQosQueue(id string) (object map[string]interface{}, err error) { client := s.client var request map[string]interface{} var response map[string]interface{} var query map[string]interface{} request = make(map[string]interface{}) query = make(map[string]interface{}) request["TrafficQosQueueId"] = id action := "ListCenInterRegionTrafficQosQueues" wait := incrementalWait(3*time.Second, 5*time.Second) err = resource.Retry(1*time.Minute, func() *resource.RetryError { response, err = client.RpcPost("Cbn", "2017-09-12", action, query, 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("$.TrafficQosQueues[*]", response) if err != nil { return object, WrapErrorf(err, FailedGetAttributeMsg, id, "$.TrafficQosQueues[*]", response) } if len(v.([]interface{})) == 0 { return object, WrapErrorf(NotFoundErr("InterRegionTrafficQosQueue", id), NotFoundMsg, response) } return v.([]interface{})[0].(map[string]interface{}), nil } func (s *CenServiceV2) CenInterRegionTrafficQosQueueStateRefreshFunc(id string, field string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { object, err := s.DescribeCenInterRegionTrafficQosQueue(id) if err != nil { if NotFoundError(err) { return object, "", nil } return nil, "", WrapError(err) } v, err := jsonpath.Get(field, object) currentStatus := fmt.Sprint(v) if strings.HasPrefix(field, "#") { v, _ := jsonpath.Get(strings.TrimPrefix(field, "#"), object) if v != nil { currentStatus = "#CHECKSET" } } for _, failState := range failStates { if currentStatus == failState { return object, currentStatus, WrapError(Error(FailedToReachTargetStatus, currentStatus)) } } return object, currentStatus, nil } } // DescribeCenInterRegionTrafficQosQueue >>> Encapsulated. // DescribeCenTransitRouterVpnAttachment <<< Encapsulated get interface for Cen TransitRouterVpnAttachment. func (s *CenServiceV2) DescribeCenTransitRouterVpnAttachment(id string) (object map[string]interface{}, err error) { client := s.client var request map[string]interface{} var response map[string]interface{} var query map[string]interface{} request = make(map[string]interface{}) query = make(map[string]interface{}) request["TransitRouterAttachmentId"] = id request["RegionId"] = client.RegionId action := "ListTransitRouterVpnAttachments" wait := incrementalWait(3*time.Second, 5*time.Second) err = resource.Retry(1*time.Minute, func() *resource.RetryError { response, err = client.RpcPost("Cbn", "2017-09-12", action, query, request, true) if err != nil { if NeedRetry(err) { wait() return resource.RetryableError(err) } return resource.NonRetryableError(err) } return nil }) addDebug(action, response, request) code, _ := jsonpath.Get("$.NextToken", response) if InArray(fmt.Sprint(code), []string{}) { return object, WrapErrorf(NotFoundErr("TransitRouterVpnAttachment", id), NotFoundMsg, response) } v, err := jsonpath.Get("$.TransitRouterAttachments[*]", response) if err != nil { return object, WrapErrorf(err, FailedGetAttributeMsg, id, "$.TransitRouterAttachments[*]", response) } if len(v.([]interface{})) == 0 { return object, WrapErrorf(NotFoundErr("TransitRouterVpnAttachment", id), NotFoundMsg, response) } return v.([]interface{})[0].(map[string]interface{}), nil } func (s *CenServiceV2) CenTransitRouterVpnAttachmentStateRefreshFunc(id string, field string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { object, err := s.DescribeCenTransitRouterVpnAttachment(id) if err != nil { if NotFoundError(err) { return nil, "", nil } return nil, "", WrapError(err) } v, err := jsonpath.Get(field, object) currentStatus := fmt.Sprint(v) if strings.HasPrefix(field, "#") { v, _ := jsonpath.Get(strings.TrimPrefix(field, "#"), object) if v != nil { currentStatus = "#CHECKSET" } } for _, failState := range failStates { if currentStatus == failState { return object, currentStatus, WrapError(Error(FailedToReachTargetStatus, currentStatus)) } } return object, currentStatus, nil } } // DescribeCenTransitRouterVpnAttachment >>> Encapsulated. // DescribeCenTransitRouter <<< Encapsulated get interface for Cen TransitRouter. func (s *CenServiceV2) DescribeCenTransitRouter(id string) (object map[string]interface{}, err error) { client := s.client var request map[string]interface{} var response map[string]interface{} var query map[string]interface{} request = make(map[string]interface{}) query = make(map[string]interface{}) parts, err := ParseResourceId(id, 2) if err != nil { return nil, WrapError(err) } request["TransitRouterId"] = parts[1] request["RegionId"] = client.RegionId action := "ListTransitRouters" wait := incrementalWait(3*time.Second, 5*time.Second) err = resource.Retry(1*time.Minute, func() *resource.RetryError { response, err = client.RpcPost("Cbn", "2017-09-12", action, query, 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("$.TransitRouters[*]", response) if err != nil { return object, WrapErrorf(err, FailedGetAttributeMsg, id, "$.TransitRouters[*]", response) } if len(v.([]interface{})) == 0 { return object, WrapErrorf(NotFoundErr("TransitRouter", id), NotFoundMsg, response) } return v.([]interface{})[0].(map[string]interface{}), nil } func (s *CenServiceV2) CenTransitRouterStateRefreshFunc(id string, field string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { object, err := s.DescribeCenTransitRouter(id) if err != nil { if NotFoundError(err) { return nil, "", nil } return nil, "", WrapError(err) } v, err := jsonpath.Get(field, object) currentStatus := fmt.Sprint(v) if strings.HasPrefix(field, "#") { v, _ := jsonpath.Get(strings.TrimPrefix(field, "#"), object) if v != nil { currentStatus = "#CHECKSET" } } for _, failState := range failStates { if currentStatus == failState { return object, currentStatus, WrapError(Error(FailedToReachTargetStatus, currentStatus)) } } return object, currentStatus, nil } } // DescribeCenTransitRouter >>> Encapsulated. // DescribeCenTransitRouterCidr <<< Encapsulated get interface for Cen TransitRouterCidr. func (s *CenServiceV2) DescribeCenTransitRouterCidr(id string) (object map[string]interface{}, err error) { client := s.client var request map[string]interface{} var response map[string]interface{} var query map[string]interface{} parts := strings.Split(id, ":") if len(parts) != 2 { err = WrapError(fmt.Errorf("invalid Resource Id %s. Expected parts' length %d, got %d", id, 2, len(parts))) } request = make(map[string]interface{}) query = make(map[string]interface{}) request["TransitRouterCidrId"] = parts[1] request["TransitRouterId"] = parts[0] request["RegionId"] = client.RegionId action := "ListTransitRouterCidr" request["ClientToken"] = buildClientToken(action) wait := incrementalWait(3*time.Second, 5*time.Second) err = resource.Retry(1*time.Minute, func() *resource.RetryError { response, err = client.RpcPost("Cbn", "2017-09-12", action, query, request, true) request["ClientToken"] = buildClientToken(action) 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("$.CidrLists[*]", response) if err != nil { return object, WrapErrorf(err, FailedGetAttributeMsg, id, "$.CidrLists[*]", response) } if len(v.([]interface{})) == 0 { return object, WrapErrorf(NotFoundErr("TransitRouterCidr", id), NotFoundMsg, response) } return v.([]interface{})[0].(map[string]interface{}), nil } func (s *CenServiceV2) CenTransitRouterCidrStateRefreshFunc(id string, field string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { object, err := s.DescribeCenTransitRouterCidr(id) if err != nil { if NotFoundError(err) { return object, "", nil } return nil, "", WrapError(err) } v, err := jsonpath.Get(field, object) currentStatus := fmt.Sprint(v) if strings.HasPrefix(field, "#") { v, _ := jsonpath.Get(strings.TrimPrefix(field, "#"), object) if v != nil { currentStatus = "#CHECKSET" } } for _, failState := range failStates { if currentStatus == failState { return object, currentStatus, WrapError(Error(FailedToReachTargetStatus, currentStatus)) } } return object, currentStatus, nil } } // DescribeCenTransitRouterCidr >>> Encapsulated. // DescribeCenTransitRouterRouteTableAssociation <<< Encapsulated get interface for Cen TransitRouterRouteTableAssociation. func (s *CenServiceV2) DescribeCenTransitRouterRouteTableAssociation(id string) (object map[string]interface{}, err error) { client := s.client var request map[string]interface{} var response map[string]interface{} var query map[string]interface{} parts := strings.Split(id, ":") if len(parts) != 2 { err = WrapError(fmt.Errorf("invalid Resource Id %s. Expected parts' length %d, got %d", id, 2, len(parts))) } request = make(map[string]interface{}) query = make(map[string]interface{}) request["TransitRouterAttachmentId"] = parts[0] request["TransitRouterRouteTableId"] = parts[1] action := "ListTransitRouterRouteTableAssociations" wait := incrementalWait(3*time.Second, 5*time.Second) err = resource.Retry(1*time.Minute, func() *resource.RetryError { response, err = client.RpcPost("Cbn", "2017-09-12", action, query, 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("$.TransitRouterAssociations[*]", response) if err != nil { return object, WrapErrorf(err, FailedGetAttributeMsg, id, "$.TransitRouterAssociations[*]", response) } if len(v.([]interface{})) == 0 { return object, WrapErrorf(NotFoundErr("TransitRouterRouteTableAssociation", id), NotFoundMsg, response) } return v.([]interface{})[0].(map[string]interface{}), nil } func (s *CenServiceV2) CenTransitRouterRouteTableAssociationStateRefreshFunc(id string, field string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { object, err := s.DescribeCenTransitRouterRouteTableAssociation(id) if err != nil { if NotFoundError(err) { return object, "", nil } return nil, "", WrapError(err) } v, err := jsonpath.Get(field, object) currentStatus := fmt.Sprint(v) if strings.HasPrefix(field, "#") { v, _ := jsonpath.Get(strings.TrimPrefix(field, "#"), object) if v != nil { currentStatus = "#CHECKSET" } } for _, failState := range failStates { if currentStatus == failState { return object, currentStatus, WrapError(Error(FailedToReachTargetStatus, currentStatus)) } } return object, currentStatus, nil } } // DescribeCenTransitRouterRouteTableAssociation >>> Encapsulated.