Datasource Scaffold¶
https://blueprints.launchpad.net/vitrage/+spec/datasource-scaffold
A command line tool to generate skeleton of new datasource. A skeleton contains stubs of required classes and methods as described in the design specs, without detail implementation. It aims to bootstrapping the development of new datasource.
Problem description¶
The design specs has given detail instructions on how to add a new data source. However, there is much overhead to create it from scratch. Developers used to copy from existing datasource as a start. It is sometimes out of date and always contains many specific codes.
Proposed change¶
Create templates for the datasource skeleton with placeholders of names and render the Python source file on demand.
Example template in 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),
Providing name=foo
, it will generate the skeleton source file in 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),
Alternatives¶
Create and maintain a sample datasource to allow user to modify as base. In this way, developer is likely to miss some string replacement somewhere as we experienced in the abandoned patch set.
Data model impact¶
None
REST API impact¶
None
Versioning impact¶
None
Other end user impact¶
None
Deployer impact¶
None
Developer impact¶
None
Horizon impact¶
None
Implementation¶
Assignee(s)¶
- Primary assignee:
yujunz
- Other contributors:
None
Work Items¶
Create datasource skeleton template - driver - transformer
Create unit test skeleton template - test driver - test transformer - mock configuration - mock driver - trace generator
Templates for datasource with different update methods
Dependencies¶
None
Testing¶
The changes shall be covered by new unit test.
Documentation Impact¶
How to use the generator will be documented.