Manage external volumes: storage outside a server's local disks (SAN over iSCSI, Ceph RBD, AWS EBS) that a container mounts via deploy_application volumes.external. A volume belongs to one cluster and location and lists the servers allowed to mount it.
list and describe are reads. scan has an integration report the volumes it exposes to a cluster; they then appear in list with state new/ready. create registers one volume: the named servers fix its cluster and location, the integration authenticates to the storage, and source names the device (lun; image+pool; volume_id, or create_size to allocate a new EBS volume). set_servers replaces the mountable server list. delete is refused while a container uses the volume; delete_source_device also destroys the backing device.
Cycle's catalog decides which source types exist, which are creatable, and which attachment types and modes each supports; it is returned in 'sources' on scan and create. Modes count concurrent attachers (single-instance, single-node, multi-node) and access (writer, read-only); multi-node-writer needs a cluster-aware filesystem.
scan, create, set_servers, delete: preview:true first, confirm with the user, then call again without preview.