diff options
author | Valerij Fredriksen <freva@users.noreply.github.com> | 2024-05-22 09:30:37 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-05-22 09:30:37 +0200 |
commit | 0c63bb70d57d05444f3e899fbaa93d51057f0699 (patch) | |
tree | 1c5c429182c9313821a7f5ac9dce58459ab89a3a /flags | |
parent | f8d5d0d3e12f0f98b592cd0a8279451861fd54bf (diff) | |
parent | 02af2d38847ceaa4f083087b3d846a1422c48c7e (diff) |
Merge pull request #31263 from vespa-engine/hakonhall/type-safe-setting-of-cloud-account-and-clave-dimensions
Type-safe setting of cloud-account and clave dimensions
Diffstat (limited to 'flags')
-rw-r--r-- | flags/src/main/java/com/yahoo/vespa/flags/Flag.java | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/Flag.java b/flags/src/main/java/com/yahoo/vespa/flags/Flag.java index e4a8a1cd439..4d49d52fa73 100644 --- a/flags/src/main/java/com/yahoo/vespa/flags/Flag.java +++ b/flags/src/main/java/com/yahoo/vespa/flags/Flag.java @@ -3,6 +3,7 @@ package com.yahoo.vespa.flags; import com.yahoo.component.Version; import com.yahoo.config.provision.ApplicationId; +import com.yahoo.config.provision.CloudAccount; import com.yahoo.config.provision.CloudName; import com.yahoo.config.provision.ClusterSpec; import com.yahoo.config.provision.Environment; @@ -50,6 +51,16 @@ public interface Flag<T, F extends Flag<T, F>> { /** architecture MUST NOT be 'any'. */ default F with(Architecture architecture) { return with(Dimension.ARCHITECTURE, architecture.name()); } + /** + * Sets the cloud-account dimension ONLY IF it is an enclave account.<br/> + * Sets the clave dimension to "enclave" if it is an enclave account, otherwise "noclave". + */ + default F with(CloudAccount cloudAccount, Zone zone) { + return cloudAccount.isEnclave(zone) + ? with(Dimension.CLOUD_ACCOUNT, Optional.of(cloudAccount).map(CloudAccount::value)) + .with(Dimension.CLAVE, "enclave") + : with(Dimension.CLAVE, "noclave"); + } default F with(CloudName cloud) { return with(Dimension.CLOUD, cloud.value()); } default F with(ClusterSpec.Id clusterId) { return with(Dimension.CLUSTER_ID, clusterId.value()); } default F with(ClusterSpec.Type clusterType) { return with(Dimension.CLUSTER_TYPE, clusterType.name()); } @@ -66,6 +77,7 @@ public interface Flag<T, F extends Flag<T, F>> { default F withApplicationId(Optional<ApplicationId> applicationId) { return applicationId.map(this::with).orElse(self()); } /** architecture MUST NOT be 'any'. */ default F withArchitecture(Optional<Architecture> architecture) { return architecture.map(this::with).orElse(self()); } + default F withCloudAccount(Optional<CloudAccount> cloudAccount, Zone zone) { return cloudAccount.map(account -> with(account, zone)).orElse(self()); } default F withCloudName(Optional<CloudName> cloud) { return cloud.map(this::with).orElse(self()); } default F withClusterId(Optional<ClusterSpec.Id> clusterId) { return clusterId.map(this::with).orElse(self()); } default F withClusterType(Optional<ClusterSpec.Type> clusterType) { return clusterType.map(this::with).orElse(self()); } |