
# 添加自定义镜像版本 - AddV2ImageVersion
#### 功能介绍
为已有镜像添加新版本。用户通过该接口为已注册的镜像添加新的版本。此接口为同步接口，无配套使用接口和特殊场景。
#### 调用方法
请参见[如何调用API](https://support.huaweicloud.com/api-aidatalake/aidatalake_02_0003.html)。
#### URI
POST /v2/workspaces/{workspace_id}/images/{image_id}/versions
表1路径参数 
| 参数           | 是否必选 | 参数类型   | 描述                                                                                                                                                                                             |
|:---|:---|:---|:---|
| workspace_id | 是    | String | **参数解释**：工作空间ID。 **约束限制**：不涉及。 **取值范围**：长度为32\~36的英文字符、数字和中划线的组合。 **默认取值**：不涉及。 |
| image_id     | 是    | String | **参数解释**：镜像ID。 **约束限制**：不涉及。 **取值范围**：长度为32\~36的英文字符、数字和中划线的组合。 **默认取值**：不涉及。   |
   
#### 请求参数
表2请求Header参数 
| 参数           | 是否必选 | 参数类型   | 描述                                                                                                                                                                                   |
|:---|:---|:---|:---|
| X-Auth-Token | 是    | String | **参数解释**：用户Token。 **约束限制**：不涉及。 **取值范围**：长度不超过65534个字符。 **默认取值**：不涉及。 |
   
表3请求Body参数 
| 参数                    | 是否必选 | 参数类型                                                                                | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
|:---|:---|:---|:---|
| image_url             | 是    | String                                                                              | **参数解释**：自定义镜像的URL地址。 **约束限制**：必填。 **取值范围**：由大小写英文字母、数字、.、/、:、-、_组成的容器镜像地址。长度为1\~2000个字符。 **默认取值**：不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| category              | 是    | String                                                                              | **参数解释**：自定义镜像的分类。 **约束限制**：必填。 **取值范围**： - RAY_BASIC：基于Ray构建的自定义镜像。   - SPARK_JOB：基于SparkJob构建的自定义镜像。   - SPARK_SQL：基于SparkSql构建的自定义镜像。   - AURA_JOB：基于AuraJobV2构建的自定义镜像。    **默认取值**：不涉及。 |
| architectures         | 是    | Array of strings                                                                    | **参数解释**：支持架构列表。 **约束限制**：不涉及。 **取值范围**： - x86_64：x86架构。   - aarch64：ARM架构。    **默认取值**：x86_64。                                                                                                                                                                                                                                                                                                                                                               |
| type                  | 是    | String                                                                              | **参数解释**：版本类型。 **约束限制**：不涉及。 **取值范围**： - STABLE：稳定版本。   - RECOMMEND：推荐版本。   - BETA：测试版本。    **默认取值**：不涉及。                                                                                                                                                                                                                    |
| container_softwares   | 否    | Array of [ContainerSoftware] objects | **参数解释**：自定义镜像包含的软件。 **约束限制**：不涉及。 **取值范围**：最小个数为0，最大个数为100。 **默认取值**：不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| description           | 否    | String                                                                              | **参数解释**：自定义镜像的描述。 **约束限制**：选填。 **取值范围**：不允许输入感叹号、小于号、大于号、等号、与号、双引号、单引号字符。长度为0\~2000个字符。 **默认取值**：不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| base_image_id         | 否    | String                                                                              | **参数解释**：镜像id。 **约束限制**：注册Spark类型自定义镜像时必填。 **取值范围**：字符串，长度0\~64个字符。 **默认取值**：不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| base_image_version_id | 否    | String                                                                              | **参数解释**：镜像版本id。 **约束限制**：注册Spark类型自定义镜像时必填。 **取值范围**：字符串，长度0\~64个字符。 **默认取值**：不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
   
 表4ContainerSoftware 
| 参数      | 是否必选 | 参数类型   | 描述                                                                         |
|:---|:---|:---|:---|
| name    | 是    | String | **参数解释**：软件名称。 **取值范围**：字符串，2\~32个字符。 |
| version | 是    | String | **参数解释**：软件版本。 **取值范围**：字符串，2\~32个字符。 |
   
#### 响应参数
**状态码：200**
表5响应Body参数 
| 参数                    | 参数类型                                                                                 | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
|:---|:---|:---|
| version_id            | String                                                                               | **参数解释**：镜像版本ID。 **取值范围**：长度为32\~36的英文字符、数字和中划线的组合。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| image_version         | String                                                                               | **参数解释**：镜像版本。 **取值范围**：字符串，长度2\~32个字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| category              | String                                                                               | **参数解释**：镜像分类。 **取值范围**：字符串，长度0\~32个字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| image_registry        | String                                                                               | **参数解释**：镜像域名。 **取值范围**：字符串，长度0\~255个字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| image_namespace       | String                                                                               | **参数解释**：镜像组织。 **取值范围**：字符串，长度0\~64个字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| image_name            | String                                                                               | **参数解释**：镜像名。 **取值范围**：字符串，长度0\~128个字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| architectures         | Array of strings                                                                     | **参数解释**：支持架构列表。 **取值范围**： - x86_64：x86架构。   - aarch64：ARM架构。                                                                                                                                                    |
| container_softwares   | Array of [ContainerSoftware] objects | **参数解释**：镜像软件。 **取值范围**：最小个数为0，最大个数为100。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| status                | String                                                                               | **参数解释**：状态。 **取值范围**： - AVAILABLE：可用。   - UNAVAILABLE：不可用。   - UNKNOWN：未知。     |
| type                  | String                                                                               | **参数解释**：镜像版本类型。 **取值范围**： - STABLE：稳定版本。   - RECOMMEND：推荐版本。   - BETA：测试版本。    |
| visibility            | String                                                                               | **参数解释**：可见性。 **取值范围**： - PRIVATE：私有，仅工作空间内可见。   - PUBLIC：公共，所有工作空间可见。                                                                                                                                           |
| create_time           | String                                                                               | **参数解释**：创建时间。 **取值范围**：ISO 8601格式，yyyy-MM-dd'T'HH:mm:ss.SSSZ。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| update_time           | String                                                                               | **参数解释**：更新时间。 **取值范围**：ISO 8601格式，yyyy-MM-dd'T'HH:mm:ss.SSSZ。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| description           | String                                                                               | **参数解释**：镜像描述。 **取值范围**：字符串，长度0\~2000个字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| base_image_id         | String                                                                               | **参数解释**：镜像id。 **取值范围**：字符串，长度0\~64个字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| base_image_version_id | String                                                                               | **参数解释**：镜像版本id。 **取值范围**：字符串，长度0\~64个字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| release_version       | String                                                                               | **参数解释**：软件版本。 **取值范围**：字符串，长度0\~512个字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| software_version_id   | String                                                                               | **参数解释**：t_spark_software_version表主键id。 **取值范围**：字符串，长度0\~64个字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
   
 表6ContainerSoftware 
| 参数      | 参数类型   | 描述                                                                         |
|:---|:---|:---|
| name    | String | **参数解释**：软件名称。 **取值范围**：字符串，2\~32个字符。 |
| version | String | **参数解释**：软件版本。 **取值范围**：字符串，2\~32个字符。 |
   
**状态码：400**
表7响应Body参数 
| 参数           | 参数类型   | 描述                                                                          |
|:---|:---|:---|
| error_code   | String | **参数解释**：错误码。 **取值范围**：长度为8\~36个字符。    |
| error_msg    | String | **参数解释**：错误描述。 **取值范围**：长度为2\~512个字符。  |
| solution_msg | String | **参数解释**：解决方案。 **取值范围**：长度为0\~4096个字符。 |
   
**状态码：401**
表8响应Body参数 
| 参数           | 参数类型   | 描述                                                                          |
|:---|:---|:---|
| error_code   | String | **参数解释**：错误码。 **取值范围**：长度为8\~36个字符。    |
| error_msg    | String | **参数解释**：错误描述。 **取值范围**：长度为2\~512个字符。  |
| solution_msg | String | **参数解释**：解决方案。 **取值范围**：长度为0\~4096个字符。 |
   
**状态码：403**
表9响应Body参数 
| 参数           | 参数类型   | 描述                                                                          |
|:---|:---|:---|
| error_code   | String | **参数解释**：错误码。 **取值范围**：长度为8\~36个字符。    |
| error_msg    | String | **参数解释**：错误描述。 **取值范围**：长度为2\~512个字符。  |
| solution_msg | String | **参数解释**：解决方案。 **取值范围**：长度为0\~4096个字符。 |
   
**状态码：404**
表10响应Body参数 
| 参数           | 参数类型   | 描述                                                                          |
|:---|:---|:---|
| error_code   | String | **参数解释**：错误码。 **取值范围**：长度为8\~36个字符。    |
| error_msg    | String | **参数解释**：错误描述。 **取值范围**：长度为2\~512个字符。  |
| solution_msg | String | **参数解释**：解决方案。 **取值范围**：长度为0\~4096个字符。 |
   
**状态码：500**
表11响应Body参数 
| 参数           | 参数类型   | 描述                                                                          |
|:---|:---|:---|
| error_code   | String | **参数解释**：错误码。 **取值范围**：长度为8\~36个字符。    |
| error_msg    | String | **参数解释**：错误描述。 **取值范围**：长度为2\~512个字符。  |
| solution_msg | String | **参数解释**：解决方案。 **取值范围**：长度为0\~4096个字符。 |
   
#### 请求示例
为已有镜像添加新版本。为已注册的镜像添加新的版本信息。
```
POST /v2/workspaces/{workspace_id}/images/{image_id}/versions
{
  "image_url" : "swr.cn-north-4.myhuaweicloud.com/test-image/spark_job:v1",
  "category" : "SPARK_JOB",
  "type" : "STABLE",
  "architectures" : [ "x86_64" ],
  "container_softwares" : [ {
    "name" : "jdk",
    "version" : "21"
  } ],
  "description" : "test image"
}
```
#### 响应示例
**状态码：200**
请求成功。
```
{
  "version_id" : "c2533937-101d-4a66-9e77-03c2ee815f1d",
  "image_version" : "v1",
  "category" : "SPARK_JOB",
  "image_registry" : "swr.cn-north-4.myhuaweicloud.com",
  "image_namespace" : "test-image",
  "image_name" : "spark_job",
  "architectures" : [ "x86_64" ],
  "container_softwares" : [ {
    "name" : "jdk",
    "version" : "21"
  } ],
  "status" : "AVAILABLE",
  "type" : "STABLE",
  "visibility" : "PRIVATE",
  "description" : "test image"
}
```
**状态码：400**
请求参数错误。
```
{
  "error_code" : "AIDataLake.00010151",
  "error_msg" : "Parameter value is invalid.",
  "solution_msg" : "Please input valid parameter value."
}
```
**状态码：401**
未授权。
```
{
  "error_code" : "APIGW.0301",
  "error_msg" : "Incorrect IAM authentication information: decrypt token fail.",
  "solution_msg" : "Check whether the IAM authentication information is correct."
}
```
**状态码：403**
禁止访问。
```
{
  "error_code" : "AIDataLake.00010150",
  "error_msg" : "The operation is not allowed.",
  "solution_msg" : "Check whether the operation is allowed in the current status."
}
```
**状态码：404**
资源未找到。
```
{
  "error_code" : "AIDataLake.00010009",
  "error_msg" : "No resources found.",
  "solution_msg" : "Enter correct resource and project IDs."
}
```
**状态码：500**
内部服务器错误。
```
{
  "error_code" : "AIDataLake.00011001",
  "error_msg" : "Internal error.",
  "solution_msg" : "Contact technical support or try again later."
}
```
#### 状态码
| 状态码 | 描述       |
|:---|:---|
| 200 | 请求成功。    |
| 400 | 请求参数错误。  |
| 401 | 未授权。     |
| 403 | 禁止访问。    |
| 404 | 资源未找到。   |
| 500 | 内部服务器错误。 |
   
