From 80641a892cbbbff717e8c7f81dd62edf5d170939 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Wed, 24 Feb 2016 14:45:25 +0100 Subject: [vmware] Add addCdrom function --- .../java/org/openslx/util/vm/VmwareMetaData.java | 29 +++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) (limited to 'src/main/java/org/openslx/util/vm/VmwareMetaData.java') diff --git a/src/main/java/org/openslx/util/vm/VmwareMetaData.java b/src/main/java/org/openslx/util/vm/VmwareMetaData.java index e15f476..e748515 100644 --- a/src/main/java/org/openslx/util/vm/VmwareMetaData.java +++ b/src/main/java/org/openslx/util/vm/VmwareMetaData.java @@ -99,6 +99,12 @@ public class VmwareMetaData extends VmMetaData config.set( key, value ).filtered( true ); } + private boolean isSetAndTrue( String key ) + { + String value = config.get( key ); + return value != null && value.equalsIgnoreCase( "true" ); + } + private void handleLoadEntry( Entry entry ) { String lowerKey = entry.getKey().toLowerCase(); @@ -236,9 +242,10 @@ public class VmwareMetaData extends VmMetaData addFiltered( pre + ".present", "TRUE" ); if ( image == null ) { addFiltered( pre + ".startConnected", "FALSE" ); - addFiltered( pre + ".autodetect", "TRUE" ); addFiltered( pre + ".fileType", "device" ); config.remove( pre + ".fileName" ); + config.remove( pre + ".readonly" ); + addFiltered( pre + ".autodetect", "TRUE" ); } else { addFiltered( pre + ".startConnected", "TRUE" ); addFiltered( pre + ".fileType", "file" ); @@ -248,6 +255,26 @@ public class VmwareMetaData extends VmMetaData } } + public boolean addCdrom( String image ) + { + for ( String port : new String[] { "ide0:0", "ide0:1", "ide1:0", "ide1:1", "scsi0:1" } ) { + if ( !isSetAndTrue( port + ".present" ) ) { + addFiltered( port + ".present", "TRUE" ); + if ( image == null ) { + addFiltered( port + ".autodetect", "TRUE" ); + addFiltered( port + ".deviceType", "cdrom-raw" ); + config.remove( port + ".fileName" ); + } else { + config.remove( port + ".autodetect" ); + addFiltered( port + ".deviceType", "cdrom-image" ); + addFiltered( port + ".fileName", image ); + } + return true; + } + } + return false; + } + public boolean disableSuspend() { addFiltered( "suspend.disabled", "TRUE" ); -- cgit v1.2.3-55-g7522