From ab04840d828aa5216911f711577077561208569a Mon Sep 17 00:00:00 2001 From: drebs Date: Thu, 27 Apr 2017 20:06:09 +0200 Subject: [elastic] use multiple mustache templates --- elastic/generate-config.py | 101 +++++++++++++++++++++++++++------------------ 1 file changed, 61 insertions(+), 40 deletions(-) (limited to 'elastic/generate-config.py') diff --git a/elastic/generate-config.py b/elastic/generate-config.py index 0aa998f..2d4c7bc 100755 --- a/elastic/generate-config.py +++ b/elastic/generate-config.py @@ -13,23 +13,39 @@ import sys URL='https://moose.leap.se:9200' -# configure a logger -logger = logging.getLogger(__name__) -ch = logging.StreamHandler() -ch.setFormatter(logging.Formatter('%(asctime)s %(message)s')) -logger.addHandler(ch) -logger.setLevel(logging.INFO) - - -# Generate visualizations -def generate_visualizations(): - dir = './visualization/' - with open(os.path.join(dir, 'template.mustache'), 'r') as f: +def _get_logger(): + logger = logging.getLogger(__name__) + ch = logging.StreamHandler() + ch.setFormatter(logging.Formatter('%(asctime)s %(message)s')) + logger.addHandler(ch) + logger.setLevel(logging.INFO) + return logger + + +def _delete_jsons(directory): + for f in os.listdir(directory): + if f.endswith('.json'): + os.unlink(os.path.join(directory, f)) + + +def generate_visualizations(tests): + with open(os.path.join('templates', 'visualization.mustache'), 'r') as f: template = f.read() + with open(os.path.join('templates', 'visualization-visState.mustache')) as f: + template_visState = f.read() + with open(os.path.join('templates', 'visualization-searchSourceJSON.mustache')) as f: + template_searchSourceJSON = f.read() + + out_dir = './visualization' + _delete_jsons(out_dir) + + # remove all json files in output directory + for f in os.listdir(out_dir): + if f.endswith('.json'): + os.unlink(os.path.join(out_dir, f)) - # test_names = tests. for test_name in tests: - out_file = os.path.join(dir, test_name + '.json') + out_file = os.path.join(out_dir, test_name + '.json') logger.info('Generating ' + out_file) context = { @@ -39,25 +55,30 @@ def generate_visualizations(): "AND machine_info.host='weasel' " "AND name='" + test_name + "'" } - rendered = pystache.render(template, context) - # verify we generated valid JSON visualizations - content = json.loads(rendered) - visState = content['visState'] - searchSourceJSON = content['kibanaSavedObjectMeta']['searchSourceJSON'] + visState = pystache.render(template_visState, context) assert json.loads(visState) + context['visState'] = json.dumps(visState) + + searchSourceJSON = pystache.render(template_searchSourceJSON, context) assert json.loads(searchSourceJSON) + context['searchSourceJSON'] = json.dumps(searchSourceJSON) + + rendered = pystache.render(template, context) + assert json.loads(rendered) with open(out_file, 'w') as out: out.write(rendered) -# Generate Dashboard -def generate_dashboards(): - dir = './dashboard/' - with open(os.path.join(dir, 'template.mustache'), 'r') as f: + +def generate_dashboards(tests): + with open(os.path.join('templates', 'dashboard.mustache'), 'r') as f: template = f.read() - out_file = os.path.join(dir, 'soledad-benchmarks.json') + out_dir = './dashboard' + _delete_jsons(out_dir) + + out_file = os.path.join(out_dir, 'soledad-benchmarks.json') logger.info('Generating ' + out_file) panels = [] @@ -74,27 +95,27 @@ def generate_dashboards(): 'type': 'visualization', }) - panels_json = {'panels_json': json.dumps(panels)} - rendered = pystache.render(template, panels_json) + context = {'panels_json': json.dumps(panels)} + rendered = pystache.render(template, context) + assert json.loads(rendered), rendered with open(out_file, 'w') as f: f.write(rendered) -# Main - -# Get all test names -with open('./query/test_names.json') as f: - response = requests.get(URL + '/_search', data=f) - buckets = response.json()['aggregations']['test_names']['buckets'] - -tests = [] -for d in buckets: - name = d['key'] - tests.append(name) -tests = sorted(tests) +def _get_test_names(): + with open('./query/test_names.json') as f: + response = requests.get(URL + '/_search', data=f) + buckets = response.json()['aggregations']['test_names']['buckets'] + tests = [] + for d in buckets: + name = d['key'] + tests.append(name) + return sorted(tests) if __name__ == '__main__': - generate_dashboards() - generate_visualizations() + logger = _get_logger() + tests = _get_test_names() + generate_dashboards(tests) + generate_visualizations(tests) -- cgit v1.2.3