Skip to content

Commit c363f61

Browse files
committed
system-status: merge in runners from remotes
Support adding to the overall JSON file runners from remote systems. Signed-off-by: Jakub Kicinski <[email protected]>
1 parent 18e476c commit c363f61

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed

system-status.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,30 @@ def add_remote_services(result, remote):
171171
data = json.loads(r.content.decode('utf-8'))
172172
result["remote"][remote["name"]] = data
173173

174+
# Collect runners from remote for later merging
175+
if "runners" in data:
176+
if "_remote_runners" not in result:
177+
result["_remote_runners"] = []
178+
result["_remote_runners"].append((remote["name"], data["runners"]))
179+
180+
181+
def merge_runners(result):
182+
"""Merge remote runners into result, prefixing only if multiple sources exist"""
183+
remote_runners = result.pop("_remote_runners", [])
184+
if not remote_runners:
185+
return
186+
187+
# Count sources: local + each remote that has runners
188+
num_sources = (1 if result["runners"] else 0) + sum(1 for _, r in remote_runners if r)
189+
need_prefix = num_sources > 1
190+
191+
if need_prefix and result["runners"]:
192+
result["runners"] = {f"local-{k}": v for k, v in result["runners"].items()}
193+
194+
for remote_name, runners in remote_runners:
195+
prefix = f"{remote_name}-" if need_prefix else ""
196+
result["runners"].update({f"{prefix}{k}": v for k, v in runners.items()})
197+
174198

175199
def get_metric_values(db_connection, source, category, name, limit=120):
176200
""" Query metrics from the DB """
@@ -284,6 +308,9 @@ def main():
284308
for remote in cfg["remote"]:
285309
add_remote_services(result, remote)
286310

311+
# Merge runners from remotes (after all remotes are fetched)
312+
merge_runners(result)
313+
287314
add_disk_size(result, "/")
288315

289316
if "db" in cfg and run_db:

0 commit comments

Comments
 (0)