From ce9ef4750cf57bce92ad929a7e77651b4935370e Mon Sep 17 00:00:00 2001 From: Henrik Schulz <9443119+HS24@users.noreply.github.com> Date: Thu, 14 May 2026 08:49:36 +0200 Subject: [PATCH] Selecting nodeIdentifiers by RegEx Uses the nodeIdentifier as a regular expression to select matching nodes dynamically (e.g. worker-.*). Classic nodeIdentifiers without RegEx (like 'worker-1') are still possible. This enables a dynamic node selection in cluster environments where nodes can be dynamically started or stopped. Previously all nodes had to be specified individually and produced an error if one was missing. --- .../activity/run/distribution/ExpectedSetup.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/repo/repo-common/src/main/java/com/evolveum/midpoint/repo/common/activity/run/distribution/ExpectedSetup.java b/repo/repo-common/src/main/java/com/evolveum/midpoint/repo/common/activity/run/distribution/ExpectedSetup.java index 3992742c372..e445f465a5b 100644 --- a/repo/repo-common/src/main/java/com/evolveum/midpoint/repo/common/activity/run/distribution/ExpectedSetup.java +++ b/repo/repo-common/src/main/java/com/evolveum/midpoint/repo/common/activity/run/distribution/ExpectedSetup.java @@ -136,7 +136,16 @@ private List getWorkersPerNode() { private Collection getNodeIdentifiers(WorkersPerNodeDefinitionType perNodeDefinition) { if (!perNodeDefinition.getNodeIdentifier().isEmpty()) { - return perNodeDefinition.getNodeIdentifier(); + Set nodeIds = new HashSet<>(); + for (String nodeIdentifier : perNodeDefinition.getNodeIdentifier()) { + try { + Predicate pattern = Pattern.compile(nodeIdentifier).asMatchPredicate(); + nodeIds.addAll(nodesUp.stream().filter(pattern).toList()); + } catch (PatternSyntaxException e) { + nodeIds.addAll(nodesUp.stream().filter(nodeIdentifier::equals).toList()); + } + } + return nodeIds; } else { return nodesUp; }