
# 云服务器切换虚拟私有云 - ChangeVpc
#### 功能介绍
云服务器切换虚拟私有云。
本接口为异步接口，当前云服务器切换虚拟私有云请求下发成功后会返回job_id，此时云服务器切换虚拟私有云并没有立即完成，需要通过调用[查询任务的执行状态 - ShowJob](https://support.huaweicloud.com/api-ecs/ecs_02_0901.html)查询job状态，当Job状态为 SUCCESS 时代表云服务器虚拟私有云切换成功。
切换虚拟私有云会卸载当前主网卡，用新指定的虚拟私有云创建主网卡。
若原主网卡绑定有弹性IP，则会将弹性IP绑定到新创建的主网卡上。
![](https://support.huaweicloud.com/api-ecs/public_sys-resources/note_3.0-zh-cn.png)
- 切换虚拟私有云会导致云服务器网络中断，同时更改云服务器子网、IP地址、MAC地址。
- 虚拟私有云切换完成后，与网络配置相关的应用软件需要重新配置。与网络相关的服务也需要重新配置，例如ELB、VPN、NAT、DNS等。
- 切换虚拟私有云过程中，请勿操作云服务器的弹性IP，或对云服务器做其他操作。
 
#### 接口约束
- 云服务器只有主网卡，无其他网卡时，允许切换虚拟私有云。
- 挂载IPv6协议网卡的云服务器不支持切换虚拟私有云。
 
#### 调试
您可以在[API Explorer](https://apiexplorer.developer.huaweicloud.com/apiexplorer/doc?product=ECS&api=ChangeVpc)中调试该接口。
#### 授权信息
账号具备所有API的调用权限，如果使用账号下的IAM用户调用当前API，该IAM用户需具备调用API所需的权限。
- 如果使用角色与策略授权，具体权限要求请参见[权限和授权项](https://support.huaweicloud.com/api-ecs/ecs_06_0000.html)。
- 如果使用身份策略授权，需具备如下身份策略权限。
 
| 授权项                        | 访问级别  | 资源类型（\*为必须） | 条件键                                                                                                                                                                                                                                                                                                                                                                                                                                                | 别名 | 依赖的授权项 |
|:---|:---|:---|:---|:---|:---|
| ecs:cloudServers:changeVpc | write | instance \* | - g:ResourceTag/\<tag-key\>  - g:EnterpriseProjectId  - ecs:VpcId  - ecs:SubnetId  - ecs:PortId   | -  | -      |
   
#### URI
POST /v1/{project_id}/cloudservers/{server_id}/changevpc
参数说明请参见[表1]。
 表1参数说明 
| 参数         | 是否必选 | 描述                                                                                                                                                                                                                                                                                                                                                                                    |
|:---|:---|:---|
| project_id | 是    | **参数解释：** 项目ID。 获取方法请参见[获取项目ID](https://support.huaweicloud.com/api-ecs/ecs_01_0016.html)。 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及 |
| server_id  | 是    | **参数解释：** 云服务器ID。 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及                                                                                                      |
   
#### 请求消息
请求参数如[表2]所示。
 表2请求参数 
| 参数     | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                     |
|:---|:---|:---|:---|
| vpc_id | 是    | String | **参数解释：** 虚拟机私有云ID ，UUID格式。 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及                              |
| nic    | 是    | Object | **参数解释：** 需要添加的网卡参数列表，详情请参见[表3]。 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及 |
   
 表3nic字段数据结构说明 
| 参数              | 是否必选 | 参数类型             | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
|:---|:---|:---|:---|
| port_id         | 否    | String           | **参数解释：** 网卡ID，UUID格式。 当该字段不为空时，表示挂载指定的网卡。 网卡ID可以通过虚拟私有云的"[查询端口列表](https://support.huaweicloud.com/api-vpc/vpc_port01_0003.html)"接口查询。 **约束限制：** - port_id和subnet_id不能同时为空。  - 网卡必须带有安全组。  - 网卡状态必须为DOWN。  - 网卡的vpcid必须和传入的vpcid一致。  - 当port_id和subnet_id同时存在的时候，优先使用port_id。  - 当选择port_id不为空时，代表此时使用的是弹性网卡，此时security_groups和ip_address等参数不生效。   **取值范围：** 不涉及 **默认取值：** 不涉及 |
| subnet_id       | 否    | String           | **参数解释：** 云服务器添加网卡的信息。 需要指定云服务器所属虚拟私有云下已创建的网络（network）的ID，UUID格式。 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| security_groups | 否    | Array of objects | **参数解释：** 添加网卡的安全组信息，详情请参见[表4]。 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| ip_address      | 否    | String           | **参数解释：** IP地址，无该参数表示自动分配IP地址。 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
   
 表4security_groups字段数据结构说明 
| 参数 | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                  |
|:---|:---|:---|:---|
| id | 是    | String | **参数解释：** 安全组ID。 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及 |
   
#### 响应消息
响应参数如[表5]所示。
 表5响应参数 
| 参数     | 参数类型   | 描述                                                                                                                                                                                                                                                  |
|:---|:---|:---|
| job_id | String | **参数解释：** 提交任务成功后返回的任务ID，用户可以使用该ID对任务执行情况进行查询。如何根据job_id来查询Job的执行状态，请参考[查询Job状态](https://support.huaweicloud.com/api-ecs/ecs_02_0900.html)。 **取值范围：** 不涉及 |
   
异常响应请参考[响应（任务类）](https://support.huaweicloud.com/api-ecs/ecs_07_0005.html)，异常响应要素说明。
#### 请求示例
为云服务器切换VPC，添加网卡、安全组并指定IP地址。
```
POST  https://{endpoint}/v1/{project_id}/cloudservers/{server_id}/changevpc
{
    "vpc_id": "d32019d3-bc6e-4319-9c1d-6722fc136a23",
    "nic": {
        "subnet_id": "d32019d3-bc6e-4319-9c1d-6722fc136a23",
        "security_groups": [
            {
                "id": "f0ac4394-7e4a-4409-9701-ba8be283dbc3"
            }
        ],
        "ip_address": "192.168.255.1"
    }
}
```
#### 响应示例
```
{
    "job_id": "ff8080829029501f01902e4a1703000f"
}
```
#### 返回值
请参考[通用请求返回值](https://support.huaweicloud.com/api-ecs/ecs_07_0001.html)。
#### 错误码
请参考[错误码](https://support.huaweicloud.com/api-ecs/ecs_07_0002.html)。
