Manage Service列表的扩展和pid支持¶
https://blueprints.launchpad.net/heat/+spec/heat-manage-service-list-scale-out
为“Manage service”列表功能添加分页、排序和过滤功能。此外,每个引擎将报告其pid。
问题描述¶
在扩展环境中,云提供商开始运行许多heat-engines来服务于给定时间点的巨大请求。一旦启动了许多引擎,‘Manage service’将帮助云提供商找出当前正在运行的heat-engines及其状态,并且他们希望能够使用分页来检索这些引擎的详细信息,并希望能够根据引擎运行的主机、状态等来搜索它们。当前版本缺少这些功能。
提议的变更¶
分页
在REST API和heat CLI中添加以下参数以启用‘Manage Service’功能中heat-engines列表的分页
marker: 起始heat-engine服务id
limit: 从起始索引开始的记录数(默认=20)
with_count: 如果为True(默认),则在响应中提供以下计数:- count: 总heat-engines数量,定义如 https://github.com/openstack/api-wg/blob/master/guidelines/counting.rst
排序
在REST API和heat CLI中添加以下参数以对给定heat部署中的heat-engine服务进行排序
sort: 给定优先级顺序的服务属性列表。- 允许的属性:created_at, updated_at, status, hostname - 默认键是created_at - created_at和updated_at的默认排序方向是desc,对于其他允许的属性,将是asc。- sort 键值格式应与API-WG http://git.openstack.org/cgit/openstack/api-wg/tree/guidelines/pagination_filter_sort.rst 对齐
过滤
在REST API和heat CLI中添加以下参数以过滤heat-engine服务
hostname: heat-engines主机名的列表
status: heat-engines服务状态的列表
为了支持NOT条件,每个列表条目可以采用‘[not:]entry’的形式,例如‘not:FAILED’
受影响的Service REST API: /v1/{tenant_id}/services?<上述 参数 作为 http 查询 参数> 这里,为了提供过滤参数,将使用‘filter’查询参数,其值类似于CLI中使用的–filters选项。
受影响的Heat CLI: (仅显示新增参数) heat service-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…> 应用于返回的heat-engine服务的过滤参数。可以多次指定,或者一次指定,参数之间用分号分隔。
-l <LIMIT>, –limit <LIMIT> 限制返回的heat-engine服务数量。-m <ID>, –marker <ID> 仅返回在给定ID之后出现的heat-engines。
-s <KEY1:asc,KEY2,KEY3>, –sort <KEY1:asc,KEY2,KEY3> 以给定的优先级和排序方向对键进行排序。
heat-engine PID: 此外,当给定主机上运行多个heat-engines时,很难找到给定heat-engine的进程id。这在解决问题时是必需的。因此,需要在Service模型中添加一个新的字段‘pid’。
heat-manage service list: 添加在CLI中完成的类似增强(这对于管理员来说是必需的,当所有heat-engines都关闭并且heat service-list变得无能为力时)。
备选方案¶
无
实现¶
负责人¶
- 主要负责人
Kanagaraj Manickam (kanagaraj-manickam)
里程碑¶
- 完成目标里程碑
liberty-1
工作项¶
DB模型更改
使用名为‘pid’的新列更新Service表
DB API更改
‘service_get_all’需要更新以处理分页参数和过滤参数
Object更改
添加pid以及与db api更改相关的Service对象方法中的相应更改
RPC API更改
增强‘list_services’以处理分页和过滤功能
Heat engine服务
增强EngineService中的‘service_manage_report’方法以更新当前引擎的pid。
REST API更改
更新ServiceController ‘index’以处理分页和过滤功能
heat CLI
‘heat service-list’以处理分页和过滤功能
heat-manage命令
添加在CLI中完成的类似增强。
添加所需的测试用例
文档
更新REST API (api-sites)、heat CLI (python-heatclient) 和 heat-manage 工具的文档
依赖项¶
无