Currently there is no simple way how to get list of supported storage pools. It would be nice to report it in capabilities.
Does it only matter which storage pools by type? That is output such as: <pool> <type>dir</pool> </pool> <pool> <type>fs</pool> </pool> ... Would it be useful to know what functions the backend supports as well? And by functions I'm thinking _virStorageBackend "pool" and "volume" type data. I'd take suggestions over the format for output too! Not every backend supports every pool and volume function. Some don't make sense, such as for the dir pool, it doesn't make sense to start the pool and there's no create function; however, there is build, refresh, and delete. The pool functions would be findPoolSources, start, build, refresh, stop, and delete The volume functions would be build, buildFrom, create, delete, refresh, resize, upload, download, and wipe. Finally, generation of such output would be available through the "storage:///" connection pointer and not other hypervisor's.
A couple series were posted: v2: https://www.redhat.com/archives/libvir-list/2019-February/msg00709.html v1: https://www.redhat.com/archives/libvir-list/2019-January/msg00479.html The v2 series was pushed w/ minor changes Author: John Ferlan <jferlan> Date: Thu Feb 7 12:02:53 2019 -0500 virsh: Expose virConnectGetStoragePoolCapabilities ... Add a new storage pool command "pool-capabilities" to output the storage pool capabilities. Signed-off-by: John Ferlan <jferlan> ACKed-by: Michal Privoznik <mprivozn> $ git describe d9a411589292dce17203e52fd042fa35f13f87e8 v5.1.0-122-gd9a4115892 $ Example of my output: $ virsh -c storage:///system capabilities <capabilities> <pool> <enum name='type'> <value>dir</value> <value>fs</value> <value>netfs</value> <value>logical</value> <value>iscsi</value> <value>iscsi-direct</value> <value>scsi</value> <value>mpath</value> <value>disk</value> <value>rbd</value> <value>sheepdog</value> <value>gluster</value> <value>zfs</value> </enum> </pool> </capabilities> $ virsh -c storage:///system pool-capabilities <storagepoolCapabilities> <pool type='dir' supported='yes'> <volOptions> <defaultFormat type='raw'/> <enum name='targetFormatType'> <value>none</value> <value>raw</value> <value>dir</value> <value>bochs</value> <value>cloop</value> <value>dmg</value> <value>iso</value> <value>vpc</value> <value>vdi</value> <value>fat</value> <value>vhd</value> <value>ploop</value> <value>cow</value> <value>qcow</value> <value>qcow2</value> <value>qed</value> <value>vmdk</value> </enum> </volOptions> </pool> <pool type='fs' supported='yes'> <poolOptions> <defaultFormat type='auto'/> <enum name='sourceFormatType'> <value>auto</value> <value>ext2</value> <value>ext3</value> <value>ext4</value> <value>ufs</value> <value>iso9660</value> <value>udf</value> <value>gfs</value> <value>gfs2</value> <value>vfat</value> <value>hfs+</value> <value>xfs</value> <value>ocfs2</value> </enum> <enum name='requiredSourceElements'> <value>device</value> </enum> </poolOptions> <volOptions> <defaultFormat type='raw'/> <enum name='targetFormatType'> <value>none</value> <value>raw</value> <value>dir</value> <value>bochs</value> <value>cloop</value> <value>dmg</value> <value>iso</value> <value>vpc</value> <value>vdi</value> <value>fat</value> <value>vhd</value> <value>ploop</value> <value>cow</value> <value>qcow</value> <value>qcow2</value> <value>qed</value> <value>vmdk</value> </enum> </volOptions> </pool> <pool type='netfs' supported='yes'> <poolOptions> <defaultFormat type='auto'/> <enum name='sourceFormatType'> <value>auto</value> <value>nfs</value> <value>glusterfs</value> <value>cifs</value> </enum> <enum name='requiredSourceElements'> <value>host</value> <value>dir</value> </enum> </poolOptions> <volOptions> <defaultFormat type='raw'/> <enum name='targetFormatType'> <value>none</value> <value>raw</value> <value>dir</value> <value>bochs</value> <value>cloop</value> <value>dmg</value> <value>iso</value> <value>vpc</value> <value>vdi</value> <value>fat</value> <value>vhd</value> <value>ploop</value> <value>cow</value> <value>qcow</value> <value>qcow2</value> <value>qed</value> <value>vmdk</value> </enum> </volOptions> </pool> <pool type='logical' supported='yes'> <poolOptions> <defaultFormat type='lvm2'/> <enum name='sourceFormatType'> <value>unknown</value> <value>lvm2</value> </enum> <enum name='requiredSourceElements'> <value>device</value> <value>name</value> </enum> </poolOptions> </pool> <pool type='disk' supported='yes'> <poolOptions> <defaultFormat type='unknown'/> <enum name='sourceFormatType'> <value>unknown</value> <value>dos</value> <value>dvh</value> <value>gpt</value> <value>mac</value> <value>bsd</value> <value>pc98</value> <value>sun</value> <value>lvm2</value> </enum> <enum name='requiredSourceElements'> <value>device</value> </enum> </poolOptions> <volOptions> <defaultFormat type='none'/> <enum name='targetFormatType'> <value>none</value> <value>linux</value> <value>fat16</value> <value>fat32</value> <value>linux-swap</value> <value>linux-lvm</value> <value>linux-raid</value> <value>extended</value> </enum> </volOptions> </pool> <pool type='iscsi' supported='yes'> <poolOptions> <enum name='requiredSourceElements'> <value>host</value> <value>device</value> <value>initiator</value> </enum> </poolOptions> </pool> <pool type='iscsi-direct' supported='yes'> <poolOptions> <enum name='requiredSourceElements'> <value>host</value> <value>device</value> <value>initiator</value> <value>network</value> </enum> </poolOptions> </pool> <pool type='scsi' supported='yes'> <poolOptions> <enum name='requiredSourceElements'> <value>adapter</value> </enum> </poolOptions> </pool> <pool type='mpath' supported='yes'> </pool> <pool type='rbd' supported='yes'> <poolOptions> <enum name='requiredSourceElements'> <value>host</value> <value>name</value> <value>network</value> </enum> </poolOptions> </pool> <pool type='sheepdog' supported='yes'> <poolOptions> <enum name='requiredSourceElements'> <value>host</value> <value>name</value> <value>network</value> </enum> </poolOptions> </pool> <pool type='gluster' supported='yes'> <poolOptions> <enum name='requiredSourceElements'> <value>host</value> <value>dir</value> <value>name</value> <value>network</value> </enum> </poolOptions> <volOptions> <defaultFormat type='raw'/> <enum name='targetFormatType'> <value>none</value> <value>raw</value> <value>dir</value> <value>bochs</value> <value>cloop</value> <value>dmg</value> <value>iso</value> <value>vpc</value> <value>vdi</value> <value>fat</value> <value>vhd</value> <value>ploop</value> <value>cow</value> <value>qcow</value> <value>qcow2</value> <value>qed</value> <value>vmdk</value> </enum> </volOptions> </pool> <pool type='zfs' supported='yes'> <poolOptions> <enum name='requiredSourceElements'> <value>device</value> <value>name</value> </enum> </poolOptions> </pool> <pool type='vstorage' supported='no'> <poolOptions> <enum name='requiredSourceElements'> <value>name</value> </enum> </poolOptions> <volOptions> <defaultFormat type='raw'/> <enum name='targetFormatType'> <value>none</value> <value>raw</value> <value>dir</value> <value>bochs</value> <value>cloop</value> <value>dmg</value> <value>iso</value> <value>vpc</value> <value>vdi</value> <value>fat</value> <value>vhd</value> <value>ploop</value> <value>cow</value> <value>qcow</value> <value>qcow2</value> <value>qed</value> <value>vmdk</value> </enum> </volOptions> </pool> </storagepoolCapabilities>
Note at update by Pavel to the code removes the requiredSourceElements elements, see: $ git show commit 9dadc7302920f9fca0057c655d03c2b0206b9a70 Author: Pavel Hrdina <phrdina> Date: Wed Mar 6 18:59:39 2019 +0100 caps: drop requiredSourceElements from storage pool capabilities Capabilities should not duplicate data that are obvious from our documentation and will not change with different QEMU binaries or the way how we compile libvirt. Signed-off-by: Pavel Hrdina <phrdina> $ git describe 9dadc7302920f9fca0057c655d03c2b0206b9a70 v5.1.0-133-g9dadc73029 $
Verified Version: libvirt-5.4.0-1.module+el8.1.0+3304+7eb41d5f.x86_64 qemu-kvm-4.0.0-4.module+el8.1.0+3356+cda7f1ee.x86_64 kernel-4.18.0-107.el8.x86_64 Verified Steps: Scenario 1: Report list of supported storage pools by virsh -c storage:///system capabilities # virsh -c storage:///system capabilities <capabilities> <pool> <enum name='type'> <value>dir</value> <value>fs</value> <value>netfs</value> <value>logical</value> <value>iscsi</value> <value>iscsi-direct</value> <value>scsi</value> <value>mpath</value> <value>disk</value> <value>rbd</value> <value>gluster</value> </enum> </pool> </capabilities> Scenario 2: Report list of supported storage pools by virsh pool-capabilities or virsh -c storage:///system pool-capabilities # virsh pool-capabilities <storagepoolCapabilities> <pool type='dir' supported='yes'> <volOptions> <defaultFormat type='raw'/> <enum name='targetFormatType'> <value>none</value> <value>raw</value> <value>dir</value> <value>bochs</value> <value>cloop</value> <value>dmg</value> <value>iso</value> <value>vpc</value> <value>vdi</value> <value>fat</value> <value>vhd</value> <value>ploop</value> <value>cow</value> <value>qcow</value> <value>qcow2</value> <value>qed</value> <value>vmdk</value> </enum> </volOptions> </pool> <pool type='fs' supported='yes'> <poolOptions> <defaultFormat type='auto'/> <enum name='sourceFormatType'> <value>auto</value> <value>ext2</value> <value>ext3</value> <value>ext4</value> <value>ufs</value> <value>iso9660</value> <value>udf</value> <value>gfs</value> <value>gfs2</value> <value>vfat</value> <value>hfs+</value> <value>xfs</value> <value>ocfs2</value> </enum> </poolOptions> <volOptions> <defaultFormat type='raw'/> <enum name='targetFormatType'> <value>none</value> <value>raw</value> <value>dir</value> <value>bochs</value> <value>cloop</value> <value>dmg</value> <value>iso</value> <value>vpc</value> <value>vdi</value> <value>fat</value> <value>vhd</value> <value>ploop</value> <value>cow</value> <value>qcow</value> <value>qcow2</value> <value>qed</value> <value>vmdk</value> </enum> </volOptions> </pool> <pool type='netfs' supported='yes'> <poolOptions> <defaultFormat type='auto'/> <enum name='sourceFormatType'> <value>auto</value> <value>nfs</value> <value>glusterfs</value> <value>cifs</value> </enum> </poolOptions> <volOptions> <defaultFormat type='raw'/> <enum name='targetFormatType'> <value>none</value> <value>raw</value> <value>dir</value> <value>bochs</value> <value>cloop</value> <value>dmg</value> <value>iso</value> <value>vpc</value> <value>vdi</value> <value>fat</value> <value>vhd</value> <value>ploop</value> <value>cow</value> <value>qcow</value> <value>qcow2</value> <value>qed</value> <value>vmdk</value> </enum> </volOptions> </pool> <pool type='logical' supported='yes'> <poolOptions> <defaultFormat type='lvm2'/> <enum name='sourceFormatType'> <value>unknown</value> <value>lvm2</value> </enum> </poolOptions> </pool> <pool type='disk' supported='yes'> <poolOptions> <defaultFormat type='unknown'/> <enum name='sourceFormatType'> <value>unknown</value> <value>dos</value> <value>dvh</value> <value>gpt</value> <value>mac</value> <value>bsd</value> <value>pc98</value> <value>sun</value> <value>lvm2</value> </enum> </poolOptions> <volOptions> <defaultFormat type='none'/> <enum name='targetFormatType'> <value>none</value> <value>linux</value> <value>fat16</value> <value>fat32</value> <value>linux-swap</value> <value>linux-lvm</value> <value>linux-raid</value> <value>extended</value> </enum> </volOptions> </pool> <pool type='iscsi' supported='yes'> </pool> <pool type='iscsi-direct' supported='yes'> </pool> <pool type='scsi' supported='yes'> </pool> <pool type='mpath' supported='yes'> </pool> <pool type='rbd' supported='yes'> </pool> <pool type='sheepdog' supported='no'> </pool> <pool type='gluster' supported='yes'> <volOptions> <defaultFormat type='raw'/> <enum name='targetFormatType'> <value>none</value> <value>raw</value> <value>dir</value> <value>bochs</value> <value>cloop</value> <value>dmg</value> <value>iso</value> <value>vpc</value> <value>vdi</value> <value>fat</value> <value>vhd</value> <value>ploop</value> <value>cow</value> <value>qcow</value> <value>qcow2</value> <value>qed</value> <value>vmdk</value> </enum> </volOptions> </pool> <pool type='zfs' supported='no'> </pool> <pool type='vstorage' supported='no'> <volOptions> <defaultFormat type='raw'/> <enum name='targetFormatType'> <value>none</value> <value>raw</value> <value>dir</value> <value>bochs</value> <value>cloop</value> <value>dmg</value> <value>iso</value> <value>vpc</value> <value>vdi</value> <value>fat</value> <value>vhd</value> <value>ploop</value> <value>cow</value> <value>qcow</value> <value>qcow2</value> <value>qed</value> <value>vmdk</value> </enum> </volOptions> </pool> </storagepoolCapabilities> Scenario 3: Check related doc. 1) # man virsh | grep pool-capabilities -a4 2) # virsh pool-capabilities --help All the result of scenarios are expected, so move this bug to be verified.
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHBA-2019:3723