数据源脚手架

https://blueprints.launchpad.net/vitrage/+spec/datasource-scaffold

一个命令行工具,用于生成新的数据源骨架。骨架包含所需类和方法的存根,如设计规范中所述,不包含详细实现。它的目标是启动新的数据源开发。

问题描述

设计规范提供了关于如何添加新的数据源的详细说明。但是,从头开始创建它需要很多工作。开发者通常会从现有的数据源复制作为起点。这有时会过时,并且总是包含许多特定代码。

提议的变更

创建数据源骨架的模板,其中包含名称占位符,并按需渲染 Python 源代码文件。

示例模板使用 Jinja2

from oslo_config import cfg
from vitrage.common.constants import UpdateMethod

{{ name|upper }}_DATASOURCE = '{{ name }}'

# define needed options
OPTS = [
    # Transformer with the path to your transformer classes
    cfg.StrOpt('transformer',
               default='vitrage.datasources.{{ name }}_datasource.transformer.'
                       '{{ name|capitalize }}Transformer',
               help='{{ name|capitalize }} transformer class path',
               required=True),

提供 name=foo,它将生成 Python 中的骨架源代码文件

from oslo_config import cfg
from vitrage.common.constants import UpdateMethod

FOO_DATASOURCE = 'foo'

# define needed options
OPTS = [
    # Transformer with the path to your transformer classes
    cfg.StrOpt('transformer',
               default='vitrage.datasources.foo_datasource.transformer.'
                       'FooTransformer',
               help='Foo transformer class path',
               required=True),

备选方案

创建并维护一个示例数据源,允许用户将其修改为基础。 这样,开发者不太可能像我们在废弃的补丁集中所经历的那样,在某个地方遗漏字符串替换。

数据模型影响

REST API 影响

版本影响

其他最终用户影响

部署者影响

开发者影响

Horizon 影响

实现

负责人

主要负责人

yujunz

其他贡献者

工作项

  • 创建数据源骨架模板 - 驱动程序 - 转换器

  • 创建单元测试骨架模板 - 测试驱动程序 - 测试转换器 - 模拟配置 - 模拟驱动程序 - 跟踪生成器

  • 具有不同更新方法的数据源模板

依赖项

测试

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

文档影响

将记录如何使用生成器。

参考资料