弃用 Glance v3 API

https://blueprints.launchpad.net/glance/+spec/move-v3-to-glare

在 Mitaka 会议上决定 [1],将 v3 (artifact) API 作为一个独立的、拥有自身端点的服务。为此,我们需要弃用 Glance v3 API 及其相关内容,并创建包含所有必需工具的新服务。

问题描述

最初的计划是将 artifacts 作为具有递增版本号的新 API,即“v3”。但由于 Glance 是一个核心项目,它受到 DefCore 规范的约束,这些规范要求(除其他外)公共 API 的唯一性。不幸的是,v3 API 是可插拔的,从设计上来说无法保证其唯一性。

此外,对于什么是 Glance API 存在理解上的问题,因为 v1 和 v2 是图像 API,它们只处理图像。但 v3 被认为是统一的 (Artifact) API,它可以处理任何性质的对象。OpenStack 社区的普遍感觉是,Artifacts API 不应被视为 Images API 的新版本,而应被视为完全不同的东西。

提议的变更

由于 v3 API 具有实验状态,建议弃用 v3 API 并将其所有代码移动到全新的独立服务,并使用新的端点。这将使 Artifacts 项目免受 DefCore 要求的约束,并允许该项目更快地前进。

拥有独立的服務还可以消除误解,因为将存在稳定的、DefCore 批准的 Glance 图像 API 和可插拔的独立 Artifact API,后者未来可能包含 Glance API。

备选方案

可以保持现状,但这并不能消除上述所有问题。

数据模型影响

无。所有为 artifacts 创建的、以 ‘artifacts-’ 为前缀的表将保留在数据库中,但将由另一个服务使用。

REST API 影响

所有以 ‘/v3’ 开头的实验性 API 都将被弃用并删除。

安全影响

无。

通知影响

无。

其他最终用户影响

‘python-glanceclient’ 仓库中的实验性 ‘feature/artifacts’ 分支将被删除。

性能影响

无。

其他部署者影响

‘apiv3app’ 应用程序必须从 ‘glance-api-paste.ini’ 中删除

‘enable_v3_api’ 参数必须从 glance-api 配置文件中删除

开发人员影响

无。

实现

负责人

主要负责人

  • dshakray

其他贡献者

  • mfedosin

评审人员

  • flaper87

  • nikhil-komawar

  • ativelkov

工作项

  • glance-api-paste.ini: 删除 ‘apiv3app’ 应用程序;

  • glance/common/config.py: 删除 ‘enable_v3_api’ 参数;

  • glance/api/middleware/version_negotiation.py: 删除主要版本发现功能,如果版本为 3,则引发 ValueError 异常;

  • 将 glance/api/v3/* 代码移动到 glance/artifacts/api;

  • 对测试进行相关更改;

依赖项

无。

测试

无。

文档影响

无。

参考资料

[1] Mitaka glance artifacts review: https://etherpad.openstack.org/p/mitaka-glance-artifacts-review