
# 获取执行计划
#### 功能介绍
获取执行计划（GetExecutionPlan）
此API用于获取指定执行计划的详细内容（即执行计划项目），用户可通过此API得知指定执行计划在执行后，资源栈中的资源会发生何种变化
如果执行计划状态为*CREATION_IN_PROGRESS* 或*CREATION_FAILED*，则不返回执行计划项目列表
#### 调试
您可以在[API Explorer](https://console.huaweicloud.com/apiexplorer/#/openapi/AOS/doc?api=GetExecutionPlan)中调试该接口，支持自动认证鉴权。API Explorer可以自动生成SDK代码示例，并提供SDK代码示例调试功能。
#### URI
GET /v1/{project_id}/stacks/{stack_name}/execution-plans/{execution_plan_name}
表1路径参数 
| 参数                  | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                     |
|:---|:---|:---|:---|
| project_id          | 是    | String | 项目ID，可以从调用API处获取，也可以从控制台获取。 [项目ID获取方式](https://support.huaweicloud.com/api-ticket/ticket_api_20002.html) 最小长度：**3** 最大长度：**64** |
| stack_name          | 是    | String | 资源栈的名称。此名字在domain_id+区域+project_id下应唯一，可以使用中文、大小写英文、数字、下划线、中划线。首字符需为中文或者英文，区分大小写。 最小长度：**1** 最大长度：**128**                                                                                                    |
| execution_plan_name | 是    | String | 执行计划的名称。此名字在domain_id+区域+project_id+stack_id下应唯一，可以使用中文、大小写英文、数字、下划线、中划线。首字符需为中文或者英文，区分大小写。 最小长度：**1** 最大长度：**128**                                                                                          |
   
表2Query参数 
| 参数                | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
|:---|:---|:---|:---|
| stack_id          | 否    | String | 资源栈（stack）的唯一ID。 此ID由资源编排服务在生成资源栈的时候生成，为UUID。 由于资源栈名仅仅在同一时间下唯一，即用户允许先生成一个叫HelloWorld的资源栈，删除，再重新创建一个同名资源栈。 对于团队并行开发，用户可能希望确保，当前我操作的资源栈就是我认为的那个，而不是其他队友删除后创建的同名资源栈。因此，使用ID就可以做到强匹配。 资源编排服务保证每次创建的资源栈所对应的ID都不相同，更新不会影响ID。如果给予的stack_id和当前资源栈的ID不一致，则返回400 最小长度：**36** 最大长度：**36**                            |
| execution_plan_id | 否    | String | 执行计划（execution_plan）的唯一ID。 此ID由资源编排服务在生成执行计划的时候生成，为UUID。 由于执行计划名仅仅在同一时间下唯一，即用户允许先生成一个叫HelloWorld的执行计划，删除，再重新创建一个同名执行计划。 对于团队并行开发，用户可能希望确保，当前我操作的执行计划就是我认为的那个，而不是其他队友删除后创建的同名执行计划。因此，使用ID就可以做到强匹配。 资源编排服务保证每次创建的执行计划所对应的ID都不相同，更新不会影响ID。如果给予的execution_plan_id和当前执行计划的ID不一致，则返回400 最小长度：**36** 最大长度：**36** |
   
#### 请求参数
表3请求Header参数 
| 参数                | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                    |
|:---|:---|:---|:---|
| Client-Request-Id | 是    | String | 用户指定的，对于此请求的唯一ID，用于定位某个请求，推荐使用UUID 最小长度：**36** 最大长度：**128** |
   
#### 响应参数
**状态码：200**
表4响应Body参数 
| 参数                   | 参数类型                                                                                                                         | 描述        |
|:---|:---|:---|
| execution_plan_items | Array of [ExecutionPlanItem] objects | 执行计划项目的列表 |
   
 表5ExecutionPlanItem 
| 参数            | 参数类型                                                                                                                                           | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
|:---|:---|:---|
| resource_type | String                                                                                                                                         | 资源的类型 以HCL格式的模板为例，resource_type 为 huaweicloud_vpc ``` resource "huaweicloud_vpc" "my_hello_world_vpc" { name = "test_vpc" } ``` 以json格式的模板为例，resource_type 为 huaweicloud_vpc ``` { "resource": { "huaweicloud_vpc": { "my_hello_world_vpc": { "name": "test_vpc" } } } } ```                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| resource_name | String                                                                                                                                         | 资源的名称，默认为资源的逻辑名称 以HCL格式的模板为例，resource_name 为 my_hello_world_vpc ``` resource "huaweicloud_vpc" "my_hello_world_vpc" { name = "test_vpc" } ``` 以json格式的模板为例，resource_name 为 my_hello_world_vpc ``` { "resource": { "huaweicloud_vpc": { "my_hello_world_vpc": { "name": "test_vpc" } } } } ```                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| index         | String                                                                                                                                         | 资源的索引，如果用户在模板中使用了count或for_each则会返回index。如果index出现，则resource_name + index可以作为该资源的一种标识 如果用户在模板中使用count，则index为从0开始的数字 以HCL格式的模板为例，用户在模板中可以通过*huaweicloud_vpc.my_hello_world_vpc\[0\]* 和*huaweicloud_vpc.my_hello_world_vpc\[1\]*标识两个资源 ``` resource "huaweicloud_vpc" "my_hello_world_vpc" { count = 2 name = "test_vpc" } ``` 以json格式的模板为例，用户在模板中可以通过*huaweicloud_vpc.my_hello_world_vpc\[0\]* 和*huaweicloud_vpc.my_hello_world_vpc\[1\]*标识两个资源 ``` { "resource": { "huaweicloud_vpc": { "my_hello_world_vpc": { "name": "test_vpc", "count": 2 } } } } ``` 如果用户在模板中使用for_each，则index为用户自定义的字符串 以HCL格式的模板为例，用户在模板中可以通过*huaweicloud_vpc.my_hello_world_vpc\["vpc1"\]* 和*huaweicloud_vpc.my_hello_world_vpc\["vpc2"\]*标识两个资源 ``` resource "huaweicloud_vpc" "my_hello_world_vpc" { for_each = { "vpc1" = "test_vpc" "vpc2" = "test_vpc" } name = each.value } ``` 以json格式的模板为例，用户在模板中可以通过*huaweicloud_vpc.my_hello_world_vpc\["vpc1"\]* 和*huaweicloud_vpc.my_hello_world_vpc\["vpc2"\]*标识两个资源 ``` { "resource": { "huaweicloud_vpc": { "my_hello_world_vpc": { "for_each": { "vpc1": "test_vpc", "vpc2": "test_vpc" } "name": "${each.value}" } } } } ```                                                                                                                                                                                                                                                                                                                                                                                               |
| action        | String                                                                                                                                         | 资源变更的类型 - *ADD* - 新增资源   - *ADD_THEN_DELETE* - 由不可更新的资源返回，先创建新资源，再删除旧资源   - *DELETE* - 删除资源   - *DELETE_THEN_ADD* - 由不可更新的资源返回，先删除旧资源，再创建新资源   - *UPDATE* - 更新资源   - *NO_OPERATION* - 仅变更资源的依赖关系，但是对资源本身并无修改的操作    |
| action_reason | String                                                                                                                                         | 触发该项目变更的原因，例如用户更新模板；远端删除资源等等                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| provider_name | String                                                                                                                                         | 该项目所属的provider名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| mode          | String                                                                                                                                         | 资源模式 - *DATA* - 指可以在模板解析期间运行和获取服务端数据的资源类型，不会操作基础设施组件   - *RESOURCE* - 指通过模板管理的由服务定义的基础设施组件抽象，可以是物理资源也可以是逻辑资源                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| drifted       | Boolean                                                                                                                                        | 当前资源的变更是否由偏差导致。 偏差，也叫漂移。指的是资源被资源编排服务创建以后，又经历过非资源编排服务触发的修改，如手动修改、调用SDK修改等，使得资源的配置与本服务所记录的资源的配置不一致。这种不一致便称为偏差。 当资源产生偏差以后： - 如果用户试图创建执行计划，则会提示用户产生偏差   - 如果用户直接部署，则偏差有可能被覆盖，资源编排服务只保证资源和模板最终一致。    资源的偏差有两种类型： - 资源定位属性被修改：如果是定位属性被修改，常见于删除后重建，此时资源已经不属于同一个资源。资源编排服务会认为此资源已经被删除，会尝试创建一个新的资源。   - 资源普通属性被修改：如果是普通属性被修改，则资源编排服务依然可以找到资源，但是下次部署会尝试修复偏差，即将资源保持和模板最终一致。    **注：资源编排服务团队极力推荐，如果资源是通过本服务创建的，请一直使用本服务进行维护和更新以确保资源和模板保持一致。建议非紧急事件以外的情况不要手动调整。**                        |
| imported      | Boolean                                                                                                                                        | 当前资源的变更是否是导入的。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| resource_id   | String                                                                                                                                         | 资源的物理ID，是唯一ID，由为该资源提供服务的provider、云服务或其他服务提供方在资源部署的时候生成                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| attributes    | Array of [ExecutionPlanDiffAttribute] objects | 执行计划项目中变更的属性，当无属性变更时为空列表。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
   
 表6ExecutionPlanDiffAttribute 
| 参数             | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
|:---|:---|:---|
| name           | String | 当前资源将要被修改的参数的名字。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| previous_value | String | 当前资源被修改的参数的原始值。 如果是资源创建的场景，则previous_value为空 如果远端资源产生了偏差，则同一个资源会返回两个ExecutionPlanItem，其中一个的drifted为true，另一个的drifted为false - drifted为true的previous_value为资源栈中所维持的资源属性和状态   - drifted为false的previous_value为provider请求远端资源后，远端资源所返回的资源属性和状态    如果远端资源未产生偏差，则只会返回一个drifted为false的ExecutionPlanItem - drifted为false的previous_value为资源栈中所维持的资源属性和状态    |
| target_value   | String | 当前资源被修改的参数的目的值。 如果是资源删除的场景，则target_value为空 如果远端资源产生了偏差，则同一个资源会返回两个ExecutionPlanItem，其中一个的drifted为true，另一个的drifted为false - drifted为true的target_value为provider请求远端资源后，远端资源所返回的资源属性和状态   - drifted为false的target_value为基于用户模板更新的资源属性和状态    如果远端资源未产生偏差，则只会返回一个drifted为false的ExecutionPlanItem - drifted为false的target_value为基于用户模板更新的资源属性和状态          |
   
**状态码：400**
表7响应Body参数 
| 参数                            | 参数类型                                                                                                   | 描述                                                                                                                                                                                    |
|:---|:---|:---|
| error_code                    | String                                                                                                 | 响应码 最小长度：**11** 最大长度：**11** |
| error_msg                     | String                                                                                                 | 响应消息                                                                                                                                                                                  |
| encoded_authorization_message | String                                                                                                 | 包含有关未经授权请求的信息。                                                                                                                                                                        |
| details                       | Array of [Detail] objects | 权限拒绝时服务返回的详细错误信息。                                                                                                                                                                     |
   
 表8Detail 
| 参数         | 参数类型   | 描述   |
|:---|:---|:---|
| error_code | String | 响应码  |
| error_msg  | String | 响应消息 |
   
**状态码：401**
表9响应Body参数 
| 参数                            | 参数类型                                                                                                     | 描述                                                                                                                                                                                    |
|:---|:---|:---|
| error_code                    | String                                                                                                   | 响应码 最小长度：**11** 最大长度：**11** |
| error_msg                     | String                                                                                                   | 响应消息                                                                                                                                                                                  |
| encoded_authorization_message | String                                                                                                   | 包含有关未经授权请求的信息。                                                                                                                                                                        |
| details                       | Array of [Detail] objects | 权限拒绝时服务返回的详细错误信息。                                                                                                                                                                     |
   
 表10Detail 
| 参数         | 参数类型   | 描述   |
|:---|:---|:---|
| error_code | String | 响应码  |
| error_msg  | String | 响应消息 |
   
**状态码：403**
表11响应Body参数 
| 参数                            | 参数类型                                                                                                     | 描述                                                                                                                                                                                    |
|:---|:---|:---|
| error_code                    | String                                                                                                   | 响应码 最小长度：**11** 最大长度：**11** |
| error_msg                     | String                                                                                                   | 响应消息                                                                                                                                                                                  |
| encoded_authorization_message | String                                                                                                   | 包含有关未经授权请求的信息。                                                                                                                                                                        |
| details                       | Array of [Detail] objects | 权限拒绝时服务返回的详细错误信息。                                                                                                                                                                     |
   
 表12Detail 
| 参数         | 参数类型   | 描述   |
|:---|:---|:---|
| error_code | String | 响应码  |
| error_msg  | String | 响应消息 |
   
**状态码：404**
表13响应Body参数 
| 参数                            | 参数类型                                                                                                     | 描述                                                                                                                                                                                    |
|:---|:---|:---|
| error_code                    | String                                                                                                   | 响应码 最小长度：**11** 最大长度：**11** |
| error_msg                     | String                                                                                                   | 响应消息                                                                                                                                                                                  |
| encoded_authorization_message | String                                                                                                   | 包含有关未经授权请求的信息。                                                                                                                                                                        |
| details                       | Array of [Detail] objects | 权限拒绝时服务返回的详细错误信息。                                                                                                                                                                     |
   
 表14Detail 
| 参数         | 参数类型   | 描述   |
|:---|:---|:---|
| error_code | String | 响应码  |
| error_msg  | String | 响应消息 |
   
**状态码：429**
表15响应Body参数 
| 参数                            | 参数类型                                                                                                     | 描述                                                                                                                                                                                    |
|:---|:---|:---|
| error_code                    | String                                                                                                   | 响应码 最小长度：**11** 最大长度：**11** |
| error_msg                     | String                                                                                                   | 响应消息                                                                                                                                                                                  |
| encoded_authorization_message | String                                                                                                   | 包含有关未经授权请求的信息。                                                                                                                                                                        |
| details                       | Array of [Detail] objects | 权限拒绝时服务返回的详细错误信息。                                                                                                                                                                     |
   
 表16Detail 
| 参数         | 参数类型   | 描述   |
|:---|:---|:---|
| error_code | String | 响应码  |
| error_msg  | String | 响应消息 |
   
**状态码：500**
表17响应Body参数 
| 参数                            | 参数类型                                                                                                     | 描述                                                                                                                                                                                    |
|:---|:---|:---|
| error_code                    | String                                                                                                   | 响应码 最小长度：**11** 最大长度：**11** |
| error_msg                     | String                                                                                                   | 响应消息                                                                                                                                                                                  |
| encoded_authorization_message | String                                                                                                   | 包含有关未经授权请求的信息。                                                                                                                                                                        |
| details                       | Array of [Detail] objects | 权限拒绝时服务返回的详细错误信息。                                                                                                                                                                     |
   
 表18Detail 
| 参数         | 参数类型   | 描述   |
|:---|:---|:---|
| error_code | String | 响应码  |
| error_msg  | String | 响应消息 |
   
#### 请求示例
- 获取指定执行计划的详细内容（即执行计划项目）
  ```
  GET https://{endpoint}/v1/ba2b9930c977f71edaeaa3a5e96a8ff1/stacks/my_hello_world_stack/execution-plans/my_first_execution_plan
  ```
  
- 获取指定执行计划的详细内容（即执行计划项目），并提供资源栈id和执行计划id以校验是否与当前资源栈和执行计划匹配
  ```
  GET https://{endpoint}/v1/ba2b9930c977f71edaeaa3a5e96a8ff1/stacks/my_hello_world_stack/execution-plans/my_first_execution_plan?stack_id=ea6a4f0e-ee8a-494e-b12a-8be4a1e65af2&execution_plan_id=fb5e781e-a27d-46e2-9954-242753857a9f
  ```
  
 
#### 响应示例
**状态码：200**
获取成功
```
{
  "execution_plan_items" : [ {
    "resource_type" : "huaweicloud_iec_vpc_subnet",
    "resource_name" : "subnet",
    "action" : "ADD",
    "attributes" : [ {
      "name" : "cidr",
      "target_value" : "172.16.0.0/16"
    }, {
      "name" : "dhcp_enable",
      "target_value" : "true"
    }, {
      "name" : "dns_list",
      "target_value" : "(will be generated after apply)"
    }, {
      "name" : "gateway_ip",
      "target_value" : "192.168.128.1"
    }, {
      "name" : "id",
      "target_value" : "(will be generated after apply)"
    }, {
      "name" : "name",
      "target_value" : "subnet_demo"
    }, {
      "name" : "region"
    }, {
      "name" : "site_id",
      "target_value" : "mock_site_id"
    }, {
      "name" : "site_info",
      "target_value" : "(will be generated after apply)"
    }, {
      "name" : "status",
      "target_value" : "(will be generated after apply)"
    }, {
      "name" : "timeouts"
    }, {
      "name" : "vpc_id",
      "target_value" : "mock_vpc_id"
    } ],
    "mode" : "RESOURCE",
    "provider_name" : "huawei.com/provider/huaweicloud"
  }, {
    "resource_type" : "huaweicloud_vpc",
    "resource_name" : "vpc",
    "action" : "ADD",
    "attributes" : [ {
      "name" : "cidr",
      "target_value" : "172.16.0.0/16"
    }, {
      "name" : "description"
    }, {
      "name" : "enterprise_project_id",
      "target_value" : "(will be generated after apply)"
    }, {
      "name" : "id",
      "target_value" : "(will be generated after apply)"
    }, {
      "name" : "name",
      "target_value" : "test_name"
    }, {
      "name" : "region",
      "target_value" : "(will be generated after apply)"
    }, {
      "name" : "routes",
      "target_value" : "(will be generated after apply)"
    }, {
      "name" : "secondary_cidr"
    }, {
      "name" : "status",
      "target_value" : "(will be generated after apply)"
    }, {
      "name" : "tags"
    }, {
      "name" : "timeouts"
    } ],
    "mode" : "RESOURCE",
    "provider_name" : "huawei.com/provider/huaweicloud"
  } ]
}
```
#### 状态码
| 状态码 | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
|:---|:---|
| 200 | 获取成功                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| 400 | 用户请求非法                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| 401 | 用户身份认证失败                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| 403 | 用户无权限调用此API                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| 404 | 1. 资源栈不存在   2. 执行计划不存在    |
| 429 | 请求数量过多                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| 500 | 服务器内部错误                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
   
