diff options
author | ralph isenmann | 2020-11-04 12:32:57 +0100 |
---|---|---|
committer | ralph isenmann | 2020-11-04 16:30:17 +0100 |
commit | cf91780da6f3b28401c18ad66e8a01337261c092 (patch) | |
tree | f19093e4e7382980ee50a88fd8f6d7ddb27cfc71 /dozentenmodul/src/main | |
parent | [client] refactoring (diff) | |
download | tutor-module-cf91780da6f3b28401c18ad66e8a01337261c092.tar.gz tutor-module-cf91780da6f3b28401c18ad66e8a01337261c092.tar.xz tutor-module-cf91780da6f3b28401c18ad66e8a01337261c092.zip |
[client] FIX image update
- add copy contructor to ContainerDefinition, ContainerMeta, ContainerBindMount
Diffstat (limited to 'dozentenmodul/src/main')
4 files changed, 55 insertions, 37 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 8dd97bda..1d769089 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 @@ -1,40 +1,16 @@ package org.openslx.dozmod.gui.window; -import java.awt.*; -import java.awt.event.*; -import java.nio.ByteBuffer; -import java.util.*; -import java.util.List; - -import javax.swing.AbstractAction; -import javax.swing.JComponent; -import javax.swing.JFrame; -import javax.swing.JMenuItem; -import javax.swing.JOptionPane; -import javax.swing.KeyStroke; -import javax.swing.ListSelectionModel; -import javax.swing.SwingUtilities; - import org.apache.log4j.Logger; import org.apache.thrift.TException; -import org.openslx.bwlp.thrift.iface.ImageBaseWrite; -import org.openslx.bwlp.thrift.iface.ImageDetailsRead; -import org.openslx.bwlp.thrift.iface.ImagePermissions; -import org.openslx.bwlp.thrift.iface.ImageSummaryRead; -import org.openslx.bwlp.thrift.iface.ImageVersionDetails; -import org.openslx.bwlp.thrift.iface.LectureSummary; -import org.openslx.bwlp.thrift.iface.OperatingSystem; -import org.openslx.bwlp.thrift.iface.ShareMode; -import org.openslx.bwlp.thrift.iface.UserInfo; -import org.openslx.bwlp.thrift.iface.Virtualizer; +import org.openslx.bwlp.thrift.iface.*; import org.openslx.dozmod.Branding; import org.openslx.dozmod.gui.Gui; import org.openslx.dozmod.gui.MainWindow; import org.openslx.dozmod.gui.changemonitor.AbstractControlWrapper; import org.openslx.dozmod.gui.changemonitor.DialogChangeMonitor; import org.openslx.dozmod.gui.changemonitor.DialogChangeMonitor.TextNotEmptyConstraint; -import org.openslx.dozmod.gui.helper.*; import org.openslx.dozmod.gui.helper.PopupMenu; +import org.openslx.dozmod.gui.helper.*; import org.openslx.dozmod.gui.window.UserListWindow.UserAddedCallback; import org.openslx.dozmod.gui.window.layout.ImageDetailsWindowLayout; import org.openslx.dozmod.gui.wizard.ImageUpdateWizard; @@ -63,6 +39,13 @@ import org.openslx.util.QuickTimer.Task; import org.openslx.util.ThriftUtil; import org.openslx.util.Util; +import javax.swing.*; +import java.awt.*; +import java.awt.event.*; +import java.nio.ByteBuffer; +import java.util.List; +import java.util.*; + /** * Window for displaying and editing the details of an image. */ @@ -623,18 +606,28 @@ import org.openslx.util.Util; return true; } + /** + * If the user make changes and saves it this method will be executed. + * It makes a deep copy of the current containerDefinition to get all settings. + * After that, every user setting is set in that copy-object. + * If the copy-object and containerDefinition differ, the new settings will be uploaded. + */ private void saveContainerDefinition() { + // TODO do I really need this check? Maybe just get every setting and upload it. - ContainerDefinition conDev = new ContainerDefinition(); + ContainerDefinition newConDev = new ContainerDefinition(containerDefinition); - conDev.setContainerRecipe(txtContainerRecipe.getText()); + if (newConDev.getBuildContextMethod() == ContainerBuildContextMethod.FILE) { + newConDev.setContainerRecipe(txtContainerRecipe.getText()); + } + // currently no update of the git url allowed - conDev.getContainerMeta().setImageName(txtContainerImageName.getText()); - conDev.getContainerMeta().setRunOptions(txtContainerRun.getText()); - conDev.getContainerMeta().setBindMountConfig(bindMountConfigurator.getData()); + newConDev.getContainerMeta().setImageName(txtContainerImageName.getText()); + newConDev.getContainerMeta().setRunOptions(txtContainerRun.getText()); + newConDev.getContainerMeta().setBindMountConfig(bindMountConfigurator.getData()); - if (!conDev.equals(containerDefinition)) { - uploadContainerDef(image.versions.get(0).versionId, conDev.toByteBuffer()); + if (!newConDev.equals(containerDefinition)) { + uploadContainerDef(image.versions.get(0).versionId, newConDev.toByteBuffer()); LOGGER.info("Upload new DockerDefinition"); } } @@ -816,7 +809,7 @@ import org.openslx.util.Util; switch (method) { case FILE: - txtContainerRecipe.setText(containerDefinition.getDescription()); + txtContainerRecipe.setText(containerDefinition.getContainerRecipe()); break; case GIT_REPOSITORY: txtContainerRecipe.setText(containerMeta.getBuildContextUrl()); 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 9f6261f0..84449bad 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/model/ContainerBindMount.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/model/ContainerBindMount.java @@ -16,6 +16,12 @@ public class ContainerBindMount { public ContainerBindMount() { } + public ContainerBindMount(String source, String target, String options) { + this.source = source; + this.target = target; + this.options = options; + } + public String getSource() { return 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 c7f96389..a5c24534 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/model/ContainerDefinition.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/model/ContainerDefinition.java @@ -28,7 +28,7 @@ public class ContainerDefinition { /** * The file to construct a real container image, could be an dockerfile or a singularity recipe. */ - public String containerRecipe; + public String containerRecipe = ""; /** * Further container information, see {@link ContainerMeta}. @@ -39,6 +39,11 @@ public class ContainerDefinition { containerMeta = new ContainerMeta(); } + public ContainerDefinition(ContainerDefinition containerDef) { + containerRecipe = String.valueOf(containerDef.getContainerRecipe()); + containerMeta = new ContainerMeta(containerDef.getContainerMeta()); + } + public ContainerDefinition(ContainerMeta containerMeta) { this.containerMeta = containerMeta; } @@ -55,7 +60,7 @@ public class ContainerDefinition { this.containerMeta = containerMeta; } - public String getDescription() { + public String getContainerRecipe() { return containerRecipe; } @@ -184,6 +189,10 @@ public class ContainerDefinition { } } + public ContainerBuildContextMethod getBuildContextMethod() { + return ContainerBuildContextMethod.fromInt(containerMeta.getBuildContextMethod()); + } + @Override public boolean equals(Object o) { if (this == o) return true; 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 c9cbd58e..32818acf 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/model/ContainerMeta.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/model/ContainerMeta.java @@ -14,7 +14,7 @@ public class ContainerMeta { private String build_context_url; private String image_name; private String run_options; - private List<ContainerBindMount> bind_mount_config; + private List<ContainerBindMount> bind_mount_config = new ArrayList<>(); public ContainerMeta() { @@ -25,6 +25,16 @@ public class ContainerMeta { bind_mount_config = new ArrayList<>(); } + public ContainerMeta(ContainerMeta containerMeta) { + build_context_method = containerMeta.build_context_method; + build_context_url = containerMeta.build_context_url; + image_name = containerMeta.image_name; + run_options = containerMeta.run_options; + for (ContainerBindMount bm : containerMeta.bind_mount_config) + bind_mount_config.add(new ContainerBindMount(bm.getSource(), bm.getTarget(), bm.getOptions())); + + } + public int getBuildContextMethod() { return build_context_method; } |