支持 Nova 插件的 Nova 微版本

https://blueprints.launchpad.net/searchlight/+spec/support-microversion-for-nova

此功能添加了对带有微版本的 Nova API 的支持。这将支持 Searchlight 提供 Nova API 新微版本中添加的字段。

问题描述

Nova 已经弃用了 v2.0 API,并开始从代码库中删除相关代码。Nova v2.1 API 采用微版本机制设计,即当向特定资源添加新的数据字段时,通过向相关 API 添加新的微版本来确保向后兼容性 1

例如,在 2 中,为服务器添加了一个新的字段 description,用户可以使用它来为服务器提供一个简单的字符串描述,如果我们也能够提供此字段将会非常有用。

每个微版本所做的更改可以在 3 中找到。

提议的变更

目前,当我们初始化 nova 客户端时,它被硬编码为使用 version=2,这在两个方面是不好的

1. v2.0 nova API 已被弃用,并且代码将在 Newton 中被删除 4

  1. 如果被硬编码,则无法支持微版本。

在此 BP 中,将在配置文件中添加一个新的配置选项 compute_api_version。 当我们初始化 nova 客户端时,此配置选项将被用作 API 版本的版本。 此 BP 的设计中,此配置选项的默认值将被设置为 2.1,并且可以根据 Nova API 的更改在未来进行修改。

支持的数据字段也将根据提供的微版本进行更新。

备选方案

将版本硬编码为 2.1,因为 2.0 很快将无法使用。 但无法支持新添加的数据字段。