From c93d6c745c311f8a8abe445086e376a52f4b862c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laura=20Kl=C3=BCnder?= Date: Fri, 28 Dec 2018 20:12:11 +0100 Subject: [PATCH] implement graphite syntax for convertstats --- .../mapdata/management/commands/convertstats.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/c3nav/mapdata/management/commands/convertstats.py b/src/c3nav/mapdata/management/commands/convertstats.py index b2aaecbb..17fb0c3f 100644 --- a/src/c3nav/mapdata/management/commands/convertstats.py +++ b/src/c3nav/mapdata/management/commands/convertstats.py @@ -1,6 +1,8 @@ import argparse import json +import dateutil +from django.conf import settings from django.core.management.base import BaseCommand from django.utils.translation import ugettext_lazy as _ @@ -12,8 +14,21 @@ class Command(BaseCommand): def add_arguments(self, parser): parser.add_argument('statsfile', type=argparse.FileType('r'), help=_('stats file to convert')) + parser.add_argument('--graphite', action='store_const', const=True, default=False, + help=_('graphite format')) + + def _output_graphite(self, prefix, result, timestamp): + for name, value in result.items(): + if isinstance(value, dict): + self._output_graphite(prefix+name+'.', value, timestamp) + continue + print('%s%s %s %s' % (prefix, name, value, timestamp)) def handle(self, *args, **options): data = json.load(options['statsfile']) + end_time = int(dateutil.parser.parse(data['end_date']).timestamp()) result = convert_stats(data) - print(json.dumps(result, indent=4)) + if options['graphite']: + self._output_graphite('c3nav.%s.' % settings.INSTANCE_NAME, result, end_time) + else: + print(json.dumps(result, indent=4))