mirror of https://gitee.com/openkylin/libvirt.git
conf: domain: Allow passing in 'parseOpaque' for post-parse of status XML
The status XML parser function virDomainObjParseXML could not pass in parseOpaque into the post parse callbacks. Add a callback which will allow hypervisor drivers to fill it from the 'virDomainObj' data. Signed-off-by: Peter Krempa <pkrempa@redhat.com>
This commit is contained in:
parent
ebd2983e25
commit
ac6f736ed1
|
@ -20547,6 +20547,7 @@ virDomainObjParseXML(xmlDocPtr xml,
|
||||||
int n;
|
int n;
|
||||||
int state;
|
int state;
|
||||||
int reason = 0;
|
int reason = 0;
|
||||||
|
void *parseOpaque = NULL;
|
||||||
|
|
||||||
if (!(obj = virDomainObjNew(xmlopt)))
|
if (!(obj = virDomainObjNew(xmlopt)))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -20618,8 +20619,11 @@ virDomainObjParseXML(xmlDocPtr xml,
|
||||||
xmlopt->privateData.parse(ctxt, obj, &xmlopt->config) < 0)
|
xmlopt->privateData.parse(ctxt, obj, &xmlopt->config) < 0)
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
|
if (xmlopt->privateData.getParseOpaque)
|
||||||
|
parseOpaque = xmlopt->privateData.getParseOpaque(obj);
|
||||||
|
|
||||||
/* callback to fill driver specific domain aspects */
|
/* callback to fill driver specific domain aspects */
|
||||||
if (virDomainDefPostParse(obj->def, caps, flags, xmlopt, NULL) < 0)
|
if (virDomainDefPostParse(obj->def, caps, flags, xmlopt, parseOpaque) < 0)
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
/* valdiate configuration */
|
/* valdiate configuration */
|
||||||
|
|
|
@ -2663,6 +2663,8 @@ typedef int (*virDomainXMLPrivateDataParseFunc)(xmlXPathContextPtr,
|
||||||
virDomainObjPtr,
|
virDomainObjPtr,
|
||||||
virDomainDefParserConfigPtr);
|
virDomainDefParserConfigPtr);
|
||||||
|
|
||||||
|
typedef void *(*virDomainXMLPrivateDataGetParseOpaqueFunc)(virDomainObjPtr vm);
|
||||||
|
|
||||||
typedef int (*virDomainXMLPrivateDataStorageSourceParseFunc)(xmlXPathContextPtr ctxt,
|
typedef int (*virDomainXMLPrivateDataStorageSourceParseFunc)(xmlXPathContextPtr ctxt,
|
||||||
virStorageSourcePtr src);
|
virStorageSourcePtr src);
|
||||||
typedef int (*virDomainXMLPrivateDataStorageSourceFormatFunc)(virStorageSourcePtr src,
|
typedef int (*virDomainXMLPrivateDataStorageSourceFormatFunc)(virStorageSourcePtr src,
|
||||||
|
@ -2681,6 +2683,9 @@ struct _virDomainXMLPrivateDataCallbacks {
|
||||||
virDomainXMLPrivateDataNewFunc chrSourceNew;
|
virDomainXMLPrivateDataNewFunc chrSourceNew;
|
||||||
virDomainXMLPrivateDataFormatFunc format;
|
virDomainXMLPrivateDataFormatFunc format;
|
||||||
virDomainXMLPrivateDataParseFunc parse;
|
virDomainXMLPrivateDataParseFunc parse;
|
||||||
|
/* following function shall return a pointer which will be used as the
|
||||||
|
* 'parseOpaque' argument for virDomainDefPostParse */
|
||||||
|
virDomainXMLPrivateDataGetParseOpaqueFunc getParseOpaque;
|
||||||
virDomainXMLPrivateDataStorageSourceParseFunc storageParse;
|
virDomainXMLPrivateDataStorageSourceParseFunc storageParse;
|
||||||
virDomainXMLPrivateDataStorageSourceFormatFunc storageFormat;
|
virDomainXMLPrivateDataStorageSourceFormatFunc storageFormat;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue