为 API 层从服务器显示中,在安全组中添加 ‘uuid’ 字段¶
https://blueprints.launchpad.net/nova/+spec/add-id-to-security-groups-for-server-show
此特性将在 nova API 层的 nova show server 操作中,在每个安全组的“name” 之外,添加 “uuid” 字段到 security-groups 部分。
问题描述¶
目前,nova-network 不允许存在名称相同的 2 个安全组,而 neutron 允许。Nova show <servers-id> API 仅返回每个安全组的“name”,这会导致用户混淆,尤其是在 neutron 使用多个名称相同的安全组的情况下。Neutron 通过 uuid 区分安全组,而 “nova show <servers-id>” 不会返回 “uuid” 信息。
用例¶
作为云管理员,我需要了解每个服务器连接的安全组的详细信息,尤其是在使用 neutron 时,我需要在调用 API 服务器.show() 时区分名称相同的安全组。
项目优先级¶
无
提议的变更¶
对于 nova-network,在 DB 类 SecurityGroup 中添加 ‘uuid’ 列,SecurityGroup 对象将在不存在时生成并保存 ‘uuid’。
对于 nova API,使用微版本更改现有的 os-security-groups API 扩展 _extend_servers 函数,以便 API GET 服务器信息时,可以将安全组的 ‘uuid’ 信息添加到 servers.show 响应数据中。
备选方案¶
从 nova CLI,一旦获取到服务器 id,可以通过 nova list-secgroup <server-id> API 请求获取该服务器的安全组详细信息,这可以作为 nova CLI 的一个变通方法,但无法改变 nova show <server-id> 响应数据不包含安全组 uuid 信息的事实。
数据模型影响¶
nova-network 将为安全组 DB 类添加一个 ‘uuid’ 列,安全组对象将在创建时生成并保存 uuid。一旦到位,我们就可以通过 API 返回每个安全组的 uuid。
在现有 DB 中的所有内容更新后,我们可以在下一个版本中添加唯一且非空约束。
REST API 影响¶
提议的更改只是更新 servers.show API 中的 GET 响应数据,以包含安全组的 ‘uuid’ 字段。详细信息将在 os-security-groups API 扩展中进行更改。
如果部署者使用的是获取 ‘uuid’ 数据的 API 的必需最低版本,他们可以开始使用它,否则他们不会看到任何更改。
示例用例
请求
GET –header “X-OpenStack-Nova-API-Version: 2.xx” v2/{tenant-id}/servers/{server-id}
响应
{"server":
{
...
"security_groups": [{"name": "default"}, {"uuid": "e20ccd4b-c316-\
4df9-8e4c-f003b942a90d"}]
...
}
}
此更改不应影响 policy.json 文件。
安全影响¶
无
通知影响¶
无
其他最终用户影响¶
python-novaclient server show 命令可以在其输出中更新为显示 ‘uuid’ 状态,当 ‘uuid’ 字段在响应数据中时,如果不在,客户端将仅显示 ‘name’,如前所述。
性能影响¶
无
其他部署者影响¶
无;
开发人员影响¶
无
实现¶
负责人¶
- 主要负责人
Park heijlong <heijlong@linux.vnet.ibm.com>
工作项¶
在 db 类 SecurityGroup 中添加 ‘uuid’ 列,在安全组创建期间生成并保存 ‘uuid’(如果不存在)。
添加一个新的微版本,并更改 nova/api/openstack/compute/plugins/v3/security_groups.py,将 ‘uuid’ 属性添加到响应数据中。目前,uuid 不会替换 name/id,因此 ‘name’ 和 ‘uuid’ 将如上所述包含在响应数据中。
依赖项¶
无
测试¶
nova 树中的单元测试和可能的 API 示例功能测试。
目前 Tempest 中没有测试用例来验证 ‘uuid’。我们可以添加支持在 Tempest 中使用微版本支持来验证 ‘uuid’ 测试用例。
文档影响¶
将更新 nova/api/openstack/rest_api_version_history.rst 文档。
参考资料¶
关于该 bug 的旧 ML 线程
http://lists.openstack.org/pipermail/openstack-dev/2015-May/064344.html
add-id-to-security-groups BP
https://blueprints.launchpad.net/nova/+spec/add-id-to-security-groups-for-server-show