# 创建插件 - CreatePoolPlugin
#### 功能介绍
创建插件实例接口用于在系统中创建一个新的插件实例。该接口适用于以下场景：当需要扩展系统功能、部署新的插件、更新现有插件配置或测试插件时，用户可通过此接口创建指定插件的实例。使用该接口的前提条件是插件已存在且用户具有管理员权限或插件管理权限。创建操作完成后，插件实例将被成功创建并处于可用状态，相关配置信息将被记录。若插件不存在、用户无权限操作、配置参数错误或系统资源不足，接口将返回相应的错误信息。
#### 调试
您可以在[API Explorer](https://console.huaweicloud.com/apiexplorer/#/openapi/ModelArts/doc?api=CreatePoolPlugin)中调试该接口，支持自动认证鉴权。API Explorer可以自动生成SDK代码示例，并提供SDK代码示例调试功能。
#### 授权信息
账号具备所有API的调用权限，如果使用账号下的IAM用户调用当前API，该IAM用户需具备调用API所需的权限。
- 如果使用角色与策略授权，具体权限要求请参见[权限和授权项](https://support.huaweicloud.com/api-modelarts/modelarts_03_0138.html)。
- 如果使用身份策略授权，当前API调用无需身份策略权限。
 
#### URI
POST /v2/{project_id}/pools/{pool_name}/plugins
表1路径参数 
| 参数         | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                          |
|:---|:---|:---|:---|
| project_id | 是    | String | **参数解释** ：用户项目ID。获取方法请参见[获取项目ID和名称](https://support.huaweicloud.com/api-modelarts/modelarts_03_0147.html)。 **约束限制**：不涉及。 **取值范围**：不涉及。 **默认取值**：不涉及。 |
| pool_name  | 是    | String | **参数解释**：资源池名称。 **约束限制**：不涉及。 **取值范围**：不涉及。 **默认取值**：不涉及。                                                                                            |
   
#### 请求参数
表2请求Body参数 
| 参数         | 是否必选 | 参数类型                                                                                                | 描述                                                                                                                                                                                                                                                                                                                    |
|:---|:---|:---|:---|
| apiVersion | 是    | String                                                                                              | **参数解释**：API版本，固定值"v2"，该值不可修改。 **约束限制**：不涉及。 **取值范围**：不涉及。 **默认取值**：不涉及。       |
| kind       | 是    | String                                                                                              | **参数解释**：API资源类型，固定值"Plugin"，该值不可修改。 **约束限制**：不涉及。 **取值范围**：不涉及。 **默认取值**：不涉及。 |
| spec       | 是    | [PluginSpec] object | **参数解释**：spec是集合类的元素类型，内容为插件实例安装/升级的具体请求信息。 **约束限制**：不涉及。                                                                                                                                                                                |
   
 表3PluginSpec 
| 参数       | 是否必选 | 参数类型                                                                                            | 描述                                                                                                        |
|:---|:---|:---|:---|
| template | 是    | [Template] object | **参数解释**：模板信息。 **约束限制**：不涉及。 |
   
 表4Template 
| 参数      | 是否必选 | 参数类型                 | 描述                                                                                                                        |
|:---|:---|:---|:---|
| name    | 是    | String               | **参数解释**：待安装插件模板名称，如log-agent。 **取值范围**：不涉及。 |
| version | 否    | String               | **参数解释**：待安装、升级插件的版本号。 **取值范围**：不涉及。         |
| inputs  | 否    | Map\<String,Object\> | **参数解释**：插件模板安装参数（各插件不同），升级插件时需要填写全量安装参数，未填写参数将使用插件模板中的默认值，当前插件安装参数可通过查询插件实例接口获取。                                         |
   
#### 响应参数
**状态码：200**
表5响应Body参数 
| 参数         | 参数类型                                                                                                         | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
|:---|:---|:---|
| apiVersion | String                                                                                                       | **参数解释**： API版本。 **取值范围**： 可选值如下： - v2              |
| kind       | String                                                                                                       | **参数解释**： 插件实例的类型。 **取值范围**： 可选值如下： - Plugin：插件。    |
| metadata   | [PluginMetadata] object | **参数解释**： 插件实例的metadata信息。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| spec       | [PluginSpec] object         | **参数解释**： 插件实例的具体信息。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| status     | [PluginStatus] object     | **参数解释**： 插件实例的状态信息。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
   
 表6PluginMetadata 
| 参数                | 参数类型   | 描述                                                                                                             |
|:---|:---|:---|
| name              | String | **参数解释**： 插件实例的名称。 **取值范围**： 不涉及。 |
| creationTimestamp | String | **参数解释**： 创建时间。 **取值范围**： 不涉及。    |
   
 表7PluginSpec 
| 参数       | 参数类型                                                                                             | 描述             |
|:---|:---|:---|
| template | [Template] object | **参数解释**：模板信息。 |
   
 表8Template 
| 参数      | 参数类型                 | 描述                                                                                                                        |
|:---|:---|:---|
| name    | String               | **参数解释**：待安装插件模板名称，如log-agent。 **取值范围**：不涉及。 |
| version | String               | **参数解释**：待安装、升级插件的版本号。 **取值范围**：不涉及。         |
| inputs  | Map\<String,Object\> | **参数解释**：插件模板安装参数（各插件不同），升级插件时需要填写全量安装参数，未填写参数将使用插件模板中的默认值，当前插件安装参数可通过查询插件实例接口获取。                                         |
   
 表9PluginStatus 
| 参数        | 参数类型                                                                                                                     | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
|:---|:---|:---|
| phase     | String                                                                                                                   | **参数解释**： 插件实例的状态。 **取值范围**：可选值如下： - Pending：安装中，表示插件正在安装中。   - Running：运行中，表示插件全部实例状态都在运行中，插件正常使用。   - Updating：升级中，表示插件正在更新中。   - Abnormal：不可用，表示插件状态异常，插件不可使用。可单击状态查看失败原因。   - Deleting：删除中，表示插件正在删除中。    |
| version   | String                                                                                                                   | **参数解释**： 插件实例的版本。 **取值范围**： 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| reason    | String                                                                                                                   | **参数解释**： 插件实例安装失败的详细信息。 **取值范围**： 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| values    | String                                                                                                                   | **参数解释**： 插件实例的安装参数（各插件不同）。 **取值范围**： 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| resources | Array of [PluginResources] objects | **参数解释**： 插件实例占用的资源量。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
   
 表10PluginResources 
| 参数       | 参数类型                 | 描述                                                                                                              |
|:---|:---|:---|
| replicas | Integer              | **参数解释**： 资源对象的副本数。 **取值范围**： 不涉及。 |
| limits   | Map\<String,String\> | **参数解释**： 申请的资源限制。                                                                                              |
| requests | Map\<String,String\> | **参数解释**： 申请的资源需求。                                                                                              |
   
表11ObjectReference 
| 参数              | 参数类型   | 描述                                                                                                                                          |
|:---|:---|:---|
| kind            | String | **参数解释**： 资源对象的API类型，例如，DaemonSet、Deployment 等。 **取值范围**： 不涉及。 |
| apiVersion      | String | **参数解释**： 资源对象的API版本。 **取值范围**： 不涉及。                           |
| namespace       | String | **参数解释**： 资源对象的命名空间。 **取值范围**： 不涉及。                            |
| name            | String | **参数解释**： 资源对象的名称。 **取值范围**： 不涉及。                              |
| uid             | String | **参数解释**： 资源对象的唯一标识符（UID）。 **取值范围**： 不涉及。                      |
| resourceVersion | String | **参数解释**： 资源对象的当前版本。 **取值范围**： 不涉及。                            |
   
**状态码：400**
表12响应Body参数 
| 参数         | 参数类型   | 描述                                                                                                                |
|:---|:---|:---|
| error_code | String | **参数解释**：ModelArts错误码。 **取值范围**：不涉及。 |
| error_msg  | String | **参数解释**：具体错误信息。 **取值范围**：不涉及。       |
   
#### 请求示例
创建插件实例。
```
POST https://{endpoint}/v2/{project_id}/pools/{pool_name}/plugins
{
  "apiVersion" : "v2",
  "kind" : "Plugin",
  "spec" : {
    "template" : {
      "version" : "1.6.36",
      "name" : "node-local-dns"
    }
  }
}
```
#### 响应示例
**状态码：200**
OK。
```
{
  "apiVersion" : "v2",
  "kind" : "Plugin",
  "spec" : {
    "template" : {
      "name" : "node-local-dns",
      "version" : "1.6.36",
      "inputs" : {
        "flavor" : {
          "description" : "High available",
          "name" : "HA",
          "resources" : [ {
            "name" : "node-local-dns-admission-controller",
            "limitsCpu" : "250m",
            "requestsCpu" : "250m",
            "replicas" : 2,
            "limitsMem" : "512Mi",
            "requestsMem" : "512Mi"
          }, {
            "name" : "node-local-dns-cache",
            "limitsCpu" : "500m",
            "requestsCpu" : "25m",
            "limitsMem" : "512Mi",
            "requestsMem" : "5Mi"
          } ],
          "size" : "large"
        },
        "custom" : {
          "enable_dnsconfig_admission" : true,
          "nameserver" : "135.0.0.1",
          "ndots" : "8",
          "search" : "1321"
        }
      }
    }
  }
}
```
**状态码：400**
Bad request
```
{
  "error_code" : "ModelArts.50004000",
  "error_msg" : "Bad request."
}
```
#### 状态码
| 状态码 | 描述          |
|:---|:---|
| 200 | OK。         |
| 400 | Bad request |
   
#### 错误码
请参见[错误码](https://support.huaweicloud.com/api-modelarts/modelarts_03_0095.html)。
