def cache_tasks_counts(t): if GROUPING_MODE == 'python': res = dbs(t.id > 0).select(t.group_name, t.status, orderby=t.group_name|t.status, **TASKS_SUMMARY_KWARGS) rtn = {} for row in res: k = row.group_name s = row.status if k not in rtn: rtn[k] = defaultdict(lambda : { 'count' : 0, 'pretty' : nice_task_status(s)}) rtn[k][s]['count'] += 1 else: rtn[k][s]['count'] += 1 else: c = t.id.count() res = dbs(t.id > 0).select(c, t.group_name, t.status, groupby=t.group_name|t.status, **TASKS_SUMMARY_KWARGS) rtn = Storage() for row in res: k = row.scheduler_task.group_name s = row.scheduler_task.status if k not in rtn: rtn[k] = {s : { 'count' : row[c], 'pretty' : nice_task_status(s)}} else: rtn[k][s] = { 'count' : row[c], 'pretty' : nice_task_status(s)} return rtn
def run_details(): session.forget(response) task_id = request.args(0) if not task_id: return '' paginate = 10 try: page = int(request.vars.page or 1) - 1 except ValueError: page = 0 limitby = (paginate * page, paginate * (page + 1)) total = dbs(sr.task_id == task_id).count() q = sr.task_id == task_id qfilter = request.vars.qfilter if qfilter: parts = [] fields = [ sr.status, sr.run_result, sr.run_output, sr.traceback, sr.worker_name ] for a in fields: parts.append(a.contains(qfilter)) qf = reduce(lambda a, b: a | b, parts) q = q & qf runs = dbs(q).select(orderby=~sr.stop_time | ~sr.id, limitby=limitby) for row in runs: row.status_ = nice_task_status(row.status) if row.start_time and row.stop_time: td = row.stop_time - row.start_time td = (td.seconds + td.days * 24 * 3600) else: td = 0 row.elapsed_seconds_ = td return dict(runs=runs, paginate=paginate, total=total, page=page)
def run_details(): session.forget(response) task_id = request.args(0) if not task_id: return '' paginate = 10 try: page = int(request.vars.page or 1)-1 except ValueError: page = 0 limitby = (paginate*page,paginate*(page+1)) total = dbs(sr.task_id == task_id).count() q = sr.task_id == task_id qfilter = request.vars.qfilter if qfilter: parts = [] fields = [sr.status, sr.run_result, sr.run_output, sr.traceback, sr.worker_name] for a in fields: parts.append(a.contains(qfilter)) qf = reduce(lambda a, b: a | b, parts) q = q & qf runs = dbs(q).select(orderby=~sr.stop_time|~sr.id, limitby=limitby) for row in runs: row.status_ = nice_task_status(row.status) if row.start_time and row.stop_time: td = row.stop_time - row.start_time td = (td.seconds + td.days * 24 * 3600) else: td = 0 row.elapsed_seconds_ = td return dict(runs=runs, paginate=paginate, total=total, page=page)
def task_details(): session.forget(response) id = request.args(0) task = dbs(st.id == id).select().first() if not task: return '' task.status_ = nice_task_status(task.status) deps = dbs((sd.task_parent == id) | (sd.task_child == id)).select(sd.job_name, groupby=sd.job_name) deps = [row.job_name for row in deps] return dict(task=task, st=st, deps=deps)
def task_details(): session.forget(response) id = request.args(0) task = dbs(st.id == id).select().first() if not task: return '' task.status_ = nice_task_status(task.status) deps = dbs((sd.task_parent == id) | (sd.task_child == id)).select( sd.job_name, groupby=sd.job_name) deps = [row.job_name for row in deps] return dict(task=task, st=st, deps=deps)
def cache_tasks_counts(t): if GROUPING_MODE == 'python': res = dbs(t.id > 0).select(t.group_name, t.status, orderby=t.group_name | t.status, **TASKS_SUMMARY_KWARGS) rtn = {} for row in res: k = row.group_name s = row.status if k not in rtn: rtn[k] = defaultdict(lambda: { 'count': 0, 'pretty': nice_task_status(s) }) rtn[k][s]['count'] += 1 else: rtn[k][s]['count'] += 1 else: c = t.id.count() res = dbs(t.id > 0).select(c, t.group_name, t.status, groupby=t.group_name | t.status, **TASKS_SUMMARY_KWARGS) rtn = Storage() for row in res: k = row.scheduler_task.group_name s = row.scheduler_task.status if k not in rtn: rtn[k] = {s: {'count': row[c], 'pretty': nice_task_status(s)}} else: rtn[k][s] = {'count': row[c], 'pretty': nice_task_status(s)} return rtn
def task_group(): session.forget(response) group_name, status = request.args(0), request.args(1) if not group_name: return '' c = cache_tasks_counts(st) paginate = PAGINATE try: page = int(request.vars.page or 1) - 1 except ValueError: page = 0 limitby = (paginate * page, paginate * (page + 1)) q = (st.group_name == group_name) if status: q = q & (st.status == status) if group_name in c and status in c[group_name]: total = c[group_name][status]['count'] else: total = 0 else: if group_name in c: total = sum([a['count'] for a in c[group_name].values()]) else: total = 0 qfilter = request.vars.qfilter if qfilter: parts = [] fields = [ st.task_name, st.group_name, st.function_name, st.uuid, st.args, st.vars, st.assigned_worker_name ] for a in fields: parts.append(a.contains(qfilter)) qf = reduce(lambda a, b: a | b, parts) q = q & qf total = dbs(q).count() tasks = dbs(q).select(limitby=limitby, orderby=~st.next_run_time) for row in tasks: row.status_ = nice_task_status(row.status) BASEURL = URL("plugin_cs_monitor", "tactions", user_signature=True) return dict(tasks=tasks, paginate=paginate, total=total, page=page, BASEURL=BASEURL)
def task_group(): session.forget(response) group_name, status = request.args(0), request.args(1) if not group_name: return '' c = cache_tasks_counts(st) paginate = PAGINATE try: page = int(request.vars.page or 1) - 1 except ValueError: page = 0 limitby = (paginate * page, paginate * (page + 1)) q = (st.group_name == group_name) if status: q = q & (st.status == status) if group_name in c and status in c[group_name]: total = c[group_name][status]['count'] else: total = 0 else: if group_name in c: total = sum([a['count'] for a in c[group_name].values()]) else: total = 0 qfilter = request.vars.qfilter if qfilter: parts = [] fields = [st.task_name, st.group_name, st.function_name, st.uuid, st.args, st.vars, st.assigned_worker_name] for a in fields: parts.append(a.contains(qfilter)) qf = reduce(lambda a, b: a | b, parts) q = q & qf total = dbs(q).count() tasks = dbs(q).select(limitby=limitby, orderby=~st.next_run_time) for row in tasks: row.status_ = nice_task_status(row.status) BASEURL = URL("plugin_cs_monitor", "tactions", user_signature=True) return dict(tasks=tasks, paginate=paginate, total=total, page=page, BASEURL=BASEURL)