
# 更新应用模板版本 - UpdateAppVersion
#### 功能介绍
更新一个应用模板版本
#### 调试
您可以在[API Explorer](https://console.huaweicloud.com/apiexplorer/#/openapi/IEF/doc?api=UpdateAppVersion)中调试该接口，支持自动认证鉴权。API Explorer可以自动生成SDK代码示例，并提供SDK代码示例调试功能。
#### 授权信息
账号具备所有API的调用权限，如果使用账号下的IAM用户调用当前API，该IAM用户需具备调用API所需的权限，具体权限要求请参见[权限和授权项](https://support.huaweicloud.com/api-ief/ief_02_1003.html)。
#### URI
PUT /v2/{project_id}/edgemgr/apps/{app_id}/versions/{version_id}
表1路径参数 
| 参数         | 是否必选 | 参数类型   | 描述       |
|:---|:---|:---|:---|
| project_id | 是    | String | 项目ID     |
| app_id     | 是    | String | 应用模板ID   |
| version_id | 是    | String | 应用模板版本ID |
#### 请求参数
表2请求Header参数 
| 参数              | 是否必选 | 参数类型   | 描述                                                        |
|:---|:---|:---|:---|
| Content-Type    | 是    | String | 消息体的类型（格式），默认取值为"application/json"。                       |
| X-Auth-Token    | 是    | String | 用户Token。 通过调用IAM服务获取用户Token接口获取（响应消息头中X-Subject-Token的值）。 |
| ief-instance-id | 否    | String | 企业版实例ID，专业版实例为空值。                                         |
   
表3请求Body参数 
| 参数      | 是否必选 | 参数类型                                                             | 描述         |
|:---|:---|:---|:---|
| version | 是    | [VersionUpdate] object | 更新应用模板版本配置 |
   
 表4VersionUpdate 
| 参数              | 是否必选 | 参数类型                                                           | 描述                                                                    |
|:---|:---|:---|:---|
| envs            | 否    | Array of [Env] objects         | 环境变量                                                                  |
| volumes         | 否    | Array of [Volumes] objects | 卷配置                                                                   |
| configs         | 否    | [AppConfigs] object     | 容器特殊参数                                                                |
| resources       | 否    | [Resources] object       | 资源配额                                                                  |
| command         | 否    | Array of strings                                               | 启动命令                                                                  |
| args            | 否    | Array of strings                                               | 参数                                                                    |
| liveness_probe  | 否    | [ProbeDetail] object   | 工作负载存活探针                                                              |
| readiness_probe | 否    | [ProbeDetail] object   | 工作负载业务探针                                                              |
| npu_type        | 否    | String                                                         | NPU类型，支持D310、D310B，支持填写： - D310：D310类型 - D310B：D310B类型 - 不填表示为D310类型。 |
   
 表5Env 
| 参数         | 是否必选 | 参数类型                                                     | 描述                                                          |
|:---|:---|:---|:---|
| name       | 是    | String                                                   | 环境变量的key，由大小写字母或下划线开头，由数字、大小写字母、下划线组成，最大长度2048个字符，不允许重复     |
| value      | 否    | String                                                   | 环境变量的value，最大长度20480个字符。value、value_from和field_path必须三选一使用。 |
| value_from | 否    | [ValueFrom] object | 环境变量可使用配置项和密钥导入                                             |
| field_path | 否    | String                                                   | 该参数目前只支持赋值"status.hostIP"，即引用边缘节点的IP地址作为环境变量。               |
   
 表6ValueFrom 
| 参数        | 是否必选 | 参数类型                                                       | 描述                                              |
|:---|:---|:---|:---|
| secret    | 否    | [Secrets] object       | 环境变量引用密钥时使用。使用ValueFrom时，secret与configmap必须二选一。 |
| configmap | 否    | [ConfigsMap] object | 环境变量引用配置项时使用。                                   |
   
 表7Secrets 
| 参数   | 是否必选 | 参数类型   | 描述     |
|:---|:---|:---|:---|
| name | 是    | String | 密钥的名称  |
| key  | 是    | String | 密钥的属性名 |
   
 表8ConfigsMap 
| 参数   | 是否必选 | 参数类型   | 描述      |
|:---|:---|:---|:---|
| name | 是    | String | 配置项的名称  |
| key  | 是    | String | 配置项的属性名 |
   
 表9Volumes 
| 参数           | 是否必选 | 参数类型    | 描述                                                                                                                        |
|:---|:---|:---|:---|
| name         | 是    | String  | 卷名称，小写字母或数字，最长63个字符                                                                                                       |
| type         | 是    | String  | 卷的类型，支持configMap,secret,emptyDir,hostPath                                                                                 |
| source       | 是    | String  | 卷来源，type为hostPath时输入路径，要求以/开头，后面可包含中划线，反斜杠，下划线，点号，字母，数字； secret时输入secret名称，configMap时输入configMap名称，emptyDir时输入disk或memory |
| destination  | 是    | String  | 卷挂载路径，必须是合法的路径                                                                                                            |
| read_only    | 否    | Boolean | 读写权限，configMap和secret类型只支持读权限                                                                                             |
| default_mode | 否    | Integer | 挂载的文件权限，仅configMap和secret类型生效，填写值为十进制表示的linux文件权限，默认为420（对应权限644）                                                         |
   
 表10AppConfigs 
| 参数             | 是否必选 | 参数类型                                                       | 描述                                                                                                                                                   |
|:---|:---|:---|:---|
| privileged     | 否    | Boolean                                                    | 默认为false，表示是否开启特权模式                                                                                                                                  |
| run_as_user    | 否    | Integer                                                    | 容器运行用户ID，输入范围为0\~65534的整数                                                                                                                            |
| host_network   | 否    | Boolean                                                    | 默认为true，其中true表示主机网络，而false表示端口映射                                                                                                                    |
| restart_policy | 否    | String                                                     | 应用实例重启模式： - Always：当容器终止退出后，总是重启容器 - Onfailure：容器异常退出（退出码非0）时才重启容器 - Never：容器终止退出后，不重启容器                                                             |
| ports          | 否    | Array of [Ports] objects | 容器端口映射值                                                                                                                                              |
| host_pid       | 否    | Boolean                                                    | 应用实例是否与主机共PID命名空间，默认值false                                                                                                                           |
| dns_policy     | 否    | String                                                     | 应用实例DNS策略，可选值Default、ClusterFirst、ClusterFirstWithHostNet，默认为Default。应用实例启用主机网络时只能选填Default、ClusterFirstWithHostNet，不启用主机网络时只能选填Default、ClusterFirst |
   
 表11Ports 
| 参数             | 是否必选 | 参数类型    | 描述               |
|:---|:---|:---|:---|
| container_port | 否    | Integer | 构成一对映射的容器端口      |
| host_port      | 否    | Integer | 构成一对映射的物理机对应网卡端口 |
| host_ip        | 否    | String  | 对应网卡地址           |
   
 表12Resources 
| 参数       | 是否必选 | 参数类型                                                               | 描述          |
|:---|:---|:---|:---|
| limits   | 否    | [LimitsRequests] object | 允许容器使用的最大资源 |
| requests | 否    | [LimitsRequests] object | 容器需要使用的最小资源 |
   
 表13LimitsRequests 
| 参数     | 是否必选 | 参数类型    | 描述                                                     |
|:---|:---|:---|:---|
| cpu    | 否    | Float   | cpu核数，大于等于0.01，最大1000；请求不需要带单位                         |
| memory | 否    | Float   | 内存大小，单位兆，大于等于0.01，最大1024000。注意：内存的limits值最小为4；请求不需要带单位 |
| gpu    | 否    | Float   | Gpu显存大小，单位兆，大于等于0.01，最大1024000；请求不需要带单位                |
| npu    | 否    | Integer | Npu个数，大于0，最大1000；请求不需要带单位                              |
   
 表14ProbeDetail 
| 参数                    | 是否必选 | 参数类型                                                             | 描述                                     |
|:---|:---|:---|:---|
| exec_command          | 否    | String                                                           | 执行探测的命令行命令，长度1-10240内的字符串              |
| http_get              | 否    | [HttpGetDetail] object | 执行http探测                               |
| initial_delay_seconds | 否    | Integer                                                          | 表示从工作负载启动后从多久开始探测，大于0且不大于3600的整数，默认为10 |
| timeout_seconds       | 否    | Integer                                                          | 表示探测超时时间，大于0且不大于3600的整数，默认为1           |
   
 表15HttpGetDetail 
| 参数     | 是否必选 | 参数类型    | 描述                             |
|:---|:---|:---|:---|
| path   | 是    | String  | 必须要以/开头，构造结果为：协议类型://主机地址:端口路径 |
| port   | 是    | Integer | 探测的http端口，1到65535之间的整数         |
| host   | 否    | String  | 请求的主机地址，默认为容器IP                |
| scheme | 否    | String  | 协议类型，HTTP或HTTPS，默认HTTP         |
   
#### 响应参数
**状态码：200**
表16响应Body参数 
| 参数      | 参数类型                                                                    | 描述    |
|:---|:---|:---|
| version | [AppVersionDetail] object | app详情 |
   
 表17AppVersionDetail 
| 参数              | 参数类型                                                            | 描述                                                                    |
|:---|:---|:---|
| id              | String                                                          | 应用版本ID                                                                |
| version         | String                                                          | 应用版本号                                                                 |
| created_at      | String                                                          | 创建时间                                                                  |
| updated_at      | String                                                          | 更新时间 只有更新后才会出现该字段                                                     |
| project_id      | String                                                          | 项目ID                                                                  |
| image_url       | String                                                          | 镜像存储地址                                                                |
| envs            | Array of [Env] objects         | 环境变量                                                                  |
| volumes         | Array of [Volumes] objects | 卷配置                                                                   |
| configs         | [AppConfigs] object     | 容器特殊参数                                                                |
| resources       | [Resources] object       | 容器使用的资源                                                               |
| arch            | String                                                          | 架构                                                                    |
| command         | Array of strings                                                | 启动命令                                                                  |
| args            | Array of strings                                                | 参数                                                                    |
| liveness_probe  | [ProbeDetail] object   | 工作负载存活探针                                                              |
| readiness_probe | [ProbeDetail] object   | 工作负载业务探针                                                              |
| npu_type        | String                                                          | NPU类型，支持D310、D310B，支持填写： - D310：D310类型 - D310B：D310B类型 - 不填表示为D310类型。 |
   
 表18Env 
| 参数         | 参数类型                                                      | 描述                                                          |
|:---|:---|:---|
| name       | String                                                    | 环境变量的key，由大小写字母或下划线开头，由数字、大小写字母、下划线组成，最大长度2048个字符，不允许重复     |
| value      | String                                                    | 环境变量的value，最大长度20480个字符。value、value_from和field_path必须三选一使用。 |
| value_from | [ValueFrom] object | 环境变量可使用配置项和密钥导入                                             |
| field_path | String                                                    | 该参数目前只支持赋值"status.hostIP"，即引用边缘节点的IP地址作为环境变量。               |
   
 表19ValueFrom 
| 参数        | 参数类型                                                        | 描述                                              |
|:---|:---|:---|
| secret    | [Secrets] object       | 环境变量引用密钥时使用。使用ValueFrom时，secret与configmap必须二选一。 |
| configmap | [ConfigsMap] object | 环境变量引用配置项时使用。                                   |
   
 表20Secrets 
| 参数   | 参数类型   | 描述     |
|:---|:---|:---|
| name | String | 密钥的名称  |
| key  | String | 密钥的属性名 |
   
 表21ConfigsMap 
| 参数   | 参数类型   | 描述      |
|:---|:---|:---|
| name | String | 配置项的名称  |
| key  | String | 配置项的属性名 |
   
 表22Volumes 
| 参数           | 参数类型    | 描述                                                                                                                        |
|:---|:---|:---|
| name         | String  | 卷名称，小写字母或数字，最长63个字符                                                                                                       |
| type         | String  | 卷的类型，支持configMap,secret,emptyDir,hostPath                                                                                 |
| source       | String  | 卷来源，type为hostPath时输入路径，要求以/开头，后面可包含中划线，反斜杠，下划线，点号，字母，数字； secret时输入secret名称，configMap时输入configMap名称，emptyDir时输入disk或memory |
| destination  | String  | 卷挂载路径，必须是合法的路径                                                                                                            |
| read_only    | Boolean | 读写权限，configMap和secret类型只支持读权限                                                                                             |
| default_mode | Integer | 挂载的文件权限，仅configMap和secret类型生效，填写值为十进制表示的linux文件权限，默认为420（对应权限644）                                                         |
   
 表23AppConfigs 
| 参数             | 参数类型                                                        | 描述                                                                                                                                                   |
|:---|:---|:---|
| privileged     | Boolean                                                     | 默认为false，表示是否开启特权模式                                                                                                                                  |
| run_as_user    | Integer                                                     | 容器运行用户ID，输入范围为0\~65534的整数                                                                                                                            |
| host_network   | Boolean                                                     | 默认为true，其中true表示主机网络，而false表示端口映射                                                                                                                    |
| restart_policy | String                                                      | 应用实例重启模式： - Always：当容器终止退出后，总是重启容器 - Onfailure：容器异常退出（退出码非0）时才重启容器 - Never：容器终止退出后，不重启容器                                                             |
| ports          | Array of [Ports] objects | 容器端口映射值                                                                                                                                              |
| host_pid       | Boolean                                                     | 应用实例是否与主机共PID命名空间，默认值false                                                                                                                           |
| dns_policy     | String                                                      | 应用实例DNS策略，可选值Default、ClusterFirst、ClusterFirstWithHostNet，默认为Default。应用实例启用主机网络时只能选填Default、ClusterFirstWithHostNet，不启用主机网络时只能选填Default、ClusterFirst |
   
 表24Ports 
| 参数             | 参数类型    | 描述               |
|:---|:---|:---|
| container_port | Integer | 构成一对映射的容器端口      |
| host_port      | Integer | 构成一对映射的物理机对应网卡端口 |
| host_ip        | String  | 对应网卡地址           |
   
 表25Resources 
| 参数       | 参数类型                                                                | 描述          |
|:---|:---|:---|
| limits   | [LimitsRequests] object | 允许容器使用的最大资源 |
| requests | [LimitsRequests] object | 容器需要使用的最小资源 |
   
 表26LimitsRequests 
| 参数     | 参数类型    | 描述                                                     |
|:---|:---|:---|
| cpu    | Float   | cpu核数，大于等于0.01，最大1000；请求不需要带单位                         |
| memory | Float   | 内存大小，单位兆，大于等于0.01，最大1024000。注意：内存的limits值最小为4；请求不需要带单位 |
| gpu    | Float   | Gpu显存大小，单位兆，大于等于0.01，最大1024000；请求不需要带单位                |
| npu    | Integer | Npu个数，大于0，最大1000；请求不需要带单位                              |
   
 表27ProbeDetail 
| 参数                    | 参数类型                                                              | 描述                                     |
|:---|:---|:---|
| exec_command          | String                                                            | 执行探测的命令行命令，长度1-10240内的字符串              |
| http_get              | [HttpGetDetail] object | 执行http探测                               |
| initial_delay_seconds | Integer                                                           | 表示从工作负载启动后从多久开始探测，大于0且不大于3600的整数，默认为10 |
| timeout_seconds       | Integer                                                           | 表示探测超时时间，大于0且不大于3600的整数，默认为1           |
   
 表28HttpGetDetail 
| 参数     | 参数类型    | 描述                             |
|:---|:---|:---|
| path   | String  | 必须要以/开头，构造结果为：协议类型://主机地址:端口路径 |
| port   | Integer | 探测的http端口，1到65535之间的整数         |
| host   | String  | 请求的主机地址，默认为容器IP                |
| scheme | String  | 协议类型，HTTP或HTTPS，默认HTTP         |
   
#### 请求示例
更新应用模板版本，修改环境变量配置，更新卷类型为"hostPath"。
```
{
  "version" : {
    "resources" : {
      "limits" : {
        "cpu" : 0.1,
        "memory" : 1024,
        "gpu" : 3.9
      },
      "requests" : {
        "cpu" : 0.1,
        "memory" : 1024,
        "gpu" : 3.9
      }
    },
    "envs" : [ {
      "name" : "key",
      "value" : "name"
    } ],
    "volumes" : [ {
      "name" : "test",
      "type" : "hostPath",
      "source" : "/tmp",
      "destination" : "/tmp0",
      "read_only" : true
    } ],
    "configs" : {
      "privileged" : true,
      "host_network" : true,
      "restart_policy" : "Always"
    }
  }
}
```
#### 响应示例
**状态码：200**
ok
```
{
  "version" : {
    "id" : "bc0ed193-d464-4707-a246-c98feb5d04af",
    "created_at" : "2023-06-28T03:37:52.572388Z",
    "updated_at" : "2023-06-28T03:47:36.815713563Z",
    "project_id" : "{project_id}",
    "image_url" : "",
    "envs" : [ ],
    "volumes" : [ ],
    "configs" : {
      "host_network" : true,
      "restart_policy" : "Always",
      "privileged" : false
    },
    "resources" : {
      "limits" : {
        "cpu" : 1,
        "memory" : 512
      },
      "requests" : {
        "cpu" : 0.25,
        "memory" : 512
      }
    },
    "arch" : "",
    "command" : [ ],
    "args" : [ ],
    "version" : "1.0",
    "liveness_probe" : { },
    "readiness_probe" : { },
    "npu_type" : ""
  }
}
```
#### 状态码
| 状态码 | 描述 |
|:---|:---|
| 200 | ok |
   
#### 错误码
请参见[错误码](https://support.huaweicloud.com/api-ief/ErrorCode.html)。
