5 import mongodb_store_msgs.srv
as dc_srv
6 import mongodb_store.util
as dc_util
7 from mongodb_store.message_store
import MessageStoreProxy
9 from datetime
import datetime
10 from task_executor
import task_routine
15 return [ x
for x
in results
if x[0]
not in seen
and not seen_add(x[0])]
17 def query_tasks(msg_store, task_id=None, action=None, start_date=None, end_date=None, event=None):
22 if task_id
is not None:
23 msg_query[
"task.task_id"] = task_id
25 if action
is not None:
26 msg_query[
"task.action"] = action
29 if not isinstance(event, list):
35 event_qs.append({
'event': e})
37 msg_query[
'$or'] = event_qs
39 if start_date
is not None:
41 meta_query[
"inserted_at"] = {
"$gte": start_date}
43 meta_query[
"inserted_at"] = {
"$gte": start_date,
"$lte" : end_date}
44 elif end_date
is not None:
45 meta_query[
"inserted_at"] = {
"$lte": end_date}
48 results = msg_store.query(TaskEvent._type, message_query=msg_query,
49 meta_query=meta_query, single=
False)
53 results.sort(key=
lambda x: x[0].time.to_sec())
58 if te == TaskEvent.ADDED:
60 elif te == TaskEvent.DEMANDED:
62 elif te == TaskEvent.TASK_STARTED:
64 elif te == TaskEvent.NAVIGATION_STARTED:
65 return 'NAVIGATION_STARTED'
66 elif te == TaskEvent.NAVIGATION_SUCCEEDED:
67 return 'NAVIGATION_SUCCEEDED'
68 elif te == TaskEvent.NAVIGATION_FAILED:
69 return 'NAVIGATION_FAILED'
70 elif te == TaskEvent.NAVIGATION_PREEMPTED:
71 return 'NAVIGATION_PREEMPTED'
72 elif te == TaskEvent.EXECUTION_STARTED:
73 return 'EXECUTION_STARTED'
74 elif te == TaskEvent.EXECUTION_SUCCEEDED:
75 return 'EXECUTION_SUCCEEDED'
76 elif te == TaskEvent.EXECUTION_FAILED:
77 return 'EXECUTION_FAILED'
78 elif te == TaskEvent.EXECUTION_PREEMPTED:
79 return 'EXECUTION_PREEMPTED'
80 elif te == TaskEvent.CANCELLED_MANUALLY:
81 return 'CANCELLED_MANUALLY'
82 elif te == TaskEvent.DROPPED:
84 elif te == TaskEvent.TASK_FINISHED:
85 return 'TASK_FINISHED'
86 elif te == TaskEvent.TASK_FAILED:
88 elif te == TaskEvent.TASK_SUCCEEDED:
89 return 'TASK_SUCCEEDED'
90 elif te == TaskEvent.TASK_PREEMPTED:
91 return 'TASK_PREEMPTED'
96 """ Prints a single event """
97 print 'task %s\t%s\t%s\t%s\t%s' % (task_event.task.task_id, task_event.task.action, task_event.task.start_node_id,
task_event_string(task_event.event), datetime.utcfromtimestamp(task_event.time.to_sec()).strftime(
'%d/%m/%y %H:%M:%S'))
101 if len(results) == 0:
102 print 'No task events match the query'
108 for task_event, meta
in results:
109 if task_event.task.action ==
'':
110 task_event.task.action =
'no action'
112 if task_event.event > TaskEvent.DEMANDED:
113 if task_event.task.task_id != tid:
114 tid = task_event.task.task_id
117 output.append([
'task %s' % task_event.task.task_id, task_event.task.action, task_event.task.start_node_id,
task_event_string(task_event.event), datetime.utcfromtimestamp(task_event.time.to_sec()).strftime(
'%d/%m/%y %H:%M:%S')])
120 col_width = max(len(word)
for row
in output
for word
in row) + 4
122 if isinstance(row, list):
123 print "".join(word.ljust(col_width)
for word
in row)
129 return datetime.strptime(date_string,
'%d/%m/%y %H:%M')
def mkdatetime(date_string)
def remove_duplicates(results)
def print_event(task_event)
def task_event_string(te)