● 已创建至少一个可用密钥对,具体请参见创建密钥对。
● 已创建OBS桶,桶的创建方法参见添加OBS桶。
● 已创建的可用文件存储卷名称,CCE的文件存储卷的创建和导入参见文件存储卷。
● 已创建的集群,集群创建方法参见CCE的集群管理部分,创建好集群后,请设置 弹性伸缩策略,可以参见CCE插件管理的autoscaler。
创建 Environment
假设区域选择为华北北京四区,则前提条件中的信息为如下值(实际操作中您需要根 据实际情况替换):
● IAM的Endpoint为:iam.cn-north-4.myhuaweicloud.com
● GCS的Endpoint为:gcs.cn-north-4.myhuaweicloud.com
● 区域名称:"cn-north-4"
● 秘钥对名称:"KeyPair-3587"
● 项目ID:10556c21********8bf10512591189e
● OBS桶:gene-container-bucket
● 集群ID:d9d8912d-a6cb-11e8-bc20-0255ac105709
步骤1 调用其他接口前,需要参见3.1-构造请求中的调用方式获取token,并设置成环境变 量。
1. 获取token。
其中加粗的蓝色字体部分,需要替换为真实的数据。
– iam_endpoint:IAM的Endpoint,以cn-north-4的Endpoint为例则应该为 iam.cn-north-4.myhuaweicloud.com。
– username:华为云的用户账号,必填项。
– password:华为云的用户密码,必填项。
– domainname:若是子账号,请填写对应的主账号名称。若不是子账号,请 与username保持一致,必填项。
– cn-north-4:此处以中国华北区4为例,必填项。
curl -H "Content-Type:application/json" https://{iam_endpoint}/v3/auth/tokens -X POST -d '{"auth": {"identity":{"methods":["password"],"password":{"user":
{"name":"username","password":"password","domain":{"name":"domainname"}}}},"scope":
{"project":{"name":"cn-north-4"}}}}' -v -k
响应Header中“X-Subject-Token”的值即为Token:
X-Subject-Token:
MIIDkgYJKoZIhvcNAQcCoIIDgzCCA38CAQExDTALBglghkgBZQMEAgEwgXXXXX...
2. 使用如下命令将token设置为环境变量,方便后续使用。
export Token=
{X-Subject-Token}X-Subject-Token即为上一步骤获取到的token,如下所示。
export Token=MIIDkgYJKoZIhvcNAQcCoIIDgzCCA38CAQExDTALBglghkgBZQMEAgEwgXXXXX...
3. 将API的入口地址设置为环境变量,方便后续事使用,入口地址为“https://
GCS_ENDPOINT”。
export GCS_Endpoint="https://gcs.cn-north-4.myhuaweicloud.com"
步骤2 创建环境。
调用5.1.1-部署Environment接口,利用前提条件中已创建的集群创建GCS环境。
curl -i -k -X POST -H "X-Auth-Token: $Token" ${GCS_ENDPOINT}/v1/environments -d
'{"source":"cce","project_id":"10556c21********8bf10512591189e","cluster_id":"d9d8912d-a6cb-11e8-bc20-0255ac105709","bucket_name":"gene-container-bucket","env_name":"gcs-env-cce-new"}'
命令中主要参数说明如下:
● project_id: 前提条件中获取到的项目ID
● source: 创建环境的来源 cce表示,创建cce环境
● bucket_name: 前提条件中已创建的OBS桶名称
● cluster_id:前提条件中已创建的集群ID
● env_name:要创建的环境的名称
创建成功的时候会返回环境的ID,为了后续操作,需要记录下环境的ID。
{ "id": "6e03f731-9c31-569a-4121-6a10b6996458"
}
步骤3 将环境ID设置为环境变量。
export ENVIRONMENT_ID=6e03f731-9c31-569a-4121-6a10b6996458
步骤4 查看环境。
调用5.1.4-查询Environment接口,查询GCS环境。
curl -i -k -X GET -H "X-Auth-Token: $Token" ${GCS_ENDPOINT}/v1/environments/${ENVIRONMENT_ID}
查询成功的时候会返回环境的详情。
{ "guid": "bcdd92fd-0380-e114-5dbe-38dac77857e9", "project_id": "10556c21********8bf10512591189e", "domain_id": "b0148a2cb********477bab429e48e7", "name": "gcs-env-cce-new",
"description": "Gene container environment form cce", "status": "Running",
"create_at": "2018-08-13T03:50:30Z", "update_at": "2018-08-13T07:27:02Z",
"cluster_id": "d9d8912d-a6cb-11e8-bc20-0255ac105709", "cluster_name": "gcs-cluster",
"cpu": 8,
"memory": 16, "source": "cce",
"stack_id": "10185add-acde-cc18-b8dd-b3a87a1f484c"
"is_gene_cluster": false,
"bucket_name": "gene-container-bucket", "default_env": false,
"order_id": ""
}
步骤5 将集群的ID设置为环境变量。
export CLUSTER_ID=d9d8912d-a6cb-11e8-bc20-0255ac105709
----结束
创建 Workflow
步骤1 登录GCS控制台,下载示例流程。
1. 选择左侧导航栏的“基因测序”>“示例流程”。
2. 找到gcs-grammar示例流程,单击下载文件,保存示例流程到本地。
步骤2 上传示例流程gcs-grammar.yaml到执行curl命令的服务器的任一路径,例如/home/
gcs-user。
步骤3 进入服务器中流程文件所在路径,调用5.2.1 创建workflow接口,上传gatk4-best-practices.yaml作为自己的流程。
curl -k -X POST -H "X-Auth-Token: ${Token}" -F 'resource={"name":"gcs-demo-workflow", "description":"gcs demo workflow", "filename":"gatk4-best-prectices.yaml" }' -F '[email protected]'
${GCS_Endpoint}/v1/workflows
命令中参数说明如下:
● name:流程名字。
● description:流程描述。
● filename:要上传的workflow文件的文件名
● archive_content:要上传的workflow文件。如果执行curl命令时,未进入到模板 文件所在路径,可以在此处加上路径,例如模板文件gcs-grammar.yaml在/
home/gcs-user路径下,则命令为archive_content=@
/home/gcs-user/gcs-grammar.yaml创建成功的时候会返回流程的ID,为了后续操作,需要记录下此流程的ID。
{ "id": "f2637630-5d83-11e8-a6de-0255ac101a0c"
}
步骤4 将workflow ID设置为环境变量。
export WORKFLOW_ID=d9d8912d-a6cb-11e8-bc20-0255ac105709
----结束
创建 Execution
假设已获取前提条件中的信息为如下值(实际操作中您需要根据实际情况替换):
● 集群下文件存储卷名称:"gcs-sfs-358712"
● 项目ID:10556c2112784111b8bf10512591189e 步骤1 调用5.3.1-创建execution接口,创建execution。
curl -k -X POST -H "X-Auth-Token: $Token" ${GCS_Endpoint}/v1/executions -d '{"name":demo-execution", "workflow_id": ${WORKFLOW_ID}, "cluster_id": ${CLUSTER_ID}, "sfs_pvc_name": "gcs-sfs-358712", "data_bucket_name": "gene-container-bucket", "target": "cce"}'
命令中参数说明如下
● name:自定义execution名称,例如gcs-demo-execution
● workflow_id:创建流程过程中创建的流程ID
● sfs_pvc_name:文件存储卷名称
● cluster_id:创建环境过程中创建的集群ID
● data_bucket_name:前提条件中的OBS桶
● target:执行execution的环境类型,cce表示使用的是cce环境
{ "id": "10185add-acde-cc18-b8dd-b3a87a1f484c"
}
步骤2 将execution id设置为环境变量。
export EXECUTION_ID=10185add-acde-cc18-b8dd-b3a87a1f484c
步骤3 调用5.3.4 查询execution接口,查询execution。
curl -k -X GET -H "X-Auth-Token: $Token" ${GCS_Endpoint}/v1/executions/${EXECUTION_ID}
GCS界面可以查看运行成功的execution
----结束
清理资源
假设已获取前提条件中的信息为如下值(实际操作中您需要根据实际情况替换):
● 项目ID:10556c2112784111b8bf10512591189e
须知
OBS、SFS等资源如果不再需要,请至对应该服务的控制台手动删除。
步骤1 调用5.3.3 删除execution接口,删除创建的execution。
curl -k -X DELETE -H "X-Auth-Token: $Token" ${GCS_Endpoint}/v1/executions/${EXECUTION_ID}
如果使用的集群是创建环境时一并创建的,可以设置delete_cluster参数,将集群一并 删除。
curl -k -X DELETE -H "X-Auth-Token: $Token" ${GCS_Endpoint}/v1/executions/${EXECUTION_ID}?
delete_cluster=true
步骤2 如果后续不再需要执行计算任务,调用5.1.2 删除environment接口,删除创建的 environment。
curl -k -X DELETE -H "X-Auth-Token: $Token" ${GCS_Endpoint}/v1/environments/${ENVIRONMENT_ID}
步骤3 如果后续不再需要此计算流程,调用5.2.2 删除workflow接口,删除创建的 workflow。
curl -k -X DELETE -H "X-Auth-Token: $Token" ${GCS_Endpoint}/v1/workflow/${WORKFLOW_ID}
----结束
5 API
5.1 Environment 5.2 Workflow 5.3 Execution 5.4 Tool
5.1 Environment
5.1.1 部署 environment
功能介绍
部署基因测序所需的环境,开始基因测序之前,请先进行必要的资源配置。
URI
POST /v1/environments
请求消息
请求参数
请求参数如表5-1所示。
表
5-1 请求参数
参数 是否必选 参数类型 描述
project_id 否 String 项目ID,获取方式详见
7.3 获取项目ID。
参数 是否必选 参数类型 描述
source 是 String 部署环境的方式,支持
选项:
● cci:指GCS部署的 底层资源使用的是
● cce:指GCS部署的 底层资源使用的是
cluster_id 否 String 集群ID。当“source”
填写的为“cce”,并
cluster_name 否 String 命名空间。当
“source”填写的为
参数 是否必选 参数类型 描述
bucket_name 否 String 对象存储桶名。当
“source”填写的为
“cce“,该字段必 填,当“source”填写 的为“cci“,若使用 桶,必须为并行文件系 统,若未使用桶可不 填。
inputs_json 否 表5-2 当“source”填写的为
“cce”,并且需要通 过创建新的集群来部署 环境时,此上需要填写 新建集群需要的入参。
default_env 否 String 是否设置为默认环境,
默认值false。支持选 项:
● ture:设置为默认环 境
● false:不设置为默 认环境
env_name 是 String 环境名称,输入字符最
大长度为64,以小写字 母开头,允许出现中划 线(-)、小写字母和数 字,且必须以小写字母 或数字结尾。
ak 否 String 用户AK。当
“source ”为”cci”
时,需要填写。获取方 法请参见访问密钥。
sk 否 String 用户SK。当
“source ”为”cci”
时,需要填写。获取方 法请参见访问密钥。
enterprise_project_
id 否 String 环境的企业项目id,默
认为“0”,default企 业项目,注意企业项目 id要与命名空间的企业 项目对应
表
5-2 inputs_json 参数
参数 是否必选 类型 描述
kind 是 String 资源类型,必须设置为
“cluster”。
apiVersion 是 String API的版本,当前为固定值
“v2”。
metadata 是 表 3
metadata字 段数据结构说 明
-spec 是 表 4
ClusterSpec 字段数据结构 说明
-表
5-3 metadata 字段数据结构说明
参数 是否必选 类型 描述
name 是 String 集群名称。
annotations 否 Map[String]St
ring 集群注解。
表
5-4 ClusterSpec 字段数据结构说明
参数 是否必选 类型 描述
authentication 是 Map[String]St
ring 认证方式。
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等。
containerNetwo
rkCIDR 否 String 容器网络的CIDR,一般为
172.16.0.0/16。
template 否 表5-5 节点模板,创建集群时若需要
添加节点则填写。
chargeMode 否 Integer 计费模式:0为包周期计费,1 为按需计费。
flavor 否 String 集群规格,类似cce.s1.large 等。
表
5-5 Host 字段数据结构说明
参数 是否必选 类型 描述
kind 是 String 资源类型,必须设置为
“host”。
apiVersion 是 String API的版本,当前为固定值
“v2”。
metadata 是 表 3
metadata字 段数据结构说 明
-spec 是 表5-6
-表
5-6 HostSpec 字段数据结构说明
参数 是否必选 类型 描述
az 否 String 节点所在的可用分区。如果没
有指定az值,节点将创建在所 属集群的可用分区内。
flavor 是 String 虚拟机规格。
volume 是 表5-7 虚拟机磁盘信息。
sshKey 是 String 节点所使用的密钥对的名字。
num 是 Integer 批量创建节点的个数。
enableEip 否 Boolean 是否使用EIP。
os 否 String 节点的操作系统
参数 是否必选 类型 描述
extendParam 否 Interface 扩展参数,key/value对格式
表
5-7 Volume 字段数据结构说明
参数 是否必选 类型 描述
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": {
"cluster.install.addons/install": "[{\"addonTemplateName\":\"storage-driver\",\"version\":\"\"}]"
}
"subnetId": "959903d0-383d-47d4-8565-7ffdeab4d31b", "vpcId": "005d2390-0cbc-4f8d-a0eb-4cd22b71f79b", "vpc": "vpc-fcb-hl",
"diskSizeTip": "",
"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
}
响应消息
响应参数
请求成功的响应参数如表5-8所示。
表
5-8 成功响应参数
参数 参数类型 描述
id String 部署成功的环境ID。
响应示例
{ "id": "e19d3faf-9f04-9685-e5c0-fbe8d40b96cd"
}
请求失败的响应参数如表5-9所示。
表
5-9 失败响应参数
参数 参数类型 描述
error_msg String 请求失败的详细原因。
error_code String 请求失败的错误码,错误码
详细描述请参见7.2 错误
详细描述请参见7.2 错误