#!/usr/bin/env python

r"""
BMC FFDC will at times include the journal in json format 
(journalctl -o json-pretty ).  This is a quick and dirty script which
will convert that json output into the standard journalctl output
"""

import json
import re
import time
from argparse import ArgumentParser

def jpretty_to_python(buf):
    entries = []

    for entry in re.findall(
            '^{$(.+?)^}$', buf, re.DOTALL | re.MULTILINE):
        entries += [ json.loads('{{{}}}'.format(entry)) ]

    return entries

if __name__ == '__main__':
    parser = ArgumentParser()
    parser.add_argument(
        'journalfile', metavar='FILE', help='the file to parse')

    args = parser.parse_args()

    with open(args.journalfile) as fd:
        entries = jpretty_to_python(fd.read())
        entries = sorted(entries, key=lambda k: k['__REALTIME_TIMESTAMP'])

        for e in entries:
            e['ts'] = time.ctime(float(e['__REALTIME_TIMESTAMP'])/1000000).rstrip()
	    try:
            	print '{ts} {_HOSTNAME} {SYSLOG_IDENTIFIER}: {MESSAGE}'.format(**e)
	    except:
		print "Unable to parse msg: " + str(e)
		continue
        
