summaryrefslogtreecommitdiffstats
path: root/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbLecture.java
diff options
context:
space:
mode:
authorManuel Bentele2021-05-19 09:34:09 +0200
committerManuel Bentele2021-05-19 09:34:09 +0200
commitadf39b1279e5ed2d81ddf92df780c5b893dbbba1 (patch)
tree9d729e1441ffab0d91ebae2424b2a6aa69120dd6 /dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbLecture.java
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 'dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbLecture.java')
-rw-r--r--dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbLecture.java55
1 files changed, 32 insertions, 23 deletions
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 fb69feac..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
@@ -30,8 +30,10 @@ import org.openslx.bwlp.thrift.iface.TNotFoundException;
import org.openslx.bwlp.thrift.iface.UserInfo;
import org.openslx.util.Json;
import org.openslx.util.Util;
-import org.openslx.vm.VmMetaData;
-import org.openslx.vm.VmMetaData.UsbSpeed;
+import org.openslx.virtualization.configuration.VirtualizationConfiguration;
+import org.openslx.virtualization.configuration.data.ConfigurationDataDozModServerToStatelessClient;
+import org.openslx.virtualization.configuration.logic.ConfigurationLogicDozModServerToStatelessClient;
+import org.openslx.virtualization.configuration.transformation.TransformationException;
import com.google.gson.JsonParseException;
@@ -555,10 +557,7 @@ public class DbLecture {
TNotFoundException {
LaunchData retval = new LaunchData();
byte[] config;
- String lectureName;
- String osKeyword;
- boolean usbAccess;
- VmMetaData<?, ?, ?, ?, ?> meta = null;
+
try (MysqlConnection connection = Database.getConnection()) {
// Get required data about lecture and used image
MysqlStatement stmt = connection.prepareStatement("SELECT"
@@ -575,23 +574,42 @@ public class DbLecture {
|| rs.getLong("endtime") < now) {
throw new TNotFoundException();
}
+
config = rs.getBytes("virtualizerconfig");
if (config == null) {
return null;
}
+
+ final String lectureName = rs.getString("lecturename");
+ final String osKeyword = rs.getString("virtoskeyword");
+ final boolean usbAccess = rs.getBoolean("hasusbaccess");
+
+ // prepare virtualization configuration as part of the launch data
+ VirtualizationConfiguration<?, ?, ?, ?> virtualizationConfig = null;
try {
- meta = VmMetaData.getInstance(OperatingSystemList.get(), config, config.length);
+ virtualizationConfig = VirtualizationConfiguration.getInstance(OperatingSystemList.get(), config, config.length);
} catch (Exception e) {
- LOGGER.error("meta could not be initialized", e);
+ LOGGER.error("Virtualization configuration could not be initialized", e);
return null;
}
- lectureName = rs.getString("lecturename");
- osKeyword = rs.getString("virtoskeyword");
- usbAccess = rs.getBoolean("hasusbaccess");
- retval.vmx = meta;
+
+ // 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.configuration = configuration;
retval.legacyRunScript = rs.getString("runscript");
retval.netShares = DbLectureNetshare.getCombinedForLecture(connection, lectureId);
retval.runScript = DbRunScript.getRunScriptsForLaunch(connection, lectureId, rs.getInt("osid"));
+
// Everything worked so far, update statistics counters
MysqlStatement upStmt = connection.prepareStatement("UPDATE"
+ " lecture SET lastused = UNIX_TIMESTAMP(), usecount = usecount + 1"
@@ -603,16 +621,7 @@ public class DbLecture {
LOGGER.error("Query failed in DbLecture.getClientLaunchData()", e);
throw e;
}
- meta.addDisplayName(lectureName);
- if (osKeyword != null) {
- meta.setOs(osKeyword);
- }
- meta.addHddTemplate("%VM_DISK_PATH%", "%VM_DISK_MODE%", "%VM_DISK_REDOLOGDIR%");
- meta.addEthernet(VmMetaData.EtherType.NAT); // TODO: Use config
- if (!usbAccess) {
- meta.setMaxUsbSpeed(UsbSpeed.NONE);
- }
- meta.tweakForNonPersistent();
+
return retval;
}
@@ -709,7 +718,7 @@ public class DbLecture {
}
public static class LaunchData {
- public VmMetaData<?, ?, ?, ?, ?> vmx;
+ public String configuration;
public List<NetShare> netShares;
public String legacyRunScript;
public List<RunScript> runScript;