diff options
author | Bjørn Christian Seime <bjorncs@vespa.ai> | 2023-11-03 10:54:26 +0100 |
---|---|---|
committer | Bjørn Christian Seime <bjorncs@vespa.ai> | 2023-11-03 10:54:26 +0100 |
commit | 89dd954525fe90c6080dc2f610b489426c9e3a63 (patch) | |
tree | 582e3c683134ce196cd0eda660d24866d8cc1519 /controller-server/src/main | |
parent | 96f6abe9caa338074ee39cb2fd566d3efff464c9 (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.java | 12 |
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"); |