Compute API

这是 Nova 项目提供的 OpenStack Compute API 的参考文档。要了解有关 OpenStack Compute API 概念的更多信息,请参阅API 指南

API 版本

为了随着时间的推移为用户带来新功能,Nova API 支持版本控制。Nova 中有两种类型的版本。

  • ‘’主要版本’’, 它们拥有专用的 URL

  • “微版本”(microversions),可以通过使用 X-OpenStack-Nova-API-Version 标头请求,或者自微版本 2.27 起,也可以使用 OpenStack-API-Version 标头。

有关微版本的更多详细信息,请参阅:微版本

注意

每个发行版支持的最大微版本不同。请参阅:API 微版本历史记录 以获取 API 微版本历史记录的详细信息。

版本 API 的工作方式与其他 API 不同,因为它们不需要身份验证。

GET
/

列出所有主要版本

这将获取有关部署中所有已知主要 API 版本的所有信息。将为每个 API 版本提供指向更具体信息的链接,以及有关支持的最小和最大微版本的信息。

正常响应代码:200

响应

名称

入参

类型

描述

versions

body

数组

一个描述可用 API 版本的版本对象列表。

id

body

字符串

版本的一个常用名称。仅供参考,不具有实际语义意义。

links

body

数组

指向相关资源的链接。有关更多信息,请参阅API 指南 / 链接和引用

min_version

body

字符串

如果此版本的 API 支持微版本,则支持的最小微版本。如果不支持微版本,则为空字符串。

status

body

字符串

此 API 版本的状态。它可以是以下之一:

  • CURRENT:这是要使用的 API 的首选版本

  • SUPPORTED:这是 API 的较旧版本,但仍然受支持

  • DEPRECATED:这是 API 的已弃用版本,计划将其删除

updated

body

字符串

这是一个固定字符串。在版本 2.0 中它是 2011-01-21T11:33:21Z,在版本 2.1 中它是 2013-07-23T11:33:21Z

注意

这是遗留字段,不提供任何有用信息。它将被弃用并在将来移除。

版本

body

字符串

如果此版本的 API 支持微版本,则支持的最高微版本。如果不支持微版本,则为空字符串。

响应示例

这演示了支持最新微版本的服务器的预期响应。在查询 OpenStack 环境时,通常会发现 v2.1 API 的当前微版本低于下方列出的版本。

{
    "versions": [
        {
            "id": "v2.0",
            "links": [
                {
                    "href": "http://openstack.example.com/v2/",
                    "rel": "self"
                }
            ],
            "status": "DEPRECATED",
            "version": "",
            "min_version": "",
            "updated": "2025-07-04T12:00:00Z"
        },
        {
            "id": "v2.1",
            "links": [
                {
                    "href": "http://openstack.example.com/v2.1/",
                    "rel": "self"
                }
            ],
            "status": "CURRENT",
            "version": "2.100",
            "min_version": "2.1",
            "updated": "2013-07-23T11:33:21Z"
        }
    ]
}
GET
/{api_version}/

显示特定 API 版本的详细信息

获取其根目录的特定 API 的详细信息。几乎所有这些信息都存在于 API 根目录,因此这主要是一个冗余操作。

正常响应代码:200

请求

名称

入参

类型

描述

api_version

路径

字符串

GET / 调用返回的 API 版本。

响应

名称

入参

类型

描述

版本

body

字符串

版本。

id

body

字符串

版本的一个常用名称。仅供参考,不具有实际语义意义。

links

body

数组

指向相关资源的链接。有关更多信息,请参阅API 指南 / 链接和引用

media-types

body

数组

媒体类型。这是一个固定字典的数组。

注意

这是遗留字段,不提供任何有用信息。它将被弃用并在将来移除。

min_version

body

字符串

如果此版本的 API 支持微版本,则支持的最小微版本。如果不支持微版本,则为空字符串。

status

body

字符串

此 API 版本的状态。它可以是以下之一:

  • CURRENT:这是要使用的 API 的首选版本

  • SUPPORTED:这是 API 的较旧版本,但仍然受支持

  • DEPRECATED:这是 API 的已弃用版本,计划将其删除

updated

body

字符串

这是一个固定字符串。在版本 2.0 中它是 2011-01-21T11:33:21Z,在版本 2.1 中它是 2013-07-23T11:33:21Z

注意

这是遗留字段,不提供任何有用信息。它将被弃用并在将来移除。

版本

body

字符串

如果此版本的 API 支持微版本,则支持的最高微版本。如果不支持微版本,则为空字符串。

响应示例

这是在相对较新的服务器上执行 GET /v2.1/ 的示例。

{
    "version": {
        "id": "v2.1",
        "links": [
            {
                "href": "http://openstack.example.com/v2.1/",
                "rel": "self"
            },
            {
                "href": "https://docs.openstack.org/",
                "rel": "describedby",
                "type": "text/html"
            }
        ],
        "media-types": [
            {
                "base": "application/json",
                "type": "application/vnd.openstack.compute+json;version=2.1"
            }
        ],
        "status": "CURRENT",
        "version": "2.100",
        "min_version": "2.1",
        "updated": "2013-07-23T11:33:21Z"
    }
}

服务 URL

本文档其余部分描述的所有 API 调用都需要通过 OpenStack Identity 服务进行身份验证。身份验证后,可以从类型为 compute 的 Identity 令牌中提取基础 服务 URL。此 服务 URL 将是每个 API 调用用于构建完整路径的根 URL。

例如,如果 服务 URLhttp://mycompute.pvt/compute/v2.1,那么 /servers 的完整 API 调用是 http://mycompute.pvt/compute/v2.1/servers

根据部署的不同,Compute 服务 URL 可能是 http 或 https,也可能包含自定义端口、自定义路径,并包含您的租户 ID。了解部署的 URL 的唯一方法是使用服务目录。Compute URL 绝不应在应用程序中硬编码,即使它们只应在单个站点上工作。它应始终从 Identity 令牌中发现。

因此,在本文档的其余部分,我们将使用简写形式,其中 GET /servers 实际上意味着 GET {your_compute_service_url}/servers

请求 ID

用户可以在请求标头中指定全局请求 ID。用户可以在响应标头中接收本地请求 ID。

有关请求 ID 的更多详细信息,请参阅:故障

请求

名称

入参

类型

描述

X-Openstack-Request-Id (可选)

标头

字符串

全局请求 ID,这是用于跟踪 OpenStack 组件中每个请求的唯一通用 ID。全局请求 ID 的格式必须是 req- + UUID (UUID4)。如果不符合格式,则会被忽略。它与请求相关联,并出现在该请求的日志行中。默认情况下,中间件配置确保全局请求 ID 出现在日志文件中。

版本 2.46 新增

响应

名称

入参

类型

描述

X-Compute-Request-Id

标头

字符串

本地请求 ID,这是自动生成用于跟踪每个 Nova 请求的唯一 ID。它与请求相关联,并出现在该请求的日志行中。默认情况下,中间件配置确保本地请求 ID 出现在日志文件中。

注意

此标头用于向后兼容。

X-Openstack-Request-Id

标头

字符串

本地请求 ID,这是自动生成用于跟踪每个 Nova 请求的唯一 ID。它与请求相关联,并出现在该请求的日志行中。默认情况下,中间件配置确保本地请求 ID 出现在日志文件中。

版本 2.46 新增

服务器(servers)

列出、创建、显示详细信息、更新和删除服务器。

密码

创建服务器时,可以通过可选的 adminPass 属性指定密码。密码必须符合您的 OpenStack Compute 提供商设置的复杂性要求。如果未满足复杂性要求,服务器可能会进入 ERROR 状态。在这种情况下,客户端可以发出更改密码操作来重置服务器密码。

如果您不指定密码,API 会生成一个随机密码并将其返回在响应对象中。此密码符合计算提供商设置的安全要求。出于安全原因,后续的 GET 调用不需要此密码。

服务器元数据

您可以在服务器启动时指定自定义服务器元数据。每个元数据键值对的最大大小为 255 字节。计算提供商决定每个服务器的最大键值对数量。您可以通过 maxServerMeta 绝对限制查询此值。

服务器网络

您可以在服务器启动时指定一个或多个网络。用户还可以指定网络上的特定端口或分配给服务器接口的固定 IP 地址。

注意

您可以使用 IPv4 和 IPv6 地址作为访问地址,并且可以同时分配这两个地址。创建服务器后,您可以更新访问地址。

服务器个性化(Server personality)

注意

从微版本 2.57 开始,个性化文件的使用已被弃用。使用 metadatauser_data 来自定义服务器实例。

要自定义服务器实例的个性化,您可以将数据注入其文件系统。例如,您可能插入 ssh 密钥,设置配置文件,或存储您想从实例内部检索的数据。此自定义方法提供了最小的启动时个性化。如果您需要大量的自定义,请创建自定义镜像。

注入文件时请遵循以下指南

  • 文件路径数据的最大大小为 255 字节。

  • 将文件内容编码为 Base64 字符串。计算提供商决定文件内容的最大大小。用于创建服务器的镜像决定此值。

    注意

    最大限制指的是解码数据中的字节数,而不是编码数据中的字符数。

  • 名为 maxPersonality 的绝对限制定义了您可以提供的文件路径和内容对的最大数量。计算提供商决定此值。

  • 名为 maxPersonalitySize 的绝对限制是一个字节限制,适用于部署中的所有镜像。提供商可以设置额外的每个镜像的个性化限制。

文件注入可能直到服务器构建和启动后才会发生。

文件注入后,只有系统管理员可以访问个性化文件。例如,在 Linux 上,所有文件的所有者均为 root,组所有者为 root 组,并且只允许用户和组读取访问(chmod 440)。

服务器访问地址

在混合环境中,底层实现可能无法控制服务器的 IP 地址。相反,访问 IP 地址可能是专用硬件的一部分;例如,路由器/NAT 设备。在这种情况下,您无法使用实现提供的地址从本地 LAN 外部访问服务器。相反,API 可能会在创建时分配一个单独的访问地址来提供对服务器的访问。此地址可能不直接绑定到服务器上的网络接口,并且在查询服务器地址时可能不一定出现。但是,客户端应使用访问地址直接访问服务器。

GET
/servers

列出服务器

列出服务器的 ID、名称和链接。

默认情况下,服务器会使用与已验证请求关联的项目 ID 进行过滤。

服务器包含一个状态属性,指示当前服务器状态。您可以在完成列出服务器请求时按服务器状态进行过滤。服务器状态在响应正文中返回。可能的服务器状态值如下:

  • ACTIVE。服务器处于活动状态。

  • BUILD。服务器尚未完成初始构建过程。

  • DELETED。服务器已被永久删除。

  • ERROR。服务器处于错误状态。

  • HARD_REBOOT。服务器正在硬重启。这相当于拔掉物理服务器的电源插头,重新插入,然后重新启动。

  • MIGRATING。服务器正在迁移到新主机。

  • PASSWORD。正在重置服务器上的密码。

  • PAUSED。处于暂停状态时,服务器的状态存储在 RAM 中。暂停的服务器继续以冻结状态运行。

  • REBOOT。服务器处于软重启状态。已向操作系统传递 reboot 命令。

  • REBUILD。服务器当前正在从镜像重建。

  • RESCUE。服务器处于救援模式。正在运行救援镜像,并附加了原始服务器镜像。

  • RESIZE。服务器正在执行初始复制期间更改的数据的差异复制。服务器在此阶段已关闭。

  • REVERT_RESIZE。由于某种原因,服务器的 resize 或迁移失败。目标服务器正在被清理,原始源服务器正在重启。

  • SHELVED:服务器处于 shelf 状态。根据 shelf 卸载时间,服务器将自动 shelf 卸载。

  • SHELVED_OFFLOADED:已卸载 shelf 服务器(从计算主机移除),需要 unshelved 操作才能再次使用。

  • SHUTOFF。服务器已断电,但磁盘镜像仍然存在。

  • SOFT_DELETED。服务器被标记为已删除,但磁盘镜像仍然可以恢复。

  • SUSPENDED。服务器被挂起,无论是通过请求还是必要性。挂起服务器时,其状态会写入磁盘,所有内存都会写入磁盘,服务器会停止。挂起服务器类似于将设备置于休眠状态,其占用的资源不会被释放,而是保留到服务器恢复时。如果服务器使用频率较低且需要释放占用的资源来创建其他服务器,则应将其 shelf 起来。

  • UNKNOWN。服务器的状态未知。请联系您的云提供商。

  • VERIFY_RESIZE。系统正在等待确认服务器在移动或调整大小后是否正常运行。

有效的过滤键有一个白名单。任何不在白名单中的过滤键都将被静默忽略。

  • 对于非管理员用户,白名单与管理员用户的白名单不同。有效白名单可以通过 os_compute_api:servers:allow_all_filters 策略规则进行配置。默认情况下,非管理员用户的有效白名单包括:

    • changes-since

    • flavor

    • image

    • ip

    • ip6(版本 2.5 新增)

    • name

    • not-tags(版本 2.26 新增)

    • not-tags-any(版本 2.26 新增)

    • reservation_id

    • status

    • tags(版本 2.26 新增)

    • tags-any(版本 2.26 新增)

    • changes-before(版本 2.66 新增)

    • locked(版本 2.73 新增)

    • availability_zone(版本 2.83 新增)

    • config_drive(版本 2.83 新增)

    • key_name(版本 2.83 新增)

    • created_at(版本 2.83 新增)

    • launched_at(版本 2.83 新增)

    • terminated_at(版本 2.83 新增)

    • power_state(版本 2.83 新增)

    • task_state(版本 2.83 新增)

    • vm_state(版本 2.83 新增)

    • progress(版本 2.83 新增)

    • user_id(版本 2.83 新增)

  • 对于管理员用户,白名单包括请求部分中提到的所有过滤键。

注意

从微版本 2.69 开始,如果由于部署中的临时条件(如基础设施故障)导致无法加载服务器详细信息,则这些不可用服务器的响应正文将缺少键。有关部分构造中将返回的键的信息,请参阅 Compute API 指南的处理宕机单元部分。

正常响应代码:200

错误响应代码:badRequest(400),unauthorized(401),forbidden(403)

请求

名称

入参

类型

描述

access_ip_v4(可选)

查询

字符串

按应用于访问服务器的 IPv4 地址过滤服务器列表结果。

access_ip_v6(可选)

查询

字符串

按应用于访问服务器的 IPv6 地址过滤服务器列表结果。

all_tenants (可选)

查询

布尔值

指定 all_tenants 查询参数以列出所有项目的实例。默认情况下,这仅允许管理员操作。如果指定此参数而不带值,则该值默认为 True。如果指定了值,1ttrueonyyes 都被视为 True0ffalseoffnno 都被视为 False。(它们不区分大小写。)

auto_disk_config(可选)

查询

字符串

按服务器的 disk_config 设置过滤服务器列表结果。有效值为:

  • AUTO

  • MANUAL

此参数仅在管理员指定时有效。如果非管理员用户指定此参数,则会被忽略。

availability_zone (可选)

查询

字符串

按服务器可用性区域过滤服务器列表结果。

在微版本 2.83 之前,此参数仅限于管理员。如果非管理员用户在微版本低于 2.83 时指定此参数,则会被忽略。

changes-since(可选)

查询

字符串

按服务器最后更改状态的日期和时间戳过滤响应。为了帮助跟踪更改,此参数也可能返回最近删除的服务器。

日期和时间戳格式为 ISO 8601

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

如果包含 ±hh:mm 值,则返回时区作为 UTC 的偏移量。例如,2015-08-27T09:49:58-05:00。如果省略时区,则假定为 UTC 时区。当同时指定 changes-sincechanges-before 时,changes-since 的值必须早于或等于 changes-before 的值,否则 API 将返回 400。

config_drive(可选)

查询

字符串

按服务器的 config drive 设置过滤服务器列表结果。

在微版本 2.83 之前,此参数仅限于管理员。如果非管理员用户在微版本低于 2.83 时指定此参数,则会被忽略。

created_at (可选)

查询

字符串

按服务器创建的日期和时间戳过滤服务器列表结果。

日期和时间戳格式为 ISO 8601

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

如果包含 ±hh:mm 值,则返回时区作为 UTC 的偏移量。例如,2015-08-27T09:49:58-05:00。如果省略时区,则假定为 UTC 时区。

在微版本 2.83 之前,此参数仅限于管理员。如果非管理员用户在微版本低于 2.83 时指定此参数,则会被忽略。

deleted(可选)

查询

布尔值

仅显示已删除的项目。在某些情况下,已删除的项目仍然可以通过后端数据库访问,但没有关于保留时间长度的约定,因此此参数应谨慎使用。1ttrueonyyes 被视为 True(不区分大小写)。其他所有值均视为 False

此参数仅在管理员指定时有效。如果非管理员用户指定此参数,则会被忽略。

description (可选)

查询

字符串

按描述过滤服务器列表结果。

此参数仅在管理员指定时有效。如果非管理员用户指定此参数,则会被忽略。

注意

display_description 也可以请求,它是 description 的别名,但不推荐使用,因为它将在未来被移除。

flavor(可选)

查询

字符串

按 UUID 过滤响应。Flavor 是内存、磁盘大小和 CPU 的组合。

host (可选)

查询

字符串

按计算节点的名称过滤服务器列表结果。

此参数仅在管理员指定时有效。如果非管理员用户指定此参数,则会被忽略。

hostname (可选)

查询

字符串

按服务器名称过滤服务器列表结果。

此参数在微版本 2.90 之前仅管理员有效。在此之后,所有用户均可指定。如果非管理员用户在微版本 2.90 之前指定此参数,则会被忽略。

image (可选)

查询

字符串

按镜像(UUID)过滤响应。

注意

image_ref 也可以请求,它是 image 的别名,但不推荐使用,因为它将在未来被移除。

ip(可选)

查询

字符串

用于过滤结果的 IPv4 地址。

ip6(可选)

查询

字符串

用于过滤结果的 IPv6 地址。

直到微版本 2.4,此参数仅在管理员指定时有效。如果非管理员用户指定此参数,则会被忽略。从微版本 2.5 开始,此参数对非管理员用户和管理员均有效。

kernel_id(可选)

查询

字符串

使用 AMI 时,按内核镜像的 UUID 过滤服务器列表结果。

此参数仅在管理员指定时有效。如果非管理员用户指定此参数,则会被忽略。

key_name(可选)

查询

字符串

按密钥对名称过滤服务器列表结果。

在微版本 2.83 之前,此参数仅限于管理员。如果非管理员用户在微版本低于 2.83 时指定此参数,则会被忽略。

launch_index(可选)

查询

整数

按服务器启动的顺序过滤服务器列表结果。

此参数仅在管理员指定时有效。如果非管理员用户指定此参数,则会被忽略。

launched_at(可选)

查询

字符串

按实例启动的日期和时间戳过滤服务器列表结果。日期和时间戳格式为ISO 8601

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

如果包含 ±hh:mm 值,则返回时区作为 UTC 的偏移量。例如,2015-08-27T09:49:58-05:00。如果省略时区,则假定为 UTC 时区。

在微版本 2.83 之前,此参数仅限于管理员。如果非管理员用户在微版本低于 2.83 时指定此参数,则会被忽略。

limit (可选)

查询

整数

请求项目页面大小。返回最多限制值数量的项目。使用 limit 参数进行初始限制请求,并在后续限制请求中使用响应中最后一个已查看项目的 ID 作为 marker 参数值。

locked_by(可选)

查询

字符串

按锁定服务器的用户过滤服务器列表结果,可能的值为 adminowner

此参数仅在管理员指定时有效。如果非管理员用户指定此参数,则会被忽略。

marker (可选)

查询

字符串

最后一个已查看项目的 ID。使用 limit 参数进行初始限制请求,并在后续限制请求中使用响应中最后一个已查看项目的 ID 作为 marker 参数值。

name (可选)

查询

字符串

按服务器名称(字符串)过滤响应。您可以使用正则表达式进行查询。例如,?name=bob 正则表达式会返回 bob 和 bobb。如果您必须只匹配 bob,可以使用匹配 Compute 所实现的底层数据库服务器(如 MySQL 或 PostgreSQL)语法进行匹配的正则表达式。

注意

display_name 也可以请求,它是 name 的别名,但不推荐使用,因为它将在未来被移除。

node(可选)

查询

字符串

按节点过滤服务器列表结果。

此参数仅在管理员指定时有效。如果非管理员用户指定此参数,则会被忽略。

power_state(可选)

查询

整数

按服务器电源状态过滤服务器列表结果。

可能的值是整数值,映射如下:

0: NOSTATE
1: RUNNING
3: PAUSED
4: SHUTDOWN
6: CRASHED
7: SUSPENDED

在微版本 2.83 之前,此参数仅限于管理员。如果非管理员用户在微版本低于 2.83 时指定此参数,则会被忽略。

progress(可选)

查询

整数

按服务器进度过滤服务器列表结果。该值可以是 0 到 100 的整数。

在微版本 2.83 之前,此参数仅限于管理员。如果非管理员用户在微版本低于 2.83 时指定此参数,则会被忽略。

project_id (可选)

查询

字符串

按给定的项目 ID 过滤服务器列表。

此过滤器仅在同时指定 all_tenants 过滤器时才有效。

注意

tenant_id 也可以请求,它是 project_id 的别名,但不推荐使用,因为它将在未来被移除。

ramdisk_id(可选)

查询

字符串

使用 AMI 时,按引导磁盘镜像的 UUID 过滤服务器列表结果。

此参数仅在管理员指定时有效。如果非管理员用户指定此参数,则会被忽略。

reservation_id(可选)

查询

字符串

通过服务器多次创建调用返回的预留 ID。

root_device_name(可选)

查询

字符串

按服务器的根设备名称过滤服务器列表结果。

此参数仅在管理员指定时有效。如果非管理员用户指定此参数,则会被忽略。

soft_deleted(可选)

查询

布尔值

SOFT_DELETED 状态过滤服务器列表。此参数仅在指定了 deleted=True 过滤器参数时有效。

sort_dir (可选)

查询

字符串

排序方向。有效值为 asc(升序)或 desc(降序)。默认为 desc。您可以指定多个排序键和排序方向查询参数对。如果您在某个对中省略了排序方向,API 将使用服务器 sort_key 属性的自然排序方向。

sort_key (可选)

查询

字符串

按服务器属性排序。默认属性为 created_at。您可以指定多个排序键和排序方向查询参数对。如果您在某个对中省略了排序方向,API 将使用服务器 sort_key 属性的自然排序方向。排序键限制为:

  • access_ip_v4

  • access_ip_v6

  • auto_disk_config

  • availability_zone

  • config_drive

  • created_at

  • display_description

  • display_name

  • host

  • hostname

  • image_ref

  • instance_type_id

  • kernel_id

  • key_name

  • launch_index

  • launched_at

  • locked(版本 2.73 新增)

  • locked_by

  • node

  • power_state

  • progress

  • project_id

  • ramdisk_id

  • root_device_name

  • task_state

  • terminated_at

  • updated_at

  • user_id

  • uuid

  • vm_state

hostnode 仅允许管理员使用。如果非管理员用户指定它们,将返回 403 错误。

status (可选)

查询

字符串

按服务器状态(字符串)过滤响应。例如,ACTIVE

直到微版本 2.37,如果指定了无效状态,则返回空列表。从微版本 2.38 开始,在这种情况下会返回 400 错误。

task_state(可选)

查询

字符串

按任务状态过滤服务器列表结果。

在微版本 2.83 之前,此参数仅限于管理员。如果非管理员用户在微版本低于 2.83 时指定此参数,则会被忽略。

terminated_at(可选)

查询

字符串

按实例终止的日期和时间戳过滤服务器列表结果。日期和时间戳格式为ISO 8601

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

如果包含 ±hh:mm 值,则返回时区作为 UTC 的偏移量。例如,2015-08-27T09:49:58-05:00。如果省略时区,则假定为 UTC 时区。

在微版本 2.83 之前,此参数仅限于管理员。如果非管理员用户在微版本低于 2.83 时指定此参数,则会被忽略。

user_id (可选)

查询

字符串

按给定的用户 ID 过滤服务器列表。

在微版本 2.83 之前,此参数仅限于管理员。如果非管理员用户在微版本低于 2.83 时指定此参数,则会被忽略。

uuid (可选)

查询

字符串

按服务器 UUID 过滤服务器列表结果。

此参数仅在管理员指定时有效。如果非管理员用户指定此参数,则会被忽略。

vm_state(可选)

查询

字符串

按虚拟机状态过滤服务器列表结果。

值可以是:

  • ACTIVE

  • BUILDING

  • DELETED

  • ERROR

  • PAUSED

  • RESCUED

  • RESIZED

  • SHELVED

  • SHELVED_OFFLOADED

  • SOFT_DELETED

  • STOPPED

  • SUSPENDED

在微版本 2.83 之前,此参数仅限于管理员。如果非管理员用户在微版本低于 2.83 时指定此参数,则会被忽略。

not-tags(可选)

查询

字符串

要过滤服务器列表的标签列表。不匹配此列表中所有标签的服务器将被返回。在这种情况下,布尔表达式为“NOT (t1 AND t2)”。查询中的标签必须用逗号分隔。

版本 2.26 新增

not-tags-any(可选)

查询

字符串

要过滤服务器列表的标签列表。不匹配此列表中任何标签的服务器将被返回。在这种情况下,布尔表达式为“NOT (t1 OR t2)”。查询中的标签必须用逗号分隔。

版本 2.26 新增

tags (可选)

查询

字符串

要过滤服务器列表的标签列表。匹配此列表中所有标签的服务器将被返回。在这种情况下,布尔表达式为“t1 AND t2”。查询中的标签必须用逗号分隔。

版本 2.26 新增

tags-any(可选)

查询

字符串

要过滤服务器列表的标签列表。匹配此列表中任何标签的服务器将被返回。在这种情况下,布尔表达式为“t1 OR t2”。查询中的标签必须用逗号分隔。

版本 2.26 新增

changes-before(可选)

查询

字符串

按服务器最后更改的日期和时间戳过滤响应。将返回在此日期和时间戳之前或等于该日期和时间戳更改的服务器。为了帮助跟踪更改,这可能还会返回最近删除的服务器。

日期和时间戳格式为 ISO 8601

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

如果包含 ±hh:mm 值,则返回时区作为 UTC 的偏移量。例如,2015-08-27T09:49:58-05:00。如果省略时区,则假定为 UTC 时区。当同时指定 changes-sincechanges-before 时,changes-before 的值必须晚于或等于 changes-since 的值,否则 API 将返回 400。

版本 2.66 新增

locked(可选)

查询

布尔值

指定 locked 查询参数以列出所有锁定或未锁定的实例。如果指定了该值,1ttrueonyyes 都被视为 True0ffalseoffnno 都被视为 False。(它们不区分大小写。)任何其他值都将被视为无效。

版本 2.73 新增

响应

名称

入参

类型

描述

servers

body

数组

服务器对象的列表。

id

body

字符串

服务器的 UUID。

links

body

数组

指向相关资源的链接。有关更多信息,请参阅API 指南 / 链接和引用

name

body

字符串

服务器名称。

servers_links(可选)

body

数组

指向下一个服务器的链接。当服务器数量超过 limit 参数或配置文件中的 [api]/max_limit 时可用。有关更多信息,请参阅分页集合

列出服务器示例

{
    "servers": [
        {
            "id": "22c91117-08de-4894-9aa9-6ef382400985",
            "links": [
                {
                    "href": "http://openstack.example.com/v2/6f70656e737461636b20342065766572/servers/22c91117-08de-4894-9aa9-6ef382400985",
                    "rel": "self"
                },
                {
                    "href": "http://openstack.example.com/6f70656e737461636b20342065766572/servers/22c91117-08de-4894-9aa9-6ef382400985",
                    "rel": "bookmark"
                }
            ],
            "name": "new-server-test"
        }
    ],
    "servers_links": [
        {
            "href": "http://openstack.example.com/v2.1/6f70656e737461636b20342065766572/servers?limit=1&marker=22c91117-08de-4894-9aa9-6ef382400985",
            "rel": "next"
        }
    ]
}

列出服务器示例 (2.69)

这是部署中非响应部分的服务器的示例响应。可用服务器记录的响应将正常,没有任何缺失的键。

{
    "servers": [
        {
            "id": "2e136db7-b4a4-4815-8a00-25d9bfe59617",
            "status": "UNKNOWN",
            "links": [
                {
                    "href": "http://openstack.example.com/v2.1/6f70656e737461636b20342065766572/servers/2e136db7-b4a4-4815-8a00-25d9bfe59617",
                    "rel": "self"
                },
                {
                    "href": "http://openstack.example.com/6f70656e737461636b20342065766572/servers/2e136db7-b4a4-4815-8a00-25d9bfe59617",
                    "rel": "bookmark"
                }
            ]
        }
    ]
}
POST
/servers

创建服务器

创建服务器。

此操作的进度取决于所请求镜像的位置、网络 I/O、主机负载、选定的 flavor 以及其他因素。

要检查请求的进度,请发出 GET /servers/{id} 请求。此调用将返回一个 progress 属性,该属性是一个从 0 到 100 的百分比值。

Location 标头返回新创建服务器的完整 URL,并且在服务器表示中可作为 selfbookmark 链接。

创建服务器时,响应仅显示服务器 ID、其链接和管理员密码。您可以通过后续对服务器的 GET 请求获取其他属性。

在创建请求正文中包含 block_device_mapping_v2 参数以从卷引导服务器。

在创建服务器时,在创建请求正文中包含 key_name 参数以添加密钥对。要创建密钥对,请发出创建密钥对请求。

注意

从微版本 2.37 开始,networks 字段是必需的。

先决条件

  • 用户必须拥有足够的服务器配额才能创建请求数量的服务器。

  • 与镜像服务的连接是有效的。

异步后置条件

  • 在具有正确权限的情况下,您可以通过 API 调用将服务器状态视为 ACTIVE

  • 在具有正确访问权限的情况下,您可以在 OpenStack Compute 管理的计算节点中看到已创建的服务器。

故障排除

  • 如果服务器状态仍为 BUILDING 或显示其他错误状态,则表示请求失败。确保您满足先决条件,然后调查计算节点。

  • 服务器未在 OpenStack Compute 管理的计算节点上创建。

  • 计算节点需要足够的可用资源来匹配服务器创建请求的资源。

  • 确保调度器选择过滤器能够使用与过滤器选择标准匹配的可用计算节点来满足请求。

正常响应代码:202

错误响应代码:badRequest(400),unauthorized(401),forbidden(403),itemNotFound(404),conflict(409)

请求

名称

入参

类型

描述

server

body

对象

一个 server 对象。

flavorRef

body

字符串

服务器实例的 flavor 的引用,可以是 ID(包括 UUID)或完整 URL。

name

body

字符串

服务器名称。

networks

body

数组

网络对象的列表。当项目定义了多个网络时,这是必需的参数。当您不指定 networks 参数时,服务器将附加到为当前项目创建的唯一网络。可选地,您可以为服务器创建一或多个 NIC。要为服务器实例配置网络 NIC,请在 networks 对象中的 uuid 属性中指定网络的 UUID。要为已存在的端口配置服务器实例 NIC,请在 networks 对象中的 port 属性中指定端口 ID。

如果定义了多个网络,它们在访客操作系统中的顺序不一定反映它们在服务器启动请求中的顺序。因此,访客不应依赖设备顺序来推断有关其网络设备的信息。而应使用设备角色标签:在 2.32 中引入,在 2.37 中损坏,并在 2.42 中重新引入并修复,tag 是一个可选的字符串属性,可用于为虚拟网络接口分配标签。此标签随后通过元数据 API 和 config drive 对访客可见,并与该网络接口的硬件元数据相关联,例如总线(例如:PCI)、总线地址(例如:0000:00:02.0)和 MAC 地址。

由于一个 bug,从 2.37 版本开始,tag 属性不再被接受。因此,网络接口只能在 2.32 到 2.36 版本(含)之间进行标记。2.42 版本恢复了 tag 属性。

从微版本 2.37 开始,此字段是必需的,并且可以为网络指定特殊字符串值 *auto* 和 *none*。*auto* 告诉 Compute 服务使用项目中可用的网络(如果存在)。如果不存在,Compute 服务将尝试自动分配一个网络给该项目(如果可能)。*none* 告诉 Compute 服务不为实例分配网络。*auto* 和 *none* 值不能与其他网络值一起使用,包括其他网络 UUID、端口、固定 IP 或设备标签。这些值作为字符串请求 networks 值,而不是作为列表。请参阅相关示例。

networks.uuid(可选)

body

字符串

要为服务器实例配置网络 NIC,请在 networks 对象中的 uuid 属性中指定网络的 UUID。如果省略 port 属性,则此项是必需的。

从微版本 2.37 开始,此值被严格强制为 UUID 格式。

networks.port(可选)

body

字符串

要为服务器实例配置已存在端口的 NIC,请在 networks 对象中的 port 属性中指定端口 ID。端口状态必须为 DOWN。如果省略 uuid 属性,则此项是必需的。请求的安全组不应用于预先存在的端口。

networks.fixed_ip(可选)

body

字符串

NIC 的固定 IPv4 地址。与 neutronnova-networks 网络兼容。

networks.tag(可选)

body

字符串

可以应用于网络接口的设备角色标签。具有此类已标记设备的服务器的访客 OS 可以从元数据 API 和 config drive(如果已启用)访问有关已标记设备的硬件元数据。

注意

由于一个 bug,网络接口标签在 2.32 到 2.36 版本(含)之间以及之后从 2.42 版本开始被接受。

版本 2.32 新增

accessIPv4(可选)

body

字符串

应从此服务器访问的 IPv4 地址。

accessIPv6(可选)

body

字符串

应从此服务器访问的 IPv6 地址。

adminPass(可选)

body

字符串

服务器的管理密码。如果省略此参数,操作将生成一个新密码。

availability_zone (可选)

body

字符串

从其启动服务器的可用性区域。在配置资源时,您会指定希望从哪个可用性区域构建实例。通常,管理员用户会使用可用性区域将 OpenStack 计算主机分组到逻辑组中。

可用性区域提供了一种与其他可用性区域进行物理隔离和冗余的形式。例如,如果您的数据中心中的某些机架位于单独的电源上,您可以将这些机架中的服务器放入它们自己的可用性区域。可用性区域还可以帮助区分不同类别的硬件。通过将资源划分为可用性区域,您可以确保您的应用程序资源分布在不同的机器上,以在发生硬件或其他故障时实现高可用性。有关更多信息,请参阅可用性区域 (AZs)

您可以通过调用可用性区域 (os-availability-zone) API 来列出可用的可用性区域,但您应该避免在创建服务器时使用默认可用性区域。默认可用性区域的名称为 nova。此 AZ 仅在作为管理员列出可用性区域时显示。

block_device_mapping_v2(可选)

body

数组

允许对实例的块设备映射进行细粒度控制。这通常用于从卷引导服务器。示例格式如下:

"block_device_mapping_v2": [{
    "boot_index": "0",
    "uuid": "ac408821-c95a-448f-9292-73986c790911",
    "source_type": "image",
    "volume_size": "25",
    "destination_type": "volume",
    "delete_on_termination": true,
    "tag": "disk1",
    "disk_bus": "scsi"}]

在微版本 2.32 中,tag 是一个可选的字符串属性,可用于为块设备分配标签。此标签随后通过元数据 API 和 config drive 对访客可见,并与该块设备的硬件元数据相关联,例如总线(例如:SCSI)、总线地址(例如:1:0:2:0)和序列号。

由于一个 bug,从 2.33 版本开始,tag 属性不再被接受。它已在 2.42 版本中恢复。

block_device_mapping_v2.boot_index

body

整数

定义虚拟机监控程序在尝试从存储引导客户机时尝试设备的顺序。为每个设备分配一个从 0 开始的唯一启动索引。要禁用某个设备引导,请将启动索引设置为负值或使用默认启动索引值 None。最简单的用法是,将启动设备的启动索引设置为 0,并为任何其他设备使用默认启动索引值 None。某些虚拟机监控程序可能不支持从多个设备引导;这些虚拟机监控程序只考虑启动索引为 0 的设备。某些虚拟机监控程序支持从多个设备引导,但前提是设备类型不同。例如,磁盘和 CD-ROM。

block_device_mapping_v2.delete_on_termination(可选)

body

布尔值

要在销毁服务器时删除启动卷,请指定 true。否则,请指定 false。默认值:false

block_device_mapping_v2.destination_type(可选)

body

字符串

定义块设备映射的位置。有效值为:

  • local:瞬时磁盘位于运行服务器的计算主机本地。

  • volume:持久卷存储在块存储服务中。

block_device_mapping_v2.device_name(可选)

body

字符串

要用于引导服务器的卷的设备路径。请注意,从 12.0.0 Liberty 版本开始,Nova libvirt 驱动程序不再遵循用户提供的设备名称。这与在请求中未提供设备名称参数时的行为相同。

block_device_mapping_v2.device_type(可选)

body

字符串

设备类型。例如,diskcdrom

block_device_mapping_v2.disk_bus(可选)

body

字符串

磁盘总线类型,某些虚拟机监控程序(目前只有 libvirt)支持指定此参数。一些示例 disk_bus 值可以是:fdcidesatascsiusbvirtioxenlxcuml。每种总线类型的支持取决于虚拟化驱动程序和底层虚拟机监控程序。

block_device_mapping_v2.guest_format(可选)

body

字符串

指定访客服务器磁盘文件系统格式,例如 ext2ext3ext4xfsswap

Swap 块设备映射有以下限制:

  • source_type 必须是 blank

  • destination_type 必须是 local

  • 每个服务器只能有一个 swap 磁盘。

  • Swap 磁盘的大小必须小于或等于 flavor 的 swap 大小。

block_device_mapping_v2.no_device(可选)

body

布尔值

如果为 True,则表示没有设备。

block_device_mapping_v2.source_type(可选)

body

字符串

块设备的源类型。有效值为:

  • blank:根据 destination_typeguest_format,这将是运行服务器的计算主机上的一个空白持久卷或一个瞬时(或 swap)磁盘。

  • image:这仅在 destination_type=volume 时有效;在块存储服务中创建一个镜像支持的卷并将其附加到服务器。

  • snapshot:这仅在 destination_type=volume 时有效;创建一个由 block_device_mapping_v2.uuid 参数引用的给定卷快照支持的卷,并将其附加到服务器。

  • volume:这仅在 destination_type=volume 时有效;使用 block_device_mapping_v2.uuid 参数引用的现有持久卷,并将其附加到服务器。

除非指定了 block_device_mapping_v2.no_device,否则此参数是必需的。

有关有效的源类型和目标类型的更多详细信息,请参阅Nova 中的块设备映射

block_device_mapping_v2.uuid(可选)

body

字符串

这是源资源的 UUID。UUID 指向不同的资源,具体取决于 source_type。例如,如果 source_typeimage,则块设备将根据从镜像服务检索到的指定镜像创建。同样,如果 source_typesnapshot,则 UUID 指向块存储服务中的卷快照。如果 source_typevolume,则 UUID 指向块存储服务中的卷。

block_device_mapping_v2.volume_size(可选)

body

整数

卷的大小(以 GiB 为单位)。这是一个范围在 1 到 2147483647 之间的整数值,可以作为整数和字符串请求。在以下情况下必须指定此参数:

  • 镜像到卷的情况

    • block_device_mapping_v2.source_typeimage

    • block_device_mapping_v2.destination_typevolume

  • 空白到卷的情况

    • block_device_mapping_v2.source_typeblank

    • block_device_mapping_v2.destination_typevolume

block_device_mapping_v2.tag(可选)

body

字符串

可以应用于块设备的设备角色标签。具有此类已标记设备的服务器的访客 OS 可以从元数据 API 和 config drive(如果已启用)访问有关已标记设备的硬件元数据。

注意

由于一个 bug,块设备标签在 2.32 版本以及之后从 2.42 版本开始被接受。

版本 2.32 新增

block_device_mapping_v2.volume_type(可选)

body

字符串

设备 volume_type。这可用于指定计算服务将创建并附加到服务器的卷类型。如果未指定,块存储服务将提供默认卷类型。有关更多详细信息,请参阅块存储卷类型 API。对 volume_type 有一些限制:

  • 可以是卷类型 ID 或名称。

  • 仅支持 source_typeblankimagesnapshot

  • 仅支持 destination_typevolume

版本 2.67 新增

config_drive(可选)

body

布尔值

指示 config drive 是否启用了元数据注入。config_drive 设置提供了实例在启动时可挂载的驱动器的信息。实例从驱动器读取文件以获取通常可通过元数据服务获得的信息。此元数据与用户数据不同。并非所有云提供商都启用 config_drive。请参阅OpenStack 最终用户指南以了解更多信息。

imageRef (可选)

body

字符串

用于您的服务器实例的镜像的 UUID。如果从卷启动,则不需要此项。在所有其他情况下,它都是必需的,并且必须是有效的 UUID,否则 API 将返回 400。

key_name(可选)

body

字符串

密钥对名称。

注意

在 Nova 遗留 v2 API 中允许使用 null 值,但由于严格的输入验证,它在 Nova v2.1 API 中不允许。

metadata (可选)

body

对象

元数据键值对。每个元数据键和值的最大大小为 255 字节。

OS-DCF:diskConfig(可选)

body

字符串

控制 API 在创建、重建或调整服务器大小时如何对磁盘进行分区。服务器继承其创建的镜像的 OS-DCF:diskConfig 值,而镜像继承其创建的服务器的 OS-DCF:diskConfig 值。要覆盖继承的设置,您可以在服务器创建、重建或调整大小请求的正文中包含此属性。如果镜像的 OS-DCF:diskConfig 值为 MANUAL,则您无法从该镜像创建服务器并将其 OS-DCF:diskConfig 值设置为 AUTO。有效值为:

  • AUTO。API 构建服务器,其中包含一个分区,大小与目标 flavor 磁盘相同。API 会自动调整文件系统以适应整个分区。

  • MANUAL。API 使用源镜像中的分区方案和文件系统来构建服务器。如果目标 flavor 磁盘更大,API 不会对剩余的磁盘空间进行分区。

personality(可选)

body

数组

要在启动时注入服务器的文件路径和内容(仅文本)。文件路径数据的最大大小为 255 字节。最大限制是解码数据(而不是编码数据)允许的字节数。

在版本 2.56 之前可用

security_groups (可选)

body

数组

一个或多个安全组。在 name 属性中指定安全组的名称。如果省略此属性,API 将在 default 安全组中创建服务器。请求的安全组不应用于预先存在的端口。

user_data(可选)

body

字符串

启动时使用的配置信息或脚本。必须进行 Base64 编码。限制为 65535 字节。

注意

在 Nova 遗留 v2 API 中允许使用 null 值,但由于严格的输入验证,它在 Nova v2.1 API 中不允许。

description (可选)

body

字符串

服务器的自由格式描述。限制为 255 个字符。在微版本 2.19 之前,此字段设置为服务器名称。

版本 2.19 新增

hostname (可选)

body

字符串

配置实例在元数据服务中使用的名称。

从微版本 2.94 开始,这可以是一个最大长度为 255 个字符的完全限定域名 (FQDN)。

注意

此信息通过元数据服务发布,需要 cloud-init 等应用程序将其传播到实例。

版本 2.90 新增

tags (可选)

body

数组

标签列表。标签有以下限制:

  • 标签是长度不超过 60 个字符的 Unicode 字节字符串。

  • 标签是非空字符串。

  • 标签名称中不允许使用“/”。

  • 为了简化指定标签列表的请求,标签名称中不允许使用逗号。

  • 所有其他字符都允许在标签名称中使用。

  • 每个服务器最多可以有 50 个标签。

版本 2.52 新增

trusted_image_certificates(可选)

body

数组

受信任证书 ID 列表,用于在镜像签名验证期间验证签名证书。列表最多限制为 50 个 ID。此参数在服务器创建请求中是可选的(如果策略允许),并且不支持用于基于卷的实例。

版本 2.63 新增

host (可选)

body

字符串

要在其中创建服务器的计算服务主机名称。如果找不到具有给定主机名的计算服务,API 将返回 400。默认情况下,仅管理员可以指定此参数。

版本 2.74 新增

hypervisor_hostname(可选)

body

字符串

要在其中创建服务器的虚拟机监控程序的主机名。如果找不到具有给定主机名的虚拟机监控程序,API 将返回 400。默认情况下,仅管理员可以指定此参数。

版本 2.74 新增

os:scheduler_hints(可选)

body

对象

发送到调度器的数据字典。或者,您可以在请求正文中指定 OS-SCH-HNT:scheduler_hints 作为键。

注意

这是请求正文中的顶级键,不是请求正文中 server 部分的一部分。

调度器提示有一些注意事项:

  • 请求验证模式是每个提示。例如,某些提示需要单个字符串值,而某些提示接受值列表。

  • 提示的使用仅基于云调度器配置,该配置因部署而异。

  • 提示是按部署可插拔的,这意味着一个云可能有自定义提示,而另一个云可能没有。

因此,查阅每个云的用户文档以了解调度器提示的可用选项非常重要。

os:scheduler_hints.build_near_host_ip(可选)

body

字符串

在云端可用 SimpleCIDRAffinityFilter 时,在参数 os:scheduler_hints.cidr 指定的网络中的主机上调度服务器。

os:scheduler_hints.cidr(可选)

body

字符串

在 IP 地址 (os:scheduler_hints:build_near_host_ip) 和此参数指定的网络中的主机上调度服务器。如果指定了 os:scheduler_hints:build_near_host_ip 并且省略了此参数,则使用 /24。它在云端可用 SimpleCIDRAffinityFilter 时可用。

os:scheduler_hints.different_cell(可选)

body

数组

一个单元格路由列表或一个单元格路由(字符串)。在未指定的单元格中调度服务器。当云端可用 DifferentCellFilter 时可用,这是一个单元格 v1 环境。

os:scheduler_hints.different_host (可选)

body

数组

一组服务器的服务器 UUID 列表或单个服务器 UUID。在与一组服务器不同的主机上调度服务器。当云端可用 DifferentHostFilter 时可用。

os:scheduler_hints.group (可选)

body

字符串

服务器组 UUID。根据服务器组的策略调度服务器(anti-affinityaffinitysoft-anti-affinitysoft-affinity)。当云端可用 ServerGroupAffinityFilterServerGroupAntiAffinityFilterServerGroupSoftAntiAffinityWeigherServerGroupSoftAffinityWeigher 时可用。

os:scheduler_hints.query (可选)

body

字符串

以 JSON 格式使用自定义过滤器调度服务器。例如

"query": "[\">=\",\"$free_ram_mb\",1024]"

当云端可用 JsonFilter 时可用。

os:scheduler_hints.same_host (可选)

body

数组

一组服务器的服务器 UUID 列表或单个服务器 UUID。在与一组服务器相同的宿主机上调度服务器。当云端可用 SameHostFilter 时可用。

os:scheduler_hints.target_cell (可选)

body

字符串

目标单元格名称。在指定的单元格中的主机上调度服务器。当云端可用 TargetCellFilter 时可用,这是一个单元格 v1 环境。

创建服务器示例

{
    "server" : {
        "accessIPv4": "1.2.3.4",
        "accessIPv6": "80fe::",
        "name" : "new-server-test",
        "imageRef" : "70a599e0-31e7-49b7-b260-868f441e862b",
        "flavorRef" : "1",
        "availability_zone": "us-west",
        "OS-DCF:diskConfig": "AUTO",
        "metadata" : {
            "My Server Name" : "Apache1"
        },
        "personality": [
            {
                "path": "/etc/banner.txt",
                "contents": "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA=="
            }
        ],
        "security_groups": [
            {
                "name": "default"
            }
        ],
        "user_data" : "IyEvYmluL2Jhc2gKL2Jpbi9zdQplY2hvICJJIGFtIGluIHlvdSEiCg=="
    },
    "OS-SCH-HNT:scheduler_hints": {
        "same_host": "48e6a9f6-30af-47e0-bc04-acaed113bb4e"
    }
}

创建带网络(数组)和块设备映射 v2(v2.32)的服务器示例

{
    "server" : {
        "name" : "device-tagging-server",
        "flavorRef" : "http://openstack.example.com/flavors/1",
        "networks" : [{
            "uuid" : "3cb9bc59-5699-4588-a4b1-b87f96708bc6",
            "tag": "nic1"
        }],
        "block_device_mapping_v2": [{
            "uuid": "70a599e0-31e7-49b7-b260-868f441e862b",
            "source_type": "image",
            "destination_type": "volume",
            "boot_index": 0,
            "volume_size": "1",
            "tag": "disk1"
        }]
    }
}

创建带自动网络(v2.37)的服务器示例

{
    "server": {
        "name": "auto-allocate-network",
        "imageRef": "70a599e0-31e7-49b7-b260-868f441e862b",
        "flavorRef": "http://openstack.example.com/flavors/1",
        "networks": "auto"
    }
}

创建带受信任镜像证书(v2.63)的服务器示例

{
    "server" : {
        "accessIPv4": "1.2.3.4",
        "accessIPv6": "80fe::",
        "name" : "new-server-test",
        "imageRef" : "70a599e0-31e7-49b7-b260-868f441e862b",
        "flavorRef" : "6",
        "availability_zone": "%(availability_zone)s",
        "OS-DCF:diskConfig": "AUTO",
        "metadata" : {
            "My Server Name" : "Apache1"
        },
        "security_groups": [
            {
                "name": "default"
            }
        ],
        "user_data" : "IyEvYmluL2Jhc2gKL2Jpbi9zdQplY2hvICJJIGFtIGluIHlvdSEiCg==",
        "networks": "auto",
        "trusted_image_certificates": [
            "0b5d2c72-12cc-4ba6-a8d7-3ff5cc1d8cb8",
            "674736e3-f25c-405c-8362-bbf991e0ce0a"
        ]
    },
    "OS-SCH-HNT:scheduler_hints": {
        "same_host": "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}"
    }
}

创建带主机和虚拟机监控程序主机名(v2.74)的服务器示例

{
    "server" : {
        "adminPass": "MySecretPass",
        "accessIPv4": "1.2.3.4",
        "accessIPv6": "80fe::",
        "name" : "new-server-test",
        "imageRef" : "70a599e0-31e7-49b7-b260-868f441e862b",
        "flavorRef" : "6",
        "OS-DCF:diskConfig": "AUTO",
        "metadata" : {
            "My Server Name" : "Apache1"
        },
        "security_groups": [
            {
                "name": "default"
            }
        ],
        "user_data" : "IyEvYmluL2Jhc2gKL2Jpbi9zdQplY2hvICJJIGFtIGluIHlvdSEiCg==",
        "networks": "auto",
        "host": "openstack-node-01",
        "hypervisor_hostname": "openstack-node-01"
    }
}

创建带主机名(v2.90)的服务器示例

{
    "server" : {
        "accessIPv4": "1.2.3.4",
        "accessIPv6": "80fe::",
        "name" : "new-server-test",
        "imageRef" : "70a599e0-31e7-49b7-b260-868f441e862b",
        "flavorRef" : "1",
        "availability_zone": "us-west",
        "OS-DCF:diskConfig": "AUTO",
        "hostname": "custom-hostname",
        "metadata" : {
            "My Server Name" : "Apache1"
        },
        "personality": [
            {
                "path": "/etc/banner.txt",
                "contents": "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA=="
            }
        ],
        "security_groups": [
            {
                "name": "default"
            }
        ],
        "user_data" : "IyEvYmluL2Jhc2gKL2Jpbi9zdQplY2hvICJJIGFtIGluIHlvdSEiCg=="
    },
    "OS-SCH-HNT:scheduler_hints": {
        "same_host": "48e6a9f6-30af-47e0-bc04-acaed113bb4e"
    }
}

创建带主机名中 FQDN 的服务器示例(v2.94)

{
    "server" : {
        "accessIPv4": "1.2.3.4",
        "accessIPv6": "80fe::",
        "name" : "new-server-test",
        "imageRef" : "70a599e0-31e7-49b7-b260-868f441e862b",
        "flavorRef" : "1",
        "availability_zone": "us-west",
        "OS-DCF:diskConfig": "AUTO",
        "hostname": "custom-hostname.example.com",
        "metadata" : {
            "My Server Name" : "Apache1"
        },
        "personality": [
            {
                "path": "/etc/banner.txt",
                "contents": "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA=="
            }
        ],
        "security_groups": [
            {
                "name": "default"
            }
        ],
        "user_data" : "IyEvYmluL2Jhc2gKL2Jpbi9zdQplY2hvICJJIGFtIGluIHlvdSEiCg=="
    },
    "OS-SCH-HNT:scheduler_hints": {
        "same_host": "48e6a9f6-30af-47e0-bc04-acaed113bb4e"
    }
}

响应

名称

入参

类型

描述

位置

标头

字符串

服务器的定位 URL,将返回 HTTP 头“Location: <server location URL>”。

server

body

对象

一个 server 对象。

id

body

字符串

服务器的 UUID。

links

body

数组

指向相关资源的链接。有关更多信息,请参阅API 指南 / 链接和引用

OS-DCF:diskConfig

body

字符串

磁盘配置。值可以是

  • AUTO。API 构建服务器,其中包含一个分区,大小与目标 flavor 磁盘相同。API 会自动调整文件系统以适应整个分区。

  • MANUAL。API 使用源镜像中的分区方案和文件系统构建服务器。如果目标风味磁盘更大,API 不会对剩余磁盘空间进行分区。

security_groups

body

数组

一个或多个安全组对象。

security_groups.name

body

字符串

安全组名称。

adminPass(可选)

body

字符串

服务器的管理密码。如果将 enable_instance_password 配置选项设置为 False,API 将不会在响应中返回 adminPass 字段。

创建服务器示例

{
    "server": {
        "OS-DCF:diskConfig": "AUTO",
        "adminPass": "6NpUwoz2QDRN",
        "id": "f5dc173b-6804-445a-a6d8-c705dad5b5eb",
        "links": [
            {
                "href": "http://openstack.example.com/v2/6f70656e737461636b20342065766572/servers/f5dc173b-6804-445a-a6d8-c705dad5b5eb",
                "rel": "self"
            },
            {
                "href": "http://openstack.example.com/6f70656e737461636b20342065766572/servers/f5dc173b-6804-445a-a6d8-c705dad5b5eb",
                "rel": "bookmark"
            }
        ],
        "security_groups": [
            {
                "name": "default"
            }
        ]
    }
}
POST
/servers

创建多个服务器

还有第二种创建方式,可以一次创建多个服务器。这支持与创建相同的参数,但有一些特定于多重创建的附加属性。

多重创建的错误处理不如单服务器创建一致,并且不能保证所有服务器都会被创建。通常应避免使用此调用,而应优先使用客户端直接进行单独的服务器创建。

请求(附加参数)

这些是单次创建之外支持的参数。

名称

入参

类型

描述

name

body

字符串

在多重创建过程中用于生成唯一名称的基本名称。

min_count (可选)

body

整数

要创建的服务器的最小数量。默认为 1。

max_count (可选)

body

整数

要创建的服务器的最大数量。默认为 min_count 的值。

return_reservation_id (可选)

body

布尔值

设置为 True 以请求响应返回预留 ID 而不是实例信息。默认为 False

带预留 ID 的多重创建示例

{
    "server": {
        "name": "new-server-test",
        "imageRef": "70a599e0-31e7-49b7-b260-868f441e862b",
        "flavorRef": "1",
        "metadata": {
            "My Server Name": "Apache1"
        },
        "return_reservation_id": "True",
        "min_count": "2",
        "max_count": "3"
    }
}

响应

名称

入参

类型

描述

reservation_id

body

字符串

服务器的预留 ID。这是一个 ID,可用于跟踪通过多重创建创建的服务器组,这些服务器组都将具有相同的 reservation_id。

如果 return_reservation_id 设置为 true,则仅返回 reservation_id。这可以用作列表服务器详细信息的过滤器,以查看所有正在构建的服务器的状态。

带预留 ID 的多重创建服务器示例

{
    "reservation_id": "r-3fhpjulh"
}

如果 return_reservation_id 设置为 false,则将返回 first 服务器的表示。

不带预留 ID 的多重创建服务器示例

{
    "server": {
        "OS-DCF:diskConfig": "AUTO",
        "adminPass": "wfksH3GTTseP",
        "id": "440cf918-3ee0-4143-b289-f63e1d2000e6",
        "links": [
            {
                "href": "http://openstack.example.com/v2/6f70656e737461636b20342065766572/servers/440cf918-3ee0-4143-b289-f63e1d2000e6",
                "rel": "self"
            },
            {
                "href": "http://openstack.example.com/6f70656e737461636b20342065766572/servers/440cf918-3ee0-4143-b289-f63e1d2000e6",
                "rel": "bookmark"
            }
        ],
        "security_groups": [
            {
                "name": "default"
            }
        ]
    }
}
GET
/servers/detail

列出服务器详细信息

显示每个服务器的详细信息,包括配置驱动器、扩展状态和服务器使用信息。

扩展状态信息出现在 OS-EXT-STS:vm_state、OS-EXT-STS:power_state 和 OS-EXT-STS:task_state 属性中。

服务器使用信息出现在 OS-SRV-USG:launched_at 和 OS-SRV-USG:terminated_at 属性中。

HostId 在每个账户内是唯一的,而不是全局唯一的。

注意

从微版本 2.69 开始,如果由于部署中的临时条件(如基础设施故障)导致无法加载服务器详细信息,则这些不可用服务器的响应正文将缺少键。有关部分构造中将返回的键的信息,请参阅 Compute API 指南的处理宕机单元部分。

正常响应代码:200

错误响应代码:badRequest(400),unauthorized(401),forbidden(403)

请求

名称

入参

类型

描述

access_ip_v4(可选)

查询

字符串

按应用于访问服务器的 IPv4 地址过滤服务器列表结果。

access_ip_v6(可选)

查询

字符串

按应用于访问服务器的 IPv6 地址过滤服务器列表结果。

all_tenants (可选)

查询

布尔值

指定 all_tenants 查询参数以列出所有项目的实例。默认情况下,这仅允许管理员操作。如果指定此参数而不带值,则该值默认为 True。如果指定了值,1ttrueonyyes 都被视为 True0ffalseoffnno 都被视为 False。(它们不区分大小写。)

auto_disk_config(可选)

查询

字符串

按服务器的 disk_config 设置过滤服务器列表结果。有效值为:

  • AUTO

  • MANUAL

此参数仅在管理员指定时有效。如果非管理员用户指定此参数,则会被忽略。

availability_zone (可选)

查询

字符串

按服务器可用性区域过滤服务器列表结果。

在微版本 2.83 之前,此参数仅限于管理员。如果非管理员用户在微版本低于 2.83 时指定此参数,则会被忽略。

changes-since(可选)

查询

字符串

按服务器最后更改状态的日期和时间戳过滤响应。为了帮助跟踪更改,此参数也可能返回最近删除的服务器。

日期和时间戳格式为 ISO 8601

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

如果包含 ±hh:mm 值,则返回时区作为 UTC 的偏移量。例如,2015-08-27T09:49:58-05:00。如果省略时区,则假定为 UTC 时区。当同时指定 changes-sincechanges-before 时,changes-since 的值必须早于或等于 changes-before 的值,否则 API 将返回 400。

config_drive(可选)

查询

字符串

按服务器的 config drive 设置过滤服务器列表结果。

在微版本 2.83 之前,此参数仅限于管理员。如果非管理员用户在微版本低于 2.83 时指定此参数,则会被忽略。

created_at (可选)

查询

字符串

按服务器创建的日期和时间戳过滤服务器列表结果。

日期和时间戳格式为 ISO 8601

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

如果包含 ±hh:mm 值,则返回时区作为 UTC 的偏移量。例如,2015-08-27T09:49:58-05:00。如果省略时区,则假定为 UTC 时区。

在微版本 2.83 之前,此参数仅限于管理员。如果非管理员用户在微版本低于 2.83 时指定此参数,则会被忽略。

deleted(可选)

查询

布尔值

仅显示已删除的项目。在某些情况下,已删除的项目仍然可以通过后端数据库访问,但没有关于保留时间长度的约定,因此此参数应谨慎使用。1ttrueonyyes 被视为 True(不区分大小写)。其他所有值均视为 False

此参数仅在管理员指定时有效。如果非管理员用户指定此参数,则会被忽略。

description (可选)

查询

字符串

按描述过滤服务器列表结果。

此参数仅在管理员指定时有效。如果非管理员用户指定此参数,则会被忽略。

注意

display_description 也可以请求,它是 description 的别名,但不推荐使用,因为它将在未来被移除。

flavor(可选)

查询

字符串

按 UUID 过滤响应。Flavor 是内存、磁盘大小和 CPU 的组合。

host (可选)

查询

字符串

按计算节点的名称过滤服务器列表结果。

此参数仅在管理员指定时有效。如果非管理员用户指定此参数,则会被忽略。

hostname (可选)

查询

字符串

按服务器名称过滤服务器列表结果。

此参数在微版本 2.90 之前仅管理员有效。在此之后,所有用户均可指定。如果非管理员用户在微版本 2.90 之前指定此参数,则会被忽略。

image (可选)

查询

字符串

按镜像(UUID)过滤响应。

注意

image_ref 也可以请求,它是 image 的别名,但不推荐使用,因为它将在未来被移除。

ip(可选)

查询

字符串

用于过滤结果的 IPv4 地址。

ip6(可选)

查询

字符串

用于过滤结果的 IPv6 地址。

直到微版本 2.4,此参数仅在管理员指定时有效。如果非管理员用户指定此参数,则会被忽略。从微版本 2.5 开始,此参数对非管理员用户和管理员均有效。

kernel_id(可选)

查询

字符串

使用 AMI 时,按内核镜像的 UUID 过滤服务器列表结果。

此参数仅在管理员指定时有效。如果非管理员用户指定此参数,则会被忽略。

key_name(可选)

查询

字符串

按密钥对名称过滤服务器列表结果。

在微版本 2.83 之前,此参数仅限于管理员。如果非管理员用户在微版本低于 2.83 时指定此参数,则会被忽略。

launch_index(可选)

查询

整数

按服务器启动的顺序过滤服务器列表结果。

此参数仅在管理员指定时有效。如果非管理员用户指定此参数,则会被忽略。

launched_at(可选)

查询

字符串

按实例启动的日期和时间戳过滤服务器列表结果。日期和时间戳格式为ISO 8601

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

如果包含 ±hh:mm 值,则返回时区作为 UTC 的偏移量。例如,2015-08-27T09:49:58-05:00。如果省略时区,则假定为 UTC 时区。

在微版本 2.83 之前,此参数仅限于管理员。如果非管理员用户在微版本低于 2.83 时指定此参数,则会被忽略。

limit (可选)

查询

整数

请求项目页面大小。返回最多限制值数量的项目。使用 limit 参数进行初始限制请求,并在后续限制请求中使用响应中最后一个已查看项目的 ID 作为 marker 参数值。

locked_by(可选)

查询

字符串

按锁定服务器的用户过滤服务器列表结果,可能的值为 adminowner

此参数仅在管理员指定时有效。如果非管理员用户指定此参数,则会被忽略。

marker (可选)

查询

字符串

最后一个已查看项目的 ID。使用 limit 参数进行初始限制请求,并在后续限制请求中使用响应中最后一个已查看项目的 ID 作为 marker 参数值。

name (可选)

查询

字符串

按服务器名称(字符串)过滤响应。您可以使用正则表达式进行查询。例如,?name=bob 正则表达式会返回 bob 和 bobb。如果您必须只匹配 bob,可以使用匹配 Compute 所实现的底层数据库服务器(如 MySQL 或 PostgreSQL)语法进行匹配的正则表达式。

注意

display_name 也可以请求,它是 name 的别名,但不推荐使用,因为它将在未来被移除。

node(可选)

查询

字符串

按节点过滤服务器列表结果。

此参数仅在管理员指定时有效。如果非管理员用户指定此参数,则会被忽略。

power_state(可选)

查询

整数

按服务器电源状态过滤服务器列表结果。

可能的值是整数值,映射如下:

0: NOSTATE
1: RUNNING
3: PAUSED
4: SHUTDOWN
6: CRASHED
7: SUSPENDED

在微版本 2.83 之前,此参数仅限于管理员。如果非管理员用户在微版本低于 2.83 时指定此参数,则会被忽略。

progress(可选)

查询

整数

按服务器进度过滤服务器列表结果。该值可以是 0 到 100 的整数。

在微版本 2.83 之前,此参数仅限于管理员。如果非管理员用户在微版本低于 2.83 时指定此参数,则会被忽略。

project_id (可选)

查询

字符串

按给定的项目 ID 过滤服务器列表。

此过滤器仅在同时指定 all_tenants 过滤器时才有效。

注意

tenant_id 也可以请求,它是 project_id 的别名,但不推荐使用,因为它将在未来被移除。

ramdisk_id(可选)

查询

字符串

使用 AMI 时,按引导磁盘镜像的 UUID 过滤服务器列表结果。

此参数仅在管理员指定时有效。如果非管理员用户指定此参数,则会被忽略。

reservation_id(可选)

查询

字符串

通过服务器多次创建调用返回的预留 ID。

root_device_name(可选)

查询

字符串

按服务器的根设备名称过滤服务器列表结果。

此参数仅在管理员指定时有效。如果非管理员用户指定此参数,则会被忽略。

soft_deleted(可选)

查询

布尔值

SOFT_DELETED 状态过滤服务器列表。此参数仅在指定了 deleted=True 过滤器参数时有效。

sort_dir (可选)

查询

字符串

排序方向。有效值为 asc(升序)或 desc(降序)。默认为 desc。您可以指定多个排序键和排序方向查询参数对。如果您在某个对中省略了排序方向,API 将使用服务器 sort_key 属性的自然排序方向。

sort_key (可选)

查询

字符串

按服务器属性排序。默认属性为 created_at。您可以指定多个排序键和排序方向查询参数对。如果您在某个对中省略了排序方向,API 将使用服务器 sort_key 属性的自然排序方向。排序键限制为:

  • access_ip_v4

  • access_ip_v6

  • auto_disk_config

  • availability_zone

  • config_drive

  • created_at

  • display_description

  • display_name

  • host

  • hostname

  • image_ref

  • instance_type_id

  • kernel_id

  • key_name

  • launch_index

  • launched_at

  • locked(版本 2.73 新增)

  • locked_by

  • node

  • power_state

  • progress

  • project_id

  • ramdisk_id

  • root_device_name

  • task_state

  • terminated_at

  • updated_at

  • user_id

  • uuid

  • vm_state

hostnode 仅允许管理员使用。如果非管理员用户指定它们,将返回 403 错误。

status (可选)

查询

字符串

按服务器状态(字符串)过滤响应。例如,ACTIVE

直到微版本 2.37,如果指定了无效状态,则返回空列表。从微版本 2.38 开始,在这种情况下会返回 400 错误。

task_state(可选)

查询

字符串

按任务状态过滤服务器列表结果。

在微版本 2.83 之前,此参数仅限于管理员。如果非管理员用户在微版本低于 2.83 时指定此参数,则会被忽略。

terminated_at(可选)

查询

字符串

按实例终止的日期和时间戳过滤服务器列表结果。日期和时间戳格式为ISO 8601

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

如果包含 ±hh:mm 值,则返回时区作为 UTC 的偏移量。例如,2015-08-27T09:49:58-05:00。如果省略时区,则假定为 UTC 时区。

在微版本 2.83 之前,此参数仅限于管理员。如果非管理员用户在微版本低于 2.83 时指定此参数,则会被忽略。

user_id (可选)

查询

字符串

按给定的用户 ID 过滤服务器列表。

在微版本 2.83 之前,此参数仅限于管理员。如果非管理员用户在微版本低于 2.83 时指定此参数,则会被忽略。

uuid (可选)

查询

字符串

按服务器 UUID 过滤服务器列表结果。

此参数仅在管理员指定时有效。如果非管理员用户指定此参数,则会被忽略。

vm_state(可选)

查询

字符串

按虚拟机状态过滤服务器列表结果。

值可以是:

  • ACTIVE

  • BUILDING

  • DELETED

  • ERROR

  • PAUSED

  • RESCUED

  • RESIZED

  • SHELVED

  • SHELVED_OFFLOADED

  • SOFT_DELETED

  • STOPPED

  • SUSPENDED

在微版本 2.83 之前,此参数仅限于管理员。如果非管理员用户在微版本低于 2.83 时指定此参数,则会被忽略。

not-tags(可选)

查询

字符串

要过滤服务器列表的标签列表。不匹配此列表中所有标签的服务器将被返回。在这种情况下,布尔表达式为“NOT (t1 AND t2)”。查询中的标签必须用逗号分隔。

版本 2.26 新增

not-tags-any(可选)

查询

字符串

要过滤服务器列表的标签列表。不匹配此列表中任何标签的服务器将被返回。在这种情况下,布尔表达式为“NOT (t1 OR t2)”。查询中的标签必须用逗号分隔。

版本 2.26 新增

tags (可选)

查询

字符串

要过滤服务器列表的标签列表。匹配此列表中所有标签的服务器将被返回。在这种情况下,布尔表达式为“t1 AND t2”。查询中的标签必须用逗号分隔。

版本 2.26 新增

tags-any(可选)

查询

字符串

要过滤服务器列表的标签列表。匹配此列表中任何标签的服务器将被返回。在这种情况下,布尔表达式为“t1 OR t2”。查询中的标签必须用逗号分隔。

版本 2.26 新增

changes-before(可选)

查询

字符串

按服务器最后更改的日期和时间戳过滤响应。将返回在此日期和时间戳之前或等于该日期和时间戳更改的服务器。为了帮助跟踪更改,这可能还会返回最近删除的服务器。

日期和时间戳格式为 ISO 8601

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

如果包含 ±hh:mm 值,则返回时区作为 UTC 的偏移量。例如,2015-08-27T09:49:58-05:00。如果省略时区,则假定为 UTC 时区。当同时指定 changes-sincechanges-before 时,changes-before 的值必须晚于或等于 changes-since 的值,否则 API 将返回 400。

版本 2.66 新增

locked(可选)

查询

布尔值

指定 locked 查询参数以列出所有锁定或未锁定的实例。如果指定了该值,1ttrueonyyes 都被视为 True0ffalseoffnno 都被视为 False。(它们不区分大小写。)任何其他值都将被视为无效。

版本 2.73 新增

响应

名称

入参

类型

描述

servers

body

数组

服务器对象的列表。

accessIPv4

body

字符串

应使用此 IPv4 地址访问此服务器。可能由提供程序自动设置。

accessIPv6

body

字符串

应使用此 IPv6 地址访问此服务器。可能由提供程序自动设置。

addresses

body

对象

服务器的地址。状态为 BUILD 的服务器会隐藏其地址信息。此视图不会立即更新。请参考 OpenStack 网络 API 以获取最新信息。

config_drive

body

字符串

指示是否为该服务器使用了配置驱动器。值为 True 或空字符串。空字符串表示 False

创建时间

body

字符串

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

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

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

flavor

body

对象

在 microversion 2.47 之前,这包含用于引导服务器实例的风味 ID 和链接。如果风味信息不再存在于系统中,这可能是一个空对象。

从 microversion 2.47 开始,这包含用于创建服务器实例的风味信息的一个子集,表示为嵌套字典。

flavor.id

body

字符串

风味 ID。虽然人们经常将其视为整数,但它实际上是一个字符串。

在 2.46 版本之前可用

flavor.links

body

数组

指向风味资源的链接。更多信息请参见 API 指南 / 链接和引用

在 2.46 版本之前可用

flavor.vcpus

body

整数

分配给服务器的虚拟 CPU 数量。

2.47 版本新增

flavor.ram

body

整数

风味的大小,以 MiB 为单位。

2.47 版本新增

flavor.disk

body

整数

创建的根磁盘的大小,以 GiB 为单位。

2.47 版本新增

flavor.ephemeral

body

整数

创建的临时磁盘的大小,以 GiB 为单位。

2.47 版本新增

flavor.swap

body

整数

分配的专用交换磁盘的大小,以 MiB 为单位。

2.47 版本新增

flavor.original_name

body

字符串

风类的显示名称。

2.47 版本新增

flavor.extra_specs (可选)

body

对象

风类附加规格键值对的字典。仅当用户被策略允许索引风类附加规格时才包含。

2.47 版本新增

flavor.extra_specs.key

body

字符串

风类的附加规格键。

2.47 版本新增

flavor.extra_specs.value

body

字符串

风类的附加规格值。

2.47 版本新增

hostId

body

字符串

表示主机的 ID 字符串。这是一个哈希值,所以实际上看起来不像主机名,并且使用 project_id 的数据进行哈希,因此由两个不同的 project_id 看到的同一物理主机将是不同的。当同一项目内需要确定两个实例是否在相同或不同的物理主机上以用于可用性或性能目的时,它很有用。

id

body

字符串

服务器的 UUID。

image

body

对象

用于服务器实例的镜像的 UUID 和链接。当从卷引导服务器时,image 对象将为空字符串。

key_name

body

字符串

如果有关联的密钥对,则为密钥对的名称。

links

body

数组

指向相关资源的链接。有关更多信息,请参阅API 指南 / 链接和引用

metadata

body

对象

元数据键值对的字典,为保持向后兼容而维护。

name

body

字符串

服务器名称。

OS-DCF:diskConfig

body

字符串

磁盘配置。值可以是

  • AUTO。API 构建服务器,其中包含一个分区,大小与目标 flavor 磁盘相同。API 会自动调整文件系统以适应整个分区。

  • MANUAL。API 使用源镜像中的分区方案和文件系统构建服务器。如果目标风味磁盘更大,API 不会对剩余磁盘空间进行分区。

OS-EXT-AZ:availability_zone

body

字符串

可用区名称。

OS-EXT-SRV-ATTR:host

body

字符串

实例运行的计算主机名称。仅对管理员用户显示在响应中。

OS-EXT-SRV-ATTR:hostname (可选)

body

字符串

在元数据服务中报告的实例的主机名。此参数仅在管理员的响应中显示,直到 microversion 2.90,之后对所有用户显示。

注意

此信息通过元数据服务发布,需要 cloud-init 等应用程序将其传播到实例。

2.3 版本新增

OS-EXT-SRV-ATTR:hypervisor_hostname

body

字符串

Nova virt 驱动程序提供的虚拟机监控程序主机名。对于 Ironic 驱动程序,它是 Ironic 节点 uuid。仅对管理员用户显示在响应中。

OS-EXT-SRV-ATTR:instance_name

body

字符串

实例名称。计算 API 从实例名称模板生成实例名称。仅对管理员用户显示在响应中。

OS-EXT-SRV-ATTR:kernel_id (可选)

body

字符串

使用 AMI 时内核镜像的 UUID。如果没有,将为 null。默认情况下,仅对管理员用户显示在响应中。

2.3 版本新增

OS-EXT-SRV-ATTR:launch_index (可选)

body

整数

当通过多重创建启动服务器时,这是启动服务器的顺序。默认情况下,仅对管理员用户显示在响应中。

2.3 版本新增

OS-EXT-SRV-ATTR:ramdisk_id (可选)

body

字符串

使用 AMI 时引导磁盘镜像的 UUID。如果没有,将为 null。默认情况下,仅对管理员用户显示在响应中。

2.3 版本新增

OS-EXT-SRV-ATTR:reservation_id (可选)

body

字符串

服务器的预留 ID。这是一个 ID,可用于跟踪通过多重创建创建的服务器组,这些服务器组都将具有相同的 reservation_id。默认情况下,仅对管理员用户显示在响应中。

2.3 版本新增

OS-EXT-SRV-ATTR:root_device_name (可选)

body

字符串

实例的根设备名称。默认情况下,仅对管理员用户显示在响应中。

2.3 版本新增

OS-EXT-SRV-ATTR:user_data (可选)

body

字符串

创建实例时使用的 user_data。默认情况下,仅对管理员用户显示在响应中。

2.3 版本新增

OS-EXT-STS:power_state

body

整数

实例的电源状态。这是一个枚举值,映射为

0: NOSTATE
1: RUNNING
3: PAUSED
4: SHUTDOWN
6: CRASHED
7: SUSPENDED

OS-EXT-STS:task_state

body

字符串

实例的任务状态。

OS-EXT-STS:vm_state

body

字符串

VM 状态。

os-extended-volumes:volumes_attached

body

数组

已附加的卷(如果有)。

os-extended-volumes:volumes_attached.id

body

字符串

附加卷的 ID。

os-extended-volumes:volumes_attached.delete_on_termination

body

布尔值

一个标志,指示附加的卷在服务器被删除时是否也会被删除。默认为 False。

2.3 版本新增

OS-SRV-USG:launched_at

body

字符串

服务器启动的日期和时间。

日期和时间戳格式为 ISO 8601

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

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

hh±:mm 值(如果包含)是相对于 UTC 的时区偏移量。如果 deleted_at 日期和时间戳未设置,则其值为 null

OS-SRV-USG:terminated_at

body

字符串

服务器删除的日期和时间。

日期和时间戳格式为 ISO 8601

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

例如,2015-08-27T09:49:58-05:00±hh:mm 值(如果包含)是相对于 UTC 的时区偏移量。如果 deleted_at 日期和时间戳未设置,则其值为 null

status

body

字符串

服务器状态。

tenant_id

body

字符串

多租户云中的租户 UUID。

updated

body

字符串

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

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

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

user_id

body

字符串

拥有服务器的用户 ID。

fault (可选)

body

对象

一个故障对象。仅当服务器状态为 ERRORDELETED 且发生故障时显示。

fault.code

body

整数

错误响应代码。

fault.created

body

字符串

异常引发的日期和时间。日期和时间戳格式为 ISO 8601

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

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

fault.message

body

字符串

错误消息。

fault.details (可选)

body

字符串

堆栈跟踪。如果响应代码不是 500 或您具有管理员权限,则可用。

pinned_availability_zone (可选)

body

字符串

这是服务器创建期间请求的可用区。此外,当 cross_az_attach 选项为 false 且从卷引导实例时,实例可以固定到 AZ,在这种情况下,实例将在属于固定 AZ 的主机上调度。另外,当 default_schedule_zone 配置选项设置为特定 AZ 时,在这种情况下,实例将被固定到该特定 AZ,并且实例将在属于固定 AZ 的主机上调度。如果没有固定可用区,此值设置为 null

2.96 版本新增

progress(可选)

body

整数

操作进度的百分比值。此参数仅在服务器状态为 ACTIVEBUILDREBUILDRESIZEVERIFY_RESIZEMIGRATING 时出现。

scheduler_hints

body

对象

在服务器创建时发送给调度程序的提示字典。

2.100 版本新增

security_groups (可选)

body

数组

一个或多个安全组对象。

security_group.name

body

字符串

安全组名称。

servers_links(可选)

body

数组

指向下一个服务器的链接。当服务器数量超过 limit 参数或配置文件中的 [api]/max_limit 时可用。有关更多信息,请参阅分页集合

locked

body

布尔值

如果实例被锁定则为 True,否则为 False。

2.9 版本新增

host_status (可选)

body

字符串

主机状态。列表中的下一个值可以覆盖前一个值

  • UP,如果 nova-compute 正常。

  • UNKNOWN,如果 nova-compute 未由 servicegroup 驱动程序报告。

  • DOWN,如果 nova-compute 被强制关闭。

  • MAINTENANCE,如果 nova-compute 被禁用。

  • 空字符串表示服务器没有主机。

此属性仅在策略允许时出现在响应中。默认情况下,只有管理员可以获取此参数。

2.16 版本新增

description

body

字符串

服务器的描述。在 microversion 2.19 之前,这被设置为服务器名称。

版本 2.19 新增

tags

body

数组

标签列表。此列表中的最大标签数为 50。

版本 2.26 新增

trusted_image_certificates

body

数组

受信任的证书 ID 列表,用于在镜像签名验证期间验证签名证书。列表限制为最多 50 个 ID。如果未设置受信任的证书 ID,则值为 null

版本 2.63 新增

locked_reason

body

字符串

锁定服务器的原因。

版本 2.73 新增

列出服务器详细信息示例 (2.100)

{
    "servers": [
        {
            "accessIPv4": "1.2.3.4",
            "accessIPv6": "80fe::",
            "addresses": {
                "private": [
                    {
                        "addr": "192.168.1.30",
                        "OS-EXT-IPS-MAC:mac_addr": "00:0c:29:0d:11:74",
                        "OS-EXT-IPS:type": "fixed",
                        "version": 4
                    }
                ]
            },
            "created": "2013-09-03T04:01:32Z",
            "description": "",
            "flavor": {
                "disk": 1,
                "ephemeral": 0,
                "extra_specs": {},
                "original_name": "m1.tiny",
                "ram": 512,
                "swap": 0,
                "vcpus": 1
            },
            "hostId": "bcf92836fc9ed4203a75cb0337afc7f917d2be504164b995c2334b25",
            "id": "f5dc173b-6804-445a-a6d8-c705dad5b5eb",
            "image": {
                "id": "70a599e0-31e7-49b7-b260-868f441e862b",
                "links": [
                    {
                        "href": "http://openstack.example.com/6f70656e737461636b20342065766572/images/70a599e0-31e7-49b7-b260-868f441e862b",
                        "rel": "bookmark"
                    }
                ],
                "properties": {
                    "architecture": "x86_64",
                    "auto_disk_config": "True"
                }
            },
            "key_name": null,
            "links": [
                {
                    "href": "http://openstack.example.com/v2/6f70656e737461636b20342065766572/servers/f5dc173b-6804-445a-a6d8-c705dad5b5eb",
                    "rel": "self"
                },
                {
                    "href": "http://openstack.example.com/6f70656e737461636b20342065766572/servers/f5dc173b-6804-445a-a6d8-c705dad5b5eb",
                    "rel": "bookmark"
                }
            ],
            "metadata": {
                "My Server Name": "Apache1"
            },
            "name": "new-server-test",
            "config_drive": "",
            "locked": false,
            "locked_reason": "",
            "OS-DCF:diskConfig": "AUTO",
            "OS-EXT-AZ:availability_zone": "us-west",
            "OS-EXT-SRV-ATTR:hostname": "new-server-test",
            "OS-EXT-STS:power_state": 1,
            "OS-EXT-STS:task_state": null,
            "OS-EXT-STS:vm_state": "active",
            "os-extended-volumes:volumes_attached": [
                {"id": "volume_id1", "delete_on_termination": false},
                {"id": "volume_id2", "delete_on_termination": false}
            ],
            "OS-SRV-USG:launched_at": "2013-09-23T13:53:12.774549",
            "OS-SRV-USG:terminated_at": null,
            "pinned_availability_zone": "us-west",
            "progress": 0,
            "scheduler_hints": {
                "same_host": [
                    "48e6a9f6-30af-47e0-bc04-acaed113bb4e"
                ]
            },
            "security_groups": [
                {
                    "name": "default"
                }
            ],
            "status": "ACTIVE",
            "tags": [],
            "tenant_id": "6f70656e737461636b20342065766572",
            "trusted_image_certificates": null,
            "updated": "2013-09-03T04:01:32Z",
            "user_id": "fake"
        }
    ],
    "servers_links": [
        {
            "href": "http://openstack.example.com/v2.1/6f70656e737461636b20342065766572/servers/detail?limit=1&marker=f5dc173b-6804-445a-a6d8-c705dad5b5eb",
            "rel": "next"
        }
    ]
}

列出服务器详细信息示例 (2.98)

{
    "servers": [
        {
            "accessIPv4": "1.2.3.4",
            "accessIPv6": "80fe::",
            "addresses": {
                "private": [
                    {
                        "addr": "192.168.1.30",
                        "OS-EXT-IPS-MAC:mac_addr": "00:0c:29:0d:11:74",
                        "OS-EXT-IPS:type": "fixed",
                        "version": 4
                    }
                ]
            },
            "created": "2013-09-03T04:01:32Z",
            "description": "",
            "flavor": {
                "disk": 1,
                "ephemeral": 0,
                "extra_specs": {},
                "original_name": "m1.tiny",
                "ram": 512,
                "swap": 0,
                "vcpus": 1
            },
            "hostId": "bcf92836fc9ed4203a75cb0337afc7f917d2be504164b995c2334b25",
            "id": "f5dc173b-6804-445a-a6d8-c705dad5b5eb",
            "image": {
                "id": "70a599e0-31e7-49b7-b260-868f441e862b",
                "links": [
                    {
                        "href": "http://openstack.example.com/6f70656e737461636b20342065766572/images/70a599e0-31e7-49b7-b260-868f441e862b",
                        "rel": "bookmark"
                    }
                ],
                "properties": {
                    "architecture": "x86_64",
                    "auto_disk_config": "True"
                }
            },
            "key_name": null,
            "links": [
                {
                    "href": "http://openstack.example.com/v2/6f70656e737461636b20342065766572/servers/f5dc173b-6804-445a-a6d8-c705dad5b5eb",
                    "rel": "self"
                },
                {
                    "href": "http://openstack.example.com/6f70656e737461636b20342065766572/servers/f5dc173b-6804-445a-a6d8-c705dad5b5eb",
                    "rel": "bookmark"
                }
            ],
            "metadata": {
                "My Server Name": "Apache1"
            },
            "name": "new-server-test",
            "config_drive": "",
            "locked": false,
            "locked_reason": "",
            "OS-DCF:diskConfig": "AUTO",
            "OS-EXT-AZ:availability_zone": "us-west",
            "OS-EXT-SRV-ATTR:hostname": "new-server-test",
            "OS-EXT-STS:power_state": 1,
            "OS-EXT-STS:task_state": null,
            "OS-EXT-STS:vm_state": "active",
            "os-extended-volumes:volumes_attached": [
                {"id": "volume_id1", "delete_on_termination": false},
                {"id": "volume_id2", "delete_on_termination": false}
            ],
            "OS-SRV-USG:launched_at": "2013-09-23T13:53:12.774549",
            "OS-SRV-USG:terminated_at": null,
            "pinned_availability_zone": "us-west",
            "progress": 0,
            "security_groups": [
                {
                    "name": "default"
                }
            ],
            "status": "ACTIVE",
            "tags": [],
            "tenant_id": "6f70656e737461636b20342065766572",
            "trusted_image_certificates": null,
            "updated": "2013-09-03T04:01:32Z",
            "user_id": "fake"
        }
    ],
    "servers_links": [
        {
            "href": "http://openstack.example.com/v2.1/6f70656e737461636b20342065766572/servers/detail?limit=1&marker=f5dc173b-6804-445a-a6d8-c705dad5b5eb",
            "rel": "next"
        }
    ]
}

列出服务器详细信息示例 (2.96)

{
    "servers": [
        {
            "accessIPv4": "1.2.3.4",
            "accessIPv6": "80fe::",
            "addresses": {
                "private": [
                    {
                        "addr": "192.168.1.30",
                        "OS-EXT-IPS-MAC:mac_addr": "00:0c:29:0d:11:74",
                        "OS-EXT-IPS:type": "fixed",
                        "version": 4
                    }
                ]
            },
            "created": "2013-09-03T04:01:32Z",
            "description": "",
            "flavor": {
                "disk": 1,
                "ephemeral": 0,
                "extra_specs": {},
                "original_name": "m1.tiny",
                "ram": 512,
                "swap": 0,
                "vcpus": 1
            },
            "hostId": "bcf92836fc9ed4203a75cb0337afc7f917d2be504164b995c2334b25",
            "id": "f5dc173b-6804-445a-a6d8-c705dad5b5eb",
            "image": {
                "id": "70a599e0-31e7-49b7-b260-868f441e862b",
                "links": [
                    {
                        "href": "http://openstack.example.com/6f70656e737461636b20342065766572/images/70a599e0-31e7-49b7-b260-868f441e862b",
                        "rel": "bookmark"
                    }
                ]
            },
            "key_name": null,
            "links": [
                {
                    "href": "http://openstack.example.com/v2/6f70656e737461636b20342065766572/servers/f5dc173b-6804-445a-a6d8-c705dad5b5eb",
                    "rel": "self"
                },
                {
                    "href": "http://openstack.example.com/6f70656e737461636b20342065766572/servers/f5dc173b-6804-445a-a6d8-c705dad5b5eb",
                    "rel": "bookmark"
                }
            ],
            "metadata": {
                "My Server Name": "Apache1"
            },
            "name": "new-server-test",
            "config_drive": "",
            "locked": false,
            "locked_reason": "",
            "OS-DCF:diskConfig": "AUTO",
            "OS-EXT-AZ:availability_zone": "us-west",
            "OS-EXT-SRV-ATTR:hostname": "new-server-test",
            "OS-EXT-STS:power_state": 1,
            "OS-EXT-STS:task_state": null,
            "OS-EXT-STS:vm_state": "active",
            "os-extended-volumes:volumes_attached": [
                {"id": "volume_id1", "delete_on_termination": false},
                {"id": "volume_id2", "delete_on_termination": false}
            ],
            "OS-SRV-USG:launched_at": "2013-09-23T13:53:12.774549",
            "OS-SRV-USG:terminated_at": null,
            "pinned_availability_zone": "us-west",
            "progress": 0,
            "security_groups": [
                {
                    "name": "default"
                }
            ],
            "status": "ACTIVE",
            "tags": [],
            "tenant_id": "6f70656e737461636b20342065766572",
            "trusted_image_certificates": null,
            "updated": "2013-09-03T04:01:32Z",
            "user_id": "fake"
        }
    ],
    "servers_links": [
        {
            "href": "http://openstack.example.com/v2.1/6f70656e737461636b20342065766572/servers/detail?limit=1&marker=f5dc173b-6804-445a-a6d8-c705dad5b5eb",
            "rel": "next"
        }
    ]
}

列出服务器详细信息示例 (2.73)

{
    "servers": [
        {
            "OS-DCF:diskConfig": "AUTO",
            "OS-EXT-AZ:availability_zone": "nova",
            "OS-EXT-SRV-ATTR:host": "compute",
            "OS-EXT-SRV-ATTR:hostname": "new-server-test",
            "OS-EXT-SRV-ATTR:hypervisor_hostname": "fake-mini",
            "OS-EXT-SRV-ATTR:instance_name": "instance-00000001",
            "OS-EXT-SRV-ATTR:kernel_id": "",
            "OS-EXT-SRV-ATTR:launch_index": 0,
            "OS-EXT-SRV-ATTR:ramdisk_id": "",
            "OS-EXT-SRV-ATTR:reservation_id": "r-l0i0clt2",
            "OS-EXT-SRV-ATTR:root_device_name": "/dev/sda",
            "OS-EXT-SRV-ATTR:user_data": "IyEvYmluL2Jhc2gKL2Jpbi9zdQplY2hvICJJIGFtIGluIHlvdSEiCg==",
            "OS-EXT-STS:power_state": 1,
            "OS-EXT-STS:task_state": null,
            "OS-EXT-STS:vm_state": "active",
            "OS-SRV-USG:launched_at": "2019-04-23T15:19:15.317839",
            "OS-SRV-USG:terminated_at": null,
            "accessIPv4": "1.2.3.4",
            "accessIPv6": "80fe::",
            "addresses": {
                "private": [
                    {
                        "OS-EXT-IPS-MAC:mac_addr": "00:0c:29:0d:11:74",
                        "OS-EXT-IPS:type": "fixed",
                        "addr": "192.168.1.30",
                        "version": 4
                    }
                ]
            },
            "config_drive": "",
            "created": "2019-04-23T15:19:14Z",
            "description": null,
            "flavor": {
                "disk": 1,
                "ephemeral": 0,
                "extra_specs": {},
                "original_name": "m1.tiny",
                "ram": 512,
                "swap": 0,
                "vcpus": 1
            },
            "hostId": "2091634baaccdc4c5a1d57069c833e402921df696b7f970791b12ec6",
            "host_status": "UP",
            "id": "2ce4c5b3-2866-4972-93ce-77a2ea46a7f9",
            "image": {
                "id": "70a599e0-31e7-49b7-b260-868f441e862b",
                "links": [
                    {
                        "href": "http://openstack.example.com/6f70656e737461636b20342065766572/images/70a599e0-31e7-49b7-b260-868f441e862b",
                        "rel": "bookmark"
                    }
                ]
            },
            "key_name": null,
            "links": [
                {
                    "href": "http://openstack.example.com/v2.1/6f70656e737461636b20342065766572/servers/2ce4c5b3-2866-4972-93ce-77a2ea46a7f9",
                    "rel": "self"
                },
                {
                    "href": "http://openstack.example.com/6f70656e737461636b20342065766572/servers/2ce4c5b3-2866-4972-93ce-77a2ea46a7f9",
                    "rel": "bookmark"
                }
            ],
            "locked": true,
            "locked_reason": "I don't want to work",
            "metadata": {
                "My Server Name": "Apache1"
            },
            "name": "new-server-test",
            "os-extended-volumes:volumes_attached": [],
            "progress": 0,
            "security_groups": [
                {
                    "name": "default"
                }
            ],
            "status": "ACTIVE",
            "tags": [],
            "tenant_id": "6f70656e737461636b20342065766572",
            "trusted_image_certificates": null,
            "updated": "2019-04-23T15:19:15Z",
            "user_id": "admin"
        }
    ]
}

列出服务器详细信息示例 (2.69)

这是部署中非响应部分的服务器的示例响应。可用服务器记录的响应将正常,没有任何缺失的键。

{
    "servers": [
        {
            "created": "2018-12-03T21:06:18Z",
            "id": "b6b0410f-b65f-4473-855e-5d82a71759e0",
            "status": "UNKNOWN",
            "tenant_id": "6f70656e737461636b20342065766572",
            "links": [
                {
                    "href": "http://openstack.example.com/v2.1/6f70656e737461636b20342065766572/servers/b6b0410f-b65f-4473-855e-5d82a71759e0",
                    "rel": "self"
                },
                {
                    "href": "http://openstack.example.com/6f70656e737461636b20342065766572/servers/b6b0410f-b65f-4473-855e-5d82a71759e0",
                    "rel": "bookmark"
                }
            ]
        }
    ]
}
GET
/servers/{server_id}

显示服务器详细信息

显示服务器的详细信息。

包括服务器详细信息,如配置驱动器、扩展状态和服务器使用信息。

扩展状态信息出现在 OS-EXT-STS:vm_stateOS-EXT-STS:power_stateOS-EXT-STS:task_state 属性中。

服务器使用信息出现在 OS-SRV-USG:launched_atOS-SRV-USG:terminated_at 属性中。

HostId 在每个账户内是唯一的,而不是全局唯一的。

先决条件

服务器必须存在。

注意

从 microversion 2.69 开始,如果由于部署中的瞬态条件(如基础设施故障)而无法加载服务器详细信息,则不可用服务器的响应体将缺少键。有关部分构造中返回的键的信息,请参阅 Compute API 指南中的 处理宕机单元格 部分。

正常响应代码:200

错误响应代码:unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

Response

名称

入参

类型

描述

server

body

对象

一个 server 对象。

accessIPv4

body

字符串

应使用此 IPv4 地址访问此服务器。可能由提供程序自动设置。

accessIPv6

body

字符串

应使用此 IPv6 地址访问此服务器。可能由提供程序自动设置。

addresses

body

对象

服务器的地址。状态为 BUILD 的服务器会隐藏其地址信息。此视图不会立即更新。请参考 OpenStack 网络 API 以获取最新信息。

config_drive

body

字符串

指示是否为该服务器使用了配置驱动器。值为 True 或空字符串。空字符串表示 False

创建时间

body

字符串

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

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

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

flavor

body

对象

在 microversion 2.47 之前,这包含用于引导服务器实例的风味 ID 和链接。如果风味信息不再存在于系统中,这可能是一个空对象。

从 microversion 2.47 开始,这包含用于创建服务器实例的风味信息的一个子集,表示为嵌套字典。

flavor.id

body

字符串

风味 ID。虽然人们经常将其视为整数,但它实际上是一个字符串。

在 2.46 版本之前可用

flavor.links

body

数组

指向风味资源的链接。更多信息请参见 API 指南 / 链接和引用

在 2.46 版本之前可用

flavor.vcpus

body

整数

分配给服务器的虚拟 CPU 数量。

2.47 版本新增

flavor.ram

body

整数

风味的大小,以 MiB 为单位。

2.47 版本新增

flavor.disk

body

整数

创建的根磁盘的大小,以 GiB 为单位。

2.47 版本新增

flavor.ephemeral

body

整数

创建的临时磁盘的大小,以 GiB 为单位。

2.47 版本新增

flavor.swap

body

整数

分配的专用交换磁盘的大小,以 MiB 为单位。

2.47 版本新增

flavor.original_name

body

字符串

风类的显示名称。

2.47 版本新增

flavor.extra_specs (可选)

body

对象

风类附加规格键值对的字典。仅当用户被策略允许索引风类附加规格时才包含。

2.47 版本新增

flavor.extra_specs.key

body

字符串

风类的附加规格键。

2.47 版本新增

flavor.extra_specs.value

body

字符串

风类的附加规格值。

2.47 版本新增

hostId

body

字符串

表示主机的 ID 字符串。这是一个哈希值,所以实际上看起来不像主机名,并且使用 project_id 的数据进行哈希,因此由两个不同的 project_id 看到的同一物理主机将是不同的。当同一项目内需要确定两个实例是否在相同或不同的物理主机上以用于可用性或性能目的时,它很有用。

id

body

字符串

服务器的 UUID。

image

body

对象

用于服务器实例的镜像的 UUID 和链接。当从卷引导服务器时,image 对象将为空字符串。

key_name

body

字符串

如果有关联的密钥对,则为密钥对的名称。

links

body

数组

指向相关资源的链接。有关更多信息,请参阅API 指南 / 链接和引用

metadata

body

对象

元数据键值对的字典,为保持向后兼容而维护。

name

body

字符串

服务器名称。

OS-DCF:diskConfig

body

字符串

磁盘配置。值可以是

  • AUTO。API 构建服务器,其中包含一个分区,大小与目标 flavor 磁盘相同。API 会自动调整文件系统以适应整个分区。

  • MANUAL。API 使用源镜像中的分区方案和文件系统构建服务器。如果目标风味磁盘更大,API 不会对剩余磁盘空间进行分区。

OS-EXT-AZ:availability_zone

body

字符串

可用区名称。

OS-EXT-SRV-ATTR:host

body

字符串

实例运行的计算主机名称。仅对管理员用户显示在响应中。

OS-EXT-SRV-ATTR:hostname (可选)

body

字符串

在元数据服务中报告的实例的主机名。此参数仅在管理员的响应中显示,直到 microversion 2.90,之后对所有用户显示。

注意

此信息通过元数据服务发布,需要 cloud-init 等应用程序将其传播到实例。

2.3 版本新增

OS-EXT-SRV-ATTR:hypervisor_hostname

body

字符串

Nova virt 驱动程序提供的虚拟机监控程序主机名。对于 Ironic 驱动程序,它是 Ironic 节点 uuid。仅对管理员用户显示在响应中。

OS-EXT-SRV-ATTR:instance_name

body

字符串

实例名称。计算 API 从实例名称模板生成实例名称。仅对管理员用户显示在响应中。

OS-EXT-SRV-ATTR:kernel_id (可选)

body

字符串

使用 AMI 时内核镜像的 UUID。如果没有,将为 null。默认情况下,仅对管理员用户显示在响应中。

2.3 版本新增

OS-EXT-SRV-ATTR:launch_index (可选)

body

整数

当通过多重创建启动服务器时,这是启动服务器的顺序。默认情况下,仅对管理员用户显示在响应中。

2.3 版本新增

OS-EXT-SRV-ATTR:ramdisk_id (可选)

body

字符串

使用 AMI 时引导磁盘镜像的 UUID。如果没有,将为 null。默认情况下,仅对管理员用户显示在响应中。

2.3 版本新增

OS-EXT-SRV-ATTR:reservation_id (可选)

body

字符串

服务器的预留 ID。这是一个 ID,可用于跟踪通过多重创建创建的服务器组,这些服务器组都将具有相同的 reservation_id。默认情况下,仅对管理员用户显示在响应中。

2.3 版本新增

OS-EXT-SRV-ATTR:root_device_name (可选)

body

字符串

实例的根设备名称。默认情况下,仅对管理员用户显示在响应中。

2.3 版本新增

OS-EXT-SRV-ATTR:user_data (可选)

body

字符串

创建实例时使用的 user_data。默认情况下,仅对管理员用户显示在响应中。

2.3 版本新增

OS-EXT-STS:power_state

body

整数

实例的电源状态。这是一个枚举值,映射为

0: NOSTATE
1: RUNNING
3: PAUSED
4: SHUTDOWN
6: CRASHED
7: SUSPENDED

OS-EXT-STS:task_state

body

字符串

实例的任务状态。

OS-EXT-STS:vm_state

body

字符串

VM 状态。

os-extended-volumes:volumes_attached

body

数组

已附加的卷(如果有)。

os-extended-volumes:volumes_attached.id

body

字符串

附加卷的 ID。

os-extended-volumes:volumes_attached.delete_on_termination

body

布尔值

一个标志,指示附加的卷在服务器被删除时是否也会被删除。默认为 False。

2.3 版本新增

OS-SRV-USG:launched_at

body

字符串

服务器启动的日期和时间。

日期和时间戳格式为 ISO 8601

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

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

hh±:mm 值(如果包含)是相对于 UTC 的时区偏移量。如果 deleted_at 日期和时间戳未设置,则其值为 null

OS-SRV-USG:terminated_at

body

字符串

服务器删除的日期和时间。

日期和时间戳格式为 ISO 8601

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

例如,2015-08-27T09:49:58-05:00±hh:mm 值(如果包含)是相对于 UTC 的时区偏移量。如果 deleted_at 日期和时间戳未设置,则其值为 null

status

body

字符串

服务器状态。

tenant_id

body

字符串

多租户云中的租户 UUID。

updated

body

字符串

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

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

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

user_id

body

字符串

拥有服务器的用户 ID。

fault (可选)

body

对象

一个故障对象。仅当服务器状态为 ERRORDELETED 且发生故障时显示。

fault.code

body

整数

错误响应代码。

fault.created

body

字符串

异常引发的日期和时间。日期和时间戳格式为 ISO 8601

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

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

fault.message

body

字符串

错误消息。

fault.details (可选)

body

字符串

堆栈跟踪。如果响应代码不是 500 或您具有管理员权限,则可用。

pinned_availability_zone (可选)

body

字符串

这是服务器创建期间请求的可用区。此外,当 cross_az_attach 选项为 false 且从卷引导实例时,实例可以固定到 AZ,在这种情况下,实例将在属于固定 AZ 的主机上调度。另外,当 default_schedule_zone 配置选项设置为特定 AZ 时,在这种情况下,实例将被固定到该特定 AZ,并且实例将在属于固定 AZ 的主机上调度。如果没有固定可用区,此值设置为 null

2.96 版本新增

progress(可选)

body

整数

操作进度的百分比值。此参数仅在服务器状态为 ACTIVEBUILDREBUILDRESIZEVERIFY_RESIZEMIGRATING 时出现。

scheduler_hints

body

对象

在服务器创建时发送给调度程序的提示字典。

2.100 版本新增

security_groups (可选)

body

数组

一个或多个安全组对象。

security_group.name

body

字符串

安全组名称。

locked

body

布尔值

如果实例被锁定则为 True,否则为 False。

2.9 版本新增

host_status (可选)

body

字符串

主机状态。列表中的下一个值可以覆盖前一个值

  • UP,如果 nova-compute 正常。

  • UNKNOWN,如果 nova-compute 未由 servicegroup 驱动程序报告。

  • DOWN,如果 nova-compute 被强制关闭。

  • MAINTENANCE,如果 nova-compute 被禁用。

  • 空字符串表示服务器没有主机。

此属性仅在策略允许时出现在响应中。默认情况下,只有管理员可以获取此参数。

2.16 版本新增

description

body

字符串

服务器的描述。在 microversion 2.19 之前,这被设置为服务器名称。

版本 2.19 新增

tags

body

数组

标签列表。此列表中的最大标签数为 50。

版本 2.26 新增

trusted_image_certificates

body

数组

受信任的证书 ID 列表,用于在镜像签名验证期间验证签名证书。列表限制为最多 50 个 ID。如果未设置受信任的证书 ID,则值为 null

版本 2.63 新增

server_groups

body

数组

服务器所属的服务器组的 UUID。目前此项最多包含一个条目。

2.71 版本新增

locked_reason

body

字符串

锁定服务器的原因。

版本 2.73 新增

显示服务器详细信息示例 (2.100)

{
    "server": {
        "accessIPv4": "1.2.3.4",
        "accessIPv6": "80fe::",
        "addresses": {
            "private": [
                {
                    "addr": "192.168.1.30",
                    "OS-EXT-IPS-MAC:mac_addr": "00:0c:29:0d:11:74",
                    "OS-EXT-IPS:type": "fixed",
                    "version": 4
                }
            ]
        },
        "created": "2013-09-03T04:01:32Z",
        "description": null,
        "locked": false,
        "locked_reason": null,
        "flavor": {
            "disk": 1,
            "ephemeral": 0,
            "extra_specs": {},
            "original_name": "m1.tiny",
            "ram": 512,
            "swap": 0,
            "vcpus": 1
        },
        "hostId": "92154fab69d5883ba2c8622b7e65f745dd33257221c07af363c51b29",
        "id": "0e44cc9c-e052-415d-afbf-469b0d384170",
        "image": {
            "id": "70a599e0-31e7-49b7-b260-868f441e862b",
            "links": [
                {
                    "href": "http://openstack.example.com/6f70656e737461636b20342065766572/images/70a599e0-31e7-49b7-b260-868f441e862b",
                    "rel": "bookmark"
                }
            ],
            "properties": {
                "architecture": "x86_64",
                "auto_disk_config": "True"
            }
        },
        "key_name": null,
        "links": [
            {
                "href": "http://openstack.example.com/v2/6f70656e737461636b20342065766572/servers/0e44cc9c-e052-415d-afbf-469b0d384170",
                "rel": "self"
            },
            {
                "href": "http://openstack.example.com/6f70656e737461636b20342065766572/servers/0e44cc9c-e052-415d-afbf-469b0d384170",
                "rel": "bookmark"
            }
        ],
        "metadata": {
            "My Server Name": "Apache1"
        },
        "name": "new-server-test",
        "config_drive": "",
        "OS-DCF:diskConfig": "AUTO",
        "OS-EXT-AZ:availability_zone": "us-west",
        "OS-EXT-SRV-ATTR:hostname": "new-server-test",
        "OS-EXT-STS:power_state": 1,
        "OS-EXT-STS:task_state": null,
        "OS-EXT-STS:vm_state": "active",
        "os-extended-volumes:volumes_attached": [
            {"id": "volume_id1", "delete_on_termination": false},
            {"id": "volume_id2", "delete_on_termination": false}
        ],
        "OS-SRV-USG:launched_at": "2013-09-23T13:37:00.880302",
        "OS-SRV-USG:terminated_at": null,
        "pinned_availability_zone": "us-west",
        "progress": 0,
        "scheduler_hints": {
            "same_host": [
                "48e6a9f6-30af-47e0-bc04-acaed113bb4e"
            ]
        },
        "security_groups": [
            {
                "name": "default"
            }
        ],
        "server_groups": [],
        "status": "ACTIVE",
        "tags": [],
        "tenant_id": "6f70656e737461636b20342065766572",
        "trusted_image_certificates": null,
        "updated": "2013-09-03T04:01:33Z",
        "user_id": "fake"
    }
}

显示服务器详细信息示例 (2.98)

{
    "server": {
        "accessIPv4": "1.2.3.4",
        "accessIPv6": "80fe::",
        "addresses": {
            "private": [
                {
                    "addr": "192.168.1.30",
                    "OS-EXT-IPS-MAC:mac_addr": "00:0c:29:0d:11:74",
                    "OS-EXT-IPS:type": "fixed",
                    "version": 4
                }
            ]
        },
        "created": "2013-09-03T04:01:32Z",
        "description": null,
        "locked": false,
        "locked_reason": null,
        "flavor": {
            "disk": 1,
            "ephemeral": 0,
            "extra_specs": {},
            "original_name": "m1.tiny",
            "ram": 512,
            "swap": 0,
            "vcpus": 1
        },
        "hostId": "92154fab69d5883ba2c8622b7e65f745dd33257221c07af363c51b29",
        "id": "0e44cc9c-e052-415d-afbf-469b0d384170",
        "image": {
            "id": "70a599e0-31e7-49b7-b260-868f441e862b",
            "links": [
                {
                    "href": "http://openstack.example.com/6f70656e737461636b20342065766572/images/70a599e0-31e7-49b7-b260-868f441e862b",
                    "rel": "bookmark"
                }
            ],
            "properties": {
                "architecture": "x86_64",
                "auto_disk_config": "True"
            }
        },
        "key_name": null,
        "links": [
            {
                "href": "http://openstack.example.com/v2/6f70656e737461636b20342065766572/servers/0e44cc9c-e052-415d-afbf-469b0d384170",
                "rel": "self"
            },
            {
                "href": "http://openstack.example.com/6f70656e737461636b20342065766572/servers/0e44cc9c-e052-415d-afbf-469b0d384170",
                "rel": "bookmark"
            }
        ],
        "metadata": {
            "My Server Name": "Apache1"
        },
        "name": "new-server-test",
        "config_drive": "",
        "OS-DCF:diskConfig": "AUTO",
        "OS-EXT-AZ:availability_zone": "us-west",
        "OS-EXT-SRV-ATTR:hostname": "new-server-test",
        "OS-EXT-STS:power_state": 1,
        "OS-EXT-STS:task_state": null,
        "OS-EXT-STS:vm_state": "active",
        "os-extended-volumes:volumes_attached": [
            {"id": "volume_id1", "delete_on_termination": false},
            {"id": "volume_id2", "delete_on_termination": false}
        ],
        "OS-SRV-USG:launched_at": "2013-09-23T13:37:00.880302",
        "OS-SRV-USG:terminated_at": null,
        "pinned_availability_zone": "us-west",
        "progress": 0,
        "security_groups": [
            {
                "name": "default"
            }
        ],
        "server_groups": [],
        "status": "ACTIVE",
        "tags": [],
        "tenant_id": "6f70656e737461636b20342065766572",
        "trusted_image_certificates": null,
        "updated": "2013-09-03T04:01:33Z",
        "user_id": "fake"
    }
}

显示服务器详细信息示例 (2.96)

{
    "server": {
        "accessIPv4": "1.2.3.4",
        "accessIPv6": "80fe::",
        "addresses": {
            "private": [
                {
                    "addr": "192.168.1.30",
                    "OS-EXT-IPS-MAC:mac_addr": "00:0c:29:0d:11:74",
                    "OS-EXT-IPS:type": "fixed",
                    "version": 4
                }
            ]
        },
        "created": "2013-09-03T04:01:32Z",
        "description": null,
        "locked": false,
        "locked_reason": null,
        "flavor": {
            "disk": 1,
            "ephemeral": 0,
            "extra_specs": {},
            "original_name": "m1.tiny",
            "ram": 512,
            "swap": 0,
            "vcpus": 1
        },
        "hostId": "92154fab69d5883ba2c8622b7e65f745dd33257221c07af363c51b29",
        "id": "0e44cc9c-e052-415d-afbf-469b0d384170",
        "image": {
            "id": "70a599e0-31e7-49b7-b260-868f441e862b",
            "links": [
                {
                    "href": "http://openstack.example.com/6f70656e737461636b20342065766572/images/70a599e0-31e7-49b7-b260-868f441e862b",
                    "rel": "bookmark"
                }
            ]
        },
        "key_name": null,
        "links": [
            {
                "href": "http://openstack.example.com/v2/6f70656e737461636b20342065766572/servers/0e44cc9c-e052-415d-afbf-469b0d384170",
                "rel": "self"
            },
            {
                "href": "http://openstack.example.com/6f70656e737461636b20342065766572/servers/0e44cc9c-e052-415d-afbf-469b0d384170",
                "rel": "bookmark"
            }
        ],
        "metadata": {
            "My Server Name": "Apache1"
        },
        "name": "new-server-test",
        "config_drive": "",
        "OS-DCF:diskConfig": "AUTO",
        "OS-EXT-AZ:availability_zone": "us-west",
        "OS-EXT-SRV-ATTR:hostname": "new-server-test",
        "OS-EXT-STS:power_state": 1,
        "OS-EXT-STS:task_state": null,
        "OS-EXT-STS:vm_state": "active",
        "os-extended-volumes:volumes_attached": [
            {"id": "volume_id1", "delete_on_termination": false},
            {"id": "volume_id2", "delete_on_termination": false}
        ],
        "OS-SRV-USG:launched_at": "2013-09-23T13:37:00.880302",
        "OS-SRV-USG:terminated_at": null,
        "pinned_availability_zone": "us-west",
        "progress": 0,
        "security_groups": [
            {
                "name": "default"
            }
        ],
        "server_groups": [],
        "status": "ACTIVE",
        "tags": [],
        "tenant_id": "6f70656e737461636b20342065766572",
        "trusted_image_certificates": null,
        "updated": "2013-09-03T04:01:33Z",
        "user_id": "fake"
    }
}

显示服务器详细信息示例 (2.73)

{
    "server": {
        "OS-DCF:diskConfig": "AUTO",
        "OS-EXT-AZ:availability_zone": "nova",
        "OS-EXT-SRV-ATTR:host": "compute",
        "OS-EXT-SRV-ATTR:hostname": "new-server-test",
        "OS-EXT-SRV-ATTR:hypervisor_hostname": "fake-mini",
        "OS-EXT-SRV-ATTR:instance_name": "instance-00000001",
        "OS-EXT-SRV-ATTR:kernel_id": "",
        "OS-EXT-SRV-ATTR:launch_index": 0,
        "OS-EXT-SRV-ATTR:ramdisk_id": "",
        "OS-EXT-SRV-ATTR:reservation_id": "r-t61j9da6",
        "OS-EXT-SRV-ATTR:root_device_name": "/dev/sda",
        "OS-EXT-SRV-ATTR:user_data": "IyEvYmluL2Jhc2gKL2Jpbi9zdQplY2hvICJJIGFtIGluIHlvdSEiCg==",
        "OS-EXT-STS:power_state": 1,
        "OS-EXT-STS:task_state": null,
        "OS-EXT-STS:vm_state": "active",
        "OS-SRV-USG:launched_at": "2019-04-23T15:19:10.855016",
        "OS-SRV-USG:terminated_at": null,
        "accessIPv4": "1.2.3.4",
        "accessIPv6": "80fe::",
        "addresses": {
            "private": [
                {
                    "OS-EXT-IPS-MAC:mac_addr": "00:0c:29:0d:11:74",
                    "OS-EXT-IPS:type": "fixed",
                    "addr": "192.168.1.30",
                    "version": 4
                }
            ]
        },
        "config_drive": "",
        "created": "2019-04-23T15:19:09Z",
        "description": null,
        "flavor": {
            "disk": 1,
            "ephemeral": 0,
            "extra_specs": {},
            "original_name": "m1.tiny",
            "ram": 512,
            "swap": 0,
            "vcpus": 1
        },
        "hostId": "2091634baaccdc4c5a1d57069c833e402921df696b7f970791b12ec6",
        "host_status": "UP",
        "id": "0e12087a-7c87-476a-8f84-7398e991cecc",
        "image": {
            "id": "70a599e0-31e7-49b7-b260-868f441e862b",
            "links": [
                {
                    "href": "http://openstack.example.com/6f70656e737461636b20342065766572/images/70a599e0-31e7-49b7-b260-868f441e862b",
                    "rel": "bookmark"
                }
            ]
        },
        "key_name": null,
        "links": [
            {
                "href": "http://openstack.example.com/v2.1/6f70656e737461636b20342065766572/servers/0e12087a-7c87-476a-8f84-7398e991cecc",
                "rel": "self"
            },
            {
                "href": "http://openstack.example.com/6f70656e737461636b20342065766572/servers/0e12087a-7c87-476a-8f84-7398e991cecc",
                "rel": "bookmark"
            }
        ],
        "locked": true,
        "locked_reason": "I don't want to work",
        "metadata": {
            "My Server Name": "Apache1"
        },
        "name": "new-server-test",
        "os-extended-volumes:volumes_attached": [],
        "progress": 0,
        "security_groups": [
            {
                "name": "default"
            }
        ],
        "server_groups": [],
        "status": "ACTIVE",
        "tags": [],
        "tenant_id": "6f70656e737461636b20342065766572",
        "trusted_image_certificates": null,
        "updated": "2019-04-23T15:19:11Z",
        "user_id": "admin"
    }
}

显示服务器详细信息示例 (2.69)

这是来自部署中不可响应部分的一个服务器的示例响应。可用服务器记录的响应将正常,没有缺失的键。

{
    "server": {
        "OS-EXT-AZ:availability_zone": "UNKNOWN",
        "OS-EXT-STS:power_state": 0,
        "created": "2018-12-03T21:06:18Z",
        "flavor": {
            "disk": 1,
            "ephemeral": 0,
            "extra_specs": {},
            "original_name": "m1.tiny",
            "ram": 512,
            "swap": 0,
            "vcpus": 1
        },
        "id": "33748c23-38dd-4f70-b774-522fc69e7b67",
        "image": {
            "id": "70a599e0-31e7-49b7-b260-868f441e862b",
            "links": [
                {
                    "href": "http://openstack.example.com/6f70656e737461636b20342065766572/images/70a599e0-31e7-49b7-b260-868f441e862b",
                    "rel": "bookmark"
                }
            ]
        },
        "status": "UNKNOWN",
        "tenant_id": "6f70656e737461636b20342065766572",
        "user_id": "admin",
        "links": [
            {
                "href": "http://openstack.example.com/v2.1/6f70656e737461636b20342065766572/servers/33748c23-38dd-4f70-b774-522fc69e7b67",
                "rel": "self"
            },
            {
                "href": "http://openstack.example.com/6f70656e737461636b20342065766572/servers/33748c23-38dd-4f70-b774-522fc69e7b67",
                "rel": "bookmark"
            }
        ]
    }
}
PUT
/servers/{server_id}

更新服务器

更新现有服务器的可编辑属性。

正常响应代码:200

错误响应代码:badRequest(400)、unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

server

body

对象

一个 server 对象。

accessIPv4(可选)

body

字符串

应从此服务器访问的 IPv4 地址。

accessIPv6(可选)

body

字符串

应从此服务器访问的 IPv6 地址。

name (可选)

body

字符串

服务器名称。

hostname (可选)

body

字符串

配置实例在元数据服务中使用的名称。

从微版本 2.94 开始,这可以是一个最大长度为 255 个字符的完全限定域名 (FQDN)。

注意

此信息通过元数据服务发布,需要 cloud-init 等应用程序将其传播到实例。

版本 2.90 新增

OS-DCF:diskConfig(可选)

body

字符串

控制 API 在创建、重建或调整服务器大小时如何对磁盘进行分区。服务器继承其创建的镜像的 OS-DCF:diskConfig 值,而镜像继承其创建的服务器的 OS-DCF:diskConfig 值。要覆盖继承的设置,您可以在服务器创建、重建或调整大小请求的正文中包含此属性。如果镜像的 OS-DCF:diskConfig 值为 MANUAL,则您无法从该镜像创建服务器并将其 OS-DCF:diskConfig 值设置为 AUTO。有效值为:

  • AUTO。API 构建服务器,其中包含一个分区,大小与目标 flavor 磁盘相同。API 会自动调整文件系统以适应整个分区。

  • MANUAL。API 使用源镜像中的分区方案和文件系统来构建服务器。如果目标 flavor 磁盘更大,API 不会对剩余的磁盘空间进行分区。

description (可选)

body

字符串

服务器的自由格式描述。限制为 255 个字符。在微版本 2.19 之前,此字段设置为服务器名称。

版本 2.19 新增

注意

您可以独立指定要更新的参数。例如,仅 name,仅 descriptionnamedescription 等。

更新服务器示例 (2.63)

{
    "server": {
        "accessIPv4": "1.2.3.4",
        "accessIPv6": "80fe::",
        "OS-DCF:diskConfig": "AUTO",
        "name": "new-server-test",
        "description": "Sample description"
    }
}

响应

名称

入参

类型

描述

server

body

对象

一个 server 对象。

accessIPv4

body

字符串

应使用此 IPv4 地址访问此服务器。可能由提供程序自动设置。

accessIPv6

body

字符串

应使用此 IPv6 地址访问此服务器。可能由提供程序自动设置。

addresses

body

对象

服务器的地址。状态为 BUILD 的服务器会隐藏其地址信息。此视图不会立即更新。请参考 OpenStack 网络 API 以获取最新信息。

创建时间

body

字符串

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

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

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

flavor

body

对象

在 microversion 2.47 之前,这包含用于引导服务器实例的风味 ID 和链接。如果风味信息不再存在于系统中,这可能是一个空对象。

从 microversion 2.47 开始,这包含用于创建服务器实例的风味信息的一个子集,表示为嵌套字典。

flavor.id

body

字符串

风味 ID。虽然人们经常将其视为整数,但它实际上是一个字符串。

在 2.46 版本之前可用

flavor.links

body

数组

指向风味资源的链接。更多信息请参见 API 指南 / 链接和引用

在 2.46 版本之前可用

flavor.vcpus

body

整数

分配给服务器的虚拟 CPU 数量。

2.47 版本新增

flavor.ram

body

整数

风味的大小,以 MiB 为单位。

2.47 版本新增

flavor.disk

body

整数

创建的根磁盘的大小,以 GiB 为单位。

2.47 版本新增

flavor.ephemeral

body

整数

创建的临时磁盘的大小,以 GiB 为单位。

2.47 版本新增

flavor.swap

body

整数

分配的专用交换磁盘的大小,以 MiB 为单位。

2.47 版本新增

flavor.original_name

body

字符串

风类的显示名称。

2.47 版本新增

flavor.extra_specs (可选)

body

对象

风类附加规格键值对的字典。仅当用户被策略允许索引风类附加规格时才包含。

2.47 版本新增

flavor.extra_specs.key

body

字符串

风类的附加规格键。

2.47 版本新增

flavor.extra_specs.value

body

字符串

风类的附加规格值。

2.47 版本新增

hostId

body

字符串

表示主机的 ID 字符串。这是一个哈希值,所以实际上看起来不像主机名,并且使用 project_id 的数据进行哈希,因此由两个不同的 project_id 看到的同一物理主机将是不同的。当同一项目内需要确定两个实例是否在相同或不同的物理主机上以用于可用性或性能目的时,它很有用。

id

body

字符串

服务器的 UUID。

image

body

对象

用于服务器实例的镜像的 UUID 和链接。当从卷引导服务器时,image 对象将为空字符串。

links

body

数组

指向相关资源的链接。有关更多信息,请参阅API 指南 / 链接和引用

metadata

body

对象

元数据键值对的字典,为保持向后兼容而维护。

name

body

字符串

服务器名称。

OS-DCF:diskConfig

body

字符串

磁盘配置。值可以是

  • AUTO。API 构建服务器,其中包含一个分区,大小与目标 flavor 磁盘相同。API 会自动调整文件系统以适应整个分区。

  • MANUAL。API 使用源镜像中的分区方案和文件系统构建服务器。如果目标风味磁盘更大,API 不会对剩余磁盘空间进行分区。

status

body

字符串

服务器状态。

tenant_id

body

字符串

多租户云中的租户 UUID。

updated

body

字符串

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

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

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

user_id

body

字符串

拥有服务器的用户 ID。

fault (可选)

body

对象

一个故障对象。仅当服务器状态为 ERRORDELETED 且发生故障时显示。

fault.code

body

整数

错误响应代码。

fault.created

body

字符串

异常引发的日期和时间。日期和时间戳格式为 ISO 8601

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

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

fault.message

body

字符串

错误消息。

fault.details (可选)

body

字符串

堆栈跟踪。如果响应代码不是 500 或您具有管理员权限,则可用。

pinned_availability_zone (可选)

body

字符串

这是服务器创建期间请求的可用区。此外,当 cross_az_attach 选项为 false 且从卷引导实例时,实例可以固定到 AZ,在这种情况下,实例将在属于固定 AZ 的主机上调度。另外,当 default_schedule_zone 配置选项设置为特定 AZ 时,在这种情况下,实例将被固定到该特定 AZ,并且实例将在属于固定 AZ 的主机上调度。如果没有固定可用区,此值设置为 null

2.96 版本新增

progress(可选)

body

整数

操作进度的百分比值。此参数仅在服务器状态为 ACTIVEBUILDREBUILDRESIZEVERIFY_RESIZEMIGRATING 时出现。

locked

body

布尔值

如果实例被锁定则为 True,否则为 False。

2.9 版本新增

description

body

字符串

服务器的描述。在 microversion 2.19 之前,这被设置为服务器名称。

版本 2.19 新增

tags

body

数组

标签列表。此列表中的最大标签数为 50。

版本 2.26 新增

trusted_image_certificates

body

数组

受信任的证书 ID 列表,用于在镜像签名验证期间验证签名证书。列表限制为最多 50 个 ID。如果未设置受信任的证书 ID,则值为 null

版本 2.63 新增

server_groups

body

数组

服务器所属的服务器组的 UUID。目前此项最多包含一个条目。

2.71 版本新增

locked_reason

body

字符串

锁定服务器的原因。

版本 2.73 新增

config_drive

body

字符串

指示是否为该服务器使用了配置驱动器。值为 True 或空字符串。空字符串表示 False

2.75 版本新增

OS-EXT-AZ:availability_zone

body

字符串

可用区名称。

2.75 版本新增

OS-EXT-SRV-ATTR:host

body

字符串

实例运行的计算主机名称。仅对管理员用户显示在响应中。

2.75 版本新增

OS-EXT-SRV-ATTR:hostname (可选)

body

字符串

在元数据服务中报告的实例的主机名。此参数仅在管理员的响应中显示,直到 microversion 2.90,之后对所有用户显示。

注意

此信息通过元数据服务发布,需要 cloud-init 等应用程序将其传播到实例。

2.75 版本新增

OS-EXT-SRV-ATTR:hypervisor_hostname

body

字符串

Nova virt 驱动程序提供的虚拟机监控程序主机名。对于 Ironic 驱动程序,它是 Ironic 节点 uuid。仅对管理员用户显示在响应中。

2.75 版本新增

OS-EXT-SRV-ATTR:instance_name

body

字符串

实例名称。计算 API 从实例名称模板生成实例名称。仅对管理员用户显示在响应中。

2.75 版本新增

OS-EXT-SRV-ATTR:kernel_id (可选)

body

字符串

使用 AMI 时内核镜像的 UUID。如果没有,将为 null。默认情况下,仅对管理员用户显示在响应中。

2.75 版本新增

OS-EXT-SRV-ATTR:launch_index (可选)

body

整数

当通过多重创建启动服务器时,这是启动服务器的顺序。默认情况下,仅对管理员用户显示在响应中。

2.75 版本新增

OS-EXT-SRV-ATTR:ramdisk_id (可选)

body

字符串

使用 AMI 时引导磁盘镜像的 UUID。如果没有,将为 null。默认情况下,仅对管理员用户显示在响应中。

2.75 版本新增

OS-EXT-SRV-ATTR:reservation_id (可选)

body

字符串

服务器的预留 ID。这是一个 ID,可用于跟踪通过多重创建创建的服务器组,这些服务器组都将具有相同的 reservation_id。默认情况下,仅对管理员用户显示在响应中。

2.75 版本新增

OS-EXT-SRV-ATTR:root_device_name (可选)

body

字符串

实例的根设备名称。默认情况下,仅对管理员用户显示在响应中。

2.75 版本新增

OS-EXT-SRV-ATTR:user_data (可选)

body

字符串

创建实例时使用的 user_data。默认情况下,仅对管理员用户显示在响应中。

2.75 版本新增

OS-EXT-STS:power_state

body

整数

实例的电源状态。这是一个枚举值,映射为

0: NOSTATE
1: RUNNING
3: PAUSED
4: SHUTDOWN
6: CRASHED
7: SUSPENDED

2.75 版本新增

OS-EXT-STS:task_state

body

字符串

实例的任务状态。

2.75 版本新增

OS-EXT-STS:vm_state

body

字符串

VM 状态。

2.75 版本新增

os-extended-volumes:volumes_attached

body

数组

已附加的卷(如果有)。

2.75 版本新增

os-extended-volumes:volumes_attached.id

body

字符串

附加卷的 ID。

2.75 版本新增

os-extended-volumes:volumes_attached.delete_on_termination

body

布尔值

一个标志,指示附加的卷在服务器被删除时是否也会被删除。默认为 False。

2.75 版本新增

OS-SRV-USG:launched_at

body

字符串

服务器启动的日期和时间。

日期和时间戳格式为 ISO 8601

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

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

hh±:mm 值(如果包含)是相对于 UTC 的时区偏移量。如果 deleted_at 日期和时间戳未设置,则其值为 null

2.75 版本新增

OS-SRV-USG:terminated_at

body

字符串

服务器删除的日期和时间。

日期和时间戳格式为 ISO 8601

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

例如,2015-08-27T09:49:58-05:00±hh:mm 值(如果包含)是相对于 UTC 的时区偏移量。如果 deleted_at 日期和时间戳未设置,则其值为 null

2.75 版本新增

security_groups (可选)

body

数组

一个或多个安全组对象。

2.75 版本新增

security_group.name

body

字符串

安全组名称。

2.75 版本新增

host_status (可选)

body

字符串

主机状态。列表中的下一个值可以覆盖前一个值

  • UP,如果 nova-compute 正常。

  • UNKNOWN,如果 nova-compute 未由 servicegroup 驱动程序报告。

  • DOWN,如果 nova-compute 被强制关闭。

  • MAINTENANCE,如果 nova-compute 被禁用。

  • 空字符串表示服务器没有主机。

此属性仅在策略允许时出现在响应中。默认情况下,只有管理员可以获取此参数。

2.75 版本新增

key_name

body

字符串

如果有关联的密钥对,则为密钥对的名称。

2.75 版本新增

更新服务器详细信息示例 (2.98)

{
    "server": {
        "OS-DCF:diskConfig": "AUTO",
        "OS-EXT-AZ:availability_zone": "us-west",
        "OS-EXT-SRV-ATTR:hostname": "new-server-hostname.example.com",
        "OS-EXT-STS:power_state": 1,
        "OS-EXT-STS:task_state": null,
        "OS-EXT-STS:vm_state": "active",
        "OS-SRV-USG:launched_at": "2025-02-27T03:58:15.509865",
        "OS-SRV-USG:terminated_at": null,
        "accessIPv4": "1.2.3.4",
        "accessIPv6": "80fe::",
        "addresses": {
            "private": [
                {
                    "OS-EXT-IPS-MAC:mac_addr": "00:0c:29:0d:11:74",
                    "OS-EXT-IPS:type": "fixed",
                    "addr": "192.168.1.30",
                    "version": 4
                }
            ]
        },
        "config_drive": "",
        "created": "2025-02-27T03:58:14Z",
        "description": null,
        "flavor": {
            "disk": 1,
            "ephemeral": 0,
            "extra_specs": {},
            "original_name": "m1.tiny",
            "ram": 512,
            "swap": 0,
            "vcpus": 1
        },
        "hostId": "2091634baaccdc4c5a1d57069c833e402921df696b7f970791b12ec6",
        "id": "39115d82-00be-4432-84b5-381a89d7ebde",
        "image": {
            "id": "70a599e0-31e7-49b7-b260-868f441e862b",
            "links": [
                {
                    "href": "http://openstack.example.com/6f70656e737461636b20342065766572/images/70a599e0-31e7-49b7-b260-868f441e862b",
                    "rel": "bookmark"
                }
            ],
            "properties": {
                "architecture": "x86_64",
                "auto_disk_config": "True"
            }
        },
        "key_name": null,
        "links": [
            {
                "href": "http://openstack.example.com/v2.1/6f70656e737461636b20342065766572/servers/39115d82-00be-4432-84b5-381a89d7ebde",
                "rel": "self"
            },
            {
                "href": "http://openstack.example.com/6f70656e737461636b20342065766572/servers/39115d82-00be-4432-84b5-381a89d7ebde",
                "rel": "bookmark"
            }
        ],
        "locked": false,
        "locked_reason": null,
        "metadata": {
            "My Server Name": "Apache1"
        },
        "name": "new-server-test",
        "os-extended-volumes:volumes_attached": [],
        "pinned_availability_zone": "us-west",
        "progress": 0,
        "security_groups": [
            {
                "name": "default"
            }
        ],
        "server_groups": [],
        "status": "ACTIVE",
        "tags": [],
        "tenant_id": "6f70656e737461636b20342065766572",
        "trusted_image_certificates": null,
        "updated": "2025-02-27T03:58:15Z",
        "user_id": "fake"
    }
}

更新服务器详细信息示例 (2.96)

{
    "server": {
        "OS-DCF:diskConfig": "AUTO",
        "OS-EXT-AZ:availability_zone": "us-west",
        "OS-EXT-SRV-ATTR:hostname": "new-server-hostname.example.com",
        "OS-EXT-STS:power_state": 1,
        "OS-EXT-STS:task_state": null,
        "OS-EXT-STS:vm_state": "active",
        "OS-SRV-USG:launched_at": "2025-02-27T01:17:47.110181",
        "OS-SRV-USG:terminated_at": null,
        "accessIPv4": "1.2.3.4",
        "accessIPv6": "80fe::",
        "addresses": {
            "private": [
                {
                    "OS-EXT-IPS-MAC:mac_addr": "00:0c:29:0d:11:74",
                    "OS-EXT-IPS:type": "fixed",
                    "addr": "192.168.1.30",
                    "version": 4
                }
            ]
        },
        "config_drive": "",
        "created": "2025-02-27T01:17:46Z",
        "description": null,
        "flavor": {
            "disk": 1,
            "ephemeral": 0,
            "extra_specs": {},
            "original_name": "m1.tiny",
            "ram": 512,
            "swap": 0,
            "vcpus": 1
        },
        "hostId": "2091634baaccdc4c5a1d57069c833e402921df696b7f970791b12ec6",
        "id": "374b76b3-d46b-48bc-b36e-6ab70b0ea217",
        "image": {
            "id": "70a599e0-31e7-49b7-b260-868f441e862b",
            "links": [
                {
                    "href": "http://openstack.example.com/6f70656e737461636b20342065766572/images/70a599e0-31e7-49b7-b260-868f441e862b",
                    "rel": "bookmark"
                }
            ]
        },
        "key_name": null,
        "links": [
            {
                "href": "http://openstack.example.com/v2.1/6f70656e737461636b20342065766572/servers/374b76b3-d46b-48bc-b36e-6ab70b0ea217",
                "rel": "self"
            },
            {
                "href": "http://openstack.example.com/6f70656e737461636b20342065766572/servers/374b76b3-d46b-48bc-b36e-6ab70b0ea217",
                "rel": "bookmark"
            }
        ],
        "locked": false,
        "locked_reason": null,
        "metadata": {
            "My Server Name": "Apache1"
        },
        "name": "new-server-test",
        "os-extended-volumes:volumes_attached": [],
        "pinned_availability_zone": "us-west",
        "progress": 0,
        "security_groups": [
            {
                "name": "default"
            }
        ],
        "server_groups": [],
        "status": "ACTIVE",
        "tags": [],
        "tenant_id": "6f70656e737461636b20342065766572",
        "trusted_image_certificates": null,
        "updated": "2025-02-27T01:17:47Z",
        "user_id": "fake"
    }
}

更新服务器示例 (2.75)

{
    "server": {
        "OS-DCF:diskConfig": "AUTO",
        "OS-EXT-AZ:availability_zone": "us-west",
        "OS-EXT-SRV-ATTR:host": "compute",
        "OS-EXT-SRV-ATTR:hostname": "new-server-test",
        "OS-EXT-SRV-ATTR:hypervisor_hostname": "fake-mini",
        "OS-EXT-SRV-ATTR:instance_name": "instance-00000001",
        "OS-EXT-SRV-ATTR:kernel_id": "",
        "OS-EXT-SRV-ATTR:launch_index": 0,
        "OS-EXT-SRV-ATTR:ramdisk_id": "",
        "OS-EXT-SRV-ATTR:reservation_id": "r-t61j9da6",
        "OS-EXT-SRV-ATTR:root_device_name": "/dev/sda",
        "OS-EXT-SRV-ATTR:user_data": "IyEvYmluL2Jhc2gKL2Jpbi9zdQplY2hvICJJIGFtIGluIHlvdSEiCg==",
        "OS-EXT-STS:power_state": 1,
        "OS-EXT-STS:task_state": null,
        "OS-EXT-STS:vm_state": "active",
        "OS-SRV-USG:launched_at": "2019-04-23T15:19:10.855016",
        "OS-SRV-USG:terminated_at": null,
        "accessIPv4": "1.2.3.4",
        "accessIPv6": "80fe::",
        "addresses": {
            "private": [
                {
                    "OS-EXT-IPS-MAC:mac_addr": "00:0c:29:0d:11:74",
                    "OS-EXT-IPS:type": "fixed",
                    "addr": "192.168.1.30",
                    "version": 4
                }
            ]
        },
        "config_drive": "",
        "created": "2012-12-02T02:11:57Z",
        "description": "Sample description",
        "flavor": {
            "disk": 1,
            "ephemeral": 0,
            "extra_specs": {},
            "original_name": "m1.tiny",
            "ram": 512,
            "swap": 0,
            "vcpus": 1
        },
        "hostId": "6e84af987b4e7ec1c039b16d21f508f4a505672bd94fb0218b668d07",
        "host_status": "UP",
        "id": "324dfb7d-f4a9-419a-9a19-237df04b443b",
        "image": {
            "id": "70a599e0-31e7-49b7-b260-868f441e862b",
            "links": [
                {
                    "href": "http://openstack.example.com/6f70656e737461636b20342065766572/images/70a599e0-31e7-49b7-b260-868f441e862b",
                    "rel": "bookmark"
                }
            ]
        },
        "key_name": null,
        "links": [
            {
                "href": "http://openstack.example.com/v2/6f70656e737461636b20342065766572/servers/324dfb7d-f4a9-419a-9a19-237df04b443b",
                "rel": "self"
            },
            {
                "href": "http://openstack.example.com/6f70656e737461636b20342065766572/servers/324dfb7d-f4a9-419a-9a19-237df04b443b",
                "rel": "bookmark"
            }
        ],
        "locked": false,
        "locked_reason": null,
        "metadata": {
            "My Server Name": "Apache1"
        },
        "name": "new-server-test",
        "os-extended-volumes:volumes_attached": [],
        "progress": 0,
        "security_groups": [
            {
                "name": "default"
            }
        ],
        "server_groups": [],
        "status": "ACTIVE",
        "tags": [],
        "tenant_id": "6f70656e737461636b20342065766572",
        "trusted_image_certificates": null,
        "updated": "2012-12-02T02:11:58Z",
        "user_id": "admin"
    }
}
DELETE
/servers/{server_id}

删除服务器

删除服务器。

默认情况下,实例将立即从系统中(硬)删除,但您可以设置 reclaim_instance_interval > 0 来使 API 软删除实例,这样实例在被软删除后不会立即删除,直到 reclaim_instance_interval 过期。标记为 SOFT_DELETED 的实例可以在被真正从系统中删除之前通过 restore 操作恢复。

先决条件

  • 服务器必须存在。

  • 当服务器状态未锁定且策略允许时,任何人都可以删除服务器。

  • 如果服务器被锁定,您必须具有管理员权限才能删除服务器。

异步后置条件

  • 使用正确的权限,您可以将服务器状态显示为 deleting

  • 附加到服务器的端口,Nova 在创建服务器期间或稍后附加接口时创建的端口将被删除。

  • 服务器不会出现在列表服务器响应中。

  • 如果是硬删除,OpenStack Compute 管理的服务器将在计算节点上删除。

故障排除

  • 如果服务器状态保持在 deleting 状态或其他错误状态,则请求失败。确保您满足先决条件。然后,调查计算后端。

  • 当服务器被锁定即使您有正确权限时,请求也会返回 HTTP 409 响应代码。确保您满足先决条件,然后调查服务器状态。

  • OpenStack Compute 管理的服务器未从计算节点删除。

正常响应代码:204

错误响应代码:unauthorized(401)、forbidden(403)、itemNotFound(404)、conflict(409)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

响应

成功的 DELETE 查询没有响应正文内容

服务器 - 执行操作 (servers, action)

允许所有用户对服务器执行操作。在请求正文中指定操作。

服务器有许多可用操作

  • 您可以将固定 IP 地址或浮动 IP 地址与服务器关联或解除关联

  • 您可以从服务器创建镜像

  • 您可以创建服务器的备份

  • 您可以在延迟清理之前强制删除服务器

  • 您可以锁定、暂停、重启、重建、救援、调整大小、恢复、确认调整大小、回滚待定调整大小、暂存、暂存卸载、取消暂存、启动、停止、解锁、取消暂停和取消救援服务器

  • 您可以更改服务器的密码

  • 您可以向服务器添加安全组或从服务器删除安全组

  • 您可以触发服务器的崩溃转储

  • 您可以获取服务器的图形或串行控制台

…等等。

POST
/servers/{server_id}/action

添加(关联)浮动 IP(addFloatingIp 操作)(已弃用)

警告

此 API 已弃用,并将从 microversion 2.44 开始以 404 失败。已被替换为使用 Neutron 网络服务 API。

向服务器添加一个浮动 IP 地址,该地址与服务器关联。

OpenStack Compute 中提供了一个由云管理员配置的浮动 IP 地址池。项目配额定义了您可以分配给项目的浮动 IP 地址的最大数量。在您为项目 创建(分配)浮动 IP 地址 后,您可以将该地址与服务器关联。在请求正文中指定 addFloatingIp 操作。

如果实例连接到多个网络,您可以使用可选的 fixed_address 参数将浮动 IP 地址与特定固定 IP 地址关联。

先决条件

服务器必须存在。

只有当服务器状态为 ACTIVESTOPPED 时,您才能将浮动 IP 地址添加到服务器。

正常响应代码:202

错误响应代码:badRequest(400)、unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

addFloatingIp

body

对象

操作。包含必需的浮动 IP address 和可选的 fixed_address

address

body

字符串

浮动 IP 地址。

fixed_address (可选)

body

字符串

您想将其与浮动 IP 地址关联的固定 IP 地址。

添加(关联)浮动 IP(addFloatingIp 操作)示例

{
    "addFloatingIp" : {
        "address": "10.10.10.10",
        "fixed_address": "192.168.1.30"
    }
}

响应

如果成功,此方法不会在响应正文中返回内容。

POST
/servers/{server_id}/action

向服务器添加安全组(addSecurityGroup 操作)

向服务器添加安全组。

在请求正文中指定 addSecurityGroup 操作。

正常响应代码:202

错误响应代码:badRequest(400),unauthorized(401),forbidden(403),itemNotFound(404),conflict(409)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

addSecurityGroup

body

对象

将安全组添加到服务器的操作。

name

body

字符串

安全组名称。

向服务器添加安全组(addSecurityGroup 操作)示例

{
    "addSecurityGroup": {
        "name": "test"
    }
}

响应

如果成功,此方法不会在响应正文中返回内容。

POST
/servers/{server_id}/action

更改管理密码(changePassword 操作)

更改服务器的管理密码。

在请求正文中指定 changePassword 操作。

策略默认仅允许具有管理员角色或服务器所有者的用户执行此操作。云提供商可以通过 policy.json 文件更改这些权限。

正常响应代码:202

错误响应代码:badRequest(400)、unauthorized(401)、forbidden(403)、itemNotFound(404)、conflict(409)、notImplemented(501)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

changePassword

body

对象

更改服务器管理密码的操作。

adminPass

body

字符串

服务器的管理密码。

更改管理密码(changePassword 操作)示例

{
    "changePassword" : {
        "adminPass" : "foo"
    }
}

响应

如果成功,此方法不会在响应正文中返回内容。

POST
/servers/{server_id}/action

确认已调整大小的服务器(confirmResize 操作)

确认服务器的待定调整大小操作。

在请求正文中指定 confirmResize 操作。

进行此请求后,您通常必须持续轮询服务器状态以确定请求是否成功。成功确认的调整大小操作显示状态为 ACTIVESHUTOFF,并且迁移状态为 confirmed。您也可以在 OpenStack Compute 管理的计算节点上看到已调整大小的服务器。

先决条件

您只能在服务器状态为 VERIFY_RESIZE 时确认已调整大小的服务器。

如果服务器被锁定,您必须具有管理员权限才能确认服务器。

故障排除

如果服务器状态仍为 VERIFY_RESIZE,则请求失败。确保您满足先决条件并再次运行请求。如果请求再次失败,服务器状态应为 ERROR,迁移状态为 error。调查计算后端或咨询您的云提供商。有一些选项可以尝试更正服务器状态

请注意,云提供商可能仍需要在源虚拟机监控程序上清理任何孤立的资源。

正常响应代码:204

错误响应代码:badRequest(400),unauthorized(401),forbidden(403),itemNotFound(404),conflict(409)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

confirmResize

body

none

确认调整大小操作的操作。

确认已调整大小的服务器(confirmResize 操作)示例

{
    "confirmResize" : null
}

响应

如果成功,此方法不会在响应正文中返回内容。

POST
/servers/{server_id}/action

创建服务器备份(createBackup 操作)

创建服务器的备份。

注意

此 API 不支持基于卷的实例。

在请求正文中指定 createBackup 操作。

策略默认仅允许具有管理员角色或服务器所有者的用户执行此操作。云提供商可以通过 policy.json 文件更改这些权限。

注意

从 2.39 版本开始,Nova metadata 的镜像配额强制执行已移除,配额检查应直接使用 Glance API 进行。

正常响应代码:202

错误响应代码:badRequest(400),unauthorized(401),forbidden(403),itemNotFound(404),conflict(409)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

createBackup

body

对象

操作。

name

body

字符串

要备份的镜像的名称。

backup_type

body

字符串

备份类型,例如 daily

rotation

body

整数

备份镜像的轮换次数,当镜像数量超过轮换次数时,最旧的镜像将被移除。

metadata (可选)

body

对象

元数据键值对。每个元数据键和值的最大大小为 255 字节。

创建服务器备份(createBackup 操作)示例

{
    "createBackup": {
        "name": "Backup 1",
        "backup_type": "daily",
        "rotation": 1
    }
}

响应

名称

入参

类型

描述

位置

标头

字符串

创建的镜像或备份的镜像位置 URL,将返回 HTTP 头“Location: <image location URL>”。

注意

返回的 URL 可能用户无法访问,不应依赖。使用 microversion 2.45 或仅从 Location 响应头中的 URL 解析镜像 ID。

在 2.44 版本之前可用

image_id

body

字符串

生成的镜像快照的 UUID。

2.45 版本新增

创建服务器备份示例 (v2.45)

{
    "image_id": "0e7761dd-ee98-41f0-ba35-05994e446431"
}
POST
/servers/{server_id}/action

创建镜像(createImage 操作)

从服务器创建镜像。

在请求正文中指定 createImage 操作。

进行此请求后,您通常必须持续轮询创建的镜像的状态以确定请求是否成功。

如果操作成功,创建的镜像状态为 active,服务器状态恢复到原始状态。您也可以在 OpenStack 镜像服务管理的镜像后端中看到新镜像。

注意

从 2.39 版本开始,Nova metadata 的镜像配额强制执行已移除,配额检查应直接使用 Glance API 进行。

先决条件

服务器必须存在。

只有当服务器状态为 ACTIVESHUTOFFSUSPENDEDPAUSEDPAUSED 仅支持镜像后置服务器)时,才能创建新镜像。

当服务器附加有卷时,项目必须在块存储服务中拥有足够的卷快照配额。如果项目没有足够的卷快照配额,API 将返回 403 错误。

异步后置条件

将在镜像服务中创建镜像快照。

在镜像后置服务器的情况下,不会创建附加卷的卷快照。在卷后置服务器的情况下,将为服务器附加的所有卷创建卷快照,然后这些快照将作为 block_device_mapping 镜像属性在镜像服务中的结果镜像中表示。如果该快照镜像稍后用于创建新服务器,它将导致一个卷后置服务器,其中根卷是从原始根卷的快照创建的。从原始其他卷的快照创建的卷将被附加到服务器。

故障排除

如果镜像状态保持上传中或显示其他错误状态,则请求失败。确保您满足先决条件并再次运行请求。如果请求再次失败,请调查镜像后端。

如果服务器状态未恢复到原始服务器状态,则请求失败。确保您满足先决条件,或检查是否有其他操作导致服务器出现竞争条件,然后再次运行请求。如果请求再次失败,请调查计算后端或咨询您的云提供商。

如果请求因 OpenStack Compute 服务错误而失败,镜像将从 OpenStack 镜像服务管理的镜像存储中清除。确保您满足先决条件并再次运行请求。如果请求再次失败,请调查 OpenStack Compute 服务或咨询您的云提供商。

正常响应代码:202

错误响应代码:badRequest(400),unauthorized(401),forbidden(403),itemNotFound(404),conflict(409)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

createImage

body

对象

创建镜像或服务器卷的快照的操作。

name

body

字符串

镜像的显示名称。

metadata (可选)

body

对象

镜像的元数据键值对。每个元数据键值对的最大大小为 255 字节。

创建镜像(createImage 操作)示例

{
    "createImage" : {
        "name" : "foo-image",
        "metadata": {
            "meta_var": "meta_val"
        }
    }
}

响应

名称

入参

类型

描述

位置

标头

字符串

创建的镜像或备份的镜像位置 URL,将返回 HTTP 头“Location: <image location URL>”。

注意

返回的 URL 可能用户无法访问,不应依赖。使用 microversion 2.45 或仅从 Location 响应头中的 URL 解析镜像 ID。

在 2.44 版本之前可用

image_id

body

字符串

生成的镜像快照的 UUID。

2.45 版本新增

创建镜像示例 (v2.45)

{
    "image_id": "0e7761dd-ee98-41f0-ba35-05994e446431"
}
POST
/servers/{server_id}/action

锁定服务器(lock 操作)

锁定服务器。

在请求正文中指定 lock 操作。

此操作成功且服务器被锁定后,非管理员用户的多数操作将不允许对该服务器进行。请参阅 Compute API 指南中“服务器操作”的“锁定、解锁”项目,了解受限操作。但管理员即使在服务器被锁定时也可以对服务器执行操作。请注意,从 microversion 2.73 开始,可以指定锁定服务器的原因。

解锁操作将解锁处于锁定状态的服务器,以便非管理员用户可以对其执行其他操作。

您可以通过 列出服务器详细信息 API显示服务器详细信息 API 来了解服务器是否被锁定以及 locked_reason(如果已指定,从 2.73 microversion 开始)。

策略默认仅允许具有管理员角色或服务器所有者的用户执行此操作。云提供商可以通过 policy.json 文件更改这些权限。管理员可以覆盖所有者的锁定。

正常响应代码:202

错误响应代码:unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

lock

body

对象

锁定服务器的操作。此参数可以为 null。最高到 microversion 2.73,此参数应为 null

locked_reason (可选)

body

字符串

锁定服务器的原因。长度限制为 255 个字符。

版本 2.73 新增

锁定服务器(lock 操作)示例

{
    "lock": null
}

锁定服务器(lock 操作)示例(v2.73)

{
    "lock": {"locked_reason": "I don't want to work"}
}

Response

如果成功,此方法不会在响应正文中返回内容。

POST
/servers/{server_id}/action

暂停服务器(pause 操作)

暂停服务器。将其状态更改为 PAUSED

在请求正文中指定 pause 操作。

策略默认仅允许具有管理员角色或服务器所有者的用户执行此操作。云提供商可以通过 policy.json 文件更改这些权限。

正常响应代码:202

错误响应代码:unauthorized(401)、forbidden(403)、itemNotFound(404)、conflict(409)、notImplemented(501)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

暂停

body

none

暂停服务器的操作。

暂停服务器(pause 操作)示例

{
    "pause": null
}

响应

如果成功,此方法不会在响应正文中返回内容。

POST
/servers/{server_id}/action

重启服务器(reboot 操作)

重启服务器。

在请求正文中指定 reboot 操作。

先决条件

重启服务器的先决条件取决于重启的类型。

您只能在服务器状态为 ACTIVE重启服务器。

您只能在服务器状态为以下任一状态时重启服务器:

  • ACTIVE

  • ERROR

  • HARD_REBOOT

  • PAUSED

  • REBOOT

  • SHUTOFF

  • SUSPENDED

如果服务器被锁定,您必须具有管理员权限才能重启服务器。

异步后置条件

成功重启服务器后,其状态将变为 ACTIVE

正常响应代码:202

错误响应代码:unauthorized(401)、forbidden(403)、itemNotFound(404)、conflict(409)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

reboot

body

对象

重启服务器的操作。

type

body

字符串

重启操作的类型。有效值为 HARDSOFTSOFT 重启尝试优雅地关闭并重新启动服务器。 HARD 重启尝试强制关闭并重新启动服务器。 HARD 重启对应于服务器的电源循环。

重启服务器(reboot 操作)示例

{
    "reboot" : {
        "type" : "HARD"
    }
}

响应

如果成功,此方法不会在响应正文中返回内容。

POST
/servers/{server_id}/action

重建服务器(rebuild 操作)

重建服务器。

在请求正文中指定 rebuild 操作。

此操作会重新创建服务器的根磁盘。

使用 microversion 2.93,我们支持重建卷后置实例,这将使用提供的镜像重新映像卷。对于 microversion < 2.93,此操作会保留卷的内容,前提是提供的镜像与创建卷的镜像相同,否则操作将失败。

先决条件

服务器状态必须为 ACTIVESHUTOFFERROR

异步后置条件

如果服务器在重建之前处于 SHUTOFF 状态,它将在重建后停止并处于 SHUTOFF 状态,否则如果重建成功,它将为 ACTIVE,如果重建失败,则为 ERROR

注意

使用 microversion 2.93,我们支持重建卷后置实例。如果指定了任何 microversion < 2.93,则存在一个已知限制,即在重建期间不会替换卷后置实例的根磁盘。

正常响应代码:202

错误响应代码:badRequest(400),unauthorized(401),forbidden(403),itemNotFound(404),conflict(409)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

rebuild

body

对象

重建服务器的操作。

imageRef

body

字符串

用于重建服务器实例的镜像的 UUID。它必须是有效的 UUID,否则 API 将返回 400。要使用新镜像重建卷后置服务器,至少需要提供 microversion 2.93,否则请求将回退到旧行为,即 API 将返回 400(对于与创建卷时使用的镜像不同的镜像)。对于非卷后置服务器,指定新镜像将验证该镜像对于服务器存在的当前计算主机是可接受的。如果新镜像无效,服务器将进入 ERROR 状态。

accessIPv4(可选)

body

字符串

应从此服务器访问的 IPv4 地址。

accessIPv6(可选)

body

字符串

应从此服务器访问的 IPv6 地址。

adminPass(可选)

body

字符串

服务器的管理密码。如果省略此参数,操作将生成一个新密码。

metadata (可选)

body

对象

元数据键值对。每个元数据键和值的最大大小为 255 字节。

name (可选)

body

字符串

服务器名称。

OS-DCF:diskConfig(可选)

body

字符串

控制 API 在创建、重建或调整服务器大小时如何对磁盘进行分区。服务器继承其创建的镜像的 OS-DCF:diskConfig 值,而镜像继承其创建的服务器的 OS-DCF:diskConfig 值。要覆盖继承的设置,您可以在服务器创建、重建或调整大小请求的正文中包含此属性。如果镜像的 OS-DCF:diskConfig 值为 MANUAL,则您无法从该镜像创建服务器并将其 OS-DCF:diskConfig 值设置为 AUTO。有效值为:

  • AUTO。API 构建服务器,其中包含一个分区,大小与目标 flavor 磁盘相同。API 会自动调整文件系统以适应整个分区。

  • MANUAL。API 使用源镜像中的分区方案和文件系统来构建服务器。如果目标 flavor 磁盘更大,API 不会对剩余的磁盘空间进行分区。

personality(可选)

body

数组

要在启动时注入服务器的文件路径和内容(仅文本)。文件路径数据的最大大小为 255 字节。最大限制是解码数据(而不是编码数据)允许的字节数。

在版本 2.56 之前可用

personality.path

body

字符串

personality 对象中的 path 字段。

在版本 2.56 之前可用

personality.contents

body

字符串

personality 对象中的 file contents 字段。

在版本 2.56 之前可用

preserve_ephemeral (可选)

body

布尔值

指示服务器是否通过保留临时分区(true)进行重建。

注意

这仅适用于 Ironic 提供的裸机服务器。将其传递给任何其他服务器实例都会导致故障并阻止重建发生。

description (可选)

body

字符串

服务器的自由格式描述。限制为 255 个字符。在微版本 2.19 之前,此字段设置为服务器名称。

版本 2.19 新增

key_name(可选)

body

字符串

用于重建 API 的密钥对名称。如果指定 null,则取消设置现有密钥对。

注意

同一项目内的用户可以使用新的密钥对重建其他用户的项目实例。密钥由用户拥有(这是唯一具有此特性的资源)。服务器由项目拥有。因此,使用 key_name 进行重建是查找调用重建的用户拥有的密钥对。

2.54 版本新增

user_data(可选)

body

字符串

重建时的配置信息或脚本。必须进行 Base64 编码。限制为 65535 字节。如果指定 null,则取消设置现有的 user_data。

2.57 版本新增

trusted_image_certificates(可选)

body

数组

受信任的证书 ID 列表,用于在镜像签名验证期间验证签名证书。列表限制为最多 50 个 ID。如果策略允许,此参数在服务器重建请求中是可选的,并且不支持卷后置实例。

如果指定 null,则现有的受信任证书 ID 要么被取消设置,要么被重置为配置的默认值。

版本 2.63 新增

hostname (可选)

body

字符串

配置实例在元数据服务中使用的名称。

从微版本 2.94 开始,这可以是一个最大长度为 255 个字符的完全限定域名 (FQDN)。

注意

此信息通过元数据服务发布,需要 cloud-init 等应用程序将其传播到实例。

版本 2.90 新增

重建服务器(rebuild 操作)示例(v2.63)

{
    "rebuild" : {
        "accessIPv4" : "1.2.3.4",
        "accessIPv6" : "80fe::",
        "OS-DCF:diskConfig": "AUTO",
        "imageRef" : "70a599e0-31e7-49b7-b260-868f441e862b",
        "name" : "foobar",
        "key_name": "new-key",
        "description" : "description of foobar",
        "adminPass" : "seekr3t",
        "metadata" : {
            "meta_var" : "meta_val"
        },
        "user_data": "ZWNobyAiaGVsbG8gd29ybGQi",
        "trusted_image_certificates": [
            "0b5d2c72-12cc-4ba6-a8d7-3ff5cc1d8cb8",
            "674736e3-f25c-405c-8362-bbf991e0ce0a"
        ]
    }
}

重建服务器(rebuild 操作)示例(v2.90)

{
    "rebuild" : {
        "accessIPv4" : "1.2.3.4",
        "accessIPv6" : "80fe::",
        "OS-DCF:diskConfig": "AUTO",
        "imageRef" : "70a599e0-31e7-49b7-b260-868f441e862b",
        "name" : "foobar",
        "adminPass" : "seekr3t",
        "hostname": "custom-hostname",
        "metadata" : {
            "meta_var" : "meta_val"
        },
        "user_data": "ZWNobyAiaGVsbG8gd29ybGQi"
    }
}

重建服务器(rebuild 操作)示例(v2.94)

{
    "rebuild" : {
        "accessIPv4" : "1.2.3.4",
        "accessIPv6" : "80fe::",
        "OS-DCF:diskConfig": "AUTO",
        "imageRef" : "70a599e0-31e7-49b7-b260-868f441e862b",
        "name" : "foobar",
        "adminPass" : "seekr3t",
        "hostname": "custom-hostname.example.com",
        "metadata" : {
            "meta_var" : "meta_val"
        },
        "user_data": "ZWNobyAiaGVsbG8gd29ybGQi"
    }
}

响应

名称

入参

类型

描述

位置

标头

字符串

服务器的定位 URL,将返回 HTTP 头“Location: <server location URL>”。

server

body

对象

一个 server 对象。

accessIPv4

body

字符串

应使用此 IPv4 地址访问此服务器。可能由提供程序自动设置。

accessIPv6

body

字符串

应使用此 IPv6 地址访问此服务器。可能由提供程序自动设置。

addresses

body

对象

服务器的地址信息。

创建时间

body

字符串

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

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

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

flavor

body

对象

在 microversion 2.47 之前,这包含用于引导服务器实例的风味 ID 和链接。如果风味信息不再存在于系统中,这可能是一个空对象。

从 microversion 2.47 开始,这包含用于创建服务器实例的风味信息的一个子集,表示为嵌套字典。

flavor.id

body

字符串

风味 ID。虽然人们经常将其视为整数,但它实际上是一个字符串。

在 2.46 版本之前可用

flavor.links

body

数组

指向风味资源的链接。更多信息请参见 API 指南 / 链接和引用

在 2.46 版本之前可用

flavor.vcpus

body

整数

分配给服务器的虚拟 CPU 数量。

2.47 版本新增

flavor.ram

body

整数

风味的大小,以 MiB 为单位。

2.47 版本新增

flavor.disk

body

整数

创建的根磁盘的大小,以 GiB 为单位。

2.47 版本新增

flavor.ephemeral

body

整数

创建的临时磁盘的大小,以 GiB 为单位。

2.47 版本新增

flavor.swap

body

整数

分配的专用交换磁盘的大小,以 MiB 为单位。

2.47 版本新增

flavor.original_name

body

字符串

风类的显示名称。

2.47 版本新增

flavor.extra_specs (可选)

body

对象

风类附加规格键值对的字典。仅当用户被策略允许索引风类附加规格时才包含。

2.47 版本新增

flavor.extra_specs.key

body

字符串

风类的附加规格键。

2.47 版本新增

flavor.extra_specs.value

body

字符串

风类的附加规格值。

2.47 版本新增

hostId

body

字符串

表示主机的 ID 字符串。这是一个哈希值,所以实际上看起来不像主机名,并且使用 project_id 的数据进行哈希,因此由两个不同的 project_id 看到的同一物理主机将是不同的。当同一项目内需要确定两个实例是否在相同或不同的物理主机上以用于可用性或性能目的时,它很有用。

id

body

字符串

服务器的 UUID。

image

body

对象

用于服务器实例的镜像的 UUID 和链接。当从卷引导服务器时,image 对象将为空字符串。

image.id

body

字符串

镜像的 ID。

image.links

body

数组

指向相关资源的链接。有关更多信息,请参阅API 指南 / 链接和引用

image.properties

body

对象

镜像的属性键/值对。

2.98 版本新增

links

body

数组

与服务器相关的链接。更多信息请参见 API 指南 / 链接和引用

metadata

body

对象

元数据键值对。每个元数据键值对的最大大小为 255 字节。

name

body

字符串

服务器名称。

OS-DCF:diskConfig

body

字符串

磁盘配置。值可以是

  • AUTO。API 构建服务器,其中包含一个分区,大小与目标 flavor 磁盘相同。API 会自动调整文件系统以适应整个分区。

  • MANUAL。API 使用源镜像中的分区方案和文件系统构建服务器。如果目标风味磁盘更大,API 不会对剩余磁盘空间进行分区。

status

body

字符串

服务器状态。

tenant_id

body

字符串

多租户云中的租户 UUID。

updated

body

字符串

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

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

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

user_id

body

字符串

拥有服务器的用户 ID。

adminPass(可选)

body

字符串

服务器的管理密码。如果将 enable_instance_password 配置选项设置为 False,API 将不会在响应中返回 adminPass 字段。

pinned_availability_zone (可选)

body

字符串

这是服务器创建期间请求的可用区。此外,当 cross_az_attach 选项为 false 且从卷引导实例时,实例可以固定到 AZ,在这种情况下,实例将在属于固定 AZ 的主机上调度。另外,当 default_schedule_zone 配置选项设置为特定 AZ 时,在这种情况下,实例将被固定到该特定 AZ,并且实例将在属于固定 AZ 的主机上调度。如果没有固定可用区,此值设置为 null

2.96 版本新增

progress(可选)

body

整数

操作进度的百分比值。此参数仅在服务器状态为 ACTIVEBUILDREBUILDRESIZEVERIFY_RESIZEMIGRATING 时出现。

locked

body

布尔值

如果实例被锁定则为 True,否则为 False。

2.9 版本新增

description

body

字符串

服务器的描述。在 microversion 2.19 之前,这被设置为服务器名称。

版本 2.19 新增

tags

body

数组

标签列表。此列表中的最大标签数为 50。

版本 2.26 新增

key_name

body

字符串

如果有关联的密钥对,则为密钥对的名称。

2.54 版本新增

user_data

body

字符串

实例的当前 user_data。

2.57 版本新增

trusted_image_certificates

body

数组

受信任的证书 ID 列表,用于在镜像签名验证期间验证签名证书。列表限制为最多 50 个 ID。如果未设置受信任的证书 ID,则值为 null

版本 2.63 新增

server_groups

body

数组

服务器所属的服务器组的 UUID。目前此项最多包含一个条目。

2.71 版本新增

locked_reason

body

字符串

锁定服务器的原因。

版本 2.73 新增

config_drive

body

字符串

指示是否为该服务器使用了配置驱动器。值为 True 或空字符串。空字符串表示 False

2.75 版本新增

OS-EXT-AZ:availability_zone

body

字符串

可用区名称。

2.75 版本新增

OS-EXT-SRV-ATTR:host

body

字符串

实例运行的计算主机名称。仅对管理员用户显示在响应中。

2.75 版本新增

OS-EXT-SRV-ATTR:hypervisor_hostname

body

字符串

Nova virt 驱动程序提供的虚拟机监控程序主机名。对于 Ironic 驱动程序,它是 Ironic 节点 uuid。仅对管理员用户显示在响应中。

2.75 版本新增

OS-EXT-SRV-ATTR:instance_name

body

字符串

实例名称。计算 API 从实例名称模板生成实例名称。仅对管理员用户显示在响应中。

2.75 版本新增

OS-EXT-STS:power_state

body

整数

实例的电源状态。这是一个枚举值,映射为

0: NOSTATE
1: RUNNING
3: PAUSED
4: SHUTDOWN
6: CRASHED
7: SUSPENDED

2.75 版本新增

OS-EXT-STS:task_state

body

字符串

实例的任务状态。

2.75 版本新增

OS-EXT-STS:vm_state

body

字符串

VM 状态。

2.75 版本新增

OS-EXT-SRV-ATTR:hostname (可选)

body

字符串

在元数据服务中报告的实例的主机名。此参数仅在管理员的响应中显示,直到 microversion 2.90,之后对所有用户显示。

注意

此信息通过元数据服务发布,需要 cloud-init 等应用程序将其传播到实例。

2.75 版本新增

OS-EXT-SRV-ATTR:reservation_id (可选)

body

字符串

服务器的预留 ID。这是一个 ID,可用于跟踪通过多重创建创建的服务器组,这些服务器组都将具有相同的 reservation_id。默认情况下,仅对管理员用户显示在响应中。

2.75 版本新增

OS-EXT-SRV-ATTR:launch_index (可选)

body

整数

当通过多重创建启动服务器时,这是启动服务器的顺序。默认情况下,仅对管理员用户显示在响应中。

2.75 版本新增

OS-EXT-SRV-ATTR:kernel_id (可选)

body

字符串

使用 AMI 时内核镜像的 UUID。如果没有,将为 null。默认情况下,仅对管理员用户显示在响应中。

2.75 版本新增

OS-EXT-SRV-ATTR:ramdisk_id (可选)

body

字符串

使用 AMI 时引导磁盘镜像的 UUID。如果没有,将为 null。默认情况下,仅对管理员用户显示在响应中。

2.75 版本新增

OS-EXT-SRV-ATTR:root_device_name (可选)

body

字符串

实例的根设备名称。默认情况下,仅对管理员用户显示在响应中。

2.75 版本新增

os-extended-volumes:volumes_attached

body

数组

已附加的卷(如果有)。

2.75 版本新增

os-extended-volumes:volumes_attached.id

body

字符串

附加卷的 ID。

2.75 版本新增

os-extended-volumes:volumes_attached.delete_on_termination

body

布尔值

一个标志,指示附加的卷在服务器被删除时是否也会被删除。默认为 False。

2.75 版本新增

OS-SRV-USG:launched_at

body

字符串

服务器启动的日期和时间。

日期和时间戳格式为 ISO 8601

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

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

hh±:mm 值(如果包含)是相对于 UTC 的时区偏移量。如果 deleted_at 日期和时间戳未设置,则其值为 null

2.75 版本新增

OS-SRV-USG:terminated_at

body

字符串

服务器删除的日期和时间。

日期和时间戳格式为 ISO 8601

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

例如,2015-08-27T09:49:58-05:00±hh:mm 值(如果包含)是相对于 UTC 的时区偏移量。如果 deleted_at 日期和时间戳未设置,则其值为 null

2.75 版本新增

scheduler_hints

body

对象

在服务器创建时发送给调度程序的提示字典。

2.100 版本新增

security_groups (可选)

body

数组

一个或多个安全组对象。

2.75 版本新增

security_group.name

body

字符串

安全组名称。

2.75 版本新增

host_status (可选)

body

字符串

主机状态。列表中的下一个值可以覆盖前一个值

  • UP,如果 nova-compute 正常。

  • UNKNOWN,如果 nova-compute 未由 servicegroup 驱动程序报告。

  • DOWN,如果 nova-compute 被强制关闭。

  • MAINTENANCE,如果 nova-compute 被禁用。

  • 空字符串表示服务器没有主机。

此属性仅在策略允许时出现在响应中。默认情况下,只有管理员可以获取此参数。

2.75 版本新增

重建服务器(rebuild 操作)示例(v2.100)

{
    "server": {
        "OS-DCF:diskConfig": "AUTO",
        "OS-EXT-AZ:availability_zone": "us-west",
        "OS-EXT-SRV-ATTR:hostname": "updated-hostname.example.com",
        "OS-EXT-STS:power_state": 1,
        "OS-EXT-STS:task_state": null,
        "OS-EXT-STS:vm_state": "active",
        "OS-SRV-USG:launched_at": "2021-08-19T15:16:22.177882",
        "OS-SRV-USG:terminated_at": null,
        "accessIPv4": "1.2.3.4",
        "accessIPv6": "80fe::",
        "addresses": {
            "private": [
                {
                    "OS-EXT-IPS-MAC:mac_addr": "00:0c:29:0d:11:74",
                    "OS-EXT-IPS:type": "fixed",
                    "addr": "192.168.1.30",
                    "version": 4
                }
            ]
        },
        "adminPass": "seekr3t",
        "config_drive": "",
        "created": "2019-04-23T17:10:22Z",
        "description": null,
        "flavor": {
            "disk": 1,
            "ephemeral": 0,
            "extra_specs": {},
            "original_name": "m1.tiny",
            "ram": 512,
            "swap": 0,
            "vcpus": 1
        },
        "hostId": "2091634baaccdc4c5a1d57069c833e402921df696b7f970791b12ec6",
        "id": "0c37a84a-c757-4f22-8c7f-0bf8b6970886",
        "image": {
            "id": "70a599e0-31e7-49b7-b260-868f441e862b",
            "links": [
                {
                    "href": "http://openstack.example.com/6f70656e737461636b20342065766572/images/70a599e0-31e7-49b7-b260-868f441e862b",
                    "rel": "bookmark"
                }
            ],
            "properties": {
                "architecture": "x86_64",
                "auto_disk_config": "True"
            }
        },
        "key_name": null,
        "links": [
            {
                "href": "http://openstack.example.com/v2.1/6f70656e737461636b20342065766572/servers/0c37a84a-c757-4f22-8c7f-0bf8b6970886",
                "rel": "self"
            },
            {
                "href": "http://openstack.example.com/6f70656e737461636b20342065766572/servers/0c37a84a-c757-4f22-8c7f-0bf8b6970886",
                "rel": "bookmark"
            }
        ],
        "locked": false,
        "locked_reason": null,
        "metadata": {
            "meta_var": "meta_val"
        },
        "name": "foobar",
        "os-extended-volumes:volumes_attached": [],
        "progress": 0,
        "pinned_availability_zone": "us-west",
        "scheduler_hints": {
            "same_host": [
                "48e6a9f6-30af-47e0-bc04-acaed113bb4e"
            ]
        },
        "security_groups": [
            {
                "name": "default"
            }
        ],
        "server_groups": [],
        "status": "ACTIVE",
        "tags": [],
        "tenant_id": "6f70656e737461636b20342065766572",
        "trusted_image_certificates": null,
        "updated": "2019-04-23T17:10:24Z",
        "user_data": "ZWNobyAiaGVsbG8gd29ybGQi",
        "user_id": "fake"
    }
}

重建服务器(rebuild 操作)示例(v2.98)

{
    "server": {
        "OS-DCF:diskConfig": "AUTO",
        "OS-EXT-AZ:availability_zone": "us-west",
        "OS-EXT-SRV-ATTR:hostname": "updated-hostname.example.com",
        "OS-EXT-STS:power_state": 1,
        "OS-EXT-STS:task_state": null,
        "OS-EXT-STS:vm_state": "active",
        "OS-SRV-USG:launched_at": "2021-08-19T15:16:22.177882",
        "OS-SRV-USG:terminated_at": null,
        "accessIPv4": "1.2.3.4",
        "accessIPv6": "80fe::",
        "addresses": {
            "private": [
                {
                    "OS-EXT-IPS-MAC:mac_addr": "00:0c:29:0d:11:74",
                    "OS-EXT-IPS:type": "fixed",
                    "addr": "192.168.1.30",
                    "version": 4
                }
            ]
        },
        "adminPass": "seekr3t",
        "config_drive": "",
        "created": "2019-04-23T17:10:22Z",
        "description": null,
        "flavor": {
            "disk": 1,
            "ephemeral": 0,
            "extra_specs": {},
            "original_name": "m1.tiny",
            "ram": 512,
            "swap": 0,
            "vcpus": 1
        },
        "hostId": "2091634baaccdc4c5a1d57069c833e402921df696b7f970791b12ec6",
        "id": "0c37a84a-c757-4f22-8c7f-0bf8b6970886",
        "image": {
            "id": "70a599e0-31e7-49b7-b260-868f441e862b",
            "links": [
                {
                    "href": "http://openstack.example.com/6f70656e737461636b20342065766572/images/70a599e0-31e7-49b7-b260-868f441e862b",
                    "rel": "bookmark"
                }
            ],
            "properties": {
                "architecture": "x86_64",
                "auto_disk_config": "True"
            }
        },
        "key_name": null,
        "links": [
            {
                "href": "http://openstack.example.com/v2.1/6f70656e737461636b20342065766572/servers/0c37a84a-c757-4f22-8c7f-0bf8b6970886",
                "rel": "self"
            },
            {
                "href": "http://openstack.example.com/6f70656e737461636b20342065766572/servers/0c37a84a-c757-4f22-8c7f-0bf8b6970886",
                "rel": "bookmark"
            }
        ],
        "locked": false,
        "locked_reason": null,
        "metadata": {
            "meta_var": "meta_val"
        },
        "name": "foobar",
        "os-extended-volumes:volumes_attached": [],
        "pinned_availability_zone": "us-west",
        "progress": 0,
        "security_groups": [
            {
                "name": "default"
            }
        ],
        "server_groups": [],
        "status": "ACTIVE",
        "tags": [],
        "tenant_id": "6f70656e737461636b20342065766572",
        "trusted_image_certificates": null,
        "updated": "2019-04-23T17:10:24Z",
        "user_data": "ZWNobyAiaGVsbG8gd29ybGQi",
        "user_id": "fake"
    }
}

重建服务器(rebuild 操作)示例(v2.96)

{
    "server": {
        "OS-DCF:diskConfig": "AUTO",
        "OS-EXT-AZ:availability_zone": "us-west",
        "OS-EXT-SRV-ATTR:hostname": "updated-hostname.example.com",
        "OS-EXT-STS:power_state": 1,
        "OS-EXT-STS:task_state": null,
        "OS-EXT-STS:vm_state": "active",
        "OS-SRV-USG:launched_at": "2025-02-27T01:27:30.210952",
        "OS-SRV-USG:terminated_at": null,
        "accessIPv4": "1.2.3.4",
        "accessIPv6": "80fe::",
        "addresses": {
            "private": [
                {
                    "OS-EXT-IPS-MAC:mac_addr": "00:0c:29:0d:11:74",
                    "OS-EXT-IPS:type": "fixed",
                    "addr": "192.168.1.30",
                    "version": 4
                }
            ]
        },
        "adminPass": "seekr3t",
        "config_drive": "",
        "created": "2025-02-27T01:27:28Z",
        "description": null,
        "flavor": {
            "disk": 1,
            "ephemeral": 0,
            "extra_specs": {},
            "original_name": "m1.tiny",
            "ram": 512,
            "swap": 0,
            "vcpus": 1
        },
        "hostId": "2091634baaccdc4c5a1d57069c833e402921df696b7f970791b12ec6",
        "id": "a7920f90-14be-4c71-a6f9-6182f5df17c2",
        "image": {
            "id": "70a599e0-31e7-49b7-b260-868f441e862b",
            "links": [
                {
                    "href": "http://openstack.example.com/6f70656e737461636b20342065766572/images/70a599e0-31e7-49b7-b260-868f441e862b",
                    "rel": "bookmark"
                }
            ]
        },
        "key_name": null,
        "links": [
            {
                "href": "http://openstack.example.com/v2.1/6f70656e737461636b20342065766572/servers/a7920f90-14be-4c71-a6f9-6182f5df17c2",
                "rel": "self"
            },
            {
                "href": "http://openstack.example.com/6f70656e737461636b20342065766572/servers/a7920f90-14be-4c71-a6f9-6182f5df17c2",
                "rel": "bookmark"
            }
        ],
        "locked": false,
        "locked_reason": null,
        "metadata": {
            "meta_var": "meta_val"
        },
        "name": "foobar",
        "os-extended-volumes:volumes_attached": [],
        "pinned_availability_zone": "us-west",
        "progress": 0,
        "security_groups": [
            {
                "name": "default"
            }
        ],
        "server_groups": [],
        "status": "ACTIVE",
        "tags": [],
        "tenant_id": "6f70656e737461636b20342065766572",
        "trusted_image_certificates": null,
        "updated": "2025-02-27T01:27:30Z",
        "user_data": "ZWNobyAiaGVsbG8gd29ybGQi",
        "user_id": "fake"
    }
}

重建服务器(rebuild 操作)示例(v2.75)

{
    "server": {
        "OS-DCF:diskConfig": "AUTO",
        "OS-EXT-AZ:availability_zone": "us-west",
        "OS-EXT-SRV-ATTR:host": "compute",
        "OS-EXT-SRV-ATTR:hostname": "new-server-test",
        "OS-EXT-SRV-ATTR:hypervisor_hostname": "fake-mini",
        "OS-EXT-SRV-ATTR:instance_name": "instance-00000001",
        "OS-EXT-SRV-ATTR:kernel_id": "",
        "OS-EXT-SRV-ATTR:launch_index": 0,
        "OS-EXT-SRV-ATTR:ramdisk_id": "",
        "OS-EXT-SRV-ATTR:reservation_id": "r-t61j9da6",
        "OS-EXT-SRV-ATTR:root_device_name": "/dev/sda",
        "OS-EXT-STS:power_state": 1,
        "OS-EXT-STS:task_state": null,
        "OS-EXT-STS:vm_state": "active",
        "OS-SRV-USG:launched_at": "2019-04-23T15:19:10.855016",
        "OS-SRV-USG:terminated_at": null,
        "accessIPv4": "1.2.3.4",
        "accessIPv6": "80fe::",
        "addresses": {
            "private": [
                {
                    "OS-EXT-IPS-MAC:mac_addr": "00:0c:29:0d:11:74",
                    "OS-EXT-IPS:type": "fixed",
                    "addr": "192.168.1.30",
                    "version": 4
                }
            ]
        },
        "adminPass": "seekr3t",
        "config_drive": "",
        "created": "2019-04-23T17:10:22Z",
        "description": null,
        "flavor": {
            "disk": 1,
            "ephemeral": 0,
            "extra_specs": {},
            "original_name": "m1.tiny",
            "ram": 512,
            "swap": 0,
            "vcpus": 1
        },
        "hostId": "2091634baaccdc4c5a1d57069c833e402921df696b7f970791b12ec6",
        "host_status": "UP",
        "id": "0c37a84a-c757-4f22-8c7f-0bf8b6970886",
        "image": {
            "id": "70a599e0-31e7-49b7-b260-868f441e862b",
            "links": [
                {
                    "href": "http://openstack.example.com/6f70656e737461636b20342065766572/images/70a599e0-31e7-49b7-b260-868f441e862b",
                    "rel": "bookmark"
                }
            ]
        },
        "key_name": null,
        "links": [
            {
                "href": "http://openstack.example.com/v2.1/6f70656e737461636b20342065766572/servers/0c37a84a-c757-4f22-8c7f-0bf8b6970886",
                "rel": "self"
            },
            {
                "href": "http://openstack.example.com/6f70656e737461636b20342065766572/servers/0c37a84a-c757-4f22-8c7f-0bf8b6970886",
                "rel": "bookmark"
            }
        ],
        "locked": false,
        "locked_reason": null,
        "metadata": {
            "meta_var": "meta_val"
        },
        "name": "foobar",
        "os-extended-volumes:volumes_attached": [],
        "progress": 0,
        "security_groups": [
            {
                "name": "default"
            }
        ],
        "server_groups": [],
        "status": "ACTIVE",
        "tags": [],
        "tenant_id": "6f70656e737461636b20342065766572",
        "trusted_image_certificates": null,
        "updated": "2019-04-23T17:10:24Z",
        "user_data": "ZWNobyAiaGVsbG8gd29ybGQi",
        "user_id": "admin"
    }
}
POST
/servers/{server_id}/action

移除(解除关联)浮动 IP(removeFloatingIp 操作)(已弃用)

警告

此 API 已弃用,并将从 microversion 2.44 开始以 404 失败。已被替换为使用 Neutron 网络服务 API。

从服务器移除或解除关联一个浮动 IP 地址。

IP 地址将返回到可供所有项目使用的 IP 地址池。当您移除一个浮动 IP 地址并且该 IP 地址仍与正在运行的实例关联时,它将自动与该实例解除关联。

在请求正文中指定 removeFloatingIp 操作。

正常响应代码:202

错误响应代码:badRequest(400),unauthorized(401),forbidden(403),itemNotFound(404),conflict(409)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

removeFloatingIp

body

对象

从服务器移除或解除关联浮动 IP 地址的操作。

address

body

字符串

浮动 IP 地址。

移除(解除关联)浮动 IP(removeFloatingIp 操作)示例

{
    "removeFloatingIp": {
        "address": "172.16.10.7"
    }
}

响应

如果成功,此方法不会在响应正文中返回内容。

POST
/servers/{server_id}/action

从服务器移除安全组(removeSecurityGroup 操作)

从服务器移除安全组。

在请求正文中指定 removeSecurityGroup 操作。

正常响应代码:202

错误响应代码:badRequest(400),unauthorized(401),forbidden(403),itemNotFound(404),conflict(409)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

removeSecurityGroup

body

对象

从服务器移除安全组的操作。

name

body

字符串

安全组名称。

从服务器移除安全组(removeSecurityGroup 操作)示例

{
    "removeSecurityGroup": {
        "name": "test"
    }
}

响应

如果成功,此方法不会在响应正文中返回内容。

POST
/servers/{server_id}/action

救援服务器(rescue 操作)

将服务器置于救援模式,并将其状态更改为 RESCUE

注意

直到 microversion 2.87,此 API 不支持卷后置实例。

在请求正文中指定 rescue 操作。

如果您指定了 rescue_image_ref 扩展属性,则使用该镜像来救援实例。如果您省略了镜像引用,则默认使用基础镜像引用。

异步后置条件

成功救援服务器并发出 GET /servers/​{server_id}​ 请求后,其状态将更改为 RESCUE

正常响应代码:200

错误响应代码:badRequest(400)、unauthorized(401)、forbidden(403)、itemNotFound(404)、conflict(409)、notImplemented(501)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

rescue

body

对象

救援服务器的操作。

adminPass(可选)

body

字符串

被救援实例的密码。如果省略此参数,操作将生成新密码。

rescue_image_ref (可选)

body

字符串

用于救援服务器实例的镜像引用。通过 ID 或完整 URL 指定镜像引用。如果您省略了镜像引用,则默认为基础镜像引用。

救援服务器(rescue 操作)示例

{
    "rescue": {
        "adminPass": "MySecretPass",
        "rescue_image_ref": "70a599e0-31e7-49b7-b260-868f441e862b"
    }
}

响应

名称

入参

类型

描述

adminPass(可选)

body

字符串

服务器的管理密码。如果将 enable_instance_password 配置选项设置为 False,API 将不会在响应中返回 adminPass 字段。

救援服务器(rescue 操作)示例

{
    "adminPass": "MySecretPass"
}
POST
/servers/{server_id}/action

调整服务器大小(resize 操作)

调整服务器大小。

在请求正文中指定 resize 操作。

先决条件

您只能在服务器状态为 ACTIVESHUTOFF 时调整服务器大小。

如果服务器被锁定,您必须具有管理员权限才能调整服务器大小。

异步后置条件

成功调整大小的服务器显示 VERIFY_RESIZE 状态和 finished 迁移状态。如果云已配置 Compute 服务的 resize_confirm_window 选项为正值,则 Compute 服务将在配置的间隔后自动确认调整大小操作。

注意

有一个已知限制,即临时磁盘未调整大小。

正常响应代码:202

错误响应代码:badRequest(400),unauthorized(401),forbidden(403),itemNotFound(404),conflict(409)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

调整大小

body

对象

调整服务器大小的操作。

flavorRef

body

字符串

调整服务器大小的风味 ID。要调整大小到的风味中的磁盘大小必须大于或等于当前风味中的磁盘大小。

如果指定的风味 ID 与服务器的当前风味 ID 相同,则请求将返回 Bad Request (400) 响应代码。

OS-DCF:diskConfig(可选)

body

字符串

控制 API 在创建、重建或调整服务器大小时如何对磁盘进行分区。服务器继承其创建的镜像的 OS-DCF:diskConfig 值,而镜像继承其创建的服务器的 OS-DCF:diskConfig 值。要覆盖继承的设置,您可以在服务器创建、重建或调整大小请求的正文中包含此属性。如果镜像的 OS-DCF:diskConfig 值为 MANUAL,则您无法从该镜像创建服务器并将其 OS-DCF:diskConfig 值设置为 AUTO。有效值为:

  • AUTO。API 构建服务器,其中包含一个分区,大小与目标 flavor 磁盘相同。API 会自动调整文件系统以适应整个分区。

  • MANUAL。API 使用源镜像中的分区方案和文件系统来构建服务器。如果目标 flavor 磁盘更大,API 不会对剩余的磁盘空间进行分区。

调整服务器大小(Resize 操作)示例

{
    "resize" : {
        "flavorRef" : "2",
        "OS-DCF:diskConfig": "AUTO"
    }
}

响应

如果成功,此方法不会在响应正文中返回内容。

POST
/servers/{server_id}/action

恢复挂起的服务器(resume 操作)

恢复挂起的服务器,并将其状态更改为 ACTIVE

在请求正文中指定 resume 操作。

策略默认仅允许具有管理员角色或服务器所有者的用户执行此操作。云提供商可以通过 policy.json 文件更改这些权限。

正常响应代码:202

错误响应代码:unauthorized(401)、forbidden(403)、itemNotFound(404)、conflict(409)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

resume

body

none

恢复挂起的服务器的操作。

恢复挂起的服务器(Resume 操作)示例

{
    "resume": null
}

响应

如果成功,此方法不会在响应正文中返回内容。

POST
/servers/{server_id}/action

回滚已调整大小的服务器(revertResize 操作)

取消并回滚服务器的待定调整大小操作。

在请求正文中指定 revertResize 操作。

先决条件

您只能在服务器状态为 VERIFY_RESIZE 且 OS-EXT-STS:vm_state 为 resized 时回滚已调整大小的服务器。

如果服务器被锁定,您必须具有管理员权限才能回滚调整大小。

异步后置条件

进行此请求后,您通常必须持续轮询服务器状态以确定请求是否成功。回滚调整大小操作显示状态为 REVERT_RESIZE,任务状态为 resize_reverting。如果成功,状态将恢复到 ACTIVESHUTOFF。您也可以在 OpenStack Compute 管理的计算节点上看到已回滚的服务器。

故障排除

如果服务器状态仍为 VERIFY_RESIZE,则请求失败。确保您满足先决条件并再次运行请求。如果请求再次失败,请调查计算后端。

服务器未在 OpenStack Compute 管理的计算节点上回滚。

正常响应代码:202

错误响应代码:badRequest(400),unauthorized(401),forbidden(403),itemNotFound(404),conflict(409)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

revertResize

body

none

回滚调整大小操作的操作。

回滚已调整大小的服务器(revertResize 操作)示例

{
    "revertResize" : null
}

响应

如果成功,此方法不会在响应正文中返回内容。

POST
/servers/{server_id}/action

启动服务器(os-start 操作)

启动已停止的服务器,并将其状态更改为 ACTIVE

在请求正文中指定 os-start 操作。

先决条件

服务器状态必须为 SHUTOFF

如果服务器被锁定,您必须具有管理员权限才能启动服务器。

异步后置条件

成功启动服务器后,其状态将更改为 ACTIVE

故障排除

如果服务器状态未更改为 ACTIVE,则启动操作失败。确保您满足先决条件并再次运行请求。如果请求再次失败,请调查是否还有其他操作正在运行,导致了竞争条件。

正常响应代码:202

错误响应代码:unauthorized(401)、forbidden(403)、itemNotFound(404)、conflict(409)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

os-start

body

none

启动已停止服务器的操作。

启动服务器示例

{
    "os-start" : null
}

响应

如果成功,此方法不会在响应正文中返回内容。

POST
/servers/{server_id}/action

停止服务器(os-stop 操作)

停止正在运行的服务器,并将其状态更改为 SHUTOFF

在请求正文中指定 os-stop 操作。

先决条件

服务器状态必须为 ACTIVEERROR

如果服务器被锁定,您必须具有管理员权限才能停止服务器。

异步后置条件

成功停止服务器后,其状态将更改为 SHUTOFF。此 API 操作不会删除服务器实例数据,数据将在 os-start 操作后再次可用。

正常响应代码:202

错误响应代码:unauthorized(401)、forbidden(403)、itemNotFound(404)、conflict(409)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

os-stop

body

none

停止正在运行的服务器的操作。

停止服务器示例

{
    "os-stop" : null
}

响应

如果成功,此方法不会在响应正文中返回内容。

POST
/servers/{server_id}/action

挂起服务器(suspend 操作)

挂起服务器,并将其状态更改为 SUSPENDED

在请求正文中指定 suspend 操作。

策略默认仅允许具有管理员角色或服务器所有者的用户执行此操作。云提供商可以通过 policy.json 文件更改这些权限。

正常响应代码:202

错误响应代码:unauthorized(401)、forbidden(403)、itemNotFound(404)、conflict(409)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

挂起

body

none

挂起服务器的操作。

挂起服务器(suspend 操作)示例

{
    "suspend": null
}

响应

如果成功,此方法不会在响应正文中返回内容。

POST
/servers/{server_id}/action

解锁服务器(unlock 操作)

解锁锁定的服务器。

在请求正文中指定 unlock 操作。

策略默认仅允许具有管理员角色或服务器所有者的用户执行此操作。云提供商可以通过 policy.json 文件更改这些权限。

正常响应代码:202

错误响应代码:unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

unlock

body

none

解锁锁定服务器的操作。

解锁服务器(unlock 操作)示例

{
    "unlock": null
}

响应

如果成功,此方法不会在响应正文中返回内容。

POST
/servers/{server_id}/action

取消暂停服务器(unpause 操作)

取消暂停处于暂停状态的服务器,并将其状态更改为 ACTIVE

在请求正文中指定 unpause 操作。

策略默认仅允许具有管理员角色或服务器所有者的用户执行此操作。云提供商可以通过 policy.json 文件更改这些权限。

正常响应代码:202

错误响应代码:unauthorized(401)、forbidden(403)、itemNotFound(404)、conflict(409)、notImplemented(501)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

取消暂停

body

none

取消暂停处于暂停状态的服务器的操作。

取消暂停服务器(unpause 操作)示例

{
    "unpause": null
}

响应

如果成功,此方法不会在响应正文中返回内容。

POST
/servers/{server_id}/action

取消救援服务器(unrescue 操作)

取消救援服务器。将状态更改为 ACTIVE

在请求正文中指定 unrescue 操作。

先决条件

服务器必须存在。

您只能在服务器状态为 RESCUE 时取消救援服务器。

异步后置条件

成功取消救援服务器并发出 GET /servers/​{server_id}​ 请求后,其状态将更改为 ACTIVE

正常响应代码:202

错误响应代码:unauthorized(401)、forbidden(403)、itemNotFound(404)、conflict(409)、notImplemented(501)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

取消救援

body

none

处于救援模式下的服务器的取消救援操作。

取消救援服务器示例

{
    "unrescue": null
}

响应

如果成功,此方法不会在响应正文中返回内容。

POST
/servers/{server_id}/action

添加(关联)固定 IP(addFixedIp 操作)(已弃用)

警告

此 API 已弃用,并将从 microversion 2.44 开始以 404 失败。已被替换为使用 Neutron 网络服务 API。

向服务器实例添加一个固定 IP 地址,该地址与服务器关联。固定 IP 地址从请求中指定的网络检索。

在请求正文中指定 addFixedIp 操作和网络 ID。

策略默认仅允许具有管理员角色或服务器所有者的用户执行此操作。云提供商可以通过 policy.json 文件更改这些权限。

正常响应代码:202

错误响应代码:badRequest(400)、unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

addFixedIp

body

对象

向服务器添加固定 IP 地址的操作。

networkId

body

字符串

网络 ID。

添加(关联)固定 IP(addFixedIp 操作)示例

{
    "addFixedIp": {
        "networkId": "e1882e38-38c2-4239-ade7-35d644cb963a"
    }
}

响应

成功的 addFixedIp 操作后,不会返回响应正文。

POST
/servers/{server_id}/action

移除(解除关联)固定 IP(removeFixedIp 操作)(已弃用)

警告

此 API 已弃用,并将从 microversion 2.44 开始以 404 失败。已被替换为使用 Neutron 网络服务 API。

从服务器移除或解除关联一个固定 IP 地址。

在请求正文中指定 removeFixedIp 操作。

策略默认仅允许具有管理员角色或服务器所有者的用户执行此操作。云提供商可以通过 policy.json 文件更改这些权限。

正常响应代码:202

错误响应代码:badRequest(400)、unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

removeFixedIp

body

对象

从服务器移除固定 IP 地址的操作。

address

body

字符串

IP 地址。

移除(解除关联)固定 IP(removeFixedIp 操作)示例

{
    "removeFixedIp": {
        "address": "10.0.0.4"
    }
}

响应

成功的 removeFixedIp 操作后,不会返回响应正文。

POST
/servers/{server_id}/action

强制删除服务器(forceDelete 操作)

在延迟清理之前强制删除服务器。

在请求正文中指定 forceDelete 操作。

策略默认仅允许具有管理员角色或服务器所有者的用户执行此操作。云提供商可以通过 policy.json 文件更改这些权限。

正常响应代码:202

错误响应代码:unauthorized(401)、forbidden(403)、itemNotFound(404)、conflict(409)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

forceDelete

body

none

操作。

强制删除服务器(forceDelete 操作):JSON 请求

{
    "forceDelete": null
}

响应

成功提交后没有正文返回。

POST
/servers/{server_id}/action

恢复软删除实例(restore 操作)

恢复先前已软删除的服务器实例。您不能使用此方法恢复已删除的实例。

在请求正文中指定 restore 操作。

策略默认仅允许具有管理员角色或服务器所有者的用户执行此操作。云提供商可以通过 policy.json 文件更改这些权限。

正常响应代码:202

错误响应代码:unauthorized(401)、forbidden(403)、itemNotFound(404)、conflict(409)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

restore

body

none

操作。

恢复软删除实例(restore 操作)示例:JSON 请求

{
    "restore": null
}

响应

成功提交后没有正文返回。

POST
/servers/{server_id}/action

显示控制台输出(os-getConsoleOutput 操作)

显示服务器的控制台输出。

此 API 返回自启动以来的控制台文本。返回的内容可能很大。通过在请求正文中设置可选的 length 参数,限制从内容末尾开始的控制台文本行数。

从其获取控制台日志的服务器应设置 export LC_ALL=en_US.UTF-8 以避免不正确的 Unicode 错误。

正常响应代码:200

错误响应代码:unauthorized(401)、forbidden(403)、notFound(404)、conflict(409)、methodNotImplemented(501)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

os-getConsoleOutput

body

对象

获取服务器控制台输出的操作。

length (可选)

body

整数

从控制台日志末尾获取的行数。如果未指定此参数,则返回所有行。

注意

此参数不仅可以指定为“整数”,还可以指定为“字符串”。

显示控制台输出(os-getConsoleOutput 操作)示例

此示例请求指定服务器的最后 50 行控制台内容。

{
    "os-getConsoleOutput": {
        "length": 50
    }
}

响应

名称

入参

类型

描述

output

body

字符串

控制台输出作为字符串。控制字符将被转义以创建有效的 JSON 字符串。

显示控制台输出(os-getConsoleOutput 操作)示例

{
    "output": "FAKE CONSOLE OUTPUT\nANOTHER\nLAST LINE"
}
POST
/servers/{server_id}/action

暂存服务器(shelve 操作)

暂存服务器。

在请求正文中指定 shelve 操作。

所有关联的数据和资源都将保留,但内存中的任何内容都不会被保留。要恢复暂存的实例,请使用 unshelve 操作。要移除暂存的实例,请使用 shelveOffload 操作。

策略默认仅允许具有管理员角色或服务器所有者的用户执行此操作。云提供商可以通过 policy.json 文件更改这些权限。

先决条件

服务器状态必须为 ACTIVESHUTOFFPAUSEDSUSPENDED

如果服务器被锁定,您必须具有管理员权限才能暂存服务器。

异步后置条件

成功暂存服务器后,其状态将更改为 SHELVED,镜像状态为 ACTIVE。服务器实例数据出现在 Compute 服务管理的计算节点上。

如果您从卷引导服务器或将 shelved_offload_time 选项设置为 0,则 Compute 服务将自动删除计算节点上的实例,并将服务器状态更改为 SHELVED_OFFLOADED

故障排除

如果服务器状态未更改为 SHELVEDSHELVED_OFFLOADED,则暂存操作失败。确保您满足先决条件并再次运行请求。如果请求再次失败,请调查是否还有其他操作正在运行,导致了竞争条件。

正常响应代码:202

错误响应代码:unauthorized(401)、forbidden(403)、itemNotFound(404)、conflict(409)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

shelve

body

none

操作。


暂存服务器(shelve 操作)示例

{
    "shelve": null
}

响应

如果成功,此方法不会在响应正文中返回内容。

POST
/servers/{server_id}/action

暂存卸载(移除)服务器(shelveOffload 操作)

暂存卸载,或移除,一个已暂存的服务器。

在请求正文中指定 shelveOffload 操作。

将删除数据和资源关联。如果不再需要实例,您可以从虚拟机监控程序中移除该实例以最小化资源使用。

策略默认仅允许具有管理员角色或服务器所有者的用户执行此操作。云提供商可以通过 policy.json 文件更改这些权限。

先决条件

服务器状态必须为 SHELVED

如果服务器被锁定,您必须具有管理员权限才能暂存卸载服务器。

异步后置条件

成功暂存卸载服务器后,其状态将更改为 SHELVED_OFFLOADED。服务器实例数据出现在计算节点上。

故障排除

如果服务器状态未变为 SHELVED_OFFLOADED,则表示 shelve-offload 操作失败。请确保您满足先决条件并重新运行请求。如果请求再次失败,请调查是否有其他操作正在运行导致了竞态条件。

正常响应代码:202

错误响应代码:unauthorized(401)、forbidden(403)、itemNotFound(404)、conflict(409)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

shelveOffload

body

none

操作。


示例:Shelf-Offload 服务器(shelveOffload 操作)

{
    "shelveOffload": null
}

响应

如果成功,此方法不会在响应正文中返回内容。

POST
/servers/{server_id}/action

Unshelve(恢复)已 Shelved 的服务器(unshelve 操作)

Unshelve,即恢复,已 Shelved 的服务器。

在请求正文中指定 unshelve 操作。

策略默认仅允许具有管理员角色或服务器所有者的用户执行此操作。云提供商可以通过 policy.json 文件更改这些权限。

先决条件

在不带参数的情况下 Unshelve 服务器要求其状态为 SHELVEDSHELVED_OFFLOADED

使用 availability_zone 和/或 host 参数 Unshelve 服务器要求其状态仅为 SHELVED_OFFLOADED,否则将返回 HTTP 409 conflict 响应。

如果服务器被锁定,您必须拥有管理员权限才能 Unshelve 该服务器。

microversion 2.91 开始,如果您拥有 PROJECT_ADMIN 权限,则可以将服务器 Unshelve 到指定的计算节点。此微版本还提供了将服务器固定到 availability_zone 和取消固定服务器(从任何 availability_zone)的功能。

当服务器固定到一个 availability_zone 时,服务器移动操作将使服务器保留在该 availability_zone 中。但是,当服务器未固定到任何 availability_zone 时,移动操作可以将服务器移动到不同 availability_zones 中的节点。

根据 unshelve 参数的行为将遵循下表。

启动

AZ (1)

Host (1)

结果

无 AZ

无 AZ 或 AZ=null

自由调度(2)

无 AZ

无 AZ 或 AZ=null

Host1

调度到 Host1。服务器保持未固定状态。

无 AZ

AZ=”AZ1”

调度到“AZ1”中的任何主机。服务器固定到“AZ1”。

无 AZ

AZ=”AZ1”

Host1

验证 Host1 是否在“AZ1”中,然后调度到 Host1,否则拒绝请求。服务器固定到“AZ1”。

AZ1

无 AZ

调度到“AZ1”中的任何主机。服务器保持固定到“AZ1”。

AZ1

AZ=null

自由调度(2)。服务器未固定。

AZ1

无 AZ

Host1

验证 Host1 是否在“AZ1”中,然后调度到 Host1,否则拒绝请求。服务器保持固定到“AZ1”。

AZ1

AZ=null

Host1

调度到 Host1。服务器未固定。

AZ1

AZ=”AZ2”

调度到“AZ2”中的任何主机。服务器固定到“AZ2”。

AZ1

AZ=”AZ2”

Host1

验证 Host1 是否在“AZ2”中,然后调度到 Host1,否则拒绝请求。服务器固定到“AZ2”。

  1. Unshelve 请求体参数

  2. 调度到任何可用主机。

异步后置条件

成功 Unshelve 服务器后,其状态将变为 ACTIVE。服务器将出现在计算节点上。

Shelved 镜像将从 API 调用返回的镜像列表中删除。

故障排除

如果服务器状态未变为 ACTIVE,则表示 unshelve 操作失败。请确保您满足先决条件并重新运行请求。如果请求再次失败,请调查是否有其他操作正在运行导致了竞态条件。

正常响应代码:202

错误响应代码:badRequest(400),unauthorized(401),forbidden(403),itemNotFound(404),conflict(409)

请求

注意

从 microversion 2.77 开始,允许的请求体 schema 为 {“unshelve”: null} 或 {“unshelve”: {“availability_zone”: <string>}}。不允许使用 {“unshelve”: {}} 的请求体。

注意

从 microversion 2.91 开始,允许的请求体 schema 为

  • {“unshelve”: null} (保持与先前微版本的兼容性)

或者

  • {“unshelve”: {“availability_zone”: <string>}} (Unshelve 并将服务器固定到 availability_zone)

  • {“unshelve”: {“availability_zone”: null}} (Unshelve 并取消服务器从任何 availability_zone 的固定)

  • {“unshelve”: {“host”: <fqdn>}}

  • {“unshelve”: {“availability_zone”: <string>, “host”: <fqdn>}}

  • {“unshelve”: {“availability_zone”: null, “host”: <fqdn>}}

其他均不允许,示例

  • {“unshelve”: {}}

  • {“unshelve”: {“host”: <fqdn>, “host”: <fqdn>}}

  • {“unshelve”: {“foo”: <string>}}

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

unshelve

body

none

操作。

availability_zone (可选)

body

字符串

可用区名称。指定可用区仅在服务器状态为 SHELVED_OFFLOADED 时才允许,否则将返回 HTTP 409 conflict 响应。

从 microversion 2.91 开始,"availability_zone":null 允许取消服务器从其固定的任何 availability_zone 的固定。

版本 2.77 中新增

host (可选)

body

字符串

目标主机名。默认情况下,指定目标主机仅允许 project_admin 执行,否则将返回 HTTP 403 forbidden 响应。

版本 2.91 中新增


示例:Unshelve 服务器(unshelve 操作)

{
    "unshelve": null
}

示例:Unshelve 服务器(unshelve 操作)(v2.77)

{
    "unshelve": {
        "availability_zone": "us-west"
    }
}

示例:Unshelve 服务器(unshelve 操作)(v2.91)

{
    "unshelve": {
        "host": "host01"
    }
}
{
    "unshelve": {
        "availability_zone": "nova",
        "host": "host01"
    }
}
{
    "unshelve": {
        "availability_zone": null,
        "host": "host01"
    }
}
{
    "unshelve": {
        "availability_zone": null
    }
}

Response

如果成功,此方法不会在响应正文中返回内容。

POST
/servers/{server_id}/action

在服务器中触发崩溃转储

版本 2.17 中添加。

在服务器中触发崩溃转储。

当服务器在底层出现异常行为时,获取内核级别的崩溃转储以进行进一步调试可能很有用。崩溃转储操作会强制进行一次崩溃转储,然后重启服务器。一旦服务器重新上线,您就可以在文件系统的某个位置找到一个内核崩溃转储文件。例如,对于 Ubuntu,您可以在 /var/crash 目录中找到它。

警告

此操作可能导致数据丢失。此外,在此操作期间及之后都可能丢失网络连接。

正常响应代码:202

错误响应代码:badRequest(400),unauthorized(401),forbidden(403),itemNotFound(404),conflict(409)

  • 如果服务器不支持崩溃转储(由于配置或后端不支持),则返回 400。

  • 如果服务器状态不允许执行崩溃转储操作,则返回 409。

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

trigger_crash_dump

body

none

指定应运行触发崩溃转储操作。

示例:触发崩溃转储:JSON 请求

{
    "trigger_crash_dump": null
}

响应

成功提交后没有正文返回。

POST
/servers/{server_id}/action

获取串行控制台(os-getSerialConsole 操作)(已弃用)

为服务器获取串行控制台。

警告

此操作在 microversion 2.5 中已弃用,由 microversion 2.6 中的 API Server Consoles 替代。新 API 提供了统一的 API 来处理不同类型的控制台。

在请求正文中指定 os-getSerialConsole 操作。

唯一支持的连接类型是 serialtype 参数应设置为 serial

正常响应代码:200

错误响应代码:badRequest(400)、unauthorized(401)、forbidden(403)、itemNotFound(404)、conflict(409)、notImplemented(501)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

os-getSerialConsole

body

对象

操作。

type

body

字符串

串行控制台的类型。唯一有效的值是 serial

示例:获取串行控制台(os-getSerialConsole 操作)

{
    "os-getSerialConsole": {
        "type": "serial"
    }
}

响应

名称

入参

类型

描述

console

body

对象

远程控制台对象。

type

body

字符串

串行控制台的类型。唯一有效的值是 serial

url

body

字符串

用于连接到串行控制台的 URL。

示例:获取串行控制台(os-getSerialConsole 操作)

{
    "console": {
        "type": "serial",
        "url":"ws://127.0.0.1:6083/?token=f9906a48-b71e-4f18-baca-c987da3ebdb3"
    }
}
POST
/servers/{server_id}/action

获取 SPICE 控制台(os-getSPICEConsole 操作)(已弃用)

为服务器获取 SPICE 控制台。

警告

此操作在 microversion 2.5 中已弃用,由 microversion 2.6 中的 API Server Consoles 替代。新 API 提供了统一的 API 来处理不同类型的控制台。

在请求正文中指定 os-getSPICEConsole 操作。

唯一支持的连接类型是 spice-html5type 参数应设置为 spice-html5

正常响应代码:200

错误响应代码:badRequest(400)、unauthorized(401)、forbidden(403)、itemNotFound(404)、conflict(409)、notImplemented(501)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

os-getSPICEConsole

body

对象

操作。

type

body

字符串

SPICE 控制台的类型。唯一有效的值是 spice-html5

示例:获取 SPICE 控制台(os-getSPICEConsole 操作)

{
    "os-getSPICEConsole": {
        "type": "spice-html5"
    }
}

响应

名称

入参

类型

描述

console

body

对象

远程控制台对象。

type

body

字符串

SPICE 控制台的类型。唯一有效的值是 spice-html5

url

body

字符串

用于连接到 SPICE 控制台的 URL。

示例:获取 SPICE 控制台(os-getSPICEConsole 操作)

{
    "console": {
        "type": "spice-html5",
        "url": "http://127.0.0.1:6082/spice_auto.html?token=a30e5d08-6a20-4043-958f-0852440c6af4"
    }
}
POST
/servers/{server_id}/action

获取 VNC 控制台(os-getVNCConsole 操作)(已弃用)

为服务器获取 VNC 控制台。

警告

此操作在 microversion 2.5 中已弃用,由 microversion 2.6 中的 API Server Consoles 替代。新 API 提供了统一的 API 来处理不同类型的控制台。

在请求正文中指定 os-getVNCConsole 操作。

正常响应代码:200

错误响应代码:badRequest(400)、unauthorized(401)、forbidden(403)、itemNotFound(404)、conflict(409)、notImplemented(501)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

os-getVNCConsole

body

对象

操作。

type

body

字符串

VNC 控制台的类型。唯一有效的值是 novnc

示例:获取 VNC 控制台(os-getVNCConsole 操作)

{
    "os-getVNCConsole": {
        "type": "novnc"
    }
}

响应

名称

入参

类型

描述

console

body

对象

远程控制台对象。

type

body

字符串

VNC 控制台的类型。唯一有效的值是 novnc

url

body

字符串

用于连接到 VNC 控制台的 URL。

示例:获取 VNC 控制台(os-getVNCConsole 操作)

{
    "console": {
        "type": "novnc",
        "url": "http://127.0.0.1:6080/vnc_auto.html?path=%3Ftoken%3Ddaae261f-474d-4cae-8f6a-1865278ed8c9"
    }
}

服务器 - 执行管理操作(servers, action)

允许管理员对服务器执行操作。在请求正文中指定操作。

您可以将网络信息注入服务器、迁移服务器、实时迁移服务器、重置服务器网络、重置服务器状态以及从故障主机迁移服务器到新主机。

POST
/servers/{server_id}/action

注入网络信息(injectNetworkInfo 操作)

将网络信息注入服务器。

在请求正文中指定 injectNetworkInfo 操作。

策略默认仅允许具有管理员角色的用户执行此操作。云提供商可以通过 policy.json 文件更改这些权限。

警告

此 API 的支持非常有限,有关更多信息,请参阅 nova virt support matrix

正常响应代码:202

错误响应代码:unauthorized(401)、forbidden(403)、itemNotFound(404)、conflict(409)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

injectNetworkInfo

body

none

操作。

示例:注入网络信息(injectNetworkInfo 操作)

{
    "injectNetworkInfo": null
}

响应

如果成功,此方法不会在响应正文中返回内容。

POST
/servers/{server_id}/action

迁移服务器(migrate 操作)

将服务器迁移到另一台主机。

在请求正文中指定 migrate 操作。

在 microversion 2.55 之前,由调度器选择主机。从 microversion 2.56 开始,提供了 host 参数来指定目标主机。如果您指定 null 或不指定此参数,则由调度器选择主机。

异步后置条件

成功迁移的服务器将显示 VERIFY_RESIZE 状态和 finished 迁移状态。如果云环境已将 Compute 服务的 resize_confirm_window 选项配置为正值,则 Compute 服务将在配置的间隔后自动确认迁移操作。

此操作有两种不同的策略,取决于是否设置了 host 参数。两者的默认设置都仅允许管理员执行此操作。云提供商可以通过 policy.json 文件更改这些权限。

正常响应代码:202

错误响应代码:badRequest(400), unauthorized(401), forbidden(403) itemNotFound(404), conflict(409)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

migrate

body

对象

冷迁移服务器的操作。此参数可以为 null。在 microversion 2.55 之前,此参数应为 null

host (可选)

body

字符串

要迁移服务器的主机。如果您指定 null 或不指定此参数,则由调度器选择主机。

版本 2.56 中新增

示例:迁移服务器(migrate 操作)(v2.1)

{
    "migrate": null
}

示例:迁移服务器(migrate 操作)(v2.56)

{
    "migrate": {
        "host": "host1"
    }
}

响应

如果成功,此方法不会在响应正文中返回内容。

POST
/servers/{server_id}/action

实时迁移服务器(os-migrateLive 操作)

在不重启的情况下将服务器实时迁移到新主机。

在请求正文中指定 os-migrateLive 操作。

使用 host 参数指定目标主机。如果此参数为 null,则由调度器选择主机。如果调度的主机不适合进行迁移,调度器将尝试最多 migrate_max_retries 次重新调度尝试。

从 API 版本 2.25 开始,block_migration 参数可以设置为 auto,以便 nova 在实时迁移期间决定 block_migration 的值。

策略默认仅允许具有管理员角色的用户执行此操作。云提供商可以通过 policy.json 文件更改这些权限。

从 REST API 版本 2.34 开始,预实时迁移检查是异步进行的,这些检查的结果可在 instance-actions 中找到。Nova 会立即响应,不会返回任何预实时迁移检查的结果。如果实时迁移检查失败,实例不会立即变为 ERROR 状态。

从 API 版本 2.68 开始,不再接受 force 参数,因为对于具有复杂资源分配的服务器,该参数无法有意义地支持。

正常响应代码:202

错误响应代码:badRequest(400), unauthorized(401), forbidden(403) itemNotFound(404), conflict(409)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

os-migrateLive

body

对象

操作。

host

body

字符串

要将服务器迁移到的主机。如果此参数为 None,则由调度器选择主机。

警告

在 microversion 2.30 之前,指定主机将绕过调度器的验证,这可能导致实例未能实际迁移到指定主机,或导致主机过载。建议要么不指定主机,让调度器选择一个,要么指定一个主机且 microversion >= 2.30 且不设置 force=True

block_migration

body

布尔值

设置为 True 以使用块迁移迁移本地磁盘。如果源主机或目标主机使用共享存储并将此值设置为 True,则实时迁移将失败。

可用至版本 2.24

block_migration

body

字符串

使用块迁移迁移本地磁盘。设置为 auto,这意味着 nova 将检测源主机和目标主机是否为共享存储。如果它们是共享存储,则实时迁移将不是块迁移。否则将执行块迁移。设置为 True,表示当源主机或目标主机使用共享存储时,请求将失败。设置为 False 表示当源主机和目标主机不在共享存储上时,请求将失败。

版本 2.25 中新增

disk_over_commit

body

布尔值

设置为 True 可在检查目标主机可用磁盘空间时启用过度提交。设置为 False 可禁用过度提交。此设置仅影响 libvirt virt 驱动程序。

可用至版本 2.25

force (可选)

body

布尔值

通过不验证调度器提供的目标主机来强制进行实时迁移。

警告

这可能导致实例未能实际实时迁移到指定主机。建议要么不指定主机,让调度器选择一个,要么指定一个主机且不设置 force=True

版本 2.30 中新增

可用至版本 2.67

示例:实时迁移服务器(os-migrateLive 操作)

{
    "os-migrateLive": {
        "host": "01c0cadef72d47e28a672a76060d492c",
        "block_migration": "auto",
        "force": false
    }
}

响应

如果成功,此方法不会在响应正文中返回内容。

POST
/servers/{server_id}/action

重置服务器网络(resetNetwork 操作)(已弃用)

重置服务器上的网络。

警告

此操作仅由 XenAPI virt 驱动程序支持,该驱动程序在 20.0.0 (Train) 版本中已弃用,并在 22.0.0 (Victoria) 版本中移除。在新应用程序中应避免使用此操作。它在 23.0.0 (Wallaby) 版本中已被移除。

在请求正文中指定 resetNetwork 操作。

策略默认仅允许具有管理员角色的用户执行此操作。云提供商可以通过 policy.json 文件更改这些权限。

正常响应代码:202

错误响应代码:unauthorized(401), forbidden(403), itemNotFound(404), conflict(409), gone(410)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

resetNetwork

body

none

操作。

示例:重置服务器网络(resetNetwork 操作)

{
    "resetNetwork": null
}

响应

如果成功,此方法不会在响应正文中返回内容。

POST
/servers/{server_id}/action

重置服务器状态(os-resetState 操作)

重置服务器的状态。

在请求正文中指定 os-resetState 操作和 state

策略默认仅允许具有管理员角色的用户执行此操作。云提供商可以通过 policy.json 文件更改这些权限。

正常响应代码:202

错误响应代码:unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

os-resetState

body

对象

操作。

os-resetState.state

body

字符串

要设置的服务器状态,activeerror 是有效的。

示例:重置服务器状态(os-resetState 操作)

{
    "os-resetState": {
        "state": "active"
    }
}

响应

如果成功,此方法不会在响应正文中返回内容。

POST
/servers/{server_id}/action

疏散服务器(evacuate 操作)

将服务器从故障主机疏散到新主机。

  • 在请求正文中指定 evacuate 操作。

  • 在请求正文中,如果设置了 onSharedStorage,则不要设置 adminPass

  • 目标主机不应与实例主机相同。

先决条件

  • 故障主机必须已被隔离且不再运行原始服务器。

  • 故障主机必须报告为宕机或使用 Update Forced Down 标记为强制宕机。

从 API 版本 2.68 开始,不再接受 force 参数,因为对于具有复杂资源分配的服务器,该参数无法有意义地支持。

从 API 版本 2.95 开始,服务器将在目标主机上保持停止状态,直到手动启动。如果服务器在疏散前在目标主机上的电源状态应与其在源主机上的状态相同,则可以使用较旧的微版本。

正常响应代码:200

错误响应代码:badRequest(400),unauthorized(401),forbidden(403),itemNotFound(404),conflict(409)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

evacuate

body

对象

将服务器疏散到另一台主机的操作。

host (可选)

body

字符串

要将服务器疏散到的主机的名称或 ID。如果省略此参数,则由调度器选择主机。

警告

在 microversion 2.29 之前,指定主机将绕过调度器的验证,这可能导致实例未能实际疏散到指定主机,或导致主机过载。建议要么不指定主机,让调度器选择一个,要么指定一个主机且 microversion >= 2.29 且不设置 force=True

adminPass(可选)

body

字符串

用于访问疏散服务器的管理密码。如果您省略此参数,该操作将生成新密码。在 API 版本 2.13 之前,如果 onSharedStorage 设置为 True 并且指定了此参数,则会引发错误。

onSharedStorage

body

布尔值

位于共享存储上的服务器。

注意

从 2.14 版本开始,Nova 会自动检测服务器是否位于共享存储上。因此,此参数已被移除。

可用至版本 2.13

force (可选)

body

布尔值

通过不验证调度器提供的目标主机来强制进行疏散。

警告

这可能导致实例未能实际疏散到指定主机。建议要么不指定主机,让调度器选择一个,要么指定一个主机且不设置 force=True

此外,在使用如 ironic 等集群虚拟机管理程序驱动程序管理的实例进行疏散时,不应指定此参数,因为您无法指定节点,计算服务将随机选择一个节点,该节点可能无法容纳实例。

版本 2.29 中新增

可用至版本 2.67


示例:疏散服务器(evacuate 操作)

{
    "evacuate": {
        "host": "b419863b7d814906a68fb31703c0dbd6",
        "adminPass": "MySecretPass",
        "onSharedStorage": "False"
    }
}

响应

名称

入参

类型

描述

adminPass(可选)

body

字符串

用于访问疏散实例的管理密码。如果您将 enable_instance_password 配置选项设置为 False,API 将不会在响应中返回 adminPass 字段。

可用至版本 2.13

注意

API 不会为 Microversion 2.14 或更高版本返回任何响应。

示例:疏散服务器(evacuate 操作)

{
    "adminPass": "MySecretPass"
}

服务器控制台

管理服务器控制台。

POST
/servers/{server_id}/remote-consoles

创建控制台

注意

需要 Microversion 2.6 或更高版本才能使用此 API。

该 API 提供了一个统一的请求来创建远程控制台。用户可以从此 API 获取一个 URL 来连接控制台。该 URL 包含用于获取控制台访问权限的令牌。服务器可能支持不同的控制台协议。要使用特定协议(如 VNC)返回远程控制台,请将 protocol 参数设置为 vnc

正常响应代码:200

错误响应代码:badRequest(400)、unauthorized(401)、forbidden(403)、itemNotFound(404)、conflict(409)、notImplemented(501)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

remote_console

body

对象

远程控制台对象。

协议

body

字符串

远程控制台的协议。有效值为 vncspicerdpserialmks。协议 mks 从 Microversion 2.8 开始添加。协议 rdp 需要 Hyper-V 驱动程序,该驱动程序在 29.0.0 (Caracal) 版本中已移除。

type

body

字符串

远程控制台的类型。有效值为 novncrdp-html5spice-html5spice-directserialwebmks。类型 webmks 在 Microversion 2.8 中添加,类型 spice-direct 在 Microversion 2.99 中添加。类型 rdp-html5 需要 Hyper-V 驱动程序,该驱动程序在 29.0.0 (Caracal) 版本中已移除。

示例:获取远程 VNC 控制台

{
    "remote_console": {
        "protocol": "vnc",
        "type": "novnc"
    }
}

示例:获取远程 spice-direct 控制台

``spice-direct`` 控制台是在 microversion 2.99 中添加的。

{
    "remote_console": {
        "protocol": "spice",
        "type": "spice-direct"
    }
}

响应

名称

入参

类型

描述

remote_console

body

对象

远程控制台对象。

协议

body

字符串

远程控制台的协议。有效值为 vncspicerdpserialmks。协议 mks 从 Microversion 2.8 开始添加。协议 rdp 需要 Hyper-V 驱动程序,该驱动程序在 29.0.0 (Caracal) 版本中已移除。

type

body

字符串

远程控制台的类型。有效值为 novncrdp-html5spice-html5spice-directserialwebmks。类型 webmks 在 Microversion 2.8 中添加,类型 spice-direct 在 Microversion 2.99 中添加。类型 rdp-html5 需要 Hyper-V 驱动程序,该驱动程序在 29.0.0 (Caracal) 版本中已移除。

url

body

字符串

用于连接控制台的 URL。

示例:获取远程 VNC 控制台

{
    "remote_console": {
        "protocol": "vnc",
        "type": "novnc",
        "url": "http://example.com:6080/vnc_auto.html?path=%3Ftoken%3Db60bcfc3-5fd4-4d21-986c-e83379107819"
    }
}

示例:获取远程 spice-direct 控制台

``spice-direct`` 控制台是在 microversion 2.99 中添加的。

{
    "remote_console": {
        "protocol": "spice",
        "type": "spice-direct",
        "url": "http://127.0.0.1:13002/nova?token=aeabd4ec-3acb-4898-9130-10521ccbe5f3"
    }
}
GET
/os-console-auth-tokens/{console_token}

显示控制台连接信息

给定服务器的控制台身份验证令牌,显示相关的连接信息。

Nova HyperV 驱动程序已被移除,因此对 RDP 控制台连接信息的请求将始终返回 http 400 错误。从 microversion 2.31 开始,它适用于所有其他控制台类型。

正常响应代码:200

错误响应代码:badRequest(400)、unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

console_token

路径

字符串

控制台身份验证令牌。

响应

名称

入参

类型

描述

console

body

对象

控制台对象。

instance_uuid

body

字符串

服务器的 UUID。

host (可选)

body

字符串

主机名或 ID。

port

body

整数

端口号。

tls_port (可选)

body

整数

需要 TLS 连接的端口的端口号。

internal_access_path (可选)

body

字符串

表示内部访问路径的 ID。

示例:显示控制台身份验证令牌

{
    "console": {
        "instance_uuid": "b48316c5-71e8-45e4-9884-6c78055b9b13",
        "host": "localhost",
        "port": 5900,
        "internal_access_path": "51af38c3-555e-4884-a314-6c8cdde37444"
    }
}

示例:spice-direct 控制台的控制台连接信息

``spice-direct`` 控制台是在 microversion 2.99 中添加的。

{
    "console": {
        "host": "fakespiceconsole.com",
        "instance_uuid": "16802173-4e67-44f9-ba84-6d99080b81b5",
        "internal_access_path": null,
        "port": 6969,
        "tls_port": 6970
    }
}

服务器安全组(servers, os-security-groups)

列出服务器的安全组。

GET
/servers/{server_id}/os-security-groups

按服务器列出安全组

列出服务器的安全组。

正常响应代码:200

错误响应代码:unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

响应

名称

入参

类型

描述

security_groups

body

数组

一个或多个安全组对象。

description

body

字符串

安全组描述。

id

body

字符串

安全组 ID。

name

body

字符串

安全组名称。

rules

body

数组

安全组规则列表。

tenant_id

body

字符串

多租户云中的租户 UUID。

示例:按服务器列出安全组

{
    "security_groups": [
        {
            "description": "default",
            "id": "4e469db4-3b60-43c7-8dfa-2c60e2f27075",
            "name": "default",
            "rules": [],
            "tenant_id": "6f70656e737461636b20342065766572"
        }
    ]
}

服务器诊断(servers, diagnostics)

显示服务器的使用情况数据。

GET
/servers/{server_id}/diagnostics

显示服务器诊断

显示服务器的基本使用情况数据。

策略默认仅允许具有管理员角色的用户。云提供商可以通过 policy.json 文件更改这些权限。

正常响应代码:200

错误响应代码:unauthorized(401), forbidden(403), notfound(404), conflict(409), notimplemented(501)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

响应

从 **microversion 2.48** 开始,所有 virt 驱动程序的诊断响应格式均已标准化。响应仅应被视为调试接口,不应被编程工具依赖。所有响应字段均列于下方。如果 virt 驱动程序无法提供特定字段,则该字段将在响应中报告为 None

名称

入参

类型

描述

config_drive

body

布尔值

指示是否为此服务器使用了配置驱动器。

版本 2.48 中新增

state

body

字符串

一个字符串枚举,表示 VM 的当前状态。可能的值为

  • 待定

  • running

  • paused

  • shutdown

  • crashed

  • suspended

版本 2.48 中新增

driver

body

字符串

VM 运行的驱动程序。可能的值为

  • libvirt

  • xenapi

  • vmwareapi

  • ironic

版本 2.48 中新增

管理程序

body

字符串

VM 运行的虚拟机管理程序。libvirt 驱动程序的示例可能为:qemukvmxen

版本 2.48 中新增

hypervisor_os

body

字符串

虚拟机管理程序操作系统。

版本 2.48 中新增

uptime

body

整数

VM 运行的秒数。

版本 2.48 中新增

num_cpus

body

整数

vCPU 数量。

版本 2.48 中新增

num_disks

body

整数

磁盘数量。

版本 2.48 中新增

num_nics

body

整数

vNIC 数量。

版本 2.48 中新增

memory_details

body

数组

包含 VM 内存使用情况信息的字典。字典中包含以下字段

  • maximum - 分配给 VM 的内存量(以 MiB 为单位)(整数)

  • used - 当前被访客操作系统及其应用程序使用的内存量(以 MiB 为单位)(整数)

版本 2.48 中新增

cpu_details

body

数组

包含 VM CPU 详细信息的字典列表。每个字典中包含以下字段

  • id - CPU 的 ID(整数)

  • time - CPU 时间(纳秒)(整数)

  • utilisation - CPU 利用率(百分比)(整数)

版本 2.48 中新增

disk_details

body

数组

包含 VM 磁盘详细信息的字典列表。每个字典中包含以下字段

  • read_bytes - 磁盘读取字节数(整数)

  • read_requests - 读取请求数(整数)

  • write_bytes - 磁盘写入字节数(整数)

  • write_requests - 写入请求数(整数)

  • errors_count - 磁盘错误数(整数)

版本 2.48 中新增

nic_details

body

数组

包含 VM NIC 详细信息的字典列表。每个字典中包含以下字段

  • mac_address - 接口的 MAC 地址(字符串)

  • rx_octets - 接收的字节数(整数)

  • rx_errors - 接收错误数(整数)

  • rx_drop - 丢弃的接收包数(整数)

  • rx_packets - 接收的包数(整数)

  • rx_rate - 接收速率(字节/秒)(整数)

  • tx_octets - 发送的字节数(整数)

  • tx_errors - 发送错误数(整数)

  • tx_drop - 丢弃的发送包数(整数)

  • tx_packets - 发送的包数(整数)

  • tx_rate - 发送速率(字节/秒)(整数)

版本 2.48 中新增

示例:服务器诊断(2.48)

{
    "config_drive": true,
    "cpu_details": [
        {
            "id": 0,
            "time": 17300000000,
            "utilisation": 15
        }
    ],
    "disk_details": [
        {
            "errors_count": 1,
            "read_bytes": 262144,
            "read_requests": 112,
            "write_bytes": 5778432,
            "write_requests": 488
        }
    ],
    "driver": "libvirt",
    "hypervisor": "kvm",
    "hypervisor_os": "ubuntu",
    "memory_details": {
        "maximum": 524288,
        "used": 0
    },
    "nic_details": [
        {
            "mac_address": "01:23:45:67:89:ab",
            "rx_drop": 200,
            "rx_errors": 100,
            "rx_octets": 2070139,
            "rx_packets": 26701,
            "rx_rate": 300,
            "tx_drop": 500,
            "tx_errors": 400,
            "tx_octets": 140208,
            "tx_packets": 662,
            "tx_rate": 600
        }
    ],
    "num_cpus": 1,
    "num_disks": 1,
    "num_nics": 1,
    "state": "running",
    "uptime": 46664
}

警告

在 **microversion 2.48** 之前,诊断的响应格式并未明确定义。每个虚拟机管理程序都有自己的格式。

示例:服务器诊断(2.1)

以下是基于 libvirt 的实例的诊断示例。返回值单位特定于虚拟机管理程序,但在这种情况下,vnet1_rx* 和 vnet1_tx* 的单位是字节。

{
    "cpu0_time": 17300000000,
    "memory": 524288,
    "vda_errors": -1,
    "vda_read": 262144,
    "vda_read_req": 112,
    "vda_write": 5778432,
    "vda_write_req": 488,
    "vnet1_rx": 2070139,
    "vnet1_rx_drop": 0,
    "vnet1_rx_errors": 0,
    "vnet1_rx_packets": 26701,
    "vnet1_tx": 140208,
    "vnet1_tx_drop": 0,
    "vnet1_tx_errors": 0,
    "vnet1_tx_packets": 662
}

服务器 IP(servers, ips)

列出实例的 IP 地址并显示 IP 地址的详细信息。

GET
/servers/{server_id}/ips

列出 IP

列出分配给实例的 IP 地址。

策略默认仅允许具有管理员角色或服务器所有者的用户执行此操作。云提供商可以通过 policy.json 文件更改这些权限。

正常响应代码:200

错误响应代码:unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

响应

名称

入参

类型

描述

addresses

body

对象

服务器的地址信息。

network_label

body

数组

IP 地址和 IP 版本对的列表。network_label 代表网络名称,例如 publicprivate

addr

body

字符串

IP 地址。

版本

body

整数

与服务器关联的地址的 IP 版本。

示例:列出 IP

{
    "addresses": {
        "private": [
            {
                "addr": "192.168.1.30",
                "version": 4
            }
        ]
    }
}
GET
/servers/{server_id}/ips/{network_label}

显示 IP 详细信息

显示服务器实例某个网络标签的 IP 地址详细信息。

策略默认仅允许具有管理员角色或服务器所有者的用户执行此操作。云提供商可以通过 policy.json 文件更改这些权限。

正常响应代码:200

错误响应代码:unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

network_label

路径

字符串

网络标签,例如 publicprivate

响应

名称

入参

类型

描述

network_label

body

数组

IP 地址和 IP 版本对的列表。network_label 代表网络名称,例如 publicprivate

addr

body

字符串

IP 地址。

版本

body

整数

与服务器关联的地址的 IP 版本。

示例:显示 IP 详细信息

{
    "private": [
        {
            "addr": "192.168.1.30",
            "version": 4
        }
    ]
}

服务器元数据(servers, metadata)

列出元数据、创建或替换一个或多个元数据项,并更新服务器的一个或多个元数据项。

显示详细信息、创建或替换、并按键更新服务器的一个或多个元数据项。

GET
/servers/{server_id}/metadata

列出所有元数据

列出服务器的所有元数据。

策略默认仅允许具有管理员角色或服务器所有者的用户执行此操作。云提供商可以通过 policy.json 文件更改这些权限。

正常响应代码:200

错误响应代码:unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

响应

名称

入参

类型

描述

metadata

body

对象

元数据键值对。每个元数据键值对的最大大小为 255 字节。

示例:列出所有元数据

{
    "metadata": {
        "foo": "Foo Value"
    }
}
POST
/servers/{server_id}/metadata

创建或更新元数据项

为服务器创建或更新一个或多个元数据项。

创建服务器中尚不存在的任何元数据项,替换与键匹配的现有元数据项。不修改请求中未包含的项。

策略默认仅允许具有管理员角色或服务器所有者的用户执行此操作。云提供商可以通过 policy.json 文件更改这些权限。

正常响应代码:200

错误响应代码:badRequest(400),unauthorized(401),forbidden(403),itemNotFound(404),conflict(409)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

metadata

body

对象

元数据键值对。每个元数据键值对的最大大小为 255 字节。

示例:更新元数据项

{
    "metadata": {
        "foo": "Foo Value"
    }
}

响应

名称

入参

类型

描述

metadata

body

对象

元数据键值对。每个元数据键值对的最大大小为 255 字节。

示例:更新元数据项

{
    "metadata": {
        "foo": "Foo Value"
    }
}
PUT
/servers/{server_id}/metadata

替换元数据项

替换服务器的一个或多个元数据项。

创建服务器中尚不存在的任何元数据项。删除并完全替换服务器中已存在的任何元数据项,替换为请求中的元数据项。

策略默认仅允许具有管理员角色或服务器所有者的用户执行此操作。云提供商可以通过 policy.json 文件更改这些权限。

正常响应代码:200

错误响应代码:badRequest(400),unauthorized(401),forbidden(403),itemNotFound(404),conflict(409)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

metadata

body

对象

元数据键值对。每个元数据键值对的最大大小为 255 字节。

示例:创建或替换元数据项

{
    "metadata": {
        "foo": "Foo Value"
    }
}

响应

名称

入参

类型

描述

metadata

body

对象

元数据键值对。每个元数据键值对的最大大小为 255 字节。

示例:创建或替换元数据项

{
    "metadata": {
        "foo": "Foo Value"
    }
}
GET
/servers/{server_id}/metadata/{key}

显示元数据项详细信息

按键显示服务器某个元数据项的详细信息。

策略默认仅允许具有管理员角色或服务器所有者的用户执行此操作。云提供商可以通过 policy.json 文件更改这些权限。

正常响应代码:200

错误响应代码:unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

key

路径

字符串

元数据项的键,作为字符串。最大长度为 255 个字符。

响应

名称

入参

类型

描述

meta

body

对象

元数据键值对。每个元数据键值对的最大大小为 255 字节。

示例:显示元数据项详细信息

{
    "meta": {
        "foo": "Foo Value"
    }
}
PUT
/servers/{server_id}/metadata/{key}

创建或更新元数据项

按键创建或替换服务器的元数据项。

创建服务器中尚不存在的元数据项。用请求中的元数据项替换与键匹配的现有元数据项。

策略默认仅允许具有管理员角色或服务器所有者的用户执行此操作。云提供商可以通过 policy.json 文件更改这些权限。

正常响应代码:200

错误响应代码:badRequest(400),unauthorized(401),forbidden(403),itemNotFound(404),conflict(409)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

key

路径

字符串

元数据项的键,作为字符串。最大长度为 255 个字符。

示例:创建或更新元数据项

{
    "meta": {
        "foo": "Bar Value"
    }
}

响应

名称

入参

类型

描述

meta

body

对象

元数据键值对。每个元数据键值对的最大大小为 255 字节。

示例:创建或更新元数据项

{
    "meta": {
        "foo": "Foo Value"
    }
}
DELETE
/servers/{server_id}/metadata/{key}

删除元数据项

从服务器删除元数据项(按键)。

策略默认仅允许具有管理员角色或服务器所有者的用户执行此操作。云提供商可以通过 policy.json 文件更改这些权限。

正常响应代码:204

错误响应代码:unauthorized(401)、forbidden(403)、itemNotFound(404)、conflict(409)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

key

路径

字符串

元数据项的键,作为字符串。最大长度为 255 个字符。

响应

如果成功,此方法不会在响应正文中返回内容。

服务器操作(servers, os-instance-actions)

列出服务器的操作及其详细信息。

GET
/servers/{server_id}/os-instance-actions

列出服务器的操作

列出服务器的操作。

对于 2.21 及之后的微版本请求,可以返回已删除实例的操作信息。

策略默认仅允许具有管理员角色或服务器所有者的用户执行此操作。云提供商可以通过 policy.json 文件更改这些权限。

正常响应代码:200

错误响应代码:badRequest(400)、unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

limit (可选)

查询

整数

请求分页的项目。返回的项目数最多为 limit 值。使用 limit 参数进行初始限制请求,并使用响应中的最后一条可见项目作为后续限制请求的 marker 参数值。

版本 2.58 中新增

marker (可选)

查询

字符串

最后可见的实例操作的 request_id。使用 limit 参数进行初始限制请求,并使用响应中的最后一条可见项目作为后续限制请求的 marker 参数值。

版本 2.58 中新增

changes-since(可选)

查询

字符串

按时间戳过滤响应,表示实例操作最后更改的时间。

日期和时间戳格式为 ISO 8601

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

如果包含 ±hh:mm 值,则返回时区作为 UTC 的偏移量。例如,2015-08-27T09:49:58-05:00。如果省略时区,则假定为 UTC 时区。当同时指定 changes-sincechanges-before 时,changes-since 的值必须早于或等于 changes-before 的值,否则 API 将返回 400。

版本 2.58 中新增

changes-before(可选)

查询

字符串

按时间戳过滤响应,表示实例操作最后更改的时间。返回在指定日期和时间之前或等于该日期和时间更改的实例。

日期和时间戳格式为 ISO 8601

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

如果包含 ±hh:mm 值,则返回时区作为 UTC 的偏移量。例如,2015-08-27T09:49:58-05:00。如果省略时区,则假定为 UTC 时区。当同时指定 changes-sincechanges-before 时,changes-before 的值必须晚于或等于 changes-since 的值,否则 API 将返回 400。

版本 2.66 新增

响应

名称

入参

类型

描述

instanceActions

body

数组

按创建时间降序排列的给定实例的操作列表。

动作

body

字符串

操作的名称。

instance_uuid

body

字符串

服务器的 UUID。

message

body

字符串

操作失败时的相关错误消息。

project_id

body

字符串

启动服务器操作的项目 ID。对于 nova-manage 启动的操作,此值可能为 null

request_id

body

字符串

执行此操作的 API 时生成的请求 ID。

start_time

body

字符串

操作开始的日期和时间。日期和时间戳格式为 ISO 8601

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

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

user_id

body

字符串

启动服务器操作的用户 ID。对于 nova-manage 启动的操作,此值可能为 null

updated_at

body

字符串

实例操作或实例操作的事件更新的日期和时间。日期和时间戳格式为 ISO 8601

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

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

版本 2.58 中新增

links (可选)

body

数组

与实例操作相关的链接。当分页且有更多数据可用时,会返回此参数。有关更多信息,请参阅 Paginated collections

版本 2.58 中新增

示例:列出服务器的操作:JSON 响应

{
    "instanceActions": [
        {
            "action": "stop",
            "instance_uuid": "fcd19ef2-b593-40b1-90a5-fc31063fa95c",
            "message": null,
            "project_id": "6f70656e737461636b20342065766572",
            "request_id": "req-f8a59f03-76dc-412f-92c2-21f8612be728",
            "start_time": "2018-04-25T01:26:29.092892",
            "user_id": "admin"
        },
        {
            "action": "create",
            "instance_uuid": "fcd19ef2-b593-40b1-90a5-fc31063fa95c",
            "message": null,
            "project_id": "6f70656e737461636b20342065766572",
            "request_id": "req-50189019-626d-47fb-b944-b8342af09679",
            "start_time": "2018-04-25T01:26:25.877278",
            "user_id": "admin"
        }
    ]
}

示例:列出带链接的服务器操作(v2.58)

{
    "instanceActions": [
        {
            "action": "stop",
            "instance_uuid": "ca3d3be5-1a40-427f-9515-f5e181f479d0",
            "message": null,
            "project_id": "6f70656e737461636b20342065766572",
            "request_id": "req-4dbefbb7-d743-4d42-b0a1-a79cbe256138",
            "start_time": "2018-04-25T01:26:28.909887",
            "updated_at": "2018-04-25T01:26:29.400606",
            "user_id": "admin"
        }
    ],
    "links": [
        {
            "href": "http://openstack.example.com/v2.1/6f70656e737461636b20342065766572/servers/ca3d3be5-1a40-427f-9515-f5e181f479d0/os-instance-actions?limit=1&marker=req-4dbefbb7-d743-4d42-b0a1-a79cbe256138",
            "rel": "next"
        }
    ]
}
GET
/servers/{server_id}/os-instance-actions/{request_id}

显示服务器操作详细信息

显示服务器操作的详细信息。

对于 2.21 之后的微版本请求,可以返回已删除实例的操作详细信息。

策略默认仅允许具有管理员角色或服务器所有者的用户执行此操作。云提供商可以通过 policy.json 文件更改这些权限。

正常响应代码:200

错误响应代码:unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

request_id

路径

字符串

请求 ID。

响应

名称

入参

类型

描述

instanceAction

body

对象

实例操作对象。

动作

body

字符串

操作的名称。

instance_uuid

body

字符串

服务器的 UUID。

message

body

字符串

操作失败时的相关错误消息。

project_id

body

字符串

启动服务器操作的项目 ID。对于 nova-manage 启动的操作,此值可能为 null

request_id

body

字符串

执行此操作的 API 时生成的请求 ID。

start_time

body

字符串

操作开始的日期和时间。日期和时间戳格式为 ISO 8601

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

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

user_id

body

字符串

启动服务器操作的用户 ID。对于 nova-manage 启动的操作,此值可能为 null

events (可选)

body

数组

此操作中发生的事件,按创建时间降序排列。

策略默认仅允许管理员查看实例操作事件信息。云提供商可以通过 policy.json 文件更改这些权限。

可用至版本 2.50

events

body

数组

此操作中发生的事件,按创建时间降序排列。

策略默认仅允许管理员或服务器所有者查看实例操作事件信息。云提供商可以通过 policy.json 文件更改这些权限。

版本 2.51 中新增

events.event

body

字符串

事件的名称。

events.start_time

body

字符串

事件开始的日期和时间。日期和时间戳格式为 ISO 8601

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

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

events.finish_time

body

字符串

事件完成的日期和时间。日期和时间戳格式为 ISO 8601

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

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

events.result

body

字符串

事件的结果。

events.traceback

body

字符串

如果事件中发生错误,则为堆栈跟踪。

策略默认仅允许管理员查看实例操作事件的堆栈跟踪。云提供商可以通过 policy.json 文件更改这些权限。

events.hostId

body

字符串

一个经过混淆处理的哈希主机 ID 字符串,如果事件没有主机,则为空字符串。这是一个哈希值,因此不会真正像主机名,并且是使用项目 ID 中的数据进行哈希处理的,因此从两个不同的项目 ID 看到的同一物理主机将是不同的。当在同一项目中需要确定两个事件是否发生在同一物理主机或不同物理主机上时,此功能很有用。

版本 2.62 中新增

events.host (可选)

body

字符串

事件发生所在主机的名称。

策略默认仅允许管理员查看实例操作事件主机。云提供商可以通过 policy.json 文件更改这些权限。

版本 2.62 中新增

events.details

body

字符串

事件的详细信息。可能为 null

版本 2.84 中新增

updated_at

body

字符串

实例操作或实例操作的事件更新的日期和时间。日期和时间戳格式为 ISO 8601

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

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

版本 2.58 中新增

示例:显示服务器操作详细信息(管理员)(v2.62)

{
    "instanceAction": {
        "action": "stop",
        "events": [
            {
                "event": "compute_stop_instance",
                "finish_time": "2018-04-25T01:26:36.790544",
                "host": "compute",
                "hostId": "2091634baaccdc4c5a1d57069c833e402921df696b7f970791b12ec6",
                "result": "Success",
                "start_time": "2018-04-25T01:26:36.539271",
                "traceback": null
            }
        ],
        "instance_uuid": "4bf3473b-d550-4b65-9409-292d44ab14a2",
        "message": null,
        "project_id": "6f70656e737461636b20342065766572",
        "request_id": "req-0d819d5c-1527-4669-bdf0-ffad31b5105b",
        "start_time": "2018-04-25T01:26:36.341290",
        "updated_at": "2018-04-25T01:26:36.790544",
        "user_id": "admin"
    }
}

示例:显示服务器操作详细信息(非管理员)(v2.62)

{
    "instanceAction": {
        "action": "stop",
        "events": [
            {
                "event": "compute_stop_instance",
                "finish_time": "2018-04-25T01:26:34.784165",
                "hostId": "2091634baaccdc4c5a1d57069c833e402921df696b7f970791b12ec6",
                "result": "Success",
                "start_time": "2018-04-25T01:26:34.612020"
            }
        ],
        "instance_uuid": "79edaa44-ad4f-4af7-b994-154518c2b927",
        "message": null,
        "project_id": "6f70656e737461636b20342065766572",
        "request_id": "req-8eb28d4a-db6c-4337-bab8-ce154e9c620e",
        "start_time": "2018-04-25T01:26:34.388280",
        "updated_at": "2018-04-25T01:26:34.784165",
        "user_id": "fake"
    }
}

示例:显示服务器操作详细信息(系统读取器)(v2.84)

{
    "instanceAction": {
        "action": "stop",
        "events": [
            {
                "event": "compute_stop_instance",
                "finish_time": "2018-04-25T01:26:36.790544",
                "host": "compute",
                "hostId": "2091634baaccdc4c5a1d57069c833e402921df696b7f970791b12ec6",
                "result": "Success",
                "start_time": "2018-04-25T01:26:36.539271",
                "traceback": null,
                "details": null
            }
        ],
        "instance_uuid": "4bf3473b-d550-4b65-9409-292d44ab14a2",
        "message": null,
        "project_id": "6f70656e737461636b20342065766572",
        "request_id": "req-0d819d5c-1527-4669-bdf0-ffad31b5105b",
        "start_time": "2018-04-25T01:26:36.341290",
        "updated_at": "2018-04-25T01:26:36.790544",
        "user_id": "admin"
    }
}

端口接口(servers, os-interface)

列出服务器的端口接口、显示端口接口的详细信息。创建端口接口并使用它将端口附加到服务器,从服务器分离端口接口。

GET
/servers/{server_id}/os-interface

列出端口接口

列出附加到服务器的端口接口。

正常响应代码:200

错误响应代码:unauthorized(401), forbidden(403), itemNotFound(404), NotImplemented(501)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

响应

名称

入参

类型

描述

interfaceAttachments

body

数组

接口附件列表。

port_state

body

字符串

端口状态。

fixed_ips

body

数组

带有子网 ID 的固定 IP 地址。

ip_address

body

字符串

IP 地址。

subnet_id

body

字符串

子网的 UUID。

mac_addr

body

字符串

MAC 地址。

net_id

body

字符串

网络 ID。

port_id

body

字符串

端口 ID。

tag

body

字符串

应用于虚拟网络接口的设备标签或 null

版本 2.70 中新增

示例:列出端口接口:JSON 响应

{
    "interfaceAttachments": [
        {
            "fixed_ips": [
                {
                    "ip_address": "192.168.1.3",
                    "subnet_id": "f8a6e8f8-c2ec-497c-9f23-da9616de54ef"
                }
            ],
            "mac_addr": "fa:16:3e:4c:2c:30",
            "net_id": "3cb9bc59-5699-4588-a4b1-b87f96708bc6",
            "port_id": "ce531f90-199f-48c0-816c-13e38010b442",
            "port_state": "ACTIVE"
        }
    ]
}

示例:列出标记的端口接口 (v2.70):JSON 响应

{
    "interfaceAttachments": [
        {
            "fixed_ips": [
                {
                    "ip_address": "192.168.1.3",
                    "subnet_id": "f8a6e8f8-c2ec-497c-9f23-da9616de54ef"
                }
            ],
            "mac_addr": "fa:16:3e:4c:2c:30",
            "net_id": "3cb9bc59-5699-4588-a4b1-b87f96708bc6",
            "port_id": "ce531f90-199f-48c0-816c-13e38010b442",
            "port_state": "ACTIVE",
            "tag": "public"
        }
    ]
}
POST
/servers/{server_id}/os-interface

创建接口

创建端口接口并将其附加到服务器。

正常响应代码:200

错误响应代码:badRequest(400), unauthorized(401), forbidden(403), itemNotFound(404), conflict(409), computeFault(500), NotImplemented(501)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

interfaceAttachment

body

字符串

在请求正文中指定 interfaceAttachment 操作。

port_id (可选)

body

字符串

您要为其创建接口的端口 ID。 net_idport_id 参数是互斥的。如果您不指定 port_id 参数,OpenStack Networking API v2.0 将分配一个端口并为其创建一个接口。

net_id (可选)

body

字符串

您要为其创建端口接口的网络 ID。 net_idport_id 参数是互斥的。如果您不指定 net_id 参数,OpenStack Networking API v2.0 将使用与实例关联的网络信息缓存。

fixed_ips (可选)

body

数组

固定 IP 地址。如果您请求一个特定的固定 IP 地址而没有 net_id,请求将返回 Bad Request (400) 响应代码。

ip_address

body

字符串

IP 地址。当指定 fixed_ips 时需要。

tag (可选)

body

字符串

可以应用于附加到 VM 的虚拟网络接口的设备角色标签。具有如此标记设备的服务器的来宾操作系统可以从元数据 API 和配置驱动器(如果启用)中访问标记设备的硬件元数据。

版本 2.49 中新增

示例:创建接口:JSON 请求

使用 net_idfixed_ips 创建接口。

{
    "interfaceAttachment": {
        "fixed_ips": [
            {
                "ip_address": "192.168.1.3"
            }
        ],
        "net_id": "3cb9bc59-5699-4588-a4b1-b87f96708bc6"
    }
}

使用 port_id 创建接口。

{
    "interfaceAttachment": {
        "port_id": "ce531f90-199f-48c0-816c-13e38010b442"
    }
}

示例:创建标记的接口 (v2.49):JSON 请求

{
    "interfaceAttachment": {
        "port_id": "ce531f90-199f-48c0-816c-13e38010b442",
        "tag": "foo"
    }
}

响应

名称

入参

类型

描述

interfaceAttachment

body

对象

接口附件。

fixed_ips

body

数组

带有子网 ID 的固定 IP 地址。

ip_address

body

字符串

IP 地址。

subnet_id

body

字符串

子网的 UUID。

mac_addr

body

字符串

MAC 地址。

net_id

body

字符串

网络 ID。

port_id

body

字符串

端口 ID。

port_state

body

字符串

端口状态。

tag

body

字符串

应用于虚拟网络接口的设备标签或 null

版本 2.70 中新增

示例:创建接口:JSON 响应

{
    "interfaceAttachment": {
        "fixed_ips": [
            {
                "ip_address": "192.168.1.3",
                "subnet_id": "f8a6e8f8-c2ec-497c-9f23-da9616de54ef"
            }
        ],
        "mac_addr": "fa:16:3e:4c:2c:30",
        "net_id": "3cb9bc59-5699-4588-a4b1-b87f96708bc6",
        "port_id": "ce531f90-199f-48c0-816c-13e38010b442",
        "port_state": "ACTIVE"
    }
}

示例:创建标记的接口 (v2.70):JSON 响应

{
    "interfaceAttachment": {
        "fixed_ips": [
            {
                "ip_address": "192.168.1.3",
                "subnet_id": "f8a6e8f8-c2ec-497c-9f23-da9616de54ef"
            }
        ],
        "mac_addr": "fa:16:3e:4c:2c:30",
        "net_id": "3cb9bc59-5699-4588-a4b1-b87f96708bc6",
        "port_id": "ce531f90-199f-48c0-816c-13e38010b442",
        "port_state": "ACTIVE",
        "tag": "public"
    }
}
GET
/servers/{server_id}/os-interface/{port_id}

显示端口接口详细信息

显示附加到服务器的端口接口的详细信息。

正常响应代码:200

错误响应代码:unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

port_id

路径

字符串

端口的 UUID。

响应

名称

入参

类型

描述

interfaceAttachment

body

对象

接口附件。

port_state

body

字符串

端口状态。

fixed_ips

body

数组

带有子网 ID 的固定 IP 地址。

ip_address

body

字符串

IP 地址。

subnet_id

body

字符串

子网的 UUID。

mac_addr

body

字符串

MAC 地址。

net_id

body

字符串

网络 ID。

port_id

body

字符串

端口 ID。

tag

body

字符串

应用于虚拟网络接口的设备标签或 null

版本 2.70 中新增

示例:显示端口接口详细信息:JSON 响应

{
    "interfaceAttachment": {
        "fixed_ips": [
            {
                "ip_address": "192.168.1.3",
                "subnet_id": "f8a6e8f8-c2ec-497c-9f23-da9616de54ef"
            }
        ],
        "mac_addr": "fa:16:3e:4c:2c:30",
        "net_id": "3cb9bc59-5699-4588-a4b1-b87f96708bc6",
        "port_id": "ce531f90-199f-48c0-816c-13e38010b442",
        "port_state": "ACTIVE"
    }
}

示例:显示标记的端口接口详细信息 (v2.70):JSON 响应

{
    "interfaceAttachment": {
        "fixed_ips": [
            {
                "ip_address": "192.168.1.3",
                "subnet_id": "f8a6e8f8-c2ec-497c-9f23-da9616de54ef"
            }
        ],
        "mac_addr": "fa:16:3e:4c:2c:30",
        "net_id": "3cb9bc59-5699-4588-a4b1-b87f96708bc6",
        "port_id": "ce531f90-199f-48c0-816c-13e38010b442",
        "port_state": "ACTIVE",
        "tag": "public"
    }
}
DELETE
/servers/{server_id}/os-interface/{port_id}

分离接口

从服务器分离端口接口。

正常响应代码:202

错误响应代码:unauthorized(401), forbidden(403), itemNotFound(404), conflict(409), NotImplemented(501)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

port_id

路径

字符串

端口的 UUID。

响应

成功请求时没有返回正文。

服务器密码(servers, os-server-password)

显示加密的管理密码。此外,清除服务器的加密管理密码,从而将其从元数据服务器中移除。

GET
/servers/{server_id}/os-server-password

显示服务器密码

显示服务器的管理密码。

此操作调用元数据服务来查询元数据信息,而不直接从服务器本身读取密码信息。

保存在元数据服务中的密码通常使用注入到该服务器的公共 SSH 密钥进行加密,因此需要 SSH 私钥才能读取密码。

策略默认仅允许具有管理员角色或服务器所有者的用户执行此操作。云提供商可以通过 policy.json 文件更改这些权限。

正常响应代码:200

错误响应代码:unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

响应

名称

入参

类型

描述

密码 (可选)

body

字符串

从元数据服务器返回的密码。

示例:显示服务器密码

{
    "password": "xlozO3wLCBRWAa2yDjCCVx8vwNPypxnypmRYDa/zErlQ+EzPe1S/Gz6nfmC52mOlOSCRuUOmG7kqqgejPof6M7bOezS387zjq4LSvvwp28zUknzy4YzfFGhnHAdai3TxUJ26pfQCYrq8UTzmKF2Bq8ioSEtVVzM0A96pDh8W2i7BOz6MdoiVyiev/I1K2LsuipfxSJR7Wdke4zNXJjHHP2RfYsVbZ/k9ANu+Nz4iIH8/7Cacud/pphH7EjrY6a4RZNrjQskrhKYed0YERpotyjYk1eDtRe72GrSiXteqCM4biaQ5w3ruS+AcX//PXk3uJ5kC7d67fPXaVz4WaQRYMg=="
}
DELETE
/servers/{server_id}/os-server-password

清除管理员密码

清除服务器的加密管理密码,将其从数据库中移除。

此操作实际上不会更改实例服务器的密码。

策略默认仅允许具有管理员角色或服务器所有者的用户执行此操作。云提供商可以通过 policy.json 文件更改这些权限。

正常响应代码:204

错误响应代码:unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

响应

如果成功,此方法不会在响应正文中返回内容。

带有共享挂载的服务器(servers, shares)

将通过 Manila share API 创建的共享挂载到服务器实例。此外,列出服务器的共享挂载,显示共享挂载的详细信息,并分离共享(版本 2.97 中新增)。

GET
/servers/{server_id}/shares

列出实例的共享挂载

列出实例的共享挂载。

正常响应代码:200

错误响应代码:badrequest(400), forbidden(403), itemNotFound(404)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

响应

名称

入参

类型

描述

共享

body

数组

共享挂载列表。

share_id

body

字符串

挂载共享的 UUID。

status

body

字符串

共享状态

  • attaching:共享正在由计算节点附加到 VM。

  • detaching:共享正在由计算节点从 VM 分离。

  • inactive:共享已挂载但非活动状态,因为 VM 已停止。

  • active:共享已挂载,并且 VM 正在运行。

  • error:共享处于错误状态。

tag

body

字符串

用户在实例内挂载共享时使用的设备标签,如果未提供,则自动使用共享 UUID。

示例:列出实例的共享挂载:JSON 响应

{
  "shares": [
    {
      "share_id": "e8debdc0-447a-4376-a10a-4cd9122d7986",
      "status": "inactive",
      "tag": "e8debdc0-447a-4376-a10a-4cd9122d7986"
    }
  ]
}
POST
/servers/{server_id}/shares

将共享挂载到实例

将共享挂载到实例。

正常响应代码:201

错误响应代码:badRequest(400), forbidden(403), itemNotFound(404), conflict(409)

注意

此操作仅在服务器处于 STOPPED 状态时有效。

注意

此操作还需要特定的配置,请查阅文档要求以配置您的环境并支持此功能。

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

share_id

body

字符串

挂载共享的 UUID。

tag

body

字符串

用户在实例内挂载共享时使用的设备标签,如果未提供,则自动使用共享 UUID。

示例:将共享挂载到实例:JSON 请求

{
    "share": {
        "share_id": "3cdf5132-64f2-4584-876a-bd296ae7eabd",
        "tag": "my-share"
    }
}

响应

名称

入参

类型

描述

共享

body

数组

共享挂载列表。

share_id

body

字符串

挂载共享的 UUID。

status

body

字符串

共享状态

  • attaching:共享正在由计算节点附加到 VM。

  • detaching:共享正在由计算节点从 VM 分离。

  • inactive:共享已挂载但非活动状态,因为 VM 已停止。

  • active:共享已挂载,并且 VM 正在运行。

  • error:共享处于错误状态。

tag

body

字符串

用户在实例内挂载共享时使用的设备标签,如果未提供,则自动使用共享 UUID。

示例:将共享挂载到实例:JSON 响应

{
  "share": {
    "share_id": "e8debdc0-447a-4376-a10a-4cd9122d7986",
    "status": "attaching",
    "tag": "e8debdc0-447a-4376-a10a-4cd9122d7986"
  }
}
GET
/servers/{server_id}/shares/{share_id}

显示共享挂载的详细信息

显示共享挂载的详细信息。

正常响应代码:200

错误响应代码:badRequest(400), forbidden(403), itemNotFound(404)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

share_id

路径

字符串

挂载共享的 UUID。

响应

名称

入参

类型

描述

share

body

对象

包含 uuidserverIdstatustagexport_location 字段的共享挂载的字典表示。

uuid (可选)

body

字符串

共享挂载的 UUID。

share_id

body

字符串

挂载共享的 UUID。

status

body

字符串

共享状态

  • attaching:共享正在由计算节点附加到 VM。

  • detaching:共享正在由计算节点从 VM 分离。

  • inactive:共享已挂载但非活动状态,因为 VM 已停止。

  • active:共享已挂载,并且 VM 正在运行。

  • error:共享处于错误状态。

tag

body

字符串

用户在实例内挂载共享时使用的设备标签,如果未提供,则自动使用共享 UUID。

export_location (可选)

body

字符串

用于将共享挂载到底层主机的导出位置。

注意

管理员才能看到可选字段。

示例:显示共享挂载的详细信息:JSON 响应

{
  "share": {
    "share_id": "e8debdc0-447a-4376-a10a-4cd9122d7986",
    "status": "inactive",
    "tag": "e8debdc0-447a-4376-a10a-4cd9122d7986"
  }
}

示例:显示具有管理员权限的共享挂载的详细信息:JSON 响应

{
  "share": {
    "uuid": "68ba1762-fd6d-4221-8311-f3193dd93404",
    "share_id": "e8debdc0-447a-4376-a10a-4cd9122d7986",
    "status": "inactive",
    "export_location": "10.0.0.50:/mnt/foo",
    "tag": "e8debdc0-447a-4376-a10a-4cd9122d7986"
  }
}
DELETE
/servers/{server_id}/shares/{share_id}

从实例分离共享

从实例分离共享。

正常响应代码:200

错误响应代码:badRequest(400), forbidden(403), itemNotFound(404), conflict(409)

注意

此操作仅在服务器处于 STOPPEDERROR 状态时有效。

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

share_id

路径

字符串

挂载共享的 UUID。

响应

成功请求时没有返回正文。

带有卷挂载的服务器(servers, os-volume_attachments)

将通过卷 API 创建的卷挂载到服务器实例。此外,列出服务器的卷挂载,显示卷挂载的详细信息,并分离卷。

GET
/servers/{server_id}/os-volume_attachments

列出实例的卷挂载

列出实例的卷挂载。

正常响应代码:200

错误响应代码:unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

limit (可选)

查询

整数

offset 结合使用以返回项目切片。limit 是要返回的最大项目数。如果未指定 limit,或超过可配置的 max_limit,则将改用 max_limit

offset (可选)

查询

整数

limit 结合使用以返回项目的切片。offset 是列表中的起始位置。

响应

名称

入参

类型

描述

volumeAttachments

body

数组

卷挂载列表。

id

body

字符串

挂载的卷 ID。

可用至版本 2.88

serverId

body

字符串

服务器的 UUID。

volumeId

body

字符串

已挂载卷的 UUID。

device (可选)

body

字符串

挂载对象中的设备名称,例如 /dev/vdb

tag

body

字符串

应用于块设备卷的设备标签或 null

版本 2.70 中新增

delete_on_termination

body

布尔值

一个标志,指示在服务器删除时是否将挂载的卷删除。

版本 2.79 中新增

attachment_id

body

字符串

Cinder 中相关卷挂载的 UUID。

版本 2.89 中新增

bdm_uuid

body

字符串

Nova 中用于挂载的块设备映射记录的 UUID。

版本 2.89 中新增

示例:列出实例的卷挂载:JSON 响应

{
    "volumeAttachments": [
        {
            "device": "/dev/sdc",
            "id": "227cc671-f30b-4488-96fd-7d0bf13648d8",
            "serverId": "4b293d31-ebd5-4a7f-be03-874b90021e54",
            "volumeId": "227cc671-f30b-4488-96fd-7d0bf13648d8"
        },
        {
            "device": "/dev/sdb",
            "id": "a07f71dc-8151-4e7d-a0cc-cd24a3f11113",
            "serverId": "4b293d31-ebd5-4a7f-be03-874b90021e54",
            "volumeId": "a07f71dc-8151-4e7d-a0cc-cd24a3f11113"
        }
    ]
}

示例:列出实例的标记卷挂载 (v2.89):JSON 响应

{
    "volumeAttachments": [
        {
            "attachment_id": "979ce4f8-033a-409d-85e6-6b5c0f6a6302",
            "delete_on_termination": false,
            "device": "/dev/sdc",
            "serverId": "7696780b-3f53-4688-ab25-019bfcbbd806",
            "tag": null,
            "volumeId": "227cc671-f30b-4488-96fd-7d0bf13648d8",
            "bdm_uuid": "c088db45-92b8-49e8-81e2-a1b77a144b3b"
        },
        {
            "attachment_id": "c5684109-0311-4fca-9814-350e46ab7d2a",
            "delete_on_termination": true,
            "device": "/dev/sdb",
            "serverId": "7696780b-3f53-4688-ab25-019bfcbbd806",
            "tag": "foo",
            "volumeId": "a07f71dc-8151-4e7d-a0cc-cd24a3f11113",
            "bdm_uuid": "1aa24536-6fb5-426c-8894-d627f39aa48b"
        }
    ]
}
POST
/servers/{server_id}/os-volume_attachments

将卷附加到实例

将卷附加到实例。

正常响应代码:200

错误响应代码:badRequest(400),unauthorized(401),forbidden(403),itemNotFound(404),conflict(409)

注意

从 v2.20 开始,允许将卷附加到处于 SHELVED 或 SHELVED_OFFLOADED 状态的实例。

注意

从 v2.60 开始,对于非 SHELVED_OFFLOADED 状态的实例,支持将 multiattach 卷附加到多个实例。实际支持 multiattach 卷的能力取决于卷类型和托管实例的计算服务。

注意

这是一个异步 API,调用者应轮询卷 API 中的卷状态和附件列表,以确定附件是否已成功完成。

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

volumeAttachment

body

对象

卷附件的字典表示,包含 devicevolumeId 字段。

volumeId

body

字符串

要附加的卷的 UUID。

device (可选)

body

字符串

设备名称,例如 /dev/vdb。如果支持,请省略或将此参数设置为 null 以自动分配。如果您指定此参数,设备不得在客户机操作系统中存在。请注意,从 12.0.0 Liberty 版本开始,Nova libvirt 驱动程序不再支持用户提供的设备名称。这与请求中未提供设备名称参数时的行为相同。

tag (可选)

body

字符串

一个设备角色标签,可以在将卷附加到 VM 时应用于该卷。具有此类已标记设备的服务器的客户机操作系统可以从元数据 API 和(如果已启用)配置驱动器中访问有关已标记设备的硬件元数据。

注意

带标签的卷附件不支持已暂停卸载的实例。

版本 2.49 中新增

delete_on_termination (可选)

body

布尔值

要在销毁服务器时删除附加的卷,请指定 true。否则,请指定 false。默认值:false

版本 2.79 中新增

示例:将卷附加到实例:JSON 请求

{
    "volumeAttachment": {
        "volumeId": "a07f71dc-8151-4e7d-a0cc-cd24a3f11113",
        "device": "/dev/sdb"
    }
}

示例:将卷附加到实例并为其打标签 (v2.49):JSON 请求

{
    "volumeAttachment": {
        "volumeId": "a07f71dc-8151-4e7d-a0cc-cd24a3f11113",
        "tag": "foo"
    }
}

示例:将卷附加到具有“delete_on_termination”的实例 (v2.79):JSON 请求

{
    "volumeAttachment": {
        "volumeId": "a07f71dc-8151-4e7d-a0cc-cd24a3f11113",
        "tag": "foo",
        "delete_on_termination": true
    }
}

响应

名称

入参

类型

描述

volumeAttachment

body

对象

卷附件的字典表示,包含 deviceidserverIdvolumeId 字段。

device

body

字符串

设备名称,例如 /dev/vdb

id (可选)

body

字符串

附件的 UUID。

serverId

body

字符串

服务器的 UUID。

volumeId

body

字符串

已挂载卷的 UUID。

tag

body

字符串

应用于块设备卷的设备标签或 null

版本 2.70 中新增

delete_on_termination

body

布尔值

一个标志,指示在服务器删除时是否将挂载的卷删除。

版本 2.79 中新增

示例:将卷附加到实例:JSON 响应

{
    "volumeAttachment": {
        "device": "/dev/sdb",
        "id": "a07f71dc-8151-4e7d-a0cc-cd24a3f11113",
        "serverId": "802db873-0373-4bdd-a433-d272a539ba18",
        "volumeId": "a07f71dc-8151-4e7d-a0cc-cd24a3f11113"
    }
}

示例:将带标签的卷附加到实例 (v2.70):JSON 响应

{
    "volumeAttachment": {
        "device": "/dev/sdb",
        "id": "a07f71dc-8151-4e7d-a0cc-cd24a3f11113",
        "serverId": "70f5c62a-972d-4a8b-abcf-e1375ca7f8c0",
        "tag": "foo",
        "volumeId": "a07f71dc-8151-4e7d-a0cc-cd24a3f11113"
    }
}

示例:将卷附加到具有“delete_on_termination”的实例 (v2.79):JSON 响应

{
    "volumeAttachment": {
        "delete_on_termination": true,
        "device": "/dev/sdb",
        "id": "a07f71dc-8151-4e7d-a0cc-cd24a3f11113",
        "serverId": "09b3b9d1-b8c5-48e1-841d-62c3ef967a88",
        "tag": "foo",
        "volumeId": "a07f71dc-8151-4e7d-a0cc-cd24a3f11113"
    }
}
GET
/servers/{server_id}/os-volume_attachments/{volume_id}

显示卷附件的详细信息。

显示卷附件的详细信息。

正常响应代码:200

错误响应代码:unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

volume_id

路径

字符串

已挂载卷的 UUID。

响应

名称

入参

类型

描述

volumeAttachment

body

对象

卷附件的字典表示,包含 deviceidserverIdvolumeId 字段。

id

body

字符串

挂载的卷 ID。

可用至版本 2.88

serverId

body

字符串

服务器的 UUID。

volumeId

body

字符串

已挂载卷的 UUID。

device (可选)

body

字符串

挂载对象中的设备名称,例如 /dev/vdb

tag

body

字符串

应用于块设备卷的设备标签或 null

版本 2.70 中新增

delete_on_termination

body

布尔值

一个标志,指示在服务器删除时是否将挂载的卷删除。

版本 2.79 中新增

attachment_id

body

字符串

Cinder 中相关卷挂载的 UUID。

版本 2.89 中新增

bdm_uuid

body

字符串

Nova 中用于挂载的块设备映射记录的 UUID。

版本 2.89 中新增

示例:显示卷附件的详细信息:JSON 响应

{
    "volumeAttachment": {
        "device": "/dev/sdb",
        "id": "a07f71dc-8151-4e7d-a0cc-cd24a3f11113",
        "serverId": "1ad6852e-6605-4510-b639-d0bff864b49a",
        "volumeId": "a07f71dc-8151-4e7d-a0cc-cd24a3f11113"
    }
}

示例:显示带标签的卷附件的详细信息 (v2.89):JSON 响应

{
    "volumeAttachment": {
        "attachment_id": "721a5c82-5ebc-4c6a-8339-3d33d8d027ed",
        "delete_on_termination": true,
        "device": "/dev/sdb",
        "serverId": "7ebed2ce-85b3-40b5-84ae-8cc725c37ed2",
        "tag": "foo",
        "volumeId": "a07f71dc-8151-4e7d-a0cc-cd24a3f11113",
        "bdm_uuid": "c088db45-92b8-49e8-81e2-a1b77a144b3b"
    }
}
PUT
/servers/{server_id}/os-volume_attachments/{volume_id}

更新卷附件

更新卷附件。

策略默认角色为“rule:admin_or_owner”,其作用域为 [project],允许项目成员或管理员更改服务器已附加卷的字段。云提供商可以通过 policy.yaml 文件更改这些权限。

正常响应代码:202

错误响应代码:badRequest(400),unauthorized(401),forbidden(403),itemNotFound(404),conflict(409)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

volume_id

路径

字符串

卷的唯一 ID。

volumeAttachment

body

对象

卷附件的字典表示,包含 volumeId 字段(替换卷的 UUID)以及要更新的附件中的其他字段。

volumeId

body

字符串

已挂载卷的 UUID。

delete_on_termination (可选)

body

布尔值

一个标志,指示在服务器删除时是否将挂载的卷删除。

新功能,版本 2.85

device (可选)

body

字符串

挂载对象中的设备名称,例如 /dev/vdb

新功能,版本 2.85

serverId (可选)

body

字符串

服务器的 UUID。

新功能,版本 2.85

tag

body

字符串

应用于块设备卷的设备标签或 null

新功能,版本 2.85

id (可选)

body

字符串

附件的 UUID。

新功能,版本 2.85

注意

除了 volumeId 之外,从 v2.85 开始,只能从当前值更改 delete_on_termination

示例:更新卷附件 (v2.85):JSON 请求

{
    "volumeAttachment": {
        "volumeId": "a07f71dc-8151-4e7d-a0cc-cd24a3f11113",
        "delete_on_termination": true
    }
}

响应

成功请求时没有返回正文。

DELETE
/servers/{server_id}/os-volume_attachments/{volume_id}

将卷从实例分离

将卷与实例分离。

正常响应代码:202

错误响应代码:badRequest(400),unauthorized(401),forbidden(403),itemNotFound(404),conflict(409)

注意

从 v2.20 开始,允许将卷与处于 SHELVED 或 SHELVED_OFFLOADED 状态的实例分离。

注意

这是一个异步 API,调用者应通过 GET /servers/{server_id}/os-volume_attachments 提供的卷附件列表来轮询,以确定卷的分离是否已成功完成。

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

volume_id

路径

字符串

要分离的卷的 UUID。

响应

成功请求时没有返回正文。

规格

显示和管理服务器配置(flavors)。

配置(Flavors)是描述要创建的服务器的基本尺寸的一种方式,包括用该配置创建的服务器将分配多少 cpuramdisk space

GET
/flavors

列出风味

列出对您的项目可访问的所有配置。

正常响应代码:200

错误响应代码:未授权(401)、禁止(403)

请求

名称

入参

类型

描述

sort_key (可选)

查询

字符串

按配置属性排序。默认属性是 flavorid。您可以指定多个排序键和排序方向的查询参数对。如果省略对中的排序方向,API 将使用配置 sort_key 属性的自然排序方向。排序键限制为

  • created_at

  • description

  • disabled

  • ephemeral_gb

  • flavorid

  • id

  • is_public

  • memory_mb

  • name

  • root_gb

  • rxtx_factor

  • swap

  • updated_at

  • vcpu_weight

  • vcpus

sort_dir (可选)

查询

字符串

排序方向。有效值为 asc(升序)或 desc(降序)。默认值为 asc。您可以指定多个排序键和排序方向的查询参数对。如果省略对中的排序方向,API 将使用配置 sort_key 属性的自然排序方向。

limit (可选)

查询

整数

请求项目页面大小。返回最多限制值数量的项目。使用 limit 参数进行初始限制请求,并在后续限制请求中使用响应中最后一个已查看项目的 ID 作为 marker 参数值。

marker (可选)

查询

字符串

最后一个已查看项目的 ID。使用 limit 参数进行初始限制请求,并在后续限制请求中使用响应中最后一个已查看项目的 ID 作为 marker 参数值。

minDisk (可选)

查询

整数

按最小磁盘空间(以 GiB 为单位)过滤响应。例如,100

minRam (可选)

查询

整数

按最小 RAM(以 MiB 为单位)过滤响应。例如,512

is_public (可选)

查询

字符串

此参数仅适用于具有管理员角色的用户。对于所有其他非管理员用户,将忽略此参数,并且仅返回公共配置。根据配置是公共的还是私有的来过滤配置列表。如果未指定此参数的值,则将其视为 True。如果指定了值,则 1ttrueonyyes 被视为 True0ffalseoffnno 被视为 False(不区分大小写)。如果值为 None(不区分大小写),则会在单个请求中列出公共和私有配置。

响应

名称

入参

类型

描述

flavors

body

数组

配置对象的数组。

id

body

字符串

风味 ID。虽然人们经常将其视为整数,但它实际上是一个字符串。

name

body

字符串

风类的显示名称。

description

body

字符串

配置的描述。

新功能,版本 2.55

links

body

数组

指向相关资源的链接。有关更多信息,请参阅API 指南 / 链接和引用

示例:列出配置 (v2.55)

{
    "flavors": [
        {
            "id": "1",
            "links": [
                {
                    "href": "http://openstack.example.com/v2/6f70656e737461636b20342065766572/flavors/1",
                    "rel": "self"
                },
                {
                    "href": "http://openstack.example.com/6f70656e737461636b20342065766572/flavors/1",
                    "rel": "bookmark"
                }
            ],
            "name": "m1.tiny",
            "description": null
        },
        {
            "id": "2",
            "links": [
                {
                    "href": "http://openstack.example.com/v2/6f70656e737461636b20342065766572/flavors/2",
                    "rel": "self"
                },
                {
                    "href": "http://openstack.example.com/6f70656e737461636b20342065766572/flavors/2",
                    "rel": "bookmark"
                }
            ],
            "name": "m1.small",
            "description": null
        },
        {
            "id": "3",
            "links": [
                {
                    "href": "http://openstack.example.com/v2/6f70656e737461636b20342065766572/flavors/3",
                    "rel": "self"
                },
                {
                    "href": "http://openstack.example.com/6f70656e737461636b20342065766572/flavors/3",
                    "rel": "bookmark"
                }
            ],
            "name": "m1.medium",
            "description": null
        },
        {
            "id": "4",
            "links": [
                {
                    "href": "http://openstack.example.com/v2/6f70656e737461636b20342065766572/flavors/4",
                    "rel": "self"
                },
                {
                    "href": "http://openstack.example.com/6f70656e737461636b20342065766572/flavors/4",
                    "rel": "bookmark"
                }
            ],
            "name": "m1.large",
            "description": null
        },
        {
            "id": "5",
            "links": [
                {
                    "href": "http://openstack.example.com/v2/6f70656e737461636b20342065766572/flavors/5",
                    "rel": "self"
                },
                {
                    "href": "http://openstack.example.com/6f70656e737461636b20342065766572/flavors/5",
                    "rel": "bookmark"
                }
            ],
            "name": "m1.xlarge",
            "description": null
        },
        {
            "id": "6",
            "links": [
                {
                    "href": "http://openstack.example.com/v2/6f70656e737461636b20342065766572/flavors/6",
                    "rel": "self"
                },
                {
                    "href": "http://openstack.example.com/6f70656e737461636b20342065766572/flavors/6",
                    "rel": "bookmark"
                }
            ],
            "name": "m1.tiny.specs",
            "description": null
        },
        {
            "id": "7",
            "links": [
                {
                    "href": "http://openstack.example.com/v2/6f70656e737461636b20342065766572/flavors/7",
                    "rel": "self"
                },
                {
                    "href": "http://openstack.example.com/6f70656e737461636b20342065766572/flavors/7",
                    "rel": "bookmark"
                }
            ],
            "name": "m1.small.description",
            "description": "test description"
        }
    ]
}
POST
/flavors

创建配置。

创建flavor。

创建配置通常仅限于云管理员,因为这会影响云中的有效调度。

注意

不允许配置 ID 中包含特殊字符(连字符“-”、下划线“_”、空格和点“.”除外)的配置。

配置 ID 应为 UUID。用“-”分隔/分组的序列化字符串代表默认配置 ID 或 UUID。例如:01cc74d8-4816-4bef-835b-e36ff188c406。

仅为向后兼容,允许使用整数作为配置 ID。

正常响应代码:200

错误响应代码:badRequest(400),unauthorized(401),forbidden(403),conflict(409)

请求

名称

入参

类型

描述

flavor

body

对象

用于服务器实例的配置的 ID 和链接。配置是内存、磁盘大小和 CPU 的组合。

name

body

字符串

风类的显示名称。

description (可选)

body

字符串

配置的自由格式描述。长度限制为 65535 个字符。仅允许使用可打印字符。

新功能,版本 2.55

id (可选)

body

字符串

仅允许字母数字字符,以及连字符“-”、下划线“_”、空格和点“.”。如果未提供 ID,则会分配默认 UUID。

ram

body

整数

风味的大小,以 MiB 为单位。

disk

body

整数

用于创建实例的镜像的根磁盘大小(以 GiB 为单位)。如果为 0,根磁盘将设置为与用于部署实例的镜像大小完全一致。但是,在这种情况下,调度程序无法根据虚拟镜像大小选择计算主机。因此,0 只应用于卷启动的实例或用于测试目的。通过 os_compute_api:servers:create:zero_disk_flavor 策略规则,可以对具有零根磁盘的配置强制执行卷后备实例。

vcpus

body

整数

将分配给服务器的虚拟 CPU 数量。

OS-FLV-EXT-DATA:ephemeral (可选)

body

整数

将要创建的临时磁盘的大小(以 GiB 为单位)。临时磁盘在服务器状态更改时可能会被覆盖。因此,应仅用作了解其限制的应用程序的临时空间。默认为 0。

swap (可选)

body

整数

将要分配的专用交换磁盘的大小(以 MiB 为单位)。如果为 0(默认值),则不会创建专用交换磁盘。

rxtx_factor (可选)

body

float

如果网络后端支持 QOS 扩展,则将在端口上设置的接收/传输因子(浮点数)。否则将被忽略。默认值为 1.0。

os-flavor-access:is_public (可选)

body

布尔值

配置是公共的(所有项目都可用)还是限定于一组项目。如果未指定,则默认为 True。

示例:创建配置 (v2.55)

{
    "flavor": {
        "name": "test_flavor",
        "ram": 1024,
        "vcpus": 2,
        "disk": 10,
        "id": "10",
        "rxtx_factor": 2.0,
        "description": "test description"
    }
}

响应

名称

入参

类型

描述

flavor

body

对象

用于服务器实例的配置的 ID 和链接。配置是内存、磁盘大小和 CPU 的组合。

name

body

字符串

风类的显示名称。

description

body

字符串

配置的描述。

新功能,版本 2.55

id

body

字符串

风味 ID。虽然人们经常将其视为整数,但它实际上是一个字符串。

ram

body

整数

风味的大小,以 MiB 为单位。

disk

body

整数

用于创建实例的镜像的根磁盘大小(以 GiB 为单位)。如果为 0,根磁盘将设置为与用于部署实例的镜像大小完全一致。但是,在这种情况下,调度程序无法根据虚拟镜像大小选择计算主机。因此,0 只应用于卷启动的实例或用于测试目的。通过 os_compute_api:servers:create:zero_disk_flavor 策略规则,可以对具有零根磁盘的配置强制执行卷后备实例。

vcpus

body

整数

将分配给服务器的虚拟 CPU 数量。

links

body

数组

指向相关资源的链接。有关更多信息,请参阅API 指南 / 链接和引用

OS-FLV-EXT-DATA:ephemeral

body

整数

将要创建的临时磁盘的大小(以 GiB 为单位)。临时磁盘在服务器状态更改时可能会被覆盖。因此,应仅用作了解其限制的应用程序的临时空间。默认为 0。

OS-FLV-DISABLED:disabled (可选)

body

布尔值

配置是否已被管理员禁用。这是旧版 v2 API 的产物,始终设置为 false。目前无法禁用配置并将其设置为 true

swap

body

整数

将要分配的专用交换磁盘的大小(以 MiB 为单位)。如果为 0(默认值),则不会创建专用交换磁盘。目前,空字符串 (“”) 用于表示 0。从微版本 2.75 开始,swap 的默认返回值是 0,而不是空字符串。

rxtx_factor

body

float

如果网络后端支持 QOS 扩展,则将在端口上设置的接收/传输因子(浮点数)。否则将被忽略。默认值为 1.0。

os-flavor-access:is_public

body

布尔值

配置是公共的(所有项目都可用)还是限定于一组项目。如果未指定,则默认为 True。

extra_specs (可选)

body

对象

风类附加规格键值对的字典。仅当用户被策略允许索引风类附加规格时才包含。

新功能,版本 2.61

示例:创建配置 (v2.75)

{
    "flavor": {
        "OS-FLV-DISABLED:disabled": false,
        "disk": 10,
        "OS-FLV-EXT-DATA:ephemeral": 0,
        "os-flavor-access:is_public": true,
        "id": "10",
        "links": [
            {
                "href": "http://openstack.example.com/v2/6f70656e737461636b20342065766572/flavors/10",
                "rel": "self"
            },
            {
                "href": "http://openstack.example.com/6f70656e737461636b20342065766572/flavors/10",
                "rel": "bookmark"
            }
        ],
        "name": "test_flavor",
        "ram": 1024,
        "swap": 0,
        "rxtx_factor": 2.0,
        "vcpus": 2,
        "description": "test description",
        "extra_specs": {}
    }
}
GET
/flavors/detail

列出具有详细信息的配置。

列出详细的配置。

正常响应代码:200

错误响应代码:badRequest(400),unauthorized(401),forbidden(403)

请求

名称

入参

类型

描述

sort_key (可选)

查询

字符串

按配置属性排序。默认属性是 flavorid。您可以指定多个排序键和排序方向的查询参数对。如果省略对中的排序方向,API 将使用配置 sort_key 属性的自然排序方向。排序键限制为

  • created_at

  • description

  • disabled

  • ephemeral_gb

  • flavorid

  • id

  • is_public

  • memory_mb

  • name

  • root_gb

  • rxtx_factor

  • swap

  • updated_at

  • vcpu_weight

  • vcpus

sort_dir (可选)

查询

字符串

排序方向。有效值为 asc(升序)或 desc(降序)。默认值为 asc。您可以指定多个排序键和排序方向的查询参数对。如果省略对中的排序方向,API 将使用配置 sort_key 属性的自然排序方向。

limit (可选)

查询

整数

请求项目页面大小。返回最多限制值数量的项目。使用 limit 参数进行初始限制请求,并在后续限制请求中使用响应中最后一个已查看项目的 ID 作为 marker 参数值。

marker (可选)

查询

字符串

最后一个已查看项目的 ID。使用 limit 参数进行初始限制请求,并在后续限制请求中使用响应中最后一个已查看项目的 ID 作为 marker 参数值。

minDisk (可选)

查询

整数

按最小磁盘空间(以 GiB 为单位)过滤响应。例如,100

minRam (可选)

查询

整数

按最小 RAM(以 MiB 为单位)过滤响应。例如,512

is_public (可选)

查询

字符串

此参数仅适用于具有管理员角色的用户。对于所有其他非管理员用户,将忽略此参数,并且仅返回公共配置。根据配置是公共的还是私有的来过滤配置列表。如果未指定此参数的值,则将其视为 True。如果指定了值,则 1ttrueonyyes 被视为 True0ffalseoffnno 被视为 False(不区分大小写)。如果值为 None(不区分大小写),则会在单个请求中列出公共和私有配置。

响应

名称

入参

类型

描述

flavors

body

数组

配置对象的数组。

name

body

字符串

风类的显示名称。

description

body

字符串

配置的描述。

新功能,版本 2.55

id

body

字符串

风味 ID。虽然人们经常将其视为整数,但它实际上是一个字符串。

ram

body

整数

风味的大小,以 MiB 为单位。

disk

body

整数

用于创建实例的镜像的根磁盘大小(以 GiB 为单位)。如果为 0,根磁盘将设置为与用于部署实例的镜像大小完全一致。但是,在这种情况下,调度程序无法根据虚拟镜像大小选择计算主机。因此,0 只应用于卷启动的实例或用于测试目的。通过 os_compute_api:servers:create:zero_disk_flavor 策略规则,可以对具有零根磁盘的配置强制执行卷后备实例。

vcpus

body

整数

将分配给服务器的虚拟 CPU 数量。

links

body

数组

指向相关资源的链接。有关更多信息,请参阅API 指南 / 链接和引用

OS-FLV-EXT-DATA:ephemeral

body

整数

将要创建的临时磁盘的大小(以 GiB 为单位)。临时磁盘在服务器状态更改时可能会被覆盖。因此,应仅用作了解其限制的应用程序的临时空间。默认为 0。

OS-FLV-DISABLED:disabled (可选)

body

布尔值

配置是否已被管理员禁用。这是旧版 v2 API 的产物,始终设置为 false。目前无法禁用配置并将其设置为 true

swap

body

整数

将要分配的专用交换磁盘的大小(以 MiB 为单位)。如果为 0(默认值),则不会创建专用交换磁盘。目前,空字符串 (“”) 用于表示 0。从微版本 2.75 开始,swap 的默认返回值是 0,而不是空字符串。

rxtx_factor

body

float

如果网络后端支持 QOS 扩展,则将在端口上设置的接收/传输因子(浮点数)。否则将被忽略。默认值为 1.0。

os-flavor-access:is_public

body

布尔值

配置是公共的(所有项目都可用)还是限定于一组项目。如果未指定,则默认为 True。

extra_specs (可选)

body

对象

风类附加规格键值对的字典。仅当用户被策略允许索引风类附加规格时才包含。

新功能,版本 2.61

示例:列出详细的配置 (v2.75)

{
    "flavors": [
        {
            "OS-FLV-DISABLED:disabled": false,
            "disk": 1,
            "OS-FLV-EXT-DATA:ephemeral": 0,
            "os-flavor-access:is_public": true,
            "id": "1",
            "links": [
                {
                    "href": "http://openstack.example.com/v2/6f70656e737461636b20342065766572/flavors/1",
                    "rel": "self"
                },
                {
                    "href": "http://openstack.example.com/6f70656e737461636b20342065766572/flavors/1",
                    "rel": "bookmark"
                }
            ],
            "name": "m1.tiny",
            "ram": 512,
            "swap": 0,
            "vcpus": 1,
            "rxtx_factor": 1.0,
            "description": null,
            "extra_specs": {}
        },
        {
            "OS-FLV-DISABLED:disabled": false,
            "disk": 20,
            "OS-FLV-EXT-DATA:ephemeral": 0,
            "os-flavor-access:is_public": true,
            "id": "2",
            "links": [
                {
                    "href": "http://openstack.example.com/v2/6f70656e737461636b20342065766572/flavors/2",
                    "rel": "self"
                },
                {
                    "href": "http://openstack.example.com/6f70656e737461636b20342065766572/flavors/2",
                    "rel": "bookmark"
                }
            ],
            "name": "m1.small",
            "ram": 2048,
            "swap": 0,
            "vcpus": 1,
            "rxtx_factor": 1.0,
            "description": null,
            "extra_specs": {}
        },
        {
            "OS-FLV-DISABLED:disabled": false,
            "disk": 40,
            "OS-FLV-EXT-DATA:ephemeral": 0,
            "os-flavor-access:is_public": true,
            "id": "3",
            "links": [
                {
                    "href": "http://openstack.example.com/v2/6f70656e737461636b20342065766572/flavors/3",
                    "rel": "self"
                },
                {
                    "href": "http://openstack.example.com/6f70656e737461636b20342065766572/flavors/3",
                    "rel": "bookmark"
                }
            ],
            "name": "m1.medium",
            "ram": 4096,
            "swap": 0,
            "vcpus": 2,
            "rxtx_factor": 1.0,
            "description": null,
            "extra_specs": {}
        },
        {
            "OS-FLV-DISABLED:disabled": false,
            "disk": 80,
            "OS-FLV-EXT-DATA:ephemeral": 0,
            "os-flavor-access:is_public": true,
            "id": "4",
            "links": [
                {
                    "href": "http://openstack.example.com/v2/6f70656e737461636b20342065766572/flavors/4",
                    "rel": "self"
                },
                {
                    "href": "http://openstack.example.com/6f70656e737461636b20342065766572/flavors/4",
                    "rel": "bookmark"
                }
            ],
            "name": "m1.large",
            "ram": 8192,
            "swap": 0,
            "vcpus": 4,
            "rxtx_factor": 1.0,
            "description": null,
            "extra_specs": {}
        },
        {
            "OS-FLV-DISABLED:disabled": false,
            "disk": 160,
            "OS-FLV-EXT-DATA:ephemeral": 0,
            "os-flavor-access:is_public": true,
            "id": "5",
            "links": [
                {
                    "href": "http://openstack.example.com/v2/6f70656e737461636b20342065766572/flavors/5",
                    "rel": "self"
                },
                {
                    "href": "http://openstack.example.com/6f70656e737461636b20342065766572/flavors/5",
                    "rel": "bookmark"
                }
            ],
            "name": "m1.xlarge",
            "ram": 16384,
            "swap": 0,
            "vcpus": 8,
            "rxtx_factor": 1.0,
            "description": null,
            "extra_specs": {}
        },
        {
            "OS-FLV-DISABLED:disabled": false,
            "disk": 1,
            "OS-FLV-EXT-DATA:ephemeral": 0,
            "os-flavor-access:is_public": true,
            "id": "6",
            "links": [
                {
                    "href": "http://openstack.example.com/v2/6f70656e737461636b20342065766572/flavors/6",
                    "rel": "self"
                },
                {
                    "href": "http://openstack.example.com/6f70656e737461636b20342065766572/flavors/6",
                    "rel": "bookmark"
                }
            ],
            "name": "m1.tiny.specs",
            "ram": 512,
            "swap": 0,
            "vcpus": 1,
            "rxtx_factor": 1.0,
            "description": null,
            "extra_specs": {
                "hw:numa_nodes": "1"
            }
        },
        {
            "OS-FLV-DISABLED:disabled": false,
            "disk": 20,
            "OS-FLV-EXT-DATA:ephemeral": 0,
            "os-flavor-access:is_public": true,
            "id": "7",
            "links": [
                {
                    "href": "http://openstack.example.com/v2/6f70656e737461636b20342065766572/flavors/7",
                    "rel": "self"
                },
                {
                    "href": "http://openstack.example.com/6f70656e737461636b20342065766572/flavors/7",
                    "rel": "bookmark"
                }
            ],
            "name": "m1.small.description",
            "ram": 2048,
            "swap": 0,
            "vcpus": 1,
            "rxtx_factor": 1.0,
            "description": "test description",
            "extra_specs": {
                "hw:cpu_policy": "shared",
                "hw:numa_nodes": "1"
            }
        }
    ]
}
GET
/flavors/{flavor_id}

显示配置详细信息。

显示flavor的详情。

正常响应代码:200

错误响应代码:unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

flavor_id

路径

字符串

flavor 的 ID。

响应

名称

入参

类型

描述

flavor

body

对象

用于服务器实例的配置的 ID 和链接。配置是内存、磁盘大小和 CPU 的组合。

name

body

字符串

风类的显示名称。

description

body

字符串

配置的描述。

新功能,版本 2.55

id

body

字符串

风味 ID。虽然人们经常将其视为整数,但它实际上是一个字符串。

ram

body

整数

风味的大小,以 MiB 为单位。

disk

body

整数

用于创建实例的镜像的根磁盘大小(以 GiB 为单位)。如果为 0,根磁盘将设置为与用于部署实例的镜像大小完全一致。但是,在这种情况下,调度程序无法根据虚拟镜像大小选择计算主机。因此,0 只应用于卷启动的实例或用于测试目的。通过 os_compute_api:servers:create:zero_disk_flavor 策略规则,可以对具有零根磁盘的配置强制执行卷后备实例。

vcpus

body

整数

将分配给服务器的虚拟 CPU 数量。

links

body

数组

指向相关资源的链接。有关更多信息,请参阅API 指南 / 链接和引用

OS-FLV-EXT-DATA:ephemeral

body

整数

将要创建的临时磁盘的大小(以 GiB 为单位)。临时磁盘在服务器状态更改时可能会被覆盖。因此,应仅用作了解其限制的应用程序的临时空间。默认为 0。

OS-FLV-DISABLED:disabled (可选)

body

布尔值

配置是否已被管理员禁用。这是旧版 v2 API 的产物,始终设置为 false。目前无法禁用配置并将其设置为 true

swap

body

整数

将要分配的专用交换磁盘的大小(以 MiB 为单位)。如果为 0(默认值),则不会创建专用交换磁盘。目前,空字符串 (“”) 用于表示 0。从微版本 2.75 开始,swap 的默认返回值是 0,而不是空字符串。

rxtx_factor

body

float

如果网络后端支持 QOS 扩展,则将在端口上设置的接收/传输因子(浮点数)。否则将被忽略。默认值为 1.0。

os-flavor-access:is_public

body

布尔值

配置是公共的(所有项目都可用)还是限定于一组项目。如果未指定,则默认为 True。

extra_specs (可选)

body

对象

风类附加规格键值对的字典。仅当用户被策略允许索引风类附加规格时才包含。

新功能,版本 2.61

示例:显示配置详细信息 (v2.75)

{
    "flavor": {
        "OS-FLV-DISABLED:disabled": false,
        "disk": 20,
        "OS-FLV-EXT-DATA:ephemeral": 0,
        "os-flavor-access:is_public": true,
        "id": "7",
        "links": [
            {
                "href": "http://openstack.example.com/v2/6f70656e737461636b20342065766572/flavors/7",
                "rel": "self"
            },
            {
                "href": "http://openstack.example.com/6f70656e737461636b20342065766572/flavors/7",
                "rel": "bookmark"
            }
        ],
        "name": "m1.small.description",
        "ram": 2048,
        "swap": 0,
        "vcpus": 1,
        "rxtx_factor": 1.0,
        "description": "test description",
        "extra_specs": {
            "hw:cpu_policy": "shared",
            "hw:numa_nodes": "1"
        }
    }
}
PUT
/flavors/{flavor_id}

更新配置描述。

更新配置描述。

此 API 从微版本 2.55 开始可用。

策略默认仅允许具有管理员角色的用户执行此操作。云提供商可以通过 policy.json 文件更改这些权限。

正常响应代码:200

错误响应代码:badRequest(400)、unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

flavor_id

路径

字符串

flavor 的 ID。

flavor

body

对象

用于服务器实例的配置的 ID 和链接。配置是内存、磁盘大小和 CPU 的组合。

description

body

字符串

配置的自由格式描述。长度限制为 65535 个字符。仅允许使用可打印字符。

示例:更新配置描述 (v2.55)

{
    "flavor": {
        "description": "updated description"
    }
}

响应

名称

入参

类型

描述

flavor

body

对象

用于服务器实例的配置的 ID 和链接。配置是内存、磁盘大小和 CPU 的组合。

name

body

字符串

风类的显示名称。

description

body

字符串

配置的描述。

id

body

字符串

风味 ID。虽然人们经常将其视为整数,但它实际上是一个字符串。

ram

body

整数

风味的大小,以 MiB 为单位。

disk

body

整数

用于创建实例的镜像的根磁盘大小(以 GiB 为单位)。如果为 0,根磁盘将设置为与用于部署实例的镜像大小完全一致。但是,在这种情况下,调度程序无法根据虚拟镜像大小选择计算主机。因此,0 只应用于卷启动的实例或用于测试目的。通过 os_compute_api:servers:create:zero_disk_flavor 策略规则,可以对具有零根磁盘的配置强制执行卷后备实例。

vcpus

body

整数

将分配给服务器的虚拟 CPU 数量。

links

body

数组

指向相关资源的链接。有关更多信息,请参阅API 指南 / 链接和引用

OS-FLV-EXT-DATA:ephemeral

body

整数

将要创建的临时磁盘的大小(以 GiB 为单位)。临时磁盘在服务器状态更改时可能会被覆盖。因此,应仅用作了解其限制的应用程序的临时空间。默认为 0。

OS-FLV-DISABLED:disabled (可选)

body

布尔值

配置是否已被管理员禁用。这是旧版 v2 API 的产物,始终设置为 false。目前无法禁用配置并将其设置为 true

swap

body

整数

将要分配的专用交换磁盘的大小(以 MiB 为单位)。如果为 0(默认值),则不会创建专用交换磁盘。目前,空字符串 (“”) 用于表示 0。从微版本 2.75 开始,swap 的默认返回值是 0,而不是空字符串。

rxtx_factor

body

float

如果网络后端支持 QOS 扩展,则将在端口上设置的接收/传输因子(浮点数)。否则将被忽略。默认值为 1.0。

os-flavor-access:is_public

body

布尔值

配置是公共的(所有项目都可用)还是限定于一组项目。如果未指定,则默认为 True。

extra_specs (可选)

body

对象

风类附加规格键值对的字典。仅当用户被策略允许索引风类附加规格时才包含。

新功能,版本 2.61

示例:更新配置描述 (v2.75)

{
    "flavor": {
        "OS-FLV-DISABLED:disabled": false,
        "disk": 1,
        "OS-FLV-EXT-DATA:ephemeral": 0,
        "os-flavor-access:is_public": true,
        "id": "1",
        "links": [
            {
                "href": "http://openstack.example.com/v2.1/6f70656e737461636b20342065766572/flavors/1",
                "rel": "self"
            },
            {
                "href": "http://openstack.example.com/6f70656e737461636b20342065766572/flavors/1",
                "rel": "bookmark"
            }
        ],
        "name": "m1.tiny",
        "ram": 512,
        "swap": 0,
        "vcpus": 1,
        "rxtx_factor": 1.0,
        "description": "updated description",
        "extra_specs": {}
    }
}
DELETE
/flavors/{flavor_id}

删除配置。

删除配置。

这通常是管理员才能执行的操作。不建议删除正在被现有服务器使用的配置,因为它可能导致在某些操作中向用户返回不正确的数据。

正常响应代码:202

错误响应代码:unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

flavor_id

路径

字符串

flavor 的 ID。

响应

成功删除后不返回正文内容。

配置访问 (flavors, os-flavor-access)

列出有权访问私有配置的租户,并向租户添加私有配置访问权限,或从中移除。默认情况下,只有管理员可以管理私有配置访问。私有配置的 is_public 设置为 false,而公共配置的 is_public 设置为 true

GET
/flavors/{flavor_id}/os-flavor-access

列出给定配置的访问信息。

列出配置访问信息。

正常响应代码:200

错误响应代码:unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

flavor_id

路径

字符串

flavor 的 ID。

响应

名称

入参

类型

描述

flavor_access

body

数组

一个对象列表,每个对象都有 flavor_idtenant_id 键。

tenant_id

body

字符串

多租户云中的租户 UUID。

flavor_id

body

字符串

风味 ID。虽然人们经常将其视为整数,但它实际上是一个字符串。

示例:列出给定配置的访问信息:JSON 响应

{
    "flavor_access": [
        {
            "flavor_id": "10",
            "tenant_id": "6f70656e737461636b20342065766572"
        }
    ]
}
POST
/flavors/{flavor_id}/action

向租户添加配置访问(addTenantAccess 操作)。

向租户和配置添加访问权限。

在请求体中指定 addTenantAccess 操作和 tenant

正常响应代码:200

错误响应代码:badRequest(400),unauthorized(401),forbidden(403),itemNotFound(404),conflict(409)

  • 400 - BadRequest - 如果在您的 OpenStack 部署中找不到 tenant,则返回 400 以防止 API 调用中的拼写错误。

请求

名称

入参

类型

描述

flavor_id

路径

字符串

flavor 的 ID。

addTenantAccess

body

字符串

操作。

tenant

body

字符串

多租户云中的租户 UUID。

示例:向租户添加配置访问:JSON 请求

{
    "addTenantAccess": {
        "tenant": "fake_tenant"
    }
}

响应

名称

入参

类型

描述

flavor_access

body

数组

一个对象列表,每个对象都有 flavor_idtenant_id 键。

tenant_id

body

字符串

多租户云中的租户 UUID。

flavor_id

body

字符串

风味 ID。虽然人们经常将其视为整数,但它实际上是一个字符串。

示例:向租户添加配置访问:JSON 响应

{
    "flavor_access": [
        {
            "flavor_id": "10",
            "tenant_id": "6f70656e737461636b20342065766572"
        }
    ]
}
POST
/flavors/{flavor_id}/action

从租户移除配置访问(removeTenantAccess 操作)。

从租户和配置中移除配置访问权限。

在请求体中指定 removeTenantAccess 操作和 tenant

正常响应代码:200

错误响应代码:badRequest(400),unauthorized(401),forbidden(403),itemNotFound(404),conflict(409)

  • 400 - BadRequest - 如果在您的 OpenStack 部署中找不到 tenant,则返回 400 以防止 API 调用中的拼写错误。

请求

名称

入参

类型

描述

flavor_id

路径

字符串

flavor 的 ID。

removeTenantAccess

body

字符串

操作。

tenant

body

字符串

多租户云中的租户 UUID。

示例:从租户移除配置访问:JSON 请求

{
    "removeTenantAccess": {
        "tenant": "fake_tenant"
    }
}

响应

名称

入参

类型

描述

flavor_access

body

数组

一个对象列表,每个对象都有 flavor_idtenant_id 键。

tenant_id

body

字符串

多租户云中的租户 UUID。

flavor_id

body

字符串

风味 ID。虽然人们经常将其视为整数,但它实际上是一个字符串。

示例:从租户移除配置访问:JSON 响应

{
    "flavor_access": [
    ]
}

配置额外规格 (flavors, os-flavor-extra-specs)

列出、创建、删除和更新配置的额外规格或键。

有关可用内置额外规格,请参阅 计算配置

GET
/flavors/{flavor_id}/os-extra_specs

列出配置的额外规格。

按 ID 列出配置的所有额外规格。

正常响应代码:200

错误响应代码:unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

flavor_id

路径

字符串

flavor 的 ID。

响应

名称

入参

类型

描述

extra_specs

body

对象

配置额外规格键值对的字典。它出现在 os-extra-specs 的“create”请求体以及 os-extra-specs 的“create”和“list”响应体中。

key

body

字符串

配置的额外规格键。它出现在 os-extra-specs 的“create”和“update”请求体以及 os-extra-specs 的“create”、“list”、“show”和“update”响应体中。

value

body

字符串

配置的额外规格值。它出现在 os-extra-specs 的“create”和“update”请求体以及 os-extra-specs 的“create”、“list”、“show”和“update”响应体中。

示例:列出配置的额外规格:JSON 响应

{
    "extra_specs": {
        "hw:cpu_policy": "shared",
        "hw:numa_nodes": "1"
    }
}
POST
/flavors/{flavor_id}/os-extra_specs

为配置创建额外规格。

按 ID 为配置创建额外规格。

正常响应代码:200

错误响应代码:unauthorized(401)、forbidden(403)、itemNotFound(404)、conflict(409)

请求

名称

入参

类型

描述

flavor_id

路径

字符串

flavor 的 ID。

extra_specs

body

对象

配置额外规格键值对的字典。它出现在 os-extra-specs 的“create”请求体以及 os-extra-specs 的“create”和“list”响应体中。

key

body

字符串

配置的额外规格键。它出现在 os-extra-specs 的“create”和“update”请求体以及 os-extra-specs 的“create”、“list”、“show”和“update”响应体中。

value

body

字符串

配置的额外规格值。它出现在 os-extra-specs 的“create”和“update”请求体以及 os-extra-specs 的“create”、“list”、“show”和“update”响应体中。

示例:为配置创建额外规格:JSON 请求

{
    "extra_specs": {
        "hw:cpu_policy": "shared",
        "hw:numa_nodes": "1"
    }
}

响应

名称

入参

类型

描述

extra_specs

body

对象

配置额外规格键值对的字典。它出现在 os-extra-specs 的“create”请求体以及 os-extra-specs 的“create”和“list”响应体中。

key

body

字符串

配置的额外规格键。它出现在 os-extra-specs 的“create”和“update”请求体以及 os-extra-specs 的“create”、“list”、“show”和“update”响应体中。

value

body

字符串

配置的额外规格值。它出现在 os-extra-specs 的“create”和“update”请求体以及 os-extra-specs 的“create”、“list”、“show”和“update”响应体中。

示例:为配置创建额外规格:JSON 响应

{
    "extra_specs": {
        "hw:cpu_policy": "shared",
        "hw:numa_nodes": "1"
    }
}
GET
/flavors/{flavor_id}/os-extra_specs/{flavor_extra_spec_key}

显示配置的某个额外规格。

按键显示配置的某个额外规格,按 ID。

正常响应代码:200

错误响应代码:unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

flavor_id

路径

字符串

flavor 的 ID。

flavor_extra_spec_key

路径

字符串

配置的额外规格键。

响应

名称

入参

类型

描述

key

body

字符串

配置的额外规格键。它出现在 os-extra-specs 的“create”和“update”请求体以及 os-extra-specs 的“create”、“list”、“show”和“update”响应体中。

value

body

字符串

配置的额外规格值。它出现在 os-extra-specs 的“create”和“update”请求体以及 os-extra-specs 的“create”、“list”、“show”和“update”响应体中。

示例:显示配置的某个额外规格:JSON 响应

{
    "hw:numa_nodes": "1"
}
PUT
/flavors/{flavor_id}/os-extra_specs/{flavor_extra_spec_key}

更新配置的某个额外规格。

按键更新配置的某个额外规格,按 ID。

正常响应代码:200

错误响应代码:badRequest(400), unauthorized(401), forbidden(403) itemNotFound(404), conflict(409)

请求

名称

入参

类型

描述

flavor_id

路径

字符串

flavor 的 ID。

flavor_extra_spec_key

路径

字符串

配置的额外规格键。

key

body

字符串

配置的额外规格键。它出现在 os-extra-specs 的“create”和“update”请求体以及 os-extra-specs 的“create”、“list”、“show”和“update”响应体中。

value

body

字符串

配置的额外规格值。它出现在 os-extra-specs 的“create”和“update”请求体以及 os-extra-specs 的“create”、“list”、“show”和“update”响应体中。

示例:更新配置的某个额外规格:JSON 请求

{
    "hw:numa_nodes": "2"
}

响应

名称

入参

类型

描述

key

body

字符串

配置的额外规格键。它出现在 os-extra-specs 的“create”和“update”请求体以及 os-extra-specs 的“create”、“list”、“show”和“update”响应体中。

value

body

字符串

配置的额外规格值。它出现在 os-extra-specs 的“create”和“update”请求体以及 os-extra-specs 的“create”、“list”、“show”和“update”响应体中。

示例:更新配置的某个额外规格:JSON 响应

{
    "hw:numa_nodes": "2"
}
DELETE
/flavors/{flavor_id}/os-extra_specs/{flavor_extra_spec_key}

删除配置的某个额外规格。

按键删除配置的某个额外规格,按 ID。

正常响应代码:200

错误响应代码:unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

flavor_id

路径

字符串

flavor 的 ID。

flavor_extra_spec_key

路径

字符串

配置的额外规格键。

响应

成功的 DELETE 操作的响应体为空。

密钥对 (keypairs)

生成、导入和删除 SSH 密钥。

GET
/os-keypairs

列出密钥对。

列出与帐户关联的密钥对。

正常响应代码:200

错误响应代码:未授权(401)、禁止(403)

请求

名称

入参

类型

描述

user_id (可选)

查询

字符串

这允许管理员用户操作指定用户 ID 的密钥对。

版本 2.10 中新增

limit (可选)

查询

整数

请求分页的项目。返回的项目数最多为 limit 值。使用 limit 参数进行初始限制请求,并使用响应中的最后一条可见项目作为后续限制请求的 marker 参数值。

新功能,版本 2.35

marker (可选)

查询

字符串

最后一个看到的条目。使用 limit 参数进行初始限制请求,并使用响应中的最后一个条目作为后续限制请求中的 marker 参数值。

新功能,版本 2.35

响应

名称

入参

类型

描述

keypairs

body

数组

密钥对对象数组。

keypair

body

对象

密钥对对象。

name

body

字符串

密钥对的名称。

public_key

body

字符串

密钥对的公钥。

fingerprint

body

字符串

密钥对的指纹。

type

body

字符串

密钥对的类型。允许的值为 sshx509

版本 2.2 中新增

keypairs_links (可选)

body

数组

与密钥对相关的链接。有关更多信息,请参阅 API 指南 / 链接和引用

新功能,版本 2.35

示例:列出密钥对 (v2.35):JSON 响应

{
    "keypairs": [
        {
            "keypair": {
                "fingerprint": "7e:eb:ab:24:ba:d1:e1:88:ae:9a:fb:66:53:df:d3:bd",
                "name": "keypair-5d935425-31d5-48a7-a0f1-e76e9813f2c3",
                "type": "ssh",
                "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCkF3MX59OrlBs3dH5CU7lNmvpbrgZxSpyGjlnE8Flkirnc/Up22lpjznoxqeoTAwTW034k7Dz6aYIrZGmQwe2TkE084yqvlj45Dkyoj95fW/sZacm0cZNuL69EObEGHdprfGJQajrpz22NQoCD8TFB8Wv+8om9NH9Le6s+WPe98WC77KLw8qgfQsbIey+JawPWl4O67ZdL5xrypuRjfIPWjgy/VH85IXg/Z/GONZ2nxHgSShMkwqSFECAC5L3PHB+0+/12M/iikdatFSVGjpuHvkLOs3oe7m6HlOfluSJ85BzLWBbvva93qkGmLg4ZAc8rPh2O+YIsBUHNLLMM/oQp Generated-by-Nova\n"
            }
        }
    ],
    "keypairs_links": [
        {
            "href": "http://openstack.example.com/v2.1/6f70656e737461636b20342065766572/os-keypairs?limit=1&marker=keypair-5d935425-31d5-48a7-a0f1-e76e9813f2c3",
            "rel": "next"
        }
    ]
}
POST
/os-keypairs

导入(或创建)密钥对。

导入(或生成)密钥对。

警告

从 2.92 版本开始,不再可能生成密钥对。

正常响应代码:200, 201

注意

在版本 2.2 中,成功状态代码从 200 更改为 201。

错误响应代码:badRequest(400),unauthorized(401),forbidden(403),conflict(409)

请求

名称

入参

类型

描述

keypair

body

对象

密钥对对象。

name

body

字符串

用于稍后引用密钥对的名称。

注意

自微版本 2.92 起,允许的字符是 ASCII 字母 [a-zA-Z],数字 [0-9] 和以下特殊字符:[@._- ]

public_key

body

字符串

要导入的公钥 SSH。在微版本 2.92 之前是可选的:如果您省略此值,将为您生成一个密钥对。请务必保存此密钥,因为将来无法再次获取此私钥。

type (可选)

body

字符串

密钥对的类型。允许的值为 sshx509

版本 2.2 中新增

user_id (可选)

body

字符串

密钥对的用户 ID。这允许管理员用户上传非自己的密钥。

版本 2.10 中新增

示例:创建或导入密钥对 (v2.10):JSON 请求

{
    "keypair": {
        "name": "keypair-d20a3d59-9433-4b79-8726-20b431d89c78",
        "type": "ssh",
        "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDx8nkQv/zgGgB4rMYmIf+6A4l6Rr+o/6lHBQdW5aYd44bd8JttDCE/F/pNRr0lRE+PiqSPO8nDPHw0010JeMH9gYgnnFlyY3/OcJ02RhIPyyxYpv9FhY+2YiUkpwFOcLImyrxEsYXpD/0d3ac30bNH6Sw9JD9UZHYcpSxsIbECHw== Generated-by-Nova",
        "user_id": "fake"
    }
}

示例:导入密钥对 (v2.92):JSON 请求

{
    "keypair": {
        "name": "me.and.myself@this.nice.domain.com mooh.",
        "type": "ssh",
        "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDx8nkQv/zgGgB4rMYmIf+6A4l6Rr+o/6lHBQdW5aYd44bd8JttDCE/F/pNRr0lRE+PiqSPO8nDPHw0010JeMH9gYgnnFlyY3/OcJ02RhIPyyxYpv9FhY+2YiUkpwFOcLImyrxEsYXpD/0d3ac30bNH6Sw9JD9UZHYcpSxsIbECHw== Generated-by-Nova",
        "user_id": "fake"
    }
}

响应

名称

入参

类型

描述

keypair

body

对象

密钥对对象。

name

body

字符串

密钥对的名称。

public_key

body

字符串

密钥对的公钥。

fingerprint

body

字符串

密钥对的指纹。

user_id

body

字符串

密钥对的用户 ID。

private_key (可选)

body

字符串

如果在创建时未提供公钥,将为您构建一个新的密钥对,并在初始创建调用期间返回私钥。请务必保存此密钥,因为将来无法再次获取此私钥。

在版本 2.91 之前可用。

type

body

字符串

密钥对的类型。允许的值为 sshx509

版本 2.2 中新增

示例:创建或导入密钥对 (v2.10):JSON 响应

{
    "keypair": {
        "fingerprint": "1e:2c:9b:56:79:4b:45:77:f9:ca:7a:98:2c:b0:d5:3c",
        "name": "keypair-803a1926-af78-4b05-902a-1d6f7a8d9d3e",
        "type": "ssh",
        "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDx8nkQv/zgGgB4rMYmIf+6A4l6Rr+o/6lHBQdW5aYd44bd8JttDCE/F/pNRr0lRE+PiqSPO8nDPHw0010JeMH9gYgnnFlyY3/OcJ02RhIPyyxYpv9FhY+2YiUkpwFOcLImyrxEsYXpD/0d3ac30bNH6Sw9JD9UZHYcpSxsIbECHw== Generated-by-Nova",
        "user_id": "fake"
    }
}

示例:导入密钥对 (v2.92):JSON 响应

{
    "keypair": {
        "fingerprint": "1e:2c:9b:56:79:4b:45:77:f9:ca:7a:98:2c:b0:d5:3c",
        "name": "me.and.myself@this.nice.domain.com mooh.",
        "type": "ssh",
        "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDx8nkQv/zgGgB4rMYmIf+6A4l6Rr+o/6lHBQdW5aYd44bd8JttDCE/F/pNRr0lRE+PiqSPO8nDPHw0010JeMH9gYgnnFlyY3/OcJ02RhIPyyxYpv9FhY+2YiUkpwFOcLImyrxEsYXpD/0d3ac30bNH6Sw9JD9UZHYcpSxsIbECHw== Generated-by-Nova",
        "user_id": "fake"
    }
}
GET
/os-keypairs/{keypair_name}

显示密钥对详细信息。

显示与帐户关联的密钥对的详细信息。

正常响应代码:200

错误响应代码:unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

keypair_name

路径

字符串

密钥对的名称。

user_id (可选)

查询

字符串

这允许管理员用户操作指定用户 ID 的密钥对。

版本 2.10 中新增

响应

名称

入参

类型

描述

keypair

body

对象

密钥对对象。

created_at

body

字符串

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

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

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

deleted

body

布尔值

一个布尔值,指示此密钥对是否已被删除。值始终为 false(未删除)。

deleted_at

body

none

它始终为 null

fingerprint

body

字符串

密钥对的指纹。

id

body

整数

密钥对的 ID。

name

body

字符串

密钥对的名称。

public_key

body

字符串

密钥对的公钥。

updated_at

body

none

它始终为 null

user_id

body

字符串

密钥对的用户 ID。

type

body

字符串

密钥对的类型。允许的值为 sshx509

版本 2.2 中新增

示例:显示密钥对详细信息 (v2.10):JSON 响应

{
    "keypair": {
        "fingerprint": "44:fe:29:6e:23:14:b9:53:5b:65:82:58:1c:fe:5a:c3",
        "name": "keypair-6638abdb-c4e8-407c-ba88-c8dd7cc3c4f1",
        "type": "ssh",
        "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC1HTrHCbb9NawNLSV8N6tSa8i637+EC2dA+lsdHHfQlT54t+N0nHhJPlKWDLhc579j87vp6RDFriFJ/smsTnDnf64O12z0kBaJpJPH2zXrBkZFK6q2rmxydURzX/z0yLSCP77SFJ0fdXWH2hMsAusflGyryHGX20n+mZK6mDrxVzGxEz228dwQ5G7Az5OoZDWygH2pqPvKjkifRw0jwUKf3BbkP0QvANACOk26cv16mNFpFJfI1N3OC5lUsZQtKGR01ptJoWijYKccqhkAKuo902tg/qup58J5kflNm7I61sy1mJon6SGqNUSfoQagqtBH6vd/tU1jnlwZ03uUroAL Generated-by-Nova\n",
        "user_id": "fake",
        "deleted": false,
        "created_at": "2014-05-07T12:06:13.681238",
        "updated_at": null,
        "deleted_at": null,
        "id": 1
    }
}
DELETE
/os-keypairs/{keypair_name}

删除密钥对。

删除密钥对。

正常响应代码:202, 204

注意

在版本 2.2 中,正常返回代码为 204,以匹配不返回正文内容的事实。

错误响应代码:unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

keypair_name

路径

字符串

密钥对的名称。

user_id (可选)

查询

字符串

这允许管理员用户操作指定用户 ID 的密钥对。

版本 2.10 中新增

响应

成功的 DELETE 查询没有响应正文内容

配额 (limits)

显示项目的速率和绝对限制。

GET
/limits

显示速率和绝对限制。

显示项目的速率和绝对限制。

正常响应代码:200

错误响应代码:未授权(401)、禁止(403)

请求

名称

入参

类型

描述

reserved (可选)

查询

整数

指定资源总数是否包含预留资源。

  • 0:不包含预留资源。

  • 除 0 以外的值:包含预留资源。

如果指定非整数值,则与 0 相同。

tenant_id (可选)

查询

字符串

指定要显示速率和绝对限制的项目 ID(租户 ID)。此参数只能由管理员指定。

响应

名称

入参

类型

描述

限制

body

对象

包含部署内绝对限制的数据结构。

absolute

body

对象

设置部署内配额限制的名称/值对和资源使用情况的名称/值对。

maxServerGroupMembers

body

整数

每个服务器组允许的成员数。

maxServerGroups

body

整数

每个租户允许的服务器组数。

maxServerMeta

body

整数

每个服务器允许的元数据项数。

maxTotalCores

body

整数

每个租户允许的服务器核心数。

maxTotalInstances

body

整数

每个租户允许的服务器数量。

maxTotalKeypairs

body

整数

每个用户允许的密钥对数量。

maxTotalRAMSize

body

整数

每个租户允许的服务器 RAM 量(以 MiB 为单位)。

totalCoresUsed

body

整数

每个租户已使用的服务器核心数。如果指定了 reserved 查询参数且其值不为 0,则还包括预留服务器核心的数量。

totalInstancesUsed

body

整数

每个租户中的服务器数量。如果指定了 reserved 查询参数且其值不为 0,则还包括预留服务器的数量。

totalRAMUsed

body

整数

每个租户中已使用的服务器 RAM 量。如果指定了 reserved 查询参数且其值不为 0,则还包括预留服务器 RAM 的数量。

totalServerGroupsUsed

body

整数

每个租户中已使用的服务器组数。如果指定了 reserved 查询参数且其值不为 0,则还包括预留服务器组的数量。

maxSecurityGroupRules

body

整数

每个安全组允许的规则数。

在版本 2.35 之前可用。

maxSecurityGroups

body

整数

每个租户允许的安全组数。

在版本 2.35 之前可用。

maxTotalFloatingIps

body

整数

每个租户允许的浮动 IP 地址数。

在版本 2.35 之前可用。

totalFloatingIpsUsed

body

整数

每个租户中已使用的浮动 IP 地址数。如果指定了 reserved 查询参数且其值不为 0,则还包括预留浮动 IP 地址的数量。

在版本 2.35 之前可用。

totalSecurityGroupsUsed

body

整数

每个租户中已使用的安全组数。如果指定了 reserved 查询参数且其值不为 0,则还包括预留安全组的数量。

在版本 2.35 之前可用。

maxImageMeta

body

整数

每个镜像允许的元数据项数。从 2.39 版本开始,此字段已从“os-limits”响应中删除,因为“image-metadata”代理 API 已被弃用。

在版本 2.38 之前可用。

maxPersonality

body

整数

每个租户允许注入的文件数。

在版本 2.56 之前可用

maxPersonalitySize

body

整数

每个注入文件的允许内容字节数。

在版本 2.56 之前可用

rate

body

数组

为了向后兼容而提供的空列表。

示例:显示速率和绝对限制:JSON 响应

{
    "limits": {
        "absolute": {
            "maxImageMeta": 128,
            "maxPersonality": 5,
            "maxPersonalitySize": 10240,
            "maxSecurityGroupRules": -1,
            "maxSecurityGroups": -1,
            "maxServerMeta": 128,
            "maxTotalCores": 20,
            "maxTotalFloatingIps": -1,
            "maxTotalInstances": 10,
            "maxTotalKeypairs": 100,
            "maxTotalRAMSize": 51200,
            "maxServerGroups": 10,
            "maxServerGroupMembers": 10,
            "totalCoresUsed": 0,
            "totalInstancesUsed": 0,
            "totalRAMUsed": 0,
            "totalSecurityGroupsUsed": 0,
            "totalFloatingIpsUsed": 0,
            "totalServerGroupsUsed": 0
        },
        "rate": []
    }
}

主机聚合 (os-aggregates)

创建和管理主机聚合。聚合为计算节点组分配元数据。

策略默认设置仅允许具有管理员角色的用户执行与聚合相关的操作。云提供商可以通过 策略文件配置 更改这些权限。

GET
/os-aggregates

列出聚合。

列出所有聚合。包括每个聚合的 ID、名称和可用性区域。

正常响应代码:200

错误响应代码:未授权(401)、禁止(403)

响应

名称

入参

类型

描述

aggregates

body

数组

现有聚合列表。

availability_zone

body

字符串

主机聚合的可用性区域。

created_at

body

字符串

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

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

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

deleted_at

body

字符串

资源删除的日期和时间。如果资源尚未删除,此字段将为 null,日期和时间戳格式为 ISO 8601

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

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

deleted

body

布尔值

一个布尔值,指示此聚合是否已被删除;如果尚未删除,则显示 false

hosts

body

数组

此聚合中的主机 ID 列表。

id

body

整数

主机聚合的 ID。

metadata

body

对象

与聚合关联的元数据键值对。

name

body

字符串

主机聚合的名称。

updated_at

body

字符串

资源更新的日期和时间,如果资源尚未更新,此字段将显示为 null。日期和时间戳格式为 ISO 8601

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

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

uuid

body

字符串

主机聚合的 UUID。

新功能,版本 2.41

示例:列出聚合 (v2.41):JSON 响应

{
    "aggregates": [
        {
            "availability_zone": "london",
            "created_at": "2016-12-27T23:47:32.911515",
            "deleted": false,
            "deleted_at": null,
            "hosts": [
                "compute"
            ],
            "id": 1,
            "metadata": {
                "availability_zone": "london"
            },
            "name": "name",
            "updated_at": null,
            "uuid": "6ba28ba7-f29b-45cc-a30b-6e3a40c2fb14"
        }
    ]
}
POST
/os-aggregates

创建聚合。

创建聚合。如果指定了可选的 availability_zone,则聚合将被创建为可用性区域,并且该可用性区域对普通用户可见。

正常响应代码:200

错误响应代码:badRequest(400),unauthorized(401),forbidden(403),conflict(409)

请求

名称

入参

类型

描述

聚合

body

对象

主机聚合对象。

name

body

字符串

主机聚合的名称。

availability_zone (可选)

body

字符串

主机聚合的可用性区域。您应该使用自定义可用性区域而不是 os-availability-zone API 返回的默认值。可用性区域的名称不得包含“:”。

示例:创建聚合:JSON 请求

{
    "aggregate":
    {
        "name": "name",
        "availability_zone": "london"
    }
}

响应

名称

入参

类型

描述

聚合

body

对象

主机聚合对象。

availability_zone

body

字符串

主机聚合的可用性区域。

created_at

body

字符串

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

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

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

deleted_at

body

字符串

资源删除的日期和时间。如果资源尚未删除,此字段将为 null,日期和时间戳格式为 ISO 8601

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

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

deleted

body

布尔值

一个布尔值,指示此聚合是否已被删除;如果尚未删除,则显示 false

id

body

整数

主机聚合的 ID。

name

body

字符串

主机聚合的名称。

updated_at

body

字符串

资源更新的日期和时间,如果资源尚未更新,此字段将显示为 null。日期和时间戳格式为 ISO 8601

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

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

uuid

body

字符串

主机聚合的 UUID。

新功能,版本 2.41

示例:创建聚合 (v2.41):JSON 响应

{
    "aggregate": {
        "availability_zone": "london",
        "created_at": "2016-12-27T22:51:32.877711",
        "deleted": false,
        "deleted_at": null,
        "id": 1,
        "name": "name",
        "updated_at": null,
        "uuid": "86a0da0e-9f0c-4f51-a1e0-3c25edab3783"
    }
}
GET
/os-aggregates/{aggregate_id}

显示聚合详细信息。

显示聚合的详细信息。详细信息包括主机和元数据。

正常响应代码:200

错误响应代码:unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

aggregate_id

路径

整数

聚合的 ID。

响应

名称

入参

类型

描述

聚合

body

对象

主机聚合对象。

availability_zone

body

字符串

主机聚合的可用性区域。

created_at

body

字符串

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

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

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

deleted_at

body

字符串

资源删除的日期和时间。如果资源尚未删除,此字段将为 null,日期和时间戳格式为 ISO 8601

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

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

deleted

body

布尔值

一个布尔值,指示此聚合是否已被删除;如果尚未删除,则显示 false

hosts

body

数组

主机信息的数组。

id

body

整数

主机聚合的 ID。

metadata

body

对象

与聚合关联的元数据键值对。

name

body

字符串

主机聚合的名称。

updated_at

body

字符串

资源更新的日期和时间,如果资源尚未更新,此字段将显示为 null。日期和时间戳格式为 ISO 8601

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

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

uuid

body

字符串

主机聚合的 UUID。

新功能,版本 2.41

示例:显示聚合详细信息 (v2.41):JSON 响应

{
    "aggregate": {
        "availability_zone": "london",
        "created_at": "2016-12-27T23:47:30.563527",
        "deleted": false,
        "deleted_at": null,
        "hosts": [],
        "id": 1,
        "metadata": {
            "availability_zone": "london"
        },
        "name": "name",
        "updated_at": null,
        "uuid": "fd0a5b12-7e8d-469d-bfd5-64a6823e7407"
    }
}
PUT
/os-aggregates/{aggregate_id}

更新聚合。

更新聚合的名称和/或可用性区域。如果要更新的聚合中的主机已位于给定的可用性区域中,则请求将以 400 错误失败。

正常响应代码:200

错误响应代码:badRequest(400),unauthorized(401),forbidden(403),itemNotFound(404),conflict(409)

请求

名称

入参

类型

描述

aggregate_id

路径

整数

聚合的 ID。

聚合

body

对象

主机聚合对象。

name (可选)

body

字符串

主机聚合的名称。

availability_zone (可选)

body

字符串

主机聚合的可用性区域。您应该使用自定义可用性区域而不是 os-availability-zone API 返回的默认值。可用性区域的名称不得包含“:”。

警告

您不应更改或取消设置聚合的可用性区域,因为该聚合中的主机可能包含服务器,这可能会影响这些服务器迁移到另一个主机的能力。

示例:更新聚合:JSON 请求

{
    "aggregate":
    {
        "name": "newname",
        "availability_zone": "nova2"
    }
}

响应

名称

入参

类型

描述

聚合

body

对象

主机聚合对象。

availability_zone

body

字符串

主机聚合的可用性区域。

created_at

body

字符串

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

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

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

deleted_at

body

字符串

资源删除的日期和时间。如果资源尚未删除,此字段将为 null,日期和时间戳格式为 ISO 8601

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

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

deleted

body

布尔值

一个布尔值,指示此聚合是否已被删除;如果尚未删除,则显示 false

hosts

body

数组

主机信息的数组。

id

body

整数

主机聚合的 ID。

metadata

body

对象

与聚合关联的元数据键值对。

name

body

字符串

主机聚合的名称。

updated_at

body

字符串

资源更新的日期和时间,如果资源尚未更新,此字段将显示为 null。日期和时间戳格式为 ISO 8601

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

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

uuid

body

字符串

主机聚合的 UUID。

新功能,版本 2.41

示例:更新聚合 (v2.41):JSON 响应

{
    "aggregate": {
        "availability_zone": "nova2",
        "created_at": "2016-12-27T23:47:32.897139",
        "deleted": false,
        "deleted_at": null,
        "hosts": [],
        "id": 1,
        "metadata": {
            "availability_zone": "nova2"
        },
        "name": "newname",
        "updated_at": "2016-12-27T23:47:33.067180",
        "uuid": "6f74e3f3-df28-48f3-98e1-ac941b1c5e43"
    }
}
DELETE
/os-aggregates/{aggregate_id}

删除聚合。

删除聚合。

正常响应代码:200

错误响应代码:badRequest(400)、unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

aggregate_id

路径

整数

聚合的 ID。

响应

成功的 DELETE 操作的响应体为空。

POST
/os-aggregates/{aggregate_id}/action

添加主机。

将主机添加到聚合。

在请求体中指定 add_host 操作和主机名。

不允许将带有服务器的主机移至可用性区域之间。此类请求将被拒绝并返回 409 错误。

正常响应代码:200

错误响应代码:badRequest(400),unauthorized(401),forbidden(403),itemNotFound(404),conflict(409)

请求

名称

入参

类型

描述

aggregate_id

路径

整数

聚合的 ID。

add_host

body

对象

用于将主机添加到聚合的 add_host 对象。

host

body

字符串

主机的名称。

示例:添加主机:JSON 请求

{
    "add_host": {
        "host": "21549b2f665945baaa7101926a00143c"
    }
}

响应

名称

入参

类型

描述

聚合

body

对象

主机聚合对象。

availability_zone

body

字符串

主机聚合的可用性区域。

created_at

body

字符串

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

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

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

deleted_at

body

字符串

资源删除的日期和时间。如果资源尚未删除,此字段将为 null,日期和时间戳格式为 ISO 8601

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

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

deleted

body

布尔值

一个布尔值,指示此聚合是否已被删除;如果尚未删除,则显示 false

hosts

body

数组

主机信息的数组。

id

body

整数

主机聚合的 ID。

metadata

body

对象

与聚合关联的元数据键值对。

name

body

字符串

主机聚合的名称。

updated_at

body

字符串

资源更新的日期和时间,如果资源尚未更新,此字段将显示为 null。日期和时间戳格式为 ISO 8601

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

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

uuid

body

字符串

主机聚合的 UUID。

新功能,版本 2.41

示例:添加主机 (v2.41):JSON 响应

{
    "aggregate": {
        "availability_zone": "london",
        "created_at": "2016-12-27T23:47:30.594805",
        "deleted": false,
        "deleted_at": null,
        "hosts": [
            "compute"
        ],
        "id": 1,
        "metadata": {
            "availability_zone": "london"
        },
        "name": "name",
        "updated_at": null,
        "uuid": "d1842372-89c5-4fbd-ad5a-5d2e16c85456"
    }
}
POST
/os-aggregates/{aggregate_id}/action

移除主机。

将主机从聚合中移除。

在请求体中指定 remove_host 操作和主机名。

不允许将带有服务器的主机移至可用性区域之间。此类请求将被拒绝并返回 409 错误。

正常响应代码:200

错误响应代码:badRequest(400),unauthorized(401),forbidden(403),itemNotFound(404),conflict(409)

请求

名称

入参

类型

描述

aggregate_id

路径

整数

聚合的 ID。

remove_host

body

对象

用于将主机从聚合中移除的 add_host 对象。

host

body

字符串

主机的名称。

示例:移除主机:JSON 请求

{
    "remove_host": {
        "host": "bf1454b3d71145d49fca2101c56c728d"
    }
}

响应

名称

入参

类型

描述

聚合

body

对象

主机聚合对象。

availability_zone

body

字符串

主机聚合的可用性区域。

created_at

body

字符串

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

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

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

deleted_at

body

字符串

资源删除的日期和时间。如果资源尚未删除,此字段将为 null,日期和时间戳格式为 ISO 8601

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

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

deleted

body

布尔值

一个布尔值,指示此聚合是否已被删除;如果尚未删除,则显示 false

hosts

body

数组

主机信息的数组。

id

body

整数

主机聚合的 ID。

metadata

body

对象

与聚合关联的元数据键值对。

name

body

字符串

主机聚合的名称。

updated_at

body

字符串

资源更新的日期和时间,如果资源尚未更新,此字段将显示为 null。日期和时间戳格式为 ISO 8601

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

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

uuid

body

字符串

主机聚合的 UUID。

新功能,版本 2.41

示例:移除主机 (v2.41):JSON 响应

{
    "aggregate": {
        "availability_zone": "london",
        "created_at": "2016-12-27T23:47:30.594805",
        "deleted": false,
        "deleted_at": null,
        "hosts": [],
        "id": 1,
        "metadata": {
            "availability_zone": "london"
        },
        "name": "name",
        "updated_at": null,
        "uuid": "d1842372-89c5-4fbd-ad5a-5d2e16c85456"
    }
}
POST
/os-aggregates/{aggregate_id}/action

创建或更新聚合元数据。

创建或替换聚合的元数据。

在请求体中指定 set_metadata 操作和元数据信息。

正常响应代码:200

错误响应代码:badRequest(400)、unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

aggregate_id

路径

整数

聚合的 ID。

set_metadata

body

对象

用于为主机聚合设置元数据的 set_metadata 对象。

metadata

body

对象

与聚合关联的元数据键值对。每个元数据键值对的最大大小为 255 字节。

新键将被添加到现有的聚合元数据中。对于现有键,如果值为 null,则删除该条目,否则更新该值。请注意,特殊的 availability_zone 元数据条目不能被设置为 null

警告

您不应更改聚合的可用性区域,因为该聚合中的主机可能包含服务器,这可能会影响这些服务器迁移到另一个主机的能力。

示例:创建或更新聚合元数据:JSON 请求

{
    "set_metadata":
        {
            "metadata":
                {
                    "key": "value"
                }
        }
}

响应

名称

入参

类型

描述

聚合

body

对象

主机聚合对象。

availability_zone

body

字符串

主机聚合的可用性区域。

created_at

body

字符串

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

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

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

deleted_at

body

字符串

资源删除的日期和时间。如果资源尚未删除,此字段将为 null,日期和时间戳格式为 ISO 8601

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

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

deleted

body

布尔值

一个布尔值,指示此聚合是否已被删除;如果尚未删除,则显示 false

hosts

body

数组

主机信息的数组。

id

body

整数

主机聚合的 ID。

metadata

body

对象

与聚合关联的元数据键值对。

name

body

字符串

主机聚合的名称。

updated_at

body

字符串

资源更新的日期和时间,如果资源尚未更新,此字段将显示为 null。日期和时间戳格式为 ISO 8601

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

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

uuid

body

字符串

主机聚合的 UUID。

新功能,版本 2.41

示例:创建或更新聚合元数据 (v2.41):JSON 响应

{
    "aggregate": {
        "availability_zone": "london",
        "created_at": "2016-12-27T23:59:18.623100",
        "deleted": false,
        "deleted_at": null,
        "hosts": [],
        "id": 1,
        "metadata": {
            "availability_zone": "london",
            "key": "value"
        },
        "name": "name",
        "updated_at": "2016-12-27T23:59:18.723348",
        "uuid": "26002bdb-62cc-41bd-813a-0ad22db32625"
    }
}
POST
/os-aggregates/{aggregate_id}/images

请求聚合的镜像预缓存。

请求将一组镜像预缓存到所引用聚合内的计算节点上。

此 API 从微版本 2.81 开始可用。

正常响应代码:202

错误响应代码:badRequest(400)、unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

aggregate_id

路径

整数

聚合的 ID。

cache

body

数组

要缓存的镜像对象列表。

cache.id

body

字符串

镜像的 ID。

示例:请求聚合的镜像预缓存 (v2.81):JSON 请求

{
    "cache":
    [
        {"id": "70a599e0-31e7-49b7-b260-868f441e862b"}
    ]
}

响应

响应体始终为空。

辅助卷快照 (os-assisted-volume-snapshots)

通过模拟器/虚拟机监控器创建和删除快照。仅支持 qcow2 文件格式。

此 API 仅由 libvirt 计算驱动程序实现。

缺乏存储(如 NFS)的内部快照可以使用模拟器/虚拟机监控器添加快照功能。这用于通过在这些卷上将数据存储为 qcow2 文件来启用 NFS 等后端的卷快照。

此 API 仅由 Cinder 调用,Cinder 使用它来为扩展 remotefs Cinder 驱动程序的驱动程序创建快照。

POST
/os-assisted-volume-snapshots

创建辅助卷快照。

创建辅助卷快照。

正常响应代码:200

错误响应代码:badRequest(400),unauthorized(401),forbidden(403)

请求

名称

入参

类型

描述

snapshot

body

对象

用于创建快照的快照的局部表示。

volume_id

body

字符串

源卷 ID。

create_info

body

对象

快照创建信息。

create_info.snapshot_id

body

字符串

快照的 UUID。

create_info.type

body

字符串

快照类型。有效值为 qcow2

create_info.new_file

body

字符串

块存储创建的 qcow2 文件名,它将成为 VM 的活动镜像。

create_info.id (可选)

body

字符串

这是一个任意字符串,会返回给用户。

示例:创建辅助卷快照:JSON 请求

{
    "snapshot": {
        "volume_id": "521752a6-acf6-4b2d-bc7a-119f9148cd8c",
        "create_info": {
            "snapshot_id": "421752a6-acf6-4b2d-bc7a-119f9148cd8c",
            "type": "qcow2",
            "new_file": "new_file_name",
            "id": "421752a6-acf6-4b2d-bc7a-119f9148cd8c"
        }
    }
}

响应

名称

入参

类型

描述

snapshot

body

对象

用于创建快照的快照的局部表示。

id

body

字符串

它与请求体中发送的任意字符串相同。

注意

此字符串按原样返回给用户,并且不会在 Nova 内部使用。因此,请使用 snapshot_id 进行后续操作。

volumeId

body

字符串

源卷 ID。

示例:创建辅助卷快照:JSON 响应

{
    "snapshot": {
        "id": "421752a6-acf6-4b2d-bc7a-119f9148cd8c",
        "volumeId": "521752a6-acf6-4b2d-bc7a-119f9148cd8c"
    }
}
DELETE
/os-assisted-volume-snapshots/{snapshot_id}

删除辅助卷快照。

删除辅助卷快照。

要发出此请求,请将 delete_info 查询参数添加到 URI,如下所示:

DELETE /os-assisted-volume-snapshots/421752a6-acf6-4b2d-bc7a-119f9148cd8c?delete_info=’{“volume_id”: “521752a6-acf6-4b2d-bc7a-119f9148cd8c”}’

正常响应代码:204

错误响应代码:badRequest(400)、unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

snapshot_id

路径

字符串

快照的 UUID。

delete_info

查询

字符串

快照删除信息。包括关联卷的 ID。例如:

DELETE /os-assisted-volume-snapshots/421752a6-acf6-4b2d-bc7a-119f9148cd8c?delete_info='{"volume_id": "521752a6-acf6-4b2d-bc7a-119f9148cd8c"}'

响应

成功的 DELETE 查询没有响应正文内容

可用区 (os-availability-zone)

列出并获取详细的可用性区域信息。

可用性区域是通过在主机聚合 API 的 createupdatecreate or update 方法中设置 availability_zone 参数来创建或更新的。有关更多详细信息,请参阅 主机聚合

GET
/os-availability-zone

获取可用性区域信息。

列出可用性区域信息。

正常响应代码:200

错误响应代码:未授权(401)、禁止(403)

响应

名称

入参

类型

描述

availabilityZoneInfo

body

数组

可用区信息列表。

hosts

body

none

它始终为 null

zoneName

body

字符串

可用区名称。

zoneState

body

对象

可用区的当前状态。

available

body

布尔值

如果可用性区域可用,则返回 true。


示例:获取可用性区域信息

{
    "availabilityZoneInfo": [
        {
            "hosts": null,
            "zoneName": "nova",
            "zoneState": {
                "available": true
            }
        }
    ]
}
GET
/os-availability-zone/detail

获取详细的可用性区域信息。

获取详细的可用性区域信息。策略默认设置仅允许具有管理员角色的用户执行此操作。云提供商可以通过 policy.json 文件更改这些权限。

正常响应代码:200

错误响应代码:未授权(401)、禁止(403)

响应

名称

入参

类型

描述

availabilityZoneInfo

body

数组

可用区信息列表。

hosts

body

对象

包含主机信息列表的对象。主机信息由主机和服务对象组成。服务对象返回三个参数,表示服务的状态:activeavailableupdated_at

zoneName

body

字符串

可用区名称。

zoneState

body

对象

可用区的当前状态。

available

body

布尔值

如果可用性区域可用,则返回 true。


示例:获取详细的可用性区域信息

{
    "availabilityZoneInfo": [
        {
            "hosts": {
                "conductor": {
                    "nova-conductor": {
                        "active": true,
                        "available": true,
                        "updated_at": null
                    }
                },
                "scheduler": {
                    "nova-scheduler": {
                        "active": true,
                        "available": true,
                        "updated_at": null
                    }
                }
            },
            "zoneName": "internal",
            "zoneState": {
                "available": true
            }
        },
        {
            "hosts": {
                "compute": {
                    "nova-compute": {
                        "active": true,
                        "available": true,
                        "updated_at": null
                    }
                }
            },
            "zoneName": "nova",
            "zoneState": {
                "available": true
            }
        }
    ]
}

虚拟机监控程序 (os-hypervisors)

列出所有虚拟机监控程序,显示所有计算节点上所有虚拟机监控程序的摘要统计信息,显示虚拟机监控程序的详细信息,显示虚拟机监控程序的正常运行时间,根据给定的 hypervisor_hostname_pattern 列出虚拟机监控程序上的所有服务器,或按给定的 hypervisor_hostname_pattern 搜索虚拟机监控程序。

GET
/os-hypervisors

列出虚拟机监控程序。

列出虚拟机监控程序。

策略默认仅允许具有管理员角色的用户执行此操作。云提供商可以通过 policy.json 文件更改这些权限。

正常响应代码:200

错误响应代码:badRequest(400),unauthorized(401),forbidden(403)

请求

名称

入参

类型

描述

limit (可选)

查询

整数

请求项目页面大小。返回最多限制值数量的项目。使用 limit 参数进行初始限制请求,并在后续限制请求中使用响应中最后一个已查看项目的 ID 作为 marker 参数值。

新功能,版本 2.33

marker (可选)

查询

整数

最后一个已查看项目的 ID。使用 limit 参数进行初始限制请求,并在后续限制请求中使用响应中最后一个已查看项目的 ID 作为 marker 参数值。

新功能,版本 2.33

在版本 2.52 之前可用。

marker (可选)

查询

字符串

最后一个看到的项的 UUID。使用 limit 参数进行初始限制请求,并使用响应中的最后一个项的 ID 作为后续限制请求中的 marker 参数值。

新功能,版本 2.53

hypervisor_hostname_pattern (可选)

查询

字符串

虚拟机监控程序主机名或其一部分。使用主机名匹配此模式的主机监控程序将被选中。

注意

limitmarker 分页查询参数在按主机名模式列出虚拟机监控程序时不被支持。此外,当使用此查询参数时,响应中不会返回 links

新功能,版本 2.53

with_servers (可选)

查询

布尔值

在响应输出中包含属于每个虚拟机监控程序的所有服务器。

新功能,版本 2.53

响应

名称

入参

类型

描述

hypervisors

body

数组

虚拟机监控程序信息数组。

hypervisor_hostname

body

字符串

Nova virt 驱动程序提供的虚拟机监控程序主机名。对于 Ironic 驱动程序,它是 Ironic 节点 UUID。

id

body

整数

虚拟机监控程序的 ID。

在版本 2.52 之前可用。

id

body

字符串

虚拟机监控程序的 UUID 格式 ID。

新功能,版本 2.53

state

body

字符串

虚拟机监控程序的 estado。为 updown 之一。

status

body

字符串

虚拟机监控程序的 status。为 enableddisabled 之一。

hypervisor_links (可选)

body

数组

指向虚拟机监控程序资源的链接。有关更多信息,请参阅 API 指南 / 链接和引用

新功能,版本 2.33

servers (可选)

body

数组

服务器对象的列表。在微版本 2.75 之前,此字段仅在非空时返回。从微版本 2.75 开始,除非提供了 with_servers 查询参数且其值为 false,否则始终会返回此字段。

新功能,版本 2.53

servers.uuid (可选)

body

字符串

服务器 ID。

新功能,版本 2.53

servers.name (可选)

body

字符串

服务器名称。

新功能,版本 2.53

示例:列出虚拟机监控程序 (v2.33):JSON 响应

{
    "hypervisors": [
        {
            "hypervisor_hostname": "host1",
            "id": 2,
            "state": "up",
            "status": "enabled"
        }
    ],
    "hypervisors_links": [
        {
            "href": "http://openstack.example.com/v2.1/6f70656e737461636b20342065766572/os-hypervisors?limit=1&marker=2",
            "rel": "next"
        }
    ]
}

示例:列出带服务器的虚拟机监控程序 (v2.53):JSON 响应

{
    "hypervisors": [
        {
            "hypervisor_hostname": "fake-mini",
            "id": "b1e43b5f-eec1-44e0-9f10-7b4945c0226d",
            "state": "up",
            "status": "enabled",
            "servers": [
                {
                    "name": "test_server1",
                    "uuid": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
                },
                {
                    "name": "test_server2",
                    "uuid": "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"
                }
            ]
        }
    ]
}
GET
/os-hypervisors/detail

列出虚拟机监控程序的详细信息。

列出虚拟机监控程序的详细信息。

策略默认仅允许具有管理员角色的用户执行此操作。云提供商可以通过 policy.json 文件更改这些权限。

正常响应代码:200

错误响应代码:badRequest(400),unauthorized(401),forbidden(403)

请求

名称

入参

类型

描述

limit (可选)

查询

整数

请求项目页面大小。返回最多限制值数量的项目。使用 limit 参数进行初始限制请求,并在后续限制请求中使用响应中最后一个已查看项目的 ID 作为 marker 参数值。

新功能,版本 2.33

marker (可选)

查询

整数

最后一个已查看项目的 ID。使用 limit 参数进行初始限制请求,并在后续限制请求中使用响应中最后一个已查看项目的 ID 作为 marker 参数值。

新功能,版本 2.33

在版本 2.52 之前可用。

marker (可选)

查询

字符串

最后一个看到的项的 UUID。使用 limit 参数进行初始限制请求,并使用响应中的最后一个项的 ID 作为后续限制请求中的 marker 参数值。

新功能,版本 2.53

hypervisor_hostname_pattern (可选)

查询

字符串

虚拟机监控程序主机名或其一部分。使用主机名匹配此模式的主机监控程序将被选中。

注意

limitmarker 分页查询参数在按主机名模式列出虚拟机监控程序时不被支持。此外,当使用此查询参数时,响应中不会返回 links

新功能,版本 2.53

with_servers (可选)

查询

布尔值

在响应输出中包含属于每个虚拟机监控程序的所有服务器。

新功能,版本 2.53

响应

名称

入参

类型

描述

hypervisors

body

数组

虚拟机监控程序信息数组。

cpu_info

body

对象

包含 CPU 信息(如 archmodelvendorfeaturestopology)的字典。此字段的内容特定于虚拟机监控程序。

注意

自 2.28 版本起,cpu_info 字段作为字典返回,而不是字符串。

在版本 2.87 之前可用。

current_workload

body

整数

current_workload 是虚拟机监控程序负责的任务数量。这将等于或大于活动 VM 的数量(当 VM 正在删除且虚拟机监控程序仍在清理时,可能会大于)。

在版本 2.87 之前可用。

status

body

字符串

虚拟机监控程序的 status。为 enableddisabled 之一。

state

body

字符串

虚拟机监控程序的 estado。为 updown 之一。

disk_available_least

body

整数

此虚拟机监控程序上实际可用的磁盘空间(以 GiB 为单位)。如果配置了用于超额分配的分配比例,则此值可能为负数。这是故意的,因为它提供了有关磁盘超额分配量的见解。

在版本 2.87 之前可用。

host_ip

body

字符串

虚拟机监控程序主机的 IP 地址。

free_disk_gb

body

整数

此虚拟机监控程序上剩余的可用磁盘空间(以 GiB 为单位)。这不考虑用于超额分配的分配比例,因此此值可能为负数。

在版本 2.87 之前可用。

free_ram_mb

body

整数

此虚拟机监控程序上的可用 RAM(以 MiB 为单位)。这不考虑用于超额分配的分配比例,因此此值可能为负数。

在版本 2.87 之前可用。

hypervisor_hostname

body

字符串

Nova virt 驱动程序提供的虚拟机监控程序主机名。对于 Ironic 驱动程序,它是 Ironic 节点 UUID。

hypervisor_type

body

字符串

虚拟机监控程序的类型。

hypervisor_version

body

整数

虚拟机监控程序的版本。

id

body

整数

虚拟机监控程序的 ID。

在版本 2.52 之前可用。

id

body

字符串

虚拟机监控程序的 UUID 格式 ID。

新功能,版本 2.53

local_gb

body

整数

此虚拟机监控程序上的磁盘(以 GiB 为单位)。这不考虑用于超额分配的分配比例,因此此值与已用计数可能存在差异。

在版本 2.87 之前可用。

local_gb_used

body

整数

此虚拟机监控程序上已使用的磁盘空间(以 GiB 为单位)。

在版本 2.87 之前可用。

memory_mb

body

整数

此虚拟机监控程序的内存(以 MiB 为单位)。这不考虑用于超额分配的分配比例,因此此值与已用计数可能存在差异。

在版本 2.87 之前可用。

memory_mb_used

body

整数

此虚拟机监控程序上已使用的内存(以 MiB 为单位)。

在版本 2.87 之前可用。

running_vms

body

整数

此虚拟机监控程序上正在运行的 VM 数量。

在版本 2.87 之前可用。

servers (可选)

body

数组

服务器对象的列表。在微版本 2.75 之前,此字段仅在非空时返回。从微版本 2.75 开始,除非提供了 with_servers 查询参数且其值为 false,否则始终会返回此字段。

新功能,版本 2.53

servers.uuid (可选)

body

字符串

服务器 ID。

新功能,版本 2.53

servers.name (可选)

body

字符串

服务器名称。

新功能,版本 2.53

服务

body

对象

虚拟机监控程序服务对象。

service.host

body

字符串

主机的名称。

service.id

body

整数

服务的 ID。

在版本 2.52 之前可用。

service.id

body

字符串

服务的 UUID 格式 ID。

新功能,版本 2.53

service.disabled_reason

body

字符串

服务的禁用原因,如果服务已启用或禁用且未提供原因,则为 null

uptime

body

字符串

此 API 的响应格式取决于所使用的虚拟机监控程序驱动程序。libvirt 驱动程序直接返回 uptime 命令的输出,z/VM 驱动程序返回 ILP 时间。所有其他驱动程序始终返回 null。请注意,此值会被缓存并定期更新。

新功能,版本 2.88

vcpus

body

整数

此虚拟机监控程序中的 vCPU 数量。这不考虑用于超额分配的分配比例,因此此值与已用计数可能存在差异。

在版本 2.87 之前可用。

vcpus_used

body

整数

此虚拟机监控程序上已使用的 vCPU 数量。

在版本 2.87 之前可用。

hypervisor_links (可选)

body

数组

指向虚拟机监控程序资源的链接。有关更多信息,请参阅 API 指南 / 链接和引用

新功能,版本 2.33

示例:列出虚拟机监控程序的详细信息 (v2.33):JSON 响应

{
    "hypervisors": [
        {
            "cpu_info": {
                "arch": "x86_64",
                "model": "Nehalem",
                "vendor": "Intel",
                "features": [
                    "pge",
                    "clflush"
                ],
                "topology": {
                    "cores": 1,
                    "threads": 1,
                    "sockets": 4
                }
            },
            "current_workload": 0,
            "status": "enabled",
            "state": "up",
            "disk_available_least": 0,
            "host_ip": "1.1.1.1",
            "free_disk_gb": 1028,
            "free_ram_mb": 7680,
            "hypervisor_hostname": "host1",
            "hypervisor_type": "fake",
            "hypervisor_version": 1000,
            "id": 2,
            "local_gb": 1028,
            "local_gb_used": 0,
            "memory_mb": 8192,
            "memory_mb_used": 512,
            "running_vms": 0,
            "service": {
                "host": "host1",
                "id": 6,
                "disabled_reason": null
            },
            "vcpus": 2,
            "vcpus_used": 0
        }
    ],
    "hypervisors_links": [
        {
            "href": "http://openstack.example.com/v2.1/6f70656e737461636b20342065766572/os-hypervisors/detail?limit=1&marker=2",
            "rel": "next"
        }
    ]
}

示例:列出带服务器的虚拟机监控程序的详细信息 (v2.53):JSON 响应

{
    "hypervisors": [
        {
            "cpu_info": {
                "arch": "x86_64",
                "model": "Nehalem",
                "vendor": "Intel",
                "features": [
                    "pge",
                    "clflush"
                ],
                "topology": {
                    "cores": 1,
                    "threads": 1,
                    "sockets": 4
                }
            },
            "current_workload": 0,
            "status": "enabled",
            "state": "up",
            "disk_available_least": 0,
            "host_ip": "1.1.1.1",
            "free_disk_gb": 1028,
            "free_ram_mb": 7680,
            "hypervisor_hostname": "host2",
            "hypervisor_type": "fake",
            "hypervisor_version": 1000,
            "id": "1bb62a04-c576-402c-8147-9e89757a09e3",
            "local_gb": 1028,
            "local_gb_used": 0,
            "memory_mb": 8192,
            "memory_mb_used": 512,
            "running_vms": 0,
            "service": {
                "host": "host1",
                "id": "62f62f6e-a713-4cbe-87d3-3ecf8a1e0f8d",
                "disabled_reason": null
            },
            "vcpus": 2,
            "vcpus_used": 0
        }
    ],
    "hypervisors_links": [
        {
            "href": "http://openstack.example.com/v2.1/6f70656e737461636b20342065766572/os-hypervisors/detail?limit=1&marker=1bb62a04-c576-402c-8147-9e89757a09e3",
            "rel": "next"
        }
    ]
}

示例:列出虚拟机监控程序的详细信息 (v2.88):JSON 响应

{
    "hypervisors": [
        {
            "host_ip": "192.168.1.135",
            "hypervisor_hostname": "host2",
            "hypervisor_type": "fake",
            "hypervisor_version": 1000,
            "id": "f6d28711-9c10-470e-8b31-c03f498b0032",
            "service": {
                "disabled_reason": null,
                "host": "host2",
                "id": "21bbb5fb-ec98-48b3-89cf-c94402c55611"
            },
            "state": "up",
            "status": "enabled",
            "uptime": null
        }
    ],
    "hypervisors_links": [
        {
            "href": "http://openstack.example.com/v2.1/6f70656e737461636b20342065766572/os-hypervisors/detail?limit=1&marker=f6d28711-9c10-470e-8b31-c03f498b0032",
            "rel": "next"
        }
    ]
}
GET
/os-hypervisors/statistics

显示虚拟机监控程序统计信息(已弃用)。

显示所有计算节点上所有已启用虚拟机监控程序的摘要统计信息。

警告

此 API 已弃用,从微版本 2.88 开始将返回 HTTP 404 错误。请使用 placement API 来获取有关跨虚拟机监控程序的资源使用情况的信息。

策略默认仅允许具有管理员角色的用户执行此操作。云提供商可以通过 policy.json 文件更改这些权限。

注意

如前所述,响应中代表总计的某些参数不考虑分配比例。这可能导致总计与使用量之间存在差异。使用 placement API 可以更准确地表示状态。

正常响应代码:200

错误响应代码:unauthorized(401)、forbidden(403)、itemNotFound(404)

响应

名称

入参

类型

描述

hypervisor_statistics

body

对象

虚拟机监控程序统计摘要对象。

count

body

整数

虚拟机监控程序的数量。

current_workload

body

整数

current_workload 是虚拟机监控程序负责的任务数量。这将等于或大于活动 VM 的数量(当 VM 正在删除且虚拟机监控程序仍在清理时,可能会大于)。

disk_available_least

body

整数

所有虚拟机监控程序上实际可用的磁盘空间(以 GiB 为单位)。如果配置了用于超额分配的分配比例,则此值可能为负数。这是故意的,因为它提供了有关磁盘超额分配量的见解。

free_disk_gb

body

整数

所有虚拟机监控程序上剩余的可用磁盘空间(以 GiB 为单位)。这不考虑用于超额分配的分配比例,因此此值可能为负数。

free_ram_mb

body

整数

所有虚拟机监控程序上的可用 RAM(以 MiB 为单位)。这不考虑用于超额分配的分配比例,因此此值可能为负数。

local_gb

body

整数

所有虚拟机监控程序上的磁盘(以 GiB 为单位)。这不考虑用于超额分配的分配比例,因此此值与已用计数可能存在差异。

local_gb_used

body

整数

所有虚拟机监控程序上已使用的磁盘空间(以 GiB 为单位)。

memory_mb

body

整数

所有虚拟机监控程序的内存(以 MiB 为单位)。这不考虑用于超额分配的分配比例,因此此值与已用计数可能存在差异。

memory_mb_used

body

整数

所有虚拟机监控程序上已使用的内存(以 MiB 为单位)。

running_vms

body

整数

所有虚拟机监控程序上正在运行的 VM 的总数。

vcpus

body

整数

所有虚拟机监控程序中的 vCPU 数量。这不考虑用于超额分配的分配比例,因此此值与已用计数可能存在差异。

vcpus_used

body

整数

所有虚拟机监控程序上已使用的 vCPU 数量。

示例:显示虚拟机监控程序统计信息:JSON 响应

{
    "hypervisor_statistics": {
        "count": 1,
        "current_workload": 0,
        "disk_available_least": 0,
        "free_disk_gb": 1028,
        "free_ram_mb": 7680,
        "local_gb": 1028,
        "local_gb_used": 0,
        "memory_mb": 8192,
        "memory_mb_used": 512,
        "running_vms": 0,
        "vcpus": 2,
        "vcpus_used": 0
    }
}
GET
/os-hypervisors/{hypervisor_id}

显示虚拟机监控程序详细信息。

显示给定虚拟机监控程序的详细信息。

策略默认仅允许具有管理员角色的用户执行此操作。云提供商可以通过 policy.json 文件更改这些权限。

注意

如前所述,响应中代表总计的某些参数不考虑分配比例。这可能导致总计与使用量之间存在差异。使用 placement API 可以更准确地表示状态。

正常响应代码:200

错误响应代码:badRequest(400)、unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

hypervisor_id

路径

整数

虚拟机监控程序的 ID。

在版本 2.52 之前可用。

hypervisor_id

路径

字符串

虚拟机监控程序的 UUID 格式 ID。

新功能,版本 2.53

with_servers (可选)

查询

布尔值

在响应输出中包含属于每个虚拟机监控程序的所有服务器。

新功能,版本 2.53

响应

名称

入参

类型

描述

管理程序

body

对象

虚拟机监控程序对象。

cpu_info

body

对象

包含 CPU 信息(如 archmodelvendorfeaturestopology)的字典。此字段的内容特定于虚拟机监控程序。

注意

自 2.28 版本起,cpu_info 字段作为字典返回,而不是字符串。

在版本 2.87 之前可用。

state

body

字符串

虚拟机监控程序的 estado。为 updown 之一。

status

body

字符串

虚拟机监控程序的 status。为 enableddisabled 之一。

current_workload

body

整数

current_workload 是虚拟机监控程序负责的任务数量。这将等于或大于活动 VM 的数量(当 VM 正在删除且虚拟机监控程序仍在清理时,可能会大于)。

在版本 2.87 之前可用。

disk_available_least

body

整数

此虚拟机监控程序上实际可用的磁盘空间(以 GiB 为单位)。如果配置了用于超额分配的分配比例,则此值可能为负数。这是故意的,因为它提供了有关磁盘超额分配量的见解。

在版本 2.87 之前可用。

host_ip

body

字符串

虚拟机监控程序主机的 IP 地址。

free_disk_gb

body

整数

此虚拟机监控程序上剩余的可用磁盘空间(以 GiB 为单位)。这不考虑用于超额分配的分配比例,因此此值可能为负数。

在版本 2.87 之前可用。

free_ram_mb

body

整数

此虚拟机监控程序上的可用 RAM(以 MiB 为单位)。这不考虑用于超额分配的分配比例,因此此值可能为负数。

在版本 2.87 之前可用。

hypervisor_hostname

body

字符串

Nova virt 驱动程序提供的虚拟机监控程序主机名。对于 Ironic 驱动程序,它是 Ironic 节点 UUID。

hypervisor_type

body

字符串

虚拟机监控程序的类型。

hypervisor_version

body

整数

虚拟机监控程序的版本。

id

body

整数

虚拟机监控程序的 ID。

在版本 2.52 之前可用。

id

body

字符串

虚拟机监控程序的 UUID 格式 ID。

新功能,版本 2.53

local_gb

body

整数

此虚拟机监控程序上的磁盘(以 GiB 为单位)。这不考虑用于超额分配的分配比例,因此此值与已用计数可能存在差异。

在版本 2.87 之前可用。

local_gb_used

body

整数

此虚拟机监控程序上已使用的磁盘空间(以 GiB 为单位)。

在版本 2.87 之前可用。

memory_mb

body

整数

此虚拟机监控程序的内存(以 MiB 为单位)。这不考虑用于超额分配的分配比例,因此此值与已用计数可能存在差异。

在版本 2.87 之前可用。

memory_mb_used

body

整数

此虚拟机监控程序上已使用的内存(以 MiB 为单位)。

在版本 2.87 之前可用。

running_vms

body

整数

此虚拟机监控程序上正在运行的 VM 数量。

在版本 2.87 之前可用。

servers (可选)

body

数组

服务器对象的列表。在微版本 2.75 之前,此字段仅在非空时返回。从微版本 2.75 开始,除非提供了 with_servers 查询参数且其值为 false,否则始终会返回此字段。

新功能,版本 2.53

servers.uuid (可选)

body

字符串

服务器 ID。

新功能,版本 2.53

servers.name (可选)

body

字符串

服务器名称。

新功能,版本 2.53

服务

body

对象

虚拟机监控程序服务对象。

service.host

body

字符串

主机的名称。

service.id

body

整数

服务的 ID。

在版本 2.52 之前可用。

service.id

body

字符串

服务的 UUID 格式 ID。

新功能,版本 2.53

service.disabled_reason

body

字符串

服务的禁用原因,如果服务已启用或禁用且未提供原因,则为 null

uptime

body

字符串

此 API 的响应格式取决于所使用的虚拟机监控程序驱动程序。libvirt 驱动程序直接返回 uptime 命令的输出,z/VM 驱动程序返回 ILP 时间。所有其他驱动程序始终返回 null。请注意,此值会被缓存并定期更新。

新功能,版本 2.88

vcpus

body

整数

此虚拟机监控程序中的 vCPU 数量。这不考虑用于超额分配的分配比例,因此此值与已用计数可能存在差异。

在版本 2.87 之前可用。

vcpus_used

body

整数

此虚拟机监控程序上已使用的 vCPU 数量。

在版本 2.87 之前可用。

示例:显示虚拟机监控程序详细信息 (v2.28):JSON 响应

{
    "hypervisor": {
        "cpu_info": {
            "arch": "x86_64",
            "model": "Nehalem",
            "vendor": "Intel",
            "features": [
                "pge",
                "clflush"
            ],
            "topology": {
                "cores": 1,
                "threads": 1,
                "sockets": 4
            }
        },
        "state": "up",
        "status": "enabled",
        "current_workload": 0,
        "disk_available_least": 0,
        "host_ip": "1.1.1.1",
        "free_disk_gb": 1028,
        "free_ram_mb": 7680,
        "hypervisor_hostname": "fake-mini",
        "hypervisor_type": "fake",
        "hypervisor_version": 1000,
        "id": 1,
        "local_gb": 1028,
        "local_gb_used": 0,
        "memory_mb": 8192,
        "memory_mb_used": 512,
        "running_vms": 0,
        "service": {
            "host": "043b3cacf6f34c90a7245151fc8ebcda",
            "id": 2,
            "disabled_reason": null
        },
        "vcpus": 2,
        "vcpus_used": 0
    }
}

示例:显示带服务器的虚拟机监控程序详细信息 (v2.53):JSON 响应

{
    "hypervisor": {
        "cpu_info": {
            "arch": "x86_64",
            "model": "Nehalem",
            "vendor": "Intel",
            "features": [
                "pge",
                "clflush"
            ],
            "topology": {
                "cores": 1,
                "threads": 1,
                "sockets": 4
            }
        },
        "state": "up",
        "status": "enabled",
        "servers": [
            {
                "name": "test_server1",
                "uuid": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
            },
            {
                "name": "test_server2",
                "uuid": "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"
            }
        ],
        "current_workload": 0,
        "disk_available_least": 0,
        "host_ip": "1.1.1.1",
        "free_disk_gb": 1028,
        "free_ram_mb": 7680,
        "hypervisor_hostname": "fake-mini",
        "hypervisor_type": "fake",
        "hypervisor_version": 1000,
        "id": "b1e43b5f-eec1-44e0-9f10-7b4945c0226d",
        "local_gb": 1028,
        "local_gb_used": 0,
        "memory_mb": 8192,
        "memory_mb_used": 512,
        "running_vms": 0,
        "service": {
            "host": "043b3cacf6f34c90a7245151fc8ebcda",
            "id": "5d343e1d-938e-4284-b98b-6a2b5406ba76",
            "disabled_reason": null
        },
        "vcpus": 2,
        "vcpus_used": 0
    }
}

示例:显示虚拟机监控程序的详细信息 (v2.88):JSON 响应

{
    "hypervisor": {
        "host_ip": "192.168.1.135",
        "hypervisor_hostname": "fake-mini",
        "hypervisor_type": "fake",
        "hypervisor_version": 1000,
        "id": "a68a56ab-9c42-47c0-9309-879e4a6dbe86",
        "servers": [
            {
                "name": "test_server1",
                "uuid": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
            },
            {
                "name": "test_server2",
                "uuid": "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"
            }
        ],
        "service": {
            "disabled_reason": null,
            "host": "compute",
            "id": "8495059a-a079-4ab4-ad6f-cf45b81c877d"
        },
        "state": "up",
        "status": "enabled",
        "uptime": null
    }
}
GET
/os-hypervisors/{hypervisor_id}/uptime

显示虚拟机监控程序正常运行时间(已弃用)。

显示给定虚拟机监控程序的正常运行时间。

警告

此 API 已弃用,从微版本 2.88 开始将返回 HTTP 404 错误。使用 2.88 及更高版本的微版本调用 Show Hypervisor Details API 来获取此信息。

策略默认仅允许具有管理员角色的用户执行此操作。云提供商可以通过 policy.json 文件更改这些权限。

正常响应代码:200

错误响应代码:badRequest(400),unauthorized(401),forbidden(403),itemNotFound(404),NotImplemented(501)

请求

名称

入参

类型

描述

hypervisor_id

路径

整数

虚拟机监控程序的 ID。

在版本 2.52 之前可用。

hypervisor_id

路径

字符串

虚拟机监控程序的 UUID 格式 ID。

新功能,版本 2.53

响应

名称

入参

类型

描述

管理程序

body

对象

虚拟机监控程序对象。

hypervisor_hostname

body

字符串

Nova virt 驱动程序提供的虚拟机监控程序主机名。对于 Ironic 驱动程序,它是 Ironic 节点 UUID。

id

body

整数

虚拟机监控程序的 ID。

在版本 2.52 之前可用。

id

body

字符串

虚拟机监控程序的 UUID 格式 ID。

新功能,版本 2.53

state

body

字符串

虚拟机监控程序的 estado。为 updown 之一。

status

body

字符串

虚拟机监控程序的 status。为 enableddisabled 之一。

uptime

body

字符串

虚拟机监控程序的总正常运行时间和平均负载信息。

示例:显示虚拟机监控程序正常运行时间:JSON 响应

{
    "hypervisor": {
        "hypervisor_hostname": "fake-mini",
        "id": 1,
        "state": "up",
        "status": "enabled",
        "uptime": " 08:32:11 up 93 days, 18:25, 12 users,  load average: 0.20, 0.12, 0.14"
    }
}

示例:显示虚拟机监控程序正常运行时间 (v2.53):JSON 响应

{
    "hypervisor": {
        "hypervisor_hostname": "fake-mini",
        "id": "b1e43b5f-eec1-44e0-9f10-7b4945c0226d",
        "state": "up",
        "status": "enabled",
        "uptime": " 08:32:11 up 93 days, 18:25, 12 users,  load average: 0.20, 0.12, 0.14"
    }
}
GET
/os-hypervisors/{hypervisor_hostname_pattern}/search

搜索虚拟机监控程序(已弃用)。

按给定的虚拟机监控程序主机名或其一部分搜索虚拟机监控程序。

警告

此 API 自微版本 2.53 起已弃用。请使用微版本 2.53 及更高版本,并带有 hypervisor_hostname_pattern 查询参数的 List Hypervisors API。

策略默认仅允许具有管理员角色的用户执行此操作。云提供商可以通过 policy.json 文件更改这些权限。

正常响应代码:200

错误响应代码:unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

hypervisor_hostname_pattern

路径

字符串

虚拟机监控程序主机名或其一部分。使用主机名匹配此模式的主机监控程序将被选中。

响应

名称

入参

类型

描述

hypervisors

body

数组

虚拟机监控程序信息数组。

hypervisor_hostname

body

字符串

Nova virt 驱动程序提供的虚拟机监控程序主机名。对于 Ironic 驱动程序,它是 Ironic 节点 UUID。

id

body

整数

虚拟机监控程序的 ID。

state

body

字符串

虚拟机监控程序的 estado。为 updown 之一。

status

body

字符串

虚拟机监控程序的 status。为 enableddisabled 之一。

示例:搜索虚拟机监控程序:JSON 响应

{
    "hypervisors": [
        {
            "hypervisor_hostname": "fake-mini",
            "id": 1,
            "state": "up",
            "status": "enabled"
        }
    ]
}
GET
/os-hypervisors/{hypervisor_hostname_pattern}/servers

列出虚拟机监控程序服务器(已弃用)。

列出所有属于主机名与给定虚拟机监控程序主机名或其一部分匹配的虚拟机监控程序的所有服务器。

警告

此 API 自微版本 2.53 起已弃用。请使用微版本 2.53 及更高版本,并带有 hypervisor_hostname_patternwith_servers 查询参数的 List Hypervisors API。

策略默认仅允许具有管理员角色的用户执行此操作。云提供商可以通过 policy.json 文件更改这些权限。

正常响应代码:200

错误响应代码:unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

hypervisor_hostname_pattern

路径

字符串

虚拟机监控程序主机名或其一部分。使用主机名匹配此模式的主机监控程序将被选中。

响应

名称

入参

类型

描述

hypervisors

body

数组

虚拟机监控程序信息数组。

hypervisor_hostname

body

字符串

Nova virt 驱动程序提供的虚拟机监控程序主机名。对于 Ironic 驱动程序,它是 Ironic 节点 UUID。

id

body

整数

虚拟机监控程序的 ID。

state

body

字符串

虚拟机监控程序的 estado。为 updown 之一。

status

body

字符串

虚拟机监控程序的 status。为 enableddisabled 之一。

servers

body

数组

服务器对象的列表。

servers.uuid

body

字符串

API 将事件分派到的服务器实例的 UUID。您必须将此实例分配给一个主机。否则,此调用不会将事件分派给实例。

servers.name

body

字符串

服务器名称。

示例:列出虚拟机监控程序服务器:JSON 响应

{
    "hypervisors": [
        {
            "hypervisor_hostname": "fake-mini",
            "id": 1,
            "state": "up",
            "status": "enabled",
            "servers": [
                {
                    "name": "test_server1",
                    "uuid": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
                },
                {
                    "name": "test_server2",
                    "uuid": "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"
                }
            ]
        }
    ]
}

服务器使用情况审计日志 (os-instance-usage-audit-log)

审计云的服务器使用情况。此 API 取决于在所有需要使用情况审计的计算主机上都设置了 instance_usage_audit 配置选项。

策略默认设置仅允许具有管理员角色的用户执行所有 os-instance-usage-audit-log 相关操作。云提供商可以通过 policy.json 文件更改这些权限。

GET
/os-instance_usage_audit_log

列出服务器使用情况审计。

列出所有计算主机上所有服务器的使用情况审计,这些主机配置了使用情况审计。

正常响应代码:200

错误响应代码:未授权(401)、禁止(403)

响应

名称

入参

类型

描述

instance_usage_audit_logs

body

对象

实例使用情况审计日志信息的对象。

hosts_not_run

body

数组

已运行实例审计任务的主机列表。

log

body

对象

实例使用情况审计日志的对象。

errors

body

整数

错误数量。

instances

body

整数

实例数量。

message

body

字符串

实例使用情况审计任务的日志消息。

state

body

字符串

实例使用情况审计任务的状态。为 DONERUNNING

num_hosts

body

整数

主机数量。

num_hosts_done

body

整数

已完成实例审计任务的主机数量。

num_hosts_not_run

body

整数

未运行实例审计任务的主机数量。

num_hosts_running

body

整数

正在运行实例审计任务的主机数量。

overall_status

body

字符串

实例审计任务的总体状态。

M of N hosts done. K errors.

M 是在此期间完成实例审计任务的主机数量。值 N 是所有主机数的数量。值 K 是导致错误的实例审计任务的主机数量。如果在周期内所有主机都完成了实例审计任务,则总体状态如下:

ALL hosts done. K errors.

period_beginning

body

字符串

实例使用情况审计周期的开始时间。例如:2016-05-01 00:00:00

period_ending

body

字符串

实例使用情况审计周期的结束时间。例如:2016-06-01 00:00:00

total_errors

body

整数

实例审计任务错误的的总数。

total_instances

body

整数

周期内的 VM 实例总数。

示例:列出所有服务器的使用情况审计

{
    "instance_usage_audit_logs": {
        "hosts_not_run": [
            "samplehost3"
        ],
        "log": {
            "samplehost0": {
                "errors": 1,
                "instances": 1,
                "message": "Instance usage audit ran for host samplehost0, 1 instances in 0.01 seconds.",
                "state": "DONE"
            },
            "samplehost1": {
                "errors": 1,
                "instances": 2,
                "message": "Instance usage audit ran for host samplehost1, 2 instances in 0.01 seconds.",
                "state": "DONE"
            },
            "samplehost2": {
                "errors": 1,
                "instances": 3,
                "message": "Instance usage audit ran for host samplehost2, 3 instances in 0.01 seconds.",
                "state": "DONE"
            }
        },
        "num_hosts": 4,
        "num_hosts_done": 3,
        "num_hosts_not_run": 1,
        "num_hosts_running": 0,
        "overall_status": "3 of 4 hosts done. 3 errors.",
        "period_beginning": "2012-06-01 00:00:00",
        "period_ending": "2012-07-01 00:00:00",
        "total_errors": 3,
        "total_instances": 6
    }
}
GET
/os-instance_usage_audit_log/{before_timestamp}

列出指定时间之前的用法审计。

列出在指定时间之前发生的用法审计。

正常响应代码:200

错误响应代码:badRequest(400),unauthorized(401),forbidden(403)

请求

名称

入参

类型

描述

before_timestamp

路径

字符串

按之前列出用法审计的日期和时间过滤响应。日期和时间戳格式如下:

CCYY-MM-DD hh:mm:ss.NNNNNN

例如:2015-08-27 09:49:582015-08-27 09:49:58.123456

响应

名称

入参

类型

描述

instance_usage_audit_log

body

对象

实例使用情况审计日志信息的对象。

hosts_not_run

body

数组

已运行实例审计任务的主机列表。

log

body

对象

实例使用情况审计日志的对象。

errors

body

整数

错误数量。

instances

body

整数

实例数量。

message

body

字符串

实例使用情况审计任务的日志消息。

state

body

字符串

实例使用情况审计任务的状态。为 DONERUNNING

num_hosts

body

整数

主机数量。

num_hosts_done

body

整数

已完成实例审计任务的主机数量。

num_hosts_not_run

body

整数

未运行实例审计任务的主机数量。

num_hosts_running

body

整数

正在运行实例审计任务的主机数量。

overall_status

body

字符串

实例审计任务的总体状态。

M of N hosts done. K errors.

M 是在此期间完成实例审计任务的主机数量。值 N 是所有主机数的数量。值 K 是导致错误的实例审计任务的主机数量。如果在周期内所有主机都完成了实例审计任务,则总体状态如下:

ALL hosts done. K errors.

period_beginning

body

字符串

实例使用情况审计周期的开始时间。例如:2016-05-01 00:00:00

period_ending

body

字符串

实例使用情况审计周期的结束时间。例如:2016-06-01 00:00:00

total_errors

body

整数

实例审计任务错误的的总数。

total_instances

body

整数

周期内的 VM 实例总数。

示例:列出指定时间之前的用法审计

{
    "instance_usage_audit_log": {
        "hosts_not_run": [
            "samplehost3"
        ],
        "log": {
            "samplehost0": {
                "errors": 1,
                "instances": 1,
                "message": "Instance usage audit ran for host samplehost0, 1 instances in 0.01 seconds.",
                "state": "DONE"
            },
            "samplehost1": {
                "errors": 1,
                "instances": 2,
                "message": "Instance usage audit ran for host samplehost1, 2 instances in 0.01 seconds.",
                "state": "DONE"
            },
            "samplehost2": {
                "errors": 1,
                "instances": 3,
                "message": "Instance usage audit ran for host samplehost2, 3 instances in 0.01 seconds.",
                "state": "DONE"
            }
        },
        "num_hosts": 4,
        "num_hosts_done": 3,
        "num_hosts_not_run": 1,
        "num_hosts_running": 0,
        "overall_status": "3 of 4 hosts done. 3 errors.",
        "period_beginning": "2012-06-01 00:00:00",
        "period_ending": "2012-07-01 00:00:00",
        "total_errors": 3,
        "total_instances": 6
    }
}

迁移 (os-migrations)

显示迁移数据。

GET
/os-migrations

列出迁移。

列出迁移。

策略默认仅允许具有管理员角色的用户执行此操作。云提供商可以通过 policy.json 文件更改这些权限。

从微版本 2.59 开始,响应按 created_atid 降序排序。

正常响应代码:200

错误响应代码:badRequest(400),unauthorized(401),forbidden(403)

请求

名称

入参

类型

描述

hidden (可选)

查询

整数

迁移的“隐藏”设置用于过滤。如果值为 1,则设置“隐藏”标志。如果值为 0,则不设置“隐藏”标志。但是,“隐藏”设置的迁移始终为 0,因此此参数对过滤迁移无用。

host (可选)

查询

字符串

迁移的源/目标计算节点用于过滤。

instance_uuid (可选)

查询

字符串

迁移操作所基于的实例的 UUID 用于过滤。

migration_type (可选)

查询

字符串

迁移类型用于过滤。有效值为:

  • evacuation

  • live-migration

  • 迁移

  • 调整大小

source_compute (可选)

查询

字符串

源计算节点用于过滤。

status (可选)

查询

字符串

迁移的状态用于过滤。

limit (可选)

查询

整数

请求分页的项目。返回的项目数最多为 limit 值。使用 limit 参数进行初始限制请求,并使用响应中的最后一条可见项目作为后续限制请求的 marker 参数值。

新功能,版本 2.59

marker (可选)

查询

字符串

最后一个看到的迁移的 UUID。使用 limit 参数进行初始限制请求,并使用响应中的最后一个条目作为后续限制请求中的 marker 参数值。

新功能,版本 2.59

changes-since(可选)

查询

字符串

按迁移最后更改的日期和时间戳过滤响应。返回在指定日期和时间戳之后更改的记录。

日期和时间戳格式为 ISO 8601

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

如果包含 ±hh:mm 值,则返回时区作为 UTC 的偏移量。例如,2015-08-27T09:49:58-05:00。如果省略时区,则假定为 UTC 时区。当同时指定 changes-sincechanges-before 时,changes-since 的值必须早于或等于 changes-before 的值,否则 API 将返回 400。

新功能,版本 2.59

changes-before(可选)

查询

字符串

按迁移最后更改的日期和时间戳过滤响应。返回在指定日期和时间戳之前或等于指定日期和时间戳更改的迁移。

日期和时间戳格式为 ISO 8601

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

如果包含 ±hh:mm 值,则返回时区作为 UTC 的偏移量。例如,2015-08-27T09:49:58-05:00。如果省略时区,则假定为 UTC 时区。当同时指定 changes-sincechanges-before 时,changes-before 的值必须晚于或等于 changes-since 的值,否则 API 将返回 400。

版本 2.66 新增

user_id (可选)

查询

字符串

按给定的用户 ID 过滤迁移。

新功能,版本 2.80

project_id (可选)

查询

字符串

按给定的项目 ID 过滤迁移。

新功能,版本 2.80

响应

名称

入参

类型

描述

migrations

body

数组

服务器迁移对象的列表。

created_at

body

字符串

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

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

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

dest_compute

body

字符串

迁移的目标计算节点。

dest_host

body

字符串

迁移的目标主机。

dest_node

body

字符串

迁移的目标节点。

id

body

整数

服务器迁移的 ID。

instance_uuid

body

字符串

服务器的 UUID。

new_instance_type_id

body

整数

resize 情况下,用于调整服务器大小的配置 ID。在其他情况下,此参数与启动迁移时服务器的配置 ID 相同。

注意

这是一个内部 ID,不会在任何其他 API 中公开。特别是,这不是在创建配置期间指定的或自动生成的 ID,也不是通过 GET /flavors API 返回的。

old_instance_type_id

body

整数

启动迁移时服务器的配置 ID。

注意

这是一个内部 ID,不会在任何其他 API 中公开。特别是,这不是在创建配置期间指定的或自动生成的 ID,也不是通过 GET /flavors API 返回的。

source_compute

body

字符串

迁移的源计算节点。

source_node

body

字符串

迁移的源节点。

status

body

字符串

迁移的当前状态。

updated_at

body

字符串

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

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

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

migration_type

body

字符串

服务器迁移的类型。这是 live-migrationmigrationresizeevacuation 之一。

新功能,版本 2.23

links (可选)

body

数组

迁移的链接。如果迁移类型为 live-migration 且迁移状态为 queuedpreparingrunningpost-migrating 之一,则返回此参数。有关更多信息,请参阅 分页集合

新功能,版本 2.23

uuid

body

字符串

迁移的 UUID。

新功能,版本 2.59

migrations_links (可选)

body

数组

与迁移相关的链接。当分页且有更多数据可用时,将返回此参数。有关更多信息,请参阅 分页集合

新功能,版本 2.59

user_id

body

字符串

发起服务器迁移的用户 ID。对于旧的迁移记录,该值可能为 null

新功能,版本 2.80

project_id

body

字符串

发起服务器迁移的项目 ID。对于旧的迁移记录,该值可能为 null

新功能,版本 2.80

示例:列出迁移:JSON 响应

{
    "migrations": [
        {
            "created_at": "2012-10-29T13:42:02.000000",
            "dest_compute": "compute2",
            "dest_host": "1.2.3.4",
            "dest_node": "node2",
            "id": 1234,
            "instance_uuid": "8600d31b-d1a1-4632-b2ff-45c2be1a70ff",
            "new_instance_type_id": 2,
            "old_instance_type_id": 1,
            "source_compute": "compute1",
            "source_node": "node1",
            "status": "done",
            "updated_at": "2012-10-29T13:42:02.000000"
        },
        {
            "created_at": "2013-10-22T13:42:02.000000",
            "dest_compute": "compute20",
            "dest_host": "5.6.7.8",
            "dest_node": "node20",
            "id": 5678,
            "instance_uuid": "9128d044-7b61-403e-b766-7547076ff6c1",
            "new_instance_type_id": 6,
            "old_instance_type_id": 5,
            "source_compute": "compute10",
            "source_node": "node10",
            "status": "done",
            "updated_at": "2013-10-22T13:42:02.000000"
        }
    ]
}

示例:列出迁移 (v2.80)

{
    "migrations": [
        {
            "created_at": "2016-06-23T14:42:02.000000",
            "dest_compute": "compute20",
            "dest_host": "5.6.7.8",
            "dest_node": "node20",
            "id": 4,
            "instance_uuid": "9128d044-7b61-403e-b766-7547076ff6c1",
            "new_instance_type_id": 6,
            "old_instance_type_id": 5,
            "source_compute": "compute10",
            "source_node": "node10",
            "status": "migrating",
            "migration_type": "resize",
            "updated_at": "2016-06-23T14:42:02.000000",
            "uuid": "42341d4b-346a-40d0-83c6-5f4f6892b650",
            "user_id": "78348f0e-97ee-4d70-ad34-189692673ea2",
            "project_id": "9842f0f7-1229-4355-afe7-15ebdbb8c3d8"
        },
        {
            "created_at": "2016-06-23T13:42:02.000000",
            "dest_compute": "compute20",
            "dest_host": "5.6.7.8",
            "dest_node": "node20",
            "id": 3,
            "instance_uuid": "9128d044-7b61-403e-b766-7547076ff6c1",
            "new_instance_type_id": 6,
            "old_instance_type_id": 5,
            "source_compute": "compute10",
            "source_node": "node10",
            "status": "error",
            "migration_type": "resize",
            "updated_at": "2016-06-23T13:42:02.000000",
            "uuid": "32341d4b-346a-40d0-83c6-5f4f6892b650",
            "user_id": "78348f0e-97ee-4d70-ad34-189692673ea2",
            "project_id": "9842f0f7-1229-4355-afe7-15ebdbb8c3d8"
        },
        {
            "created_at": "2016-01-29T12:42:02.000000",
            "dest_compute": "compute2",
            "dest_host": "1.2.3.4",
            "dest_node": "node2",
            "id": 2,
            "instance_uuid": "8600d31b-d1a1-4632-b2ff-45c2be1a70ff",
            "new_instance_type_id": 1,
            "old_instance_type_id": 1,
            "source_compute": "compute1",
            "source_node": "node1",
            "status": "error",
            "migration_type": "live-migration",
            "updated_at": "2016-01-29T12:42:02.000000",
            "uuid": "22341d4b-346a-40d0-83c6-5f4f6892b650",
            "user_id": "5c48ebaa-193f-4c5d-948a-f559cc92cd5e",
            "project_id": "ef92ccff-00f3-46e4-b015-811110e36ee4"
        },
        {
            "created_at": "2016-01-29T11:42:02.000000",
            "dest_compute": "compute2",
            "dest_host": "1.2.3.4",
            "dest_node": "node2",
            "id": 1,
            "instance_uuid": "8600d31b-d1a1-4632-b2ff-45c2be1a70ff",
            "links": [
                {
                    "href": "http://openstack.example.com/v2.1/6f70656e737461636b20342065766572/servers/8600d31b-d1a1-4632-b2ff-45c2be1a70ff/migrations/1",
                    "rel": "self"
                },
                {
                    "href": "http://openstack.example.com/6f70656e737461636b20342065766572/servers/8600d31b-d1a1-4632-b2ff-45c2be1a70ff/migrations/1",
                    "rel": "bookmark"
                }
            ],
            "new_instance_type_id": 1,
            "old_instance_type_id": 1,
            "source_compute": "compute1",
            "source_node": "node1",
            "status": "running",
            "migration_type": "live-migration",
            "updated_at": "2016-01-29T11:42:02.000000",
            "uuid": "12341d4b-346a-40d0-83c6-5f4f6892b650",
            "user_id": "5c48ebaa-193f-4c5d-948a-f559cc92cd5e",
            "project_id": "ef92ccff-00f3-46e4-b015-811110e36ee4"
        }
    ]
}

示例:列出带分页的迁移 (v2.80)

 {
    "migrations": [
        {
            "created_at": "2016-06-23T14:42:02.000000",
            "dest_compute": "compute20",
            "dest_host": "5.6.7.8",
            "dest_node": "node20",
            "id": 4,
            "instance_uuid": "9128d044-7b61-403e-b766-7547076ff6c1",
            "new_instance_type_id": 6,
            "old_instance_type_id": 5,
            "source_compute": "compute10",
            "source_node": "node10",
            "status": "migrating",
            "migration_type": "resize",
            "updated_at": "2016-06-23T14:42:02.000000",
            "uuid": "42341d4b-346a-40d0-83c6-5f4f6892b650",
            "user_id": "78348f0e-97ee-4d70-ad34-189692673ea2",
            "project_id": "9842f0f7-1229-4355-afe7-15ebdbb8c3d8"
        }
    ],
    "migrations_links": [
        {
            "href": "http://openstack.example.com/v2.1/6f70656e737461636b20342065766572/os-migrations?limit=1&marker=42341d4b-346a-40d0-83c6-5f4f6892b650",
            "rel": "next"
        }
    ]
}

服务器迁移 (servers, migrations)

列出、显示、执行服务器迁移操作以及删除服务器迁移。

GET
/servers/{server_id}/migrations

列出迁移。

列出给定服务器的正在进行的实时迁移。

注意

此 API 需要微版本 2.23 或更高版本。

策略默认仅允许具有管理员角色的用户执行此操作。云提供商可以通过 policy.json 文件更改这些权限。

正常响应代码:200

错误响应代码:unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

响应

名称

入参

类型

描述

migrations

body

数组

服务器迁移对象的列表。

created_at

body

字符串

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

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

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

dest_compute

body

字符串

迁移的目标计算节点。

dest_host

body

字符串

迁移的目标主机。

dest_node

body

字符串

迁移的目标节点。

disk_processed_bytes

body

整数

迁移过程中已处理的磁盘量(以字节为单位)。

disk_remaining_bytes

body

整数

仍需迁移的磁盘量(以字节为单位)。

disk_total_bytes

body

整数

需要迁移的磁盘总量,以字节为单位。

id

body

整数

服务器迁移的 ID。

memory_processed_bytes

body

整数

在迁移过程中已处理的内存量,以字节为单位。

memory_remaining_bytes

body

整数

仍需迁移的内存量,以字节为单位。

memory_total_bytes

body

整数

需要迁移的总内存量,以字节为单位。

server_uuid

body

字符串

服务器的 UUID。

source_compute

body

字符串

迁移的源计算节点。

source_node

body

字符串

迁移的源节点。

status

body

字符串

迁移的当前状态。

updated_at

body

字符串

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

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

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

uuid

body

字符串

迁移的 UUID。

新功能,版本 2.59

user_id

body

字符串

发起服务器迁移的用户 ID。对于旧的迁移记录,该值可能为 null

新功能,版本 2.80

project_id

body

字符串

发起服务器迁移的项目 ID。对于旧的迁移记录,该值可能为 null

新功能,版本 2.80

示例 迁移列表 (2.80)

{
    "migrations": [
        {
            "created_at": "2016-01-29T13:42:02.000000",
            "dest_compute": "compute2",
            "dest_host": "1.2.3.4",
            "dest_node": "node2",
            "id": 1,
            "server_uuid": "4cfba335-03d8-49b2-8c52-e69043d1e8fe",
            "source_compute": "compute1",
            "source_node": "node1",
            "status": "running",
            "memory_total_bytes": 123456,
            "memory_processed_bytes": 12345,
            "memory_remaining_bytes": 111111,
            "disk_total_bytes": 234567,
            "disk_processed_bytes": 23456,
            "disk_remaining_bytes": 211111,
            "updated_at": "2016-01-29T13:42:02.000000",
            "uuid": "12341d4b-346a-40d0-83c6-5f4f6892b650",
            "user_id": "8dbaa0f0-ab95-4ffe-8cb4-9c89d2ac9d24",
            "project_id": "5f705771-3aa9-4f4c-8660-0d9522ffdbea"
        }
    ]
}
GET
/servers/{server_id}/migrations/{migration_id}

显示迁移详情

显示指定服务器正在进行的实时迁移的详细信息。

注意

此 API 需要微版本 2.23 或更高版本。

策略默认仅允许具有管理员角色的用户执行此操作。云提供商可以通过 policy.json 文件更改这些权限。

正常响应代码:200

错误响应代码:unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

migration_id

路径

整数

服务器迁移的 ID。

响应

名称

入参

类型

描述

迁移

body

对象

服务器迁移对象。

created_at

body

字符串

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

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

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

dest_compute

body

字符串

迁移的目标计算节点。

dest_host

body

字符串

迁移的目标主机。

dest_node

body

字符串

迁移的目标节点。

disk_processed_bytes

body

整数

迁移过程中已处理的磁盘量(以字节为单位)。

disk_remaining_bytes

body

整数

仍需迁移的磁盘量(以字节为单位)。

disk_total_bytes

body

整数

需要迁移的磁盘总量,以字节为单位。

id

body

整数

服务器迁移的 ID。

memory_processed_bytes

body

整数

在迁移过程中已处理的内存量,以字节为单位。

memory_remaining_bytes

body

整数

仍需迁移的内存量,以字节为单位。

memory_total_bytes

body

整数

需要迁移的总内存量,以字节为单位。

server_uuid

body

字符串

服务器的 UUID。

source_compute

body

字符串

迁移的源计算节点。

source_node

body

字符串

迁移的源节点。

status

body

字符串

迁移的当前状态。

updated_at

body

字符串

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

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

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

uuid

body

字符串

迁移的 UUID。

新功能,版本 2.59

user_id

body

字符串

发起服务器迁移的用户 ID。对于旧的迁移记录,该值可能为 null

新功能,版本 2.80

project_id

body

字符串

发起服务器迁移的项目 ID。对于旧的迁移记录,该值可能为 null

新功能,版本 2.80

示例 显示迁移详情 (2.80)

{
    "migration": {
        "created_at": "2016-01-29T13:42:02.000000",
        "dest_compute": "compute2",
        "dest_host": "1.2.3.4",
        "dest_node": "node2",
        "id": 1,
        "server_uuid": "4cfba335-03d8-49b2-8c52-e69043d1e8fe",
        "source_compute": "compute1",
        "source_node": "node1",
        "status": "running",
        "memory_total_bytes": 123456,
        "memory_processed_bytes": 12345,
        "memory_remaining_bytes": 111111,
        "disk_total_bytes": 234567,
        "disk_processed_bytes": 23456,
        "disk_remaining_bytes": 211111,
        "updated_at": "2016-01-29T13:42:02.000000",
        "uuid": "12341d4b-346a-40d0-83c6-5f4f6892b650",
        "user_id": "8dbaa0f0-ab95-4ffe-8cb4-9c89d2ac9d24",
        "project_id": "5f705771-3aa9-4f4c-8660-0d9522ffdbea"
    }
}
POST
/servers/{server_id}/migrations/{migration_id}/action

强制迁移完成操作 (force_complete 操作)

强制指定服务器上正在进行的实时迁移完成。

在请求体中指定 `force_complete` 操作。

注意

此 API 需要 Microversion 2.22 或更高版本。

注意

并非所有 计算后端 都支持强制完成正在进行的实时迁移。

策略默认仅允许具有管理员角色的用户执行此操作。云提供商可以通过 policy.json 文件更改这些权限。

先决条件

服务器的 OS-EXT-STS:vm_state 值必须为 `active`,OS-EXT-STS:task_state 值必须为 `migrating`。

如果服务器被锁定,您必须拥有管理员权限才能强制完成服务器迁移。

迁移状态必须为 `running`。

异步后置条件

发出此请求后,您通常需要持续轮询服务器状态以确定请求是否成功。

故障排除

如果服务器状态 `MIGRATING` 持续时间过长,则请求可能已失败。请确保您满足先决条件并重新运行请求。如果请求再次失败,请调查计算后端。更多详细信息请参阅 管理员指南

正常响应代码:202

错误响应代码:badRequest(400),unauthorized(401),forbidden(403),itemNotFound(404),conflict(409)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

migration_id

路径

整数

服务器迁移的 ID。

force_complete

body

none

强制完成正在进行的实时迁移的操作。

示例 强制迁移完成 (force_complete 操作)

{
    "force_complete": null
}

响应

成功 POST 操作的响应没有正文内容。

DELETE
/servers/{server_id}/migrations/{migration_id}

删除 (中止) 迁移

中止正在进行的实时迁移。

注意

此 API 需要 Microversion 2.24 或更高版本。

注意

对于 microversion 2.65 或更高版本,您还可以中止处于 `queued` 和 `preparing` 状态的实时迁移。

注意

并非所有 计算后端 都支持中止正在进行的实时迁移。

策略默认仅允许具有管理员角色的用户执行此操作。云提供商可以通过 policy.json 文件更改这些权限。

先决条件

服务器的 OS-EXT-STS:task_state 值必须为 `migrating`。

如果服务器被锁定,您必须拥有管理员权限才能强制完成服务器迁移。

对于 microversion 2.24 到 2.64,迁移状态必须为 `running`;对于 microversion 2.65 及更高版本,迁移状态也可以是 `queued` 和 `preparing`。

异步后置条件

发出此请求后,您通常需要持续轮询服务器状态以确定请求是否成功。您也可以通过以下方式监控迁移:

GET /servers/{server_id}/migrations/{migration_id}

故障排除

如果服务器状态 `MIGRATING` 持续时间过长,则请求可能已失败。请确保您满足先决条件并重新运行请求。如果请求再次失败,请调查计算后端。

正常响应代码:202

错误响应代码:badRequest(400),unauthorized(401),forbidden(403),itemNotFound(404),conflict(409)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

migration_id

路径

整数

服务器迁移的 ID。

响应

成功的 DELETE 操作的响应中没有主体内容。

配额集 (os-quota-sets)

允许管理员根据策略设置,查看默认配额、查看配额详细信息、将配额还原为默认值以及更新项目或项目和用户的配额。

GET
/os-quota-sets/{tenant_id}

显示配额

显示项目或项目和用户的配额。

正常响应代码:200

错误响应代码:badRequest(400),unauthorized(401),forbidden(403)

  • 400 - BadRequest - 您云中的 tenant_id 无效,可能是因为输入错误。

请求

名称

入参

类型

描述

tenant_id

路径

字符串

多租户云中的租户 UUID。

user_id (可选)

查询

字符串

要列出配额的用户 ID。

响应

名称

入参

类型

描述

quota_set

body

对象

一个 quota_set 对象。

cores

body

整数

每个租户允许的服务器核心数。

id

body

字符串

列出配额的租户/用户标识符。

instances

body

整数

每个租户允许的服务器数量。

key_pairs

body

整数

每个用户允许的密钥对数量。

metadata_items

body

整数

每个服务器允许的元数据项数。

ram

body

整数

每个租户允许的服务器 RAM 量(以 MiB 为单位)。

server_groups

body

整数

每个租户允许的服务器组数。

server_group_members

body

整数

每个服务器组允许的成员数。

fixed_ips

body

整数

每个租户允许的固定 IP 地址数量。必须等于或大于允许的服务器数量。

在版本 2.35 之前可用。

floating_ips

body

整数

每个租户允许的浮动 IP 地址数。

在版本 2.35 之前可用。

网络 (可选)

body

整数

每个项目可以创建的私有网络数量。

在版本 2.35 之前可用。

security_group_rules

body

整数

每个安全组允许的规则数。

在版本 2.35 之前可用。

security_groups

body

整数

每个租户允许的安全组数。

在版本 2.35 之前可用。

injected_file_content_bytes

body

整数

每个注入文件的允许内容字节数。

在版本 2.56 之前可用

injected_file_path_bytes

body

整数

每个注入文件路径允许的字节数。

在版本 2.56 之前可用

injected_files

body

整数

每个租户允许注入的文件数。

在版本 2.56 之前可用

示例 显示配额:JSON 响应

{
    "quota_set": {
        "cores": 20,
        "fixed_ips": -1,
        "floating_ips": -1,
        "id": "fake_tenant",
        "injected_file_content_bytes": 10240,
        "injected_file_path_bytes": 255,
        "injected_files": 5,
        "instances": 10,
        "key_pairs": 100,
        "metadata_items": 128,
        "ram": 51200,
        "security_group_rules": -1,
        "security_groups": -1,
        "server_groups": 10,
        "server_group_members": 10
    }
}
PUT
/os-quota-sets/{tenant_id}

更新配额

更新项目或项目和用户的配额。

用户即使配额已被使用且预留配额超过新配额,也可以强制更新。要强制更新,请在请求体中指定 `"force": True` 属性,默认为 `false`。

正常响应代码:200

错误响应代码:badRequest(400),unauthorized(401),forbidden(403)

  • 400 - BadRequest - 您云中的 tenant_id 无效,可能是因为输入错误。

请求

名称

入参

类型

描述

tenant_id

路径

字符串

多租户云中的租户 UUID。

user_id (可选)

查询

字符串

要设置配额的用户 ID。

quota_set

body

对象

一个 quota_set 对象。

force (可选)

body

布尔值

即使配额已被使用且预留配额超过新配额,您也可以强制更新。要强制更新,请指定 `"force": "True"`。默认为 `False`。

核心 (可选)

body

整数

每个租户允许的服务器核心数。

实例 (可选)

body

整数

每个租户允许的服务器数量。

密钥对 (可选)

body

整数

每个用户允许的密钥对数量。

元数据项 (可选)

body

整数

每个服务器允许的元数据项数。

RAM (可选)

body

整数

每个租户允许的服务器 RAM 量(以 MiB 为单位)。

服务器组 (可选)

body

整数

每个租户允许的服务器组数。

服务器组成员 (可选)

body

整数

每个服务器组允许的成员数。

fixed_ips (可选)

body

整数

每个租户允许的固定 IP 地址数量。必须等于或大于允许的服务器数量。

在版本 2.35 之前可用。

浮动 IP (可选)

body

整数

每个租户允许的浮动 IP 地址数。

在版本 2.35 之前可用。

网络 (可选)

body

整数

每个项目可以创建的私有网络数量。

在版本 2.35 之前可用。

安全组规则 (可选)

body

整数

每个安全组允许的规则数。

在版本 2.35 之前可用。

security_groups (可选)

body

整数

每个租户允许的安全组数。

在版本 2.35 之前可用。

注入文件内容字节数 (可选)

body

整数

每个注入文件的允许内容字节数。

在版本 2.56 之前可用

注入文件路径字节数 (可选)

body

整数

每个注入文件路径允许的字节数。

在版本 2.56 之前可用

注入文件 (可选)

body

整数

每个租户允许注入的文件数。

在版本 2.56 之前可用

示例 更新配额:JSON 请求

{
    "quota_set": {
        "cores": 45
    }
}

示例 更新配额(带可选 `force` 属性):JSON 请求

{
    "quota_set": {
        "force": "True",
        "instances": 45
    }
}

响应

名称

入参

类型

描述

quota_set

body

对象

一个 quota_set 对象。

cores

body

整数

每个租户允许的服务器核心数。

instances

body

整数

每个租户允许的服务器数量。

key_pairs

body

整数

每个用户允许的密钥对数量。

metadata_items

body

整数

每个服务器允许的元数据项数。

ram

body

整数

每个租户允许的服务器 RAM 量(以 MiB 为单位)。

server_groups

body

整数

每个租户允许的服务器组数。

server_group_members

body

整数

每个服务器组允许的成员数。

fixed_ips

body

整数

每个租户允许的固定 IP 地址数量。必须等于或大于允许的服务器数量。

在版本 2.35 之前可用。

floating_ips

body

整数

每个租户允许的浮动 IP 地址数。

在版本 2.35 之前可用。

网络 (可选)

body

整数

每个项目可以创建的私有网络数量。

在版本 2.35 之前可用。

security_group_rules

body

整数

每个安全组允许的规则数。

在版本 2.35 之前可用。

security_groups

body

整数

每个租户允许的安全组数。

在版本 2.35 之前可用。

injected_file_content_bytes

body

整数

每个注入文件的允许内容字节数。

在版本 2.56 之前可用

injected_file_path_bytes

body

整数

每个注入文件路径允许的字节数。

在版本 2.56 之前可用

injected_files

body

整数

每个租户允许注入的文件数。

在版本 2.56 之前可用

示例 更新配额:JSON 响应

{
    "quota_set": {
        "cores": 45,
        "fixed_ips": -1,
        "floating_ips": -1,
        "injected_file_content_bytes": 10240,
        "injected_file_path_bytes": 255,
        "injected_files": 5,
        "instances": 10,
        "key_pairs": 100,
        "metadata_items": 128,
        "ram": 51200,
        "security_group_rules": -1,
        "security_groups": -1,
        "server_groups": 10,
        "server_group_members": 10
    }
}
DELETE
/os-quota-sets/{tenant_id}

将配额还原为默认值

将项目或项目和用户的配额还原为默认值。

要为项目和用户还原配额,请指定 `user_id` 查询参数。

正常响应代码:202

错误响应代码:未授权(401)、禁止(403)

请求

名称

入参

类型

描述

tenant_id

路径

字符串

多租户云中的租户 UUID。

user_id (可选)

查询

字符串

要删除配额的用户 ID。

响应

成功的 DELETE 操作的响应中没有主体内容。

GET
/os-quota-sets/{tenant_id}/defaults

列出租户的默认配额

列出项目的默认配额。

正常响应代码:200

错误响应代码:badrequest(400), unauthorized(401), forbidden(403)

请求

名称

入参

类型

描述

tenant_id

路径

字符串

多租户云中的租户 UUID。

响应

名称

入参

类型

描述

quota_set

body

对象

一个 quota_set 对象。

cores

body

整数

每个租户允许的服务器核心数。

id

body

字符串

列出配额的租户/用户标识符。

instances

body

整数

每个租户允许的服务器数量。

key_pairs

body

整数

每个用户允许的密钥对数量。

metadata_items

body

整数

每个服务器允许的元数据项数。

ram

body

整数

每个租户允许的服务器 RAM 量(以 MiB 为单位)。

server_groups

body

整数

每个租户允许的服务器组数。

server_group_members

body

整数

每个服务器组允许的成员数。

fixed_ips

body

整数

每个租户允许的固定 IP 地址数量。必须等于或大于允许的服务器数量。

在版本 2.35 之前可用。

floating_ips

body

整数

每个租户允许的浮动 IP 地址数。

在版本 2.35 之前可用。

网络 (可选)

body

整数

每个项目可以创建的私有网络数量。

在版本 2.35 之前可用。

security_group_rules

body

整数

每个安全组允许的规则数。

在版本 2.35 之前可用。

security_groups

body

整数

每个租户允许的安全组数。

在版本 2.35 之前可用。

injected_file_content_bytes

body

整数

每个注入文件的允许内容字节数。

在版本 2.56 之前可用

injected_file_path_bytes

body

整数

每个注入文件路径允许的字节数。

在版本 2.56 之前可用

injected_files

body

整数

每个租户允许注入的文件数。

在版本 2.56 之前可用

示例 列出租户的默认配额:JSON 响应

{
    "quota_set": {
        "cores": 20,
        "fixed_ips": -1,
        "floating_ips": -1,
        "id": "fake_tenant",
        "injected_file_content_bytes": 10240,
        "injected_file_path_bytes": 255,
        "injected_files": 5,
        "instances": 10,
        "key_pairs": 100,
        "metadata_items": 128,
        "ram": 51200,
        "security_group_rules": -1,
        "security_groups": -1,
        "server_groups": 10,
        "server_group_members": 10
    }
}
GET
/os-quota-sets/{tenant_id}/detail

显示配额详情

显示项目或项目和用户的配额详情。

要显示项目和用户的配额,请指定 `user_id` 查询参数。

正常响应代码:200

错误响应代码:badrequest(400), unauthorized(401), forbidden(403)

  • 400 - BadRequest - 您云中的 {tenant_id} 无效,可能是因为输入错误。

请求

名称

入参

类型

描述

tenant_id

路径

字符串

多租户云中的租户 UUID。

user_id (可选)

查询

字符串

要列出配额的用户 ID。

响应

名称

入参

类型

描述

quota_set

body

对象

一个 quota_set 对象。

cores

body

对象

详细核心配额对象,包括已使用、限制和预留的核心数量。

id

body

字符串

列出配额的租户/用户标识符。

instances

body

对象

详细服务器配额对象,包括已使用、限制和预留的实例数量。

key_pairs

body

对象

详细密钥对配额对象,包括已使用、限制和预留的密钥对数量。

注意

密钥对配额详情的 `in_use` 字段值始终为零。在 Nova 中,`key_pairs` 是用户级别的资源,而不是项目级别的资源,因此出于历史原因,密钥对的已使用信息不被计算。

metadata_items

body

对象

详细元数据项配额对象,包括已使用、限制和预留的元数据项数量。

ram

body

对象

详细 RAM 配额对象,包括已使用、限制和预留的 RAM 数量。

server_groups

body

对象

详细服务器组对象,包括已使用、限制和预留的服务器组数量。

server_group_members

body

对象

详细服务器组成员对象,包括已使用、限制和预留的服务器组成员数量。

fixed_ips

body

对象

详细固定 IP 配额对象,包括已使用、限制和预留的固定 IP 数量。

在版本 2.35 之前可用。

floating_ips

body

对象

详细浮动 IP 配额对象,包括已使用、限制和预留的浮动 IP 数量。

在版本 2.35 之前可用。

网络 (可选)

body

整数

每个项目可以创建的私有网络数量。

在版本 2.35 之前可用。

security_group_rules

body

对象

详细安全组规则配额对象,包括已使用、限制和预留的安全组规则数量。

在版本 2.35 之前可用。

security_groups

body

对象

详细安全组对象,包括已使用、限制和预留的安全组数量。

在版本 2.35 之前可用。

injected_file_content_bytes

body

对象

详细注入文件内容字节数配额对象,包括已使用、限制和预留的注入文件内容字节数。

在版本 2.56 之前可用

injected_file_path_bytes

body

对象

详细注入文件路径字节数配额对象,包括已使用、限制和预留的注入文件路径字节数。

在版本 2.56 之前可用

injected_files

body

对象

详细注入文件配额对象,包括已使用、限制和预留的注入文件数量。

在版本 2.56 之前可用

示例 显示配额:JSON 响应

{
    "quota_set": {
        "cores": {
            "in_use": 0,
            "limit": 20,
            "reserved": 0
        },
        "fixed_ips": {
            "in_use": 0,
            "limit": -1,
            "reserved": 0
        },
        "floating_ips": {
            "in_use": 0,
            "limit": -1,
            "reserved": 0
        },
        "id": "fake_tenant",
        "injected_file_content_bytes": {
            "in_use": 0,
            "limit": 10240,
            "reserved": 0
        },
        "injected_file_path_bytes": {
            "in_use": 0,
            "limit": 255,
            "reserved": 0
        },
        "injected_files": {
            "in_use": 0,
            "limit": 5,
            "reserved": 0
        },
        "instances": {
            "in_use": 0,
            "limit": 10,
            "reserved": 0
        },
        "key_pairs": {
            "in_use": 0,
            "limit": 100,
            "reserved": 0
        },
        "metadata_items": {
            "in_use": 0,
            "limit": 128,
            "reserved": 0
        },
        "ram": {
            "in_use": 0,
            "limit": 51200,
            "reserved": 0
        },
        "security_group_rules": {
            "in_use": 0,
            "limit": -1,
            "reserved": 0
        },
        "security_groups": {
            "in_use": 0,
            "limit": -1,
            "reserved": 0
        },
        "server_group_members": {
            "in_use": 0,
            "limit": 10,
            "reserved": 0
        },
        "server_groups": {
            "in_use": 0,
            "limit": 10,
            "reserved": 0
        }
    }
}

配额类集 (os-quota-class-sets)

显示、创建或更新配额类 (Quota Class) 的配额。Nova 只支持隐式的 'default' 配额类。

注意

一旦通过 API 设置了 `default` 配额类的默认限制,它将优先于配置文件中对该资源限制的任何更改。换句话说,一旦通过 API 更改了内容,您要么需要将它们与配置值同步,要么手动从数据库中删除默认限制,因为没有 REST API 可以从数据库中删除配额类值。

例如:如果您将实例的默认配额更新为 20,但未在 `nova.conf` 中更改 `quota_instances`,那么所有项目的实例默认配额将为 20。如果您随后在 nova.conf 中将 `quota_instances=5`,但未通过 API 更新 `default` 配额类,那么无论 `nova.conf` 设置如何,您仍然拥有 20 的实例默认配额。参考:配额 以获取更多详细信息。

警告

在 v2.1 API(直到 microversion 2.49)和旧版 v2 兼容 API 中存在一个 bug,它们在 GET 和 PUT `os-quota-class-sets` API 响应中不返回 `server_groups` 和 `server_group_members` 配额。然而,v2 API 过去会在 API 响应中返回这些键。在 配额集 (os-quota-sets) 中,可以通过“列出租户的默认配额” API 来获取 `server_groups` 和 `server_group_members` 配额的解决方法,但这适用于项目配额。此问题在 microversion 2.50 中已修复,此后 `server_groups` 和 `server_group_members` 键将在 API 响应体中返回。

GET
/os-quota-class-sets/{id}

显示配额类的配额

显示配额类的配额。

正常响应代码:200

错误响应代码:未授权(401)、禁止(403)

请求

名称

入参

类型

描述

id

路径

字符串

配额类的 ID。Nova 只支持 `default` 配额类。

响应

名称

入参

类型

描述

quota_class_set

body

对象

一个 quota_class_set 对象。

cores

body

整数

配额类允许的服务器核心数量。

id

body

字符串

配额类的 ID。Nova 只支持 `default` 配额类。

instances

body

整数

配额类允许的服务器数量。

key_pairs

body

整数

配额类允许的密钥对数量。

metadata_items

body

整数

每个服务器允许的元数据项数。

ram

body

整数

配额类允许的实例 RAM 量,以 MiB 为单位。

fixed_ips

body

整数

配额类允许的固定 IP 地址数量。必须等于或大于允许的服务器数量。

截至 2.49 版本可用

floating_ips

body

整数

配额类允许的浮动 IP 地址数量。

截至 2.49 版本可用

网络 (可选)

body

整数

每个项目可以创建的私有网络数量。

截至 2.49 版本可用

security_group_rules

body

整数

每个安全组允许的规则数。

截至 2.49 版本可用

security_groups

body

整数

配额类允许的安全组数量。

截至 2.49 版本可用

server_groups

body

整数

配额类允许的服务器组数量。

2.50 版本新增

server_group_members

body

整数

每个服务器组允许的成员数。

2.50 版本新增

injected_file_content_bytes

body

整数

每个注入文件的允许内容字节数。

在版本 2.56 之前可用

injected_file_path_bytes

body

整数

每个注入文件路径允许的字节数。

在版本 2.56 之前可用

injected_files

body

整数

配额类允许的注入文件数量。

在版本 2.56 之前可用

示例 显示配额类:JSON 响应 (2.50)

{
    "quota_class_set": {
        "cores": 20,
        "id": "test_class",
        "injected_file_content_bytes": 10240,
        "injected_file_path_bytes": 255,
        "injected_files": 5,
        "instances": 10,
        "key_pairs": 100,
        "metadata_items": 128,
        "ram": 51200,
        "server_groups": 10,
        "server_group_members": 10
    }
}
PUT
/os-quota-class-sets/{id}

创建或更新配额类的配额

更新配额类的配额。

如果请求的配额类在数据库中未找到,则 API 将会创建它。只有 'default' 配额类是有效的,用于设置默认配额,所有其他配额类都不会在任何地方使用。

正常响应代码:200

错误响应代码:badRequest(400),unauthorized(401),forbidden(403)

请求

名称

入参

类型

描述

id

路径

字符串

配额类的 ID。Nova 只支持 `default` 配额类。

quota_class_set

body

对象

一个 quota_class_set 对象。

核心 (可选)

body

整数

配额类允许的服务器核心数量。

实例 (可选)

body

整数

配额类允许的服务器数量。

密钥对 (可选)

body

整数

配额类允许的密钥对数量。

元数据项 (可选)

body

整数

每个服务器允许的元数据项数。

RAM (可选)

body

整数

配额类允许的实例 RAM 量,以 MiB 为单位。

服务器组 (可选)

body

整数

配额类允许的服务器组数量。

服务器组成员 (可选)

body

整数

每个服务器组允许的成员数。

fixed_ips (可选)

body

整数

配额类允许的固定 IP 地址数量。必须等于或大于允许的服务器数量。

截至 2.49 版本可用

浮动 IP (可选)

body

整数

配额类允许的浮动 IP 地址数量。

截至 2.49 版本可用

网络 (可选)

body

整数

每个项目可以创建的私有网络数量。

截至 2.49 版本可用

安全组规则 (可选)

body

整数

每个安全组允许的规则数。

截至 2.49 版本可用

security_groups (可选)

body

整数

配额类允许的安全组数量。

截至 2.49 版本可用

注入文件内容字节数 (可选)

body

整数

每个注入文件的允许内容字节数。

在版本 2.56 之前可用

注入文件路径字节数 (可选)

body

整数

每个注入文件路径允许的字节数。

在版本 2.56 之前可用

注入文件 (可选)

body

整数

配额类允许的注入文件数量。

在版本 2.56 之前可用

示例 更新配额:JSON 请求 (2.50)

{
    "quota_class_set": {
        "instances": 50,
        "cores": 50,
        "ram": 51200,
        "metadata_items": 128,
        "injected_files": 5,
        "injected_file_content_bytes": 10240,
        "injected_file_path_bytes": 255,
        "key_pairs": 100,
        "server_groups": 10,
        "server_group_members": 10
    }
}

响应

名称

入参

类型

描述

quota_class_set

body

对象

一个 quota_class_set 对象。

cores

body

整数

配额类允许的服务器核心数量。

instances

body

整数

配额类允许的服务器数量。

key_pairs

body

整数

配额类允许的密钥对数量。

metadata_items

body

整数

每个服务器允许的元数据项数。

ram

body

整数

配额类允许的实例 RAM 量,以 MiB 为单位。

fixed_ips

body

整数

配额类允许的固定 IP 地址数量。必须等于或大于允许的服务器数量。

截至 2.49 版本可用

floating_ips

body

整数

配额类允许的浮动 IP 地址数量。

截至 2.49 版本可用

网络 (可选)

body

整数

每个项目可以创建的私有网络数量。

截至 2.49 版本可用

security_group_rules

body

整数

每个安全组允许的规则数。

截至 2.49 版本可用

security_groups

body

整数

配额类允许的安全组数量。

截至 2.49 版本可用

server_groups

body

整数

配额类允许的服务器组数量。

2.50 版本新增

server_group_members

body

整数

每个服务器组允许的成员数。

2.50 版本新增

injected_file_content_bytes

body

整数

每个注入文件的允许内容字节数。

在版本 2.56 之前可用

injected_file_path_bytes

body

整数

每个注入文件路径允许的字节数。

在版本 2.56 之前可用

injected_files

body

整数

配额类允许的注入文件数量。

在版本 2.56 之前可用

示例 更新配额:JSON 响应 (2.50)

{
    "quota_class_set": {
        "cores": 50,
        "injected_file_content_bytes": 10240,
        "injected_file_path_bytes": 255,
        "injected_files": 5,
        "instances": 50,
        "key_pairs": 100,
        "metadata_items": 128,
        "ram": 51200,
        "server_groups": 10,
        "server_group_members": 10
    }
}

服务器组 (os-server-groups)

列出、显示服务器组信息、创建和删除服务器组。

GET
/os-server-groups

列出服务器组

列出租户的所有服务器组。

管理员用户可以使用 `all_projects` 查询参数来列出所有项目的服务器组。

正常响应代码:200

错误响应代码:未授权(401)、禁止(403)

请求

名称

入参

类型

描述

all_projects (可选)

查询

字符串

仅管理员。列出所有项目的服务器组。例如

GET /os-server-groups?all_projects=True

如果使用此查询参数为非管理员用户指定了租户 ID,则调用将列出该租户或项目的服务器组,而不是所有项目的服务器组。此查询参数的值不会被检查,只有其存在性被视为请求所有项目。

limit (可选)

查询

整数

offset 结合使用以返回项目切片。limit 是要返回的最大项目数。如果未指定 limit,或超过可配置的 max_limit,则将改用 max_limit

offset (可选)

查询

整数

limit 结合使用以返回项目的切片。offset 是列表中的起始位置。

响应

名称

入参

类型

描述

server_groups

body

数组

现有服务器组的列表。

id

body

字符串

服务器组的 UUID。

name

body

字符串

服务器组的名称。

策略

body

数组

一个策略名称列表,用于关联到服务器组。当前有效的策略名称是

  • `anti-affinity` - 此组中的服务器必须调度到不同的主机。

  • `affinity` - 此组中的服务器必须调度到同一主机。

  • `soft-anti-affinity` - 此组中的服务器应尽可能调度到不同的主机,但如果不可能,它们仍应被调度,而不是导致构建失败。此策略已在 microversion 2.15 中添加。

  • `soft-affinity` - 此组中的服务器应尽可能调度到同一主机,但如果不可能,它们仍应被调度,而不是导致构建失败。此策略已在 microversion 2.15 中添加。

截至 2.63 版本可用

members

body

数组

服务器组成员列表。

metadata

body

对象

元数据键值对。每个元数据键值对的最大大小为 255 字节。它始终为空,仅用于保持兼容性。

截至 2.63 版本可用

project_id

body

字符串

拥有服务器组的项目 ID。

2.13 版本新增

user_id

body

字符串

拥有服务器组的用户 ID。

2.13 版本新增

policy

body

字符串

`policy` 字段表示策略的名称。当前有效的策略名称是

  • `anti-affinity` - 此组中的服务器必须调度到不同的主机。

  • `affinity` - 此组中的服务器必须调度到同一主机。

  • `soft-anti-affinity` - 此组中的服务器应尽可能调度到不同的主机,但如果不可能,它们仍应被调度,而不是导致构建失败。

  • `soft-affinity` - 此组中的服务器应尽可能调度到同一主机,但如果不可能,它们仍应被调度,而不是导致构建失败。

2.64 版本新增

rules

body

对象

`rules` 字段是一个字典,可以应用于策略。目前,只有 `anti-affinity` 策略支持 `max_server_per_host` 规则。`max_server_per_host` 规则允许指定同一反亲和性组中有多少成员可以驻留在同一计算主机上。如果未指定,则同一反亲和性组中只有一个成员可以驻留在给定主机上。

2.64 版本新增

示例 列出服务器组 (2.64):JSON 响应

{
    "server_groups": [
        {
            "id": "616fb98f-46ca-475e-917e-2563e5a8cd19",
            "name": "test",
            "policy": "anti-affinity",
            "rules": {"max_server_per_host": 3},
            "members": [],
            "project_id": "6f70656e737461636b20342065766572",
            "user_id": "fake"
        }
    ]
}
POST
/os-server-groups

创建服务器组

创建服务器组。

正常响应代码:200

错误响应代码:badRequest(400),unauthorized(401),forbidden(403),conflict(409)

请求

名称

入参

类型

描述

server_group

body

对象

服务器组对象。

name

body

字符串

服务器组的名称。

策略

body

数组

一个策略名称列表,用于关联到服务器组。当前有效的策略名称是

  • `anti-affinity` - 此组中的服务器必须调度到不同的主机。

  • `affinity` - 此组中的服务器必须调度到同一主机。

  • `soft-anti-affinity` - 此组中的服务器应尽可能调度到不同的主机,但如果不可能,它们仍应被调度,而不是导致构建失败。此策略已在 microversion 2.15 中添加。

  • `soft-affinity` - 此组中的服务器应尽可能调度到同一主机,但如果不可能,它们仍应被调度,而不是导致构建失败。此策略已在 microversion 2.15 中添加。

截至 2.63 版本可用

policy

body

字符串

`policy` 字段表示策略的名称。当前有效的策略名称是

  • `anti-affinity` - 此组中的服务器必须调度到不同的主机。

  • `affinity` - 此组中的服务器必须调度到同一主机。

  • `soft-anti-affinity` - 此组中的服务器应尽可能调度到不同的主机,但如果不可能,它们仍应被调度,而不是导致构建失败。

  • `soft-affinity` - 此组中的服务器应尽可能调度到同一主机,但如果不可能,它们仍应被调度,而不是导致构建失败。

2.64 版本新增

rules (可选)

body

对象

`rules` 字段是一个字典,可以应用于策略。目前,只有 `anti-affinity` 策略支持 `max_server_per_host` 规则。`max_server_per_host` 规则允许指定同一反亲和性组中有多少成员可以驻留在同一计算主机上。如果未指定,则同一反亲和性组中只有一个成员可以驻留在给定主机上。请求除 `anti-affinity` 策略外的任何其他策略的规则将返回 400 错误。

2.64 版本新增

示例 创建服务器组 (2.64):JSON 请求

{
    "server_group": {
        "name": "test",
        "policy": "anti-affinity",
        "rules": {"max_server_per_host": 3}
    }
}

响应

名称

入参

类型

描述

server_group

body

对象

服务器组对象。

id

body

字符串

服务器组的 UUID。

name

body

字符串

服务器组的名称。

策略

body

数组

一个策略名称列表,用于关联到服务器组。当前有效的策略名称是

  • `anti-affinity` - 此组中的服务器必须调度到不同的主机。

  • `affinity` - 此组中的服务器必须调度到同一主机。

  • `soft-anti-affinity` - 此组中的服务器应尽可能调度到不同的主机,但如果不可能,它们仍应被调度,而不是导致构建失败。此策略已在 microversion 2.15 中添加。

  • `soft-affinity` - 此组中的服务器应尽可能调度到同一主机,但如果不可能,它们仍应被调度,而不是导致构建失败。此策略已在 microversion 2.15 中添加。

截至 2.63 版本可用

members

body

数组

服务器组成员列表。

metadata

body

对象

元数据键值对。每个元数据键值对的最大大小为 255 字节。它始终为空,仅用于保持兼容性。

截至 2.63 版本可用

project_id

body

字符串

拥有服务器组的项目 ID。

2.13 版本新增

user_id

body

字符串

拥有服务器组的用户 ID。

2.13 版本新增

policy

body

字符串

`policy` 字段表示策略的名称。当前有效的策略名称是

  • `anti-affinity` - 此组中的服务器必须调度到不同的主机。

  • `affinity` - 此组中的服务器必须调度到同一主机。

  • `soft-anti-affinity` - 此组中的服务器应尽可能调度到不同的主机,但如果不可能,它们仍应被调度,而不是导致构建失败。

  • `soft-affinity` - 此组中的服务器应尽可能调度到同一主机,但如果不可能,它们仍应被调度,而不是导致构建失败。

2.64 版本新增

rules

body

对象

`rules` 字段是一个字典,可以应用于策略。目前,只有 `anti-affinity` 策略支持 `max_server_per_host` 规则。`max_server_per_host` 规则允许指定同一反亲和性组中有多少成员可以驻留在同一计算主机上。如果未指定,则同一反亲和性组中只有一个成员可以驻留在给定主机上。

2.64 版本新增

示例 创建服务器组 (2.64):JSON 响应

{
    "server_group": {
        "id": "5bbcc3c4-1da2-4437-a48a-66f15b1b13f9",
        "name": "test",
        "policy": "anti-affinity",
        "rules": {"max_server_per_host": 3},
        "members": [],
        "project_id": "6f70656e737461636b20342065766572",
        "user_id": "fake"
    }
}
GET
/os-server-groups/{server_group_id}

显示服务器组详情

显示服务器组的详细信息。

正常响应代码:200

错误响应代码:unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

server_group_id

路径

字符串

服务器组的 UUID。

响应

名称

入参

类型

描述

server_group

body

对象

服务器组对象。

id

body

字符串

服务器组的 UUID。

name

body

字符串

服务器组的名称。

策略

body

数组

一个策略名称列表,用于关联到服务器组。当前有效的策略名称是

  • `anti-affinity` - 此组中的服务器必须调度到不同的主机。

  • `affinity` - 此组中的服务器必须调度到同一主机。

  • `soft-anti-affinity` - 此组中的服务器应尽可能调度到不同的主机,但如果不可能,它们仍应被调度,而不是导致构建失败。此策略已在 microversion 2.15 中添加。

  • `soft-affinity` - 此组中的服务器应尽可能调度到同一主机,但如果不可能,它们仍应被调度,而不是导致构建失败。此策略已在 microversion 2.15 中添加。

截至 2.63 版本可用

members

body

数组

服务器组成员列表。

metadata

body

对象

元数据键值对。每个元数据键值对的最大大小为 255 字节。它始终为空,仅用于保持兼容性。

截至 2.63 版本可用

project_id

body

字符串

拥有服务器组的项目 ID。

2.13 版本新增

user_id

body

字符串

拥有服务器组的用户 ID。

2.13 版本新增

policy

body

字符串

`policy` 字段表示策略的名称。当前有效的策略名称是

  • `anti-affinity` - 此组中的服务器必须调度到不同的主机。

  • `affinity` - 此组中的服务器必须调度到同一主机。

  • `soft-anti-affinity` - 此组中的服务器应尽可能调度到不同的主机,但如果不可能,它们仍应被调度,而不是导致构建失败。

  • `soft-affinity` - 此组中的服务器应尽可能调度到同一主机,但如果不可能,它们仍应被调度,而不是导致构建失败。

2.64 版本新增

rules

body

对象

`rules` 字段是一个字典,可以应用于策略。目前,只有 `anti-affinity` 策略支持 `max_server_per_host` 规则。`max_server_per_host` 规则允许指定同一反亲和性组中有多少成员可以驻留在同一计算主机上。如果未指定,则同一反亲和性组中只有一个成员可以驻留在给定主机上。

2.64 版本新增

示例 显示服务器组详情 (2.64):JSON 响应

{
    "server_group": {
        "id": "5bbcc3c4-1da2-4437-a48a-66f15b1b13f9",
        "name": "test",
        "policy": "anti-affinity",
        "rules": {"max_server_per_host": 3},
        "members": [],
        "project_id": "6f70656e737461636b20342065766572",
        "user_id": "fake"
    }
}
DELETE
/os-server-groups/{server_group_id}

删除服务器组

删除服务器组。

正常响应代码:204

错误响应代码:unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

server_group_id

路径

字符串

服务器组的 UUID。

响应

成功的 DELETE 操作的响应体为空。

服务器标签 (servers, tags)

列出标签,为服务器创建、替换或删除一个或多个标签,检查服务器标签是否存在。

2.26 版本起可用

标签具有以下限制

  • 标签是长度不超过 60 个字符的 Unicode 字节字符串。

  • 标签是非空字符串。

  • 标签名称中不允许使用“/”。

  • 为了简化指定标签列表的请求,标签名称中不允许使用逗号。

  • 所有其他字符都允许在标签名称中使用。

  • 每个服务器最多可以有 50 个标签。

GET
/servers/{server_id}/tags

列出标签

列出服务器的所有标签。

正常响应代码:200

错误响应代码:unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

响应

名称

入参

类型

描述

tags

body

数组

标签列表。此列表中的最大标签数为 50。

示例 列出标签

{
    "tags": ["tag1", "tag2"]
}
PUT
/servers/{server_id}/tags

替换标签

用新的标签集替换指定服务器上的所有标签。

正常响应代码:200

错误响应代码:badRequest(400)、unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

tags

body

数组

标签列表。此列表中的最大标签数为 50。

示例 替换标签

{
    "tags": ["tag1", "tag2"]
}

响应

名称

入参

类型

描述

tags

body

数组

标签列表。此列表中的最大标签数为 50。

示例 替换标签

{
    "tags": ["tag1", "tag2"]
}
DELETE
/servers/{server_id}/tags

删除所有标签

删除指定服务器上的所有标签。

正常响应代码:204

错误响应代码:unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

响应

成功的 DELETE 查询没有响应正文内容

GET
/servers/{server_id}/tags/{tag}

检查标签是否存在

检查服务器上标签是否存在。如果标签存在,将返回 204 状态码。否则返回 404。

正常响应代码:204

错误响应代码:unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

tag

路径

字符串

标签,字符串格式。

PUT
/servers/{server_id}/tags/{tag}

添加单个标签

如果服务器没有指定的标签,则向服务器添加单个标签。在这种情况下,响应代码为 201。

如果服务器已有指定标签,则返回 204。

正常响应代码:201, 204

错误响应代码:badRequest(400)、unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

tag

路径

字符串

标签,字符串格式。

响应

名称

入参

类型

描述

位置

标头

字符串

标签的位置。这是单个标签的 URL,可用于检查标签在服务器上是否存在或从服务器删除标签。

DELETE
/servers/{server_id}/tags/{tag}

删除单个标签

删除指定服务器上的单个标签。

正常响应代码:204

错误响应代码:unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

tag

路径

字符串

标签,字符串格式。

响应

成功的 DELETE 查询没有响应正文内容

计算服务 (os-services)

列出区域中所有正在运行的计算服务,启用或禁用计算服务的调度,以及删除计算服务。

有关计算服务的概述,请参阅 OpenStack 计算

GET
/os-services

列出计算服务

列出所有正在运行的计算服务。

提供服务被禁用原因的详细信息。

注意

从 microversion 2.69 开始,如果由于部署中的临时情况(如基础设施故障)导致服务详细信息无法加载,则那些不可用的计算服务(在故障单元中)的响应体将缺少键。有关部分结构中可能返回的键的更多信息,请参阅计算 API 指南中的 处理故障单元 部分。

正常响应代码:200

错误响应代码:未授权(401)、禁止(403)

请求

名称

入参

类型

描述

binary (可选)

查询

字符串

按服务的二进制名称过滤服务列表结果。

host (可选)

查询

字符串

按主机名过滤服务列表结果。

响应

名称

入参

类型

描述

services

body

数组

服务对象列表。

id

body

整数

服务的 ID。

在版本 2.52 之前可用。

id

body

字符串

服务的 UUID 格式 ID。

新功能,版本 2.53

binary

body

字符串

服务的二进制名称。

disabled_reason

body

字符串

禁用服务的理由。

host

body

字符串

主机的名称。

state

body

字符串

服务的状态。为 updown 中的一个。

status

body

字符串

服务状态。为 enableddisabled 中的一个。

updated_at

body

字符串

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

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

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

zone

body

字符串

可用区名称。

forced_down

body

布尔值

此服务是否被管理员手动强制设置为关闭状态(在服务被隔离后)。此值对于了解第三方已确认服务应被标记为关闭状态很有用。

版本 2.11 中新增

示例 列出计算服务 (v2.11)

{
    "services": [
        {
            "id": 1,
            "binary": "nova-scheduler",
            "disabled_reason": "test1",
            "host": "host1",
            "state": "up",
            "status": "disabled",
            "updated_at": "2012-10-29T13:42:02.000000",
            "forced_down": false,
            "zone": "internal"
        },
        {
            "id": 2,
            "binary": "nova-compute",
            "disabled_reason": "test2",
            "host": "host1",
            "state": "up",
            "status": "disabled",
            "updated_at": "2012-10-29T13:42:05.000000",
            "forced_down": false,
            "zone": "nova"
        },
        {
            "id": 3,
            "binary": "nova-scheduler",
            "disabled_reason": null,
            "host": "host2",
            "state": "down",
            "status": "enabled",
            "updated_at": "2012-09-19T06:55:34.000000",
            "forced_down": false,
            "zone": "internal"
        },
        {
            "id": 4,
            "binary": "nova-compute",
            "disabled_reason": "test4",
            "host": "host2",
            "state": "down",
            "status": "disabled",
            "updated_at": "2012-09-18T08:03:38.000000",
            "forced_down": false,
            "zone": "nova"
        }
    ]
}

示例 列出计算服务 (v2.69)

这是来自部署中不可响应部分的服务示例响应。可用服务记录的响应将正常,没有任何缺失的键。

{
    "services": [
        {
            "binary": "nova-compute",
            "host": "host1",
            "status": "UNKNOWN"
        },
        {
            "binary": "nova-compute",
            "host": "host2",
            "status": "UNKNOWN"
        }
    ]
}
PUT
/os-services/disable

禁用计算服务的调度

禁用计算服务的调度。

通过主机名和二进制名称指定服务。

注意

从 microversion 2.53 开始,此 API 已被 `PUT /os-services/{service_id}` 超越。

正常响应代码:200

错误响应代码:badRequest(400)、unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

host

body

字符串

主机的名称。

binary

body

字符串

服务的二进制名称。

示例 禁用计算服务的调度

{
    "host": "host1",
    "binary": "nova-compute"
}

响应

名称

入参

类型

描述

服务

body

对象

表示计算服务的对象。

binary

body

字符串

服务的二进制名称。

host

body

字符串

主机的名称。

status

body

字符串

服务状态。为 enableddisabled 中的一个。

示例 禁用计算服务的调度

{
    "service": {
        "binary": "nova-compute",
        "host": "host1",
        "status": "disabled"
    }
}
PUT
/os-services/disable-log-reason

禁用计算服务的调度并记录禁用原因

禁用计算服务的调度,并将信息记录到计算服务表中,说明计算服务被禁用的原因。

通过主机名和二进制名称指定服务。

注意

从 microversion 2.53 开始,此 API 已被 `PUT /os-services/{service_id}` 超越。

正常响应代码:200

错误响应代码:badRequest(400)、unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

host

body

字符串

主机的名称。

binary

body

字符串

服务的二进制名称。

disabled_reason

body

字符串

禁用服务的理由。

示例 禁用计算服务的调度并记录禁用原因

{
    "host": "host1",
    "binary": "nova-compute",
    "disabled_reason": "test2"
}

响应

名称

入参

类型

描述

服务

body

对象

表示计算服务的对象。

binary

body

字符串

服务的二进制名称。

disabled_reason

body

字符串

禁用服务的理由。

host

body

字符串

主机的名称。

status

body

字符串

服务状态。为 enableddisabled 中的一个。

示例 禁用计算服务的调度并记录禁用原因

{
    "service": {
        "binary": "nova-compute",
        "disabled_reason": "test2",
        "host": "host1",
        "status": "disabled"
    }
}
PUT
/os-services/enable

启用计算服务的调度

启用计算服务的调度。

通过主机名和二进制名称指定服务。

注意

从 microversion 2.53 开始,此 API 已被 `PUT /os-services/{service_id}` 超越。

正常响应代码:200

错误响应代码:badRequest(400)、unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

host

body

字符串

主机的名称。

binary

body

字符串

服务的二进制名称。

示例 启用计算服务的调度

{
    "host": "host1",
    "binary": "nova-compute"
}

响应

名称

入参

类型

描述

服务

body

对象

表示计算服务的对象。

binary

body

字符串

服务的二进制名称。

host

body

字符串

主机的名称。

status

body

字符串

服务状态。为 enableddisabled 中的一个。

示例 启用计算服务的调度

{
    "service": {
        "binary": "nova-compute",
        "host": "host1",
        "status": "enabled"
    }
}
PUT
/os-services/force-down

更新 Forced Down

设置或取消设置服务的 `forced_down` 标志。`forced_down` 是一个手动覆盖,用于告知 nova 该服务已由运维团队手动隔离(硬关机或断开网络连接)。这表明可以继续执行 `evacuate` 或 nova 为防止主机启动而设置的安全检查的其他操作。

警告

在完全隔离服务的情况下设置 `forced_down` 标志,可能会导致该主机上的 VM 数据损坏。

操作 `force-down` 在 microversion 2.11 时可用。

通过主机名和二进制名称指定服务。

注意

从 microversion 2.53 开始,此 API 已被 `PUT /os-services/{service_id}` 超越。

正常响应代码:200

错误响应代码:badRequest(400)、unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

host

body

字符串

主机的名称。

binary

body

字符串

服务的二进制名称。

forced_down

body

布尔值

此服务是否被管理员手动强制设置为关闭状态(在服务被隔离后)。此值对于了解第三方已确认服务应被标记为关闭状态很有用。

版本 2.11 中新增

示例 更新 Forced Down

{
    "host": "host1",
    "binary": "nova-compute",
    "forced_down": true
}

响应

名称

入参

类型

描述

服务

body

对象

表示计算服务的对象。

binary

body

字符串

服务的二进制名称。

host

body

字符串

主机的名称。

forced_down

body

布尔值

此服务是否被管理员手动强制设置为关闭状态(在服务被隔离后)。此值对于了解第三方已确认服务应被标记为关闭状态很有用。

版本 2.11 中新增


示例 更新 Forced Down

{
    "service": {
        "binary": "nova-compute",
        "host": "host1",
        "forced_down": true
    }
}
PUT
/os-services/{service_id}

更新计算服务

更新计算服务以启用或禁用调度,包括记录禁用计算服务的原因。设置或取消设置服务的 `forced_down` 标志。此操作仅允许用于 `binary` 为 `nova-compute` 的服务。

此 API 从 microversion 2.53 开始可用。

正常响应代码:200

错误响应代码:badRequest(400)、unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

service_id

路径

字符串

作为 UUID 的服务 ID。这在多单元部署中唯一标识服务。

status (可选)

body

字符串

服务状态。为 enableddisabled 中的一个。

disabled_reason (可选)

body

字符串

禁用服务的理由。最小长度为 1,最大长度为 255。仅当 `status=disabled` 时才能请求此参数。

forced_down (可选)

body

布尔值

`forced_down` 是一个手动覆盖,用于告知 nova 该服务已由运维团队手动隔离(硬关机或断开网络连接)。这表明可以继续执行 `evacuate` 或 nova 为防止主机启动而设置的安全检查的其他操作。

警告

在完全隔离服务的情况下设置 `forced_down` 标志,可能会导致该主机上的 VM 数据损坏。

示例 禁用计算服务的调度 (v2.53)

{
    "status": "disabled",
    "disabled_reason": "maintenance"
}

示例 启用计算服务的调度 (v2.53)

{
    "status": "enabled"
}

示例 更新 Forced Down (v2.53)

{
    "forced_down": true
}

响应

名称

入参

类型

描述

服务

body

对象

表示计算服务的对象。

id

body

字符串

服务的 UUID 格式 ID。

binary

body

字符串

服务的二进制名称。

disabled_reason

body

字符串

禁用服务的理由。

host

body

字符串

主机的名称。

state

body

字符串

服务的状态。为 updown 中的一个。

status

body

字符串

服务状态。为 enableddisabled 中的一个。

updated_at

body

字符串

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

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

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

zone

body

字符串

可用区名称。

forced_down

body

布尔值

此服务是否被管理员手动强制设置为关闭状态(在服务被隔离后)。此值对于了解第三方已确认服务应被标记为关闭状态很有用。

示例 禁用计算服务的调度 (v2.53)

{
    "service": {
        "id": "e81d66a4-ddd3-4aba-8a84-171d1cb4d339",
        "binary": "nova-compute",
        "disabled_reason": "maintenance",
        "host": "host1",
        "state": "up",
        "status": "disabled",
        "updated_at": "2012-10-29T13:42:05.000000",
        "forced_down": false,
        "zone": "nova"
    }
}

示例 启用计算服务的调度 (v2.53)

{
    "service": {
        "id": "e81d66a4-ddd3-4aba-8a84-171d1cb4d339",
        "binary": "nova-compute",
        "disabled_reason": null,
        "host": "host1",
        "state": "up",
        "status": "enabled",
        "updated_at": "2012-10-29T13:42:05.000000",
        "forced_down": false,
        "zone": "nova"
    }
}

示例 更新 Forced Down (v2.53)

{
    "service": {
        "id": "e81d66a4-ddd3-4aba-8a84-171d1cb4d339",
        "binary": "nova-compute",
        "disabled_reason": "test2",
        "host": "host1",
        "state": "down",
        "status": "disabled",
        "updated_at": "2012-10-29T13:42:05.000000",
        "forced_down": true,
        "zone": "nova"
    }
}
DELETE
/os-services/{service_id}

删除计算服务

删除服务。如果服务是 `nova-compute` 服务,则相应的宿主机也将从所有宿主机聚合中移除。

尝试删除仍托管实例的 `nova-compute` 服务将导致 409 HTTPConflict 响应。实例需要迁移或删除,然后才能删除计算服务。

同样,尝试删除正在进行迁移的 `nova-compute` 服务将导致 409 HTTPConflict 响应。迁移需要完成,例如确认或回滚调整大小,或者实例需要删除,然后才能删除计算服务。

重要提示

在删除此 API 对应的服务之前,请务必停止物理宿主机上的实际 `nova-compute` 进程。否则,正在运行的服务可能会重新创建孤立的 **compute_nodes** 表记录。

正常响应代码:204

错误响应代码:badRequest(400),unauthorized(401),forbidden(403),itemNotFound(404),conflict(409)

请求

名称

入参

类型

描述

service_id

路径

整数

服务的 ID。

注意

这可能无法在多单元部署中唯一标识服务。

在版本 2.52 之前可用。

service_id

路径

字符串

作为 UUID 的服务 ID。这在多单元部署中唯一标识服务。

新功能,版本 2.53

响应

如果成功,此方法不会在响应正文中返回内容。

使用情况报告 (os-simple-tenant-usage)

定期报告单个租户或所有租户的计算和存储资源使用情况统计信息。使用情况统计信息将包括在特定期间内所有实例的 CPU、内存和本地磁盘。

警告

`os-simple-tenant-usage` 将根据虚拟机 (VM) 中配置的最新实例类型报告使用情况统计信息,并忽略 VM 可能发生的停止、暂停和其他事件。因此,它使用 VM 在云环境中存在的时间来执行使用情况核算。

更多信息可在 http://eavesdrop.openstack.org/meetings/nova/2020/nova.2020-12-03-16.00.log.txthttps://review.opendev.org/c/openstack/nova/+/711113 中找到。

Microversion 2.40 通过可选的 `limit` 和 `marker` 查询参数增加了使用情况统计信息的(分页和 `next` 链接)。如果未提供 `limit`,则将使用可配置的 `max_limit`,其当前默认值为 1000。较旧的 microversions 将不接受这些新的分页查询参数,但它们将开始默默地限制为 `max_limit`。

/os-simple-tenant-usage?limit={limit}&marker={instance_uuid}
/os-simple-tenant-usage/{tenant_id}?limit={limit}&marker={instance_uuid}

注意

当实例数量超过 `limit` 时,租户的使用情况统计信息可能会跨越多个页面,API 消费者如果仍想获取特定时间窗口内所有实例的总数,按租户分组,则需要将聚合结果拼接起来。

GET
/os-simple-tenant-usage

列出所有租户的使用情况统计信息

列出所有租户的使用情况统计信息。

正常响应代码:200

错误响应代码:badRequest(400),unauthorized(401),forbidden(403)

请求

名称

入参

类型

描述

detailed (可选)

查询

整数

指定 `detailed=1` 查询参数以获取详细信息(“server_usages”信息)。

end (可选)

查询

字符串

计算和存储资源的使用情况统计数据的结束时间。日期和时间戳格式可以是以下任何一种:

CCYY-MM-DDThh:mm:ss

例如,`2015-08-27T09:49:58`。

CCYY-MM-DDThh:mm:ss.NNNNNN

例如,`2015-08-27T09:49:58.123456`。

CCYY-MM-DD hh:mm:ss.NNNNNN

例如,`2015-08-27 09:49:58.123456`。如果省略此参数,则使用当前时间。

start (可选)

查询

字符串

计算和存储资源的使用情况统计数据的开始时间。日期和时间戳格式可以是以下任何一种:

CCYY-MM-DDThh:mm:ss

例如,`2015-08-27T09:49:58`。

CCYY-MM-DDThh:mm:ss.NNNNNN

例如,`2015-08-27T09:49:58.123456`。

CCYY-MM-DD hh:mm:ss.NNNNNN

例如,`2015-08-27 09:49:58.123456`。如果省略此参数,则使用当前时间。

limit (可选)

查询

整数

请求项目数的分页大小。计算有限数量实例的使用情况。使用 `limit` 参数发出初始有限请求,并使用响应中的最后一次查看的实例 UUID 作为后续有限请求的 `marker` 参数值。

2.40 版本新增

marker (可选)

查询

字符串

最后一次看到的项。使用 `limit` 参数发出初始有限请求,并使用响应中的最后一次查看的实例 UUID 作为后续有限请求的 `marker` 参数值。

2.40 版本新增

响应

名称

入参

类型

描述

tenant_usages

body

数组

租户使用情况对象的列表。

start

body

字符串

计算和存储资源的使用情况统计数据的开始时间。日期和时间戳格式如下:

CCYY-MM-DDThh:mm:ss.NNNNNN

例如,`2015-08-27T09:49:58.123456`。

停止

body

字符串

计算和存储资源的使用情况统计数据的结束时间。日期和时间戳格式如下:

CCYY-MM-DDThh:mm:ss.NNNNNN

例如,`2015-08-27T09:49:58.123456`。

tenant_id

body

字符串

多租户云中的租户 UUID。

total_hours

body

float

服务器存在的总时长(小时)。

total_local_gb_usage

body

float

将服务器磁盘大小(GiB)乘以服务器存在的时长,然后将每个服务器的这些值相加。

total_memory_mb_usage

body

float

将服务器内存大小(MiB)乘以服务器存在的时长,然后将每个服务器的这些值相加。

total_vcpus_usage

body

float

将服务器的虚拟 CPU 数量乘以服务器存在的时长,然后将每个服务器的这些值相加。

server_usages (可选)

body

数组

服务器使用情况对象的列表。

server_usages.ended_at (可选)

body

字符串

服务器删除的日期和时间。

日期和时间戳格式如下:

CCYY-MM-DDThh:mm:ss.NNNNNN

例如,`2015-08-27T09:49:58.123456`。如果服务器尚未被删除,则其值为 `null`。

server_usages.flavor (可选)

body

字符串

风类的显示名称。

server_usages.hours (可选)

body

float

服务器存在的时长(小时)。

server_usages.instance_id (可选)

body

字符串

服务器的 UUID。

server_usages.local_gb (可选)

body

整数

服务器的根磁盘大小与其临时磁盘大小的总和(GiB)。

server_usages.memory_mb (可选)

body

整数

服务器的内存大小(MiB)。

server_usages.name (可选)

body

字符串

服务器名称。

server_usages.started_at (可选)

body

字符串

服务器启动的日期和时间。

日期和时间戳格式如下:

CCYY-MM-DDThh:mm:ss.NNNNNN

例如,`2015-08-27T09:49:58.123456`。

server_usages.state (可选)

body

字符串

VM 状态。

server_usages.tenant_id (可选)

body

字符串

多租户云中的租户 UUID。

server_usages.uptime (可选)

body

整数

服务器的正常运行时间。

server_usages.vcpus (可选)

body

整数

服务器使用的虚拟 CPU 数量。

tenant_usages_links (可选)

body

数组

与使用情况相关的链接。有关更多信息,请参阅 API 指南 / 链接和引用

2.40 版本新增

示例 列出所有租户的使用情况 (v2.40):JSON 响应

如果未指定 `detailed` 查询参数或其设置为 1 以外的值(例如 `detailed=0`),则响应如下:

{
    "tenant_usages": [
        {
            "start": "2012-10-08T21:10:44.587336",
            "stop": "2012-10-08T22:10:44.587336",
            "tenant_id": "6f70656e737461636b20342065766572",
            "total_hours": 1.0,
            "total_local_gb_usage": 1.0,
            "total_memory_mb_usage": 512.0,
            "total_vcpus_usage": 1.0
        }
    ],
    "tenant_usages_links": [
        {
            "href": "http://openstack.example.com/v2.1/6f70656e737461636b20342065766572/os-simple-tenant-usage?end=2016-10-12+18%3A22%3A04.868106&limit=1&marker=1f1deceb-17b5-4c04-84c7-e0d4499c8fe0&start=2016-10-12+18%3A22%3A04.868106",
            "rel": "next"
        }
    ]
}

如果 `detailed` 查询参数设置为 1(`detailed=1`),则响应包括每个租户的 `server_usages` 信息。响应如下:

{
    "tenant_usages": [
        {
            "start": "2012-10-08T20:10:44.587336",
            "stop": "2012-10-08T21:10:44.587336",
            "tenant_id": "6f70656e737461636b20342065766572",
            "total_hours": 1.0,
            "total_local_gb_usage": 1.0,
            "total_memory_mb_usage": 512.0,
            "total_vcpus_usage": 1.0,
            "server_usages": [
                {
                    "ended_at": null,
                    "flavor": "m1.tiny",
                    "hours": 1.0,
                    "instance_id": "1f1deceb-17b5-4c04-84c7-e0d4499c8fe0",
                    "local_gb": 1,
                    "memory_mb": 512,
                    "name": "instance-2",
                    "started_at": "2012-10-08T20:10:44.541277",
                    "state": "active",
                    "tenant_id": "6f70656e737461636b20342065766572",
                    "uptime": 3600,
                    "vcpus": 1
                }
            ]
        }
    ],
    "tenant_usages_links": [
        {
            "href": "http://openstack.example.com/v2.1/6f70656e737461636b20342065766572/os-simple-tenant-usage?detailed=1&end=2016-10-12+18%3A22%3A04.868106&limit=1&marker=1f1deceb-17b5-4c04-84c7-e0d4499c8fe0&start=2016-10-12+18%3A22%3A04.868106",
            "rel": "next"
        }
    ]
}
GET
/os-simple-tenant-usage/{tenant_id}

显示租户的使用情况统计信息

显示租户的使用情况统计信息。

正常响应代码:200

错误响应代码:badRequest(400),unauthorized(401),forbidden(403)

请求

名称

入参

类型

描述

tenant_id

路径

字符串

多租户云中的租户 UUID。

end (可选)

查询

字符串

计算和存储资源的使用情况统计数据的结束时间。日期和时间戳格式可以是以下任何一种:

CCYY-MM-DDThh:mm:ss

例如,`2015-08-27T09:49:58`。

CCYY-MM-DDThh:mm:ss.NNNNNN

例如,`2015-08-27T09:49:58.123456`。

CCYY-MM-DD hh:mm:ss.NNNNNN

例如,`2015-08-27 09:49:58.123456`。如果省略此参数,则使用当前时间。

start (可选)

查询

字符串

计算和存储资源的使用情况统计数据的开始时间。日期和时间戳格式可以是以下任何一种:

CCYY-MM-DDThh:mm:ss

例如,`2015-08-27T09:49:58`。

CCYY-MM-DDThh:mm:ss.NNNNNN

例如,`2015-08-27T09:49:58.123456`。

CCYY-MM-DD hh:mm:ss.NNNNNN

例如,`2015-08-27 09:49:58.123456`。如果省略此参数,则使用当前时间。

limit (可选)

查询

整数

请求项目数的分页大小。计算有限数量实例的使用情况。使用 `limit` 参数发出初始有限请求,并使用响应中的最后一次查看的实例 UUID 作为后续有限请求的 `marker` 参数值。

2.40 版本新增

marker (可选)

查询

字符串

最后一次看到的项。使用 `limit` 参数发出初始有限请求,并使用响应中的最后一次查看的实例 UUID 作为后续有限请求的 `marker` 参数值。

2.40 版本新增

响应

名称

入参

类型

描述

tenant_usage

body

对象

租户使用情况对象。

server_usages

body

数组

服务器使用情况对象的列表。

server_usages.ended_at

body

字符串

服务器删除的日期和时间。

日期和时间戳格式如下:

CCYY-MM-DDThh:mm:ss.NNNNNN

例如,`2015-08-27T09:49:58.123456`。如果服务器尚未被删除,则其值为 `null`。

server_usages.flavor

body

字符串

风类的显示名称。

server_usages.hours

body

float

服务器存在的时长(小时)。

server_usages.instance_id

body

字符串

服务器的 UUID。

server_usages.local_gb

body

整数

服务器的根磁盘大小与其临时磁盘大小的总和(GiB)。

server_usages.memory_mb

body

整数

服务器的内存大小(MiB)。

server_usages.name

body

字符串

服务器名称。

server_usages.started_at

body

字符串

服务器启动的日期和时间。

日期和时间戳格式如下:

CCYY-MM-DDThh:mm:ss.NNNNNN

例如,`2015-08-27T09:49:58.123456`。

server_usages.state

body

字符串

VM 状态。

server_usages.tenant_id

body

字符串

多租户云中的租户 UUID。

server_usages.uptime

body

整数

服务器的正常运行时间。

server_usages.vcpus

body

整数

服务器使用的虚拟 CPU 数量。

start

body

字符串

计算和存储资源的使用情况统计数据的开始时间。日期和时间戳格式如下:

CCYY-MM-DDThh:mm:ss.NNNNNN

例如,`2015-08-27T09:49:58.123456`。

停止

body

字符串

计算和存储资源的使用情况统计数据的结束时间。日期和时间戳格式如下:

CCYY-MM-DDThh:mm:ss.NNNNNN

例如,`2015-08-27T09:49:58.123456`。

tenant_id

body

字符串

多租户云中的租户 UUID。

total_hours

body

float

服务器存在的总时长(小时)。

total_local_gb_usage

body

float

将服务器磁盘大小(GiB)乘以服务器存在的时长,然后将每个服务器的这些值相加。

total_memory_mb_usage

body

float

将服务器内存大小(MiB)乘以服务器存在的时长,然后将每个服务器的这些值相加。

total_vcpus_usage

body

float

将服务器的虚拟 CPU 数量乘以服务器存在的时长,然后将每个服务器的这些值相加。

tenant_usage_links (可选)

body

数组

与使用情况相关的链接。有关更多信息,请参阅 API 指南 / 链接和引用

2.40 版本新增

示例 显示租户的使用情况详情 (v2.40):JSON 响应

{
    "tenant_usage": {
        "server_usages": [
            {
                "ended_at": null,
                "flavor": "m1.tiny",
                "hours": 1.0,
                "instance_id": "1f1deceb-17b5-4c04-84c7-e0d4499c8fe0",
                "local_gb": 1,
                "memory_mb": 512,
                "name": "instance-2",
                "started_at": "2012-10-08T20:10:44.541277",
                "state": "active",
                "tenant_id": "6f70656e737461636b20342065766572",
                "uptime": 3600,
                "vcpus": 1
            }
        ],
        "start": "2012-10-08T20:10:44.587336",
        "stop": "2012-10-08T21:10:44.587336",
        "tenant_id": "6f70656e737461636b20342065766572",
        "total_hours": 1.0,
        "total_local_gb_usage": 1.0,
        "total_memory_mb_usage": 512.0,
        "total_vcpus_usage": 1.0
    },
    "tenant_usage_links": [
        {
            "href": "http://openstack.example.com/v2.1/6f70656e737461636b20342065766572/os-simple-tenant-usage/6f70656e737461636b20342065766572?end=2016-10-12+18%3A22%3A04.868106&limit=1&marker=1f1deceb-17b5-4c04-84c7-e0d4499c8fe0&start=2016-10-12+18%3A22%3A04.868106",
            "rel": "next"
        }
    ]
}

创建外部事件 (os-server-external-events)

警告

这是一个仅限 `admin` 级别的服务 API,专门供其他 OpenStack 服务使用。此 API 的目的是协调 Nova 与 Neutron、Nova 与 Cinder、Nova 与 Ironic(以及未来可能的其他服务)之间需要双方参与的活动,例如网络热插拔。

除非您正在编写 Neutron、Cinder 或 Ironic 代码,否则**不应**使用此 API。

创建一项或多项外部事件。API 将每个事件分派给服务器实例。

POST
/os-server-external-events

运行事件

创建一项或多项外部事件,API 将这些事件分派给服务器分配到的主机。如果服务器当前未分配给任何主机,则事件将不会被传递。

您将收到提交的事件列表,其中包含更新的 `code` 和 `status`,指示它们的成功级别。

正常响应代码:200, 207

如果所有事件都成功,将返回 200;如果有任何事件未能处理,将返回 207。事件的 `code` 属性将进一步解释出了什么问题。

错误响应代码:badRequest(400),unauthorized(401),forbidden(403)

注意

在修复 bug 1855752 之前,当所有事件都失败时,可能会错误地返回 404 错误响应代码。

请求

名称

入参

类型

描述

events

body

数组

要处理的外部事件列表。

name

body

字符串

事件名称。有效值为:

  • network-changed

  • network-vif-plugged

  • network-vif-unplugged

  • network-vif-deleted

  • `volume-extended` (自 microversion `2.51` 起)

  • `power-update` (自 microversion `2.76` 起)

  • `accelerator-request-bound` (自 microversion `2.82` 起)

  • `volume-reimaged` (自 microversion `2.93` 起)

server_uuid

body

字符串

API 将事件分派到的服务器实例的 UUID。您必须将此实例分配给一个主机。否则,此调用不会将事件分派给实例。

status (可选)

body

字符串

事件状态。有效值为 `failed`、`completed` 或 `in-progress`。默认为 `completed`。

tag (可选)

body

字符串

用于标识事件的字符串值。某些类型的事件需要特定的标签:

  • 对于 `accelerator-request-bound` 事件,标签必须是加速器请求的 UUID。

  • 对于 `power-update` 事件,标签必须是 `POWER_ON` 或 `POWER_OFF`。

  • 对于 `volume-extended` 事件,标签必须是卷 ID。

示例 运行事件

{
    "events": [
        {
            "name": "test-event",
            "tag": "foo",
            "status": "completed",
            "server_uuid": "3df201cf-2451-44f2-8d25-a4ca826fc1f3"
        }
    ]
}

响应

名称

入参

类型

描述

events

body

数组

要处理的外部事件列表。

code

body

字符串

事件的 HTTP 响应代码。当前使用的代码包括:

  • 200 - 成功提交事件

  • 400 - 请求缺少必需的参数

  • 404 - 未找到由 `server_uuid` 指定的实例

  • 422 - 未为主机找到由 `server_uuid` 指定的服务器,

    因此没有到此服务器的路由。

name

body

字符串

事件名称。有效值为:

  • network-changed

  • network-vif-plugged

  • network-vif-unplugged

  • network-vif-deleted

  • `volume-extended` (自 microversion `2.51` 起)

  • `power-update` (自 microversion `2.76` 起)

  • `accelerator-request-bound` (自 microversion `2.82` 起)

  • `volume-reimaged` (自 microversion `2.93` 起)

server_uuid

body

字符串

API 将事件分派到的服务器实例的 UUID。您必须将此实例分配给一个主机。否则,此调用不会将事件分派给实例。

status (可选)

body

字符串

事件状态。有效值为 `failed`、`completed` 或 `in-progress`。默认为 `completed`。

tag (可选)

body

字符串

用于标识事件的字符串值。某些类型的事件需要特定的标签:

  • 对于 `accelerator-request-bound` 事件,标签必须是加速器请求的 UUID。

  • 对于 `power-update` 事件,标签必须是 `POWER_ON` 或 `POWER_OFF`。

  • 对于 `volume-extended` 事件,标签必须是卷 ID。

示例 运行事件

{
    "events": [
        {
            "code": 200,
            "name": "network-changed",
            "server_uuid": "ff1df7b2-6772-45fd-9326-c0a3b05591c2",
            "status": "completed",
            "tag": "foo"
        }
    ]
}

服务器拓扑 (servers, topology)

显示服务器的 NUMA 拓扑信息。

GET
/servers/{server_id}/topology

显示服务器拓扑

版本 2.78 中添加。

显示服务器的 NUMA 拓扑信息。

策略默认允许只有管理员角色的用户或服务器所有者执行此操作。云提供商可以通过 `policy.json` 文件更改这些权限。

正常响应代码:200

错误响应代码:unauthorized(401), notfound(404), forbidden(403)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

响应

下面列出了所有响应字段。如果某些信息不可用或策略不允许,则响应中将不存在相应的键值。

名称

入参

类型

描述

nodes

body

数组

服务器的 NUMA 节点信息。

nodes.cpu_pinning (可选)

body

dict

服务器核心到宿主机物理 CPU 的映射。例如:

cpu_pinning: { 0: 0, 1: 5}

这意味着 vcpu 0 映射到物理 CPU 0,vcpu 1 映射到物理 CPU 5。

默认情况下,`cpu_pinning` 字段仅对管理员角色的用户可见。您可以通过策略规则更改默认行为:

compute:server:topology:host:index

nodes.vcpu_set

body

列表

分配给此 NUMA 节点的虚拟 CPU 的 ID 列表。

nodes.siblings

body

列表

宿主机 CPU 线程同位体的映射。例如:

siblings: [[0,1],[2,3]]

这意味着 vcpu 0 和 vcpu 1 属于同一个 CPU 核心,vcpu 2、vcpu 3 属于另一个 CPU 核心。

默认情况下,`siblings` 字段仅对管理员角色的用户可见。您可以通过策略规则更改默认行为:

compute:server:topology:host:index

nodes.memory_mb

body

整数

分配给此 NUMA 节点的内存量,单位为 MB。

pagesize_kb

body

整数

服务器的页大小(KB)。如果页大小信息不可用,则此字段为 `null`。

默认情况下,`host_node` 字段仅对管理员角色的用户可见。您可以通过策略规则更改默认行为:

compute:server:topology:host:index

pagesize_kb

body

整数

服务器的页大小(KB)。此字段为 `null`,如果页大小信息不可用。

示例 服务器拓扑 (2.xx)

{
    "nodes": [
        {
            "cpu_pinning": {
                "0": 0,
                "1": 5
            },
            "host_node": 0,
            "memory_mb": 1024,
            "siblings": [
                [
                    0,
                    1
                ]
            ],
            "vcpu_set": [
                0,
                1
            ]
        },
        {
            "cpu_pinning": {
                "2": 1,
                "3": 8
            },
            "host_node": 1,
            "memory_mb": 2048,
            "siblings": [
                [
                    2,
                    3
                ]
            ],
            "vcpu_set": [
                2,
                3
            ]
        }
    ],
    "pagesize_kb": 4
}

内部服务 API

警告

下面的 Nova API 用于与 OpenStack 服务通信。这些 API 不应由任何用户使用,因为它们可能导致部署或资源处于非预期状态。

辅助卷快照 (os-assisted-volume-snapshots)

通过模拟器/虚拟机监控器创建和删除快照。仅支持 qcow2 文件格式。

此 API 仅由 libvirt 计算驱动程序实现。

缺乏存储(如 NFS)的内部快照可以使用模拟器/虚拟机监控器添加快照功能。这用于通过在这些卷上将数据存储为 qcow2 文件来启用 NFS 等后端的卷快照。

此 API 仅由 Cinder 调用,Cinder 使用它来为扩展 remotefs Cinder 驱动程序的驱动程序创建快照。

POST
/os-assisted-volume-snapshots

创建辅助卷快照。

创建辅助卷快照。

正常响应代码:200

错误响应代码:badRequest(400),unauthorized(401),forbidden(403)

请求

名称

入参

类型

描述

snapshot

body

对象

用于创建快照的快照的局部表示。

volume_id

body

字符串

源卷 ID。

create_info

body

对象

快照创建信息。

create_info.snapshot_id

body

字符串

快照的 UUID。

create_info.type

body

字符串

快照类型。有效值为 qcow2

create_info.new_file

body

字符串

块存储创建的 qcow2 文件名,它将成为 VM 的活动镜像。

create_info.id (可选)

body

字符串

这是一个任意字符串,会返回给用户。

示例:创建辅助卷快照:JSON 请求

{
    "snapshot": {
        "volume_id": "521752a6-acf6-4b2d-bc7a-119f9148cd8c",
        "create_info": {
            "snapshot_id": "421752a6-acf6-4b2d-bc7a-119f9148cd8c",
            "type": "qcow2",
            "new_file": "new_file_name",
            "id": "421752a6-acf6-4b2d-bc7a-119f9148cd8c"
        }
    }
}

响应

名称

入参

类型

描述

snapshot

body

对象

用于创建快照的快照的局部表示。

id

body

字符串

它与请求体中发送的任意字符串相同。

注意

此字符串按原样返回给用户,并且不会在 Nova 内部使用。因此,请使用 snapshot_id 进行后续操作。

volumeId

body

字符串

源卷 ID。

示例:创建辅助卷快照:JSON 响应

{
    "snapshot": {
        "id": "421752a6-acf6-4b2d-bc7a-119f9148cd8c",
        "volumeId": "521752a6-acf6-4b2d-bc7a-119f9148cd8c"
    }
}
DELETE
/os-assisted-volume-snapshots/{snapshot_id}

删除辅助卷快照。

删除辅助卷快照。

要发出此请求,请将 delete_info 查询参数添加到 URI,如下所示:

DELETE /os-assisted-volume-snapshots/421752a6-acf6-4b2d-bc7a-119f9148cd8c?delete_info=’{“volume_id”: “521752a6-acf6-4b2d-bc7a-119f9148cd8c”}’

正常响应代码:204

错误响应代码:badRequest(400)、unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

snapshot_id

路径

字符串

快照的 UUID。

delete_info

查询

字符串

快照删除信息。包括关联卷的 ID。例如:

DELETE /os-assisted-volume-snapshots/421752a6-acf6-4b2d-bc7a-119f9148cd8c?delete_info='{"volume_id": "521752a6-acf6-4b2d-bc7a-119f9148cd8c"}'

响应

成功的 DELETE 查询没有响应正文内容

更新(“交换”)服务器卷附件 (servers, os-volume_attachments)

更新(“交换”)服务器卷附件,这意味着交换附加到服务器的卷。

PUT
/servers/{server_id}/os-volume_attachments/{volume_id}

更新(交换)卷附件

更新卷附件。

注意

此操作仅在服务器处于 ACTIVE、PAUSED 和 RESIZED 状态时有效,否则将返回冲突(409)错误。

重要提示

更新 `volumeId` 时,此 API **必须**仅作为块存储服务通过 `os-retype` 或 `os-migrate_volume` 操作发起的更大范围的卷迁移操作的一部分。Nova 不支持直接使用此 API,并将阻止它并返回 409 冲突。此外,只有 特定的计算驱动程序 才实现了通过此 API 更新 `volumeId`。

不支持使用具有多个读/写附件的卷来更新(通常称为“交换”)卷附件。

正常响应代码:202

错误响应代码:badRequest(400),unauthorized(401),forbidden(403),itemNotFound(404),conflict(409)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

volume_id

路径

字符串

要替换的卷的 UUID。

volumeAttachment

body

对象

卷附件的字典表示,包含 volumeId 字段(替换卷的 UUID)以及要更新的附件中的其他字段。

volumeId

body

字符串

要附加的卷的 UUID,以替换已附加的卷。

示例 更新卷附件:JSON 请求

{
    "volumeAttachment": {
        "volumeId": "227cc671-f30b-4488-96fd-7d0bf13648d8"
    }
}

响应

成功请求时没有返回正文。

创建外部事件 (os-server-external-events)

警告

这是一个仅限 `admin` 级别的服务 API,专门供其他 OpenStack 服务使用。此 API 的目的是协调 Nova 与 Neutron、Nova 与 Cinder、Nova 与 Ironic(以及未来可能的其他服务)之间需要双方参与的活动,例如网络热插拔。

除非您正在编写 Neutron、Cinder 或 Ironic 代码,否则**不应**使用此 API。

创建一项或多项外部事件。API 将每个事件分派给服务器实例。

POST
/os-server-external-events

运行事件

创建一项或多项外部事件,API 将这些事件分派给服务器分配到的主机。如果服务器当前未分配给任何主机,则事件将不会被传递。

您将收到提交的事件列表,其中包含更新的 `code` 和 `status`,指示它们的成功级别。

正常响应代码:200, 207

如果所有事件都成功,将返回 200;如果有任何事件未能处理,将返回 207。事件的 `code` 属性将进一步解释出了什么问题。

错误响应代码:badRequest(400),unauthorized(401),forbidden(403)

注意

在修复 bug 1855752 之前,当所有事件都失败时,可能会错误地返回 404 错误响应代码。

请求

名称

入参

类型

描述

events

body

数组

要处理的外部事件列表。

name

body

字符串

事件名称。有效值为:

  • network-changed

  • network-vif-plugged

  • network-vif-unplugged

  • network-vif-deleted

  • `volume-extended` (自 microversion `2.51` 起)

  • `power-update` (自 microversion `2.76` 起)

  • `accelerator-request-bound` (自 microversion `2.82` 起)

  • `volume-reimaged` (自 microversion `2.93` 起)

server_uuid

body

字符串

API 将事件分派到的服务器实例的 UUID。您必须将此实例分配给一个主机。否则,此调用不会将事件分派给实例。

status (可选)

body

字符串

事件状态。有效值为 `failed`、`completed` 或 `in-progress`。默认为 `completed`。

tag (可选)

body

字符串

用于标识事件的字符串值。某些类型的事件需要特定的标签:

  • 对于 `accelerator-request-bound` 事件,标签必须是加速器请求的 UUID。

  • 对于 `power-update` 事件,标签必须是 `POWER_ON` 或 `POWER_OFF`。

  • 对于 `volume-extended` 事件,标签必须是卷 ID。

示例 运行事件

{
    "events": [
        {
            "name": "test-event",
            "tag": "foo",
            "status": "completed",
            "server_uuid": "3df201cf-2451-44f2-8d25-a4ca826fc1f3"
        }
    ]
}

响应

名称

入参

类型

描述

events

body

数组

要处理的外部事件列表。

code

body

字符串

事件的 HTTP 响应代码。当前使用的代码包括:

  • 200 - 成功提交事件

  • 400 - 请求缺少必需的参数

  • 404 - 未找到由 `server_uuid` 指定的实例

  • 422 - 未为主机找到由 `server_uuid` 指定的服务器,

    因此没有到此服务器的路由。

name

body

字符串

事件名称。有效值为:

  • network-changed

  • network-vif-plugged

  • network-vif-unplugged

  • network-vif-deleted

  • `volume-extended` (自 microversion `2.51` 起)

  • `power-update` (自 microversion `2.76` 起)

  • `accelerator-request-bound` (自 microversion `2.82` 起)

  • `volume-reimaged` (自 microversion `2.93` 起)

server_uuid

body

字符串

API 将事件分派到的服务器实例的 UUID。您必须将此实例分配给一个主机。否则,此调用不会将事件分派给实例。

status (可选)

body

字符串

事件状态。有效值为 `failed`、`completed` 或 `in-progress`。默认为 `completed`。

tag (可选)

body

字符串

用于标识事件的字符串值。某些类型的事件需要特定的标签:

  • 对于 `accelerator-request-bound` 事件,标签必须是加速器请求的 UUID。

  • 对于 `power-update` 事件,标签必须是 `POWER_ON` 或 `POWER_OFF`。

  • 对于 `volume-extended` 事件,标签必须是卷 ID。

示例 运行事件

{
    "events": [
        {
            "code": 200,
            "name": "network-changed",
            "server_uuid": "ff1df7b2-6772-45fd-9326-c0a3b05591c2",
            "status": "completed",
            "tag": "foo"
        }
    ]
}

已弃用 API

本节包含已弃用且通常仅限于某些最大 microversion 的 API 的参考。

扩展 (extensions) (已弃用)

列出可用扩展,并通过别名显示扩展信息。

Nova 最初支持 API 扩展的概念,它允许 Nova 的实现通过扩展来更改 API(添加新资源或向现有资源对象添加属性)。为了向用户展示特定云支持的内容,extensions 资源提供了扩展列表和每个扩展的详细信息。最终结果是 API 的不必要差异化,这要求所有 OpenStack 云的用户编写特定代码才能与每个云进行交互。

因此,整个扩展概念已被弃用,并将在不久的将来删除。

GET
/extensions

列出扩展

列出 API 的所有扩展。

正常响应代码:200

错误响应代码:unauthorized(401)

响应

名称

入参

类型

描述

extensions

body

数组

`extension` 对象的列表。

name

body

字符串

扩展的名称。

alias

body

字符串

此扩展也称为其简称。

links

body

数组

与此扩展相关的链接。这是一个字典列表,每个字典包含 `href` 和 `rel` 键。

namespace

body

字符串

指向此扩展命名空间的 URL。

description

body

字符串

描述此扩展用途的文本。

updated

body

字符串

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

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

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

示例 列出扩展

列出 API 的所有扩展。

{
    "extensions": [
        {
            "alias": "NMN",
            "description": "Multiple network support.",
            "links": [],
            "name": "Multinic",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "OS-DCF",
            "description": "Disk Management Extension.",
            "links": [],
            "name": "DiskConfig",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "OS-EXT-AZ",
            "description": "Extended Availability Zone support.",
            "links": [],
            "name": "ExtendedAvailabilityZone",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "OS-EXT-IMG-SIZE",
            "description": "Adds image size to image listings.",
            "links": [],
            "name": "ImageSize",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "OS-EXT-IPS",
            "description": "Adds type parameter to the ip list.",
            "links": [],
            "name": "ExtendedIps",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "OS-EXT-IPS-MAC",
            "description": "Adds mac address parameter to the ip list.",
            "links": [],
            "name": "ExtendedIpsMac",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "OS-EXT-SRV-ATTR",
            "description": "Extended Server Attributes support.",
            "links": [],
            "name": "ExtendedServerAttributes",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "OS-EXT-STS",
            "description": "Extended Status support.",
            "links": [],
            "name": "ExtendedStatus",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "OS-FLV-DISABLED",
            "description": "Support to show the disabled status of a flavor.",
            "links": [],
            "name": "FlavorDisabled",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "OS-FLV-EXT-DATA",
            "description": "Provide additional data for flavors.",
            "links": [],
            "name": "FlavorExtraData",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "OS-SCH-HNT",
            "description": "Pass arbitrary key/value pairs to the scheduler.",
            "links": [],
            "name": "SchedulerHints",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "OS-SRV-USG",
            "description": "Adds launched_at and terminated_at on Servers.",
            "links": [],
            "name": "ServerUsage",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-access-ips",
            "description": "Access IPs support.",
            "links": [],
            "name": "AccessIPs",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-admin-actions",
            "description": "Enable admin-only server actions\n\n    Actions include: resetNetwork, injectNetworkInfo, os-resetState\n    ",
            "links": [],
            "name": "AdminActions",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-admin-password",
            "description": "Admin password management support.",
            "links": [],
            "name": "AdminPassword",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-agents",
            "description": "Agents support.",
            "links": [],
            "name": "Agents",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-aggregates",
            "description": "Admin-only aggregate administration.",
            "links": [],
            "name": "Aggregates",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-assisted-volume-snapshots",
            "description": "Assisted volume snapshots.",
            "links": [],
            "name": "AssistedVolumeSnapshots",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-attach-interfaces",
            "description": "Attach interface support.",
            "links": [],
            "name": "AttachInterfaces",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-availability-zone",
            "description": "1. Add availability_zone to the Create Server API.\n       2. Add availability zones describing.\n    ",
            "links": [],
            "name": "AvailabilityZone",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-baremetal-ext-status",
            "description": "Add extended status in Baremetal Nodes v2 API.",
            "links": [],
            "name": "BareMetalExtStatus",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-baremetal-nodes",
            "description": "Admin-only bare-metal node administration.",
            "links": [],
            "name": "BareMetalNodes",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-block-device-mapping",
            "description": "Block device mapping boot support.",
            "links": [],
            "name": "BlockDeviceMapping",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-block-device-mapping-v2-boot",
            "description": "Allow boot with the new BDM data format.",
            "links": [],
            "name": "BlockDeviceMappingV2Boot",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-cell-capacities",
            "description": "Adding functionality to get cell capacities.",
            "links": [],
            "name": "CellCapacities",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-cells",
            "description": "Enables cells-related functionality such as adding neighbor cells,\n    listing neighbor cells, and getting the capabilities of the local cell.\n    ",
            "links": [],
            "name": "Cells",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-certificates",
            "description": "Certificates support.",
            "links": [],
            "name": "Certificates",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-cloudpipe",
            "description": "Adds actions to create cloudpipe instances.\n\n    When running with the Vlan network mode, you need a mechanism to route\n    from the public Internet to your vlans.  This mechanism is known as a\n    cloudpipe.\n\n    At the time of creating this class, only OpenVPN is supported.  Support for\n    a SSH Bastion host is forthcoming.\n    ",
            "links": [],
            "name": "Cloudpipe",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-cloudpipe-update",
            "description": "Adds the ability to set the vpn ip/port for cloudpipe instances.",
            "links": [],
            "name": "CloudpipeUpdate",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-config-drive",
            "description": "Config Drive Extension.",
            "links": [],
            "name": "ConfigDrive",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-console-auth-tokens",
            "description": "Console token authentication support.",
            "links": [],
            "name": "ConsoleAuthTokens",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-console-output",
            "description": "Console log output support, with tailing ability.",
            "links": [],
            "name": "ConsoleOutput",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-consoles",
            "description": "Interactive Console support.",
            "links": [],
            "name": "Consoles",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-create-backup",
            "description": "Create a backup of a server.",
            "links": [],
            "name": "CreateBackup",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-create-server-ext",
            "description": "Extended support to the Create Server v1.1 API.",
            "links": [],
            "name": "Createserverext",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-deferred-delete",
            "description": "Instance deferred delete.",
            "links": [],
            "name": "DeferredDelete",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-evacuate",
            "description": "Enables server evacuation.",
            "links": [],
            "name": "Evacuate",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-extended-evacuate-find-host",
            "description": "Enables server evacuation without target host. Scheduler will select one to target.",
            "links": [],
            "name": "ExtendedEvacuateFindHost",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-extended-floating-ips",
            "description": "Adds optional fixed_address to the add floating IP command.",
            "links": [],
            "name": "ExtendedFloatingIps",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-extended-hypervisors",
            "description": "Extended hypervisors support.",
            "links": [],
            "name": "ExtendedHypervisors",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-extended-networks",
            "description": "Adds additional fields to networks.",
            "links": [],
            "name": "ExtendedNetworks",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-extended-quotas",
            "description": "Adds ability for admins to delete quota and optionally force the update Quota command.",
            "links": [],
            "name": "ExtendedQuotas",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-extended-rescue-with-image",
            "description": "Allow the user to specify the image to use for rescue.",
            "links": [],
            "name": "ExtendedRescueWithImage",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-extended-services",
            "description": "Extended services support.",
            "links": [],
            "name": "ExtendedServices",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-extended-services-delete",
            "description": "Extended services deletion support.",
            "links": [],
            "name": "ExtendedServicesDelete",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-extended-status",
            "description": "Extended Status support.",
            "links": [],
            "name": "ExtendedStatus",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-extended-volumes",
            "description": "Extended Volumes support.",
            "links": [],
            "name": "ExtendedVolumes",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-fixed-ips",
            "description": "Fixed IPs support.",
            "links": [],
            "name": "FixedIPs",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-flavor-access",
            "description": "Flavor access support.",
            "links": [],
            "name": "FlavorAccess",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-flavor-extra-specs",
            "description": "Flavors extra specs support.",
            "links": [],
            "name": "FlavorExtraSpecs",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-flavor-manage",
            "description": "Flavor create/delete API support.",
            "links": [],
            "name": "FlavorManage",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-flavor-rxtx",
            "description": "Support to show the rxtx status of a flavor.",
            "links": [],
            "name": "FlavorRxtx",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-flavor-swap",
            "description": "Support to show the swap status of a flavor.",
            "links": [],
            "name": "FlavorSwap",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-floating-ip-dns",
            "description": "Floating IP DNS support.",
            "links": [],
            "name": "FloatingIpDns",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-floating-ip-pools",
            "description": "Floating IPs support.",
            "links": [],
            "name": "FloatingIpPools",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-floating-ips",
            "description": "Floating IPs support.",
            "links": [],
            "name": "FloatingIps",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-floating-ips-bulk",
            "description": "Bulk handling of Floating IPs.",
            "links": [],
            "name": "FloatingIpsBulk",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-fping",
            "description": "Fping Management Extension.",
            "links": [],
            "name": "Fping",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-hide-server-addresses",
            "description": "Support hiding server addresses in certain states.",
            "links": [],
            "name": "HideServerAddresses",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-hosts",
            "description": "Admin-only host administration.",
            "links": [],
            "name": "Hosts",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-hypervisor-status",
            "description": "Show hypervisor status.",
            "links": [],
            "name": "HypervisorStatus",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-hypervisors",
            "description": "Admin-only hypervisor administration.",
            "links": [],
            "name": "Hypervisors",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-instance-actions",
            "description": "View a log of actions and events taken on an instance.",
            "links": [],
            "name": "InstanceActions",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-instance_usage_audit_log",
            "description": "Admin-only Task Log Monitoring.",
            "links": [],
            "name": "OSInstanceUsageAuditLog",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-keypairs",
            "description": "Keypair Support.",
            "links": [],
            "name": "Keypairs",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-lock-server",
            "description": "Enable lock/unlock server actions.",
            "links": [],
            "name": "LockServer",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-migrate-server",
            "description": "Enable migrate and live-migrate server actions.",
            "links": [],
            "name": "MigrateServer",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-migrations",
            "description": "Provide data on migrations.",
            "links": [],
            "name": "Migrations",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-multiple-create",
            "description": "Allow multiple create in the Create Server v2.1 API.",
            "links": [],
            "name": "MultipleCreate",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-networks",
            "description": "Admin-only Network Management Extension.",
            "links": [],
            "name": "Networks",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-networks-associate",
            "description": "Network association support.",
            "links": [],
            "name": "NetworkAssociationSupport",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-pause-server",
            "description": "Enable pause/unpause server actions.",
            "links": [],
            "name": "PauseServer",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-personality",
            "description": "Personality support.",
            "links": [],
            "name": "Personality",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-preserve-ephemeral-rebuild",
            "description": "Allow preservation of the ephemeral partition on rebuild.",
            "links": [],
            "name": "PreserveEphemeralOnRebuild",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-quota-class-sets",
            "description": "Quota classes management support.",
            "links": [],
            "name": "QuotaClasses",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-quota-sets",
            "description": "Quotas management support.",
            "links": [],
            "name": "Quotas",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-rescue",
            "description": "Instance rescue mode.",
            "links": [],
            "name": "Rescue",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-security-group-default-rules",
            "description": "Default rules for security group support.",
            "links": [],
            "name": "SecurityGroupDefaultRules",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-security-groups",
            "description": "Security group support.",
            "links": [],
            "name": "SecurityGroups",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-server-diagnostics",
            "description": "Allow Admins to view server diagnostics through server action.",
            "links": [],
            "name": "ServerDiagnostics",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-server-external-events",
            "description": "Server External Event Triggers.",
            "links": [],
            "name": "ServerExternalEvents",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-server-group-quotas",
            "description": "Adds quota support to server groups.",
            "links": [],
            "name": "ServerGroupQuotas",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-server-groups",
            "description": "Server group support.",
            "links": [],
            "name": "ServerGroups",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-server-list-multi-status",
            "description": "Allow to filter the servers by a set of status values.",
            "links": [],
            "name": "ServerListMultiStatus",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-server-password",
            "description": "Server password support.",
            "links": [],
            "name": "ServerPassword",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-server-sort-keys",
            "description": "Add sorting support in get Server v2 API.",
            "links": [],
            "name": "ServerSortKeys",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-server-start-stop",
            "description": "Start/Stop instance compute API support.",
            "links": [],
            "name": "ServerStartStop",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-services",
            "description": "Services support.",
            "links": [],
            "name": "Services",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-shelve",
            "description": "Instance shelve mode.",
            "links": [],
            "name": "Shelve",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-simple-tenant-usage",
            "description": "Simple tenant usage extension.",
            "links": [],
            "name": "SimpleTenantUsage",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-suspend-server",
            "description": "Enable suspend/resume server actions.",
            "links": [],
            "name": "SuspendServer",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-tenant-networks",
            "description": "Tenant-based Network Management Extension.",
            "links": [],
            "name": "OSTenantNetworks",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-used-limits",
            "description": "Provide data on limited resources that are being used.",
            "links": [],
            "name": "UsedLimits",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-used-limits-for-admin",
            "description": "Provide data to admin on limited resources used by other tenants.",
            "links": [],
            "name": "UsedLimitsForAdmin",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-user-data",
            "description": "Add user_data to the Create Server API.",
            "links": [],
            "name": "UserData",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-user-quotas",
            "description": "Project user quota support.",
            "links": [],
            "name": "UserQuotas",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-virtual-interfaces",
            "description": "Virtual interface support.",
            "links": [],
            "name": "VirtualInterfaces",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-volume-attachment-update",
            "description": "Support for updating a volume attachment.",
            "links": [],
            "name": "VolumeAttachmentUpdate",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        },
        {
            "alias": "os-volumes",
            "description": "Volumes support.",
            "links": [],
            "name": "Volumes",
            "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
            "updated": "2014-12-03T00:00:00Z"
        }
    ]
}
GET
/extensions/{alias}

显示扩展详情

通过别名显示扩展的详细信息。

正常响应代码:200

错误响应代码:unauthorized(401), itemNotFound(404)

请求

名称

入参

类型

描述

alias

body

字符串

此扩展也称为其简称。

响应

名称

入参

类型

描述

extension

body

对象

一个 `extension` 对象。

name

body

字符串

扩展的名称。

alias

body

字符串

此扩展也称为其简称。

links

body

数组

与此扩展相关的链接。这是一个字典列表,每个字典包含 `href` 和 `rel` 键。

namespace

body

字符串

指向此扩展命名空间的 URL。

description

body

字符串

描述此扩展用途的文本。

updated

body

字符串

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

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

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

示例 显示扩展详情

显示 `os-agents` 扩展的详细信息。

{
    "extension": {
        "alias": "os-agents",
        "description": "Agents support.",
        "links": [],
        "name": "Agents",
        "namespace": "https://docs.openstack.org/compute/ext/fake_xml",
        "updated": "2014-12-03T00:00:00Z"
    }
}

网络 (os-networks) (已弃用)

警告

此 API 设计用于与 `nova-network` 一起使用,`nova-network` 在 14.0.0 (Newton) 版本中已弃用,并在 21.0.0 (Ussuri) 版本中删除。一些功能在适当时会代理到网络服务 (neutron),但与所有翻译代理一样,这远非完美的兼容性。在新的应用程序中应避免使用这些 API,而应 直接使用 neutron。从 microversion 2.36 开始,这些 API 将会返回 404。它们在 21.0.0 (Ussuri) 版本中被删除。

创建、列出、显示网络信息和删除网络。

将网络添加到项目,将网络与项目解除关联,以及将项目与网络解除关联。

将宿主机与网络关联以及将宿主机与网络解除关联。

GET
/os-networks

列出网络

列出项目的网络。

策略默认允许所有用户执行此操作。云提供商可以通过 `policy.json` 文件更改这些权限。

正常响应代码:200

错误响应代码:未授权(401)、禁止(403)

响应

示例 列出网络:JSON 响应

{
    "networks": [
        {
            "bridge": null,
            "bridge_interface": null,
            "broadcast": null,
            "cidr": null,
            "cidr_v6": null,
            "created_at": null,
            "deleted": null,
            "deleted_at": null,
            "dhcp_server": null,
            "dhcp_start": null,
            "dns1": null,
            "dns2": null,
            "enable_dhcp": null,
            "gateway": null,
            "gateway_v6": null,
            "host": null,
            "id": "20c8acc0-f747-4d71-a389-46d078ebf047",
            "injected": null,
            "label": "private",
            "mtu": null,
            "multi_host": null,
            "netmask": null,
            "netmask_v6": null,
            "priority": null,
            "project_id": null,
            "rxtx_base": null,
            "share_address": null,
            "updated_at": null,
            "vlan": null,
            "vpn_private_address": null,
            "vpn_public_address": null,
            "vpn_public_port": null
        }
    ]
}
POST
/os-networks

创建网络

创建网络。

策略默认仅允许拥有管理员角色或网络所有权的用户执行此操作。云提供商可以通过 `policy.json` 文件更改这些权限。

正常响应代码:200

错误响应代码:badRequest(400), unauthorized(401), forbidden(403), conflict(409), gone(410), notImplemented(501)

请求

示例 创建网络:JSON 请求

{
    "network": {
        "label": "new net 111",
        "cidr": "10.20.105.0/24",
        "mtu": 9000,
        "dhcp_server": "10.20.105.2",
        "enable_dhcp": false,
        "share_address": true,
        "allowed_start": "10.20.105.10",
        "allowed_end": "10.20.105.200"
    }
}

响应

示例 创建网络:JSON 响应

{
    "network": {
        "bridge": null,
        "bridge_interface": null,
        "broadcast": "10.20.105.255",
        "cidr": "10.20.105.0/24",
        "cidr_v6": null,
        "created_at": null,
        "deleted": null,
        "deleted_at": null,
        "dhcp_server": "10.20.105.2",
        "dhcp_start": "10.20.105.2",
        "dns1": null,
        "dns2": null,
        "enable_dhcp": false,
        "gateway": "10.20.105.1",
        "gateway_v6": null,
        "host": null,
        "id": "d7a17c0c-457e-4ab4-a99c-4fa1762f5359",
        "injected": null,
        "label": "new net 111",
        "mtu": 9000,
        "multi_host": null,
        "netmask": "255.255.255.0",
        "netmask_v6": null,
        "priority": null,
        "project_id": null,
        "rxtx_base": null,
        "share_address": true,
        "updated_at": null,
        "vlan": null,
        "vpn_private_address": null,
        "vpn_public_address": null,
        "vpn_public_port": null
    }
}
POST
/os-networks/add

添加网络

将网络添加到项目。

策略默认仅允许具有管理员角色的用户执行此操作。云提供商可以通过 policy.json 文件更改这些权限。

正常响应代码:202

错误响应代码:badRequest(400), unauthorized(401), forbidden(403), gone(410), notImplemented(501)

请求

示例 添加网络:JSON 请求

{
    "id": "1"
}

响应

GET
/os-networks/{network_id}

显示网络详情

显示网络的详细信息。

策略默认允许所有用户执行此操作。云提供商可以通过 `policy.json` 文件更改这些权限。

正常响应代码:200

错误响应代码:unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

network_id

路径

字符串

网络的 UUID。

响应

示例 显示网络详情:JSON 响应

{
    "network": {
        "bridge": null,
        "bridge_interface": null,
        "broadcast": null,
        "cidr": null,
        "cidr_v6": null,
        "created_at": null,
        "deleted": null,
        "deleted_at": null,
        "dhcp_server": null,
        "dhcp_start": null,
        "dns1": null,
        "dns2": null,
        "enable_dhcp": null,
        "gateway": null,
        "gateway_v6": null,
        "host": null,
        "id": "20c8acc0-f747-4d71-a389-46d078ebf047",
        "injected": null,
        "label": "private",
        "mtu": null,
        "multi_host": null,
        "netmask": null,
        "netmask_v6": null,
        "priority": null,
        "project_id": null,
        "rxtx_base": null,
        "share_address": null,
        "updated_at": null,
        "vlan": null,
        "vpn_private_address": null,
        "vpn_public_address": null,
        "vpn_public_port": null
    }
}
DELETE
/os-networks/{network_id}

删除网络

删除网络。

策略默认仅允许拥有管理员角色或网络所有权的用户执行此操作。云提供商可以通过 `policy.json` 文件更改这些权限。

正常响应代码:202

错误响应代码:unauthorized(401), forbidden(403), itemNotFound(404), conflict(409), gone(410)

请求

名称

入参

类型

描述

network_id

路径

字符串

网络的 UUID。

响应

成功 DELETE 查询的响应没有正文内容。

POST
/os-networks/{network_id}/action

关联宿主机

将网络与宿主机关联。

在请求体中指定 `associate_host` 操作。

策略默认仅允许拥有管理员角色或网络所有权的用户执行此操作。云提供商可以通过 `policy.json` 文件更改这些权限。

正常响应代码:202

错误响应代码:unauthorized(401), forbidden(403), itemNotFound(404), gone(410), notImplemented(501)

请求

名称

入参

类型

描述

network_id

路径

字符串

网络的 UUID。

associate_host

body

字符串

要关联的宿主机名称。

示例 将宿主机关联到网络:JSON 请求

{
    "associate_host": "testHost"
}

响应

成功 POST 查询的响应没有正文内容。

POST
/os-networks/{network_id}/action

取消关联网络

将网络与项目解除关联。然后您可以重新使用该网络。

在请求体中指定 `disassociate` 操作。

策略默认仅允许拥有管理员角色或网络所有权的用户执行此操作。云提供商可以通过 `policy.json` 文件更改这些权限。

正常响应代码:202

错误响应代码:unauthorized(401), forbidden(403), itemNotFound(404), gone(410), notImplemented(501)

请求

名称

入参

类型

描述

network_id

路径

字符串

网络的 UUID。

示例 取消关联网络:JSON 请求

{
    "disassociate": null
}

响应

成功 POST 查询的响应没有正文内容。

POST
/os-networks/{network_id}/action

取消关联宿主机

将宿主机与网络解除关联。

在请求体中指定 `disassociate_host` 操作。

策略默认仅允许拥有管理员角色或网络所有权的用户执行此操作。云提供商可以通过 `policy.json` 文件更改这些权限。

正常响应代码:202

错误响应代码:unauthorized(401), forbidden(403), itemNotFound(404), gone(410), notImplemented(501)

请求

名称

入参

类型

描述

network_id

路径

字符串

网络的 UUID。

示例 将宿主机与网络解除关联:JSON 请求

{
    "disassociate_host": null
}

响应

成功 POST 查询的响应没有正文内容。

POST
/os-networks/{network_id}/action

取消关联项目

将项目与网络解除关联。

在请求体中指定 `disassociate_project` 操作。

策略默认仅允许拥有管理员角色或网络所有权的用户执行此操作。云提供商可以通过 `policy.json` 文件更改这些权限。

正常响应代码:202

错误响应代码:unauthorized(401), forbidden(403), itemNotFound(404), gone(410), notImplemented(501)

请求

名称

入参

类型

描述

network_id

路径

字符串

网络的 UUID。

示例 将项目与网络解除关联:JSON 请求

{
    "disassociate_project": null
}

响应

成功 POST 查询的响应没有正文内容。

卷扩展 (os-volumes, os-snapshots) (已弃用)

警告

这些 API 是对卷服务的代理调用。Nova 已弃用所有代理 API,用户应改用原生 API。从 microversion 2.36 开始,除图像元数据 API 外,所有卷服务代理 API 都将返回 404。请参阅:相关卷 API

管理与计算 API 一起使用的卷和快照。列出、显示详细信息、创建和删除卷和快照。

GET
/os-volumes

列出卷

列出与账户关联的卷。

正常响应代码:200

错误响应代码:未授权(401)、禁止(403)

请求

名称

入参

类型

描述

limit (可选)

查询

整数

offset 结合使用以返回项目切片。limit 是要返回的最大项目数。如果未指定 limit,或超过可配置的 max_limit,则将改用 max_limit

offset (可选)

查询

整数

limit 结合使用以返回项目的切片。offset 是列表中的起始位置。

响应

名称

入参

类型

描述

volumes

body

数组

`volume` 对象的列表。

attachments

body

数组

卷挂载列表。

attachments.device (可选)

body

字符串

挂载对象中的设备名称,例如 /dev/vdb

attachments.id (可选)

body

字符串

附件的 UUID。

attachments.serverId (可选)

body

字符串

服务器的 UUID。

attachments.volumeId (可选)

body

字符串

已挂载卷的 UUID。

availabilityZone

body

字符串

可用区名称。

createdAt

body

字符串

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

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

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

displayDescription

body

字符串

卷描述。

displayName

body

字符串

卷名称。

id

body

字符串

卷的 UUID。

metadata

body

对象

元数据键值对。每个元数据键值对的最大大小为 255 字节。

size

body

整数

卷的大小,以 gibibytes (GiB) 为单位。

snapshotId

body

字符串

快照的 UUID。

status

body

字符串

卷的状态。

volumeType

body

字符串

卷类型的名称或唯一标识符。


示例 列出卷

{
    "volumes": [
        {
            "attachments": [
                {
                    "device": "/",
                    "id": "a26887c6-c47b-4654-abb5-dfadf7d3f803",
                    "serverId": "3912f2b4-c5ba-4aec-9165-872876fe202e",
                    "volumeId": "a26887c6-c47b-4654-abb5-dfadf7d3f803"
                }
            ],
            "availabilityZone": "dublin",
            "createdAt": "2013-02-19T20:01:40.274897",
            "displayDescription": "Volume Description",
            "displayName": "Volume Name",
            "id": "a26887c6-c47b-4654-abb5-dfadf7d3f803",
            "metadata": {},
            "size": 100,
            "snapshotId": null,
            "status": "in-use",
            "volumeType": "vol_type_name"
        }
    ]
}
POST
/os-volumes

创建卷

创建一个新卷。

正常响应代码:200

错误响应代码:badRequest(400)、unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

volume

body

对象

`volume` 对象。

size

body

整数

卷的大小,以 gibibytes (GiB) 为单位。

availability_zone (可选)

body

字符串

可用区名称。

display_name(可选)

body

字符串

卷名称。

display_description (可选)

body

字符串

卷描述。

metadata (可选)

body

对象

元数据键值对。每个元数据键和值的最大大小为 255 字节。

volume_type (可选)

body

字符串

卷类型的唯一标识符。

snapshot_id (可选)

body

字符串

快照的 UUID。

示例 创建卷

{
    "volume": {
        "availability_zone": "dublin",
        "display_name": "Volume Name",
        "display_description": "Volume Description",
        "size": 100
    }
}

响应

名称

入参

类型

描述

volume

body

对象

`volume` 对象。

attachments

body

数组

卷挂载列表。

attachments.device (可选)

body

字符串

挂载对象中的设备名称,例如 /dev/vdb

attachments.id (可选)

body

字符串

附件的 UUID。

attachments.serverId (可选)

body

字符串

服务器的 UUID。

attachments.volumeId (可选)

body

字符串

已挂载卷的 UUID。

availabilityZone

body

字符串

可用区名称。

createdAt

body

字符串

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

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

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

displayName

body

字符串

卷名称。

displayDescription

body

字符串

卷描述。

id

body

字符串

卷的 UUID。

metadata

body

对象

元数据键值对。每个元数据键值对的最大大小为 255 字节。

size

body

整数

卷的大小,以 gibibytes (GiB) 为单位。

snapshotId

body

字符串

快照的 UUID。

status

body

字符串

卷的状态。

volumeType

body

字符串

卷类型的名称或唯一标识符。


示例 创建卷

{
    "volume": {
        "attachments": [
            {
                "device": "/",
                "id": "a26887c6-c47b-4654-abb5-dfadf7d3f803",
                "serverId": "3912f2b4-c5ba-4aec-9165-872876fe202e",
                "volumeId": "a26887c6-c47b-4654-abb5-dfadf7d3f803"
            }
        ],
        "availabilityZone": "dublin",
        "createdAt": "2013-02-18T14:51:17.970024",
        "displayDescription": "Volume Description",
        "displayName": "Volume Name",
        "id": "a26887c6-c47b-4654-abb5-dfadf7d3f803",
        "metadata": {},
        "size": 100,
        "snapshotId": null,
        "status": "in-use",
        "volumeType": "vol_type_name"
    }
}
GET
/os-volumes/detail

列出带详情的卷

列出所有卷及其详细信息。

正常响应代码:200

错误响应代码:未授权(401)、禁止(403)

请求

名称

入参

类型

描述

limit (可选)

查询

整数

offset 结合使用以返回项目切片。limit 是要返回的最大项目数。如果未指定 limit,或超过可配置的 max_limit,则将改用 max_limit

offset (可选)

查询

整数

limit 结合使用以返回项目的切片。offset 是列表中的起始位置。

响应

名称

入参

类型

描述

volumes

body

数组

`volume` 对象的列表。

attachments

body

数组

卷挂载列表。

attachments.device (可选)

body

字符串

挂载对象中的设备名称,例如 /dev/vdb

attachments.id (可选)

body

字符串

附件的 UUID。

attachments.serverId (可选)

body

字符串

服务器的 UUID。

attachments.volumeId (可选)

body

字符串

已挂载卷的 UUID。

availabilityZone

body

字符串

可用区名称。

createdAt

body

字符串

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

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

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

displayName

body

字符串

卷名称。

displayDescription

body

字符串

卷描述。

id

body

字符串

卷的 UUID。

metadata

body

对象

元数据键值对。每个元数据键值对的最大大小为 255 字节。

size

body

整数

卷的大小,以 gibibytes (GiB) 为单位。

snapshotId

body

字符串

快照的 UUID。

status

body

字符串

卷的状态。

volumeType

body

字符串

卷类型的名称或唯一标识符。


示例 列出带详情的卷

{
    "volumes": [
        {
            "attachments": [
                {
                    "device": "/",
                    "id": "a26887c6-c47b-4654-abb5-dfadf7d3f803",
                    "serverId": "3912f2b4-c5ba-4aec-9165-872876fe202e",
                    "volumeId": "a26887c6-c47b-4654-abb5-dfadf7d3f803"
                }
            ],
            "availabilityZone": "dublin",
            "createdAt": "1999-01-01T01:01:01.000000",
            "displayDescription": "Volume Description",
            "displayName": "Volume Name",
            "id": "a26887c6-c47b-4654-abb5-dfadf7d3f803",
            "metadata": {},
            "size": 100,
            "snapshotId": null,
            "status": "in-use",
            "volumeType": "vol_type_name"
        }
    ]
}
GET
/os-volumes/{volume_id}

显示卷详情

显示给定卷的详细信息。

正常响应代码:200

错误响应代码:unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

volume_id

路径

字符串

卷的唯一 ID。

响应

名称

入参

类型

描述

volume

body

对象

`volume` 对象。

attachments

body

数组

卷挂载列表。

attachment.device (可选)

body

字符串

挂载对象中的设备名称,例如 /dev/vdb

attachments.id (可选)

body

字符串

附件的 UUID。

attachments.serverId (可选)

body

字符串

服务器的 UUID。

attachments.volumeId (可选)

body

字符串

已挂载卷的 UUID。

availabilityZone

body

字符串

可用区名称。

createdAt

body

字符串

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

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

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

displayName

body

字符串

卷名称。

displayDescription

body

字符串

卷描述。

id

body

字符串

卷的 UUID。

metadata

body

对象

元数据键值对。每个元数据键值对的最大大小为 255 字节。

size

body

整数

卷的大小,以 gibibytes (GiB) 为单位。

snapshotId

body

字符串

快照的 UUID。

status

body

字符串

卷的状态。

volumeType

body

字符串

卷类型的名称或唯一标识符。


示例 显示卷详情

{
    "volume": {
        "attachments": [
            {
                "device": "/",
                "id": "a26887c6-c47b-4654-abb5-dfadf7d3f803",
                "serverId": "3912f2b4-c5ba-4aec-9165-872876fe202e",
                "volumeId": "a26887c6-c47b-4654-abb5-dfadf7d3f803"
            }
        ],
        "availabilityZone": "dublin",
        "createdAt": "2013-02-18T14:51:18.528085",
        "displayDescription": "Volume Description",
        "displayName": "Volume Name",
        "id": "a26887c6-c47b-4654-abb5-dfadf7d3f803",
        "metadata": {},
        "size": 100,
        "snapshotId": null,
        "status": "in-use",
        "volumeType": "vol_type_name"
    }
}
DELETE
/os-volumes/{volume_id}

删除卷

删除卷。

正常响应代码:202

错误响应代码:unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

volume_id

路径

字符串

卷的唯一 ID。

响应

成功的 DELETE 查询没有响应正文内容

GET
/os-snapshots

列出快照

列出快照。

正常响应代码:200

错误响应代码:未授权(401)、禁止(403)

请求

名称

入参

类型

描述

limit (可选)

查询

整数

offset 结合使用以返回项目切片。limit 是要返回的最大项目数。如果未指定 limit,或超过可配置的 max_limit,则将改用 max_limit

offset (可选)

查询

整数

limit 结合使用以返回项目的切片。offset 是列表中的起始位置。

响应

名称

入参

类型

描述

快照

body

数组

快照对象的列表。

id

body

字符串

快照的 UUID。

createdAt

body

字符串

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

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

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

displayName

body

字符串

快照名称。

displayDescription

body

字符串

快照描述。

size

body

整数

卷的大小,以 gibibytes (GiB) 为单位。

status

body

字符串

快照的状态。有效状态值是:

  • available

  • creating

  • deleting

  • error

  • error_deleting

volumeId

body

字符串

源卷 ID。


示例 列出快照

{
    "snapshots": [
        {
            "createdAt": "2025-06-12T14:56:28.865898",
            "displayDescription": "Default description",
            "displayName": "Default name",
            "id": "f3ddb3ee-7fed-4237-ac25-1d4d8c0fb127",
            "size": 100,
            "status": "available",
            "volumeId": "4fe5b5eb-694e-4ead-ba98-ecffc6ff1d21"
        },
        {
            "createdAt": "2025-06-12T14:56:28.865915",
            "displayDescription": "Default description",
            "displayName": "Default name",
            "id": "d018c6d5-0a75-4001-aef2-9f9df82feb6e",
            "size": 100,
            "status": "available",
            "volumeId": "4fe5b5eb-694e-4ead-ba98-ecffc6ff1d21"
        },
        {
            "createdAt": "2025-06-12T14:56:28.865925",
            "displayDescription": "Default description",
            "displayName": "Default name",
            "id": "df0a2535-bab9-4bec-b03b-656f741b1c45",
            "size": 100,
            "status": "available",
            "volumeId": "4fe5b5eb-694e-4ead-ba98-ecffc6ff1d21"
        }
    ]
}
POST
/os-snapshots

创建快照

创建一个新快照。

正常响应代码:200

错误响应代码:badRequest(400),unauthorized(401),forbidden(403)

请求

名称

入参

类型

描述

snapshot

body

对象

用于创建快照的快照的局部表示。

volume_id

body

字符串

源卷 ID。

display_description (可选)

body

字符串

快照描述。

display_name(可选)

body

字符串

快照名称。

force (可选)

body

布尔值

指示是否创建快照,即使卷已附加。

示例 创建快照

{
    "snapshot": {
        "display_name": "snap-001",
        "display_description": "Daily backup",
        "volume_id": "521752a6-acf6-4b2d-bc7a-119f9148cd8c",
        "force": false
     }
}

响应

名称

入参

类型

描述

snapshot

body

对象

用于创建快照的快照的局部表示。

id

body

字符串

快照的 UUID。

createdAt

body

字符串

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

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

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

displayName

body

字符串

快照名称。

displayDescription

body

字符串

快照描述。

volumeId

body

字符串

源卷 ID。

size

body

整数

卷的大小,以 gibibytes (GiB) 为单位。

status

body

字符串

快照的状态。有效状态值是:

  • available

  • creating

  • deleting

  • error

  • error_deleting

示例 创建快照

{
    "snapshot": {
        "createdAt": "2025-06-12T14:56:30.215430",
        "displayDescription": "Daily backup",
        "displayName": "snap-001",
        "id": "fe06e9f2-e6b0-47d1-a63e-c0a15ad51994",
        "size": 100,
        "status": "available",
        "volumeId": "521752a6-acf6-4b2d-bc7a-119f9148cd8c"
    }
}
GET
/os-snapshots/detail

列出带详情的快照

列出所有快照及其详细信息。

正常响应代码:200

错误响应代码:未授权(401)、禁止(403)

请求

名称

入参

类型

描述

limit (可选)

查询

整数

offset 结合使用以返回项目切片。limit 是要返回的最大项目数。如果未指定 limit,或超过可配置的 max_limit,则将改用 max_limit

offset (可选)

查询

整数

limit 结合使用以返回项目的切片。offset 是列表中的起始位置。

响应

名称

入参

类型

描述

快照

body

数组

快照对象的列表。

id

body

字符串

快照的 UUID。

createdAt

body

字符串

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

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

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

displayName

body

字符串

快照名称。

displayDescription

body

字符串

快照描述。

volumeId

body

字符串

源卷 ID。

size

body

整数

卷的大小,以 gibibytes (GiB) 为单位。

status

body

字符串

快照的状态。有效状态值是:

  • available

  • creating

  • deleting

  • error

  • error_deleting


示例 列出带详情的快照

{
    "snapshots": [
        {
            "createdAt": "2025-06-12T14:56:30.070910",
            "displayDescription": "Default description",
            "displayName": "Default name",
            "id": "02d9627d-9e4d-42d7-aff2-3b23a0caf990",
            "size": 100,
            "status": "available",
            "volumeId": "a41718ce-4f74-46cf-acb4-6ebfc435ad6e"
        },
        {
            "createdAt": "2025-06-12T14:56:30.070925",
            "displayDescription": "Default description",
            "displayName": "Default name",
            "id": "9780ef6b-6820-478b-8d01-c972e683a8aa",
            "size": 100,
            "status": "available",
            "volumeId": "a41718ce-4f74-46cf-acb4-6ebfc435ad6e"
        },
        {
            "createdAt": "2025-06-12T14:56:30.070934",
            "displayDescription": "Default description",
            "displayName": "Default name",
            "id": "29b0f3f1-6cd7-4c65-b431-882cf54f158c",
            "size": 100,
            "status": "available",
            "volumeId": "a41718ce-4f74-46cf-acb4-6ebfc435ad6e"
        }
    ]
}
GET
/os-snapshots/{snapshot_id}

显示快照详情

显示给定快照的详细信息。

正常响应代码:200

错误响应代码:unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

snapshot_id

路径

字符串

快照的 UUID。

响应

名称

入参

类型

描述

snapshot

body

对象

用于创建快照的快照的局部表示。

id

body

字符串

快照的 UUID。

createdAt

body

字符串

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

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

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

displayName

body

字符串

快照名称。

displayDescription

body

字符串

快照描述。

volumeId

body

字符串

源卷 ID。

size

body

整数

卷的大小,以 gibibytes (GiB) 为单位。

status

body

字符串

快照的状态。有效状态值是:

  • available

  • creating

  • deleting

  • error

  • error_deleting


示例 显示快照详情

{
    "snapshot": {
        "createdAt": "2025-06-12T14:56:28.922532",
        "displayDescription": "Default description",
        "displayName": "Default name",
        "id": "ec675a13-5be8-4077-8381-9d70a12f77fb",
        "size": 100,
        "status": "available",
        "volumeId": "d7bccf30-48a2-4cfc-a9c0-71c5ee144f61"
    }
}
DELETE
/os-snapshots/{snapshot_id}

删除快照

从账户中删除快照。

此操作是异步的。您必须反复列出快照以确定快照是否已被删除。

正常响应代码:202

错误响应代码:unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

snapshot_id

路径

字符串

快照的 UUID。

响应

成功的 DELETE 查询没有响应正文内容

镜像 (已弃用)

警告

这些 API 是对镜像服务的代理调用。Nova 已弃用所有代理 API,用户应改用原生 API。除镜像元数据 API 外,所有镜像服务代理 API 从 microversion 2.36 开始都将返回 404。镜像元数据 API 从 microversion 2.39 开始将返回 404。请参阅:相关镜像 API

列出、显示详细信息并删除镜像。还设置、列出、显示详细信息、创建、更新和删除镜像元数据。

镜像 是用于创建和重建服务器的文件集合。默认情况下,操作员提供预构建的操作系统镜像。您也可以创建自定义镜像。请参阅:创建镜像操作

默认情况下,`policy.json` 文件授权所有用户在 `OS-EXT-IMG-SIZE:size` 扩展属性中查看镜像大小。

GET
/images

列出镜像

列出镜像。

正常响应代码:200

错误响应代码:badRequest(400),unauthorized(401),forbidden(403)

请求

名称

入参

类型

描述

changes-since(可选)

查询

字符串

按日期和时间过滤响应,此时镜像最后一次更改了状态。使用此查询参数检查自上次请求以来的更改,而不是在每次轮询间隔时重新下载和重新解析完整状态。如果数据自 `changes-since` 时间以来已更改,则调用仅返回自 `changes-since` 时间以来已更改的项。如果自 `changes-since` 时间以来数据未更改,则调用返回空列表。为了帮助您跟踪更改,此过滤器还显示已删除的镜像(如果 `changes-since` 值指定了最近 30 天内的日期)。可能会返回 30 天前删除的项,但不保证。日期和时间戳格式为 ISO 8601

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

如果包含 ±hh:mm 值,则返回时区作为 UTC 的偏移量。例如,2015-08-27T09:49:58-05:00。如果省略时区,则假定为 UTC 时区。

server (可选)

查询

字符串

按服务器(URL 格式)过滤响应。

name (可选)

查询

字符串

按镜像名称(字符串格式)过滤响应。

status (可选)

查询

字符串

按镜像状态(字符串格式)过滤响应。例如,`ACTIVE`。

minDisk (可选)

查询

整数

按最小磁盘空间(以 GiB 为单位)过滤响应。例如,100

minRam (可选)

查询

整数

按最小 RAM(以 MiB 为单位)过滤响应。例如,512

type (可选)

查询

字符串

按镜像类型过滤响应。例如,`snapshot` 或 `backup`。

limit (可选)

查询

整数

请求项目页面大小。返回最多限制值数量的项目。使用 limit 参数进行初始限制请求,并在后续限制请求中使用响应中最后一个已查看项目的 ID 作为 marker 参数值。

marker (可选)

查询

字符串

最后一个已查看项目的 ID。使用 limit 参数进行初始限制请求,并在后续限制请求中使用响应中最后一个已查看项目的 ID 作为 marker 参数值。

响应

名称

入参

类型

描述

images

body

数组

镜像对象的数组。

id

body

字符串

镜像的 ID。

name

body

字符串

镜像的显示名称。

links

body

数组

指向相关资源的链接。有关更多信息,请参阅API 指南 / 链接和引用

示例 列出镜像:JSON 响应

{
    "images": [
        {
            "id": "155d900f-4e14-4e4c-a73d-069cbf4541e6",
            "links": [
                {
                    "href": "http://openstack.example.com/v2/6f70656e737461636b20342065766572/images/155d900f-4e14-4e4c-a73d-069cbf4541e6",
                    "rel": "self"
                },
                {
                    "href": "http://openstack.example.com/6f70656e737461636b20342065766572/images/155d900f-4e14-4e4c-a73d-069cbf4541e6",
                    "rel": "bookmark"
                },
                {
                    "href": "http://glance.openstack.example.com/images/155d900f-4e14-4e4c-a73d-069cbf4541e6",
                    "rel": "alternate",
                    "type": "application/vnd.openstack.image"
                }
            ],
            "name": "fakeimage123456"
        },
        {
            "id": "a2459075-d96c-40d5-893e-577ff92e721c",
            "links": [
                {
                    "href": "http://openstack.example.com/v2/6f70656e737461636b20342065766572/images/a2459075-d96c-40d5-893e-577ff92e721c",
                    "rel": "self"
                },
                {
                    "href": "http://openstack.example.com/6f70656e737461636b20342065766572/images/a2459075-d96c-40d5-893e-577ff92e721c",
                    "rel": "bookmark"
                },
                {
                    "href": "http://glance.openstack.example.com/images/a2459075-d96c-40d5-893e-577ff92e721c",
                    "rel": "alternate",
                    "type": "application/vnd.openstack.image"
                }
            ],
            "name": "fakeimage123456"
        },
        {
            "id": "76fa36fc-c930-4bf3-8c8a-ea2a2420deb6",
            "links": [
                {
                    "href": "http://openstack.example.com/v2/6f70656e737461636b20342065766572/images/76fa36fc-c930-4bf3-8c8a-ea2a2420deb6",
                    "rel": "self"
                },
                {
                    "href": "http://openstack.example.com/6f70656e737461636b20342065766572/images/76fa36fc-c930-4bf3-8c8a-ea2a2420deb6",
                    "rel": "bookmark"
                },
                {
                    "href": "http://glance.openstack.example.com/images/76fa36fc-c930-4bf3-8c8a-ea2a2420deb6",
                    "rel": "alternate",
                    "type": "application/vnd.openstack.image"
                }
            ],
            "name": "fakeimage123456"
        },
        {
            "id": "cedef40a-ed67-4d10-800e-17455edce175",
            "links": [
                {
                    "href": "http://openstack.example.com/v2/6f70656e737461636b20342065766572/images/cedef40a-ed67-4d10-800e-17455edce175",
                    "rel": "self"
                },
                {
                    "href": "http://openstack.example.com/6f70656e737461636b20342065766572/images/cedef40a-ed67-4d10-800e-17455edce175",
                    "rel": "bookmark"
                },
                {
                    "href": "http://glance.openstack.example.com/images/cedef40a-ed67-4d10-800e-17455edce175",
                    "rel": "alternate",
                    "type": "application/vnd.openstack.image"
                }
            ],
            "name": "fakeimage123456"
        },
        {
            "id": "c905cedb-7281-47e4-8a62-f26bc5fc4c77",
            "links": [
                {
                    "href": "http://openstack.example.com/v2/6f70656e737461636b20342065766572/images/c905cedb-7281-47e4-8a62-f26bc5fc4c77",
                    "rel": "self"
                },
                {
                    "href": "http://openstack.example.com/6f70656e737461636b20342065766572/images/c905cedb-7281-47e4-8a62-f26bc5fc4c77",
                    "rel": "bookmark"
                },
                {
                    "href": "http://glance.openstack.example.com/images/c905cedb-7281-47e4-8a62-f26bc5fc4c77",
                    "rel": "alternate",
                    "type": "application/vnd.openstack.image"
                }
            ],
            "name": "fakeimage123456"
        },
        {
            "id": "a440c04b-79fa-479c-bed1-0b816eaec379",
            "links": [
                {
                    "href": "http://openstack.example.com/v2/6f70656e737461636b20342065766572/images/a440c04b-79fa-479c-bed1-0b816eaec379",
                    "rel": "self"
                },
                {
                    "href": "http://openstack.example.com/6f70656e737461636b20342065766572/images/a440c04b-79fa-479c-bed1-0b816eaec379",
                    "rel": "bookmark"
                },
                {
                    "href": "http://glance.openstack.example.com/images/a440c04b-79fa-479c-bed1-0b816eaec379",
                    "rel": "alternate",
                    "type": "application/vnd.openstack.image"
                }
            ],
            "name": "fakeimage6"
        },
        {
            "id": "70a599e0-31e7-49b7-b260-868f441e862b",
            "links": [
                {
                    "href": "http://openstack.example.com/v2/6f70656e737461636b20342065766572/images/70a599e0-31e7-49b7-b260-868f441e862b",
                    "rel": "self"
                },
                {
                    "href": "http://openstack.example.com/6f70656e737461636b20342065766572/images/70a599e0-31e7-49b7-b260-868f441e862b",
                    "rel": "bookmark"
                },
                {
                    "href": "http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b",
                    "rel": "alternate",
                    "type": "application/vnd.openstack.image"
                }
            ],
            "name": "fakeimage7"
        },
        {
            "id": "a2293931-dc33-45cc-85ef-232aa9491710",
            "links": [
                {
                    "href": "http://openstack.example.com/v2/6f70656e737461636b20342065766572/images/a2293931-dc33-45cc-85ef-232aa9491710",
                    "rel": "self"
                },
                {
                    "href": "http://openstack.example.com/6f70656e737461636b20342065766572/images/a2293931-dc33-45cc-85ef-232aa9491710",
                    "rel": "bookmark"
                },
                {
                    "href": "http://glance.openstack.example.com/images/a2293931-dc33-45cc-85ef-232aa9491710",
                    "rel": "alternate",
                    "type": "application/vnd.openstack.image"
                }
            ],
            "name": "fakeimage123456"
        },
        {
            "id": "e78f0ee9-96ef-4ce7-accf-e816f273be45",
            "links": [
                {
                    "href": "http://openstack.example.com/v2/6f70656e737461636b20342065766572/images/e78f0ee9-96ef-4ce7-accf-e816f273be45",
                    "rel": "self"
                },
                {
                    "href": "http://openstack.example.com/6f70656e737461636b20342065766572/images/e78f0ee9-96ef-4ce7-accf-e816f273be45",
                    "rel": "bookmark"
                },
                {
                    "href": "http://glance.openstack.example.com/images/e78f0ee9-96ef-4ce7-accf-e816f273be45",
                    "rel": "alternate",
                    "type": "application/vnd.openstack.image"
                }
            ],
            "name": "fakeimage123456"
        },
        {
            "id": "54eadb78-eeb6-4b13-beed-20b9894eeadf",
            "links": [
                {
                    "href": "http://openstack.example.com/v2/6f70656e737461636b20342065766572/images/54eadb78-eeb6-4b13-beed-20b9894eeadf",
                    "rel": "self"
                },
                {
                    "href": "http://openstack.example.com/6f70656e737461636b20342065766572/images/54eadb78-eeb6-4b13-beed-20b9894eeadf",
                    "rel": "bookmark"
                },
                {
                    "href": "http://glance.openstack.example.com/images/54eadb78-eeb6-4b13-beed-20b9894eeadf",
                    "rel": "alternate",
                    "type": "application/vnd.openstack.image"
                }
            ],
            "name": "fakeimage123456"
        },
        {
            "id": "eb7458f3-d003-4187-8027-595591dc2723",
            "links": [
                {
                    "href": "http://openstack.example.com/v2/6f70656e737461636b20342065766572/images/eb7458f3-d003-4187-8027-595591dc2723",
                    "rel": "self"
                },
                {
                    "href": "http://openstack.example.com/6f70656e737461636b20342065766572/images/eb7458f3-d003-4187-8027-595591dc2723",
                    "rel": "bookmark"
                },
                {
                    "href": "http://glance.openstack.example.com/images/eb7458f3-d003-4187-8027-595591dc2723",
                    "rel": "alternate",
                    "type": "application/vnd.openstack.image"
                }
            ],
            "name": "fakeimage123456"
        }
    ]
}
GET
/images/detail

列出带详情的镜像

列出镜像及其详细信息。

正常响应代码:200

错误响应代码:badRequest(400),unauthorized(401),forbidden(403)

请求

名称

入参

类型

描述

changes-since(可选)

查询

字符串

按日期和时间过滤响应,此时镜像最后一次更改了状态。使用此查询参数检查自上次请求以来的更改,而不是在每次轮询间隔时重新下载和重新解析完整状态。如果数据自 `changes-since` 时间以来已更改,则调用仅返回自 `changes-since` 时间以来已更改的项。如果自 `changes-since` 时间以来数据未更改,则调用返回空列表。为了帮助您跟踪更改,此过滤器还显示已删除的镜像(如果 `changes-since` 值指定了最近 30 天内的日期)。可能会返回 30 天前删除的项,但不保证。日期和时间戳格式为 ISO 8601

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

如果包含 ±hh:mm 值,则返回时区作为 UTC 的偏移量。例如,2015-08-27T09:49:58-05:00。如果省略时区,则假定为 UTC 时区。

server (可选)

查询

字符串

按服务器(URL 格式)过滤响应。

name (可选)

查询

字符串

按镜像名称(字符串格式)过滤响应。

status (可选)

查询

字符串

按镜像状态(字符串格式)过滤响应。例如,`ACTIVE`。

minDisk (可选)

查询

整数

按最小磁盘空间(以 GiB 为单位)过滤响应。例如,100

minRam (可选)

查询

整数

按最小 RAM(以 MiB 为单位)过滤响应。例如,512

type (可选)

查询

字符串

按镜像类型过滤响应。例如,`snapshot` 或 `backup`。

limit (可选)

查询

整数

请求项目页面大小。返回最多限制值数量的项目。使用 limit 参数进行初始限制请求,并在后续限制请求中使用响应中最后一个已查看项目的 ID 作为 marker 参数值。

marker (可选)

查询

字符串

最后一个已查看项目的 ID。使用 limit 参数进行初始限制请求,并在后续限制请求中使用响应中最后一个已查看项目的 ID 作为 marker 参数值。

响应

名称

入参

类型

描述

images

body

数组

镜像对象的数组。

id

body

字符串

镜像的 ID。

name

body

字符串

镜像的显示名称。

minRam

body

整数

镜像运行所需的最小 RAM 量,单位为 MiB。例如,`512`。

minDisk

body

整数

镜像启动所需的最小磁盘空间,单位为 GiB。例如,`100`。

metadata

body

对象

元数据键值对。每个元数据键值对的最大大小为 255 字节。

创建时间

body

字符串

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

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

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

updated

body

字符串

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

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

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

status

body

字符串

镜像的状态,字符串格式。可以是以下之一:

  • ACTIVE: 镜像处于活动状态

  • SAVING: 镜像已排队或正在保存中

  • DELETED: 镜像已删除或正在删除中

  • ERROR: 镜像处于错误状态

  • UNKNOWN: 镜像状态未知

progress

body

整数

镜像保存进度的百分比值。它可以是以下之一

  • ACTIVE: 100

  • SAVING: 25 或 50

links

body

数组

指向相关资源的链接。有关更多信息,请参阅API 指南 / 链接和引用

server (可选)

body

对象

服务器已从镜像启动。

OS-EXT-IMG-SIZE:size

body

整数

镜像的大小。

OS-DCF:diskConfig(可选)

body

字符串

控制 API 在创建、重建或调整服务器大小时如何对磁盘进行分区。服务器继承其创建的镜像的 OS-DCF:diskConfig 值,而镜像继承其创建的服务器的 OS-DCF:diskConfig 值。要覆盖继承的设置,您可以在服务器创建、重建或调整大小请求的正文中包含此属性。如果镜像的 OS-DCF:diskConfig 值为 MANUAL,则您无法从该镜像创建服务器并将其 OS-DCF:diskConfig 值设置为 AUTO。有效值为:

  • AUTO。API 构建服务器,其中包含一个分区,大小与目标 flavor 磁盘相同。API 会自动调整文件系统以适应整个分区。

  • MANUAL。API 使用源镜像中的分区方案和文件系统来构建服务器。如果目标 flavor 磁盘更大,API 不会对剩余的磁盘空间进行分区。

示例:列出镜像详细信息:JSON 响应

{
    "images": [
        {
            "OS-EXT-IMG-SIZE:size": 25165824,
            "created": "2011-01-01T01:02:03Z",
            "id": "155d900f-4e14-4e4c-a73d-069cbf4541e6",
            "links": [
                {
                    "href": "http://openstack.example.com/v2/6f70656e737461636b20342065766572/images/155d900f-4e14-4e4c-a73d-069cbf4541e6",
                    "rel": "self"
                },
                {
                    "href": "http://openstack.example.com/6f70656e737461636b20342065766572/images/155d900f-4e14-4e4c-a73d-069cbf4541e6",
                    "rel": "bookmark"
                },
                {
                    "href": "http://glance.openstack.example.com/images/155d900f-4e14-4e4c-a73d-069cbf4541e6",
                    "rel": "alternate",
                    "type": "application/vnd.openstack.image"
                }
            ],
            "metadata": {
                "architecture": "x86_64",
                "kernel_id": "nokernel",
                "ramdisk_id": "nokernel"
            },
            "minDisk": 0,
            "minRam": 0,
            "name": "fakeimage123456",
            "progress": 100,
            "status": "ACTIVE",
            "updated": "2011-01-01T01:02:03Z"
        },
        {
            "OS-EXT-IMG-SIZE:size": 58145823,
            "created": "2011-01-01T01:02:03Z",
            "id": "a2459075-d96c-40d5-893e-577ff92e721c",
            "links": [
                {
                    "href": "http://openstack.example.com/v2/6f70656e737461636b20342065766572/images/a2459075-d96c-40d5-893e-577ff92e721c",
                    "rel": "self"
                },
                {
                    "href": "http://openstack.example.com/6f70656e737461636b20342065766572/images/a2459075-d96c-40d5-893e-577ff92e721c",
                    "rel": "bookmark"
                },
                {
                    "href": "http://glance.openstack.example.com/images/a2459075-d96c-40d5-893e-577ff92e721c",
                    "rel": "alternate",
                    "type": "application/vnd.openstack.image"
                }
            ],
            "metadata": {
                "kernel_id": "nokernel",
                "ramdisk_id": "nokernel"
            },
            "minDisk": 0,
            "minRam": 0,
            "name": "fakeimage123456",
            "progress": 100,
            "status": "ACTIVE",
            "updated": "2011-01-01T01:02:03Z"
        },
        {
            "OS-EXT-IMG-SIZE:size": 83594576,
            "created": "2011-01-01T01:02:03Z",
            "id": "76fa36fc-c930-4bf3-8c8a-ea2a2420deb6",
            "links": [
                {
                    "href": "http://openstack.example.com/v2/6f70656e737461636b20342065766572/images/76fa36fc-c930-4bf3-8c8a-ea2a2420deb6",
                    "rel": "self"
                },
                {
                    "href": "http://openstack.example.com/6f70656e737461636b20342065766572/images/76fa36fc-c930-4bf3-8c8a-ea2a2420deb6",
                    "rel": "bookmark"
                },
                {
                    "href": "http://glance.openstack.example.com/images/76fa36fc-c930-4bf3-8c8a-ea2a2420deb6",
                    "rel": "alternate",
                    "type": "application/vnd.openstack.image"
                }
            ],
            "metadata": {
                "architecture": "x86_64",
                "kernel_id": "nokernel",
                "ramdisk_id": "nokernel"
            },
            "minDisk": 0,
            "minRam": 0,
            "name": "fakeimage123456",
            "progress": 100,
            "status": "ACTIVE",
            "updated": "2011-01-01T01:02:03Z"
        },
        {
            "OS-EXT-IMG-SIZE:size": 84035174,
            "created": "2011-01-01T01:02:03Z",
            "id": "cedef40a-ed67-4d10-800e-17455edce175",
            "links": [
                {
                    "href": "http://openstack.example.com/v2/6f70656e737461636b20342065766572/images/cedef40a-ed67-4d10-800e-17455edce175",
                    "rel": "self"
                },
                {
                    "href": "http://openstack.example.com/6f70656e737461636b20342065766572/images/cedef40a-ed67-4d10-800e-17455edce175",
                    "rel": "bookmark"
                },
                {
                    "href": "http://glance.openstack.example.com/images/cedef40a-ed67-4d10-800e-17455edce175",
                    "rel": "alternate",
                    "type": "application/vnd.openstack.image"
                }
            ],
            "metadata": {
                "kernel_id": "nokernel",
                "ramdisk_id": "nokernel"
            },
            "minDisk": 0,
            "minRam": 0,
            "name": "fakeimage123456",
            "progress": 100,
            "status": "ACTIVE",
            "updated": "2011-01-01T01:02:03Z"
        },
        {
            "OS-EXT-IMG-SIZE:size": 26360814,
            "created": "2011-01-01T01:02:03Z",
            "id": "c905cedb-7281-47e4-8a62-f26bc5fc4c77",
            "links": [
                {
                    "href": "http://openstack.example.com/v2/6f70656e737461636b20342065766572/images/c905cedb-7281-47e4-8a62-f26bc5fc4c77",
                    "rel": "self"
                },
                {
                    "href": "http://openstack.example.com/6f70656e737461636b20342065766572/images/c905cedb-7281-47e4-8a62-f26bc5fc4c77",
                    "rel": "bookmark"
                },
                {
                    "href": "http://glance.openstack.example.com/images/c905cedb-7281-47e4-8a62-f26bc5fc4c77",
                    "rel": "alternate",
                    "type": "application/vnd.openstack.image"
                }
            ],
            "metadata": {
                "kernel_id": "155d900f-4e14-4e4c-a73d-069cbf4541e6",
                "ramdisk_id": null
            },
            "minDisk": 0,
            "minRam": 0,
            "name": "fakeimage123456",
            "progress": 100,
            "status": "ACTIVE",
            "updated": "2011-01-01T01:02:03Z"
        },
        {
            "OS-DCF:diskConfig": "MANUAL",
            "OS-EXT-IMG-SIZE:size": 49163826,
            "created": "2011-01-01T01:02:03Z",
            "id": "a440c04b-79fa-479c-bed1-0b816eaec379",
            "links": [
                {
                    "href": "http://openstack.example.com/v2/6f70656e737461636b20342065766572/images/a440c04b-79fa-479c-bed1-0b816eaec379",
                    "rel": "self"
                },
                {
                    "href": "http://openstack.example.com/6f70656e737461636b20342065766572/images/a440c04b-79fa-479c-bed1-0b816eaec379",
                    "rel": "bookmark"
                },
                {
                    "href": "http://glance.openstack.example.com/images/a440c04b-79fa-479c-bed1-0b816eaec379",
                    "rel": "alternate",
                    "type": "application/vnd.openstack.image"
                }
            ],
            "metadata": {
                "architecture": "x86_64",
                "auto_disk_config": "False",
                "kernel_id": "nokernel",
                "ramdisk_id": "nokernel"
            },
            "minDisk": 0,
            "minRam": 0,
            "name": "fakeimage6",
            "progress": 100,
            "status": "ACTIVE",
            "updated": "2011-01-01T01:02:03Z"
        },
        {
            "OS-DCF:diskConfig": "AUTO",
            "OS-EXT-IMG-SIZE:size": 74185822,
            "created": "2011-01-01T01:02:03Z",
            "id": "70a599e0-31e7-49b7-b260-868f441e862b",
            "links": [
                {
                    "href": "http://openstack.example.com/v2/6f70656e737461636b20342065766572/images/70a599e0-31e7-49b7-b260-868f441e862b",
                    "rel": "self"
                },
                {
                    "href": "http://openstack.example.com/6f70656e737461636b20342065766572/images/70a599e0-31e7-49b7-b260-868f441e862b",
                    "rel": "bookmark"
                },
                {
                    "href": "http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b",
                    "rel": "alternate",
                    "type": "application/vnd.openstack.image"
                }
            ],
            "metadata": {
                "architecture": "x86_64",
                "auto_disk_config": "True",
                "kernel_id": "nokernel",
                "ramdisk_id": "nokernel"
            },
            "minDisk": 0,
            "minRam": 0,
            "name": "fakeimage7",
            "progress": 100,
            "status": "ACTIVE",
            "updated": "2011-01-01T01:02:03Z"
        },
        {
            "OS-EXT-IMG-SIZE:size": 25165824,
            "created": "2011-01-01T01:02:03Z",
            "id": "95fad737-9325-4855-b37e-20a62268ec88",
            "links": [
                {
                    "href": "http://openstack.example.com/v2/6f70656e737461636b20342065766572/images/95fad737-9325-4855-b37e-20a62268ec88",
                    "rel": "self"
                },
                {
                    "href": "http://openstack.example.com/6f70656e737461636b20342065766572/images/95fad737-9325-4855-b37e-20a62268ec88",
                    "rel": "bookmark"
                },
                {
                    "href": "http://glance.openstack.example.com/images/95fad737-9325-4855-b37e-20a62268ec88",
                    "rel": "alternate",
                    "type": "application/vnd.openstack.image"
                }
            ],
            "metadata": {
                "hw_ephemeral_encryption": "True"
            },
            "minDisk": 0,
            "minRam": 0,
            "name": "fakeimage123456",
            "progress": 100,
            "status": "ACTIVE",
            "updated": "2011-01-01T01:02:03Z"
        },
        {
            "OS-EXT-IMG-SIZE:size": 25165824,
            "created": "2011-01-01T01:02:03Z",
            "id": "535426d4-5d75-44f4-9591-a2123d23c33f",
            "links": [
                {
                    "href": "http://openstack.example.com/v2/6f70656e737461636b20342065766572/images/535426d4-5d75-44f4-9591-a2123d23c33f",
                    "rel": "self"
                },
                {
                    "href": "http://openstack.example.com/6f70656e737461636b20342065766572/images/535426d4-5d75-44f4-9591-a2123d23c33f",
                    "rel": "bookmark"
                },
                {
                    "href": "http://glance.openstack.example.com/images/535426d4-5d75-44f4-9591-a2123d23c33f",
                    "rel": "alternate",
                    "type": "application/vnd.openstack.image"
                }
            ],
            "metadata": {
                "hw_ephemeral_encryption": "False"
            },
            "minDisk": 0,
            "minRam": 0,
            "name": "fakeimage123456",
            "progress": 100,
            "status": "ACTIVE",
            "updated": "2011-01-01T01:02:03Z"
        },
        {
            "OS-EXT-IMG-SIZE:size": 25165824,
            "created": "2011-01-01T01:02:03Z",
            "id": "5f7d4f5b-3781-4a4e-9046-a2a800e807e5",
            "links": [
                {
                    "href": "http://openstack.example.com/v2/6f70656e737461636b20342065766572/images/5f7d4f5b-3781-4a4e-9046-a2a800e807e5",
                    "rel": "self"
                },
                {
                    "href": "http://openstack.example.com/6f70656e737461636b20342065766572/images/5f7d4f5b-3781-4a4e-9046-a2a800e807e5",
                    "rel": "bookmark"
                },
                {
                    "href": "http://glance.openstack.example.com/images/5f7d4f5b-3781-4a4e-9046-a2a800e807e5",
                    "rel": "alternate",
                    "type": "application/vnd.openstack.image"
                }
            ],
            "metadata": {
                "hw_ephemeral_encryption": "True",
                "hw_ephemeral_encryption_format": "luks"
            },
            "minDisk": 0,
            "minRam": 0,
            "name": "fakeimage123456",
            "progress": 100,
            "status": "ACTIVE",
            "updated": "2011-01-01T01:02:03Z"
        },
        {
            "OS-EXT-IMG-SIZE:size": 25165824,
            "created": "2011-01-01T01:02:03Z",
            "id": "261b52ed-f693-4147-8f3b-d25df5efd968",
            "links": [
                {
                    "href": "http://openstack.example.com/v2/6f70656e737461636b20342065766572/images/261b52ed-f693-4147-8f3b-d25df5efd968",
                    "rel": "self"
                },
                {
                    "href": "http://openstack.example.com/6f70656e737461636b20342065766572/images/261b52ed-f693-4147-8f3b-d25df5efd968",
                    "rel": "bookmark"
                },
                {
                    "href": "http://glance.openstack.example.com/images/261b52ed-f693-4147-8f3b-d25df5efd968",
                    "rel": "alternate",
                    "type": "application/vnd.openstack.image"
                }
            ],
            "metadata": {
                "hw_ephemeral_encryption": "True",
                "hw_ephemeral_encryption_format": "plain"
            },
            "minDisk": 0,
            "minRam": 0,
            "name": "fakeimage123456",
            "progress": 100,
            "status": "ACTIVE",
            "updated": "2011-01-01T01:02:03Z"
        }
    ]
}
GET
/images/{image_id}

显示镜像详细信息

显示镜像的详情。

正常响应代码:200

错误响应代码:unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

image_id

路径

字符串

镜像的 UUID。

响应

名称

入参

类型

描述

images

body

数组

镜像对象的数组。

id

body

字符串

镜像的 ID。

name

body

字符串

镜像的显示名称。

minRam

body

整数

镜像运行所需的最小 RAM 量,单位为 MiB。例如,`512`。

minDisk

body

整数

镜像启动所需的最小磁盘空间,单位为 GiB。例如,`100`。

metadata

body

对象

元数据键值对。每个元数据键值对的最大大小为 255 字节。

创建时间

body

字符串

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

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

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

updated

body

字符串

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

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

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

status

body

字符串

镜像的状态,字符串格式。可以是以下之一:

  • ACTIVE: 镜像处于活动状态

  • SAVING: 镜像已排队或正在保存中

  • DELETED: 镜像已删除或正在删除中

  • ERROR: 镜像处于错误状态

  • UNKNOWN: 镜像状态未知

progress

body

整数

镜像保存进度的百分比值。它可以是以下之一

  • ACTIVE: 100

  • SAVING: 25 或 50

links

body

数组

指向相关资源的链接。有关更多信息,请参阅API 指南 / 链接和引用

server (可选)

body

对象

服务器已从镜像启动。

OS-EXT-IMG-SIZE:size

body

整数

镜像的大小。

OS-DCF:diskConfig(可选)

body

字符串

控制 API 在创建、重建或调整服务器大小时如何对磁盘进行分区。服务器继承其创建的镜像的 OS-DCF:diskConfig 值,而镜像继承其创建的服务器的 OS-DCF:diskConfig 值。要覆盖继承的设置,您可以在服务器创建、重建或调整大小请求的正文中包含此属性。如果镜像的 OS-DCF:diskConfig 值为 MANUAL,则您无法从该镜像创建服务器并将其 OS-DCF:diskConfig 值设置为 AUTO。有效值为:

  • AUTO。API 构建服务器,其中包含一个分区,大小与目标 flavor 磁盘相同。API 会自动调整文件系统以适应整个分区。

  • MANUAL。API 使用源镜像中的分区方案和文件系统来构建服务器。如果目标 flavor 磁盘更大,API 不会对剩余的磁盘空间进行分区。

示例:显示镜像详细信息:JSON 响应

{
    "image": {
        "OS-DCF:diskConfig": "AUTO",
        "OS-EXT-IMG-SIZE:size": 74185822,
        "created": "2011-01-01T01:02:03Z",
        "id": "70a599e0-31e7-49b7-b260-868f441e862b",
        "links": [
            {
                "href": "http://openstack.example.com/v2/6f70656e737461636b20342065766572/images/70a599e0-31e7-49b7-b260-868f441e862b",
                "rel": "self"
            },
            {
                "href": "http://openstack.example.com/6f70656e737461636b20342065766572/images/70a599e0-31e7-49b7-b260-868f441e862b",
                "rel": "bookmark"
            },
            {
                "href": "http://glance.openstack.example.com/images/70a599e0-31e7-49b7-b260-868f441e862b",
                "rel": "alternate",
                "type": "application/vnd.openstack.image"
            }
        ],
        "metadata": {
            "architecture": "x86_64",
            "auto_disk_config": "True",
            "kernel_id": "nokernel",
            "ramdisk_id": "nokernel"
        },
        "minDisk": 0,
        "minRam": 0,
        "name": "fakeimage7",
        "progress": 100,
        "status": "ACTIVE",
        "updated": "2011-01-01T01:02:03Z"
    }
}
DELETE
/images/{image_id}

删除镜像

删除一个镜像。

正常响应代码:204

错误响应代码:unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

image_id

路径

字符串

镜像的 UUID。

响应

成功的 DELETE 操作的响应体为空。

GET
/images/{image_id}/metadata

列出镜像元数据

列出一个镜像的元数据。

正常响应代码:200

错误响应代码:unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

image_id

路径

字符串

镜像的 UUID。

响应

名称

入参

类型

描述

metadata

body

对象

元数据键值对。每个元数据键值对的最大大小为 255 字节。

示例:列出镜像元数据详细信息:JSON 响应

{
    "metadata": {
        "architecture": "x86_64",
        "auto_disk_config": "True",
        "kernel_id": "nokernel",
        "ramdisk_id": "nokernel"
    }
}
POST
/images/{image_id}/metadata

创建镜像元数据

创建一个镜像元数据。

正常响应代码:200

错误响应代码:badRequest(400)、unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

image_id

路径

字符串

镜像的 UUID。

metadata

body

对象

元数据键值对。每个元数据键值对的最大大小为 255 字节。

示例:创建镜像元数据:JSON 请求

{
    "metadata": {
        "kernel_id": "False",
        "Label": "UpdatedImage"
    }
}

响应

名称

入参

类型

描述

metadata

body

对象

元数据键值对。每个元数据键值对的最大大小为 255 字节。

示例:创建镜像元数据:JSON 响应

{
    "metadata": {
        "Label": "UpdatedImage",
        "architecture": "x86_64",
        "auto_disk_config": "True",
        "kernel_id": "False",
        "ramdisk_id": "nokernel"
    }
}
PUT
/images/{image_id}/metadata

更新镜像元数据

更新一个镜像元数据

正常响应代码:200

错误响应代码:badRequest(400)、unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

image_id

路径

字符串

镜像的 UUID。

metadata

body

对象

元数据键值对。每个元数据键值对的最大大小为 255 字节。

示例:更新镜像元数据:JSON 请求

{
    "metadata": {
        "auto_disk_config": "True",
        "Label": "Changed"
    }
}

响应

名称

入参

类型

描述

metadata

body

对象

元数据键值对。每个元数据键值对的最大大小为 255 字节。

示例:更新镜像元数据:JSON 响应

{
    "metadata": {
        "Label": "Changed",
        "auto_disk_config": "True"
    }
}
GET
/images/{image_id}/metadata/{key}

显示镜像元数据项

按键显示镜像的元数据项。

正常响应代码:200

错误响应代码:unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

image_id

路径

字符串

镜像的 UUID。

key

路径

字符串

元数据项的键,作为字符串。最大长度为 255 个字符。

响应

名称

入参

类型

描述

meta

body

对象

详细键元数据项的对象。

示例:显示镜像元数据项详细信息:JSON 响应

{
    "meta": {
        "kernel_id": "nokernel"
    }
}
PUT
/images/{image_id}/metadata/{key}

创建或更新镜像元数据项

按键创建或更新镜像的元数据项。

正常响应代码:200

错误响应代码:unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

image_id

路径

字符串

镜像的 UUID。

key

路径

字符串

元数据项的键,作为字符串。最大长度为 255 个字符。

meta

body

对象

详细键元数据项的对象。

示例:创建或更新镜像元数据项:JSON 请求

{
    "meta": {
        "auto_disk_config": "False"
    }
}

响应

名称

入参

类型

描述

meta

body

对象

详细键元数据项的对象。

示例:创建或更新镜像元数据项:JSON 响应

{
    "meta": {
        "auto_disk_config": "False"
    }
}
DELETE
/images/{image_id}/metadata/{key}

删除镜像元数据项

按键删除镜像的元数据项。

正常响应代码:204

错误响应代码:unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

image_id

路径

字符串

镜像的 UUID。

key

路径

字符串

元数据项的键,作为字符串。最大长度为 255 个字符。

响应

成功的 DELETE 操作的响应体为空。

裸金属节点 (os-baremetal-nodes) (已弃用)

警告

这些 API 是对 Ironic 服务的代理调用。它们为了向后兼容而存在,但不应被新应用程序使用。Nova 已弃用所有代理 API,用户应改用原生 API。从 microversion 2.36 开始,这些调用将返回 404 错误。请参阅:相关的裸金属 API

裸金属节点。

GET
/os-baremetal-nodes

列出裸金属节点

列出计算环境中已知的裸金属节点。

正常响应代码:202

错误响应代码:unauthorized(401),forbidden(403),notImplemented(501)

响应

名称

入参

类型

描述

nodes

body

数组

一个裸金属节点对象的数组。

id

body

字符串

裸金属节点的 UUID。

interfaces

body

数组

一个活动接口对象的列表,用于裸金属节点上的活动接口。每个接口都将有一个包含地址的 `address` 字段。

host

body

字符串

这将始终具有值 `IRONIC MANAGED`。

task_state

body

字符串

节点的 Ironic 任务状态。有关更多详细信息,请参阅 Ironic 项目。

cpus

body

字符串

节点拥有的 CPU 数量。

注意

这是一个 JSON 字符串,尽管它看起来像一个整数值。

memory_mb

body

字符串

节点内存量(以 MiB 为单位)。

注意

这是一个 JSON 字符串,尽管它看起来像一个整数值。

disk_gb

body

字符串

节点磁盘量(以 GiB 为单位)。

注意

这是一个 JSON 字符串,尽管它看起来像一个整数值。

示例:列出裸金属节点

{
    "nodes": [
        {
            "cpus": "2",
            "disk_gb": "10",
            "host": "IRONIC MANAGED",
            "id": "058d27fa-241b-445a-a386-08c04f96db43",
            "interfaces": [],
            "memory_mb": "1024",
            "task_state": "active"
        },
        {
            "cpus": "2",
            "disk_gb": "10",
            "host": "IRONIC MANAGED",
            "id": "e2025409-f3ce-4d6a-9788-c565cf3b1b1c",
            "interfaces": [],
            "memory_mb": "1024",
            "task_state": "active"
        }
    ]
}
GET
/os-baremetal-nodes/{node_id}

显示裸金属节点详细信息

显示裸金属节点的详细信息。

正常响应代码:202

错误响应代码:unauthorized(401),forbidden(403),itemNotFound(404),notImplemented(501)

请求

名称

入参

类型

描述

node_id

路径

字符串

节点 ID。

响应

名称

入参

类型

描述

node

body

对象

一个裸金属节点对象。

id

body

字符串

裸金属节点的 UUID。

instance_uuid

body

字符串

此节点上的服务器实例的 UUID。

interfaces

body

数组

一个活动接口对象的列表,用于裸金属节点上的活动接口。每个接口都将有一个包含地址的 `address` 字段。

host

body

字符串

这将始终具有值 `IRONIC MANAGED`。

task_state

body

字符串

节点的 Ironic 任务状态。有关更多详细信息,请参阅 Ironic 项目。

cpus

body

字符串

节点拥有的 CPU 数量。

注意

这是一个 JSON 字符串,尽管它看起来像一个整数值。

memory_mb

body

字符串

节点内存量(以 MiB 为单位)。

注意

这是一个 JSON 字符串,尽管它看起来像一个整数值。

disk_gb

body

字符串

节点磁盘量(以 GiB 为单位)。

注意

这是一个 JSON 字符串,尽管它看起来像一个整数值。

示例:显示裸金属节点详细信息

{
    "node": {
        "cpus": "2",
        "disk_gb": "10",
        "host": "IRONIC MANAGED",
        "id": "058d27fa-241b-445a-a386-08c04f96db43",
        "instance_uuid": "1ea4e53e-149a-4f02-9515-590c9fb2315a",
        "interfaces": [],
        "memory_mb": "1024",
        "task_state": "active"
    }
}

项目网络 (os-tenant-networks) (已弃用)

警告

这些 API 是对 Network 服务的代理调用。Nova 已弃用所有代理 API,用户应改用原生 API。从 microversion 2.36 开始,这些调用将返回 404 错误。请参阅:相关的网络 API

创建、列出、显示信息以及删除项目网络。

GET
/os-tenant-networks

列出项目网络

列出所有项目网络。

策略默认仅允许拥有管理员角色或网络所有权的用户执行此操作。云提供商可以通过 `policy.json` 文件更改这些权限。

正常响应代码:200

错误响应代码:未授权(401)、禁止(403)

响应

示例:列出项目网络:JSON 响应

{
    "networks": [
        {
            "cidr": "None",
            "id": "3cb9bc59-5699-4588-a4b1-b87f96708bc6",
            "label": "private"
        }
    ]
}
POST
/os-tenant-networks

创建项目网络

注意

此 API 仅为 nova-network 服务实现,如果云使用 Neutron 网络服务,将返回 503 错误响应。请使用 Neutron 的 `networks` API 创建新网络。

创建一个项目网络。

策略默认仅允许具有管理员角色的用户执行此操作。云提供商可以通过 policy.json 文件更改这些权限。

正常响应代码:200

错误响应代码:badRequest(400),unauthorized(401),forbidden(403),conflict(409),gone(410),serviceUnavailable(503)

示例:创建项目网络:JSON 请求

{
    "network": {
        "label": "public",
        "cidr": "172.0.0.0/24",
        "vlan_start": 1,
        "num_networks": 1,
        "network_size": 255
    }
}

响应

示例:创建项目网络:JSON 响应

{
    "network": {
        "cidr": "172.0.0.0/24",
        "id": "5bbcc3c4-1da2-4437-a48a-66f15b1b13f9",
        "label": "public"
    }
}
GET
/os-tenant-networks/{network_id}

显示项目网络详细信息

显示项目网络的详细信息。

策略默认仅允许拥有管理员角色或网络所有权的用户执行此操作。云提供商可以通过 `policy.json` 文件更改这些权限。

正常响应代码:200

错误响应代码:unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

network_id

路径

字符串

网络的 UUID。

响应

示例:显示项目网络详细信息:JSON 响应

{
    "network": {
        "cidr": "172.0.0.0/24",
        "id": "5bbcc3c4-1da2-4437-a48a-66f15b1b13f9",
        "label": "public"
    }
}
DELETE
/os-tenant-networks/{network_id}

删除项目网络

注意

此 API 仅为 nova-network 服务实现,如果云使用 Neutron 网络服务,将返回 500 错误响应。请使用 Neutron 的 `networks` API 删除现有网络。

删除一个项目网络。

策略默认仅允许拥有管理员角色或网络所有权的用户执行此操作。云提供商可以通过 `policy.json` 文件更改这些权限。

正常响应代码:202

错误响应代码:unauthorized(401), forbidden(403), itemNotFound(404), conflict(409), gone(410)

请求

名称

入参

类型

描述

network_id

路径

字符串

网络的 UUID。

响应

成功 DELETE 查询的响应没有正文内容。

浮动 IP 池 (os-floating-ip-pools) (已弃用)

警告

此 API 是对 Network 服务的代理调用。Nova 已弃用所有代理 API,用户应改用原生 API。从 microversion 2.36 开始,此 API 将返回 404 错误。

有关 Network 服务中相应功能的,可以请求

GET /networks?router:external=True&fields=name

管理浮动 IP 组。

GET
/os-floating-ip-pools

列出浮动 IP 池

列出浮动 IP 池。

策略默认设置仅允许具有管理员角色的用户或有权操作租户 <tenant_id> 的用户执行此操作。云提供商可以通过 `policy.json` 文件更改这些权限。

正常响应代码:200

错误响应代码:未授权(401)、禁止(403)

响应

名称

入参

类型

描述

floating_ip_pools

body

数组

`floating_ip_pools` 对象。

name

body

字符串

浮动 IP 池的名称或 ID。

示例:列出浮动 IP 池:JSON 响应

{
    "floating_ip_pools": [
        {
            "name": "pool1"
        },
        {
            "name": "pool2"
        }
    ]
}

浮动 IP (os-floating-ips) (已弃用)

警告

这些 API 是对 Network 服务的代理调用。Nova 已弃用所有代理 API,用户应改用原生 API。从 microversion 2.36 开始,这些调用将返回 404 错误。请参阅:相关的网络 API

列出项目的浮动 IP 地址。此外,还可以为项目创建(分配)浮动 IP 地址、显示浮动 IP 地址详细信息以及从项目中删除(取消分配)浮动 IP 地址。

云管理员在 OpenStack Compute 中配置浮动 IP 地址池。项目配额定义了您可以分配给项目的浮动 IP 地址的最大数量。为您项目分配浮动 IP 地址后,您可以

GET
/os-floating-ips

列出浮动 IP 地址

列出与租户或帐户关联的浮动 IP 地址。

策略默认仅允许具有管理员角色或服务器所有者的用户执行此操作。云提供商可以通过 policy.json 文件更改这些权限。

正常响应代码:200

错误响应代码:未授权(401)、禁止(403)

响应

名称

入参

类型

描述

floating_ips

body

数组

浮动 IP 对象的数组。

fixed_ip

body

字符串

与浮动 IP 网络关联的固定 IP。

id

body

字符串

浮动 IP 的 ID 值。

注意

对于 nova-network,该值为整数类型;对于 neutron,该值为字符串类型。

instance_id

body

字符串

服务器的 UUID。

ip

body

字符串

浮动 IP 地址。

pool

body

字符串

浮动 IP 池的名称或 ID。

示例:列出浮动 IP 地址

{
    "floating_ips": [
        {
            "fixed_ip": null,
            "id": "8baeddb4-45e2-4c36-8cb7-d79439a5f67c",
            "instance_id": null,
            "ip": "172.24.4.17",
            "pool": "public"
        },
        {
            "fixed_ip": null,
            "id": "05ef7490-745a-4af9-98e5-610dc97493c4",
            "instance_id": null,
            "ip": "172.24.4.78",
            "pool": "public"
        }
    ]
}
POST
/os-floating-ips

创建(分配)浮动 IP 地址

为当前项目创建或分配一个浮动 IP 地址。默认情况下,浮动 IP 地址从公共池分配。

如果有一个以上可用的浮动 IP 地址池,请使用 `pool` 参数指定从中分配 IP 地址的池。

策略默认仅允许具有管理员角色或服务器所有者的用户执行此操作。云提供商可以通过 policy.json 文件更改这些权限。

正常响应代码:200

错误响应代码:badRequest(400)、unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

pool

body

字符串

浮动 IP 池的名称或 ID。

示例:创建(分配)浮动 IP 地址

{
    "pool": "public"
}

响应

名称

入参

类型

描述

floating_ip

body

对象

一个浮动 IP 地址对象。

fixed_ip

body

字符串

与浮动 IP 网络关联的固定 IP。

id

body

字符串

浮动 IP 的 ID 值。

注意

对于 nova-network,该值为整数类型;对于 neutron,该值为字符串类型。

instance_id

body

字符串

服务器的 UUID。

ip

body

字符串

浮动 IP 地址。

pool

body

字符串

浮动 IP 池的名称或 ID。

示例:创建(分配)浮动 IP 地址:JSON 响应

{
    "floating_ip": {
        "fixed_ip": null,
        "id": "8baeddb4-45e2-4c36-8cb7-d79439a5f67c",
        "instance_id": null,
        "ip": "172.24.4.17",
        "pool": "public"
    }
}
GET
/os-floating-ips/{floating_ip_id}

显示浮动 IP 地址详细信息

显示与租户或帐户关联的浮动 IP 地址的详细信息(按 ID)。

策略默认仅允许具有管理员角色或服务器所有者的用户执行此操作。云提供商可以通过 policy.json 文件更改这些权限。

正常响应代码:200

错误响应代码:badRequest(400)、unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

floating_ip_id

路径

字符串

浮动 IP 地址的 ID。

响应

名称

入参

类型

描述

floating_ip

body

对象

一个浮动 IP 地址对象。

fixed_ip

body

字符串

与浮动 IP 网络关联的固定 IP。

id

body

字符串

浮动 IP 的 ID 值。

注意

对于 nova-network,该值为整数类型;对于 neutron,该值为字符串类型。

instance_id

body

字符串

服务器的 UUID。

ip

body

字符串

浮动 IP 地址。

pool

body

字符串

浮动 IP 池的名称或 ID。

示例:显示浮动 IP 地址详细信息:JSON 响应

{
    "floating_ip": {
        "fixed_ip": null,
        "id": "8baeddb4-45e2-4c36-8cb7-d79439a5f67c",
        "instance_id": null,
        "ip": "172.24.4.17",
        "pool": "public"
    }
}
DELETE
/os-floating-ips/{floating_ip_id}

删除(取消分配)浮动 IP 地址

从当前项目中删除或取消分配一个浮动 IP 地址,并将其返回到分配它的池中。

如果 IP 地址仍与正在运行的实例关联,它将被自动取消关联。

策略默认仅允许具有管理员角色或服务器所有者的用户执行此操作。云提供商可以通过 policy.json 文件更改这些权限。

正常响应代码:202

错误响应代码:badRequest(400)、unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

floating_ip_id

路径

字符串

浮动 IP 地址的 ID。

响应

成功的 DELETE 操作的响应体为空。

安全组 (os-security-groups) (已弃用)

警告

这些 API 是对 Network 服务的代理调用。Nova 已弃用所有代理 API,用户应改用原生 API。从 microversion 2.36 开始,这些调用将返回 404 错误。请参阅:相关的网络 API

列出、显示信息、创建、更新和删除安全组。

GET
/os-security-groups

列出安全组

列出安全组。

正常响应代码:200

错误响应代码:unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

limit (可选)

查询

整数

offset 结合使用以返回项目切片。limit 是要返回的最大项目数。如果未指定 limit,或超过可配置的 max_limit,则将改用 max_limit

offset (可选)

查询

整数

limit 结合使用以返回项目的切片。offset 是列表中的起始位置。

all_tenants (可选)

查询

字符串

指定 `all_tenants` 查询参数以列出所有项目的安全组。仅允许管理员用户执行此操作。此查询参数的值不被检查,仅其存在被视为请求所有租户。

响应

名称

入参

类型

描述

security_groups

body

数组

一个或多个安全组对象。

description

body

字符串

安全组描述。

id

body

字符串

安全组 ID。

name

body

字符串

安全组名称。

rules

body

数组

安全组规则列表。

tenant_id

body

字符串

多租户云中的租户 UUID。

示例:列出安全组:JSON 响应

{
    "security_groups": [
        {
            "description": "default",
            "id": "4e469db4-3b60-43c7-8dfa-2c60e2f27075",
            "name": "default",
            "rules": [],
            "tenant_id": "6f70656e737461636b20342065766572"
        }
    ]
}
POST
/os-security-groups

创建安全组

创建一个安全组。

正常响应代码:200

错误响应代码:badRequest(400),unauthorized(401),forbidden(403)

请求

名称

入参

类型

描述

security_group

body

字符串

在请求体中指定 `security_group` 操作。

name

body

字符串

安全组名称。

description

body

字符串

安全组描述。

示例:创建安全组:JSON 请求

{
    "security_group": {
        "name": "test",
        "description": "description"
    }
}

响应

名称

入参

类型

描述

security_group

body

字符串

在请求体中指定 `security_group` 操作。

description

body

字符串

安全组描述。

id

body

字符串

安全组 ID。

name

body

字符串

安全组名称。

rules

body

数组

安全组规则列表。

tenant_id

body

字符串

多租户云中的租户 UUID。

示例:创建安全组:JSON 响应

{
    "security_group": {
        "description": "default",
        "id": "4e469db4-3b60-43c7-8dfa-2c60e2f27075",
        "name": "default",
        "rules": [],
        "tenant_id": "6f70656e737461636b20342065766572"
    }
}
GET
/os-security-groups/{security_group_id}

显示安全组详细信息

显示安全组的详细信息。

正常响应代码:200

错误响应代码:badRequest(400)、unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

security_group_id

路径

字符串

安全组 ID。

响应

名称

入参

类型

描述

security_group

body

字符串

在请求体中指定 `security_group` 操作。

description

body

字符串

安全组描述。

id

body

字符串

安全组 ID。

name

body

字符串

安全组名称。

rules

body

数组

安全组规则列表。

tenant_id

body

字符串

多租户云中的租户 UUID。

示例:显示安全组:JSON 响应

{
    "security_group": {
        "description": "default",
        "id": "4e469db4-3b60-43c7-8dfa-2c60e2f27075",
        "name": "default",
        "rules": [],
        "tenant_id": "6f70656e737461636b20342065766572"
    }
}
PUT
/os-security-groups/{security_group_id}

更新安全组

更新一个安全组。

正常响应代码:200

错误响应代码:badRequest(400)、unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

security_group_id

路径

字符串

安全组 ID。

name

body

字符串

安全组名称。

description

body

字符串

安全组描述。

示例:更新安全组:JSON 请求

{
    "security_group": {
        "name": "test",
        "description": "description"
    }
}

响应

名称

入参

类型

描述

security_group

body

字符串

在请求体中指定 `security_group` 操作。

description

body

字符串

安全组描述。

id

body

字符串

安全组 ID。

name

body

字符串

安全组名称。

rules

body

数组

安全组规则列表。

tenant_id

body

字符串

多租户云中的租户 UUID。

示例:更新安全组:JSON 响应

{
    "security_group": {
        "description": "default",
        "id": "4e469db4-3b60-43c7-8dfa-2c60e2f27075",
        "name": "default",
        "rules": [],
        "tenant_id": "6f70656e737461636b20342065766572"
    }
}
DELETE
/os-security-groups/{security_group_id}

删除安全组

删除一个安全组。

正常响应代码:202

错误响应代码:badRequest(400)、unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

security_group_id

路径

字符串

安全组 ID。

响应

成功 DELETE 查询的响应没有正文内容。

安全组规则 (os-security-group-rules) (已弃用)

警告

这些 API 是对 Network 服务的代理调用。Nova 已弃用所有代理 API,用户应改用原生 API。从 microversion 2.36 开始,这些调用将返回 404 错误。请参阅:相关的网络 API

创建和删除安全组规则。

POST
/os-security-group-rules

创建安全组规则

创建安全组规则。创建规则时必须指定 `cidr` 或 `group_id`。

注意

nova-network 只支持入站规则。如果要定义出站规则,必须使用 Neutron 网络服务。

正常响应代码:200

错误响应代码:badRequest(400),unauthorized(401),forbidden(403)

请求

名称

入参

类型

描述

security_group_rule

body

对象

一个 `security_group_rule` 对象。

parent_group_id

body

字符串

安全组 ID。

ip_protocol

body

字符串

IP 协议。有效值为 ICMP、TCP 或 UDP。

from_port

body

整数

范围起始端口。

to_port

body

整数

范围结束端口。

cidr (可选)

body

字符串

地址范围的 CIDR。

group_id (可选)

body

字符串

源安全组 ID。

示例:创建安全组规则:JSON 请求

{
    "security_group_rule": {
        "parent_group_id": "d6f86d8c-06ef-4bef-8e7c-8bf8f9ba9b7a",
        "ip_protocol": "tcp",
        "from_port": 22,
        "to_port": 22,
        "cidr": "10.0.0.0/24"
    }
}

响应

如果请求中未提供 `group_id`,则 `group` 为空。

如果请求中未提供 `cidr`,则 `ip_range` 为空。

名称

入参

类型

描述

security_group_rule

body

对象

一个 `security_group_rule` 对象。

ip_protocol

body

字符串

IP 协议。有效值为 ICMP、TCP 或 UDP。

from_port

body

整数

范围起始端口。

to_port

body

整数

范围结束端口。

ip_range

body

对象

一个 IP 范围对象。包含安全组规则 `cidr`。

ip_range.cidr (可选)

body

字符串

地址范围的 CIDR。

id

body

字符串

安全组规则 ID。

parent_group_id

body

字符串

安全组 ID。

group

body

对象

一个 `group` 对象。包含 `tenant_id` 和源安全组 `name`。

group.name (可选)

body

字符串

安全组名称。

group.tenant_id (可选)

body

字符串

拥有此安全组的租户的 UUID。

示例:创建安全组规则:JSON 响应

{
    "security_group_rule": {
        "from_port": 22,
        "group": {},
        "id": "baed7fb4-16b9-4b99-a2fd-02d0b1a4d9b2",
        "ip_protocol": "tcp",
        "ip_range": {
            "cidr": "10.0.0.0/24"
        },
        "parent_group_id": "d6f86d8c-06ef-4bef-8e7c-8bf8f9ba9b7a",
        "to_port": 22
    }
}
DELETE
/os-security-group-rules/{security_group_rule_id}

删除安全组规则

删除一个安全组规则。

正常响应代码:202

错误响应代码:badRequest(400),unauthorized(401),forbidden(403),itemNotFound(404),conflict(409)

请求

名称

入参

类型

描述

security_group_rule_id

路径

字符串

安全组规则的 ID。

响应

成功 DELETE 查询的响应没有正文内容。

主机 (os-hosts) (已弃用)

警告

`os-hosts` API 已在 microversion 2.43 中弃用。使用 microversion >= 2.43 的请求将导致 404 错误。要列出和显示主机详细信息,请使用 Hypervisors (os-hypervisors) API。要启用或禁用服务,请使用 Compute services (os-services) API。没有替换 `shutdown`、`startup`、`reboot` 或 `maintenance_mode` 操作,因为这些是系统级操作,应由计算服务控制。

管理物理主机。某些 virt 驱动程序不支持所有主机功能。有关更多信息,请参阅 nova virt 支持矩阵

策略默认设置仅允许具有管理员角色的用户执行所有 os-hosts 相关操作。云提供商可以通过 `policy.json` 文件更改这些权限。

GET
/os-hosts

列出宿主机

列出主机。

正常响应代码:200

错误响应代码:未授权(401)、禁止(403)

响应

名称

入参

类型

描述

hosts

body

数组

主机信息的数组。

zone

body

字符串

主机的可用区域。

host_name

body

字符串

主机的名称。

服务

body

字符串

正在主机上运行的服务的名称。

示例:列出主机

{
    "hosts": [
        {
            "host_name": "b6e4adbc193d428ea923899d07fb001e",
            "service": "conductor",
            "zone": "internal"
        },
        {
            "host_name": "09c025b0efc64211bd23fc50fa974cdf",
            "service": "compute",
            "zone": "nova"
        },
        {
            "host_name": "abffda96592c4eacaf4111c28fddee17",
            "service": "scheduler",
            "zone": "internal"
        }
    ]
}
GET
/os-hosts/{host_name}

显示宿主机详情

显示主机的详细信息。

正常响应代码:200

错误响应代码:unauthorized(401)、forbidden(403)、itemNotFound(404)

请求

名称

入参

类型

描述

host_name

路径

字符串

主机的名称。

响应

名称

入参

类型

描述

host

body

数组

包含主机资源信息的数组。

resource

body

对象

主机的资源信息。

resource.project

body

字符串

项目 ID(或 total、used_now、used_max 等特殊名称)。

resource.cpu

body

整数

主机上的虚拟 CPU 数量。

resource.memory_mb

body

整数

主机上的内存大小(以 MiB 为单位)。

resource.disk_gb

body

整数

主机上的磁盘大小(以 GiB 为单位)。

resource.host

body

字符串

主机的名称。

示例:显示主机详细信息

{
    "host": [
        {
            "resource": {
                "cpu": 2,
                "disk_gb": 1028,
                "host": "c1a7de0ac9d94e4baceae031d05caae3",
                "memory_mb": 8192,
                "project": "(total)"
            }
        },
        {
            "resource": {
                "cpu": 0,
                "disk_gb": 0,
                "host": "c1a7de0ac9d94e4baceae031d05caae3",
                "memory_mb": 512,
                "project": "(used_now)"
            }
        },
        {
            "resource": {
                "cpu": 0,
                "disk_gb": 0,
                "host": "c1a7de0ac9d94e4baceae031d05caae3",
                "memory_mb": 0,
                "project": "(used_max)"
            }
        }
    ]
}
PUT
/os-hosts/{host_name}

更新主机状态

启用、禁用主机或将主机置于维护或正常模式。

警告

将主机置于维护模式仅由 XenServer 计算驱动程序实现,并且据报道它实际上并未将所有客户机迁移出主机,它只是在 Xen 管理控制台中设置了一个标志,因此无效。还有其他 API 允许您执行相同操作,这些 API 可跨所有计算驱动程序支持,即禁用服务然后将实例迁移出该主机。有关维护的更多信息,请参阅 操作指南

正常响应代码:200

错误响应代码:badRequest(400),unauthorized(401),forbidden(403),itemNotFound(404),NotImplemented(501)

请求

名称

入参

类型

描述

host_name

路径

字符串

主机的名称。

status (可选)

body

字符串

主机状态,可以是 `enable` 或 `disable`。

maintenance_mode (可选)

body

字符串

维护状态模式,可以是 `enable` 或 `disable`。

示例:启用主机:JSON 请求

{
    "status": "enable",
    "maintenance_mode": "disable"
}

响应

名称

入参

类型

描述

host

body

字符串

主机的名称。

status (可选)

body

字符串

当前主机状态,可以是 `enabled` 或 `disabled`。

maintenance_mode (可选)

body

字符串

维护状态模式,可以是 `on_maintenance` 或 `off_maintenance`。

示例:启用主机

{
    "host": "65c5d5b7e3bd44308e67fc50f362aee6",
    "maintenance_mode": "off_maintenance",
    "status": "enabled"
}
GET
/os-hosts/{host_name}/reboot

重启主机

重启一个主机。

警告

这仅由 XenServer 和 Hyper-v 驱动程序支持。后端驱动程序在执行主机重启时,不会对 nova 数据库中的客户机进行任何编排处理。该主机的 nova-compute 服务可能暂时被服务组健康检查禁用,这将使其退出调度决策,并且客户机将关闭,但检查意外停止的实例的定期任务在 nova-compute 服务中运行,该服务现在可能已死,因此 nova API 将显示实例仍在运行,但实际上它们已停止。此 API 也没有在实时运行的 OpenStack 环境中进行测试。无需多言,不建议使用此 API,并且自 microversion 2.43 起已弃用。

正常响应代码:200

错误响应代码:badRequest(400),unauthorized(401),forbidden(403),itemNotFound(404),NotImplemented(501)

请求

名称

入参

类型

描述

host_name

路径

字符串

主机的名称。

响应

名称

入参

类型

描述

host

body

字符串

主机的名称。

power_action

body

字符串

主机上的电源操作。

示例:重启主机:JSON 响应

{
    "host": "9557750dbc464741a89c907921c1cb31",
    "power_action": "reboot"
}
GET
/os-hosts/{host_name}/shutdown

关闭主机

关闭一个主机。

警告

这仅由 XenServer 和 Hyper-v 驱动程序支持。后端驱动程序在执行主机关闭时,不会对 nova 数据库中的客户机进行任何编排处理。该主机的 nova-compute 服务可能暂时被服务组健康检查禁用,这将使其退出调度决策,并且客户机将关闭,但检查意外停止的实例的定期任务在 nova-compute 服务中运行,该服务现在可能已死,因此 nova API 将显示实例仍在运行,但实际上它们已停止。此 API 也没有在实时运行的 OpenStack 环境中进行测试。无需多言,不建议使用此 API,并且自 microversion 2.43 起已弃用。

正常响应代码:200

错误响应代码:badRequest(400),unauthorized(401),forbidden(403),itemNotFound(404),NotImplemented(501)

请求

名称

入参

类型

描述

host_name

路径

字符串

主机的名称。

响应

名称

入参

类型

描述

host

body

字符串

主机的名称。

power_action

body

字符串

主机上的电源操作。

示例:关闭主机

{
    "host": "77cfa0002e4d45fe97f185968111b27b",
    "power_action": "shutdown"
}
GET
/os-hosts/{host_name}/startup

启动主机

启动一个主机。

警告

这并未被任何内部计算驱动程序实现,因此将始终以 `501 NotImplemented` 错误失败。无需多言,不建议使用此 API,并且自 microversion 2.43 起已弃用。

正常响应代码:200

错误响应代码:badRequest(400),unauthorized(401),forbidden(403),itemNotFound(404),NotImplemented(501)

请求

名称

入参

类型

描述

host_name

路径

字符串

主机的名称。

响应

名称

入参

类型

描述

host

body

字符串

主机的名称。

power_action

body

字符串

主机上的电源操作。

示例:启动主机

{
    "host": "4b392b27930343bbaa27fd5d8328a564",
    "power_action": "startup"
}

已弃用的 API

本节包含过去曾属于 OpenStack Compute API 但现在已不存在的 API 参考。

根证书 (os-certificates)

创建和显示根证书的详细信息。

警告

此 API 的存在完全是因为 Nova 在其内部 EC2 API 中需要构建 euca bundle。它不再与系统除其自身的证书守护进程以外的任何部分进行交互。它在 16.0.0 Pike 版本中被删除。

POST
/os-certificates

创建根证书

创建一个根证书。

正常响应代码:200

错误响应代码:未授权(401)、禁止(403)

响应

名称

入参

类型

描述

certificate

body

对象

证书对象。

data

body

字符串

证书。

private_key

body

字符串

私钥。


示例:创建根证书

{
    "certificate": {
        "data": "Certificate:\n    Data:\n        Version: 1 (0x0)\n        Serial Number: 1018 (0x3fa)\n    Signature Algorithm: md5WithRSAEncryption\n        Issuer: O=NOVA ROOT, L=Mountain View, ST=California, C=US\n        Validity\n            Not Before: Aug 12 07:20:30 2013 GMT\n            Not After : Aug 12 07:20:30 2014 GMT\n        Subject: C=US, ST=California, O=OpenStack, OU=NovaDev, CN=openstack-fake-2013-08-12T07:20:30Z\n        Subject Public Key Info:\n            Public Key Algorithm: rsaEncryption\n                Public-Key: (1024 bit)\n                Modulus:\n                    00:ac:ff:b1:d1:ed:54:4e:35:6c:34:b4:8f:0b:04:\n                    50:25:a3:e2:4f:02:4c:4f:26:59:bd:f3:fd:eb:da:\n                    18:c2:36:aa:63:42:72:1f:88:4f:3a:ec:e7:9f:8e:\n                    44:2a:d3:b8:94:7b:20:41:f8:48:02:57:91:4c:16:\n                    62:f1:21:d4:f2:40:b5:86:50:d9:61:f0:be:ff:d8:\n                    8d:9f:4b:aa:6a:07:38:a2:7f:87:21:fc:e6:6e:1d:\n                    0a:95:1a:90:0e:60:c2:24:e9:8e:e8:68:1b:e9:f3:\n                    c6:b0:7c:da:c5:20:66:9b:85:ea:f5:c9:a7:de:ee:\n                    16:b1:51:a0:4d:e3:95:98:df\n                Exponent: 65537 (0x10001)\n    Signature Algorithm: md5WithRSAEncryption\n         15:42:ca:71:cc:32:af:dc:cf:45:91:df:8a:b8:30:c4:7f:78:\n         80:a7:25:c2:d9:81:3e:b3:dd:22:cc:3b:f8:94:e7:8f:04:f6:\n         93:04:9e:85:d4:10:40:ff:5a:07:47:24:b5:ae:93:ad:8d:e1:\n         e6:54:4a:8d:4a:29:53:c4:8d:04:6b:0b:f6:af:38:78:02:c5:\n         05:19:89:82:2d:ba:fd:11:3c:1e:18:c9:0c:3d:03:93:6e:bc:\n         66:70:34:ee:03:78:8a:1d:3d:64:e8:20:2f:90:81:8e:49:1d:\n         07:37:15:66:42:cb:58:39:ad:56:ce:ed:47:c6:78:0b:0e:75:\n         29:ca\n-----BEGIN CERTIFICATE-----\nMIICNDCCAZ0CAgP6MA0GCSqGSIb3DQEBBAUAME4xEjAQBgNVBAoTCU5PVkEgUk9P\nVDEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzETMBEGA1UECBMKQ2FsaWZvcm5pYTEL\nMAkGA1UEBhMCVVMwHhcNMTMwODEyMDcyMDMwWhcNMTQwODEyMDcyMDMwWjB2MQsw\nCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTESMBAGA1UECgwJT3BlblN0\nYWNrMRAwDgYDVQQLDAdOb3ZhRGV2MSwwKgYDVQQDDCNvcGVuc3RhY2stZmFrZS0y\nMDEzLTA4LTEyVDA3OjIwOjMwWjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA\nrP+x0e1UTjVsNLSPCwRQJaPiTwJMTyZZvfP969oYwjaqY0JyH4hPOuznn45EKtO4\nlHsgQfhIAleRTBZi8SHU8kC1hlDZYfC+/9iNn0uqagc4on+HIfzmbh0KlRqQDmDC\nJOmO6Ggb6fPGsHzaxSBmm4Xq9cmn3u4WsVGgTeOVmN8CAwEAATANBgkqhkiG9w0B\nAQQFAAOBgQAVQspxzDKv3M9Fkd+KuDDEf3iApyXC2YE+s90izDv4lOePBPaTBJ6F\n1BBA/1oHRyS1rpOtjeHmVEqNSilTxI0Eawv2rzh4AsUFGYmCLbr9ETweGMkMPQOT\nbrxmcDTuA3iKHT1k6CAvkIGOSR0HNxVmQstYOa1Wzu1HxngLDnUpyg==\n-----END CERTIFICATE-----\n",
        "private_key": "-----BEGIN RSA PRIVATE KEY-----\nMIICXgIBAAKBgQCs/7HR7VRONWw0tI8LBFAlo+JPAkxPJlm98/3r2hjCNqpjQnIf\niE867OefjkQq07iUeyBB+EgCV5FMFmLxIdTyQLWGUNlh8L7/2I2fS6pqBziif4ch\n/OZuHQqVGpAOYMIk6Y7oaBvp88awfNrFIGabher1yafe7haxUaBN45WY3wIDAQAB\nAoGBAIrcr2I/KyWf0hw4Nn10V9TuyE/9Gz2JHg3QFKjFJox2DqygADT5WAeHc6Bq\nNKNf0NA2SL1LSpm+ql01tvOw4VjE5TF6OHiIzHuTTnXggG6vuA8rxp6L24HtkAcC\n0CBno9ggSX6jVornJPBfxpkwITYSvH57BUFVD7ovbPyWGzS5AkEA1JeUtL6zxwps\nWRr1aJ8Ill2uQk/RUIvSZOU61s+B190zvHikFy8LD8CI6vvBmjC/IZuZVedufjqs\n4vX82uDO3QJBANBSh2b2dyB4AGVFY9vXMRtALAspJHbLHy+zTKxlGPFiuz7Se3ps\n8Kehz4C/CBXgQkk194dwFSGE19/PQfyJROsCQQCFFDJZhrtBUMwMZ2zSRiN5BUGt\nbwuncS+OS1Su3Yz5VRYq2BZYEPHKtYrAFkLWQ8eRwTaWaN5pFE/fb38OgQXdAkA4\nDm0W/K0zlHbuyUxEpNQ28/6mBi0ktiWvLT0tioq6sYmXLwZA/D2JrhXrG/xt/ol3\nr8jqrfNRsLByLhAgh0N/AkEAl2eR0O97lTEgFNqzIQwVmIAn9mBO3cnf3tycvlDU\nm6eb2CS242y4QalfCCAEjxoJURdfsm3/D1iFo00X+IWF+A==\n-----END RSA PRIVATE KEY-----\n"
    }
}
GET
/os-certificates/root

显示根证书详细信息

显示根证书的详细信息。

正常响应代码:200

错误响应代码:unauthorized(401),forbidden(403),itemNotFound(404),notImplemented(501)

响应

名称

入参

类型

描述

certificate

body

对象

证书对象。

data

body

字符串

证书。

private_key

body

字符串

私钥。


示例:显示根证书详细信息

{
    "certificate": {
        "data": "-----BEGIN CERTIFICATE-----\nMIICyzCCAjSgAwIBAgIJAJ8zSIxUp/m4MA0GCSqGSIb3DQEBBAUAME4xEjAQBgNV\nBAoTCU5PVkEgUk9PVDEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzETMBEGA1UECBMK\nQ2FsaWZvcm5pYTELMAkGA1UEBhMCVVMwHhcNMTIxMDE3MDEzMzM5WhcNMTMxMDE3\nMDEzMzM5WjBOMRIwEAYDVQQKEwlOT1ZBIFJPT1QxFjAUBgNVBAcTDU1vdW50YWlu\nIFZpZXcxEzARBgNVBAgTCkNhbGlmb3JuaWExCzAJBgNVBAYTAlVTMIGfMA0GCSqG\nSIb3DQEBAQUAA4GNADCBiQKBgQDXW4QfQQxJG4MqurqK8nU/Lge0mfNKxXj/Gwvg\n2sQVwxzmKfoxih8Nn6yt0yHMNjhoji1UoWI03TXUnPZRAZmsypGKZeBd7Y1ZOCPB\nXGZVGrQm+PB2kZU+3cD8fVKcueMLLeZ+LRt5d0njnoKhc5xjqMlfFPimHMba4OL6\nTnYzPQIDAQABo4GwMIGtMAwGA1UdEwQFMAMBAf8wHQYDVR0OBBYEFKyoKu4SMOFM\ngx5Ec7p0nrCkabvxMH4GA1UdIwR3MHWAFKyoKu4SMOFMgx5Ec7p0nrCkabvxoVKk\nUDBOMRIwEAYDVQQKEwlOT1ZBIFJPT1QxFjAUBgNVBAcTDU1vdW50YWluIFZpZXcx\nEzARBgNVBAgTCkNhbGlmb3JuaWExCzAJBgNVBAYTAlVTggkAnzNIjFSn+bgwDQYJ\nKoZIhvcNAQEEBQADgYEAXuvXlu1o/SVvykSLhHW8QiAY00yzN/eDzYmZGomgiuoO\n/x+ayVzbrz1UWZnBD+lC4hll2iELSmf22LjLoF+s/9NyPqHxGL3FrfatBkndaiF8\nAx/TMEyCPl7IQWi+3zzatqOKHSHiG7a9SGn/7o2aNTIWKVulfy5GvmbBjBM/0UE=\n-----END CERTIFICATE-----\n",
        "private_key": null
    }
}

Cloudpipe (os-cloudpipe)

警告

此 API 仅适用于 `nova-network`,后者已弃用并被 Neutron 取代。在任何新应用程序中都应避免使用它。它在 16.0.0 Pike 版本中被删除。

管理项目的虚拟 VPN。

GET
/os-cloudpipe

列出 Cloudpipes

列出 cloudpipes。

正常响应代码:200

错误响应代码:badRequest(400),unauthorized(401),forbidden(403),itemNotFound (404)

响应

名称

入参

类型

描述

cloudpipes

body

数组

cloudpipe 对象的列表。

created_at

body

字符串

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

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

例如,2015-08-27T09:49:58-05:00。 如果包含,±hh:mm 值是 UTC 的时区偏移量。 在前面的示例中,偏移量值为 -05:00

instance_id

body

字符串

cloudpipe 实例的 UUID。

internal_ip (可选)

body

字符串

NIC 的固定 IPv4 地址。与 neutronnova-networks 网络兼容。

project_id

body

字符串

此服务器所属的项目 ID。

public_ip (可选)

body

字符串

VPN 公共 IP 地址。

public_port (可选)

body

字符串

VPN 公共端口。

state (可选)

body

字符串

VPN 状态。

示例:列出 Cloudpipes:JSON 响应

{
    "cloudpipes": [
        {
            "created_at": "2012-11-27T17:18:01Z",
            "instance_id": "27deecdb-baa3-4a26-9c82-32994b815b01",
            "internal_ip": "192.168.1.30",
            "project_id": "fa1765bd-a352-49c7-a6b7-8ee108a3cb0c",
            "public_ip": "127.0.0.1",
            "public_port": 22,
            "state": "down"
        }
    ]
}
POST
/os-cloudpipe

创建 Cloudpipe

创建一个 cloudpipe。

正常响应代码:200

错误响应代码:badRequest(400),unauthorized(401),forbidden(403)

请求

名称

入参

类型

描述

cloudpipe

body

对象

cloudpipe 对象。

project_id (可选)

body

字符串

项目的 UUID。如果省略,项目 ID 将默认为调用租户。

示例:创建 Cloudpipe:JSON 请求

{
    "cloudpipe": {
        "project_id": "059f21e3-c20e-4efc-9e7a-eba2ab3c6f9a"
    }
}

响应

名称

入参

类型

描述

instance_id

body

字符串

cloudpipe 实例的 UUID。

示例:创建 Cloudpipe:JSON 响应

{
    "instance_id": "1e9b8425-34af-488e-b969-4d46f4a6382e"
}
PUT
/os-cloudpipe/configure-project

更新 Cloudpipe

更新 cloudpipe 实例的虚拟专用网络 (VPN) IP 地址和端口。

正常响应代码:202

错误响应代码:badRequest(400),unauthorized(401),forbidden(403)

请求

名称

入参

类型

描述

configure_project

body

对象

用于配置 cloudpipe 实例的 VPN IP 和端口信息。

vpn_ip

body

字符串

VPN IP 地址。

vpn_port

body

字符串

VPN 端口。

示例:更新 Cloudpipe:JSON 请求

{
    "configure_project": {
        "vpn_ip": "192.168.1.1",
        "vpn_port": "2000"
    }
}

响应

成功 PUT 请求的响应没有正文内容

Ping 实例 (os-fping)

警告

此 API 仅适用于 `nova-network`,后者已弃用。在任何新应用程序中都应避免使用它。从 microversion 2.36 开始,这些调用将返回 404 错误。它在 18.0.0 Rocky 版本中被删除。

Ping 实例并报告哪些实例是活动的。

GET
/os-fping

Ping 实例

运行 fping 工具来 ping 实例并报告哪些实例是活动的。

指定 `all_tenants=1` 查询参数来 ping 所有租户的实例。例如

GET /os-fping?all_tenants=1

指定 `include` 和 `exclude` 查询参数来过滤结果。例如

GET /os-fping?all_tenants=1&include=uuid1,uuid2&exclude=uuid3,uuid4

策略默认仅允许具有管理员角色或服务器所有者的用户执行此操作。云提供商可以通过 policy.json 文件更改这些权限。

正常响应代码:200

错误响应代码:serviceUnavailable(503),unauthorized(401),forbidden(403),itemNotFound(404),gone(410)

请求

名称

入参

类型

描述

all_tenants (可选)

查询

字符串

指定 `all_tenants` 查询参数来 ping 所有租户的实例。默认情况下,这仅允许管理员用户。此查询参数的值不被检查,仅其存在被视为请求所有租户。

include (可选)

查询

字符串

指定 `include=uuid[,uuid...]` 以将实例包含在结果中。

exclude (可选)

查询

字符串

指定 `exclude=uuid[,uuid...]` 以将实例排除在结果之外。

响应

名称

入参

类型

描述

servers

body

数组

服务器对象的列表。

alive

body

布尔值

如果实例处于活动状态,则返回 true。

id

body

字符串

服务器的 UUID。

project_id (可选)

body

字符串

项目的 UUID。如果省略,项目 ID 将默认为调用租户。


示例:Ping 实例

{
    "servers": [
        {
            "alive": false,
            "id": "1d1aea35-472b-40cf-9337-8eb68480aaa1",
            "project_id": "6f70656e737461636b20342065766572"
        }
    ]
}
GET
/os-fping/{instance_id}

Ping 一个实例

运行 fping 工具来 ping 一个实例并报告实例是否处于活动状态。

策略默认仅允许具有管理员角色或服务器所有者的用户执行此操作。云提供商可以通过 policy.json 文件更改这些权限。

正常响应代码:200

错误响应代码:serviceUnavailable(503),unauthorized(401),forbidden(403),itemNotFound(404),gone(410)

请求

名称

入参

类型

描述

instance_id

路径

字符串

实例的 UUID。

响应

名称

入参

类型

描述

server

body

对象

一个 server 对象。

alive

body

布尔值

如果实例处于活动状态,则返回 true。

id

body

字符串

服务器的 UUID。

project_id (可选)

body

字符串

项目的 UUID。如果省略,项目 ID 将默认为调用租户。


示例:Ping 一个实例

{
    "server": {
        "alive": false,
        "id": "f5e6fd6d-c0a3-4f9e-aabf-d69196b6d11a",
        "project_id": "6f70656e737461636b20342065766572"
    }
}

服务器虚拟接口 (servers, os-virtual-interfaces)

列出一个服务器的虚拟接口。

警告

由于此 API 仅为 nova-network 实现,因此从 Microversion 2.44 开始已弃用。从 microversion 2.44 开始,此 API 将返回 404 错误。它在 18.0.0 Rocky 版本中被删除。

要查询服务器连接的 neutron 接口,请使用 API `GET /servers/{server_uuid}/os-interface`。

注意

此 API 仅为 nova-network 服务实现,如果云使用 Neutron 网络服务,将返回 400 错误响应。请使用 Neutron 的 `ports` API,通过按 `device_id`(即 `{server_id}`)过滤端口来列出给定服务器的端口。

GET
/servers/{server_id}/os-virtual-interfaces

列出虚拟接口

列出一个实例的虚拟接口。

策略默认设置仅允许具有管理员角色或服务器所有者的用户执行此操作。通过 `policy.json` 文件更改这些权限。

正常响应代码:200

错误响应代码:badRequest(400),unauthorized(401),forbidden(403),itemNotFound(404),gone(410)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

limit (可选)

查询

整数

offset 结合使用以返回项目切片。limit 是要返回的最大项目数。如果未指定 limit,或超过可配置的 max_limit,则将改用 max_limit

offset (可选)

查询

整数

limit 结合使用以返回项目的切片。offset 是列表中的起始位置。

响应

名称

入参

类型

描述

virtual_interfaces

body

数组

虚拟接口的数组。

id

body

字符串

虚拟接口的 UUID。

mac_address

body

字符串

MAC 地址。

net_id

body

字符串

网络 ID。

版本 2.12 中新增

注意

API v2 在“OS-EXT-VIF-NET:net_id”响应属性中返回网络 ID。但 API v2.1 基本版本不返回网络 ID。网络 ID 已在 v2.12 micro-version 中添加,并在“net_id”属性中返回。

示例:列出虚拟接口:JSON 响应

{
    "virtual_interfaces": [
        {
            "id": "cec8b9bb-5d22-4104-b3c8-4c35db3210a6",
            "mac_address": "fa:16:3e:3c:ce:6f",
            "net_id": "cec8b9bb-5d22-4104-b3c8-4c35db3210a7"
        }
    ]
}

固定 IP (os-fixed-ips)

警告

这些 API 仅适用于 **nova-network**,已弃用。从 microversion 2.36 开始,这些调用将返回 404 错误。它们在 18.0.0 Rocky 版本中被删除。

显示固定 IP 的数据,例如主机名、CIDR 和地址。此外,还可以预留和释放固定 IP 地址。

GET
/os-fixed-ips/{fixed_ip}

显示固定 IP 详细信息

显示固定 IP 地址的详细信息。

正常响应代码:200

错误响应代码:badRequest(400),unauthorized(401),forbidden(403),itemNotFound(404),gone(410)

请求

名称

入参

类型

描述

fixed_ip

路径

字符串

您感兴趣的固定 IP。

响应

名称

入参

类型

描述

fixed_ip

body

对象

固定 IP 地址对象。

address

body

字符串

IP 地址。

cidr

body

字符串

地址范围的 CIDR。

host

body

字符串

管理与此固定 IP 地址关联的服务器的主机名。

hostname

body

字符串

与此固定 IP 地址关联的服务器的主机名。

reserved

body

布尔值

如果固定 IP 已预留,则为 True,否则为 False。

版本 2.4 中新增

示例:显示固定 IP 详细信息:JSON 响应

{
    "fixed_ip": {
        "address": "192.168.1.1",
        "cidr": "192.168.1.0/24",
        "host": "host",
        "hostname": "compute.host.pvt"
    }
}
POST
/os-fixed-ips/{fixed_ip}/action

预留或释放固定 IP

预留或释放固定 IP。

要预留固定 IP 地址,请在请求体中指定 `reserve`。要释放固定 IP 地址,请在请求体中指定 `unreserve`。

正常响应代码:202

错误响应代码:badRequest(400),unauthorized(401),forbidden(403),itemNotFound(404),gone(410)

请求

名称

入参

类型

描述

fixed_ip

路径

字符串

您感兴趣的固定 IP。

reserve (可选)

body

字符串

用于预留 IP 的属性,值为 `null`。

unreserve (可选)

body

字符串

用于释放 IP 的属性,值为 `null`。

示例:预留或释放固定 IP:JSON 请求

{
    "reserve": null
}

响应

成功 POST 操作的响应没有正文内容。

浮动 IP 批量 (os-floating-ips-bulk)

警告

由于这些 API 仅为 **nova-network** 实现,因此已弃用。从 microversion 2.36 开始,这些调用将返回 404 错误。它们在 18.0.0 Rocky 版本中被删除。

批量创建、删除和列出浮动 IP。默认池名称为 `nova`。

要查看可用池,请使用 `os-floating-ip-pools` 扩展。

GET
/os-floating-ips-bulk

列出浮动 IP

列出所有浮动 IP。

正常响应代码:200

错误响应代码:unauthorized(401),forbidden(403),itemNotFound(404),gone(410)

响应

名称

入参

类型

描述

floating_ip_info

body

数组

浮动 IP 对象的数组。

address

body

字符串

浮动 IP 地址。

fixed_ip

body

字符串

与浮动 IP 网络关联的固定 IP。

instance_uuid

body

字符串

服务器的 UUID。

接口

body

字符串

浮动 IP 地址的虚拟接口。

pool

body

字符串

浮动 IP 池的名称。

project_id

body

字符串

创建批量 IP 地址下的项目 ID

示例:列出浮动 IP:JSON 响应

{
    "floating_ip_info": [
        {
            "address": "10.10.10.1",
            "instance_uuid": null,
            "fixed_ip": null,
            "interface": "eth0",
            "pool": "nova",
            "project_id": null
        },
        {
            "address": "10.10.10.2",
            "instance_uuid": null,
            "fixed_ip": null,
            "interface": "eth0",
            "pool": "nova",
            "project_id": null
        },
        {
            "address": "10.10.10.3",
            "instance_uuid": null,
            "fixed_ip": null,
            "interface": "eth0",
            "pool": "nova",
            "project_id": null
        }
    ]
}
POST
/os-floating-ips-bulk

创建浮动 IP

批量创建浮动 IP。

正常响应代码:200

错误响应代码:badRequest(400),unauthorized(401),forbidden(403),conflict(409),gone(410)

请求

名称

入参

类型

描述

floating_ips_bulk_create

body

对象

浮动 IP 批量地址对象。

ip_range

body

字符串

用于创建浮动 IP 的 IP 地址范围。

interface (可选)

body

字符串

浮动 IP 地址的虚拟接口

pool (可选)

body

字符串

浮动 IP 池的名称

示例:创建浮动 IP:JSON 请求

{
    "floating_ips_bulk_create": {
        "ip_range": "192.168.1.0/24",
        "pool": "nova",
        "interface": "eth0"
    }
}

响应

名称

入参

类型

描述

floating_ips_bulk_create

body

对象

浮动 IP 批量地址对象。

接口

body

字符串

浮动 IP 地址的虚拟接口。

ip_range

body

字符串

用于创建浮动 IP 的 IP 地址范围。

pool

body

字符串

浮动 IP 池的名称。

示例:创建浮动 IP:JSON 响应

{
    "floating_ips_bulk_create": {
        "interface": "eth0",
        "ip_range": "192.168.1.0/24",
        "pool": "nova"
    }
}
PUT
/os-floating-ips-bulk/delete

批量删除浮动 IP

批量删除浮动 IP。

正常响应代码:200

错误响应代码:badRequest(400),unauthorized(401),forbidden(403),itemNotFound(404),gone(410)

请求

名称

入参

类型

描述

ip_range

body

字符串

从中批量删除浮动 IP 的 IP 地址范围。

示例:批量删除浮动 IP:JSON 请求

{
    "ip_range": "192.168.1.0/24"
}

响应

名称

入参

类型

描述

floating_ips_bulk_delete

body

字符串

从中批量删除浮动 IP 的 IP 地址范围。

示例:批量删除浮动 IP:JSON 响应

{
    "floating_ips_bulk_delete": "192.168.1.0/24"
}
GET
/os-floating-ips-bulk/{host_name}

按主机列出浮动 IP

列出主机的所有浮动 IP。

正常响应代码:200

错误响应代码:unauthorized(401),forbidden(403),itemNotFound(404),gone(410)

请求

名称

入参

类型

描述

host_name

路径

字符串

主机的名称。

响应

名称

入参

类型

描述

floating_ip_info

body

数组

浮动 IP 对象的数组。

address

body

字符串

浮动 IP 地址。

fixed_ip

body

字符串

与浮动 IP 网络关联的固定 IP。

instance_uuid

body

字符串

服务器的 UUID。

接口

body

字符串

浮动 IP 地址的虚拟接口。

pool

body

字符串

浮动 IP 池的名称。

project_id

body

字符串

创建批量 IP 地址下的项目 ID

示例:按主机列出浮动 IP:JSON 响应

{
    "floating_ip_info": [
        {
            "address": "10.10.10.3",
            "instance_uuid": null,
            "fixed_ip": null,
            "interface": "eth0",
            "pool": "nova",
            "project_id": null
        }
    ]
}

浮动 IP DNS 记录 (os-floating-ip-dns)

警告

由于这些 API 仅为 **nova-network** 实现,因此已弃用。从 microversion 2.36 开始,这些调用将返回 404 错误。它们在 18.0.0 Rocky 版本中被删除。

管理与浮动 IP 地址关联的 DNS 记录。API 将请求分派给启动时选择的 DNS 驱动程序。

GET
/os-floating-ip-dns

列出 DNS 域

列出 DNS 驱动程序发布的已注册 DNS 域。

正常响应代码:200

错误响应代码:unauthorized(401),forbidden(403),gone(410),notImplemented(501)

响应

示例:列出 DNS 域:JSON 响应

{
    "domain_entries": [
        {
            "availability_zone": null,
            "domain": "domain1.example.org",
            "project": "project1",
            "scope": "public"
        }
    ]
}
PUT
/os-floating-ip-dns/{domain}

创建或更新 DNS 域

创建或更新 DNS 域。

正常响应代码:200

错误响应代码:badRequest(400), unauthorized(401), forbidden(403), gone(410), notImplemented(501)

请求

名称

入参

类型

描述

domain

路径

字符串

DNS 驱动程序发布的已注册 DNS 域。

示例:创建或更新 DNS 域:JSON 请求

{
    "domain_entry": {
        "scope": "public",
        "project": "project1"
    }
}

响应

示例:创建或更新 DNS 域:JSON 响应

{
    "domain_entry": {
        "availability_zone": null,
        "domain": "domain1.example.org",
        "project": "project1",
        "scope": "public"
    }
}
DELETE
/os-floating-ip-dns/{domain}

删除 DNS 域

删除 DNS 域及其所有关联的主机条目。

正常响应代码:202

错误响应代码:unauthorized(401), forbidden(403), itemNotFound(404), gone(410), notImplemented(501)

请求

名称

入参

类型

描述

domain

路径

字符串

DNS 驱动程序发布的已注册 DNS 域。

响应

GET
/os-floating-ip-dns/{domain}/entries/{ip}

列出 DNS 条目

列出域和 IP 的 DNS 条目。

正常响应代码:200

错误响应代码:unauthorized(401), forbidden(403), itemNotFound(404), gone(410), notImplemented(501)

请求

名称

入参

类型

描述

domain

路径

字符串

DNS 驱动程序发布的已注册 DNS 域。

ip

路径

字符串

IP 地址。

响应

示例:列出 DNS 条目:JSON 响应

{
    "dns_entries": [
        {
            "domain": "domain1.example.org",
            "id": null,
            "ip": "192.168.1.1",
            "name": "instance1",
            "type": null
        }
    ]
}
GET
/os-floating-ip-dns/{domain}/entries/{name}

查找唯一 DNS 条目

查找域和名称的唯一 DNS 条目。

正常响应代码:200

错误响应代码:unauthorized(401), forbidden(403), itemNotFound(404), gone(410), notImplemented(501)

请求

名称

入参

类型

描述

domain

路径

字符串

DNS 驱动程序发布的已注册 DNS 域。

name

body

字符串

安全组名称。

响应

示例:查找唯一 DNS 条目:JSON 响应

{
    "dns_entry": {
        "domain": "domain1.example.org",
        "id": null,
        "ip": "192.168.1.1",
        "name": "instance1",
        "type": null
    }
}
PUT
/os-floating-ip-dns/{domain}/entries/{name}

创建或更新 DNS 条目

创建或更新 DNS 条目。

正常响应代码:200

错误响应代码:unauthorized(401),forbidden(403),gone(410),notImplemented(501)

请求

名称

入参

类型

描述

domain

路径

字符串

DNS 驱动程序发布的已注册 DNS 域。

name

body

字符串

安全组名称。

示例:创建或更新 DNS 条目:JSON 请求

{
    "dns_entry": {
        "ip": "192.168.53.11",
        "dns_type": "A"
    }
}

响应

示例:创建或更新 DNS 条目:JSON 响应

{
    "dns_entry": {
        "domain": "domain1.example.org",
        "id": null,
        "ip": "192.168.1.1",
        "name": "instance1",
        "type": "A"
    }
}
DELETE
/os-floating-ip-dns/{domain}/entries/{name}

删除 DNS 条目

删除一个 DNS 条目。

正常响应代码:202

错误响应代码:unauthorized(401), forbidden(403), itemNotFound(404), gone(410), notImplemented(501)

请求

名称

入参

类型

描述

domain

路径

字符串

DNS 驱动程序发布的已注册 DNS 域。

name

body

字符串

安全组名称。

响应

Cells (os-cells, capacities)

添加邻居 Cell,列出邻居 Cell,并显示本地 Cell 的功能。默认情况下,只有管理员可以管理 Cell。

警告

这些 API 指的是 Cells v1 部署,该部署在 16.0.0 Pike 版本中已弃用。它们不与 Cells v2 一起使用,Cells v2 从 15.0.0 Ocata 版本开始是必需的,所有 Nova 部署至少包含一个 Cells v2 Cell。它们在 20.0.0 Train 版本中被删除。

GET
/os-cells

列出 Cells

列出 Cells。

正常响应代码:200

错误响应代码:badRequest(400), unauthorized(401), forbidden(403), gone(410), notImplemented(501)

请求

名称

入参

类型

描述

tenant_id

路径

字符串

多租户云中的租户 UUID。

limit (可选)

查询

整数

offset 结合使用以返回项目切片。limit 是要返回的最大项目数。如果未指定 limit,或超过可配置的 max_limit,则将改用 max_limit

offset (可选)

查询

整数

limit 结合使用以返回项目的切片。offset 是列表中的起始位置。

响应

示例:列出 Cells:JSON 响应

{
    "cells": [
        {
            "name": "cell1",
            "rpc_host": null,
            "rpc_port": null,
            "type": "child",
            "username": "username1"
        },
        {
            "name": "cell3",
            "rpc_host": null,
            "rpc_port": null,
            "type": "child",
            "username": "username3"
        },
        {
            "name": "cell5",
            "rpc_host": null,
            "rpc_port": null,
            "type": "child",
            "username": "username5"
        },
        {
            "name": "cell2",
            "rpc_host": null,
            "rpc_port": null,
            "type": "parent",
            "username": "username2"
        },
        {
            "name": "cell4",
            "rpc_host": null,
            "rpc_port": null,
            "type": "parent",
            "username": "username4"
        }
    ]
}
POST
/os-cells

创建 Cell

创建一个新的 Cell。

正常响应代码:200

错误响应代码:badRequest(400), unauthorized(401), forbidden(403), gone(410), notImplemented(501)

GET
/os-cells/capacities

Capacities

检索容量。

正常响应代码:200

错误响应代码:badRequest(400), unauthorized(401), forbidden(403), gone(410), notImplemented(501)

GET
/os-cells/detail

列出带详细信息的 Cells

列出具有功能详细信息的 Cells。

正常响应代码:200

错误响应代码:badRequest(400), unauthorized(401), forbidden(403), gone(410), notImplemented(501)

请求

名称

入参

类型

描述

limit (可选)

查询

整数

offset 结合使用以返回项目切片。limit 是要返回的最大项目数。如果未指定 limit,或超过可配置的 max_limit,则将改用 max_limit

offset (可选)

查询

整数

limit 结合使用以返回项目的切片。offset 是列表中的起始位置。

GET
/os-cells/info

当前 Cell 的信息

检索当前 Cell 的信息。

正常响应代码:200

错误响应代码:badRequest(400), unauthorized(401), forbidden(403), gone(410), notImplemented(501)

GET
/os-cells/{cell_id}

显示 Cell 数据

显示 Cell 的数据。

正常响应代码:200

错误响应代码:badRequest(400),unauthorized(401),forbidden(403),itemNotFound(404),gone(410),notImplemented(501)

请求

名称

入参

类型

描述

cell_id

路径

字符串

Cell 的 UUID。

响应

示例:显示 Cell 数据:JSON 响应

{
    "cell": {
        "name": "cell3",
        "rpc_host": null,
        "rpc_port": null,
        "type": "child",
        "username": "username3"
    }
}
PUT
/os-cells/{cell_id}

更新一个 Cell

更新现有 Cell。

正常响应代码:200

错误响应代码:badRequest(400),unauthorized(401),forbidden(403),itemNotFound(404),gone(410),notImplemented(501)

请求

名称

入参

类型

描述

cell_id

路径

字符串

Cell 的 UUID。

DELETE
/os-cells/{cell_id}

删除一个 Cell

删除一个 Cell。

正常响应代码:200

错误响应代码:badRequest(400),unauthorized(401),forbidden(403),itemNotFound(404),gone(410),notImplemented(501)

请求

名称

入参

类型

描述

cell_id

路径

字符串

Cell 的 UUID。

GET
/os-cells/{cell_id}/capacities

显示 Cell 容量

显示 Cell 的容量。

正常响应代码:200

错误响应代码:badRequest(400),unauthorized(401),forbidden(403),itemNotFound(404),gone(410),notImplemented(501)

请求

名称

入参

类型

描述

cell_id

路径

字符串

Cell 的 UUID。

响应

示例:显示 Cell 容量:JSON 响应

{
    "cell": {
        "capacities": {
            "disk_free": {
                "total_mb": 1052672,
                "units_by_mb": {
                    "0": 0,
                    "163840": 5,
                    "20480": 46,
                    "40960": 23,
                    "81920": 11
                }
            },
            "ram_free": {
                "total_mb": 7680,
                "units_by_mb": {
                    "16384": 0,
                    "2048": 3,
                    "4096": 1,
                    "512": 13,
                    "8192": 0
                }
            }
        }
    }
}

XenServer VNC Proxy (XVP) 控制台 (os-consoles)

管理服务器 XVP 控制台。

警告

这些 API 仅适用于使用 XenServer 虚拟驱动程序。它们在 21.0.0 (Ussuri) 版本中被删除。

GET
/servers/{server_id}/consoles

列出控制台

列出服务器的所有控制台。

正常响应代码:200

错误响应代码:unauthorized(401),forbidden(403),gone(410)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

响应

名称

入参

类型

描述

consoles

body

数组

控制台对象的列表。

console

body

对象

控制台对象。

console_type

body

字符串

控制台的类型。

id

body

字符串

控制台的 UUID。


示例:列出控制台

{
    "consoles": [
        {
            "console": {
                "console_type": "fake",
                "id": 1
            }
        }
    ]
}
POST
/servers/{server_id}/consoles

创建控制台

为服务器创建控制台。

正常响应代码:200

错误响应代码:unauthorized(401),forbidden(403),itemNotFound(404),gone(410)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

响应

如果成功,此方法不返回响应体。

GET
/servers/{server_id}/consoles/{console_id}

显示控制台详细信息

显示服务器的控制台详细信息。

正常响应代码:200

错误响应代码:unauthorized(401),forbidden(403),itemNotFound(404),gone(410)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

console_id

路径

字符串

控制台的 UUID。

响应

名称

入参

类型

描述

console

body

对象

控制台对象。

console_type

body

字符串

控制台的类型。

host (可选)

body

字符串

主机名或 ID。

id

body

字符串

控制台的 UUID。

instance_name

body

字符串

实例的名称。

password

body

字符串

控制台的密码。

port

body

整数

端口号。


示例:显示控制台详细信息

{
    "console": {
        "console_type": "fake",
        "host": "fake",
        "id": 1,
        "instance_name": "instance-00000001",
        "password": "C4jBpJ6x",
        "port": 5999
    }
}
DELETE
/servers/{server_id}/consoles/{console_id}

删除控制台

删除服务器的控制台。

正常响应代码:202

错误响应代码:unauthorized(401),forbidden(403),itemNotFound(404),gone(410)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

console_id

路径

字符串

控制台的 UUID。

响应

如果成功,此方法不返回响应体。

默认安全组规则 (os-security-group-default-rules)

警告

此 API 仅适用于 **nova-network**,已弃用。在任何新应用程序中都应避免使用它。从 microversion 2.36 开始,这些调用将返回 404 错误。它们在 21.0.0 (Ussuri) 版本中被完全删除。

列出、显示信息以及创建默认安全组规则。

GET
/os-security-group-default-rules

列出默认安全组规则

列出默认安全组规则。

正常响应代码:200

错误响应代码:unauthorized(401), forbidden(403), itemNotFound(404), gone(410), notImplemented(501)

响应

名称

入参

类型

描述

security_group_default_rules

body

数组

`security_group_default_rule` 对象的列表。

from_port

body

整数

范围起始端口。

id

body

字符串

默认安全组规则 ID。

ip_protocol

body

字符串

IP 协议。有效值为 ICMP、TCP 或 UDP。

ip_range

body

对象

一个 IP 范围对象。包含安全组规则 `cidr`。

ip_range.cidr (可选)

body

字符串

地址范围的 CIDR。

to_port

body

整数

范围结束端口。

示例:列出默认安全组规则:JSON 响应

{
    "security_group_default_rules": [
        {
            "from_port": 80,
            "id": 1,
            "ip_protocol": "TCP",
            "ip_range": {
                "cidr": "10.10.10.0/24"
            },
            "to_port": 80
        }
    ]
}
GET
/os-security-group-default-rules/{security_group_default_rule_id}

显示默认安全组规则详细信息

显示安全组规则的详细信息。

正常响应代码:200

错误响应代码:badRequest(400),unauthorized(401),forbidden(403),itemNotFound(404),gone(410),notImplemented(501)

请求

名称

入参

类型

描述

security_group_default_rule_id

路径

字符串

安全组规则的 UUID。

响应

名称

入参

类型

描述

security_group_default_rule

body

对象

一个 `security_group_default_rule` 对象。

from_port

body

整数

范围起始端口。

id

body

字符串

默认安全组规则 ID。

ip_protocol

body

字符串

IP 协议。有效值为 ICMP、TCP 或 UDP。

ip_range

body

对象

一个 IP 范围对象。包含安全组规则 `cidr`。

ip_range.cidr (可选)

body

字符串

地址范围的 CIDR。

to_port

body

整数

范围结束端口。

示例:显示默认安全组规则:JSON 响应

{
    "security_group_default_rule": {
        "from_port": 80,
        "id": 1,
        "ip_protocol": "TCP",
        "ip_range": {
            "cidr": "10.10.10.0/24"
        },
        "to_port": 80
    }
}
POST
/os-security-group-default-rules

创建默认安全组规则

创建一个默认安全组规则。

如果指定了源端口 (`from_port`) 或目标端口 (`to_port`) 值,则必须同时指定 IP 协议 (`ip_protocol`) 值。否则,操作将返回 `Bad Request (400)` 响应代码。

正常响应代码:200

错误响应代码:badRequest(400), unauthorized(401), forbidden(403), conflict(409), gone(410), notImplemented(501)

请求

名称

入参

类型

描述

security_group_default_rule

body

对象

一个 `security_group_default_rule` 对象。

ip_protocol

body

字符串

IP 协议。有效值为 ICMP、TCP 或 UDP。

from_port

body

整数

范围起始端口。

to_port

body

整数

范围结束端口。

cidr (可选)

body

字符串

地址范围的 CIDR。

示例:创建默认安全组规则:JSON 请求

{
    "security_group_default_rule": {
        "ip_protocol": "TCP",
        "from_port": "80",
        "to_port": "80",
        "cidr": "10.10.10.0/24"
    }
}

响应

名称

入参

类型

描述

security_group_default_rule

body

对象

一个 `security_group_default_rule` 对象。

from_port

body

整数

范围起始端口。

id

body

字符串

默认安全组规则 ID。

ip_protocol

body

字符串

IP 协议。有效值为 ICMP、TCP 或 UDP。

ip_range

body

对象

一个 IP 范围对象。包含安全组规则 `cidr`。

ip_range.cidr (可选)

body

字符串

地址范围的 CIDR。

to_port

body

整数

范围结束端口。

示例:创建默认安全组规则:JSON 响应

{
    "security_group_default_rule": {
        "from_port": 80,
        "id": 1,
        "ip_protocol": "TCP",
        "ip_range": {
            "cidr": "10.10.10.0/24"
        },
        "to_port": 80
    }
}
DELETE
/os-security-group-default-rules/{security_group_default_rule_id}

删除默认安全组规则

删除一个安全组规则。

正常响应代码:204

错误响应代码:badRequest(400),unauthorized(401),forbidden(403),itemNotFound(404),gone(410),notImplemented(501)

请求

名称

入参

类型

描述

security_group_default_rule_id

路径

字符串

安全组规则的 UUID。

响应

Guest Agents (os-agents)

创建、列出、更新和删除 guest agent 构建。使用 guest agent 可以访问磁盘上的文件、配置网络或在 agent 运行时在 guest 中运行其他应用程序或脚本。此特定于 hypervisor 的扩展目前仅适用于 Xen 驱动程序。只有当底层服务提供商使用 Xen 驱动程序时,才可以使用 guest agent。

警告

这些 API 仅适用于 Xen 虚拟驱动程序,该驱动程序在 20.0.0 (Train) 版本中已弃用。它们在 22.0.0 (Victoria) 版本中被删除。

GET
/os-agents

列出 Agent 构建

列出 agent 构建。

正常响应代码:200

错误响应代码:unauthorized(401),forbidden(403),gone(410)

请求

名称

入参

类型

描述

hypervisor (可选)

查询

字符串

按 hypervisor 类型过滤响应。

响应

名称

入参

类型

描述

agents

body

数组

guest agent 对象的列表。

agent_id

body

整数

agent ID。

architecture

body

字符串

CPU 架构的名称。

管理程序

body

字符串

agent 的 hypervisor 类型。目前仅支持 `xen`。

md5hash

body

字符串

MD5 散列。

os

body

字符串

操作系统的名称。

url

body

字符串

与 agent 关联的 URL。

版本

body

字符串

版本。

示例:列出 Agent 构建:JSON 响应

{
    "agents": [
        {
            "agent_id": 1,
            "architecture": "x86",
            "hypervisor": "xen",
            "md5hash": "add6bb58e139be103324d04d82d8f545",
            "os": "os",
            "url": "http://example.com/path/to/resource",
            "version": "8.0"
        }
    ]
}
POST
/os-agents

创建 Agent 构建

创建一个 agent 构建。

正常响应代码:200

错误响应代码:badRequest(400),unauthorized(401),forbidden(403),conflict(409),gone(410)

请求

名称

入参

类型

描述

agent

body

对象

guest agent 对象。

管理程序

body

字符串

agent 的 hypervisor 类型。目前仅支持 `xen`。

os

body

字符串

操作系统的名称。

architecture

body

字符串

CPU 架构的名称。

版本

body

字符串

版本。

md5hash

body

字符串

MD5 散列。

url

body

字符串

与 agent 关联的 URL。

示例:创建 Agent 构建:JSON 请求

{
    "agent": {
        "hypervisor": "xen",
        "os": "os",
        "architecture": "x86",
        "version": "8.0",
        "md5hash": "add6bb58e139be103324d04d82d8f545",
        "url": "http://example.com/path/to/resource"
    }
}

响应

名称

入参

类型

描述

agent

body

对象

guest agent 对象。

agent_id

body

整数

agent ID。

architecture

body

字符串

CPU 架构的名称。

管理程序

body

字符串

agent 的 hypervisor 类型。目前仅支持 `xen`。

md5hash

body

字符串

MD5 散列。

os

body

字符串

操作系统的名称。

url

body

字符串

与 agent 关联的 URL。

版本

body

字符串

版本。

示例:创建 Agent 构建:JSON 响应

{
    "agent": {
        "agent_id": 1,
        "architecture": "x86",
        "hypervisor": "xen",
        "md5hash": "add6bb58e139be103324d04d82d8f545",
        "os": "os",
        "url": "http://example.com/path/to/resource",
        "version": "8.0"
    }
}
PUT
/os-agents/{agent_build_id}

更新 Agent 构建

更新一个 agent 构建。

正常响应代码:200

错误响应代码:badRequest(400),unauthorized(401),forbidden(403),itemNotFound(404),gone(410)

请求

名称

入参

类型

描述

agent_build_id

路径

字符串

agent 构建的 ID。

para

body

对象

参数对象。

url

body

字符串

与 agent 关联的 URL。

md5hash

body

字符串

MD5 散列。

版本

body

字符串

版本。

示例:更新 Agent 构建:JSON 请求

{
    "para": {
        "url": "http://example.com/path/to/resource",
        "md5hash": "add6bb58e139be103324d04d82d8f545",
        "version": "7.0"
    }
}

响应

名称

入参

类型

描述

agent

body

对象

guest agent 对象。

agent_id

body

字符串

agent ID。(这是 API 的一个 bug,它应该是一个整数类型,与 agent 创建和列表响应一致。这将在未来的 microversion 中修复。)

md5hash

body

字符串

MD5 散列。

url

body

字符串

与 agent 关联的 URL。

版本

body

字符串

版本。

示例:更新 Agent 构建:JSON 响应

{
    "agent": {
        "agent_id": "1",
        "md5hash": "add6bb58e139be103324d04d82d8f545",
        "url": "http://example.com/path/to/resource",
        "version": "7.0"
    }
}
DELETE
/os-agents/{agent_build_id}

删除 Agent 构建

删除一个现有的 agent 构建。

正常响应代码:200

错误响应代码:badRequest(400),unauthorized(401),forbidden(403),itemNotFound(404),gone(410)

请求

名称

入参

类型

描述

agent_build_id

路径

字符串

agent 构建的 ID。

响应

成功的 DELETE 查询没有响应正文内容

POST
/servers/{server_id}/action

获取 RDP 控制台 (os-getRDPConsole Action)

获取服务器的 RDP 控制台。

警告

与 HyperV 驱动程序一起,此操作已在 Nova 29.0.0 (caracal) 版本中删除。

唯一支持的连接类型是 `rdp-html5`。`type` 参数应设置为 `rdp-html5`。

在请求体中指定 `os-getRDPConsole` 操作。

正常响应代码:200

错误响应代码:badRequest(400)、unauthorized(401)、forbidden(403)、itemNotFound(404)、conflict(409)、notImplemented(501)

请求

名称

入参

类型

描述

server_id

路径

字符串

服务器的 UUID。

os-getRDPConsole

body

对象

操作。

type

body

字符串

RDP 控制台的类型。唯一有效的值是 `rdp-html5`。

示例:获取 RDP 控制台 (os-getRDPConsole Action)

{
    "os-getRDPConsole": {
        "type": "rdp-html5"
    }
}

响应

名称

入参

类型

描述

console

body

对象

远程控制台对象。

type

body

字符串

RDP 控制台的类型。唯一有效的值是 `rdp-html5`。

url

body

字符串

用于连接到 RDP 控制台的 URL。

示例:获取 RDP 控制台 (os-getRDPConsole Action)

{
    "console": {
        "type": "rdp-html5",
        "url": "http://127.0.0.1:6083/?token=191996c3-7b0f-42f3-95a7-f1839f2da6ed"
    }
}