ops(albok): vh joins every albok read group; macOS withdrawal-test run staged
Prime, 2026-10-09: "vh gets albok-everything". playbooks/nh3-albok-vh-viewer.yaml joins vh to albok-read, albok-personal and albok-feedback on nh3-albok and authorizes his four Macs' public keys for vh; verified at a fresh login that every wing's .browse/ lists and reads. The withdrawal harness gains a macOS driver (run-mac.sh: every mountable FUSE backend, a read-only smoke of the real wings, results copied back), env overrides for a non-container client, and summarize.py. Sanity-checked as vh from the Linux container before staging.
This commit is contained in:
@@ -34,11 +34,16 @@ SRV = os.environ.get("ALBOK_TEST_SRV", "infra-ops@10.100.50.44")
|
||||
KEY = os.environ.get("ALBOK_TEST_KEY", "/keys/id")
|
||||
KH = os.environ.get("ALBOK_TEST_KNOWN_HOSTS", "/keys/known_hosts")
|
||||
MNT = os.environ.get("ALBOK_TEST_MNT", "/mnt/browse")
|
||||
SSH_OPTS = ["-i", KEY, "-o", "BatchMode=yes", "-o", f"UserKnownHostsFile={KH}",
|
||||
"-o", "StrictHostKeyChecking=yes", "-o", "ControlMaster=auto",
|
||||
"-o", "ControlPath=/tmp/cm-%r@%h", "-o", "ControlPersist=900"]
|
||||
SSHFS_BASE = ["ro", "follow_symlinks", f"IdentityFile={KEY}", f"UserKnownHostsFile={KH}",
|
||||
"StrictHostKeyChecking=yes", "BatchMode=yes"]
|
||||
# An empty KEY / KNOWN_HOSTS means "use the client's own ssh config" (a workstation run).
|
||||
_id = (["-i", KEY] if KEY else []) + (["-o", f"UserKnownHostsFile={KH}"] if KH else [])
|
||||
SSH_OPTS = _id + ["-o", "BatchMode=yes", "-o", "StrictHostKeyChecking=yes",
|
||||
"-o", "ControlMaster=auto", "-o", "ControlPath=/tmp/cm-%r@%h",
|
||||
"-o", "ControlPersist=900"]
|
||||
SSHFS_BASE = (["ro", "follow_symlinks"] + ([f"IdentityFile={KEY}"] if KEY else [])
|
||||
+ ([f"UserKnownHostsFile={KH}"] if KH else [])
|
||||
+ ["StrictHostKeyChecking=yes", "BatchMode=yes"]
|
||||
# e.g. backend=fskit on macOS: the FUSE backend under test
|
||||
+ [o for o in os.environ.get("ALBOK_TEST_EXTRA_OPTS", "").split(",") if o])
|
||||
AGGRESSIVE = ["kernel_cache", "entry_timeout=3600", "attr_timeout=3600",
|
||||
"dir_cache=yes", "dcache_timeout=3600"]
|
||||
CONDITIONS = [("null", [], None), ("default", [], "ok"),
|
||||
@@ -157,7 +162,8 @@ def trial(cond, extra, rename, k, slot):
|
||||
finally:
|
||||
if fd_b is not None:
|
||||
os.close(fd_b)
|
||||
for um in (["fusermount3", "-u", MNT], ["fusermount", "-u", MNT], ["umount", MNT]):
|
||||
for um in (["fusermount3", "-u", MNT], ["fusermount", "-u", MNT], ["umount", MNT],
|
||||
["diskutil", "unmount", "force", MNT]):
|
||||
try:
|
||||
if subprocess.run(um, capture_output=True).returncode == 0:
|
||||
break
|
||||
|
||||
Reference in New Issue
Block a user