summaryrefslogtreecommitdiffstats
path: root/config-provisioning
diff options
context:
space:
mode:
authorHåkon Hallingstad <hakon@yahooinc.com>2024-04-17 16:39:32 +0200
committerHåkon Hallingstad <hakon@yahooinc.com>2024-04-17 16:39:32 +0200
commit41e07031f1d807096f8053feb1e3606f6d3854f8 (patch)
treebc3a8ee9aa1aa0c1889d023e1df76202ed9b8bee /config-provisioning
parent69bda751ffc40a4351300c33e7c1f0868ecae248 (diff)
Propagate cloud account to ResourcesCalculator
Diffstat (limited to 'config-provisioning')
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/CloudAccount.java9
-rw-r--r--config-provisioning/src/test/java/com/yahoo/config/provision/CloudAccountTest.java2
2 files changed, 9 insertions, 2 deletions
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/CloudAccount.java b/config-provisioning/src/main/java/com/yahoo/config/provision/CloudAccount.java
index 36a37d61b13..59845faa855 100644
--- a/config-provisioning/src/main/java/com/yahoo/config/provision/CloudAccount.java
+++ b/config-provisioning/src/main/java/com/yahoo/config/provision/CloudAccount.java
@@ -3,6 +3,7 @@ package com.yahoo.config.provision;
import java.util.Map;
import java.util.Objects;
+import java.util.Optional;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
@@ -19,7 +20,8 @@ public class CloudAccount implements Comparable<CloudAccount> {
private static final Map<String, CloudMeta> META_BY_CLOUD = Map.of(
"aws", new CloudMeta("Account ID", Pattern.compile("[0-9]{12}")),
"azure", new CloudMeta("Subscription ID", Pattern.compile("[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}")),
- "gcp", new CloudMeta("Project ID", Pattern.compile("[a-z][a-z0-9-]{4,28}[a-z0-9]")));
+ "gcp", new CloudMeta("Project ID", Pattern.compile("[a-z][a-z0-9-]{4,28}[a-z0-9]")),
+ "yahoo", new CloudMeta("OpenStack Project", Pattern.compile("[a-zA-Z0-9._-]+")));
/** Empty value. When this is used, either implicitly or explicitly, the zone will use its default account */
public static final CloudAccount empty = new CloudAccount("", CloudName.DEFAULT);
@@ -58,6 +60,11 @@ public class CloudAccount implements Comparable<CloudAccount> {
!equals(zone.cloud().account());
}
+ /** Returns a cloud account if this is an enclave account, or empty otherwise. */
+ public Optional<CloudAccount> toEnclaveAccount(Zone zone) {
+ return isEnclave(zone) ? Optional.of(this) : Optional.empty();
+ }
+
@Override
public String toString() {
return isUnspecified() ? "unspecified account" : "account '" + account + "' in " + cloudName;
diff --git a/config-provisioning/src/test/java/com/yahoo/config/provision/CloudAccountTest.java b/config-provisioning/src/test/java/com/yahoo/config/provision/CloudAccountTest.java
index 5af9cdb9263..68bde6ee471 100644
--- a/config-provisioning/src/test/java/com/yahoo/config/provision/CloudAccountTest.java
+++ b/config-provisioning/src/test/java/com/yahoo/config/provision/CloudAccountTest.java
@@ -73,7 +73,7 @@ class CloudAccountTest {
assertInvalidAccount("aws:123", "Invalid cloud account 'aws:123': Account ID must match '[0-9]{12}'");
assertInvalidAccount("gcp:123", "Invalid cloud account 'gcp:123': Project ID must match '[a-z][a-z0-9-]{4,28}[a-z0-9]'");
assertInvalidAccount("$something", "Invalid cloud account '$something': Must be on format '<cloud-name>:<account>' or 'default'");
- assertInvalidAccount("unknown:account", "Invalid cloud account 'unknown:account': Cloud name must be one of: aws, azure, gcp");
+ assertInvalidAccount("unknown:account", "Invalid cloud account 'unknown:account': Cloud name must be one of: aws, azure, gcp, yahoo");
}
private static void assertInvalidAccount(String account, String message) {