mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-03 05:17:54 +03:00
virsh: Introduce --xpath and --wrap to domcapabilities
Similarly to dumpxml, let's have --xpath and --wrap to the 'domcapabilities' command since users might be interested only in a subset of domcapabilities XML. Signed-off-by: Michal Privoznik <mprivozn@redhat.com> Reviewed-by: Kristina Hanicova <khanicov@redhat.com>
This commit is contained in:
parent
332385aa7e
commit
98d5b07f6d
@ -569,6 +569,7 @@ domcapabilities
|
||||
::
|
||||
|
||||
domcapabilities [virttype] [emulatorbin] [arch] [machine]
|
||||
[--xpath EXPRESSION] [--wrap]
|
||||
|
||||
|
||||
Print an XML document describing the domain capabilities for the
|
||||
@ -603,6 +604,13 @@ supplied along with either the *emulatorbin* or *arch* in order to
|
||||
generate output for the default *machine*. Supplying a *machine*
|
||||
value will generate output for the specific machine.
|
||||
|
||||
If the **--xpath** argument provides an XPath expression, it will be
|
||||
evaluated against the output XML and only those matching nodes will
|
||||
be printed. The default behaviour is to print each matching node as
|
||||
a standalone document, however, for ease of additional processing,
|
||||
the **--wrap** argument will cause the matching node to be wrapped
|
||||
in a common root node.
|
||||
|
||||
|
||||
pool-capabilities
|
||||
-----------------
|
||||
|
@ -112,6 +112,16 @@ static const vshCmdOptDef opts_domcapabilities[] = {
|
||||
.type = VSH_OT_STRING,
|
||||
.help = N_("machine type (/domain/os/type/@machine)"),
|
||||
},
|
||||
{.name = "xpath",
|
||||
.type = VSH_OT_STRING,
|
||||
.flags = VSH_OFLAG_REQ_OPT,
|
||||
.completer = virshCompleteEmpty,
|
||||
.help = N_("xpath expression to filter the XML document")
|
||||
},
|
||||
{.name = "wrap",
|
||||
.type = VSH_OT_BOOL,
|
||||
.help = N_("wrap xpath results in an common root element"),
|
||||
},
|
||||
{.name = NULL}
|
||||
};
|
||||
|
||||
@ -123,13 +133,16 @@ cmdDomCapabilities(vshControl *ctl, const vshCmd *cmd)
|
||||
const char *emulatorbin = NULL;
|
||||
const char *arch = NULL;
|
||||
const char *machine = NULL;
|
||||
const char *xpath = NULL;
|
||||
const unsigned int flags = 0; /* No flags so far */
|
||||
bool wrap = vshCommandOptBool(cmd, "wrap");
|
||||
virshControl *priv = ctl->privData;
|
||||
|
||||
if (vshCommandOptStringReq(ctl, cmd, "virttype", &virttype) < 0 ||
|
||||
vshCommandOptStringReq(ctl, cmd, "emulatorbin", &emulatorbin) < 0 ||
|
||||
vshCommandOptStringReq(ctl, cmd, "arch", &arch) < 0 ||
|
||||
vshCommandOptStringReq(ctl, cmd, "machine", &machine) < 0)
|
||||
vshCommandOptStringReq(ctl, cmd, "machine", &machine) < 0 ||
|
||||
vshCommandOptStringQuiet(ctl, cmd, "xpath", &xpath) < 0)
|
||||
return false;
|
||||
|
||||
caps = virConnectGetDomainCapabilities(priv->conn, emulatorbin,
|
||||
@ -139,9 +152,7 @@ cmdDomCapabilities(vshControl *ctl, const vshCmd *cmd)
|
||||
return false;
|
||||
}
|
||||
|
||||
vshPrint(ctl, "%s\n", caps);
|
||||
|
||||
return true;
|
||||
return virshDumpXML(ctl, caps, "domcapabilities", xpath, wrap);
|
||||
}
|
||||
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user