为其他资源添加分页

https://blueprints.launchpad.net/cinder/+spec/add-pagination-to-other-resource

本规范旨在继续我们在 Liberty 版本中完成的工作,为其他 Cinder 资源添加分页支持。

问题描述

在 Liberty 版本中,我们根据 bp[1] 为备份和快照添加了分页。 仍有一些工作尚未完成。 在 Mitaka 版本中,我们计划为 CG、卷类型和 Qos 规范添加分页支持。

用例

在大型云系统中,最终用户和构建在 Cinder 之上的管理系统可以通过使用分页、过滤和排序功能来快速查询,从而提高查询性能。

提议的变更

  • 一致性组:重构当前实现,使用数据库分页查询,并在查询请求中添加过滤和排序支持。

  • 卷类型:在查询请求中添加分页和排序支持。

  • Qos 规范:在查询请求中添加分页、过滤和排序。

  • 像备份和快照中一样,添加 SQL 分页查询支持。

备选方案

数据模型影响

REST API 影响

根据 API-wg 关于分页、过滤和排序的指南[2]

GET /v2/{project_id}/{resource}?limit=xxx&marker=xxx&sort=xxx&{filter}=xxx
RESP BODY: {"resource_links": [{xxx}],
            "resource": [{xxx}, {xxx}, ..., {xxx}]
           }

安全影响

通知影响

其他最终用户影响

性能影响

其他部署者影响

开发人员影响

实现

负责人

主要负责人

wanghao<wanghao749@huawei.com>

其他贡献者

工作项

  • 为三个资源添加分页支持。 * 在数据库分页查询中实现代码。 * 在列表查询 API 中实现代码。 * 测试代码。

  • 更新 cinderclient 以支持这些资源的功能。

  • 更新 API 文档。

依赖项

测试

需要创建单元测试和 Tempest 测试来覆盖代码更改。

文档影响

需要更新 Cinder API 文档以反映 REST API 的更改。

参考资料

[1]https://blueprints.launchpad.net/cinder/+spec/extend-limit-implementations [2]https://github.com/openstack/api-wg/blob/master/guidelines/pagination_filter_sort.rst