#!/usr/bin/env python
#
# Autogenerated by Thrift Compiler (0.9.0)
#
# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
#
#  options string: py:new_style
#

import sys
import pprint
from urlparse import urlparse
from thrift.transport import TTransport
from thrift.transport import TSocket
from thrift.transport import THttpClient
from thrift.protocol import TBinaryProtocol

import Jobtracker
from ttypes import *

if len(sys.argv) <= 1 or sys.argv[1] == '--help':
  print ''
  print 'Usage: ' + sys.argv[0] + ' [-h host[:port]] [-u url] [-f[ramed]] function [arg1 [arg2...]]'
  print ''
  print 'Functions:'
  print '  string getJobTrackerName(RequestContext ctx)'
  print '  ThriftClusterStatus getClusterStatus(RequestContext ctx)'
  print '  ThriftJobQueueList getQueues(RequestContext ctx)'
  print '  ThriftJobInProgress getJob(RequestContext ctx, ThriftJobID jobID)'
  print '  ThriftJobList getRunningJobs(RequestContext ctx)'
  print '  ThriftJobList getCompletedJobs(RequestContext ctx)'
  print '  ThriftJobInProgress getRetiredJob(RequestContext ctx, ThriftJobID jobID)'
  print '  ThriftJobList getRetiredJobs(RequestContext ctx, ThriftJobState state)'
  print '  ThriftJobList getFailedJobs(RequestContext ctx)'
  print '  ThriftJobList getKilledJobs(RequestContext ctx)'
  print '  ThriftJobList getAllJobs(RequestContext ctx)'
  print '  ThriftUserJobCounts getUserJobCounts(RequestContext ctx, string user)'
  print '  ThriftTaskInProgressList getTaskList(RequestContext ctx, ThriftJobID jobID,  types,  states, string text, i32 count, i32 offset)'
  print '  ThriftTaskInProgress getTask(RequestContext ctx, ThriftTaskID taskID)'
  print '  ThriftGroupList getJobCounters(RequestContext ctx, ThriftJobID jobID)'
  print '  ThriftJobCounterRollups getJobCounterRollups(RequestContext ctx, ThriftJobID jobID)'
  print '  ThriftTaskTrackerStatusList getActiveTrackers(RequestContext ctx)'
  print '  ThriftTaskTrackerStatusList getBlacklistedTrackers(RequestContext ctx)'
  print '  ThriftTaskTrackerStatusList getAllTrackers(RequestContext ctx)'
  print '  ThriftTaskTrackerStatus getTracker(RequestContext ctx, string name)'
  print '  i64 getCurrentTime(RequestContext ctx)'
  print '  string getJobConfXML(RequestContext ctx, ThriftJobID jobID)'
  print '  void killJob(RequestContext ctx, ThriftJobID jobID)'
  print '  void killTaskAttempt(RequestContext ctx, ThriftTaskAttemptID attemptID)'
  print '  void setJobPriority(RequestContext ctx, ThriftJobID jobID, ThriftJobPriority priority)'
  print '  ThriftDelegationToken getDelegationToken(RequestContext ctx, string renewer)'
  print ''
  sys.exit(0)

pp = pprint.PrettyPrinter(indent = 2)
host = 'localhost'
port = 9090
uri = ''
framed = False
http = False
argi = 1

if sys.argv[argi] == '-h':
  parts = sys.argv[argi+1].split(':')
  host = parts[0]
  if len(parts) > 1:
    port = int(parts[1])
  argi += 2

if sys.argv[argi] == '-u':
  url = urlparse(sys.argv[argi+1])
  parts = url[1].split(':')
  host = parts[0]
  if len(parts) > 1:
    port = int(parts[1])
  else:
    port = 80
  uri = url[2]
  if url[4]:
    uri += '?%s' % url[4]
  http = True
  argi += 2

if sys.argv[argi] == '-f' or sys.argv[argi] == '-framed':
  framed = True
  argi += 1

cmd = sys.argv[argi]
args = sys.argv[argi+1:]

if http:
  transport = THttpClient.THttpClient(host, port, uri)
else:
  socket = TSocket.TSocket(host, port)
  if framed:
    transport = TTransport.TFramedTransport(socket)
  else:
    transport = TTransport.TBufferedTransport(socket)
protocol = TBinaryProtocol.TBinaryProtocol(transport)
client = Jobtracker.Client(protocol)
transport.open()

if cmd == 'getJobTrackerName':
  if len(args) != 1:
    print 'getJobTrackerName requires 1 args'
    sys.exit(1)
  pp.pprint(client.getJobTrackerName(eval(args[0]),))

elif cmd == 'getClusterStatus':
  if len(args) != 1:
    print 'getClusterStatus requires 1 args'
    sys.exit(1)
  pp.pprint(client.getClusterStatus(eval(args[0]),))

elif cmd == 'getQueues':
  if len(args) != 1:
    print 'getQueues requires 1 args'
    sys.exit(1)
  pp.pprint(client.getQueues(eval(args[0]),))

elif cmd == 'getJob':
  if len(args) != 2:
    print 'getJob requires 2 args'
    sys.exit(1)
  pp.pprint(client.getJob(eval(args[0]),eval(args[1]),))

elif cmd == 'getRunningJobs':
  if len(args) != 1:
    print 'getRunningJobs requires 1 args'
    sys.exit(1)
  pp.pprint(client.getRunningJobs(eval(args[0]),))

elif cmd == 'getCompletedJobs':
  if len(args) != 1:
    print 'getCompletedJobs requires 1 args'
    sys.exit(1)
  pp.pprint(client.getCompletedJobs(eval(args[0]),))

elif cmd == 'getRetiredJob':
  if len(args) != 2:
    print 'getRetiredJob requires 2 args'
    sys.exit(1)
  pp.pprint(client.getRetiredJob(eval(args[0]),eval(args[1]),))

elif cmd == 'getRetiredJobs':
  if len(args) != 2:
    print 'getRetiredJobs requires 2 args'
    sys.exit(1)
  pp.pprint(client.getRetiredJobs(eval(args[0]),eval(args[1]),))

elif cmd == 'getFailedJobs':
  if len(args) != 1:
    print 'getFailedJobs requires 1 args'
    sys.exit(1)
  pp.pprint(client.getFailedJobs(eval(args[0]),))

elif cmd == 'getKilledJobs':
  if len(args) != 1:
    print 'getKilledJobs requires 1 args'
    sys.exit(1)
  pp.pprint(client.getKilledJobs(eval(args[0]),))

elif cmd == 'getAllJobs':
  if len(args) != 1:
    print 'getAllJobs requires 1 args'
    sys.exit(1)
  pp.pprint(client.getAllJobs(eval(args[0]),))

elif cmd == 'getUserJobCounts':
  if len(args) != 2:
    print 'getUserJobCounts requires 2 args'
    sys.exit(1)
  pp.pprint(client.getUserJobCounts(eval(args[0]),args[1],))

elif cmd == 'getTaskList':
  if len(args) != 7:
    print 'getTaskList requires 7 args'
    sys.exit(1)
  pp.pprint(client.getTaskList(eval(args[0]),eval(args[1]),eval(args[2]),eval(args[3]),args[4],eval(args[5]),eval(args[6]),))

elif cmd == 'getTask':
  if len(args) != 2:
    print 'getTask requires 2 args'
    sys.exit(1)
  pp.pprint(client.getTask(eval(args[0]),eval(args[1]),))

elif cmd == 'getJobCounters':
  if len(args) != 2:
    print 'getJobCounters requires 2 args'
    sys.exit(1)
  pp.pprint(client.getJobCounters(eval(args[0]),eval(args[1]),))

elif cmd == 'getJobCounterRollups':
  if len(args) != 2:
    print 'getJobCounterRollups requires 2 args'
    sys.exit(1)
  pp.pprint(client.getJobCounterRollups(eval(args[0]),eval(args[1]),))

elif cmd == 'getActiveTrackers':
  if len(args) != 1:
    print 'getActiveTrackers requires 1 args'
    sys.exit(1)
  pp.pprint(client.getActiveTrackers(eval(args[0]),))

elif cmd == 'getBlacklistedTrackers':
  if len(args) != 1:
    print 'getBlacklistedTrackers requires 1 args'
    sys.exit(1)
  pp.pprint(client.getBlacklistedTrackers(eval(args[0]),))

elif cmd == 'getAllTrackers':
  if len(args) != 1:
    print 'getAllTrackers requires 1 args'
    sys.exit(1)
  pp.pprint(client.getAllTrackers(eval(args[0]),))

elif cmd == 'getTracker':
  if len(args) != 2:
    print 'getTracker requires 2 args'
    sys.exit(1)
  pp.pprint(client.getTracker(eval(args[0]),args[1],))

elif cmd == 'getCurrentTime':
  if len(args) != 1:
    print 'getCurrentTime requires 1 args'
    sys.exit(1)
  pp.pprint(client.getCurrentTime(eval(args[0]),))

elif cmd == 'getJobConfXML':
  if len(args) != 2:
    print 'getJobConfXML requires 2 args'
    sys.exit(1)
  pp.pprint(client.getJobConfXML(eval(args[0]),eval(args[1]),))

elif cmd == 'killJob':
  if len(args) != 2:
    print 'killJob requires 2 args'
    sys.exit(1)
  pp.pprint(client.killJob(eval(args[0]),eval(args[1]),))

elif cmd == 'killTaskAttempt':
  if len(args) != 2:
    print 'killTaskAttempt requires 2 args'
    sys.exit(1)
  pp.pprint(client.killTaskAttempt(eval(args[0]),eval(args[1]),))

elif cmd == 'setJobPriority':
  if len(args) != 3:
    print 'setJobPriority requires 3 args'
    sys.exit(1)
  pp.pprint(client.setJobPriority(eval(args[0]),eval(args[1]),eval(args[2]),))

elif cmd == 'getDelegationToken':
  if len(args) != 2:
    print 'getDelegationToken requires 2 args'
    sys.exit(1)
  pp.pprint(client.getDelegationToken(eval(args[0]),args[1],))

else:
  print 'Unrecognized method %s' % cmd
  sys.exit(1)

transport.close()
