从外部文件包含模板定义

https://blueprints.launchpad.net/vitrage/+spec/definition-templates

定义特殊的模板文件,这些文件仅包含定义(实体/关系,不包含场景),然后可以在其他模板文件中包含它们,并在那里创建新的场景。

问题描述

许多模板都在为它们的场景重新定义相同的实体和关系。

提议的变更

将一个新文件(或一组文件)添加到“def_templates”目录中。这些文件与模板相同,但不包含场景或“include”部分(仅包含定义)。

metadata:
 name: alarm_on_host_defs
 description: basic def_template example
definitions:
 entities:
  - entity:
     category: ALARM
     type: nagios
     name: host_problem
     template_id: alarm
  - entity:
     category: RESOURCE
     type: nova.host
     template_id: resource
 relationships:
  - relationship:
     source: alarm
     target: resource
     relationship_type: on
     template_id : alarm_on_host

在模板中添加一个“include”部分,该部分说明要包含的名称,如定义模板的元数据中所示。可以添加多个定义模板。

metadata:
 name: alarm_on_host_scenario
 description: basic template with an include section example
definitions:
 entities:
  - entity:
    ...
 relationships:
  - relationship:
     ...
include:
 - name: alarm_on_host_defs
 - name: ...
scenarios:
 - scenario:
    condition: alarm_on_host
    actions:
     - action:
        action_type: set_state
        properties:
         state: SUBOPTIMAL
        action_target:
         target: resource11

备选方案

数据模型影响

REST API 影响

无。应在未来的模板 CRUD 实现中解决。

版本影响

无 - 旧模板格式仍然受支持。引入了一个替代版本。

其他最终用户影响

部署者影响

开发者影响

Horizon 影响

模板 UI 应更改为显示定义模板文件。

拓扑视图

无影响

RCA 视图

无影响

实体图

无影响

摘要

无影响

实现

负责人

主要负责人

nivolas

其他贡献者

工作项

在范围之内

  • 加载定义模板。

  • 验证定义模板。

  • 测试

  • 文档

以下项目不在范围之内

  • 包含场景的定义模板。

  • 递归包含(一个定义模板不能包含其他定义模板)。

依赖项

测试

该实现将由额外的单元测试和 tempest 测试覆盖。

文档影响

关于如何定义定义模板文件以及何时使用它们的文档

参考资料