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;
}