移除 tenant_id¶
https://blueprints.launchpad.net/nova/+spec/remove-tenant-id
该蓝图建议移除使用 tenant_id 的 API 接口,并将其替换为 project_id。
问题描述¶
目前,Nova API 同时支持 tenant_id 和 project_id,这对用户来说不够友好。
以下是一个令人困惑的问题。默认情况下,我们支持通过 all_tenants (可选) 过滤实例,但通过此参数,我们获得的是所有实例的列表,而无法通过 tenant_id 获取实例。
从 bug 1185290 可以看出,在使用 nova list 命令时,如果需要 tenant_id,则必须出现 all_tenants,如 [1] 中所述,这有些不直观。
注意
[1] 主要说明:“如 lp:#1185290 中解释,如果未传递 all_tenants,则必须忽略 tenant_id 搜索选项。”
从 bug 1468992 可以看出,许多用户希望使用 tenant_id 过滤实例,并且在许多大型客户场景中,他们使用租户的概念,希望我们能够通过 tenant_id 过滤预期的实例。
用例¶
作为 (admin) 用户,我希望在 nova api 中统一使用 project_id,而不是同时支持 tenant_id 和 project_id,这将提高 nova 内部以及 nova 与已经进行此更改的其他服务之间的统一性。
提议的变更¶
为请求或响应参数更改 API 添加新的微版本。
移除 tenant_id 字段,使用 all_projects 替换 all_tenants 参数,然后移除以下 API 中的``all_tenants`` 参数
GET /servers (列出服务器)
GET /servers/detail (列出服务器详细信息)
在以下 API 的请求体中,将 tenant_id 替换为 project_id
GET /limits (显示速率和绝对限制)
GET /os-quota-sets/{tenant_id} (显示配额)
PUT /os-quota-sets/{tenant_id} (更新配额)
GET /os-quota-sets/{tenant_id}/defaults (列出租户的默认配额)
GET /os-quota-sets/{tenant_id}/detail (显示配额的详细信息)
GET /os-simple-tenant-usage/{tenant_id} (显示租户的使用统计信息)
在以下 API 的响应体中,将 tenant_id 替换为 project_id
GET /servers/detail (列出服务器详细信息)
GET /servers/{server_id} (列出服务器详细信息)
PUT /servers/{server_id} (更新服务器)
POST /servers/{server_id}/action (重建服务器 (rebuild 操作))
GET /servers/{server_id}/os-security-groups (按服务器列出安全组)
- GET /flavors/{flavor_id}/os-flavor-access (列出风味的访问信息
对于给定的风味)
- POST /flavors/{flavor_id}/action (将风味访问权限添加到租户
(addTenantAccess 操作))
- POST /flavors/{flavor_id}/action (从租户中删除风味访问权限
(removeTenantAccess 操作))
GET /os-simple-tenant-usage (列出所有租户的租户使用统计信息)
GET /os-simple-tenant-usage/{tenant_id} (显示租户的使用统计信息)
路径中的 tenant 关键字将被替换为 project,如下面的 API
GET /os-simple-tenant-usage API 将重命名为 GET /os-simple-project-usage
GET /os-simple-tenant-usage/{tenant_id} API 将重命名为 GET /os-simple-project-usage/{project_id}
我们应该阻止更改以下已弃用的 API 下方的 tenant_id
GET /os-security-groups (列出安全组)
GET /os-security-groups/{security_group_id} (显示安全组详细信息)
PUT /os-security-groups/{security_group_id} (更新安全组)
POST /os-security-group-rules (创建安全组规则)
GET /os-cells (列出单元)
GET /os-fping?all_tenants=1 (Ping 实例)
顺便说一下,所有策略、代码和文档中的 tenant* 引用也将被替换为 project*。
备选方案¶
无
数据模型影响¶
无
REST API 影响¶
添加一个新的微版本。
将 all_tenants 替换为 all_projects 参数,并在以下 API 的请求体中移除 all_tenants
GET /servers (列出服务器)
GET /servers/detail (列出服务器详细信息)
在以下 API 的请求体中,将 tenant_id 替换为 project_id
GET /limits (显示速率和绝对限制)
GET /os-quota-sets/{tenant_id} (显示配额)
PUT /os-quota-sets/{tenant_id} (更新配额)
GET /os-quota-sets/{tenant_id}/defaults (列出租户的默认配额)
GET /os-quota-sets/{tenant_id}/detail (显示配额的详细信息)
GET /os-simple-tenant-usage/{tenant_id} (显示租户的使用统计信息)
GET /os-cells (列出单元)
在以下 API 的响应体中,将 tenant_id 替换为 project_id
GET /servers/detail (列出服务器详细信息)
GET /servers/{server_id} (列出服务器详细信息)
PUT /servers/{server_id} (更新服务器)
POST /servers/{server_id}/action (重建服务器 (rebuild 操作))
GET /servers/{server_id}/os-security-groups (按服务器列出安全组)
- GET /flavors/{flavor_id}/os-flavor-access (列出风味的访问信息
对于给定的风味)
- POST /flavors/{flavor_id}/action (将风味访问权限添加到租户
(addTenantAccess 操作))
- POST /flavors/{flavor_id}/action (从租户中删除风味访问权限
(removeTenantAccess 操作))
GET /os-simple-tenant-usage (列出所有租户的租户使用统计信息)
GET /os-simple-tenant-usage/{tenant_id} (显示租户的使用统计信息)
安全影响¶
无
通知影响¶
无
其他最终用户影响¶
更新 openstacksdk、python-novaclient 和 python-openstackclient 以支持新的微版本。
性能影响¶
无
其他部署者影响¶
无
开发人员影响¶
无
升级影响¶
无
实现¶
负责人¶
- 主要负责人
brinzhang
功能联络人¶
- 功能联络人
brinzhang
工作项¶
在相关的 API、策略和代码中,将
tenant_id替换为project_id。在相关的 API、策略和代码中,将
all_tenants替换为all_projects。添加相关的测试。
新微版本的文档。
检查 python-novaclient、python-openstackclient 和 openstacksdk,仅支持在相关 API 中请求
project_id。
依赖项¶
无
测试¶
添加与负面场景相关的单元测试。
添加相关的功能测试 (API 示例)。
此更改不需要 Tempest 测试。
文档影响¶
更新新微版本的 API 参考,并在所有文档和代码中将所有 tenant 用法更新为 project。
参考资料¶
历史¶
发布名称 |
描述 |
|---|---|
Wallaby |
引入 |
Xena |
重新提出 |
瑜伽 |
重新提出 |