diff options
| author | ralph isenmann | 2020-09-16 15:19:02 +0200 |
|---|---|---|
| committer | ralph isenmann | 2020-09-16 15:19:02 +0200 |
| commit | 5f1287f8c90942aeeedc9365eefd949a8e147f06 (patch) | |
| tree | 2cd7bd8be59a8416a1ef4de72aa4c4265d3db3b6 /dozentenmodul/src/main/java | |
| parent | [client] ImageDetailsWindow refactoring (diff) | |
| download | tutor-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')
| -rw-r--r-- | dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java | 53 | ||||
| -rw-r--r-- | dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/DockerfileUploadPage.java | 21 |
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() { |
