alibabacloudstack/data_source_apsarastack_maxcompute_cluster_quotas.go (90 lines of code) (raw):

package alibabacloudstack import ( "fmt" "github.com/PaesslerAG/jsonpath" "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 dataSourceAlibabacloudStackMaxcomputeClusterQuotas() *schema.Resource { return &schema.Resource{ Read: dataSourceAlibabacloudStackMaxcomputeClusterQutaosRead, Schema: map[string]*schema.Schema{ "output_file": { Type: schema.TypeString, Optional: true, }, "cluster": { Type: schema.TypeString, Required: true, ForceNew: true, }, "cu_total": { Type: schema.TypeString, Computed: true, ForceNew: true, }, "disk_available": { Type: schema.TypeString, Computed: true, ForceNew: true, }, "cu_available": { Type: schema.TypeString, Computed: true, ForceNew: true, }, "disk_total": { Type: schema.TypeString, Computed: true, ForceNew: true, }, }, } } func dataSourceAlibabacloudStackMaxcomputeClusterQutaosRead(d *schema.ResourceData, meta interface{}) error { client := meta.(*connectivity.AlibabacloudStackClient) var response map[string]interface{} cluster := d.Get("cluster").(string) roleId, err := client.RoleIds() if err != nil { return err } request := map[string]interface{}{ "Product": "ascm", "CurrentRoleId": roleId, "Cluster": cluster, } response, err = client.DoTeaRequest("POST", "ASCM", "2019-05-10", "GetOdpsQuota", "/ascm/manage/resource_mgmt/getOdpsQuota", nil, nil, request) if err != nil { if errmsgs.IsExpectedErrorCodes(fmt.Sprintf("%v", response["code"]), []string{"102", "403"}) { err = errmsgs.WrapErrorf(errmsgs.Error(errmsgs.GetNotFoundMessage("Maxcompute Cluster", cluster)), errmsgs.NotFoundMsg, errmsgs.ProviderERROR) } return err } if fmt.Sprintf(`%v`, response["code"]) != "200" { err = errmsgs.Error("ListOdpsCus failed for " + response["asapiErrorMessage"].(string)) return err } v, err := jsonpath.Get("$", response) if err != nil { errmsg := "" if response != nil { errmsg = errmsgs.GetAsapiErrorMessage(response) } err = errmsgs.WrapErrorf(err, errmsgs.FailedGetAttributeMsg, cluster, "$", response, errmsg) return err } object := v.(map[string]interface{})["data"].(map[string]interface{}) d.Set("cu_total", object["cuTotal"].(string)) d.Set("disk_available", object["diskAvailable"].(string)) d.Set("cu_available", object["cuAvailable"].(string)) d.Set("disk_total", object["diskTotal"].(string)) d.SetId(d.Get("cluster").(string)) if output, ok := d.GetOk("output_file"); ok && output.(string) != "" { if err := writeToFile(output.(string), d); err != nil { return err } } return nil }