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:
2026-10-08 12:42:00 -04:00
co-authored by Claude Opus 5.5
parent df4da8f42e
commit 7c5f086bd5
3 changed files with 20 additions and 12 deletions
+6 -8
View File
@@ -461,9 +461,9 @@ class TestFixes(unittest.TestCase):
def test_dante_reopens_dvs_on_the_right_mac(self):
devices = json.loads(self.snap.vars[("audinate-dantecontroller", "devices")])
devices.remove("NA-ProPresenter-Mac")
devices.remove("BOH-WING") # no fix for a console
devices.remove("BOH-WING") # hardware: re-check via Companion's Dante module
self.snap.vars[("audinate-dantecontroller", "devices")] = json.dumps(devices)
self.assertEqual(self.plan("dante"), [("fix", "dvs_prop")])
self.assertEqual(self.plan("dante"), [("restart", "audinate-dantecontroller"), ("fix", "dvs_prop")])
def test_rec_reboots_only_hung_decks_not_recording_ones(self):
for i in (2, 3, 5):
@@ -543,13 +543,11 @@ class TestFixes(unittest.TestCase):
devices.remove("STUDIO-A-Ingest")
self.snap.vars[("audinate-dantecontroller", "devices")] = json.dumps(devices)
self.assertEqual(self.plan("dante"), [("fix", "dvs_ingest")])
# A failure with no fix (a console) must not claim there is nothing wrong.
devices.append("STUDIO-A-Ingest")
devices.remove("BOH-WING")
self.snap.vars[("audinate-dantecontroller", "devices")] = json.dumps(devices)
# A failure with no fix must not claim there is nothing wrong.
self.snap.midi["NA Ingest"]["peers"] = []
_, t = run_steps(self.engine, self.snap, SUNDAY, 4)
self.engine.run_fixes("dante", self.snap, None, t)
self.assertEqual(self.engine.notes["dante"]["text"], "NO AUTO\nFIX")
self.engine.run_fixes("midi", self.snap, None, t)
self.assertEqual(self.engine.notes["midi"]["text"], "NO AUTO\nFIX")
def test_hold_on_a_green_button_says_so(self):
_, t = run_steps(self.engine, self.snap, SUNDAY, 2)