summaryrefslogtreecommitdiffstats
path: root/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page
diff options
context:
space:
mode:
authorManuel Bentele2021-05-19 09:34:09 +0200
committerManuel Bentele2021-05-19 09:34:09 +0200
commitadf39b1279e5ed2d81ddf92df780c5b893dbbba1 (patch)
tree9d729e1441ffab0d91ebae2424b2a6aa69120dd6 /dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page
parent[build] Remove needless build settings in Maven's root configuration (diff)
parent[client] Remove start command pane on QEMU VM upload page (diff)
downloadtutor-module-adf39b1279e5ed2d81ddf92df780c5b893dbbba1.tar.gz
tutor-module-adf39b1279e5ed2d81ddf92df780c5b893dbbba1.tar.xz
tutor-module-adf39b1279e5ed2d81ddf92df780c5b893dbbba1.zip
Merge branch 'refactor/vm-config-transformation-logic'
Diffstat (limited to 'dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page')
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ContainerUploadPage.java11
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageMetaDataPage.java13
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageUploadPage.java68
3 files changed, 52 insertions, 40 deletions
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 b16a9785..c2db8554 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.vm.DockerMetaDataDummy;
+import org.openslx.virtualization.configuration.VirtualizationConfigurationDocker;
import javax.swing.*;
import javax.swing.event.ChangeEvent;
@@ -32,6 +32,7 @@ import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.File;
import java.io.IOException;
+import java.nio.ByteBuffer;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -253,7 +254,7 @@ public class ContainerUploadPage extends ContainerUploadPageLayout {
return true;
}
- private DockerMetaDataDummy createVmMeta() {
+ private VirtualizationConfigurationDocker createVirtualizationConfig() {
ContainerMeta containerMeta = containerDefinition.getContainerMeta();
containerMeta.setBuildContextMethod(getBuildContextMethod().ordinal());
@@ -275,7 +276,7 @@ public class ContainerUploadPage extends ContainerUploadPageLayout {
state.descriptionFile = getDummyFile();
break;
}
- return containerDefinition.createVmMeta();
+ return containerDefinition.createVirtualizationConfig();
}
/**
@@ -295,7 +296,7 @@ public class ContainerUploadPage extends ContainerUploadPageLayout {
// get the image name either auto filled by VmwareMetaData or by user
// get the image name from the image we are uploading a new version of
state.name = existingImage != null ? existingImage.getImageName() : txtImageName.getText();
- state.meta = createVmMeta();
+ state.virtualizationConfig = createVirtualizationConfig();
// -- create image to get uuid --
if (existingImage == null) {
@@ -315,7 +316,7 @@ public class ContainerUploadPage extends ContainerUploadPageLayout {
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;
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 b767cbd4..e6fcc783 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
@@ -13,8 +13,7 @@ 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.vm.DockerMetaDataDummy;
-import org.openslx.vm.QemuMetaData;
+import org.openslx.virtualization.configuration.VirtualizationConfigurationDocker;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
@@ -78,8 +77,7 @@ public class ImageMetaDataPage extends ImageMetaDataPageLayout {
} else if (state.selectedOs == null) {
cboOperatingSystem.setSelectedItem(null);
}
- sCommandCaption.setVisible(false);
- startCommandPane.setVisible(false);
+
chkIsTemplate.setSelected(state.isTemplate);
chkLicenseRestricted.setSelected(state.isRestricted);
reactToUserInput();
@@ -115,12 +113,7 @@ public class ImageMetaDataPage extends ImageMetaDataPageLayout {
return;
}
- if (state.meta instanceof QemuMetaData) {
- sCommandCaption.setVisible(true);
- startCommandPane.setVisible(true);
- }
-
- if (state.meta instanceof DockerMetaDataDummy) {
+ if (state.virtualizationConfig instanceof VirtualizationConfigurationDocker) {
// TODO we need Information about a OS in Container? Currently use "Other (32 Bit)" as default
lblOperatingSystem.setVisible(false);
cboOperatingSystem.setVisible(false);
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;