summaryrefslogtreecommitdiffstats
path: root/dozentenmodul/src/main/java/org
diff options
context:
space:
mode:
authorralph isenmann2020-09-16 15:19:02 +0200
committerralph isenmann2020-09-16 15:19:02 +0200
commit5f1287f8c90942aeeedc9365eefd949a8e147f06 (patch)
tree2cd7bd8be59a8416a1ef4de72aa4c4265d3db3b6 /dozentenmodul/src/main/java/org
parent[client] ImageDetailsWindow refactoring (diff)
downloadtutor-module-5f1287f8c90942aeeedc9365eefd949a8e147f06.tar.gz
tutor-module-5f1287f8c90942aeeedc9365eefd949a8e147f06.tar.xz
tutor-module-5f1287f8c90942aeeedc9365eefd949a8e147f06.zip
[client] Check for same ContainerDefinition
- check if some entrys in current ContainerDefinition changed, if not dont upload.
Diffstat (limited to 'dozentenmodul/src/main/java/org')
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java53
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/DockerfileUploadPage.java21
2 files changed, 63 insertions, 11 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 0ae01aa4..c0364d00 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
@@ -445,6 +445,10 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe
*/
public DockerfileUploadPage.ContainerMeta containerMeta;
+ public ContainerDefinition() {
+ containerMeta = new DockerfileUploadPage.ContainerMeta();
+ }
+
public String getDescription() {
return containerDescription;
}
@@ -523,6 +527,20 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe
return containerDef;
}
+
+ @Override public boolean equals(Object o) {
+ if (this == o)
+ return true;
+ if (o == null || getClass() != o.getClass())
+ return false;
+ ContainerDefinition that = (ContainerDefinition) o;
+ return containerDescription.equals(that.containerDescription) && containerMeta.equals(
+ that.containerMeta);
+ }
+
+ @Override public int hashCode() {
+ return Objects.hash(containerDescription, containerMeta);
+ }
}
private static void tarPutFile(TarOutputStream output, String fileName, String data) throws IOException
@@ -543,11 +561,12 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe
/**
* Uploads ByteBuffer data to satellite server and stores it in ImageVersion.VirtConfig
+ * for the given imageVersionId.
*
* @param imageVersionId Id of the image version, which will be updated.
* @param data New virtConfig to store in database.
*/
- private void saveContainerDef(final String imageVersionId, ByteBuffer data) {
+ private void uploadContainerDef(final String imageVersionId, ByteBuffer data) {
try {
ThriftManager.getSatClient()
@@ -746,7 +765,9 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe
}
}
- // TODO if image is container image upload also ContainerDefinition @link ContainerDefinition
+ // if image is container
+ // prepare to upload container definition to local satellite server.
+ // TODO
if(image.getVirtId().equals(TConst.VIRT_DOCKER))
saveContainerDefinition();
@@ -755,16 +776,21 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe
}
private void saveContainerDefinition() {
- containerDefinition.setDescription(txtContainerDescription.getText());
- containerDefinition.getContainerMeta().setImageName(txtContainerImageName.getText());
- containerDefinition.getContainerMeta().setRunOptions(txtContainerRun.getText());
- containerDefinition.getContainerMeta().mountUserDir(chkContainerMountUserDir.isSelected());
- containerDefinition.getContainerMeta().setUserMountPath(txtContainerMountUserDir.getText());
+ ContainerDefinition conDev = new ContainerDefinition();
- // TODO do this only if the containerDefinition has changed.
- saveContainerDef(image.versions.get(0).versionId,containerDefinition.toByteBuffer());
- LOGGER.info("Upload new DockerDefinition");
+ conDev.setDescription(txtContainerDescription.getText());
+
+ conDev.getContainerMeta().setImageName(txtContainerImageName.getText());
+ conDev.getContainerMeta().setRunOptions(txtContainerRun.getText());
+ conDev.getContainerMeta().mountUserDir(chkContainerMountUserDir.isSelected());
+ conDev.getContainerMeta().setUserMountPath(txtContainerMountUserDir.getText());
+
+ if(!conDev.equals(containerDefinition)) {
+ // TODO do this only if the containerDefinition has changed.
+ uploadContainerDef(image.versions.get(0).versionId,conDev.toByteBuffer());
+ LOGGER.info("Upload new DockerDefinition");
+ }
}
/**
@@ -930,6 +956,13 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe
lblVirtualizer.setText(TConst.VIRT_DOCKER);
showContainerTab();
+
+ if (image.versions.isEmpty()) {
+ LOGGER.info("Close Window because no ImageVersions available!");
+ dispose();
+ return;
+ }
+ // TODO if only a single version is created an the user deletes it, next line will out of bounce!
containerDefinition = ContainerDefinition.fromByteArray(loadContainerDef(image.versions.get(0)));
txtContainerDescription.setText(containerDefinition.getDescription());
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/DockerfileUploadPage.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/DockerfileUploadPage.java
index d009f43f..a922347e 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/DockerfileUploadPage.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/DockerfileUploadPage.java
@@ -24,6 +24,7 @@ import javax.swing.filechooser.FileFilter;
import java.awt.event.*;
import java.io.*;
import java.nio.charset.StandardCharsets;
+import java.util.Objects;
import java.util.zip.GZIPOutputStream;
public class DockerfileUploadPage extends ContainerUploadPageLayout {
@@ -171,7 +172,7 @@ public class DockerfileUploadPage extends ContainerUploadPageLayout {
* ContainerMeta is used to store container specific information.
* An object of this class will be serialized with gson to a json file.
*/
- public class ContainerMeta {
+ public static class ContainerMeta {
private String build_context_url;
@@ -229,6 +230,24 @@ public class DockerfileUploadPage extends ContainerUploadPageLayout {
public void setUserMountPath(String userMountPath) {
user_mount_path = userMountPath;
}
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o)
+ return true;
+ if (o == null || getClass() != o.getClass())
+ return false;
+ ContainerMeta that = (ContainerMeta) o;
+ return Objects.equals(build_context_url, that.build_context_url) && Objects.equals(image_name,
+ that.image_name) && Objects.equals(run_options, that.run_options) && Objects.equals(
+ mount_user_dir, that.mount_user_dir) && Objects.equals(user_mount_path,
+ that.user_mount_path);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(build_context_url, image_name, run_options, mount_user_dir, user_mount_path);
+ }
}
private void reactOnUserInput() {