banger/internal/daemon
Thales Maciel 59e48e830b
daemon: split owner daemon from root helper
Move the supported systemd path to two services: an owner-user bangerd for
orchestration and a narrow root helper for bridge/tap, NAT/resolver, dm/loop,
and Firecracker ownership. This removes repeated sudo from daily vm and image
flows without leaving the general daemon running as root.

Add install metadata, system install/status/restart/uninstall commands, and a
system-owned runtime layout. Keep user SSH/config material in the owner home,
lock file_sync to the owner home, and move daemon known_hosts handling out of
the old root-owned control path.

Route privileged lifecycle steps through typed privilegedOps calls, harden the
two systemd units, and rewrite smoke plus docs around the supported service
model.

Verified with make build, make test, make lint, and make smoke on the
supported systemd host path.
2026-04-26 12:43:17 -03:00
..
dmsnap Extract opstate and dmsnap into subpackages 2026-04-15 16:02:43 -03:00
fcproc daemon: split owner daemon from root helper 2026-04-26 12:43:17 -03:00
imagemgr Remove image build --from-image; doctor treats catalog images as OK 2026-04-18 15:54:29 -03:00
opstate coverage: medium batch — hostnat runner, store guest-sessions, daemon helpers 2026-04-18 18:03:37 -03:00
workspace seams: move the last four package globals onto instance fields 2026-04-22 12:07:14 -03:00
ARCHITECTURE.md daemon: split owner daemon from root helper 2026-04-26 12:43:17 -03:00
autopull_test.go daemon: build a work-seed during image pull, refresh doctor check 2026-04-23 20:24:10 -03:00
capabilities.go daemon: build a work-seed during image pull, refresh doctor check 2026-04-23 20:24:10 -03:00
capabilities_test.go daemon split (7/n): narrow capability interfaces, wire deps at construction 2026-04-21 15:59:09 -03:00
concurrency_test.go daemon: build a work-seed during image pull, refresh doctor check 2026-04-23 20:24:10 -03:00
daemon.go daemon: split owner daemon from root helper 2026-04-26 12:43:17 -03:00
daemon_test.go daemon: split owner daemon from root helper 2026-04-26 12:43:17 -03:00
daemon_testing_test.go test: add newTestDaemon harness + options 2026-04-22 17:45:43 -03:00
dispatch.go daemon: extract StatsService sibling; shrink VMService's surface 2026-04-23 15:46:59 -03:00
dispatch_test.go daemon: replace RPC switch with generic method-to-handler table 2026-04-23 15:40:08 -03:00
dns_routing.go daemon: split owner daemon from root helper 2026-04-26 12:43:17 -03:00
dns_routing_test.go seams: move the last four package globals onto instance fields 2026-04-22 12:07:14 -03:00
doc.go daemon: split owner daemon from root helper 2026-04-26 12:43:17 -03:00
doctor.go daemon: split owner daemon from root helper 2026-04-26 12:43:17 -03:00
doctor_test.go cleanup: drop pre-v0.1 migration scaffolding + legacy-behavior refs 2026-04-23 13:56:32 -03:00
fake_firecracker_test.go remove vm session feature 2026-04-20 12:47:58 -03:00
fastpath_test.go daemon split (6/n): extract wireServices + drop lazy service getters 2026-04-21 15:55:28 -03:00
guest_ssh.go remove vm session feature 2026-04-20 12:47:58 -03:00
host_network.go daemon: split owner daemon from root helper 2026-04-26 12:43:17 -03:00
image_seed.go daemon: rewrite authsync + image seeding on ext4 toolkit 2026-04-23 18:21:50 -03:00
image_service.go daemon: build a work-seed during image pull, refresh doctor check 2026-04-23 20:24:10 -03:00
images.go daemon split (2/5): extract *ImageService service 2026-04-20 20:30:32 -03:00
images_helpers_test.go coverage: medium batch — hostnat runner, store guest-sessions, daemon helpers 2026-04-18 18:03:37 -03:00
images_pull.go daemon: build a work-seed during image pull, refresh doctor check 2026-04-23 20:24:10 -03:00
images_pull_bundle_test.go daemon: build a work-seed during image pull, refresh doctor check 2026-04-23 20:24:10 -03:00
images_pull_test.go daemon: build a work-seed during image pull, refresh doctor check 2026-04-23 20:24:10 -03:00
kernels.go daemon split (2/5): extract *ImageService service 2026-04-20 20:30:32 -03:00
kernels_test.go daemon split (6/n): extract wireServices + drop lazy service getters 2026-04-21 15:55:28 -03:00
lifecycle_flow_test.go test: end-to-end VMService lifecycle flow harness 2026-04-22 17:55:04 -03:00
logger.go vm state: split transient kernel/process handles off the durable schema 2026-04-19 14:18:13 -03:00
logger_test.go seams: move the last four package globals onto instance fields 2026-04-22 12:07:14 -03:00
nat.go daemon: split owner daemon from root helper 2026-04-26 12:43:17 -03:00
nat_capability_test.go daemon: persist tap device on VM.Runtime so NAT teardown survives handle-cache loss 2026-04-23 14:21:13 -03:00
nat_test.go vm state: split transient kernel/process handles off the durable schema 2026-04-19 14:18:13 -03:00
open_close_test.go daemon: split owner daemon from root helper 2026-04-26 12:43:17 -03:00
preflight.go daemon: split owner daemon from root helper 2026-04-26 12:43:17 -03:00
privileged_ops.go daemon: split owner daemon from root helper 2026-04-26 12:43:17 -03:00
runtime_assets.go daemon split (4/5): extract *VMService service 2026-04-20 20:57:05 -03:00
snapshot.go daemon: split owner daemon from root helper 2026-04-26 12:43:17 -03:00
snapshot_test.go daemon split (6/n): extract wireServices + drop lazy service getters 2026-04-21 15:55:28 -03:00
ssh_client_config.go daemon: split owner daemon from root helper 2026-04-26 12:43:17 -03:00
ssh_client_config_test.go daemon: split owner daemon from root helper 2026-04-26 12:43:17 -03:00
sshd_config_test.go daemon: delete flattenNestedWorkHome and normaliseHomeDirPerms 2026-04-23 18:33:06 -03:00
stats_service.go daemon: persist teardown fallbacks and reject unsafe import paths 2026-04-23 16:21:59 -03:00
stats_service_test.go daemon: extract StatsService sibling; shrink VMService's surface 2026-04-23 15:46:59 -03:00
tap_pool.go daemon: split owner daemon from root helper 2026-04-26 12:43:17 -03:00
vm.go daemon: persist teardown fallbacks and reject unsafe import paths 2026-04-23 16:21:59 -03:00
vm_authsync.go daemon: split owner daemon from root helper 2026-04-26 12:43:17 -03:00
vm_create.go model: validate VM names as DNS labels at CLI + daemon 2026-04-23 14:06:40 -03:00
vm_create_ops.go daemon split (4/5): extract *VMService service 2026-04-20 20:57:05 -03:00
vm_create_test.go model: validate VM names as DNS labels at CLI + daemon 2026-04-23 14:06:40 -03:00
vm_disk.go daemon: split owner daemon from root helper 2026-04-26 12:43:17 -03:00
vm_handles.go daemon: split owner daemon from root helper 2026-04-26 12:43:17 -03:00
vm_handles_test.go daemon: persist teardown fallbacks and reject unsafe import paths 2026-04-23 16:21:59 -03:00
vm_lifecycle.go daemon: split owner daemon from root helper 2026-04-26 12:43:17 -03:00
vm_lifecycle_steps.go daemon: split owner daemon from root helper 2026-04-26 12:43:17 -03:00
vm_lifecycle_steps_test.go daemon: extract startVMLocked into step runner with per-step rollback 2026-04-23 15:34:34 -03:00
vm_locks.go Move subsystem state/locks off Daemon into owning types 2026-04-15 15:58:33 -03:00
vm_service.go daemon: split owner daemon from root helper 2026-04-26 12:43:17 -03:00
vm_set.go daemon split (4/5): extract *VMService service 2026-04-20 20:57:05 -03:00
vm_test.go daemon: split owner daemon from root helper 2026-04-26 12:43:17 -03:00
workspace.go workspace: drop --readonly flag — advisory only against root guests 2026-04-23 13:04:33 -03:00
workspace_rejection_test.go tests: targeted coverage for doctor, workspace rejections, and nat capability 2026-04-22 12:58:12 -03:00
workspace_service.go seams: move the last four package globals onto instance fields 2026-04-22 12:07:14 -03:00
workspace_test.go cleanup: drop pre-v0.1 migration scaffolding + legacy-behavior refs 2026-04-23 13:56:32 -03:00