virsh: add support for '--validate' option in define storage pool

Signed-off-by: Kristina Hanicova <khanicov@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
Kristina Hanicova 2021-08-24 16:51:11 +02:00 committed by Michal Privoznik
parent 77b4fe8143
commit 5ca09c6b27
2 changed files with 12 additions and 3 deletions

View File

@ -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 Define an inactive persistent storage pool or modify an existing persistent one
from the XML *file*. 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 pool-define-as

View File

@ -520,7 +520,10 @@ static const vshCmdInfo info_pool_define[] = {
static const vshCmdOptDef opts_pool_define[] = { static const vshCmdOptDef opts_pool_define[] = {
VIRSH_COMMON_OPT_FILE(N_("file containing an XML pool description")), 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} {.name = NULL}
}; };
@ -531,15 +534,19 @@ cmdPoolDefine(vshControl *ctl, const vshCmd *cmd)
const char *from = NULL; const char *from = NULL;
bool ret = true; bool ret = true;
g_autofree char *buffer = NULL; g_autofree char *buffer = NULL;
unsigned int flags = 0;
virshControl *priv = ctl->privData; virshControl *priv = ctl->privData;
if (vshCommandOptStringReq(ctl, cmd, "file", &from) < 0) if (vshCommandOptStringReq(ctl, cmd, "file", &from) < 0)
return false; return false;
if (vshCommandOptBool(cmd, "validate"))
flags |= VIR_STORAGE_POOL_DEFINE_VALIDATE;
if (virFileReadAll(from, VSH_MAX_XML_FILE, &buffer) < 0) if (virFileReadAll(from, VSH_MAX_XML_FILE, &buffer) < 0)
return false; return false;
pool = virStoragePoolDefineXML(priv->conn, buffer, 0); pool = virStoragePoolDefineXML(priv->conn, buffer, flags);
if (pool != NULL) { if (pool != NULL) {
vshPrintExtra(ctl, _("Pool %s defined from %s\n"), vshPrintExtra(ctl, _("Pool %s defined from %s\n"),