Stack Tags

https://blueprints.launchpad.net/heat/+spec/stack-tags

此特性将允许为堆栈分配一组简单的基于字符串的标签,并可选地提供隐藏具有特定标签的堆栈的默认能力。

问题描述

Heat 应该能够被云提供商用于在后台编排云基础设施,而无需向用户暴露由此自动创建的堆栈。

例如,创建 Nova 服务器可能默认包含创建和配置网络、子网、端口和安全组。云门户中的“服务器创建”功能将调用 Heat 而不是 Nova。当用户在云门户中单击“服务器创建”按钮时,Heat 将编排 Nova 服务器的创建以及对其他服务的调用,然后将所有内容连接起来。

Sahara 已经使用 Heat 进行其内部编排,并且当前当我们在模板中实例化 OS::Sahara::Cluster 资源时,用户也会看到 Sahara 创建的基础堆栈。如果 Sahara 服务的操作员也可以添加此类特定标签到其内部创建的堆栈,以便默认情况下将其隐藏给普通用户,那将会很好。当 Trove 迁移到内部使用 Heat 编排时,这也可能适用。

随着其他服务在后台使用 Heat,它们将为这些堆栈设置特定的标签(例如,source:nova, source:sahara 等),这些标签可以选择配置为默认情况下不显示,从而有效地将其隐藏在 API 的常规用户面前。由于 Heat 似乎不再是纯粹面向用户的编排服务,因此使用这些标签作为防止堆栈混乱和避免混淆的一种手段是有意义的。

提议的变更

在 stack-create API 中添加一个“tag”标志,如果提供该标志,将使用这些标签创建堆栈。 此外,添加一个配置选项,允许操作员隐藏默认堆栈列表中的特定标签。

在 stack-list API 中添加一个“show_hidden”标志,如果传递该标志,将列出隐藏和非隐藏的堆栈。默认情况下,stack-list 输出中仅显示非隐藏的堆栈。

备选方案

  • 使用 Nova 插件进行编排(不是最好的工具)。

实现

负责人

主要负责人

jasondunsmore

里程碑

完成目标里程碑

Kilo-3

工作项

  • 添加一个“stack_tag”表。

  • 在 stack-create(引擎和 API)中添加一个“tags”参数。 注意:标签名称不能包含逗号,如规范中所指定:https://review.openstack.org/#/c/155620/

  • 添加在 stack-update 期间更新堆栈标签的能力(引擎和 API)。 应该能够从堆栈中删除所有标签。

  • 在引擎(引擎和 API)中的 stack-list 中添加一个“show_hidden”参数。

  • 在引擎(引擎和 API)中的 stack-list 中添加一个“tags”参数。 传递标签名称将导致仅显示包含该标签的堆栈。 如果传递多个标签,它们将使用 AND 布尔表达式组合。

  • 在引擎(引擎和 API)中的 stack-list 中添加一个“tags-any”参数。 传递标签名称将导致仅显示包含该标签的堆栈。 如果传递多个标签,它们将使用 OR 布尔表达式组合。

  • 在引擎(引擎和 API)中的 stack-list 中添加一个“not-tags”参数。 传递标签名称将导致仅显示不包含该标签的堆栈。 如果传递多个标签,它们将使用 AND 布尔表达式组合。

  • 在引擎(引擎和 API)中的 stack-list 中添加一个“not-tags-any”参数。 传递标签名称将导致仅显示不包含该标签的堆栈。 如果传递多个标签,它们将使用 OR 布尔表达式组合。

  • 添加一个 API 来列出标签,例如“heat tag-list”(引擎和 API)。

  • 确保标签显示在“heat stack-show <stack>”输出中(引擎和 API)。

  • 将新的 API 参数的文档添加到“api-site”项目。

  • 编写单元测试,以确保其他堆栈操作在隐藏堆栈的情况下仍按预期工作,例如 stack-show、resource-list、stack-list 分页……

  • 注册一个配置参数,其中包含要默认隐藏的标签列表。

  • 实现对 DB/service/RPC 的更改,以根据配置参数隐藏堆栈。

  • 在 python-heatclient 中的 stack-list 中添加“show_hidden”参数。

  • 在 python-heatclient 中添加“–tags”、“–tags-any”、“–not-tags”和“–not-tags-any”选项,以按标签过滤 stack-list 输出。

依赖项

无。