diff --git a/docs/manpages/virsh.rst b/docs/manpages/virsh.rst index 850a862fd9..2204bed3bb 100644 --- a/docs/manpages/virsh.rst +++ b/docs/manpages/virsh.rst @@ -5958,10 +5958,12 @@ pool-define :: - pool-define file + pool-define file [--validate] Define an inactive persistent storage pool or modify an existing persistent one from the XML *file*. +Optionally, the format of the input XML file can be validated against an +internal RNG schema with *--validate*. pool-define-as diff --git a/tools/virsh-pool.c b/tools/virsh-pool.c index f0ee95bdf8..1a2ab8cc53 100644 --- a/tools/virsh-pool.c +++ b/tools/virsh-pool.c @@ -520,7 +520,10 @@ static const vshCmdInfo info_pool_define[] = { static const vshCmdOptDef opts_pool_define[] = { VIRSH_COMMON_OPT_FILE(N_("file containing an XML pool description")), - + {.name = "validate", + .type = VSH_OT_BOOL, + .help = N_("validate the XML against the schema") + }, {.name = NULL} }; @@ -531,15 +534,19 @@ cmdPoolDefine(vshControl *ctl, const vshCmd *cmd) const char *from = NULL; bool ret = true; g_autofree char *buffer = NULL; + unsigned int flags = 0; virshControl *priv = ctl->privData; if (vshCommandOptStringReq(ctl, cmd, "file", &from) < 0) return false; + if (vshCommandOptBool(cmd, "validate")) + flags |= VIR_STORAGE_POOL_DEFINE_VALIDATE; + if (virFileReadAll(from, VSH_MAX_XML_FILE, &buffer) < 0) return false; - pool = virStoragePoolDefineXML(priv->conn, buffer, 0); + pool = virStoragePoolDefineXML(priv->conn, buffer, flags); if (pool != NULL) { vshPrintExtra(ctl, _("Pool %s defined from %s\n"),