[libvirt] [PATCH v2 16/17] virsh: Expose virConnectGetStoragePoolCapabilities

John Ferlan jferlan at redhat.com
Tue Feb 12 15:28:15 UTC 2019


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 at 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




More information about the libvir-list mailing list