alibabacloudstack/resource_apsarastack_oss_bucket_quota.go (177 lines of code) (raw):

package alibabacloudstack import ( "fmt" "log" "github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses" "github.com/aliyun/alibaba-cloud-sdk-go/services/ecs" "github.com/aliyun/aliyun-oss-go-sdk/oss" "github.com/aliyun/terraform-provider-alibabacloudstack/alibabacloudstack/connectivity" "github.com/aliyun/terraform-provider-alibabacloudstack/alibabacloudstack/errmsgs" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) func resourceAlibabacloudStackOssBucketQuota() *schema.Resource { resource := &schema.Resource{ DeprecationMessage: "oss_bucket already includes corresponding functions", Schema: map[string]*schema.Schema{ "bucket": { Type: schema.TypeString, Required: true, ForceNew: true, }, "quota": { Type: schema.TypeInt, Required: true, ForceNew: true, }, }, } setResourceFunc(resource, resourceAlibabacloudStackOssBucketQuotaCreate, resourceAlibabacloudStackOssBucketQuotaRead, nil, resourceAlibabacloudStackOssBucketQuotaDelete) return resource } func resourceAlibabacloudStackOssBucketQuotaCreate(d *schema.ResourceData, meta interface{}) error { client := meta.(*connectivity.AlibabacloudStackClient) ossService := OssService{client} var requestInfo *oss.Client bucketName := d.Get("bucket").(string) det, err := ossService.DescribeOssBucket(bucketName) if err != nil { return errmsgs.WrapErrorf(err, errmsgs.DefaultErrorMsg, "alibabacloudstack_oss_bucket", "IsBucketExist", errmsgs.AlibabacloudStackLogGoSdkERROR) } quota := d.Get("quota").(int) if det.BucketInfo.Name == bucketName { request := client.NewCommonRequest("POST", "OneRouter", "2018-12-12", "DoOpenApi", "") request.QueryParams["OpenApiAction"] = "SetBucketStorageCapacity" request.QueryParams["ProductName"] = "oss" request.QueryParams["Params"] = fmt.Sprintf("{\"%s\":\"%s\",\"%s\":%d}", "BucketName", bucketName, "StorageCapacity", quota) request.QueryParams["Content"] = fmt.Sprintf("%s%d%s", "<BucketUserQos><StorageCapacity>", quota, "</StorageCapacity></BucketUserQos>") raw, err := client.WithEcsClient(func(ossClient *ecs.Client) (interface{}, error) { return ossClient.ProcessCommonRequest(request) }) log.Printf("Response of SetBucketStorageCapacity: %s", raw) log.Printf("Bresponse ossbucket before error") if err != nil { errmsg := "" if bresponse, ok := raw.(*responses.CommonResponse); ok { errmsg = errmsgs.GetBaseResponseErrorMessage(bresponse.BaseResponse) } if ossNotFoundError(err) { return errmsgs.WrapErrorf(err, errmsgs.NotFoundMsg, errmsgs.AlibabacloudStackLogGoSdkERROR) } return errmsgs.WrapErrorf(err, errmsgs.RequestV1ErrorMsg, bucketName, "SetBucketStorageCapacity", errmsgs.AlibabacloudStackLogGoSdkERROR, errmsg) } log.Printf("Bresponse ossbucket after error") addDebug("SetBucketStorageCapacity", raw, requestInfo, request) log.Printf("Bresponse ossbucket check") bresponse, ok := raw.(*responses.CommonResponse) log.Printf("Bresponse ossbucket %s", bresponse) if !ok || bresponse.GetHttpStatus() != 200 { errmsg := "" if ok { errmsg = errmsgs.GetBaseResponseErrorMessage(bresponse.BaseResponse) } return errmsgs.WrapErrorf(err, errmsgs.RequestV1ErrorMsg, "alibabacloudstack_oss_bucket", "SetBucketStorageCapacity", errmsgs.AlibabacloudStackLogGoSdkERROR, errmsg) } log.Printf("Enter for logging") } if err != nil { return errmsgs.WrapErrorf(err, errmsgs.DefaultErrorMsg, "alibabacloudstack_oss_bucket", "Bucket Not Found", errmsgs.AlibabacloudStackLogGoSdkERROR) } d.SetId(bucketName) return nil } func resourceAlibabacloudStackOssBucketQuotaRead(d *schema.ResourceData, meta interface{}) error { client := meta.(*connectivity.AlibabacloudStackClient) ossService := OssService{client} var requestInfo *oss.Client bucketName := d.Get("bucket").(string) det, err := ossService.DescribeOssBucket(bucketName) if err != nil { return errmsgs.WrapErrorf(err, errmsgs.DefaultErrorMsg, "alibabacloudstack_oss_bucket", "IsBucketExist", errmsgs.AlibabacloudStackLogGoSdkERROR) } if det.BucketInfo.Name == bucketName { request := client.NewCommonRequest("GET", "OneRouter", "2018-12-12", "DoOpenApi", "") request.QueryParams["OpenApiAction"] = "GetBucketStorageCapacity" request.QueryParams["ProductName"] = "oss" request.QueryParams["Params"] = fmt.Sprintf("{\"%s\":\"%s\"}", "BucketName", bucketName) raw, err := client.WithEcsClient(func(ossClient *ecs.Client) (interface{}, error) { return ossClient.ProcessCommonRequest(request) }) log.Printf("Response of GetBucketStorageCapacity: %s", raw) if err != nil { errmsg := "" if bresponse, ok := raw.(*responses.CommonResponse); ok { errmsg = errmsgs.GetBaseResponseErrorMessage(bresponse.BaseResponse) } if ossNotFoundError(err) { return errmsgs.WrapErrorf(err, errmsgs.NotFoundMsg, errmsgs.AlibabacloudStackLogGoSdkERROR) } return errmsgs.WrapErrorf(err, errmsgs.RequestV1ErrorMsg, bucketName, "GetBucketStorageCapacity", errmsgs.AlibabacloudStackLogGoSdkERROR, errmsg) } addDebug("GetBucketStorageCapacity", raw, requestInfo, request) log.Printf("Bresponse ossbucket check") bresponse, ok := raw.(*responses.CommonResponse) log.Printf("Bresponse ossbucket %s", bresponse) if !ok || bresponse.GetHttpStatus() != 200 { errmsg := "" if ok { errmsg = errmsgs.GetBaseResponseErrorMessage(bresponse.BaseResponse) } return errmsgs.WrapErrorf(err, errmsgs.RequestV1ErrorMsg, "alibabacloudstack_oss_bucket", "GetBucketStorageCapacity", errmsgs.AlibabacloudStackLogGoSdkERROR, errmsg) } log.Printf("Enter for logging") } if err != nil { return errmsgs.WrapErrorf(err, errmsgs.DefaultErrorMsg, "alibabacloudstack_oss_bucket", "Bucket Not Found", errmsgs.AlibabacloudStackLogGoSdkERROR) } return nil } func resourceAlibabacloudStackOssBucketQuotaDelete(d *schema.ResourceData, meta interface{}) error { client := meta.(*connectivity.AlibabacloudStackClient) ossService := OssService{client} var requestInfo *oss.Client bucketName := d.Get("bucket").(string) det, err := ossService.DescribeOssBucket(bucketName) if err != nil { return errmsgs.WrapErrorf(err, errmsgs.DefaultErrorMsg, "alibabacloudstack_oss_bucket", "IsBucketExist", errmsgs.AlibabacloudStackLogGoSdkERROR) } if det.BucketInfo.Name == bucketName { request := client.NewCommonRequest("POST", "OneRouter", "2018-12-12", "DoOpenApi", "") request.QueryParams["OpenApiAction"] = "SetBucketStorageCapacity" request.QueryParams["ProductName"] = "oss" request.QueryParams["Params"] = fmt.Sprintf("{\"%s\":\"%s\",\"%s\":%d}", "BucketName", bucketName, "StorageCapacity", -1) request.QueryParams["Content"] = fmt.Sprintf("%s%d%s", "<BucketUserQos><StorageCapacity>", -1, "</StorageCapacity></BucketUserQos>") raw, err := client.WithEcsClient(func(ossClient *ecs.Client) (interface{}, error) { return ossClient.ProcessCommonRequest(request) }) log.Printf("Response of SetBucketStorageCapacity: %s", raw) log.Printf("Bresponse ossbucket before error") if err != nil { errmsg := "" if bresponse, ok := raw.(*responses.CommonResponse); ok { errmsg = errmsgs.GetBaseResponseErrorMessage(bresponse.BaseResponse) } if ossNotFoundError(err) { return errmsgs.WrapErrorf(err, errmsgs.NotFoundMsg, errmsgs.AlibabacloudStackLogGoSdkERROR) } return errmsgs.WrapErrorf(err, errmsgs.RequestV1ErrorMsg, bucketName, "SetBucketStorageCapacity", errmsgs.AlibabacloudStackLogGoSdkERROR, errmsg) } log.Printf("Bresponse ossbucket after error") addDebug("SetBucketStorageCapacity", raw, requestInfo, request) log.Printf("Bresponse ossbucket check") bresponse, ok := raw.(*responses.CommonResponse) log.Printf("Bresponse ossbucket %s", bresponse) if !ok || bresponse.GetHttpStatus() != 200 { errmsg := "" if ok { errmsg = errmsgs.GetBaseResponseErrorMessage(bresponse.BaseResponse) } return errmsgs.WrapErrorf(err, errmsgs.RequestV1ErrorMsg, "alibabacloudstack_oss_bucket", "SetBucketStorageCapacity", errmsgs.AlibabacloudStackLogGoSdkERROR, errmsg) } log.Printf("Enter for logging") } if err != nil { return errmsgs.WrapErrorf(err, errmsgs.DefaultErrorMsg, "alibabacloudstack_oss_bucket", "Bucket Not Found", errmsgs.AlibabacloudStackLogGoSdkERROR) } d.SetId(bucketName) return nil }