snapshot: Allow for post-parse override

Wire up the accessor functions necessary for the testsuite to install
an alternative post-parse handler from normal drivers. I could have
modified the signature for virDomainXMLOptionNew() to take another
parameter, but thought it was easier to add a new set function rather
than chase down all existing callers. Until code actually sets the
override, there is no change in behavior.

Signed-off-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Cole Robinson <crobinso@redhat.com>
This commit is contained in:
Eric Blake 2019-04-15 21:59:44 -05:00
parent 5ba4d81ce9
commit df2ae0d042
4 changed files with 30 additions and 1 deletions

View File

@ -82,6 +82,9 @@ struct _virDomainXMLOption {
/* Private data for save image stored in snapshot XML */
virSaveCookieCallbacks saveCookie;
/* Snapshot postparse callbacks */
virDomainMomentPostParseCallback momentPostParse;
};
#define VIR_DOMAIN_DEF_FORMAT_COMMON_FLAGS \
@ -1476,6 +1479,24 @@ virDomainXMLOptionGetSaveCookie(virDomainXMLOptionPtr xmlopt)
}
void
virDomainXMLOptionSetMomentPostParse(virDomainXMLOptionPtr xmlopt,
virDomainMomentPostParseCallback cb)
{
xmlopt->momentPostParse = cb;
}
int
virDomainXMLOptionRunMomentPostParse(virDomainXMLOptionPtr xmlopt,
virDomainMomentDefPtr def)
{
if (!xmlopt->momentPostParse)
return virDomainMomentDefPostParse(def);
return xmlopt->momentPostParse(def);
}
void
virBlkioDeviceArrayClear(virBlkioDevicePtr devices,
int ndevices)

View File

@ -2728,6 +2728,13 @@ virDomainXMLOptionPtr virDomainXMLOptionNew(virDomainDefParserConfigPtr config,
virSaveCookieCallbacksPtr
virDomainXMLOptionGetSaveCookie(virDomainXMLOptionPtr xmlopt);
typedef int (*virDomainMomentPostParseCallback)(virDomainMomentDefPtr def);
void virDomainXMLOptionSetMomentPostParse(virDomainXMLOptionPtr xmlopt,
virDomainMomentPostParseCallback cb);
int virDomainXMLOptionRunMomentPostParse(virDomainXMLOptionPtr xmlopt,
virDomainMomentDefPtr def);
void virDomainNetGenerateMAC(virDomainXMLOptionPtr xmlopt, virMacAddrPtr mac);
virDomainXMLNamespacePtr

View File

@ -270,7 +270,7 @@ virDomainSnapshotDefParse(xmlXPathContextPtr ctxt,
} else {
VIR_WARN("parsing older snapshot that lacks domain");
}
} else if (virDomainMomentDefPostParse(&def->common) < 0) {
} else if (virDomainXMLOptionRunMomentPostParse(xmlopt, &def->common) < 0) {
goto cleanup;
}

View File

@ -608,6 +608,7 @@ virDomainWatchdogModelTypeToString;
virDomainXMLOptionGetNamespace;
virDomainXMLOptionGetSaveCookie;
virDomainXMLOptionNew;
virDomainXMLOptionSetMomentPostParse;
# conf/domain_event.h