
# 变更云服务器规格 - ResizeServer
#### 功能介绍
变更云服务器规格。
本接口为异步接口，当前变更弹性云服务器规格请求下发成功后会返回job_id，此时变更弹性云服务器规格并没有立即完成，需要通过调用[查询任务的执行状态 - ShowJob](https://support.huaweicloud.com/api-ecs/ecs_02_0901.html)查询job状态，当Job状态为 SUCCESS 时代表云服务器规格变更成功。
V1.1版本变更云服务器规格的接口兼容了V1版本[变更云服务器规格（按需） - ResizePostPaidServer](https://support.huaweicloud.com/api-ecs/ecs_02_0210.html)的功能，同时合入新功能，支持包年/包月的弹性云服务器。
#### 调试
您可以在[API Explorer](https://console.huaweicloud.com/apiexplorer/#/openapi/ECS/doc?api=ResizeServer)中调试该接口。
#### 授权信息
账号具备所有API的调用权限，如果使用账号下的IAM用户调用当前API，该IAM用户需具备调用API所需的权限。
- 如果使用角色与策略授权，具体权限要求请参见[权限和授权项](https://support.huaweicloud.com/api-ecs/ecs_06_0000.html)。
- 如果使用身份策略授权，需具备如下身份策略权限。
 
| 授权项                     | 访问级别  | 资源类型（\*为必须） | 条件键          | 别名 | 依赖的授权项 |
|:---|:---|:---|:---|:---|:---|
| ecs:cloudServers:resize | write | instance \* | ecs:FlavorId | -  | -      |
   
#### URI
POST /v1.1/{project_id}/cloudservers/{server_id}/resize
表1参数说明 
| 参数         | 是否必选 | 描述                                                                                                                                                                                                                                                                                                                                                                                                |
|:---|:---|:---|
| project_id | 是    | **参数解释：** 项目ID。 获取方法请参见[获取项目ID](https://support.huaweicloud.com/api-ecs/ecs_01_0016.html)。 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及                            |
| server_id  | 是    | **参数解释：** 云服务器ID。 云服务器的ID可以从控制台或者参考"[查询云服务器列表](https://support.huaweicloud.com/api-ecs/ecs_02_0107.html)"的章节获取。 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及 |
   
#### 请求消息
表2参数说明 
| 名称      | 是否必选 | 参数类型    | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
|:---|:---|:---|:---|
| resize  | 是    | Object  | **参数解释：** 标记为云服务器变更规格操作，详情参见 [表3]。 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                         |
| dry_run | 否    | Boolean | **参数解释** **：** 是否预检此次请求。配置为预检时，此次请求不会变更规格。 **约束限制：** 不涉及 **取值范围：** - true：预检此次请求，检查项包括是否填写了必需参数、请求格式等。 - 如果检查不通过，则返回对应错误。  - 如果检查通过，则返回202状态码。      - false：发送正常请求，不对请求体做预检。   **默认取值：** false |
   
 表3resize数据结构说明 
| 名称                | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
|:---|:---|:---|:---|
| flavorRef         | 是    | String | **参数解释：** 变更后的云服务器规格ID。 可以通过 [查询云服务器规格变更支持列表 - ListResizeFlavors](https://support.huaweicloud.com/api-ecs/ecs_02_0402.html) 接口查询允许变更的规格列表。 **约束限制：** - 不支持变更至同一规格。   **取值范围：** 不涉及 **默认取值：** 不涉及 |
| dedicated_host_id | 否    | String | **参数解释：** 新专属主机ID。 **约束限制：** 仅对于部署在专属主机上的弹性云服务器，该参数必选。 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及                                                                                                                             |
| extendparam       | 否    | Object | **参数解释：** 变更云服务器扩展信息，详情参见 [表4]。 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及                                                                                                                                                                       |
| mode              | 否    | String | **参数解释：** 支持开机状态下变更规格。 **约束限制：** 不涉及 **取值范围：** mode取值为withStopServer时，对开机状态的云服务器执行变更规格操作，系统自动对云服务器先执行关机，再变更规格，变更成功后再执行开机。 **默认取值：** 不涉及                                                                                                                                         |
| cpu_options       | 否    | Object | **参数解释：** 自定义CPU选项。 详情请参见[表5]。 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及                                                                                                                                              |
   
 表4extendparam数据结构说明 
| 名称        | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
|:---|:---|:---|:---|
| isAutoPay | 否    | String | **参数解释：** 下单订购后，是否自动从客户的账户中支付，而不需要客户手动去进行支付。 **约束限制：** 当弹性云服务器是按包年包月计费时生效。 **取值范围：** - "true"：是（自动支付）  - "false"：否（需要客户手动支付）   **默认取值：** false |
   
 表5cpu_options数据结构说明 
| 参数             | 是否必选 | 参数类型    | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
|:---|:---|:---|:---|
| hw:cpu_threads | 否    | Integer | **参数解释：** 用于控制CPU是否开启超线程。 **约束限制：** 需要同时满足如下条件，才能设置为"关闭超线程"： - 只能在实例创建或者resize时指定。  - 只有目标flavor的os_extra_specs参数： - 存在"hw:cpu_policy"并取值为"dedicated"。  - 存在"hw:cpu_threads"并取值为"2"。   os_extra_specs参数详情可通过调用[查询规格详情和规格扩展信息列表 - ListFlavors](https://support.huaweicloud.com/api-ecs/zh-cn_topic_0020212656.html)接口进行查询。    **取值范围：** - 1: 关闭超线程。  - 2: 打开超线程。   **默认取值：** 1: 关闭超线程 |
   
#### 响应消息
响应参数如[表6]所示。
 表6响应参数 
| 参数       | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                  |
|:---|:---|:---|:---|
| job_id   | 否    | String | **参数解释：** 任务ID，变更按需的弹性云服务器规格时返回该参数。 查询job状态请参见[查询任务的执行状态 - ShowJob](https://support.huaweicloud.com/api-ecs/ecs_02_0901.html)。 **取值范围：** 不涉及 |
| order_id | 否    | String | **参数解释：** 订单号，变更包年包月的弹性云服务器规格时返回该参数。 **取值范围：** 不涉及                                                                                                                       |
   
#### 请求示例
变更专属主机上的云服务器的规格为"s3.large.2"，自动支付且支持开机状态下变更规格。
```
POST https://{endpoint}/v1.1/{project_id}/cloudservers/{server_id}/resize
{
    "resize": {
        "flavorRef": "s3.large.2",
        "dedicated_host_id": "459a2b9d-804a-4745-ab19-a113bb1b4ddc",
        "extendparam":{
             "isAutoPay": "true"
        },
        "mode": "withStopServer"
    }
}
```
#### 响应示例
```
{
    "job_id": "ff80808288d41e1b018990260955686a"
}
```
或
```
{
    "order_id": "CS1711152257C60TL",
    "job_id": "ff80808288d41e1b018990260955686a"
}
```
或
```
{
    "error": {
        "message": "XXXX", 
        "code": "XXX"
    }
}
```
#### 返回值
请参考[通用请求返回值](https://support.huaweicloud.com/api-ecs/ecs_07_0001.html)。
#### 错误码
请参考[错误码](https://support.huaweicloud.com/api-ecs/ecs_07_0002.html)。
