summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorSimon Rettberg2025-12-03 12:30:57 +0100
committerSimon Rettberg2025-12-03 12:30:57 +0100
commitfebca062787a1ebda4a9fd16cf0753b7f49b9426 (patch)
treef215995e705c34dc6144895a9794476a947e335d /src
parentUpdate vbox and libvirt schema files (diff)
downloadmaster-sync-shared-febca062787a1ebda4a9fd16cf0753b7f49b9426.tar.gz
master-sync-shared-febca062787a1ebda4a9fd16cf0753b7f49b9426.tar.xz
master-sync-shared-febca062787a1ebda4a9fd16cf0753b7f49b9426.zip
[VirtualBox] Fix extraction of HDD controller type
Closes #3985
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/openslx/virtualization/configuration/VirtualizationConfigurationVirtualboxFileFormat.java49
1 files changed, 34 insertions, 15 deletions
diff --git a/src/main/java/org/openslx/virtualization/configuration/VirtualizationConfigurationVirtualboxFileFormat.java b/src/main/java/org/openslx/virtualization/configuration/VirtualizationConfigurationVirtualboxFileFormat.java
index d31c2be..57c5b25 100644
--- a/src/main/java/org/openslx/virtualization/configuration/VirtualizationConfigurationVirtualboxFileFormat.java
+++ b/src/main/java/org/openslx/virtualization/configuration/VirtualizationConfigurationVirtualboxFileFormat.java
@@ -505,23 +505,42 @@ public class VirtualizationConfigurationVirtualboxFileFormat
LOGGER.error( "HDD node had a null parent, shouldn't happen" );
continue;
}
- String controllerMode = hddController.getAttribute( "type" );
- String controllerType = hddController.getAttribute( "name" );
- DriveBusType busType;
- if ( controllerType.equals( "NVMe" ) ) {
- busType = DriveBusType.NVME;
- } else {
- try {
- // This assumes the type in the xml matches our enum constants.
- busType = DriveBusType.valueOf( controllerType );
- } catch (Exception e) {
- LOGGER.warn( "Skipping unknown HDD controller type '" + controllerType + "'" );
- continue;
- }
+ String controllerType = hddController.getAttribute( "type" );
+ DriveBusType busType = controllerToBus( controllerType );
+ if ( busType == null ) {
+ LOGGER.warn( "Skipping unknown or unsupported HDD controller type '" + controllerType + "'" );
+ continue;
}
- LOGGER.info( "Adding hard disk with controller: " + busType + " (" + controllerMode + ") from file '" + fileName + "'." );
- hddsArray.add( new HardDisk( controllerMode, busType, fileName ) );
+ LOGGER.info( "Adding hard disk with controller: " + busType + " from file '" + fileName + "'." );
+ hddsArray.add( new HardDisk( controllerType, busType, fileName ) );
+ }
+ }
+
+ private DriveBusType controllerToBus( String controller )
+ {
+ // See TStorageControllerType around this line:
+ // https://github.com/VirtualBox/virtualbox/blob/HEAD/src/VBox/Main/xml/VirtualBox-settings.xsd#L281
+ switch ( controller ) {
+ case "AHCI":
+ return DriveBusType.SATA;
+ case "LsiLogic":
+ case "BusLogic":
+ case "LsiLogicSas": // Handle as SCSI for now
+ case "VirtioSCSI":
+ return DriveBusType.SCSI;
+ case "PIIX3":
+ case "PIIX4":
+ case "ICH6":
+ return DriveBusType.IDE;
+ case "I82078": // This is a floppy controller, but we should never end up at suck a controller during iteration in setHdds()
+ return null;
+ case "USB": // Not supported (yet?)
+ return null;
+ case "NVMe":
+ return DriveBusType.NVME;
}
+ // New type in VBox? If so, add to block above
+ return null;
}
/**