aboutsummaryrefslogtreecommitdiffstats
path: root/controller-server/src/main
diff options
context:
space:
mode:
authorOla Aunrønning <olaa@verizonmedia.com>2021-12-02 14:43:43 +0100
committerOla Aunrønning <olaa@verizonmedia.com>2021-12-02 14:43:43 +0100
commit8de87bd5c425689970395c80781fdfe3ba9d98f6 (patch)
treebe04f1b054ff3f1bb48a08dccfc8b07b46084a9d /controller-server/src/main
parent0c15763bef77955744d9b26785f78ced4fe7042c (diff)
Delete app before tenant. Add test
Diffstat (limited to 'controller-server/src/main')
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java6
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/UserManagementMaintainer.java4
2 files changed, 8 insertions, 2 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java
index 9e7c614d4e8..49939f4bfd2 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java
@@ -561,6 +561,10 @@ public class ApplicationController {
* @throws IllegalArgumentException if the application has deployments or the caller is not authorized
*/
public void deleteApplication(TenantAndApplicationId id, Credentials credentials) {
+ deleteApplication(id, Optional.of(credentials));
+ }
+
+ public void deleteApplication(TenantAndApplicationId id, Optional<Credentials> credentials) {
lockApplicationOrThrow(id, application -> {
var deployments = application.get().instances().values().stream()
.filter(instance -> ! instance.deployments().isEmpty())
@@ -580,7 +584,7 @@ public class ApplicationController {
applicationStore.removeAllTesters(id.tenant(), id.application());
applicationStore.putMetaTombstone(id.tenant(), id.application(), clock.instant());
- accessControl.deleteApplication(id, credentials);
+ credentials.ifPresent(creds -> accessControl.deleteApplication(id, creds));
curator.removeApplication(id);
controller.jobController().collectGarbage();
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/UserManagementMaintainer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/UserManagementMaintainer.java
index 0d278b7be6d..05a7e2368d1 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/UserManagementMaintainer.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/UserManagementMaintainer.java
@@ -14,7 +14,7 @@ import java.util.stream.Collectors;
/**
* Maintains user management resources.
- * For now, ensures there's no discrepnacy between expected tenant/application roles and Auth0 roles
+ * For now, ensures there's no discrepnacy between expected tenant/application roles and auth0/athenz roles
*
* @author olaa
*/
@@ -41,6 +41,8 @@ public class UserManagementMaintainer extends ControllerMaintainer {
roleMaintainer.tenantsToDelete(tenants)
.forEach(tenant -> {
logger.warning(tenant.name() + " has a non-existing Athenz domain. Deleting");
+ controller().applications().asList(tenant.name())
+ .forEach(application -> controller().applications().deleteApplication(application.id(), Optional.empty()));
controller().tenants().delete(tenant.name(), Optional.empty(), false);
});
}