为 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 文档。

参考资料

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