# 节点批量切换操作系统-BatchReimageNodes
#### 功能介绍
节点批量切换操作系统
#### 调试
您可以在[API Explorer](https://console.huaweicloud.com/apiexplorer/#/openapi/AICS/doc?api=BatchReimageNodes)中调试该接口，支持自动认证鉴权。API Explorer可以自动生成SDK代码示例，并提供SDK代码示例调试功能。
#### 授权信息
账号根用户具备所有API的调用权限，如果使用账号下的IAM用户调用当前API，该IAM用户需具备如下身份策略权限，更多的权限说明请参见[权限和授权项](https://support.huaweicloud.com/api-aics/aics_05_0700.html)。
| 授权项               | 访问级别  | 资源类型（\*为必须） | 条件键                       | 别名 | 依赖的授权项                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
|:---|:---|:---|:---|:---|:---|
| aics:node:reimage | Write | node \*     | g:ResourceTag/\<tag-key\> | -  | - kps:SSHKeyPair:get  - ecs:cloudServers:showServer  - ecs:cloudServers:start  - ecs:cloudServers:attach  - ecs:cloudServers:detachVolume   |
| aics:node:reimage | Write | hypernode   | g:ResourceTag/\<tag-key\> | -  | - kps:SSHKeyPair:get  - ecs:cloudServers:showServer  - ecs:cloudServers:start  - ecs:cloudServers:attach  - ecs:cloudServers:detachVolume   |
   
#### URI
POST /v2/{project_id}/nodes/batch-reimage
表1路径参数 
| 参数         | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                           |
|:---|:---|:---|:---|
| project_id | 是    | String | **参数解释**: 项目ID，获取方法请参见[获取项目ID](https://support.huaweicloud.com/api-aics/aics_api_0702.html)。 **约束限制**: 不涉及。 **取值范围**: 不涉及。 **默认取值**: 不涉及。 |
   
#### 请求参数
表2请求Header参数 
| 参数           | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                 |
|:---|:---|:---|:---|
| X-Auth-Token | 否    | String | **参数解释**: 用户Token，通过调用IAM服务获取用户Token接口获取（响应消息头中X-Subject-Token的值）。 **约束限制**: 不涉及。 **取值范围**: 不涉及。 **默认取值**: 不涉及。 |
   
表3请求Body参数 
| 参数            | 是否必选 | 参数类型             | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
|:---|:---|:---|:---|
| hypernode_ids | 否    | Array of strings | **参数解释** : 超节点ID列表。 **约束限制** : 与node_ids互斥，最多1个超节点ID。 **取值范围** : 不涉及。 **默认取值** : 不涉及。                                                                                                                                                                                                                                                                                                                                         |
| node_ids      | 否    | Array of strings | **参数解释** : 节点ID列表。 **约束限制** : 单次最多128个，与hypernode_ids互斥。 **取值范围** : 不涉及。 **默认取值** : 不涉及。                                                                                                                                                                                                                                                                                                                                      |
| image_id      | 是    | String           | **参数解释** : 镜像ID。 **约束限制** : 不涉及 **取值范围** : UUID格式，\[a-fA-F0-9\]{8}-\[a-fA-F0-9\]{4}-\[a-fA-F0-9\]{4}-\[a-fA-F0-9\]{4}-\[a-fA-F0-9\]{12}。 **默认取值** : 不涉及。                                                                                                                                                                                                                                                                      |
| user_data     | 否    | String           | **参数解释** : 用户数据，需要对原始信息进行Base64编码。 **约束限制** : 长度1\~40960。 **取值范围** : 不涉及。 **默认取值** : 不涉及。                                                                                                                                                                                                                                                                                                                                     |
| auto_start    | 否    | Boolean          | **参数解释** : 是否自动启动。 **约束限制** : 不涉及。 **取值范围** : - true   - false    **默认取值** : 不涉及。 |
| keypair_name  | 否    | String           | **参数解释** : 密钥对名称。 **约束限制** : 长度1\~128。 **取值范围** : 不涉及。 **默认取值** : 不涉及。                                                                                                                                                                                                                                                                                                                                                        |
   
#### 响应参数
**状态码：202**
表4响应Body参数 
| 参数         | 参数类型                                                                 | 描述                                                                                                                                                 |
|:---|:---|:---|
| batch_id   | String                                                               | **参数解释** : 批量操作的ID。 **取值范围** : 不涉及。 |
| operations | Array of [Operation] objects | **参数解释** : 操作列表。 **取值范围** : 不涉及。    |
   
 表5Operation 
| 参数           | 参数类型                                                                 | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
|:---|:---|:---|
| batch_id     | String                                                               | **参数解释**: 批量操作任务的ID，同一批次提交的操作共享此ID。 **取值范围**: UUID格式，\[a-fA-F0-9\]{8}-\[a-fA-F0-9\]{4}-\[a-fA-F0-9\]{4}-\[a-fA-F0-9\]{4}-\[a-fA-F0-9\]{12}。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| id           | String                                                               | **参数解释**: 操作记录唯一标识。 **取值范围**: UUID格式，\[a-fA-F0-9\]{8}-\[a-fA-F0-9\]{4}-\[a-fA-F0-9\]{4}-\[a-fA-F0-9\]{4}-\[a-fA-F0-9\]{12}。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| status       | String                                                               | **参数解释**: 操作状态。 **取值范围**: - pending：等待执行。   - running：执行中。   - success：成功完成。   - fail：失败。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| type         | String                                                               | **参数解释**: 操作类型。 **取值范围**: - hypernode_create：超节点创建。   - hypernode_terminate：超节点删除。   - node_attach_volume：节点挂载数据盘。   - node_detach_volume：节点卸载数据盘。   - node_save_image：节点保存镜像。   - node_stop：节点关机。   - node_reboot：节点重启。   - node_redeploy：节点重部署。   - node_start：节点开机。   - node_reinstall：节点重装操作系统。   - node_reimage：节点切换操作系统。   - node_repair_acceptance：节点维修验收检查。    |
| created_at   | String                                                               | **参数解释**: 操作记录创建时间。 **取值范围**: 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| updated_at   | String                                                               | **参数解释**: 操作记录更新时间，操作成功或失败时更新。 **取值范围**: 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| hypernode_id | String                                                               | **参数解释**: 操作所属超节点ID。可从查询超节点列表接口获取。 **取值范围**: UUID格式，\[a-fA-F0-9\]{8}-\[a-fA-F0-9\]{4}-\[a-fA-F0-9\]{4}-\[a-fA-F0-9\]{4}-\[a-fA-F0-9\]{12}。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| node_id      | String                                                               | **参数解释**: 操作所属节点ID。可从查询节点列表接口获取。超节点级别操作时该值为"all_nodes"。 **取值范围**: 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| cluster_id   | String                                                               | **参数解释**: 操作所属集群ID。可从查询集群列表接口获取。 **取值范围**: UUID格式，\[a-fA-F0-9\]{8}-\[a-fA-F0-9\]{4}-\[a-fA-F0-9\]{4}-\[a-fA-F0-9\]{4}-\[a-fA-F0-9\]{12}。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| error        | [OperationError] object | **参数解释**: 操作错误信息，操作失败时相关的报错信息。 **取值范围**: 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
   
 表6OperationError 
| 参数      | 参数类型   | 描述                                                                                                                                            |
|:---|:---|:---|
| code    | String | **参数解释**: 错误码。 **取值范围**: 不涉及。  |
| message | String | **参数解释**: 错误描述。 **取值范围**: 不涉及。 |
   
#### 请求示例
- 对指定节点批量切换操作系统并自动开机请求示例。使用场景：需要对部分节点切换操作系统且切换完成后自动开机时，通过指定节点ID和镜像ID批量切换，auto_start设为true。
  ```
  POST https://{endpoint}/v2/0605767a3300d5762fb7c0186d9e1779/nodes/batch-reimage
  {
    "node_ids" : [ "a1b2c3d4-e5f6-7890-abcd-ef1234567890" ],
    "image_id" : "12345678-1234-1234-1234-123456789abc",
    "keypair_name" : "my-keypair",
    "user_data" : "MTIzNDY1Nzg5",
    "auto_start" : true
  }
  ```
  
- 对超节点切换操作系统并自动开机请求示例。使用场景：需要对整个超节点切换操作系统且切换完成后自动开机时，通过指定超节点ID和镜像ID切换其下所有节点，auto_start设为true。
  ```
  POST https://{endpoint}/v2/0605767a3300d5762fb7c0186d9e1779/nodes/batch-reimage
  {
    "hypernode_ids" : [ "34567890-3456-3456-3456-345678901cde" ],
    "image_id" : "12345678-1234-1234-1234-123456789abc",
    "keypair_name" : "my-keypair",
    "auto_start" : true
  }
  ```
  
- 对指定节点批量切换操作系统且不自动开机请求示例。使用场景：需要对部分节点切换操作系统但切换完成后保持关机状态时，通过指定节点ID和镜像ID批量切换，auto_start设为false。
  ```
  POST https://{endpoint}/v2/0605767a3300d5762fb7c0186d9e1779/nodes/batch-reimage
  {
    "node_ids" : [ "a1b2c3d4-e5f6-7890-abcd-ef1234567890" ],
    "image_id" : "12345678-1234-1234-1234-123456789abc",
    "keypair_name" : "my-keypair",
    "auto_start" : false
  }
  ```
  
- 对超节点切换操作系统且不自动开机请求示例。使用场景：需要对整个超节点切换操作系统但切换完成后保持关机状态时，通过指定超节点ID和镜像ID切换其下所有节点，auto_start设为false。
  ```
  POST https://{endpoint}/v2/0605767a3300d5762fb7c0186d9e1779/nodes/batch-reimage
  {
    "hypernode_ids" : [ "34567890-3456-3456-3456-345678901cde" ],
    "image_id" : "12345678-1234-1234-1234-123456789abc",
    "keypair_name" : "my-keypair",
    "user_data" : "MTIzNDY1Nzg5",
    "auto_start" : false
  }
  ```
  
- 对节点切换操作系统且不自动开机无keypair_name和user_data的请求示例。使用场景：需要对节点切换操作系统但切换完成后保持关机状态时，通过仅指定节点ID和镜像ID切换指定所有节点，auto_start设为false。
  ```
  POST https://{endpoint}/v2/0605767a3300d5762fb7c0186d9e1779/nodes/batch-reimage
  {
    "node_ids" : [ "a1b2c3d4-e5f6-7890-abcd-ef1234567890" ],
    "image_id" : "12345678-1234-1234-1234-123456789abc",
    "auto_start" : false
  }
  ```
  
 
#### 响应示例
**状态码：202**
操作成功
- 批量切换操作系统操作成功响应示例。使用场景：所有节点切换操作系统操作提交成功，operation中无错误信息。
  ```
  {
    "batch_id" : "c3d4e5f6-a7b8-9012-cdef-123456789012",
    "operations" : [ {
      "batch_id" : "c3d4e5f6-a7b8-9012-cdef-123456789012",
      "id" : "d4e5f6a7-b8c9-0123-defa-234567890123",
      "status" : "pending",
      "type" : "node_reimage",
      "created_at" : "2024-01-01T00:00:00.000+08:00",
      "updated_at" : "2024-01-01T00:00:00.000+08:00",
      "hypernode_id" : "34567890-3456-3456-3456-345678901cde",
      "node_id" : "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "cluster_id" : "12345678-1234-1234-1234-123456789abc",
      "error" : null
    } ]
  }
  ```
  
- 批量切换操作系统操作含错误信息响应示例。使用场景：批量切换操作系统操作中存在节点操作提交失败，operation中包含错误信息。
  ```
  {
    "batch_id" : "c3d4e5f6-a7b8-9012-cdef-123456789012",
    "operations" : [ {
      "batch_id" : "c3d4e5f6-a7b8-9012-cdef-123456789012",
      "id" : "d4e5f6a7-b8c9-0123-defa-234567890123",
      "status" : "pending",
      "type" : "node_reimage",
      "created_at" : "2024-01-01T00:00:00.000+08:00",
      "updated_at" : "2024-01-01T00:00:00.000+08:00",
      "hypernode_id" : "34567890-3456-3456-3456-345678901cde",
      "node_id" : "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "cluster_id" : "12345678-1234-1234-1234-123456789abc"
    }, {
      "batch_id" : "c3d4e5f6-a7b8-9012-cdef-123456789012",
      "id" : "e5f6a7b8-c9d0-1234-efab-345678901234",
      "status" : "fail",
      "type" : "node_reimage",
      "created_at" : "2024-01-01T00:00:00.000+08:00",
      "updated_at" : "2024-01-01T00:00:01.000+08:00",
      "hypernode_id" : "34567890-3456-3456-3456-345678901cde",
      "node_id" : "b2c3d4e5-f6a7-8901-bcde-f12345678901",
      "cluster_id" : "12345678-1234-1234-1234-123456789abc",
      "error" : {
        "code" : "CMCS.10100500",
        "message" : "Image is not compatible with hypernode type family"
      }
    } ]
  }
  ```
  
 
#### 状态码
| 状态码 | 描述   |
|:---|:---|
| 202 | 操作成功 |
   
#### 错误码
请参见[错误码](https://support.huaweicloud.com/api-aics/ErrorCode.html)。
