2 * Copyright © 2018 European Support Limited
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 package org.openecomp.sdc.translator;
19 import org.apache.commons.collections4.CollectionUtils;
20 import org.apache.commons.lang3.tuple.Pair;
21 import org.codehaus.jackson.map.ObjectMapper;
22 import org.junit.Assert;
23 import org.openecomp.core.translator.api.HeatToToscaTranslator;
24 import org.openecomp.core.utilities.file.FileUtils;
25 import org.openecomp.sdc.common.utils.SdcCommon;
26 import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel;
27 import org.onap.sdc.tosca.datatypes.model.GroupDefinition;
28 import org.onap.sdc.tosca.datatypes.model.NodeTemplate;
29 import org.onap.sdc.tosca.datatypes.model.RequirementAssignment;
30 import org.onap.sdc.tosca.datatypes.model.ServiceTemplate;
31 import org.onap.sdc.tosca.datatypes.model.TopologyTemplate;
32 import org.openecomp.sdc.tosca.services.DataModelUtil;
33 import org.openecomp.sdc.tosca.services.ToscaConstants;
34 import org.onap.sdc.tosca.services.ToscaExtensionYamlUtil;
35 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.ComputeConsolidationData;
36 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.ComputeTemplateConsolidationData;
37 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.ConsolidationData;
38 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.EntityConsolidationData;
39 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.FileComputeConsolidationData;
40 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.FileNestedConsolidationData;
41 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.FilePortConsolidationData;
42 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.GetAttrFuncData;
43 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.NestedConsolidationData;
44 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.NestedTemplateConsolidationData;
45 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.PortTemplateConsolidationData;
46 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.RequirementAssignmentData;
47 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.SubInterfaceTemplateConsolidationData;
48 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.TypeComputeConsolidationData;
49 import org.openecomp.sdc.translator.services.heattotosca.globaltypes.GlobalTypesGenerator;
52 import java.io.FileInputStream;
53 import java.io.IOException;
54 import java.io.InputStream;
55 import java.net.URISyntaxException;
57 import java.nio.file.NotDirectoryException;
58 import java.util.ArrayList;
59 import java.util.HashMap;
60 import java.util.List;
61 import java.util.ListIterator;
63 import java.util.Objects;
64 import java.util.Optional;
66 public class TestUtils {
67 private static final String MANIFEST_NAME = SdcCommon.MANIFEST_NAME;
68 private static String zipFilename = "VSP.zip";
69 private static String validationFilename = "validationOutput.json";
75 public static void addFilesToTranslator(HeatToToscaTranslator heatToToscaTranslator, String path)
77 File manifestFile = new File(path);
78 File[] files = manifestFile.listFiles();
81 Assert.assertNotNull("manifest files is empty", files);
83 for (File file : files) {
85 try (FileInputStream fis = new FileInputStream(file)) {
87 fileContent = FileUtils.toByteArray(fis);
89 if (file.getName().equals(MANIFEST_NAME)) {
90 heatToToscaTranslator.addManifest(MANIFEST_NAME, fileContent);
92 if (!file.getName().equals(zipFilename) && (!file.getName().equals(validationFilename))) {
93 heatToToscaTranslator.addFile(file.getName(), fileContent);
101 * Get tosca service template models for the files in a directory
103 * @param baseDirPath base directory for the tosca file
104 * @return Map of <ServiceTemplateFilename, ServiceTemplate> for the files in this directory
106 private static Map<String, ServiceTemplate> getServiceTemplates(String baseDirPath) throws URISyntaxException{
107 Map<String, ServiceTemplate> serviceTemplateMap = new HashMap<>();
108 ToscaExtensionYamlUtil toscaExtensionYamlUtil = new ToscaExtensionYamlUtil();
109 baseDirPath = "." + baseDirPath + "/";
111 String[] fileList = {};
112 URL filesDirUrl = TestUtils.class.getClassLoader().getResource(baseDirPath);
113 if (filesDirUrl != null && filesDirUrl.getProtocol().equals("file")) {
114 fileList = new File(filesDirUrl.toURI()).list();
116 Assert.fail("Invalid expected output files directory");
118 for (String fileName : fileList) {
120 URL resource = TestUtils.class.getClassLoader().getResource(baseDirPath + fileName);
121 ServiceTemplate serviceTemplate = FileUtils.readViaInputStream(resource,
122 stream -> toscaExtensionYamlUtil.yamlToObject(stream, ServiceTemplate.class));
124 serviceTemplateMap.put(fileName, serviceTemplate);
126 return serviceTemplateMap;
129 * Get tosca service template models
131 * @param expectedResultMap Map of filename and payload of the expected result files
132 * @return Map of <ServiceTemplateFilename, ServiceTemplate> for the files in this directory
134 public static Map<String, ServiceTemplate> getServiceTemplates(Map<String, byte[]>
136 Map<String, ServiceTemplate> serviceTemplateMap = new HashMap<>();
137 ToscaExtensionYamlUtil toscaExtensionYamlUtil = new ToscaExtensionYamlUtil();
138 for (String fileName : expectedResultMap.keySet()) {
139 ServiceTemplate serviceTemplate = toscaExtensionYamlUtil.yamlToObject
140 (new String(expectedResultMap.get(fileName)), ServiceTemplate.class);
141 serviceTemplateMap.put(fileName, serviceTemplate);
143 return serviceTemplateMap;
147 public static ToscaServiceModel loadToscaServiceModel(String serviceTemplatesPath,
148 String globalServiceTemplatesPath,
149 String entryDefinitionServiceTemplate)
150 throws IOException, URISyntaxException {
151 Map<String, ServiceTemplate> serviceTemplates;
152 if (entryDefinitionServiceTemplate == null) {
153 entryDefinitionServiceTemplate = "MainServiceTemplate.yaml";
156 serviceTemplates = getServiceTemplates(serviceTemplatesPath);
157 if (globalServiceTemplatesPath != null) {
158 serviceTemplates = getServiceTemplates(globalServiceTemplatesPath);
161 return new ToscaServiceModel(null, serviceTemplates, entryDefinitionServiceTemplate);
164 public static ServiceTemplate loadServiceTemplate(String serviceTemplatePath)
166 ServiceTemplate serviceTemplateFromYaml = new ServiceTemplate();
167 ToscaExtensionYamlUtil toscaExtensionYamlUtil = new ToscaExtensionYamlUtil();
168 URL urlFile = TestUtils.class.getResource(serviceTemplatePath);
169 if (urlFile != null) {
170 File pathFile = new File(urlFile.getFile());
171 File[] files = pathFile.listFiles();
172 for (File file : files) {
173 try (InputStream yamlFile = new FileInputStream(file)) {
174 serviceTemplateFromYaml =
175 toscaExtensionYamlUtil.yamlToObject(yamlFile, ServiceTemplate.class);
176 createConcreteRequirementObjectsInServiceTemplate(serviceTemplateFromYaml,
177 toscaExtensionYamlUtil);
181 throw new NotDirectoryException(serviceTemplatePath);
183 return serviceTemplateFromYaml;
187 public static void loadServiceTemplates(String serviceTemplatesPath,
188 ToscaExtensionYamlUtil toscaExtensionYamlUtil,
189 Map<String, ServiceTemplate> serviceTemplates)
191 URL urlFile = TestUtils.class.getResource(serviceTemplatesPath);
192 if (urlFile != null) {
193 File pathFile = new File(urlFile.getFile());
194 File[] files = pathFile.listFiles();
196 addServiceTemplateFiles(serviceTemplates, files, toscaExtensionYamlUtil);
198 throw new NotDirectoryException(serviceTemplatesPath);
201 throw new NotDirectoryException(serviceTemplatesPath);
205 private static void addServiceTemplateFiles(Map<String, ServiceTemplate> serviceTemplates,
207 ToscaExtensionYamlUtil toscaExtensionYamlUtil)
209 for (File file : files) {
210 try (InputStream yamlFile = new FileInputStream(file)) {
211 ServiceTemplate serviceTemplateFromYaml =
212 toscaExtensionYamlUtil.yamlToObject(yamlFile, ServiceTemplate.class);
213 createConcreteRequirementObjectsInServiceTemplate(serviceTemplateFromYaml,
214 toscaExtensionYamlUtil);
215 serviceTemplates.put(file.getName(), serviceTemplateFromYaml);
220 private static void createConcreteRequirementObjectsInServiceTemplate(ServiceTemplate
221 serviceTemplateFromYaml,
222 ToscaExtensionYamlUtil
223 toscaExtensionYamlUtil) {
225 if (serviceTemplateFromYaml == null
226 || serviceTemplateFromYaml.getTopology_template() == null
227 || serviceTemplateFromYaml.getTopology_template().getNode_templates() == null) {
231 //Creating concrete objects
232 Map<String, NodeTemplate> nodeTemplates =
233 serviceTemplateFromYaml.getTopology_template().getNode_templates();
234 for (Map.Entry<String, NodeTemplate> entry : nodeTemplates.entrySet()) {
235 NodeTemplate nodeTemplate = entry.getValue();
236 List<Map<String, RequirementAssignment>> requirements = nodeTemplate.getRequirements();
237 List<Map<String, RequirementAssignment>> concreteRequirementList = new ArrayList<>();
238 if (requirements != null) {
239 ListIterator<Map<String, RequirementAssignment>> reqListIterator = requirements
241 while (reqListIterator.hasNext()) {
242 Map<String, RequirementAssignment> requirement = reqListIterator.next();
243 Map<String, RequirementAssignment> concreteRequirement = new HashMap<>();
244 for (Map.Entry<String, RequirementAssignment> reqEntry : requirement.entrySet()) {
245 RequirementAssignment requirementAssignment = (toscaExtensionYamlUtil
246 .yamlToObject(toscaExtensionYamlUtil.objectToYaml(reqEntry.getValue()),
247 RequirementAssignment.class));
248 concreteRequirement.put(reqEntry.getKey(), requirementAssignment);
249 concreteRequirementList.add(concreteRequirement);
250 reqListIterator.remove();
253 requirements.clear();
254 requirements.addAll(concreteRequirementList);
255 nodeTemplate.setRequirements(requirements);
257 System.out.println();
258 //toscaExtensionYamlUtil.yamlToObject(nodeTemplate, NodeTemplate.class);
262 public static void updateMultiplePortConsolidationDatas(String serviceTemplateName,
263 List<String> portNodeTemplateIds,
264 List<List<String>> nodesConnectedInIds,
265 List<List<String>> nodesConnectedOutIds,
266 List<List<String>> groupIds,
267 List<List<String>> getAttrInIds,
268 List<List<Pair<String, GetAttrFuncData>>> getAttrOutFuncDataList,
269 ConsolidationData consolidationData) {
270 for (int i = 0; i < portNodeTemplateIds.size(); i++) {
271 updatePortConsolidationData(serviceTemplateName, portNodeTemplateIds.get(i),
272 nodesConnectedInIds.get(i), nodesConnectedOutIds.get(i),
273 groupIds.get(i), getAttrInIds.get(i), getAttrOutFuncDataList.get(i), consolidationData);
277 public static void addPortSubInterface(
278 SubInterfaceConsolidationDataTestInfo subInterfaceConsolidationDataTestInfo) {
279 PortTemplateConsolidationData portTemplateConsolidationData =
280 subInterfaceConsolidationDataTestInfo.getConsolidationData().getPortConsolidationData().getFilePortConsolidationData
281 (subInterfaceConsolidationDataTestInfo.getServiceTemplateFileName()).getPortTemplateConsolidationData(
282 subInterfaceConsolidationDataTestInfo.getPortNodeTemplateId());
284 SubInterfaceTemplateConsolidationData subInterface =
285 new SubInterfaceTemplateConsolidationData();
286 subInterface.setNodeTemplateId(subInterfaceConsolidationDataTestInfo.getSubInterfaceId());
287 subInterface.setNetworkRole(subInterfaceConsolidationDataTestInfo.getNetworkRole());
288 subInterface.setResourceGroupCount(
289 subInterfaceConsolidationDataTestInfo.getResourceGroupCount());
291 updateRelationsForEntityConsolidationData(
292 subInterfaceConsolidationDataTestInfo.getNodesConnectedIn(),
293 subInterfaceConsolidationDataTestInfo.getNodesConnectedOut(), null,
294 subInterfaceConsolidationDataTestInfo.getNodesGetAttrIn(),
295 subInterfaceConsolidationDataTestInfo.getNodesGetAttrOut(), subInterface);
297 portTemplateConsolidationData.addSubInterfaceConsolidationData(
298 subInterfaceConsolidationDataTestInfo.getSubInterfaceType(), subInterface);
302 public static void updatePortConsolidationData(String serviceTemplateFileName,
303 String portNodeTemplateId,
304 List<String> nodesConnectedInIds,
305 List<String> nodesConnectedOutIds,
306 List<String> groupIds, List<String> getAttrInIds,
307 List<Pair<String, GetAttrFuncData>> getAttrOutFuncDataList,
308 ConsolidationData consolidationData) {
310 PortTemplateConsolidationData portTemplateConsolidationData =
311 createPortTemplateConsolidationData(portNodeTemplateId);
313 updateRelationsForEntityConsolidationData(nodesConnectedInIds,
314 nodesConnectedOutIds, groupIds, getAttrInIds, getAttrOutFuncDataList,
315 portTemplateConsolidationData);
317 consolidationData.getPortConsolidationData()
318 .getFilePortConsolidationData(serviceTemplateFileName)
319 .setPortTemplateConsolidationData(portNodeTemplateId, portTemplateConsolidationData);
322 public static PortTemplateConsolidationData createPortTemplateConsolidationData(
323 String portNodeTemplateId) {
324 PortTemplateConsolidationData portTemplateConsolidationData =
325 new PortTemplateConsolidationData();
326 portTemplateConsolidationData.setNodeTemplateId(portNodeTemplateId);
327 return portTemplateConsolidationData;
330 public static void initPortConsolidationData(String serviceTemplateFileName,
331 ConsolidationData consolidationData) {
333 consolidationData.getPortConsolidationData()
334 .setFilePortConsolidationData(serviceTemplateFileName, new FilePortConsolidationData());
337 public static void updateComputeTemplateConsolidationData(String serviceTemplateFileName,
338 String computeNodeTypeName,
339 String computeNodeTemplateId,
340 List<String> nodeIdsConnectedIn,
341 List<String> nodeIdsConnectedOut,
342 List<String> volumeIds,
343 List<String> groupIds,
344 List<String> getAttrInIds,
345 List<Pair<String, GetAttrFuncData>> getAttrOutIds,
346 List<Pair<String, String>> portTypeToIdList,
347 ConsolidationData consolidationData) {
349 initComputeNodeTemplateIdInConsolidationData(serviceTemplateFileName, computeNodeTypeName,
350 computeNodeTemplateId, consolidationData);
352 Map<String, List<RequirementAssignmentData>> volumes =
353 consolidationData.getComputeConsolidationData().getFileComputeConsolidationData
354 (serviceTemplateFileName).getTypeComputeConsolidationData(computeNodeTypeName)
355 .getComputeTemplateConsolidationData(computeNodeTemplateId).getVolumes();
357 ComputeTemplateConsolidationData computeTemplateConsolidationData =
358 createComputeTemplateConsolidationData(computeNodeTemplateId, portTypeToIdList, volumes);
360 updateRelationsForEntityConsolidationData(nodeIdsConnectedIn,
361 nodeIdsConnectedOut, groupIds, getAttrInIds, getAttrOutIds,
362 computeTemplateConsolidationData);
364 updateVolumes(computeTemplateConsolidationData, volumeIds);
366 consolidationData.getComputeConsolidationData()
367 .getFileComputeConsolidationData(serviceTemplateFileName)
368 .getTypeComputeConsolidationData(computeNodeTypeName)
369 .setComputeTemplateConsolidationData(computeNodeTemplateId,
370 computeTemplateConsolidationData);
373 private static void updateRelationsForEntityConsolidationData(List<String> nodeIdsConnectedIn,
374 List<String> nodeIdsConnectedOut,
375 List<String> groupIds,
376 List<String> getAttrInIds,
377 List<Pair<String, GetAttrFuncData>> getAttrOutFuncDataList,
378 EntityConsolidationData entity) {
379 updateRelationsIn(entity, nodeIdsConnectedIn);
380 updateRelationsOut(entity, nodeIdsConnectedOut);
381 updateGetAttrIn(entity, getAttrInIds);
382 updateGetAttrOut(entity, getAttrOutFuncDataList);
383 entity.setGroupIds(groupIds);
386 public static void initComputeNodeTemplateIdInConsolidationData(String serviceTemplateFileName,
387 String computeNodeTypeName,
388 String computeNodeTemplateId,
389 ConsolidationData consolidationData) {
392 .isNull(consolidationData.getComputeConsolidationData().getFileComputeConsolidationData
393 (serviceTemplateFileName))) {
394 consolidationData.getComputeConsolidationData().setFileComputeConsolidationData
395 (serviceTemplateFileName, new FileComputeConsolidationData());
397 TypeComputeConsolidationData typeComputeConsolidationData =
398 consolidationData.getComputeConsolidationData().getFileComputeConsolidationData
399 (serviceTemplateFileName).getTypeComputeConsolidationData(computeNodeTypeName);
402 typeComputeConsolidationData.getComputeTemplateConsolidationData(computeNodeTemplateId) ==
405 consolidationData.getComputeConsolidationData()
406 .getFileComputeConsolidationData(serviceTemplateFileName)
407 .getTypeComputeConsolidationData(computeNodeTypeName)
408 .setComputeTemplateConsolidationData(computeNodeTemplateId,
409 new ComputeTemplateConsolidationData());
414 public static void updateNestedConsolidationData(String serviceTemplateName,
415 List<String> substitutionNodeTemplateIds,
416 ConsolidationData consolidationData) {
417 if (Objects.isNull(consolidationData.getNestedConsolidationData())) {
418 consolidationData.setNestedConsolidationData(new NestedConsolidationData());
421 FileNestedConsolidationData fileNestedConsolidationData = new FileNestedConsolidationData();
422 for (String substitutionNodeTemplateId : substitutionNodeTemplateIds) {
423 NestedTemplateConsolidationData nestedTemplateConsolidationData =
424 new NestedTemplateConsolidationData();
425 nestedTemplateConsolidationData.setNodeTemplateId(substitutionNodeTemplateId);
426 fileNestedConsolidationData.setNestedTemplateConsolidationData(substitutionNodeTemplateId,
427 nestedTemplateConsolidationData);
429 consolidationData.getNestedConsolidationData()
430 .setFileNestedConsolidationData(serviceTemplateName, fileNestedConsolidationData);
433 public static ComputeTemplateConsolidationData createComputeTemplateConsolidationData(
434 String computeNodeTemplateId,
435 List<Pair<String, String>> portTypeToIdList,
436 Map<String, List<RequirementAssignmentData>> volumes) {
437 ComputeTemplateConsolidationData compute = new ComputeTemplateConsolidationData();
438 compute.setNodeTemplateId(computeNodeTemplateId);
439 if (portTypeToIdList != null) {
440 for (Pair<String, String> port : portTypeToIdList) {
441 compute.addPort(port.getLeft(), port.getRight());
444 compute.setVolumes(volumes);
448 private static void updateRelationsIn(EntityConsolidationData entity,
449 List<String> idsPontingTome) {
450 if (CollectionUtils.isEmpty(idsPontingTome)) {
454 for (String pointingId : idsPontingTome) {
456 .addNodesConnectedIn(pointingId, entity.getNodeTemplateId(), new RequirementAssignment());
460 private static void updateRelationsOut(EntityConsolidationData entity,
461 List<String> idsToUpdate) {
462 if (CollectionUtils.isEmpty(idsToUpdate)) {
466 for (String id : idsToUpdate) {
467 entity.addNodesConnectedOut(id, id, new RequirementAssignment());
471 private static void updateGetAttrIn(EntityConsolidationData entity,
472 List<String> idsToUpdate) {
473 if (CollectionUtils.isEmpty(idsToUpdate)) {
477 for (String id : idsToUpdate) {
478 entity.addNodesGetAttrIn(id, new GetAttrFuncData());
482 private static void updateGetAttrOut(EntityConsolidationData entity,
483 List<Pair<String, GetAttrFuncData>> getAttrOutIds) {
484 if (CollectionUtils.isEmpty(getAttrOutIds)) {
488 for (Pair<String, GetAttrFuncData> getAttrOutFunc : getAttrOutIds) {
489 entity.addNodesGetAttrOut(getAttrOutFunc.getLeft(), getAttrOutFunc.getRight());
493 private static void updateVolumes(ComputeTemplateConsolidationData compute,
494 List<String> volumeIds) {
495 if (CollectionUtils.isEmpty(volumeIds)) {
499 for (String id : volumeIds) {
500 RequirementAssignment requirementAssignment = new RequirementAssignment();
501 requirementAssignment.setNode(id);
502 compute.addVolume(id, requirementAssignment);
506 public static void initComputeNodeTypeInConsolidationData(String serviceTemplateFileName,
507 String computeNodeTypeName,
508 ConsolidationData consolidationData) {
509 ComputeConsolidationData computeConsolidationData =
510 consolidationData.getComputeConsolidationData();
511 if (!computeConsolidationData.getAllServiceTemplateFileNames()
512 .contains(serviceTemplateFileName)) {
513 computeConsolidationData
514 .setFileComputeConsolidationData(serviceTemplateFileName,
515 new FileComputeConsolidationData());
517 computeConsolidationData
518 .getFileComputeConsolidationData(serviceTemplateFileName).setTypeComputeConsolidationData(
519 computeNodeTypeName, new TypeComputeConsolidationData());
522 public static Map<String, List<RequirementAssignmentData>> getNodeConnectedOutList(
523 NodeTemplate nodeTemplate, String requirementKey) {
524 Map<String, List<RequirementAssignmentData>> requirementAssignmentDataMap = new HashMap<>();
525 Optional<List<RequirementAssignmentData>> requirementAssignmentDataList =
526 TestUtils.createRequirementAssignmentDataList(nodeTemplate, requirementKey);
527 if (requirementAssignmentDataList.isPresent()) {
528 for (RequirementAssignmentData requirementAssignmentData : requirementAssignmentDataList
530 String connectedNodeTemplateId = requirementAssignmentData.getRequirementAssignment()
532 requirementAssignmentDataMap
533 .computeIfAbsent(connectedNodeTemplateId, k -> new ArrayList<>());
534 requirementAssignmentDataMap.get(connectedNodeTemplateId).add(requirementAssignmentData);
537 return requirementAssignmentDataMap;
540 public static Map<String, List<GetAttrFuncData>> getNodesGetAttrIn(NodeTemplate nodeTemplate,
541 String nodeTemplateId) {
542 Map<String, List<GetAttrFuncData>> nodesGetAttrIn = new HashMap<>();
543 List<GetAttrFuncData> getAttrList = new ArrayList<>();
544 ObjectMapper mapper = new ObjectMapper();
545 Map<String, Object> nodeTemplateProperties = nodeTemplate.getProperties();
546 for (Map.Entry<String, Object> propertyEntry : nodeTemplateProperties.entrySet()) {
547 Map<String, List> propertyValue = mapper.convertValue(propertyEntry.getValue(), Map.class);
548 for (Map.Entry<String, List> entry : propertyValue.entrySet()) {
549 if (entry.getKey().equals("get_attribute")) {
550 GetAttrFuncData data = new GetAttrFuncData();
551 data.setFieldName(propertyEntry.getKey());
552 data.setAttributeName(entry.getValue().get(1).toString());
553 getAttrList.add(data);
556 System.out.println();
558 nodesGetAttrIn.put(nodeTemplateId, getAttrList);
559 return nodesGetAttrIn;
562 public static void updatePortsInComputeTemplateConsolidationData(
563 List<Pair<String, String>> portIdToTypeList, ComputeTemplateConsolidationData
565 compute.setPorts(new HashMap<>());
566 for (Pair<String, String> portIdToType : portIdToTypeList) {
567 compute.getPorts().putIfAbsent(portIdToType.getLeft(), new ArrayList<>());
568 compute.getPorts().get(portIdToType.getLeft()).add(portIdToType.getRight());
572 public static Map<String, List<RequirementAssignmentData>> getNodeConnectedInList(
573 String sourceNodeTemplateId,
574 ServiceTemplate serviceTemplate, String requirementKey) {
575 Optional<List<RequirementAssignmentData>> requirementAssignmentDataList = Optional.empty();
576 List<RequirementAssignmentData> assignmentDataList = new ArrayList<>();
577 Map<String, List<RequirementAssignmentData>> requirementAssignmentDataMap = new HashMap<>();
578 Map<String, NodeTemplate> nodeTemplates = serviceTemplate.getTopology_template()
579 .getNode_templates();
580 for (Map.Entry<String, NodeTemplate> entry : nodeTemplates.entrySet()) {
581 String nodeTemplateId = entry.getKey();
582 List<Map<String, RequirementAssignment>> requirements = entry.getValue().getRequirements();
583 if (requirements != null) {
584 for (Map<String, RequirementAssignment> requirement : requirements) {
585 if (requirement.get(requirementKey) != null) {
586 RequirementAssignment requirementAssignment = requirement.get(requirementKey);
587 if (requirementAssignment != null) {
588 if (requirementAssignment.getNode().equals(sourceNodeTemplateId)) {
589 RequirementAssignmentData data = new RequirementAssignmentData(requirementKey,
590 requirementAssignment);
591 assignmentDataList.add(data);
596 requirementAssignmentDataList = Optional.ofNullable(assignmentDataList);
597 if (requirementAssignmentDataList.isPresent()) {
598 for (RequirementAssignmentData requirementAssignmentData : requirementAssignmentDataList
600 requirementAssignmentDataMap.computeIfAbsent(nodeTemplateId, k -> new ArrayList<>());
601 requirementAssignmentDataMap.get(nodeTemplateId).add(requirementAssignmentData);
604 requirementAssignmentDataList = Optional.empty();
607 return requirementAssignmentDataMap;
610 public static List<String> getGroupsForNode(ServiceTemplate serviceTemplate, String
612 List<String> entityGroups = new ArrayList<>();
613 Map<String, GroupDefinition> groups = serviceTemplate.getTopology_template().getGroups();
614 for (Map.Entry<String, GroupDefinition> entry : groups.entrySet()) {
615 String groupId = entry.getKey();
616 GroupDefinition groupDefinition = entry.getValue();
617 if (groupDefinition.getType().contains("HeatStack")) {
620 List<String> groupMembers = groupDefinition.getMembers();
621 for (String member : groupMembers) {
622 if (groups.containsKey(member)) {
625 if (member.equals(nodeTemplateId)) {
626 entityGroups.add(groupId);
633 private static Optional<List<RequirementAssignmentData>> createRequirementAssignmentDataList(
634 NodeTemplate nodeTemplate, String requirementKey) {
636 Optional<List<RequirementAssignment>> requirementAssignmentLink =
637 DataModelUtil.getRequirementAssignment(nodeTemplate.getRequirements(), requirementKey);
638 if (!requirementAssignmentLink.isPresent()) {
639 return Optional.empty();
642 List<RequirementAssignmentData> requirementAssignmentDataList = new ArrayList<>();
643 for (RequirementAssignment requirementAssignment : requirementAssignmentLink.get()) {
644 RequirementAssignmentData requirementAssignmentData = new RequirementAssignmentData
645 (requirementKey, requirementAssignment);
646 requirementAssignmentDataList.add(requirementAssignmentData);
648 return Optional.ofNullable(requirementAssignmentDataList);
651 public static Optional<List<RequirementAssignmentData>> getRequirementAssignmentDataList(
652 NodeTemplate nodeTemplate, String requirementKey) {
653 List<RequirementAssignmentData> returnedReqAssignmentDataList = new ArrayList<>();
654 Optional<List<RequirementAssignmentData>> requirementAssignmentDataList =
655 TestUtils.createRequirementAssignmentDataList(nodeTemplate, requirementKey);
657 if (requirementAssignmentDataList.isPresent()) {
658 for (RequirementAssignmentData requirementAssignmentData : requirementAssignmentDataList
660 returnedReqAssignmentDataList.add(requirementAssignmentData);
662 return Optional.of(returnedReqAssignmentDataList);
664 return Optional.empty();
667 public static ServiceTemplate createInitServiceTemplate() {
668 ServiceTemplate initServiceTemplate = new ServiceTemplate();
669 Map<String, String> templateMetadata = new HashMap<>();
670 templateMetadata.put(ToscaConstants.ST_METADATA_TEMPLATE_NAME, "Test");
671 initServiceTemplate.setTosca_definitions_version(ToscaConstants.TOSCA_DEFINITIONS_VERSION);
672 initServiceTemplate.setMetadata(templateMetadata);
673 initServiceTemplate.setTopology_template(new TopologyTemplate());
674 initServiceTemplate.setImports(GlobalTypesGenerator.getGlobalTypesImportList());
675 return initServiceTemplate;