
# 部署environment
#### 功能介绍
部署基因测序所需的环境，开始基因测序之前，请先进行必要的资源配置。
#### URI
POST /v1/environments
#### 请求消息
**请求参数**
请求参数如[表1]所示。
 表1请求参数 
| 参数                    | 是否必选 | 参数类型                                                        | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
|:---|:---|:---|:---|
| project_id            | 否    | String                                                      | 项目ID，获取方式详见[获取项目ID](https://support.huaweicloud.com/api-gcs/gcs_api_006_003.html)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| source                | 是    | String                                                      | 部署环境的方式，支持选项： - cci：指GCS部署的底层资源使用的是华为云服务云容器实例（简称CCI）。使用该服务，您不需要关注底层资源的创建和管理，通过简单的配置即可快速创建容器负载。如果基因测序流程成熟稳定，建议您使用CCI，可以省去对资源的关注。CCI的详细信息请参见[什么是云容器实例](https://support.huaweicloud.com/productdesc-cci/cci_03_0001.html)。  - cce：指GCS部署的底层资源使用的是华为云服务云容器引擎（简称CCE）。使用该服务，您需要创建并管理自己的资源。CCE的详细信息请参见[什么是云容器引擎](https://support.huaweicloud.com/productdesc-cce/cce_productdesc_0001.html)。   |
| cluster_id            | 否    | String                                                      | 集群ID。当"source"填写的为"cce"，并且需要通过已有集群来部署环境时，此处需要填写已有集群的集群ID。否则此处不用填写。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| cluster_name          | 否    | String                                                      | 命名空间。当"source"填写的为"cci"，并且需要通过已有命名空间来部署环境时，此处需要填写已有命名空间名称。否则此处不用填写。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| bucket_name           | 否    | String                                                      | 对象存储桶名。当"source"填写的为"cce"，该字段必填，当"source"填写的为"cci"，若使用桶，必须为并行文件系统，若未使用桶可不填。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| inputs_json           | 否    | [表2] | 当"source"填写的为"cce"，并且需要通过创建新的集群来部署环境时，此上需要填写新建集群需要的入参。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| default_env           | 否    | String                                                      | 是否设置为默认环境，默认值false。支持选项： - ture：设置为默认环境  - false：不设置为默认环境                                                                                                                                                                                                                                                                                                                      |
| env_name              | 是    | String                                                      | 环境名称，输入字符最大长度为64，以小写字母开头，允许出现中划线(-)、小写字母和数字，且必须以小写字母或数字结尾。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| ak                    | 否    | String                                                      | 用户AK。当"source "为"cci"时，需要填写。获取方法请参见[访问密钥](https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| sk                    | 否    | String                                                      | 用户SK。当"source "为"cci"时，需要填写。获取方法请参见[访问密钥](https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| enterprise_project_id | 否    | String                                                      | 环境的企业项目id，默认为"0"，default企业项目，注意企业项目id要与命名空间的企业项目对应                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
   
 表2inputs_json参数 
| 参数         | 是否必选 | 类型                                                             | 描述                   |
|:---|:---|:---|:---|
| kind       | 是    | String                                                         | 资源类型，必须设置为"cluster"。 |
| apiVersion | 是    | String                                                         | API的版本，当前为固定值"v2"。   |
| metadata   | 是    | [表 3 metadata字段数据结构说明]   | -                    |
| spec       | 是    | [表 4 ClusterSpec字段数据结构说明] | -                    |
   
 表3metadata字段数据结构说明 
| 参数          | 是否必选 | 类型                  | 描述    |
|:---|:---|:---|:---|
| name        | 是    | String              | 集群名称。 |
| annotations | 否    | Map\[String\]String | 集群注解。 |
   
 表4ClusterSpec字段数据结构说明 
| 参数                   | 是否必选 | 类型                                       | 描述                                  |
|:---|:---|:---|:---|
| authentication       | 是    | Map\[String\]String                      | 认证方式。                               |
| kubeProxyMode        | 是    | String                                   | KubeProxy代理模式。                      |
| description          | 否    | String                                   | 集群描述信息。                             |
| region               | 否    | String                                   | 集群所在的地域。                            |
| az                   | 是    | String                                   | 集群所在的可用分区。                          |
| vpc                  | 是    | String                                   | 集群所在的虚拟私有云。                         |
| vpcId                | 是    | String                                   | 集群所在虚拟私有云的ID。                       |
| subnet               | 是    | String                                   | 集群所在的子网。                            |
| subnetId             | 是    | String                                   | 集群子网的ID。                            |
| version              | 否    | String                                   | 集群版本号，一般类似v1.11.7。                  |
| networkMode          | 否    | String                                   | 集群容器网络的类型，类似overlay_l3，vpc_router等。 |
| containerNetworkCIDR | 否    | String                                   | 容器网络的CIDR，一般为172.16.0.0/16。         |
| template             | 否    | [表5] | 节点模板，创建集群时若需要添加节点则填写。               |
| chargeMode           | 否    | Integer                                  | 计费模式：0为包周期计费，1为按需计费。                |
| flavor               | 否    | String                                   | 集群规格，类似cce.s1.large等。               |
   
 表5Host字段数据结构说明 
| 参数         | 是否必选 | 类型                                                           | 描述                 |
|:---|:---|:---|:---|
| kind       | 是    | String                                                       | 资源类型，必须设置为"host"。  |
| apiVersion | 是    | String                                                       | API的版本，当前为固定值"v2"。 |
| metadata   | 是    | [表 3 metadata字段数据结构说明] | -                  |
| spec       | 是    | [表6]                  | -                  |
   
 表6HostSpec字段数据结构说明 
| 参数          | 是否必选 | 类型                                         | 描述                                    |
|:---|:---|:---|:---|
| az          | 否    | String                                     | 节点所在的可用分区。如果没有指定az值，节点将创建在所属集群的可用分区内。 |
| flavor      | 是    | String                                     | 虚拟机规格。                                |
| volume      | 是    | [表7] | 虚拟机磁盘信息。                              |
| sshKey      | 是    | String                                     | 节点所使用的密钥对的名字。                         |
| num         | 是    | Integer                                    | 批量创建节点的个数。                            |
| enableEip   | 否    | Boolean                                    | 是否使用EIP。                              |
| os          | 否    | String                                     | 节点的操作系统                               |
| extendParam | 否    | Interface                                  | 扩展参数，key/value对格式                     |
   
 表7Volume字段数据结构说明 
| 参数            | 是否必选 | 类型      | 描述                                                                                                                                                                                                                                                                                                                                                                                              |
|:---|:---|:---|:---|
| diskType      | 是    | String  | 磁盘类型，区分是系统盘还是数据盘。                                                                                                                                                                                                                                                                                                                                                                               |
| diskSize      | 是    | Integer | 磁盘大小，单位为GB，不同磁盘类型对磁盘大小有不同的约束。 - root：表示系统盘，磁盘大小必须为40。  - data：表示数据盘，则磁盘大小范围是100-32768。                                                                                          |
| volumeType    | 是    | String  | 磁盘IO类型。类型枚举值如下： - SATA：普通IO，指由SATA存储介质构成的云硬盘。  - SAS：高IO，指由SAS存储介质构成的云硬盘。  - SSD：超高IO，指由SSD存储介质构成的云硬盘。   |
| deleteAble    | 是    | Boolean | 是否可被删除。                                                                                                                                                                                                                                                                                                                                                                                         |
| editIoSize    | 是    | Boolean | 是否可编辑IO大小。                                                                                                                                                                                                                                                                                                                                                                                      |
| editIoType    | 是    | Boolean | 是否可编辑IO类型。                                                                                                                                                                                                                                                                                                                                                                                      |
| editShareType | 是    | Boolean | 是否可编辑租户共享类型。                                                                                                                                                                                                                                                                                                                                                                                    |
| maxSize       | 是    | Integer | 最大规格。                                                                                                                                                                                                                                                                                                                                                                                           |
| minSize       | 是    | Integer | 最小规格。                                                                                                                                                                                                                                                                                                                                                                                           |
| product       | 是    | String  | 产品名称。                                                                                                                                                                                                                                                                                                                                                                                           |
| product_id    | 是    | String  | 产品ID。                                                                                                                                                                                                                                                                                                                                                                                           |
| shareable     | 是    | Boolean | 是否支持租户共享。                                                                                                                                                                                                                                                                                                                                                                                       |
| sysDiskIops   | 否    | String  | 系统盘IO速率。                                                                                                                                                                                                                                                                                                                                                                                        |
| volumnType    | 是    | String  | 卷类型。                                                                                                                                                                                                                                                                                                                                                                                            |
   
**请求示例**
已有集群ID为3aaa7db4-3bfa-11e9-9e24-0255ac10576a的CCE集群资源部署名为gcs-env-cce环境，使用gene-container-bucket对象存储桶。
```
POST /v1/environments
Host:Host Server   
Content-Type:application/json
{
"source":"cce",
"project_id":"c515675*********8a8a81ede51894ac",
"cluster_id":"3aaa7db4-3bfa-11e9-9e24-0255ac10576a",
"bucket_name":"gene-container-bucket",
"env_name":"gcs-env-cce",
"default_env":false，
        "enterprise_project_id":"0"
}
```
新建入参为inputs_json的cce集群资源部署名为gcs-env-cce-new环境，使用gene-container-bucket对象存储桶。
```
{
"source": "cce",
"project_id": "c515675********8a8a81ede51894ac",
"inputs_json": {
"kind": "cluster",
"apiVersion": "v2",
"metadata": {
"name": "gene-container-new-cce",
"annotations": {
"installIstioVersion": "false",
"cluster.install.addons/install": "[{\"addonTemplateName\":\"storage-driver\",\"version\":\"\"}]"
}
},
"spec": {
"networkMode": "overlay_l2",
"region": "southchina",
"description": "",
"subnet": "CCI-dc1-486477335",
"subnetId": "959903d0-383d-47d4-8565-7ffdeab4d31b",
"vpcId": "005d2390-0cbc-4f8d-a0eb-4cd22b71f79b",
"vpc": "vpc-fcb-hl",
"containerNetworkCIDR": "172.16.0.0/16",
"version": "v1.11.7",
"flavor": "cce.s2.small",
"chargeMode": 0,
"az": "az1.dc1",
"kubeProxyMode": "iptables",
"template": {
"kind": "host",
"apiVersion": "v2",
"metadata": {
"name": "gcs-env-node"
},
"spec": {
"az": "az1.dc1",
"flavor": "c3.xlarge.2",
"os": "EulerOS 2.2",
"osVersion": true,
"volume": [{
"diskType": "root",
"diskSize": 40,
"volumeType": "SATA",
"product": "",
"shareable": false,
"editIoType": true,
"editShareType": false,
"editIoSize": false,
"deleteAble": false,
"minSize": 40,
"maxSize": 1024,
"diskSizeTip": "",
"sysDiskIops": "",
"productId": "00301-34090-0--0"
},
{
"diskType": "data",
"diskSize": 100,
"volumeType": "SATA",
"minDocker": 60,
"dockerChecked": false,
"product": "",
"shareable": false,
"editIoType": true,
"editShareType": false,
"editIoSize": true,
"deleteAble": true,
"minSize": 100,
"maxSize": 32678,
"maxAllocation": 100,
"dockerPercent": 90,
"kubeletPercent": 10,
"diskSizeTip": "100-32678",
"dataDiskSelectedId": "SATA",
"dataDiskIops": "100-1,000 IOPS",
"productId": "00301-34090-0--0"
}],
"enableEip": false,
"num": 1,
"personality": [],
"extendParam": {

},
"sshkey": "KeyPair-bc37"
}
},
"authentication": {
"mode": "rbac"
}
}
},
"bucket_name": "gene-container-bucket",
"env_name": "gcs-env-cce-new",
"default_env": false
}
```
已有CCI命名空间cci-namespace部署名为gcs-env-gcsenv-cci环境，使用gene-container-bucket对象存储桶。
```
POST /v1/environments
Host:Host Server   
Content-Type:application/json
{
"source":"cci",
"project_id":"c515675********98a8a81ede51894ac",
"cluster_name":"cci-namespace",
"bucket_name":"gene-container-bucket",
"env_name":"gcs-env-gcsenv-cci",
        "ak":"ZHV********RJQVFSCJQ",
        "sk":"YVfTZqpgFOH********3XNTrAbhQmw7JhxaaadNf",
"default_env":false
}
```
#### 响应消息
**响应参数**
请求成功的响应参数如[表8]所示。
 表8成功响应参数 
| 参数 | 参数类型   | 描述         |
|:---|:---|:---|
| id | String | 部署成功的环境ID。 |
   
**响应示例**
```
{
    "id": "e19d3faf-9f04-9685-e5c0-fbe8d40b96cd"
}
```
请求失败的响应参数如[表9]所示。
 表9失败响应参数 
| 参数         | 参数类型   | 描述                                                                                      |
|:---|:---|:---|
| error_msg  | String | 请求失败的详细原因。                                                                              |
| error_code | String | 请求失败的错误码，错误码详细描述请参见[错误码](https://support.huaweicloud.com/api-gcs/gcs_api_006_002.html)。 |
| extend     | String | 请求失败的扩展原因。                                                                              |
   
**失败响应示例**
```
{
  "error_msg": "Server internal error, please contact the administrator.",
  "error_code": "GENE.5008012",
  "extend": ""
}
```
#### 状态码
- 正常 状态码如[表10]所示。
  
 表10状态码 
| 状态码 | 描述      |
|:---|:---|
| 201 | 环境部署成功。 |
   
- 异常 状态码如[表11]所示。
  
 表11状态码 
| 状态码 | 描述                                          |
|:---|:---|
| 400 | 请求参数有误，当前请求无法被服务器解析。除非进行修改，否则客户端不应重复提交这个请求。 |
| 409 | 由于和被请求的资源的当前状态之间存在冲突，请求无法完成。                |
| 500 | 服务器遇到了一个未曾预料的状况，导致无法完成对请求的处理。               |
   
