REST API 版本历史

本文档记录了每次微版本变更对 REST API 所做的更改。每个版本的描述都应详细,包含足够的信息,以便在用户文档中使用。

2.1

这是 v2.1 API 的初始版本,它支持微版本。从 REST API 用户的角度来看,V2.1 API 与 v2.0 几乎完全相同,只是具有更严格的输入验证。

用户可以在 API 请求中指定一个 header

X-OpenStack-Nova-API-Version: <version>

其中 <version> 是此 API 的任何有效 API 版本。

如果未指定版本,则 API 将表现得好像请求了 v2.1 版本。

2.2

添加了 Keypair 类型。

用户可以在 os-keypairs 插件中请求创建特定“类型”的密钥对(sshx509)。

如果未指定密钥对类型,则将创建默认的 ssh 类型的密钥对。

os-keypairs 创建方法的状态码从 200 修正为 201

os-keypairs 删除方法的状态码从 202 修正为 204

2.3 (Kilo 中的最大版本)

os-extended-server-attributes 中暴露了额外的属性:reservation_idlaunch_indexramdisk_idkernel_idhostnameroot_device_nameuserdata

os-extended-volumes 中暴露了 delete_on_termination 用于 volumes_attached

此更改是为将 EC2 API 提取到独立服务而必需的。它暴露了 Nova API 中目前缺失的必要属性。添加有关独立 EC2 API 的信息,以减少对 Nova 数据库的访问。

2.4

os-fixed-ips API 扩展中显示 FixedIP 对象的 reserved 状态。该扩展允许用户 reserveunreserve 固定 IP,但 show 方法不会报告当前状态。

2.5

在版本 2.5 之前,命令 nova list --ip6 xxx 会为非管理员返回所有服务器,因为筛选选项会被静默丢弃。然而,没有理由将 ip6 与 ip 区分对待,所以我们只是将此选项添加到允许列表中。

2.6

添加了用于获取远程控制台的新 API

POST /servers/<uuid>/remote-consoles
{
  "remote_console": {
    "protocol": ["vnc"|"rdp"|"serial"|"spice"],
    "type": ["novnc"|"xpvnc"|"rdp-html5"|"spice-html5"|"serial"]
  }
}

示例响应

{
  "remote_console": {
    "protocol": "vnc",
    "type": "novnc",
    "url": "http://example.com:6080/vnc_auto.html?path=%3Ftoken%3DXYZ"
  }
}

旧的 API os-getVNCConsoleos-getSPICEConsoleos-getSerialConsoleos-getRDPConsole 已被删除。

2.7

在将租户访问权限添加到 flavor 之前,检查 flavor 的 is_public 属性。使用 HTTPConflict 错误拒绝请求。

2.8

为远程控制台添加 mks 协议和 webmks 类型。

2.9

在详细视图、更新和重建操作中添加一个新的 locked 属性。locked 如果当前有任何人持有服务器上的锁,则为 true,否则为 false

2.10

os-keypairs 插件添加了 user_id 参数,以及创建操作的请求体中的新属性。

管理员将能够列出、获取细节和删除属于其他用户的密钥对,以及代表其用户创建新的密钥对。

2.11

os-services 中暴露了 forced_down 属性。添加了通过调用更新来更改 forced_down 属性的能力。

2.12 (Liberty 中的最大版本)

os-virtual-interfaces 中暴露了 VIF net_id 属性。用户将能够获取虚拟接口列表中的虚拟接口 net_id,并确定虚拟接口连接到哪个网络。

2.13

project_iduser_id 信息添加到 os-server-groups API 响应数据中。

2.14

从服务器的 evacuate 操作中删除 onSharedStorage 参数。Nova 将自动检测实例是否位于共享存储上。

adminPass 已从响应体中删除。用户可以使用服务器的 os-server-password 操作获取密码。

2.15

从这个版本的 API 开始,用户还可以选择“软亲和性”和“软反亲和性”规则用于服务器组。

2.16

暴露了服务器/详细信息和服务器/{server_id} 的新 host_status 属性。查询服务器时,能够获取 nova-compute 状态。默认情况下,这仅暴露给云管理员。

2.17

添加了一个新的 API,用于在实例中触发崩溃转储。实例中的不同操作系统可能需要不同的配置才能触发崩溃转储。

2.18

建立了一组路由,使 project_id 在 v2.1 中成为可选的构造。

2.19

允许用户设置和获取服务器描述。用户可以在创建、重建或更新服务器时设置描述,并在服务器详细信息中获取描述。

2.20

从这个版本的 API 开始,用户可以分离和附加处于 shelvedshelved_offloaded 状态的实例的卷。

2.21

os-instance-actions API 现在返回已删除实例的信息。

2.22

添加了一个新的资源,servers:migrations。添加了一个强制实时迁移完成的新 API

POST /servers/<uuid>/migrations/<id>/action
{
  "force_complete": null
}

2.23

从这个版本的 API 开始,用户可以通过索引 API 获取迁移摘要列表,或者通过 get API 获取特定迁移的信息。为旧的 /os-migrations API 添加 migration_type,并在迁移是正在进行的实时迁移时,为 /servers/{uuid}/migrations/{id} 添加 ref 链接。

2.24

一个新的 API 调用,用于取消正在运行的实时迁移

DELETE /servers/<uuid>/migrations/<id>

2.25 (Mitaka 中的最大版本)

修改 os-migrateLive 的输入参数。block_migration 字段现在支持 auto 值,并且删除了 disk_over_commit 标志。

2.26

添加了对服务器标签的新支持。

用户可以通过 os-server-tags 插件创建、更新、删除或检查服务器的简单字符串标签。

标签具有以下模式限制

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

  • 标签是非空字符串。

  • ‘/’ 不允许出现在标签名称中

  • 逗号不允许出现在标签名称中,以便简化指定标签列表的请求

  • 允许其他所有字符出现在标签名称中

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

这些操作的资源点是 /servers/<server_id>/tags

用户可以通过向 /servers/<server_id>/tags/<tag> 发送 PUT 请求,向服务器添加单个标签。

其中 <tag> 是任何有效的标签名称。

用户可以通过向 /servers/<server_id>/tags 发送 PUT 请求,替换服务器的所有当前标签为新的标签集。必须在请求体中指定新的标签集。此集合必须在列表 tags 中。

用户可以通过向 /servers/<server_id>/tags/<tag> 发送 DELETE 请求,从服务器中删除指定的标签。

其中 <tag> 是用户想要删除的标签名称。

用户可以通过向 /servers/<server_id>/tags 发送 DELETE 请求,从服务器中删除所有标签。

用户可以通过向 /servers/<server_id> 发送 GET 请求,获取服务器的标签集以及有关服务器的信息。

请求返回包含有关指定服务器的信息的字典,包括列表 tags

{
    'id': {server_id},
    ...
    'tags': ['foo', 'bar', 'baz']
}

用户可以通过向 /servers/<server_id>/tags 发送 GET 请求,仅获取服务器的标签集。

响应

{
   'tags': ['foo', 'bar', 'baz']
}

用户可以通过向 /servers/{server_id}/tags/{tag} 发送 GET 请求,检查标签是否存在于服务器上。

请求在服务器上存在标签时返回 204 No Content,如果服务器上不存在标签则返回 404 Not Found

用户可以在 GET /servers 请求中通过新的过滤器筛选服务器

  • tags

  • tags-any

  • not-tags

  • not-tags-any

这些过滤器可以组合。此外,用户可以为每个过滤器使用多个字符串标签。在这种情况下,每个过滤器的字符串标签必须用逗号分隔。例如

GET /servers?tags=red&tags-any=green,orange

2.27

添加了对在 微版本规范 中描述的新形式的微版本标头的支持。同时支持原始形式的标头和新形式的标头。

2.28

Nova API hypervisor.cpu_info 更改为 JSON 对象,不再是字符串。

从这个版本的 API 开始,通过向 /v2.1/os-hypervisors/{hypervisor_id} 发送 GET 请求,hypervisor 的 cpu_info 字段将作为 JSON 对象(而不是字符串)返回。

2.29

更新了 evacuate 操作的 POST 请求体,以包含可选的 force 布尔字段,默认值为 False。同时,更改了在提供 host 字符串字段时 evacuate 操作的行为,除非设置了 force 属性,否则会调用 nova 调度器来验证提供的 host。

2.30

更新了 live-migrate 操作的 POST 请求体,以包含可选的 force 布尔字段,默认值为 False。同时,更改了在提供 host 字符串字段时 live-migrate 操作的行为,除非设置了 force 属性,否则会调用 nova 调度器来验证提供的 host。

2.31

修复了 os-console-auth-tokens,使其返回所有类型 token 的连接信息,而不仅仅是 RDP。

2.32

在服务器启动请求体中的 ‘networks’ 项目中添加了一个可选的、任意的 ‘tag’ 项目。此外,block_device_mapping_v2 数组中的每个项目也可以有一个可选的、任意的 ‘tag’ 项目。这些标签用于标识虚拟设备元数据,如元数据 API 和 config drive 中所暴露的。例如,在虚拟 PCI 总线上标记为 ‘nic1’ 的网络接口将在元数据中显示其总线 (PCI)、总线地址 (例如:0000:00:02.0)、MAC 地址和标签 (‘nic1’)。

注意

一个 bug 导致从版本 2.37 开始,networks 的 tag 属性不再被接受,而 block_device_mapping_v2 从版本 2.33 开始也不再被接受。换句话说,networks 只能在版本 2.32 到 2.36 之间(包括 2.32 和 2.36)被标记,block 设备仅在版本 2.32 中被标记。从版本 2.42 开始,tag 属性已恢复,networks 和 block 设备都可以再次被标记。

2.33

支持通过接受 GET API 请求中的 limit 和 marker 来实现 hypervisor 的分页。

GET /v2.1/{tenant_id}/os-hypervisors?marker={hypervisor_id}&limit={limit}

在服务器创建时进行设备标记的上下文中,2.33 还从 block_device_mapping_v2 中删除了 tag 属性。这是一个在 2.42 中修复的 bug,在该版本中重新引入了 tag 属性。

2.34

在 live-migration 实际开始之前,os-migrateLive 中的检查现在在后台进行。如果 pre-live-migration 检查失败,os-migrateLive 不会抛出 400 Bad Request 错误。

2.35

为 keypairs 添加了分页支持。

可选参数 ‘limit’ 和 ‘marker’ 已添加到 GET /os-keypairs 请求中,默认 sort_key 已更改为 ‘name’ 字段,按 ASC 顺序排列,通用的请求格式为

GET /os-keypairs?limit={limit}&marker={kp_name}

2.36

此版本中,所有代理到其他服务的 API 以及 fping API 都已被弃用。这些 API 将在 Microversion 2.36 中返回 404。API 中也移除了与网络相关的配额和限制。弃用的 API 端点如下

'/images'
'/os-networks'
'/os-tenant-networks'
'/os-fixed-ips'
'/os-floating-ips'
'/os-floating-ips-bulk'
'/os-floating-ip-pools'
'/os-floating-ip-dns'
'/os-security-groups'
'/os-security-group-rules'
'/os-security-group-default-rules'
'/os-volumes'
'/os-snapshots'
'/os-baremetal-nodes'
'/os-fping'

注意

此 microversion 中引入了一个 回归,破坏了 PUT /os-quota-sets API 中的 force 参数。需要应用修复程序才能恢复此功能。

版本 18.0.0 中已更改: os-fping API 在 18.0.0 (Rocky) 版本中已完全删除。在较新的部署中,无论请求的 microversion 如何,API 都将返回 HTTP 410 (Gone)。

版本 21.0.0 中已更改: os-security-group-default-rules API 在 21.0.0 (Ussuri) 版本中已完全删除。在较新的部署中,无论请求的 microversion 如何,API 都将返回 HTTP 410 (Gone)。

版本 21.0.0 中已更改: os-networks API 在 21.0.0 (Ussuri) 版本中被部分删除。在较新的部署中,API 的某些端点将返回 HTTP 410 (Gone),无论请求的 microversion 如何。

版本 21.0.0 中已更改: os-tenant-networks API 在 21.0.0 (Ussuri) 版本中被部分删除。在较新的部署中,API 的某些端点将返回 HTTP 410 (Gone),无论请求的 microversion 如何。

2.37

添加了对网络自动分配的支持,也称为“Get Me a Network”。使用此 microversion,在请求创建新服务器(或服务器)时,请求体中的 server 部分中的 networks 条目是必需的。请求中的 networks 对象可以是列表或具有值的枚举

  1. none,表示不会为创建的服务器分配任何网络。

  2. auto,表示将使用已经可用于项目的网络,或者如果不存在,将为该项目自动创建一个网络。对于项目,自动网络分配仅发生一次。随后使用 auto 的请求将重用先前为该项目分配的网络。

此外,服务器创建请求中的 networks 对象中的 uuid 字段现在严格要求采用 UUID 格式。

在服务器创建时进行设备标记的上下文中,2.37 还从 networks 中删除了 tag 属性。这是一个在 2.42 中修复的 bug,在该版本中重新引入了 tag 属性。

2.38 (Newton 中的最大版本)

在版本 2.38 之前,命令 nova list --status invalid_status 对于非管理员用户返回空列表,对于管理员用户返回 500 InternalServerError。由于已经定义了足够的 status,任何无效的 status 都应该被拒绝。从这个版本的 API 开始,管理员和非管理员用户都会在传递无效的 status 给 nova list 命令时收到 400 HTTPBadRequest 错误。

2.39

弃用了只是 Glance API 操作图像元数据的图像元数据代理 API。还移除了 Nova metadata 配额的额外配额执行(移除了 Nova 中 ‘createImage’ 和 ‘createBackup’ 操作的配额检查)。在此版本之后,应使用 Glance 配置选项 image_property_quota 来控制图像元数据的配额。还移除了 maxImageMeta 字段从 os-limits API 响应中。

2.40

可选查询参数 limitmarker 已添加到 os-simple-tenant-usage 端点以进行分页。如果未提供 limit,将使用可配置的 max_limit,当前默认值为 1000。

GET /os-simple-tenant-usage?limit={limit}&marker={instance_uuid}
GET /os-simple-tenant-usage/{tenant_id}?limit={limit}&marker={instance_uuid}

当实例数量超过 limit 时,租户的使用情况统计信息可能会跨越多个页面,并且 API 消费者需要将聚合结果拼接在一起,如果他们仍然希望针对特定时间窗口中的所有实例获得总数,按租户分组。

较旧版本的 os-simple-tenant-usage 端点不会接受这些新的分页查询参数,但它们将开始静默地限制为 max_limit,以鼓励采用此新的 microversion,并避免在存在数千个实例时出现类似 DoS 的使用请求。

2.41

聚合体的 ‘uuid’ 属性现在从对 /os-aggregates 端点的调用中返回。此属性在创建聚合体时自动生成。os-aggregates API 资源端点仍然是仅管理员 API。

2.42 (Ocata 中的最大版本)

在服务器创建时进行设备标记的上下文中,一个 bug 导致从版本 2.37 开始,networks 的 tag 属性不再被接受,而 block_device_mapping_v2 从版本 2.33 开始也不再被接受。Microversion 2.42 恢复了 tag 参数到 networks 和 block_device_mapping_v2,允许再次标记 networks 和 block 设备。

2.43

从 microversion 2.43 开始,os-hosts API 已被弃用。使用 microversion >= 2.43 发出的请求将导致 404 错误。要列出和显示 host 详细信息,请使用 os-hypervisors API。要启用或禁用服务,请使用 os-services API。对于 shutdownstartuprebootmaintenance_mode 操作,没有替代方案,因为这些是系统级操作,不应由计算服务控制。

2.44

以下被认为是 Neutron 网络 API 代理的 API 已被弃用,并且将在新的 Microversion 中返回 404 错误

POST /servers/{server_uuid}/action
{
    "addFixedIp": {...}
}

POST /servers/{server_uuid}/action
{
    "removeFixedIp": {...}
}

POST /servers/{server_uuid}/action
{
    "addFloatingIp": {...}
}

POST /servers/{server_uuid}/action
{
    "removeFloatingIp": {...}
}

这些服务器操作可以通过直接调用 Neutron API 来替换。

nova-network 特定的 API 用于查询服务器的接口已被弃用

GET /servers/{server_uuid}/os-virtual-interfaces

要查询特定服务器的附加 neutron 接口,可以使用 API GET /servers/{server_uuid}/os-interface

2.45

createImagecreateBackup 服务器操作 API 不再在响应中返回 Location 头部,而是返回响应体中的 json 字典,其中包含 image_id 键和 uuid 值。

2.46

为每个入站请求创建的 request_id 现在在 X-OpenStack-Request-ID 中返回,除了 X-Compute-Request-ID,以与 OpenStack 的其余部分保持一致。这是一个仅用于信号的 microversion,因为这些头部设置发生在 microversion 处理之前。

2.47

当显示服务器详细信息时,替换 flavor 名称/ref 为来自嵌入式 flavor 对象的实际 flavor 详细信息。使用 microversion >= 2.47 发出的请求将不再返回 flavor ID/链接,而是返回 flavor 详细信息的一个子集。如果用户被策略阻止索引 extra-specs,则 flavor 信息中将不包含 extra_specs 字段。

2.48

在版本 2.48 之前,VM 诊断响应只是每个 hypervisor 返回的数据“blob”。从这个版本开始,VM 诊断响应是标准化的。它有一组每个 hypervisor 都会尝试填充的字段。如果 hypervisor 驱动程序无法提供特定字段,则该字段将报告为 ‘None’。

2.49

从版本 2.32 中引入并在 2.42 中修复的服务器创建时设备角色标记开始,microversion 2.49 允许使用可选的 tag 参数附加网络接口和卷。此标签用于标识 guest 中的虚拟设备,并在元数据 API 中公开。由于无法在 guest 运行时更新 config drive,因此它仅包含启动时标记的设备的元数据。在实例运行时对设备进行的任何更改 - 无论是分离标记的设备还是执行标记的设备附加 - 都不会反映在 config drive 中。

对于 shelved-offloaded 实例,不支持标记的卷附加。

2.50

在 GET 和 PUT os-quota-class-sets API 响应体中公开了 server_groupsserver_group_members 键。与网络相关的配额已从 os-quota-class 中过滤掉。以下配额被过滤掉,并且从这个微版本开始在 os-quota-class-sets API 中不可用。

  • “fixed_ips”

  • “floating_ips”

  • “networks”,

  • “security_group_rules”

  • “security_groups”

2.51

2.51 微版本有两个变更

  • volume-extended 事件名称添加到 os-server-external-events API。当扩展附加卷的大小时,块存储服务将使用它。这会向计算服务发出信号,以便对计算主机或管理程序执行任何必要的操作,以调整新的卷块设备大小。

  • GET /servers/{server_id}/os-instance-actions/{request_id} API 的响应体中公开 events 字段。这对于 API 用户监控给定服务器实例的卷扩展操作何时完成非常有用。默认情况下,只有具有管理员角色的用户才能查看事件 traceback 详细信息。

2.52

添加了在创建服务器时应用标签的支持。标签模式与 2.26 微版本中的标签模式相同。

2.53 (Pike 中的最大版本)

os-services

现在服务通过 uuid 而不是数据库 id 来标识,以确保跨单元的唯一性。此微版本带来了以下变更

  • GET /os-services 在响应的 id 字段中返回一个 uuid

  • DELETE /os-services/{service_uuid} 需要路径中的服务 uuid

  • 以下 API 已被 PUT /os-services/{service_uuid}/ 取代

    • PUT /os-services/disable

    • PUT /os-services/disable-log-reason

    • PUT /os-services/enable

    • PUT /os-services/force-down

    PUT /os-services/{service_uuid} 在请求体中接受以下字段

    • status - 可以是“enabled”或“disabled”,用于启用或禁用给定的服务

    • disabled_reason - 与 status=”disabled”一起指定,以记录禁用服务的原因

    • forced_down - 布尔值,指示服务是否被外部服务强制关闭

  • PUT /os-services/{service_uuid} 现在将返回类似于 GET 响应的完整服务资源表示

os-hypervisors

现在通过 uuid 而不是数据库 id 来标识管理程序,以确保跨单元的唯一性。此微版本带来了以下变更

  • GET /os-hypervisors/{hypervisor_hostname_pattern}/search 已弃用,并使用 hypervisor_hostname_pattern 查询参数替换为 GET /os-hypervisorsGET /os-hypervisors/detail API。不支持使用 hypervisor_hostname_pattern 进行分页。

  • GET /os-hypervisors/{hypervisor_hostname_pattern}/servers 已弃用,并使用 with_servers 查询参数替换为 GET /os-hypervisorsGET /os-hypervisors/detail API。

  • GET /os-hypervisors/{hypervisor_id} 支持 with_servers 查询参数,以在响应中包含托管服务器的详细信息。

  • GET /os-hypervisors/{hypervisor_id}GET /os-hypervisors/{hypervisor_id}/uptime API 现在接受路径参数 {hypervisor_id} 的 uuid 值。

  • GET /os-hypervisorsGET /os-hypervisors/detail API 现在将使用 uuid 标记进行跨单元分页。

  • 以下 API 将在响应中的 hypervisor id 和可选 service id 字段中返回 uuid 值

    • GET /os-hypervisors

    • GET /os-hypervisors/detail

    • GET /os-hypervisors/{hypervisor_id}

    • GET /os-hypervisors/{hypervisor_id}/uptime

2.54

允许用户在重建时设置服务器密钥对。

2.55

在以下 API 中为 flavor 资源添加了 description 字段

  • GET /flavors

  • GET /flavors/detail

  • GET /flavors/{flavor_id}

  • POST /flavors

  • PUT /flavors/{flavor_id}

嵌入的 flavor 描述将不会包含在服务器表示中。

2.56

更新 migrate 操作的 POST 请求体,以包含可选的 host 字符串字段,默认值为 null。如果设置了 host,migrate 操作将使用 nova 调度器验证提供的 host,并将其用作迁移的目标地。

2.57

2.57 微版本做出了以下变更

  • 从服务器创建和重建 API 中删除了 personality 参数。

  • user_data 参数添加到服务器重建 API。

  • maxPersonalitymaxPersonalitySize 限制从 GET /limits API 响应中排除。

  • injected_filesinjected_file_content_bytesinjected_file_path_bytes 配额从 os-quota-setsos-quota-class-sets API 中删除。

2.58

为 os-instance-actions API 添加分页支持和 changes-since 过滤器。用户现在可以使用 limitmarker 对列出实例操作进行分页查询。用户还可以使用 changes-since 过滤器根据实例操作上次更新的时间过滤结果。

2.59

为迁移添加了分页支持,有四个变更

  • 为 os-migrations API 添加分页支持和 changes-since 过滤器。用户现在可以使用 limitmarker 对列出迁移进行分页查询。

  • 用户还可以使用 changes-since 过滤器根据迁移记录上次更新的时间过滤结果。

  • GET /os-migrationsGET /servers/{server_id}/migrations/{migration_id}GET /servers/{server_id}/migrations 现在将在响应中返回 uuid 值,以及迁移 id。

  • GET /os-migrations API 的查询参数模式不再允许其他属性。

2.60 (Queens 中的最大版本)

从 API 的这个版本开始,用户可以将 multiattach 能够的卷附加到多个实例。创建附加附件的 API 请求相同。所选的 virt 驱动程序和卷后端也必须支持此功能。

2.61

在 flavor API 响应中公开 flavor extra_specs。现在用户可以在 flavor API 中看到 flavor extra_specs,而无需调用 GET /flavors/{flavor_id}/os-extra_specs API。如果用户被策略阻止索引 extra_specs,则 extra_specs 字段将不会包含在 flavor 信息中。Flavor extra_specs 将包含在以下 API 的响应体中

  • GET /flavors/detail

  • GET /flavors/{flavor_id}

  • POST /flavors

  • PUT /flavors/{flavor_id}

2.62

为实例操作 GET /servers/{server_id}/os-instance-actions/{req_id} API 添加 host(主机名)和 hostId(一个混淆的哈希主机 id 字符串)字段。新添加的 host 字段的显示将通过策略规则 os_compute_api:os-instance-actions:events 进行控制,该策略规则与 events.traceback 字段使用的策略相同。如果用户被策略阻止,则只会显示 hostId

2.63

添加了 trusted_image_certificates 参数的支持,该参数用于定义可用于在图像签名验证和证书验证期间使用的受信任证书 ID 列表。该列表限制为最多 50 个 ID。请注意,trusted_image_certificates 不支持基于卷的服务器。

可以将 trusted_image_certificates 请求参数传递到服务器创建和重建 API

  • POST /servers

  • POST /servers/{server_id}/action (rebuild)

trusted_image_certificates 参数将在以下 API 的响应体中

  • GET /servers/detail

  • GET /servers/{server_id}

  • PUT /servers/{server_id}

  • POST /servers/{server_id}/action (rebuild)

2.64

启用用户在服务器组策略上定义策略规则,以满足更高级的策略要求。此微版本在服务器组 API 中带来了以下变更

  • 在 POST /os-server-groups 的请求中添加 policyrules 字段。 policy 表示策略的名称。 rules 字段(一个字典)可以应用于策略,目前仅支持 anti-affinity 策略的 max_server_per_host

  • policyrules 字段将在 POST、GET /os-server-groups API 和 GET /os-server-groups/{server_group_id} API 的响应体中返回。

  • 从 POST、GET /os-server-groups API 和 GET /os-server-groups/{server_group_id} API 的响应体中删除了 policiesmetadata 字段。

2.65 (Rocky 中的最大版本)

添加了对在 queuedpreparing 状态下中止实时迁移的支持,用于 API DELETE /servers/{server_id}/migrations/{migration_id}

2.66

可以将 changes-before 过滤器作为以下 API 的请求参数包含在内,以根据资源 updated_at 时间过滤之前或等于的更改

  • GET /servers

  • GET /servers/detail

  • GET /servers/{server_id}/os-instance-actions

  • GET /os-migrations

2.67

volume_type 参数添加到 block_device_mapping_v2,该参数可用于在创建服务器时指定 cinder volume_type

2.68

删除对强制实时迁移和撤离服务器操作的支持。

2.69

为部署中的基础设施故障等瞬态不可用情况,添加对返回最小结构的支持,用于 GET /serversGET /servers/detailGET /servers/{server_id}GET /os-services。从这个微版本开始,对于上述四个请求,来自基础设施下线部分的响应将缺少关键值,以提高其弹性。响应体将仅包含从API数据库中可用的下线单元信息中获得的最少信息集。有关更多信息,请参阅 处理下线单元

2.70

为卷附件和虚拟接口(端口)公开虚拟设备标签。为以下API的响应体添加了一个 tag 参数

  • GET /servers/{server_id}/os-volume_attachments (列表)

  • GET /servers/{server_id}/os-volume_attachments/{volume_id} (显示)

  • POST /servers/{server_id}/os-volume_attachments (附加)

端口

  • GET /servers/{server_id}/os-interface (列表)

  • GET /servers/{server_id}/os-interface/{port_id} (显示)

  • POST /servers/{server_id}/os-interface (附加)

2.71

服务器所属的服务器组将在以下API的响应体中以 server_groups 参数的形式提供

  • GET /servers/{server_id}

  • PUT /servers/{server_id}

  • POST /servers/{server_id}/action (rebuild)

2.72 (Stein最大版本)

API微版本2.72添加了对使用具有资源请求的neutron端口创建服务器的支持,例如具有 QoS最小带宽规则 的neutron端口。删除具有此类端口的服务器也已妥善处理,以及分离这些类型的端口。

API限制

  • 不支持使用具有QoS最小带宽规则的Neutron网络创建服务器。

  • 不支持附加具有QoS最小带宽规则的Neutron端口和网络。

  • 移动(调整大小、迁移、实时迁移、撤离、卸载后恢复)具有资源请求的端口的服务器尚未支持。

2.73

API微版本2.73添加了在锁定服务器时指定原因的支持,并通过 GET /servers/detailGET /servers/{server_id}PUT servers/{server_id}POST /servers/{server_id}/action(其中action是rebuild)公开此信息。它还支持在 GET /servers/detailGET /servers 中将 locked 作为筛选/排序参数。

2.74

API微版本2.74添加了对在 POST /servers 请求体中指定可选 host 和/或 hypervisor_hostname 参数的支持。这些参数请求特定的目标主机/节点来启动请求的服务器。这些参数与 zone:host:node 格式的特殊 availability_zone 相互排斥。与 zone:host:node 不同,host 和/或 hypervisor_hostname 参数仍然允许运行调度器过滤器。如果请求的主机/节点不可用或不合适,则会提前引发错误。还将有一个名为 compute:servers:create:requested_destination 的新策略。默认情况下,只有管理员可以指定它。

2.75

在API微版本2.75中进行了多次API清理

  • 查询字符串或请求体中未知参数的400错误响应。

  • 使服务器表示在GET、PUT和重建服务器API响应中保持一致。PUT /servers/{server_id}POST /servers/{server_id}/action {rebuild} API响应已修改为添加 GET /servers/{server_id} 返回的所有缺失字段。

  • 将flavor API中 swap 字段的默认返回值从空字符串更改为0(整数)。

  • 即使超visor上没有服务器,也始终在 GET /os-hypervisorsGET /os-hypervisors/detailGET /os-hypervisors/{hypervisor_id} API的响应中返回 servers 字段。

2.76

power-update 事件名称添加到 os-server-external-events API。可以通过 GET /servers/{server_id}/os-instance-actionsGET /servers/{server_id}/os-instance-actions/{request_id} 查看此事件导致的实例电源状态更改。

2.77

API微版本2.77添加了在卸载的已搁置服务器时指定可用区支持。

2.78

添加服务器子资源 topology 以显示服务器NUMA信息。

  • GET /servers/{server_id}/topology

默认行为可以通过以下两个新策略进行配置

  • compute:server:topology:index

  • compute:server:topology:host:index

2.79 (Train最大版本)

API微版本2.79添加了对在将卷附加到服务器时指定 delete_on_termination 字段的支持,以支持配置在销毁服务器时是否删除数据卷。此外,在显示附加卷时,delete_on_termination 已添加到GET响应中,并且 delete_on_termination 字段包含在附加卷时POST API响应体中。

受影响的API如下

  • POST /servers/{server_id}/os-volume_attachments

  • GET /servers/{server_id}/os-volume_attachments

  • GET /servers/{server_id}/os-volume_attachments/{volume_id}

2.80

微版本2.80更改了list migrations API和os-migrations API。

在以下API中公开 user_idproject_id 字段

  • GET /os-migrations

  • GET /servers/{server_id}/migrations

  • GET /servers/{server_id}/migrations/{migration_id}

GET /os-migrations API还将具有可选的 user_idproject_id 查询参数,用于按用户和/或项目筛选迁移,例如

  • GET /os-migrations?user_id=ef9d34b4-45d0-4530-871b-3fb535988394

  • GET /os-migrations?project_id=011ee9f4-8f16-4c38-8633-a254d420fd54

  • GET /os-migrations?user_id=ef9d34b4-45d0-4530-871b-3fb535988394&project_id=011ee9f4-8f16-4c38-8633-a254d420fd54

2.81

通过聚合添加 POST /os-aggregates/{aggregate_id}/images,添加对镜像缓存管理的支持。

2.82

accelerator-request-bound 事件添加到 os-server-external-events API。Cyborg通过此事件发送的实例电源状态更改可以通过 GET /servers/{server_id}/os-instance-actionsGET /servers/{server_id}/os-instance-actions/{request_id} 查看。

2.83

允许非管理员使用以下筛选器参数 GET /servers/detailGET /servers

  • availability_zone

  • config_drive

  • key_name

  • created_at

  • launched_at

  • terminated_at

  • power_state

  • task_state

  • vm_state

  • progress

  • user_id

2.84

GET /servers/{server_id}/os-instance-actions/{request_id} API为每个失败事件返回一个 details 参数,其中包含故障消息,类似于服务器 fault.message 参数在状态为 ERRORGET /servers/{server_id} 中。

2.85

添加了在 PUT /servers/{server_id}/os-volume_attachments/{volume_id} API中指定 delete_on_termination 的能力,从而允许更改实例删除时卷删除的行为。

2.86

添加对已知额外规格验证的支持。默认情况下,这针对以下API启用

  • POST /flavors/{flavor_id}/os-extra_specs

  • PUT /flavors/{flavor_id}/os-extra_specs/{id}

验证仅用于识别的额外规格命名空间,当前为:accelaggregate_instance_extra_specscapabilitieshwhw_rnghw_videoospci_passthroughpowervmquotaresourcestraitvmware

2.87 (Ussuri和Victoria最大版本)

添加了对在计算主机报告 COMPUTE_RESCUE_BFV 功能特性时,从卷启动实例救援的支持。

2.88 (Wallaby最大版本)

以下字段不再包含在 GET /os-hypervisors/detailGET /os-hypervisors/{hypervisor_id} API的响应中

  • current_workload

  • cpu_info

  • vcpus

  • vcpus_used

  • free_disk_gb

  • local_gb

  • local_gb_used

  • disk_available_least

  • free_ram_mb

  • memory_mb

  • memory_mb_used

  • running_vms

这些字段已被删除,因为它们提供的信息经常具有误导性或完全错误,并且许多可以更好地从placement查询。

此外,GET /os-hypervisors/statistics API,它提供了仅包含上述字段的摘要视图,已被完全删除,并且在微版本2.88或更高版本中将引发HTTP 404错误。

最后,GET /os-hypervisors/{hypervisor}/uptime API,它提供了与 GET /os-hypervisors/detailGET /os-hypervisors/{hypervisor_id} API类似但带有附加 uptime 字段的响应,已被删除,以支持在主要的 GET /os-hypervisors/detailGET /os-hypervisors/{hypervisor_id} API中包含此字段。

2.89

attachment_idbdm_uuid 现在包含在 GET /servers/{server_id}/os-volume_attachmentsGET /servers/{server_id}/os-volume_attachments/{volume_id} 的响应中。此外,id 字段已从响应中删除,因为它重复了 volumeId 字段。

2.90 (Xena和Yoga最大版本)

POST /servers(创建服务器)、PUT /servers/{id}(更新服务器)和 POST /servers/{server_id}/action (rebuild)(重建服务器)API现在接受一个 hostname 参数,允许用户在创建实例时配置主机名。指定后,这将替换基于显示名称生成的自动生成的主机名。

此外,所有服务器响应的 OS-EXT-SRV-ATTR:hostname 字段现在对所有用户可见。以前这是一个仅管理员字段。

2.91

添加了对将实例救援到特定主机的支持。

添加了对将服务器固定到可用区或从任何可用区取消固定服务器的支持。

2.92

现在,POST /os-keypairs API 不允许生成密钥对,并允许使用新的安全字符,特别是 ‘@’ 和 ‘.’(点字符)。

2.93 (Zed 中的最大版本)

添加了基于卷的服务器重建的支持。最终用户将在重建命令中提供镜像,它将使用新镜像重建卷,类似于重建临时磁盘的结果。

2.94

现在允许将完全限定域名 (FQDN) 作为 hostname 参数传递给 POST /servers(创建服务器)、PUT /servers/{id}(更新服务器)和 POST /servers/{server_id}/action (rebuild)(重建服务器)API。

2.95 (2023.1 Antelope 和 2023.2 Bobcat 中的最大版本)

任何撤离的实例现在都将在目标位置停止。这需要最低 nova 版本 27.0.0,OpenStack 版本 2023.1 Antelope。操作员仍然可以使用之前的微版本以获得旧行为。

2.96 (2024.1 Caracal 和 2024.2 Dalmatian 中的最大版本)

现在,server showserver list --longserver updateserver rebuild 响应现在也包含固定的可用区。

2.97

此微版本引入了新的 Manila Share Attachment 功能,简化了将 Manila 文件共享附加到实例并挂载的过程。它包含一组新的 API,以便轻松添加、删除、列出和显示共享。有关详细信息和使用说明,请参阅 manage-shares 文档

2.98

添加了支持将镜像属性作为新的 properties 子键包含在现有 image 键下的响应中,用于 GET /servers/{server_id}(服务器显示)、GET /servers/detail(列出服务器 –long)、PUT /servers/{server_id}(服务器更新)以及 POST /server/{server_id}/action(服务器重建)API 响应的重建情况。

2.99

spice-direct 控制台类型添加到 spice 控制台协议。此外,还将 tls_port 字段添加到从 GET /os-console-auth-tokens/{console_token} 返回的值中,并且不再允许随机查询字符串参数。

2.100 (2025.1 Epoxy 和 2025.2 Flamingo 中的最大版本)

GET /servers/{server_id}GET /servers/detailPUT /servers/{server_id}POST /server/{server_id}/action(重建)响应现在包含在服务器创建期间提供的调度器提示。