diff options
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.java | 49 |
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() { |