为模板添加增删改查支持¶
https://blueprints.launchpad.net/vitrage/+spec/crud-templates
添加增删改查支持意味着模板可以在 Vitrage 运行时实时添加/删除。
通过 API 添加/删除的模板将存储在数据库中,以便在重启 Vitrage 后仍然存在。将使用 sqlalchemy 进行数据库管理。
问题描述¶
目前,Vitrage 模板在 Vitrage 启动期间从特定文件夹加载。在 Vitrage 服务运行时添加/删除模板需要重启 vitrage-graph 服务。
提议的变更¶
模板应该存储在数据库中,而不是文件系统中的特定文件夹,这样它们可以在 Vitrage 运行时被修改(添加/删除)。
评估器将根据添加/删除的模板中指定的动作,对实体图进行实时更新。
模板添加
验证模板。
将模板存储在数据库中。
通知评估器。
使用新的动作评估实体图。
删除
从数据库中删除模板。
通知评估器。
评估实体图以撤销模板的动作。
更新 - 此时不支持。为了更新模板,请使用添加和删除模板。
为了实现增删改查支持,需要进行一些更改
支持 vitrageclient(Vitrage API)中的模板添加/删除命令
API 处理程序:将模板存储到数据库和从数据库中删除。
图克隆逻辑应该提取到基类。
添加名为 templates 的新数据库表
模板数据库表
+----------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------+--------------+------+-----+---------+-------+
| created_at | datetime | YES | | NULL | |
| updated_at | datetime | YES | | NULL | |
| id | varchar(64) | NO | PRI | NULL | |
| status | varchar(16) | YES | | NULL | |
| status_details | varchar(128) | YES | | NULL | |
| name | varchar(128) | NO | | NULL | |
| file_content | text | NO | | NULL | |
| type | varchar(64) | YES | | NULL | |
+----------------+--------------+------+-----+---------+-------+
备选方案¶
无
数据模型影响¶
一个新的数据库表。
REST API 影响¶
将添加 PUT 和 DELETE 方法。
版本影响¶
无
其他最终用户影响¶
添加新的 CLI 命令
Vitrage 模板添加
Vitrage 模板删除
部署者影响¶
无
开发者影响¶
无
Horizon 影响¶
无
实现¶
负责人¶
- 主要负责人
ikinory
- 其他贡献者
无
工作项¶
支持添加/删除模板的 API
通过 SQLAlchemy 实现数据库表。
实现数据库查询。
如“测试”中所述进行测试。
依赖项¶
无
测试¶
- API
- 模板添加
添加所有类型的模板:标准、等价、定义。
添加损坏的模板并检查添加失败的情况。
添加一个包含模板的文件夹。
- 模板删除
检查所有类型的模板:标准、等价、定义。
模板列表。
- 模板显示
将 CLI 模板内容与原始文件内容进行比较
- 端到端测试
- 在整个图上评估添加/删除的模板。
测试评估器重新加载模板
- 示例
1. 触发告警(模板尚未加载)。
2. 添加相关的模板。
3. 检查是否执行了动作。
这检查了评估器是否被重新加载并在所有现有顶点上运行。
文档影响¶
应该添加模板添加和删除功能。修改模板验证和列表功能。
应该将更改添加到
API 描述:vitrage/doc/source/contributor/vitrage-api.rst
CLI 描述:doc/source/contributor/cli.rst
参考资料¶
无