summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorralph isenmann2020-11-04 12:32:57 +0100
committerralph isenmann2020-11-04 16:30:17 +0100
commitcf91780da6f3b28401c18ad66e8a01337261c092 (patch)
treef19093e4e7382980ee50a88fd8f6d7ddb27cfc71
parent[client] refactoring (diff)
downloadtutor-module-cf91780da6f3b28401c18ad66e8a01337261c092.tar.gz
tutor-module-cf91780da6f3b28401c18ad66e8a01337261c092.tar.xz
tutor-module-cf91780da6f3b28401c18ad66e8a01337261c092.zip
[client] FIX image update
- add copy contructor to ContainerDefinition, ContainerMeta, ContainerBindMount
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java61
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/model/ContainerBindMount.java6
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/model/ContainerDefinition.java13
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/model/ContainerMeta.java12
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;
}