summaryrefslogtreecommitdiffstats
path: root/src/main/java/org/openslx/util
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/openslx/util')
-rw-r--r--src/main/java/org/openslx/util/ThriftUtil.java21
-rw-r--r--src/main/java/org/openslx/util/vm/VmwareConfig.java9
-rw-r--r--src/main/java/org/openslx/util/vm/VmwareMetaData.java14
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()
{