summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Rettberg2021-03-05 14:16:16 +0100
committerSimon Rettberg2021-03-05 14:16:16 +0100
commit7deac91af348d53769e6371e46bcfa434b973dd5 (patch)
tree1119b56bdd1c87f2466b27cbb7b4627949909dd5
parent[Json] Explicitly pass Object[] to Method.invoke() (diff)
downloadmaster-sync-shared-7deac91af348d53769e6371e46bcfa434b973dd5.tar.gz
master-sync-shared-7deac91af348d53769e6371e46bcfa434b973dd5.tar.xz
master-sync-shared-7deac91af348d53769e6371e46bcfa434b973dd5.zip
[vm] Add support for NVMe
-rw-r--r--src/main/java/org/openslx/util/vm/VboxConfig.java21
-rw-r--r--src/main/java/org/openslx/util/vm/VmMetaData.java2
-rw-r--r--src/main/java/org/openslx/util/vm/VmwareMetaData.java35
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" );