diff --git a/tools/virsh-pool.c b/tools/virsh-pool.c index d98fd80330..702c9883b4 100644 --- a/tools/virsh-pool.c +++ b/tools/virsh-pool.c @@ -2105,6 +2105,42 @@ cmdPoolEvent(vshControl *ctl, const vshCmd *cmd) } +/* + * "pool-capabilities" command + */ +static const vshCmdInfo info_pool_capabilities[] = { + {.name = "help", + .data = N_("storage pool capabilities") + }, + {.name = "desc", + .data = N_("Returns capabilities of storage pool support.") + }, + {.name = NULL} +}; + +static const vshCmdOptDef opts_pool_capabilities[] = { + {.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 = "pool-capabilities", + .handler = cmdPoolCapabilities, + .opts = opts_pool_capabilities, + .info = info_pool_capabilities, + .flags = 0 + }, {.name = NULL} }; diff --git a/tools/virsh.pod b/tools/virsh.pod index 8e18b30f29..5759a396d4 100644 --- a/tools/virsh.pod +++ b/tools/virsh.pod @@ -389,6 +389,13 @@ supplied along with either the I or I in order to generate output for the default I. Supplying a I value will generate output for the specific machine. +=item B +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 I Inject NMI to the guest.