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列表的分页

  • 排序

在REST API和heat CLI中添加以下参数以对给定heat部署中的heat-engine服务进行排序

  • 过滤

在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 工具的文档

依赖项