API 参考
文档版本 01
发布日期 2021-11-19
版权所有 © 华为技术有限公司 2021。 保留一切权利。
非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传 播。
商标声明
和其他华为商标均为华为技术有限公司的商标。
本文档提及的其他所有商标或注册商标,由各自的所有人拥有。
注意
您购买的产品、服务或特性等应受华为公司商业合同和条款的约束,本文档中描述的全部或部分产品、服务或 特性可能不在您的购买或使用范围之内。除非合同另有约定,华为公司对本文档内容不做任何明示或暗示的声 明或保证。
由于产品版本升级或其他原因,本文档内容会不定期进行更新。除非另有约定,本文档仅作为使用指导,本文 档中的所有陈述、信息和建议不构成任何明示或暗示的担保。
目 录
1 使用前必读... 1
1.1 概述... 1
1.2 调用说明...1
1.3 终端节点...1
1.4 约束与限制... 1
1.5 基本概念...1
2 API 概览... 3
3 如何调用 API...5
3.1 构造请求...5
3.2 认证鉴权...9
3.3 返回结果... 10
4 快速入门...12
5 API...18
5.1 创建模板... 18
5.2 查询模板列表...21
5.3 更新模板... 25
5.4 删除模板... 27
5.5 下载模板... 28
5.6 查询模板... 31
5.7 查询模板输入...33
5.8 获取模板列表...36
5.9 创建堆栈... 39
5.10 删除堆栈... 43
5.11 执行堆栈生命周期... 44
5.12 查询堆栈列表... 47
5.13 查询堆栈... 51
5.14 查询堆栈元素列表... 60
5.15 查询堆栈元素... 64
5.16 查询堆栈输出... 66
5.17 查询堆栈输入... 68
5.18 查询堆栈执行记录... 69
5.19 查询堆栈执行记录列表...75
6 附录... 79
6.1 状态码...79
6.2 错误码...81
6.3 获取项目 ID... 118
6.4 获取帐号 ID... 119
7 修订记录... 120
1 使用前必读
1.1 概述
欢迎使用应用编排服务(Application Orchestration Service)。应用编排服务为企业 提供应用上云的自动化能力,支持编排华为云上的主流云服务,实现一键式的应用创 建及云服务资源开通,提供高效的一键式云上应用复制和迁移能力。
您可以使用本文档提供API对应用编排服务进行相关操作,如创建、查询、删除模板 等。支持的全部操作请参见API概览API概览。
在调用应用编排服务API之前,请确保已经充分了解应用编排服务相关概念,详细信息 请参见产品介绍。
1.2 调用说明
应用编排服务提供了REST(Representational State Transfer)风格API,支持您通过 HTTPS请求调用,调用方法请参见如何调用API。
1.3 终端节点
终端节点(Endpoint)即调用API的请求地址,不同服务不同区域的终端节点不同,您 可以从地区和终端节点中查询应用编排服务的终端节点。
1.4 约束与限制
● 您能创建的应用编排服务资源的数量与配额有关系,具体请参见服务配额。如果 您需要扩大配额,请参见如何申请扩大配额。
● 更详细的限制请参见具体API的说明。
1.5 基本概念
● 帐号
用户注册时的帐号,帐号对其所拥有的资源及云服务具有完全的访问权限,可以 重置用户密码、分配用户权限等。由于帐号是付费主体,为了确保帐号安全,建 议您不要直接使用帐号进行日常管理工作,而是创建用户并使用他们进行日常管 理工作。
● 用户
由帐号在IAM中创建的用户,是云服务的使用人员,具有身份凭证(密码和访问 密钥)。
在我的凭证下,您可以查看帐号ID和IAM用户ID。通常在调用API的鉴权过程中,
您需要用到帐号、用户和密码等信息。
● 区域(Region)
从地理位置和网络时延维度划分,同一个Region内共享弹性计算、块存储、对象 存储、VPC网络、弹性公网IP、镜像等公共服务。Region分为通用Region和专属 Region,通用Region指面向公共租户提供通用云服务的Region;专属Region指只 承载同一类业务或只面向特定租户提供业务服务的专用Region。
详情请参见区域和可用区。
● 可用区(AZ,Availability Zone)
一个可用区是一个或多个物理数据中心的集合,有独立的风火水电,AZ内逻辑上 再将计算、网络、存储等资源划分成多个集群。一个Region中的多个AZ间通过高 速光纤相连,以满足用户跨AZ构建高可用性系统的需求。
● 项目
区域默认对应一个项目,这个项目由系统预置,用来隔离物理区域间的资源(计 算资源、存储资源和网络资源),以默认项目为单位进行授权,用户可以访问您 帐号中该区域的所有资源。如果您希望进行更加精细的权限控制,可以在区域默 认的项目中创建子项目,并在子项目中创建资源,然后以子项目为单位进行授 权,使得用户仅能访问特定子项目中资源,使得资源的权限控制更加精确。
图1-1 项目隔离模型
同样在我的凭证下,您可以查看项目ID。
● 企业项目
企业项目是项目的升级版,针对企业不同项目间资源的分组和管理,是逻辑隔 离。企业项目中可以包含多个区域的资源,且项目中的资源可以迁入迁出。
关于企业项目ID的获取及企业项目特性的详细信息,请参见《企业管理用户指 南》。
2 API 概览
类型 说明
模板管理接口 模板管理接口,包括创建、查询、更新、删除、下载模
板的接口等。
通过这些接口,您可以创建模板、查询模板列表、更新 模板、删除模板、查询指定模板和查询模板输入。
堆栈管理接口 堆栈管理接口,包括创建、查询、删除堆栈的接口等。
通过这些接口,您可以创建堆栈、删除堆栈,执行堆栈 生命周期,查询堆栈列表、堆栈、堆栈元素列表、堆栈 元素、堆栈输出、堆栈输入、堆栈执行记录、堆栈执行 记录列表。
模板管理接口
模板管理接口,包括创建、查询、更新、删除模板的接口等。通过这些接口,您可以 创建模板、查询模板列表、更新模板、删除模板、下载模板、查询指定模板和查询模 板输入。
表2-1 模板管理接口
API 说明
创建模板 通过将本地模板文件上传至服务器的方式来创建模板。
查询模板列表 根据提供的参数查询模板列表。
更新模板 更新模板,包括两种方式:本地上传和URL上传更新。
只有当未使用该模板创建堆栈之前才能进行更新。
删除模板 删除一个指定的模板。
只有不存在使用该模板创建的堆栈时才能删除。
下载模板 下载一个指定的模板。
API 说明
查询模板 查询指定模板的详细信息,包括模板名称、模板版本、
模板描述、创建时间、更新时间等。
查询模板输入 查询指定模板的输入参数。
获取模板列表 根据提供的参数获取模板列表。
堆栈管理接口
堆栈管理接口,包括创建、查询、删除堆栈的接口等。通过这些接口,您可以创建堆 栈、删除堆栈,执行堆栈生命周期,查询堆栈列表、堆栈、堆栈元素列表、堆栈元 素、堆栈输出、堆栈输入、堆栈执行记录、堆栈执行记录列表。
表2-2 堆栈管理接口
API 说明
创建堆栈 创建堆栈,堆栈的输入由模板和输入参数两部分组成。
● 模板:定义了堆栈的骨架,决定了堆栈内部节点的构 造以及节点间的关系,以及每个节点的属性的值或来 源。
● 输入参数:是模板内节点属性值的来源之一,定义在 模板的inputs字段下,由模板内的get_input函数触 发。
删除堆栈 删除一个指定的堆栈。
执行堆栈生命周期 执行特定的堆栈生命周期操作。
查询堆栈列表 查询堆栈列表。
查询堆栈 查询指定堆栈的详细信息,包括堆栈名称、堆栈描述、
模板id、模板名称、堆栈状态等。
查询堆栈元素列表 查询堆栈元素列表。
查询堆栈元素 查询堆栈某个元素的详细信息。
查询堆栈输出 查询指定堆栈输出。
查询堆栈输入 查询指定堆栈输入。
查询堆栈执行记录 查询堆栈某一次执行记录。
查询堆栈执行记录列表 查询堆栈最近的执行记录列表。
3 如何调用 API
3.1 构造请求
本节介绍REST API请求的组成,并以调用IAM服务的获取用户Token说明如何调用 API,该API获取用户的Token,Token可以用于调用其他API时鉴权。
您还可以通过这个视频教程了解如何构造请求调用API:https://
bbs.huaweicloud.com/videos/102987。
请求 URI
请求URI由如下部分组成:
{URI-scheme}://{Endpoint}/{resource-path}?{query-string}
尽管请求URI包含在请求消息头中,但大多数语言或框架都要求您从请求消息中单独传 递它,所以在此单独强调。
表3-1 URI 中的参数说明
参数 描述
URI-scheme 表示用于传输请求的协议,当前所有API均采用HTTPS协议。
Endpoint 指定承载REST服务端点的服务器域名或IP,不同服务不同区域的 Endpoint不同,您可以从地区和终端节点终端节点及区域说明终端 节点(Endpoint)获取。
例如IAM服务在“华北-北京四”区域的Endpoint为“iam.cn- north-4.myhuaweicloud.com”。
resource-path 资源路径,也即API访问路径。从具体API的URI模块获取,例如
“获取用户Token”API的resource-path为“/v3/auth/tokens”。
query-string 查询参数,是可选部分,并不是每个API都有查询参数。查询参数 前面需要带一个“?”,形式为“参数名=参数取值”,例如“?
limit=10”,表示查询不超过10条数据。
例如您需要获取IAM在“华北-北京四”区域的Token,则需使用“华北-北京四”区域 的Endpoint(iam.cn-north-4.myhuaweicloud.com),并在获取用户Token的URI部 分找到resource-path(/v3/auth/tokens),拼接起来如下所示。
https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokens
图3-1 URI 示意图
说明
为查看方便,在每个具体API的URI部分,只给出resource-path部分,并将请求方法写在一起。
这是因为URI-scheme都是HTTPS,而Endpoint在同一个区域也相同,所以简洁起见将这两部分 省略。
请求方法
HTTP请求方法(也称为操作或动词),它告诉服务你正在请求什么类型的操作。
表3-2 HTTP 方法
方法 说明
GET 请求服务器返回指定资源。
PUT 请求服务器更新指定资源。
POST 请求服务器新增资源或执行特殊操作。
DELETE 请求服务器删除指定资源,如删除对象等。
HEAD 请求服务器资源头部。
PATCH 请求服务器更新资源的部分内容。
当资源不存在的时候,PATCH可能会去创建一个新的资 源。
在获取用户Token的URI部分,您可以看到其请求方法为“POST”,则其请求为:
POST https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokens
请求消息头
附加请求头字段,如指定的URI和HTTP方法所要求的字段。例如定义消息体类型的请 求头“Content-Type”,请求鉴权信息等。
详细的公共请求消息头字段请参见表3-3。
表3-3 公共请求消息头
名称 描述 是否必选 示例
Host 请求的服务器信
息,从服务API的 URL中获取。值为 hostname[:port]。
端口缺省时使用默 认的端口,https的 默认端口为443。
否
使用AK/SK认 证时该字段必 选。
code.test.com or
code.test.com:443
Content-Type 消息体的类型(格 式)。推荐用户使 用默认值application/json,
有其他取值时会在 具体接口中专门说 明。
是 application/json
Content-
Length 请求body长度,单
位为Byte。 否 3495
X-Project-Id project id,项目编 号。请参考获取项 目ID章节获取项目 编号。
否
如果是专属云 场景采用AK/SK认证方 式的接口请求 或者多project 场景采用AK/SK认证的 接口请求,则 该字段必选。
e9993fc787d94b6c886cb aa340f9c0f4
X-Auth-Token 用户Token。
用户Token也就是调 用获取用户Token接 口的响应值,该接 口是唯一不需要认 证的接口。
请求响应成功后在 响应消息头
(Headers)中包含 的“X-Subject- Token”的值即为 Token值。
否
使用Token认 证时该字段必 选。
注:以下仅为Token示例片 段
MIIPAgYJKoZIhvcNAQcCo ...ggg1BBIINPXsidG9rZ
说明
API同时支持使用AK/SK认证,AK/SK认证是使用SDK对请求进行签名,签名过程会自动往请求中 添加Authorization(签名认证信息)和X-Sdk-Date(请求发送的时间)请求头。
AK/SK认证的详细说明请参见认证鉴权的“AK/SK认证”。
对于获取用户Token接口,由于不需要认证,所以只添加“Content-Type”即可,添 加消息头后的请求如下所示。
POST https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokens Content-Type: application/json
请求消息体(可选)
该部分可选。请求消息体通常以结构化格式(如JSON或XML)发出,与请求消息头中 Content-Type对应,传递除请求消息头之外的内容。若请求消息体中的参数支持中 文,则中文字符必须为UTF-8编码。
每个接口的请求消息体内容不同,也并不是每个接口都需要有请求消息体(或者说消 息体为空),GET、DELETE操作类型的接口就不需要消息体,消息体具体内容需要根 据具体接口而定。
对于获取用户Token接口,您可以从接口的请求部分看到所需的请求参数及参数说 明。将消息体加入后的请求如下所示,加粗的斜体字段需要根据实际值填写,其中
username
为用户名,domainname
为用户所属的帐号名称,********
为用户登录密 码,xxxxxxxxxxxxxxxxxx
为project的名称,如“cn-north-4”,您可以从地区和终端 节点终端节点(Endpoint)获取。说明
scope参数定义了Token的作用域,下面示例中获取的Token仅能访问project下的资源。您还可 以设置Token的作用域为某个帐号下所有资源或帐号的某个project下的资源,详细定义请参见获 取用户Token。
POST https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokens Content-Type: application/json
{ "auth": { "identity": { "methods": [ "password"
],
"password": { "user": {
"name": "username", "password": "********", "domain": {
"name": "domainname"
} } } }, "scope": { "project": {
"name": "xxxxxxxxxxxxxxxxxx"
} } } }
到这里为止这个请求需要的内容就具备齐全了,您可以使用curl、Postman或直接编 写代码等方式发送请求调用API。对于获取用户Token接口,返回的响应消息头中“x- subject-token”就是需要获取的用户Token。有了Token之后,您就可以使用Token认 证调用其他API。
3.2 认证鉴权
调用接口有如下两种认证方式,您可以选择其中一种进行认证鉴权。
● Token认证:通过Token认证调用请求。
● AK/SK认证:通过AK(Access Key ID)/SK(Secret Access Key)加密调用请求。
推荐使用AK/SK认证,其安全性比Token认证要高。
Token 认证
说明
Token的有效期为24小时,需要使用一个Token鉴权时,可以先缓存起来,避免频繁调用。
Token在计算机系统中代表令牌(临时)的意思,拥有Token就代表拥有某种权限。
Token认证就是在调用API的时候将Token加到请求消息头,从而通过身份认证,获得 操作API的权限。
Token可通过调用获取用户Token接口获取,调用本服务API需要project级别的 Token,即调用获取用户Token接口时,请求body中auth.scope的取值需要选择 project,如下所示。
{ "auth": { "identity": { "methods": [ "password"
],
"password": { "user": {
"name": "username", "password": "********", "domain": {
"name": "domainname"
} } } }, "scope": { "project": {
"name": "xxxxxxxx"
} } } }
获取Token后,再调用其他接口时,您需要在请求消息头中添加“X-Auth-Token”,
其值即为Token。例如Token值为“ABCDEFJ....”,则调用接口时将“X-Auth-Token:
ABCDEFJ....”加到请求消息头即可,如下所示。
POST https://iam.cn-north-4.myhuaweicloud.com/v3/auth/projects Content-Type: application/json
X-Auth-Token: ABCDEFJ....
您还可以通过这个视频教程了解如何使用Token认证:https://
bbs.huaweicloud.com/videos/101333。
AK/SK 认证
说明
AK/SK签名认证方式仅支持消息体大小12MB以内,12MB以上的请求请使用Token认证。
AK/SK认证就是使用AK/SK对请求进行签名,在请求时将签名信息添加到消息头,从而 通过身份认证。
● AK(Access Key ID):访问密钥ID。与私有访问密钥关联的唯一标识符;访问密 钥ID和私有访问密钥一起使用,对请求进行加密签名。
● SK(Secret Access Key):与访问密钥ID结合使用的密钥,对请求进行加密签 名,可标识发送方,并防止请求被修改。
使用AK/SK认证时,您可以基于签名算法使用AK/SK对请求进行签名,也可以使用专门 的签名SDK对请求进行签名。详细的签名方法和SDK使用方法请参见API签名指南。
说明
签名SDK只提供签名功能,与服务提供的SDK不同,使用时请注意。
3.3 返回结果
状态码
请求发送以后,您会收到响应,包含状态码、响应消息头和消息体。
状态码是一组从1xx到5xx的数字代码,状态码表示了请求响应的状态,完整的状态码 列表请参见状态码。
对于获取用户Token接口,如果调用后返回状态码为“201”,则表示请求成功。
响应消息头
对应请求消息头,响应同样也有消息头,如“Content-type”。
对于获取用户Token接口,返回如图3-2所示的消息头,其中“x-subject-token”就是 需要获取的用户Token。有了Token之后,您就可以使用Token认证调用其他API。
图3-2 获取用户 Token 响应消息头
响应消息体(可选)
该部分可选。响应消息体通常以结构化格式(如JSON或XML)返回,与响应消息头中 Content-Type对应,传递除响应消息头之外的内容。
对于获取用户Token接口,返回如下消息体。为篇幅起见,这里只展示部分内容。
{ "token": {
"expires_at": "2019-02-13T06:52:13.855000Z", "methods": [
"password"
],
"catalog": [ {
"endpoints": [ {
"region_id": "az-01", ...
当接口调用出错时,会返回错误码及错误信息说明,错误响应的Body体格式如下所 示。
{ "error_msg": "The format of message is error", "error_code": "AS.0001"
}
其中,error_code表示错误码,error_msg表示错误描述信息。
4 快速入门
概述
本文通过调用一系列应用编排服务的API编排部署Magento电子商务系统,介绍使用应 用编排服务API的基本流程。
创建出的Magento电子商务系统如下所示:
图4-1 Magento 电子商务系统
API的调用方法请参见如何调用API。
创建流程
1. 调用创建模板接口,上传Magento电商应用公共模板作为自己的模板。
2. 调用查询模板输入接口,查看模板输入,作为后续创建堆栈时需要配置的输入参 数的修改。
3. 调用创建堆栈接口,创建Magento电子商务系统堆栈。
4. 调用查询堆栈接口,查看堆栈创建是否成功。
5. 调用查询堆栈输出接口,查询堆栈的输出,查看Magento电子商务系统。
编排部署 Magento 电子商务系统
步骤1 调用创建模板接口,上传Magento电商应用公共模板作为自己的模板。
1. 选择左侧导航栏的“模板市场”,单击“公共模板”。在“行业场景模板”下,
单击Magento电商应用名称,查看详情。单击“下载模板”,保存公共模板文件
(例如:e-business-app.yaml)到本地。
图4-2 选择公共模板
2. 在本地编写Magento电商应用模板,保存到文件e-business-app.yaml中。上传模 板文件e-business-app.yaml到执行curl命令的服务器的任一路径,例如/home/
paas。
3. 进入服务器中模板文件所在路径,调用创建模板接口,上传Magento电商应用公 共模板作为自己的模板。
curl -k -X POST -H "X-Auth-Token: ${Token}" -F "resource={\"name\": \"aos-magento\",\"description\":
\"aos magento template\",\"version\": \"1.9\"}" -F "[email protected]" -i "$
{AOS_Endpoint}/v2/templates"
您需要指定如下参数。
– Token:构造请求中获取用户Token接口,返回的响应消息头中“x-subject- token”的值。
– name:模板名称。
– description:模板描述。
– version:模板版本。
– archive_content:要上传的模板包。如果执行curl命令时,未进入到模板文 件所在路径,可以在此处加上路径,例如模板文件“e-business-app.yaml”
在“/home/paas”路径下,则命令为archive_content=@/home/paas/e- business-app.yaml
– AOS_Endpoint:{URI-scheme} :// {Endpoint} ,例如https://aos.cn- north-4.myhuaweicloud.com。
响应消息体:
HTTP/1.1 100 Continue ...
{ "id": "10185add-acde-cc18-b8dd-b3a87a1f484c"
}p
记录模板ID(10185add-acde-cc18-b8dd-b3a87a1f484c)作为后续创建堆栈时 所用的模板。
步骤2 调用查询模板输入接口,查看模板输入,作为后续创建堆栈时需要配置的输入参数的 修改。
curl -k -X GET -H "X-Auth-Token: ${Token}" "${AOS_Endpoint}/v2/templates/${TEMPLATE_ID}/inputs"
您需要指定如下参数。
● Token:构造请求中获取用户Token接口,返回的响应消息头中“x-subject- token”的值。
● TEMPLATE_ID:上一步获取的模板ID。
● AOS_Endpoint:{URI-scheme} :// {Endpoint} ,例如https://aos.cn- north-4.myhuaweicloud.com。
响应消息体:
{ ...
"app-name": { "default": "magento", "description": "应用名称", "immutable": false, "label": "magento", "usednodes": [ "magento", "magento-service"
]
}, "magento-EIP": {
"description": "magento服务对外暴露访问地址", "immutable": false,
"label": "magento", "usednodes": [ "magento-config"
]
}, "magento-EPORT": { "default": 32080,
"description": "magento服务对外监听端口", "immutable": false,
"label": "magento", "type": "integer", "usednodes": [ "magento-config", "magento-service"
]
}, "mysql-database": { "default": "magento",
"description": "MySQL数据库服务为magento服务创建的database名称", "immutable": false,
"label": "mysql", "usednodes": [ "mysql-conf"
]
}, "mysql-password": { "default": "******",
"description": "MySQL数据库服务密码", "immutable": false,
"label": "mysql", "usednodes": [ "mysql-conf"
]
}, "mysql-port": { "default": 3306,
"description": "MySQL数据库服务监听端口", "immutable": false,
"label": "mysql", "type": "integer"
}, ...
}
在创建堆栈的时候需要填写这些值并最终转化为模板内的属性值,AOS后台在遇到未 填写的字段的时候会使用模板内的默认值填写。本例需要更改magento-EIP和 magento-EPORT的参数值,其余参数保持默认即可。
步骤3 调用创建堆栈接口,创建Magento电子商务系统堆栈。
curl -k -X POST -H "X-Auth-Token: ${Token}" -d '{
"name": "magento-stack-test",
"project_id": "c51567523b744d098a8a81ede51894ac", "template_id": "'"${TEMPLATE_ID}"'",
"force": true,
"cluster_id": "f2637630-5d83-11e8-a6de-0255ac101a0c", "namespace": "default",
"inputs_json": {
"magento-EIP": "*.*.78.102", "magento-EPORT": 32080 }, "action_parameters": { "auto_create": true, "timeout": 20
}}' "${AOS_Endpoint}/v2/stacks"
您需要创建一个可用容器集群,包含一个2C4G的可用节点,并且已绑定弹性IP。
您需要指定如下参数。
● Token:构造请求中获取用户Token接口,返回的响应消息头中“x-subject- token”的值。
● name:自定义堆栈名称,例如magento-stack-test。
● project_id:项目ID,获取方法可参见获取项目ID。
● cluster_id:集群ID。您可登录CCE控制台,单击“资源管理 > 集群管理”,在集 群详情页获取集群ID。
● namespace:集群下可用的命名空间。您可登录CCE控制台,单击“资源管理 >
命名空间”,获取命名空间名称。
● magento-EIP:节点的弹性IP。您可登录CCE控制台,单击“资源管理 > 节点管 理”,在节点详情页获取弹性IP。
● magento-EPORT:节点端口,请输入30000-32767之间的整数,请保证集群内唯 一。可保持默认32080。
创建成功的时候会返回堆栈相关的一些信息,为了后续操作,需要记录下堆栈的ID。
{ "force": true,
"guid": "0cec7a8c-5fc1-11e8-a532-0242ac110007", "namespace": "default",
"project_id": "c51567523b744d098a8a81ede51894ac", "cluster_name": "k8s19-lm-do-not-delete",
"cluster_id": "f2637630-5d83-11e8-a6de-0255ac101a0c", "domain_id": "b0148a2cb4f347289b477bab429e48e7", "name": "magento-stack-test",
"description": "", "status": "",
"template_id": "10185add-acde-cc18-b8dd-b3a87a1f484c", "previous_template_id": "",
"template_name": "aos-magento", "inputs_json": "..."
...
}
步骤4 调用查询堆栈接口,查看堆栈创建是否成功。
curl -k -X GET -H "X-Auth-Token: ${Token}" "${AOS_Endpoint}/v2/stacks/${STACK_ID}"
您需要指定如下参数。
● Token:构造请求中获取用户Token接口,返回的响应消息头中“x-subject- token”的值。
● STACK_ID:上一步获取的堆栈ID。
● AOS_Endpoint:{URI-scheme} :// {Endpoint} ,例如https://aos.cn- north-4.myhuaweicloud.com。
响应消息体:
{ "force": true,
"guid": "0cec7a8c-5fc1-11e8-a532-0242ac110007", "namespace": "default",
"project_id": "c51567523b744d098a8a81ede51894ac", "cluster_name": "k8s19-lm-do-not-delete",
"cluster_id": "f2637630-5d83-11e8-a6de-0255ac101a0c", "domain_id": "b0148a2cb4f347289b477bab429e48e7", "name": "magento-stack-test",
"description": "", "status": "Running",
"template_id": "10185add-acde-cc18-b8dd-b3a87a1f484c", "previous_template_id": "",
"template_name": "aos-magento", "inputs_json":...
}
当返回接口中的status字段为Running状态时表示创建成功。如果创建失败可以通过 subObjectStatuses字段查看错误日志。
步骤5 调用查询堆栈输出接口,查询堆栈的输出。
curl -k -X GET -H "X-Auth-Token: ${Token}" "${AOS_Endpoint}/v2/stacks/${STACK_ID}/outputs"
您需要指定如下参数。
● Token:构造请求中获取用户Token接口,返回的响应消息头中“x-subject- token”的值。
● STACK_ID:上一步获取的堆栈ID。
● AOS_Endpoint:{URI-scheme} :// {Endpoint} ,例如https://aos.cn- north-4.myhuaweicloud.com。
响应消息体:
{ "outputs": {
"ingress-admin_password": { "value": "******",
"description": "Password of super user."
},
"magento-addr": {
"value": "http://*.*.78.102:32080",
"description": "Access URL for magento service."
},
"magento-admin_username": { "value": "admin",
"description": "Super user name."
} } }
访问magento电子商务系统,在浏览器中访问地址http://magento-EIP:magento- EPORT,例如http://*.*.78.102:32080。
图4-3 访问 magento 电子商务系统
----结束
5 API
5.1 创建模板
功能介绍
通过将本地模板文件上传至服务器的方式来创建模板。
URI
POST /v2/templates
请求消息
● 请求参数
表5-1 请求参数
参数 是否必选 参数类型 描述
resource 是 String 模板内容,详情请参见 UploadResource。
archive_conten
t 否 String or
Binary 必须为zip/tar.gz/tgz/yaml/json格 式的文件。
content_type值为yaml和json时,
参数类型为String,值为yaml或 json的字符串。
content_type值为空或file时,参数 类型为Binary,值为文件的二进制 内容。
表5-2 UploadResource 参数
参数 是否必选 参数类型 描述
name 是 String 模板名称。长度为[1,64],由小写 英文字母、数字和短横线(-)组成,
且必须以英文字母开头,同时不能 以短横线结尾。
description 否 String 模板描述。长度为[0,255],中文算 多个字符,不能包含<>()#%&/字 符。
origin_templat
e_url 否 String 源模板的URL。通过URL上传模板 场景需要。包类型必须为“zip/
tar.gz/tgz”,包名需要满足正则表 达式^[A-Za-z0-9][A-Za-z0-9_-]
{0,254}$。
scope 否 String 模板使用范围。默认值为
“domain",且只支持domain。
vendor 否 String 模板提供者。长度为[0,64],中文 算单个字符,不能包含<>()#%&/
字符。
version 是 String 模板版本。长度为[0,24],满足正 则表达式^[a-zA-Z0-9_]+([-.][a- zA-Z0-9]+)*$。
main_file_nam
e 否 String 模板主文件名称,为空的时候默认
为blueprint.yaml。长度[0,255],
如果非空,文件扩展名必须 为.yaml,文件名满足正则表达式
^[a-zA-Z0-9_]+([-.][a-zA- Z0-9]+)*$。
project_id 否 String 模板上传时带有的项目ID
filename 否 String 模板压缩包文件名称,在使用IE浏 览器时需要指定。长度为[0,64]。
dsl_version 否 String 当非空时,上传的模板DSL版本必 须与指定的一致,否则模板上传将 不成功。模板DSL版本,只支持 huaweicloud_tosca_version_1_0和 fusionstage_tosca_version_2_1,
默认为空。
content_type 否 String 模板文件类型。可设置为yaml、
json、file。
说明
两种模板上传场景不可混用,会导致报错。
表5-3 请求消息头
参数 是否必选 参数类型 描述
Content-Type 是 String 该字段内容填为“multipart/
form-data”。
X-Auth-Token 是 String 有效的token(具有op_cred权限的 用户token,短期有效)。在租户 侧必选。
说明
后续的AOS API所含Http头在只传参数(使用json格式)的情况下,Content-Type应为 Application/json。其余字段若无特殊说明,则与此表格一致。
● 请求示例
curl -k -X POST -H "X-Auth-Token: $token" -H "Content-Type:multipart/form-data" -F
'resource={"name": "test-agent-11","description":"aos","version": "1.0.1"}' -F "archive_content=@test- agent-1-1.0.tar.gz" https://aos.cn-north-4.myhuaweicloud.com/v2/templates
响应消息
● 请求成功的响应消息 – 响应参数
表5-4 成功响应参数
参数 参数类型 描述
id String 模板ID
– 响应示例
{ "id": "d078e49c-124c-7706-bcbb-81885661f431"
}
● 请求失败的响应消息 – 响应参数
表5-5 失败响应参数
参数 参数类型 描述
message String 请求失败的原因
code String 请求失败的原因代码
extend String 请求失败的扩展原因,
保留后续使用
说明
如果无特殊说明,后续AOS API的错误返回均为此形式。
– 响应示例
{ "message": "Parameters validate err, The name should not be empty.", "code": "02000005",
"extend": ""
}
状态码
● 正常
表5-6 状态码
状态码 描述
201 模板创建成功。
● 异常
表5-7 状态码
状态码 描述
400 请求参数有误,当前请求无法被服务器解析。除非进行修改,
否则客户端不应重复提交这个请求。
409 因与被请求的资源当前状态之间存在冲突,请求无法完成。
500 服务器遇到了一个未曾预料的状况,导致无法完成对请求的处
理。
5.2 查询模板列表
功能介绍
根据提供的参数查询模板列表。
URI
GET /v2/templates
表5-8 参数说明
参数 是否必选 描述
name 否 模板名称,适用于根据模板名称查询
模板ID场景。
参数 是否必选 描述
offset 否 查询起始偏移,默认为0。
limit 否 单次查询总量,和offset必须成对出
现。
dsl_version 否 查询指定DSL版本的模板。
check_used 否 是否检查模板的使用情况,如果为空
默认false。
include_stack 否 值为true时查询解决方案模板,为 false时查询通用模板,为空时查询所 有模板。
请求消息
N/A。
响应消息
● 响应参数
失败响应消息如表5-5所示。
表5-9 响应参数
参数 参数类型 描述
[数组元素] Array of objects 数组元素为模板详细信息,详情请参 见表5-10。
表5-10 模板详细信息
参数 参数类型 描述
id String 模板ID
name String 模板名称
version String 模板版本
vendor String 模板发布者
description String 模板描述 project_id String 模板所属项目ID template_url String 模板包的存放地址
converge_url String 模板的转化包地址,用于模板预览使 用。
参数 参数类型 描述
create_at String 模板创建时间 update_at String 模板更新时间
scope String 模板可用范围
● project:项目内可用(现已不支持 新建该范围的模板)
● domain:租户内可用
● public:全局可用(跨租户可用)
domain String 模板所属租户名称
main_file_name String 主文件名,为空使用默认值,为 blueprint.yaml。
need_clutser Boolean 判断模板是否需要CCE集群。当前AOS 的应用都需要部署在CCE集群上。
dsl_version String 模板的DSL版本
is_used Boolean 检查模板是否在使用中(即存在使用此 模板创建的堆栈),true表示在使用 中。
当查询参数check_used为true时,返回 值有该字段
is_new_template Boolean 模板是否是新模板
include_stack Boolean 模板里面是否包含堆栈(AOS.Stack)
元素
表5-11 响应消息头
参数 参数类型 描述
Content-Range String 分页信息,items为起始和终止,以及 总数”。具体取值依赖于用户的模板数 量。
示例:items 0-24/66
● 响应示例
[ {
"id": "f9f5839d-73e2-f22b-f20b-fb11bc1abb66", "name": "test-z",
"version": "v1", "vendor": "aos-team", "description": "", "project_id": "",
"template_url": "https://swr-api-server.manage.svc.cluster.local:20202/swr/v2/domains/aos-team/
namespaces/aos-teame002/repositories/stack_templates/packages/test-z/versions/v1/file_paths/test- staless-container.tar.gz",
"converge_url": "https://swr-api-server.manage.svc.cluster.local:20202/swr/v2/domains/aos-team/
namespaces/aos-teame002/repositories/stack_templates/packages/test-z/versions/v1/file_paths/test-z- v1-converge.tar.gz",
"create_at": "2018-12-16T01:15:39Z", "update_at": "2018-12-16T01:15:41Z", "scope": "domain",
"domain": "aos-team",
"main_file_name": "blueprint.yaml", "need_cluster": true,
"dsl_version": "huaweicloud_tosca_version_", "is_used": true,
"is_new_template": false, "include_stack": false },
{
"id": "fd3f1e6d-cc93-c3c3-d015-f69c3ff3bc63", "name": "test-z",
"version": "v2", "vendor": "aos-team", "description": "", "project_id": "",
"template_url": "https://swr-api-server.manage.svc.cluster.local:20202/swr/v2/domains/aos-team/
namespaces/aos-teame002/repositories/stack_templates/packages/test-z/versions/v2/file_paths/
blueprint.zip",
"converge_url": "https://swr-api-server.manage.svc.cluster.local:20202/swr/v2/domains/aos-team/
namespaces/aos-teame002/repositories/stack_templates/packages/test-z/versions/v2/file_paths/test-z- v2-converge.tar.gz",
"create_at": "2018-12-16T04:09:24Z", "update_at": "2018-12-16T04:09:26Z", "scope": "domain",
"domain": "aos-team",
"main_file_name": "blueprint.yaml", "need_cluster": true,
"dsl_version": "huaweicloud_tosca_version_", "is_used": true,
"is_new_template": false, "include_stack": false }
]
状态码
● 正常
表5-12 状态码
状态码 描述
200 查询模板列表成功。
● 异常
表5-13 状态码
状态码 描述
500 服务器遇到了一个未曾预料的状况,导致无法完成对请求的处
理。
5.3 更新模板
功能介绍
用于更新模板。
须知
只有当未使用该模板创建堆栈之前才能进行更新。
上传方式如下:
● 本地上传,直接传入本地文件的二进制数据。
● 通过URL上传,输入模板文件的URL。
URI
PUT /v2/templates/{template_id}
表5-14 参数说明
参数 是否必选 描述
template_id 是 更新的模板id
请求消息
● 请求参数
表5-15 请求参数
参数 是否必选 参数类型 描述
resource 是 String 模板内容,详情请参见表
5-2。
archive_cont
ent 否 String or
Binary 必须为zip/tar.gz/tgz/yaml/
json格式的文件。
content_type值为yaml和json 时,参数类型为String,值为 yaml或json的字符串。
content_type值为空或file 时,参数类型为Binary,值为 文件的二进制内容。
● 请求示例
{ "name": "helloworld",
"description": "helloworld blueprint new", "version": "1.0"
}curl -k -X PUT -H "X-Auth-Token: $token" -H "Content-Type:multipart/form-data" -F
"[email protected]" https://aos.cn-north-4.myhuaweicloud.com/v2/templates/
d078e49c-124c-7706-bcbb-81885661f431
响应消息
● 响应参数
表5-16 成功响应参数
参数 参数类型 描述
id String 模板ID
● 响应示例
正确响应示例如下,错误响应示例请参见表5-5。
{ "id": "d078e49c-124c-7706-bcbb-81885661f431"
}
状态码
● 正常
表5-17 状态码
状态码 描述
200 模板更新成功
● 异常
表5-18 状态码
状态码 描述
400 请求参数有误,当前请求无法被服务器解析。除非进行修
改,否则客户端不应重复提交这个请求。
404 请求的资源不存在。
409 由于和被请求的资源的当前状态之间存在冲突,请求无法完
成。
500 服务器遇到了一个未曾预料的状况,导致无法完成对请求的
处理。
5.4 删除模板
功能介绍
用于删除某个模板。
须知
只有不存在使用该模板创建的堆栈时才能删除。
URI
DELETE /v2/templates/{template_id}
表5-19 参数说明
参数 是否必选 描述
template_id 是 模板id
请求消息
N/A。
响应消息
如果删除成功响应消息的响应体为空,仅有http头。
删除失败响应消息如表5-5所示。
状态码
● 正常
表5-20 状态码
状态码 描述
204 模板删除成功
● 异常
表5-21 状态码
状态码 描述
400 请求参数有误。
状态码 描述
404 请求的资源不存在。
409 存在使用该模板的堆栈。
500 服务器遇到了一个未曾预料的状况,导致无法完成对请求的
处理。
5.5 下载模板
功能介绍
用于下载某个模板。
URI
GET /v2/templates/{template_id}/archive
表5-22 参数说明
参数 是否必选 描述
template_id 是 模板id
请求消息
N/A。
响应消息
● 响应参数
表5-23 响应消息头
参数 参数类型 描述
Content-Type String 消息体的类型(格式):application/
octet-stream;charset=UTF-8
响应内容:
模板文件内容:
tosca_definitions_version: huaweicloud_tosca_version_1_0 description: Sample template for IaaS resource
inputs:
az:
default: cn-north-4a
description: 可用区##Availability Zone
type: HuaweiCloud.ECS.AvailabilityZone.Name label: 弹性云服务器##ECS
flavor:
default: s2.large.2
description: 云服务器的规格##ECS specification label: 弹性云服务器##ECS
image:
default: 1189efbf-d48b-46ad-a823-94b942e2a000
description: 云服务器使用的镜像ID##ID of the image used by the ECS type: HuaweiCloud.ECS.Image.Id
label: 弹性云服务器##ECS sshKey-name:
description: ssh密钥对##SSH key pair label: 弹性云服务器##ECS
mycloudserver_rootVolume_volumeType:
description: 系统盘类型##Root Volume Type label: 弹性云服务器##ECS
subnet-cidr:
default: 192.168.1.0/24
description: 子网的CIDR##CIDR of subnet label: 子网##Subnet
subnet-gateway:
default: 192.168.1.1
description: 子网的网关地址##Gateway of subnet label: 子网##Subnet
vm-name:
default: my-cloudserver
description: 云服务器名称##ECS name label: 弹性云服务器##ECS
vpc-cidr:
default: 192.168.0.0/16
description: 虚拟私有云下可用子网范围##Available subnet ranges under VPC label: 虚拟私有云##VPC
node_templates:
mycloudserver:
properties:
availabilityZone:
get_input: az flavor:
get_input: flavor imageId:
get_input: image name:
get_input: vm-name nics:
- subnetId:
get_reference: mysubnet publicIP:
eip:
bandwidth:
shareType: PER size: 1 ipType: 5_bgp sshKeyName:
get_input: sshKey-name vpcId:
get_reference: myvpc rootVolume:
volumeType:
get_input: mycloudserver_rootVolume_volumeType requirements:
- nics.subnetId:
node: mysubnet - vpcId:
node: myvpc
type: HuaweiCloud.ECS.CloudServer mysubnet:
properties:
availabilityZone:
get_input: az cidr:
get_input: subnet-cidr dnsList:
- 192.168.0.1 - 192.168.0.0 gateway:
get_input: subnet-gateway name: ''
vpcId:
get_reference: myvpc requirements:
- vpcId:
node: myvpc
relationship: HuaweiCloud.Relationships.ContainedIn type: HuaweiCloud.VPC.Subnet
myvpc:
properties:
cidr:
get_input: vpc-cidr name: ''
type: HuaweiCloud.VPC.VPC outputs:
ecs-eip:
value:
get_attribute:
- mycloudserver - floatingIpId ecs-id:
value:
get_attribute:
- mycloudserver - refID
subnet-name:
value:
get_attribute:
- mysubnet - refName vpc-name:
value:
get_attribute:
- myvpc - refName
状态码
● 正常
表5-24 状态码
状态码 描述
200 模板下载成功
● 异常
表5-25 状态码
状态码 描述
400 请求参数有误,当前请求无法被服务器解析。除非进行修
改,否则客户端不应重复提交这个请求。
状态码 描述
404 请求的资源不存在。
409 由于和被请求的资源的当前状态之间存在冲突,请求无法完
成。
500 服务器遇到了一个未曾预料的状况,导致无法完成对请求的
处理。
5.6 查询模板
功能介绍
用于查询某个模板。
URI
GET /v2/templates/{template_id}
表5-26 参数说明
参数 是否必选 描述
template_id 是 模板id
请求消息
N/A。
响应消息
● 响应参数
失败的响应消息如表5-5所示。
表5-27 响应参数
参数 参数类型 描述
id String 模板ID
name String 模板名称
version String 模板版本
vendor String 模板发布者
description String 模板描述 project_id String 模板所属项目ID
参数 参数类型 描述
template_url String 模板包的存放地址 origin_template_
url String 模板包的原始地址
converge_url String 模板的转化包地址,用于模板预览使 用。
create_at String 模板创建时间 update_at String 模板更新时间
scope String 模板可用范围
● project:项目内可用(现已不支持 新建该范围的模板)
● domain:租户内可用
● public:全局可用(跨租户可用)
domain String 模板所属租户名称
main_file_name String 主文件名,为空使用默认值,为 blueprint.yaml。
need_clutser Boolean 判断模板是否需要CCE集群。当前AOS 的应用都需要部署在CCE集群上。
dsl_version String 模板的DSL版本
is_used Boolean 检查模板是否在使用中(即存在使用此 模板创建的堆栈),true表示在使用 中。
is_new_template Boolean 模板是否是新模板
include_stack Boolean 模板里面是否包含堆栈(AOS.Stack)
元素
● 响应示例
{ "id": "fd3f1e6d-cc93-c3c3-d015-f69c3ff3bc63", "name": "test-z",
"version": "v2", "vendor": "aos-team", "description": "", "project_id": "",
"template_url": "https://swr-api-server.manage.svc.cluster.local:20202/swr/v2/domains/aos-team/
namespaces/aos-teame002/repositories/stack_templates/packages/test-z/versions/v2/file_paths/
blueprint.zip",
"converge_url": "https://swr-api-server.manage.svc.cluster.local:20202/swr/v2/domains/aos-team/
namespaces/aos-teame002/repositories/stack_templates/packages/test-z/versions/v2/file_paths/test-z- v2-converge.tar.gz",
"create_at": "2017-12-16T04:09:24Z", "update_at": "2017-12-16T04:09:26Z", "scope": "domain",
"domain": "aos-team",
"main_file_name": "blueprint.yaml", "need_cluster": true,
"dsl_version": "huaweicloud_tosca_version_"
}
状态码
● 正常
表5-28 状态码
状态码 描述
200 查询模板成功
● 异常
表5-29 状态码
状态码 描述
400 请求参数有误
404 请求资源不存在
5.7 查询模板输入
功能介绍
用于查询指定模板的输入参数。
URI
GET /v2/templates/{template_id}/inputs
表5-30 参数说明
参数 是否必选 描述
template_id 是 模板id
请求消息
N/A。
响应消息
● 响应参数
失败的响应参数如表5-5所示。
表5-31 响应参数
参数 参数类型 描述
[自定义key] Map<String,Obje
ct> key为模板输入参数名称,value为模 板输入参数对应的属性信息,详情请 参见表5-32。
表5-32 模板输入参数属性信息字段数据结构说明
参数 参数类型 描述
required Boolean 该参数能否置空,true / false。
default Integer or String or
Float or Boolean 模板内的默认参数。多种类型,根 据type字段选择。
description String 该参数的描述
type String 不同的模板输入参数类型。
● string: 字符串类型
● integer: 整数类型
● boolean: 布尔类型
● enum: 枚举类型,如果是枚举类 型,则输入中必须有constraints 字段内的valid_values字段
● float: 浮点数
● secret: 密钥类型
● password: 密码类型
● ip: IP类型
constraints Object 表示该参数值的限制规则,详情请 参见表5-33。
label String 该参数所属的标签组
advanced Boolean 表示该参数为高级配置,必须要有 默认值,界面显示默认隐藏。
immutable Boolean 表示该参数是否能够被修改
表5-33 参数限制结构说明
参数 参数类型 描述
in_range Array of integers 输入值需要大于等于最小值,并小 于等于最大值。
regex String 输入值需要满足正则表达式
参数 参数类型 描述 valid_values Array of integers/
string/float/boolean 输入值需要符合给定值中的任意一 个
equal Integer or String or
Float or Boolean 输入值需要等于该值 greater_or_equ
al Integer or String or
Float or Boolean 输入值需要大于等于该值 greater_than Integer or String or
Float or Boolean 输入值需要大于该值 less_or_equal Integer or String or
Float or Boolean 输入值需要小于等于该值 less_than Integer or String or
Float or Boolean 输入值需要小于该值
● 响应示例
{ "key1": {
"default": "192.168.12.22:30303/test_yj/frontend:latest", "immutable": false,
"type": "string"
}, "key2": { "default": 2, "immutable": false, "type": "integer"
}, "key3": {
"immutable": true, "type": "string"
}, "key4": { "type": "float", "constraints": {
"greater_or_equal": 0, "greater_than": 0, "less_or_equal": 2, "less_than": 2 }
} }
状态码
● 正常
表5-34 状态码
状态码 描述
200 查询模板输入参数成功
● 异常
表5-35 状态码
状态码 描述
400 请求参数有误
404 请求资源不存在
500 服务器遇到了一个未曾预料的状况,导致无法完成对请求的处
理。
5.8 获取模板列表
功能介绍
根据提供的参数获取模板列表。
URI
GET /v2.1/templates
表5-36 参数说明
参数 是否必选 描述
name 否 模板名称,适用于根据模板名称查询
模板ID场景。
offset 否 查询起始偏移,默认为0。
limit 否 单次查询总量,和offset必须成对出
现。
dsl_version 否 查询指定DSL版本的模板。
check_used 否 是否检查模板的使用情况,如果为空
默认false。
include_stack 否 值为true时查询解决方案模板,为 false时查询通用模板,为空时查询所 有模板。
请求消息
N/A。
响应消息
● 响应参数
失败响应消息如表5-5所示。
表5-37 响应参数
参数 参数类型 描述
templates Array of objects 数组元素为每个模板的所有版本详细 信息,详情请参见表5-38。
total Integer 模板总条数
表5-38 templates 字段数据结构说明
参数 参数类型 描述
template Array of objects 数组元素为模板的详细信息,详情请 参见表5-39。
表5-39 template 字段数据结构说明
参数 参数类型 描述
id String 模板ID
name String 模板名称
version String 模板版本
vendor String 模板发布者
description String 模板描述
template_url String 模板包的存放地址 create_at String 模板创建时间 update_at String 模板更新时间
scope String 模板可用范围
● project:项目内可用(现已不支持 新建该范围的模板)
● domain:租户内可用
● public:全局可用(跨租户可用)
domain String 模板所属租户名称
need_clutser Boolean 判断模板是否需要CCE集群。当前AOS 的应用都需要部署在CCE集群上。
dsl_version String 模板的DSL版本 is_new_template Boolean 模板是否是新模板
include_stack Boolean 模板里面是否包含堆栈(AOS.Stack)
元素
参数 参数类型 描述
is_used Boolean 检查模板是否在使用中(即存在使用此 模板创建的堆栈),true表示在使用 中。
表5-40 响应消息头
参数 是否必选 参数
类型
取值范围 描述
Content-
Range 否 String 具体取值依赖于
用户的模板数 量。
示例:items 0-24/66
分页信息,items为 起始和终止,以及 总数”。
● 响应示例
{ "templates": [ {
"template": [ {
"id": "74252143-4ca1-7ddb-d585-6be6786d1209", "name": "api-test",
"version": "1.0",
"vendor": "paas_aos_w00417971", "description": "",
"template_url": "",
"create_at": "2020-07-10T07:29:25Z", "update_at": "2020-07-14T11:07:09Z", "scope": "domain",
"domain": "paas_aos_w00417971", "need_cluster": false,
"dsl_version": "", "include_stack": false, "is_new_template": false, "is_used": false
}, {
"id": "34b159d8-cdf2-6764-e97b-8eb45b8e0f5b", "name": "api-test",
"version": "1.1",
"vendor": "paas_aos_w00417971", "description": "",
"template_url": "",
"create_at": "2020-07-14T11:05:36Z", "update_at": "2020-07-14T11:05:36Z", "scope": "domain",
"domain": "paas_aos_w00417971", "need_cluster": false,
"dsl_version": "", "include_stack": false, "is_new_template": false, "is_used": false
} ] }, "total": 2 }
状态码
● 正常
表5-41 状态码
状态码 描述
200 查询模板列表成功。
● 异常
表5-42 状态码
状态码 描述
500 服务器遇到了一个未曾预料的状况,导致无法完成对请求的处
理。
5.9 创建堆栈
功能介绍
用于创建堆栈。
说明
堆栈的输入由模板和输入参数两部分组成。
● 模板:定义了堆栈的骨架,决定了堆栈内部节点的构造以及节点间的关系,以及每个节点的 属性的值或来源。
● 输入参数:是模板内节点属性值的来源之一,定义在模板的inputs字段下,由模板内的 get_input函数触发。
URI
POST /v2/stacks
请求消息
● 请求参数
表5-43 请求参数
参数 是否必选 参数类型 描述
name 是 String 堆栈名称。限制同表5-2的name字 段。
参数 是否必选 参数类型 描述
project_id 是 String 堆栈所属项目的id,默认为用户token 所属项目,如果填写则必须与用户 token内项目信息一致。
长度[1, 63],由小写字母、数字和中 划线(-)组成,且不能以中划线开头结 尾。
description 否 String 堆栈描述。限制同表5-2的description 字段。
template_i
d 是 String 堆栈使用的模板id,长度[1, 64]。
inputs_json 否 Object 堆栈使用的模板输入参数。
该参数内每个key-value结构对应 inputs下名为key的字段,标明输入值 为value。
如果该处未指明某个key,则使用key 指定的默认值,如果没有默认值则报 错。
示例:"{'template_input_key':
'value'}"
force 否 Boolean 堆栈强制裁剪标识,适用于裁剪场
景。
labels 否 Object 堆栈标签,内部每个key-value表示一 个标签。key/value两个字段长度均为 [1, 64],且满足正则表达式^[a-zA- Z0-9_]+[-.a-zA-Z0-9_]*$。
namespace 否 String 编排CCE资源与应用时需要传入。堆 栈部署的命名空间,如果不传入,默 认使用default。
cluster_id 否 String 编排CCE资源与应用时需要传入。堆 栈所在集群ID。
action_para
meters 否 Object 堆栈创建后自动执行安装生命周期的 配置。限制同表5-44。
表5-44 生命周期配置
参数 是否必选 参数类型 描述
failure_stra
tegy 否 String 失败策略,默认DoNothing。取值范 围为DoNothing/Rollback。
auto_create 是 Boolean 默认为true。
参数 是否必选 参数类型 描述
timeout 否 Integer 生命周期超时时间,单位为分钟,默 认60分钟。取值范围为[0, 1440]
(最多一天,24*60)。
说明
inputs_json参数中输入虚机应用对应属性时,如果不在url字段或name字段中填入合法 url,则会通过name/version/repository字段访问SWR进行模糊查找。在软件仓库内文件较 多的情况下时间效率不高。可行的解决方案是填入url避免模糊查找,或将name/version/
repository填写详细,减少查找范围。
● 推荐的做法:url: http://SWR.url/xxx/file.tgz
● 较好的做法:name: file.tgz version: v1 repository: myProject
● 效率较低的做法: name: file.tgz
● 请求示例
{ "name": "aos-lm-verydows-t1",
"template_id": "b417b635-6ab2-1fed-b593-b129a9923ba2", "project_id": "10556c2112784111b8bf10512591189e", "cluster_id": "46c547ca-e96c-11e7-98b9-0255ac102005", "inputs_json": {
"ecsng-image": "192.168.3.88:20202/default/verydows-ecsng:2.1.1", "mysql-image": "192.168.3.88:20202/tangtao/verydows-mysql:5.6.35", "redis-image": "192.168.3.88:20202/default/verydows-redis:4.0.2_passwd", "verydows-image": "192.168.3.88:20202/default/verydows:2.3.1",
"verydows-install-image": "192.168.3.88:20202/default/verydows:2.3.1", "mysql-name": "verydows-mysql-t1"
} }
响应消息
● 响应参数
响应参数是一个堆栈结构或返回消息结构。
– 创建成功时返回堆栈结构。
– 创建失败时返回错误响应结构。
其中,堆栈结构如表3 响应参数所示, 返回错误响应结构如表5-5所示。
表5-45 响应参数
参数 参数类型 描述
name String 堆栈名称
guid String 堆栈id
description String 堆栈描述
project_id String 堆栈所属项目的id
domain_id String 堆栈所属租户
template_id String 模板id
参数 参数类型 描述
template_name String 模板名称
inputs_json String 堆栈使用的模板的输入参
数
status String 堆栈状态
resource_status String 堆栈资源状态
create_at String 堆栈创建时间
update_at String 堆栈更新时间
force Boolean 堆栈强制裁剪标识,适用
于裁剪场景
labels String 堆栈的标签
cluster_id String 堆栈所在集群ID
cluster_name String 堆栈所在集群名字
namespace String 堆栈所属命名空间
template_version String 堆栈使用的模板版本
dsl_version String 堆栈使用的模板语法版本
● 响应成功示例
{ "force": true,
"guid": "d956ea24-e979-11e7-9764-0255ac103504", "namespace": "default",
"project_id": "c261c106051448479eb7c66549866011", "cluster_name": "test-not-delete",
"cluster_id": "46c547ca-e96c-11e7-98b9-0255ac102005", "domain_id": "ef09dd6cc93f4653b5557181b802ee71", "name": "aos-lm-verydows-t1",
"description": "", "status": "",
"resource_status": "",
"template_id": "b417b635-6ab2-1fed-b593-b129a9923ba2", "previous_template_id": "",
"template_name": "verydows", "healthy": true,
"healthy_message": "",
"inputs_json": "{\"ecsng-container-port\":80,\"ecsng-image\":\"192.168.3.88:20202/default/
verydows-ecsng:2.1.1\",\"imagePullPolicy\":\"IfNotPresent\",\"mysql-container-port\":3306,\"mysql- database\":\"verydows\",\"mysql-image\":\"192.168.3.88:20202/tangtao/verydows-mysql:5.6.35\",
\"mysql-name\":\"verydows-mysql-t1\",\"mysql-password\":\"******\",\"mysql-port\":13306,\"mysql- root-password\":\"******\",\"mysql-user\":\"verydows\",\"redis-container-port\":6379,\"redis-image\":
\"192.168.3.88:20202/default/verydows-redis:4.0.2_passwd\",\"redis-password\":\"******\",\"redis-port\":
16379,\"verydows-container-port\":80,\"verydows-http-host\":\"\",\"verydows-image\":
\"192.168.3.88:20202/default/verydows:2.3.1\",\"verydows-install-image\":\"192.168.3.88:20202/
default/verydows:2.3.1\",\"verydows-port\":8088}", "previous_inputs_json": "",
"create_at": "", "update_at": "", "labels": "",
"template_version": "2.0.1",
"dsl_version": "huaweicloud_tosca_version_1_0"
}
● 响应失败示例
{ "message": "The request body is invalid, please check. Error: The stack name is already existed.", "code": "02030008",
"extend": ""
}
状态码
● 正常
表5-46 状态码
状态码 描述
201 堆栈创建成功
● 异常
表5-47 状态码
状态码 描述
400 请求参数无效或有不止一个包。
404 模板中定义的包不存在。
500 服务器遇到了一个未曾预料的状况,导致无法完成对请求的处
理。
5.10 删除堆栈
功能介绍
用于删除堆栈。
URI
DELETE /v2/stacks/{stack_id}
表5-48 参数说明
参数 是否必选 描述
stack_id 是 堆栈id,长度[1, 64]。
force 否 true/false,是否强制删除。只有在已
经进行过删除操作的情况下,才允许 使用强制删除操作。