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.