summaryrefslogtreecommitdiffstats
path: root/src/main/java/org/openslx/util/vm/DockerMetaDataDummy.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/openslx/util/vm/DockerMetaDataDummy.java')
-rw-r--r--src/main/java/org/openslx/util/vm/DockerMetaDataDummy.java64
1 files changed, 47 insertions, 17 deletions
diff --git a/src/main/java/org/openslx/util/vm/DockerMetaDataDummy.java b/src/main/java/org/openslx/util/vm/DockerMetaDataDummy.java
index 3ee964f..eea4d8b 100644
--- a/src/main/java/org/openslx/util/vm/DockerMetaDataDummy.java
+++ b/src/main/java/org/openslx/util/vm/DockerMetaDataDummy.java
@@ -4,42 +4,72 @@ import org.apache.log4j.Logger;
import org.openslx.bwlp.thrift.iface.Virtualizer;
import org.openslx.thrifthelper.TConst;
-import java.io.*;
+import java.io.BufferedInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
import java.util.List;
public class DockerMetaDataDummy extends VmMetaData {
- // TODO Define DOCKER CONSTANT
- private static final Logger LOGGER = Logger.getLogger( DockerMetaDataDummy.class);
+ private static final Logger LOGGER = Logger.getLogger(DockerMetaDataDummy.class);
- private final Virtualizer virtualizer = new Virtualizer( TConst.VIRT_DOCKER, "Docker" );
+ private final Virtualizer virtualizer = new Virtualizer(TConst.VIRT_DOCKER, "Docker");
- /* this field is in vm context the machine description
- e.g. vmware = vmx.
- This field will be stored in table imageversion.virtualizerconfig
- */
- private byte[] dockerfile;
+ /**
+ * containerDefinition is a serialized tar.gz archive and represents a
+ * ContainerDefinition. This archive contains a serialized Container Recipe (e.g. Dockerfile)
+ * and a ContainerMeta witch is serialized as a json file.
+ * <p>
+ * See ContainerDefintion in tutor-module (bwsuite).
+ * <p>
+ * This field is in vm context the machine description e.g. vmware = vmx.
+ * This field will be stored in table imageversion.virtualizerconfig
+ */
+ private byte[] containerDefinition;
- public DockerMetaDataDummy(List osList, File file) {
+ public DockerMetaDataDummy(List osList, File file) throws UnsupportedVirtualizerFormatException {
super(osList);
try {
- BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
- dockerfile = new byte[(int) file.length()];
- bis.read(dockerfile);
+ BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
+ containerDefinition = new byte[(int) file.length()];
+ bis.read(containerDefinition);
+
+ checkIsTarGz();
} catch (IOException e) {
- LOGGER.error("Couldn't read dockerfile",e);
+ LOGGER.error("Couldn't read dockerfile", e);
}
}
- public DockerMetaDataDummy(List osList, byte[] vmContent, int length) {
+ public DockerMetaDataDummy(List osList, byte[] vmContent, int length)
+ throws UnsupportedVirtualizerFormatException {
super(osList);
- dockerfile = vmContent;
+ containerDefinition = vmContent;
+
+ checkIsTarGz();
+ }
+
+ /*
+ TODO This is just a simple check to prevent the workflow from considering any content as acceptable.
+ */
+ /**
+ * Checks if the first two bytes of the content identifies a tar.gz archive.
+ * The first byte is 31 == 0x1f, the second byte has to be -117 == 0x8b.
+ *
+ * @throws UnsupportedVirtualizerFormatException
+ */
+ private void checkIsTarGz() throws UnsupportedVirtualizerFormatException {
+ if (!((31 == containerDefinition[0]) && (-117 == containerDefinition[1]))) {
+ LOGGER.warn("Not Supported Content.");
+ throw new UnsupportedVirtualizerFormatException(
+ "DockerMetaDataDummy: Not tar.gz encoded content!");
+ }
}
@Override public byte[] getFilteredDefinitionArray() {
- return dockerfile;
+ return containerDefinition;
}
@Override public void applySettingsForLocalEdit() {