Skip to content
Snippets Groups Projects
Verified Commit 14d024e7 authored by Robotka István Adrián's avatar Robotka István Adrián
Browse files

commenting

parent 3964f7d6
Branches
Tags
1 merge request!6add snippets functionality
Pipeline #4207 passed with warnings
......@@ -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)
template = self.substitute_template_field(job, service)
# store generated prometheus job config
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)
output = template.render(data)
# store generated prometheus job config
job['output_yaml'] = yaml.safe_load(output)
def load_template(self, job):
template_identifier = TEMPLATE_PREFIX + job['template']
job['template'] = self.config.templates[template_identifier]
return template.render(data)
......@@ -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
......
......@@ -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)
......
......@@ -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()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment