summaryrefslogtreecommitdiffstats
path: root/config-model/src/main/java/com/yahoo/vespa/model/application/validation/UrlConfigValidator.java
diff options
context:
space:
mode:
Diffstat (limited to 'config-model/src/main/java/com/yahoo/vespa/model/application/validation/UrlConfigValidator.java')
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/UrlConfigValidator.java52
1 files changed, 0 insertions, 52 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/UrlConfigValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/UrlConfigValidator.java
deleted file mode 100644
index e6cd1a9e192..00000000000
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/UrlConfigValidator.java
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.vespa.model.application.validation;
-
-import com.yahoo.config.model.deploy.DeployState;
-import com.yahoo.vespa.model.VespaModel;
-import com.yahoo.vespa.model.container.ApplicationContainerCluster;
-
-import java.util.Optional;
-
-/**
- * Validates that config using s3:// urls is used in public system and with nodes that are exclusive.
- *
- * @author hmusum
- */
-public class UrlConfigValidator extends Validator {
-
- @Override
- public void validate(VespaModel model, DeployState state) {
- if (! state.isHostedTenantApplication(model.getAdmin().getApplicationType())) return;
-
- model.getContainerClusters().forEach((__, cluster) -> {
- var isExclusive = hasExclusiveNodes(model, cluster);
- validateS3UlsInConfig(state, cluster, isExclusive);
- });
- }
-
- private static boolean hasExclusiveNodes(VespaModel model, ApplicationContainerCluster cluster) {
- return model.hostSystem().getHosts()
- .stream()
- .flatMap(hostResource -> hostResource.spec().membership().stream())
- .filter(membership -> membership.cluster().id().equals(cluster.id()))
- .anyMatch(membership -> membership.cluster().isExclusive());
- }
-
- private static void validateS3UlsInConfig(DeployState state, ApplicationContainerCluster cluster, boolean isExclusive) {
- if (hasUrlInConfig(state)) {
- // TODO: Would be even better if we could add which config/field the url is set for in the error message
- String message = "Found s3:// urls in config for container cluster " + cluster.getName();
- if ( ! state.zone().system().isPublic())
- throw new IllegalArgumentException(message + ". This is only supported in public systems");
- else if ( ! isExclusive)
- throw new IllegalArgumentException(message + ". Nodes in the cluster need to be 'exclusive'," +
- " see https://cloud.vespa.ai/en/reference/services#nodes");
- }
- }
-
- private static boolean hasUrlInConfig(DeployState state) {
- return state.getFileRegistry().export().stream()
- .anyMatch(fileReference -> fileReference.relativePath.startsWith("s3://"));
- }
-
-}