堆栈资源过滤、排序和分页¶
https://blueprints.launchpad.net/heat/+spec/heat-stack-resource-search
增强给定堆栈中资源的过滤、排序和过滤能力。
问题描述¶
在较大的堆栈中,heat 默认允许 1000 个资源(max_resources_per_stack),并且该值是可配置的。如果提供分页、排序和基于某些资源属性的过滤功能,将有助于用户获取堆栈中的资源。
提议的变更¶
分页
在 REST API 和 heat CLI 中添加以下参数以启用给定堆栈资源的分页
marker: 起始资源 ID(默认=0)
limit: 从起始索引返回的记录数(默认=20)
with_count: 如果为 True(默认),则在响应中提供以下计数:- count: 给定堆栈中资源的總數,定义方式如下 https://github.com/openstack/api-wg/blob/master/guidelines/counting.rst
排序
在 REST API 和 heat CLI 中添加以下参数以排序给定堆栈中的资源
sort: 资源属性列表,按给定的优先级顺序排列。- 允许的属性:created_at, updated_at, status, name - 默认键为 created_at - created_at 和 updated_at 的默认排序方向为降序,status 和 name 的默认排序方向为升序。- sort 键值格式应与 API-WG http://git.openstack.org/cgit/openstack/api-wg/tree/guidelines/pagination_filter_sort.rst 对齐
过滤
- 在 REST API 和 heat CLI 中添加以下参数以过滤资源
在给定的堆栈中
type: 有效的资源类型列表
status: 有效的资源状态列表
name: 资源名称
action: 有效的资源操作列表
uuid: 资源 uuid 列表
physical_resource_id: 物理资源 id 列表
为了支持 NOT 条件,列表中的每个条目都可以采用“ [not:]entry”的形式,例如“not:FAILED”
受影响的资源 REST API: /v1/{tenant_id}/stacks/{stack_name}/{stack_id}/resources ?<query parameters>
这里,为了提供过滤参数,将使用“filter”查询参数,其值类似于 CLI 中使用的 --filters 选项。
受影响的 Heat CLI: (仅显示此处的新参数) heat resource-list [-f <KEY1=VALUE1;KEY2=VALUE2...>] [-l <LIMIT>] [-m <ID>] [-s <KEY1:asc,KEY2,KEY3>]
- 可选参数
-f <KEY1=VALUE1;KEY2=VALUE2…>, –filters <KEY1=VALUE1;KEY2=VALUE2…> 应用于返回资源的过滤参数。可以多次指定此参数,或者一次指定,参数之间用分号分隔。
-l <LIMIT>, –limit <LIMIT> 限制返回的资源数量。-m <ID>, –marker <ID> 仅返回在给定资源 ID 之后的资源。
-s <KEY1:asc,KEY2,KEY3>, –sort <KEY1:asc,KEY2,KEY3> 以给定的优先级和排序方向对键进行排序。
备选方案¶
无
实现¶
负责人¶
- 主要负责人
Kanagaraj Manickam (kanagaraj-manickam)
里程碑¶
- 完成目标里程碑
liberty-1
工作项¶
使用额外的分页、排序和过滤功能更新资源 REST API 控制器
如解决方案部分所述更新 heat CLI
添加所需的 RPC 和 DB api 以及所需的微版本。
添加所需的额外测试用例。
添加 CLI (python-heatclient) 和 REST API (api-sites) 的文档
依赖项¶
无