Consider model in generic substitution type query 33/125933/9
authorandre.schmid <andre.schmid@est.tech>
Fri, 26 Nov 2021 10:29:09 +0000 (10:29 +0000)
committerMichael Morris <michael.morris@est.tech>
Thu, 9 Feb 2023 11:39:31 +0000 (11:39 +0000)
Change-Id: I9905b5f6b1bd658befb88b2dbb6903dfaa1f0f8a
Issue-ID: SDC-3794
Signed-off-by: andre.schmid <andre.schmid@est.tech>
catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/generic/GenericTypeBusinessLogic.java
catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/generic/GenericTypeBusinessLogicTest.java

index 600f7fa..52ae99e 100644 (file)
@@ -19,6 +19,8 @@
  */
 package org.openecomp.sdc.be.components.impl.generic;
 
+import static org.openecomp.sdc.common.api.Constants.ABSTRACT;
+
 import fj.data.Either;
 import java.util.ArrayList;
 import java.util.List;
@@ -68,24 +70,35 @@ public class GenericTypeBusinessLogic {
             return Either.right(componentsUtils.getResponseFormat(ActionStatus.GENERAL_ERROR));
         }
         Either<Resource, StorageOperationStatus> genericType;
-        if (StringUtils.isEmpty(component.getDerivedFromGenericVersion())){
-            genericType = toscaOperationFacade
-                .getLatestCertifiedNodeTypeByToscaResourceName(genericTypeToscaName);
+        if (StringUtils.isEmpty(component.getDerivedFromGenericVersion())) {
+            genericType = toscaOperationFacade.getLatestByToscaResourceNameAndModel(genericTypeToscaName, component.getModel());
             if (genericType.isRight()) {
-                log.debug("Failed to fetch certified node type by tosca resource name {}", genericTypeToscaName);
-                return Either.right(componentsUtils.getResponseFormat(ActionStatus.GENERIC_TYPE_NOT_FOUND, component.assetType(), genericTypeToscaName));
+                if (genericTypeToscaName.contains(ABSTRACT)) {
+                    genericType = toscaOperationFacade.getLatestCertifiedNodeTypeByToscaResourceName(genericTypeToscaName);
+                    if (genericType.isRight()) {
+                        log.debug("Failed to fetch certified node type by tosca resource name {}", genericTypeToscaName);
+                        return Either.right(
+                            componentsUtils.getResponseFormat(ActionStatus.GENERIC_TYPE_NOT_FOUND, component.assetType(), genericTypeToscaName));
+                    }
+                } else {
+                    log.debug("Failed to fetch latest node type by tosca resource name {} and model {}", genericTypeToscaName, component.getModel());
+                    return Either.right(
+                        componentsUtils.getResponseFormat(ActionStatus.GENERIC_TYPE_NOT_FOUND, component.assetType(), genericTypeToscaName));
+                }
             }
         } else {
-            genericType = toscaOperationFacade.getByToscaResourceNameAndVersion(genericTypeToscaName, component.getDerivedFromGenericVersion(), component.getModel());
+            genericType = toscaOperationFacade.getByToscaResourceNameAndVersion(genericTypeToscaName, component.getDerivedFromGenericVersion(),
+                component.getModel());
         }
 
         Resource genericTypeResource = genericType.left().value();
         return Either.left(genericTypeResource);
     }
-    
+
     public Either<Resource, ResponseFormat> fetchDerivedFromGenericType(final Component component, final String toscaType) {
         if (StringUtils.isNotEmpty(toscaType)) {
-            final Either<Resource, StorageOperationStatus> genericType = toscaOperationFacade.getLatestByToscaResourceNameAndModel(toscaType, component.getModel());
+            final Either<Resource, StorageOperationStatus> genericType = toscaOperationFacade.getLatestByToscaResourceNameAndModel(toscaType,
+                component.getModel());
             if (genericType.isRight()) {
                 log.debug("Failed to fetch certified node type by tosca resource name {}", toscaType);
                 return Either.right(componentsUtils.getResponseFormat(ActionStatus.GENERIC_TYPE_NOT_FOUND, component.assetType(), toscaType));
index 564e02d..ff0bd72 100644 (file)
@@ -86,8 +86,9 @@ class GenericTypeBusinessLogicTest {
         cvfc.setResourceType(ResourceTypeEnum.CVFC);
         cvfc.setDerivedFrom(Arrays.asList("genericType", "someOtherType"));
         cvfc.setDerivedFromGenericType("genericType");
+        cvfc.setModel("model");
         Resource genericResource = new Resource();
-        when(toscaOperationFacadeMock.getLatestCertifiedNodeTypeByToscaResourceName(cvfc.getDerivedFromGenericType()))
+        when(toscaOperationFacadeMock.getLatestByToscaResourceNameAndModel(cvfc.getDerivedFromGenericType(), cvfc.getModel()))
             .thenReturn(Either.left(genericResource));
         Either<Resource, ResponseFormat> fetchedGenericType = testInstance.fetchDerivedFromGenericType(cvfc);
         assertEquals(genericResource, fetchedGenericType.left().value());
@@ -99,8 +100,10 @@ class GenericTypeBusinessLogicTest {
         when(resource.getResourceType()).thenReturn(ResourceTypeEnum.VF);
         final var genericType = "genericType";
         when(resource.fetchGenericTypeToscaNameFromConfig()).thenReturn(genericType);
+        final var model = "model";
+        when(resource.getModel()).thenReturn(model);
         Resource genericResource = new Resource();
-        when(toscaOperationFacadeMock.getLatestCertifiedNodeTypeByToscaResourceName(genericType)).thenReturn(Either.left(genericResource));
+        when(toscaOperationFacadeMock.getLatestByToscaResourceNameAndModel(genericType, model)).thenReturn(Either.left(genericResource));
         Either<Resource, ResponseFormat> fetchedGenericType = testInstance.fetchDerivedFromGenericType(resource);
         assertEquals(genericResource, fetchedGenericType.left().value());
     }