diff options
author | jonmv <venstad@gmail.com> | 2023-06-02 16:19:43 +0200 |
---|---|---|
committer | jonmv <venstad@gmail.com> | 2023-06-02 16:19:43 +0200 |
commit | a82b87143f8dcc1218a0ce5718fcf09c73c1485c (patch) | |
tree | 91aa7ec0c267471601b280fd623902fa9e28f452 /config-model/src/main/java | |
parent | ad9ca41f6d7e54abbce9b279d341f0efaa802781 (diff) |
Allow parallell cloud accounts in dep-spec, and simply some usages
Diffstat (limited to 'config-model/src/main/java')
-rw-r--r-- | config-model/src/main/java/com/yahoo/config/model/ConfigModelContext.java | 28 | ||||
-rw-r--r-- | config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java | 4 |
2 files changed, 17 insertions, 15 deletions
diff --git a/config-model/src/main/java/com/yahoo/config/model/ConfigModelContext.java b/config-model/src/main/java/com/yahoo/config/model/ConfigModelContext.java index a9ee884e977..b4b3dccd440 100644 --- a/config-model/src/main/java/com/yahoo/config/model/ConfigModelContext.java +++ b/config-model/src/main/java/com/yahoo/config/model/ConfigModelContext.java @@ -2,6 +2,7 @@ package com.yahoo.config.model; import com.yahoo.config.application.api.ApplicationPackage; +import com.yahoo.config.application.api.Bcp.Group; import com.yahoo.config.application.api.DeployLogger; import com.yahoo.config.application.api.DeploymentSpec; import com.yahoo.config.model.api.ModelContext; @@ -10,6 +11,7 @@ import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; import com.yahoo.config.provision.ClusterInfo; import com.yahoo.config.provision.ClusterInfo.Builder; +import com.yahoo.config.provision.zone.ZoneId; import com.yahoo.vespa.model.VespaModel; import java.time.Duration; @@ -76,19 +78,21 @@ public final class ConfigModelContext { /** Returns a cluster info builder pre-populated with info known in this context. */ public ClusterInfo.Builder clusterInfo() { DeploymentSpec spec = getApplicationPackage().getDeploymentSpec(); - var instance = spec.instance(properties().applicationId().instance()); ClusterInfo.Builder builder = new ClusterInfo.Builder(); - spec.hostTTL().ifPresent(builder::hostTTL); - if (instance.isEmpty()) return builder; - instance.get() - .hostTTL(deployState.zone().environment(), Optional.of(deployState.zone().region())) - .ifPresent(builder::hostTTL); - var maxDeadline = instance.get().bcp().groups().stream() - .filter(group -> group.memberRegions().contains(properties().zone().region())) - .map(group -> group.deadline()) - .min(Comparator.comparing(deadline -> deadline)) - .orElse(Duration.ofMinutes(0)); - return builder.bcpDeadline(maxDeadline); + spec.hostTTL(properties().applicationId().instance(), deployState.zone().environment(), deployState.zone().region()) + .ifPresent(ttl -> { + ZoneId zoneId = ZoneId.from(deployState.zone().environment(), deployState.zone().region()); + if (spec.cloudAccount(deployState.zone().cloud().name(), properties().applicationId().instance(), zoneId).isUnspecified()) + throw new IllegalArgumentException("deployment spec specifies host TTL for " + zoneId + + " but no cloud account is specified for this zone"); + }); + spec.instance(properties().applicationId().instance()) + .flatMap(instance -> instance.bcp().groups().stream() + .filter(group -> group.memberRegions().contains(properties().zone().region())) + .map(Group::deadline) + .min(Comparator.naturalOrder())) + .ifPresent(builder::bcpDeadline); + return builder; } /** 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 b0b9125603e..e9517e1e64d 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 @@ -1163,9 +1163,7 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> { DeploymentSpec spec) { spec.athenzDomain() .ifPresent(domain -> { - AthenzService service = spec.instance(app.getApplicationId().instance()) - .flatMap(instanceSpec -> instanceSpec.athenzService(zone.environment(), zone.region())) - .or(spec::athenzService) + AthenzService service = spec.athenzService(app.getApplicationId().instance(), zone.environment(), zone.region()) .orElseThrow(() -> new IllegalArgumentException("Missing Athenz service configuration in instance '" + app.getApplicationId().instance() + "'")); String zoneDnsSuffix = zone.environment().value() + "-" + zone.region().value() + "." + athenzDnsSuffix; |