From 3b04ddbae7b1f168944e1cc2c8f3d41a6363d89d Mon Sep 17 00:00:00 2001
From: Thomas Kluyver <thomas.kluyver@xfel.eu>
Date: Mon, 30 Sep 2024 17:06:54 +0100
Subject: [PATCH] Simplify getting hostname in serve_overview

---
 webservice/config/serve_overview.yaml |  1 -
 webservice/serve_overview.py          | 14 +++-----------
 2 files changed, 3 insertions(+), 12 deletions(-)

diff --git a/webservice/config/serve_overview.yaml b/webservice/config/serve_overview.yaml
index 535c04ba6..2da8f8cbc 100644
--- a/webservice/config/serve_overview.yaml
+++ b/webservice/config/serve_overview.yaml
@@ -10,7 +10,6 @@ templates:
 
 shell-commands:
   total-jobs: "sinfo -p exfel -o %A --noheader"
-  job-nodes: "squeue --me -o %i,%N --noheader"
   tail-log: "tail -5000 web.log"
   tail-log-monitor: "tail -5000 monitor.log"
 
diff --git a/webservice/serve_overview.py b/webservice/serve_overview.py
index 3ce5f3da8..7053f6273 100644
--- a/webservice/serve_overview.py
+++ b/webservice/serve_overview.py
@@ -39,7 +39,6 @@ class RequestHandler(BaseHTTPRequestHandler):
     def init_config(self):
         self.total_jobs_cmd = config["shell-commands"]["total-jobs"]
         self.tail_log_cmd = config["shell-commands"]["tail-log"]
-        self.job_nodes_cmd = config["shell-commands"]["job-nodes"]
         self.run_candidates = config["run-candidates"]
 
         self.templates = {}
@@ -186,7 +185,7 @@ class RequestHandler(BaseHTTPRequestHandler):
         )
 
         c = self.jobs_db.execute(
-            "SELECT job_id, status, elapsed, det_type, proposal, run, action "
+            "SELECT job_id, status, elapsed, hostname, det_type, proposal, run, action "
             "FROM slurm_jobs INNER JOIN executions USING (exec_id) "
             "INNER JOIN requests USING (req_id) "
             "WHERE finished = 0"
@@ -195,14 +194,7 @@ class RequestHandler(BaseHTTPRequestHandler):
         now = datetime.now()
         running_jobs = {}
 
-        # Mapping of job ID (str) to node for running jobs.
-        job_nodes = dict([
-            x.split(",") for x in check_output(
-                self.job_nodes_cmd, shell=True).decode("utf-8").split("\n")
-            if x
-        ])
-
-        for job_id, status, elapsed, det, proposal, run, act in c:
+        for job_id, status, elapsed, job_node, det, proposal, run, act in c:
             key = f'{proposal}/r{int(run):04d}/{det}/{act}'
             flg = "Q" if status in {"QUEUE", "PENDING"} else "R"
             rjobs = running_jobs.setdefault(key, [])
@@ -211,7 +203,7 @@ class RequestHandler(BaseHTTPRequestHandler):
                 flg,
                 f'{status[0]}-{elapsed}',
                 datetime_to_grafana(now - elapsed_to_timedelta(elapsed)),
-                job_nodes.get(str(job_id), '')
+                job_node
             ))
 
         tmpl = self.templates["running-jobs"]
-- 
GitLab