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(a)redhat.com>
---
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