Skip to content

Disable server volume attach/detach flows when block storage is unavailable #141

@larkly

Description

@larkly

Summary

On clouds without block storage/Cinder, server detail still exposes volume attach/detach flows and can open a volume picker backed by a nil block-storage client. The user can trigger a flow the app intentionally did not enable via tabs.

Evidence

  • src/internal/app/app.go:722-723 always routes shared.Keys.Attach to openServerVolumeAttach() from server detail.
  • src/internal/ui/serverdetail/serverdetail.go:1468-1469 still advertises ^a attach volume and ^t detach in the volume pane hints.
  • src/internal/app/actions_resource.go:149-151 creates volumepicker.New(m.client.Compute, m.client.BlockStorage, ...) even when m.client.BlockStorage is nil.
  • src/internal/ui/volumepicker/volumepicker.go:256-260 immediately calls volume.ListVolumes(..., client) with that block-storage client.

Impact

Clouds without Cinder support still present a broken server-detail flow instead of disabling it cleanly or showing an explicit unsupported message.

Suggested fix

Gate the hotkeys, hints, and action handlers on block-storage availability, or surface a clear unsupported-state message instead of opening the picker.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions