diff options
author | jonmv <venstad@gmail.com> | 2023-08-30 13:28:04 +0200 |
---|---|---|
committer | jonmv <venstad@gmail.com> | 2023-08-30 13:28:04 +0200 |
commit | 48efe7bc28cdf4ae7c38f1a3794779a0f60bcfd8 (patch) | |
tree | 2c6dff296260cabf98e72f216807517defa27d11 /config-model | |
parent | 58bc7893a5cfc62aa7debdf231447cea7600576a (diff) |
Use deployed cloud account when deciding host TTL, and ignore when noclave
Diffstat (limited to 'config-model')
-rw-r--r-- | config-model/src/main/java/com/yahoo/config/model/ConfigModelContext.java | 10 | ||||
-rw-r--r-- | config-model/src/test/java/com/yahoo/vespa/model/ClusterInfoTest.java | 8 |
2 files changed, 6 insertions, 12 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 abd803dcebb..ad50ad02171 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 @@ -9,6 +9,7 @@ import com.yahoo.config.model.api.ModelContext; import com.yahoo.config.model.deploy.DeployState; import com.yahoo.config.model.producer.AnyConfigProducer; import com.yahoo.config.model.producer.TreeConfigProducer; +import com.yahoo.config.provision.CloudAccount; import com.yahoo.config.provision.ClusterInfo; import com.yahoo.config.provision.ClusterInfo.Builder; import com.yahoo.config.provision.zone.ZoneId; @@ -81,13 +82,8 @@ public final class ConfigModelContext { ClusterInfo.Builder builder = new ClusterInfo.Builder(); spec.hostTTL(properties().applicationId().instance(), deployState.zone().environment(), deployState.zone().region()) .filter(ttl -> ! ttl.isZero()) - .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"); - builder.hostTTL(ttl); - }); + .filter(__ -> deployState.getProperties().cloudAccount().map(account -> ! account.isUnspecified()).orElse(false)) + .ifPresent(builder::hostTTL); spec.instance(properties().applicationId().instance()) .flatMap(instance -> instance.bcp().groups().stream() .filter(group -> group.memberRegions().contains(properties().zone().region())) diff --git a/config-model/src/test/java/com/yahoo/vespa/model/ClusterInfoTest.java b/config-model/src/test/java/com/yahoo/vespa/model/ClusterInfoTest.java index 1734e9f074f..16e13a66a44 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/ClusterInfoTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/ClusterInfoTest.java @@ -12,6 +12,7 @@ import com.yahoo.config.provision.Cloud; import com.yahoo.config.provision.CloudAccount; import com.yahoo.config.provision.CloudName; import com.yahoo.config.provision.ClusterSpec; +import com.yahoo.config.provision.ClusterSpec.Id; import com.yahoo.config.provision.Environment; import com.yahoo.config.provision.InstanceName; import com.yahoo.config.provision.RegionName; @@ -216,7 +217,7 @@ public class ClusterInfoTest { <deployment version='1.0' empty-host-ttl='1d'> <instance id='default'> <prod> - <region cloud-account='gcp:foobar'>us-east-1</region> + <region>us-east-1</region> <region empty-host-ttl='0m'>us-north-1</region> <region>us-west-1</region> </prod> @@ -228,10 +229,7 @@ public class ClusterInfoTest { CloudAccount account = CloudAccount.from("gcp:foobar"); assertEquals(Duration.ofHours(24), requestedCapacityIn(account, gcp, "default", "us-east-1", servicesXml, deploymentXml).get(new ClusterSpec.Id("testcontainer")).clusterInfo().hostTTL()); assertEquals(Duration.ZERO, requestedCapacityIn(account, gcp, "default", "us-north-1", servicesXml, deploymentXml).get(new ClusterSpec.Id("testcontainer")).clusterInfo().hostTTL()); - assertEquals("In container cluster 'testcontainer': deployment spec specifies host TTL for prod.us-west-1 but no cloud account is specified for this zone", - Exceptions.toMessageString(assertThrows(IllegalArgumentException.class, - () -> requestedCapacityIn(account, gcp, "default", "us-west-1", servicesXml, deploymentXml)))); - + assertEquals(Duration.ZERO, requestedCapacityIn(CloudAccount.empty, gcp, "default", "us-west-1", servicesXml, deploymentXml).get(new Id("testcontainer")).clusterInfo().hostTTL()); } private Map<ClusterSpec.Id, Capacity> requestedCapacityIn(String instance, String region, String servicesXml, String deploymentXml) throws Exception { |