
# 地域推荐 - ListSupplyRecommendation
#### 功能介绍
对ECS的资源供给的地域和规格进行推荐，推荐结果以打分的形式呈现，分数越高推荐程度越高。
#### 调试
您可以在[API Explorer](https://apiexplorer.developer.huaweicloud.com/apiexplorer/doc?product=CMS&api=ListSupplyRecommendation)中调试该接口。
#### URI
POST /v1/{domain_id}/recommendations/ecs-supply
参数说明请参见[表1]。
 表1参数说明 
| 参数        | 是否必选 | 描述                                                                                                                                                                                                                                                                            |
|:---|:---|:---|
| domain_id | 是    | **参数解释** **：** 租户域ID。 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及 |
   
#### 请求消息
请求参数如[表2]所示。
 表2请求参数 
| 参数                | 是否必选 | 参数类型             | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                         |
|:---|:---|:---|:---|
| flavor_constraint | 否    | Object           | **参数解释** **：** 资源供给规格的约束信息，详情请参见[表3]。 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及                                                                                  |
| flavor_ids        | 否    | Array of strings | **参数解释** **：** 接受推荐的规格列表。 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及                                                                                                                                                               |
| locations         | 否    | Array of objects | **参数解释** **：** 接受推荐的地域列表，默认接受所有区域。 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及                                                                                                                                                  |
| option            | 否    | Object           | **参数解释** **：** 供给推荐的选项。 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及                                                                                                                                                          |
| strategy          | 否    | String           | **参数解释** **：** 推荐的策略。 **约束限制：** 不涉及 **取值范围：** - CAPACITY：容量策略  - COST：成本策略   **默认取值：** 不涉及 |
| limit             | 否    | Integer          | **参数解释** **：** 查询返回的数量限制。 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及                                                                                                                                                        |
| marker            | 否    | String           | **参数解释** **：** 取值为上一页数据的最后一条记录的唯一标记。 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及                                                                                                                                         |
   
 表3flavor_constraint参数信息 
| 参数                  | 是否必选 | 参数类型             | 描述                                                                                                                                                                                                                                                                                                                                                            |
|:---|:---|:---|:---|
| architecture_type   | 否    | Array of strings | **参数解释** **：** 接受的体系结构描述。 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及                                                     |
| flavor_requirements | 否    | Array of objects | **参数解释** **：** 资源的需求约束，详情请参见[表4]。 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及 |
   
 表4flavor_requirements参数信息 
| 参数                   | 是否必选 | 参数类型             | 描述                                                                                                                                                                                                                                                                                                                                                           |
|:---|:---|:---|:---|
| vcpu_count           | 否    | Object           | **参数解释** **：** 规格的vCPU数量范围，不填表示接受所有，详情请参见[表5]。 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及            |
| memory_mb            | 否    | Object           | **参数解释** **：** 规格的内存大小范围，不填表示接受所有，单位MiB，详情请参见[表6]。 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及          |
| cpu_manufacturers    | 否    | Array of strings | **参数解释** **：** 可选CPU制造商，不填表示接受所有。 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及                                                            |
| memory_gb_per_vcpu   | 否    | Object           | **参数解释** **：** 规格的单vCPU对应内存容量范围，不填表示接受所有，内存单位GiB，详情请参见[表6]。 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及 |
| instance_generations | 否    | Array of strings | **参数解释** **：** 接受的资源代系，不填表示接受所有。 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及                                                                |
   
 表5vcpu_count参数信息 
| 参数  | 是否必选 | 参数类型    | 描述                                                                                                                                                                                                                                                                                        |
|:---|:---|:---|:---|
| max | 否    | Integer | **参数解释** **：** 最大值，-1表示无限制。 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及 |
| min | 否    | Integer | **参数解释** **：** 最小值，-1表示无限制。 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及  |
   
 表6memory_mb参数信息 
| 参数  | 是否必选 | 参数类型    | 描述                                                                                                                                                                                                                                                                                             |
|:---|:---|:---|:---|
| max | 否    | Integer | **参数解释** **：** 最大值，-1表示无限制。 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及 |
| min | 否    | Integer | **参数解释** **：** 最小值，-1表示无限制。 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及   |
   
表7memory_gb_per_vcpu参数信息 
| 参数  | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                         |
|:---|:---|:---|:---|
| max | 否    | Double | **参数解释** **：** 最大值，-1表示无限制。 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及 |
| min | 否    | Double | **参数解释** **：** 最小值，-1表示无限制。 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及  |
   
表8locations参数信息 
| 参数                   | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                     |
|:---|:---|:---|:---|
| region_id            | 是    | String | **参数解释** **：** 区域ID。 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及 |
| availability_zone_id | 否    | String | **参数解释** **：** 可用区ID。 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及     |
   
表9option参数信息 
| 参数                 | 是否必选 | 参数类型    | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
|:---|:---|:---|:---|
| result_granularity | 否    | String  | **参数解释** **：** 推荐结果的粒度。 **约束限制：** 不涉及 **取值范围：** - BY_REGION：对每个区域打分，可使用多种规格满足需求。  - BY_AZ：对每个可用区打分。  - BY_FLAVOR：对每个规格打分，可使用多地域满足需求。  - BY_FLAVOR_AND_REGION：对每个区域下的每个规格打分。  - BY_FLAVOR_AND_AZ：对每个可用区下的每个规格打分。   **默认取值：** 不涉及 |
| enable_spot        | 否    | Boolean | **参数解释** **：** 是否推荐竞价实例。 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
   
#### 响应消息
响应参数如[表10]所示。
 表10响应参数 
| 参数                     | 参数类型             | 描述                                                                                                                                                                                             |
|:---|:---|:---|
| supply_recommendations | Array of objects | **参数解释** **：** 资源供给推荐结果，详情请参见[表11]。 **取值范围：** 不涉及 |
   
 表11supply_recommendations参数信息 
| 参数                   | 参数类型    | 描述                                                                                                                                                 |
|:---|:---|:---|
| flavor_id            | String  | **参数解释** **：** 实例规格ID。 **取值范围：** 不涉及    |
| region_id            | String  | **参数解释** **：** 区域ID。 **取值范围：** 不涉及    |
| availability_zone_id | String  | **参数解释** **：** 可用区ID。 **取值范围：** 不涉及 |
| score                | Integer | **参数解释** **：** 推荐分数。 **取值范围：** 不涉及                      |
   
#### 请求示例
设置对云服务器资源供给的地域和规格推荐，vCPU范围为2\~8，内存范围为4096 MiB\~8192 MiB；推荐结果对每个可用区下的每个规格打分，推荐策略为成本策略，接受推荐的区域为"region1"。
```
POST https://{endpoint}/v1/{domain_id}/recommendations/ecs-supply
{
    "flavor_constraint": {
        "flavor_requirements": [{
            "vcpu_count": {
                "max": 8,
                "min": 2
            },
            "memory_mb": {
                "max": 8192,
                "min": 4096
            }
        }]
    },
    "option": {
        "result_granularity": "BY_FLAVOR_AND_AZ"
    },
    "strategy": "COST",
    "locations": [{
        "region_id": "region1"
    }]
}
```
#### 响应示例
```
{
    "supply_recommendations": [
        {
            "flavor_id": null,
            "region_id": "cn-east-3",
            "availability_zone_id": null,
            "score": 8
        }
    ]
}
```
#### 返回值
请参考[通用请求返回值](https://support.huaweicloud.com/api-ecs/ecs_07_0001.html)。
#### 错误码
请参考[错误码](https://support.huaweicloud.com/api-ecs/ecs_07_0002.html)。
