OpenStack 应用目录 API v1

动作和静态动作

Murano 动作是一种 MuranoPL 方法。与常规 MuranoPL 方法的区别在于

  • 动作在已部署的对象上执行。

  • 动作执行由 API 请求发起:您无需手动调用该方法。

因此,Murano 动作允许对对象执行任何操作,例如

  • 获取 VM 的信息,例如在部署期间生成的配置

  • VM 重启

  • 伸缩

可用动作列表在环境部署期间形成。部署完成后,您可以异步调用该动作。Murano 引擎为每个动作生成一个任务,从而可以跟踪动作状态。

POST
/environments/{environment_id}/actions/{action_id}

执行动作

在已部署的环境上执行动作。

请求参数

名称

入参

类型

描述

environment_id

路径

字符串

环境的 UUID。

action_id

路径

字符串

要在已部署的环境上执行的动作的 UUID。

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

响应参数

名称

入参

类型

描述

X-Openstack-Request-Id

标头

UUID

用于跟踪服务请求的唯一 ID。默认情况下,与请求关联的请求 ID 出现在服务日志中。

task_id

body

字符串

与在已部署的环境上执行的动作关联的任务的 UUID。

响应示例

{
	"task_id": "9e60318629ef47378b583825e7d282b7"
}
GET
/environments/{environment_id}/actions/{task_id}

获取动作结果

检索在已部署的环境上执行的动作的结果。

请求参数

名称

入参

类型

描述

environment_id

路径

字符串

环境的 UUID。

task_id

路径

字符串

与在已部署的环境上执行的动作关联的任务的 UUID。

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

POST
/actions

执行静态动作

执行静态动作。

如果 MuranoPL 对象通过指定 Scope: Public 公开静态方法,则可以调用这些方法,并且将返回其执行结果。

请求示例

{
  "className": "ns.Bar",
  "methodName": "staticAction",
  "parameters": {"myName": "John"}
}

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

响应示例

"Hello, John"

类别

在 Murano 中,应用程序可以属于一个或多个类别。管理员用户可以创建和删除类别,以及列出可用的类别并查看特定类别的详细信息。

GET
/catalog/categories

列出类别

检索应用程序目录中所有可用类别的列表。

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

401 - 未授权

用户必须在发出请求之前进行身份验证。

响应参数

名称

入参

类型

描述

X-Openstack-Request-Id

标头

UUID

用于跟踪服务请求的唯一 ID。默认情况下,与请求关联的请求 ID 出现在服务日志中。

categories

body

数组

应用程序目录中所有可用的类别。

id

body

字符串

类别的 UUID。

name

body

字符串

类别的名称。

updated

body

字符串

对象更新的日期和时间。日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含 ±hh:mm 值,则为 UTC 的时区偏移量。

创建时间

body

字符串

资源被创建的日期和时间。日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含 ±hh:mm 值,则为 UTC 的时区偏移量。

package_count

body

整数

与类别关联的软件包数量。

响应示例

{
    "categories": [
        {
            "id": "0420045dce7445fabae7e5e61fff9e2f",
            "updated": "2014-12-26T13:57:04",
            "name": "Web",
            "created": "2014-12-26T13:57:04",
            "package_count": 1
        },
        {
            "id": "3dd486b1e26f40ac8f35416b63f52042",
            "updated": "2014-12-26T13:57:04",
            "name": "Databases",
            "created": "2014-12-26T13:57:04",
            "package_count": 0
        }
    ]
}
GET
/catalog/categories/{category_id}

显示类别详细信息

显示类别的详细信息。

请求参数

名称

入参

类型

描述

category_id

路径

字符串

类别的 UUID。

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

401 - 未授权

用户必须在发出请求之前进行身份验证。

404 - Not Found

找不到请求的资源。

响应参数

名称

入参

类型

描述

X-Openstack-Request-Id

标头

UUID

用于跟踪服务请求的唯一 ID。默认情况下,与请求关联的请求 ID 出现在服务日志中。

id

body

字符串

类别的 UUID。

name

body

字符串

类别的名称。

updated

body

字符串

对象更新的日期和时间。日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含 ±hh:mm 值,则为 UTC 的时区偏移量。

创建时间

body

字符串

资源被创建的日期和时间。日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含 ±hh:mm 值,则为 UTC 的时区偏移量。

packages

body

数组

与软件包关联的软件包列表。每个返回的软件包包括其 idfully_qualified_namename

package_count

body

整数

与类别关联的软件包数量。

响应示例

{
    "id": "b308f7fa8a2f4a5eb419970c827f4466",
    "updated": "2015-01-28T17:00:19",
    "packages": [
        {
            "fully_qualified_name": "io.murano.apps.ZabbixServer",
            "id": "4dfb566e69e6445fbd4aea5099fe95e9",
            "name": "Zabbix Server"
        }
    ],
    "name": "Web",
    "created": "2015-01-28T17:00:19",
    "package_count": 1
}
POST
/catalog/categories

创建类别

将新类别添加到应用程序目录。

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

401 - 未授权

用户必须在发出请求之前进行身份验证。

409 - Conflict

此操作与此资源的另一个操作冲突。

请求参数

名称

入参

类型

描述

name

body

字符串

类别的名称。

响应参数

名称

入参

类型

描述

X-Openstack-Request-Id

标头

UUID

用于跟踪服务请求的唯一 ID。默认情况下,与请求关联的请求 ID 出现在服务日志中。

id

body

字符串

类别的 UUID。

name

body

字符串

类别的名称。

updated

body

字符串

对象更新的日期和时间。日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含 ±hh:mm 值,则为 UTC 的时区偏移量。

创建时间

body

字符串

资源被创建的日期和时间。日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含 ±hh:mm 值,则为 UTC 的时区偏移量。

package_count

body

整数

与类别关联的软件包数量。

响应示例

{
    "id": "ce373a477f211e187a55404a662f968",
    "name": "category_name",
    "created": "2013-11-30T03:23:42Z",
    "updated": "2013-11-30T03:23:44Z",
    "package_count": 0
}
DELETE
/catalog/categories/{category_id}

删除类别

从应用程序目录中删除现有类别。

请求参数

名称

入参

类型

描述

category_id

路径

字符串

类别的 UUID。

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

部署

部署跟踪已部署的环境,无论成功与否。每个部署包含以下信息

  • 一个“Class: Environment”对象 (io.murano.Environment) 带有名称。每个“Class: Environment”对象根据部署过程定义一个环境,并将所有应用程序及其相关基础设施组合在一起。

  • 一个或多个引用现有网络的对象。

  • 一个应用程序列表(例如 io.murano.apps.linux.Telnet)。每个应用程序包含,或以其他方式引用,其所需的一切。Telnet 示例具有一个名为 instance 的属性,其契约规定它必须是 io.murano.resources.Instance 类型。反过来,Instance 具有其所需的属性(例如 nameflavor 或密钥对名称 keyname)。

GET
/deployments

列出部署

列出当前租户(项目)的所有环境的部署。

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

401 - 未授权

用户必须在发出请求之前进行身份验证。

响应参数

名称

入参

类型

描述

X-Openstack-Request-Id

标头

UUID

用于跟踪服务请求的唯一 ID。默认情况下,与请求关联的请求 ID 出现在服务日志中。

deployments

body

数组

当前环境或当前租户(项目)所有环境的部署列表。

以下 API 控制是返回按环境还是按项目进行的部署

  • /deployments:返回项目的全部部署。

  • /environments/{env_id}/deployments:返回项目中某个环境的所有部署。

响应示例

{
    "deployments": [
        {
            "updated": "2014-05-15T07:24:21",
            "environment_id": "744e44812da84e858946f5d817de4f72",
            "description": {
                "services": [
                    {
                        "instance": {
                            "flavor": "m1.medium",
                            "image": "cloud-fedora-v3",
                            "?": {
                                "type": "io.murano.resources.Instance",
                                "id": "ef729199-c71e-4a4c-a314-0340e279add8"
                            },
                            "name": "xkaduhv7qeg4m7"
                        },
                        "name": "teslnet1",
                        "?": {
                            "_26411a1861294160833743e45d0eaad9": {
                                "name": "Telnet"
                            },
                            "type": "io.murano.apps.linux.Telnet",
                            "id": "6e437be2-b5bc-4263-8814-6fd57d6ddbd5"
                        }
                    }
                ],
                "defaultNetworks": {
                    "environment": {
                        "name": "test2-network",
                        "?": {
                            "type": "io.murano.lib.networks.neutron.NewNetwork",
                            "id": "b6a1d515434047d5b4678a803646d556"
                        }
                    },
                    "flat": null
                },
                "name": "test2",
                "?": {
                    "type": "io.murano.Environment",
                    "id": "744e44812da84e858946f5d817de4f72"
                }
            },
            "created": "2014-05-15T07:24:21",
            "started": "2014-05-15T07:24:21",
            "finished": null,
            "state": "running",
            "id": "327c81e0e34a4c93ad9b9052ef42b752"
        }
    ]
}

环境

环境是一组逻辑连接的应用程序,它们组合在一起以便于管理。默认情况下,每个环境为其所有应用程序都有一个网络,并且环境的部署在一个 heat 堆栈中定义。不同环境中的应用程序始终相互独立。

环境是一个单一的部署单元。这意味着您不能仅部署包含单个应用程序的环境,还可以部署包含多个应用程序的环境。

GET
/environments

列出环境

获取现有环境的列表

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

请求参数

名称

入参

类型

描述

all_tenants (可选)

查询

布尔值

指示是否列出所有项目的环境。 True 列出所有项目的环境。需要管理员用户。 False 仅列出当前项目的环境(默认选项未指定)。

tenant (可选)

查询

字符串

指示列出指定租户的环境。需要管理员用户。

响应参数

名称

入参

类型

描述

X-Openstack-Request-Id

标头

UUID

用于跟踪服务请求的唯一 ID。默认情况下,与请求关联的请求 ID 出现在服务日志中。

environments

body

数组

一个 environment 对象列表。

status

body

字符串

环境的当前状态。可用的状态是

  • 准备配置。当环境是新的并且不包含任何组件时。

  • 准备部署。当环境包含一个或多个组件并且准备好进行部署时。

  • 已就绪。当环境已成功部署时。

  • 正在部署。当正在进行部署时。

  • 部署失败。当部署因错误而完成时。

  • 正在删除。当正在进行环境删除时。

  • 删除失败。在这种情况下,您可以放弃环境。

创建时间

body

字符串

资源被创建的日期和时间。日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含 ±hh:mm 值,则为 UTC 的时区偏移量。

updated

body

字符串

对象更新的日期和时间。日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含 ±hh:mm 值,则为 UTC 的时区偏移量。

name

body

字符串

环境的名称。名称必须至少包含一个非空格字符,且长度小于 256 个字符。

description_text

body

字符串

环境的描述。

tenant_id

body

字符串

租户的 UUID。租户也称为项目。

版本

body

int

当前版本。

id

body

字符串

环境的 UUID。

响应示例

{
    "environments": [
        {
            "status": "ready",
            "updated": "2014-05-14T13:02:54",
            "networking": {},
            "name": "test1",
            "created": "2014-05-14T13:02:46",
            "tenant_id": "726ed856965f43cc8e565bc991fa76c3",
            "version": 0,
            "id": "2fa5ab704749444bbeafe7991b412c33"
        },
        {
            "status": "ready",
            "updated": "2014-05-14T13:02:55",
            "networking": {},
            "name": "test2",
            "created": "2014-05-14T13:02:51",
            "tenant_id": "726ed856965f43cc8e565bc991fa76c3",
            "version": 0,
            "id": "744e44812da84e858946f5d817de4f72"
        }
    ]
}
POST
/environments

创建环境

创建一个环境。

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

409 - Conflict

此操作与此资源的另一个操作冲突。

请求参数

名称

入参

类型

描述

name

body

字符串

环境的名称。名称必须至少包含一个非空格字符。

请求示例

{"name": "env_name"}

响应参数

名称

入参

类型

描述

X-Openstack-Request-Id

标头

UUID

用于跟踪服务请求的唯一 ID。默认情况下,与请求关联的请求 ID 出现在服务日志中。

id

body

字符串

环境的 UUID。

name

body

字符串

环境的名称。名称必须至少包含一个非空格字符,且长度小于 256 个字符。

description_text

body

字符串

环境的描述。

创建时间

body

字符串

资源被创建的日期和时间。日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含 ±hh:mm 值,则为 UTC 的时区偏移量。

updated

body

字符串

对象更新的日期和时间。日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含 ±hh:mm 值,则为 UTC 的时区偏移量。

tenant_id

body

字符串

租户的 UUID。租户也称为项目。

版本

body

int

当前版本。

services

body

数组

一个 service 对象列表。

acquired_by

body

字符串

当前 部署 环境的会话。返回处于 DEPLOYING 状态的环境的 第一个 会话 ID。

响应示例

{
  "status": "ready",
  "updated": "2017-04-27T15:36:02",
  "created": "2017-04-27T15:36:02",
  "tenant_id": "cca37eef752244d99945a4123f30ff79",
  "acquired_by": null,
  "services": [],
  "version": 0,
  "description_text": "",
  "id": "a2977db57398401aba5804ef2211a2a3",
  "name": "env_name"
}
PUT
/environments/{env_id}

重命名环境

重命名一个环境。

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

409 - Conflict

此操作与此资源的另一个操作冲突。

请求参数

名称

入参

类型

描述

env_id

路径

字符串

环境的 UUID。

name

路径

字符串

环境的名称。名称必须至少包含一个非空格字符。

请求示例

{"name": "env_name_changed"}

响应参数

名称

入参

类型

描述

X-Openstack-Request-Id

标头

UUID

用于跟踪服务请求的唯一 ID。默认情况下,与请求关联的请求 ID 出现在服务日志中。

id

body

字符串

环境的 UUID。

name

body

字符串

环境的名称。名称必须至少包含一个非空格字符,且长度小于 256 个字符。

description_text

body

字符串

环境的描述。

创建时间

body

字符串

资源被创建的日期和时间。日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含 ±hh:mm 值,则为 UTC 的时区偏移量。

updated

body

字符串

对象更新的日期和时间。日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含 ±hh:mm 值,则为 UTC 的时区偏移量。

tenant_id

body

字符串

租户的 UUID。租户也称为项目。

版本

body

int

当前版本。

services

body

数组

一个 service 对象列表。

acquired_by

body

字符串

当前 部署 环境的会话。返回处于 DEPLOYING 状态的环境的 第一个 会话 ID。

响应示例

{
  "status": "ready",
  "updated": "2017-04-27T16:01:29",
  "created": "2017-04-27T15:33:55",
  "tenant_id": "cca37eef752244d99945a4123f30ff79",
  "acquired_by": null,
  "services": [],
  "version": 0,
  "description_text": "",
  "id": "f199275420ff4e938e0307b0cf68374d",
  "name": "env_name_changed"
}
GET
/environments/{env_id}

显示环境详细信息

显示环境的详细信息。

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

请求参数

名称

入参

类型

描述

env_id

路径

字符串

环境的 UUID。

响应参数

名称

入参

类型

描述

X-Openstack-Request-Id

标头

UUID

用于跟踪服务请求的唯一 ID。默认情况下,与请求关联的请求 ID 出现在服务日志中。

id

body

字符串

环境的 UUID。

name

body

字符串

环境的名称。名称必须至少包含一个非空格字符,且长度小于 256 个字符。

description_text

body

字符串

环境的描述。

创建时间

body

字符串

资源被创建的日期和时间。日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含 ±hh:mm 值,则为 UTC 的时区偏移量。

updated

body

字符串

对象更新的日期和时间。日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含 ±hh:mm 值,则为 UTC 的时区偏移量。

tenant_id

body

字符串

租户的 UUID。租户也称为项目。

版本

body

int

当前版本。

services

body

数组

一个 service 对象列表。

acquired_by

body

字符串

当前 部署 环境的会话。返回处于 DEPLOYING 状态的环境的 第一个 会话 ID。

响应示例

{
  "status": "ready",
  "updated": "2017-04-27T15:36:02",
  "created": "2017-04-27T15:36:02",
  "tenant_id": "cca37eef752244d99945a4123f30ff79",
  "acquired_by": null,
  "services": [
    {
        "instance": {
            "flavor": "m1.medium",
            "image": "cloud-fedora-v3",
            "name": "exgchhv6nbika2",
            "ipAddresses": [
                "10.0.0.200"
            ],
            "?": {
                "type": "io.murano.resources.Instance",
                "id": "14cce9d9-aaa1-4f09-84a9-c4bb859edaff"
            }
        },
        "name": "rewt4w56",
        "?": {
            "status": "ready",
            "_26411a1861294160833743e45d0eaad9": {
                "name": "Telnet"
            },
            "type": "io.murano.apps.linux.Telnet",
            "id": "446373ef-03b5-4925-b095-6c56568fa518"
        }
    }
  ],
  "version": 0,
  "description_text": "",
  "id": "a2977db57398401aba5804ef2211a2a3",
  "name": "env_name"
}
DELETE
/environments/{env_id}

删除环境

删除指定的环境。

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

请求参数

名称

入参

类型

描述

env_id

路径

字符串

环境的 UUID。

abandon (可选)

路径

布尔值

指示如何删除环境。 True 用于仅清理数据库时。 False 用于销毁环境使用的所有资源时。

响应参数

此请求不在响应主体中返回任何内容。

GET
/environments/{env_id}/model/{path}

获取环境模型

获取一个环境模型。

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

请求参数

名称

入参

类型

描述

env_id

路径

字符串

环境的 UUID。

path (可选)

路径

字符串

允许获取模型的特定部分,例如 defaultNetworksregion? 或任何子部分。

响应参数

名称

入参

类型

描述

X-Openstack-Request-Id

标头

UUID

用于跟踪服务请求的唯一 ID。默认情况下,与请求关联的请求 ID 出现在服务日志中。

defaultNetworks

body

对象

环境的默认网络信息。信息包括网络的 name,以及网络的 typeid,包含在 ? 属性中。

一个示例 defaultNetworks 对象如下

"defaultNetworks": {
    "environment": {
        "internalNetworkName": "net_two",
        "?": {
            "type": "io.murano.resources.ExistingNeutronNetwork",
            "id": "594e94fcfe4c48ef8f9b55edb3b9f177"
        }
    },
    "flat": null
}

region

body

字符串

环境的当前区域。

regions

body

对象

云环境的详细区域信息。

name

body

字符串

环境的名称。名称必须至少包含一个非空格字符,且长度小于 256 个字符。

services

body

数组

一个 service 对象列表。

?

body

对象

环境的 ? 部分,包含关于环境模型的信息,包括其 typeid 和关联的 metadata

响应示例

{
    "defaultNetworks": {
        "environment": {
            "internalNetworkName": "net_two",
            "?": {
                "type": "io.murano.resources.ExistingNeutronNetwork",
                "id": "594e94fcfe4c48ef8f9b55edb3b9f177"
            }
        },
        "flat": null
    },
    "region": "RegionTwo",
    "name": "new_env",
    "regions": {
        "": {
            "defaultNetworks": {
                "environment": {
                    "autoUplink": true,
                    "name": "new_env-network",
                    "externalRouterId": null,
                    "dnsNameservers": [],
                    "autogenerateSubnet": true,
                    "subnetCidr": null,
                    "openstackId": null,
                    "?": {
                        "dependencies": {
                            "onDestruction": [{
                                "subscriber": "c80e33dd67a44f489b2f04818b72f404",
                                "handler": null
                            }]
                        },
                        "type": "io.murano.resources.NeutronNetwork/0.0.0@io.murano",
                        "id": "e145b50623c04a68956e3e656a0568d3",
                        "name": null
                    },
                    "regionName": "RegionOne"
                },
                "flat": null
            },
            "name": "RegionOne",
            "?": {
                "type": "io.murano.CloudRegion/0.0.0@io.murano",
                "id": "c80e33dd67a44f489b2f04818b72f404",
                "name": null
            }
        },
        "RegionOne": "c80e33dd67a44f489b2f04818b72f404",
        "RegionTwo": {
            "defaultNetworks": {
                "environment": {
                    "autoUplink": true,
                    "name": "new_env-network",
                    "externalRouterId": "e449bdd5-228c-4747-a925-18cda80fbd6b",
                    "dnsNameservers": ["8.8.8.8"],
                    "autogenerateSubnet": true,
                    "subnetCidr": "10.0.198.0/24",
                    "openstackId": "00a695c1-60ff-42ec-acb9-b916165413da",
                    "?": {
                        "dependencies": {
                            "onDestruction": [{
                                "subscriber": "f8cb28d147914850978edb35eca156e1",
                                "handler": null
                            }]
                        },
                        "type": "io.murano.resources.NeutronNetwork/0.0.0@io.murano",
                        "id": "72d2c13c600247c98e09e2e3c1cd9d70",
                        "name": null
                    },
                    "regionName": "RegionTwo"
                },
                "flat": null
            },
            "name": "RegionTwo",
            "?": {
                "type": "io.murano.CloudRegion/0.0.0@io.murano",
                "id": "f8cb28d147914850978edb35eca156e1",
                "name": null
            }
        }
    },
    "services": [],
    "?": {
        "type": "io.murano.Environment/0.0.0@io.murano",
        "_actions": {
            "f7f22c174070455c9cafc59391402bdc_deploy": {
                "enabled": true,
                "name": "deploy",
                "title": "deploy"
            }
        },
        "id": "f7f22c174070455c9cafc59391402bdc",
        "name": null
    }
}
PATCH
/environments/{env_id}/model/

更新环境模型

更新一个环境模型。

响应代码

成功

代码

原因

202 - Accepted

请求已被接受处理,但处理尚未完成。响应中包含一个“location”头部,其中包含一个链接以检查请求的进度。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

409 - Conflict

此操作与此资源的另一个操作冲突。

请求参数

名称

入参

类型

描述

env_id

路径

字符串

环境的 UUID。

请求示例

[{
  "op": "replace",
  "path": "/defaultNetworks/flat",
  "value": true
}]

响应参数

名称

入参

类型

描述

X-Openstack-Request-Id

标头

UUID

用于跟踪服务请求的唯一 ID。默认情况下,与请求关联的请求 ID 出现在服务日志中。

defaultNetworks

body

对象

环境的默认网络信息。信息包括网络的 name,以及网络的 typeid,包含在 ? 属性中。

一个示例 defaultNetworks 对象如下

"defaultNetworks": {
    "environment": {
        "internalNetworkName": "net_two",
        "?": {
            "type": "io.murano.resources.ExistingNeutronNetwork",
            "id": "594e94fcfe4c48ef8f9b55edb3b9f177"
        }
    },
    "flat": null
}

region

body

字符串

环境的当前区域。

regions

body

对象

云环境的详细区域信息。

name

body

字符串

环境的名称。名称必须至少包含一个非空格字符,且长度小于 256 个字符。

services

body

数组

一个 service 对象列表。

?

body

对象

环境的 ? 部分,包含关于环境模型的信息,包括其 typeid 和关联的 metadata

响应示例

{
    "defaultNetworks": {
        "environment": {
            "internalNetworkName": "net_two",
            "?": {
                "type": "io.murano.resources.ExistingNeutronNetwork",
                "id": "594e94fcfe4c48ef8f9b55edb3b9f177"
            }
        },
        "flat": null
    },
    "region": "RegionTwo",
    "name": "new_env",
    "regions": {
        "": {
            "defaultNetworks": {
                "environment": {
                    "autoUplink": true,
                    "name": "new_env-network",
                    "externalRouterId": null,
                    "dnsNameservers": [],
                    "autogenerateSubnet": true,
                    "subnetCidr": null,
                    "openstackId": null,
                    "?": {
                        "dependencies": {
                            "onDestruction": [{
                                "subscriber": "c80e33dd67a44f489b2f04818b72f404",
                                "handler": null
                            }]
                        },
                        "type": "io.murano.resources.NeutronNetwork/0.0.0@io.murano",
                        "id": "e145b50623c04a68956e3e656a0568d3",
                        "name": null
                    },
                    "regionName": "RegionOne"
                },
                "flat": null
            },
            "name": "RegionOne",
            "?": {
                "type": "io.murano.CloudRegion/0.0.0@io.murano",
                "id": "c80e33dd67a44f489b2f04818b72f404",
                "name": null
            }
        },
        "RegionOne": "c80e33dd67a44f489b2f04818b72f404",
        "RegionTwo": {
            "defaultNetworks": {
                "environment": {
                    "autoUplink": true,
                    "name": "new_env-network",
                    "externalRouterId": "e449bdd5-228c-4747-a925-18cda80fbd6b",
                    "dnsNameservers": ["8.8.8.8"],
                    "autogenerateSubnet": true,
                    "subnetCidr": "10.0.198.0/24",
                    "openstackId": "00a695c1-60ff-42ec-acb9-b916165413da",
                    "?": {
                        "dependencies": {
                            "onDestruction": [{
                                "subscriber": "f8cb28d147914850978edb35eca156e1",
                                "handler": null
                            }]
                        },
                        "type": "io.murano.resources.NeutronNetwork/0.0.0@io.murano",
                        "id": "72d2c13c600247c98e09e2e3c1cd9d70",
                        "name": null
                    },
                    "regionName": "RegionTwo"
                },
                "flat": null
            },
            "name": "RegionTwo",
            "?": {
                "type": "io.murano.CloudRegion/0.0.0@io.murano",
                "id": "f8cb28d147914850978edb35eca156e1",
                "name": null
            }
        }
    },
    "services": [],
    "?": {
        "type": "io.murano.Environment/0.0.0@io.murano",
        "_actions": {
            "f7f22c174070455c9cafc59391402bdc_deploy": {
                "enabled": true,
                "name": "deploy",
                "title": "deploy"
            }
        },
        "id": "f7f22c174070455c9cafc59391402bdc",
        "name": null
    }
}
GET
/environments/{env_id}/lastStatus

获取环境最新状态

获取环境中每个服务的最新状态。

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

请求参数

名称

入参

类型

描述

env_id

路径

字符串

环境的 UUID。

响应参数

名称

入参

类型

描述

X-Openstack-Request-Id

标头

UUID

用于跟踪服务请求的唯一 ID。默认情况下,与请求关联的请求 ID 出现在服务日志中。

lastStatuses

body

对象

显示环境中每个服务的最新状态。响应对象包括按 service_id 划分的详细信息。

响应示例

{
    "lastStatuses": {
        "66563e45-4d0a-451e-8138-7bc773b0607d": {
            "updated": "2017-03-09T07:31:51",
            "task_id": "1267d8dfcf2144f9a31f0f033defa0fd",
            "level": "info",
            "text": "Unable to install ApacheHttpServer on node-1 due to The murano-agent did not respond within 3600 seconds",
            "created": "2017-03-09T07:31:51",
            "entity_id": "66563e45-4d0a-451e-8138-7bc773b0607d",
            "entity": null,
            "details": null,
            "id": "4f93ae1f73294bf1a58cbc59fffe6238"
        }
    }
}

软件包

在 Murano 中,每个应用程序以及应用程序数据输入的 UI 表单都由软件包定义。

软件包结构

Murano 应用程序软件包的结构是预定义的。应用程序软件包根文件夹应包含以下内容

  • manifest.yaml 文件是应用程序的入口点。

    注意

    文件名是固定的,因此不要使用任何自定义名称。

  • Classes 文件夹包含 MuranoPL 类定义。

  • Resources 文件夹包含执行计划模板以及位于其中的所有应用程序部署所需的文件 scripts 文件夹。

  • UI 文件夹包含动态 UI YAML 定义。

  • logo.png 文件(可选)是与您的应用程序关联的图像文件。徽标出现在 Murano Dasboard 的应用程序目录中。

    注意

    对于图像文件名没有特殊限制。但是,如果它与默认的 logo.png 不同,请在应用程序清单文件中指定它。

  • images.lst 文件(可选)包含应用程序所需的图像列表。

注意

捆绑包是软件包的集合。在社区应用程序目录中,您可以找到诸如 container-based-appsapp-servers 等捆绑包。应用程序目录中的软件包按使用情况排序。

GET
/v1/catalog/packages

列出软件包

获取软件包列表

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

请求参数

名称

入参

类型

描述

catalog (可选)

查询

布尔值

如果 false(默认)- 搜索当前用户可以编辑(非管理员所有,管理员全部)的软件包。如果 true - 搜索当前用户可以部署(即他自己的 + 公共)的软件包。

marker (可选)

查询

字符串

可以指定软件包标识符标记。如果存在,将仅列出发生在此 ID 之后的软件包。

limit (可选)

查询

字符串

如果存在,返回结果的最大数量将不超过指定值。限制和标记的典型模式是发出初始限制请求,然后在后续限制请求中使用响应中最后一个软件包的 ID 作为标记参数。

order_by (可选)

查询

字符串

允许按 fqnnamecreated 排序软件包。Created 是默认值。

type (可选)

查询

字符串

允许按类型过滤软件包,例如 applicationlibrary

category (可选)

查询

字符串

允许按类别过滤。

fqn (可选)

查询

字符串

允许按完全限定名过滤。

owned (可选)

查询

布尔值

仅搜索当前项目拥有的软件包。

id (可选)

查询

字符串

允许按软件包 ID 过滤。

include_disabled (可选)

查询

布尔值

在结果中包含禁用的软件包。

search (可选)

查询

字符串

有机会通过所有软件包参数搜索指定的数据并对软件包进行排序。

class_name (可选)

查询

字符串

仅搜索使用指定类的软件包。

name (可选)

查询

字符串

允许按软件包名称过滤。

响应参数

名称

入参

类型

描述

X-Openstack-Request-Id

标头

UUID

用于跟踪服务请求的唯一 ID。默认情况下,与请求关联的请求 ID 出现在服务日志中。

packages

body

数组

一个 package 对象列表。

updated

body

字符串

对象更新的日期和时间。日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含 ±hh:mm 值,则为 UTC 的时区偏移量。

class_definitions

body

数组

软件包的 class_definitions。

id

body

字符串

软件包的 UUID。

fully_qualified_name

body

字符串

软件包的 fqn。

is_public

body

布尔值

软件包是否与其他项目共享。

name

body

字符串

软件包的名称。

type

body

字符串

软件包的类型。

supplier

body

对象

软件包的供应商信息。

description

body

字符串

软件包的描述。

author

body

字符串

软件包的作者。

创建时间

body

字符串

资源被创建的日期和时间。日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含 ±hh:mm 值,则为 UTC 的时区偏移量。

enabled

body

布尔值

软件包是否在应用程序目录中浏览。

tags

body

数组

软件包的标签。

categories

body

数组

与软件包关联的类别。

owner_id

body

字符串

软件包的拥有者 ID。

响应示例

{
    "packages": [
        {
            "updated": "2017-03-30T08:35:03",
            "description": "Library of base class to develop scalable Applications with MuranoPL\n",
            "tags": [],
            "class_definitions": [
                "io.murano.applications.tests.TestPoolReplicaProvider",
                "io.murano.applications.SingleServerApplication",
                "io.murano.applications.tests.TestSoftwareComponent",
                "io.murano.applications.SoftwareComponent",
                "io.murano.applications.tests.TestEvents",
                "io.murano.applications.CloneReplicaProvider",
                "io.murano.applications.PoolReplicaProvider",
                "io.murano.applications.Event",
                "io.murano.applications.SingleServerGroup",
                "io.murano.applications.TemplateServerProvider",
                "io.murano.applications.MultiServerApplication",
                "io.murano.applications.ReplicationGroup",
                "io.murano.applications.OpenStackSecurityConfigurable",
                "io.murano.applications.Configurable",
                "io.murano.applications.tests.TestMockedServerFactory",
                "io.murano.applications.tests.TestCompositeReplicaProvider",
                "io.murano.applications.tests.TestRoundrobinReplicaProvider",
                "io.murano.applications.ServerReplicationGroup",
                "io.murano.applications.CompositeReplicaProvider",
                "io.murano.applications.tests.TestReplication",
                "io.murano.applications.CompositeServerGroup",
                "io.murano.applications.RoundrobinReplicaProvider",
                "io.murano.applications.ServerGroup",
                "io.murano.applications.ServerList",
                "io.murano.applications.Installable",
                "io.murano.applications.ReplicaProvider",
                "io.murano.applications.MultiServerApplicationWithScaling"
            ],
            "is_public": true,
            "categories": [],
            "name": "Application Development Library",
            "created": "2017-03-30T08:35:03",
            "author": "Mirantis, Inc.",
            "enabled": true,
            "id": "b0298c205235410fba047f4af8df0eb0",
            "supplier": {},
            "fully_qualified_name": "io.murano.applications",
            "type": "Library",
            "owner_id": "c0f6e4cf1bfc48aba587e709b58c9f28"
        },
        {
            "updated": "2017-03-30T08:35:07",
            "description": "Core MuranoPL library\n",
            "tags": [
                "MuranoPL"
            ],
            "class_definitions": [
                "io.murano.Exception",
                "io.murano.system.MetadefBrowser",
                "io.murano.metadata.forms.Hidden",
                "io.murano.system.NeutronSecurityGroupManager",
                "io.murano.system.AgentListener",
                "io.murano.Environment",
                "io.murano.system.SecurityGroupManager",
                "io.murano.resources.ConfLangInstance",
                "io.murano.resources.HeatSWConfigLinuxInstance",
                "io.murano.test.TestFixture",
                "io.murano.resources.MetadataAware",
                "io.murano.SharedIp",
                "io.murano.File",
                "io.murano.resources.LinuxUDInstance",
                "io.murano.configuration.Linux",
                "io.murano.resources.ExistingNeutronNetwork",
                "io.murano.resources.LinuxMuranoInstance",
                "io.murano.Object",
                "io.murano.system.Logger",
                "io.murano.metadata.engine.Synchronize",
                "io.murano.test.DummyNetwork",
                "io.murano.resources.CinderVolume",
                "io.murano.metadata.Title",
                "io.murano.Project",
                "io.murano.system.Resources",
                "io.murano.metadata.forms.Section",
                "io.murano.resources.Network",
                "io.murano.system.MistralClient",
                "io.murano.resources.CinderVolumeBackup",
                "io.murano.system.NetworkExplorer",
                "io.murano.system.DummySecurityGroupManager",
                "io.murano.resources.WindowsInstance",
                "io.murano.CloudResource",
                "io.murano.CloudRegion",
                "io.murano.system.Agent",
                "io.murano.resources.Instance",
                "io.murano.resources.Volume",
                "io.murano.system.InstanceNotifier",
                "io.murano.metadata.ModelBuilder",
                "io.murano.system.HeatStack",
                "io.murano.resources.LinuxInstance",
                "io.murano.metadata.Description",
                "io.murano.metadata.engine.Serialize",
                "io.murano.resources.ExistingCinderVolume",
                "io.murano.resources.HeatSWConfigInstance",
                "io.murano.system.StatusReporter",
                "io.murano.Application",
                "io.murano.test.TestFixtureWithEnvironment",
                "io.murano.system.AwsSecurityGroupManager",
                "io.murano.StackTrace",
                "io.murano.resources.NovaNetwork",
                "io.murano.metadata.forms.Position",
                "io.murano.metadata.HelpText",
                "io.murano.resources.NeutronNetworkBase",
                "io.murano.User",
                "io.murano.resources.InstanceAffinityGroup",
                "io.murano.resources.NeutronNetwork",
                "io.murano.resources.CinderVolumeSnapshot"
            ],
            "is_public": true,
            "categories": [],
            "name": "Core library",
            "created": "2017-03-30T08:35:07",
            "author": "murano.io",
            "enabled": true,
            "id": "5b6c8d7cd0694a7ebb7525ae62357740",
            "supplier": {},
            "fully_qualified_name": "io.murano",
            "type": "Library",
            "owner_id": "c0f6e4cf1bfc48aba587e709b58c9f28"
        }
    ]
}
POST
/v1/catalog/packages

上传软件包

将软件包上传到应用程序目录。

注意

虽然指定类别是可选的,但建议您至少指定一个。它有助于在目录中过滤应用程序。

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

409 - Conflict

此操作与此资源的另一个操作冲突。

请求参数

名称

入参

类型

描述

categories

body

数组

与软件包关联的类别。

is_public

body

布尔值

软件包是否与其他项目共享。

file

body

对象

要上传的软件包文件。

响应参数

名称

入参

类型

描述

X-Openstack-Request-Id

标头

UUID

用于跟踪服务请求的唯一 ID。默认情况下,与请求关联的请求 ID 出现在服务日志中。

updated

body

字符串

对象更新的日期和时间。日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含 ±hh:mm 值,则为 UTC 的时区偏移量。

class_definitions

body

数组

软件包的 class_definitions。

id

body

字符串

软件包的 UUID。

fully_qualified_name

body

字符串

软件包的 fqn。

is_public

body

布尔值

软件包是否与其他项目共享。

name

body

字符串

软件包的名称。

type

body

字符串

软件包的类型。

supplier

body

对象

软件包的供应商信息。

description

body

字符串

软件包的描述。

author

body

字符串

软件包的作者。

创建时间

body

字符串

资源被创建的日期和时间。日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含 ±hh:mm 值,则为 UTC 的时区偏移量。

enabled

body

布尔值

软件包是否在应用程序目录中浏览。

tags

body

数组

软件包的标签。

categories

body

数组

与软件包关联的类别。

owner_id

body

字符串

软件包的拥有者 ID。

响应示例

{
    "class_definitions": [
        "com.example.apache.ApacheHttpServer"
    ],
    "description": "The Apache HTTP Server Project is an effort to develop and maintain an\nopen-source HTTP server for modern operating systems including UNIX and\nWindows NT. The goal of this project is to provide a secure, efficient and\nextensible server that provides HTTP services in sync with the current HTTP\nstandards.\nApache httpd has been the most popular web server on the Internet since\nApril 1996, and celebrated its 17th birthday as a project this February.\n",
    "tags": [
        "HTTP",
        "Server",
        "WebServer",
        "HTML",
        "Apache"
    ],
    "updated": "2017-04-06T07:54:40",
    "is_public": false,
    "id": "10f3e349bca9432abd673319195eed2b",
    "categories": [],
    "name": "Apache HTTP Server",
    "created": "2017-04-06T07:54:40",
    "author": "Mirantis, Inc",
    "enabled": true,
    "supplier": {},
    "fully_qualified_name": "com.example.apache.ApacheHttpServer",
    "type": "Application",
    "owner_id": "c0f6e4cf1bfc48aba587e709b58c9f28"
}
GET
/v1/catalog/packages/{package_id}/download

下载软件包

下载一个软件包。

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

请求参数

名称

入参

类型

描述

package_id

路径

字符串

软件包的 UUID。

响应参数

此请求不在响应主体中返回任何内容。
language:

javascript

GET
/v1/catalog/packages/{package_id}

显示软件包详情

显示软件包的详细信息。

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

请求参数

名称

入参

类型

描述

package_id

路径

字符串

软件包的 UUID。

响应参数

名称

入参

类型

描述

X-Openstack-Request-Id

标头

UUID

用于跟踪服务请求的唯一 ID。默认情况下,与请求关联的请求 ID 出现在服务日志中。

updated

body

字符串

对象更新的日期和时间。日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含 ±hh:mm 值,则为 UTC 的时区偏移量。

class_definitions

body

数组

软件包的 class_definitions。

id

body

字符串

软件包的 UUID。

fully_qualified_name

body

字符串

软件包的 fqn。

is_public

body

布尔值

软件包是否与其他项目共享。

name

body

字符串

软件包的名称。

type

body

字符串

软件包的类型。

supplier

body

对象

软件包的供应商信息。

description

body

字符串

软件包的描述。

author

body

字符串

软件包的作者。

创建时间

body

字符串

资源被创建的日期和时间。日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含 ±hh:mm 值,则为 UTC 的时区偏移量。

enabled

body

布尔值

软件包是否在应用程序目录中浏览。

tags

body

数组

软件包的标签。

categories

body

数组

与软件包关联的类别。

owner_id

body

字符串

软件包的拥有者 ID。

响应示例

{
    "updated": "2017-04-06T08:22:11",
    "description": "The Apache HTTP Server Project is an effort to develop and maintain an\nopen-source HTTP server for modern operating systems including UNIX and\nWindows NT. The goal of this project is to provide a secure, efficient and\nextensible server that provides HTTP services in sync with the current HTTP\nstandards.\nApache httpd has been the most popular web server on the Internet since\nApril 1996, and celebrated its 17th birthday as a project this February.\n",
    "tags": [
        "HTTP",
        "Server",
        "WebServer",
        "HTML",
        "Apache"
    ],
    "class_definitions": [
        "com.example.apache.ApacheHttpServer"
    ],
    "is_public": false,
    "categories": [],
    "name": "Apache HTTP Server",
    "created": "2017-04-06T08:22:11",
    "author": "Mirantis, Inc",
    "enabled": true,
    "id": "979637f39a7245cebeabc99e6aa01666",
    "supplier": {},
    "fully_qualified_name": "com.example.apache.ApacheHttpServer",
    "type": "Application",
    "owner_id": "c0f6e4cf1bfc48aba587e709b58c9f28"
}
PATCH
/v1/catalog/packages/{package_id}

更新软件包

更新一个软件包。

允许更改的列表

{ "op": "add", "path": "/tags", "value": [ "foo", "bar" ] }
{ "op": "add", "path": "/categories", "value": [ "foo", "bar" ] }
{ "op": "remove", "path": "/tags" }
{ "op": "remove", "path": "/categories" }
{ "op": "replace", "path": "/tags", "value": ["foo", "bar"] }
{ "op": "replace", "path": "/is_public", "value": true }
{ "op": "replace", "path": "/description",
                    "value":"New description" }
{ "op": "replace", "path": "/name", "value": "New name" }

响应代码

成功

代码

原因

202 - Accepted

请求已被接受处理,但处理尚未完成。响应中包含一个“location”头部,其中包含一个链接以检查请求的进度。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

409 - Conflict

此操作与此资源的另一个操作冲突。

请求参数

名称

入参

类型

描述

package_id

路径

字符串

软件包的 UUID。

请求示例

[
    {
        "path": "/is_public",
        "value": true,
        "op": "replace"
    }
]

响应参数

名称

入参

类型

描述

X-Openstack-Request-Id

标头

UUID

用于跟踪服务请求的唯一 ID。默认情况下,与请求关联的请求 ID 出现在服务日志中。

updated

body

字符串

对象更新的日期和时间。日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含 ±hh:mm 值,则为 UTC 的时区偏移量。

class_definitions

body

数组

软件包的 class_definitions。

id

body

字符串

软件包的 UUID。

fully_qualified_name

body

字符串

软件包的 fqn。

is_public

body

布尔值

软件包是否与其他项目共享。

name

body

字符串

软件包的名称。

type

body

字符串

软件包的类型。

supplier

body

对象

软件包的供应商信息。

description

body

字符串

软件包的描述。

author

body

字符串

软件包的作者。

创建时间

body

字符串

资源被创建的日期和时间。日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含 ±hh:mm 值,则为 UTC 的时区偏移量。

enabled

body

布尔值

软件包是否在应用程序目录中浏览。

tags

body

数组

软件包的标签。

categories

body

数组

与软件包关联的类别。

owner_id

body

字符串

软件包的拥有者 ID。

响应示例

{
    "updated": "2017-04-06T08:28:22",
    "description": "The Apache HTTP Server Project is an effort to develop and maintain an\nopen-source HTTP server for modern operating systems including UNIX and\nWindows NT. The goal of this project is to provide a secure, efficient and\nextensible server that provides HTTP services in sync with the current HTTP\nstandards.\nApache httpd has been the most popular web server on the Internet since\nApril 1996, and celebrated its 17th birthday as a project this February.\n",
    "tags": [
        "HTTP",
        "Server",
        "WebServer",
        "HTML",
        "Apache"
    ],
    "class_definitions": [
        "com.example.apache.ApacheHttpServer"
    ],
    "is_public": true,
    "categories": [],
    "name": "Apache HTTP Server",
    "created": "2017-04-06T08:22:11",
    "author": "Mirantis, Inc",
    "enabled": true,
    "id": "979637f39a7245cebeabc99e6aa01666",
    "supplier": {},
    "fully_qualified_name": "com.example.apache.ApacheHttpServer",
    "type": "Application",
    "owner_id": "c0f6e4cf1bfc48aba587e709b58c9f28"
}
DELETE
/v1/catalog/packages/{package_id}

删除软件包

删除指定的环境。

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

请求参数

名称

入参

类型

描述

package_id

路径

字符串

软件包的 UUID。

响应参数

此请求不在响应主体中返回任何内容。
language:

javascript

GET
/v1/catalog/packages

搜索软件包

在应用程序目录中搜索软件包。非管理员默认可以查看属于他们项目的软件包以及公共软件包:属于其他项目但被管理员标记为公共的软件包。管理员可以搜索所有项目的软件包。

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

请求参数

名称

入参

类型

描述

filters (可选)

查询

字符串

您想要用于在应用程序目录中搜索软件包的过滤器。如果未指定 filters 查询参数,则应用程序目录 API 将返回策略设置允许的所有软件包。通过使用 filters 参数,API 将仅返回满足过滤器的请求软件包集。过滤器列表包括

  • limit:要返回的最大软件包数量

  • type:软件包类型

  • id:软件包 ID

  • category:软件包类别

  • tag:软件包标签

  • class_name:软件包类名

  • fqn:软件包完全限定名

  • name:软件包名称

响应参数

返回与搜索条件匹配的软件包列表。

GET
/v1/catalog/packages/{package_id}/ui

获取 UI 定义

检索应用程序的 UI 定义。

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

请求参数

名称

入参

类型

描述

package_id

路径

字符串

软件包的 UUID。

响应参数

如果软件包具有 UI 定义,则返回软件包的整个 UI 定义。

下面是一个非常基本的 UI 定义示例

Version: 2.2

Forms:
  - appConfiguration:
      fields:
        - name: license
          type: string
          description: Apache License, Version 2.0
          hidden: false
          required: false

检索应用程序徽标。

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

400 - 请求错误

请求中的某些内容无效。

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

404 - Not Found

找不到请求的资源。

请求参数

名称

入参

类型

描述

package_id

路径

字符串

软件包的 UUID。

响应参数

如果软件包具有徽标,则返回软件包的二进制徽标数据。

环境配置 API

由于 Murano 环境可供不同用户从不同位置进行本地修改,因此有必要将本地修改存储在某个地方。因此,创建会话以满足此要求。在用户将应用程序添加到环境后,可以创建一个新的会话。会话只能部署一次。

注意

可以同时为同一个环境打开多个会话,但一次只能部署一个会话。只有第一个部署的会话将被部署,而其他会话将失效,无法再进行部署。一旦环境处于 deployingdeleting 状态,就无法为该环境打开新的会话。

POST
/environments/{env_id}/configure

配置环境 / 打开会话

为环境 env_id 创建一个新的配置会话。

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

请求参数

名称

入参

类型

描述

env_id

路径

字符串

环境的 UUID。

响应参数

名称

入参

类型

描述

X-Openstack-Request-Id

标头

UUID

用于跟踪服务请求的唯一 ID。默认情况下,与请求关联的请求 ID 出现在服务日志中。

创建时间

body

字符串

资源被创建的日期和时间。日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含 ±hh:mm 值,则为 UTC 的时区偏移量。

updated

body

字符串

对象更新的日期和时间。日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含 ±hh:mm 值,则为 UTC 的时区偏移量。

environment_id

body

字符串

环境的 UUID。

state

body

字符串

当前环境的状态。当首次为环境打开会话时,状态为 opened

版本

body

整数

会话的版本。它与环境的版本相关联,因此只有版本与环境匹配的会话才能被部署。

id

body

字符串

会话的 UUID。

响应示例

{
    "created": "2017-04-06T07:54:40",
    "updated": "2017-04-06T07:54:40",
    "environment_id": "744e44812da84e858946f5d817de4f72",
    "state": "opened",
    "version": 0,
    "id": "257bef44a9d848daa5b2563779714820"
 }
POST
/environments/{env_id}/sessions/{session_id}/deploy

部署会话

启动 Murano 环境会话的部署。

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

请求参数

名称

入参

类型

描述

env_id

路径

字符串

环境的 UUID。

session_id

路径

字符串

会话的 UUID。

GET
/environments/{env_id}/sessions/{session_id}

获取会话详情

启动 Murano 环境会话的部署。

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

请求参数

名称

入参

类型

描述

env_id

路径

字符串

环境的 UUID。

session_id

路径

字符串

会话的 UUID。

响应参数

名称

入参

类型

描述

X-Openstack-Request-Id

标头

UUID

用于跟踪服务请求的唯一 ID。默认情况下,与请求关联的请求 ID 出现在服务日志中。

id

body

字符串

会话的 UUID。

environment_id

body

字符串

环境的 UUID。

创建时间

body

字符串

资源被创建的日期和时间。日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含 ±hh:mm 值,则为 UTC 的时区偏移量。

updated

body

字符串

对象更新的日期和时间。日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含 ±hh:mm 值,则为 UTC 的时区偏移量。

user_id

body

字符串

会话所有者的 UUID。

版本

body

整数

会话的版本。它与环境的版本相关联,因此只有版本与环境匹配的会话才能被部署。

state

body

字符串

当前环境的状态。当首次为环境打开会话时,状态为 opened

响应示例

{
    "id": "4aecdc2178b9430cbbb8db44fb7ac384",
    "environment_id": "4dc8a2e8986fa8fa5bf24dc8a2e8986fa8",
    "created": "2013-11-30T03:23:42Z",
    "updated": "2013-11-30T03:23:54Z",
    "user_id": "d7b501094caf4daab08469663a9e1a2b",
    "version": 0,
    "state": "deploying"
}
DELETE
/environments/{env_id}/sessions/{session_id}

删除会话

删除会话 session_id

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

401 - 未授权

用户必须在发出请求之前进行身份验证。

403 - 禁止

策略不允许当前用户执行此操作。

请求参数

名称

入参

类型

描述

env_id

路径

字符串

环境的 UUID。

session_id

路径

字符串

会话的 UUID。

环境模板

环境模板指定了一组虚拟资源和应用程序信息,这些信息可以被翻译成一个准备就绪的环境,从而部署在 OpenStack 上。用户可以自定义、创建、删除和修改环境模板。环境模板可以被用户实例化多次。例如,用户可以从同一个环境模板创建不同的部署:一个用于测试,另一个用于生产。

环境模板的创建和实例化的流程如下

  1. 创建环境模板(包括应用程序信息)

  2. 将环境模板转换为环境(创建环境和会话,并将应用程序添加到环境中)

  3. 在 Openstack 上部署环境

每个环境模板都由服务组成,这些服务指定了应用程序信息。每个服务都包含有关将要安装的应用程序(例如 Tomcat)的信息,包括应用程序属性(如 Tomcat 端口)。如果适用,可以指定有关虚拟服务器的其他信息,例如 keyname、flavor、image 等。

以下是环境模板的一个示例

{
   "name": "env_template_name",
   "services": [
      {
         "instance": {
            "assignFloatingIp": "true",
            "keyname": "mykeyname",
            "image": "cloud-fedora-v3",
            "flavor": "m1.medium",
            "?": {
                  "type": "io.murano.resources.LinuxMuranoInstance",
                  "id": "ef984a74-29a4-45c0-b1dc-2ab9f075732e"
               }
            },
         "name": "tomcat",
         "port": "8080",
         "?": {
            "type": "io.murano.apps.apache.Tomcat",
            "id": "54cea43d-5970-4c73-b9ac-fea656f3c722"
         }
      }
   ]
}
GET
/templates

列出环境模板

获取环境模板列表。

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

401 - 未授权

用户必须在发出请求之前进行身份验证。

请求参数

名称

入参

类型

描述

is_public (可选)

路径

布尔值

指示是否列出公共环境模板。可能的选项如下

  • True。列出所有项目的公共环境模板。

  • False。列出当前项目的私有环境模板。

  • empty。列出所有项目模板加上所有项目的公共模板。

响应参数

名称

入参

类型

描述

X-Openstack-Request-Id

标头

UUID

用于跟踪服务请求的唯一 ID。默认情况下,与请求关联的请求 ID 出现在服务日志中。

templates

body

数组

模板列表。

创建时间

body

字符串

资源被创建的日期和时间。日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含 ±hh:mm 值,则为 UTC 的时区偏移量。

updated

body

字符串

对象更新的日期和时间。日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含 ±hh:mm 值,则为 UTC 的时区偏移量。

name

body

字符串

环境模板的名称。仅允许字母数字字符。

tenant_id

body

字符串

租户的 UUID。租户也称为项目。

版本

body

整数

环境模板的当前版本。

description_text

body

字符串

环境模板的描述。

is_public

body

布尔值

指示环境模板是否为公共模板。

  • True。环境模板是公共的。可以克隆。

  • False。环境模板是私有的。

id

body

字符串

环境模板的 UUID。

响应示例

{
    "templates": [
        {
            "updated": "2014-05-14T13:02:54",
            "networking": {},
            "name": "test1",
            "created": "2014-05-14T13:02:46",
            "tenant_id": "726ed856965f43cc8e565bc991fa76c3",
            "version": 0,
            "is_public": false,
            "description_text": "",
            "id": "2fa5ab704749444bbeafe7991b412c33"
        },
        {
            "updated": "2014-05-14T13:02:55",
            "networking": {},
            "name": "test2",
            "created": "2014-05-14T13:02:51",
            "tenant_id": "123452452345346345634563456345346",
            "version": 0,
            "is_public": true,
            "description_text": "",
            "id": "744e44812da84e858946f5d817de4f72"
        }
    ]
}
POST
/templates

创建环境模板

创建一个环境模板。

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

401 - 未授权

用户必须在发出请求之前进行身份验证。

409 - Conflict

此操作与此资源的另一个操作冲突。

请求参数

名称

入参

类型

描述

name

body

字符串

环境模板的名称。仅允许字母数字字符。

is_public

body

布尔值

指示环境模板是否为公共模板。

  • True。环境模板是公共的。可以克隆。

  • False。环境模板是私有的。

请求示例

{
    "name": "env_template_name"
}

响应参数

名称

入参

类型

描述

X-Openstack-Request-Id

标头

UUID

用于跟踪服务请求的唯一 ID。默认情况下,与请求关联的请求 ID 出现在服务日志中。

创建时间

body

字符串

资源被创建的日期和时间。日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含 ±hh:mm 值,则为 UTC 的时区偏移量。

updated

body

字符串

对象更新的日期和时间。日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含 ±hh:mm 值,则为 UTC 的时区偏移量。

name

body

字符串

环境模板的名称。仅允许字母数字字符。

tenant_id

body

字符串

租户的 UUID。租户也称为项目。

版本

body

整数

环境模板的当前版本。

description_text

body

字符串

环境模板的描述。

is_public

body

布尔值

指示环境模板是否为公共模板。

  • True。环境模板是公共的。可以克隆。

  • False。环境模板是私有的。

id

body

字符串

环境模板的 UUID。

响应示例

{
    "updated": "2014-05-14T13:02:55",
    "networking": {},
    "name": "test2",
    "created": "2014-05-14T13:02:51",
    "tenant_id": "123452452345346345634563456345346",
    "version": 0,
    "is_public": true,
    "description_text": "",
    "id": "744e44812da84e858946f5d817de4f72"
}
GET
/templates/{env_temp_id}

获取环境模板详情

获取环境模板 env_temp_id 的详情。

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

401 - 未授权

用户必须在发出请求之前进行身份验证。

404 - Not Found

找不到请求的资源。

请求参数

名称

入参

类型

描述

env_temp_id

路径

字符串

环境模板的 UUID。

响应参数

名称

入参

类型

描述

X-Openstack-Request-Id

标头

UUID

用于跟踪服务请求的唯一 ID。默认情况下,与请求关联的请求 ID 出现在服务日志中。

创建时间

body

字符串

资源被创建的日期和时间。日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含 ±hh:mm 值,则为 UTC 的时区偏移量。

updated

body

字符串

对象更新的日期和时间。日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含 ±hh:mm 值,则为 UTC 的时区偏移量。

name

body

字符串

环境模板的名称。仅允许字母数字字符。

services

body

数组

环境模板 service 对象的列表。

tenant_id

body

字符串

租户的 UUID。租户也称为项目。

版本

body

整数

环境模板的当前版本。

description_text

body

字符串

环境模板的描述。

is_public

body

布尔值

指示环境模板是否为公共模板。

  • True。环境模板是公共的。可以克隆。

  • False。环境模板是私有的。

id

body

字符串

环境模板的 UUID。

响应示例

{
    "updated": "2014-05-14T13:02:55",
    "networking": {},
    "name": "test2",
    "created": "2014-05-14T13:02:51",
    "tenant_id": "123452452345346345634563456345346",
    "services": [
        {
          "instance": {
            "assignFloatingIp": "true",
            "keyname": "mykeyname",
            "image": "cloud-fedora-v3",
            "flavor": "m1.medium",
            "?": {
              "type": "io.murano.resources.LinuxMuranoInstance",
              "id": "ef984a74-29a4-45c0-b1dc-2ab9f075732e"
            }
          },
          "name": "orion",
          "?": {
            "type": "io.murano.apps.apache.Tomcat",
            "id": "54cea43d-5970-4c73-b9ac-fea656f3c722"
          },
          "port": "8080"
        }
    ],
    "version": 0,
    "is_public": true,
    "description_text": "",
    "id": "744e44812da84e858946f5d817de4f72"
}
DELETE
/templates/{env_temp_id}

删除环境模板

删除环境模板 env_temp_id

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

401 - 未授权

用户必须在发出请求之前进行身份验证。

404 - Not Found

找不到请求的资源。

请求参数

名称

入参

类型

描述

env_temp_id

路径

字符串

环境模板的 UUID。

POST
/templates/{env_temp_id}/services

将应用程序添加到环境模板

为环境模板 env_temp_id 创建一个新的应用程序。

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

401 - 未授权

用户必须在发出请求之前进行身份验证。

404 - Not Found

找不到请求的资源。

请求参数

名称

入参

类型

描述

env_temp_id

路径

字符串

环境模板的 UUID。

服务

body

对象

有关要添加到环境模板的 service 的详细信息。 service 包括虚拟资源和应用程序信息。虚拟资源信息在 instance 对象属性中指定。应用程序信息在 service 对象的主体中指定。

instance 对象属性包括

  • assignFloatingIp。是否为 VM 分配浮动 IP。

  • keyname。VM 的密钥对的密钥名称。

  • image。用于配置 VM 的镜像。

  • flavor。用于配置 VM 的 flavor。

  • ?。一个对象,其中包含服务器的 type

一个 instance 示例如下

{
  "assignFloatingIp": "true",
  "keyname": "mykeyname",
  "image": "cloud-fedora-v3",
  "flavor": "m1.medium",
  "?": {
    "type": "io.murano.resources.LinuxMuranoInstance",
    "id": "ef984a74-29a4-45c0-b1dc-2ab9f075732e"
  }
}

此外,service 还应包括以下内容

  • name。应用程序的 name

  • ?。一个对象,其中包含应用程序的 typeid。一个 type 示例是:“io.murano.resources.LinuxMuranoInstance”。

  • port:应用程序要使用的端口。该值必须大于 0 且小于 65536(尽管格式为字符串)。

整个 service 如下所示

{
  "instance": {
    "assignFloatingIp": "true",
    "keyname": "mykeyname",
    "image": "cloud-fedora-v3",
    "flavor": "m1.medium",
    "?": {
      "type": "io.murano.resources.LinuxMuranoInstance",
      "id": "ef984a74-29a4-45c0-b1dc-2ab9f075732e"
    }
  },
  "name": "orion",
  "?": {
    "type": "io.murano.apps.apache.Tomcat",
    "id": "54cea43d-5970-4c73-b9ac-fea656f3c722"
  },
  "port": "8080"
}

请求示例

{
  "instance": {
    "assignFloatingIp": "true",
    "keyname": "mykeyname",
    "image": "cloud-fedora-v3",
    "flavor": "m1.medium",
    "?": {
      "type": "io.murano.resources.LinuxMuranoInstance",
      "id": "ef984a74-29a4-45c0-b1dc-2ab9f075732e"
    }
  },
  "name": "orion",
  "?": {
    "type": "io.murano.apps.apache.Tomcat",
    "id": "54cea43d-5970-4c73-b9ac-fea656f3c722"
  },
  "port": "8080"
}

响应参数

名称

入参

类型

描述

X-Openstack-Request-Id

标头

UUID

用于跟踪服务请求的唯一 ID。默认情况下,与请求关联的请求 ID 出现在服务日志中。

updated

body

字符串

对象更新的日期和时间。日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含 ±hh:mm 值,则为 UTC 的时区偏移量。

创建时间

body

字符串

资源被创建的日期和时间。日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含 ±hh:mm 值,则为 UTC 的时区偏移量。

tenant_id

body

字符串

租户的 UUID。租户也称为项目。

services

body

数组

环境模板 service 对象的列表。

版本

body

整数

环境模板的当前版本。

description_text

body

字符串

环境模板的描述。

is_public

body

布尔值

指示环境模板是否为公共模板。

  • True。环境模板是公共的。可以克隆。

  • False。环境模板是私有的。

id

body

字符串

环境模板的 UUID。

name

body

字符串

环境模板的名称。仅允许字母数字字符。

响应示例

{
  "updated": "2017-04-26T19:41:58",
  "created": "2017-04-26T19:33:10",
  "tenant_id": "cca37eef752244d99945a4123f30ff79",
  "services": [
    {
      "instance": {
        "assignFloatingIp": "true",
        "keyname": "mykeyname",
        "image": "cloud-fedora-v3",
        "flavor": "m1.medium",
        "?": {
          "type": "io.murano.resources.LinuxMuranoInstance",
          "id": "ef984a74-29a4-45c0-b1dc-2ab9f075732e"
        }
      },
      "name": "orion",
      "?": {
        "type": "io.murano.apps.apache.Tomcat",
        "id": "54cea43d-5970-4c73-b9ac-fea656f3c722"
      },
      "port": "8080"
    }
  ],
  "version": 0,
  "description_text": "",
  "is_public": false,
  "id": "64670f5ada0848408734b2985f5cbb92",
  "name": "test_application"
}
DELETE
/templates/{env_temp_id}/services/{service_id}

从环境模板中删除应用程序

从环境模板中删除一个应用程序。

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

401 - 未授权

用户必须在发出请求之前进行身份验证。

404 - Not Found

找不到请求的资源。

请求参数

名称

入参

类型

描述

env_temp_id

路径

字符串

环境模板的 UUID。

service_id

路径

字符串

属于环境模板的服务的 UUID。

GET
/templates/{env_temp_id}/services

列出环境模板的应用程序详情

列出指定环境模板 env_temp_id 的所有应用程序。

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

401 - 未授权

用户必须在发出请求之前进行身份验证。

404 - Not Found

找不到请求的资源。

请求参数

名称

入参

类型

描述

env_temp_id

路径

字符串

环境模板的 UUID。

响应参数

  • X-Openstack-Request-Id: request_id

  • updated: updated

  • created: created

  • tenant_id: tenant_id

  • services: template_services

  • version: template_version

  • description_text: template_description

  • is_public: template_is_public

  • id: template_id

  • name: template_name

响应示例

[
  {
    "instance":
    {
      "assignFloatingIp": "true",
      "keyname": "mykeyname",
      "image": "cloud-fedora-v3",
      "flavor": "m1.medium",
      "?":
      {
        "type": "io.murano.resources.LinuxMuranoInstance",
        "id": "ef984a74-29a4-45c0-b1dc-2ab9f075732e"
      }
    },
    "name": "tomcat",
    "?":
    {
      "type": "io.murano.apps.apache.Tomcat",
      "id": "54cea43d-5970-4c73-b9ac-fea656f3c722"
    },
    "port": "8080"
  },
  {
    "instance": "ef984a74-29a4-45c0-b1dc-2ab9f075732e",
    "password": "XXX",
    "name": "mysql",
    "?":
    {
      "type": "io.murano.apps.database.MySQL",
      "id": "54cea43d-5970-4c73-b9ac-fea656f3c722"
    }
  }
]
PUT
/templates/{env_temp_id}/services/{service_id}

更新环境模板的应用程序

从环境模板中删除一个应用程序。

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

401 - 未授权

用户必须在发出请求之前进行身份验证。

404 - Not Found

找不到请求的资源。

请求参数

名称

入参

类型

描述

env_temp_id

路径

字符串

环境模板的 UUID。

service_id

路径

字符串

属于环境模板的服务的 UUID。

服务

body

对象

有关要添加到环境模板的 service 的详细信息。 service 包括虚拟资源和应用程序信息。虚拟资源信息在 instance 对象属性中指定。应用程序信息在 service 对象的主体中指定。

instance 对象属性包括

  • assignFloatingIp。是否为 VM 分配浮动 IP。

  • keyname。VM 的密钥对的密钥名称。

  • image。用于配置 VM 的镜像。

  • flavor。用于配置 VM 的 flavor。

  • ?。一个对象,其中包含服务器的 type

一个 instance 示例如下

{
  "assignFloatingIp": "true",
  "keyname": "mykeyname",
  "image": "cloud-fedora-v3",
  "flavor": "m1.medium",
  "?": {
    "type": "io.murano.resources.LinuxMuranoInstance",
    "id": "ef984a74-29a4-45c0-b1dc-2ab9f075732e"
  }
}

此外,service 还应包括以下内容

  • name。应用程序的 name

  • ?。一个对象,其中包含应用程序的 typeid。一个 type 示例是:“io.murano.resources.LinuxMuranoInstance”。

  • port:应用程序要使用的端口。该值必须大于 0 且小于 65536(尽管格式为字符串)。

整个 service 如下所示

{
  "instance": {
    "assignFloatingIp": "true",
    "keyname": "mykeyname",
    "image": "cloud-fedora-v3",
    "flavor": "m1.medium",
    "?": {
      "type": "io.murano.resources.LinuxMuranoInstance",
      "id": "ef984a74-29a4-45c0-b1dc-2ab9f075732e"
    }
  },
  "name": "orion",
  "?": {
    "type": "io.murano.apps.apache.Tomcat",
    "id": "54cea43d-5970-4c73-b9ac-fea656f3c722"
  },
  "port": "8080"
}

请求示例

{
    "instance": {
        "assignFloatingIp": "true",
        "keyname": "mykeyname",
        "image": "cloud-fedora-v3",
        "flavor": "m1.medium",
        "?": {
            "type": "io.murano.resources.LinuxMuranoInstance",
            "id": "ef984a74-29a4-45c0-b1dc-2ab9f075732e"
        }
    },
    "name": "orion",
    "port": "8080",
    "?": {
        "type": "io.murano.apps.apache.Tomcat",
        "id": "54cea43d-5970-4c73-b9ac-fea656f3c722"
    }
}

响应参数

名称

入参

类型

描述

X-Openstack-Request-Id

标头

UUID

用于跟踪服务请求的唯一 ID。默认情况下,与请求关联的请求 ID 出现在服务日志中。

服务

body

对象

有关要添加到环境模板的 service 的详细信息。 service 包括虚拟资源和应用程序信息。虚拟资源信息在 instance 对象属性中指定。应用程序信息在 service 对象的主体中指定。

instance 对象属性包括

  • assignFloatingIp。是否为 VM 分配浮动 IP。

  • keyname。VM 的密钥对的密钥名称。

  • image。用于配置 VM 的镜像。

  • flavor。用于配置 VM 的 flavor。

  • ?。一个对象,其中包含服务器的 type

一个 instance 示例如下

{
  "assignFloatingIp": "true",
  "keyname": "mykeyname",
  "image": "cloud-fedora-v3",
  "flavor": "m1.medium",
  "?": {
    "type": "io.murano.resources.LinuxMuranoInstance",
    "id": "ef984a74-29a4-45c0-b1dc-2ab9f075732e"
  }
}

此外,service 还应包括以下内容

  • name。应用程序的 name

  • ?。一个对象,其中包含应用程序的 typeid。一个 type 示例是:“io.murano.resources.LinuxMuranoInstance”。

  • port:应用程序要使用的端口。该值必须大于 0 且小于 65536(尽管格式为字符串)。

整个 service 如下所示

{
  "instance": {
    "assignFloatingIp": "true",
    "keyname": "mykeyname",
    "image": "cloud-fedora-v3",
    "flavor": "m1.medium",
    "?": {
      "type": "io.murano.resources.LinuxMuranoInstance",
      "id": "ef984a74-29a4-45c0-b1dc-2ab9f075732e"
    }
  },
  "name": "orion",
  "?": {
    "type": "io.murano.apps.apache.Tomcat",
    "id": "54cea43d-5970-4c73-b9ac-fea656f3c722"
  },
  "port": "8080"
}

响应示例

{
   "instance":
   {
       "assignFloatingIp": "true",
       "keyname": "mykeyname",
       "image": "cloud-fedora-v3",
       "flavor": "m1.medium",
       "?":
       {
           "type": "io.murano.resources.LinuxMuranoInstance",
           "id": "ef984a74-29a4-45c0-b1dc-2ab9f075732e"
       }
   },
   "name": "orion",
   "?":
   {
       "type": "io.murano.apps.apache.Tomcat",
       "id": "54cea43d-5970-4c73-b9ac-fea656f3c722"
   },
   "port": "8080"
}
GET
/templates/{env_temp_id}/create-environment

从环境模板创建环境

从环境模板 env_temp_id 创建一个环境。

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

401 - 未授权

用户必须在发出请求之前进行身份验证。

404 - Not Found

找不到请求的资源。

409 - Conflict

此操作与此资源的另一个操作冲突。

请求参数

名称

入参

类型

描述

env_temp_id

路径

字符串

环境模板的 UUID。

name

body

字符串

环境的名称。名称必须至少包含一个非空格字符,且长度小于 256 个字符。

请求示例

{
    "name": "environment_name"
}

响应参数

名称

入参

类型

描述

X-Openstack-Request-Id

标头

UUID

用于跟踪服务请求的唯一 ID。默认情况下,与请求关联的请求 ID 出现在服务日志中。

environment_id

body

字符串

环境的 UUID。

name

body

字符串

环境的名称。名称必须至少包含一个非空格字符,且长度小于 256 个字符。

创建时间

body

字符串

资源被创建的日期和时间。日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含 ±hh:mm 值,则为 UTC 的时区偏移量。

tenant_id

body

字符串

租户的 UUID。租户也称为项目。

版本

body

int

当前版本。

session_id

body

字符串

会话的 UUID。

响应示例

{
    "environment_id": "aa90fadfafca10e38e1c8c4bbf7",
    "name": "environment_name",
    "created": "2015-01-26T09:12:51",
    "tenant_id": "00000000000000000000000000000001",
    "version": 0,
    "session_id": "adf4dadfaa9033ca7ce245fca10e38e1c8c4bbf7",
}
GET
/templates/{env_temp_id}/clone

克隆环境模板

将环境模板从一个租户克隆到另一个租户。

响应代码

成功

代码

原因

200 - 正常

请求成功。

错误

代码

原因

401 - 未授权

用户必须在发出请求之前进行身份验证。

404 - Not Found

找不到请求的资源。

409 - Conflict

此操作与此资源的另一个操作冲突。

请求参数

名称

入参

类型

描述

env_temp_id

路径

字符串

环境模板的 UUID。

name

body

字符串

环境模板的名称。仅允许字母数字字符。

请求示例

{
    "name": "cloned_env_template_name"
}

响应参数

名称

入参

类型

描述

X-Openstack-Request-Id

标头

UUID

用于跟踪服务请求的唯一 ID。默认情况下,与请求关联的请求 ID 出现在服务日志中。

environment_id

body

字符串

环境的 UUID。

name

body

字符串

环境的名称。名称必须至少包含一个非空格字符,且长度小于 256 个字符。

创建时间

body

字符串

资源被创建的日期和时间。日期和时间戳格式为 ISO 8601

CCYY-MM-DDThh:mm:ss±hh:mm

例如,2015-08-27T09:49:58-05:00

如果包含 ±hh:mm 值,则为 UTC 的时区偏移量。

tenant_id

body

字符串

租户的 UUID。租户也称为项目。

版本

body

int

当前版本。

session_id

body

字符串

会话的 UUID。

响应示例

{
   "updated": "2015-01-26T09:12:51",
   "name": "cloned_env_template_name",
   "created": "2015-01-26T09:12:51",
   "tenant_id": "00000000000000000000000000000001",
   "version": 0,
   "is_public": false,
   "id": "aa9033ca7ce245fca10e38e1c8c4bbf7",
}