controller v0.67.0: intermediary-mount — HDD_PATH repoint + drive-absent gate + H1 routes
Drives are visible in-guest only at the STABLE /mnt/felhom-drives/<name>; the registered path + HDD_PATH + FileBrowser source repoint there while agent calls map back to raw /mnt/<name> (agentWhere). Enroll binds-under-parent before register. Drive-absent GATE (planDriveGates + 30s driveGateLoop) stops/blocks apps when a drive vanishes and auto-restarts on return; start-gate refuses start when the drive is absent. H1 endpoints (disconnect/reconnect/restart-apps) routed onto host-side ops. Non-hollow tests + companions. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -168,19 +168,24 @@ func TestRunStorageInit_Success(t *testing.T) {
|
||||
if err != nil {
|
||||
t.Fatalf("unexpected error: %v", err)
|
||||
}
|
||||
if !res.Registered || res.Where != "/mnt/hdd1" {
|
||||
t.Fatalf("expected registered at /mnt/hdd1, got %+v", res)
|
||||
// Intermediary model: the AGENT operates on the RAW /mnt/hdd1 (assign + guest-attach), but the
|
||||
// REGISTERED path (+ HDD_PATH/FileBrowser) is the STABLE /mnt/felhom-drives/hdd1.
|
||||
//
|
||||
// COMPANION GUARD: a pre-fix impl that registered the raw /mnt/hdd1, or that passed the stable path to
|
||||
// the agent, would fail one of these assertions.
|
||||
if !res.Registered || res.Where != "/mnt/felhom-drives/hdd1" {
|
||||
t.Fatalf("expected registered at the STABLE /mnt/felhom-drives/hdd1, got %+v", res)
|
||||
}
|
||||
if len(agent.assignCalls) != 1 || agent.assignCalls[0].uuid != "NEW-9999" || agent.assignCalls[0].where != "/mnt/hdd1" {
|
||||
t.Fatalf("assign must use the resolved fs UUID + mount path: %+v", agent.assignCalls)
|
||||
t.Fatalf("assign must use the resolved fs UUID + RAW mount path: %+v", agent.assignCalls)
|
||||
}
|
||||
paths := s.settings.GetStoragePaths()
|
||||
if len(paths) != 1 || paths[0].Path != "/mnt/hdd1" || paths[0].Label != "Külső HDD" || !paths[0].IsDefault || !paths[0].Schedulable {
|
||||
t.Fatalf("StoragePath not registered as expected: %+v", paths)
|
||||
if len(paths) != 1 || paths[0].Path != "/mnt/felhom-drives/hdd1" || paths[0].Label != "Külső HDD" || !paths[0].IsDefault || !paths[0].Schedulable {
|
||||
t.Fatalf("StoragePath not registered at the stable path as expected: %+v", paths)
|
||||
}
|
||||
// P2C: enroll must pass the drive into the guest.
|
||||
// Enroll must pass the drive into the guest via the RAW path (the agent maps it under the parent).
|
||||
if len(agent.guestAttachCalls) != 1 || agent.guestAttachCalls[0] != "/mnt/hdd1" {
|
||||
t.Fatalf("enroll did not guest-attach the drive: %+v", agent.guestAttachCalls)
|
||||
t.Fatalf("enroll did not guest-attach the raw drive path: %+v", agent.guestAttachCalls)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user