import argparse import logging import os import sys from jinja2 import Environment from jinja2 import FileSystemLoader logging.basicConfig(stream=sys.stdout, level=logging.DEBUG) log = logging.getLogger('jmx_datadog_agent') DEBEZIUM_SOURCE = 'debezium_source' DEFAULT_SOURCE = 'default_source' DEFAULT_SINK = 'default_sink' KSQLDB_SERVER = 'ksqldb_server' SNOWFLAKE_SINK = 'snowflake_sink' NEO4J_CDC_SOURCE = 'neo4j_cdc_source' DEFAULT_CONFIG_TEMPLATE = './configs/conf.yaml.j2' if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('-t', '--connector-type') parser.add_argument('-o', '--config-file') args = parser.parse_args() env_variables = os.environ.items() jinja_env = Environment( loader=FileSystemLoader('/'), lstrip_blocks=True, trim_blocks=True ) config_template = None if not args.connector_type or not isinstance(args.connector_type, str): config_template = DEFAULT_CONFIG_TEMPLATE elif args.connector_type.lower() == DEBEZIUM_SOURCE: config_template = './configs/debezium_producer.yaml.j2' elif args.connector_type.lower() == DEFAULT_SOURCE: config_template = './configs/default_producer.yaml.j2' elif args.connector_type.lower() == DEFAULT_SINK: config_template = './configs/default_consumer.yaml.j2' elif args.connector_type.lower() == KSQLDB_SERVER: config_template = './configs/ksqldb_server.yaml.j2' elif args.connector_type.lower() == SNOWFLAKE_SINK: config_template = './configs/snowflake_sink.yaml.j2' elif args.connector_type.lower() == NEO4J_CDC_SOURCE: config_template = './configs/neo4j_cdc_source.yaml.j2' else: config_template = DEFAULT_CONFIG_TEMPLATE config_template = jinja_env.get_template(config_template) config_file = config_template.render(env_variables) log.info(f'{args.config_file} was successfully created from {config_template}') with open(args.config_file, 'w') as f: f.write(config_file)