From 83815a0e0fbfefd5ac9922f7b58d584e16339a4b Mon Sep 17 00:00:00 2001 From: vasraz Date: Fri, 27 May 2022 12:16:57 +0100 Subject: Fix 'VLM restore bug' Signed-off-by: Vasyl Razinkov Change-Id: Ie89c9ce40f3ca841e27584d65fb0637e15be82c2 Issue-ID: SDC-4027 --- .../sdcrests/item/rest/services/ItemsImpl.java | 28 +++++++++++----------- .../sdcrests/item/rest/services/ItemsImplTest.java | 2 ++ 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/openecomp-be/api/openecomp-sdc-rest-webapp/item-rest/item-rest-services/src/main/java/org/openecomp/sdcrests/item/rest/services/ItemsImpl.java b/openecomp-be/api/openecomp-sdc-rest-webapp/item-rest/item-rest-services/src/main/java/org/openecomp/sdcrests/item/rest/services/ItemsImpl.java index c184eca3c1..9fb6ebd8b8 100644 --- a/openecomp-be/api/openecomp-sdc-rest-webapp/item-rest/item-rest-services/src/main/java/org/openecomp/sdcrests/item/rest/services/ItemsImpl.java +++ b/openecomp-be/api/openecomp-sdc-rest-webapp/item-rest/item-rest-services/src/main/java/org/openecomp/sdcrests/item/rest/services/ItemsImpl.java @@ -38,7 +38,6 @@ import javax.inject.Named; import javax.ws.rs.core.Response; import org.openecomp.sdc.activitylog.dao.type.ActivityLogEntity; import org.openecomp.sdc.activitylog.dao.type.ActivityType; -import org.openecomp.sdc.be.csar.storage.ArtifactStorageManager; import org.openecomp.sdc.be.csar.storage.StorageFactory; import org.openecomp.sdc.common.errors.ErrorCode.ErrorCodeBuilder; import org.openecomp.sdc.common.errors.ErrorCodeAndMessage; @@ -55,7 +54,6 @@ import org.openecomp.sdc.versioning.types.NotificationEventTypes; import org.openecomp.sdcrests.item.rest.Items; import org.openecomp.sdcrests.item.rest.mapping.MapItemToDto; import org.openecomp.sdcrests.item.rest.models.SyncEvent; -import org.openecomp.sdcrests.item.rest.services.catalog.notification.Notifier; import org.openecomp.sdcrests.item.rest.services.catalog.notification.NotifierFactory; import org.openecomp.sdcrests.item.types.ItemAction; import org.openecomp.sdcrests.item.types.ItemActionRequestDto; @@ -83,31 +81,33 @@ public class ItemsImpl implements Items { } @Override - public Response actOn(ItemActionRequestDto request, String itemId, String user) { - Item item = getManagersProvider().getItemManager().get(itemId); + public Response actOn(final ItemActionRequestDto request, final String itemId, final String user) { + final var item = getManagersProvider().getItemManager().get(itemId); if (item == null) { return Response.status(NOT_FOUND).entity(new Exception("Item does not exist.")).build(); } - switch (request.getAction()) { + final var action = request.getAction(); + switch (action) { case ARCHIVE: getManagersProvider().getItemManager().archive(item); break; case RESTORE: - final var artifactStorageManager = new StorageFactory().createArtifactStorageManager(); - if (artifactStorageManager.isEnabled() && !artifactStorageManager.exists(itemId)) { - LOGGER.error("Unable to restore partially deleted item '{}'", itemId); - final var errorCode = - new ErrorCodeBuilder().withId(INTERNAL_SERVER_ERROR.name()).withMessage("Unable to restore partially deleted VSP, re-try VSP deletion").build(); - return Response.status(INTERNAL_SERVER_ERROR).entity(new ErrorCodeAndMessage(INTERNAL_SERVER_ERROR, errorCode)).build(); + if (ItemType.vsp.getName().equalsIgnoreCase(item.getType())) { + final var artifactStorageManager = new StorageFactory().createArtifactStorageManager(); + if (artifactStorageManager.isEnabled() && !artifactStorageManager.exists(itemId)) { + LOGGER.error("Unable to restore partially deleted item '{}'", itemId); + final var errorCode = + new ErrorCodeBuilder().withId(INTERNAL_SERVER_ERROR.name()).withMessage("Unable to restore partially deleted VSP, re-try VSP deletion").build(); + return Response.status(INTERNAL_SERVER_ERROR).entity(new ErrorCodeAndMessage(INTERNAL_SERVER_ERROR, errorCode)).build(); + } } getManagersProvider().getItemManager().restore(item); break; default: } - actionSideAffectsMap.get(request.getAction()).execute(item, user); + actionSideAffectsMap.get(action).execute(item, user); try { - Notifier catalogNotifier = NotifierFactory.getInstance(); - catalogNotifier.execute(Collections.singleton(itemId), request.getAction()); + NotifierFactory.getInstance().execute(Collections.singleton(itemId), action); } catch (Exception e) { LOGGER.error("Failed to send catalog notification on item {}", itemId, e); } diff --git a/openecomp-be/api/openecomp-sdc-rest-webapp/item-rest/item-rest-services/src/test/java/org/openecomp/sdcrests/item/rest/services/ItemsImplTest.java b/openecomp-be/api/openecomp-sdc-rest-webapp/item-rest/item-rest-services/src/test/java/org/openecomp/sdcrests/item/rest/services/ItemsImplTest.java index 12056ad4db..25de08304b 100644 --- a/openecomp-be/api/openecomp-sdc-rest-webapp/item-rest/item-rest-services/src/test/java/org/openecomp/sdcrests/item/rest/services/ItemsImplTest.java +++ b/openecomp-be/api/openecomp-sdc-rest-webapp/item-rest/item-rest-services/src/test/java/org/openecomp/sdcrests/item/rest/services/ItemsImplTest.java @@ -53,6 +53,7 @@ import org.mockito.junit.jupiter.MockitoExtension; import org.openecomp.sdc.activitylog.ActivityLogManager; import org.openecomp.sdc.common.CommonConfigurationManager; import org.openecomp.sdc.common.errors.ErrorCodeAndMessage; +import org.openecomp.sdc.datatypes.model.ItemType; import org.openecomp.sdc.versioning.ItemManager; import org.openecomp.sdc.versioning.VersioningManager; import org.openecomp.sdc.versioning.dao.types.Version; @@ -147,6 +148,7 @@ class ItemsImplTest { items.initActionSideAffectsMap(); items.setManagersProvider(managersProvider); when(itemManager.get(any())).thenReturn(item); + when(item.getType()).thenReturn(ItemType.vsp.getName()); when(request.getAction()).thenReturn(RESTORE); when(managersProvider.getItemManager()).thenReturn(itemManager); try (MockedStatic utilities = Mockito.mockStatic(CommonConfigurationManager.class)) { -- cgit 1.2.3-korg