ba52005e61
POST /hosts/{id}/wg (per-host self-scoped; global = operator/DR path): bind /
re-key-in-place / adopt; generation bump + endpoint push ONLY on real change.
mergeWireguard injects the hub-owned block into served desired-state at READ
time (stored operator blob never touched; fail-safe unmerged on any error;
no-peer = byte-identical pass-through — existing golden test untouched+green).
handleAdminSetDesiredState rejects top-level wireguard (400). Admin DELETE of a
BOUND peer bumps the owning host. NEW golden desired-state-wireguard.golden.json
= the S3 cross-repo contract. Red-proofs a/b/c/d run + reverted.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PSK5g6qYLknKj8u3QAFEr6
34 lines
853 B
JSON
34 lines
853 B
JSON
{
|
|
"generation": 5,
|
|
"desired_state": {
|
|
"guests": [
|
|
{
|
|
"vmid": 100,
|
|
"run": "running",
|
|
"spec": { "cores": 2, "memory_bytes": 2147483648, "disk_bytes": 21474836480 },
|
|
"description": "felhom: acme prod"
|
|
},
|
|
{
|
|
"vmid": 200,
|
|
"decommission": true
|
|
}
|
|
],
|
|
"pbs_namespace": "felhom-cust-acme",
|
|
"restore_directive": {
|
|
"mode": "guest_loss",
|
|
"archive": "local:backup/vzdump-lxc-200-2026_06_09-11_00_00.tar.zst",
|
|
"vmid": 200
|
|
},
|
|
"wireguard": {
|
|
"endpoint": {
|
|
"dns_name": "ep0.felhom.eu",
|
|
"wg_port": 443,
|
|
"server_pubkey": "CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk=",
|
|
"pbs_tunnel_ip": "10.77.0.1"
|
|
},
|
|
"pubkey": "AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
|
|
"assigned_ip": "10.77.0.2/32"
|
|
}
|
|
}
|
|
}
|