feat(nh3-svos): SVOS a737a06 refresh — app-terminal on its own mesh origin (svos-terminal.phasefinal.com), app-knowledge, app-postoffice units; quiesce hook covers the new units

This commit is contained in:
vh
2026-10-07 23:17:18 -07:00
parent 9e972872e6
commit 469b3ba3cf
9 changed files with 216 additions and 2 deletions
+2 -1
View File
@@ -11,7 +11,8 @@ import sys
import tempfile
import time
SERVICES = ('svos-kernel.service', 'svos-interface.service')
SERVICES = ('svos-kernel.service', 'svos-interface.service', 'svos-terminal.service',
'svos-knowledge.service', 'svos-postoffice.service')
class Quiesce:
def __init__(self, directory, *, run=None):
+3
View File
@@ -10,3 +10,6 @@
- Runs under `../fsfreeze-dispatch`, which qemu-ga calls via `/etc/qemu/qemu-ga.conf`. Without that config,
Debian's qemu-ga runs no hooks at all.
- If the voice service is ever enabled, add it to `SERVICES` before enabling it (svos-dev).
- 2026-10-07 (a737a06 refresh): `SERVICES` gained `svos-terminal`, `svos-knowledge` and `svos-postoffice` before
they were started. The hook restores only the units that were active at freeze, so a declared-but-stopped app
(postoffice until its bridge handle exists) is recorded as inactive and left stopped.
+2 -1
View File
@@ -9,7 +9,8 @@ class QuiesceTests(unittest.TestCase):
loader=importlib.machinery.SourceFileLoader('svos_quiesce',str(Path(__file__).with_name('50-svos')))
spec=importlib.util.spec_from_loader('svos_quiesce',loader)
self.module=importlib.util.module_from_spec(spec);spec.loader.exec_module(self.module)
self.states={'svos-kernel.service':('active','success'),'svos-interface.service':('inactive','success')}
self.states={'svos-kernel.service':('active','success'),'svos-interface.service':('inactive','success'),
'svos-terminal.service':('inactive','success'),'svos-knowledge.service':('inactive','success'),'svos-postoffice.service':('inactive','success')}
self.calls=[];self.stop_fail=False;self.start_fail=False;self.dirty_stop=False
def run(args,**kwargs):
self.calls.append(args)