summaryrefslogtreecommitdiffstats
path: root/config-model/src/main/java
diff options
context:
space:
mode:
authorMorten Tokle <mortent@vespa.ai>2024-04-17 22:53:16 +0200
committerMorten Tokle <mortent@vespa.ai>2024-04-17 22:54:57 +0200
commit2b264b1ac241ab7b27a0c3c37749daaad16c0c8e (patch)
tree0d4231cee30987fd0b17cf0e02ad482473394bf5 /config-model/src/main/java
parent83b0e810215725e86b0066c1bead886c5bc5ac9d (diff)
Check for duplicate clients
Diffstat (limited to 'config-model/src/main/java')
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java7
1 files changed, 7 insertions, 0 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java
index 360a02256a9..c6fca8d32c6 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java
@@ -506,6 +506,13 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> {
boolean atLeastOneClientWithCertificate = clients.stream().anyMatch(client -> !client.certificates().isEmpty());
if (!atLeastOneClientWithCertificate)
throw new IllegalArgumentException("At least one client must require a certificate");
+
+ List<String> duplicates = clients.stream().collect(Collectors.groupingBy(Client::id))
+ .entrySet().stream().filter(entry -> entry.getValue().size() > 1)
+ .map(Map.Entry::getKey).sorted().toList();
+ if (! duplicates.isEmpty()) {
+ throw new IllegalArgumentException("Duplicate client ids: " + duplicates);
+ }
}
List<X509Certificate> operatorAndTesterCertificates = deployState.getProperties().operatorCertificates();