diff --git a/build.py b/build.py index 0bc17a4adc85aac73d05f03a2b47d116244974c7..69e7e2b696873d127815ce732cce253cf2b29cfc 100644 --- a/build.py +++ b/build.py @@ -13,7 +13,6 @@ class ConfigBuilder: """Fill YAML-jinja2 templates, prepare the final data-model""" def __init__(self, cfg: Config): - """Instantiate ConfigBuilder""" self.logger = logging.getLogger(APP_LOG_TAG) self.config = cfg @@ -23,17 +22,21 @@ class ConfigBuilder: for job in service['scraping']: self.logger.debug("Templating: " + service['service_name'] + ' -> ' + job['template']) self.load_template(job) - - env = jinja2.Environment(undefined=jinja2.DebugUndefined) - template = env.from_string(job['template']) - data = service.copy() - data['targets'] = job['targets'] - data['snippet'] = collect_snippets(self.config.templates) - - output = template.render(data) + template = self.substitute_template_field(job, service) # store generated prometheus job config - job['output_yaml'] = yaml.safe_load(output) + job['output_yaml'] = yaml.safe_load(template) def load_template(self, job): + """Substitute 'template' field with its content""" template_identifier = TEMPLATE_PREFIX + job['template'] job['template'] = self.config.templates[template_identifier] + + def substitute_template_field(self, job, service): + """Fill template field with data""" + env = jinja2.Environment(undefined=jinja2.DebugUndefined) + template = env.from_string(job['template']) + data = service.copy() + data['targets'] = job['targets'] + data['snippet'] = collect_snippets(self.config.templates) + + return template.render(data) diff --git a/config.py b/config.py index b3fab9f7a6da211813c7265ac8768ebc2e8a6227..12370595c7e23636ceefeb6f6f7aa7689c216934 100644 --- a/config.py +++ b/config.py @@ -14,7 +14,6 @@ class Config: templates = {} def __init__(self, path: Path): - """Read service YAML files and preload templates""" self.logger = logging.getLogger(APP_LOG_TAG) # YAML files in tha data directory recursively base_path_len = len(str(path.absolute())) + 1 diff --git a/customlog.py b/customlog.py index ec100c54e85f9d8a08249e34df671c746fc49ea2..94d68f9428d9213d097ae7008f9c749981115a8f 100644 --- a/customlog.py +++ b/customlog.py @@ -5,6 +5,7 @@ from constants import APP_LOG_TAG def setup_logging(): + """Setup custom log format""" # create logger with 'spam_application' logger = logging.getLogger(APP_LOG_TAG) logger.setLevel(logging.DEBUG) diff --git a/pupak.py b/pupak.py index 31cf0f951913c5f6e63c0f4f53b7f0c4f2775cbb..c53c4833339256a54bd3ef4d723fc22ccbfdb441 100644 --- a/pupak.py +++ b/pupak.py @@ -19,21 +19,21 @@ if __name__ == "__main__": if len(sys.argv) < 1 + 1: logger.error("Not enough CLI args.") logger.error("Usage: data_folder") - exit(1) + sys.exit(1) data_folder = Path(sys.argv[1]) # Read service YAML files and preload templates - raw = Config(data_folder) + config = Config(data_folder) # Fill YAML-jinja2 templates, # prepare the final data-model - builder = ConfigBuilder(raw) + builder = ConfigBuilder(config) builder.build() # print("Data scheme validation:") # cfg.validate() # print("Data scheme is VALID.") - generator = Generator(data_folder, builder.config) + generator = Generator(data_folder, config) generator.ignite()