]> xenbits.xensource.com Git - libvirt.git/commitdiff
conf: disk: extract validation of startup policy
authorPeter Krempa <pkrempa@redhat.com>
Wed, 20 Apr 2016 15:26:23 +0000 (17:26 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Thu, 21 Apr 2016 15:04:06 +0000 (17:04 +0200)
src/conf/domain_conf.c

index bcd19d8419547f2f659408c766cca17c3342917c..db567f5c0790ab1be35a5b3b12bf8f00eb617767 100644 (file)
@@ -6948,6 +6948,25 @@ virDomainDiskDefValidate(const virDomainDiskDef *def)
         return -1;
     }
 
+    if (def->startupPolicy != VIR_DOMAIN_STARTUP_POLICY_DEFAULT) {
+        if (def->src->type == VIR_STORAGE_TYPE_NETWORK) {
+            virReportError(VIR_ERR_XML_ERROR,
+                           _("Setting disk %s is not allowed for "
+                             "disk of network type"),
+                           virDomainStartupPolicyTypeToString(def->startupPolicy));
+            return -1;
+        }
+
+        if (def->device != VIR_DOMAIN_DISK_DEVICE_CDROM &&
+            def->device != VIR_DOMAIN_DISK_DEVICE_FLOPPY &&
+            def->startupPolicy == VIR_DOMAIN_STARTUP_POLICY_REQUISITE) {
+            virReportError(VIR_ERR_XML_ERROR, "%s",
+                           _("Setting disk 'requisite' is allowed only for "
+                             "cdrom or floppy"));
+            return -1;
+        }
+    }
+
     return 0;
 }
 
@@ -7456,23 +7475,6 @@ virDomainDiskDefParseXML(virDomainXMLOptionPtr xmlopt,
                            startupPolicy);
             goto error;
         }
-
-        if (def->src->type == VIR_STORAGE_TYPE_NETWORK) {
-            virReportError(VIR_ERR_XML_ERROR,
-                           _("Setting disk %s is not allowed for "
-                             "disk of network type"),
-                           startupPolicy);
-            goto error;
-        }
-
-        if (def->device != VIR_DOMAIN_DISK_DEVICE_CDROM &&
-            def->device != VIR_DOMAIN_DISK_DEVICE_FLOPPY &&
-            val == VIR_DOMAIN_STARTUP_POLICY_REQUISITE) {
-            virReportError(VIR_ERR_XML_ERROR, "%s",
-                           _("Setting disk 'requisite' is allowed only for "
-                             "cdrom or floppy"));
-            goto error;
-        }
         def->startupPolicy = val;
     }