in alibabacloudstack/resource_apsarastack_ascm_quota.go [202:428]
func resourceAlibabacloudStackAscmQuotaUpdate(d *schema.ResourceData, meta interface{}) error {
client := meta.(*connectivity.AlibabacloudStackClient)
ascmService := AscmService{client}
attributeUpdate := false
check, err := ascmService.DescribeAscmQuota(d.Id())
did := strings.Split(d.Id(), COLON_SEPARATED)
if err != nil {
return errmsgs.WrapErrorf(err, errmsgs.DefaultErrorMsg, d.Id(), "IsQuotaExist", errmsgs.AlibabacloudStackSdkGoERROR)
}
var quotaBody string
switch did[0] {
case "VPC":
var totalVPC int
if d.HasChange("total_vpc") {
if v, ok := d.GetOk("total_vpc"); ok {
totalVPC = v.(int)
}
check.Data.TotalVPC = totalVPC
attributeUpdate = true
} else {
if v, ok := d.GetOk("total_vpc"); ok {
totalVPC = v.(int)
}
check.Data.TotalVPC = totalVPC
}
quotaBody = fmt.Sprintf("{\"totalVPC\":%d}", totalVPC)
case "RDS":
var totalDISK, totalCPU, totalMEM int
if d.HasChange("total_mem") {
if v, ok := d.GetOk("total_mem"); ok {
totalMEM = v.(int)
}
check.Data.TotalMem = totalMEM
attributeUpdate = true
}
if d.HasChange("total_disk") {
if v, ok := d.GetOk("total_disk"); ok {
totalDISK = v.(int)
}
check.Data.TotalDisk = totalDISK
attributeUpdate = true
}
if d.HasChange("total_cpu") {
if v, ok := d.GetOk("total_cpu"); ok {
totalCPU = v.(int)
}
check.Data.TotalCPU = totalCPU
attributeUpdate = true
}
quotaBody = fmt.Sprintf("{\"totalCpu\":%d,\"totalMem\":%d,\"totalDisk\":%d}", totalCPU, totalMEM, totalDISK)
case "EIP":
var totalEIP int
if d.HasChange("total_eip") {
if v, ok := d.GetOk("total_eip"); ok {
totalEIP = v.(int)
}
check.Data.TotalMem = totalEIP
attributeUpdate = true
}
quotaBody = fmt.Sprintf("{\"totalEIP\":%d}", totalEIP)
case "ECS":
var totalGPU, totalCPU, totalMEM, totalDCE, totalDCS int
if d.HasChange("total_cpu") {
if v, ok := d.GetOk("total_cpu"); ok {
totalCPU = v.(int)
}
check.Data.TotalCPU = totalCPU
attributeUpdate = true
}
if d.HasChange("total_gpu") {
if v, ok := d.GetOk("total_gpu"); ok {
totalGPU = v.(int)
}
check.Data.TotalGpu = totalGPU
attributeUpdate = true
}
if d.HasChange("total_mem") {
if v, ok := d.GetOk("total_mem"); ok {
totalMEM = v.(int)
}
check.Data.TotalMem = totalMEM
attributeUpdate = true
}
if d.HasChange("total_disk_cloud_ssd") {
if v, ok := d.GetOk("total_disk_cloud_ssd"); ok {
totalDCS = v.(int)
}
check.Data.TotalDiskCloudSsd = totalDCS
attributeUpdate = true
}
if d.HasChange("total_disk_cloud_efficiency") {
if v, ok := d.GetOk("total_disk_cloud_efficiency"); ok {
totalDCE = v.(int)
}
check.Data.TotalDiskCloudEfficiency = totalDCE
attributeUpdate = true
}
quotaBody = fmt.Sprintf("{\"totalCpu\":%d,\"totalMem\":%d,\"totalGpu\":%d,\"totalDisk_cloud_ssd\":%d,\"totalDisk_cloud_efficiency\":%d}", totalCPU, totalMEM, totalGPU, totalDCS, totalDCE)
case "SLB":
var totalVP, totalVI int
if d.HasChange("total_vip_internal") {
if v, ok := d.GetOk("total_vip_internal"); ok {
totalVI = v.(int)
}
check.Data.TotalVipInternal = totalVI
attributeUpdate = true
}
if d.HasChange("total_vip_public") {
if v, ok := d.GetOk("total_vip_public"); ok {
totalVP = v.(int)
}
check.Data.TotalVipPublic = totalVP
attributeUpdate = true
}
quotaBody = fmt.Sprintf("{\"totalVipPublic\":%d,\"totalVipInternal\":%d}", totalVP, totalVI)
case "OSS":
var totalAmount int
if d.HasChange("total_amount") {
if v, ok := d.GetOk("total_amount"); ok {
totalAmount = v.(int)
}
check.Data.TotalAmount = totalAmount
attributeUpdate = true
}
quotaBody = fmt.Sprintf("{\"totalAmount\":%d}", totalAmount)
case "DDS":
var totalDISK, totalCPU, totalMEM int
if d.HasChange("total_mem") {
if v, ok := d.GetOk("total_mem"); ok {
totalMEM = v.(int)
}
check.Data.TotalMem = totalMEM
attributeUpdate = true
}
if d.HasChange("total_disk") {
if v, ok := d.GetOk("total_disk"); ok {
totalDISK = v.(int)
}
check.Data.TotalDisk = totalDISK
attributeUpdate = true
}
if d.HasChange("total_cpu") {
if v, ok := d.GetOk("total_cpu"); ok {
totalCPU = v.(int)
}
check.Data.TotalCPU = totalCPU
attributeUpdate = true
}
quotaBody = fmt.Sprintf("{\"totalCpu\":%d,\"totalMem\":%d,\"totalDisk\":%d}", totalCPU, totalMEM, totalDISK)
case "ODPS":
var totalDISK, totalCU int
if d.HasChange("total_disk") {
if v, ok := d.GetOk("total_disk"); ok {
totalDISK = v.(int)
}
check.Data.TotalDisk = totalDISK
attributeUpdate = true
}
if d.HasChange("total_cu") {
if v, ok := d.GetOk("total_cu"); ok {
totalCU = v.(int)
}
check.Data.TotalCU = totalCU
attributeUpdate = true
}
quotaBody = fmt.Sprintf("{\"totalCu\":%d,\"totalDisk\":%d}", totalCU, totalDISK)
case "GPDB":
var totalDISK, totalCPU, totalMEM int
if d.HasChange("total_mem") {
if v, ok := d.GetOk("total_mem"); ok {
totalMEM = v.(int)
}
check.Data.TotalMem = totalMEM
attributeUpdate = true
}
if d.HasChange("total_disk") {
if v, ok := d.GetOk("total_disk"); ok {
totalDISK = v.(int)
}
check.Data.TotalDisk = totalDISK
attributeUpdate = true
}
if d.HasChange("total_cpu") {
if v, ok := d.GetOk("total_cpu"); ok {
totalCPU = v.(int)
}
check.Data.TotalCPU = totalCPU
attributeUpdate = true
}
quotaBody = fmt.Sprintf("{\"totalCpu\":%d,\"totalMem\":%d,\"totalDisk\":%d}", totalCPU, totalMEM, totalDISK)
case "R-KVSTORE":
var totalMEM int
if d.HasChange("total_mem") {
if v, ok := d.GetOk("total_mem"); ok {
totalMEM = v.(int)
}
check.Data.TotalMem = totalMEM
attributeUpdate = true
}
quotaBody = fmt.Sprintf("{\"totalMem\":%d}", totalMEM)
}
if attributeUpdate {
request := client.NewCommonRequest("POST", "ascm", "2019-05-10", "UpdateQuota", "/ascm/manage/quota/update")
request.QueryParams["regionName"] = client.RegionId
request.QueryParams["quotaType"] = did[1]
request.QueryParams["quotaTypeId"] = did[2]
request.QueryParams["productName"] = did[0]
request.QueryParams["targetType"] = ""
request.QueryParams["quotaBody"] = quotaBody
raw, err := client.WithEcsClient(func(ecsClient *ecs.Client) (interface{}, error) {
return ecsClient.ProcessCommonRequest(request)
})
if err != nil {
errmsg := ""
if bresponse, ok := raw.(*responses.CommonResponse); ok {
errmsg = errmsgs.GetBaseResponseErrorMessage(bresponse.BaseResponse)
}
return errmsgs.WrapErrorf(err, errmsgs.RequestV1ErrorMsg, "alibabacloudstack_ascm_quota", "UpdateQuota", errmsgs.AlibabacloudStackSdkGoERROR, errmsg)
}
addDebug(request.GetActionName(), raw, nil, request)
}
return nil
}