#!/usr/bin/env python

from mixcoatl.admin.job import Job
from prettytable import PrettyTable
from mixcoatl import resource_utils, utils
import argparse
import time
import sys
import os

if __name__ == '__main__':
    """ Returns a list of jobs. """
    start = time.time()
    parser = argparse.ArgumentParser()
    parser.add_argument('--verbose', '-v', help='Produce verbose output', action="store_true")

    group_two = parser.add_mutually_exclusive_group()
    group_two.add_argument('--job-id', '-j',
                           help='Print only a single job with JOBID in table format. Does not filter json, csv or xml.')
    group_two.add_argument('--json', action='store_true',
        help='print API response in JSON format.')
    group_two.add_argument('--xml', action='store_true',
        help='print API response in XML format.')
    group_two.add_argument('--csv', action='store_true',
        help='print API response in CSV format.')
    cmd_args = parser.parse_args()
    results = Job.all()

    if cmd_args.xml is True or cmd_args.json is True or cmd_args.csv is True:
        if cmd_args.xml is True:
            payload_format = "xml"
        elif cmd_args.csv is True:
            payload_format = "csv"
        else:
            payload_format = "json"

        print utils.print_format(results, payload_format)
    else:
        table = PrettyTable(["ID", "Type", "Customer", "Name", "Endpoint", "Status"])
        for r in results:
            if hasattr(r, 'end_date'):
                end_date = r.end_date
            else:
                end_date = None
            if hasattr(r, 'message'):
                message = r.message
            else:
                message = None

            if cmd_args.job_id is not None:
                if cmd_args.job_id == str(r.job_id):
                    table.add_row([r.job_id, r.description, r.status, r.start_date, end_date, message])
                    break
            else:
                table.add_row([r.job_id, r.description, r.status, r.start_date, end_date, message])
        table.align = 'l'
        print(table)

    if 'DCM_DEBUG' in os.environ:
        print 'Results returned in', time.time()-start, 'seconds.'
