https://bugzilla.redhat.com/show_bug.cgi?id=1581670 Add a new storage pool command "poolcapabilities" to output the storage pool capabilities. This mimics the "domcapabilities" command with respect to naming. Signed-off-by: John Ferlan <jferlan@xxxxxxxxxx> --- tools/virsh-pool.c | 42 ++++++++++++++++++++++++++++++++++++++++++ tools/virsh.pod | 7 +++++++ 2 files changed, 49 insertions(+) diff --git a/tools/virsh-pool.c b/tools/virsh-pool.c index d98fd80330..378bf0de21 100644 --- a/tools/virsh-pool.c +++ b/tools/virsh-pool.c @@ -2105,6 +2105,42 @@ cmdPoolEvent(vshControl *ctl, const vshCmd *cmd) } +/* + * "poolcapabilities" command + */ +static const vshCmdInfo info_poolcapabilities[] = { + {.name = "help", + .data = N_("storage pool capabilities") + }, + {.name = "desc", + .data = N_("Returns capabilities of storage pool support.") + }, + {.name = NULL} +}; + +static const vshCmdOptDef opts_poolcapabilities[] = { + {.name = NULL} +}; + +static bool +cmdPoolCapabilities(vshControl *ctl, + const vshCmd *cmd ATTRIBUTE_UNUSED) +{ + const unsigned int flags = 0; /* No flags so far */ + virshControlPtr priv = ctl->privData; + VIR_AUTOFREE(char *) caps = NULL; + + caps = virConnectGetStoragePoolCapabilities(priv->conn, flags); + if (!caps) { + vshError(ctl, "%s", _("failed to get storage pool capabilities")); + return false; + } + + vshPrint(ctl, "%s\n", caps); + return true; +} + + const vshCmdDef storagePoolCmds[] = { {.name = "find-storage-pool-sources-as", .handler = cmdPoolDiscoverSourcesAs, @@ -2226,5 +2262,11 @@ const vshCmdDef storagePoolCmds[] = { .info = info_pool_event, .flags = 0 }, + {.name = "poolcapabilities", + .handler = cmdPoolCapabilities, + .opts = opts_poolcapabilities, + .info = info_poolcapabilities, + .flags = 0 + }, {.name = NULL} }; diff --git a/tools/virsh.pod b/tools/virsh.pod index 67edb57b14..f517d4aa24 100644 --- a/tools/virsh.pod +++ b/tools/virsh.pod @@ -388,6 +388,13 @@ supplied along with either the I<emulatorbin> or I<arch> in order to generate output for the default I<machine>. Supplying a I<machine> value will generate output for the specific machine. +=item B<poolcapabilities> +Print an XML document describing the storage pool capabilities for the +connected storage driver. This may be useful if you intend to create a +new storage pool and need to know the available pool types and supported +storage pool source and target volume formats as well as the required +source elements to create the pool. + =item B<inject-nmi> I<domain> Inject NMI to the guest. -- 2.20.1