diff options
2 files changed, 38 insertions, 1 deletions
diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ComponentInstanceBusinessLogic.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ComponentInstanceBusinessLogic.java index d9a0c46fa9..1eb50e846a 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ComponentInstanceBusinessLogic.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ComponentInstanceBusinessLogic.java @@ -95,6 +95,7 @@ import org.openecomp.sdc.common.util.ValidationUtils; import org.openecomp.sdc.exception.ResponseFormat; import org.springframework.beans.factory.annotation.Autowired; +import java.util.Arrays; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -118,6 +119,9 @@ public class ComponentInstanceBusinessLogic extends BaseBusinessLogic { private static final Logger log = Logger.getLogger(ComponentInstanceBusinessLogic.class.getName()); private static final String VF_MODULE = "org.openecomp.groups.VfModule"; public static final String TRY_TO_CREATE_ENTRY_ON_GRAPH = "Try to create entry on graph"; + private static final String CLOUD_SPECIFIC_FIXED_KEY_WORD = "cloudtech"; + private static final String[][] CLOUD_SPECIFIC_KEY_WORDS = {{"k8s", "azure", "aws"}, /* cloud specific technology */ + {"charts", "day0", "configtemplate"} /*cloud specific sub type*/}; public static final String FAILED_TO_CREATE_ENTRY_ON_GRAPH_FOR_COMPONENT_INSTANCE = "Failed to create entry on graph for component instance {}"; public static final String ENTITY_ON_GRAPH_IS_CREATED = "Entity on graph is created."; public static final String INVALID_COMPONENT_TYPE = "invalid component type"; @@ -489,6 +493,20 @@ public class ComponentInstanceBusinessLogic extends BaseBusinessLogic { return resultOp; } + public boolean isCloudSpecificArtifact(String artifact) { + if (artifact.contains(CLOUD_SPECIFIC_FIXED_KEY_WORD)) { + for (int i = 0; i < CLOUD_SPECIFIC_KEY_WORDS.length; i++) { + if (Arrays.stream(CLOUD_SPECIFIC_KEY_WORDS[i]).noneMatch(str -> artifact.contains(str))) { + return false; + } + } + return true; + } else { + return false; + } + } + + /** * addResourceInstanceArtifacts - add artifacts (HEAT_ENV) to resource instance The instance artifacts are generated from the resource's artifacts * @param containerComponent @@ -520,7 +538,7 @@ public class ComponentInstanceBusinessLogic extends BaseBusinessLogic { if (!type.equalsIgnoreCase(ArtifactTypeEnum.HEAT_ENV.getType())) { finalDeploymentArtifacts.put(artifact.getArtifactLabel(), artifact); } - if (!(type.equalsIgnoreCase(ArtifactTypeEnum.HEAT.getType()) || type.equalsIgnoreCase(ArtifactTypeEnum.HEAT_NET.getType()) || type.equalsIgnoreCase(ArtifactTypeEnum.HEAT_VOL.getType()))) { + if (!(type.equalsIgnoreCase(ArtifactTypeEnum.HEAT.getType()) || type.equalsIgnoreCase(ArtifactTypeEnum.HEAT_NET.getType()) || type.equalsIgnoreCase(ArtifactTypeEnum.HEAT_VOL.getType()) || type.equalsIgnoreCase(ArtifactTypeEnum.CLOUD_TECHNOLOGY_SPECIFIC_ARTIFACT.getType()))) { continue; } if (artifact.checkEsIdExist()) { @@ -550,6 +568,10 @@ public class ComponentInstanceBusinessLogic extends BaseBusinessLogic { groupInstancesArtifacts.put(groupInstance.getUniqueId(), artifactsUid); break; } + + if (isCloudSpecificArtifact(artifactDefinition.getArtifactName())) { + groupInstance.getArtifacts().add(artifactDefinition.getGeneratedFromId()); + } } } } diff --git a/catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/ComponentInstanceBusinessLogicTest.java b/catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/ComponentInstanceBusinessLogicTest.java index b5d937e0e8..360f12579a 100644 --- a/catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/ComponentInstanceBusinessLogicTest.java +++ b/catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/ComponentInstanceBusinessLogicTest.java @@ -62,6 +62,7 @@ import org.openecomp.sdc.exception.ResponseFormat; import java.util.function.BiPredicate; import static org.junit.Assert.assertTrue; +import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertSame; import static org.junit.Assert.assertEquals; import static org.mockito.ArgumentMatchers.any; @@ -90,6 +91,11 @@ public class ComponentInstanceBusinessLogicTest { private final static String REQUIREMENT_UID = "requirementUid"; private final static String REQUIREMENT_NAME = "requirementName"; private final static String RELATIONSHIP_TYPE = "relationshipType"; + private final static String ARTIFACT_1 = "cloudtech_k8s_charts.zip"; + private final static String ARTIFACT_2 = "cloudtech_azure_day0.zip"; + private final static String ARTIFACT_3 = "cloudtech_aws_configtemplate.zip"; + private final static String ARTIFACT_4 = "k8s_charts.zip"; + private final static String ARTIFACT_5 = "cloudtech_openstack_configtemplate.zip"; @InjectMocks private static ComponentInstanceBusinessLogic componentInstanceBusinessLogic; @@ -154,6 +160,15 @@ public class ComponentInstanceBusinessLogicTest { getforwardingPathOnVersionChange(); } + @Test + public void testIsCloudSpecificArtifact() { + assertTrue(componentInstanceBusinessLogic.isCloudSpecificArtifact(ARTIFACT_1)); + assertTrue(componentInstanceBusinessLogic.isCloudSpecificArtifact(ARTIFACT_2)); + assertTrue(componentInstanceBusinessLogic.isCloudSpecificArtifact(ARTIFACT_3)); + assertFalse(componentInstanceBusinessLogic.isCloudSpecificArtifact(ARTIFACT_4)); + assertFalse(componentInstanceBusinessLogic.isCloudSpecificArtifact(ARTIFACT_5)); + } + private void getforwardingPathOnVersionChange(){ String containerComponentParam="services"; String containerComponentID="121-cont"; |