
# 创建应用模板 - CreateApp
#### 功能介绍
该API用于创建一个应用模板。
#### 调试
您可以在[API Explorer](https://console.huaweicloud.com/apiexplorer/#/openapi/IEF/doc?api=CreateApp)中调试该接口，支持自动认证鉴权。API Explorer可以自动生成SDK代码示例，并提供SDK代码示例调试功能。
#### 授权信息
账号具备所有API的调用权限，如果使用账号下的IAM用户调用当前API，该IAM用户需具备调用API所需的权限，具体权限要求请参见[权限和授权项](https://support.huaweicloud.com/api-ief/ief_02_1003.html)。
#### URI
POST /v2/{project_id}/edgemgr/apps
表1路径参数 
| 参数         | 是否必选 | 参数类型   | 描述   |
|:---|:---|:---|:---|
| project_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参数 
| 参数  | 是否必选 | 参数类型                                              | 描述     |
|:---|:---|:---|:---|
| app | 是    | [AppDetail] object | 应用模板配置 |
   
 表4AppDetail 
| 参数          | 是否必选 | 参数类型                                                          | 描述                                                             |
|:---|:---|:---|:---|
| name        | 是    | String                                                        | 应用模板名称，只允许英文小写字母、数字、中划线，最大长度32， 英文小写字母或数字开头和结尾 Name为必填字段       |
| alias       | 否    | String                                                        | 应用模板别名，中文英文字母、数字、中划线、下划线，最大64字符                                |
| description | 否    | String                                                        | 应用模板描述，最大长度255，不允许\^ \~ # $ % \& \* \< \> ( ) \[ \] { } ' " \\ |
| icon_url    | 否    | String                                                        | 应用图标存储url地址，最大长度2083                                           |
| tags        | 否    | Array of [NodeResTag] objects | 应用模板标签                                                         |
   
 表5NodeResTag 
| 参数    | 是否必选 | 参数类型   | 描述                                                                                                   |
|:---|:---|:---|:---|
| key   | 否    | String | 键。最大长度36个unicode字符。 不能为空，只能包含大小写字母，数字，中划线"-"，下划线"_"。                                                 |
| value | 否    | String | 值。每个值最大长度43个unicode字符，删除时如果value有值按照key/value删除，如果value没值，则按照key删除。 不能为空，只能包含大小写字母，数字，中划线"-"，下划线"_"。 |
   
#### 响应参数
**状态码：201**
表6响应Body参数 
| 参数  | 参数类型                                                   | 描述     |
|:---|:---|:---|
| app | [AppResponse] object | 应用模板配置 |
   
 表7AppResponse 
| 参数           | 参数类型                                                                       | 描述                                                               |
|:---|:---|:---|
| id           | String                                                                     | 应用模板ID                                                           |
| name         | String                                                                     | 应用模板名称，只允许英文小写字母、数字、中划线，最大长度32， 英文小写字母或数字开头和结尾 Name为必填字段，且本租户中唯一 |
| alias        | String                                                                     | 应用模板别名，中文英文字母、数字、中划线、下划线，最大64字符                                  |
| description  | String                                                                     | 应用模板描述，最大长度255，不允许\^ \~ # $ % \& \* \< \> ( ) \[ \] { } ' " \\   |
| icon_url     | String                                                                     | 应用图标存储url地址，最大长度2083                                             |
| created_at   | String                                                                     | 创建时间                                                             |
| project_id   | String                                                                     | 项目ID                                                             |
| visibility   | String                                                                     | 模板类型                                                             |
| app_versions | Array of [AppVersionDetail] objects | app详情                                                            |
   
 表8AppVersionDetail 
| 参数              | 参数类型                                                     | 描述                                                                    |
|:---|:---|:---|
| 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类型。 |
   
 表9Env 
| 参数         | 参数类型                                               | 描述                                                          |
|:---|:---|:---|
| name       | String                                             | 环境变量的key，由大小写字母或下划线开头，由数字、大小写字母、下划线组成，最大长度2048个字符，不允许重复     |
| value      | String                                             | 环境变量的value，最大长度20480个字符。value、value_from和field_path必须三选一使用。 |
| value_from | [ValueFrom] object | 环境变量可使用配置项和密钥导入                                             |
| field_path | String                                             | 该参数目前只支持赋值"status.hostIP"，即引用边缘节点的IP地址作为环境变量。               |
   
 表10ValueFrom 
| 参数        | 参数类型                                                 | 描述                                              |
|:---|:---|:---|
| secret    | [Secrets] object       | 环境变量引用密钥时使用。使用ValueFrom时，secret与configmap必须二选一。 |
| configmap | [ConfigsMap] object | 环境变量引用配置项时使用。                                   |
   
 表11Secrets 
| 参数   | 参数类型   | 描述     |
|:---|:---|:---|
| name | String | 密钥的名称  |
| key  | String | 密钥的属性名 |
   
 表12ConfigsMap 
| 参数   | 参数类型   | 描述      |
|:---|:---|:---|
| name | String | 配置项的名称  |
| key  | String | 配置项的属性名 |
   
 表13Volumes 
| 参数           | 参数类型    | 描述                                                                                                                        |
|:---|:---|:---|
| 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）                                                         |
   
 表14AppConfigs 
| 参数             | 参数类型                                                 | 描述                                                                                                                                                   |
|:---|:---|:---|
| 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 |
   
 表15Ports 
| 参数             | 参数类型    | 描述               |
|:---|:---|:---|
| container_port | Integer | 构成一对映射的容器端口      |
| host_port      | Integer | 构成一对映射的物理机对应网卡端口 |
| host_ip        | String  | 对应网卡地址           |
   
 表16Resources 
| 参数       | 参数类型                                                         | 描述          |
|:---|:---|:---|
| limits   | [LimitsRequests] object | 允许容器使用的最大资源 |
| requests | [LimitsRequests] object | 容器需要使用的最小资源 |
   
 表17LimitsRequests 
| 参数     | 参数类型    | 描述                                                     |
|:---|:---|:---|
| cpu    | Float   | cpu核数，大于等于0.01，最大1000；请求不需要带单位                         |
| memory | Float   | 内存大小，单位兆，大于等于0.01，最大1024000。注意：内存的limits值最小为4；请求不需要带单位 |
| gpu    | Float   | Gpu显存大小，单位兆，大于等于0.01，最大1024000；请求不需要带单位                |
| npu    | Integer | Npu个数，大于0，最大1000；请求不需要带单位                              |
   
 表18ProbeDetail 
| 参数                    | 参数类型                                                       | 描述                                     |
|:---|:---|:---|
| exec_command          | String                                                     | 执行探测的命令行命令，长度1-10240内的字符串              |
| http_get              | [HttpGetDetail] object | 执行http探测                               |
| initial_delay_seconds | Integer                                                    | 表示从工作负载启动后从多久开始探测，大于0且不大于3600的整数，默认为10 |
| timeout_seconds       | Integer                                                    | 表示探测超时时间，大于0且不大于3600的整数，默认为1           |
   
 表19HttpGetDetail 
| 参数     | 参数类型    | 描述                             |
|:---|:---|:---|
| path   | String  | 必须要以/开头，构造结果为：协议类型://主机地址:端口路径 |
| port   | Integer | 探测的http端口，1到65535之间的整数         |
| host   | String  | 请求的主机地址，默认为容器IP                |
| scheme | String  | 协议类型，HTTP或HTTPS，默认HTTP         |
   
#### 请求示例
创建一个应用模板，应用图标存储地址为空，添加应用模板标签，key为"ief-application-type"，value为"test"。
```
{
  "app" : {
    "name" : "ief-application-test",
    "alias" : "test",
    "description" : "This is an application test",
    "icon_url" : null,
    "tags" : [ {
      "key" : "ief-application-type",
      "value" : "test"
    } ]
  }
}
```
#### 响应示例
**状态码：201**
ok
```
{
  "app" : {
    "name" : "test-app-1",
    "icon_url" : null,
    "created_at" : "2018-05-26T08:41:33",
    "visibility" : null,
    "alias" : null,
    "project_id" : "{project_id}",
    "id" : "6c2c5f97-5c1d-408e-a0ee-c35c287afefe",
    "description" : "test",
    "app_versions" : [ ]
  }
}
```
#### 状态码
| 状态码 | 描述 |
|:---|:---|
| 201 | ok |
   
#### 错误码
请参见[错误码](https://support.huaweicloud.com/api-ief/ErrorCode.html)。
