“None”资源,什么也不做!

https://blueprints.launchpad.net/heat/+spec/noop-resource

添加一个“None”资源,旨在简化资源注册表条目到始终通过但什么也不做的实现的映射。

问题描述

目前,在一个大型的、可组合的嵌套模板树中,由许多严格定义的父模板控制,通常需要提供可选接口,以便可以链接额外的逻辑。

简化示例,源自 TripleO(这种模式在多个地方重复出现)

resource_registry:
  OS::TripleO::Controller:  foo/controller.yaml
  OS::TripleO::ControllerExtraConfig: noop.yaml

这里我们有一个嵌套模板,它创建一个“controller”节点,并进行一些标准配置。然后,在某些情况下,我们希望挂入一些额外的配置步骤,或者提供一个能够实现该功能的接口。

resources:
  controller:
    type: OS::TripleO::Controller
    properties:
      aproperty: 123

  extra_config:
    type: OS::TripleO::ControllerExtraConfig
    properties:
      server: {get_resource: controller}

ExtraConfig “noop.yaml” 实现只是一个空模板,它接收“server”参数。

当它们所做的只是复制“真实”实现所期望的接口时,避免复制这些“noop”模板会很好。最终你会得到多个带有不同参数/输出的 noop.yaml 文件,这既不方便又容易出错。

提议的变更

添加一个 OS::Heat::None 资源,它将取代 noop.yaml

resource_registry:
  OS::TripleO::Controller:  foo/controller.yaml
  OS::TripleO::ControllerExtraConfig: OS::Heat::None

该资源将接受任何属性,并返回任何属性(作为 None)。

备选方案

另一种选择是,希望提供可选附加功能的接口的模板作者需要继续维护多个实际上什么也不做的模板,就像目前 TripleO 中发生的那样。

实现

负责人

主要负责人

shardy

里程碑

完成目标里程碑

liberty-2

工作项

引擎变更
  • 实现 noop 资源和测试。

文档变更
  • 确保代码中存在文档字符串,以便更新模板指南。

依赖项