diff options
Diffstat (limited to 'dozentenmodul/src/main/java/org')
11 files changed, 83 insertions, 55 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/VirtConfigEditorWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/VirtConfigEditorWindow.java index cb207d34..8ea5372b 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/VirtConfigEditorWindow.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/VirtConfigEditorWindow.java @@ -24,9 +24,9 @@ import org.openslx.dozmod.thrift.ImageDetailsActions; import org.openslx.dozmod.thrift.ImageDetailsActions.VirtConfCallback; import org.openslx.dozmod.thrift.cache.MetaDataCache; import org.openslx.util.XmlHelper; -import org.openslx.util.vm.VboxMetaData; -import org.openslx.util.vm.VmMetaData; -import org.openslx.util.vm.VmwareConfig; +import org.openslx.vm.VboxMetaData; +import org.openslx.vm.VmMetaData; +import org.openslx.vm.VmwareConfig; @SuppressWarnings("serial") public class VirtConfigEditorWindow extends VirtConfigEditorWindowLayout implements UiFeedback { diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/VirtDropDownConfigEditorWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/VirtDropDownConfigEditorWindow.java index b6584b8e..200a9f0e 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/VirtDropDownConfigEditorWindow.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/VirtDropDownConfigEditorWindow.java @@ -20,13 +20,13 @@ import org.openslx.dozmod.thrift.cache.MetaDataCache; import org.openslx.sat.thrift.version.Feature; import org.openslx.util.ThriftUtil; import org.openslx.util.XmlHelper; -import org.openslx.util.vm.VboxMetaData; -import org.openslx.util.vm.VmMetaData; -import org.openslx.util.vm.VmMetaData.DDAcceleration; -import org.openslx.util.vm.VmMetaData.EthernetDevType; -import org.openslx.util.vm.VmMetaData.HWVersion; -import org.openslx.util.vm.VmMetaData.SoundCardType; -import org.openslx.util.vm.VmMetaData.UsbSpeed; +import org.openslx.vm.VboxMetaData; +import org.openslx.vm.VmMetaData; +import org.openslx.vm.VmMetaData.DDAcceleration; +import org.openslx.vm.VmMetaData.EthernetDevType; +import org.openslx.vm.VmMetaData.HWVersion; +import org.openslx.vm.VmMetaData.SoundCardType; +import org.openslx.vm.VmMetaData.UsbSpeed; @SuppressWarnings("serial") public class VirtDropDownConfigEditorWindow extends VirtDropDownConfigEditorWindowLayout diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/VirtDropDownConfigEditorWindowLayout.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/VirtDropDownConfigEditorWindowLayout.java index 1703e77e..bddf759e 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/VirtDropDownConfigEditorWindowLayout.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/VirtDropDownConfigEditorWindowLayout.java @@ -25,11 +25,11 @@ import org.openslx.dozmod.gui.helper.GridManager; import org.openslx.dozmod.gui.helper.I18n; import org.openslx.dozmod.thrift.Session; import org.openslx.sat.thrift.version.Feature; -import org.openslx.util.vm.VmMetaData.DDAcceleration; -import org.openslx.util.vm.VmMetaData.EthernetDevType; -import org.openslx.util.vm.VmMetaData.HWVersion; -import org.openslx.util.vm.VmMetaData.SoundCardType; -import org.openslx.util.vm.VmMetaData.UsbSpeed; +import org.openslx.vm.VmMetaData.DDAcceleration; +import org.openslx.vm.VmMetaData.EthernetDevType; +import org.openslx.vm.VmMetaData.HWVersion; +import org.openslx.vm.VmMetaData.SoundCardType; +import org.openslx.vm.VmMetaData.UsbSpeed; @SuppressWarnings("serial") public class VirtDropDownConfigEditorWindowLayout extends JDialog { diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ContainerUploadPage.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ContainerUploadPage.java index e7e7adf5..1954db28 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ContainerUploadPage.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ContainerUploadPage.java @@ -20,7 +20,7 @@ import org.openslx.dozmod.thrift.ThriftError; import org.openslx.dozmod.thrift.UploadInitiator; import org.openslx.dozmod.thrift.WrappedException; import org.openslx.dozmod.thrift.cache.MetaDataCache; -import org.openslx.util.vm.DockerMetaDataDummy; +import org.openslx.vm.DockerMetaDataDummy; import javax.swing.*; import javax.swing.event.ChangeEvent; diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageMetaDataPage.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageMetaDataPage.java index a20ef8b6..19df525a 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageMetaDataPage.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageMetaDataPage.java @@ -14,8 +14,8 @@ import org.openslx.dozmod.thrift.cache.MetaDataCache; import org.openslx.thrifthelper.Comparators; import org.openslx.util.QuickTimer; import org.openslx.util.QuickTimer.Task; -import org.openslx.util.vm.DockerMetaDataDummy; -import org.openslx.util.vm.QemuMetaData; +import org.openslx.vm.DockerMetaDataDummy; +import org.openslx.vm.QemuMetaData; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageUploadPage.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageUploadPage.java index c764bee3..68bcbd50 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageUploadPage.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageUploadPage.java @@ -35,12 +35,12 @@ import org.openslx.dozmod.thrift.WrappedException; import org.openslx.dozmod.thrift.cache.MetaDataCache; import org.openslx.sat.thrift.version.Feature; import org.openslx.thrifthelper.TConst; -import org.openslx.util.vm.DiskImage; -import org.openslx.util.vm.DiskImage.ImageFormat; -import org.openslx.util.vm.DiskImage.UnknownImageFormatException; -import org.openslx.util.vm.VmMetaData; -import org.openslx.util.vm.VmMetaData.HardDisk; -import org.openslx.util.vm.VmwareMetaData; +import org.openslx.vm.VmMetaData; +import org.openslx.vm.VmwareMetaData; +import org.openslx.vm.VmMetaData.HardDisk; +import org.openslx.vm.disk.DiskImage; +import org.openslx.vm.disk.DiskImage.ImageFormat; +import org.openslx.vm.disk.DiskImageException; /** * Page for uploading a new image. @@ -257,10 +257,14 @@ public class ImageUploadPage extends ImageUploadPageLayout { File vmBaseDirectory = file.getParentFile(); vmDiskFileInfo = new File(vmBaseDirectory, hdds.get(0).diskImage); } - DiskImage diskImage; - List<DiskImage.ImageFormat> supportedImageFormats = state.meta.getSupportedImageFormats(); + + final DiskImage diskImage; + final boolean diskImageIsSnapshot; + final boolean diskImageIsStandalone; try { - diskImage = new DiskImage(vmDiskFileInfo, supportedImageFormats); + diskImage = DiskImage.newInstance(vmDiskFileInfo); + diskImageIsSnapshot = diskImage.isSnapshot(); + diskImageIsStandalone = diskImage.isStandalone(); } catch (FileNotFoundException e) { setErrorMessage(I18n.PAGE.getString("ImageUpload.WizardPage.errorMessage.diskImageNotFound", vmDiskFileInfo.getName())); @@ -271,7 +275,7 @@ public class ImageUploadPage extends ImageUploadPageLayout { vmDiskFileInfo.getName())); setPageComplete(false); return; - } catch (UnknownImageFormatException e) { + } catch (DiskImageException e) { setErrorMessage( I18n.PAGE.getString("ImageUpload.WizardPage.errorMessage.diskImageHasUnknownFormat", vmDiskFileInfo.getName())); @@ -279,19 +283,28 @@ public class ImageUploadPage extends ImageUploadPageLayout { setPageComplete(false); return; } + + // check if disk image format is supported by the hypervisor's supported disk image formats + final List<ImageFormat> supportedImageFormats = state.meta.getSupportedImageFormats(); + if (!diskImage.getFormat().isSupportedbyVirtualizer( supportedImageFormats )) { + Gui.showMessageBox(I18n.PAGE.getString("ImageUpload.Message.warning.diskImageNotSupportedByHypervisor", + Branding.getServiceName()), MessageType.WARNING, null, null); + setErrorMessage(I18n.PAGE.getString("ImageUpload.WizardPage.errorMessage.diskImageNotSupportedByHypervisor")); + setPageComplete(false); + return; + } // Warn user about snapshot - if (diskImage.isSnapshot || state.meta.isMachineSnapshot()) { + if (diskImageIsSnapshot || state.meta.isMachineSnapshot()) { Gui.showMessageBox(I18n.PAGE.getString("ImageUpload.Message.warning.diskImageSnapshot", Branding.getServiceName()), MessageType.WARNING, null, null); setErrorMessage(I18n.PAGE.getString("ImageUpload.WizardPage.errorMessage.diskImageSnapshot")); setPageComplete(false); return; } - if (!diskImage.isStandalone) { + if (!diskImageIsStandalone) { Gui.showMessageBox( - I18n.PAGE.getString("ImageUpload.Message.warning.diskImageStandalone", - diskImage.subFormat, Branding.getApplicationName()), + I18n.PAGE.getString("ImageUpload.Message.warning.diskImageStandalone", Branding.getApplicationName()), MessageType.WARNING, null, null); setErrorMessage(I18n.PAGE.getString("ImageUpload.WizardPage.errorMessage.diskImageStandalone")); setPageComplete(false); 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 4f9be05e..35ef765d 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/model/ContainerDefinition.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/model/ContainerDefinition.java @@ -9,8 +9,8 @@ import org.kamranzafar.jtar.TarInputStream; import org.kamranzafar.jtar.TarOutputStream; import org.openslx.dozmod.thrift.cache.MetaDataCache; import org.openslx.dozmod.util.TarArchiveUtil; -import org.openslx.util.vm.DockerMetaDataDummy; -import org.openslx.util.vm.UnsupportedVirtualizerFormatException; +import org.openslx.vm.DockerMetaDataDummy; +import org.openslx.vm.UnsupportedVirtualizerFormatException; import java.io.*; import java.nio.ByteBuffer; diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/state/UploadWizardState.java b/dozentenmodul/src/main/java/org/openslx/dozmod/state/UploadWizardState.java index beea1a74..1485943a 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/state/UploadWizardState.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/state/UploadWizardState.java @@ -10,7 +10,7 @@ import org.openslx.bwlp.thrift.iface.ShareMode; import org.openslx.dozmod.gui.wizard.WizardPage; import org.openslx.dozmod.thrift.Session; import org.openslx.dozmod.thrift.UploadInitiator; -import org.openslx.util.vm.VmMetaData; +import org.openslx.vm.VmMetaData; public class UploadWizardState { // -- Objects of the GUI itself -- diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/ThriftActions.java b/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/ThriftActions.java index ab3db38b..7d0fde5f 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/ThriftActions.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/ThriftActions.java @@ -4,7 +4,6 @@ import java.awt.Frame; import java.awt.Window; import java.io.File; import java.io.FileNotFoundException; -import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; @@ -19,7 +18,6 @@ import org.apache.thrift.transport.TTransportException; import org.openslx.bwlp.thrift.iface.*; import org.openslx.bwlp.thrift.iface.SatelliteServer.Client; import org.openslx.dozmod.App; -import org.openslx.dozmod.Branding; import org.openslx.dozmod.Config; import org.openslx.dozmod.Config.SavedSession; import org.openslx.dozmod.authentication.Authenticator.AuthenticationData; @@ -40,13 +38,10 @@ import org.openslx.dozmod.thrift.cache.UserCache; import org.openslx.dozmod.util.FormatHelper; import org.openslx.dozmod.util.ImageWrapper; import org.openslx.dozmod.util.VmWrapper; -import org.openslx.dozmod.util.VmWrapper.MetaDataMissingException; import org.openslx.sat.thrift.version.Version; import org.openslx.thrifthelper.ThriftManager; import org.openslx.util.QuickTimer; import org.openslx.util.QuickTimer.Task; -import org.openslx.util.vm.DiskImage; -import org.openslx.util.vm.DiskImage.UnknownImageFormatException; public class ThriftActions { diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/util/ImageWrapper.java b/dozentenmodul/src/main/java/org/openslx/dozmod/util/ImageWrapper.java index 05ba40bd..8891bbac 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/util/ImageWrapper.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/util/ImageWrapper.java @@ -7,7 +7,8 @@ import org.openslx.dozmod.gui.helper.I18n; import org.openslx.dozmod.gui.helper.MessageType; import org.openslx.dozmod.model.ContainerDefinition; import org.openslx.thrifthelper.TConst; -import org.openslx.util.vm.DiskImage; +import org.openslx.vm.disk.DiskImage; +import org.openslx.vm.disk.DiskImageException; import java.io.File; import java.io.IOException; @@ -42,6 +43,7 @@ public class ImageWrapper { DiskImage diskImage = null; String ext = virtualizerId; + boolean imageIsCompressed = false; // unwrap each image individually // TODO In future maybe this is a check to distinguish between VM-Image and Container Image @@ -60,16 +62,22 @@ public class ImageWrapper { } else { try { - diskImage = new DiskImage(tmpDiskFile); - } catch (IOException | DiskImage.UnknownImageFormatException e) { + diskImage = DiskImage.newInstance(tmpDiskFile); + } catch (IOException | DiskImageException e) { LOGGER.warn("Could not open downloaded image for analyze step", e); } if (diskImage != null) { - if (diskImage.format != null) { - ext = diskImage.format.extension; + + ext = diskImage.getFormat().getExtension(); + + try { + imageIsCompressed = diskImage.isCompressed(); + } catch (DiskImageException e) { + LOGGER.warn("Could not analyze if image is compressed", e); } - if (diskImage.isCompressed) { + + if (imageIsCompressed) { Gui.asyncMessageBox( I18n.THRIFT.getString("ThriftActions.Message.warning.diskImageCompressed", diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/util/VmWrapper.java b/dozentenmodul/src/main/java/org/openslx/dozmod/util/VmWrapper.java index 3f3b9fac..d36384bc 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/util/VmWrapper.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/util/VmWrapper.java @@ -24,12 +24,14 @@ import org.openslx.dozmod.gui.Gui; import org.openslx.dozmod.gui.helper.MessageType; import org.openslx.dozmod.thrift.cache.MetaDataCache; import org.openslx.thrifthelper.TConst; -import org.openslx.util.vm.DiskImage; -import org.openslx.util.vm.QemuMetaData; -import org.openslx.util.vm.VboxMetaData; -import org.openslx.util.vm.VmMetaData; -import org.openslx.util.vm.VmMetaData.UsbSpeed; -import org.openslx.util.vm.VmwareMetaData; +import org.openslx.vm.QemuMetaData; +import org.openslx.vm.VboxMetaData; +import org.openslx.vm.VmMetaData; +import org.openslx.vm.VmwareMetaData; +import org.openslx.vm.VmMetaData.UsbSpeed; +import org.openslx.vm.disk.DiskImage; +import org.openslx.vm.disk.DiskImageException; +import org.openslx.vm.disk.DiskImageVmdk; public class VmWrapper { @@ -45,7 +47,17 @@ public class VmWrapper { if (!TConst.VIRT_VMWARE.equals(virtualizerId)) { throw new MetaDataMissingException(); } - machineDescription = getFallbackVmx(diskImageInfo); + + if (diskImageInfo instanceof DiskImageVmdk) { + final DiskImageVmdk vmdkImageInfo = DiskImageVmdk.class.cast( diskImageInfo ); + try { + machineDescription = VmWrapper.getFallbackVmx(vmdkImageInfo); + } catch (DiskImageException e) { + throw new MetaDataMissingException(); + } + } else { + throw new MetaDataMissingException(); + } } // Handle machine description to generate configuration file VmMetaData<?, ?, ?, ?, ?> vmMeta = VmMetaData.getInstance(MetaDataCache.getOperatingSystems(), @@ -126,9 +138,9 @@ public class VmWrapper { FileUtils.writeByteArrayToFile(vmFile, vmMeta.getFilteredDefinitionArray()); } - private static byte[] getFallbackVmx(DiskImage diskImageInfo) throws IOException { + private static byte[] getFallbackVmx(DiskImageVmdk diskImageInfo) throws IOException, DiskImageException { String vmx = ResourceLoader.getTextFile("/txt/vmx_template"); - return vmx.replace("%VM_HW_VERSION%", Integer.toString(diskImageInfo.hwVersion)).getBytes( + return vmx.replace("%VM_HW_VERSION%", Integer.toString(diskImageInfo.getHwVersion())).getBytes( StandardCharsets.UTF_8); } |