diff options
author | andre.schmid <andre.schmid@est.tech> | 2022-03-28 12:22:31 +0100 |
---|---|---|
committer | andre.schmid <andre.schmid@est.tech> | 2022-03-28 12:36:39 +0100 |
commit | 1a3ddb0a21f2ab6fc3bc6607e35ea2b703192ad9 (patch) | |
tree | f843771e2a502bcd2d9aa3b4e83da3c6130db6cd | |
parent | 55401bf89a8bc1c51f76554faac278186560724a (diff) |
Check if the bucket exists before deleting VSP
Checks if the bucket exists before deleting VSP, ignoring the deletion
if the bucket isn't present anymore.
This avoids problems in case the artifact was already deleted from the
artifact storage, but for some reason the VSP still present in the
system.
Change-Id: I7e88f227cc6786b451ca74519fa0dfe0659895c6
Issue-ID: SDC-3930
Signed-off-by: andre.schmid <andre.schmid@est.tech>
2 files changed, 26 insertions, 4 deletions
diff --git a/common-be/src/main/java/org/openecomp/sdc/be/csar/storage/MinIoStorageArtifactStorageManager.java b/common-be/src/main/java/org/openecomp/sdc/be/csar/storage/MinIoStorageArtifactStorageManager.java index bc0792b472..78ee4bed23 100644 --- a/common-be/src/main/java/org/openecomp/sdc/be/csar/storage/MinIoStorageArtifactStorageManager.java +++ b/common-be/src/main/java/org/openecomp/sdc/be/csar/storage/MinIoStorageArtifactStorageManager.java @@ -92,7 +92,7 @@ public class MinIoStorageArtifactStorageManager implements ArtifactStorageManage try { // Make bucket if not exist. - final boolean found = minioClient.bucketExists(BucketExistsArgs.builder().bucket(vspId).build()); + final boolean found = bucketExists(vspId); if (!found) { // Make a new bucket ${vspId} . @@ -174,6 +174,10 @@ public class MinIoStorageArtifactStorageManager implements ArtifactStorageManage @Override public void delete(final String vspId) { LOGGER.debug("DELETE VSP - bucket: '{}'", vspId); + if (!bucketExists(vspId)) { + LOGGER.debug("VSP '{}' bucket was not found while trying to delete it", vspId); + return; + } final var listObjects = minioClient.listObjects(ListObjectsArgs.builder().bucket(vspId).build()); listObjects.forEach(itemResult -> { Item versionId; @@ -193,6 +197,14 @@ public class MinIoStorageArtifactStorageManager implements ArtifactStorageManage } } + private boolean bucketExists(final String vspId) { + try { + return minioClient.bucketExists(BucketExistsArgs.builder().bucket(vspId).build()); + } catch (final Exception e) { + throw new ArtifactStorageException(String.format("An unexpected error occurred while checking for vsp '%s'", vspId), e); + } + } + private MinIoStorageArtifactStorageConfig readMinIoStorageArtifactStorageConfig() { final var commonConfigurationManager = CommonConfigurationManager.getInstance(); final Map<String, Object> endpoint = commonConfigurationManager.getConfigValue(EXTERNAL_CSAR_STORE, ENDPOINT, null); diff --git a/common-be/src/test/java/org/openecomp/sdc/be/csar/storage/MinIoStorageArtifactStorageManagerTest.java b/common-be/src/test/java/org/openecomp/sdc/be/csar/storage/MinIoStorageArtifactStorageManagerTest.java index 09e62841e6..4d12a0be39 100644 --- a/common-be/src/test/java/org/openecomp/sdc/be/csar/storage/MinIoStorageArtifactStorageManagerTest.java +++ b/common-be/src/test/java/org/openecomp/sdc/be/csar/storage/MinIoStorageArtifactStorageManagerTest.java @@ -27,6 +27,7 @@ import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.doThrow; +import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import io.minio.BucketExistsArgs; @@ -155,10 +156,19 @@ class MinIoStorageArtifactStorageManagerTest { @Test void testDeleteVspFail() throws Exception { + when(minioClient.bucketExists(BucketExistsArgs.builder().bucket(VSP_ID).build())).thenReturn(true); doThrow(new RuntimeException()).when(minioClient).removeBucket(any(RemoveBucketArgs.class)); - assertThrows(ArtifactStorageException.class, () -> { - testSubject.delete(VSP_ID); - }); + assertThrows(ArtifactStorageException.class, () -> testSubject.delete(VSP_ID)); + } + + @Test + void testDeleteVspBucketNotFound() throws Exception { + final BucketExistsArgs bucketExistsArgs = BucketExistsArgs.builder().bucket(VSP_ID).build(); + //when + when(minioClient.bucketExists(bucketExistsArgs)).thenReturn(false); + testSubject.delete(VSP_ID); + //then + verify(minioClient).bucketExists(bucketExistsArgs); } @Test |