summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorralph isenmann2020-10-26 13:12:38 +0100
committerralph isenmann2020-10-26 13:12:38 +0100
commitfcbae54b12b0ad005ca343bb777a6f6373d28c1f (patch)
tree46ee48ad6e64e1e6642b1046b6d63959b79309e2
parent[client] update ImageDetailsWindow for container (diff)
downloadtutor-module-fcbae54b12b0ad005ca343bb777a6f6373d28c1f.tar.gz
tutor-module-fcbae54b12b0ad005ca343bb777a6f6373d28c1f.tar.xz
tutor-module-fcbae54b12b0ad005ca343bb777a6f6373d28c1f.zip
[client] refactoring
- rename ContainerDescription to ContainerRecipe - ...
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java10
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ImageDetailsWindowLayout.java6
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/model/ContainerBindMount.java5
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/model/ContainerDefinition.java55
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/model/ContainerMeta.java1
5 files changed, 43 insertions, 34 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java
index b6cb1050..e12506e1 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java
@@ -627,7 +627,7 @@ import org.openslx.util.Util;
ContainerDefinition conDev = new ContainerDefinition();
- conDev.setDescription(txtContainerDescription.getText());
+ conDev.setContainerRecipe(txtContainerRecipe.getText());
conDev.getContainerMeta().setImageName(txtContainerImageName.getText());
conDev.getContainerMeta().setRunOptions(txtContainerRun.getText());
@@ -815,11 +815,11 @@ import org.openslx.util.Util;
switch (method) {
case FILE:
- txtContainerDescription.setText(containerDefinition.getDescription());
+ txtContainerRecipe.setText(containerDefinition.getDescription());
break;
case GIT_REPOSITORY:
- txtContainerDescription.setText(containerMeta.getBuildContextUrl());
- txtContainerDescription.setEnabled(false);
+ txtContainerRecipe.setText(containerMeta.getBuildContextUrl());
+ txtContainerRecipe.setEnabled(false);
break;
}
@@ -827,7 +827,7 @@ import org.openslx.util.Util;
txtContainerRun.setText(containerMeta.getRunOptions());
bindMountTable.setData(containerMeta.getBindMountConfig(), true);
- changeMonitor.add(txtContainerDescription).
+ changeMonitor.add(txtContainerRecipe).
addConstraint(new TextNotEmptyConstraint("Empty Dockerfile not allowed!"));
changeMonitor.add(txtContainerImageName)
.addConstraint(new TextNotEmptyConstraint("Empty Name not allowed!"));
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ImageDetailsWindowLayout.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ImageDetailsWindowLayout.java
index c1df6867..29d19778 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ImageDetailsWindowLayout.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ImageDetailsWindowLayout.java
@@ -38,7 +38,7 @@ import org.openslx.thrifthelper.Comparators;
protected final JTextArea txtDescription;
private final JPanel pnlTabContainer;
- protected final JTextArea txtContainerDescription;
+ protected final JTextArea txtContainerRecipe;
protected final JTextField txtContainerRun;
protected final JTextField txtContainerImageName;
protected final ContainerBindMountTable bindMountTable;
@@ -281,8 +281,8 @@ import org.openslx.thrifthelper.Comparators;
*
********************************************************************************/
pnlTabContainer = new JPanel();
- txtContainerDescription = new JTextArea();
- JScrollPane scrollableTextArea = new JScrollPane(txtContainerDescription);
+ txtContainerRecipe = new JTextArea();
+ JScrollPane scrollableTextArea = new JScrollPane(txtContainerRecipe);
JPanel pnlContainerMeta = new JPanel();
GridManager grdContainerMeta = new GridManager(pnlContainerMeta, 3, false, new Insets(8, 2, 8, 2));
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/model/ContainerBindMount.java b/dozentenmodul/src/main/java/org/openslx/dozmod/model/ContainerBindMount.java
index 2bfb93f6..9f6261f0 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/model/ContainerBindMount.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/model/ContainerBindMount.java
@@ -2,6 +2,11 @@ package org.openslx.dozmod.model;
import java.util.Objects;
+/**
+ * This class implements a model for a bind mount entry in the docker context
+ * (eg. docker run ... --mount type=bind,source=source,target=target,options ... ). A list of objects of this class is stored in
+ * {@link ContainerMeta}.
+ */
public class ContainerBindMount {
private String source;
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/model/ContainerDefinition.java b/dozentenmodul/src/main/java/org/openslx/dozmod/model/ContainerDefinition.java
index e29d8d9c..c7f96389 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/model/ContainerDefinition.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/model/ContainerDefinition.java
@@ -26,12 +26,12 @@ public class ContainerDefinition {
private static final String CONTAINER_META_FILE = "container_meta.json";
/**
- * The file to construct a real container, could be an dockerfile or a singularity recipe.
+ * The file to construct a real container image, could be an dockerfile or a singularity recipe.
*/
- public String containerDescription;
+ public String containerRecipe;
/**
- * Further container information.
+ * Further container information, see {@link ContainerMeta}.
*/
public ContainerMeta containerMeta;
@@ -51,20 +51,20 @@ public class ContainerDefinition {
* @param containerMeta container meta object
*/
public ContainerDefinition(File file, ContainerMeta containerMeta) {
- this.containerDescription = readContainerRecipe(file);
+ this.containerRecipe = readContainerRecipe(file);
this.containerMeta = containerMeta;
}
public String getDescription() {
- return containerDescription;
+ return containerRecipe;
}
- public void setDescription(String description) {
- containerDescription = description;
+ public void setContainerRecipe(String containerRecipe) {
+ this.containerRecipe = containerRecipe;
}
- public void setContainerDescription(byte[] containerDescription) {
- this.containerDescription = new String(containerDescription, StandardCharsets.UTF_8);
+ public void setContainerRecipe(byte[] rawContainerRecipe) {
+ this.containerRecipe = new String(rawContainerRecipe, StandardCharsets.UTF_8);
}
public void setContainerMeta(byte[] containerMeta) {
@@ -80,11 +80,17 @@ public class ContainerDefinition {
public DockerMetaDataDummy createVmMeta() {
- byte[] rawContainerDefinition = toByteBuffer().array();
- return new DockerMetaDataDummy(MetaDataCache.getOperatingSystems(), rawContainerDefinition,
- rawContainerDefinition.length);
+ byte[] rawContainerRecipe = toByteBuffer().array();
+ return new DockerMetaDataDummy(MetaDataCache.getOperatingSystems(), rawContainerRecipe,
+ rawContainerRecipe.length);
}
+ /**
+ * Utility function to create a {@link ContainerDefinition} object for a byte array downloaded from the server.
+ *
+ * @param rawTarData Downloaded tar.gz file from the server as a byte array.
+ * @return New object of ContainerDefinition.
+ */
public static ContainerDefinition fromByteArray(byte[] rawTarData) {
ContainerDefinition containerDef = new ContainerDefinition();
@@ -101,13 +107,13 @@ public class ContainerDefinition {
tis.read(rawData, 0, size);
if (entry.getName().equals(CONTAINER_FILE))
- containerDef.setContainerDescription(rawData);
+ containerDef.setContainerRecipe(rawData);
if (entry.getName().equals(CONTAINER_META_FILE))
containerDef.setContainerMeta(rawData);
}
} catch (IOException e) {
- e.printStackTrace();
+ LOGGER.error("Could not create a ContainerDefinition Object for rawTarData", e);
}
return containerDef;
@@ -128,7 +134,7 @@ public class ContainerDefinition {
Gson gson = new GsonBuilder().setPrettyPrinting().create();
TarArchiveUtil.tarPutFile(output, CONTAINER_META_FILE, gson.toJson(containerMeta));
- TarArchiveUtil.tarPutFile(output, CONTAINER_FILE, containerDescription);
+ TarArchiveUtil.tarPutFile(output, CONTAINER_FILE, containerRecipe);
output.close();
containerDef = ByteBuffer.wrap(baos.toByteArray());
@@ -150,17 +156,17 @@ public class ContainerDefinition {
} catch (IOException e) {
LOGGER.error("Could not read Container Recipe", e);
}
- return byteArrayToString(rawFile);
- }
-
- private String byteArrayToString(byte[] containerRecipe) {
- return new String(containerRecipe, StandardCharsets.UTF_8);
+ return new String(rawFile, StandardCharsets.UTF_8);
}
+ /**
+ * Saves containerRecipe and containerMeta at the provided location.
+ *
+ * @param destDir destination directory for containerRecipe and containerMeta.
+ */
public void saveLocal(File destDir) {
- writeFile(destDir, containerDescription, CONTAINER_FILE);
-
+ writeFile(destDir, containerRecipe, CONTAINER_FILE);
Gson gson = new GsonBuilder().setPrettyPrinting().create();
writeFile(destDir, gson.toJson(containerMeta), CONTAINER_META_FILE);
}
@@ -184,11 +190,10 @@ public class ContainerDefinition {
if (o == null || getClass() != o.getClass())
return false;
ContainerDefinition that = (ContainerDefinition) o;
- return containerDescription.equals(that.containerDescription) && containerMeta.equals(
- that.containerMeta);
+ return containerRecipe.equals(that.containerRecipe) && containerMeta.equals(that.containerMeta);
}
@Override public int hashCode() {
- return Objects.hash(containerDescription, containerMeta);
+ return Objects.hash(containerRecipe, containerMeta);
}
}
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/model/ContainerMeta.java b/dozentenmodul/src/main/java/org/openslx/dozmod/model/ContainerMeta.java
index 089cea69..c9cbd58e 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/model/ContainerMeta.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/model/ContainerMeta.java
@@ -1,7 +1,6 @@
package org.openslx.dozmod.model;
import java.util.ArrayList;
-import java.util.Collection;
import java.util.List;
import java.util.Objects;