diff options
Diffstat (limited to 'dozentenmodul/src/main/java/org/openslx/dozmod/util/ContainerWrapper.java')
-rw-r--r-- | dozentenmodul/src/main/java/org/openslx/dozmod/util/ContainerWrapper.java | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/util/ContainerWrapper.java b/dozentenmodul/src/main/java/org/openslx/dozmod/util/ContainerWrapper.java new file mode 100644 index 00000000..d7ce40a7 --- /dev/null +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/util/ContainerWrapper.java @@ -0,0 +1,80 @@ +package org.openslx.dozmod.util; + +import org.apache.log4j.Logger; +import org.openslx.dozmod.gui.Gui; +import org.openslx.dozmod.gui.helper.MessageType; +import org.openslx.virtualization.configuration.container.ContainerDefinition; + +import javax.swing.*; +import java.awt.*; +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; + +public class ContainerWrapper { + + private static final Logger LOGGER = Logger.getLogger(ContainerWrapper.class); + + + public static void unwrapContainer(File tmpDiskFile, String imageName, File destDir, + byte[] virtualizerConfig) { + ContainerDefinition conDef = ContainerDefinition.fromByteArray(virtualizerConfig); + String infoText; + try { + switch (conDef.getBuildContextMethod()) { + case FILE: + conDef.saveLocal(destDir); + showImageMessageInfo(destDir.getPath(), + "Dieses Image wird durch ein Dockerfile gebaut. Wechseln Sie in das Verzeichnis und bauen Sie das Image lokal (docker build)."); + + break; + case GIT_REPOSITORY: + Files.delete(tmpDiskFile.toPath()); + Files.delete(destDir.toPath()); + + showImageMessageInfo(conDef.getContainerMeta().getBuildContextUrl(), + "Dieses Image wird durch ein öffentliches Git-Repository gebaut. Das Image kann mit dem angezeigten Link lokal gebaut werden (docker build), zudem können die Image-Quellen über diesen betrachtet werden."); + break; + case IMAGE_REPO: + Files.delete(tmpDiskFile.toPath()); + Files.delete(destDir.toPath()); + + showImageMessageInfo( + conDef.getContainerMeta().getImageRepo(), + "Dieses Image ist lediglich eine Referenz auf ein öffentliches Image. Das Image kann mittels des angezeigten Links gepullt werden." + ); + break; + case DOCKER_TAR: + File destImage = new File(destDir.getAbsolutePath(), + VmWrapper.generateFilename(imageName, "tar")); + if (destImage.exists()) + Files.delete(destImage.toPath()); + Files.move(tmpDiskFile.toPath(),destImage.toPath()); + break; + } + + if (tmpDiskFile.exists()) + Files.delete(tmpDiskFile.toPath()); + } catch (IOException e) { + Gui.asyncMessageBox("Konnte temporäre Download Datei nicht löschen", MessageType.WARNING, + LOGGER, e); + } + } + + private static void showImageMessageInfo(String imageSourceUrl, String infoText) { + Gui.asyncExec(new Runnable() { + @Override public void run() { + Object oldDimension = UIManager.get("OptionPane.minimumSize"); + UIManager.put("OptionPane.minimumSize",new Dimension(400,200)); + JOptionPane.showMessageDialog(null, + ContainerUtils.createDownloadContainerInfo( + imageSourceUrl, + infoText + ), + "Container-Image Info", + JOptionPane.INFORMATION_MESSAGE); + UIManager.put("OptionPane.minimumSize",oldDimension); + } + }); + } +} |