alicloud/service_alicloud_pai_flow_v2.go (68 lines of code) (raw):

package alicloud import ( "fmt" "github.com/PaesslerAG/jsonpath" "github.com/aliyun/terraform-provider-alicloud/alicloud/connectivity" "github.com/hashicorp/terraform-plugin-sdk/helper/resource" "strings" "time" ) type PaiFlowServiceV2 struct { client *connectivity.AliyunClient } // DescribePaiFlowPipeline <<< Encapsulated get interface for PaiFlow Pipeline. func (s *PaiFlowServiceV2) DescribePaiFlowPipeline(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]*string PipelineId := id request = make(map[string]interface{}) query = make(map[string]*string) request["PipelineId"] = id action := fmt.Sprintf("/api/v1/pipelines/%s", PipelineId) wait := incrementalWait(3*time.Second, 5*time.Second) err = resource.Retry(1*time.Minute, func() *resource.RetryError { response, err = client.RoaGet("PAIFlow", "2021-02-02", action, query, nil, nil) 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{"200200004"}) { return object, WrapErrorf(NotFoundErr("Pipeline", id), NotFoundMsg, response) } return object, WrapErrorf(err, DefaultErrorMsg, id, action, AlibabaCloudSdkGoERROR) } return response, nil } func (s *PaiFlowServiceV2) PaiFlowPipelineStateRefreshFunc(id string, field string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { object, err := s.DescribePaiFlowPipeline(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 } } // DescribePaiFlowPipeline >>> Encapsulated.