summaryrefslogtreecommitdiffstats
path: root/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/ImageCreationWizard.java
diff options
context:
space:
mode:
Diffstat (limited to 'dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/ImageCreationWizard.java')
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/ImageCreationWizard.java49
1 files changed, 38 insertions, 11 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/ImageCreationWizard.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/ImageCreationWizard.java
index a51b2163..33ed8800 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/ImageCreationWizard.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/ImageCreationWizard.java
@@ -10,23 +10,24 @@ import org.openslx.dozmod.gui.helper.MessageType;
import org.openslx.dozmod.gui.helper.QuitNotification;
import org.openslx.dozmod.gui.helper.UiFeedback;
import org.openslx.dozmod.gui.wizard.page.*;
+import org.openslx.dozmod.model.ContainerDefinition;
import org.openslx.dozmod.state.UploadWizardState;
-import org.openslx.dozmod.thrift.Session;
-import org.openslx.dozmod.thrift.ThriftActions;
-import org.openslx.dozmod.thrift.ThriftError;
+import org.openslx.dozmod.thrift.*;
import org.openslx.dozmod.thrift.UploadInitiator.GotUploadTokenCallback;
import org.openslx.sat.thrift.version.Feature;
import org.openslx.thrifthelper.ThriftManager;
import org.openslx.util.QuickTimer;
import org.openslx.util.QuickTimer.Task;
+import org.openslx.virtualization.configuration.VirtualizationConfigurationDocker;
import javax.swing.*;
import java.awt.*;
+import java.io.IOException;
+import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.List;
-public class ImageCreationWizard extends Wizard
- implements UiFeedback, QuitNotification {
+public class ImageCreationWizard extends Wizard implements UiFeedback, QuitNotification {
/**
* Version for serialization.
@@ -37,6 +38,8 @@ public class ImageCreationWizard extends Wizard
private final UploadWizardState state = new UploadWizardState();
+ private final ContainerDefinition containerDefinition = new ContainerDefinition();
+
private List<WizardPage> currentPages = new ArrayList<>();
private boolean baseWritten = false;
@@ -53,8 +56,7 @@ public class ImageCreationWizard extends Wizard
if (Session.hasFeature(Feature.DOCKER_CONTAINER)) {
addPage(new ImageTypePage(this));
- }
- else {
+ } else {
doVmCreation();
}
}
@@ -81,8 +83,8 @@ public class ImageCreationWizard extends Wizard
public void doDockerCreation() {
cleanCurrent();
- currentPages.add(new ContainerUploadPage(this, state));
- currentPages.add(new ImageMetaDataPage(this, state));
+ currentPages.add(new ContainerUploadPage(this, state, containerDefinition));
+ currentPages.add(new ImageMetaDataPage(this, state, containerDefinition));
currentPages.add(new ImageCustomPermissionPage(this, state));
addPages();
}
@@ -105,6 +107,31 @@ public class ImageCreationWizard extends Wizard
}
@Override public boolean wantFinish() {
+
+ // In order for settings for a container to be recorded in the ImageMetaDataPage for the ContainerDefinition,
+ // the UploadInitiator was only allowed to be created here.
+ // TODO maybe also for VM-Images this is suitable
+ if (state.virtualizationConfig instanceof VirtualizationConfigurationDocker) {
+ // Create upload initiator that will manage requesting a token, hashing the
+ // file, connecting for upload...
+ if (state.upload == null) {
+ try {
+ state.upload = new UploadInitiator(state.uuid, state.diskFile,
+ ByteBuffer.wrap(state.virtualizationConfig.getConfigurationAsByteArray()));
+ } catch (WrappedException e) {
+ ThriftError.showMessage(this, LOGGER, e.exception, e.displayMessage);
+ return false;
+ } catch (IOException e) {
+ Gui.showMessageBox(this,
+ I18n.PAGE.getString("ImageUpload.Message.error.uploadInitiatorFailed"),
+ MessageType.ERROR, LOGGER, e);
+ return false;
+ }
+ }
+ // Start the hash check now
+ state.upload.startHashing();
+ }
+
// since we only started the upload and created a "blank" image entry
// we can here do all the sanity checks on the fields of UploadWizardState
// and react accordingly.
@@ -228,8 +255,8 @@ public class ImageCreationWizard extends Wizard
private ImageBaseWrite imageBaseWriteFromState() {
// build imageBaseWrite
return new ImageBaseWrite(state.name, state.description, state.selectedOs.getOsId(),
- state.virtualizationConfig.getVirtualizer().getId(), state.isTemplate, state.defaultPermissions,
- state.shareMode);
+ state.virtualizationConfig.getVirtualizer().getId(), state.isTemplate,
+ state.defaultPermissions, state.shareMode);
}
@Override protected final void doPrevious() {