mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-22 04:25:18 +00:00
util: storage: Allow passing <source> also for managed PR case
To allow storing status information in the XML move the validation that the 'path' is not valid for managed PR daemon case into qemuDomainValidateStorageSource and allow parsing of the data even in case when managed='yes'. Signed-off-by: Peter Krempa <pkrempa@redhat.com>
This commit is contained in:
parent
900fc66121
commit
e31f490458
@ -4204,13 +4204,21 @@ qemuDomainValidateStorageSource(virStorageSourcePtr src,
|
||||
}
|
||||
}
|
||||
|
||||
if (src->pr &&
|
||||
!virQEMUCapsGet(qemuCaps, QEMU_CAPS_PR_MANAGER_HELPER)) {
|
||||
if (src->pr) {
|
||||
if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_PR_MANAGER_HELPER)) {
|
||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
||||
_("reservations not supported with this QEMU binary"));
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (virStoragePRDefIsManaged(src->pr) && src->pr->path) {
|
||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
||||
_("'path' attribute should not be provided for "
|
||||
"managed reservations"));
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -1928,11 +1928,11 @@ virStoragePRDefParseXML(xmlXPathContextPtr ctxt)
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (prd->managed == VIR_TRISTATE_BOOL_NO) {
|
||||
type = virXPathString("string(./source[1]/@type)", ctxt);
|
||||
path = virXPathString("string(./source[1]/@path)", ctxt);
|
||||
mode = virXPathString("string(./source[1]/@mode)", ctxt);
|
||||
|
||||
if (prd->managed == VIR_TRISTATE_BOOL_NO || type || path || mode) {
|
||||
if (!type) {
|
||||
virReportError(VIR_ERR_XML_ERROR, "%s",
|
||||
_("missing connection type for <reservations/>"));
|
||||
@ -1950,15 +1950,16 @@ virStoragePRDefParseXML(xmlXPathContextPtr ctxt)
|
||||
_("missing connection mode for <reservations/>"));
|
||||
goto cleanup;
|
||||
}
|
||||
}
|
||||
|
||||
if (STRNEQ(type, "unix")) {
|
||||
if (type && STRNEQ(type, "unix")) {
|
||||
virReportError(VIR_ERR_XML_ERROR,
|
||||
_("unsupported connection type for <reservations/>: %s"),
|
||||
type);
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (STRNEQ(mode, "client")) {
|
||||
if (mode && STRNEQ(mode, "client")) {
|
||||
virReportError(VIR_ERR_XML_ERROR,
|
||||
_("unsupported connection mode for <reservations/>: %s"),
|
||||
mode);
|
||||
@ -1966,8 +1967,6 @@ virStoragePRDefParseXML(xmlXPathContextPtr ctxt)
|
||||
}
|
||||
|
||||
VIR_STEAL_PTR(prd->path, path);
|
||||
}
|
||||
|
||||
VIR_STEAL_PTR(ret, prd);
|
||||
|
||||
cleanup:
|
||||
@ -1986,7 +1985,7 @@ virStoragePRDefFormat(virBufferPtr buf,
|
||||
{
|
||||
virBufferAsprintf(buf, "<reservations managed='%s'",
|
||||
virTristateBoolTypeToString(prd->managed));
|
||||
if (prd->managed == VIR_TRISTATE_BOOL_NO) {
|
||||
if (prd->path) {
|
||||
virBufferAddLit(buf, ">\n");
|
||||
virBufferAdjustIndent(buf, 2);
|
||||
virBufferAddLit(buf, "<source type='unix'");
|
||||
|
Loading…
x
Reference in New Issue
Block a user