summaryrefslogtreecommitdiffstats
path: root/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageUploadPage.java
diff options
context:
space:
mode:
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.java68
1 files changed, 43 insertions, 25 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 645587c6..9ade4587 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
@@ -8,6 +8,7 @@ import java.io.File;
import java.io.FileNotFoundException;
import java.io.FilenameFilter;
import java.io.IOException;
+import java.nio.ByteBuffer;
import java.util.List;
import javax.swing.JFileChooser;
@@ -35,9 +36,14 @@ 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.vm.VmMetaData;
-import org.openslx.vm.VmwareMetaData;
-import org.openslx.vm.VmMetaData.HardDisk;
+import org.openslx.virtualization.configuration.VirtualizationConfigurationVmware;
+import org.openslx.virtualization.configuration.data.ConfigurationDataDozModClientToDozModServer;
+import org.openslx.virtualization.configuration.logic.ConfigurationLogicDozModClientToDozModServer;
+import org.openslx.virtualization.configuration.transformation.TransformationException;
+import org.openslx.virtualization.configuration.VirtualizationConfiguration;
+import org.openslx.virtualization.configuration.VirtualizationConfiguration.HardDisk;
+import org.openslx.virtualization.configuration.VirtualizationConfigurationQemu;
+import org.openslx.virtualization.configuration.VirtualizationConfigurationVirtualBox;
import org.openslx.vm.disk.DiskImage;
import org.openslx.vm.disk.DiskImage.ImageFormat;
import org.openslx.vm.disk.DiskImageException;
@@ -59,12 +65,12 @@ public class ImageUploadPage extends ImageUploadPageLayout {
private ImageDetailsRead existingImage = null;
private final FileNameExtensionFilter allSupportedFilter;
- private final FileNameExtensionFilter vmxFilter = new FileNameExtensionFilter("VMware Virtual Machine",
- "vmx");
+ private final FileNameExtensionFilter vmxFilter = new FileNameExtensionFilter(
+ "VMware Virtual Machine", VirtualizationConfigurationVmware.FILE_NAME_EXTENSION);
private final FileNameExtensionFilter vboxFilter = new FileNameExtensionFilter(
- "VirtualBox Virtual Machine", "vbox");
+ "VirtualBox Virtual Machine", VirtualizationConfigurationVirtualBox.FILE_NAME_EXTENSION);
private final FileNameExtensionFilter qemuFilter = new FileNameExtensionFilter(
- "QEMU Virtual Machine", "xml");
+ "QEMU Virtual Machine", VirtualizationConfigurationQemu.FILE_NAME_EXTENSION);
private final FileNameExtensionFilter ovfFilter = new FileNameExtensionFilter(
"OVF Virtual Machine Format", "ovf");
@@ -104,9 +110,15 @@ public class ImageUploadPage extends ImageUploadPageLayout {
// initialize allSupportedFilter depending on whether multiple hypervisors
// are supported or not
if (Session.hasFeature(Feature.MULTIPLE_HYPERVISORS)) {
- allSupportedFilter = new FileNameExtensionFilter("All Supported", "vmx", "ovf", "vbox", "xml", "ova");
+ allSupportedFilter = new FileNameExtensionFilter("All Supported",
+ VirtualizationConfigurationVmware.FILE_NAME_EXTENSION,
+ VirtualizationConfigurationVirtualBox.FILE_NAME_EXTENSION,
+ VirtualizationConfigurationQemu.FILE_NAME_EXTENSION,
+ "ovf", "ova");
} else {
- allSupportedFilter = new FileNameExtensionFilter("All Supported", "vmx", "ovf", "ova");
+ allSupportedFilter = new FileNameExtensionFilter("All Supported",
+ VirtualizationConfigurationVmware.FILE_NAME_EXTENSION,
+ "ovf", "ova");
}
btnBrowseForImage.requestFocus();
}
@@ -203,9 +215,10 @@ public class ImageUploadPage extends ImageUploadPageLayout {
askForConversion(file);
return;
}
+
try {
// gets the metadata object of the selected VM depending on its type
- state.meta = VmMetaData.getInstance(MetaDataCache.getOperatingSystems(), file);
+ state.virtualizationConfig = VirtualizationConfiguration.getInstance(MetaDataCache.getOperatingSystems(), file);
} catch (IOException e) {
Gui.showMessageBox(this,
I18n.PAGE.getString("ImageUpload.Message.error.couldNotGetMetadata", file.getPath()),
@@ -214,22 +227,26 @@ public class ImageUploadPage extends ImageUploadPageLayout {
return;
}
- if (state.meta == null || state.meta.getDisplayName() == null) {
+ try {
+ // transforms (filters) the virtualization configuration
+ final ConfigurationLogicDozModClientToDozModServer uploadLogic = new ConfigurationLogicDozModClientToDozModServer();
+ uploadLogic.apply( state.virtualizationConfig, new ConfigurationDataDozModClientToDozModServer() );
+ } catch (TransformationException e) {
setErrorMessage(I18n.PAGE.getString("ImageUpload.WizardPage.errorMessage.invalidConfigFile"));
setPageComplete(false);
return;
}
- final String fileformat = state.meta.getVirtualizer().virtName;
+ final String virtualizerName = state.virtualizationConfig.getVirtualizer().getName();
// bail if multiple hypervisors are not supported
- if (!(state.meta instanceof VmwareMetaData) && !Session.hasFeature(Feature.MULTIPLE_HYPERVISORS)) {
+ if (!(state.virtualizationConfig instanceof VirtualizationConfigurationVmware) && !Session.hasFeature(Feature.MULTIPLE_HYPERVISORS)) {
setErrorMessage(I18n.PAGE.getString("ImageUpload.WizardPage.errorMessage.hypervisorNotSupported",
- fileformat));
+ virtualizerName));
setPageComplete(false);
return;
}
// check if the user somehow changed the type of the VM
- if (existingImage != null && !existingImage.virtId.equals(state.meta.getVirtualizer().virtId)) {
+ if (existingImage != null && !existingImage.virtId.equals(state.virtualizationConfig.getVirtualizer().getId())) {
Virtualizer existingImageVirtualizer = MetaDataCache.getVirtualizerById(existingImage.virtId);
String existingImageVirtualizerName = "<error>";
if (existingImageVirtualizer != null)
@@ -240,15 +257,15 @@ public class ImageUploadPage extends ImageUploadPageLayout {
return;
}
- List<HardDisk> hdds = state.meta.getHdds();
+ List<HardDisk> hdds = state.virtualizationConfig.getHdds();
if (hdds.size() == 0 || hdds.get(0).diskImage == null) {
- setErrorMessage(I18n.PAGE.getString("ImageUpload.WizardPage.errorMessage.noHDD", fileformat));
+ setErrorMessage(I18n.PAGE.getString("ImageUpload.WizardPage.errorMessage.noHDD", virtualizerName));
setPageComplete(false);
return;
}
if (hdds.size() > 1) {
setErrorMessage(
- I18n.PAGE.getString("ImageUpload.WizardPage.errorMessage.moreThanOneHDD", fileformat));
+ I18n.PAGE.getString("ImageUpload.WizardPage.errorMessage.moreThanOneHDD", virtualizerName));
setPageComplete(false);
return;
// Allow to continue!?
@@ -290,8 +307,9 @@ public class ImageUploadPage extends ImageUploadPageLayout {
}
// check if disk image format is supported by the hypervisor's supported disk image formats
- final List<ImageFormat> supportedImageFormats = state.meta.getSupportedImageFormats();
- if (!diskFormat.isSupportedbyVirtualizer(supportedImageFormats)) {
+ final List<ImageFormat> supportedImageFormats = state.virtualizationConfig.getVirtualizer()
+ .getSupportedImageFormats();
+ if (!diskFormat.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"));
@@ -300,7 +318,7 @@ public class ImageUploadPage extends ImageUploadPageLayout {
}
// Warn user about snapshot
- if (diskImageIsSnapshot || state.meta.isMachineSnapshot()) {
+ if (diskImageIsSnapshot || state.virtualizationConfig.isMachineSnapshot()) {
Gui.showMessageBox(I18n.PAGE.getString("ImageUpload.Message.warning.diskImageSnapshot",
Branding.getServiceName()), MessageType.WARNING, null, null);
setErrorMessage(I18n.PAGE.getString("ImageUpload.WizardPage.errorMessage.diskImageSnapshot"));
@@ -324,11 +342,11 @@ public class ImageUploadPage extends ImageUploadPageLayout {
// User didn't enter a name yet or didn't change it -> set
String imageName = txtImageName.getText();
if (imageName.isEmpty() || imageName.equals(lastDetectedName)) {
- txtImageName.setText(state.meta.getDisplayName());
+ txtImageName.setText(state.virtualizationConfig.getDisplayName());
}
}
- lastDetectedName = state.meta.getDisplayName();
- state.detectedOs = state.meta.getOs();
+ lastDetectedName = state.virtualizationConfig.getDisplayName();
+ state.detectedOs = state.virtualizationConfig.getOs();
txtImageFile.setText(file.getAbsolutePath());
// let the user know the upload is ready
setErrorMessage(null);
@@ -393,7 +411,7 @@ public class ImageUploadPage extends ImageUploadPageLayout {
if (state.upload == null) {
try {
state.upload = new UploadInitiator(state.uuid, state.diskFile,
- state.meta.getFilteredDefinition());
+ ByteBuffer.wrap(state.virtualizationConfig.getConfigurationAsByteArray()));
} catch (WrappedException e) {
ThriftError.showMessage(this, LOGGER, e.exception, e.displayMessage);
return false;