超visor 分页

https://blueprints.launchpad.net/nova/+spec/pagination-for-hypervisor

本规范旨在支持超visor 的分页功能。

问题描述

当有数千个计算节点时,获取整个超visor 列表会很慢,并且在 horizon 中显示数千个条目对用户体验不利。

用例

  • 在条目过多时,获取分页的计算节点列表。

提议的变更

更改将发生在以下位置

  • 将添加新的 DB api compute_node_get_all_by_filters,该 api 带有参数 filters、limit 和 marker,以便其他过滤方法(compute_node_search_by_hypervisor 等)也可以重构为使用这种新的 db 方法。

  • 将添加新的计算节点对象 get_by_filters 方法,该方法调用新的 db api compute_node_get_all_by_filters

  • 将重构 Compute api compute_node_get_all

  • 将为超visor 列表添加 REST API microversion 以接受分页请求。

备选方案

数据模型影响

REST API 影响

新的超visor 列表 API 以支持分页

请求

GET /v2.1/{tenant_id}/os-hypervisors?marker=2&limit=1

响应

{
  "hypervisors": [
    {
      "hypervisor_hostname": "fake-mini",
      "id": 3,
      "state": "up",
      "status": "enabled"
    }
  ]
}

安全影响

无。

通知影响

其他最终用户影响

性能影响

通过 Nova 侧分页检索超visor 来减轻 horizon 的负载。

其他部署者影响

开发人员影响

实现

负责人

主要负责人

liyingjun

工作项

  1. 更改 db api 以支持分页参数。

  2. 添加计算节点对象方法并重构 compute api。

  3. 添加 REST API microversion。

依赖项

测试

这些修改将通过单元测试来验证。

文档影响

将添加新的 REST API microversion。

参考资料