summaryrefslogtreecommitdiffstats
path: root/controller-server/src/main
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@vespa.ai>2023-11-03 10:54:26 +0100
committerBjørn Christian Seime <bjorncs@vespa.ai>2023-11-03 10:54:26 +0100
commit89dd954525fe90c6080dc2f610b489426c9e3a63 (patch)
tree582e3c683134ce196cd0eda660d24866d8cc1519 /controller-server/src/main
parent96f6abe9caa338074ee39cb2fd566d3efff464c9 (diff)
Add method to remove ToS approval
Diffstat (limited to 'controller-server/src/main')
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java12
1 files changed, 12 insertions, 0 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java
index 6cf38a1927c..ebcc81ab756 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java
@@ -437,6 +437,7 @@ public class ApplicationApiHandler extends AuditLoggingRequestHandler {
if (path.matches("/application/v4/tenant/{tenant}/archive-access/aws")) return removeAwsArchiveAccess(path.get("tenant"));
if (path.matches("/application/v4/tenant/{tenant}/archive-access/gcp")) return removeGcpArchiveAccess(path.get("tenant"));
if (path.matches("/application/v4/tenant/{tenant}/secret-store/{name}")) return deleteSecretStore(path.get("tenant"), path.get("name"), request);
+ if (path.matches("/application/v4/tenant/{tenant}/terms-of-service")) return unapproveTermsOfService(path.get("tenant"), request);
if (path.matches("/application/v4/tenant/{tenant}/token/{tokenid}")) return deleteToken(path.get("tenant"), path.get("tokenid"), request);
if (path.matches("/application/v4/tenant/{tenant}/application/{application}")) return deleteApplication(path.get("tenant"), path.get("application"), request);
if (path.matches("/application/v4/tenant/{tenant}/application/{application}/deployment")) return removeAllProdDeployments(path.get("tenant"), path.get("application"));
@@ -1264,6 +1265,17 @@ public class ApplicationApiHandler extends AuditLoggingRequestHandler {
return new MessageResponse("Terms of service approved by %s".formatted(approvedBy.getName()));
}
+ private HttpResponse unapproveTermsOfService(String tenant, HttpRequest req) {
+ if (controller.tenants().require(TenantName.from(tenant)).type() != Tenant.Type.cloud)
+ throw new IllegalArgumentException("Tenant '" + tenant + "' is not a cloud tenant");
+ controller.tenants().lockOrThrow(TenantName.from(tenant), LockedTenant.Cloud.class, t -> {
+ var updatedTenant = t.withInfo(t.get().info().withBilling(t.get().info().billingContact().withToSApproval(
+ TermsOfServiceApproval.empty())));
+ controller.tenants().store(updatedTenant);
+ });
+ return new MessageResponse("Terms of service approval removed");
+ }
+
private HttpResponse addDeveloperKey(String tenantName, HttpRequest request) {
if (controller.tenants().require(TenantName.from(tenantName)).type() != Tenant.Type.cloud)
throw new IllegalArgumentException("Tenant '" + tenantName + "' is not a cloud tenant");