hotfix tenant deletion if no bucket present

This commit is contained in:
Maverick Studer 2024-06-14 13:31:10 +02:00
parent f0b484895a
commit e71712450d

View File

@ -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();