storage|test|vbox: Implement support for validating storage volume XMLs
Signed-off-by: Peter Krempa <pkrempa@redhat.com> Reviewed-by: Jonathon Jongsma <jjongsma@redhat.com>
This commit is contained in:
parent
db5f05dd22
commit
df570882cd
@ -1877,8 +1877,13 @@ storageVolCreateXML(virStoragePoolPtr pool,
|
|||||||
virStorageBackend *backend;
|
virStorageBackend *backend;
|
||||||
virStorageVolPtr vol = NULL, newvol = NULL;
|
virStorageVolPtr vol = NULL, newvol = NULL;
|
||||||
g_autoptr(virStorageVolDef) voldef = NULL;
|
g_autoptr(virStorageVolDef) voldef = NULL;
|
||||||
|
unsigned int parseFlags = VIR_VOL_XML_PARSE_OPT_CAPACITY;
|
||||||
|
|
||||||
virCheckFlags(VIR_STORAGE_VOL_CREATE_PREALLOC_METADATA, NULL);
|
virCheckFlags(VIR_STORAGE_VOL_CREATE_PREALLOC_METADATA |
|
||||||
|
VIR_STORAGE_VOL_CREATE_VALIDATE, NULL);
|
||||||
|
|
||||||
|
if (flags & VIR_STORAGE_VOL_CREATE_VALIDATE)
|
||||||
|
parseFlags |= VIR_VOL_XML_PARSE_VALIDATE;
|
||||||
|
|
||||||
if (!(obj = virStoragePoolObjFromStoragePool(pool)))
|
if (!(obj = virStoragePoolObjFromStoragePool(pool)))
|
||||||
return NULL;
|
return NULL;
|
||||||
@ -1893,7 +1898,7 @@ storageVolCreateXML(virStoragePoolPtr pool,
|
|||||||
if ((backend = virStorageBackendForType(def->type)) == NULL)
|
if ((backend = virStorageBackendForType(def->type)) == NULL)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
voldef = virStorageVolDefParse(def, xmldesc, NULL, VIR_VOL_XML_PARSE_OPT_CAPACITY);
|
voldef = virStorageVolDefParse(def, xmldesc, NULL, parseFlags);
|
||||||
if (voldef == NULL)
|
if (voldef == NULL)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
@ -2012,11 +2017,16 @@ storageVolCreateXMLFrom(virStoragePoolPtr pool,
|
|||||||
virStorageVolPtr vol = NULL;
|
virStorageVolPtr vol = NULL;
|
||||||
int buildret;
|
int buildret;
|
||||||
g_autoptr(virStorageVolDef) voldef = NULL;
|
g_autoptr(virStorageVolDef) voldef = NULL;
|
||||||
|
unsigned int parseFlags = VIR_VOL_XML_PARSE_NO_CAPACITY;
|
||||||
|
|
||||||
virCheckFlags(VIR_STORAGE_VOL_CREATE_PREALLOC_METADATA |
|
virCheckFlags(VIR_STORAGE_VOL_CREATE_PREALLOC_METADATA |
|
||||||
VIR_STORAGE_VOL_CREATE_REFLINK,
|
VIR_STORAGE_VOL_CREATE_REFLINK |
|
||||||
|
VIR_STORAGE_VOL_CREATE_VALIDATE,
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
|
if (flags & VIR_STORAGE_VOL_CREATE_VALIDATE)
|
||||||
|
parseFlags |= VIR_VOL_XML_PARSE_VALIDATE;
|
||||||
|
|
||||||
obj = virStoragePoolObjFindByUUID(driver->pools, pool->uuid);
|
obj = virStoragePoolObjFindByUUID(driver->pools, pool->uuid);
|
||||||
if (obj && STRNEQ(pool->name, volsrc->pool)) {
|
if (obj && STRNEQ(pool->name, volsrc->pool)) {
|
||||||
virObjectUnlock(obj);
|
virObjectUnlock(obj);
|
||||||
@ -2066,7 +2076,7 @@ storageVolCreateXMLFrom(virStoragePoolPtr pool,
|
|||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
voldef = virStorageVolDefParse(def, xmldesc, NULL, VIR_VOL_XML_PARSE_NO_CAPACITY);
|
voldef = virStorageVolDefParse(def, xmldesc, NULL, parseFlags);
|
||||||
if (voldef == NULL)
|
if (voldef == NULL)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
|
@ -7182,14 +7182,18 @@ testStorageVolCreateXML(virStoragePoolPtr pool,
|
|||||||
virStoragePoolDef *def;
|
virStoragePoolDef *def;
|
||||||
virStorageVolPtr ret = NULL;
|
virStorageVolPtr ret = NULL;
|
||||||
g_autoptr(virStorageVolDef) privvol = NULL;
|
g_autoptr(virStorageVolDef) privvol = NULL;
|
||||||
|
unsigned int parseFlags = 0;
|
||||||
|
|
||||||
virCheckFlags(0, NULL);
|
virCheckFlags(VIR_STORAGE_VOL_CREATE_VALIDATE, NULL);
|
||||||
|
|
||||||
|
if (flags & VIR_STORAGE_VOL_CREATE_VALIDATE)
|
||||||
|
parseFlags |= VIR_VOL_XML_PARSE_VALIDATE;
|
||||||
|
|
||||||
if (!(obj = testStoragePoolObjFindActiveByName(privconn, pool->name)))
|
if (!(obj = testStoragePoolObjFindActiveByName(privconn, pool->name)))
|
||||||
return NULL;
|
return NULL;
|
||||||
def = virStoragePoolObjGetDef(obj);
|
def = virStoragePoolObjGetDef(obj);
|
||||||
|
|
||||||
privvol = virStorageVolDefParse(def, xmldesc, NULL, 0);
|
privvol = virStorageVolDefParse(def, xmldesc, NULL, parseFlags);
|
||||||
if (privvol == NULL)
|
if (privvol == NULL)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
@ -7241,14 +7245,18 @@ testStorageVolCreateXMLFrom(virStoragePoolPtr pool,
|
|||||||
virStorageVolDef *origvol = NULL;
|
virStorageVolDef *origvol = NULL;
|
||||||
virStorageVolPtr ret = NULL;
|
virStorageVolPtr ret = NULL;
|
||||||
g_autoptr(virStorageVolDef) privvol = NULL;
|
g_autoptr(virStorageVolDef) privvol = NULL;
|
||||||
|
unsigned int parseFlags = 0;
|
||||||
|
|
||||||
virCheckFlags(0, NULL);
|
virCheckFlags(VIR_STORAGE_VOL_CREATE_VALIDATE, NULL);
|
||||||
|
|
||||||
|
if (flags & VIR_STORAGE_VOL_CREATE_VALIDATE)
|
||||||
|
parseFlags |= VIR_VOL_XML_PARSE_VALIDATE;
|
||||||
|
|
||||||
if (!(obj = testStoragePoolObjFindActiveByName(privconn, pool->name)))
|
if (!(obj = testStoragePoolObjFindActiveByName(privconn, pool->name)))
|
||||||
return NULL;
|
return NULL;
|
||||||
def = virStoragePoolObjGetDef(obj);
|
def = virStoragePoolObjGetDef(obj);
|
||||||
|
|
||||||
privvol = virStorageVolDefParse(def, xmldesc, NULL, 0);
|
privvol = virStorageVolDefParse(def, xmldesc, NULL, parseFlags);
|
||||||
if (privvol == NULL)
|
if (privvol == NULL)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
|
@ -409,11 +409,15 @@ vboxStorageVolCreateXML(virStoragePoolPtr pool,
|
|||||||
virStorageVolPtr ret = NULL;
|
virStorageVolPtr ret = NULL;
|
||||||
g_autoptr(virStorageVolDef) def = NULL;
|
g_autoptr(virStorageVolDef) def = NULL;
|
||||||
g_autofree char *homedir = NULL;
|
g_autofree char *homedir = NULL;
|
||||||
|
unsigned int parseFlags = 0;
|
||||||
|
|
||||||
if (!data->vboxObj)
|
if (!data->vboxObj)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
virCheckFlags(0, NULL);
|
virCheckFlags(VIR_STORAGE_VOL_CREATE_VALIDATE, NULL);
|
||||||
|
|
||||||
|
if (flags & VIR_STORAGE_VOL_CREATE_VALIDATE)
|
||||||
|
parseFlags |= VIR_VOL_XML_PARSE_VALIDATE;
|
||||||
|
|
||||||
/* since there is currently one default pool now
|
/* since there is currently one default pool now
|
||||||
* and virStorageVolDefFormat() just checks it type
|
* and virStorageVolDefFormat() just checks it type
|
||||||
@ -423,7 +427,7 @@ vboxStorageVolCreateXML(virStoragePoolPtr pool,
|
|||||||
memset(&poolDef, 0, sizeof(poolDef));
|
memset(&poolDef, 0, sizeof(poolDef));
|
||||||
poolDef.type = VIR_STORAGE_POOL_DIR;
|
poolDef.type = VIR_STORAGE_POOL_DIR;
|
||||||
|
|
||||||
if ((def = virStorageVolDefParse(&poolDef, xml, NULL, 0)) == NULL)
|
if ((def = virStorageVolDefParse(&poolDef, xml, NULL, parseFlags)) == NULL)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
if (!def->name ||
|
if (!def->name ||
|
||||||
|
Loading…
x
Reference in New Issue
Block a user