summaryrefslogtreecommitdiffstats
path: root/dozentenmodul
diff options
context:
space:
mode:
authorJonathan Bauer2015-07-14 00:30:10 +0200
committerJonathan Bauer2015-07-14 00:30:10 +0200
commit9875e5350bdd4749c99d20d8b1e9594f6377b459 (patch)
treeee8bf74bf2c8d5639bbc3673182d08a5f32d35cd /dozentenmodul
parentnever commit in a hurry .............. (diff)
downloadtutor-module-9875e5350bdd4749c99d20d8b1e9594f6377b459.tar.gz
tutor-module-9875e5350bdd4749c99d20d8b1e9594f6377b459.tar.xz
tutor-module-9875e5350bdd4749c99d20d8b1e9594f6377b459.zip
[client] first steps towards actually uploading an image through API
set some defaults permissions in uploadWizardState and various other fields of imageBaseWrite for testing purposes. Implemented some actually functionality of ImageMetaDataPage like checkboxes and description etc
Diffstat (limited to 'dozentenmodul')
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/MainMenuWindow.java4
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/ImageWizard.java13
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/layout/ImageMetaDataPageLayout.java3
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageMetaDataPage.java132
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageUploadPage.java28
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/state/UploadWizardState.java27
6 files changed, 178 insertions, 29 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/MainMenuWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/MainMenuWindow.java
index 3fafd51f..7b2fa94b 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/MainMenuWindow.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/MainMenuWindow.java
@@ -1,14 +1,10 @@
package org.openslx.dozmod.gui.window;
-import java.io.File;
-
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Shell;
-import org.openslx.dozmod.filetransfer.UploadTask;
import org.openslx.dozmod.gui.MainWindow;
import org.openslx.dozmod.gui.window.layout.MainMenuWindowLayout;
-import org.openslx.dozmod.thrift.Session;
public class MainMenuWindow extends MainMenuWindowLayout {
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 eddcd516..804760dd 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
@@ -45,6 +45,19 @@ public class ImageWizard extends Wizard {
@Override
public boolean performFinish() {
+ // since we only started the download and created a "blank" image entry
+ // we can here do all the sanity checks on the fields of UploadWizardState
+ // and react accordingly.
+ LOGGER.debug(uploadWizardState.isTemplate);
+ LOGGER.debug(uploadWizardState.vmDescription);
+ LOGGER.debug(uploadWizardState.vmDiskFile);
+ LOGGER.debug(uploadWizardState.vmName);
+ LOGGER.debug(uploadWizardState.vmOperatingSystem.getOsName());
+ LOGGER.debug(uploadWizardState.vmVirtualizer.getVirtName());
+ LOGGER.debug(uploadWizardState.vmPerms.toString());
+ LOGGER.debug(uploadWizardState.vmShareMode.toString());
+ LOGGER.debug(uploadWizardState.vmUuid.toString());
+ LOGGER.debug(uploadWizardState.vmDescriptionFile.toString());
MainWindow.showMessageBox("Would continue uploading now :)", MessageType.INFO, LOGGER, null);
return true;
}
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/layout/ImageMetaDataPageLayout.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/layout/ImageMetaDataPageLayout.java
index 67cfb045..4294a727 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/layout/ImageMetaDataPageLayout.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/layout/ImageMetaDataPageLayout.java
@@ -64,6 +64,7 @@ public abstract class ImageMetaDataPageLayout extends WizardPage {
Label licencedSoftwareCaption = new Label(container, SWT.NONE);
licencedSoftwareCaption.setText("Image enthält lizenzpflichtige Software");
licencedSoftwareCheck = new Button(container, SWT.CHECK);
+ licencedSoftwareCheck.setSelection(true);
Group permissionsGroup = new Group(container, SWT.BORDER);
gd = new GridData();
@@ -76,10 +77,12 @@ public abstract class ImageMetaDataPageLayout extends WizardPage {
readPermissionsCheck = new Button(permissionsGroup, SWT.CHECK);
readPermissionsCheck.setText("Lesen");
+ readPermissionsCheck.setSelection(true);
writePermissionsCheck = new Button(permissionsGroup, SWT.CHECK);
writePermissionsCheck.setText("Schreiben");
linkPermissionsCheck = new Button(permissionsGroup, SWT.CHECK);
linkPermissionsCheck.setText("Verlinken");
+ linkPermissionsCheck.setSelection(true);
adminPermissionsCheck = new Button(permissionsGroup, SWT.CHECK);
adminPermissionsCheck.setText("Admin");
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 a150433e..b20f818d 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
@@ -1,16 +1,27 @@
package org.openslx.dozmod.gui.wizard.page;
+import java.io.File;
+import java.lang.reflect.Field;
import java.util.List;
import org.apache.log4j.Logger;
+import org.apache.thrift.TException;
import org.eclipse.swt.events.KeyEvent;
import org.eclipse.swt.events.KeyListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Composite;
+import org.openslx.bwlp.thrift.iface.ImageBaseWrite;
+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.Virtualizer;
import org.openslx.dozmod.gui.helper.Gui;
import org.openslx.dozmod.gui.wizard.layout.ImageMetaDataPageLayout;
import org.openslx.dozmod.state.UploadWizardState;
import org.openslx.dozmod.thrift.MetaDataCache;
+import org.openslx.dozmod.thrift.Session;
+import org.openslx.thrifthelper.ThriftManager;
import org.openslx.util.QuickTimer;
import org.openslx.util.QuickTimer.Task;
@@ -24,6 +35,16 @@ public class ImageMetaDataPage extends ImageMetaDataPageLayout {
super();
this.uploadWizardState = uploadWizardState;
setPageComplete(false);
+
+ // HACK set fixed uploadWizardState to test functions
+ uploadWizardState.vmDiskFile = uploadWizardState.vmDescriptionFile;
+ uploadWizardState.isTemplate = false;
+ uploadWizardState.vmPerms = new ImagePermissions(true, false, true, false);
+ uploadWizardState.vmShareMode = ShareMode.LOCAL;
+// uploadWizardState.vmVirtualizer = MetaDataCache.getVirtualizers().get(0);
+ uploadWizardState.vmVirtualizer = new Virtualizer("0", "FakeVirt");
+ uploadWizardState.vmOperatingSystem = MetaDataCache.getOperatingSystems().get(0);
+
}
@Override
@@ -55,9 +76,38 @@ public class ImageMetaDataPage extends ImageMetaDataPageLayout {
@Override
public void keyReleased(KeyEvent e) {
- setPageComplete(!descriptionText.getText().isEmpty());
+ if (!descriptionText.getText().isEmpty()) {
+ uploadWizardState.vmDescription = descriptionText.getText();
+ setPageComplete(true);
+ }
+ }
+ });
+ // -- checkboxes for permissions --
+ readPermissionsCheck.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ uploadWizardState.vmPerms.download = readPermissionsCheck.getSelection();
+ }
+ });
+ linkPermissionsCheck.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ uploadWizardState.vmPerms.link = linkPermissionsCheck.getSelection();
+ }
+ });
+ writePermissionsCheck.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ uploadWizardState.vmPerms.edit = writePermissionsCheck.getSelection();
+ }
+ });
+ adminPermissionsCheck.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ uploadWizardState.vmPerms.admin = adminPermissionsCheck.getSelection();
}
});
+ // -- end checkboxes for permissions --
}
@@ -68,22 +118,84 @@ public class ImageMetaDataPage extends ImageMetaDataPageLayout {
*/
@Override
public void setVisible(boolean visible) {
-
- if (!getControl().isVisible() && visible) {
- LOGGER.debug("Entering ImageMetaDataPage...");
- if (uploadWizardState == null) {
- LOGGER.debug("state is null");
- return;
- }
- LOGGER.debug("vmName: " +
- uploadWizardState.vmName == null ?
+ if (uploadWizardState == null) {
+ // something bad is happening :(
+ LOGGER.debug("null state");
+ return;
+ }
+ boolean currentlyVisible = getControl().isVisible();
+ if (!currentlyVisible && visible) {
+ LOGGER.debug("Entering page...");
+
+ LOGGER.debug(uploadWizardState.vmName == null ?
"null" : uploadWizardState.vmName);
LOGGER.debug("vmDescriptionFile: " +
uploadWizardState.vmDescriptionFile == null ?
"null" : uploadWizardState.vmDescriptionFile.toString());
}
+ // leaving this page
+ if (currentlyVisible && !visible) {
+ LOGGER.debug("Leaving page...");
+ // check state
+ if (validateInput()) {
+ // build imageBaseWrite
+ ImageBaseWrite imageBaseWrite = new ImageBaseWrite(
+ uploadWizardState.vmName,
+ uploadWizardState.vmDescription,
+ uploadWizardState.vmOperatingSystem.getOsId(),
+ uploadWizardState.vmVirtualizer.getVirtId(),
+ uploadWizardState.isTemplate,
+ uploadWizardState.vmPerms,
+ uploadWizardState.vmShareMode);
+ // push to sat
+ // TODO run the actually request over external threaded class
+ try {
+ ThriftManager.getSatClient().updateImageBase(
+ Session.getSatelliteToken(), uploadWizardState.vmUuid.toString(), imageBaseWrite);
+ } catch (TException e) {
+ LOGGER.error("Fail to push image metadata to satellite: ", e);
+ // hm here, just nothing for now
+ }
+ }
+ }
super.setVisible(visible);
}
+
+ private boolean validateInput() {
+ // debug purposes
+ if (uploadWizardState.vmOperatingSystem == null)
+ LOGGER.error("No OS set in state!");
+ if (uploadWizardState.vmDescription == null)
+ LOGGER.error("No description set in state!");
+ if (uploadWizardState.vmDiskFile == null)
+ LOGGER.error("No disk file set in state!");
+ if (uploadWizardState.vmOperatingSystem == null)
+ LOGGER.error("No OS set in state!");
+ if (uploadWizardState.vmVirtualizer == null)
+ LOGGER.error("No virtualizer set in state!");
+ if (uploadWizardState.vmPerms == null)
+ LOGGER.error("No perms set in state!");
+ if (uploadWizardState.vmShareMode == null)
+ LOGGER.error("No share mode set in state!");
+
+ // compact version go over all fields
+ for (Field field : UploadWizardState.class.getDeclaredFields()) {
+ LOGGER.debug(field.toGenericString());
+ if (field.equals(null)) {
+ LOGGER.error("bad");
+ return false;
+ }
+ }
+ // regular
+ return uploadWizardState.isTemplate == null
+ || uploadWizardState.vmDescription == null
+ || uploadWizardState.vmDiskFile == null
+ || uploadWizardState.vmOperatingSystem == null
+ || uploadWizardState.vmVirtualizer == null
+ || uploadWizardState.vmPerms == null
+ || uploadWizardState.vmShareMode == null;
+ }
+
/**
* @param osList list of OS's to fill the combo with
*/
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 e6d77f31..28a9544f 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
@@ -1,6 +1,7 @@
package org.openslx.dozmod.gui.wizard.page;
import java.io.File;
+import java.util.UUID;
import org.apache.log4j.Logger;
import org.eclipse.swt.SWT;
@@ -13,6 +14,7 @@ import org.eclipse.swt.widgets.FileDialog;
import org.openslx.dozmod.Config;
import org.openslx.dozmod.gui.wizard.layout.ImageUploadPageLayout;
import org.openslx.dozmod.state.UploadWizardState;
+import org.openslx.dozmod.thrift.Session;
public class ImageUploadPage extends ImageUploadPageLayout {
@@ -80,12 +82,28 @@ public class ImageUploadPage extends ImageUploadPageLayout {
@Override
public void setVisible(boolean visible) {
if (getControl().isVisible() && !visible) {
- // currently shown and about to be hidden
LOGGER.info("Leaving ImageUploadPage...");
- LOGGER.debug(uploadWizardState.vmName == null ? "vmName: null" : "vmName: " + uploadWizardState.vmName + " fopajkws");
- LOGGER.debug("vmDescriptionFile: " +
- uploadWizardState.vmDescriptionFile == null ?
- "null" : uploadWizardState.vmDescriptionFile.toString());
+ // currently shown and about to be hidden = we're switching to another page
+ if (uploadWizardState.vmUuid == null) {
+ if (Session.getSatelliteToken() == null)
+ LOGGER.error("No session token");
+ UUID newImageUUID = UUID.randomUUID();
+// try {
+// newImageUUID = UUID.fromString(ThriftManager.getSatClient()
+// .createImage(Session.getSatelliteToken(), uploadWizardState.vmName));
+// } catch (Exception e) {
+// Gui.showMessageBox(getShell(), e.getMessage(), MessageType.ERROR_RETRY, LOGGER, e);
+// return;
+// }
+ // all fine
+ uploadWizardState.vmUuid = newImageUUID;
+ LOGGER.debug(uploadWizardState.vmName == null ?
+ "vmName: null" : uploadWizardState.vmName);
+ LOGGER.debug(uploadWizardState.vmDescriptionFile == null ?
+ "vmDesc: null" : uploadWizardState.vmDescriptionFile.getAbsolutePath());
+ // start upload
+ } else
+ LOGGER.debug(uploadWizardState.vmUuid.toString());
}
super.setVisible(visible);
}
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 12ce08a1..471132cc 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/state/UploadWizardState.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/state/UploadWizardState.java
@@ -1,26 +1,33 @@
package org.openslx.dozmod.state;
import java.io.File;
+import java.util.UUID;
+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.Virtualizer;
public class UploadWizardState {
-
// name of the virtual machine as entered by the user
public String vmName;
+ // description of the virtual machine as entered by the user
+ public String vmDescription;
// operating system of the virtual machine to be uploaded
public OperatingSystem vmOperatingSystem;
// description file of the virtual machine to be uploaded
public File vmDescriptionFile;
// disk file of the virtual machine to be uploaded
public File vmDiskFile;
-
- // image metadata holders
-// public ImageBaseWrite imageBaseWrite;
-// public ImageVersionWrite imageVersionWrite;
-
- public UploadWizardState() {
-// this.imageBaseWrite = new ImageBaseWrite();
-// this.imageVersionWrite = new ImageVersionWrite();
- }
+ // UUID given returned by the satellite after creating the image
+ public UUID vmUuid;
+ // flags an image as a template
+ public Boolean isTemplate;
+ // virtualizer for this image (vmware, vbox..)
+ public Virtualizer vmVirtualizer;
+ // permissions assigned to that image by the user
+ // TODO: defaults per sat
+ public ImagePermissions vmPerms;
+ // local, publish, download frozen share mode (see bwlp.thrift in mss)
+ public ShareMode vmShareMode;
}