[libvirt] [PATCH 2/4] native: add virsh command domxml-formats

Eric Blake eblake at redhat.com
Fri Jan 13 19:11:31 UTC 2012


I've wanted this command for ages :)

* tools/virsh.c (cmdDomXMLFormats): New function.
* tools/virsh.pod (domxml-formats): Document it.
---
 tools/virsh.c   |   48 ++++++++++++++++++++++++++++++++++++++++++++++++
 tools/virsh.pod |   11 +++++++++--
 2 files changed, 57 insertions(+), 2 deletions(-)

diff --git a/tools/virsh.c b/tools/virsh.c
index c511e2a..b1a0fb7 100644
--- a/tools/virsh.c
+++ b/tools/virsh.c
@@ -6268,6 +6268,52 @@ cmdDomXMLToNative(vshControl *ctl, const vshCmd *cmd)
 }

 /*
+ * "domxml-formats" command
+ */
+static const vshCmdInfo info_domxmlformats[] = {
+    {"help", N_("List native formats compatible with domain XML")},
+    {"desc",
+     N_("List the valid formats for domxml-to-native and domxml-from-native.")},
+    {NULL, NULL}
+};
+
+static const vshCmdOptDef opts_domxmlformats[] = {
+    {NULL, 0, 0, NULL}
+};
+
+static bool
+cmdDomXMLFormats(vshControl *ctl, const vshCmd *cmd ATTRIBUTE_UNUSED)
+{
+    bool ret = false;
+    unsigned int flags = 0;
+    char **formats = NULL;
+    int nformats = 0;
+    int i;
+
+    if (!vshConnectionUsability(ctl, ctl->conn))
+        return false;
+
+    if ((nformats = virConnectDomainNativeFormats(ctl->conn, NULL, 0,
+                                                  flags)) < 0)
+        goto cleanup;
+
+    formats = vshCalloc(ctl, nformats, sizeof(*formats));
+    if ((nformats = virConnectDomainNativeFormats(ctl->conn, formats, nformats,
+                                                  flags)) < 0)
+        goto cleanup;
+
+    for (i = 0; i < nformats; i++)
+        vshPrint(ctl, "%s\n", formats[i]);
+    ret = true;
+
+cleanup:
+    for (i = 0; i < nformats; i++)
+        VIR_FREE(formats[i]);
+    VIR_FREE(formats);
+    return ret;
+}
+
+/*
  * "domname" command
  */
 static const vshCmdInfo info_domname[] = {
@@ -15930,6 +15976,8 @@ static const vshCmdDef domManagementCmds[] = {
     {"domjobinfo", cmdDomjobinfo, opts_domjobinfo, info_domjobinfo, 0},
     {"domname", cmdDomname, opts_domname, info_domname, 0},
     {"domuuid", cmdDomuuid, opts_domuuid, info_domuuid, 0},
+    {"domxml-formats", cmdDomXMLFormats, opts_domxmlformats,
+     info_domxmlformats, 0},
     {"domxml-from-native", cmdDomXMLFromNative, opts_domxmlfromnative,
      info_domxmlfromnative, 0},
     {"domxml-to-native", cmdDomXMLToNative, opts_domxmltonative,
diff --git a/tools/virsh.pod b/tools/virsh.pod
index c88395b..19f93cf 100644
--- a/tools/virsh.pod
+++ b/tools/virsh.pod
@@ -624,19 +624,26 @@ Returns state of an interface to VMM used to control a domain.  For
 states other than "ok" or "error" the command also prints number of
 seconds elapsed since the control interface entered its current state.

+=item B<domxml-formats>
+
+List the valid formats for use by B<domxml-from-native> and
+B<domxml-to-native>.
+
 =item B<domxml-from-native> I<format> I<config>

 Convert the file I<config> in the native guest configuration format
 named by I<format> to a domain XML format. For QEMU/KVM hypervisor,
 the I<format> argument must be B<qemu-argv>. For Xen hypervisor, the
-I<format> argument may be B<xen-xm> or B<xen-sxpr>.
+I<format> argument may be B<xen-xm> or B<xen-sxpr>.  See also
+B<domxml-formats>.

 =item B<domxml-to-native> I<format> I<xml>

 Convert the file I<xml> in domain XML format to the native guest
 configuration format named by I<format>. For QEMU/KVM hypervisor,
 the I<format> argument must be B<qemu-argv>. For Xen hypervisor, the
-I<format> argument may be B<xen-xm> or B<xen-sxpr>.
+I<format> argument may be B<xen-xm> or B<xen-sxpr>.  See also
+B<domxml-formats>.

 =item B<dump> I<domain-id> I<corefilepath> [I<--bypass-cache>]
 { [I<--live>] | [I<--crash>] | [I<--reset>] } [I<--verbose>]
-- 
1.7.7.5




More information about the libvir-list mailing list