second night: scratch guest 9202 built (R-481 CLOSED, persists); controller v0.242.0 delivered (R-487 R-491 R-490 R-476 R-456 CLOSED, R-489 re-scoped); R-492 filed; rotation restarted from bentopdf; morning note
gates / gates (push) Successful in 19s
gates / gates (push) Successful in 19s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
This commit is contained in:
@@ -0,0 +1,17 @@
|
||||
=== scratch guest 9202 — first contact 2026-09-13T20:24:41Z ===
|
||||
HTTP 200
|
||||
{"ok":true,"data":[{"name":"actualbudget","meta":{"display_name":"ActualBudget","description":"Személyes pénzügyek és költségvetés kezelése","category":"finance","subdomain":"budget",
|
||||
--- sync the catalog ---
|
||||
HTTP 200
|
||||
{"ok":true,"data":{"ok":true,"message":"Sablonok naprakészek — nincs változás"},"message":"Sablonok naprakészek — nincs változás"}
|
||||
|
||||
|
||||
stacks known: 55 | deployed: []
|
||||
--- guest facts ---
|
||||
VMID Status Lock Name
|
||||
9201 running demo-hp
|
||||
9202 running demo-hp-scratch
|
||||
felhom-controller filebrowser traefik
|
||||
0
|
||||
SCRATCH GUEST — R-481, operator ruling 2026-09-13 (option 1)
|
||||
The nightly rotation throwaway host under the demo-hp customer. Hub OFF, tunnel OFF, agent OFF, off-site OFF.
|
||||
@@ -0,0 +1,60 @@
|
||||
=== NIGHT 2 — bentopdf as a customer on the SCRATCH guest 9202 — 2026-09-13T20:25:37Z ===
|
||||
controller: gitea.dooplex.hu/admin/felhom-controller:0.241.0 | catalog pin: image: ghcr.io/alam00000/bentopdf:v2.8.6
|
||||
--- install ---
|
||||
HTTP 202 {"ok":true,"message":"Telepítés elindítva – az állapot a kártyán követhető"}
|
||||
after: state=running updating=False phase=None err='' hold='' | ghcr.io/alam00000/bentopdf:v2.8.6 Up 14 seconds (healthy)
|
||||
--- front door: GET / and the app's assets through traefik ---
|
||||
GET / -> 200 text/html 72677
|
||||
GET /index.html -> 301 text/html 169
|
||||
USE: BentoPDF is a browser-side toolbox — every PDF is processed in the browser and never sent to the server. There is no data route and no API; nothing to put in and nothing to read back. Recorded, not faked.
|
||||
--- backup through the backups page: backup now, then the 2nd copy ---
|
||||
HTTP 200 {"ok":true,"message":"Mentés elindítva"}
|
||||
idle after 5 s
|
||||
HTTP 200 {"ok":true,"message":"2. mentés elindítva"}
|
||||
/mnt/sys_drive/felhom-data/backups/primary/bentopdf:
|
||||
2026-09-13T20:26 1864 compose/.felhom.yml
|
||||
2026-09-13T20:26 291 compose/app.yaml
|
||||
2026-09-13T20:26 1109 compose/docker-compose.yml
|
||||
2026-09-13T20:26 1009 manifest.json
|
||||
/mnt/felhom-drives/scratch_hdd/backups/secondary/bentopdf:
|
||||
2026-09-13T20:26 1864 recovery-unit/compose/.felhom.yml
|
||||
2026-09-13T20:26 1109 recovery-unit/compose/docker-compose.yml
|
||||
2026-09-13T20:26 291 recovery-unit/compose/app.yaml
|
||||
2026-09-13T20:26 1009 recovery-unit/manifest.json
|
||||
2026-09-13T20:26 1 .felhom-tier2-layout
|
||||
card: {"ok":true,"data":{"stack":"bentopdf","backup_paths":[{"path":"/mnt/sys_drive/felhom-data/backups/primary/bentopdf","size_bytes":12465,"size_human":"24K","exists":true},{"path":"/mnt/felhom-drives/scratch_hdd/backups/secondary/bentopdf","size_bytes":16562,"size_human":"32K","exists":true}],"has_back
|
||||
--- disaster: remove with data, keep backups; the way back: Teljes visszaállítás (Tier 2) ---
|
||||
HTTP 200 {"ok":true,"data":{"removed":"bentopdf","volumes_removed":null,"hdd_paths_removed":[],"hdd_paths_preserved":[],"hdd_note":"Az alkalmazás nem tárolt saját adatot külső meghajtón, így ott nem volt mit törölni."},"message":"Stack bentopdf removed"}
|
||||
removed: state=not_deployed updating=False phase=None err='' hold='' | front door now: 404 text/plain; charset=utf-8 19
|
||||
HTTP/2 302
|
||||
location: /backups/apps?flash=Teljes+vissza%C3%A1ll%C3%ADt%C3%A1s+elindult+%E2%80%94+az+%C3%A1llapot+itt+friss%C3%BCl.
|
||||
|
||||
restore-status: {"running": false, "op": "tier2-unit-restore", "stack": "bentopdf", "started_at": "2026-09-13T20:26:23.141536724Z", "last": {"op": "tier2-unit-restore", "stack": "bentopdf", "ok": true, "message": "A(z) bentopdf: a beállítások visszaálltak — az alkalmazás újraindult. FIGYELEM: ez a mentés csak a beállításokat tartalmazta, adatot nem. Az alkalmazás adatai NEM álltak vissza ebből a mentésből. A viss
|
||||
after restore: state=running updating=False phase=None err='' hold='' | front door: 200 text/html 72677
|
||||
--- guarded Update (same pin: no edge in the catalog) ---
|
||||
--- POST /api/stacks/bentopdf/update at 2026-09-13T20:26:34Z ---
|
||||
HTTP 202
|
||||
{"ok":true,"data":{"accepted":true,"completed":false},"message":"Frissítés elindult – az állapot a kártyán követhető"}
|
||||
+ 0s phase backing-up
|
||||
+ 3s phase done
|
||||
end (2026-09-13T20:26:38Z, +3s): state=running updating=False phase=done err='' hold=''
|
||||
2026/09/13 20:26:35 update.go:391: [INFO] [stacks] update bentopdf: accepted — guarded update started
|
||||
2026/09/13 20:26:35 update.go:820: [INFO] [stacks] update bentopdf: phase checking
|
||||
2026/09/13 20:26:35 update.go:508: [INFO] [stacks] update bentopdf: no usable copy on any tier — younger than 24h0m0s and not older than this install's deploy (2026-09-13T20:26:23Z) (found: Tier 2 (second drive) at 2026-09-13T20:26:13Z (0s old); Tier 1 (own recovery unit) at 2026-09-13T20:26:07Z (
|
||||
2026/09/13 20:26:35 update.go:820: [INFO] [stacks] update bentopdf: phase backing-up
|
||||
2026/09/13 20:26:35 update.go:523: [INFO] [stacks] update bentopdf: precondition met after the backup — Tier 2 (second drive) copy from 2026-09-13T20:26:35Z
|
||||
2026/09/13 20:26:35 update.go:820: [INFO] [stacks] update bentopdf: phase safety-dump
|
||||
2026/09/13 20:26:35 update.go:538: [INFO] [stacks] update bentopdf: safety dump done (0 file(s)) []
|
||||
2026/09/13 20:26:35 update.go:820: [INFO] [stacks] update bentopdf: phase pinning
|
||||
2026/09/13 20:26:35 pin.go:362: [INFO] [stacks] update bentopdf: pin advanced to the catalog's current definition (bentopdf=ghcr.io/alam00000/bentopdf:v2.8.6)
|
||||
2026/09/13 20:26:35 update.go:820: [INFO] [stacks] update bentopdf: phase pulling
|
||||
2026/09/13 20:26:35 update.go:820: [INFO] [stacks] update bentopdf: phase starting
|
||||
2026/09/13 20:26:36 update.go:820: [INFO] [stacks] update bentopdf: phase verifying
|
||||
2026/09/13 20:26:36 update.go:614: [INFO] [stacks] update bentopdf: healthy after 0s (the app's health check passed)
|
||||
2026/09/13 20:26:36 update.go:620: [INFO] [stacks] update bentopdf: DONE in 1s
|
||||
--- remove with data AND backups; drive clean? ---
|
||||
HTTP 200 {"ok":true,"data":{"removed":"bentopdf","volumes_removed":null,"hdd_paths_removed":[],"hdd_paths_preserved":[],"hdd_note":"Az alkalmazás nem tárolt saját adatot külső meghajtón, így ott nem volt mit törölni.","backup_paths_removed":["/mnt/sys_drive/felhom-data/backups/primary/bentopdf (24K)","/mnt/felhom-drives/scratch_hdd/backups/secondary/bentopdf (16.2 KB)"]},"message":"Stack bentopdf removed"}
|
||||
/mnt/sys_drive/felhom-data/backups/primary/bentopdf: ABSENT
|
||||
/mnt/felhom-drives/scratch_hdd/backups/secondary/bentopdf: ABSENT
|
||||
containers: 0 | prefs: None None | card: state=not_deployed updating=False phase=done err='' hold=''
|
||||
=== done 2026-09-13T20:26:46Z ===
|
||||
@@ -0,0 +1,54 @@
|
||||
=== FLOOR RAISE: 0.242.0 with min_agent 0.129.0 (R-487 R-491 R-490 R-489 R-476) ===
|
||||
T0 POST at 2026-09-13T20:51:13Z
|
||||
HTTP/1.1 303 See Other
|
||||
Location: /configuration?flash=floor_set
|
||||
DB floor + declared: id="global-floor-input" name="min_controller_version" value="0.242.0" | name="min_agent" value="0.129.0" placeholder="MinAgent from |
|
||||
demo-hp on 0.242.0 at 2026-09-13T20:51:30Z (+16s): gitea.dooplex.hu/admin/felhom-controller:0.242.0 Up 7 seconds (healthy)
|
||||
demo-felhom on 0.242.0 at 2026-09-13T20:51:31Z (+17s): gitea.dooplex.hu/admin/felhom-controller:0.242.0 Up 10 seconds (healthy)
|
||||
--- hub log since T0 (managed floor) ---
|
||||
2026/09/13 22:51:14 [INFO] Global controller-version floor set to "0.242.0" (declared MinAgent "0.129.0")
|
||||
2026/09/13 22:51:16 [INFO] managed floor SERVED for demo-felhom: floor 0.242.0, agent requirement "0.129.0" from declared (golden 0.236.0)
|
||||
2026/09/13 22:51:17 [INFO] managed floor SERVED for demo-hp: floor 0.242.0, agent requirement "0.129.0" from declared (golden 0.236.0)
|
||||
|
||||
--- demo-hp: controller log (SetFloor / self-update / version) ---
|
||||
2026/09/13 20:51:23 updater.go:96: [DEBUG] [selfupdate] VerifyStartup: checking update state in /opt/docker/felhom-controller/data
|
||||
2026/09/13 20:51:23 updater.go:96: [DEBUG] [selfupdate] VerifyStartup: pending update found — target=0.242.0 previous=0.241.0
|
||||
2026/09/13 20:51:23 updater.go:809: [INFO] [selfupdate] Post-update startup: update successful (0.241.0 → 0.242.0)
|
||||
2026/09/13 20:51:23 main.go:655: [INFO] Self-update enabled (check every 6h, auto-update: false, auto-update time: 04:30)
|
||||
2026/09/13 20:51:23 scheduler.go:102: [INFO] [scheduler] Registered periodic job: selfupdate-check (every 6h0m0s)
|
||||
2026/09/13 20:51:23 scheduler.go:67: [DEBUG] [scheduler] periodic job registered: name="selfupdate-check" interval=6h0m0s totalJobs=18
|
||||
2026/09/13 20:51:23 offsiteapply.go:151: [INFO] [offsite-apply] settle-gate: awaiting floor knowledge (first report ACK) before offsite apply
|
||||
2026/09/13 20:51:24 client.go:67: [DEBUG] [agentapi] agent version seen: 0.130.0 (was "")
|
||||
2026/09/13 20:51:28 builder.go:40: [DEBUG] [report] BuildReport: starting — version=0.242.0, storagePaths=1
|
||||
2026/09/13 20:51:29 updater.go:96: [DEBUG] [selfupdate] SetFloor: floor "" → "0.242.0"
|
||||
2026/09/13 20:51:29 updater.go:96: [DEBUG] [selfupdate] maybeAutoUpdate: current 0.242.0 >= floor 0.242.0 — no action
|
||||
2026/09/13 20:51:33 offsiteapply.go:151: [INFO] [offsite-apply] settle-gate: GO — at/above floor 0.242.0 (we are 0.242.0), no managed update running
|
||||
|
||||
--- demo-hp: bootstrap service journal ---
|
||||
Sep 13 20:51:22 demo-hp systemd[1]: felhom-controller-bootstrap.service: Deactivated successfully.
|
||||
Sep 13 20:51:22 demo-hp systemd[1]: Stopped felhom-controller-bootstrap.service - Felhom controller bootstrap (deploy the baked controller from the agent-populated config mount).
|
||||
Sep 13 20:51:22 demo-hp systemd[1]: Stopping felhom-controller-bootstrap.service - Felhom controller bootstrap (deploy the baked controller from the agent-populated config mount)...
|
||||
Sep 13 20:51:22 demo-hp systemd[1]: Starting felhom-controller-bootstrap.service - Felhom controller bootstrap (deploy the baked controller from the agent-populated config mount)...
|
||||
Sep 13 20:51:22 demo-hp felhom-controller-bootstrap.sh[2438508]: [ctrl-bootstrap] deploying gitea.dooplex.hu/admin/felhom-controller:0.242.0 from /etc/felhom-bootstrap/bootstrap.json (hostname=demo-hp)
|
||||
Sep 13 20:51:22 demo-hp felhom-controller-bootstrap.sh[2438582]: 9e9e3a9987db6cab7c7d8d413a64ce73695fe5b9f090f554022ab02520ebe0b7
|
||||
Sep 13 20:51:23 demo-hp felhom-controller-bootstrap.sh[2438508]: [ctrl-bootstrap] controller started
|
||||
Sep 13 20:51:23 demo-hp systemd[1]: Finished felhom-controller-bootstrap.service - Felhom controller bootstrap (deploy the baked controller from the agent-populated config mount).
|
||||
|
||||
--- demo-felhom: controller log (SetFloor / self-update / version) ---
|
||||
2026/09/13 20:51:22 [INFO] [selfupdate] Post-update startup: update successful (0.241.0 → 0.242.0)
|
||||
2026/09/13 20:51:22 [INFO] Self-update enabled (check every 6h, auto-update: false, auto-update time: 04:30)
|
||||
2026/09/13 20:51:22 [INFO] [scheduler] Registered periodic job: selfupdate-check (every 6h0m0s)
|
||||
2026/09/13 20:51:22 [INFO] [offsite-apply] settle-gate: awaiting floor knowledge (first report ACK) before offsite apply
|
||||
2026/09/13 20:51:32 [INFO] [offsite-apply] settle-gate: GO — at/above floor 0.242.0 (we are 0.242.0), no managed update running
|
||||
|
||||
--- demo-felhom: bootstrap service journal ---
|
||||
Sep 13 20:51:21 demo-felhom systemd[1]: felhom-controller-bootstrap.service: Deactivated successfully.
|
||||
Sep 13 20:51:21 demo-felhom systemd[1]: Stopped felhom-controller-bootstrap.service - Felhom controller bootstrap (deploy the baked controller from the agent-populated config mount).
|
||||
Sep 13 20:51:21 demo-felhom systemd[1]: Stopping felhom-controller-bootstrap.service - Felhom controller bootstrap (deploy the baked controller from the agent-populated config mount)...
|
||||
Sep 13 20:51:21 demo-felhom systemd[1]: Starting felhom-controller-bootstrap.service - Felhom controller bootstrap (deploy the baked controller from the agent-populated config mount)...
|
||||
Sep 13 20:51:21 demo-felhom felhom-controller-bootstrap.sh[3573553]: [ctrl-bootstrap] deploying gitea.dooplex.hu/admin/felhom-controller:0.242.0 from /etc/felhom-bootstrap/bootstrap.json (hostname=demo-felhom)
|
||||
Sep 13 20:51:21 demo-felhom felhom-controller-bootstrap.sh[3573602]: eaa532876b7d3df1f2ab46965d08245f2b3eaff97f8ba9b4f6d93e799876a38f
|
||||
Sep 13 20:51:21 demo-felhom felhom-controller-bootstrap.sh[3573553]: [ctrl-bootstrap] controller started
|
||||
Sep 13 20:51:21 demo-felhom systemd[1]: Finished felhom-controller-bootstrap.service - Felhom controller bootstrap (deploy the baked controller from the agent-populated config mount).
|
||||
|
||||
SUMMARY T0=2026-09-13T20:51:13Z {'demo-hp': ('2026-09-13T20:51:30Z', 16), 'demo-felhom': ('2026-09-13T20:51:31Z', 17)} not done: []
|
||||
@@ -0,0 +1,90 @@
|
||||
=== v0.242.0 LIVE on the scratch guest 9202 — 2026-09-13T20:52:22Z ===
|
||||
controller: gitea.dooplex.hu/admin/felhom-controller:0.242.0 Up 35 seconds (healthy)
|
||||
|
||||
--- R-490: GET /api/system/info (the monitoring card's fetch) ---
|
||||
HTTP HTTP 200 | hdd_configured=True hdd_total_gb=937.8 used_mem_mb=0
|
||||
|
||||
--- install opengist (throwaway) ---
|
||||
HTTP 202 {"ok":true,"message":"Telepítés elindítva – az állapot a kártyán követhető"}
|
||||
after: state=running updating=False phase=None err='' hold='' | front door: 302 0
|
||||
|
||||
--- backup now → the primary unit ---
|
||||
HTTP 200 {"ok":true,"message":"Mentés elindítva"}
|
||||
idle after 5 s
|
||||
/mnt/sys_drive/felhom-data/backups/primary/opengist:
|
||||
2026-09-13T20:52 1941 compose/.felhom.yml
|
||||
2026-09-13T20:52 292 compose/app.yaml
|
||||
2026-09-13T20:52 1260 compose/docker-compose.yml
|
||||
2026-09-13T20:52 181248 volume-dumps/opengist_opengist_data.tar
|
||||
2026-09-13T20:52 1041 manifest.json
|
||||
/mnt/felhom-drives/scratch_hdd/backups/secondary/opengist: ABSENT
|
||||
|
||||
--- R-491: seed an UPDATE hold (settings file edit on the scratch guest + controller restart; the hold's origin is not what is under test) ---
|
||||
|
||||
positive control — held: state=running updating=False phase=None err='' hold='A(z) opengist frissítése 2026-09-13 22:52-kor nem sikerült, és az alkalmazás nem indult el az új verzióval. Az alkalmazás biztonsági okból leállítva marad, hogy az adatai ne sérüljenek. Visszaállítható a Mentések oldalon ebből a biztonsági mentésből: saját meghajtó, 2026-09-13 22:52 — ez a másolat a'
|
||||
settings has hold: True
|
||||
|
||||
--- R-489 + R-491: remove with data, KEEP backups ---
|
||||
HTTP HTTP 409
|
||||
volumes_removed=None backup_paths_removed=None hdd_paths_removed=None
|
||||
log:
|
||||
after removal: state=running updating=False phase=None err='' hold='A(z) opengist frissítése 2026-09-13 22:52-kor nem sikerült, és az alkalmazás nem indult el az új verzióval. Az alkalmazás biztonsági okból leállítva marad, hogy az adatai ne sérüljenek. Visszaállítható a Mentések oldalon ebből a biztonsági mentésből: saját meghajtó, 2026-09-13 22:52 — ez a másolat a' | settings still has hold: True
|
||||
docker volume ls: opengist_opengist_data
|
||||
|
||||
--- R-487: the removed app on the two pages and the picker API ---
|
||||
/backups/apps has the row: False | Megtartva badge: False | restore form: False
|
||||
row says last backup: None
|
||||
GET /api/backup/snapshots → HTTP 200 {"ok":true,"data":[{"time":"2026-09-13T20:52:42Z","short_id":"helyi","tier":1,"drive_label":"Belső SSD (rendszer)"}]}
|
||||
/backups/restore picker lists it: False
|
||||
|
||||
--- R-487: Visszaállítás a mentésből (POST /backup/restore, the row's button) ---
|
||||
HTTP/2 302
|
||||
location: /backups/restore?flash=Vissza%C3%A1ll%C3%ADt%C3%A1s+elindult+%E2%80%94+az+%C3%A1llapot+itt+friss%C3%BCl.
|
||||
|
||||
restore-status: {"running": false, "op": "restore", "stack": "opengist", "started_at": "2026-09-13T20:53:18.897214019Z", "last": {"op": "restore", "stack": "opengist", "ok": true, "message": "A(z) opengist: 1 adatkötet visszaállítva — az alkalmazás újraindult.", "finished_at": "2026-09-13T20:53:28.201829063Z"}, "last_recent": true}
|
||||
after restore: state=running updating=False phase=None err='' hold='' | front door: 302 0
|
||||
log: 2026/09/13 20:53:28 handlers.go:1542: [INFO] [web] Restore completed (async): stack=opengist in 9.304495819s (volumes 1/1, dbs 0/0)
|
||||
|
||||
--- R-476: two captures, one definition → the Tier-2 date must be the DATA's ---
|
||||
HTTP 200 {"ok":true,"message":"Mentés elindítva"}
|
||||
capture A manifest
|
||||
HTTP 200 {"ok":true,"message":"Mentés elindítva"}
|
||||
capture B manifest (same = definition unchanged)
|
||||
newest dump: -rw-r--r-- 1 root root 181248 2026-09-13T20:54Z opengist_opengist_data.tar
|
||||
HTTP 200 {"ok":true,"message":"2. mentés elindítva"}
|
||||
/mnt/sys_drive/felhom-data/backups/primary/opengist:
|
||||
2026-09-13T20:52 1941 compose/.felhom.yml
|
||||
2026-09-13T20:52 292 compose/app.yaml
|
||||
2026-09-13T20:52 1260 compose/docker-compose.yml
|
||||
2026-09-13T20:54 181248 volume-dumps/opengist_opengist_data.tar
|
||||
2026-09-13T20:52 1041 manifest.json
|
||||
/mnt/felhom-drives/scratch_hdd/backups/secondary/opengist:
|
||||
2026-09-13T20:52 1941 recovery-unit/compose/.felhom.yml
|
||||
2026-09-13T20:52 1260 recovery-unit/compose/docker-compose.yml
|
||||
2026-09-13T20:52 292 recovery-unit/compose/app.yaml
|
||||
2026-09-13T20:54 181248 recovery-unit/volume-dumps/opengist_opengist_data.tar
|
||||
2026-09-13T20:52 1041 recovery-unit/manifest.json
|
||||
2026-09-13T20:54 1 .felhom-tier2-layout
|
||||
Tier-2 unit confirm sentences on the page: []
|
||||
|
||||
--- teardown: remove with data AND backups ---
|
||||
HTTP HTTP 409
|
||||
volumes_removed=None backup_paths_removed=None
|
||||
/mnt/sys_drive/felhom-data/backups/primary/opengist:
|
||||
2026-09-13T20:52 1941 compose/.felhom.yml
|
||||
2026-09-13T20:52 292 compose/app.yaml
|
||||
2026-09-13T20:52 1260 compose/docker-compose.yml
|
||||
2026-09-13T20:54 181248 volume-dumps/opengist_opengist_data.tar
|
||||
2026-09-13T20:52 1041 manifest.json
|
||||
/mnt/felhom-drives/scratch_hdd/backups/secondary/opengist:
|
||||
2026-09-13T20:52 1941 recovery-unit/compose/.felhom.yml
|
||||
2026-09-13T20:52 1260 recovery-unit/compose/docker-compose.yml
|
||||
2026-09-13T20:52 292 recovery-unit/compose/app.yaml
|
||||
2026-09-13T20:54 181248 recovery-unit/volume-dumps/opengist_opengist_data.tar
|
||||
2026-09-13T20:52 1041 recovery-unit/manifest.json
|
||||
2026-09-13T20:54 1 .felhom-tier2-layout
|
||||
volumes left: opengist_opengist_data
|
||||
/backups/apps still lists it: True | Megtartva anywhere: False
|
||||
settings restore_holds: none
|
||||
=== done 2026-09-13T20:55:01Z ===
|
||||
live-rc=0
|
||||
@@ -0,0 +1,75 @@
|
||||
=== v0.242.0 LIVE on 9202, second pass (the first was refused 409: a running app must be stopped before removal) — 2026-09-13T20:56:25Z ===
|
||||
controller: gitea.dooplex.hu/admin/felhom-controller:0.242.0 Up 3 minutes (healthy) | state=running updating=False phase=None err='' hold=''
|
||||
|
||||
--- R-491: seed an UPDATE hold (settings file edit + controller restart; the hold's ORIGIN is not what is under test) ---
|
||||
positive control — held: A(z) opengist frissítése 2026-09-13 22:56-kor nem sikerült, és az alkalmazás nem indult el az új verzióval. Az alkalmazá | settings has hold: True
|
||||
|
||||
--- R-489 + R-491: stop, then remove with data, KEEP backups ---
|
||||
stop: HTTP 200 {"ok":true,"message":"Stack opengist stop completed"}
|
||||
HTTP 200
|
||||
volumes_removed=[] backup_paths_removed=None hdd_paths_removed=[]
|
||||
log: 2026/09/13 20:56:57 router.go:916: [INFO] [api] remove opengist: its update hold is cleared with it (R-491)
|
||||
after removal: state=not_deployed updating=False phase=None err='' hold='' | settings still has hold: False
|
||||
docker volume ls: none
|
||||
/mnt/sys_drive/felhom-data/backups/primary/opengist:
|
||||
2026-09-13T20:52 1941 compose/.felhom.yml
|
||||
2026-09-13T20:52 292 compose/app.yaml
|
||||
2026-09-13T20:52 1260 compose/docker-compose.yml
|
||||
2026-09-13T20:54 181248 volume-dumps/opengist_opengist_data.tar
|
||||
2026-09-13T20:52 1041 manifest.json
|
||||
/mnt/felhom-drives/scratch_hdd/backups/secondary/opengist:
|
||||
2026-09-13T20:52 1941 recovery-unit/compose/.felhom.yml
|
||||
2026-09-13T20:52 1260 recovery-unit/compose/docker-compose.yml
|
||||
2026-09-13T20:52 292 recovery-unit/compose/app.yaml
|
||||
2026-09-13T20:54 181248 recovery-unit/volume-dumps/opengist_opengist_data.tar
|
||||
2026-09-13T20:52 1041 recovery-unit/manifest.json
|
||||
2026-09-13T20:54 1 .felhom-tier2-layout
|
||||
|
||||
--- R-487: the removed app on the two pages and the picker API ---
|
||||
/backups/apps row: True | Megtartva badge: True | restore form: True
|
||||
row says last backup: 2026-09-13 22:54
|
||||
GET /api/backup/snapshots → HTTP 200 {"ok":true,"data":[{"time":"2026-09-13T20:54:42Z","short_id":"helyi","tier":1,"drive_label":"Belső SSD (rendszer)"}]}
|
||||
/backups/restore picker lists it: True
|
||||
|
||||
--- R-487: Visszaállítás a mentésből (the row's button = POST /backup/restore) ---
|
||||
HTTP/2 302
|
||||
location: /backups/restore?flash=Vissza%C3%A1ll%C3%ADt%C3%A1s+elindult+%E2%80%94+az+%C3%A1llapot+itt+friss%C3%BCl.
|
||||
|
||||
restore-status: {"op": "restore", "stack": "opengist", "ok": true, "message": "A(z) opengist: 1 adatkötet visszaállítva — az alkalmazás újraindult.", "finished_at": "2026-09-13T20:57:13.803999331Z"}
|
||||
after restore: state=running updating=False phase=None err='' hold='' | front door: 302 0
|
||||
log: 2026/09/13 20:57:13 handlers.go:1542: [INFO] [web] Restore completed (async): stack=opengist in 9.118788015s (volumes 1/1, dbs 0/0)
|
||||
row is a normal deployed row again (no Megtartva): True
|
||||
|
||||
--- R-476: two captures under one definition → the Tier-2 date must be the DATA's ---
|
||||
HTTP 200 {"ok":true,"message":"Mentés elindítva"}
|
||||
capture A manifest "created_at": "2026-09-13T20:52:42Z" at 2026-09-13T20:57:22Z
|
||||
HTTP 200 {"ok":true,"message":"Mentés elindítva"}
|
||||
capture B manifest "created_at": "2026-09-13T20:52:42Z" at 2026-09-13T20:58:34Z (same = definition unchanged)
|
||||
newest dump: -rw-r--r-- 1 root root 181248 2026-09-13T20:58:28Z opengist_opengist_data.tar
|
||||
HTTP 200 {"ok":true,"message":"2. mentés elindítva"}
|
||||
/mnt/sys_drive/felhom-data/backups/primary/opengist:
|
||||
2026-09-13T20:52 1941 compose/.felhom.yml
|
||||
2026-09-13T20:52 292 compose/app.yaml
|
||||
2026-09-13T20:52 1260 compose/docker-compose.yml
|
||||
2026-09-13T20:58 181248 volume-dumps/opengist_opengist_data.tar
|
||||
2026-09-13T20:52 1041 manifest.json
|
||||
/mnt/felhom-drives/scratch_hdd/backups/secondary/opengist:
|
||||
2026-09-13T20:52 1941 recovery-unit/compose/.felhom.yml
|
||||
2026-09-13T20:52 1260 recovery-unit/compose/docker-compose.yml
|
||||
2026-09-13T20:52 292 recovery-unit/compose/app.yaml
|
||||
2026-09-13T20:58 181248 recovery-unit/volume-dumps/opengist_opengist_data.tar
|
||||
2026-09-13T20:52 1041 recovery-unit/manifest.json
|
||||
2026-09-13T20:58 1 .felhom-tier2-layout
|
||||
Tier-2 unit confirm for opengist: második meghajtón lévő másolattal. Ami a másolat óta keletkezett, elveszik. A másolat kelte: 2026-09-13 22:58. A mellette lévő „Fájlok visszaállítása” ezzel szemben csak a hiányzó fájlokat pótolja, és semmit nem ír felül. Az alkalmazás a művelet idejére leáll.
|
||||
|
||||
--- teardown: stop, remove with data AND backups ---
|
||||
stop: HTTP 200 {"ok":true,"message":"Stack opengist stop completed"}
|
||||
HTTP 200
|
||||
volumes_removed=[] backup_paths_removed=['/mnt/sys_drive/felhom-data/backups/primary/opengist (208K)', '/mnt/felhom-drives/scratch_hdd/backups/secondary/opengist (197.4 KB)']
|
||||
/mnt/sys_drive/felhom-data/backups/primary/opengist: ABSENT
|
||||
/mnt/felhom-drives/scratch_hdd/backups/secondary/opengist: ABSENT
|
||||
volumes left: none
|
||||
/backups/apps still lists it: False | Megtartva anywhere: False
|
||||
settings restore_holds: none
|
||||
docker ps: felhom-controller filebrowser traefik
|
||||
=== done 2026-09-13T20:58:52Z ===
|
||||
@@ -0,0 +1,19 @@
|
||||
=== R-489 cause on 9202 — 2026-09-13T21:01:40Z ===
|
||||
A) fresh compose-created volume
|
||||
HTTP 202 {"ok":true,"message":"Telepítés elindítva – az állapot a kártyán követhető"}
|
||||
labels: {"com.docker.compose.config-hash":"5f89c3baba6dff6769fa699a804f2c56a643af979b55241e2af324dfde6be51c","com.docker.compose.project":"opengist","com.docker.compose.version":"5.5.0","com.docker.compose.volume":"opengist_data"}
|
||||
remove-all → HTTP 200 ["opengist_opengist_data"]
|
||||
left: none
|
||||
B) volume recreated by a unit restore
|
||||
HTTP 202 {"ok":true,"message":"Telepítés elindítva – az állapot a kártyán követhető"}
|
||||
HTTP 200 {"ok":true,"message":"Mentés elindítva"}
|
||||
HTTP/2 302
|
||||
location: /backups/restore?flash=Vissza%C3%A1ll%C3%ADt%C3%A1s+elindult+%E2%80%94+az+%C3%A1llapot+itt+friss%C3%BCl.
|
||||
|
||||
restore: A(z) opengist: 1 adatkötet visszaállítva — az alkalmazás újraindult.
|
||||
labels: null
|
||||
remove-all → HTTP 200 []
|
||||
left: none
|
||||
units: /mnt/sys_drive/felhom-data/backups/primary/opengist: ABSENT
|
||||
/mnt/felhom-drives/scratch_hdd/backups/secondary/opengist: ABSENT
|
||||
=== done 2026-09-13T21:02:40Z ===
|
||||
@@ -0,0 +1,11 @@
|
||||
MUTATION in internal/backup/tier2_restore.go:
|
||||
- if !c.UnitLegPreserved && c.UnitDataDate != "" && c.UnitDataDate > c.UnitPackageDate {
|
||||
+ if false && !c.UnitLegPreserved && c.UnitDataDate != "" && c.UnitDataDate > c.UnitPackageDate {
|
||||
|
||||
=== RUN TestR476_UnitRestoreDateNamesTheDataTimeWhenTheLegWasRefreshed
|
||||
r476_unit_data_date_test.go:13: refreshed leg: got "2026-09-12T02:15:29Z" preserved=false, want the dump's time
|
||||
--- FAIL: TestR476_UnitRestoreDateNamesTheDataTimeWhenTheLegWasRefreshed (0.00s)
|
||||
FAIL
|
||||
FAIL gitea.dooplex.hu/admin/felhom-controller/internal/backup 0.005s
|
||||
FAIL
|
||||
exit=1
|
||||
@@ -0,0 +1,20 @@
|
||||
MUTATION in internal/backup/removed_units.go:
|
||||
- if m.stackProvider == nil {
|
||||
return nil
|
||||
}
|
||||
deployed
|
||||
+ if m.stackProvider == nil || true {
|
||||
return nil
|
||||
}
|
||||
deployed
|
||||
|
||||
=== RUN TestR487_ListRemovedAppUnits_ListsKeptUnitsOfUndeployedApps
|
||||
[INFO] [settings] No settings.json found, using defaults
|
||||
[INFO] [settings] Added storage path: /tmp/TestR487_ListRemovedAppUnits_ListsKeptUnitsOfUndeployedApps3160582406/004
|
||||
[INFO] [settings] Settings saved
|
||||
r487_removed_units_test.go:88: want [drive-app gone-app], got []
|
||||
--- FAIL: TestR487_ListRemovedAppUnits_ListsKeptUnitsOfUndeployedApps (0.00s)
|
||||
FAIL
|
||||
FAIL gitea.dooplex.hu/admin/felhom-controller/internal/backup 0.007s
|
||||
FAIL
|
||||
exit=1
|
||||
@@ -0,0 +1,12 @@
|
||||
MUTATION in internal/backup/restore_points.go:
|
||||
- if u, found := m.RemovedAppUnitFor(stackName); found {
|
||||
+ if u, found := m.RemovedAppUnitFor(stackName); found && false {
|
||||
|
||||
=== RUN TestR487_ListRestorePointsFindsARemovedAppsUnit
|
||||
[INFO] [settings] No settings.json found, using defaults
|
||||
r487_removed_units_test.go:112: want found with one point, got found=false pts=[]
|
||||
--- FAIL: TestR487_ListRestorePointsFindsARemovedAppsUnit (0.00s)
|
||||
FAIL
|
||||
FAIL gitea.dooplex.hu/admin/felhom-controller/internal/backup 0.006s
|
||||
FAIL
|
||||
exit=1
|
||||
@@ -0,0 +1,11 @@
|
||||
MUTATION in internal/web/templates/backups_restore.html:
|
||||
- <option value="{{.StackName}}" data-removed="true"
|
||||
+ <option value="{{.StackName}}" data-gone="true"
|
||||
|
||||
=== RUN TestR487_RestorePickerListsRemovedApps
|
||||
r487_removed_row_test.go:46: removed app must be an option in the picker
|
||||
--- FAIL: TestR487_RestorePickerListsRemovedApps (0.03s)
|
||||
FAIL
|
||||
FAIL gitea.dooplex.hu/admin/felhom-controller/internal/web 0.038s
|
||||
FAIL
|
||||
exit=1
|
||||
@@ -0,0 +1,16 @@
|
||||
MUTATION in internal/backup/restore_unit.go:
|
||||
- if u, found := m.RemovedAppUnitFor(stackName); found {
|
||||
return u.UnitDir
|
||||
+ if u, found := m.RemovedAppUnitFor(stackName); found && false {
|
||||
return u.UnitDir
|
||||
|
||||
=== RUN TestR487_PrimaryUnitDirForNamesTheRemovedUnitWhereItSits
|
||||
[INFO] [settings] No settings.json found, using defaults
|
||||
[INFO] [settings] Added storage path: /tmp/TestR487_PrimaryUnitDirForNamesTheRemovedUnitWhereItSits2078383903/004
|
||||
[INFO] [settings] Settings saved
|
||||
r487_removed_units_test.go:133: unit dir: got /tmp/TestR487_PrimaryUnitDirForNamesTheRemovedUnitWhereItSits2078383903/001/felhom-data/backups/primary/drive-app want /tmp/TestR487_PrimaryUnitDirForNamesTheRemovedUnitWhereItSits2078383903/004/backups/primary/drive-app
|
||||
--- FAIL: TestR487_PrimaryUnitDirForNamesTheRemovedUnitWhereItSits (0.00s)
|
||||
FAIL
|
||||
FAIL gitea.dooplex.hu/admin/felhom-controller/internal/backup 0.006s
|
||||
FAIL
|
||||
exit=1
|
||||
@@ -0,0 +1,15 @@
|
||||
MUTATION in internal/web/handlers.go:
|
||||
- for _, u := range s.backupMgr.ListRemovedAppUnits() {
|
||||
rows = append(rows, AppBackupRow{
|
||||
+ for _, u := range s.backupMgr.ListRemovedAppUnits() {
|
||||
_ = u
|
||||
continue
|
||||
rows = append(rows, AppBackupRow{
|
||||
|
||||
=== RUN TestR487_BuildAppBackupRowsAppendsRemovedApps
|
||||
r487_removed_row_test.go:109: want one removed row for gone-app, got []
|
||||
--- FAIL: TestR487_BuildAppBackupRowsAppendsRemovedApps (0.00s)
|
||||
FAIL
|
||||
FAIL gitea.dooplex.hu/admin/felhom-controller/internal/web 0.007s
|
||||
FAIL
|
||||
exit=1
|
||||
@@ -0,0 +1,11 @@
|
||||
MUTATION in internal/web/templates/backups_apps.html:
|
||||
- <input type="hidden" name="snapshot_id" value="helyi">
|
||||
+
|
||||
|
||||
=== RUN TestR487_BackupsPageListsARemovedAppWithItsRestore
|
||||
r487_removed_row_test.go:28: removed row must render "name=\"snapshot_id\" value=\"helyi\""
|
||||
--- FAIL: TestR487_BackupsPageListsARemovedAppWithItsRestore (0.02s)
|
||||
FAIL
|
||||
FAIL gitea.dooplex.hu/admin/felhom-controller/internal/web 0.032s
|
||||
FAIL
|
||||
exit=1
|
||||
@@ -0,0 +1,15 @@
|
||||
MUTATION in /mnt/5_hdd/felhom.eu/git/felhom-controller/controller/internal/stacks/delete.go:
|
||||
- removed := []string{}
|
||||
for _, v := range before {
|
||||
+ var removed []string
|
||||
for _, v := range before {
|
||||
|
||||
=== RUN TestR489_RemovedVolumesIsADifferenceAndNeverNull
|
||||
r489_volumes_removed_test.go:20: no volumes must read as [] — got {"removed":"","volumes_removed":null,"hdd_paths_removed":null,"hdd_paths_preserved":null}
|
||||
--- FAIL: TestR489_RemovedVolumesIsADifferenceAndNeverNull (0.00s)
|
||||
=== RUN TestR489_ProjectVolumesReadsTheDockerListing
|
||||
--- PASS: TestR489_ProjectVolumesReadsTheDockerListing (0.00s)
|
||||
FAIL
|
||||
FAIL gitea.dooplex.hu/admin/felhom-controller/internal/stacks 0.008s
|
||||
FAIL
|
||||
exit=1
|
||||
@@ -0,0 +1,11 @@
|
||||
MUTATION in /mnt/5_hdd/felhom.eu/git/felhom-controller/controller/cmd/controller/main.go:
|
||||
- mux.Handle("/api/system/info", webServer.RequireAuth(webServer.CsrfProtect(http.HandlerFunc(apiRouter.ServeHTTP))))
|
||||
+ _ = 0 // RED-PROOF: exact mount removed
|
||||
|
||||
=== RUN TestR490_SystemInfoIsMountedAheadOfTheWebPrefix
|
||||
r475_wiring_test.go:111: /api/system/info must be mounted on the API router ahead of the web layer's /api/system/ prefix (R-490)
|
||||
--- FAIL: TestR490_SystemInfoIsMountedAheadOfTheWebPrefix (0.01s)
|
||||
FAIL
|
||||
FAIL gitea.dooplex.hu/admin/felhom-controller/cmd/controller 0.016s
|
||||
FAIL
|
||||
exit=1
|
||||
@@ -0,0 +1,11 @@
|
||||
MUTATION in internal/api/router.go:
|
||||
- if p := r.sett.GetDefaultStoragePath(); p != "" {
|
||||
+ if p := r.sett.GetDefaultStoragePath(); p != "" && false {
|
||||
|
||||
=== RUN TestR490_SystemInfoFallsBackToTheDefaultStoragePath
|
||||
r474_remove_wiring_test.go:119: hdd_configured must be true with a default storage path registered; body {"ok":true,"data":{"sync_status":null,"system":{"total_mem_mb":64272,"used_mem_mb":0,"avail_mem_mb":64272,"mem_percent":0,"disk_total_gb":444.60704803466797,"disk_used_gb":215.30562591552734,"disk_avail_gb":206.64654159545898,"disk_percent":48.42604876986543,"disk_known":true,"hdd_configured":false,"hdd_known":false,"cpu_percent":0,"load_avg_1":4.9,"load_avg_5":4.46,"load_avg_15":4.54,"temperature_celsius":48,"temperature_source":"x86_pkg_temp"}}}
|
||||
--- FAIL: TestR490_SystemInfoFallsBackToTheDefaultStoragePath (0.15s)
|
||||
FAIL
|
||||
FAIL gitea.dooplex.hu/admin/felhom-controller/internal/api 0.158s
|
||||
FAIL
|
||||
exit=1
|
||||
@@ -0,0 +1,11 @@
|
||||
MUTATION in /mnt/5_hdd/felhom.eu/git/felhom-controller/controller/internal/api/router.go:
|
||||
- if cleared, err := r.sett.ClearUpdateHold(name); err != nil {
|
||||
+ if cleared, err := false, error(nil); err != nil {
|
||||
|
||||
=== RUN TestR491_RemovalClearsTheUpdateHold
|
||||
r474_remove_wiring_test.go:87: removeStack must clear the app's update hold (R-491), or a reinstall starts held
|
||||
--- FAIL: TestR491_RemovalClearsTheUpdateHold (0.00s)
|
||||
FAIL
|
||||
FAIL gitea.dooplex.hu/admin/felhom-controller/internal/api 0.011s
|
||||
FAIL
|
||||
exit=1
|
||||
Reference in New Issue
Block a user