#!/usr/bin/python

import sys
import os
import mycluster
import argparse

def main():
    
    parser = argparse.ArgumentParser()
    parser.add_argument('-q','--queues', help='List all available queues',action="store_true")
    create_group = parser.add_argument_group(title='Create job file')
    create_group.add_argument('-c','--create', help='Name of job file')
    create_group.add_argument('--jobqueue', help='Job queue (required)')
    create_group.add_argument('--jobname', default='myclusterjob',help='Job name')
    create_group.add_argument('--ntasks', type=int,default=1,help='Number of tasks')
    create_group.add_argument('--taskpernode', type=int,help='Task per node')
    create_group.add_argument('--script',help='script file (required)')
    parser.add_argument('-s','--submit', help='Submit job file')
    parser.add_argument('-d','--delete', help='Delete job')
    parser.add_argument('--email',help='Email update')
    parser.add_argument('--firstname',help='Name update')
    parser.add_argument('--lastname',help='Name update')
    parser.add_argument('-p','--printjobs',action="store_true",help='Print jobs')
    parser.add_argument('-e','--export',type=int,help='Export job data')
    parser.add_argument('--sysscribe',type=int,help=argparse.SUPPRESS)
    parser.add_argument('--jobid',type=int,help=argparse.SUPPRESS)
    parser.add_argument('--appname',help=argparse.SUPPRESS)
    parser.add_argument('--appdata',type=int,help=argparse.SUPPRESS)
    args = parser.parse_args()
    
    if args.queues:
        mycluster.print_queue_info()
    if args.submit:
        mycluster.submit(args.submit)
    if args.sysscribe:
        mycluster.sysscribe_update(args.sysscribe)
    if args.jobid:
        if args.appname:
            mycluster.appname_update(args.jobid,args.appname)
        if args.appdata:
            mycluster.appdata_update(args.jobid,args.appdata)
        if not args.appname and not args.appdata:
            parser.print_help()
    if args.export:
        mycluster.export(args.export)
    if args.email:
        mycluster.email_update(args.email)
    if args.firstname:
        mycluster.firstname_update(args.firstname)
    if args.lastname:
        mycluster.lastname_update(args.lastname)
    if args.printjobs:
        mycluster.printjobs()
    if args.delete:
        mycluster.delete(args.delete)
    if args.create:
        if args.create and args.jobqueue and args.script and not args.taskpernode:
            mycluster.create_submit(args.jobqueue,
                                    script_name=args.create,
                                    my_script=args.script,
                                    my_name=args.jobname,
                                    my_output=args.jobname+'.out',
                                    num_tasks=args.ntasks,)
        elif args.create and args.jobqueue and args.script and args.taskpernode:
            mycluster.create_submit(args.jobqueue,
                                    script_name=args.create,
                                    my_script=args.script,
                                    my_name=args.jobname,
                                    my_output=args.jobname+'.out',
                                    num_tasks=args.ntasks,
                                    tasks_per_node=args.taskpernode,)
        else:
            parser.print_help()
        
            
            
if __name__ == "__main__":
    main()