Commit graph

5 commits

Author SHA1 Message Date
b9736266c9 nfs: use soft,timeo=30 mounts instead of hard on all NFS provisioners
Add soft,timeo=30 mount options to all nfs-subdir-external-provisioner
Helm values files so that newly created PVs use non-blocking NFS mounts.
StorageClasses have been patched directly in the cluster.

Motivation: a USB drive disconnect on kube-node-1 caused the NFS server
to go down for ~2.5 days. The HP Proxmox host had hard NFS mounts to
the Dell which blocked df -h indefinitely until the NFS server recovered.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-31 22:49:59 +02:00
a110afa40b feat(device-inventory): add management web UI and pciutils for NIC discovery
- web-ui/main.go: full CRUD REST API + dark-theme SPA (servers, parts, part-types)
- Dockerfile.cli: add pciutils runtime dep for lspci NIC enrichment

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-31 22:42:20 +02:00
6e1e4b4134 feat(device-inventory): hardware discovery pipeline natural key deduplication
- protocol.h: add K_LOCATOR, K_SOCKET, K_DEVICE_NAME natural key constants
- models.h: add locator/socket_designation/device_name fields to structs
- database.cpp: apply_*, serialize_*, save_nolock, load all updated;
  upsert_part gains natural key fallback for memory/cpu/disk
- discovery.cpp: emit K_LOCATOR for memory sticks/slots; fix CPU filter
  to skip phantom iLO entries; emit K_SOCKET for cpu/cpu_slot;
  emit K_DEVICE_NAME for disks with serial collision fix; replace NIC
  blocklist with /sys/class/net/<if>/device symlink check + lspci enrichment

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-31 22:37:17 +02:00
12b62bea00 storage: rename ZFS datasets — jellyfin→media, immich→photos, games children restructured
- media-pool/jellyfin renamed to media-pool/media (mountpoint /data/media unchanged)
- media-pool/immich renamed to media-pool/photos (mountpoint /data/photos unchanged)
- media-pool/minecraft → media-pool/games/minecraft (child of games)
- media-pool/factorio → media-pool/games/factorio (child of games)
- media-pool/openttd → media-pool/games/openttd (child of games)
- Individual game quotas removed; single 1T quota set on media-pool/games
- Removed stale legacy /media-pool/jellyfin etc. from HP /etc/exports
- Updated pvs.yaml section headers to reflect new ZFS dataset names

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-27 22:30:27 +01:00
e1a482c500 feat(device-inventory): add hooks system and DNS updater hook
- Add Hook interface (filter + execute contract) in server/hooks/hook.h
- Add HookRunner in server/hooks/hook_runner.h: spawns a detached thread
  per matching hook, with try/catch protection against crashes
- Add DnsUpdaterHook in server/hooks/dns_updater_hook.{h,cpp}:
  triggers on server name changes, logs in to Technitium, deletes the
  old A record (ignores 404), and adds the new A record
  Config via env vars: TECHNITIUM_HOST/PORT/USER/PASS/ZONE, DNS_TTL
- Add Database::get_nics_for_server() to resolve a server's IPv4 address
- Wire HookRunner into InventoryServer; cmd_edit_server now fires hooks
  with before/after Server snapshots
- Update CMakeLists.txt to include dns_updater_hook.cpp
- Document env vars in Dockerfile

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-24 14:58:36 +01:00