aboutsummaryrefslogtreecommitdiffstats
path: root/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/TestUtils.java
diff options
context:
space:
mode:
Diffstat (limited to 'openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/TestUtils.java')
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/TestUtils.java576
1 files changed, 572 insertions, 4 deletions
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/TestUtils.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/TestUtils.java
index b52abfa927..763631ff5e 100644
--- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/TestUtils.java
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/TestUtils.java
@@ -1,14 +1,51 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * SDC
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
package org.openecomp.sdc.translator;
-import org.openecomp.sdc.common.utils.AsdcCommon;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.tuple.Pair;
+import org.junit.Assert;
import org.openecomp.core.translator.api.HeatToToscaTranslator;
import org.openecomp.core.utilities.file.FileUtils;
-import org.junit.Assert;
+import org.openecomp.sdc.common.utils.SdcCommon;
+import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel;
+import org.openecomp.sdc.tosca.datatypes.model.GroupDefinition;
+import org.openecomp.sdc.tosca.datatypes.model.NodeTemplate;
+import org.openecomp.sdc.tosca.datatypes.model.RequirementAssignment;
+import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate;
+import org.openecomp.sdc.tosca.services.DataModelUtil;
+import org.openecomp.sdc.tosca.services.yamlutil.ToscaExtensionYamlUtil;
+import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.*;
-import java.io.*;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+import java.nio.file.NotDirectoryException;
+import java.util.*;
public class TestUtils {
- private static final String MANIFEST_NAME = AsdcCommon.MANIFEST_NAME;
+ private static final String MANIFEST_NAME = SdcCommon.MANIFEST_NAME;
private static String zipFilename = "VSP.zip";
private static String validationFilename = "validationOutput.json";
@@ -40,4 +77,535 @@ public class TestUtils {
}
}
}
+
+ /**
+ * Get tosca service template models for the files in a directory
+ * @param baseDirPath base directory for the tosca file
+ * @return Map of <ServiceTemplateFilename, ServiceTemplate> for the files in this directory
+ */
+ public static Map<String, ServiceTemplate> getServiceTemplates(String baseDirPath){
+ Map<String, ServiceTemplate> serviceTemplateMap = new HashMap<>();
+ ToscaExtensionYamlUtil toscaExtensionYamlUtil = new ToscaExtensionYamlUtil();
+ baseDirPath = "."+baseDirPath+"/";
+ try {
+ String[] fileList = {};
+ URL filesDirUrl = TestUtils.class.getClassLoader().getResource(baseDirPath);
+ if (filesDirUrl != null && filesDirUrl.getProtocol().equals("file")) {
+ fileList = new File(filesDirUrl.toURI()).list();
+ } else {
+ Assert.fail("Invalid expected output files directory");
+ }
+ for (int i = 0; i < fileList.length; i++) {
+ InputStream serviceTemplateInputStream = FileUtils.getFileInputStream(TestUtils.class
+ .getClassLoader().getResource(baseDirPath + fileList[i]));
+ ServiceTemplate serviceTemplate = toscaExtensionYamlUtil.yamlToObject
+ (serviceTemplateInputStream, ServiceTemplate.class);
+ serviceTemplateMap.put(fileList[i], serviceTemplate);
+ }
+ } catch (Exception e) {
+ Assert.fail(e.getMessage());
+ }
+ return serviceTemplateMap;
+ }
+
+ /**
+ * Get tosca service template models
+ * @param expectedResultMap Map of filename and payload of the expected result files
+ * @return Map of <ServiceTemplateFilename, ServiceTemplate> for the files in this directory
+ */
+ public static Map<String, ServiceTemplate> getServiceTemplates(Map<String, byte[]>
+ expectedResultMap){
+ Map<String, ServiceTemplate> serviceTemplateMap = new HashMap<>();
+ ToscaExtensionYamlUtil toscaExtensionYamlUtil = new ToscaExtensionYamlUtil();
+ for(String fileName : expectedResultMap.keySet()){
+ ServiceTemplate serviceTemplate = toscaExtensionYamlUtil.yamlToObject
+ (new String(expectedResultMap.get(fileName)), ServiceTemplate.class);
+ serviceTemplateMap.put(fileName, serviceTemplate);
+ }
+ return serviceTemplateMap;
+ }
+
+
+ public static ToscaServiceModel loadToscaServiceModel(String serviceTemplatesPath,
+ String globalServiceTemplatesPath,
+ String entryDefinitionServiceTemplate)
+ throws IOException {
+ ToscaExtensionYamlUtil toscaExtensionYamlUtil = new ToscaExtensionYamlUtil();
+ Map<String, ServiceTemplate> serviceTemplates = new HashMap<>();
+ if (entryDefinitionServiceTemplate == null) {
+ entryDefinitionServiceTemplate = "MainServiceTemplate.yaml";
+ }
+
+ serviceTemplates = getServiceTemplates(serviceTemplatesPath);
+ if (globalServiceTemplatesPath != null) {
+ serviceTemplates = getServiceTemplates(globalServiceTemplatesPath);
+ }
+
+ return new ToscaServiceModel(null, serviceTemplates, entryDefinitionServiceTemplate);
+ }
+
+ public static ServiceTemplate loadServiceTemplate(String serviceTemplatePath)
+ throws IOException {
+ ServiceTemplate serviceTemplateFromYaml = new ServiceTemplate();
+ ToscaExtensionYamlUtil toscaExtensionYamlUtil = new ToscaExtensionYamlUtil();
+ URL urlFile = TestUtils.class.getResource(serviceTemplatePath);
+ if (urlFile != null) {
+ File pathFile = new File(urlFile.getFile());
+ File[] files = pathFile.listFiles();
+ for (File file : files) {
+ try (InputStream yamlFile = new FileInputStream(file)) {
+ serviceTemplateFromYaml =
+ toscaExtensionYamlUtil.yamlToObject(yamlFile, ServiceTemplate.class);
+ createConcreteRequirementObjectsInServiceTemplate(serviceTemplateFromYaml, toscaExtensionYamlUtil);
+ try {
+ yamlFile.close();
+ } catch (IOException ignore) {
+ }
+ } catch (FileNotFoundException e) {
+ throw e;
+ } catch (IOException e) {
+ throw e;
+ }
+ }
+ } else {
+ throw new NotDirectoryException(serviceTemplatePath);
+ }
+ return serviceTemplateFromYaml;
+ }
+
+
+ public static void loadServiceTemplates(String serviceTemplatesPath,
+ ToscaExtensionYamlUtil toscaExtensionYamlUtil,
+ Map<String, ServiceTemplate> serviceTemplates)
+ throws IOException {
+ URL urlFile = TestUtils.class.getResource(serviceTemplatesPath);
+ if (urlFile != null) {
+ File pathFile = new File(urlFile.getFile());
+ File[] files = pathFile.listFiles();
+ if (files != null) {
+ addServiceTemplateFiles(serviceTemplates, files, toscaExtensionYamlUtil);
+ } else {
+ throw new NotDirectoryException(serviceTemplatesPath);
+ }
+ } else {
+ throw new NotDirectoryException(serviceTemplatesPath);
+ }
+ }
+
+ private static void addServiceTemplateFiles(Map<String, ServiceTemplate> serviceTemplates,
+ File[] files,
+ ToscaExtensionYamlUtil toscaExtensionYamlUtil)
+ throws IOException {
+ for (File file : files) {
+ try (InputStream yamlFile = new FileInputStream(file)) {
+ ServiceTemplate serviceTemplateFromYaml =
+ toscaExtensionYamlUtil.yamlToObject(yamlFile, ServiceTemplate.class);
+ createConcreteRequirementObjectsInServiceTemplate(serviceTemplateFromYaml, toscaExtensionYamlUtil);
+ serviceTemplates.put(file.getName(), serviceTemplateFromYaml);
+ try {
+ yamlFile.close();
+ } catch (IOException ignore) {
+ }
+ } catch (FileNotFoundException e) {
+ throw e;
+ } catch (IOException e) {
+ throw e;
+ }
+ }
+ }
+
+ private static void createConcreteRequirementObjectsInServiceTemplate(ServiceTemplate
+ serviceTemplateFromYaml,
+ ToscaExtensionYamlUtil
+ toscaExtensionYamlUtil) {
+
+ if (serviceTemplateFromYaml == null
+ || serviceTemplateFromYaml.getTopology_template() == null
+ || serviceTemplateFromYaml.getTopology_template().getNode_templates() == null) {
+ return;
+ }
+
+ //Creating concrete objects
+ Map<String, NodeTemplate> nodeTemplates =
+ serviceTemplateFromYaml.getTopology_template().getNode_templates();
+ for (Map.Entry<String, NodeTemplate> entry : nodeTemplates.entrySet()) {
+ NodeTemplate nodeTemplate = entry.getValue();
+ List<Map<String, RequirementAssignment>> requirements = nodeTemplate.getRequirements();
+ List<Map<String, RequirementAssignment>> concreteRequirementList = new ArrayList<>();
+ if (requirements != null) {
+ ListIterator<Map<String, RequirementAssignment>> reqListIterator = requirements
+ .listIterator();
+ while (reqListIterator.hasNext()){
+ Map<String, RequirementAssignment> requirement = reqListIterator.next();
+ Map<String, RequirementAssignment> concreteRequirement = new HashMap<>();
+ for (Map.Entry<String, RequirementAssignment> reqEntry : requirement.entrySet()) {
+ RequirementAssignment requirementAssignment = (toscaExtensionYamlUtil
+ .yamlToObject(toscaExtensionYamlUtil.objectToYaml(reqEntry.getValue()),
+ RequirementAssignment.class));
+ concreteRequirement.put(reqEntry.getKey(), requirementAssignment);
+ concreteRequirementList.add(concreteRequirement);
+ reqListIterator.remove();
+ }
+ }
+ requirements.clear();
+ requirements.addAll(concreteRequirementList);
+ nodeTemplate.setRequirements(requirements);
+ }
+ System.out.println();
+ //toscaExtensionYamlUtil.yamlToObject(nodeTemplate, NodeTemplate.class);
+ }
+ }
+
+ public static void updateMultiplePortConsolidationDatas(String serviceTemplateName,
+ List<String> portNodeTemplateIds,
+ List<List<String>> nodesConnectedInIds,
+ List<List<String>> nodesConnectedOutIds,
+ List<List<String>> groupIds,
+ List<List<String>> getAttrInIds,
+ List<List<Pair<String, GetAttrFuncData>>> getAttrOutFuncDataList,
+ ConsolidationData consolidationData){
+ for(int i = 0; i < portNodeTemplateIds.size(); i++){
+ updatePortConsolidationData(serviceTemplateName, portNodeTemplateIds.get(i),
+ nodesConnectedInIds.get(i), nodesConnectedOutIds.get(i),
+ groupIds.get(i), getAttrInIds.get(i),getAttrOutFuncDataList.get(i), consolidationData);
+ }
+ }
+
+ public static void updatePortConsolidationData(String serviceTemplateFileName,
+ String portNodeTemplateId,
+ List<String> nodesConnectedInIds,
+ List<String> nodesConnectedOutIds,
+ List<String> groupIds, List<String> getAttrInIds,
+ List<Pair<String, GetAttrFuncData>> getAttrOutFuncDataList,
+ ConsolidationData consolidationData) {
+
+ PortTemplateConsolidationData portTemplateConsolidationData =
+ createPortTemplateConsolidationData(portNodeTemplateId);
+
+ updateRelationsForEntityConsolidationData(portNodeTemplateId, nodesConnectedInIds,
+ nodesConnectedOutIds, groupIds, getAttrInIds, getAttrOutFuncDataList, portTemplateConsolidationData);
+
+ consolidationData.getPortConsolidationData()
+ .getFilePortConsolidationData(serviceTemplateFileName)
+ .setPortTemplateConsolidationData(portNodeTemplateId, portTemplateConsolidationData);
+ }
+
+ public static PortTemplateConsolidationData createPortTemplateConsolidationData(
+ String portNodeTemplateId) {
+ PortTemplateConsolidationData portTemplateConsolidationData =
+ new PortTemplateConsolidationData();
+ portTemplateConsolidationData.setNodeTemplateId(portNodeTemplateId);
+ return portTemplateConsolidationData;
+ }
+
+ public static void initPortConsolidationData(String serviceTemplateFileName,
+ ConsolidationData consolidationData) {
+
+ consolidationData.getPortConsolidationData()
+ .setFilePortConsolidationData(serviceTemplateFileName, new FilePortConsolidationData());
+ }
+
+ public static void updateComputeTemplateConsolidationData(String serviceTemplateFileName,
+ String computeNodeTypeName,
+ String computeNodeTemplateId,
+ List<String> nodeIdsConnectedIn,
+ List<String> nodeIdsConnectedOut,
+ List<String> volumeIds,
+ List<String> groupIds,
+ List<String> getAttrInIds,
+ List<Pair<String, GetAttrFuncData>> getAttrOutIds,
+ List<Pair<String, String>> portTypeToIdList,
+ ConsolidationData consolidationData) {
+
+ initComputeNodeTemplateIdInConsolidationData(serviceTemplateFileName, computeNodeTypeName,
+ computeNodeTemplateId, consolidationData);
+
+ Map<String, List<RequirementAssignmentData>> volumes =
+ consolidationData.getComputeConsolidationData().getFileComputeConsolidationData
+ (serviceTemplateFileName).getTypeComputeConsolidationData(computeNodeTypeName)
+ .getComputeTemplateConsolidationData(computeNodeTemplateId).getVolumes();
+
+ ComputeTemplateConsolidationData computeTemplateConsolidationData =
+ createComputeTemplateConsolidationData(computeNodeTemplateId, portTypeToIdList, volumes);
+
+ updateRelationsForEntityConsolidationData(computeNodeTemplateId, nodeIdsConnectedIn,
+ nodeIdsConnectedOut, groupIds, getAttrInIds, getAttrOutIds, computeTemplateConsolidationData);
+
+ updateVolumes(computeTemplateConsolidationData, volumeIds);
+
+ consolidationData.getComputeConsolidationData()
+ .getFileComputeConsolidationData(serviceTemplateFileName)
+ .getTypeComputeConsolidationData(computeNodeTypeName)
+ .setComputeTemplateConsolidationData(computeNodeTemplateId,
+ computeTemplateConsolidationData);
+ }
+
+ private static void updateRelationsForEntityConsolidationData(String entityNodeTemplateId,
+ List<String> nodeIdsConnectedIn,
+ List<String> nodeIdsConnectedOut,
+ List<String> groupIds,
+ List<String> getAttrInIds,
+ List<Pair<String, GetAttrFuncData>> getAttrOutFuncDataList,
+ EntityConsolidationData entity) {
+ updateRelationsIn(entity, nodeIdsConnectedIn);
+ updateRelationsOut(entity, entityNodeTemplateId, nodeIdsConnectedOut);
+ updateGetAttrIn(entity, getAttrInIds);
+ updateGetAttrOut(entity, getAttrOutFuncDataList);
+ entity.setGroupIds(groupIds);
+ }
+
+ public static void initComputeNodeTemplateIdInConsolidationData(String serviceTemplateFileName,
+ String computeNodeTypeName,
+ String computeNodeTemplateId,
+ ConsolidationData consolidationData) {
+
+ if(Objects.isNull(consolidationData.getComputeConsolidationData().getFileComputeConsolidationData
+ (serviceTemplateFileName))) {
+ consolidationData.getComputeConsolidationData().setFileComputeConsolidationData
+ (serviceTemplateFileName, new FileComputeConsolidationData());
+ }
+ TypeComputeConsolidationData typeComputeConsolidationData =
+ consolidationData.getComputeConsolidationData().getFileComputeConsolidationData
+ (serviceTemplateFileName).getTypeComputeConsolidationData(computeNodeTypeName);
+
+ if(
+ typeComputeConsolidationData.getComputeTemplateConsolidationData(computeNodeTemplateId) == null) {
+
+ consolidationData.getComputeConsolidationData()
+ .getFileComputeConsolidationData(serviceTemplateFileName)
+ .getTypeComputeConsolidationData(computeNodeTypeName)
+ .setComputeTemplateConsolidationData(computeNodeTemplateId, new ComputeTemplateConsolidationData());
+
+ }
+ }
+
+ public static void updateNestedConsolidationData(String serviceTemplateName,
+ List<String> substitutionNodeTemplateIds,
+ ConsolidationData consolidationData){
+ if(Objects.isNull(consolidationData.getNestedConsolidationData())){
+ consolidationData.setNestedConsolidationData(new NestedConsolidationData());
+ }
+
+ FileNestedConsolidationData fileNestedConsolidationData = new FileNestedConsolidationData();
+ for(String substitutionNodeTemplateId : substitutionNodeTemplateIds) {
+ NestedTemplateConsolidationData nestedTemplateConsolidationData = new NestedTemplateConsolidationData();
+ nestedTemplateConsolidationData.setNodeTemplateId(substitutionNodeTemplateId);
+ fileNestedConsolidationData.setNestedTemplateConsolidationData(substitutionNodeTemplateId, nestedTemplateConsolidationData);
+ }
+ consolidationData.getNestedConsolidationData().setFileNestedConsolidationData(serviceTemplateName, fileNestedConsolidationData);
+ }
+
+ public static ComputeTemplateConsolidationData createComputeTemplateConsolidationData(String computeNodeTemplateId,
+ List<Pair<String, String>> portTypeToIdList,
+ Map<String,List<RequirementAssignmentData>> volumes) {
+ ComputeTemplateConsolidationData compute = new ComputeTemplateConsolidationData();
+ compute.setNodeTemplateId(computeNodeTemplateId);
+ if (portTypeToIdList != null) {
+ for (Pair<String, String> port : portTypeToIdList) {
+ compute.addPort(port.getLeft(), port.getRight());
+ }
+ }
+ compute.setVolumes(volumes);
+ return compute;
+ }
+
+ public static void updateRelationsIn(EntityConsolidationData entity,
+ List<String> idsPontingTome){
+ if(CollectionUtils.isEmpty(idsPontingTome)){
+ return;
+ }
+
+ for(String pointingId : idsPontingTome){
+ entity.addNodesConnectedIn(pointingId, entity.getNodeTemplateId(), new RequirementAssignment());
+ }
+ }
+
+ public static void updateRelationsOut(EntityConsolidationData entity,
+ String nodeTemplateId,
+ List<String> idsToUpdate){
+ if(CollectionUtils.isEmpty(idsToUpdate)){
+ return;
+ }
+
+ for(String id : idsToUpdate){
+ entity.addNodesConnectedOut(id, id, new RequirementAssignment());
+ }
+ }
+
+ public static void updateGetAttrIn(EntityConsolidationData entity,
+ List<String> idsToUpdate){
+ if(CollectionUtils.isEmpty(idsToUpdate)){
+ return;
+ }
+
+ for(String id : idsToUpdate){
+ entity.addNodesGetAttrIn(id, new GetAttrFuncData());
+ }
+ }
+
+ public static void updateGetAttrOut(EntityConsolidationData entity,
+ List<Pair<String, GetAttrFuncData>> getAttrOutIds){
+ if(CollectionUtils.isEmpty(getAttrOutIds)){
+ return;
+ }
+
+ for(Pair<String, GetAttrFuncData> getAttrOutFunc : getAttrOutIds){
+ entity.addNodesGetAttrOut(getAttrOutFunc.getLeft(), getAttrOutFunc.getRight());
+ }
+ }
+
+ public static void updateVolumes(ComputeTemplateConsolidationData compute,
+ List<String> volumeIds){
+ if(CollectionUtils.isEmpty(volumeIds)){
+ return;
+ }
+
+ for(String id : volumeIds){
+ RequirementAssignment requirementAssignment = new RequirementAssignment();
+ requirementAssignment.setNode(id);
+ compute.addVolume(id, requirementAssignment);
+ }
+ }
+
+ public static void initComputeNodeTypeInConsolidationData(String serviceTemplateFileName,
+ String computeNodeTypeName,
+ ConsolidationData consolidationData) {
+ ComputeConsolidationData computeConsolidationData =
+ consolidationData.getComputeConsolidationData();
+ if (!computeConsolidationData.getAllServiceTemplateFileNames()
+ .contains(serviceTemplateFileName)) {
+ computeConsolidationData
+ .setFileComputeConsolidationData(serviceTemplateFileName,
+ new FileComputeConsolidationData());
+ }
+ computeConsolidationData
+ .getFileComputeConsolidationData(serviceTemplateFileName).setTypeComputeConsolidationData(
+ computeNodeTypeName, new TypeComputeConsolidationData());
+ }
+
+ public static Map<String, List<RequirementAssignmentData>> getNodeConnectedOutList(
+ NodeTemplate nodeTemplate, String requirementKey) {
+ Map<String, List<RequirementAssignmentData>> requirementAssignmentDataMap = new HashMap<>();
+ Optional<List<RequirementAssignmentData>> requirementAssignmentDataList =
+ TestUtils.createRequirementAssignmentDataList(nodeTemplate, requirementKey);
+ if (requirementAssignmentDataList.isPresent()) {
+ for (RequirementAssignmentData requirementAssignmentData : requirementAssignmentDataList
+ .get()) {
+ String connectedNodeTemplateId = requirementAssignmentData.getRequirementAssignment()
+ .getNode();
+ requirementAssignmentDataMap
+ .computeIfAbsent(connectedNodeTemplateId, k -> new ArrayList<>());
+ requirementAssignmentDataMap.get(connectedNodeTemplateId).add(requirementAssignmentData);
+ }
+ }
+ return requirementAssignmentDataMap;
+ }
+
+ public static void updatePortsInComputeTemplateConsolidationData(
+ List<Pair<String, String>> portIdToTypeList, ComputeTemplateConsolidationData
+ compute){
+ compute.setPorts(new HashMap<>());
+ for(Pair<String, String> portIdToType : portIdToTypeList){
+ compute.getPorts().putIfAbsent(portIdToType.getLeft(), new ArrayList<>());
+ compute.getPorts().get(portIdToType.getLeft()).add(portIdToType.getRight());
+ }
+ }
+
+ public static Map<String, List<RequirementAssignmentData>> getNodeConnectedInList(
+ String sourceNodeTemplateId,
+ ServiceTemplate serviceTemplate, String requirementKey) {
+ Optional<List<RequirementAssignmentData>> requirementAssignmentDataList = Optional.empty();
+ List<RequirementAssignmentData> assignmentDataList = new ArrayList<>();
+ Map<String, List<RequirementAssignmentData>> requirementAssignmentDataMap = new HashMap<>();
+ Map<String, NodeTemplate> nodeTemplates = serviceTemplate.getTopology_template()
+ .getNode_templates();
+ for (Map.Entry<String, NodeTemplate> entry : nodeTemplates.entrySet()) {
+ String nodeTemplateId = entry.getKey();
+ List<Map<String, RequirementAssignment>> requirements = entry.getValue().getRequirements();
+ if (requirements != null) {
+ for (Map<String, RequirementAssignment> requirement : requirements) {
+ if (requirement.get(requirementKey) != null) {
+ RequirementAssignment requirementAssignment = requirement.get(requirementKey);
+ if (requirementAssignment != null) {
+ if (requirementAssignment.getNode().equals(sourceNodeTemplateId)) {
+ RequirementAssignmentData data = new RequirementAssignmentData(requirementKey,
+ requirementAssignment);
+ assignmentDataList.add(data);
+ }
+ }
+ }
+ }
+ requirementAssignmentDataList = Optional.ofNullable(assignmentDataList);
+ if (requirementAssignmentDataList.isPresent()) {
+ for (RequirementAssignmentData requirementAssignmentData : requirementAssignmentDataList
+ .get()) {
+ requirementAssignmentDataMap.computeIfAbsent(nodeTemplateId, k -> new ArrayList<>());
+ requirementAssignmentDataMap.get(nodeTemplateId).add(requirementAssignmentData);
+ }
+ }
+ requirementAssignmentDataList = Optional.empty();
+ }
+ }
+ return requirementAssignmentDataMap;
+ }
+
+ public static List<String> getGroupsForNode(ServiceTemplate serviceTemplate, String
+ nodeTemplateId) {
+ List<String> entityGroups = new ArrayList<>();
+ Map<String, GroupDefinition> groups = serviceTemplate.getTopology_template().getGroups();
+ Map<String, NodeTemplate> nodeTemplates =
+ serviceTemplate.getTopology_template().getNode_templates();
+ for (Map.Entry<String, GroupDefinition> entry : groups.entrySet()) {
+ String groupId = entry.getKey();
+ GroupDefinition groupDefinition = entry.getValue();
+ if (groupDefinition.getType().contains("HeatStack"))
+ continue;
+ List<String> groupMembers = groupDefinition.getMembers();
+ for (String member : groupMembers) {
+ if (groups.containsKey(member))
+ continue;
+ if (member.equals(nodeTemplateId)) {
+ entityGroups.add(groupId);
+ }
+ }
+ }
+ return entityGroups;
+ }
+
+ private static Optional<List<RequirementAssignmentData>> createRequirementAssignmentDataList(
+ NodeTemplate nodeTemplate, String requirementKey) {
+
+ Optional<List<RequirementAssignment>> requirementAssignmentLink =
+ DataModelUtil.getRequirementAssignment(nodeTemplate.getRequirements(), requirementKey);
+ if (!requirementAssignmentLink.isPresent()) {
+ return Optional.empty();
+ }
+
+ List<RequirementAssignmentData> requirementAssignmentDataList = new ArrayList<>();
+ for (RequirementAssignment requirementAssignment : requirementAssignmentLink.get()) {
+ RequirementAssignmentData requirementAssignmentData = new RequirementAssignmentData
+ (requirementKey, requirementAssignment);
+ requirementAssignmentDataList.add(requirementAssignmentData);
+ }
+ return Optional.ofNullable(requirementAssignmentDataList);
+ }
+
+ public static Optional<List<RequirementAssignmentData>> getRequirementAssignmentDataList(
+ NodeTemplate nodeTemplate, String requirementKey) {
+ List<RequirementAssignmentData> returnedReqAssignmentDataList = new ArrayList<>();
+ Optional<List<RequirementAssignmentData>> requirementAssignmentDataList =
+ TestUtils.createRequirementAssignmentDataList(nodeTemplate, requirementKey);
+
+ if (requirementAssignmentDataList.isPresent()) {
+ for (RequirementAssignmentData requirementAssignmentData : requirementAssignmentDataList
+ .get()) {
+ returnedReqAssignmentDataList.add(requirementAssignmentData);
+ }
+ return Optional.of(returnedReqAssignmentDataList);
+ }
+ return Optional.empty();
+ }
+
+
+
}