]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
conf: domain: Convert virDomainDiskDef's 'device' to virDomainDiskDevice
authorPeter Krempa <pkrempa@redhat.com>
Fri, 16 Apr 2021 08:46:00 +0000 (10:46 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Mon, 19 Apr 2021 12:44:00 +0000 (14:44 +0200)
Use the appropriate type for the variable and refactor the XML parser to
parse it correctly using virXMLPropEnum.

Changes to other places using switch statements were required.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
src/bhyve/bhyve_command.c
src/conf/domain_conf.c
src/conf/domain_conf.h
src/hyperv/hyperv_driver.c
src/libxl/libxl_driver.c
src/qemu/qemu_command.c
src/vmx/vmx.c

index 9731fee22f6d4b6b6d161a7c49f0ffe88a9ec47f..f8e0ce51239e99e04bd7ec7002e4192a7dbc046e 100644 (file)
@@ -208,6 +208,9 @@ bhyveBuildAHCIControllerArgStr(const virDomainDef *def,
             else
                 virBufferAsprintf(&device, "-cd,%s", disk_source);
             break;
+        case VIR_DOMAIN_DISK_DEVICE_FLOPPY:
+        case VIR_DOMAIN_DISK_DEVICE_LUN:
+        case VIR_DOMAIN_DISK_DEVICE_LAST:
         default:
             virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
                            _("unsupported disk device"));
index 9afb548ea75c9228b1644161e095e98025014320..242839d60f0f316fc4d30e81bf03451051727a2f 100644 (file)
@@ -9319,7 +9319,6 @@ virDomainDiskDefParseXML(virDomainXMLOption *xmlopt,
     xmlNodePtr cur;
     VIR_XPATH_NODE_AUTORESTORE(ctxt)
     bool source = false;
-    g_autofree char *tmp = NULL;
     g_autofree char *target = NULL;
     g_autofree char *serial = NULL;
     g_autofree char *logical_block_size = NULL;
@@ -9342,13 +9341,9 @@ virDomainDiskDefParseXML(virDomainXMLOption *xmlopt,
     /* defaults */
     def->device = VIR_DOMAIN_DISK_DEVICE_DISK;
 
-    if ((tmp = virXMLPropString(node, "device")) &&
-        (def->device = virDomainDiskDeviceTypeFromString(tmp)) < 0) {
-        virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
-                       _("unknown disk device '%s'"), tmp);
+    if (virXMLPropEnum(node, "device", virDomainDiskDeviceTypeFromString,
+                       VIR_XML_PROP_OPTIONAL, &def->device) < 0)
         return NULL;
-    }
-    VIR_FREE(tmp);
 
     if (virXMLPropEnum(node, "model", virDomainDiskModelTypeFromString,
                        VIR_XML_PROP_OPTIONAL, &def->model) < 0)
index 29866927c717ec6f20da96cea0e443283aa7f26d..a17f241c53568ec93680401cf498b61d461d26b1 100644 (file)
@@ -535,7 +535,7 @@ struct _virDomainDiskDef {
 
     virObject *privateData;
 
-    int device; /* enum virDomainDiskDevice */
+    virDomainDiskDevice device;
     virDomainDiskBus bus;
     char *dst;
     virDomainDiskTray tray_status;
index 3a0eeb51785985b44c6b1e7f0f72a7cdecf38e44..ff20d5548be06e65ec5bf6728e06532a3eb3f6bf 100644 (file)
@@ -886,6 +886,8 @@ hypervDomainAttachStorageVolume(virDomainPtr domain,
         return hypervDomainAttachCDROM(domain, disk, controller, hostname);
     case VIR_DOMAIN_DISK_DEVICE_FLOPPY:
         return hypervDomainAttachFloppy(domain, disk, controller, hostname);
+    case VIR_DOMAIN_DISK_DEVICE_LUN:
+    case VIR_DOMAIN_DISK_DEVICE_LAST:
     default:
         virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("Unsupported disk bus"));
         break;
index d924e033d99604150e96dee65755aa8f844ccd71..cf3ee4db3dd8e95dfa4855a3eb004abf106b221c 100644 (file)
@@ -3084,6 +3084,9 @@ libxlDomainAttachDeviceDiskLive(virDomainObj *vm, virDomainDeviceDef *dev)
                                virDomainDiskBusTypeToString(l_disk->bus));
             }
             break;
+        case VIR_DOMAIN_DISK_DEVICE_FLOPPY:
+        case VIR_DOMAIN_DISK_DEVICE_LUN:
+        case VIR_DOMAIN_DISK_DEVICE_LAST:
         default:
             virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
                            _("disk device type '%s' cannot be hotplugged"),
@@ -3369,6 +3372,10 @@ libxlDomainDetachDeviceDiskLive(virDomainObj *vm, virDomainDeviceDef *dev)
                                virDomainDiskBusTypeToString(dev->data.disk->bus));
             }
             break;
+        case VIR_DOMAIN_DISK_DEVICE_CDROM:
+        case VIR_DOMAIN_DISK_DEVICE_FLOPPY:
+        case VIR_DOMAIN_DISK_DEVICE_LUN:
+        case VIR_DOMAIN_DISK_DEVICE_LAST:
         default:
             virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
                            _("device type '%s' cannot hot unplugged"),
@@ -4031,6 +4038,10 @@ libxlDomainUpdateDeviceLive(virDomainObj *vm, virDomainDeviceDef *dev)
                     if (ret == 0)
                         dev->data.disk = NULL;
                     break;
+                case VIR_DOMAIN_DISK_DEVICE_DISK:
+                case VIR_DOMAIN_DISK_DEVICE_FLOPPY:
+                case VIR_DOMAIN_DISK_DEVICE_LUN:
+                case VIR_DOMAIN_DISK_DEVICE_LAST:
                 default:
                     virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
                                    _("disk bus '%s' cannot be updated."),
index 49fb056e3bdf105af160bb64e7a13cd945cae1d4..2f69a79bc0977f1aa0335ef9fbcfd53dc84c1839 100644 (file)
@@ -2253,6 +2253,10 @@ qemuBuildDisksCommandLine(virCommand *cmd,
                 bootindex = bootDisk;
                 bootDisk = 0;
                 break;
+            case VIR_DOMAIN_DISK_DEVICE_FLOPPY:
+            case VIR_DOMAIN_DISK_DEVICE_LAST:
+            default:
+                break;
             }
         }
 
index 65d2850f2c6e83df4584ece2e2e49e0df0c66395..1cd5a8222739ae2b16852325e84e079ffe91a336 100644 (file)
@@ -3474,6 +3474,7 @@ virVMXFormatConfig(virVMXContext *ctx, virDomainXMLOption *xmlopt, virDomainDef
 
             break;
 
+          case VIR_DOMAIN_DISK_DEVICE_LAST:
           default:
             virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
                            _("Unsupported disk device type '%s'"),