We already implement virDomainDefineXML(), so we can just implement one
in terms of the other.

Signed-off-by: Jonathon Jongsma <[email protected]>
---
 src/hyperv/hyperv_driver.c | 20 ++++++++++++++++----
 1 file changed, 16 insertions(+), 4 deletions(-)

diff --git a/src/hyperv/hyperv_driver.c b/src/hyperv/hyperv_driver.c
index 8832769c7b..a78e375c9d 100644
--- a/src/hyperv/hyperv_driver.c
+++ b/src/hyperv/hyperv_driver.c
@@ -2925,7 +2925,7 @@ hypervDomainUndefine(virDomainPtr domain)
 
 
 static virDomainPtr
-hypervDomainDefineXML(virConnectPtr conn, const char *xml)
+hypervDomainDefineXMLFlags(virConnectPtr conn, const char *xml, unsigned int 
flags)
 {
     hypervPrivate *priv = conn->privateData;
     g_autofree char *hostname = hypervConnectGetHostname(conn);
@@ -2934,10 +2934,14 @@ hypervDomainDefineXML(virConnectPtr conn, const char 
*xml)
     g_autoptr(hypervInvokeParamsList) params = NULL;
     g_autoptr(GHashTable) defineSystemParam = NULL;
     size_t i = 0;
+    unsigned int parse_flags = VIR_DOMAIN_DEF_PARSE_INACTIVE;
+
+    virCheckFlags(VIR_DOMAIN_DEFINE_VALIDATE, NULL);
+
+    if (flags & VIR_DOMAIN_DEFINE_VALIDATE)
+        parse_flags |= VIR_DOMAIN_DEF_PARSE_VALIDATE_SCHEMA;
 
-    /* parse xml */
-    def = virDomainDefParseString(xml, priv->xmlopt, NULL,
-                                  VIR_DOMAIN_DEF_PARSE_INACTIVE);
+    def = virDomainDefParseString(xml, priv->xmlopt, NULL, parse_flags);
 
     if (!def)
         goto error;
@@ -3034,6 +3038,13 @@ hypervDomainDefineXML(virConnectPtr conn, const char 
*xml)
 }
 
 
+static virDomainPtr
+hypervDomainDefineXML(virConnectPtr conn, const char *xml)
+{
+    return hypervDomainDefineXMLFlags(conn, xml, 0);
+}
+
+
 static int
 hypervDomainAttachDeviceFlags(virDomainPtr domain, const char *xml, unsigned 
int flags)
 {
@@ -4099,6 +4110,7 @@ static virHypervisorDriver hypervHypervisorDriver = {
     .domainCreate = hypervDomainCreate, /* 0.9.5 */
     .domainCreateWithFlags = hypervDomainCreateWithFlags, /* 0.9.5 */
     .domainDefineXML = hypervDomainDefineXML, /* 7.1.0 */
+    .domainDefineXMLFlags = hypervDomainDefineXMLFlags, /* 12.2.0 */
     .domainUndefine = hypervDomainUndefine, /* 7.1.0 */
     .domainUndefineFlags = hypervDomainUndefineFlags, /* 7.1.0 */
     .domainAttachDevice = hypervDomainAttachDevice, /* 7.1.0 */
-- 
2.53.0

Reply via email to