Esempio n. 1
0
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"]))
Esempio n. 2
0
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)
Esempio n. 3
0
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))
Esempio n. 4
0
    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()
Esempio n. 5
0
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)
Esempio n. 7
0
    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)