summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Rettberg2015-07-23 14:09:33 +0200
committerSimon Rettberg2015-07-23 14:09:33 +0200
commit782fa952152f46182e10a9c3e580384a1fa211dc (patch)
treef605b068d36ec7292bca7062b1e92e60f2283649
parent[server] Adapt to RPC changes (diff)
downloadtutor-module-782fa952152f46182e10a9c3e580384a1fa211dc.tar.gz
tutor-module-782fa952152f46182e10a9c3e580384a1fa211dc.tar.xz
tutor-module-782fa952152f46182e10a9c3e580384a1fa211dc.zip
[client] Adapt to RPC/VmMeta changes, store VmMeta in upload wizard state
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/ImageWizard.java30
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageMetaDataPage.java21
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageUploadPage.java83
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/state/UploadWizardState.java9
4 files changed, 59 insertions, 84 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/ImageWizard.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/ImageWizard.java
index 3f56f586..21bda601 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/ImageWizard.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/ImageWizard.java
@@ -62,16 +62,6 @@ public class ImageWizard extends Wizard {
LOGGER.error("Invalid state!");
return false;
} else {
- LOGGER.debug(uploadWizardState.name);
- LOGGER.debug(uploadWizardState.description);
- LOGGER.debug(uploadWizardState.descriptionFile.toString());
- LOGGER.debug(uploadWizardState.diskFile.toString());
- LOGGER.debug(uploadWizardState.selectedOs.toString());
- LOGGER.debug(uploadWizardState.virtualizer.toString());
- LOGGER.debug(uploadWizardState.isTemplate);
- LOGGER.debug(uploadWizardState.permissions.toString());
- LOGGER.debug(uploadWizardState.shareMode.toString());
- LOGGER.debug(uploadWizardState.uuid.toString());
// TODO run the actually request over external threaded class
try {
// push to sat
@@ -160,27 +150,13 @@ public class ImageWizard extends Wizard {
return false;
}
}
- if (uploadWizardState.virtualizer == null) {
- LOGGER.error("No virtualizer set in state!");
+ if (uploadWizardState.meta == null) {
+ LOGGER.error("No vm meta data set in state!");
return false;
- } else {
- if (!(uploadWizardState.virtualizer.isSetVirtId()
- && uploadWizardState.virtualizer.isSetVirtName())) {
- LOGGER.error("Virtualizer has missing fields: " + uploadWizardState.virtualizer.toString());
- return false;
- }
}
if (uploadWizardState.permissions == null) {
LOGGER.error("No permissions set in state!");
return false;
- } else {
- if (!(uploadWizardState.permissions.isSetAdmin()
- && uploadWizardState.permissions.isSetDownload()
- && uploadWizardState.permissions.isSetEdit()
- && uploadWizardState.permissions.isSetLink())) {
- LOGGER.error("Virtualizer has missing fields: " + uploadWizardState.selectedOs.toString());
- return false;
- }
}
if (uploadWizardState.shareMode == null) {
LOGGER.error("No share mode set in state!");
@@ -199,7 +175,7 @@ public class ImageWizard extends Wizard {
uploadWizardState.name,
uploadWizardState.description,
uploadWizardState.selectedOs.getOsId(),
- uploadWizardState.virtualizer.getVirtId(),
+ uploadWizardState.meta.getVirtualizer().getVirtId(),
uploadWizardState.isTemplate,
uploadWizardState.permissions,
uploadWizardState.shareMode);
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 dc234568..ba452299 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
@@ -22,18 +22,17 @@ public class ImageMetaDataPage extends ImageMetaDataPageLayout {
private final static Logger LOGGER = Logger.getLogger(ImageMetaDataPage.class);
- private UploadWizardState uploadWizardState;
+ private UploadWizardState state;
public ImageMetaDataPage(UploadWizardState uploadWizardState) {
super();
- this.uploadWizardState = uploadWizardState;
+ this.state = uploadWizardState;
setPageComplete(false);
setMessage("Bitte wählen Sie das Betriebssystem aus und fügen Sie eine Beschreibung hinzu.");
// HACK set fixed uploadWizardState to test functions
uploadWizardState.isTemplate = false;
uploadWizardState.permissions = new ImagePermissions(true, false, true, false);
uploadWizardState.shareMode = ShareMode.LOCAL;
- uploadWizardState.virtualizer = MetaDataCache.getVirtualizers().get(0);
}
@Override
@@ -75,25 +74,25 @@ public class ImageMetaDataPage extends ImageMetaDataPageLayout {
readPermissionsCheck.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
- uploadWizardState.permissions.download = readPermissionsCheck.getSelection();
+ state.permissions.download = readPermissionsCheck.getSelection();
}
});
linkPermissionsCheck.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
- uploadWizardState.permissions.link = linkPermissionsCheck.getSelection();
+ state.permissions.link = linkPermissionsCheck.getSelection();
}
});
writePermissionsCheck.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
- uploadWizardState.permissions.edit = writePermissionsCheck.getSelection();
+ state.permissions.edit = writePermissionsCheck.getSelection();
}
});
adminPermissionsCheck.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
- uploadWizardState.permissions.admin = adminPermissionsCheck.getSelection();
+ state.permissions.admin = adminPermissionsCheck.getSelection();
}
});
// -- end checkboxes for permissions --
@@ -110,9 +109,9 @@ public class ImageMetaDataPage extends ImageMetaDataPageLayout {
if (!currentlyVisible && visible) {
LOGGER.debug("Entering page...");
// Preselect OS if possible
- if (uploadWizardState.selectedOs == null && uploadWizardState.detectedOs != null) {
+ if (state.selectedOs == null && state.detectedOs != null) {
for (int i = 0; i < osCombo.getItemCount(); ++i) {
- if (uploadWizardState.detectedOs.getOsName().equals(osCombo.getItem(i))) {
+ if (state.detectedOs.getOsName().equals(osCombo.getItem(i))) {
osCombo.select(i);
break;
}
@@ -160,7 +159,7 @@ public class ImageMetaDataPage extends ImageMetaDataPageLayout {
}
} else {
// OS selected, save it to state
- uploadWizardState.selectedOs = (OperatingSystem) osCombo.getData(osCombo.getItem(selectionIndex));
+ state.selectedOs = (OperatingSystem) osCombo.getData(osCombo.getItem(selectionIndex));
if (descriptionInput.isEmpty()) {
// OS set, no description
setMessage("Fügen Sie eine Beschreibung hinzu.");
@@ -170,7 +169,7 @@ public class ImageMetaDataPage extends ImageMetaDataPageLayout {
}
}
// always save the description input, even if empty.
- uploadWizardState.description = descriptionInput;
+ state.description = descriptionInput;
// final step: check if we can continue or not
setPageComplete(selectionIndex != -1 && !descriptionInput.isEmpty());
}
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 4f9ed944..041627d9 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
@@ -36,7 +36,7 @@ public class ImageUploadPage extends ImageUploadPageLayout {
private final static Logger LOGGER = Logger.getLogger(ImageUploadPage.class);
- private UploadWizardState uploadWizardState;
+ private UploadWizardState state;
protected final boolean editExistingImage;
private String lastDetectedName = null;
@@ -44,7 +44,7 @@ public class ImageUploadPage extends ImageUploadPageLayout {
super();
setPageComplete(false);
this.editExistingImage = editExistingImage;
- this.uploadWizardState = uploadWizardState;
+ this.state = uploadWizardState;
setMessage("Bitte wählen Sie eine virtuelle Maschine zum Hochladen aus.");
}
@@ -56,9 +56,8 @@ public class ImageUploadPage extends ImageUploadPageLayout {
@Override
public void keyReleased(KeyEvent e) {
if (!imageNameTextField.getText().isEmpty()) {
- setPageComplete(uploadWizardState.descriptionFile != null
- && uploadWizardState.uuid != null
- && uploadWizardState.transferInformation != null);
+ setPageComplete(state.descriptionFile != null && state.uuid != null
+ && state.transferInformation != null);
} else
setPageComplete(false);
}
@@ -113,21 +112,20 @@ public class ImageUploadPage extends ImageUploadPageLayout {
private void vmxSelected(File file) {
Config.setUploadPath(file.getParent());
- VmwareMetaData meta = null;
try {
- meta = new VmwareMetaData(MetaDataCache.getOperatingSystems(), file);
+ state.meta = new VmwareMetaData(MetaDataCache.getOperatingSystems(), file);
} catch (IOException e) {
MainWindow.showMessageBox("Konnte " + file.getPath() + " nicht lesen", MessageType.ERROR, LOGGER,
e);
setPageComplete(false);
return;
}
- if (meta == null || meta.getDisplayName() == null) {
+ if (state.meta == null || state.meta.getDisplayName() == null) {
setErrorMessage("Keine gültige vmx-Datei ausgewählt!");
setPageComplete(false);
return;
}
- List<HardDisk> hdds = meta.getHdds();
+ List<HardDisk> hdds = state.meta.getHdds();
if (hdds.size() == 0 || hdds.get(0).diskImage == null) {
setErrorMessage("Die gewählte VM enthält keine HDD");
setPageComplete(false);
@@ -148,7 +146,7 @@ public class ImageUploadPage extends ImageUploadPageLayout {
vmDiskFileInfo = new File(vmxBaseDirectory, hdds.get(0).diskImage);
}
if (vmDiskFileInfo.canRead()) {
- uploadWizardState.diskFile = vmDiskFileInfo;
+ state.diskFile = vmDiskFileInfo;
} else {
setErrorMessage("'" + vmDiskFileInfo.getPath() + "' kann nicht gelesen werden!");
setPageComplete(false);
@@ -156,18 +154,19 @@ public class ImageUploadPage extends ImageUploadPageLayout {
}
// vmx ok, set it as our description file
- uploadWizardState.descriptionFile = file;
+ state.descriptionFile = file;
// User didn't enter a name yet or didn't change it -> set
String txtName = imageNameTextField.getText();
if (txtName.isEmpty() || txtName.equals(lastDetectedName)) {
- imageNameTextField.setText(meta.getDisplayName());
+ imageNameTextField.setText(state.meta.getDisplayName());
}
- lastDetectedName = meta.getDisplayName();
+ lastDetectedName = state.meta.getDisplayName();
- uploadWizardState.detectedOs = meta.getOs();
+ state.detectedOs = state.meta.getOs();
imageFileTextField.setText(file.getAbsolutePath());
// let the user know the upload is ready
+ setErrorMessage(null);
setMessage("Sie können jetzt den Upload starten!");
startUploadButton.setEnabled(true);
startUploadButton.setFocus();
@@ -207,7 +206,7 @@ public class ImageUploadPage extends ImageUploadPageLayout {
private void createAndUploadImage() {
// first get the image name from the field
// (either auto filled by VmwareMetaData or by user)
- uploadWizardState.name = imageNameTextField.getText();
+ state.name = imageNameTextField.getText();
// schedule task to create the image if we have no UUID
// and to request the upload once we received that UUID.
@@ -215,41 +214,40 @@ public class ImageUploadPage extends ImageUploadPageLayout {
@Override
public void fire() {
// -- create image --
- if (uploadWizardState.uuid == null) {
+ if (state.uuid == null) {
LOGGER.debug("Creating image...");
try {
- uploadWizardState.uuid = ThriftManager.getSatClient().createImage(
- Session.getSatelliteToken(), uploadWizardState.name);
+ state.uuid = ThriftManager.getSatClient().createImage(Session.getSatelliteToken(),
+ state.name);
} catch (Exception e) {
LOGGER.error("Error while creating image: ", e);
}
}
- if (uploadWizardState.transferInformation == null && uploadWizardState.uuid != null) {
+ if (state.transferInformation == null && state.uuid != null) {
// -- request upload --
LOGGER.debug("Requesting upload...");
try {
- uploadWizardState.transferInformation = ThriftManager.getSatClient()
- .requestImageVersionUpload(Session.getSatelliteToken(),
- uploadWizardState.uuid, uploadWizardState.diskFile.length(), null);
+ state.transferInformation = ThriftManager.getSatClient().requestImageVersionUpload(
+ Session.getSatelliteToken(), state.uuid, state.diskFile.length(), null,
+ state.meta.getFilteredDefinition());
} catch (Exception e) {
- LOGGER.error("Error while requesting download for: " + uploadWizardState.uuid, e);
+ LOGGER.error("Error while requesting download for: " + state.uuid, e);
}
}
- if (uploadWizardState.uploadTask == null && uploadWizardState.transferInformation != null
- && uploadWizardState.uuid != null) {
+ if (state.uploadTask == null && state.transferInformation != null && state.uuid != null) {
// do actually start the upload now
- LOGGER.debug("Starting upload for : " + uploadWizardState.diskFile.toPath());
+ LOGGER.debug("Starting upload for : " + state.diskFile.toPath());
try {
- uploadWizardState.uploadTask = new UploadTask(Session.getSatelliteAddress(),
- uploadWizardState.transferInformation.getPlainPort(),
- uploadWizardState.transferInformation.getToken(), uploadWizardState.diskFile);
+ state.uploadTask = new UploadTask(Session.getSatelliteAddress(),
+ state.transferInformation.getPlainPort(),
+ state.transferInformation.getToken(), state.diskFile);
} catch (FileNotFoundException e) {
MainWindow.showMessageBox("Cannot upload file: Not found", MessageType.ERROR, LOGGER,
e);
return;
}
// -- add listener for upload status/progress --
- uploadWizardState.uploadTask.addListener(new TransferEventListener() {
+ state.uploadTask.addListener(new TransferEventListener() {
@Override
public void update(final TransferEvent event) {
final TransferEventListener listener = this;
@@ -262,7 +260,7 @@ public class ImageUploadPage extends ImageUploadPageLayout {
});
}
});
- new Thread(uploadWizardState.uploadTask).start();
+ new Thread(state.uploadTask).start();
}
Gui.display.asyncExec(new Runnable() {
@Override
@@ -296,18 +294,18 @@ public class ImageUploadPage extends ImageUploadPageLayout {
imageFileBrowseButton.setEnabled(false);
imageFileTextField.setEnabled(false);
// -- check image creation --
- if (uploadWizardState.uuid == null) {
+ if (state.uuid == null) {
LOGGER.debug("No UUID in upload state!");
setErrorMessage("Konnte das Image nicht auf dem Satelliten erstellen!");
- } else if (uploadWizardState.transferInformation == null) {
+ } else if (state.transferInformation == null) {
LOGGER.debug("No transfer information in upload state!");
setErrorMessage("Fehler bei der Upload-Anfrage!");
- } else if (uploadWizardState.uploadTask != null) {
+ } else if (state.uploadTask != null) {
cancelUpload.setVisible(true);
blockProgressBar.setVisible(true);
setMessage("Der Upload wurde gestartet");
}
- setPageComplete(uploadWizardState.uploadTask != null);
+ setPageComplete(state.uploadTask != null);
}
/**
@@ -318,8 +316,8 @@ public class ImageUploadPage extends ImageUploadPageLayout {
*/
private void processTransferStatus(TransferEventListener listener, TransferEvent event) {
if (getControl().isDisposed()) {
- if (uploadWizardState.uploadTask != null) {
- uploadWizardState.uploadTask.removeListener(listener);
+ if (state.uploadTask != null) {
+ state.uploadTask.removeListener(listener);
}
return;
}
@@ -337,12 +335,12 @@ public class ImageUploadPage extends ImageUploadPageLayout {
MainWindow.showMessageBox("Upload abgeschlossen.", MessageType.INFO, LOGGER, null);
break;
case ERROR:
- if (uploadWizardState.uploadTask != null && uploadWizardState.uploadTask.isCanceled())
+ if (state.uploadTask != null && state.uploadTask.isCanceled())
return;
if (MainWindow.showMessageBox("Fehler beim Upload: " + event.errorMessage
+ "\nNochmal versuchen?", MessageType.ERROR_RETRY, LOGGER, null)) {
// user wants to try again, just reset transferInformation ...
- uploadWizardState.uploadTask = null;
+ state.uploadTask = null;
// ... since this function will then do the upload process again.
createAndUploadImage();
}
@@ -363,13 +361,12 @@ public class ImageUploadPage extends ImageUploadPageLayout {
@Override
public void fire() {
try {
- ThriftManager.getSatClient().cancelUpload(
- uploadWizardState.transferInformation.getToken());
+ ThriftManager.getSatClient().cancelUpload(state.transferInformation.getToken());
} catch (Exception e) {
- LOGGER.debug("Remote error while canceling upload for " + uploadWizardState.uuid, e);
+ LOGGER.debug("Remote error while canceling upload for " + state.uuid, e);
}
// Then cancel the task
- uploadWizardState.uploadTask.cancel();
+ state.uploadTask.cancel();
Gui.asyncExec(new Runnable() {
@Override
public void run() {
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 0bf48732..a9366305 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/state/UploadWizardState.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/state/UploadWizardState.java
@@ -7,8 +7,8 @@ import org.openslx.bwlp.thrift.iface.ImagePermissions;
import org.openslx.bwlp.thrift.iface.OperatingSystem;
import org.openslx.bwlp.thrift.iface.ShareMode;
import org.openslx.bwlp.thrift.iface.TransferInformation;
-import org.openslx.bwlp.thrift.iface.Virtualizer;
import org.openslx.dozmod.filetransfer.UploadTask;
+import org.openslx.util.vm.VmMetaData;
public class UploadWizardState {
// -- objects of the GUI itself --
@@ -26,8 +26,6 @@ public class UploadWizardState {
public File diskFile = null;
// flags an image as a template
public Boolean isTemplate = null;
- // virtualizer for this image (vmware, vbox..)
- public Virtualizer virtualizer = null;
// permissions assigned to that image by the user
// TODO: defaults per sat
public ImagePermissions permissions = null;
@@ -44,4 +42,9 @@ public class UploadWizardState {
* The upload task representing this new VM
*/
public UploadTask uploadTask = null;
+
+ /**
+ * Meta data (description file content) of this VM
+ */
+ public VmMetaData meta = null;
}