
# 操作组件 - ExecuteAction
#### 功能介绍
对组件执行指定操作，如部署、升级、重启、停止、启动、伸缩、配置、回滚。
#### 调试
您可以在[API Explorer](https://console.huaweicloud.com/apiexplorer/#/openapi/CAE/doc?api=ExecuteAction)中调试该接口，支持自动认证鉴权。API Explorer可以自动生成SDK代码示例，并提供SDK代码示例调试功能。
#### 授权信息
账号具备所有API的调用权限，如果使用账号下的IAM用户调用当前API，该IAM用户需具备调用API所需的权限。
- 如果使用角色与策略授权，具体权限要求请参见[权限和授权项](https://support.huaweicloud.com/api-cae/cae_06_0016.html)。
- 如果使用身份策略授权，当前API调用无需身份策略权限。
#### URI
POST /v1/{project_id}/cae/applications/{application_id}/components/{component_id}/action
表1路径参数 
| 参数             | 是否必选 | 参数类型   | 描述                                                                                |
|:---|:---|:---|:---|
| project_id     | 是    | String | 项目ID，获取项目ID请参见[获取项目ID](https://support.huaweicloud.com/api-cae/cae_06_0021.html)。 |
| application_id | 是    | String | 应用ID。                                                                             |
| component_id   | 是    | String | 组件ID。                                                                             |
#### 请求参数
表2请求Header参数 
| 参数                      | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                             |
|:---|:---|:---|:---|
| X-Auth-Token            | 是    | String | 用户Token。 - 获取Token，请参考《[统一身份认证服务API参考](https://support.huaweicloud.com/api-iam/iam_30_0001.html)》的"获取用户Token"章节。 - 请求响应成功后在响应消息头中包含的"X-Subject-Token"的值即为Token值。                                                               |
| X-Enterprise-Project-ID | 否    | String | 企业项目ID。 - 创建环境时，环境会绑定企业项目ID。 - 最大长度36字节，带"-"连字符的UUID格式，或者是字符串"0"。 - 该字段不传（或传为字符串"0"）时，则查询默认企业项目下的资源。 说明： 关于企业项目ID的获取及企业项目特性的详细信息，请参见《[企业管理服务用户指南](https://support.huaweicloud.com/usermanual-em/zh-cn_topic_0126101490.html)》。 |
| X-Environment-ID        | 是    | String | 环境ID。 - 获取环境ID，通过[获取环境列表](https://support.huaweicloud.com/api-cae/ListEnvironments.html)来获取环境信息。 - 请求响应成功后在响应体的items数组中的一个元素即为一个环境的信息，其中id字段即是环境ID。                                                                            |
   
表3请求Body参数 
| 参数          | 是否必选 | 参数类型                                                                          | 描述                        |
|:---|:---|:---|:---|
| api_version | 是    | String                                                                        | API版本，固定值"v1"，该值不可修改。     |
| kind        | 是    | String                                                                        | API类型，固定值"Action"，该值不可修改。 |
| metadata    | 否    | [metadata] object                           | 请求数据。                     |
| spec        | 否    | [ActionOnComponentSpec] object |                           |
   
 表4metadata 
| 参数          | 是否必选 | 参数类型                 | 描述        |
|:---|:---|:---|:---|
| annotations | 否    | Map\<String,String\> | 资源信息。     |
| name        | 是    | String               | action名称。 |
   
 表5ActionOnComponentSpec 
| 参数              | 是否必选 | 参数类型                                                                              | 描述      |
|:---|:---|:---|:---|
| snapshot_index  | 否    | Integer                                                                           | 快照序号。   |
| replica         | 否    | Integer                                                                           | 实例个数。   |
| source          | 否    | [ActionOnComponentSource] object | 源数据     |
| startup_timeout | 否    | Integer                                                                           | 启动超时时间。 |
| runtime         | 否    | String                                                                            | 运行时。    |
| resource_limit  | 否    | [ResourceLimitForUpgrade] object | 实例规格。   |
| build           | 否    | [ActionOnComponentBuild] object   | 构建数据。   |
   
 表6ActionOnComponentSource 
| 参数       | 是否必选 | 参数类型                                        | 描述                                                                                                                                                         |
|:---|:---|:---|:---|
| code     | 否    | [Repo] object | 源码仓库信息。                                                                                                                                                    |
| type     | 否    | String                                      | **参数解释：** 源类型。 **取值范围：** - image：镜像 - code：源码 - softwarePackage：软件包 **默认取值：** 不涉及。                                                                         |
| sub_type | 否    | String                                      | 源子类型。 - 源类型为code时，子类型表示不同的代码仓库，如DevCloud（CodeArts）、GitLab、GitHub、Gitee、Bitbucket。 - 源类型为softwarePackage时，子类型表示不同的软件包仓库，如BinObs、BinDevCloud（CodeArts软件发布库）。 |
| url      | 否    | String                                      | url地址。 - 源类型为image时，url地址为镜像地址。 - 源类型为code时，url地址为git地址。 - 源类型为softwarePackage时，url地址为软件包地址。                                                               |
   
 表7Repo 
| 参数        | 是否必选 | 参数类型   | 描述                     |
|:---|:---|:---|:---|
| auth_name | 否    | String | 授权名称。                  |
| branch    | 否    | String | 分支。                    |
| namespace | 否    | String | 命名空间，需填写命名空间的Base64编码。 |
   
 表8ResourceLimitForUpgrade 
| 参数           | 是否必选 | 参数类型   | 描述     |
|:---|:---|:---|:---|
| cpu_limit    | 否    | String | cpu限额。 |
| memory_limit | 否    | String | 内存限额。  |
   
 表9ActionOnComponentBuild 
| 参数         | 是否必选 | 参数类型                                              | 描述                                                                                                                                                                            |
|:---|:---|:---|:---|
| archive    | 否    | [Archive] object | 构建产物纳管。                                                                                                                                                                       |
| parameters | 否    | Map\<String,String\>                              | 构建附加参数。 - base_image：基础镜像地址。 - build_cmd：自定义构建命令。 - dockerfile_path：自定义dockerfile文件路径 - dockerfile_content：自定义dockerfile内容 - artifact_name: 针对java多模块构建，指定构建后运行的产物，以".jar"结尾。 |
   
 表10Archive 
| 参数                 | 是否必选 | 参数类型   | 描述         |
|:---|:---|:---|:---|
| artifact_namespace | 否    | String | 产物纳管SWR组织。 |
   
#### 响应参数
**状态码：200**
表11响应Body参数 
| 参数     | 参数类型   | 描述    |
|:---|:---|:---|
| job_id | String | 任务ID。 |
   
#### 请求示例
- 对组件执行指定操作，如部署、重启、停止、启动、生效配置。
  ```
  POST https://{endpoint}/v1/{project_id}/cae/applications/{application_id}/components/{component_id}/action
  {
    "api_version" : "v1",
    "kind" : "Action",
    "metadata" : {
      "name" : "deploy/restart/stop/start/configure",
      "annotations" : {
        "version" : "1.0.0"
      }
    }
  }
  ```
- 对组件执行升级操作，升级后版本号为"1.0.1"。
  ```
  POST https://{endpoint}/v1/{project_id}/cae/applications/{application_id}/components/{component_id}/action
  {
    "api_version" : "v1",
    "kind" : "Action",
    "metadata" : {
      "name" : "upgrade",
      "annotations" : {
        "version" : "1.0.1"
      }
    },
    "spec" : {
      "source" : {
        "type" : "image",
        "url" : "nginx:stable-alpine-perl"
      }
    }
  }
  ```
- 对组件执行伸缩操作，将实例数扩容到2。
  ```
  POST https://{endpoint}/v1/{project_id}/cae/applications/{application_id}/components/{component_id}/action
  {
    "api_version" : "v1",
    "kind" : "Action",
    "metadata" : {
      "name" : "scale",
      "annotations" : {
        "version" : "1.0.0"
      }
    },
    "spec" : {
      "replica" : 2
    }
  }
  ```
- 对组件执行回滚操作。
  ```
  POST https://{endpoint}/v1/{project_id}/cae/applications/{application_id}/components/{component_id}/action
  {
    "api_version" : "v1",
    "kind" : "Action",
    "metadata" : {
      "name" : "rollback",
      "annotations" : {
        "version" : "1.0.0"
      }
    },
    "spec" : {
      "snapshot_index" : 1
    }
  }
  ```
#### 响应示例
**状态码：200**
请求成功。
```
{
  "job_id" : "xxx"
}
```
#### 状态码
| 状态码 | 描述    |
|:---|:---|
| 200 | 请求成功。 |
   
#### 错误码
请参见[错误码](https://support.huaweicloud.com/api-cae/ErrorCode.html)。
