diff options
author | Jonathan Bauer | 2018-04-20 15:03:40 +0200 |
---|---|---|
committer | Jonathan Bauer | 2018-04-20 15:03:40 +0200 |
commit | 89b168ba08b4c0931de123ce0033469e241ee5f2 (patch) | |
tree | cfc17686edebdc4c3331f27af391f16e1daaeaa8 /dozentenmodul/src/main/java/org/openslx | |
parent | [client] formatting (diff) | |
download | tutor-module-89b168ba08b4c0931de123ce0033469e241ee5f2.tar.gz tutor-module-89b168ba08b4c0931de123ce0033469e241ee5f2.tar.xz tutor-module-89b168ba08b4c0931de123ce0033469e241ee5f2.zip |
[client] respect Feature.MULTIPLE_HYPERVISOR
Diffstat (limited to 'dozentenmodul/src/main/java/org/openslx')
-rw-r--r-- | dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageUploadPage.java | 38 |
1 files changed, 25 insertions, 13 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 cb24d846..09b73111 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 @@ -23,14 +23,15 @@ import org.openslx.dozmod.gui.helper.QFileChooser; import org.openslx.dozmod.gui.wizard.Wizard; import org.openslx.dozmod.gui.wizard.layout.ImageUploadPageLayout; 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.UploadInitiator; import org.openslx.dozmod.thrift.WrappedException; import org.openslx.dozmod.thrift.cache.MetaDataCache; +import org.openslx.sat.thrift.version.Feature; import org.openslx.util.vm.DiskImage; import org.openslx.util.vm.DiskImage.UnknownImageFormatException; -import org.openslx.util.vm.QemuMetaData; import org.openslx.util.vm.VboxMetaData; import org.openslx.util.vm.VmMetaData; import org.openslx.util.vm.VmMetaData.HardDisk; @@ -48,14 +49,11 @@ public class ImageUploadPage extends ImageUploadPageLayout { private String lastDetectedName = null; private ImageDetailsRead existingImage = null; - private final FileNameExtensionFilter allSupportedFilter = new FileNameExtensionFilter("All Supported", - "vmx", "vbox", "qcow", "qcow2"); + private final FileNameExtensionFilter allSupportedFilter; private final FileNameExtensionFilter vmxFilter = new FileNameExtensionFilter("VMware Virtual Machine", "vmx"); private final FileNameExtensionFilter vboxFilter = new FileNameExtensionFilter( "VirtualBox Virtual Machine", "vbox"); - private final FileNameExtensionFilter qemuFilter = new FileNameExtensionFilter("Qemu Virtual Machine", - "qcow2", "qcow"); public ImageUploadPage(Wizard wizard, UploadWizardState uploadWizardState, final ImageDetailsRead existingImage) { @@ -87,7 +85,13 @@ public class ImageUploadPage extends ImageUploadPageLayout { browseForVm(); } }); - + // initialize allSupportedFilter depending on whether multiple hypervisors + // are supported or not + if (Session.hasFeature(Feature.MULTIPLE_HYPERVISORS)) { + allSupportedFilter = new FileNameExtensionFilter("All Supported", "vmx", "vbox"); + } else { + allSupportedFilter = new FileNameExtensionFilter("All Supported", "vmx", "vbox"); + } btnBrowseForImage.requestFocus(); } @@ -95,8 +99,9 @@ public class ImageUploadPage extends ImageUploadPageLayout { QFileChooser fc = new QFileChooser(Config.getUploadPath(), false); fc.setAcceptAllFileFilterUsed(false); fc.addChoosableFileFilter(vmxFilter); - fc.addChoosableFileFilter(vboxFilter); - fc.addChoosableFileFilter(qemuFilter); + if (Session.hasFeature(Feature.MULTIPLE_HYPERVISORS)) { + fc.addChoosableFileFilter(vboxFilter); + } fc.addChoosableFileFilter(allSupportedFilter); fc.setFileFilter(allSupportedFilter); // differentiate between existing and new VMs @@ -133,12 +138,19 @@ public class ImageUploadPage extends ImageUploadPageLayout { String fileformat = "Konfigurations"; if (state.meta instanceof VmwareMetaData) { fileformat = "vmx"; - } else if (state.meta instanceof VboxMetaData) { - fileformat = "vbox"; - } else if (state.meta instanceof QemuMetaData) { - fileformat = "qcow"; + } else { + // bail if multiple hypervisors are not supported + if (!Session.hasFeature(Feature.MULTIPLE_HYPERVISORS)) { + setErrorMessage("Der Hypervisor der gewählten VM (" + state.meta.getVirtualizer().virtName + + ") wird nicht unterstützt."); + setPageComplete(false); + return; + } + if (state.meta instanceof VboxMetaData) { + fileformat = "vbox"; + } } - // check if the guy somehow changed the type of the VM + // check if the user somehow changed the type of the VM if (existingImage != null && existingImage.virtId != state.meta.getVirtualizer().virtId) { Virtualizer existingImageVirtualizer = MetaDataCache.getVirtualizerById(existingImage.virtId); String existingImageVirtualizerName = "<error>"; |