From ee74f04fe01b32cdd5a859730a78f19e7e01a938 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Tue, 11 Dec 2018 10:47:17 +0100 Subject: Revert "[client] Get rid of Feature checks; RPC version was bumped" This reverts commit b9f993161d7a8472e82f2c747c2361a3ba411b6a. --- .../openslx/dozmod/gui/activity/UploadPanel.java | 13 ++++++++---- .../gui/configurator/LdapFilterConfigurator.java | 2 +- .../dozmod/gui/window/ImageDetailsWindow.java | 8 +++++--- .../dozmod/gui/window/ImagePublishedWindow.java | 15 ++++++++------ .../window/layout/LectureDetailsWindowLayout.java | 9 +++++++-- .../dozmod/gui/wizard/page/ImageUploadPage.java | 23 ++++++++++++++++++++-- 6 files changed, 52 insertions(+), 18 deletions(-) diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/activity/UploadPanel.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/activity/UploadPanel.java index 57c167e9..ea339651 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/activity/UploadPanel.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/activity/UploadPanel.java @@ -16,6 +16,7 @@ import org.openslx.dozmod.gui.helper.MessageType; import org.openslx.dozmod.state.UploadWizardState; import org.openslx.dozmod.thrift.Session; import org.openslx.dozmod.thrift.UploadInitiator; +import org.openslx.sat.thrift.version.Feature; import org.openslx.thrifthelper.ThriftManager; import org.openslx.util.QuickTimer; import org.openslx.util.QuickTimer.Task; @@ -33,10 +34,14 @@ public class UploadPanel extends TransferPanel { public UploadPanel(UploadWizardState state) { super(state.upload.getUploadTask(), state.name, state.diskFile.getName()); - chkServerSideCopy = new JCheckBox("ServerSide Copy"); - footer.add(Box.createHorizontalStrut(15)); - footer.add(chkServerSideCopy); - chkServerSideCopy.addActionListener(new SscToggle()); + if (!Session.hasFeature(Feature.SERVER_SIDE_COPY)) { + chkServerSideCopy = null; + } else { + chkServerSideCopy = new JCheckBox("ServerSide Copy"); + footer.add(Box.createHorizontalStrut(15)); + footer.add(chkServerSideCopy); + chkServerSideCopy.addActionListener(new SscToggle()); + } btnClose.addActionListener(new ButtonAction()); this.state = state.upload; state.upload.getUploadTask().addListener(this); diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/configurator/LdapFilterConfigurator.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/configurator/LdapFilterConfigurator.java index 6ebd180f..08fd52da 100755 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/configurator/LdapFilterConfigurator.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/configurator/LdapFilterConfigurator.java @@ -147,7 +147,7 @@ public class LdapFilterConfigurator extends LdapFilterConfiguratorLayout { public List getState() { List> current = tblFilters.getData(); if (current == null) - return new ArrayList<>(0); + return new ArrayList<>(0);; ArrayList ret = new ArrayList<>(current.size()); for (Wrapper item : current) { if (item.isChecked() || item.item.filterId == 0) { diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java index 241656f6..1dacf8df 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java @@ -66,6 +66,7 @@ import org.openslx.dozmod.thrift.cache.MetaDataCache; import org.openslx.dozmod.thrift.cache.UserCache; import org.openslx.dozmod.util.DesktopEnvironment; import org.openslx.dozmod.util.FormatHelper; +import org.openslx.sat.thrift.version.Feature; import org.openslx.thrifthelper.Comparators; import org.openslx.thrifthelper.TConst; import org.openslx.thrifthelper.ThriftManager; @@ -324,7 +325,8 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe && ImagePerms.canEdit(image) && (image.shareMode == ShareMode.LOCAL || image.shareMode == ShareMode.PUBLISH)); mnuDelete.setEnabled(ImagePerms.canEdit(image)); - mnuExtendExpiryDate.setEnabled(!multiSelection && selectedVersion.isValid); + mnuExtendExpiryDate.setEnabled(!multiSelection && (selectedVersion.isValid + || Session.hasFeature(Feature.EXTEND_EXPIRED_VM))); pop.show(e.getComponent(), e.getX(), e.getY()); } } @@ -491,8 +493,8 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe * masterserver. */ private void uploadToMaster() { - // TODO 04.2018: bail if we the user tries to publish a non-vmware image. - if (!TConst.VIRT_VMWARE.equals(image.virtId)) { + // 04.2018: bail if we the user tries to publish a non-vmware image. + if (Session.hasFeature(Feature.MULTIPLE_HYPERVISORS) && !TConst.VIRT_VMWARE.equals(image.virtId)) { Gui.showMessageBox( MetaDataCache.getVirtualizerById(image.virtId).virtName + " ist derzeit nicht für den öffentlichen Austausch freigegeben.", diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImagePublishedWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImagePublishedWindow.java index 117ca324..c81af1a6 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImagePublishedWindow.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImagePublishedWindow.java @@ -42,6 +42,7 @@ import org.openslx.dozmod.thrift.ThriftError; import org.openslx.dozmod.thrift.cache.ImagePublishedCache; import org.openslx.dozmod.thrift.cache.OrganizationCache; import org.openslx.dozmod.thrift.cache.UserCache; +import org.openslx.sat.thrift.version.Feature; import org.openslx.thrifthelper.TConst; import org.openslx.thrifthelper.ThriftManager; import org.openslx.util.QuickTimer; @@ -253,14 +254,16 @@ public class ImagePublishedWindow extends ImagePublishedWindowLayout implements final List imagePublishedList = ImagePublishedCache.get(forceRefresh); if (imagePublishedList == null) return; - // TODO 04.2018: Safety check to hide the non-vmware images from the list + // 04.2018: Safety check to hide the non-vmware images from the list // in case they somehow manage to get published. Remove this when we // support publishing images from other hypervisors. - for (Iterator iter = imagePublishedList.listIterator(); iter - .hasNext();) { - ImageSummaryRead current = iter.next(); - if (current != null && !current.virtId.equals(TConst.VIRT_VMWARE)) { - iter.remove(); + if (Session.hasFeature(Feature.MULTIPLE_HYPERVISORS)) { + for (Iterator iter = imagePublishedList.listIterator(); iter + .hasNext();) { + ImageSummaryRead current = iter.next(); + if (current != null && !current.virtId.equals(TConst.VIRT_VMWARE)) { + iter.remove(); + } } } Gui.asyncExec(new Runnable() { diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/LectureDetailsWindowLayout.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/LectureDetailsWindowLayout.java index dd049c79..4eae542c 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/LectureDetailsWindowLayout.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/LectureDetailsWindowLayout.java @@ -43,6 +43,7 @@ import org.openslx.dozmod.gui.helper.GridManager; import org.openslx.dozmod.thrift.Session; import org.openslx.dozmod.thrift.cache.MetaDataCache; import org.openslx.dozmod.util.FormatHelper; +import org.openslx.sat.thrift.version.Feature; import org.openslx.thrifthelper.Comparators; @SuppressWarnings("serial") @@ -407,8 +408,12 @@ public abstract class LectureDetailsWindowLayout extends JDialog { pnlTabs.addTab("VM-Start", pnlTabRunscript); } pnlTabs.addTab("Berechtigungen", pnlTabPermissions); - pnlTabs.addTab("Netzlaufwerke", pnlTabNetshare); - pnlTabs.addTab("LDAP-Filter", pnlTabLdapFilter); + if (Session.hasFeature(Feature.NETWORK_SHARES)) { + pnlTabs.addTab("Netzlaufwerke", pnlTabNetshare); + } + if (Session.hasFeature(Feature.LECTURE_FILTER_LDAP)) { + pnlTabs.addTab("LDAP-Filter", pnlTabLdapFilter); + } add(pnlTabs, BorderLayout.CENTER); // usage counter + button panel on the bottom JPanel buttonPanel = new JPanel(); 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 87555a4a..16ca257e 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 @@ -23,16 +23,20 @@ import org.openslx.dozmod.gui.helper.QFileChooser; import org.openslx.dozmod.gui.wizard.Wizard; import org.openslx.dozmod.gui.wizard.layout.ImageUploadPageLayout; import org.openslx.dozmod.state.UploadWizardState; +import org.openslx.dozmod.thrift.Session; import org.openslx.dozmod.thrift.ThriftActions; import org.openslx.dozmod.thrift.ThriftError; import org.openslx.dozmod.thrift.UploadInitiator; import org.openslx.dozmod.thrift.WrappedException; import org.openslx.dozmod.thrift.cache.MetaDataCache; +import org.openslx.sat.thrift.version.Feature; import org.openslx.thrifthelper.TConst; import org.openslx.util.vm.DiskImage; import org.openslx.util.vm.DiskImage.UnknownImageFormatException; +import org.openslx.util.vm.UnsupportedVirtualizerFormatException; import org.openslx.util.vm.VmMetaData; import org.openslx.util.vm.VmMetaData.HardDisk; +import org.openslx.util.vm.VmwareMetaData; /** * Page for uploading a new image. @@ -82,7 +86,13 @@ public class ImageUploadPage extends ImageUploadPageLayout { browseForVm(); } }); - allSupportedFilter = new FileNameExtensionFilter("All Supported", "vmx", "vbox"); + // initialize allSupportedFilter depending on whether multiple hypervisors + // are supported or not + if (Session.hasFeature(Feature.MULTIPLE_HYPERVISORS)) { + allSupportedFilter = new FileNameExtensionFilter("All Supported", "vmx", "vbox"); + } else { + allSupportedFilter = new FileNameExtensionFilter("All Supported", "vmx"); + } btnBrowseForImage.requestFocus(); } @@ -90,7 +100,9 @@ public class ImageUploadPage extends ImageUploadPageLayout { QFileChooser fc = new QFileChooser(Config.getUploadPath(), false); fc.setAcceptAllFileFilterUsed(false); fc.addChoosableFileFilter(vmxFilter); - fc.addChoosableFileFilter(vboxFilter); + if (Session.hasFeature(Feature.MULTIPLE_HYPERVISORS)) { + fc.addChoosableFileFilter(vboxFilter); + } fc.addChoosableFileFilter(allSupportedFilter); fc.setFileFilter(allSupportedFilter); // differentiate between existing and new VMs @@ -131,6 +143,13 @@ public class ImageUploadPage extends ImageUploadPageLayout { } final String fileformat = state.meta.getVirtualizer().virtName; + // bail if multiple hypervisors are not supported + if (!(state.meta instanceof VmwareMetaData) && !Session.hasFeature(Feature.MULTIPLE_HYPERVISORS)) { + setErrorMessage("Der Hypervisor der gewählten VM (" + fileformat + + ") wird vom aktuellen Satellitenserver nicht unterstützt."); + setPageComplete(false); + return; + } // check if the user somehow changed the type of the VM if (existingImage != null && !existingImage.virtId.equals(state.meta.getVirtualizer().virtId)) { Virtualizer existingImageVirtualizer = MetaDataCache.getVirtualizerById(existingImage.virtId); -- cgit v1.2.3-55-g7522