diff options
Diffstat (limited to 'src/main/java/org/openslx/util')
-rw-r--r-- | src/main/java/org/openslx/util/ThriftUtil.java | 21 | ||||
-rw-r--r-- | src/main/java/org/openslx/util/vm/VmwareConfig.java | 9 | ||||
-rw-r--r-- | src/main/java/org/openslx/util/vm/VmwareMetaData.java | 14 |
3 files changed, 40 insertions, 4 deletions
diff --git a/src/main/java/org/openslx/util/ThriftUtil.java b/src/main/java/org/openslx/util/ThriftUtil.java index 58019a7..41449ac 100644 --- a/src/main/java/org/openslx/util/ThriftUtil.java +++ b/src/main/java/org/openslx/util/ThriftUtil.java @@ -1,9 +1,13 @@ package org.openslx.util; +import java.io.BufferedReader; +import java.io.IOException; import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.List; +import org.openslx.util.vm.VmwareConfig; + public class ThriftUtil { public static List<byte[]> unwrapByteBufferList(List<ByteBuffer> blockHashes) { @@ -31,4 +35,21 @@ public class ThriftUtil { return byteArray; } + public static String byteBufferToString(ByteBuffer buffer) { + byte[] bytes = unwrapByteBuffer(buffer); + BufferedReader reader; + StringBuffer content = new StringBuffer(""); + try { + reader = VmwareConfig.getVmxReader(bytes, bytes.length); + String line=""; + while ((line=reader.readLine()) != null) { + content.append(line + System.lineSeparator()); + } + reader.close(); + } catch (IOException e) { + // swallow - shouldn't happen. + return null; + } + return content.toString(); + } } diff --git a/src/main/java/org/openslx/util/vm/VmwareConfig.java b/src/main/java/org/openslx/util/vm/VmwareConfig.java index aa82419..c0e30f6 100644 --- a/src/main/java/org/openslx/util/vm/VmwareConfig.java +++ b/src/main/java/org/openslx/util/vm/VmwareConfig.java @@ -90,6 +90,12 @@ public class VmwareConfig } public static BufferedReader getVmxReader( byte[] vmxContent, int length ) throws IOException { + Charset cs = getCharset(vmxContent, length); + return new BufferedReader( new InputStreamReader( new ByteArrayInputStream( vmxContent, 0, length ), cs ) ); + + } + + public static Charset getCharset( byte[] vmxContent, int length ) { String csName = detectCharset( new ByteArrayInputStream( vmxContent, 0, length ) ); Charset cs = null; try { @@ -99,8 +105,7 @@ public class VmwareConfig } if ( cs == null ) cs = StandardCharsets.ISO_8859_1; - return new BufferedReader( new InputStreamReader( new ByteArrayInputStream( vmxContent, 0, length ), cs ) ); - + return cs; } private String unescape( String value ) diff --git a/src/main/java/org/openslx/util/vm/VmwareMetaData.java b/src/main/java/org/openslx/util/vm/VmwareMetaData.java index 9192035..fef2b2d 100644 --- a/src/main/java/org/openslx/util/vm/VmwareMetaData.java +++ b/src/main/java/org/openslx/util/vm/VmwareMetaData.java @@ -52,8 +52,8 @@ public class VmwareMetaData extends VmMetaData public VmwareMetaData( List<OperatingSystem> osList, byte[] vmxContent, int length ) { super( osList ); - this.config = new VmwareConfig( vmxContent, length ); - init(); + this.config = new VmwareConfig( vmxContent, length ); // still unfiltered + init(); // now filtered } private void init() @@ -61,6 +61,10 @@ public class VmwareMetaData extends VmMetaData for ( Entry<String, ConfigEntry> entry : config.entrySet() ) { handleLoadEntry( entry ); } + // if we find this tag, we already went through the hdd's - so we're done. + if ( config.get("#SLX_HDD_BUS" ) != null) { + return; + } // Now find the HDDs and add to list for ( Entry<String, Controller> cEntry : disks.entrySet() ) { Controller controller = cEntry.getValue(); @@ -84,6 +88,7 @@ public class VmwareMetaData extends VmMetaData hdds.add( new HardDisk( controller.virtualDev, bus, device.filename ) ); } } + // Add HDD to cleaned vmx if ( !hdds.isEmpty() ) { HardDisk hdd = hdds.get( 0 ); @@ -305,6 +310,11 @@ public class VmwareMetaData extends VmMetaData return config.toString( true, false ).getBytes( StandardCharsets.UTF_8 ); } + public byte[] getDefinitionArray() + { + return config.toString( false, false ).getBytes( StandardCharsets.UTF_8 ); + } + @Override public Virtualizer getVirtualizer() { |