def anon_jd(hash: str) -> Response: task_id = 0 job_id = hash2id(hash) try: job = Job.get_by_id(job_id, task_id) except LookupError: abort(404) tag = JobTag.query.get(job.id) performance = JobPerformance.query.get(job.id) metrics = JobMetrics.query.get(job.id) return render_template( "jd_anon.html", anon=True, hash=hash, job=job.to_dict(), tags=tag.to_dict(), monitoring=performance.to_dict(), metrics=metrics.to_dict(), app_config=current_app.app_config, get_color=partial( get_color, thresholds=current_app.app_config.monitoring["thresholds"]))
def __heatmap(job_id: int, task_id: int, sensor: str): try: job = Job.get_by_id(job_id, task_id) except LookupError: abort(404) sensor_class = SENSOR_CLASS_MAP[sensor] offset = current_app.app_config.monitoring["aggregation_interval"] data = sensor_class.get_heatmap(job.expanded_nodelist, job.t_start + offset, job.t_end) data_max_value = max(map(lambda x: max(x[2:]), data), default=0) nodes = sorted(list(set([line[1] for line in data]))) display_data = [] for entry in data: time, node_id, min_value, max_value, avg_value = entry # convert node ids to local indexing: 0, 1, 2, .. display_data.append((int(time) * 1000, nodes.index(node_id), min_value, max_value, avg_value)) return render_template( "heatmap.html", job=job.to_dict(), sensor=sensor, display_data=display_data, data_max_value=data_max_value, data_step=current_app.app_config.monitoring["aggregation_interval"] * 1000, max_value=data_max_value)
def add_new(db: SQLAlchemy, job_info: dict) -> Job: job_query = Job.query.filter(Job.job_id == job_info["job_id"]).filter( Job.task_id == job_info["task_id"]) job = job_query.scalar() if job is None: job = Job(**job_info) add(db, job) return job else: raise ValueError("job already exists: id={}".format(job.id))
def setUpClass(cls): TestSuit.setUpClass() cls.test_job = Job(5, 5, "test", "account", 1, 2, 3, 4, 5, 6, "RUNNING", 1, "command", "./", "node1-001-01") add(global_db, cls.test_job) tag = Tag("test2", "test2") global_db.session.add(tag) global_db.session.commit() autotag = AutoTag(tag.id, "job.t_end > 0") global_db.session.add(autotag) global_db.session.commit()
def jd(job_id: int, task_id: int) -> Response: try: job = Job.get_by_id(job_id, task_id) except LookupError: abort(404) tag = JobTag.query.get(job.id) performance = JobPerformance.query.get(job.id) metrics = JobMetrics.query.get(job.id) return render_template( "jd_full.html", anon=False, id2hash=id2hash, username2id=username2id, job=job.to_dict(), tags=tag.to_dict(), monitoring=performance.to_dict(), metrics=metrics.to_dict(), app_config=current_app.app_config, get_color=partial( get_color, thresholds=current_app.app_config.monitoring["thresholds"]))
def json_job(job_id: int, task_id: int) -> Response: try: return str(Job.get_by_id(job_id, task_id).id) except LookupError: abort(404)
def setUpClass(cls): TestSuit.setUpClass() cls.test_job = Job(4, 4, "test", "account", 1, 2, 3, 4, 5, 6, "RUNNING", 1, "command", "./", "node1-001-01") add(global_db, cls.test_job)