静态数据源配置

https://blueprints.launchpad.net/vitrage/+spec/static-datasource-config-format

静态数据源的配置与评估器模板中的实体和关系定义有很多共通之处。此蓝图建议重构,以便在静态数据源中重用模板格式和解析方法。通过这样做,我们可以减少维护工作,并更轻松地引入新功能。

问题描述

目前静态数据源的配置使用专用的格式,该格式与评估器模板有很多重叠。

在静态配置中,存在 entities(实体)及其 relationships(关系)

- entities
  - {entity}
  - {entity}

在每个实体中

- name:
  id:
  relationship:
    - {relationship}
    - {relationship}

在评估器模板中,我们定义:entities(实体)、relationship(关系)和 scenarios(场景)。每个场景都有条件和动作。

- definitions
  - entities
    - {entity}
    - {entity}
  - relationships
    - {relationship}
    - {relationship}

虽然用途不同,但它们都

  1. 描述 entities(实体)和 relationships(关系)

  2. 使用专用的键(id/template_id)来引用这些条目

  3. 在关系中包含源实体和目标实体

两者之间的主要区别在于

  • 评估器模板定义一个拓扑和基于它的场景

  • 静态配置定义一个拓扑并将其添加到图中

我们可以使用与评估器模板相同的格式定义静态配置。然后模拟从同一文件进行实体发现。

通过重用模板解析引擎和工作流程,我们可以减少维护工作,并更轻松地引入新功能。

提议的变更

重构静态数据源模板,并使用与评估器模板中相同的解析器。

从静态数据源模板中发现实体。

为了向后兼容,静态数据源将接管默认配置文件夹 /etc/vitrage/static_datasource 的控制权,该文件夹以前由静态物理数据源使用。

旧格式和新格式都将放在同一个文件夹中。静态数据源解析文件并检查 meta 的存在,以决定使用哪个引擎。如果未找到,则将作业代理给静态物理数据源并打印弃用警告。

静态物理数据源将默认禁用,如果独立运行则会抛出异常。

备选方案

修复在不重构格式的情况下在静态数据源中发现的问题。这将保持最佳的向后兼容性,但会导致与场景评估器重复工作。

数据模型影响

REST API 影响

版本影响

  • 将保留与旧格式的向后兼容性。

  • 这将引入一项新功能,并且需要进行次要版本递增。

其他最终用户影响

最终用户应应用静态数据源配置的新格式。

部署者影响

将保留旧解析器,但会提示弃用警告。

开发者影响

Horizon 影响

实现

负责人

主要负责人

yujunz

其他贡献者

工作项

  • 在静态数据源配置中重用评估器模板的解析器。

  • 从配置中发现实体。

  • 对旧格式添加弃用警告。

依赖项

测试

这些更改应涵盖新的单元测试。

文档影响

模板的新格式应记录在案。

参考资料