From e71712450db2e93db3a0361aabea852a02c0af29 Mon Sep 17 00:00:00 2001 From: Maverick Studer Date: Fri, 14 Jun 2024 13:31:10 +0200 Subject: [PATCH] hotfix tenant deletion if no bucket present --- .../service/TenantManagementService.java | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/knecon/fforesight/tenantusermanagement/service/TenantManagementService.java b/src/main/java/com/knecon/fforesight/tenantusermanagement/service/TenantManagementService.java index 1cb254e..ebbd2d9 100644 --- a/src/main/java/com/knecon/fforesight/tenantusermanagement/service/TenantManagementService.java +++ b/src/main/java/com/knecon/fforesight/tenantusermanagement/service/TenantManagementService.java @@ -80,6 +80,7 @@ import software.amazon.awssdk.services.s3.model.DeleteBucketRequest; import software.amazon.awssdk.services.s3.model.DeleteObjectRequest; import software.amazon.awssdk.services.s3.model.ListObjectsRequest; import software.amazon.awssdk.services.s3.model.ListObjectsResponse; +import software.amazon.awssdk.services.s3.model.NoSuchBucketException; import software.amazon.awssdk.services.s3.model.S3Object; @Slf4j @@ -273,13 +274,17 @@ public class TenantManagementService implements TenantProvider { try (var client = storageConfiguration.getS3StorageService().initAmazonS3(s3StorageConnection)) { String bucketName = s3StorageConnection.getBucketName(); ListObjectsRequest listObjects = ListObjectsRequest.builder().bucket(bucketName).build(); + try { ListObjectsResponse objectList = client.listObjects(listObjects); - for (S3Object object : objectList.contents()) { - // Delete each object - client.deleteObject(DeleteObjectRequest.builder().bucket(bucketName).key(object.key()).build()); + for (S3Object object : objectList.contents()) { + // Delete each object + client.deleteObject(DeleteObjectRequest.builder().bucket(bucketName).key(object.key()).build()); + } + DeleteBucketRequest deleteBucketRequest = DeleteBucketRequest.builder().bucket(bucketName).expectedBucketOwner(tenantId).build(); + client.deleteBucket(deleteBucketRequest); + } catch (NoSuchBucketException noSuchBucketException) { + log.info("The bucket did not exist and therefore did not need to be deleted."); } - DeleteBucketRequest deleteBucketRequest = DeleteBucketRequest.builder().bucket(bucketName).expectedBucketOwner(tenantId).build(); - client.deleteBucket(deleteBucketRequest); } } log.info("Deleting mongodb database for tenant: {}", tenant.getTenantId()); @@ -415,6 +420,7 @@ public class TenantManagementService implements TenantProvider { private void deleteMongoDBDatabase(TenantResponse tenant) { MongoDBConnection mongoDBConnection = tenant.getMongoDBConnection(); + mongoDBConnection.setPassword(encryptionService.decrypt(mongoDBConnection.getPassword())); try (MongoClient mongoClient = MongoClients.create(MongoConnectionStringHelper.buildGenericMongoConnectionString(mongoDBConnection))) { String databaseName = mongoDBConnection.getDatabase(); mongoClient.getDatabase(databaseName).drop();