summaryrefslogtreecommitdiffstats
path: root/src/main/java/org/openslx/vm/disk
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/openslx/vm/disk')
-rw-r--r--src/main/java/org/openslx/vm/disk/DiskImage.java8
-rw-r--r--src/main/java/org/openslx/vm/disk/DiskImageQcow2.java12
-rw-r--r--src/main/java/org/openslx/vm/disk/DiskImageUtils.java18
-rw-r--r--src/main/java/org/openslx/vm/disk/DiskImageVdi.java6
-rw-r--r--src/main/java/org/openslx/vm/disk/DiskImageVmdk.java38
5 files changed, 40 insertions, 42 deletions
diff --git a/src/main/java/org/openslx/vm/disk/DiskImage.java b/src/main/java/org/openslx/vm/disk/DiskImage.java
index 5706db3..cf7df83 100644
--- a/src/main/java/org/openslx/vm/disk/DiskImage.java
+++ b/src/main/java/org/openslx/vm/disk/DiskImage.java
@@ -11,6 +11,7 @@ import java.util.function.Predicate;
import org.openslx.bwlp.thrift.iface.Virtualizer;
import org.openslx.thrifthelper.TConst;
import org.openslx.util.Util;
+import org.openslx.virtualization.Version;
/**
* Disk image for virtual machines.
@@ -87,7 +88,7 @@ public abstract class DiskImage implements Closeable
*
* @throws DiskImageException unable to obtain version of the disk image format.
*/
- public abstract int getVersion() throws DiskImageException;
+ public abstract Version getVersion() throws DiskImageException;
/**
* Returns the disk image description.
@@ -115,7 +116,8 @@ public abstract class DiskImage implements Closeable
* @throws IOException cannot access the content of the disk image file.
* @throws DiskImageException disk image file has an invalid and unknown disk image format.
*/
- public static DiskImage newInstance( File diskImagePath ) throws FileNotFoundException, IOException, DiskImageException
+ public static DiskImage newInstance( File diskImagePath )
+ throws FileNotFoundException, IOException, DiskImageException
{
// Make sure this doesn't escape the scope, in case instantiation fails - we can't know when the GC
// would come along and close this file, which is problematic on Windows (blocking rename/delete)
@@ -193,7 +195,7 @@ public abstract class DiskImage implements Closeable
/**
* Checks if the disk image format is supported by a virtualizer.
*
- * @param supportedImageTypes list of supported disk image formats of a virtualizer.
+ * @param supportedImageFormats list of supported disk image formats of a virtualizer.
* @return <code>true</code> if image type is supported by the virtualizer; otherwise
* <code>false</code>.
*/
diff --git a/src/main/java/org/openslx/vm/disk/DiskImageQcow2.java b/src/main/java/org/openslx/vm/disk/DiskImageQcow2.java
index a9826e4..e569708 100644
--- a/src/main/java/org/openslx/vm/disk/DiskImageQcow2.java
+++ b/src/main/java/org/openslx/vm/disk/DiskImageQcow2.java
@@ -2,6 +2,8 @@ package org.openslx.vm.disk;
import java.io.RandomAccessFile;
+import org.openslx.virtualization.Version;
+
/**
* QCOW2 disk image for virtual machines.
*
@@ -48,9 +50,9 @@ public class DiskImageQcow2 extends DiskImage
*
* @param diskImage file to a QCOW2 disk storing the image content.
*/
- DiskImageQcow2( RandomAccessFile disk )
+ DiskImageQcow2( RandomAccessFile diskImage )
{
- super( disk );
+ super( diskImage );
}
/**
@@ -104,7 +106,7 @@ public class DiskImageQcow2 extends DiskImage
// check if QCOW2 image uses extended L2 tables
// extended L2 tables are only possible in QCOW2 version 3 header format
- if ( this.getVersion() >= 3 ) {
+ if ( this.getVersion().getMajor() >= Short.valueOf( "3" ) ) {
// read incompatible feature bits
final long qcowIncompatibleFeatures = DiskImageUtils.readLong( diskFile, 72 );
@@ -200,7 +202,7 @@ public class DiskImageQcow2 extends DiskImage
}
@Override
- public int getVersion() throws DiskImageException
+ public Version getVersion() throws DiskImageException
{
final RandomAccessFile diskFile = this.getDiskImage();
final int qcowVersion = DiskImageUtils.readInt( diskFile, 4 );
@@ -212,7 +214,7 @@ public class DiskImageQcow2 extends DiskImage
throw new DiskImageException( errorMsg );
}
- return DiskImageUtils.versionFromMajor( Integer.valueOf( qcowVersion ).shortValue() );
+ return new Version( Integer.valueOf( qcowVersion ).shortValue() );
}
@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..ccb053f 100644
--- a/src/main/java/org/openslx/vm/disk/DiskImageUtils.java
+++ b/src/main/java/org/openslx/vm/disk/DiskImageUtils.java
@@ -114,12 +114,12 @@ public class DiskImageUtils
}
/**
- * Reads two bytes ({@link Short}) at a given <code>offset</code> from the specified disk image
- * file.
+ * Reads a variable number of bytes (<code>numBytes</code>) at a given <code>offset</code> from the specified disk image file.
*
* @param diskImage file to a disk storing the image content.
- * @param offset offset in bytes for reading the two bytes.
- * @return value of the two bytes from the disk image file as {@link Short}.
+ * @param offset offset in bytes for reading <code>numBytes</code> bytes.
+ * @param numBytes number of bytes to read at <code>offset</code>.
+ * @return read bytes from the disk image file as {@link String}.
*
* @throws DiskImageException unable to read two bytes from the disk image file.
*/
@@ -141,14 +141,4 @@ public class DiskImageUtils
return new String( values );
}
-
- public static int versionFromMajorMinor( final short major, final short minor )
- {
- return ( ( Integer.valueOf( major ) << 16 ) | minor );
- }
-
- public static int versionFromMajor( final short major )
- {
- return DiskImageUtils.versionFromMajorMinor( major, Short.valueOf( "0" ) );
- }
}
diff --git a/src/main/java/org/openslx/vm/disk/DiskImageVdi.java b/src/main/java/org/openslx/vm/disk/DiskImageVdi.java
index 9be49d8..37e45c1 100644
--- a/src/main/java/org/openslx/vm/disk/DiskImageVdi.java
+++ b/src/main/java/org/openslx/vm/disk/DiskImageVdi.java
@@ -2,6 +2,8 @@ package org.openslx.vm.disk;
import java.io.RandomAccessFile;
+import org.openslx.virtualization.Version;
+
/**
* VDI disk image for virtual machines.
*
@@ -78,14 +80,14 @@ public class DiskImageVdi extends DiskImage
}
@Override
- public int getVersion() throws DiskImageException
+ public Version getVersion() throws DiskImageException
{
final RandomAccessFile diskFile = this.getDiskImage();
final short vdiVersionMajor = Short.reverseBytes( DiskImageUtils.readShort( diskFile, 68 ) );
final short vdiVersionMinor = Short.reverseBytes( DiskImageUtils.readShort( diskFile, 70 ) );
- return DiskImageUtils.versionFromMajorMinor( vdiVersionMajor, vdiVersionMinor );
+ return new Version( vdiVersionMajor, vdiVersionMinor );
}
@Override
diff --git a/src/main/java/org/openslx/vm/disk/DiskImageVmdk.java b/src/main/java/org/openslx/vm/disk/DiskImageVmdk.java
index 58314fc..75a2bac 100644
--- a/src/main/java/org/openslx/vm/disk/DiskImageVmdk.java
+++ b/src/main/java/org/openslx/vm/disk/DiskImageVmdk.java
@@ -3,8 +3,9 @@ package org.openslx.vm.disk;
import java.io.RandomAccessFile;
import org.openslx.util.Util;
-import org.openslx.vm.UnsupportedVirtualizerFormatException;
-import org.openslx.vm.VmwareConfig;
+import org.openslx.virtualization.configuration.VirtualizationConfigurationVmwareFileFormat;
+import org.openslx.virtualization.Version;
+import org.openslx.virtualization.configuration.VirtualizationConfigurationException;
/**
* VMDK (sparse extent) disk image for virtual machines.
@@ -32,7 +33,7 @@ public class DiskImageVmdk extends DiskImage
/**
* Stores disk configuration if VMDK disk image contains an embedded descriptor file.
*/
- private final VmwareConfig vmdkConfig;
+ private final VirtualizationConfigurationVmwareFileFormat vmdkConfig;
/**
* Creates a new VMDK disk image from an existing VMDK image file.
@@ -80,7 +81,7 @@ public class DiskImageVmdk extends DiskImage
*/
private String getCreationType()
{
- final VmwareConfig vmdkConfig = this.getVmdkConfig();
+ final VirtualizationConfigurationVmwareFileFormat vmdkConfig = this.getVmdkConfig();
final String vmdkCreationType;
if ( vmdkConfig == null ) {
@@ -103,10 +104,10 @@ public class DiskImageVmdk extends DiskImage
*
* @throws DiskImageException parsing of the VMDK's embedded descriptor file failed.
*/
- protected VmwareConfig parseVmdkConfig() throws DiskImageException
+ protected VirtualizationConfigurationVmwareFileFormat parseVmdkConfig() throws DiskImageException
{
final RandomAccessFile diskFile = this.getDiskImage();
- final VmwareConfig vmdkConfig;
+ final VirtualizationConfigurationVmwareFileFormat vmdkConfig;
// get offset and size of descriptor file embedded into the VMDK disk image
final long vmdkDescriptorSectorOffset = Long.reverseBytes( DiskImageUtils.readLong( diskFile, 28 ) );
@@ -133,8 +134,8 @@ public class DiskImageVmdk extends DiskImage
// create configuration instance from content of the descriptor file
try {
- vmdkConfig = new VmwareConfig( configStr.getBytes(), vmdkDescriptorSize );
- } catch ( UnsupportedVirtualizerFormatException e ) {
+ vmdkConfig = new VirtualizationConfigurationVmwareFileFormat( configStr.getBytes(), vmdkDescriptorSize );
+ } catch ( VirtualizationConfigurationException e ) {
throw new DiskImageException( e.getLocalizedMessage() );
}
} else {
@@ -150,7 +151,7 @@ public class DiskImageVmdk extends DiskImage
*
* @return parsed configuration of the VMDK's embedded descriptor file.
*/
- protected VmwareConfig getVmdkConfig()
+ protected VirtualizationConfigurationVmwareFileFormat getVmdkConfig()
{
return this.vmdkConfig;
}
@@ -163,12 +164,13 @@ public class DiskImageVmdk extends DiskImage
*
* @return hardware version from the VMDK's embedded descriptor file.
*
- * @throws DiskImageException
+ * @throws DiskImageException unable to obtain the VMDK's hardware version of the disk image
+ * format.
*/
- public int getHwVersion() throws DiskImageException
+ public Version getHwVersion() throws DiskImageException
{
- final VmwareConfig vmdkConfig = this.getVmdkConfig();
- final int hwVersion;
+ final VirtualizationConfigurationVmwareFileFormat vmdkConfig = this.getVmdkConfig();
+ final Version hwVersion;
if ( vmdkConfig != null ) {
// VMDK image contains a hardware version, so return parsed hardware version
@@ -176,11 +178,11 @@ public class DiskImageVmdk extends DiskImage
final String hwVersionStr = vmdkConfig.get( "ddb.virtualHWVersion" );
final int hwVersionMajor = Util.parseInt( hwVersionStr, DiskImageVmdk.VMDK_DEFAULT_HW_VERSION );
- hwVersion = DiskImageUtils.versionFromMajor( Integer.valueOf( hwVersionMajor ).shortValue() );
+ hwVersion = new Version( Integer.valueOf( hwVersionMajor ).shortValue() );
} else {
// VMDK image does not contain any hardware version, so return default hardware version
final int hwVersionMajor = DiskImageVmdk.VMDK_DEFAULT_HW_VERSION;
- hwVersion = DiskImageUtils.versionFromMajor( Integer.valueOf( hwVersionMajor ).shortValue() );
+ hwVersion = new Version( Integer.valueOf( hwVersionMajor ).shortValue() );
}
return hwVersion;
@@ -233,7 +235,7 @@ public class DiskImageVmdk extends DiskImage
@Override
public boolean isSnapshot() throws DiskImageException
{
- final VmwareConfig vmdkConfig = this.getVmdkConfig();
+ final VirtualizationConfigurationVmwareFileFormat vmdkConfig = this.getVmdkConfig();
final boolean vmdkSnapshot;
if ( vmdkConfig == null ) {
@@ -257,12 +259,12 @@ public class DiskImageVmdk extends DiskImage
}
@Override
- public int getVersion() throws DiskImageException
+ public Version getVersion() throws DiskImageException
{
final RandomAccessFile diskFile = this.getDiskImage();
final int vmdkVersion = Integer.reverseBytes( DiskImageUtils.readInt( diskFile, 4 ) );
- return DiskImageUtils.versionFromMajor( Integer.valueOf( vmdkVersion ).shortValue() );
+ return new Version( Integer.valueOf( vmdkVersion ).shortValue() );
}
@Override