移除遗留 v2.0 API

https://blueprints.launchpad.net/nova/+spec/remove-v20-api

移除遗留 v2.0 API。

问题描述

Nova 十多年前推出了 v2.1 API。此后,我们一直支持遗留的 v2.0 API,该 API 被重新实现为围绕 v2.1 API 的 shim。十年是很长的时间,Compute API 在这段时间内已经显著发展和变化,在 Epoxy (2025.1) 版本中达到了第 100 个微版本。部署和维护遗留 API 存在成本,而且没有理由让任何人继续使用它,即使是基本微版本也不行。它也缺乏面向最终用户的文档。我们应该弃用它,以便可以将其移除。

用例

作为一名开发人员,我不再想关心 v2.0 和 v2.1 之间的潜在差异。

作为部署工具的开发人员,我希望能够停止部署额外的、未使用的端点。

作为库的开发人员,我希望能够忽略 v2 API,而不必为此感到内疚。

提议的变更

将 API 状态更改为 DEPRECATED。这将导致 keystoneauth1 和最新版本的 Gophercloud 忽略该 API,除非用户选择启用它。这是向用户发出的强烈信号,表明该 API 寿命将尽,这将允许我们在 H 版本中将其移除。

更新所有测试,以删除对 /v2 路径的混淆引用。在大多数情况下,这些引用是不相关的,因为我们直接调用控制器,并且 URL 的路径部分被忽略,但更新这些内容将使事情更清晰。

将提出一个“不合并 (DNM)”补丁,以移除 v2 API。这将突出显示我们在单元或功能测试中遗漏的任何地方。

备选方案

继续假装我们以有意义的方式支持它。

数据模型影响

无。

REST API 影响

根版本文档将不会报告 v2 API 的状态为 DEPRECATED

安全影响

无。

通知影响

无。

其他最终用户影响

没有。所有已知的客户端都使用并依赖于微版本化的端点。

性能影响

可以忽略不计。

其他部署者影响

将鼓励部署工具停止创建遗留 v2 端点。

开发人员影响

在进行 API 工作时,不再需要考虑 v2 API。对所使用的 API 框架的未来更改将变得稍微容易一些。

升级影响

v2 遗留 API 将被弃用。因此,依赖于此 API 并使用忽略弃用 API 的库(如 keystoneauth 和最新版本的 Gophercloud)的应用程序需要进行修改,以使用 v2.1 API 或选择启用 v2 API。预计现在野外几乎没有此类应用程序。

实现

负责人

主要负责人

stephen.finucane

功能联络人

功能联络人

N/A

工作项

  • 将 API 标记为已弃用

  • 更新测试以使用 v2.1 API 或移除不相关的路径

  • 更新文档以反映弃用和未来的移除计划

依赖项

无。

测试

单元测试应该涵盖这一点。

文档影响

对 v2 API 的引用将被更新,以突出显示弃用和未来的移除计划。

参考资料

无。