summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorManuel Bentele2021-04-20 13:56:25 +0200
committerManuel Bentele2021-04-20 13:57:19 +0200
commit230e75e440428c4a6309213777f87f7e3e07760f (patch)
tree6ddf03c99a77601405e0c8aaef4e662bbf197be7
parentAdd config file name extensions to virtualizer representations (diff)
downloadmaster-sync-shared-230e75e440428c4a6309213777f87f7e3e07760f.tar.gz
master-sync-shared-230e75e440428c4a6309213777f87f7e3e07760f.tar.xz
master-sync-shared-230e75e440428c4a6309213777f87f7e3e07760f.zip
Encapsulate transformation logic for virtualization configurations
-rw-r--r--src/main/java/org/openslx/virtualization/configuration/VirtualizationConfiguration.java56
-rw-r--r--src/main/java/org/openslx/virtualization/configuration/VirtualizationConfigurationDocker.java33
-rw-r--r--src/main/java/org/openslx/virtualization/configuration/VirtualizationConfigurationQemu.java45
-rw-r--r--src/main/java/org/openslx/virtualization/configuration/VirtualizationConfigurationVirtualBox.java36
-rw-r--r--src/main/java/org/openslx/virtualization/configuration/VirtualizationConfigurationVmware.java35
-rw-r--r--src/main/java/org/openslx/virtualization/configuration/data/ConfigurationDataDozModClientToDozModServer.java8
-rw-r--r--src/main/java/org/openslx/virtualization/configuration/data/ConfigurationDataDozModServerToDozModClient.java49
-rw-r--r--src/main/java/org/openslx/virtualization/configuration/data/ConfigurationDataDozModServerToStatelessClient.java30
-rw-r--r--src/main/java/org/openslx/virtualization/configuration/logic/ConfigurationLogic.java12
-rw-r--r--src/main/java/org/openslx/virtualization/configuration/logic/ConfigurationLogicDozModClientToDozModServer.java44
-rw-r--r--src/main/java/org/openslx/virtualization/configuration/logic/ConfigurationLogicDozModServerToDozModClient.java143
-rw-r--r--src/main/java/org/openslx/virtualization/configuration/logic/ConfigurationLogicDozModServerToStatelessClient.java74
-rw-r--r--src/main/java/org/openslx/virtualization/virtualizer/Virtualizer.java19
-rw-r--r--src/main/java/org/openslx/virtualization/virtualizer/VirtualizerDocker.java8
-rw-r--r--src/main/java/org/openslx/virtualization/virtualizer/VirtualizerQemu.java8
-rw-r--r--src/main/java/org/openslx/virtualization/virtualizer/VirtualizerVirtualBox.java7
-rw-r--r--src/main/java/org/openslx/virtualization/virtualizer/VirtualizerVmware.java8
-rw-r--r--src/main/java/org/openslx/vm/disk/DiskImageUtils.java10
18 files changed, 506 insertions, 119 deletions
diff --git a/src/main/java/org/openslx/virtualization/configuration/VirtualizationConfiguration.java b/src/main/java/org/openslx/virtualization/configuration/VirtualizationConfiguration.java
index 4f00b92..69cd3d5 100644
--- a/src/main/java/org/openslx/virtualization/configuration/VirtualizationConfiguration.java
+++ b/src/main/java/org/openslx/virtualization/configuration/VirtualizationConfiguration.java
@@ -12,7 +12,7 @@ import java.util.Map.Entry;
import org.apache.log4j.Logger;
import org.openslx.bwlp.thrift.iface.OperatingSystem;
-import org.openslx.bwlp.thrift.iface.Virtualizer;
+import org.openslx.virtualization.virtualizer.Virtualizer;
import org.openslx.vm.disk.DiskImage;
/**
@@ -31,6 +31,8 @@ public abstract class VirtualizationConfiguration<T, U, V, W, X>
protected Map<HWVersion, V> hwversion = new HashMap<>();
protected Map<EthernetDevType, W> networkCards = new HashMap<>();
protected Map<UsbSpeed, X> usbSpeeds = new HashMap<>();
+
+ private final Virtualizer virtualizer;
/**
* Virtual sound cards types
@@ -249,8 +251,9 @@ public abstract class VirtualizationConfiguration<T, U, V, W, X>
* Methods
*/
- public VirtualizationConfiguration( List<OperatingSystem> osList )
+ public VirtualizationConfiguration( Virtualizer virtualizer, List<OperatingSystem> osList )
{
+ this.virtualizer = virtualizer;
this.osList = osList;
// register virtual hardware models for graphical editing of virtual devices (GPU, sound, USB, ...)
@@ -293,12 +296,6 @@ public abstract class VirtualizationConfiguration<T, U, V, W, X>
* @return list of image formats.
*/
public abstract List<DiskImage.ImageFormat> getSupportedImageFormats();
-
- /**
- * Apply config options that are desired when locally editing a VM. for vmware,
- * this disables automatic DPI scaling of the guest.
- */
- public abstract void applySettingsForLocalEdit();
/**
* Returns a VmMetaData instance of the given machine description given as file
@@ -327,7 +324,7 @@ public abstract class VirtualizationConfiguration<T, U, V, W, X>
}
try {
return new VirtualizationConfigurationDocker(osList, file);
- } catch ( Exception e ) {
+ } catch ( VirtualizationConfigurationException e ) {
LOGGER.info( "Not a tar.gz file, for docker container", e );
}
@@ -371,6 +368,13 @@ public abstract class VirtualizationConfiguration<T, U, V, W, X>
LOGGER.error( "Could not detect any known virtualizer format" );
return null;
}
+
+ /**
+ * Returns the file name extension for the virtualization configuration file.
+ *
+ * @return file name extension for the virtualization configuration file.
+ */
+ public abstract String getFileNameExtension();
public abstract boolean addHddTemplate( File diskImage, String hddMode, String redoDir );
@@ -414,11 +418,39 @@ public abstract class VirtualizationConfiguration<T, U, V, W, X>
public abstract boolean addEthernet( EtherType type );
- public abstract Virtualizer getVirtualizer();
-
- public abstract boolean tweakForNonPersistent();
+ public Virtualizer getVirtualizer()
+ {
+ return this.virtualizer;
+ }
/**
+ * Transforms the virtualization configuration in terms of a privacy filter to filter out
+ * sensitive information like name of users in absolute paths.
+ *
+ * @throws VirtualizationConfigurationException transformation of the virtualization
+ * configuration failed.
+ */
+ public abstract void transformPrivacy() throws VirtualizationConfigurationException;
+
+ /**
+ * Transforms the virtualization configuration applying options that are desired when locally
+ * editing a virtualized system (e.g. disables automatic DPI scaling).
+ *
+ * @throws VirtualizationConfigurationException transformation of the virtualization
+ * configuration failed.
+ */
+ public abstract void transformEditable() throws VirtualizationConfigurationException;
+
+ /**
+ * Transforms the virtualization configuration applying options that are desired when running a
+ * virtualized system in a stateless manner.
+ *
+ * @throws VirtualizationConfigurationException transformation of the virtualization
+ * configuration failed.
+ */
+ public abstract void transformNonPersistent() throws VirtualizationConfigurationException;
+
+ /**
* Function used to register virtual devices
*/
public abstract void registerVirtualHW();
diff --git a/src/main/java/org/openslx/virtualization/configuration/VirtualizationConfigurationDocker.java b/src/main/java/org/openslx/virtualization/configuration/VirtualizationConfigurationDocker.java
index b6f237b..3c21fe4 100644
--- a/src/main/java/org/openslx/virtualization/configuration/VirtualizationConfigurationDocker.java
+++ b/src/main/java/org/openslx/virtualization/configuration/VirtualizationConfigurationDocker.java
@@ -2,8 +2,7 @@ package org.openslx.virtualization.configuration;
import org.apache.log4j.Logger;
import org.openslx.bwlp.thrift.iface.OperatingSystem;
-import org.openslx.bwlp.thrift.iface.Virtualizer;
-import org.openslx.thrifthelper.TConst;
+import org.openslx.virtualization.virtualizer.VirtualizerDocker;
import org.openslx.vm.disk.DiskImage;
import org.openslx.vm.disk.DiskImage.ImageFormat;
@@ -38,6 +37,11 @@ class DockerUsbSpeedMeta
public class VirtualizationConfigurationDocker extends VirtualizationConfiguration<DockerSoundCardMeta, DockerDDAccelMeta, DockerHWVersionMeta, DockerEthernetDevTypeMeta, DockerUsbSpeedMeta> {
/**
+ * File name extension for Docker virtualization configuration files.
+ */
+ private static final String CONFIGURATION_FILE_NAME_EXTENSION = null;
+
+ /**
* List of supported image formats by the Docker hypervisor.
*/
private static final List<DiskImage.ImageFormat> SUPPORTED_IMAGE_FORMATS = Collections.unmodifiableList(
@@ -45,8 +49,6 @@ public class VirtualizationConfigurationDocker extends VirtualizationConfigurati
private static final Logger LOGGER = Logger.getLogger( VirtualizationConfigurationDocker.class);
- private final Virtualizer virtualizer = new Virtualizer(TConst.VIRT_DOCKER, "Docker");
-
/**
* containerDefinition is a serialized tar.gz archive and represents a
* ContainerDefinition. This archive contains a serialized Container Recipe (e.g. Dockerfile)
@@ -60,7 +62,7 @@ public class VirtualizationConfigurationDocker extends VirtualizationConfigurati
private byte[] containerDefinition;
public VirtualizationConfigurationDocker(List<OperatingSystem> osList, File file) throws VirtualizationConfigurationException {
- super(osList);
+ super(new VirtualizerDocker(), osList);
BufferedInputStream bis = null;
@@ -83,7 +85,7 @@ public class VirtualizationConfigurationDocker extends VirtualizationConfigurati
public VirtualizationConfigurationDocker(List<OperatingSystem> osList, byte[] vmContent, int length)
throws VirtualizationConfigurationException {
- super(osList);
+ super(new VirtualizerDocker(), osList);
containerDefinition = vmContent;
@@ -117,9 +119,13 @@ public class VirtualizationConfigurationDocker extends VirtualizationConfigurati
return VirtualizationConfigurationDocker.SUPPORTED_IMAGE_FORMATS;
}
- @Override public void applySettingsForLocalEdit() {
+ @Override public void transformEditable() throws VirtualizationConfigurationException {
}
+
+ @Override
+ public void transformPrivacy() throws VirtualizationConfigurationException {
+ }
@Override public boolean addHddTemplate(File diskImage, String hddMode, String redoDir) {
return false;
@@ -205,15 +211,16 @@ public class VirtualizationConfigurationDocker extends VirtualizationConfigurati
return false;
}
- @Override public Virtualizer getVirtualizer() {
- return virtualizer;
- }
-
- @Override public boolean tweakForNonPersistent() {
- return false;
+ @Override public void transformNonPersistent() throws VirtualizationConfigurationException {
+
}
@Override public void registerVirtualHW() {
}
+
+ @Override
+ public String getFileNameExtension() {
+ return VirtualizationConfigurationDocker.CONFIGURATION_FILE_NAME_EXTENSION;
+ }
}
diff --git a/src/main/java/org/openslx/virtualization/configuration/VirtualizationConfigurationQemu.java b/src/main/java/org/openslx/virtualization/configuration/VirtualizationConfigurationQemu.java
index 91bb9ae..534f0e5 100644
--- a/src/main/java/org/openslx/virtualization/configuration/VirtualizationConfigurationQemu.java
+++ b/src/main/java/org/openslx/virtualization/configuration/VirtualizationConfigurationQemu.java
@@ -10,7 +10,6 @@ import java.util.List;
import java.util.Map.Entry;
import org.openslx.bwlp.thrift.iface.OperatingSystem;
-import org.openslx.bwlp.thrift.iface.Virtualizer;
import org.openslx.libvirt.domain.Domain;
import org.openslx.libvirt.domain.device.ControllerUsb;
import org.openslx.libvirt.domain.device.Disk.BusType;
@@ -26,7 +25,7 @@ import org.openslx.libvirt.domain.device.Video;
import org.openslx.libvirt.xml.LibvirtXmlDocumentException;
import org.openslx.libvirt.xml.LibvirtXmlSerializationException;
import org.openslx.libvirt.xml.LibvirtXmlValidationException;
-import org.openslx.thrifthelper.TConst;
+import org.openslx.virtualization.virtualizer.VirtualizerQemu;
import org.openslx.vm.disk.DiskImage;
import org.openslx.vm.disk.DiskImage.ImageFormat;
@@ -247,15 +246,15 @@ public class VirtualizationConfigurationQemu extends
public static final String CDROM_DEFAULT_PHYSICAL_DRIVE = "/dev/sr0";
/**
- * List of supported image formats by the QEMU hypervisor.
+ * File name extension for QEMU (Libvirt) virtualization configuration files.
*/
- private static final List<DiskImage.ImageFormat> SUPPORTED_IMAGE_FORMATS = Collections.unmodifiableList(
- Arrays.asList( ImageFormat.QCOW2, ImageFormat.VMDK, ImageFormat.VDI ) );
+ private static final String CONFIGURATION_FILE_NAME_EXTENSION = ".xml";
/**
- * Representation of a QEMU hypervisor (managed by Libvirt).
+ * List of supported image formats by the QEMU hypervisor.
*/
- private static final Virtualizer VIRTUALIZER = new Virtualizer( TConst.VIRT_QEMU, "QEMU" );
+ private static final List<DiskImage.ImageFormat> SUPPORTED_IMAGE_FORMATS = Collections.unmodifiableList(
+ Arrays.asList( ImageFormat.QCOW2, ImageFormat.VMDK, ImageFormat.VDI ) );
/**
* Libvirt XML configuration file to modify configuration of virtual machine for QEMU.
@@ -285,9 +284,10 @@ public class VirtualizationConfigurationQemu extends
*
* @throws VirtualizationConfigurationException Libvirt XML configuration cannot be processed.
*/
- public VirtualizationConfigurationQemu( List<OperatingSystem> osList, File file ) throws VirtualizationConfigurationException
+ public VirtualizationConfigurationQemu( List<OperatingSystem> osList, File file )
+ throws VirtualizationConfigurationException
{
- super( osList );
+ super( new VirtualizerQemu(), osList );
try {
// read and parse Libvirt domain XML configuration document
@@ -312,7 +312,7 @@ public class VirtualizationConfigurationQemu extends
public VirtualizationConfigurationQemu( List<OperatingSystem> osList, byte[] vmContent, int length )
throws VirtualizationConfigurationException
{
- super( osList );
+ super( new VirtualizerQemu(), osList );
try {
// read and parse Libvirt domain XML configuration document
@@ -341,10 +341,6 @@ public class VirtualizationConfigurationQemu extends
for ( DiskStorage storageDiskDevice : this.vmConfig.getDiskStorageDevices() ) {
this.addHddMetaData( storageDiskDevice );
}
-
- // start of privacy filters to filter out sensitive information like name of users in absolute paths, ...
- // removes all referenced storage files of all specified CDROMs, Floppy drives and HDDs
- this.vmConfig.removeDiskDevicesStorage();
}
/**
@@ -356,7 +352,8 @@ public class VirtualizationConfigurationQemu extends
private void addHddMetaData( DiskStorage storageDiskDevice )
{
String hddChipsetModel = null;
- DriveBusType hddChipsetBus = VirtualizationConfigurationQemuUtils.convertBusType( storageDiskDevice.getBusType() );
+ DriveBusType hddChipsetBus = VirtualizationConfigurationQemuUtils
+ .convertBusType( storageDiskDevice.getBusType() );
String hddImagePath = storageDiskDevice.getStorageSource();
this.hdds.add( new HardDisk( hddChipsetModel, hddChipsetBus, hddImagePath ) );
@@ -383,7 +380,7 @@ public class VirtualizationConfigurationQemu extends
}
@Override
- public void applySettingsForLocalEdit()
+ public void transformEditable() throws VirtualizationConfigurationException
{
// NOT implemented yet
}
@@ -836,16 +833,16 @@ public class VirtualizationConfigurationQemu extends
}
@Override
- public Virtualizer getVirtualizer()
+ public void transformNonPersistent() throws VirtualizationConfigurationException
{
- return VirtualizationConfigurationQemu.VIRTUALIZER;
+ // NOT implemented yet
}
@Override
- public boolean tweakForNonPersistent()
+ public void transformPrivacy() throws VirtualizationConfigurationException
{
- // NOT implemented yet
- return false;
+ // removes all referenced storage files of all specified CDROMs, Floppy drives and HDDs
+ this.vmConfig.removeDiskDevicesStorage();
}
@Override
@@ -878,4 +875,10 @@ public class VirtualizationConfigurationQemu extends
usbSpeeds.put( VirtualizationConfiguration.UsbSpeed.USB3_0, new QemuUsbSpeedMeta( 3, ControllerUsb.Model.QEMU_XHCI ) );
// @formatter:on
}
+
+ @Override
+ public String getFileNameExtension()
+ {
+ return VirtualizationConfigurationQemu.CONFIGURATION_FILE_NAME_EXTENSION;
+ }
}
diff --git a/src/main/java/org/openslx/virtualization/configuration/VirtualizationConfigurationVirtualBox.java b/src/main/java/org/openslx/virtualization/configuration/VirtualizationConfigurationVirtualBox.java
index 39e78ea..90b1879 100644
--- a/src/main/java/org/openslx/virtualization/configuration/VirtualizationConfigurationVirtualBox.java
+++ b/src/main/java/org/openslx/virtualization/configuration/VirtualizationConfigurationVirtualBox.java
@@ -13,9 +13,9 @@ import java.util.UUID;
import org.apache.log4j.Logger;
import org.openslx.bwlp.thrift.iface.OperatingSystem;
-import org.openslx.bwlp.thrift.iface.Virtualizer;
import org.openslx.thrifthelper.TConst;
import org.openslx.virtualization.configuration.VirtualizationConfigurationVirtualboxFileFormat.PlaceHolder;
+import org.openslx.virtualization.virtualizer.VirtualizerVirtualBox;
import org.openslx.vm.disk.DiskImage;
import org.openslx.vm.disk.DiskImage.ImageFormat;
import org.w3c.dom.Attr;
@@ -81,6 +81,11 @@ class VBoxUsbSpeedMeta
public class VirtualizationConfigurationVirtualBox extends VirtualizationConfiguration<VBoxSoundCardMeta, VBoxDDAccelMeta, VBoxHWVersionMeta, VBoxEthernetDevTypeMeta, VBoxUsbSpeedMeta>
{
/**
+ * File name extension for VirtualBox virtualization configuration files..
+ */
+ private static final String CONFIGURATION_FILE_NAME_EXTENSION = ".vbox";
+
+ /**
* List of supported image formats by the VirtualBox hypervisor.
*/
private static final List<DiskImage.ImageFormat> SUPPORTED_IMAGE_FORMATS = Collections.unmodifiableList(
@@ -88,8 +93,6 @@ public class VirtualizationConfigurationVirtualBox extends VirtualizationConfigu
private static final Logger LOGGER = Logger.getLogger( VirtualizationConfigurationVirtualBox.class );
- private static final Virtualizer virtualizer = new Virtualizer( TConst.VIRT_VIRTUALBOX, "VirtualBox" );
-
private final VirtualizationConfigurationVirtualboxFileFormat config;
public static enum EthernetType
@@ -106,14 +109,14 @@ public class VirtualizationConfigurationVirtualBox extends VirtualizationConfigu
public VirtualizationConfigurationVirtualBox( List<OperatingSystem> osList, File file ) throws IOException, VirtualizationConfigurationException
{
- super( osList );
+ super( new VirtualizerVirtualBox(), osList );
this.config = new VirtualizationConfigurationVirtualboxFileFormat( file );
init();
}
public VirtualizationConfigurationVirtualBox( List<OperatingSystem> osList, byte[] vmContent, int length ) throws IOException, VirtualizationConfigurationException
{
- super( osList );
+ super( new VirtualizerVirtualBox(), osList );
this.config = new VirtualizationConfigurationVirtualboxFileFormat( vmContent, length );
init();
}
@@ -127,12 +130,6 @@ public class VirtualizationConfigurationVirtualBox extends VirtualizationConfigu
hdds.add( hardDisk );
}
}
-
- @Override
- public Virtualizer getVirtualizer()
- {
- return virtualizer;
- }
@Override
public List<DiskImage.ImageFormat> getSupportedImageFormats()
@@ -141,10 +138,16 @@ public class VirtualizationConfigurationVirtualBox extends VirtualizationConfigu
}
@Override
- public void applySettingsForLocalEdit()
+ public void transformEditable() throws VirtualizationConfigurationException
{
// TODO Auto-generated method stub
}
+
+ @Override
+ public void transformPrivacy() throws VirtualizationConfigurationException
+ {
+
+ }
@Override
public byte[] getDefinitionArray()
@@ -470,7 +473,7 @@ public class VirtualizationConfigurationVirtualBox extends VirtualizationConfigu
}
@Override
- public boolean tweakForNonPersistent()
+ public void transformNonPersistent() throws VirtualizationConfigurationException
{
// Cannot disable suspend
// https://forums.virtualbox.org/viewtopic.php?f=6&t=77169
@@ -484,7 +487,6 @@ public class VirtualizationConfigurationVirtualBox extends VirtualizationConfigu
config.setExtraData( "GUI/PreventSnapshotOperations", "true" );
config.setExtraData( "GUI/PreventApplicationUpdate", "true" );
config.setExtraData( "GUI/RestrictedCloseActions", "SaveState,PowerOffRestoringSnapshot,Detach" );
- return true;
}
@Override
@@ -532,4 +534,10 @@ public class VirtualizationConfigurationVirtualBox extends VirtualizationConfigu
}
return maxItem;
}
+
+ @Override
+ public String getFileNameExtension()
+ {
+ return VirtualizationConfigurationVirtualBox.CONFIGURATION_FILE_NAME_EXTENSION;
+ }
}
diff --git a/src/main/java/org/openslx/virtualization/configuration/VirtualizationConfigurationVmware.java b/src/main/java/org/openslx/virtualization/configuration/VirtualizationConfigurationVmware.java
index 5dfd5f9..9f490d4 100644
--- a/src/main/java/org/openslx/virtualization/configuration/VirtualizationConfigurationVmware.java
+++ b/src/main/java/org/openslx/virtualization/configuration/VirtualizationConfigurationVmware.java
@@ -14,10 +14,10 @@ import java.util.regex.Pattern;
import org.apache.log4j.Logger;
import org.openslx.bwlp.thrift.iface.OperatingSystem;
-import org.openslx.bwlp.thrift.iface.Virtualizer;
import org.openslx.thrifthelper.TConst;
import org.openslx.util.Util;
import org.openslx.virtualization.configuration.VirtualizationConfigurationVmwareFileFormat.ConfigEntry;
+import org.openslx.virtualization.virtualizer.VirtualizerVmware;
import org.openslx.vm.disk.DiskImage;
import org.openslx.vm.disk.DiskImage.ImageFormat;
@@ -78,6 +78,11 @@ class VmwareUsbSpeed
public class VirtualizationConfigurationVmware extends VirtualizationConfiguration<VmWareSoundCardMeta, VmWareDDAccelMeta, VmWareHWVersionMeta, VmWareEthernetDevTypeMeta, VmwareUsbSpeed>
{
/**
+ * File name extension for VMware virtualization configuration files.
+ */
+ private static final String CONFIGURATION_FILE_NAME_EXTENSION = ".vmx";
+
+ /**
* List of supported image formats by the VMware hypervisor.
*/
private static final List<DiskImage.ImageFormat> SUPPORTED_IMAGE_FORMATS = Collections.unmodifiableList(
@@ -85,8 +90,6 @@ public class VirtualizationConfigurationVmware extends VirtualizationConfigurati
private static final Logger LOGGER = Logger.getLogger( VirtualizationConfigurationVmware.class );
- private static final Virtualizer virtualizer = new Virtualizer( TConst.VIRT_VMWARE, "VMware" );
-
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)
@@ -122,14 +125,14 @@ public class VirtualizationConfigurationVmware extends VirtualizationConfigurati
public VirtualizationConfigurationVmware( List<OperatingSystem> osList, File file ) throws IOException, VirtualizationConfigurationException
{
- super( osList );
+ super( new VirtualizerVmware(), osList );
this.config = new VirtualizationConfigurationVmwareFileFormat( file );
init();
}
public VirtualizationConfigurationVmware( List<OperatingSystem> osList, byte[] vmxContent, int length ) throws VirtualizationConfigurationException
{
- super( osList );
+ super( new VirtualizerVmware(), osList );
this.config = new VirtualizationConfigurationVmwareFileFormat( vmxContent, length ); // still unfiltered
init(); // now filtered
}
@@ -412,10 +415,9 @@ public class VirtualizationConfigurationVmware extends VirtualizationConfigurati
}
@Override
- public boolean tweakForNonPersistent()
+ public void transformNonPersistent() throws VirtualizationConfigurationException
{
addFiltered( "suspend.disabled", "TRUE" );
- return true;
}
@Override
@@ -449,12 +451,6 @@ public class VirtualizationConfigurationVmware extends VirtualizationConfigurati
return config.toString( false, false ).getBytes( StandardCharsets.UTF_8 );
}
- @Override
- public Virtualizer getVirtualizer()
- {
- return virtualizer;
- }
-
private static class Device
{
public boolean present = false;
@@ -482,7 +478,7 @@ public class VirtualizationConfigurationVmware extends VirtualizationConfigurati
}
@Override
- public void applySettingsForLocalEdit()
+ public void transformEditable() throws VirtualizationConfigurationException
{
addFiltered( "gui.applyHostDisplayScalingToGuest", "FALSE" );
}
@@ -639,6 +635,11 @@ public class VirtualizationConfigurationVmware extends VirtualizationConfigurati
return false;
}
+ @Override
+ public void transformPrivacy() throws VirtualizationConfigurationException
+ {
+ }
+
public void registerVirtualHW()
{
soundCards.put( VirtualizationConfiguration.SoundCardType.NONE, new VmWareSoundCardMeta( false, null ) );
@@ -679,4 +680,10 @@ public class VirtualizationConfigurationVmware extends VirtualizationConfigurati
usbSpeeds.put( VirtualizationConfiguration.UsbSpeed.USB3_0, new VmwareUsbSpeed( 3, "usb_xhci" ) );
}
+ @Override
+ public String getFileNameExtension()
+ {
+ return VirtualizationConfigurationVmware.CONFIGURATION_FILE_NAME_EXTENSION;
+ }
+
}
diff --git a/src/main/java/org/openslx/virtualization/configuration/data/ConfigurationDataDozModClientToDozModServer.java b/src/main/java/org/openslx/virtualization/configuration/data/ConfigurationDataDozModClientToDozModServer.java
new file mode 100644
index 0000000..dda62aa
--- /dev/null
+++ b/src/main/java/org/openslx/virtualization/configuration/data/ConfigurationDataDozModClientToDozModServer.java
@@ -0,0 +1,8 @@
+package org.openslx.virtualization.configuration.data;
+
+public class ConfigurationDataDozModClientToDozModServer
+{
+ public ConfigurationDataDozModClientToDozModServer()
+ {
+ }
+}
diff --git a/src/main/java/org/openslx/virtualization/configuration/data/ConfigurationDataDozModServerToDozModClient.java b/src/main/java/org/openslx/virtualization/configuration/data/ConfigurationDataDozModServerToDozModClient.java
new file mode 100644
index 0000000..c1ae37a
--- /dev/null
+++ b/src/main/java/org/openslx/virtualization/configuration/data/ConfigurationDataDozModServerToDozModClient.java
@@ -0,0 +1,49 @@
+package org.openslx.virtualization.configuration.data;
+
+import java.io.File;
+
+import org.openslx.bwlp.thrift.iface.OperatingSystem;
+
+public class ConfigurationDataDozModServerToDozModClient
+{
+ private final String displayName;
+ private final File diskImage;
+ private final OperatingSystem guestOs;
+ private final String virtualizerId;
+ private final int totalMemory;
+
+ public ConfigurationDataDozModServerToDozModClient( String displayName, File diskImage, OperatingSystem guestOs,
+ String virtualizerId, int totalMemory )
+ {
+ this.displayName = displayName;
+ this.diskImage = diskImage;
+ this.guestOs = guestOs;
+ this.virtualizerId = virtualizerId;
+ this.totalMemory = totalMemory;
+ }
+
+ public String getDisplayName()
+ {
+ return this.displayName;
+ }
+
+ public File getDiskImage()
+ {
+ return this.diskImage;
+ }
+
+ public OperatingSystem getGuestOs()
+ {
+ return this.guestOs;
+ }
+
+ public String getVirtualizerId()
+ {
+ return this.virtualizerId;
+ }
+
+ public int getTotalMemory()
+ {
+ return this.totalMemory;
+ }
+}
diff --git a/src/main/java/org/openslx/virtualization/configuration/data/ConfigurationDataDozModServerToStatelessClient.java b/src/main/java/org/openslx/virtualization/configuration/data/ConfigurationDataDozModServerToStatelessClient.java
new file mode 100644
index 0000000..f5d9a31
--- /dev/null
+++ b/src/main/java/org/openslx/virtualization/configuration/data/ConfigurationDataDozModServerToStatelessClient.java
@@ -0,0 +1,30 @@
+package org.openslx.virtualization.configuration.data;
+
+public class ConfigurationDataDozModServerToStatelessClient
+{
+ private final String displayName;
+ private final String osId;
+ private final boolean hasUsbAccess;
+
+ public ConfigurationDataDozModServerToStatelessClient( String displayName, String osId, boolean hasUsbAccess )
+ {
+ this.displayName = displayName;
+ this.osId = osId;
+ this.hasUsbAccess = hasUsbAccess;
+ }
+
+ public String getDisplayName()
+ {
+ return this.displayName;
+ }
+
+ public String getOsId()
+ {
+ return this.osId;
+ }
+
+ public boolean hasUsbAccess()
+ {
+ return this.hasUsbAccess;
+ }
+}
diff --git a/src/main/java/org/openslx/virtualization/configuration/logic/ConfigurationLogic.java b/src/main/java/org/openslx/virtualization/configuration/logic/ConfigurationLogic.java
new file mode 100644
index 0000000..5bfbf8f
--- /dev/null
+++ b/src/main/java/org/openslx/virtualization/configuration/logic/ConfigurationLogic.java
@@ -0,0 +1,12 @@
+package org.openslx.virtualization.configuration.logic;
+
+import org.openslx.virtualization.configuration.VirtualizationConfiguration;
+import org.openslx.virtualization.configuration.transformation.TransformationGeneric;
+
+public abstract class ConfigurationLogic<T> extends TransformationGeneric<VirtualizationConfiguration<?, ?, ?, ?, ?>, T>
+{
+ public ConfigurationLogic( String name )
+ {
+ super( name );
+ }
+}
diff --git a/src/main/java/org/openslx/virtualization/configuration/logic/ConfigurationLogicDozModClientToDozModServer.java b/src/main/java/org/openslx/virtualization/configuration/logic/ConfigurationLogicDozModClientToDozModServer.java
new file mode 100644
index 0000000..76a845f
--- /dev/null
+++ b/src/main/java/org/openslx/virtualization/configuration/logic/ConfigurationLogicDozModClientToDozModServer.java
@@ -0,0 +1,44 @@
+package org.openslx.virtualization.configuration.logic;
+
+import org.openslx.virtualization.configuration.VirtualizationConfiguration;
+import org.openslx.virtualization.configuration.VirtualizationConfigurationException;
+import org.openslx.virtualization.configuration.data.ConfigurationDataDozModClientToDozModServer;
+import org.openslx.virtualization.configuration.transformation.TransformationException;
+
+public class ConfigurationLogicDozModClientToDozModServer
+ extends ConfigurationLogic<ConfigurationDataDozModClientToDozModServer>
+{
+ private static final String CONFIGURATION_LOGIC_NAME = "Transformation of virtualization configuration during upload from DozMod client to DozMod server";
+
+ public ConfigurationLogicDozModClientToDozModServer()
+ {
+ super( ConfigurationLogicDozModClientToDozModServer.CONFIGURATION_LOGIC_NAME );
+ }
+
+ private void validateInputs( VirtualizationConfiguration<?, ?, ?, ?, ?> config,
+ ConfigurationDataDozModClientToDozModServer args )
+ throws TransformationException
+ {
+ if ( config == null || args == null ) {
+ throw new TransformationException( "Virtualization configuration or input arguments are missing!" );
+ } else if ( config.getDisplayName() == null ) {
+ throw new TransformationException( "Display name is missing in virtualization configuration!" );
+ }
+ }
+
+ @Override
+ public void transform( VirtualizationConfiguration<?, ?, ?, ?, ?> config,
+ ConfigurationDataDozModClientToDozModServer args )
+ throws TransformationException
+ {
+ // check if input parameters for a transformation are valid
+ this.validateInputs( config, args );
+
+ // apply the privacy filter on the given virtualization configuration
+ try {
+ config.transformPrivacy();
+ } catch ( VirtualizationConfigurationException e ) {
+ throw new TransformationException( e.getLocalizedMessage() );
+ }
+ }
+}
diff --git a/src/main/java/org/openslx/virtualization/configuration/logic/ConfigurationLogicDozModServerToDozModClient.java b/src/main/java/org/openslx/virtualization/configuration/logic/ConfigurationLogicDozModServerToDozModClient.java
new file mode 100644
index 0000000..fa3a505
--- /dev/null
+++ b/src/main/java/org/openslx/virtualization/configuration/logic/ConfigurationLogicDozModServerToDozModClient.java
@@ -0,0 +1,143 @@
+package org.openslx.virtualization.configuration.logic;
+
+import java.util.Map;
+
+import org.openslx.bwlp.thrift.iface.OperatingSystem;
+import org.openslx.virtualization.configuration.VirtualizationConfiguration;
+import org.openslx.virtualization.configuration.VirtualizationConfiguration.UsbSpeed;
+import org.openslx.virtualization.configuration.VirtualizationConfigurationException;
+import org.openslx.virtualization.configuration.data.ConfigurationDataDozModServerToDozModClient;
+import org.openslx.virtualization.configuration.transformation.TransformationException;
+
+public class ConfigurationLogicDozModServerToDozModClient
+ extends ConfigurationLogic<ConfigurationDataDozModServerToDozModClient>
+{
+ private static final String CONFIGURATION_LOGIC_NAME = "Transformation of virtualization configuration during download from DozMod server to DozMod client";
+
+ private static final int CONFIGURATION_LOGIC_NUM_CPU_CORES = 1;
+ private static final int CONFIGURATION_LOGIC_MEMORY_MIN = 1024;
+
+ public ConfigurationLogicDozModServerToDozModClient()
+ {
+ super( ConfigurationLogicDozModServerToDozModClient.CONFIGURATION_LOGIC_NAME );
+ }
+
+ private void validateInputs( VirtualizationConfiguration<?, ?, ?, ?, ?> config,
+ ConfigurationDataDozModServerToDozModClient args )
+ throws TransformationException
+ {
+ if ( config == null || args == null ) {
+ throw new TransformationException( "Virtualization configuration or input arguments are missing!" );
+ } else if ( args.getDisplayName() == null || args.getDisplayName().isEmpty() ) {
+ throw new TransformationException( "Valid display name is not specified!" );
+ } else if ( args.getDiskImage() == null || !args.getDiskImage().exists() ) {
+ throw new TransformationException( "Valid disk image file is not specified!" );
+ } else if ( ! ( args.getTotalMemory() > 0 ) ) {
+ throw new TransformationException( "Total memory amount is not specified!" );
+ }
+ }
+
+ private static int roundToNearest( int value, int nearestFactor )
+ {
+ return ( value / nearestFactor ) * nearestFactor;
+ }
+
+ private static int calculateVirtualizationMemoryOnDozmodClient( int totalMemory, int osMaxMemory )
+ {
+ // calculate the amount of memory
+ int memory = totalMemory / 2 - 512;
+
+ // increase calculated memory if lower memory limit is undercut
+ if ( memory < ConfigurationLogicDozModServerToDozModClient.CONFIGURATION_LOGIC_MEMORY_MIN ) {
+ memory = ConfigurationLogicDozModServerToDozModClient.CONFIGURATION_LOGIC_MEMORY_MIN;
+ }
+
+ // limit virtualization memory if the available host's system memory amount is smaller
+ if ( osMaxMemory > 0 && memory > osMaxMemory ) {
+ memory = osMaxMemory;
+ }
+
+ // round to nearest factor of 4, otherwise VMware virtualization configuration files are invalid
+ return ConfigurationLogicDozModServerToDozModClient.roundToNearest( memory, 4 );
+ }
+
+ @Override
+ public void transform( VirtualizationConfiguration<?, ?, ?, ?, ?> config,
+ ConfigurationDataDozModServerToDozModClient args )
+ throws TransformationException
+ {
+ // check if input parameters for a transformation are valid
+ this.validateInputs( config, args );
+
+ // set display name
+ if ( !config.addDisplayName( args.getDisplayName() ) ) {
+ throw new TransformationException( "Can not set display name in virtualization configuration!" );
+ }
+
+ // append hard disk drive
+ if ( !config.addHddTemplate( args.getDiskImage(), null, null ) ) {
+ throw new TransformationException( "Can not configure hard disk in virtualization configuration!" );
+ }
+
+ // append default NAT interface
+ if ( !config.addDefaultNat() ) {
+ throw new TransformationException( "Can not configure NAT interface in virtualization configuration!" );
+ }
+
+ // set the guest OS if specified
+ final OperatingSystem guestOs = args.getGuestOs();
+ final String virtualizerId = args.getVirtualizerId();
+ int osMaxMemory = 0;
+
+ if ( guestOs != null && virtualizerId != null ) {
+ final Map<String, String> virtOsIdMap = guestOs.getVirtualizerOsId();
+ if ( virtOsIdMap != null ) {
+ // set guest operating system if possible
+ final String virtOsId = virtOsIdMap.get( virtualizerId );
+ if ( virtOsId != null ) {
+ config.setOs( virtOsId );
+ }
+
+ // get maximum memory of editable host for guestOs if possible
+ final int maxMemMb = guestOs.getMaxMemMb();
+ if ( maxMemMb > 0 ) {
+ osMaxMemory = maxMemMb;
+ }
+ }
+ }
+
+ // set CPU core count
+ if ( !config.addCpuCoreCount( ConfigurationLogicDozModServerToDozModClient.CONFIGURATION_LOGIC_NUM_CPU_CORES ) ) {
+ throw new TransformationException( "Can not set CPU core count in virtualization configuration!" );
+ }
+
+ // calculate and set memory
+ final int virtualizationMemory = ConfigurationLogicDozModServerToDozModClient
+ .calculateVirtualizationMemoryOnDozmodClient( args.getTotalMemory(), osMaxMemory );
+ if ( !config.addRam( virtualizationMemory ) ) {
+ throw new TransformationException( "Can not set memory in virtualization configuration!" );
+ }
+
+ // append first empty floppy drive
+ config.addFloppy( 0, null, true );
+ // append second empty floppy drive
+ config.addFloppy( 1, null, true );
+
+ // append first empty (ISO-based) CDROM drive
+ config.addCdrom( "" );
+ // append second CDROM drive connected to the host's physical drive
+ config.addCdrom( null );
+
+ // set maximum USB speed
+ if ( config.getMaxUsbSpeed() != UsbSpeed.USB3_0 ) {
+ config.setMaxUsbSpeed( UsbSpeed.USB2_0 );
+ }
+
+ // apply settings to edit virtualized system locally
+ try {
+ config.transformEditable();
+ } catch ( VirtualizationConfigurationException e ) {
+ throw new TransformationException( e.getLocalizedMessage() );
+ }
+ }
+}
diff --git a/src/main/java/org/openslx/virtualization/configuration/logic/ConfigurationLogicDozModServerToStatelessClient.java b/src/main/java/org/openslx/virtualization/configuration/logic/ConfigurationLogicDozModServerToStatelessClient.java
new file mode 100644
index 0000000..4c20b1f
--- /dev/null
+++ b/src/main/java/org/openslx/virtualization/configuration/logic/ConfigurationLogicDozModServerToStatelessClient.java
@@ -0,0 +1,74 @@
+package org.openslx.virtualization.configuration.logic;
+
+import org.openslx.virtualization.configuration.VirtualizationConfiguration;
+import org.openslx.virtualization.configuration.VirtualizationConfiguration.EtherType;
+import org.openslx.virtualization.configuration.VirtualizationConfiguration.UsbSpeed;
+import org.openslx.virtualization.configuration.VirtualizationConfigurationException;
+import org.openslx.virtualization.configuration.data.ConfigurationDataDozModServerToStatelessClient;
+import org.openslx.virtualization.configuration.transformation.TransformationException;
+
+public class ConfigurationLogicDozModServerToStatelessClient
+ extends ConfigurationLogic<ConfigurationDataDozModServerToStatelessClient>
+{
+ private static final String CONFIGURATION_LOGIC_NAME = "Transformation of virtualization configuration during download from DozMod server to stateless client";
+
+ private static final EtherType CONFIGURATION_DEFAULT_ETHERNET_TYPE = EtherType.NAT;
+
+ public ConfigurationLogicDozModServerToStatelessClient()
+ {
+ super( ConfigurationLogicDozModServerToStatelessClient.CONFIGURATION_LOGIC_NAME );
+ }
+
+ private void validateInputs( VirtualizationConfiguration<?, ?, ?, ?, ?> config,
+ ConfigurationDataDozModServerToStatelessClient args )
+ throws TransformationException
+ {
+ if ( config == null || args == null ) {
+ throw new TransformationException( "Virtualization configuration or input arguments are missing!" );
+ } else if ( args.getDisplayName() == null || args.getDisplayName().isEmpty() ) {
+ throw new TransformationException( "Valid display name is not specified!" );
+ }
+ }
+
+ @Override
+ public void transform( VirtualizationConfiguration<?, ?, ?, ?, ?> config,
+ ConfigurationDataDozModServerToStatelessClient args )
+ throws TransformationException
+ {
+ // check if input parameters for a transformation are valid
+ this.validateInputs( config, args );
+
+ // set display name of lecture
+ if ( !config.addDisplayName( args.getDisplayName() ) ) {
+ 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%" ) ) {
+ throw new TransformationException( "Can not configure hard disk in virtualization configuration!" );
+ }
+
+ // append default NAT interface
+ if ( !config.addEthernet(
+ ConfigurationLogicDozModServerToStatelessClient.CONFIGURATION_DEFAULT_ETHERNET_TYPE ) ) {
+ throw new TransformationException( "Can not configure NAT interface in virtualization configuration!" );
+ }
+
+ // set the guest OS if specified
+ if ( args.getOsId() != null ) {
+ config.setOs( args.getOsId() );
+ }
+
+ // disable USB if necessary
+ if ( !args.hasUsbAccess() ) {
+ config.setMaxUsbSpeed( UsbSpeed.NONE );
+ }
+
+ // apply settings to run virtualized system in a stateless manner
+ try {
+ config.transformNonPersistent();
+ } catch ( VirtualizationConfigurationException e ) {
+ throw new TransformationException( e.getLocalizedMessage() );
+ }
+ }
+}
diff --git a/src/main/java/org/openslx/virtualization/virtualizer/Virtualizer.java b/src/main/java/org/openslx/virtualization/virtualizer/Virtualizer.java
index 1411e6a..e74d15e 100644
--- a/src/main/java/org/openslx/virtualization/virtualizer/Virtualizer.java
+++ b/src/main/java/org/openslx/virtualization/virtualizer/Virtualizer.java
@@ -22,20 +22,13 @@ public abstract class Virtualizer
protected final org.openslx.bwlp.thrift.iface.Virtualizer internalVirtualizer;
/**
- * File name suffix for virtualization configuration files of the virtualizer.
- */
- public final String configFileNameSuffix;
-
- /**
* Creates a new virtualizer.
*
* @param internalVirtualizer internal data representation for the new virtualizer.
- * @param configFileNameSuffix
*/
- public Virtualizer( org.openslx.bwlp.thrift.iface.Virtualizer internalVirtualizer, String configFileNameSuffix )
+ public Virtualizer( org.openslx.bwlp.thrift.iface.Virtualizer internalVirtualizer )
{
this.internalVirtualizer = internalVirtualizer;
- this.configFileNameSuffix = configFileNameSuffix;
}
/**
@@ -59,16 +52,6 @@ public abstract class Virtualizer
}
/**
- * Returns the file name suffix for virtualization configuration files of the virtualizer.
- *
- * @return file name suffix for virtualization configuration files of the virtualizer.
- */
- public String getConfigFileNameSuffix()
- {
- return this.configFileNameSuffix;
- }
-
- /**
* Returns a list of supported disk image formats by the virtualizer.
*
* @return list of supported disk image formats by the virtualizer.
diff --git a/src/main/java/org/openslx/virtualization/virtualizer/VirtualizerDocker.java b/src/main/java/org/openslx/virtualization/virtualizer/VirtualizerDocker.java
index cd8907a..4461595 100644
--- a/src/main/java/org/openslx/virtualization/virtualizer/VirtualizerDocker.java
+++ b/src/main/java/org/openslx/virtualization/virtualizer/VirtualizerDocker.java
@@ -22,11 +22,6 @@ public class VirtualizerDocker extends Virtualizer
private static final String VIRTUALIZER_NAME = "Docker";
/**
- * File name suffix for virtualization configuration files of the Docker virtualizer.
- */
- private static final String VIRTUALIZER_CONFIG_FILE_NAME_SUFFIX = null;
-
- /**
* List of supported image formats by the Docker virtualizer.
*/
private static final List<DiskImage.ImageFormat> VIRTUALIZER_SUPPORTED_IMAGE_FORMATS = Collections
@@ -37,8 +32,7 @@ public class VirtualizerDocker extends Virtualizer
*/
public VirtualizerDocker()
{
- super( new org.openslx.bwlp.thrift.iface.Virtualizer( TConst.VIRT_DOCKER, VirtualizerDocker.VIRTUALIZER_NAME ),
- VirtualizerDocker.VIRTUALIZER_CONFIG_FILE_NAME_SUFFIX );
+ super( new org.openslx.bwlp.thrift.iface.Virtualizer( TConst.VIRT_DOCKER, VirtualizerDocker.VIRTUALIZER_NAME ));
}
@Override
diff --git a/src/main/java/org/openslx/virtualization/virtualizer/VirtualizerQemu.java b/src/main/java/org/openslx/virtualization/virtualizer/VirtualizerQemu.java
index 0b8c962..731209b 100644
--- a/src/main/java/org/openslx/virtualization/virtualizer/VirtualizerQemu.java
+++ b/src/main/java/org/openslx/virtualization/virtualizer/VirtualizerQemu.java
@@ -22,11 +22,6 @@ public class VirtualizerQemu extends Virtualizer
private static final String VIRTUALIZER_NAME = "QEMU";
/**
- * File name suffix for virtualization configuration files (Libvirt) of the QEMU virtualizer.
- */
- private static final String VIRTUALIZER_CONFIG_FILE_NAME_SUFFIX = "xml";
-
- /**
* List of supported image formats by the QEMU virtualizer.
*/
private static final List<DiskImage.ImageFormat> VIRTUALIZER_SUPPORTED_IMAGE_FORMATS = Collections
@@ -37,8 +32,7 @@ public class VirtualizerQemu extends Virtualizer
*/
public VirtualizerQemu()
{
- super( new org.openslx.bwlp.thrift.iface.Virtualizer( TConst.VIRT_QEMU, VirtualizerQemu.VIRTUALIZER_NAME ),
- VirtualizerQemu.VIRTUALIZER_CONFIG_FILE_NAME_SUFFIX );
+ super( new org.openslx.bwlp.thrift.iface.Virtualizer( TConst.VIRT_QEMU, VirtualizerQemu.VIRTUALIZER_NAME ) );
}
@Override
diff --git a/src/main/java/org/openslx/virtualization/virtualizer/VirtualizerVirtualBox.java b/src/main/java/org/openslx/virtualization/virtualizer/VirtualizerVirtualBox.java
index ff2fc2d..77662ab 100644
--- a/src/main/java/org/openslx/virtualization/virtualizer/VirtualizerVirtualBox.java
+++ b/src/main/java/org/openslx/virtualization/virtualizer/VirtualizerVirtualBox.java
@@ -22,11 +22,6 @@ public class VirtualizerVirtualBox extends Virtualizer
private static final String VIRTUALIZER_NAME = "VirtualBox";
/**
- * File name suffix for virtualization configuration files of the VirtualBox virtualizer.
- */
- private static final String VIRTUALIZER_CONFIG_FILE_NAME_SUFFIX = "vbox";
-
- /**
* List of supported image formats by the VirtualBox virtualizer.
*/
private static final List<DiskImage.ImageFormat> VIRTUALIZER_SUPPORTED_IMAGE_FORMATS = Collections
@@ -38,7 +33,7 @@ public class VirtualizerVirtualBox extends Virtualizer
public VirtualizerVirtualBox()
{
super( new org.openslx.bwlp.thrift.iface.Virtualizer( TConst.VIRT_VIRTUALBOX,
- VirtualizerVirtualBox.VIRTUALIZER_NAME ), VirtualizerVirtualBox.VIRTUALIZER_CONFIG_FILE_NAME_SUFFIX );
+ VirtualizerVirtualBox.VIRTUALIZER_NAME ) );
}
@Override
diff --git a/src/main/java/org/openslx/virtualization/virtualizer/VirtualizerVmware.java b/src/main/java/org/openslx/virtualization/virtualizer/VirtualizerVmware.java
index 48a3ad7..7b766eb 100644
--- a/src/main/java/org/openslx/virtualization/virtualizer/VirtualizerVmware.java
+++ b/src/main/java/org/openslx/virtualization/virtualizer/VirtualizerVmware.java
@@ -22,11 +22,6 @@ public class VirtualizerVmware extends Virtualizer
private static final String VIRTUALIZER_NAME = "VMware";
/**
- * File name suffix for virtualization configuration files of the VMware virtualizer.
- */
- private static final String VIRTUALIZER_CONFIG_FILE_NAME_SUFFIX = "vmx";
-
- /**
* List of supported image formats by the VMware virtualizer.
*/
private static final List<DiskImage.ImageFormat> VIRTUALIZER_SUPPORTED_IMAGE_FORMATS = Collections
@@ -37,8 +32,7 @@ public class VirtualizerVmware extends Virtualizer
*/
public VirtualizerVmware()
{
- super( new org.openslx.bwlp.thrift.iface.Virtualizer( TConst.VIRT_VMWARE, VirtualizerVmware.VIRTUALIZER_NAME ),
- VirtualizerVmware.VIRTUALIZER_CONFIG_FILE_NAME_SUFFIX );
+ super( new org.openslx.bwlp.thrift.iface.Virtualizer( TConst.VIRT_VMWARE, VirtualizerVmware.VIRTUALIZER_NAME ) );
}
@Override
diff --git a/src/main/java/org/openslx/vm/disk/DiskImageUtils.java b/src/main/java/org/openslx/vm/disk/DiskImageUtils.java
index fbed6f9..e704b74 100644
--- a/src/main/java/org/openslx/vm/disk/DiskImageUtils.java
+++ b/src/main/java/org/openslx/vm/disk/DiskImageUtils.java
@@ -151,4 +151,14 @@ public class DiskImageUtils
{
return DiskImageUtils.versionFromMajorMinor( major, Short.valueOf( "0" ) );
}
+
+ public static short versionToMajor( final int version )
+ {
+ return Integer.valueOf( version >> 16 ).shortValue();
+ }
+
+ public static short versionToMinor( final int version )
+ {
+ return Integer.valueOf( version & 0x0000FFFF ).shortValue();
+ }
}