在 os-server-groups API 中显示 ‘project_id’ 和 ‘user_id’ 信息¶
https://blueprints.launchpad.net/nova/+spec/add-project-id-and-user-id
在 os-server-groups API 中显示服务器组的 ‘project_id’ 和 ‘user_id’ 信息。此修复将允许管理员用户更容易地识别服务器组。
问题描述¶
目前,os-server-groups API 允许管理员用户列出所有项目的服务器组,但响应体不包含每个服务器组的项目 ID 信息,在多租户环境中,很难确定哪个服务器组属于哪个项目。
用例¶
作为云管理员,我希望在发送 GET 请求时能够轻松识别服务器组属于哪个项目。
提议的变更¶
- 为 os-server-groups API 扩展添加一个新的 API 微版本,以便
API ‘list’ 请求的版本满足最低版本,包含服务器组的 ‘project_id’ 和 ‘user_id’ 信息在响应数据中。
API ‘show’ 请求的版本满足最低版本,包含服务器组的 ‘project_id’ 和 ‘user_id’ 信息在响应数据中。
API ‘create’ 请求的版本满足最低版本,包含服务器组的 ‘project_id’ 和 ‘user_id’ 信息在响应数据中。
备选方案¶
无
数据模型影响¶
无
REST API 影响¶
提议的更改更新了 os-server-groups API 扩展中 GET 响应数据,如果请求具有最低支持版本,则包含 ‘project_id’ 和 ‘user_id’ 字段。
提议的更改还更新了 os-server-groups API 扩展中 POST 响应数据,如果请求具有最低支持版本,则包含 ‘project_id’ 和 ‘user_id’ 字段。
方法修改
在当前响应数据中添加项目 ID 信息。
在当前响应数据中添加用户 ID 信息。
GET 请求的响应数据将会受到影响。
POST 请求的响应数据将会受到影响。
示例用例
请求
GET –header “X-OpenStack-Nova-API-Version: 2.12” http://127.0.0.1:8774/v2.1/e0c1f4c0b9444fa086fa13881798144f/os-server-groups
响应
{
"server_groups": [
{
"user_id": "ed64bccd0227444fa02dbd7695769a7d",
"policies": [
"affinity"
],
"name": "test1",
"members": [],
"project_id": "b8112a8d8227490eba99419b8a8c2555",
"id": "e64b6ae1-4d05-4faa-9f53-72c71f8e6f1a",
"metadata": {}
},
{
"user_id": "9128b975e91846f882eb63dc35c2ffd8",
"policies": [
"anti-affinity"
],
"name": "test2",
"members": [],
"project_id": "b8112a8d8227490eba99419b8a8c2555",
"id": "b1af831c-69b5-4d42-be44-d710f2b8954c",
"metadata": {}
}
]
}
请求
GET –header “X-OpenStack-Nova-API-Version: 2.12” http://127.0.0.1:8774/v2.1/e0c1f4c0b9444fa086fa13881798144f/os-server-groups/ e64b6ae1-4d05-4faa-9f53-72c71f8e6f1a
响应
{
"user_id": "ed64bccd0227444fa02dbd7695769a7d",
"policies": [
"affinity"
],
"name": "test1",
"members": [],
"project_id": "b8112a8d8227490eba99419b8a8c2555",
"id": "e64b6ae1-4d05-4faa-9f53-72c71f8e6f1a",
"metadata": {}
}
请求
POST –header “X-OpenStack-Nova-API-Version: 2.12” http://127.0.0.1:8774/v2.1/e0c1f4c0b9444fa086fa13881798144f/os-server-groups -d {“server_group”: { “name”: “test”, “policies”: [ “affinity” ] }}
响应
{
"user_id": "ed64bccd0227444fa02dbd7695769a7d",
"policies": [
"affinity"
],
"name": "test",
"members": [],
"project_id": "b8112a8d8227490eba99419b8a8c2555",
"id": "e64b6ae1-4d05-4faa-9f53-72c71f8e6f1a",
"metadata": {}
}
此更改不应影响 policy.json 文件。
安全影响¶
无
通知影响¶
无
其他最终用户影响¶
python-novaclient server-group-list、server-group-show 和 server-group-create 命令将被更新,以处理微版本,以便在输出中显示 ‘project_id’ 和 ‘user_id’ 信息(如果请求的微版本提供这些信息)。
性能影响¶
无
其他部署者影响¶
无;如果部署者正在使用 API 的必需最低版本来获取 ‘project_id’ 和 ‘user_id’ 数据,他们可以开始使用它,否则他们不会看到任何更改。
开发人员影响¶
无
实现¶
负责人¶
- 主要负责人
Zhenyu Zheng <zhengzhenyu@huawei.com>
工作项¶
添加一个新的微版本,并更改 nova/api/openstack/compute/server_groups.py 以使用它来确定是否应返回服务器组的 ‘project_id’ 和 ‘user_id’ 信息。
依赖项¶
无
测试¶
nova 树中的单元测试和 API 示例功能测试。
目前,Tempest 中没有测试计算 API 微版本超过 v2.1。我们可以添加支持在 Tempest 中测试新版本,但到目前为止,API 至少已达到 v2.10,而没有对 Tempest 进行更改。
文档影响¶
nova/api/openstack/rest_api_version_history.rst 文档将被更新。
api-ref 在 https://github.com/openstack/api-site 上将被更新。