From 940d831fdc4f49a86ac0cd395339cec8e8b06760 Mon Sep 17 00:00:00 2001 From: Steven Noonan Date: Fri, 17 Jul 2026 10:37:23 -0700 Subject: [PATCH 1/3] feat(systemd): update the service list to match shipping components Signed-off-by: Steven Noonan --- edera-debug-report | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/edera-debug-report b/edera-debug-report index c05bb95..28560b2 100644 --- a/edera-debug-report +++ b/edera-debug-report @@ -1067,12 +1067,21 @@ def collect_all( # because they're very directly relevant to debugging Edera Protect # problems. services = [ + # Edera services, current shipping daemons + "kube-spdy-proxy.service", "protect-cri.service", "protect-daemon.service", + "protect-gpu-scrub.service", + "protect-meminfo.service", + "protect-monitor.service", "protect-network.service", - "protect-orchestrator.service", "protect-preinit.service", "protect-storage.service", + "xenstored.service", + # Edera services, deprecated but may still be present on older + # hosts + "protect-orchestrator.service", + # Non-Edera services, specific to Kubernetes "containerd.service", "kubelet.service", ] From 77243b8ef9831883c915cf76362b1533a4474957 Mon Sep 17 00:00:00 2001 From: Steven Noonan Date: Fri, 17 Jul 2026 10:43:49 -0700 Subject: [PATCH 2/3] feat(host): capture hv-zone-details Signed-off-by: Steven Noonan --- edera-debug-report | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/edera-debug-report b/edera-debug-report index 28560b2..1d2faf5 100644 --- a/edera-debug-report +++ b/edera-debug-report @@ -1157,6 +1157,13 @@ def collect_all( [prot, "host", "hv-debug-info"], timeout_s=30.0, ) + run_and_write( + log, + aw, + f"{top_name}/hv_zone_details.txt", + [prot, "host", "hv-zone-details", "-o", "json"], + timeout_s=30.0, + ) else: log.append( "FAIL: Neither 'xl' nor 'protect' found for Xen dom0 collection." From f4f5198a1128da6b283e0e2ffa97480f3958b2cd Mon Sep 17 00:00:00 2001 From: Steven Noonan Date: Fri, 17 Jul 2026 10:47:10 -0700 Subject: [PATCH 3/3] fix(protect): resolve protect-ctl/protect one way only We had two different namings being looked up, so we got a mixed-bag collection result on one dev box. Signed-off-by: Steven Noonan --- edera-debug-report | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/edera-debug-report b/edera-debug-report index 1d2faf5..bb8b2b5 100644 --- a/edera-debug-report +++ b/edera-debug-report @@ -55,6 +55,20 @@ def which(cmd: str) -> Optional[str]: return shutil.which(cmd) +_protect_cli: Optional[str] = None +_protect_cli_resolved = False + + +def which_protect() -> Optional[str]: + """Resolve the Edera CLI, memoized. Full retail installs ship it as + `protect`; dev machines typically have `protect-ctl`. Same tool.""" + global _protect_cli, _protect_cli_resolved + if not _protect_cli_resolved: + _protect_cli = which("protect") or which("protect-ctl") + _protect_cli_resolved = True + return _protect_cli + + def _progress(msg: str) -> None: """Single-line progress to stderr. When something hangs, the last line printed identifies the offending command.""" @@ -917,9 +931,11 @@ def collect_protect_zone_logs( `{top_name}/protect/`. Should run before journal collection so the journal capture includes any activity from these calls. """ - protect_ctl = which("protect-ctl") + protect_ctl = which_protect() if not protect_ctl: - log.append("INFO: protect-ctl not found; skipping protect zone log collection") + log.append( + "INFO: protect/protect-ctl not found; skipping protect zone log collection" + ) return arc_dir = f"{top_name}/protect" @@ -1141,7 +1157,7 @@ def collect_all( log, aw, f"{top_name}/xl_info.txt", [xl_bin, "info"], timeout_s=30.0 ) else: - prot = which("protect") + prot = which_protect() if prot: run_and_write( log,