summaryrefslogtreecommitdiffstats
path: root/controller-api
diff options
context:
space:
mode:
authorEirik Nygaard <eirik.nygaard@yahooinc.com>2022-05-25 14:20:53 +0200
committerEirik Nygaard <eirik.nygaard@yahooinc.com>2022-05-25 15:22:17 +0200
commit03b9ea8cc73793c427d2358e4f7b96cd8e3800cf (patch)
treec728b673e07d53e4bd20849ef011d3a3b8835eb9 /controller-api
parent9bd5c77ab39308e3fe99ab540c1113d974d4b3a0 (diff)
Expose GCP archive member setting in API
Diffstat (limited to 'controller-api')
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/role/PathGroup.java5
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/tenant/ArchiveAccess.java26
2 files changed, 25 insertions, 6 deletions
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/role/PathGroup.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/role/PathGroup.java
index b5f03756777..f87da90f8ef 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/role/PathGroup.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/role/PathGroup.java
@@ -62,7 +62,10 @@ enum PathGroup {
"/application/v4/tenant/{tenant}/key/"),
tenantArchiveAccess(Matcher.tenant,
- "/application/v4/tenant/{tenant}/archive-access"),
+ "/application/v4/tenant/{tenant}/archive-access",
+ "/application/v4/tenant/{tenant}/archive-access/aws",
+ "/application/v4/tenant/{tenant}/archive-access/gcp"),
+
billingToken(Matcher.tenant,
"/billing/v1/tenant/{tenant}/token"),
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/tenant/ArchiveAccess.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/tenant/ArchiveAccess.java
index 6336fddb8be..fba361f9223 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/tenant/ArchiveAccess.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/tenant/ArchiveAccess.java
@@ -24,7 +24,7 @@ public class ArchiveAccess {
this(Optional.empty(), Optional.empty());
}
- public ArchiveAccess(Optional<String> awsRole, Optional<String> gcpMember) {
+ private ArchiveAccess(Optional<String> awsRole, Optional<String> gcpMember) {
this.awsRole = awsRole;
this.gcpMember = gcpMember;
@@ -32,12 +32,28 @@ public class ArchiveAccess {
gcpMember.ifPresent(member -> validateGCPMember(member));
}
- public static ArchiveAccess fromAWSRole(String role) {
- return new ArchiveAccess(Optional.of(role), Optional.empty());
+ public ArchiveAccess withAWSRole(String role) {
+ return new ArchiveAccess(Optional.of(role), gcpMember());
}
- public static ArchiveAccess fromGCPMember(String member) {
- return new ArchiveAccess(Optional.empty(), Optional.of(member));
+ public ArchiveAccess withGCPMember(String member) {
+ return new ArchiveAccess(awsRole(), Optional.of(member));
+ }
+
+ public ArchiveAccess withAWSRole(Optional<String> role) {
+ return new ArchiveAccess(role, gcpMember());
+ }
+
+ public ArchiveAccess withGCPMember(Optional<String> member) {
+ return new ArchiveAccess(awsRole(), member);
+ }
+
+ public ArchiveAccess removeAWSRole() {
+ return new ArchiveAccess(Optional.empty(), gcpMember());
+ }
+
+ public ArchiveAccess removeGCPMember() {
+ return new ArchiveAccess(awsRole(), Optional.empty());
}
private void validateAWSIAMRole(String role) {