允许项目管理员列出允许的超visor¶
https://blueprints.launchpad.net/nova/+spec/allow-project-admin-list-hypervisors
允许项目管理员获取允许的超visor信息,以便他们可以在 POST /servers API 中指定 host 创建服务器。
问题描述¶
项目管理员当前可以通过 availability_zone 字段中的 host 在特定超visor上创建服务器。但是,项目管理员不允许 列出超visor。另一方面,只有系统管理员或系统读取者才能列出超visor,但他们无法代表项目创建服务器,因为无法通过 project_id 在 POST /servers API 中传递。因此,除非用户向项目管理员或系统用户授予额外的 token 权限,否则‘POST /servers with specific host’将无法使用。
用例¶
作为一个用户(当前是项目管理员,在新 RBAC 中是项目经理),我应该能够在分配给该项目的特定 host 上创建服务器。
提议的变更¶
以下是三个提议的变更
GET /os-hypervisorsAPI允许项目管理员列出他们分配到的超visor的
uuid、state和status。这些信息将从 aggregate metadata 信息 (filter_tenant_id) 中检索。如果请求的项目在
filter_tenant_id中,则该 host 信息将列出给项目管理员。如果filter_tenant_id中未列出项目,则返回一个空列表。只有以下超visor字段将返回给项目管理员,其余字段将以 None 值返回。uuid
state
status
将引入一个新的 API 策略,以切换上述行为,向允许的用户返回完整的超visor信息列表。
对于 System 范围的用户,返回超visor列表的行为不变。
POST /serversAPIPOST /serversAPI 将开始接受请求字段中的超visor uuid,以便在该超visor上启动服务器。现有的字段hypervisor_hostname用于传递超visor名称,我们不会更改现有用例。我们将添加一个新的字段hypervisor_uuid到请求中,以便用户可以传递超visor uuid。超visor uuid 将用于在调度器运行的情况下,在具有 host 的服务器上启动服务器。删除在
availability_zone请求字段中传递 host 和 node 的遗留 hack。这仅适用于较新的 microversion,并保持旧版本 microversion 的相同行为。这是强制服务器在请求的 host 和 node 上启动的遗留 hack - https://github.com/openstack/nova/blob/e28afc564700a1a35e3bf0269687d5734251b88a/nova/compute/api.py#L555-L561 删除此遗留 hack 将标准化‘在请求的 host 上启动服务器’请求。
备选方案¶
了解超visor信息的 System 用户可以切换到项目管理员 token 并启动特定 host 上的服务器。
数据模型影响¶
无。
REST API 影响¶
此更改将通过 microversion 升级完成。
以下是将被更改的两个 API
GET /os-hypervisors
允许策略 ‘os_compute_api:os-hypervisors:list’ 也应用于项目管理员(范围到 system 和 project)。
检查请求者是 system 用户还是项目管理员(通过请求上下文的 system_scope)。对于 system 用户,API 的行为与当前行为没有变化。对于项目管理员,返回分配给该项目的那些 host 的
uuid、state和status,其余字段将以 None 值返回。{ "hypervisors": [ { "hypervisor_hostname": None, "id": "1bb62a04-c576-402c-8147-9e89757a09e3", "state": "up", "status": "enabled" } ], "hypervisors_links": None }
POST /servers
POST /serversAPI 将开始接受请求字段中的超visor uuid,以便在该超visor上启动服务器。我们将添加一个新的字段hypervisor_uuid到创建服务器请求中,以便用户可以传递 uuid。超visor uuid 将用于在调度器运行的情况下,在具有 host 的服务器上启动服务器。删除在
availability_zone请求字段中传递 host 和 node 的遗留 hack。对于旧的 microversion,它将继续像当前工作一样。使用这个新的 microversion,availability_zone字段中只能接受有效的 AZ,否则返回 404。基本上删除这个遗留 hack - https://github.com/openstack/nova/blob/e28afc564700a1a35e3bf0269687d5734251b88a/nova/compute/api.py#L555-L561
安全影响¶
无。已经分配的 host uuid 名称也将列出给项目管理员。
通知影响¶
无。
其他最终用户影响¶
nova api-ref 将更新以反映这些更改。
性能影响¶
无。
其他部署者影响¶
无。
开发人员影响¶
无。
升级影响¶
将添加有关在特定 host 上启动服务器的新工作流程的升级说明。
实现¶
负责人¶
- 主要负责人
gmann
- 其他贡献者
无
功能联络人¶
- 功能联络人
无
工作项¶
带有 microversion 的 API 变更
更改的测试。
依赖项¶
无。
测试¶
API 更改的单元或功能测试。
使用超visor uuid 启动服务器的 Tempest 测试。
文档影响¶
api-ref 将更新以反映这些更改。
参考资料¶
历史¶
发布名称 |
描述 |
|---|---|
瑜伽 |
引入 |