更新时间:2023-08-04 GMT+08:00

创建堆栈

功能介绍

用于创建堆栈。

堆栈的输入由模板和输入参数两部分组成。

  • 模板:定义了堆栈的骨架,决定了堆栈内部节点的构造以及节点间的关系,以及每个节点的属性的值或来源。
  • 输入参数:是模板内节点属性值的来源之一,定义在模板的inputs字段下,由模板内的get_input函数触发。

URI

POST /v2/stacks

请求消息

  • 请求参数
    表1 请求参数

    参数

    是否必选

    参数类型

    描述

    name

    String

    堆栈名称。限制同表2的name字段。

    project_id

    String

    堆栈所属项目的id,默认为用户token所属项目,如果填写则必须与用户token内项目信息一致。

    长度[1, 63],由小写字母、数字和中划线(-)组成,且不能以中划线开头结尾。

    description

    String

    堆栈描述。限制同表2的description字段。

    template_id

    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_parameters

    Object

    堆栈创建后自动执行安装生命周期的配置。限制同表2

    表2 生命周期配置

    参数

    是否必选

    参数类型

    描述

    failure_strategy

    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所示。

    表3 响应参数

    参数

    参数类型

    描述

    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": ""
    }

状态码

  • 正常
    表4 状态码

    状态码

    描述

    201

    堆栈创建成功

  • 异常
    表5 状态码

    状态码

    描述

    400

    请求参数无效或有不止一个包。

    404

    模板中定义的包不存在。

    500

    服务器遇到了一个未曾预料的状况,导致无法完成对请求的处理。