-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtask
executable file
·51 lines (42 loc) · 1.47 KB
/
task
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#!/usr/bin/python
from requests import get
from config import config
from sys import argv
from datetime import datetime
from getopt import getopt, GetoptError
import json, operator
# Limit - only display the latest N tasks
limit = 0
human_time = False
try:
opts, argvs = getopt(argv[1:], 'h', ['human-time'])
for key, value in opts:
if key in ('-h', '--human-time'):
human_time = True
limit = int(argvs[0])
except IndexError:
limit = 0
except (GetoptError, KeyError) as e:
print(e.message)
exit(0)
namenode_host = config['master']
resp = get('http://%s:8088/ws/v1/cluster/apps?states=FINISHED' % namenode_host)
try:
task_list = json.loads(resp.content)['apps']['app']
except KeyError:
print('No tasks in record.')
exit(0)
task_list = sorted(task_list, cmp=lambda x, y: operator.ge(x['startedTime'], y['startedTime']))
if limit > 0:
task_list = task_list[-limit:]
# print 'Task Name Start Time\tEnd Time'
for task in task_list:
task['name'] = task['name'].replace(' ', '_')
#task['name'] = task['name'].ljust(21)
if human_time:
start_dt = datetime.fromtimestamp(int(task['startedTime']) / 1000)
end_dt = datetime.fromtimestamp(int(task['finishedTime']) / 1000)
task_duration = end_dt - start_dt
print('%s %s\t%s -> %s' % (task['name'], str(start_dt), str(end_dt), str(task_duration)))
else:
print('%s %s\t%s' % (task['name'], task['startedTime'], task['finishedTime']))