New X-Resource: sandbox on X-Service: sessions
POST ?session_id= → CreateOrResume
1. Ensure PVC workspace-session-<id> (Longhorn 1Gi)
2. If pod already Running → return DNS (resume path, idempotent)
3. Ensure pi-session-sandbox NetworkPolicy (shared, created once)
4. Create Pod pi-session-<id> + Service pi-session-<id>:8787
5. Wait up to 30s for Pod Ready
6. Fire-and-forget: merge pod_name/pvc_name/svc_dns/last_active_at
into session memory_entity summary
DELETE ?session_id= → delete Pod + Service + PVC
Idle reaper goroutine (5min interval, configurable via
SANDBOX_REAPER_INTERVAL_MINUTES): lists pi-session-* pods,
deletes Succeeded/Failed ones, preserves PVCs for resume.
Security: runAsNonRoot/1000, readOnlyRootFilesystem, drop ALL
caps, RuntimeDefault seccomp, automountServiceAccountToken:false.
Resources: 500m/512Mi req, 1/1Gi limit.
NetworkPolicy: egress → DNS + api:8080 only; ingress ← poimen-frontend.
RBAC: Role session-sandbox-manager + RoleBinding in poimen ns.
7 unit tests — all pass (mock k8s server).
Image: forgejo.riotpiao.com/riotpiao-poimen/poimen-pi-session-runtime:latest
rock
merged commit 49c9071a59 into main2026-09-28 14:02:54 +00:00
rock
deleted branch feat/sessions-sandbox-manager2026-09-28 14:02:54 +00:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Adds
X-Resource: sandboxtoX-Service: sessions.See commit message for full spec.
New X-Resource: sandbox on X-Service: sessions POST ?session_id= → CreateOrResume 1. Ensure PVC workspace-session-<id> (Longhorn 1Gi) 2. If pod already Running → return DNS (resume path, idempotent) 3. Ensure pi-session-sandbox NetworkPolicy (shared, created once) 4. Create Pod pi-session-<id> + Service pi-session-<id>:8787 5. Wait up to 30s for Pod Ready 6. Fire-and-forget: merge pod_name/pvc_name/svc_dns/last_active_at into session memory_entity summary DELETE ?session_id= → delete Pod + Service + PVC Idle reaper goroutine (5min interval, configurable via SANDBOX_REAPER_INTERVAL_MINUTES): lists pi-session-* pods, deletes Succeeded/Failed ones, preserves PVCs for resume. Security: runAsNonRoot/1000, readOnlyRootFilesystem, drop ALL caps, RuntimeDefault seccomp, automountServiceAccountToken:false. Resources: 500m/512Mi req, 1/1Gi limit. NetworkPolicy: egress → DNS + api:8080 only; ingress ← poimen-frontend. RBAC: Role session-sandbox-manager + RoleBinding in poimen ns. 7 unit tests — all pass (mock k8s server). Image: forgejo.riotpiao.com/riotpiao-poimen/poimen-pi-session-runtime:latest