Fix 'VLM restore bug' 13/129413/2
authorvasraz <vasyl.razinkov@est.tech>
Fri, 27 May 2022 11:16:57 +0000 (12:16 +0100)
committerVasyl Razinkov <vasyl.razinkov@est.tech>
Fri, 27 May 2022 11:41:23 +0000 (11:41 +0000)
Signed-off-by: Vasyl Razinkov <vasyl.razinkov@est.tech>
Change-Id: Ie89c9ce40f3ca841e27584d65fb0637e15be82c2
Issue-ID: SDC-4027

openecomp-be/api/openecomp-sdc-rest-webapp/item-rest/item-rest-services/src/main/java/org/openecomp/sdcrests/item/rest/services/ItemsImpl.java
openecomp-be/api/openecomp-sdc-rest-webapp/item-rest/item-rest-services/src/test/java/org/openecomp/sdcrests/item/rest/services/ItemsImplTest.java

index c184eca..9fb6ebd 100644 (file)
@@ -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);
         }
index 12056ad..25de083 100644 (file)
@@ -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<CommonConfigurationManager> utilities = Mockito.mockStatic(CommonConfigurationManager.class)) {