# 查询规格信息 - ListNodeTypes
#### 功能介绍
该接口用于查询所有DWS服务支持的规格信息。
#### 调用方法
请参见[如何调用API](https://support.huaweicloud.com/api-dws/dws_02_0062.html)。
#### 授权信息
账号具备所有API的调用权限，如果使用账号下的IAM用户调用当前API，该IAM用户需具备调用API所需的权限。
- 如果使用角色与策略授权，具体权限要求请参见[权限和授权项](https://support.huaweicloud.com/api-dws/dws_02_0056.html)。
- 如果使用身份策略授权，需具备如下身份策略权限。
  
  | 授权项                  | 访问级别 | 资源类型（\*为必须） | 条件键 | 别名                   | 依赖的授权项 |
  |:---|:---|:---|:---|:---|:---|
  | dws:service:listSpec | List | -           | -   | dws:specProduct:list | -      |
     
  
 
#### URI
GET /v2/{project_id}/node-types
表1路径参数 
| 参数         | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
|:---|:---|:---|:---|
| project_id | 是    | String | **参数解释**： 项目ID。获取方法请参见[获取项目ID](https://support.huaweicloud.com/api-dws/dws_02_0011.html)。 **约束限制**： 不涉及。 **取值范围**： 不涉及。 **默认取值**： 不涉及。 |
   
#### 请求参数
无
#### 响应参数
**状态码：200**
表2响应Body参数 
| 参数         | 参数类型                                                                                                         | 描述                                                                                                                                                                                                                                                                          |
|:---|:---|:---|
| node_types | Array of [NodeTypes] objects | **参数解释**： 可用的规格列表。 **取值范围**： 非空对象列表。 |
| count      | Integer                                                                                                      | **参数解释**： 规格总数 **取值范围**： 大于等于0的正整数。  |
   
 表3NodeTypes 
| 参数                   | 参数类型                                                                                                                                           | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
|:---|:---|:---|
| spec_name            | String                                                                                                                                         | **参数解释**： 规格名称。 **取值范围**： 字母、数字、小数点、下划线、短横线。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| detail               | Array of [Detail] objects                                         | **参数解释**： 规格详细信息。 **取值范围**： 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| id                   | String                                                                                                                                         | **参数解释**： 规格ID。 **取值范围**： 一般为UUID。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| datastore_type       | String                                                                                                                                         | **参数解释**： 产品类型。 **取值范围**： - dws：云数仓。   - hybrid：实时数仓。    |
| architecture         | String                                                                                                                                         | **参数解释**： 架构类型。 **取值范围**： - x86。   - arm。                |
| available_zones      | Array of [NodeTypeAvailableZones] objects         | **参数解释**： 支持的可用区及状态信息。 **取值范围**： 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| ram                  | Integer                                                                                                                                        | **参数解释**： 内存大小。单位：GB。 **取值范围**： 大于0的正整数。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| vcpus                | Integer                                                                                                                                        | **参数解释**： CPU数量。 **取值范围**： 大于0的正整数。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| datastores           | Array of [NodeTypeDatastores] objects                 | **参数解释**： 内核版本信息。 **取值范围**： 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| volume               | [VolumeResp] object                                           | **参数解释**： 固定存储容量规格的存储容量信息。 **取值范围**： 如果规格为固定存储容量规格，则该属性为规格典配的存储容量信息，如果为弹性存储规格，则该属性为null。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| elastic_volume_specs | Array of [NodeTypeElasticVolumeSpecs] objects | **参数解释**： 弹性容量规格的规格容量信息。 **取值范围**： 如果规格为弹性容量规格，则该属性为规格典配的弹性容量信息，包括存储类型、最小容量、最大容量以及步长信息，如果为固定存储规格，则该属性为null。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
   
 表4Detail 
| 参数    | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
|:---|:---|:---|
| type  | String | **参数解释**： 属性类型。 **取值范围**： - vCPU：CPU核心数。   - SATA：普通IO。   - SAS：高IO。   - SSD：超高IO。   - ESSD：极速型SSD。   - GPSSD：通用型SSD。   - LOCAL_DISK：本地盘。   - mem：内存大小。    |
| value | String | **参数解释**： 属性值。 **取值范围**： 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| unit  | String | **参数解释**： 属性单位。 **取值范围**： 当type为SATA、SAS、SSD、ESSD时，表示磁盘单位GB                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
   
 表5NodeTypeAvailableZones 
| 参数     | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
|:---|:---|:---|
| code   | String | **参数解释**： 可用区ID。 **取值范围**： 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| status | String | **参数解释**： 规格可用状态。 **取值范围**： - normal：可用   - sellout：售罄   - abandon：不可用    |
   
 表6NodeTypeDatastores 
| 参数          | 参数类型                                                                                                   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
|:---|:---|:---|
| version     | String                                                                                                 | **参数解释**： 内核版本号。 **取值范围**： 数字、小数点，格式一般如 9.1.0、9.1.1.100。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| attachments | [attachments] object | **参数解释**： 内核版本附加信息。 **取值范围**： 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| role        | String                                                                                                 | **参数解释**： 版本类型。 **取值范围**： - STABLE：稳定版   - PREVIEW：预览版    |
   
 表7attachments 
| 参数     | 参数类型    | 描述                                                                                                                                                                                                                                                                               |
|:---|:---|:---|
| min_cn | Integer | **参数解释**： 内核版本支持的最小CN。 **取值范围**： 大于0的正整数。 |
| max_cn | Integer | **参数解释**： 内核版本支持的最大CN。 **取值范围**： 大于0的正整数。 |
   
 表8VolumeResp 
| 参数   | 参数类型    | 描述                                                                                                                                                                                                                                                                                |
|:---|:---|:---|
| type | String  | **参数解释**： 磁盘类型，仅支持SSD。 **取值范围**： 仅支持SSD。   |
| size | Integer | **参数解释**： 磁盘可用容量。 **取值范围**： 大于0的正整数，单位为GB。 |
   
 表9NodeTypeElasticVolumeSpecs 
| 参数       | 参数类型    | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
|:---|:---|:---|
| type     | String  | **参数解释**： 云盘存储类型。 **取值范围**： - SATA：普通IO。   - SAS：高IO。   - SSD：超高IO。   - ESSD：极速型SSD。   - GPSSD：通用型SSD。    |
| step     | Integer | **参数解释**： 云盘容量调整步长。 **取值范围**： 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| min_size | Integer | **参数解释**： 云盘支持的最小容量。 **取值范围**： 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| max_size | Integer | **参数解释**： 云盘支持的最大容量。 **取值范围**： 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
   
#### 请求示例
查询规格信息。
```
GET https://{Endpoint}/v2/89cd04f168b84af6be287f71730fdb4b/node-types
```
#### 响应示例
**状态码：200**
```
{
  "node_types" : [ {
    "spec_name" : "dws.d2.xlarge",
    "id" : "ebe532d6-665f-40e6-a4d4-3c51545b6a67",
    "datastore_type" : "dws",
    "architecture" : "x86",
    "available_zones" : [ {
      "code" : "az1",
      "status" : "normal"
    } ],
    "ram" : 32,
    "vcpus" : 4,
    "datastores" : [ {
      "version" : "8.1.3.200",
      "attachments" : {
        "min_cn" : 2,
        "max_cn" : 20
      },
      "role" : "STABLE"
    } ],
    "volume" : {
      "type" : "SSD",
      "size" : 160
    },
    "elastic_volume_specs" : [ {
      "type" : "SSD",
      "step" : 100,
      "min_size" : 100,
      "max_size" : 32000
    } ],
    "detail" : [ {
      "type" : "vCPU",
      "value" : "4"
    }, {
      "value" : "1675",
      "type" : "LOCAL_DISK",
      "unit" : "GB"
    }, {
      "type" : "mem",
      "value" : "32",
      "unit" : "GB"
    } ]
  } ],
  "count" : 1
}
```
#### SDK代码示例
SDK代码示例如下。
- [Java]
  ```
  package com.huaweicloud.sdk.test;
  import com.huaweicloud.sdk.core.auth.ICredential;
  import com.huaweicloud.sdk.core.auth.BasicCredentials;
  import com.huaweicloud.sdk.core.exception.ConnectionException;
  import com.huaweicloud.sdk.core.exception.RequestTimeoutException;
  import com.huaweicloud.sdk.core.exception.ServiceResponseException;
  import com.huaweicloud.sdk.dws.v2.region.DwsRegion;
  import com.huaweicloud.sdk.dws.v2.*;
  import com.huaweicloud.sdk.dws.v2.model.*;
  public class ListNodeTypesSolution {
      public static void main(String[] args) {
          // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
          // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
          String ak = System.getenv("CLOUD_SDK_AK");
          String sk = System.getenv("CLOUD_SDK_SK");
          String projectId = "{project_id}";
          ICredential auth = new BasicCredentials()
                  .withProjectId(projectId)
                  .withAk(ak)
                  .withSk(sk);
          DwsClient client = DwsClient.newBuilder()
                  .withCredential(auth)
                  .withRegion(DwsRegion.valueOf("<YOUR REGION>"))
                  .build();
          ListNodeTypesRequest request = new ListNodeTypesRequest();
          try {
              ListNodeTypesResponse response = client.listNodeTypes(request);
              System.out.println(response.toString());
          } catch (ConnectionException e) {
              e.printStackTrace();
          } catch (RequestTimeoutException e) {
              e.printStackTrace();
          } catch (ServiceResponseException e) {
              e.printStackTrace();
              System.out.println(e.getHttpStatusCode());
              System.out.println(e.getRequestId());
              System.out.println(e.getErrorCode());
              System.out.println(e.getErrorMsg());
          }
      }
  }
  ```
- [Python]
  ```
  # coding: utf-8
  import os
  from huaweicloudsdkcore.auth.credentials import BasicCredentials
  from huaweicloudsdkdws.v2.region.dws_region import DwsRegion
  from huaweicloudsdkcore.exceptions import exceptions
  from huaweicloudsdkdws.v2 import *
  if __name__ == "__main__":
      # The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
      # In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
      ak = os.environ["CLOUD_SDK_AK"]
      sk = os.environ["CLOUD_SDK_SK"]
      projectId = "{project_id}"
      credentials = BasicCredentials(ak, sk, projectId)
      client = DwsClient.new_builder() \
          .with_credentials(credentials) \
          .with_region(DwsRegion.value_of("<YOUR REGION>")) \
          .build()
      try:
          request = ListNodeTypesRequest()
          response = client.list_node_types(request)
          print(response)
      except exceptions.ClientRequestException as e:
          print(e.status_code)
          print(e.request_id)
          print(e.error_code)
          print(e.error_msg)
  ```
- [Go]
  ```
  package main
  import (
  "fmt"
  "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic"
      dws "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/dws/v2"
  "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/dws/v2/model"
      region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/dws/v2/region"
  )
  func main() {
      // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
      // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
      ak := os.Getenv("CLOUD_SDK_AK")
      sk := os.Getenv("CLOUD_SDK_SK")
      projectId := "{project_id}"
      auth, err := basic.NewCredentialsBuilder().
          WithAk(ak).
          WithSk(sk).
          WithProjectId(projectId).
          SafeBuild()
      if err != nil {
          fmt.Println(err)
          return
      }
      hcClient, err := dws.DwsClientBuilder().
           WithRegion(region.ValueOf("<YOUR REGION>")).
           WithCredential(auth).
           SafeBuild()
      if err != nil {
          fmt.Println(err)
          return
      }
      client := dws.NewDwsClient(hcClient)
      request := &model.ListNodeTypesRequest{}
  response, err := client.ListNodeTypes(request)
  if err == nil {
          fmt.Printf("%+v\n", response)
      } else {
          fmt.Println(err)
      }
  }
  ```
- [更多]
  更多编程语言的SDK代码示例，请参见[API Explorer](https://console.huaweicloud.com/apiexplorer/#/openapi/DWS/sdk?api=ListNodeTypes)的代码示例页签，可生成自动对应的SDK代码示例。
#### 状态码
| 状态码 | 描述        |
|:---|:---|
| 200 | 查询规格信息成功。 |
| 400 | 请求错误。     |
| 401 | 鉴权失败。     |
| 403 | 没有操作权限。   |
| 404 | 找不到资源。    |
| 500 | 服务内部错误。   |
| 503 | 服务不可用。    |
   
