A DANTE hold on missing hardware restarts Companion's Dante module.
Dante Virtual Soundcard on the four Macs is restarted directly; for hardware (consoles, racks, cards, AVIOs) nothing can be restarted from here, so a hold re-checks via a fresh Dante module connection (harmless to audio and routing). If the device is still gone it is really off or unplugged. A check's fix can now be "restart-connection", and a fix map can use "*" for every other sub-check. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
+13
-3
@@ -452,6 +452,9 @@ CHECKS = {
|
||||
|
||||
# Checks whose connection a long press may restart (Dante is shared, so not that one).
|
||||
RESTARTABLE = ("conn", "hyperdeck", "shure", "psm", "tascam")
|
||||
# A check's "fix" may name this instead of an entry in "fixes": restart its own Companion
|
||||
# connection. The Dante button uses it for hardware, which cannot be restarted from here.
|
||||
RESTART_CONNECTION = "restart-connection"
|
||||
|
||||
|
||||
def needed_variables(cfg):
|
||||
@@ -750,7 +753,13 @@ class Engine:
|
||||
continue
|
||||
fix_id = chk.get("fix")
|
||||
if isinstance(fix_id, dict):
|
||||
fix_id = fix_id.get(sub)
|
||||
fix_id = fix_id.get(sub, fix_id.get("*")) # "*": every other sub-check
|
||||
if fix_id == RESTART_CONNECTION and chk.get("conn"):
|
||||
ident = ("restart", chk["conn"]) # e.g. Companion's Dante module
|
||||
if ident not in seen:
|
||||
seen.add(ident)
|
||||
plan.append((ident, "restart", chk["conn"], chk))
|
||||
continue
|
||||
if fix_id:
|
||||
if chk["type"] == "hyperdeck" and hyperdeck_recording(snap, chk["conn"]):
|
||||
continue
|
||||
@@ -1233,9 +1242,10 @@ def load_config(path):
|
||||
for c in t.get("checks", []):
|
||||
fixes = c.get("fix") if isinstance(c.get("fix"), dict) else {"": c.get("fix")}
|
||||
for f in fixes.values():
|
||||
if f and f not in cfg.get("fixes", {}):
|
||||
if f and f != RESTART_CONNECTION and f not in cfg.get("fixes", {}):
|
||||
raise ValueError("tile %s: unknown fix %s" % (t["id"], f))
|
||||
if f and cfg["fixes"][f].get("kind", "ssh") == "ssh" and cfg["fixes"][f]["host"] not in cfg.get("hosts", {}):
|
||||
if (f and f != RESTART_CONNECTION and cfg["fixes"][f].get("kind", "ssh") == "ssh"
|
||||
and cfg["fixes"][f]["host"] not in cfg.get("hosts", {})):
|
||||
raise ValueError("fix %s: unknown host" % f)
|
||||
if c["type"] == "remote" and c["host"] not in cfg.get("hosts", {}):
|
||||
raise ValueError("tile %s: unknown host %s" % (t["id"], c["host"]))
|
||||
|
||||
Reference in New Issue
Block a user