summaryrefslogtreecommitdiffstats
path: root/dozentenmodul/src
diff options
context:
space:
mode:
authorSimon Rettberg2021-04-21 13:07:48 +0200
committerSimon Rettberg2021-04-21 13:07:48 +0200
commit638ba80c0deaa4468ce16f5ec965ca55040a44b5 (patch)
tree1e3a86ff945439abc4070baf80c1ceb122d30d0b /dozentenmodul/src
parent[client] Simplify code (diff)
downloadtutor-module-638ba80c0deaa4468ce16f5ec965ca55040a44b5.tar.gz
tutor-module-638ba80c0deaa4468ce16f5ec965ca55040a44b5.tar.xz
tutor-module-638ba80c0deaa4468ce16f5ec965ca55040a44b5.zip
[client] Avoid keeping file from DiskImage open for too long
Diffstat (limited to 'dozentenmodul/src')
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageUploadPage.java9
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/util/ImageWrapper.java36
2 files changed, 15 insertions, 30 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 4f64f1e9..645587c6 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
@@ -262,13 +262,14 @@ public class ImageUploadPage extends ImageUploadPageLayout {
vmDiskFileInfo = new File(vmBaseDirectory, hdds.get(0).diskImage);
}
- final DiskImage diskImage;
final boolean diskImageIsSnapshot;
final boolean diskImageIsStandalone;
- try {
- diskImage = DiskImage.newInstance(vmDiskFileInfo);
+ final ImageFormat diskFormat;
+
+ try (DiskImage diskImage = DiskImage.newInstance(vmDiskFileInfo)) {
diskImageIsSnapshot = diskImage.isSnapshot();
diskImageIsStandalone = diskImage.isStandalone();
+ diskFormat = diskImage.getFormat();
} catch (FileNotFoundException e) {
setErrorMessage(I18n.PAGE.getString("ImageUpload.WizardPage.errorMessage.diskImageNotFound",
vmDiskFileInfo.getName()));
@@ -290,7 +291,7 @@ 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 (!diskImage.getFormat().isSupportedbyVirtualizer( supportedImageFormats )) {
+ 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"));
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/util/ImageWrapper.java b/dozentenmodul/src/main/java/org/openslx/dozmod/util/ImageWrapper.java
index 8891bbac..f589a939 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/util/ImageWrapper.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/util/ImageWrapper.java
@@ -41,7 +41,6 @@ public class ImageWrapper {
// after the whole image is downloaded and persisted as a .part file,
// this will be executed to unpack it.
- DiskImage diskImage = null;
String ext = virtualizerId;
boolean imageIsCompressed = false;
@@ -61,41 +60,26 @@ public class ImageWrapper {
}
} else {
- try {
- diskImage = DiskImage.newInstance(tmpDiskFile);
- } catch (IOException | DiskImageException e) {
- LOGGER.warn("Could not open downloaded image for analyze step", e);
- }
-
- if (diskImage != null) {
+ try (DiskImage diskImage = DiskImage.newInstance(tmpDiskFile)) {
ext = diskImage.getFormat().getExtension();
+ imageIsCompressed = diskImage.isCompressed();
+ } catch (IOException | DiskImageException e) {
+ LOGGER.warn("Could not open/analyze downloaded image", e);
+ }
- try {
- imageIsCompressed = diskImage.isCompressed();
- } catch (DiskImageException e) {
- LOGGER.warn("Could not analyze if image is compressed", e);
- }
-
- if (imageIsCompressed) {
-
- Gui.asyncMessageBox(
- I18n.THRIFT.getString("ThriftActions.Message.warning.diskImageCompressed",
- imageName, Branding.getServiceFAQWebsite()), MessageType.WARNING, null,
- null);
- }
+ if (imageIsCompressed) {
+ Gui.asyncMessageBox(I18n.THRIFT.getString("ThriftActions.Message.warning.diskImageCompressed",
+ imageName, Branding.getServiceFAQWebsite()), MessageType.WARNING, null, null);
}
File destImage = new File(destDir.getAbsolutePath(), VmWrapper.generateFilename(imageName, ext));
-
destImage.delete();
-
if (!tmpDiskFile.renameTo(destImage)) {
destImage = tmpDiskFile; // Must be Windows...
}
- try {
+ try (DiskImage diskImage = DiskImage.newInstance(destImage)) {
VmWrapper.wrapVm(destImage, imageName, virtualizerConfig, virtualizerId, osId, diskImage);
-
- } catch (VmWrapper.MetaDataMissingException | IOException e) {
+ } catch (VmWrapper.MetaDataMissingException | IOException | DiskImageException e) {
Gui.asyncMessageBox(I18n.THRIFT.getString("ThriftActions.Message.warning.couldNotWrapVM"),
MessageType.WARNING, LOGGER, e);
}