alicloud/service_alicloud_oss_v2.go (1,478 lines of code) (raw):

package alicloud import ( "encoding/json" "fmt" "strings" "time" "github.com/tidwall/sjson" "github.com/PaesslerAG/jsonpath" "github.com/aliyun/terraform-provider-alicloud/alicloud/connectivity" "github.com/hashicorp/terraform-plugin-sdk/helper/resource" ) type OssServiceV2 struct { client *connectivity.AliyunClient } // DescribeOssBucketAcl <<< Encapsulated get interface for Oss BucketAcl. func (s *OssServiceV2) DescribeOssBucketAcl(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 action := fmt.Sprintf("/?acl") request = make(map[string]interface{}) query = make(map[string]*string) hostMap := make(map[string]*string) hostMap["bucket"] = StringPointer(id) wait := incrementalWait(3*time.Second, 5*time.Second) err = resource.Retry(1*time.Minute, func() *resource.RetryError { response, err = client.Do("Oss", xmlParam("GET", "2019-05-17", "GetBucketAcl", action), query, nil, nil, hostMap, 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{"NoSuchBucket"}) { return object, WrapErrorf(NotFoundErr("BucketAcl", id), NotFoundMsg, response) } addDebug(action, response, request) return object, WrapErrorf(err, DefaultErrorMsg, id, action, AlibabaCloudSdkGoERROR) } if response == nil { return object, WrapErrorf(NotFoundErr("BucketAcl", id), NotFoundMsg, response) } v, err := jsonpath.Get("$.AccessControlPolicy.AccessControlList", response) if err != nil { return object, WrapErrorf(err, FailedGetAttributeMsg, id, "$.AccessControlPolicy.AccessControlList", response) } return v.(map[string]interface{}), nil } func (s *OssServiceV2) OssBucketAclStateRefreshFunc(id string, field string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { object, err := s.DescribeOssBucketAcl(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 } } // DescribeOssBucketAcl >>> Encapsulated. // DescribeOssBucketReferer <<< Encapsulated get interface for Oss BucketReferer. func (s *OssServiceV2) DescribeOssBucketReferer(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 request = make(map[string]interface{}) query = make(map[string]*string) hostMap := make(map[string]*string) hostMap["bucket"] = StringPointer(id) action := fmt.Sprintf("/?referer") wait := incrementalWait(3*time.Second, 5*time.Second) err = resource.Retry(1*time.Minute, func() *resource.RetryError { response, err = client.Do("Oss", xmlParam("GET", "2019-05-17", "GetBucketReferer", action), query, nil, nil, hostMap, 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{"NoSuchBucket"}) { return object, WrapErrorf(NotFoundErr("BucketReferer", id), NotFoundMsg, response) } return object, WrapErrorf(err, DefaultErrorMsg, id, action, AlibabaCloudSdkGoERROR) } if response == nil { return object, WrapErrorf(NotFoundErr("BucketReferer", id), NotFoundMsg, response) } v, err := jsonpath.Get("$.RefererConfiguration", response) if err != nil { return object, WrapErrorf(err, FailedGetAttributeMsg, id, "$.RefererConfiguration", response) } return v.(map[string]interface{}), nil } func (s *OssServiceV2) OssBucketRefererStateRefreshFunc(id string, field string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { object, err := s.DescribeOssBucketReferer(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 } } // DescribeOssBucketReferer >>> Encapsulated. // DescribeOssBucketHttpsConfig <<< Encapsulated get interface for Oss BucketHttpsConfig. func (s *OssServiceV2) DescribeOssBucketHttpsConfig(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 request = make(map[string]interface{}) query = make(map[string]*string) hostMap := make(map[string]*string) hostMap["bucket"] = StringPointer(id) action := fmt.Sprintf("/?httpsConfig") wait := incrementalWait(3*time.Second, 5*time.Second) err = resource.Retry(1*time.Minute, func() *resource.RetryError { response, err = client.Do("Oss", xmlParam("GET", "2019-05-17", "GetBucketHttpsConfig", action), query, nil, nil, hostMap, 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{"NoSuchHttpsConfig", "NoSuchBucket"}) { return object, WrapErrorf(NotFoundErr("BucketHttpsConfig", id), NotFoundMsg, response) } return object, WrapErrorf(err, DefaultErrorMsg, id, action, AlibabaCloudSdkGoERROR) } if response == nil { return object, WrapErrorf(NotFoundErr("BucketHttpsConfig", id), NotFoundMsg, response) } v, err := jsonpath.Get("$.HttpsConfiguration.TLS", response) if err != nil { return object, WrapErrorf(err, FailedGetAttributeMsg, id, "$.HttpsConfiguration.TLS", response) } return v.(map[string]interface{}), nil } func (s *OssServiceV2) OssBucketHttpsConfigStateRefreshFunc(id string, field string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { object, err := s.DescribeOssBucketHttpsConfig(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 } } // DescribeOssBucketHttpsConfig >>> Encapsulated. // DescribeOssBucketCors <<< Encapsulated get interface for Oss BucketCors. func (s *OssServiceV2) DescribeOssBucketCors(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 request = make(map[string]interface{}) query = make(map[string]*string) hostMap := make(map[string]*string) hostMap["bucket"] = StringPointer(id) action := fmt.Sprintf("/?cors") wait := incrementalWait(3*time.Second, 5*time.Second) err = resource.Retry(1*time.Minute, func() *resource.RetryError { response, err = client.Do("Oss", xmlParam("GET", "2019-05-17", "GetBucketCors", action), query, nil, nil, hostMap, false) if err != nil { if NeedRetry(err) { wait() return resource.RetryableError(err) } return resource.NonRetryableError(err) } addDebug(action, response, request) return nil }) addDebug(action, response, request) if err != nil { if IsExpectedErrors(err, []string{"NoSuchBucket", "NoSuchCORSConfiguration"}) { return object, WrapErrorf(NotFoundErr("BucketCors", id), NotFoundMsg, response) } addDebug(action, response, request) return object, WrapErrorf(err, DefaultErrorMsg, id, action, AlibabaCloudSdkGoERROR) } if response == nil { return object, WrapErrorf(NotFoundErr("BucketCors", id), NotFoundMsg, response) } v, err := jsonpath.Get("$.CORSConfiguration", response) if err != nil { return object, WrapErrorf(err, FailedGetAttributeMsg, id, "$.CORSConfiguration", response) } return v.(map[string]interface{}), nil } func (s *OssServiceV2) OssBucketCorsStateRefreshFunc(id string, field string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { object, err := s.DescribeOssBucketCors(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 } } // DescribeOssBucketCors >>> Encapsulated. // DescribeOssBucketPolicy func (s *OssServiceV2) DescribeOssBucketPolicy(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 action := fmt.Sprintf("/?policy") request = make(map[string]interface{}) query = make(map[string]*string) hostMap := make(map[string]*string) hostMap["bucket"] = StringPointer(id) wait := incrementalWait(3*time.Second, 5*time.Second) err = resource.Retry(1*time.Minute, func() *resource.RetryError { response, err = client.Do("Oss", xmlJsonParam("GET", "2019-05-17", "GetBucketPolicy", action), query, nil, nil, hostMap, 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 { addDebug(action, response, request) return object, WrapErrorf(err, DefaultErrorMsg, id, action, AlibabaCloudSdkGoERROR) } if response == nil { return object, WrapErrorf(NotFoundErr("BucketPolicy", id), NotFoundMsg, ProviderERROR, fmt.Sprint(response["RequestId"])) } return response, nil } func (s *OssServiceV2) OssBucketPolicyStateRefreshFunc(id string, field string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { object, err := s.DescribeOssBucketPolicy(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 } } // DescribeOssBucketPolicy >>> Encapsulated. // DescribeOssBucketVersioning <<< Encapsulated get interface for Oss BucketVersioning. func (s *OssServiceV2) DescribeOssBucketVersioning(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 action := fmt.Sprintf("/?versioning") request = make(map[string]interface{}) query = make(map[string]*string) hostMap := make(map[string]*string) hostMap["bucket"] = StringPointer(id) wait := incrementalWait(3*time.Second, 5*time.Second) err = resource.Retry(1*time.Minute, func() *resource.RetryError { response, err = client.Do("Oss", xmlParam("GET", "2019-05-17", "GetBucketVersioning", action), query, nil, nil, hostMap, 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 { addDebug(action, response, request) return object, WrapErrorf(err, DefaultErrorMsg, id, action, AlibabaCloudSdkGoERROR) } if response == nil { return object, WrapErrorf(NotFoundErr("BucketVersioning", id), NotFoundMsg, response) } v, err := jsonpath.Get("$.VersioningConfiguration", response) if err != nil { return object, WrapErrorf(NotFoundErr("BucketVersioning", id), NotFoundMsg, response) } currentStatus := v.(map[string]interface{})["Status"] if currentStatus == nil { return object, WrapErrorf(NotFoundErr("BucketVersioning", id), NotFoundMsg, response) } return v.(map[string]interface{}), nil } func (s *OssServiceV2) OssBucketVersioningStateRefreshFunc(id string, field string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { object, err := s.DescribeOssBucketVersioning(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 } } // DescribeOssBucketVersioning >>> Encapsulated. // DescribeOssBucketArchiveDirectRead func (s *OssServiceV2) DescribeOssBucketArchiveDirectRead(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 action := fmt.Sprintf("/?bucketArchiveDirectRead") request = make(map[string]interface{}) query = make(map[string]*string) hostMap := make(map[string]*string) hostMap["bucket"] = StringPointer(id) wait := incrementalWait(3*time.Second, 5*time.Second) err = resource.Retry(1*time.Minute, func() *resource.RetryError { response, err = client.Do("Oss", xmlParam("GET", "2019-05-17", "GetBucketArchiveDirectRead", action), query, nil, nil, hostMap, true) if err != nil { if NeedRetry(err) { wait() return resource.RetryableError(err) } return resource.NonRetryableError(err) } addDebug(action, response, request) return nil }) if response == nil { return object, WrapErrorf(NotFoundErr("BucketArchiveDirect", id), NotFoundMsg, response) } if err != nil { addDebug(action, response, request) return object, WrapErrorf(err, DefaultErrorMsg, id, action, AlibabaCloudSdkGoERROR) } v, err := jsonpath.Get("$.ArchiveDirectReadConfiguration", response) if err != nil { return object, WrapErrorf(err, FailedGetAttributeMsg, id, "$.ArchiveDirectReadConfiguration", response) } return v.(map[string]interface{}), nil } func (s *OssServiceV2) OssBucketArchiveDirectReadStateRefreshFunc(id string, field string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { object, err := s.DescribeOssBucketArchiveDirectRead(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 } } // DescribeOssBucketArchiveDirectRead >>> Encapsulated. // DescribeOssBucketRequestPayment func (s *OssServiceV2) DescribeOssBucketRequestPayment(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 action := fmt.Sprintf("/?requestPayment") request = make(map[string]interface{}) query = make(map[string]*string) hostMap := make(map[string]*string) hostMap["bucket"] = StringPointer(id) wait := incrementalWait(3*time.Second, 5*time.Second) err = resource.Retry(1*time.Minute, func() *resource.RetryError { response, err = client.Do("Oss", xmlParam("GET", "2019-05-17", "GetBucketRequestPayment", action), query, nil, nil, hostMap, 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 { addDebug(action, response, request) return object, WrapErrorf(err, DefaultErrorMsg, id, action, AlibabaCloudSdkGoERROR) } if response == nil { return object, WrapErrorf(NotFoundErr("BucketRequestPayment", id), NotFoundMsg, response) } v, err := jsonpath.Get("$.RequestPaymentConfiguration", response) if err != nil { return object, WrapErrorf(err, FailedGetAttributeMsg, id, "$.RequestPaymentConfiguration", response) } return v.(map[string]interface{}), nil } func (s *OssServiceV2) OssBucketRequestPaymentStateRefreshFunc(id string, field string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { object, err := s.DescribeOssBucketRequestPayment(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 } } // DescribeOssBucketRequestPayment >>> Encapsulated. // DescribeOssBucketTransferAcceleration func (s *OssServiceV2) DescribeOssBucketTransferAcceleration(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 action := fmt.Sprintf("/?transferAcceleration") request = make(map[string]interface{}) query = make(map[string]*string) hostMap := make(map[string]*string) hostMap["bucket"] = StringPointer(id) wait := incrementalWait(3*time.Second, 5*time.Second) err = resource.Retry(1*time.Minute, func() *resource.RetryError { response, err = client.Do("Oss", xmlParam("GET", "2019-05-17", "GetBucketTransferAcceleration", action), query, nil, nil, hostMap, 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{"404"}) { return object, WrapErrorf(NotFoundErr("BucketTransferAcceleration", id), NotFoundMsg, response) } addDebug(action, response, request) return object, WrapErrorf(err, DefaultErrorMsg, id, action, AlibabaCloudSdkGoERROR) } if response == nil { return object, WrapErrorf(NotFoundErr("BucketTransferAcceleration", id), NotFoundMsg, response) } v, err := jsonpath.Get("$.TransferAccelerationConfiguration", response) if err != nil { return object, WrapErrorf(err, FailedGetAttributeMsg, id, "$.TransferAccelerationConfiguration", response) } return v.(map[string]interface{}), nil } func (s *OssServiceV2) OssBucketTransferAccelerationStateRefreshFunc(id string, field string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { object, err := s.DescribeOssBucketTransferAcceleration(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 } } // DescribeOssBucketTransferAcceleration >>> Encapsulated. // DescribeOssBucketAccessMonitor func (s *OssServiceV2) DescribeOssBucketAccessMonitor(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 action := fmt.Sprintf("/?accessmonitor") request = make(map[string]interface{}) query = make(map[string]*string) hostMap := make(map[string]*string) hostMap["bucket"] = StringPointer(id) wait := incrementalWait(3*time.Second, 5*time.Second) err = resource.Retry(1*time.Minute, func() *resource.RetryError { response, err = client.Do("Oss", xmlParam("GET", "2019-05-17", "GetBucketAccessMonitor", action), query, nil, nil, hostMap, 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{"NoSuchBucket"}) { return object, WrapErrorf(NotFoundErr("BucketAccessMonitor", id), NotFoundMsg, response) } return object, WrapErrorf(err, DefaultErrorMsg, id, action, AlibabaCloudSdkGoERROR) } if response == nil { return object, WrapErrorf(NotFoundErr("BucketAccessMonitor", id), NotFoundMsg, response) } v, err := jsonpath.Get("$.AccessMonitorConfiguration", response) if err != nil { return object, WrapErrorf(err, FailedGetAttributeMsg, id, "$.AccessMonitorConfiguration", response) } return v.(map[string]interface{}), nil } func (s *OssServiceV2) OssBucketAccessMonitorStateRefreshFunc(id string, field string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { object, err := s.DescribeOssBucketAccessMonitor(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 } } // DescribeOssBucketAccessMonitor >>> Encapsulated. // DescribeOssBucketLogging func (s *OssServiceV2) DescribeOssBucketLogging(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 action := fmt.Sprintf("/?logging") request = make(map[string]interface{}) query = make(map[string]*string) hostMap := make(map[string]*string) hostMap["bucket"] = StringPointer(id) wait := incrementalWait(3*time.Second, 5*time.Second) err = resource.Retry(1*time.Minute, func() *resource.RetryError { response, err = client.Do("Oss", xmlParam("GET", "2019-05-17", "GetBucketLogging", action), query, nil, nil, hostMap, 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) } if response == nil { return object, WrapErrorf(NotFoundErr("BucketLogging", id), NotFoundMsg, response) } v, err := jsonpath.Get("$.BucketLoggingStatus.LoggingEnabled", response) if err != nil { return object, WrapErrorf(NotFoundErr("BucketLogging", id), NotFoundMsg, response) } currentStatus := v.(map[string]interface{})["TargetBucket"] if currentStatus == nil { return object, WrapErrorf(NotFoundErr("BucketLogging", id), NotFoundMsg, response) } return v.(map[string]interface{}), nil } func (s *OssServiceV2) OssBucketLoggingStateRefreshFunc(id string, field string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { object, err := s.DescribeOssBucketLogging(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 } } // DescribeOssBucketLogging >>> Encapsulated. // DescribeOssBucketServerSideEncryption <<< Encapsulated get interface for Oss BucketServerSideEncryption. func (s *OssServiceV2) DescribeOssBucketServerSideEncryption(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 request = make(map[string]interface{}) query = make(map[string]*string) hostMap := make(map[string]*string) hostMap["bucket"] = StringPointer(id) action := fmt.Sprintf("/?encryption") wait := incrementalWait(3*time.Second, 5*time.Second) err = resource.Retry(1*time.Minute, func() *resource.RetryError { response, err = client.Do("Oss", xmlParam("GET", "2019-05-17", "GetBucketEncryption", action), query, nil, nil, hostMap, 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{"NoSuchServerSideEncryptionRule", "NoSuchBucket"}) { return object, WrapErrorf(NotFoundErr("BucketServerSideEncryption", id), NotFoundMsg, response) } return object, WrapErrorf(err, DefaultErrorMsg, id, action, AlibabaCloudSdkGoERROR) } if response == nil { return object, WrapErrorf(NotFoundErr("BucketServerSideEncryption", id), NotFoundMsg, response) } v, err := jsonpath.Get("$.ServerSideEncryptionRule.ApplyServerSideEncryptionByDefault", response) if err != nil { return object, WrapErrorf(err, FailedGetAttributeMsg, id, "$.ServerSideEncryptionRule.ApplyServerSideEncryptionByDefault", response) } return v.(map[string]interface{}), nil } func (s *OssServiceV2) OssBucketServerSideEncryptionStateRefreshFunc(id string, field string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { object, err := s.DescribeOssBucketServerSideEncryption(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 } } // DescribeOssBucketServerSideEncryption >>> Encapsulated. // DescribeOssBucketUserDefinedLogFields func (s *OssServiceV2) DescribeOssBucketUserDefinedLogFields(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 action := fmt.Sprintf("/?userDefinedLogFieldsConfig") request = make(map[string]interface{}) query = make(map[string]*string) hostMap := make(map[string]*string) hostMap["bucket"] = StringPointer(id) wait := incrementalWait(3*time.Second, 5*time.Second) err = resource.Retry(1*time.Minute, func() *resource.RetryError { response, err = client.Do("Oss", xmlParam("GET", "2019-05-17", "GetBucketUserDefinedLogFieldsConfig", action), query, nil, nil, hostMap, 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{"NoSuchBucket", "NoSuchUserDefinedLogFieldsConfig"}) { return object, WrapErrorf(NotFoundErr("BucketUserDefinedLogFields", id), NotFoundMsg, response) } addDebug(action, response, request) return object, WrapErrorf(err, DefaultErrorMsg, id, action, AlibabaCloudSdkGoERROR) } if response == nil { return object, WrapErrorf(NotFoundErr("BucketUserDefinedLogFields", id), NotFoundMsg, response) } return response, nil } func (s *OssServiceV2) OssBucketUserDefinedLogFieldsStateRefreshFunc(id string, field string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { object, err := s.DescribeOssBucketUserDefinedLogFields(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 } } // DescribeOssBucketUserDefinedLogFields >>> Encapsulated. // DescribeOssBucketMetaQuery func (s *OssServiceV2) DescribeOssBucketMetaQuery(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 action := fmt.Sprintf("/?metaQuery") request = make(map[string]interface{}) query = make(map[string]*string) hostMap := make(map[string]*string) hostMap["bucket"] = StringPointer(id) wait := incrementalWait(3*time.Second, 5*time.Second) err = resource.Retry(1*time.Minute, func() *resource.RetryError { response, err = client.Do("Oss", xmlParam("GET", "2019-05-17", "GetBucketMetaQueryStatus", action), query, nil, nil, hostMap, 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{"NoSuchBucket", "MetaQueryNotExist", "AccessDenied"}) { return object, WrapErrorf(NotFoundErr("BucketMetaQuery", id), NotFoundMsg, response) } addDebug(action, response, request) return object, WrapErrorf(err, DefaultErrorMsg, id, action, AlibabaCloudSdkGoERROR) } if response == nil { return object, WrapErrorf(NotFoundErr("BucketMetaQuery", id), NotFoundMsg, response) } v, err := jsonpath.Get("$.MetaQueryStatus", response) if err != nil { return object, WrapErrorf(err, FailedGetAttributeMsg, id, "$.MetaQueryStatus", response) } return v.(map[string]interface{}), nil } func (s *OssServiceV2) OssBucketMetaQueryStateRefreshFunc(id string, field string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { object, err := s.DescribeOssBucketMetaQuery(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 } } // DescribeOssBucketMetaQuery >>> Encapsulated. // DescribeOssBucketDataRedundancyTransition func (s *OssServiceV2) DescribeOssBucketDataRedundancyTransition(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 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))) } action := fmt.Sprintf("/?redundancyTransition") request = make(map[string]interface{}) query = make(map[string]*string) hostMap := make(map[string]*string) hostMap["bucket"] = StringPointer(parts[0]) query["x-oss-redundancy-transition-taskid"] = StringPointer(parts[1]) wait := incrementalWait(3*time.Second, 5*time.Second) err = resource.Retry(1*time.Minute, func() *resource.RetryError { response, err = client.Do("Oss", xmlParam("GET", "2019-05-17", "GetBucketDataRedundancyTransition", action), query, nil, nil, hostMap, 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{"NoSuchBucket", "BucketDataRedundancyTransitionTaskNotExist"}) { return object, WrapErrorf(NotFoundErr("BucketDataRedundancyTransition", id), NotFoundMsg, response) } addDebug(action, response, request) return object, WrapErrorf(err, DefaultErrorMsg, id, action, AlibabaCloudSdkGoERROR) } if response == nil { return object, WrapErrorf(NotFoundErr("BucketDataRedundancyTransition", id), NotFoundMsg, response) } return response, nil } func (s *OssServiceV2) OssBucketDataRedundancyTransitionStateRefreshFunc(id string, field string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { object, err := s.DescribeOssBucketDataRedundancyTransition(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 } } // DescribeOssBucketDataRedundancyTransition >>> Encapsulated. // DescribeOssAccountPublicAccessBlock func (s *OssServiceV2) DescribeOssAccountPublicAccessBlock(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 parts := strings.Split(id, ":") if len(parts) != 0 { err = WrapError(fmt.Errorf("invalid Resource Id %s. Expected parts' length %d, got %d", id, 0, len(parts))) } action := fmt.Sprintf("/?publicAccessBlock") request = make(map[string]interface{}) query = make(map[string]*string) hostMap := make(map[string]*string) wait := incrementalWait(3*time.Second, 5*time.Second) err = resource.Retry(1*time.Minute, func() *resource.RetryError { response, err = client.Do("Oss", xmlParam("GET", "2019-05-17", "GetPublicAccessBlock", action), query, nil, nil, hostMap, 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{"NoSuchBucket"}) { return object, WrapErrorf(NotFoundErr("AccountPublicAccessBlock", id), NotFoundMsg, response) } addDebug(action, response, request) return object, WrapErrorf(err, DefaultErrorMsg, id, action, AlibabaCloudSdkGoERROR) } if response == nil { return object, WrapErrorf(NotFoundErr("AccountPublicAccessBlock", id), NotFoundMsg, response) } v, err := jsonpath.Get("$.PublicAccessBlockConfiguration", response) if err != nil { return object, WrapErrorf(err, FailedGetAttributeMsg, id, "$.PublicAccessBlockConfiguration", response) } return v.(map[string]interface{}), nil } func (s *OssServiceV2) OssAccountPublicAccessBlockStateRefreshFunc(id string, field string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { object, err := s.DescribeOssAccountPublicAccessBlock(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 } } // DescribeOssAccountPublicAccessBlock >>> Encapsulated. // DescribeOssBucketPublicAccessBlock func (s *OssServiceV2) DescribeOssBucketPublicAccessBlock(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 action := fmt.Sprintf("/?publicAccessBlock") request = make(map[string]interface{}) query = make(map[string]*string) hostMap := make(map[string]*string) hostMap["bucket"] = StringPointer(id) wait := incrementalWait(3*time.Second, 5*time.Second) err = resource.Retry(1*time.Minute, func() *resource.RetryError { response, err = client.Do("Oss", xmlParam("GET", "2019-05-17", "GetBucketPublicAccessBlock", action), query, nil, nil, hostMap, 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 { addDebug(action, response, request) return object, WrapErrorf(err, DefaultErrorMsg, id, action, AlibabaCloudSdkGoERROR) } if response == nil { return object, WrapErrorf(NotFoundErr("BucketPublicAccessBlock", id), NotFoundMsg, response) } currentStatus, err := jsonpath.Get("$.PublicAccessBlockConfiguration.BlockPublicAccess", response) if currentStatus == "" { return object, WrapErrorf(NotFoundErr("BucketPublicAccessBlock", id), NotFoundMsg, response) } return response, nil } func (s *OssServiceV2) OssBucketPublicAccessBlockStateRefreshFunc(id string, field string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { object, err := s.DescribeOssBucketPublicAccessBlock(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 } } // DescribeOssBucketPublicAccessBlock >>> Encapsulated. // DescribeOssBucketCname func (s *OssServiceV2) DescribeOssBucketCname(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 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))) } action := fmt.Sprintf("/?cname") request = make(map[string]interface{}) query = make(map[string]*string) hostMap := make(map[string]*string) hostMap["bucket"] = StringPointer(parts[0]) wait := incrementalWait(3*time.Second, 5*time.Second) err = resource.Retry(1*time.Minute, func() *resource.RetryError { response, err = client.Do("Oss", xmlParam("GET", "2019-05-17", "ListCname", action), query, nil, nil, hostMap, 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{"NoSuchBucket"}) { return object, WrapErrorf(NotFoundErr("BucketCname", id), NotFoundMsg, response) } return object, WrapErrorf(err, DefaultErrorMsg, id, action, AlibabaCloudSdkGoERROR) } if response == nil { return object, WrapErrorf(NotFoundErr("BucketCname", id), NotFoundMsg, response) } v, err := jsonpath.Get("$.ListCnameResult", response) if err != nil { return object, WrapErrorf(err, FailedGetAttributeMsg, id, "$.ListCnameResult", response) } item := v.(map[string]interface{}) domains, err := jsonpath.Get("$.Cname[*]", item) if err != nil { return object, WrapErrorf(err, FailedGetAttributeMsg, id, "$.Cname[*]", item) } for _, vv := range domains.([]interface{}) { if vv.(map[string]interface{})["Domain"] == parts[1] { return vv.(map[string]interface{}), nil } } return object, WrapErrorf(NotFoundErr("BucketCname", id), NotFoundMsg, response) } func (s *OssServiceV2) OssBucketCnameStateRefreshFunc(id string, field string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { object, err := s.DescribeOssBucketCname(id) if err != nil { if NotFoundError(err) { return nil, "", nil } return nil, "", WrapError(err) } v, err := jsonpath.Get(field, object) if err != nil { return object, "", WrapErrorf(err, FailedGetAttributeMsg, id, field, object) } currentStatus := fmt.Sprint(v) for _, failState := range failStates { if currentStatus == failState { return object, currentStatus, WrapError(Error(FailedToReachTargetStatus, currentStatus)) } } return object, currentStatus, nil } } // DescribeOssBucketCname >>> Encapsulated. // DescribeOssBucketCnameToken func (s *OssServiceV2) DescribeOssBucketCnameToken(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 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))) } action := fmt.Sprintf("/?cname&comp=token") request = make(map[string]interface{}) query = make(map[string]*string) hostMap := make(map[string]*string) hostMap["bucket"] = StringPointer(parts[0]) jsonString := "{}" jsonString, _ = sjson.Set(jsonString, "BucketCnameConfiguration.Cname.Domain", parts[1]) json.Unmarshal([]byte(jsonString), &request) body := request wait := incrementalWait(3*time.Second, 5*time.Second) err = resource.Retry(1*time.Minute, func() *resource.RetryError { response, err = client.Do("Oss", xmlParam("POST", "2019-05-17", "CreateCnameToken", action), query, body, nil, hostMap, 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 { if IsExpectedErrors(err, []string{"NoSuchBucket", "CnameTokenNotFound"}) { return object, WrapErrorf(NotFoundErr("BucketCnameToken", id), NotFoundMsg, response) } return object, WrapErrorf(err, DefaultErrorMsg, id, action, AlibabaCloudSdkGoERROR) } if response == nil { return object, WrapErrorf(NotFoundErr("BucketCnameToken", id), NotFoundMsg, response) } v, err := jsonpath.Get("$.CnameToken", response) if err != nil { return object, WrapErrorf(err, FailedGetAttributeMsg, id, "$.CnameToken", response) } return v.(map[string]interface{}), nil } func (s *OssServiceV2) OssBucketCnameTokenStateRefreshFunc(id string, field string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { object, err := s.DescribeOssBucketCnameToken(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 } } // DescribeOssBucketCnameToken >>> Encapsulated. // DescribeOssBucketWebsite func (s *OssServiceV2) DescribeOssBucketWebsite(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 action := fmt.Sprintf("/?website") request = make(map[string]interface{}) query = make(map[string]*string) hostMap := make(map[string]*string) hostMap["bucket"] = StringPointer(id) wait := incrementalWait(3*time.Second, 5*time.Second) err = resource.Retry(1*time.Minute, func() *resource.RetryError { response, err = client.Do("Oss", xmlParam("GET", "2019-05-17", "GetBucketWebsite", action), query, nil, nil, hostMap, 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{"NoSuchBucket", "NoSuchWebsiteConfiguration"}) { return object, WrapErrorf(NotFoundErr("BucketWebsite", id), NotFoundMsg, response) } return object, WrapErrorf(err, DefaultErrorMsg, id, action, AlibabaCloudSdkGoERROR) } if response == nil { return object, WrapErrorf(NotFoundErr("BucketWebsite", id), NotFoundMsg, response) } v, err := jsonpath.Get("$.WebsiteConfiguration", response) if err != nil { return object, WrapErrorf(err, FailedGetAttributeMsg, id, "$.WebsiteConfiguration", response) } return v.(map[string]interface{}), nil } func (s *OssServiceV2) OssBucketWebsiteStateRefreshFunc(id string, field string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { object, err := s.DescribeOssBucketWebsite(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 } } // DescribeOssBucketWebsite >>> Encapsulated. // DescribeOssAccessPoint func (s *OssServiceV2) DescribeOssAccessPoint(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 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))) } action := fmt.Sprintf("/?accessPoint") request = make(map[string]interface{}) query = make(map[string]*string) hostMap := make(map[string]*string) query["x-oss-access-point-name"] = StringPointer(parts[1]) hostMap["bucket"] = StringPointer(parts[0]) wait := incrementalWait(3*time.Second, 5*time.Second) err = resource.Retry(1*time.Minute, func() *resource.RetryError { response, err = client.Do("Oss", xmlParam("GET", "2019-05-17", "GetAccessPoint", action), query, nil, nil, hostMap, 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{"NoSuchAccessPoint"}) { return object, WrapErrorf(NotFoundErr("AccessPoint", id), NotFoundMsg, response) } addDebug(action, response, request) return object, WrapErrorf(err, DefaultErrorMsg, id, action, AlibabaCloudSdkGoERROR) } if response == nil { return object, WrapErrorf(NotFoundErr("AccessPoint", id), NotFoundMsg, response) } v, err := jsonpath.Get("$.GetAccessPointResult", response) if err != nil { return object, WrapErrorf(NotFoundErr("AccessPoint", id), NotFoundMsg, response) } return v.(map[string]interface{}), nil } func (s *OssServiceV2) OssAccessPointStateRefreshFunc(id string, field string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { object, err := s.DescribeOssAccessPoint(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 } } // DescribeOssAccessPoint >>> Encapsulated. // DescribeOssBucketLifecycle func (s *OssServiceV2) DescribeOssBucketLifecycle(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 action := fmt.Sprintf("/?lifecycle") request = make(map[string]interface{}) query = make(map[string]*string) hostMap := make(map[string]*string) hostMap["bucket"] = StringPointer(id) wait := incrementalWait(3*time.Second, 5*time.Second) err = resource.Retry(1*time.Minute, func() *resource.RetryError { response, err = client.Do("Oss", xmlParam("GET", "2019-05-17", "GetBucketLifecycle", action), query, nil, nil, hostMap, 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{"NoSuchBucket", "NoSuchLifecycle"}) { return object, WrapErrorf(NotFoundErr("BucketLifecycle", id), NotFoundMsg, response) } return object, WrapErrorf(err, DefaultErrorMsg, id, action, AlibabaCloudSdkGoERROR) } if response == nil { return object, WrapErrorf(NotFoundErr("BucketLifecycle", id), NotFoundMsg, response) } v, err := jsonpath.Get("$.LifecycleConfiguration", response) if err != nil { return object, WrapErrorf(err, FailedGetAttributeMsg, id, "$.LifecycleConfiguration", response) } return v.(map[string]interface{}), nil } func (s *OssServiceV2) OssBucketLifecycleStateRefreshFunc(id string, field string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { object, err := s.DescribeOssBucketLifecycle(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 } } // DescribeOssBucketLifecycle >>> Encapsulated. // DescribeOssBucketWorm func (s *OssServiceV2) DescribeOssBucketWorm(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 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))) } action := fmt.Sprintf("/?worm") request = make(map[string]interface{}) query = make(map[string]*string) hostMap := make(map[string]*string) hostMap["bucket"] = StringPointer(parts[0]) wait := incrementalWait(3*time.Second, 5*time.Second) err = resource.Retry(1*time.Minute, func() *resource.RetryError { response, err = client.Do("Oss", xmlParam("GET", "2019-05-17", "GetBucketWorm", action), query, nil, nil, hostMap, 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{"NoSuchBucket", "NoSuchWORMConfiguration"}) { return object, WrapErrorf(NotFoundErr("BucketWorm", id), NotFoundMsg, response) } return object, WrapErrorf(err, DefaultErrorMsg, id, action, AlibabaCloudSdkGoERROR) } if response == nil { return object, WrapErrorf(NotFoundErr("BucketWorm", id), NotFoundMsg, response) } v, err := jsonpath.Get("$.WormConfiguration", response) if err != nil { return object, WrapErrorf(err, FailedGetAttributeMsg, id, "$.WormConfiguration", response) } return v.(map[string]interface{}), nil } func (s *OssServiceV2) OssBucketWormStateRefreshFunc(id string, field string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { object, err := s.DescribeOssBucketWorm(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 } } // DescribeOssBucketWorm >>> Encapsulated. // DescribeOssBucketStyle <<< Encapsulated get interface for Oss BucketStyle. func (s *OssServiceV2) DescribeOssBucketStyle(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 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]*string) hostMap := make(map[string]*string) hostMap["bucket"] = StringPointer(parts[0]) query["styleName"] = StringPointer(parts[1]) action := fmt.Sprintf("/?style") wait := incrementalWait(3*time.Second, 5*time.Second) err = resource.Retry(1*time.Minute, func() *resource.RetryError { response, err = client.Do("Oss", xmlParam("GET", "2019-05-17", "GetStyle", action), query, nil, nil, hostMap, 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{"NoSuchStyle", "NoSuchBucket"}) { return object, WrapErrorf(NotFoundErr("BucketStyle", id), NotFoundMsg, response) } return object, WrapErrorf(err, DefaultErrorMsg, id, action, AlibabaCloudSdkGoERROR) } v, err := jsonpath.Get("$.Style", response) if err != nil { return object, WrapErrorf(err, FailedGetAttributeMsg, id, "$.Style", response) } return v.(map[string]interface{}), nil } func (s *OssServiceV2) OssBucketStyleStateRefreshFunc(id string, field string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { object, err := s.DescribeOssBucketStyle(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 } } // DescribeOssBucketStyle >>> Encapsulated.