From abe06b46582408b0e7ecdbe43ef985a71806b55d Mon Sep 17 00:00:00 2001 From: Michael Lipp Date: Sat, 9 Nov 2024 11:08:59 +0000 Subject: [PATCH] Adapt viewer preview controls to permission changes. --- .../org/jdrupes/vmoperator/util/DataPath.java | 1 + .../jdrupes/vmoperator/vmviewer/VmViewer.java | 24 +++++++++---------- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/org.jdrupes.vmoperator.util/src/org/jdrupes/vmoperator/util/DataPath.java b/org.jdrupes.vmoperator.util/src/org/jdrupes/vmoperator/util/DataPath.java index be5b530..7a6596b 100644 --- a/org.jdrupes.vmoperator.util/src/org/jdrupes/vmoperator/util/DataPath.java +++ b/org.jdrupes.vmoperator.util/src/org/jdrupes/vmoperator/util/DataPath.java @@ -31,6 +31,7 @@ import java.util.logging.Logger; */ public final class DataPath { + @SuppressWarnings("PMD.FieldNamingConventions") private static final Logger logger = Logger.getLogger(DataPath.class.getName()); diff --git a/org.jdrupes.vmoperator.vmviewer/src/org/jdrupes/vmoperator/vmviewer/VmViewer.java b/org.jdrupes.vmoperator.vmviewer/src/org/jdrupes/vmoperator/vmviewer/VmViewer.java index 8920e4c..a21c420 100644 --- a/org.jdrupes.vmoperator.vmviewer/src/org/jdrupes/vmoperator/vmviewer/VmViewer.java +++ b/org.jdrupes.vmoperator.vmviewer/src/org/jdrupes/vmoperator/vmviewer/VmViewer.java @@ -45,6 +45,7 @@ import java.util.Optional; import java.util.ResourceBundle; import java.util.Set; import java.util.logging.Level; +import java.util.stream.Collectors; import org.bouncycastle.util.Objects; import org.jdrupes.vmoperator.common.K8sObserver; import org.jdrupes.vmoperator.common.VmDefinition; @@ -55,7 +56,6 @@ import org.jdrupes.vmoperator.manager.events.ModifyVm; import org.jdrupes.vmoperator.manager.events.ResetVm; import org.jdrupes.vmoperator.manager.events.VmChannel; import org.jdrupes.vmoperator.manager.events.VmDefChanged; -import org.jdrupes.vmoperator.util.DataPath; import org.jgrapes.core.Channel; import org.jgrapes.core.Components; import org.jgrapes.core.Event; @@ -123,7 +123,7 @@ public class VmViewer extends FreeMarkerConlet { private static ObjectMapper objectMapper = new ObjectMapper().registerModule(new JavaTimeModule()); private Class preferredIpVersion = Inet4Address.class; - private final Set syncUsers = new HashSet<>(); + private Set syncUsers = new HashSet<>(); private final Set syncRoles = new HashSet<>(); private boolean deleteConnectionFile = true; @@ -173,15 +173,12 @@ public class VmViewer extends FreeMarkerConlet { .filter(v -> v instanceof String).map(v -> (String) v) .map(Boolean::parseBoolean).orElse(true); - // Sync - for (var entry : (List>) c.getOrDefault( - "syncPreviewsFor", Collections.emptyList())) { - if (entry.containsKey("user")) { - syncUsers.add(entry.get("user")); - } else if (entry.containsKey("role")) { - syncRoles.add(entry.get("role")); - } - } + // Sync preview for users or roles + syncUsers = ((List>) c.getOrDefault( + "syncPreviewsFor", Collections.emptyList())).stream() + .map(m -> Optional.ofNullable(m.get("user")) + .orElse(m.get("role"))) + .filter(s -> s != null).collect(Collectors.toSet()); } catch (ClassCastException e) { logger.config("Malformed configuration: " + e.getMessage()); } @@ -367,8 +364,9 @@ public class VmViewer extends FreeMarkerConlet { fmModel(event, channel, conletId, model))) .setRenderAs( RenderMode.Preview.addModifiers(event.renderAs())) - .setSupportedModes( - model.isGenerated() ? MODES_FOR_GENERATED : MODES)); + .setSupportedModes(syncPreviews(channel.session()) + ? MODES_FOR_GENERATED + : MODES)); renderedAs.add(RenderMode.Preview); if (!Strings.isNullOrEmpty(model.vmName())) { Optional.ofNullable(channel.session().get(RENDERED))