Submit an issue View all issues Source
MIR-940

Disk provider enum leaks through launcher to sandbox volume controller

Done Bug public
phinze phinze Opened Mar 31, 2026 Updated Mar 31, 2026

buildServicesConfig in servers/build/build.go converts appconfig.DiskConfig to core_v1alpha.ConfigSpecServicesDisks but never maps the Provider field (lines 441-450). Fixed in PR #713.

However, there's a second bug in the same chain: controllers/deployment/launcher.go:659 does provider := string(disk.Provider) which casts the full entity enum string (component.config_spec.services.disks.provider.local) instead of mapping it to the short form ("local") that the sandbox volume controller expects.

The sandbox runner (controllers/sandbox/volume.go:23) switches on short strings like "local", "miren", "host" — so the full enum leaks through to the default case and produces:

unsupported volume provider: component.config_spec.services.disks.provider.local

Fix in launcher.go ~line 658:

var provider string
switch disk.Provider {
case core_v1alpha.ConfigSpecServicesDisksLOCAL:
    provider = "local"
case core_v1alpha.ConfigSpecServicesDisksMIREN:
    provider = "miren"
default:
    provider = "miren"
}

Discovered while: deploying the Around appcast server with an explicit [[services.web.disks]] block with provider = "local".