]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
domain_validate: Split out validation of disk startup policy
authorPeter Krempa <pkrempa@redhat.com>
Tue, 14 Jun 2022 11:23:29 +0000 (13:23 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Tue, 14 Jun 2022 14:38:11 +0000 (16:38 +0200)
Move the code into 'virDomainDiskDefValidateStartupPolicy' which will be
later reused in the qemu driver.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/conf/domain_validate.c
src/conf/domain_validate.h
src/libvirt_private.syms

index 3e11e00ee46ec6dae73288fd81297839b1aca421..70e9167eac67b0001e7e87d5e751387206f62978 100644 (file)
@@ -632,6 +632,32 @@ virDomainDiskDefSourceLUNValidate(const virStorageSource *src)
 }
 
 
+int
+virDomainDiskDefValidateStartupPolicy(const virDomainDiskDef *disk)
+{
+    if (disk->startupPolicy == VIR_DOMAIN_STARTUP_POLICY_DEFAULT)
+        return 0;
+
+    if (disk->src->type == VIR_STORAGE_TYPE_NETWORK) {
+        virReportError(VIR_ERR_XML_ERROR,
+                       _("disk startupPolicy '%s' is not allowed for disk of '%s' type"),
+                       virDomainStartupPolicyTypeToString(disk->startupPolicy),
+                       virStorageTypeToString(disk->src->type));
+        return -1;
+    }
+
+    if (disk->device != VIR_DOMAIN_DISK_DEVICE_CDROM &&
+        disk->device != VIR_DOMAIN_DISK_DEVICE_FLOPPY &&
+        disk->startupPolicy == VIR_DOMAIN_STARTUP_POLICY_REQUISITE) {
+        virReportError(VIR_ERR_XML_ERROR, "%s",
+                       _("disk startupPolicy 'requisite' is allowed only for cdrom or floppy"));
+        return -1;
+    }
+
+    return 0;
+}
+
+
 static int
 virDomainDiskDefValidate(const virDomainDef *def,
                          const virDomainDiskDef *disk)
@@ -852,23 +878,8 @@ virDomainDiskDefValidate(const virDomainDef *def,
         return -1;
     }
 
-    if (disk->startupPolicy != VIR_DOMAIN_STARTUP_POLICY_DEFAULT) {
-        if (disk->src->type == VIR_STORAGE_TYPE_NETWORK) {
-            virReportError(VIR_ERR_XML_ERROR,
-                           _("disk startupPolicy '%s' is not allowed for disk of '%s' type"),
-                           virDomainStartupPolicyTypeToString(disk->startupPolicy),
-                           virStorageTypeToString(disk->src->type));
-            return -1;
-        }
-
-        if (disk->device != VIR_DOMAIN_DISK_DEVICE_CDROM &&
-            disk->device != VIR_DOMAIN_DISK_DEVICE_FLOPPY &&
-            disk->startupPolicy == VIR_DOMAIN_STARTUP_POLICY_REQUISITE) {
-            virReportError(VIR_ERR_XML_ERROR, "%s",
-                           _("disk startupPolicy 'requisite' is allowed only for cdrom or floppy"));
-            return -1;
-        }
-    }
+    if (virDomainDiskDefValidateStartupPolicy(disk) < 0)
+        return -1;
 
     if (disk->wwn && !virValidateWWN(disk->wwn))
         return -1;
index 430d61fd3c83c00134f215e5ec6687ed14d2ce01..07b99195e33d27e3677bcffdd86c3fb980ef4e86 100644 (file)
@@ -41,4 +41,6 @@ int virDomainDeviceDefValidate(const virDomainDeviceDef *dev,
 
 int virDomainDiskDefValidateSource(const virStorageSource *src);
 
+int virDomainDiskDefValidateStartupPolicy(const virDomainDiskDef *disk);
+
 int virDomainDiskDefSourceLUNValidate(const virStorageSource *src);
index 770dfe459a0ce534cbf16d81cbc61bad4feedc88..76bcc64eb079aaa09c8435861d1203222031c1df 100644 (file)
@@ -779,6 +779,7 @@ virDomainActualNetDefValidate;
 virDomainDefValidate;
 virDomainDeviceValidateAliasForHotplug;
 virDomainDiskDefSourceLUNValidate;
+virDomainDiskDefValidateStartupPolicy;
 
 
 # conf/interface_conf.h