diff options
Diffstat (limited to 'dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageUploadPage.java')
-rw-r--r-- | dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageUploadPage.java | 41 |
1 files changed, 27 insertions, 14 deletions
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); |