diff options
Diffstat (limited to 'src/main/java/org/openslx/virtualization')
6 files changed, 39 insertions, 4 deletions
diff --git a/src/main/java/org/openslx/virtualization/configuration/VirtualizationConfiguration.java b/src/main/java/org/openslx/virtualization/configuration/VirtualizationConfiguration.java index c5381c5..b8e46ed 100644 --- a/src/main/java/org/openslx/virtualization/configuration/VirtualizationConfiguration.java +++ b/src/main/java/org/openslx/virtualization/configuration/VirtualizationConfiguration.java @@ -326,6 +326,8 @@ public abstract class VirtualizationConfiguration<T, U, W, X> */ public abstract String getFileNameExtension(); + public abstract boolean addEmptyHddTemplate(); + public abstract boolean addHddTemplate( File diskImage, String hddMode, String redoDir ); public abstract boolean addHddTemplate( String diskImagePath, String hddMode, String redoDir ); diff --git a/src/main/java/org/openslx/virtualization/configuration/VirtualizationConfigurationDocker.java b/src/main/java/org/openslx/virtualization/configuration/VirtualizationConfigurationDocker.java index 5b1615f..d5e9abb 100644 --- a/src/main/java/org/openslx/virtualization/configuration/VirtualizationConfigurationDocker.java +++ b/src/main/java/org/openslx/virtualization/configuration/VirtualizationConfigurationDocker.java @@ -104,6 +104,11 @@ public class VirtualizationConfigurationDocker extends VirtualizationConfigurati public void transformPrivacy() throws VirtualizationConfigurationException { } + @Override + public boolean addEmptyHddTemplate() { + return false; + } + @Override public boolean addHddTemplate(File diskImage, String hddMode, String redoDir) { return false; } diff --git a/src/main/java/org/openslx/virtualization/configuration/VirtualizationConfigurationQemu.java b/src/main/java/org/openslx/virtualization/configuration/VirtualizationConfigurationQemu.java index 716a2f3..710a42d 100644 --- a/src/main/java/org/openslx/virtualization/configuration/VirtualizationConfigurationQemu.java +++ b/src/main/java/org/openslx/virtualization/configuration/VirtualizationConfigurationQemu.java @@ -313,6 +313,12 @@ public class VirtualizationConfigurationQemu extends } @Override + public boolean addEmptyHddTemplate() + { + return this.addHddTemplate( new String(), null, null ); + } + + @Override public boolean addHddTemplate( File diskImage, String hddMode, String redoDir ) { return this.addHddTemplate( diskImage.getAbsolutePath(), hddMode, redoDir ); @@ -348,13 +354,22 @@ public class VirtualizationConfigurationQemu extends storageDiskDevice.setBusType( BusType.VIRTIO ); String targetDevName = VirtualizationConfigurationQemuUtils.createAlphabeticalDeviceName( "vd", index ); storageDiskDevice.setTargetDevice( targetDevName ); - storageDiskDevice.setStorage( StorageType.FILE, diskImagePath ); + + if ( diskImagePath == null || diskImagePath.isEmpty() ) { + storageDiskDevice.removeStorage(); + } else { + storageDiskDevice.setStorage( StorageType.FILE, diskImagePath ); + } // add new created HDD to the metadata of the QemuMetaData object, too this.addHddMetaData( storageDiskDevice ); } else { // HDD exists, so update existing storage (HDD) device - storageDiskDevice.setStorage( StorageType.FILE, diskImagePath ); + if ( diskImagePath == null || diskImagePath.isEmpty() ) { + storageDiskDevice.removeStorage(); + } else { + storageDiskDevice.setStorage( StorageType.FILE, diskImagePath ); + } } return true; diff --git a/src/main/java/org/openslx/virtualization/configuration/VirtualizationConfigurationVirtualBox.java b/src/main/java/org/openslx/virtualization/configuration/VirtualizationConfigurationVirtualBox.java index d32d496..c53a7e0 100644 --- a/src/main/java/org/openslx/virtualization/configuration/VirtualizationConfigurationVirtualBox.java +++ b/src/main/java/org/openslx/virtualization/configuration/VirtualizationConfigurationVirtualBox.java @@ -132,6 +132,12 @@ public class VirtualizationConfigurationVirtualBox extends VirtualizationConfigu } @Override + public boolean addEmptyHddTemplate() + { + return this.addHddTemplate( "%VM_DISK_PATH%", "%VM_DISK_MODE%", "%VM_DISK_REDOLOGDIR%" ); + } + + @Override public boolean addHddTemplate( String diskImage, String hddMode, String redoDir ) { config.changeAttribute( "/VirtualBox/Machine/MediaRegistry/HardDisks/HardDisk[@location='" + PlaceHolder.HDDLOCATION.toString() + "']", "location", diskImage ); diff --git a/src/main/java/org/openslx/virtualization/configuration/VirtualizationConfigurationVmware.java b/src/main/java/org/openslx/virtualization/configuration/VirtualizationConfigurationVmware.java index e1102b6..3e8d913 100644 --- a/src/main/java/org/openslx/virtualization/configuration/VirtualizationConfigurationVmware.java +++ b/src/main/java/org/openslx/virtualization/configuration/VirtualizationConfigurationVmware.java @@ -239,6 +239,12 @@ public class VirtualizationConfigurationVmware extends VirtualizationConfigurati } @Override + public boolean addEmptyHddTemplate() + { + return this.addHddTemplate( "%VM_DISK_PATH%", "%VM_DISK_MODE%", "%VM_DISK_REDOLOGDIR%" ); + } + + @Override public boolean addHddTemplate( File diskImage, String hddMode, String redoDir ) { return addHddTemplate( diskImage.getName(), hddMode, redoDir ); @@ -251,6 +257,7 @@ public class VirtualizationConfigurationVmware extends VirtualizationConfigurati LOGGER.error( "Empty disk image path given!" ); return false; } + DriveBusType bus; try { bus = DriveBusType.valueOf( config.get( "#SLX_HDD_BUS" ) ); diff --git a/src/main/java/org/openslx/virtualization/configuration/logic/ConfigurationLogicDozModServerToStatelessClient.java b/src/main/java/org/openslx/virtualization/configuration/logic/ConfigurationLogicDozModServerToStatelessClient.java index 6c573bb..580b0fc 100644 --- a/src/main/java/org/openslx/virtualization/configuration/logic/ConfigurationLogicDozModServerToStatelessClient.java +++ b/src/main/java/org/openslx/virtualization/configuration/logic/ConfigurationLogicDozModServerToStatelessClient.java @@ -78,8 +78,8 @@ public class ConfigurationLogicDozModServerToStatelessClient throw new TransformationException( "Can not set display name in virtualization configuration!" ); } - // append hard disk drive - if ( !config.addHddTemplate( "%VM_DISK_PATH%", "%VM_DISK_MODE%", "%VM_DISK_REDOLOGDIR%" ) ) { + // append hard disk drive (with no referenced image as content) + if ( !config.addEmptyHddTemplate() ) { throw new TransformationException( "Can not configure hard disk in virtualization configuration!" ); } |