Resi cues connection errors are amber (check option amber): 'Poll failed' is not the stream down
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
+2
-1
@@ -2489,7 +2489,8 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"conn": "resi-studio-cues",
|
"conn": "resi-studio-cues",
|
||||||
"type": "conn"
|
"type": "conn",
|
||||||
|
"amber": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "CLOUD",
|
"name": "CLOUD",
|
||||||
|
|||||||
@@ -294,6 +294,8 @@ field("tiles[].checks[].service_only", "bool", False, "Legacy: only during a ser
|
|||||||
"are armed all day).", "Keys", advanced=True)
|
"are armed all day).", "Keys", advanced=True)
|
||||||
field("tiles[].checks[].debounce_seconds", "int", None, "Wait before this check's fault shows.", "Keys", advanced=True,
|
field("tiles[].checks[].debounce_seconds", "int", None, "Wait before this check's fault shows.", "Keys", advanced=True,
|
||||||
lo=0, hi=60)
|
lo=0, hi=60)
|
||||||
|
field("tiles[].checks[].amber", "bool", False, "A Companion connection whose errors show amber, not red (a cloud helper "
|
||||||
|
"like Resi cues: its trouble is not the stream being down).", "Keys", advanced=True)
|
||||||
field("tiles[].checks[].ignore_warning", "bool", False, "Ignore Companion's yellow warning state.", "Keys")
|
field("tiles[].checks[].ignore_warning", "bool", False, "Ignore Companion's yellow warning state.", "Keys")
|
||||||
field("tiles[].checks[].optional", "bool", False, "A HyperDeck that may have no disk (grey, no alarm).", "Keys")
|
field("tiles[].checks[].optional", "bool", False, "A HyperDeck that may have no disk (grey, no alarm).", "Keys")
|
||||||
field("tiles[].checks[].disk_service_only", "bool", True, "NO DISK only during a service.", "Keys", advanced=True)
|
field("tiles[].checks[].disk_service_only", "bool", True, "NO DISK only during a service.", "Keys", advanced=True)
|
||||||
@@ -480,7 +482,7 @@ field("ready.mic_positions", "dict", {}, "Other PCO positions and the mic they n
|
|||||||
# fields: the keys that type reads; subs: the sub-check names it returns (fix tables use them);
|
# fields: the keys that type reads; subs: the sub-check names it returns (fix tables use them);
|
||||||
# identity: what it is about; module: the Companion module its connection is expected to use.
|
# identity: what it is about; module: the Companion module its connection is expected to use.
|
||||||
CHECKS = {
|
CHECKS = {
|
||||||
"conn": {"fields": ["conn", "service_only", "ignore_warning"], "subs": ["conn"], "identity": ["conn"], "module": None,
|
"conn": {"fields": ["conn", "service_only", "ignore_warning", "amber"], "subs": ["conn"], "identity": ["conn"], "module": None,
|
||||||
"question": "Is a device answering?", "words": "A Companion connection is good."},
|
"question": "Is a device answering?", "words": "A Companion connection is good."},
|
||||||
"hyperdeck": {"fields": ["conn", "optional", "disk_service_only", "full_minutes", "low_minutes", "rec_sync", "ip"],
|
"hyperdeck": {"fields": ["conn", "optional", "disk_service_only", "full_minutes", "low_minutes", "rec_sync", "ip"],
|
||||||
"subs": ["conn", "disk", "rec"], "identity": ["conn"], "module": "bmd-hyperdeck",
|
"subs": ["conn", "disk", "rec"], "identity": ["conn"], "module": "bmd-hyperdeck",
|
||||||
|
|||||||
@@ -273,6 +273,9 @@ def check_conn(chk, snap, ctx):
|
|||||||
c = snap.conns.get(chk["conn"], {})
|
c = snap.conns.get(chk["conn"], {})
|
||||||
if chk.get("ignore_warning") and res.level == WARN and c.get("enabled") and c.get("category") == "warning":
|
if chk.get("ignore_warning") and res.level == WARN and c.get("enabled") and c.get("category") == "warning":
|
||||||
res = Result(OK)
|
res = Result(OK)
|
||||||
|
if chk.get("amber") and res.level == ERR and c.get("enabled"):
|
||||||
|
# A cloud helper (Resi cues): its error is not the stream being down (2026-10-25: "Poll failed").
|
||||||
|
res = Result(WARN, res.msg, service_only=res.service_only)
|
||||||
return [("conn", res)]
|
return [("conn", res)]
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -355,6 +355,9 @@ class TestChecks(unittest.TestCase):
|
|||||||
tiles, _ = run_steps(sp.Engine(CONFIG), self.snap, self.now, 4)
|
tiles, _ = run_steps(sp.Engine(CONFIG), self.snap, self.now, 4)
|
||||||
self.assertEqual(tiles["resi"]["x"], "RESI\nRATE LIMITED")
|
self.assertEqual(tiles["resi"]["x"], "RESI\nRATE LIMITED")
|
||||||
self.assertNotEqual(level(tiles["resi"]), "err")
|
self.assertNotEqual(level(tiles["resi"]), "err")
|
||||||
|
self.snap.conns["resi-studio-cues"]["message"] = "Poll failed" # its other error: amber too ("amber" on its check)
|
||||||
|
tiles, _ = run_steps(sp.Engine(CONFIG), self.snap, self.now, 4)
|
||||||
|
self.assertNotEqual(level(tiles["resi"]), "err")
|
||||||
|
|
||||||
def test_resi_audio_silent(self):
|
def test_resi_audio_silent(self):
|
||||||
"""An input stuck at the meter floor (2026-10-25: the Resi AJA passed no Dante audio and nothing said so):
|
"""An input stuck at the meter floor (2026-10-25: the Resi AJA passed no Dante audio and nothing said so):
|
||||||
|
|||||||
Reference in New Issue
Block a user