将 CLI 默认 API 版本更改为最新的 ironic API 版本

https://bugs.launchpad.net/python-ironicclient/+bug/1671145

在使用 ironic CLI 或 OpenStack CLI (OSC) 时,默认使用 ironic API 版本 1.9。 本规范建议将两个 CLI 中默认使用的 ironic API 版本提高到最新的兼容 API 版本。

问题描述

目前,ironic CLI 和 baremetal OSC 插件默认使用 API 版本,该版本可以追溯到 Liberty 发布版本。 [1]

这意味着,任何未使用 CLI 并未指定版本的新用户,只能使用撰写本文时几乎两年前的功能。 这限制了新功能的发现性和可用性。

此外,如果我们将来提高 API 中支持的最低 API 版本,我们无论如何都需要提高最低 CLI 版本。

提议的变更

  • 在 Pike 周期中,当用户运行任一 CLI 而未指定版本时,将打印一条警告消息,指示 CLI 将很快默认使用最新的兼容 API 版本。 针对 OSC 插件的建议措辞如下

    您正在使用 OpenStack CLI baremetal (ironic) 插件的默认 API 版本。 当前为 API 版本 1.9。 在未来,默认版本将是 API 和 CLI 都理解的最新 API 版本。 您可以通过传递带有所需版本的 –os-baremetal-api-version 参数或使用 OS_BAREMETAL_API_VERSION 环境变量来保留当前行为。

    将使用类似的措辞来描述 ironic 工具

    您正在使用 ironic CLI 工具的默认 API 版本。 当前为 API 版本 1.9。 在未来,默认版本将是 API 和 CLI 都理解的最新 API 版本。 您可以通过传递带有所需版本的 –ironic-api-version 参数或使用 IRONIC_API_VERSION 环境变量来保留当前行为。

    如果用户希望继续使用 API 版本 1.9,他们应在命令行中明确指定。

  • 在 Queens 周期中,CLI 使用的默认 API 版本将更改为与 CLI 兼容的 API 的最新版本。 如果仅指定主版本(例如,--os-baremetal-api-version=1),将使用该主版本的最新兼容版本(例如,如果这是最新的 1.XX 版本,则为 1.32)。

    最新的兼容版本将通过 CLI 和 ironic 之间的版本协商确定。 CLI 将首先向 ironic API 的根端点发出请求,该请求返回 ironic API 的版本。 [2] 如果 ironic API 版本低于客户端兼容的最大版本,CLI 将使用 API 服务上运行的版本以确保兼容性。 否则,将使用客户端可以处理的最大 ironic API 版本。

    注意

    我们可能会在 Queens 周期中弃用 ironic 工具。 如果发生这种情况,我们可能会决定跳过将此更改应用于此工具,而选择继续进行弃用。 这取决于单独的规范。

客户端库的更改不在本规范的范围内。

此更改在 Pike PTG 中进行了详细讨论。 [3]

备选方案

  • 我们可以定期提高 CLI 使用的默认 API 版本。 这具有不可预测性,从用户角度来看是不利的,并且不能解决最新功能的发现性问题。 它也不利于 CLI 代码库的可维护性。

  • 我们可以将默认值保持为 1.9,并始终记录警告,而无需将默认值更改为最新版本。 这不能解决易用性或发现性问题,并且永久性地为不希望每次调用 CLI 时都指定版本的用户增加额外的烦恼。

  • 我们可以只将 latest 传递给 API,而不在提供版本时。 但是,这种方法可能会导致潜在的破坏性行为,如果我们将来对 API 进行破坏性更改。

数据模型影响

状态机影响

REST API 影响

客户端 (CLI) 影响

“ironic” CLI

当调用 ironic CLI 而未指定 --ironic-api-version 时,将记录一条警告,指示默认值将很快是最新的兼容 API 版本。

在弃用期之后,默认值将相应更改,假设 ironic CLI 本身在此之前未被弃用。

“openstack baremetal” CLI

当调用 OSC baremetal 插件而未指定 --os-baremetal-api-version 时,将记录一条警告,指示默认值将很快是最新的兼容 API 版本。

在弃用期之后,默认值将相应更改。

RPC API 影响

驱动程序 API 影响

Nova 驱动程序影响

Ramdisk 影响

安全影响

其他最终用户影响

可扩展性影响

性能影响

其他部署者影响

开发人员影响

实现

负责人

主要负责人

dtantsur

其他贡献者

mariojv

工作项

  • 添加警告消息

  • 在标准的弃用期(发布边界或 3 个月,以较长者为准)之后,更改 CLI 使用的默认 API 版本。

依赖项

测试

将添加适当的单元和功能测试。

升级和向后兼容性

如果用户有使用 CLI 而未指定版本的脚本或工具,则需要更新这些脚本或工具以指定版本。

文档影响

无。 将添加适当的发行说明。

参考资料