#!/usr/bin/python
#
# Format a result
#

import jsontemplate
import pscheduler
import sys

from validate import result_is_valid


try:
   format = sys.argv[1]
except IndexError:
   format = 'text/plain'

input = pscheduler.json_load(exit_on_error=True, max_schema=1)

valid, message = result_is_valid(input["result"])

if not valid:
    pscheduler.fail(message)

json = input["result"]


def dump_state(state, label, format):

   if format == 'text/plain':

      print label
      print "  Time ...........", state['time']
      if state['synchronized']:
         print "  Synchronized ... %s, %s" % (
            state['source'], state['reference'])
         print "  Offset .........", state['offset']

   elif format == 'text/html':

      print '<tr><th colspan="2">%s</td></tr>' % (label)
      print "<tr><td>Time</td><td>%s</td></tr>" % (state['time'])
      if state['synchronized']:
         print "<tr><td>Synchronized</td><td>%s %s</td></tr>" \
            % (state['source'], state['reference'])
         print "<tr><td>Offset</td><td>%f</td></tr>" % (state['offset'])

   else:
      assert False, "This should never happen."

if format == 'text/plain':
   pass
elif format == 'text/html':
   print "<table>"
else:
   assert False, "This should never happen."


dump_state(json['local'], "Local Host", format)
print
dump_state(json['remote'], "Remote Host", format)
if format == 'text/plain':
   print
   print "Difference .......", json['difference']
elif format == 'text/html':
   print '<tr><td colspan="2">&nbsp;</td></tr>'
   print "<tr><td>Difference</td><td>%s</td></tr>" \
      % (json['difference'])
   print "</table>"
else:
   assert False, "This should never happen."

pscheduler.succeed()
