From 44e974cc175b61f46ef5fd588b03a85ace15dfed Mon Sep 17 00:00:00 2001 From: Manuel Bentele Date: Fri, 23 Apr 2021 17:30:37 +0200 Subject: [client,server] Refactors and abstracts version information in config logic and disk image --- .../dozmod/gui/window/VirtConfigEditorWindow.java | 4 +-- .../gui/window/VirtDropDownConfigEditorWindow.java | 30 +++++++++++++--------- .../VirtDropDownConfigEditorWindowLayout.java | 27 ++++++++++++------- .../gui/wizard/page/ContainerUploadPage.java | 3 ++- .../dozmod/gui/wizard/page/ImageUploadPage.java | 28 +++++++++++++------- .../openslx/dozmod/state/UploadWizardState.java | 2 +- .../java/org/openslx/dozmod/util/VmWrapper.java | 13 +++++----- .../main/properties/i18n/window_layout.properties | 2 +- .../properties/i18n/window_layout_de_DE.properties | 2 +- .../properties/i18n/window_layout_tr_TR.properties | 2 +- .../bwlp/sat/database/mappers/DbLecture.java | 8 +++--- .../java/org/openslx/bwlp/sat/web/WebServer.java | 2 +- 12 files changed, 76 insertions(+), 47 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 5af62034..60ea343a 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 @@ -92,7 +92,7 @@ public class VirtConfigEditorWindow extends VirtConfigEditorWindowLayout impleme // cs is now either the detected encoding, or latin1 as a default uiBytes = userInput.getBytes(cs); // now we should have the correct bytes... - VirtualizationConfiguration virtualizationConfig = null; + VirtualizationConfiguration virtualizationConfig = null; try { virtualizationConfig = VirtualizationConfiguration.getInstance(MetaDataCache.getOperatingSystems(), uiBytes, uiBytes.length); @@ -104,7 +104,7 @@ public class VirtConfigEditorWindow extends VirtConfigEditorWindowLayout impleme return; } - byte[] uiBytesFiltered = virtualizationConfig.getDefinitionArray(); + byte[] uiBytesFiltered = virtualizationConfig.getConfigurationAsByteArray(); final String userInputFiltered; // TODO: This is ugly, why is there instanceof stuff here, add a method to VmMetaData!? if (virtualizationConfig instanceof VirtualizationConfigurationVirtualBox) { 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 24021e1a..680b9b7c 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 @@ -21,10 +21,10 @@ import org.openslx.sat.thrift.version.Feature; import org.openslx.util.ThriftUtil; import org.openslx.util.XmlHelper; import org.openslx.virtualization.configuration.VirtualizationConfigurationVirtualBox; +import org.openslx.virtualization.Version; import org.openslx.virtualization.configuration.VirtualizationConfiguration; import org.openslx.virtualization.configuration.VirtualizationConfiguration.DDAcceleration; import org.openslx.virtualization.configuration.VirtualizationConfiguration.EthernetDevType; -import org.openslx.virtualization.configuration.VirtualizationConfiguration.HWVersion; import org.openslx.virtualization.configuration.VirtualizationConfiguration.SoundCardType; import org.openslx.virtualization.configuration.VirtualizationConfiguration.UsbSpeed; @@ -45,7 +45,7 @@ public class VirtDropDownConfigEditorWindow extends VirtDropDownConfigEditorWind private final String imageVersionId; private final String originalMachineDescription; private final VirtDropDownConfigEditorWindow me = this; - private VirtualizationConfiguration virtualizationConfig = null; + private VirtualizationConfiguration virtualizationConfig = null; private final ImageDetailsActions actionHandler; protected VirtDropDownConfigEditorWindow(Window modalParent, final ImageDetailsActions actionHandler, @@ -72,7 +72,7 @@ public class VirtDropDownConfigEditorWindow extends VirtDropDownConfigEditorWind initializeSoundBox(virtualizationConfig.getSupportedSoundCards()); initializeDDABox(virtualizationConfig.getSupportedDDAccs()); - initializeHWVersBox(virtualizationConfig.getSupportedHWVersions()); + initializeHWVersBox(virtualizationConfig.getVirtualizer().getSupportedVersions()); initializeEDTBox(virtualizationConfig.getSupportedEthernetDevices()); initializeUsbBox(virtualizationConfig.getSupportedUsbSpeeds()); @@ -103,8 +103,8 @@ public class VirtDropDownConfigEditorWindow extends VirtDropDownConfigEditorWind cboHWVersion.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - HWVersion selected = (HWVersion) cboHWVersion.getSelectedItem(); - virtualizationConfig.setHWVersion(selected); + Version selected = (Version) cboHWVersion.getSelectedItem(); + virtualizationConfig.setVirtualizerVersion(selected); btnSave.setEnabled(hasChanged()); } }); @@ -155,10 +155,10 @@ public class VirtDropDownConfigEditorWindow extends VirtDropDownConfigEditorWind String currentMachineDesc; if (virtualizationConfig instanceof VirtualizationConfigurationVirtualBox) currentMachineDesc = XmlHelper - .getFormattedXml(new ByteArrayInputStream(virtualizationConfig.getDefinitionArray())); + .getFormattedXml(new ByteArrayInputStream(virtualizationConfig.getConfigurationAsByteArray())); else currentMachineDesc = ThriftUtil - .byteBufferToString(ByteBuffer.wrap(virtualizationConfig.getDefinitionArray())); + .byteBufferToString(ByteBuffer.wrap(virtualizationConfig.getConfigurationAsByteArray())); boolean didSave = VirtConfigEditorWindow.open(me, actionHandler, imageVersionId, currentMachineDesc, originalMachineDescription); // user did save the changes via the expert mode window - close this one too @@ -175,14 +175,20 @@ public class VirtDropDownConfigEditorWindow extends VirtDropDownConfigEditorWind /* * setting the boxes to their initial value...value is read from the given virtualization configuration */ - private void initializeComboBoxes(VirtualizationConfiguration m) { + private void initializeComboBoxes(VirtualizationConfiguration m) { try { SoundCardType SCT = m.getSoundCard(); cboSound.setSelectedItem(SCT); DDAcceleration DDA = m.getDDAcceleration(); cbo3DAcceleration.setSelectedItem(DDA); - HWVersion HWV = m.getHWVersion(); - cboHWVersion.setSelectedItem(HWV); + + // initialize version value in combobox + Version HWV = m.getVirtualizerVersion(); + if (HWV != null) { + // set version value specified in the virtualization configuration as default if specified + cboHWVersion.setSelectedItem(HWV); + } + EthernetDevType E0VD = m.getEthernetDevType(0); cboE0VirtDev.setSelectedItem(E0VD); UsbSpeed usbSpeed = m.getMaxUsbSpeed(); @@ -196,7 +202,7 @@ public class VirtDropDownConfigEditorWindow extends VirtDropDownConfigEditorWind private void saveClicked() { // we have a valid vmx or the user accepted to push the filtered input - actionHandler.setVirtualizerConfig(imageVersionId, ByteBuffer.wrap(virtualizationConfig.getDefinitionArray()), + actionHandler.setVirtualizerConfig(imageVersionId, ByteBuffer.wrap(virtualizationConfig.getConfigurationAsByteArray()), new VirtConfCallback() { @Override public void virtConfCallback(boolean success) { @@ -216,7 +222,7 @@ public class VirtDropDownConfigEditorWindow extends VirtDropDownConfigEditorWind private boolean hasChanged() { return !originalMachineDescription - .equals(ThriftUtil.byteBufferToString(ByteBuffer.wrap(virtualizationConfig.getDefinitionArray()))); + .equals(ThriftUtil.byteBufferToString(ByteBuffer.wrap(virtualizationConfig.getConfigurationAsByteArray()))); } private void safeClose() { 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 21391ac3..24e41e78 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 @@ -27,7 +27,7 @@ import org.openslx.dozmod.thrift.Session; import org.openslx.sat.thrift.version.Feature; import org.openslx.virtualization.configuration.VirtualizationConfiguration.DDAcceleration; import org.openslx.virtualization.configuration.VirtualizationConfiguration.EthernetDevType; -import org.openslx.virtualization.configuration.VirtualizationConfiguration.HWVersion; +import org.openslx.virtualization.Version; import org.openslx.virtualization.configuration.VirtualizationConfiguration.SoundCardType; import org.openslx.virtualization.configuration.VirtualizationConfiguration.UsbSpeed; @@ -45,7 +45,7 @@ public class VirtDropDownConfigEditorWindowLayout extends JDialog { protected final JButton btnMore; protected final JComboBox cboSound; protected final JComboBox cbo3DAcceleration; - protected final JComboBox cboHWVersion; + protected final JComboBox cboHWVersion; protected final JComboBox cboE0VirtDev; protected final JComboBox cboMaxUsbSpeed; @@ -86,12 +86,12 @@ public class VirtDropDownConfigEditorWindowLayout extends JDialog { }, DDAcceleration.class); // HardwareVersioBox - cboHWVersion = new ComboBox(new ComboBoxRenderer() { + cboHWVersion = new ComboBox(new ComboBoxRenderer() { @Override - public String renderItem(HWVersion item) { - return item.displayName; + public String renderItem(org.openslx.virtualization.Version item) { + return item.getName(); } - }, HWVersion.class); + }, Version.class); // HardwareVersioBox cboE0VirtDev = new ComboBox(new ComboBoxRenderer() { @@ -177,9 +177,18 @@ public class VirtDropDownConfigEditorWindowLayout extends JDialog { } // Hardware version - public void initializeHWVersBox(List list) { - for (HWVersion i : list) { - cboHWVersion.addItem(i); + public void initializeHWVersBox(List list) { + if (list == null || list.isEmpty()) { + // disable selection of items if list does not contain any items + cboHWVersion.setEnabled(false); + } else { + // append items to combobox if list contains items + for (Version i : list) { + cboHWVersion.addItem(i); + } + + // enable selection of items + cboHWVersion.setEnabled(true); } } 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 5fe3b200..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 @@ -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; @@ -315,7 +316,7 @@ public class ContainerUploadPage extends ContainerUploadPageLayout { if (state.upload == null) { try { state.upload = new UploadInitiator(state.uuid, state.diskFile, - state.virtualizationConfig.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/ImageUploadPage.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageUploadPage.java index 35704f21..efed6364 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; @@ -41,6 +42,8 @@ import org.openslx.virtualization.configuration.logic.ConfigurationLogicDozModCl 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; @@ -62,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"); @@ -107,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(); } @@ -218,9 +227,9 @@ public class ImageUploadPage extends ImageUploadPageLayout { return; } - final ConfigurationLogicDozModClientToDozModServer uploadLogic = new ConfigurationLogicDozModClientToDozModServer(); 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")); @@ -297,7 +306,8 @@ public class ImageUploadPage extends ImageUploadPageLayout { } // check if disk image format is supported by the hypervisor's supported disk image formats - final List supportedImageFormats = state.virtualizationConfig.getSupportedImageFormats(); + final List supportedImageFormats = state.virtualizationConfig.getVirtualizer() + .getSupportedImageFormats(); if (!diskImage.getFormat().isSupportedbyVirtualizer( supportedImageFormats )) { Gui.showMessageBox(I18n.PAGE.getString("ImageUpload.Message.warning.diskImageNotSupportedByHypervisor", Branding.getServiceName()), MessageType.WARNING, null, null); @@ -400,7 +410,7 @@ public class ImageUploadPage extends ImageUploadPageLayout { if (state.upload == null) { try { state.upload = new UploadInitiator(state.uuid, state.diskFile, - state.virtualizationConfig.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/state/UploadWizardState.java b/dozentenmodul/src/main/java/org/openslx/dozmod/state/UploadWizardState.java index c6357e05..cbbaf475 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/state/UploadWizardState.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/state/UploadWizardState.java @@ -52,7 +52,7 @@ public class UploadWizardState { /** * Meta data (description file content) of this VM */ - public VirtualizationConfiguration virtualizationConfig = null; + public VirtualizationConfiguration virtualizationConfig = null; // To be able to call the conversion Page from within the ImageUploadPage // TODO find cleaner approach, this probably shouldn't be in here.. 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 f8721e98..0cce4c45 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/util/VmWrapper.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/util/VmWrapper.java @@ -32,7 +32,6 @@ import org.openslx.virtualization.configuration.VirtualizationConfigurationExcep import org.openslx.virtualization.configuration.data.ConfigurationDataDozModServerToDozModClient; import org.openslx.vm.disk.DiskImage; import org.openslx.vm.disk.DiskImageException; -import org.openslx.vm.disk.DiskImageUtils; import org.openslx.vm.disk.DiskImageVmdk; public class VmWrapper { @@ -67,14 +66,16 @@ public class VmWrapper { } // handle machine description to generate configuration file - final VirtualizationConfiguration virtualizationConfig = VirtualizationConfiguration + final VirtualizationConfiguration virtualizationConfig = VirtualizationConfiguration .getInstance(MetaDataCache.getOperatingSystems(), machineDescription, machineDescription.length); // transform virtualization configuration for local editing - final ConfigurationLogicDozModServerToDozModClient downloadLogic = new ConfigurationLogicDozModServerToDozModClient(); + byte[] configuration = null; try { + final ConfigurationLogicDozModServerToDozModClient downloadLogic = new ConfigurationLogicDozModServerToDozModClient(); downloadLogic.apply( virtualizationConfig, new ConfigurationDataDozModServerToDozModClient( imageName, diskFile, guestOs, virtualizerId, getMainMemoryMb() ) ); + configuration = virtualizationConfig.getConfigurationAsByteArray(); } catch ( TransformationException e ) { throw new VirtualizationConfigurationException( e.getLocalizedMessage() ); } @@ -95,18 +96,18 @@ public class VmWrapper { // save virtualization configuration as file to disk final String baseFileName = FilenameUtils.removeExtension( diskFile.getAbsolutePath() ); final String fileNameExtension = virtualizationConfig.getFileNameExtension(); - final File vmFile = new File(baseFileName + fileNameExtension); + final File vmFile = new File(baseFileName + "." + fileNameExtension); // delete original virtualization configuration file vmFile.delete(); // actually write virtualization configuration to disk - FileUtils.writeByteArrayToFile(vmFile, virtualizationConfig.getFilteredDefinitionArray()); + FileUtils.writeByteArrayToFile(vmFile, configuration); } private static byte[] getFallbackVmx(DiskImageVmdk diskImageInfo) throws IOException, DiskImageException { final String vmx = ResourceLoader.getTextFile("/txt/vmx_template"); - final short hwVersion = DiskImageUtils.versionToMajor(diskImageInfo.getHwVersion()); + final short hwVersion = diskImageInfo.getHwVersion().getMajor(); return vmx.replace("%VM_HW_VERSION%", Short.toString(hwVersion)).getBytes(StandardCharsets.UTF_8); } diff --git a/dozentenmodul/src/main/properties/i18n/window_layout.properties b/dozentenmodul/src/main/properties/i18n/window_layout.properties index 503a0535..7077d090 100644 --- a/dozentenmodul/src/main/properties/i18n/window_layout.properties +++ b/dozentenmodul/src/main/properties/i18n/window_layout.properties @@ -235,7 +235,7 @@ VirtDropDownConfigEditor.Label.pnlWarning.text=Here you can modify some settings install the necessary drivers, and re-upload the VM. VirtDropDownConfigEditor.Label.sound.text=Sound card VirtDropDownConfigEditor.Label.3DAcceleration.text=3D-Acceleration -VirtDropDownConfigEditor.Label.HWVersion.text=VMWare HW-Version +VirtDropDownConfigEditor.Label.HWVersion.text=Virtualizer HW-Version VirtDropDownConfigEditor.Label.E0VirtDev.text=Network interface card VirtDropDownConfigEditor.Label.maxUSBSpeed.text=USB VirtDropDownConfigEditor.Button.more.text=Expert mode diff --git a/dozentenmodul/src/main/properties/i18n/window_layout_de_DE.properties b/dozentenmodul/src/main/properties/i18n/window_layout_de_DE.properties index b4b4a9b7..72fef21e 100644 --- a/dozentenmodul/src/main/properties/i18n/window_layout_de_DE.properties +++ b/dozentenmodul/src/main/properties/i18n/window_layout_de_DE.properties @@ -235,7 +235,7 @@ VirtDropDownConfigEditor.Label.pnlWarning.text=Hier können Sie einige Einstellu durchführen, die notwendigen Treiber installieren und die VM wieder hochladen. VirtDropDownConfigEditor.Label.sound.text=Soundkarte VirtDropDownConfigEditor.Label.3DAcceleration.text=3D-Beschleunigung -VirtDropDownConfigEditor.Label.HWVersion.text=VMWare HW-Version +VirtDropDownConfigEditor.Label.HWVersion.text=Virtualisierer HW-Version VirtDropDownConfigEditor.Label.E0VirtDev.text=Netzwerkkarte VirtDropDownConfigEditor.Label.maxUSBSpeed.text=USB VirtDropDownConfigEditor.Button.more.text=Expertenmodus diff --git a/dozentenmodul/src/main/properties/i18n/window_layout_tr_TR.properties b/dozentenmodul/src/main/properties/i18n/window_layout_tr_TR.properties index 77709be6..f28e66ed 100644 --- a/dozentenmodul/src/main/properties/i18n/window_layout_tr_TR.properties +++ b/dozentenmodul/src/main/properties/i18n/window_layout_tr_TR.properties @@ -235,7 +235,7 @@ VirtDropDownConfigEditor.Label.pnlWarning.text=Burada, kullanılan sanal donanı ve sanal makineyi tekrar yüklemeniz gerekir. VirtDropDownConfigEditor.Label.sound.text=Ses kartı VirtDropDownConfigEditor.Label.3DAcceleration.text=3D hızlandırıcı -VirtDropDownConfigEditor.Label.HWVersion.text=VMWare donanım sürümü +VirtDropDownConfigEditor.Label.HWVersion.text=Virtualizer donanım sürümü VirtDropDownConfigEditor.Label.E0VirtDev.text=Ethernet kartı VirtDropDownConfigEditor.Label.maxUSBSpeed.text=USB VirtDropDownConfigEditor.Button.more.text=Uzman modu diff --git a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbLecture.java b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbLecture.java index 8701a722..4b327ac9 100644 --- a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbLecture.java +++ b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbLecture.java @@ -585,7 +585,7 @@ public class DbLecture { final boolean usbAccess = rs.getBoolean("hasusbaccess"); // prepare virtualization configuration as part of the launch data - VirtualizationConfiguration virtualizationConfig = null; + VirtualizationConfiguration virtualizationConfig = null; try { virtualizationConfig = VirtualizationConfiguration.getInstance(OperatingSystemList.get(), config, config.length); } catch (Exception e) { @@ -594,16 +594,18 @@ public class DbLecture { } // modify virtualization configuration + String configuration = null; try { final ConfigurationLogicDozModServerToStatelessClient downloadLogic = new ConfigurationLogicDozModServerToStatelessClient(); downloadLogic.apply(virtualizationConfig, new ConfigurationDataDozModServerToStatelessClient(lectureName, osKeyword, usbAccess)); + configuration = virtualizationConfig.getConfigurationAsString(); } catch (TransformationException e) { LOGGER.error("Virtualization configuration could not be modified", e); return null; } - retval.virtualizationConfig = virtualizationConfig; + retval.configuration = configuration; retval.legacyRunScript = rs.getString("runscript"); retval.netShares = DbLectureNetshare.getCombinedForLecture(connection, lectureId); retval.runScript = DbRunScript.getRunScriptsForLaunch(connection, lectureId, rs.getInt("osid")); @@ -716,7 +718,7 @@ public class DbLecture { } public static class LaunchData { - public VirtualizationConfiguration virtualizationConfig; + public String configuration; public List netShares; public String legacyRunScript; public List runScript; diff --git a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/web/WebServer.java b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/web/WebServer.java index 59b15e7a..e9394b5e 100644 --- a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/web/WebServer.java +++ b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/web/WebServer.java @@ -154,7 +154,7 @@ public class WebServer extends NanoHTTPD { @Override public void run() { try { - tarPutFile(output, "vmx", ld.virtualizationConfig.getFilteredDefinitionArray()); + tarPutFile(output, "vmx", ld.configuration); tarPutFile(output, "runscript", ld.legacyRunScript); tarPutFile(output, "netshares", serializeNetShares(ld.netShares)); if (ld.runScript != null) { -- cgit v1.2.3-55-g7522