
# 集群升级前检查 - CreateAutopilotPreCheck
#### 功能介绍
集群升级前检查
#### 调用方法
请参见[如何调用API](https://support.huaweicloud.com/api-cce-autopilot/cce_02_0099.html)。
#### 授权信息
账号具备所有API的调用权限，如果使用账号下的IAM用户调用当前API，该IAM用户需具备调用API所需的权限。
- 如果使用角色与策略授权，具体权限要求请参见[权限和授权项](https://support.huaweicloud.com/api-cce-autopilot/cce_02_0327.html)。
- 如果使用身份策略授权，需具备如下身份策略权限。
  
  | 授权项                 | 访问级别  | 资源类型（\*为必须） | 条件键                                                                                                                                                                                                                                                                                                                                                                                                  | 别名 | 依赖的授权项 |
  |:---|:---|:---|:---|:---|:---|
  | cce:cluster:upgrade | Write | cluster \*  | - g:EnterpriseProjectId   - g:ResourceTag/\<tag-key\>    | -  | -      |
     
  
 
#### URI
POST /autopilot/v3/projects/{project_id}/clusters/{cluster_id}/operation/precheck
表1路径参数 
| 参数         | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
|:---|:---|:---|:---|
| project_id | 是    | String | **参数解释：** 项目ID，获取方式请参见[如何获取接口URI中参数](https://support.huaweicloud.com/api-cce-autopilot/cce_02_0271.html)。 **约束限制：** 不涉及 **取值范围：** 账号的项目ID **默认取值：** 不涉及 |
| cluster_id | 是    | String | **参数解释：** 集群ID，获取方式请参见[如何获取接口URI中参数](https://support.huaweicloud.com/api-cce-autopilot/cce_02_0271.html)。 **约束限制：** 不涉及 **取值范围：** 集群ID **默认取值：** 不涉及     |
   
#### 请求参数
表2请求Body参数 
| 参数         | 是否必选 | 参数类型                                                                  | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
|:---|:---|:---|:---|
| apiVersion | 是    | String                                                                | **参数解释：** API版本 **约束限制：** 固定值 **取值范围：** - v3    |
| kind       | 是    | String                                                                | **参数解释：** API类型 **约束限制：** 固定值 **取值范围：** - PreCheckTask     |
| spec       | 是    | [PrecheckSpec] object | **参数解释：** spec是集合类的元素类型，您对需要升级前检查的配置信息的主体部分都在spec中给出。CCE通过spec的描述来执行检查。 **约束限制：** 不涉及                                                                                                                                                                                                                                                        |
   
 表3PrecheckSpec 
| 参数                   | 是否必选 | 参数类型                                                                                            | 描述                                                                                                                                                                                                                                                                                              |
|:---|:---|:---|:---|
| clusterID            | 是    | String                                                                                          | **参数解释：** 集群ID **约束限制：** 不涉及 **取值范围：** 不涉及                                          |
| clusterVersion       | 是    | String                                                                                          | **参数解释：** 集群版本，请填写当前集群的补丁版本，可登录控制台在总览页面进行查看 **约束限制：** 不涉及 **取值范围：** 不涉及        |
| targetVersion        | 是    | String                                                                                          | **参数解释：** 升级目标版本，如果填写大版本，则自动选择最新补丁版本 **约束限制：** 不涉及 **取值范围：** 高于集群当前版本的可用集群版本 |
| skippedCheckItemList | 否    | Array of [skippedCheckItemList] objects | **参数解释：** 跳过检查的项目列表 **约束限制：** 不涉及 **取值范围：** 不涉及                                |
   
 表4skippedCheckItemList 
| 参数               | 是否必选 | 参数类型                                                                          | 描述                                                                                                                                                                                                                                                                                 |
|:---|:---|:---|:---|
| name             | 否    | String                                                                        | **参数解释：** 跳过检查的项目名称 **约束限制：** 不涉及 **取值范围：** 不涉及                 |
| resourceSelector | 否    | [resourceSelector] object | **参数解释：** 资源标签选择器 **约束限制：** 仅节点检查涉及该参数，集群检查和插件检查不涉及 **取值范围：** 不涉及 |
   
 表5resourceSelector 
| 参数       | 是否必选 | 参数类型             | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
|:---|:---|:---|:---|
| key      | 是    | String           | **参数解释：** 标签键值 **约束限制：** 不涉及 **取值范围：** - node.uid：节点UID    |
| values   | 否    | Array of strings | **参数解释：** 标签值列表 **约束限制：** 不涉及 **取值范围：** 不涉及                                                                                                                                                                                                          |
| operator | 是    | String           | **参数解释：** 标签逻辑运算符 **约束限制：** 不涉及 **取值范围：** - In             |
   
#### 响应参数
**状态码：200**
表6响应Body参数 
| 参数         | 参数类型                                                                                                       | 描述                                                            |
|:---|:---|:---|
| apiVersion | String                                                                                                     | API版本                                                         |
| kind       | String                                                                                                     | 资源类型                                                          |
| metadata   | [PrecheckCluserResponseMetadata] object | 升级前检查元数据                                                      |
| spec       | [PrecheckCluserResponseSpec] object         | spec是集合类的元素类型，您对需要升级前检查的配置信息的主体部分都在spec中给出。CCE通过spec的描述来执行检查。 |
| status     | [PrecheckStatus] object                                 | 集群升级前检查状态                                                     |
   
 表7PrecheckCluserResponseMetadata 
| 参数  | 参数类型   | 描述     |
|:---|:---|:---|
| uid | String | 检查任务ID |
   
 表8PrecheckCluserResponseSpec 
| 参数                   | 参数类型                                                                                                             | 描述        |
|:---|:---|:---|
| clusterID            | String                                                                                                           | 集群ID      |
| clusterVersion       | String                                                                                                           | 当前集群版本    |
| targetVersion        | String                                                                                                           | 升级目标版本    |
| skippedCheckItemList | Array of [skippedCheckItemListResponse] objects | 跳过检查的项目列表 |
   
 表9skippedCheckItemListResponse 
| 参数               | 参数类型                                                                                           | 描述                              |
|:---|:---|:---|
| name             | String                                                                                         | 跳过检查的项目名称                       |
| resourceSelector | [resourceSelectorResponse] object | 资源标签选择器，仅节点检查涉及该参数，集群检查和插件检查不涉及 |
   
 表10resourceSelectorResponse 
| 参数       | 参数类型             | 描述    |
|:---|:---|:---|
| key      | String           | 标签键值  |
| values   | Array of strings | 标签值列表 |
| operator | String           | 标签值   |
   
 表11PrecheckStatus 
| 参数                 | 参数类型                                                                               | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
|:---|:---|:---|
| phase              | String                                                                             | 状态，取值如下 - Init: 初始化   - Running 运行中   - Success 成功   - Failed 失败   - Error 错误    |
| expireTimeStamp    | String                                                                             | 检查结果过期时间                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| message            | String                                                                             | 信息，一般是执行错误的日志信息                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| clusterCheckStatus | [clusterCheckStatus] object | 集群限制检查状态                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| addonCheckStatus   | [addonCheckStatus] object     | 插件检查状态                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| nodeCheckStatus    | [nodeCheckStatus] object       | 节点检查状态                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
   
 表12clusterCheckStatus 
| 参数          | 参数类型                                                                                         | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
|:---|:---|:---|
| phase       | String                                                                                       | 状态，取值如下 - Init: 初始化   - Running 运行中   - Success 成功   - Failed 失败    |
| itemsStatus | Array of [PreCheckItemStatus] objects | 检查项状态集合                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
   
 表13addonCheckStatus 
| 参数          | 参数类型                                                                                         | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
|:---|:---|:---|
| phase       | String                                                                                       | 状态，取值如下 - Init: 初始化   - Running 运行中   - Success 成功   - Failed 失败    |
| itemsStatus | Array of [PreCheckItemStatus] objects | 检查项状态集合                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
   
 表14nodeCheckStatus 
| 参数              | 参数类型                                                                                   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
|:---|:---|:---|
| phase           | String                                                                                 | 状态，取值如下 - Init: 初始化   - Running 运行中   - Success 成功   - Failed 失败    |
| nodeStageStatus | Array of [NodeStageStatus] objects | 节点检查状态                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
   
 表15NodeStageStatus 
| 参数          | 参数类型                                                                                         | 描述      |
|:---|:---|:---|
| nodeInfo    | [NodeInfo] object                               | 节点信息    |
| itemsStatus | Array of [PreCheckItemStatus] objects | 检查项状态集合 |
   
 表16NodeInfo 
| 参数       | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
|:---|:---|:---|
| uid      | String | 节点UID                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| name     | String | 节点名称                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| status   | String | **参数解释**： 节点状态 **取值范围**： - Build：创建中，表示节点正处于创建过程中。   - Installing：安装中，表示节点正处于纳管过程中。   - Upgrading：升级中，表示节点正处于升级过程中。   - Active：运行中，表示节点处于正常状态。   - Abnormal：不可用，表示节点处于异常状态。   - Deleting： 删除中，表示节点正处于删除过程中。   - Error：错误，表示节点处于故障状态。    **默认取值**： 不涉及 |
| nodeType | String | **参数解释**： 节点类型 **取值范围**： - master：控制面节点   - node：数据面节点    **默认取值**： 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
   
 表17PreCheckItemStatus 
| 参数         | 参数类型                                                               | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
|:---|:---|:---|
| name       | String                                                             | 检查项名称                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| kind       | String                                                             | 检查项类型，取值如下 - Exception: 异常类，需要用户解决   - Risk：风险类，用户确认后可选择跳过                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| group      | String                                                             | 检查项分组，取值如下 - LimitCheck: 集群限制检查   - MasterCheck：控制节点检查   - NodeCheck：用户节点检查   - AddonCheck：插件检查   - ExecuteException：检查流程错误    |
| level      | String                                                             | 检查项风险级别，取值如下 - Info: 提示级别   - Warning：风险级别   - Fatal：严重级别                                                                                                                                                                                                                                                                                                                                                                           |
| phase      | String                                                             | 状态，取值如下 - Init: 初始化   - Running 运行中   - Success 成功   - Failed 失败                                                                                                                                                                                                                    |
| message    | String                                                             | 提示信息                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| riskSource | [riskSource] object | 风险项                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| errorCodes | Array of strings                                                   | 错误码集合                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
   
 表18riskSource 
| 参数                 | 参数类型                                                                                         | 描述      |
|:---|:---|:---|
| configurationRisks | Array of [configurationRisks] objects | 配置风险项   |
| deprecatedAPIRisks | Array of [deprecatedAPIRisks] objects | 废弃API风险 |
| nodeRisks          | Array of [nodeRisks] objects                   | 节点风险    |
| addonRisks         | Array of [addonRisks] objects                 | 插件风险    |
   
 表19configurationRisks 
| 参数            | 参数类型   | 描述     |
|:---|:---|:---|
| package       | String | 组件名称   |
| sourceFile    | String | 涉及文件路径 |
| nodeMsg       | String | 节点信息   |
| field         | String | 参数值    |
| operation     | String | 修改操作类型 |
| originalValue | String | 原始值    |
| value         | String | 当前值    |
   
 表20deprecatedAPIRisks 
| 参数        | 参数类型   | 描述                                             |
|:---|:---|:---|
| url       | String | 请求路径，如/apis/policy/v1beta1/podsecuritypolicies |
| userAgent | String | 客户端信息                                          |
   
 表21nodeRisks 
| 参数     | 参数类型   | 描述     |
|:---|:---|:---|
| NodeID | String | 用户节点ID |
   
 表22addonRisks 
| 参数                | 参数类型   | 描述     |
|:---|:---|:---|
| addonTemplateName | String | 插件模板名称 |
| alias             | String | 插件别名   |
   
#### 请求示例
集群升级前检查请求体
```
POST /autopilot/v3/projects/{project_id}/clusters/{cluster_id}/operation/precheck
{
  "kind" : "PreCheckTask",
  "apiVersion" : "v3",
  "spec" : {
    "clusterID" : "8978deaa-1743-11ee-8e46-0255ac10004c",
    "clusterVersion" : "v1.15.11-r1",
    "targetVersion" : "v1.19.16-r80",
    "skippedCheckItemList" : [ ]
  }
}
```
#### 响应示例
**状态码：200**
执行集群升级前检查成功。
```
{
  "kind" : "PreCheckTask",
  "apiVersion" : "v3",
  "metadata" : {
    "uid" : "9991b45e-a2be-4b49-aca4-50a25fa6f81e"
  },
  "spec" : {
    "clusterID" : "8978deaa-1743-11ee-8e46-0255ac10004c",
    "clusterVersion" : "v1.15.11-r1",
    "targetVersion" : "v1.19.16-r80"
  },
  "status" : {
    "phase" : "Init",
    "clusterCheckStatus" : {
      "phase" : "Init"
    },
    "addonCheckStatus" : {
      "phase" : "Init"
    },
    "nodeCheckStatus" : {
      "phase" : "Init"
    }
  }
}
```
#### SDK代码示例
SDK代码示例如下。
- [Java]
  集群升级前检查请求体
  ```
  package com.huaweicloud.sdk.test;
  import com.huaweicloud.sdk.core.auth.ICredential;
  import com.huaweicloud.sdk.core.auth.BasicCredentials;
  import com.huaweicloud.sdk.core.exception.ConnectionException;
  import com.huaweicloud.sdk.core.exception.RequestTimeoutException;
  import com.huaweicloud.sdk.core.exception.ServiceResponseException;
  import com.huaweicloud.sdk.cce.v3.region.CceRegion;
  import com.huaweicloud.sdk.cce.v3.*;
  import com.huaweicloud.sdk.cce.v3.model.*;
  import java.util.List;
  import java.util.ArrayList;
  public class CreateAutopilotPreCheckSolution {
      public static void main(String[] args) {
          // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
          // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
          String ak = System.getenv("CLOUD_SDK_AK");
          String sk = System.getenv("CLOUD_SDK_SK");
          String projectId = "{project_id}";
          ICredential auth = new BasicCredentials()
                  .withProjectId(projectId)
                  .withAk(ak)
                  .withSk(sk);
          CceClient client = CceClient.newBuilder()
                  .withCredential(auth)
                  .withRegion(CceRegion.valueOf("<YOUR REGION>"))
                  .build();
          CreateAutopilotPreCheckRequest request = new CreateAutopilotPreCheckRequest();
          request.withClusterId("{cluster_id}");
          PrecheckClusterRequestBody body = new PrecheckClusterRequestBody();
          PrecheckSpec specbody = new PrecheckSpec();
          specbody.withClusterID("8978deaa-1743-11ee-8e46-0255ac10004c")
              .withClusterVersion("v1.15.11-r1")
              .withTargetVersion("v1.19.16-r80");
          body.withSpec(specbody);
          body.withKind("PreCheckTask");
          body.withApiVersion("v3");
          request.withBody(body);
          try {
              CreateAutopilotPreCheckResponse response = client.createAutopilotPreCheck(request);
              System.out.println(response.toString());
          } catch (ConnectionException e) {
              e.printStackTrace();
          } catch (RequestTimeoutException e) {
              e.printStackTrace();
          } catch (ServiceResponseException e) {
              e.printStackTrace();
              System.out.println(e.getHttpStatusCode());
              System.out.println(e.getRequestId());
              System.out.println(e.getErrorCode());
              System.out.println(e.getErrorMsg());
          }
      }
  }
  ```
- [Python]
  集群升级前检查请求体
  ```
  # coding: utf-8
  import os
  from huaweicloudsdkcore.auth.credentials import BasicCredentials
  from huaweicloudsdkcce.v3.region.cce_region import CceRegion
  from huaweicloudsdkcore.exceptions import exceptions
  from huaweicloudsdkcce.v3 import *
  if __name__ == "__main__":
      # The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
      # In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
      ak = os.environ["CLOUD_SDK_AK"]
      sk = os.environ["CLOUD_SDK_SK"]
      projectId = "{project_id}"
      credentials = BasicCredentials(ak, sk, projectId)
      client = CceClient.new_builder() \
          .with_credentials(credentials) \
          .with_region(CceRegion.value_of("<YOUR REGION>")) \
          .build()
      try:
          request = CreateAutopilotPreCheckRequest()
          request.cluster_id = "{cluster_id}"
          specbody = PrecheckSpec(
              cluster_id="8978deaa-1743-11ee-8e46-0255ac10004c",
              cluster_version="v1.15.11-r1",
              target_version="v1.19.16-r80"
          )
          request.body = PrecheckClusterRequestBody(
              spec=specbody,
              kind="PreCheckTask",
              api_version="v3"
          )
          response = client.create_autopilot_pre_check(request)
          print(response)
      except exceptions.ClientRequestException as e:
          print(e.status_code)
          print(e.request_id)
          print(e.error_code)
          print(e.error_msg)
  ```
- [Go]
  集群升级前检查请求体
  ```
  package main
  import (
  "fmt"
  "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic"
      cce "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/cce/v3"
  "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/cce/v3/model"
      region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/cce/v3/region"
  )
  func main() {
      // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
      // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
      ak := os.Getenv("CLOUD_SDK_AK")
      sk := os.Getenv("CLOUD_SDK_SK")
      projectId := "{project_id}"
      auth := basic.NewCredentialsBuilder().
          WithAk(ak).
          WithSk(sk).
          WithProjectId(projectId).
          Build()
      client := cce.NewCceClient(
          cce.CceClientBuilder().
              WithRegion(region.ValueOf("<YOUR REGION>")).
              WithCredential(auth).
              Build())
      request := &model.CreateAutopilotPreCheckRequest{}
  request.ClusterId = "{cluster_id}"
  clusterIDSpec:= "8978deaa-1743-11ee-8e46-0255ac10004c"
  clusterVersionSpec:= "v1.15.11-r1"
  targetVersionSpec:= "v1.19.16-r80"
  specbody := &model.PrecheckSpec{
  ClusterID: &clusterIDSpec,
  ClusterVersion: &clusterVersionSpec,
  TargetVersion: &targetVersionSpec,
  }
  request.Body = &model.PrecheckClusterRequestBody{
  Spec: specbody,
  Kind: "PreCheckTask",
  ApiVersion: "v3",
  }
  response, err := client.CreateAutopilotPreCheck(request)
  if err == nil {
          fmt.Printf("%+v\n", response)
      } else {
          fmt.Println(err)
      }
  }
  ```
- [更多]
  更多编程语言的SDK代码示例，请参见[API Explorer](https://console.huaweicloud.com/apiexplorer/#/openapi/CCE/sdk?api=CreateAutopilotPreCheck)的代码示例页签，可生成自动对应的SDK代码示例。
#### 状态码
| 状态码 | 描述           |
|:---|:---|
| 200 | 执行集群升级前检查成功。 |
   
#### 错误码
请参见[错误码](https://support.huaweicloud.com/api-cce-autopilot/ErrorCode.html)。
