2 * Copyright © 2016-2017 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.logging.api.Logger;
27 import org.openecomp.sdc.logging.api.LoggerFactory;
28 import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel;
29 import org.openecomp.sdc.tosca.datatypes.model.GroupDefinition;
30 import org.openecomp.sdc.tosca.datatypes.model.NodeTemplate;
31 import org.openecomp.sdc.tosca.datatypes.model.RequirementAssignment;
32 import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate;
33 import org.openecomp.sdc.tosca.services.DataModelUtil;
34 import org.openecomp.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;
51 import java.io.FileInputStream;
52 import java.io.FileNotFoundException;
53 import java.io.IOException;
54 import java.io.InputStream;
56 import java.nio.file.NotDirectoryException;
57 import java.util.ArrayList;
58 import java.util.HashMap;
59 import java.util.List;
60 import java.util.ListIterator;
62 import java.util.Objects;
63 import java.util.Optional;
65 public class TestUtils {
66 private static final String MANIFEST_NAME = SdcCommon.MANIFEST_NAME;
67 private static String zipFilename = "VSP.zip";
68 private static String validationFilename = "validationOutput.json";
70 private static Logger logger = (Logger) LoggerFactory.getLogger(TestUtils.class);
76 public static void addFilesToTranslator(HeatToToscaTranslator heatToToscaTranslator, String path)
78 File manifestFile = new File(path);
79 File[] files = manifestFile.listFiles();
82 Assert.assertNotNull("manifest files is empty", files);
84 for (File file : files) {
86 try (FileInputStream fis = new FileInputStream(file)) {
88 fileContent = FileUtils.toByteArray(fis);
90 if (file.getName().equals(MANIFEST_NAME)) {
91 heatToToscaTranslator.addManifest(MANIFEST_NAME, fileContent);
93 if (!file.getName().equals(zipFilename) && (!file.getName().equals(validationFilename))) {
94 heatToToscaTranslator.addFile(file.getName(), fileContent);
102 * Get tosca service template models for the files in a directory
104 * @param baseDirPath base directory for the tosca file
105 * @return Map of <ServiceTemplateFilename, ServiceTemplate> for the files in this directory
107 private static Map<String, ServiceTemplate> getServiceTemplates(String baseDirPath) {
108 Map<String, ServiceTemplate> serviceTemplateMap = new HashMap<>();
109 ToscaExtensionYamlUtil toscaExtensionYamlUtil = new ToscaExtensionYamlUtil();
110 baseDirPath = "." + baseDirPath + "/";
112 String[] fileList = {};
113 URL filesDirUrl = TestUtils.class.getClassLoader().getResource(baseDirPath);
114 if (filesDirUrl != null && filesDirUrl.getProtocol().equals("file")) {
115 fileList = new File(filesDirUrl.toURI()).list();
117 Assert.fail("Invalid expected output files directory");
119 for (String fileName : fileList) {
121 URL resource = TestUtils.class.getClassLoader().getResource(baseDirPath + fileName);
122 ServiceTemplate serviceTemplate = FileUtils.readViaInputStream(resource,
123 stream -> toscaExtensionYamlUtil.yamlToObject(stream, ServiceTemplate.class));
125 serviceTemplateMap.put(fileName, serviceTemplate);
127 } catch (Exception e) {
129 Assert.fail(e.getMessage());
131 return serviceTemplateMap;
135 * Get tosca service template models
137 * @param expectedResultMap Map of filename and payload of the expected result files
138 * @return Map of <ServiceTemplateFilename, ServiceTemplate> for the files in this directory
140 public static Map<String, ServiceTemplate> getServiceTemplates(Map<String, byte[]>
142 Map<String, ServiceTemplate> serviceTemplateMap = new HashMap<>();
143 ToscaExtensionYamlUtil toscaExtensionYamlUtil = new ToscaExtensionYamlUtil();
144 for (String fileName : expectedResultMap.keySet()) {
145 ServiceTemplate serviceTemplate = toscaExtensionYamlUtil.yamlToObject
146 (new String(expectedResultMap.get(fileName)), ServiceTemplate.class);
147 serviceTemplateMap.put(fileName, serviceTemplate);
149 return serviceTemplateMap;
153 public static ToscaServiceModel loadToscaServiceModel(String serviceTemplatesPath,
154 String globalServiceTemplatesPath,
155 String entryDefinitionServiceTemplate)
157 ToscaExtensionYamlUtil toscaExtensionYamlUtil = new ToscaExtensionYamlUtil();
158 Map<String, ServiceTemplate> serviceTemplates = new HashMap<>();
159 if (entryDefinitionServiceTemplate == null) {
160 entryDefinitionServiceTemplate = "MainServiceTemplate.yaml";
163 serviceTemplates = getServiceTemplates(serviceTemplatesPath);
164 if (globalServiceTemplatesPath != null) {
165 serviceTemplates = getServiceTemplates(globalServiceTemplatesPath);
168 return new ToscaServiceModel(null, serviceTemplates, entryDefinitionServiceTemplate);
171 public static ServiceTemplate loadServiceTemplate(String serviceTemplatePath)
173 ServiceTemplate serviceTemplateFromYaml = new ServiceTemplate();
174 ToscaExtensionYamlUtil toscaExtensionYamlUtil = new ToscaExtensionYamlUtil();
175 URL urlFile = TestUtils.class.getResource(serviceTemplatePath);
176 if (urlFile != null) {
177 File pathFile = new File(urlFile.getFile());
178 File[] files = pathFile.listFiles();
179 for (File file : files) {
180 try (InputStream yamlFile = new FileInputStream(file)) {
181 serviceTemplateFromYaml =
182 toscaExtensionYamlUtil.yamlToObject(yamlFile, ServiceTemplate.class);
183 createConcreteRequirementObjectsInServiceTemplate(serviceTemplateFromYaml,
184 toscaExtensionYamlUtil);
187 } catch (IOException ignore) {
188 logger.debug("", ignore);
190 } catch (FileNotFoundException e) {
192 } catch (IOException e) {
197 throw new NotDirectoryException(serviceTemplatePath);
199 return serviceTemplateFromYaml;
203 public static void loadServiceTemplates(String serviceTemplatesPath,
204 ToscaExtensionYamlUtil toscaExtensionYamlUtil,
205 Map<String, ServiceTemplate> serviceTemplates)
207 URL urlFile = TestUtils.class.getResource(serviceTemplatesPath);
208 if (urlFile != null) {
209 File pathFile = new File(urlFile.getFile());
210 File[] files = pathFile.listFiles();
212 addServiceTemplateFiles(serviceTemplates, files, toscaExtensionYamlUtil);
214 throw new NotDirectoryException(serviceTemplatesPath);
217 throw new NotDirectoryException(serviceTemplatesPath);
221 private static void addServiceTemplateFiles(Map<String, ServiceTemplate> serviceTemplates,
223 ToscaExtensionYamlUtil toscaExtensionYamlUtil)
225 for (File file : files) {
226 try (InputStream yamlFile = new FileInputStream(file)) {
227 ServiceTemplate serviceTemplateFromYaml =
228 toscaExtensionYamlUtil.yamlToObject(yamlFile, ServiceTemplate.class);
229 createConcreteRequirementObjectsInServiceTemplate(serviceTemplateFromYaml,
230 toscaExtensionYamlUtil);
231 serviceTemplates.put(file.getName(), serviceTemplateFromYaml);
234 } catch (IOException ignore) {
235 logger.debug("", ignore);
237 } catch (FileNotFoundException e) {
239 } catch (IOException e) {
245 private static void createConcreteRequirementObjectsInServiceTemplate(ServiceTemplate
246 serviceTemplateFromYaml,
247 ToscaExtensionYamlUtil
248 toscaExtensionYamlUtil) {
250 if (serviceTemplateFromYaml == null
251 || serviceTemplateFromYaml.getTopology_template() == null
252 || serviceTemplateFromYaml.getTopology_template().getNode_templates() == null) {
256 //Creating concrete objects
257 Map<String, NodeTemplate> nodeTemplates =
258 serviceTemplateFromYaml.getTopology_template().getNode_templates();
259 for (Map.Entry<String, NodeTemplate> entry : nodeTemplates.entrySet()) {
260 NodeTemplate nodeTemplate = entry.getValue();
261 List<Map<String, RequirementAssignment>> requirements = nodeTemplate.getRequirements();
262 List<Map<String, RequirementAssignment>> concreteRequirementList = new ArrayList<>();
263 if (requirements != null) {
264 ListIterator<Map<String, RequirementAssignment>> reqListIterator = requirements
266 while (reqListIterator.hasNext()) {
267 Map<String, RequirementAssignment> requirement = reqListIterator.next();
268 Map<String, RequirementAssignment> concreteRequirement = new HashMap<>();
269 for (Map.Entry<String, RequirementAssignment> reqEntry : requirement.entrySet()) {
270 RequirementAssignment requirementAssignment = (toscaExtensionYamlUtil
271 .yamlToObject(toscaExtensionYamlUtil.objectToYaml(reqEntry.getValue()),
272 RequirementAssignment.class));
273 concreteRequirement.put(reqEntry.getKey(), requirementAssignment);
274 concreteRequirementList.add(concreteRequirement);
275 reqListIterator.remove();
278 requirements.clear();
279 requirements.addAll(concreteRequirementList);
280 nodeTemplate.setRequirements(requirements);
282 System.out.println();
283 //toscaExtensionYamlUtil.yamlToObject(nodeTemplate, NodeTemplate.class);
287 public static void updateMultiplePortConsolidationDatas(String serviceTemplateName,
288 List<String> portNodeTemplateIds,
289 List<List<String>> nodesConnectedInIds,
290 List<List<String>> nodesConnectedOutIds,
291 List<List<String>> groupIds,
292 List<List<String>> getAttrInIds,
293 List<List<Pair<String, GetAttrFuncData>>> getAttrOutFuncDataList,
294 ConsolidationData consolidationData) {
295 for (int i = 0; i < portNodeTemplateIds.size(); i++) {
296 updatePortConsolidationData(serviceTemplateName, portNodeTemplateIds.get(i),
297 nodesConnectedInIds.get(i), nodesConnectedOutIds.get(i),
298 groupIds.get(i), getAttrInIds.get(i), getAttrOutFuncDataList.get(i), consolidationData);
302 public static void addPortSubInterface(
303 SubInterfaceConsolidationDataTestInfo subInterfaceConsolidationDataTestInfo) {
304 PortTemplateConsolidationData portTemplateConsolidationData =
305 subInterfaceConsolidationDataTestInfo.getConsolidationData().getPortConsolidationData().getFilePortConsolidationData
306 (subInterfaceConsolidationDataTestInfo.getServiceTemplateFileName()).getPortTemplateConsolidationData(
307 subInterfaceConsolidationDataTestInfo.getPortNodeTemplateId());
309 SubInterfaceTemplateConsolidationData subInterface =
310 new SubInterfaceTemplateConsolidationData();
311 subInterface.setNodeTemplateId(subInterfaceConsolidationDataTestInfo.getSubInterfaceId());
312 subInterface.setNetworkRole(subInterfaceConsolidationDataTestInfo.getNetworkRole());
313 subInterface.setResourceGroupCount(
314 subInterfaceConsolidationDataTestInfo.getResourceGroupCount());
316 updateRelationsForEntityConsolidationData(
317 subInterfaceConsolidationDataTestInfo.getNodesConnectedIn(),
318 subInterfaceConsolidationDataTestInfo.getNodesConnectedOut(), null,
319 subInterfaceConsolidationDataTestInfo.getNodesGetAttrIn(),
320 subInterfaceConsolidationDataTestInfo.getNodesGetAttrOut(), subInterface);
322 portTemplateConsolidationData.addSubInterfaceConsolidationData(
323 subInterfaceConsolidationDataTestInfo.getSubInterfaceType(), subInterface);
327 public static void updatePortConsolidationData(String serviceTemplateFileName,
328 String portNodeTemplateId,
329 List<String> nodesConnectedInIds,
330 List<String> nodesConnectedOutIds,
331 List<String> groupIds, List<String> getAttrInIds,
332 List<Pair<String, GetAttrFuncData>> getAttrOutFuncDataList,
333 ConsolidationData consolidationData) {
335 PortTemplateConsolidationData portTemplateConsolidationData =
336 createPortTemplateConsolidationData(portNodeTemplateId);
338 updateRelationsForEntityConsolidationData(nodesConnectedInIds,
339 nodesConnectedOutIds, groupIds, getAttrInIds, getAttrOutFuncDataList,
340 portTemplateConsolidationData);
342 consolidationData.getPortConsolidationData()
343 .getFilePortConsolidationData(serviceTemplateFileName)
344 .setPortTemplateConsolidationData(portNodeTemplateId, portTemplateConsolidationData);
347 public static PortTemplateConsolidationData createPortTemplateConsolidationData(
348 String portNodeTemplateId) {
349 PortTemplateConsolidationData portTemplateConsolidationData =
350 new PortTemplateConsolidationData();
351 portTemplateConsolidationData.setNodeTemplateId(portNodeTemplateId);
352 return portTemplateConsolidationData;
355 public static void initPortConsolidationData(String serviceTemplateFileName,
356 ConsolidationData consolidationData) {
358 consolidationData.getPortConsolidationData()
359 .setFilePortConsolidationData(serviceTemplateFileName, new FilePortConsolidationData());
362 public static void updateComputeTemplateConsolidationData(String serviceTemplateFileName,
363 String computeNodeTypeName,
364 String computeNodeTemplateId,
365 List<String> nodeIdsConnectedIn,
366 List<String> nodeIdsConnectedOut,
367 List<String> volumeIds,
368 List<String> groupIds,
369 List<String> getAttrInIds,
370 List<Pair<String, GetAttrFuncData>> getAttrOutIds,
371 List<Pair<String, String>> portTypeToIdList,
372 ConsolidationData consolidationData) {
374 initComputeNodeTemplateIdInConsolidationData(serviceTemplateFileName, computeNodeTypeName,
375 computeNodeTemplateId, consolidationData);
377 Map<String, List<RequirementAssignmentData>> volumes =
378 consolidationData.getComputeConsolidationData().getFileComputeConsolidationData
379 (serviceTemplateFileName).getTypeComputeConsolidationData(computeNodeTypeName)
380 .getComputeTemplateConsolidationData(computeNodeTemplateId).getVolumes();
382 ComputeTemplateConsolidationData computeTemplateConsolidationData =
383 createComputeTemplateConsolidationData(computeNodeTemplateId, portTypeToIdList, volumes);
385 updateRelationsForEntityConsolidationData(nodeIdsConnectedIn,
386 nodeIdsConnectedOut, groupIds, getAttrInIds, getAttrOutIds,
387 computeTemplateConsolidationData);
389 updateVolumes(computeTemplateConsolidationData, volumeIds);
391 consolidationData.getComputeConsolidationData()
392 .getFileComputeConsolidationData(serviceTemplateFileName)
393 .getTypeComputeConsolidationData(computeNodeTypeName)
394 .setComputeTemplateConsolidationData(computeNodeTemplateId,
395 computeTemplateConsolidationData);
398 private static void updateRelationsForEntityConsolidationData(List<String> nodeIdsConnectedIn,
399 List<String> nodeIdsConnectedOut,
400 List<String> groupIds,
401 List<String> getAttrInIds,
402 List<Pair<String, GetAttrFuncData>> getAttrOutFuncDataList,
403 EntityConsolidationData entity) {
404 updateRelationsIn(entity, nodeIdsConnectedIn);
405 updateRelationsOut(entity, nodeIdsConnectedOut);
406 updateGetAttrIn(entity, getAttrInIds);
407 updateGetAttrOut(entity, getAttrOutFuncDataList);
408 entity.setGroupIds(groupIds);
411 public static void initComputeNodeTemplateIdInConsolidationData(String serviceTemplateFileName,
412 String computeNodeTypeName,
413 String computeNodeTemplateId,
414 ConsolidationData consolidationData) {
417 .isNull(consolidationData.getComputeConsolidationData().getFileComputeConsolidationData
418 (serviceTemplateFileName))) {
419 consolidationData.getComputeConsolidationData().setFileComputeConsolidationData
420 (serviceTemplateFileName, new FileComputeConsolidationData());
422 TypeComputeConsolidationData typeComputeConsolidationData =
423 consolidationData.getComputeConsolidationData().getFileComputeConsolidationData
424 (serviceTemplateFileName).getTypeComputeConsolidationData(computeNodeTypeName);
427 typeComputeConsolidationData.getComputeTemplateConsolidationData(computeNodeTemplateId) ==
430 consolidationData.getComputeConsolidationData()
431 .getFileComputeConsolidationData(serviceTemplateFileName)
432 .getTypeComputeConsolidationData(computeNodeTypeName)
433 .setComputeTemplateConsolidationData(computeNodeTemplateId,
434 new ComputeTemplateConsolidationData());
439 public static void updateNestedConsolidationData(String serviceTemplateName,
440 List<String> substitutionNodeTemplateIds,
441 ConsolidationData consolidationData) {
442 if (Objects.isNull(consolidationData.getNestedConsolidationData())) {
443 consolidationData.setNestedConsolidationData(new NestedConsolidationData());
446 FileNestedConsolidationData fileNestedConsolidationData = new FileNestedConsolidationData();
447 for (String substitutionNodeTemplateId : substitutionNodeTemplateIds) {
448 NestedTemplateConsolidationData nestedTemplateConsolidationData =
449 new NestedTemplateConsolidationData();
450 nestedTemplateConsolidationData.setNodeTemplateId(substitutionNodeTemplateId);
451 fileNestedConsolidationData.setNestedTemplateConsolidationData(substitutionNodeTemplateId,
452 nestedTemplateConsolidationData);
454 consolidationData.getNestedConsolidationData()
455 .setFileNestedConsolidationData(serviceTemplateName, fileNestedConsolidationData);
458 public static ComputeTemplateConsolidationData createComputeTemplateConsolidationData(
459 String computeNodeTemplateId,
460 List<Pair<String, String>> portTypeToIdList,
461 Map<String, List<RequirementAssignmentData>> volumes) {
462 ComputeTemplateConsolidationData compute = new ComputeTemplateConsolidationData();
463 compute.setNodeTemplateId(computeNodeTemplateId);
464 if (portTypeToIdList != null) {
465 for (Pair<String, String> port : portTypeToIdList) {
466 compute.addPort(port.getLeft(), port.getRight());
469 compute.setVolumes(volumes);
473 private static void updateRelationsIn(EntityConsolidationData entity,
474 List<String> idsPontingTome) {
475 if (CollectionUtils.isEmpty(idsPontingTome)) {
479 for (String pointingId : idsPontingTome) {
481 .addNodesConnectedIn(pointingId, entity.getNodeTemplateId(), new RequirementAssignment());
485 private static void updateRelationsOut(EntityConsolidationData entity,
486 List<String> idsToUpdate) {
487 if (CollectionUtils.isEmpty(idsToUpdate)) {
491 for (String id : idsToUpdate) {
492 entity.addNodesConnectedOut(id, id, new RequirementAssignment());
496 private static void updateGetAttrIn(EntityConsolidationData entity,
497 List<String> idsToUpdate) {
498 if (CollectionUtils.isEmpty(idsToUpdate)) {
502 for (String id : idsToUpdate) {
503 entity.addNodesGetAttrIn(id, new GetAttrFuncData());
507 private static void updateGetAttrOut(EntityConsolidationData entity,
508 List<Pair<String, GetAttrFuncData>> getAttrOutIds) {
509 if (CollectionUtils.isEmpty(getAttrOutIds)) {
513 for (Pair<String, GetAttrFuncData> getAttrOutFunc : getAttrOutIds) {
514 entity.addNodesGetAttrOut(getAttrOutFunc.getLeft(), getAttrOutFunc.getRight());
518 private static void updateVolumes(ComputeTemplateConsolidationData compute,
519 List<String> volumeIds) {
520 if (CollectionUtils.isEmpty(volumeIds)) {
524 for (String id : volumeIds) {
525 RequirementAssignment requirementAssignment = new RequirementAssignment();
526 requirementAssignment.setNode(id);
527 compute.addVolume(id, requirementAssignment);
531 public static void initComputeNodeTypeInConsolidationData(String serviceTemplateFileName,
532 String computeNodeTypeName,
533 ConsolidationData consolidationData) {
534 ComputeConsolidationData computeConsolidationData =
535 consolidationData.getComputeConsolidationData();
536 if (!computeConsolidationData.getAllServiceTemplateFileNames()
537 .contains(serviceTemplateFileName)) {
538 computeConsolidationData
539 .setFileComputeConsolidationData(serviceTemplateFileName,
540 new FileComputeConsolidationData());
542 computeConsolidationData
543 .getFileComputeConsolidationData(serviceTemplateFileName).setTypeComputeConsolidationData(
544 computeNodeTypeName, new TypeComputeConsolidationData());
547 public static Map<String, List<RequirementAssignmentData>> getNodeConnectedOutList(
548 NodeTemplate nodeTemplate, String requirementKey) {
549 Map<String, List<RequirementAssignmentData>> requirementAssignmentDataMap = new HashMap<>();
550 Optional<List<RequirementAssignmentData>> requirementAssignmentDataList =
551 TestUtils.createRequirementAssignmentDataList(nodeTemplate, requirementKey);
552 if (requirementAssignmentDataList.isPresent()) {
553 for (RequirementAssignmentData requirementAssignmentData : requirementAssignmentDataList
555 String connectedNodeTemplateId = requirementAssignmentData.getRequirementAssignment()
557 requirementAssignmentDataMap
558 .computeIfAbsent(connectedNodeTemplateId, k -> new ArrayList<>());
559 requirementAssignmentDataMap.get(connectedNodeTemplateId).add(requirementAssignmentData);
562 return requirementAssignmentDataMap;
565 public static Map<String, List<GetAttrFuncData>> getNodesGetAttrIn(NodeTemplate nodeTemplate,
566 String nodeTemplateId) {
567 Map<String, List<GetAttrFuncData>> nodesGetAttrIn = new HashMap<>();
568 List<GetAttrFuncData> getAttrList = new ArrayList<>();
569 ObjectMapper mapper = new ObjectMapper();
570 Map<String, Object> nodeTemplateProperties = nodeTemplate.getProperties();
571 for (Map.Entry<String, Object> propertyEntry : nodeTemplateProperties.entrySet()) {
572 Map<String, List> propertyValue = mapper.convertValue(propertyEntry.getValue(), Map.class);
573 for (Map.Entry<String, List> entry : propertyValue.entrySet()) {
574 if (entry.getKey().equals("get_attribute")) {
575 GetAttrFuncData data = new GetAttrFuncData();
576 data.setFieldName(propertyEntry.getKey());
577 data.setAttributeName(entry.getValue().get(1).toString());
578 getAttrList.add(data);
581 System.out.println();
583 nodesGetAttrIn.put(nodeTemplateId, getAttrList);
584 return nodesGetAttrIn;
587 public static void updatePortsInComputeTemplateConsolidationData(
588 List<Pair<String, String>> portIdToTypeList, ComputeTemplateConsolidationData
590 compute.setPorts(new HashMap<>());
591 for (Pair<String, String> portIdToType : portIdToTypeList) {
592 compute.getPorts().putIfAbsent(portIdToType.getLeft(), new ArrayList<>());
593 compute.getPorts().get(portIdToType.getLeft()).add(portIdToType.getRight());
597 public static Map<String, List<RequirementAssignmentData>> getNodeConnectedInList(
598 String sourceNodeTemplateId,
599 ServiceTemplate serviceTemplate, String requirementKey) {
600 Optional<List<RequirementAssignmentData>> requirementAssignmentDataList = Optional.empty();
601 List<RequirementAssignmentData> assignmentDataList = new ArrayList<>();
602 Map<String, List<RequirementAssignmentData>> requirementAssignmentDataMap = new HashMap<>();
603 Map<String, NodeTemplate> nodeTemplates = serviceTemplate.getTopology_template()
604 .getNode_templates();
605 for (Map.Entry<String, NodeTemplate> entry : nodeTemplates.entrySet()) {
606 String nodeTemplateId = entry.getKey();
607 List<Map<String, RequirementAssignment>> requirements = entry.getValue().getRequirements();
608 if (requirements != null) {
609 for (Map<String, RequirementAssignment> requirement : requirements) {
610 if (requirement.get(requirementKey) != null) {
611 RequirementAssignment requirementAssignment = requirement.get(requirementKey);
612 if (requirementAssignment != null) {
613 if (requirementAssignment.getNode().equals(sourceNodeTemplateId)) {
614 RequirementAssignmentData data = new RequirementAssignmentData(requirementKey,
615 requirementAssignment);
616 assignmentDataList.add(data);
621 requirementAssignmentDataList = Optional.ofNullable(assignmentDataList);
622 if (requirementAssignmentDataList.isPresent()) {
623 for (RequirementAssignmentData requirementAssignmentData : requirementAssignmentDataList
625 requirementAssignmentDataMap.computeIfAbsent(nodeTemplateId, k -> new ArrayList<>());
626 requirementAssignmentDataMap.get(nodeTemplateId).add(requirementAssignmentData);
629 requirementAssignmentDataList = Optional.empty();
632 return requirementAssignmentDataMap;
635 public static List<String> getGroupsForNode(ServiceTemplate serviceTemplate, String
637 List<String> entityGroups = new ArrayList<>();
638 Map<String, GroupDefinition> groups = serviceTemplate.getTopology_template().getGroups();
639 Map<String, NodeTemplate> nodeTemplates =
640 serviceTemplate.getTopology_template().getNode_templates();
641 for (Map.Entry<String, GroupDefinition> entry : groups.entrySet()) {
642 String groupId = entry.getKey();
643 GroupDefinition groupDefinition = entry.getValue();
644 if (groupDefinition.getType().contains("HeatStack")) {
647 List<String> groupMembers = groupDefinition.getMembers();
648 for (String member : groupMembers) {
649 if (groups.containsKey(member)) {
652 if (member.equals(nodeTemplateId)) {
653 entityGroups.add(groupId);
660 private static Optional<List<RequirementAssignmentData>> createRequirementAssignmentDataList(
661 NodeTemplate nodeTemplate, String requirementKey) {
663 Optional<List<RequirementAssignment>> requirementAssignmentLink =
664 DataModelUtil.getRequirementAssignment(nodeTemplate.getRequirements(), requirementKey);
665 if (!requirementAssignmentLink.isPresent()) {
666 return Optional.empty();
669 List<RequirementAssignmentData> requirementAssignmentDataList = new ArrayList<>();
670 for (RequirementAssignment requirementAssignment : requirementAssignmentLink.get()) {
671 RequirementAssignmentData requirementAssignmentData = new RequirementAssignmentData
672 (requirementKey, requirementAssignment);
673 requirementAssignmentDataList.add(requirementAssignmentData);
675 return Optional.ofNullable(requirementAssignmentDataList);
678 public static Optional<List<RequirementAssignmentData>> getRequirementAssignmentDataList(
679 NodeTemplate nodeTemplate, String requirementKey) {
680 List<RequirementAssignmentData> returnedReqAssignmentDataList = new ArrayList<>();
681 Optional<List<RequirementAssignmentData>> requirementAssignmentDataList =
682 TestUtils.createRequirementAssignmentDataList(nodeTemplate, requirementKey);
684 if (requirementAssignmentDataList.isPresent()) {
685 for (RequirementAssignmentData requirementAssignmentData : requirementAssignmentDataList
687 returnedReqAssignmentDataList.add(requirementAssignmentData);
689 return Optional.of(returnedReqAssignmentDataList);
691 return Optional.empty();