diff options
author | Simon Rettberg | 2021-03-05 14:16:16 +0100 |
---|---|---|
committer | Simon Rettberg | 2021-03-05 14:16:16 +0100 |
commit | 7deac91af348d53769e6371e46bcfa434b973dd5 (patch) | |
tree | 1119b56bdd1c87f2466b27cbb7b4627949909dd5 /src/main/java/org/openslx/util | |
parent | [Json] Explicitly pass Object[] to Method.invoke() (diff) | |
download | master-sync-shared-7deac91af348d53769e6371e46bcfa434b973dd5.tar.gz master-sync-shared-7deac91af348d53769e6371e46bcfa434b973dd5.tar.xz master-sync-shared-7deac91af348d53769e6371e46bcfa434b973dd5.zip |
[vm] Add support for NVMe
Diffstat (limited to 'src/main/java/org/openslx/util')
-rw-r--r-- | src/main/java/org/openslx/util/vm/VboxConfig.java | 21 | ||||
-rw-r--r-- | src/main/java/org/openslx/util/vm/VmMetaData.java | 2 | ||||
-rw-r--r-- | src/main/java/org/openslx/util/vm/VmwareMetaData.java | 35 |
3 files changed, 32 insertions, 26 deletions
diff --git a/src/main/java/org/openslx/util/vm/VboxConfig.java b/src/main/java/org/openslx/util/vm/VboxConfig.java index e9870a5..f405991 100644 --- a/src/main/java/org/openslx/util/vm/VboxConfig.java +++ b/src/main/java/org/openslx/util/vm/VboxConfig.java @@ -382,15 +382,18 @@ public class VboxConfig } String controllerMode = hddController.getAttribute( "type" ); String controllerType = hddController.getAttribute( "name" ); - DriveBusType busType = null; - if ( controllerType.equals( "IDE" ) ) { - busType = DriveBusType.IDE; - } else if ( controllerType.equals( "SCSI" ) ) { - busType = DriveBusType.SCSI; - } else if ( controllerType.equals( "SATA" ) ) { - busType = DriveBusType.SATA; - } else - continue; + 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; + } + } LOGGER.info( "Adding hard disk with controller: " + busType + " (" + controllerMode + ") from file '" + fileName + "'." ); hddsArray.add( new HardDisk( controllerMode, busType, fileName ) ); } diff --git a/src/main/java/org/openslx/util/vm/VmMetaData.java b/src/main/java/org/openslx/util/vm/VmMetaData.java index 67a4e2a..4b754c3 100644 --- a/src/main/java/org/openslx/util/vm/VmMetaData.java +++ b/src/main/java/org/openslx/util/vm/VmMetaData.java @@ -125,7 +125,7 @@ public abstract class VmMetaData<T, U, V, W, X> public static enum DriveBusType { - SCSI, IDE, SATA; + SCSI, IDE, SATA, NVME; } public static class HardDisk diff --git a/src/main/java/org/openslx/util/vm/VmwareMetaData.java b/src/main/java/org/openslx/util/vm/VmwareMetaData.java index ebdebb6..85dc77d 100644 --- a/src/main/java/org/openslx/util/vm/VmwareMetaData.java +++ b/src/main/java/org/openslx/util/vm/VmwareMetaData.java @@ -86,7 +86,7 @@ public class VmwareMetaData extends VmMetaData<VmWareSoundCardMeta, VmWareDDAcce private static final Virtualizer virtualizer = new Virtualizer( TConst.VIRT_VMWARE, "VMware" ); - private static final Pattern hddKey = Pattern.compile( "^(ide\\d|scsi\\d|sata\\d):?(\\d)?\\.(.*)", Pattern.CASE_INSENSITIVE ); + private static final Pattern hddKey = Pattern.compile( "^(ide\\d|scsi\\d|sata\\d|nvme\\d):?(\\d)?\\.(.*)", Pattern.CASE_INSENSITIVE ); // Lowercase list of allowed settings for upload (as regex) private static final Pattern[] whitelist; @@ -98,7 +98,7 @@ public class VmwareMetaData extends VmMetaData<VmWareSoundCardMeta, VmWareDDAcce String[] list = { "^guestos", "^uuid\\.bios", "^config\\.version", "^ehci[.:]", "^mks\\.enable3d", "^virtualhw\\.", "^sound[.:]", "\\.pcislotnumber$", "^pcibridge", "\\.virtualdev$", "^tools\\.syncTime$", "^time\\.synchronize", "^bios\\.bootDelay", "^rtc\\.", "^xhci[.:]", "^usb_xhci[.:]", "\\.deviceType$", "\\.port$", "\\.parent$", "^usb[.:]", - "^firmware", "^hpet" }; + "^firmware", "^hpet", "^vm\\.genid" }; whitelist = new Pattern[ list.length ]; for ( int i = 0; i < list.length; ++i ) { whitelist[i] = Pattern.compile( list[i].toLowerCase() ); @@ -167,6 +167,8 @@ public class VmwareMetaData extends VmMetaData<VmWareSoundCardMeta, VmWareDDAcce bus = DriveBusType.SCSI; } else if ( controllerType.startsWith( "sata" ) ) { bus = DriveBusType.SATA; + } else if ( controllerType.startsWith( "nvme" ) ) { + bus = DriveBusType.NVME; } hdds.add( new HardDisk( controller.virtualDev, bus, device.filename ) ); } @@ -282,18 +284,15 @@ public class VmwareMetaData extends VmMetaData<VmWareSoundCardMeta, VmWareDDAcce String chipset = config.get( "#SLX_HDD_CHIP" ); String prefix; switch ( bus ) { - case IDE: - prefix = "ide0:0"; - addFiltered( "ide0.present", "TRUE" ); - break; case SATA: // Cannot happen?... use lsisas1068 + prefix = "scsi0"; + chipset = "lsisas1068"; + break; + case IDE: case SCSI: - prefix = "scsi0:0"; - addFiltered( "scsi0.present", "TRUE" ); - if ( chipset != null ) { - addFiltered( "scsi0.virtualDev", chipset ); - } + case NVME: + prefix = bus.name().toLowerCase() + "0"; break; default: LOGGER.warn( "Unknown HDD bus type: " + bus.toString() ); @@ -301,12 +300,16 @@ public class VmwareMetaData extends VmMetaData<VmWareSoundCardMeta, VmWareDDAcce } // Gen addFiltered( prefix + ".present", "TRUE" ); - addFiltered( prefix + ".deviceType", "disk" ); - addFiltered( prefix + ".fileName", diskImagePath ); + if ( chipset != null ) { + addFiltered( prefix + ".virtualDev", chipset ); + } + addFiltered( prefix + ":0.present", "TRUE" ); + addFiltered( prefix + ":0.deviceType", "disk" ); + addFiltered( prefix + ":0.fileName", diskImagePath ); if ( hddMode != null ) { - addFiltered( prefix + ".mode", hddMode ); - addFiltered( prefix + ".redo", "" ); - addFiltered( prefix + ".redoLogDir", redoDir ); + addFiltered( prefix + ":0.mode", hddMode ); + addFiltered( prefix + ":0.redo", "" ); + addFiltered( prefix + ":0.redoLogDir", redoDir ); } config.remove( "#SLX_HDD_BUS" ); config.remove( "#SLX_HDD_CHIP" ); |