2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.openecomp.sdc.translator;
23 import org.apache.commons.collections4.CollectionUtils;
24 import org.apache.commons.lang3.tuple.Pair;
25 import org.codehaus.jackson.map.ObjectMapper;
26 import org.junit.Assert;
27 import org.openecomp.core.translator.api.HeatToToscaTranslator;
28 import org.openecomp.core.utilities.file.FileUtils;
29 import org.openecomp.sdc.common.utils.SdcCommon;
30 import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel;
31 import org.openecomp.sdc.tosca.datatypes.model.GroupDefinition;
32 import org.openecomp.sdc.tosca.datatypes.model.NodeTemplate;
33 import org.openecomp.sdc.tosca.datatypes.model.RequirementAssignment;
34 import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate;
35 import org.openecomp.sdc.tosca.services.DataModelUtil;
36 import org.openecomp.sdc.tosca.services.ToscaExtensionYamlUtil;
37 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.*;
40 import java.io.FileInputStream;
41 import java.io.FileNotFoundException;
42 import java.io.IOException;
43 import java.io.InputStream;
45 import java.nio.file.NotDirectoryException;
48 public class TestUtils {
49 private static final String MANIFEST_NAME = SdcCommon.MANIFEST_NAME;
50 private static String zipFilename = "VSP.zip";
51 private static String validationFilename = "validationOutput.json";
57 public static void addFilesToTranslator(HeatToToscaTranslator heatToToscaTranslator, String path)
59 File manifestFile = new File(path);
60 File[] files = manifestFile.listFiles();
63 Assert.assertNotNull("manifest files is empty", files);
65 for (File file : files) {
67 try (FileInputStream fis = new FileInputStream(file)) {
69 fileContent = FileUtils.toByteArray(fis);
71 if (file.getName().equals(MANIFEST_NAME)) {
72 heatToToscaTranslator.addManifest(MANIFEST_NAME, fileContent);
74 if (!file.getName().equals(zipFilename) && (!file.getName().equals(validationFilename))) {
75 heatToToscaTranslator.addFile(file.getName(), fileContent);
83 * Get tosca service template models for the files in a directory
84 * @param baseDirPath base directory for the tosca file
85 * @return Map of <ServiceTemplateFilename, ServiceTemplate> for the files in this directory
87 public static Map<String, ServiceTemplate> getServiceTemplates(String baseDirPath){
88 Map<String, ServiceTemplate> serviceTemplateMap = new HashMap<>();
89 ToscaExtensionYamlUtil toscaExtensionYamlUtil = new ToscaExtensionYamlUtil();
90 baseDirPath = "."+baseDirPath+"/";
92 String[] fileList = {};
93 URL filesDirUrl = TestUtils.class.getClassLoader().getResource(baseDirPath);
94 if (filesDirUrl != null && filesDirUrl.getProtocol().equals("file")) {
95 fileList = new File(filesDirUrl.toURI()).list();
97 Assert.fail("Invalid expected output files directory");
99 for (int i = 0; i < fileList.length; i++) {
100 InputStream serviceTemplateInputStream = FileUtils.getFileInputStream(TestUtils.class
101 .getClassLoader().getResource(baseDirPath + fileList[i]));
102 ServiceTemplate serviceTemplate = toscaExtensionYamlUtil.yamlToObject
103 (serviceTemplateInputStream, ServiceTemplate.class);
104 serviceTemplateMap.put(fileList[i], serviceTemplate);
106 } catch (Exception e) {
107 Assert.fail(e.getMessage());
109 return serviceTemplateMap;
113 * Get tosca service template models
114 * @param expectedResultMap Map of filename and payload of the expected result files
115 * @return Map of <ServiceTemplateFilename, ServiceTemplate> for the files in this directory
117 public static Map<String, ServiceTemplate> getServiceTemplates(Map<String, byte[]>
119 Map<String, ServiceTemplate> serviceTemplateMap = new HashMap<>();
120 ToscaExtensionYamlUtil toscaExtensionYamlUtil = new ToscaExtensionYamlUtil();
121 for(String fileName : expectedResultMap.keySet()){
122 ServiceTemplate serviceTemplate = toscaExtensionYamlUtil.yamlToObject
123 (new String(expectedResultMap.get(fileName)), ServiceTemplate.class);
124 serviceTemplateMap.put(fileName, serviceTemplate);
126 return serviceTemplateMap;
130 public static ToscaServiceModel loadToscaServiceModel(String serviceTemplatesPath,
131 String globalServiceTemplatesPath,
132 String entryDefinitionServiceTemplate)
134 ToscaExtensionYamlUtil toscaExtensionYamlUtil = new ToscaExtensionYamlUtil();
135 Map<String, ServiceTemplate> serviceTemplates = new HashMap<>();
136 if (entryDefinitionServiceTemplate == null) {
137 entryDefinitionServiceTemplate = "MainServiceTemplate.yaml";
140 serviceTemplates = getServiceTemplates(serviceTemplatesPath);
141 if (globalServiceTemplatesPath != null) {
142 serviceTemplates = getServiceTemplates(globalServiceTemplatesPath);
145 return new ToscaServiceModel(null, serviceTemplates, entryDefinitionServiceTemplate);
148 public static ServiceTemplate loadServiceTemplate(String serviceTemplatePath)
150 ServiceTemplate serviceTemplateFromYaml = new ServiceTemplate();
151 ToscaExtensionYamlUtil toscaExtensionYamlUtil = new ToscaExtensionYamlUtil();
152 URL urlFile = TestUtils.class.getResource(serviceTemplatePath);
153 if (urlFile != null) {
154 File pathFile = new File(urlFile.getFile());
155 File[] files = pathFile.listFiles();
156 for (File file : files) {
157 try (InputStream yamlFile = new FileInputStream(file)) {
158 serviceTemplateFromYaml =
159 toscaExtensionYamlUtil.yamlToObject(yamlFile, ServiceTemplate.class);
160 createConcreteRequirementObjectsInServiceTemplate(serviceTemplateFromYaml, toscaExtensionYamlUtil);
163 } catch (IOException ignore) {
165 } catch (FileNotFoundException e) {
167 } catch (IOException e) {
172 throw new NotDirectoryException(serviceTemplatePath);
174 return serviceTemplateFromYaml;
178 public static void loadServiceTemplates(String serviceTemplatesPath,
179 ToscaExtensionYamlUtil toscaExtensionYamlUtil,
180 Map<String, ServiceTemplate> serviceTemplates)
182 URL urlFile = TestUtils.class.getResource(serviceTemplatesPath);
183 if (urlFile != null) {
184 File pathFile = new File(urlFile.getFile());
185 File[] files = pathFile.listFiles();
187 addServiceTemplateFiles(serviceTemplates, files, toscaExtensionYamlUtil);
189 throw new NotDirectoryException(serviceTemplatesPath);
192 throw new NotDirectoryException(serviceTemplatesPath);
196 private static void addServiceTemplateFiles(Map<String, ServiceTemplate> serviceTemplates,
198 ToscaExtensionYamlUtil toscaExtensionYamlUtil)
200 for (File file : files) {
201 try (InputStream yamlFile = new FileInputStream(file)) {
202 ServiceTemplate serviceTemplateFromYaml =
203 toscaExtensionYamlUtil.yamlToObject(yamlFile, ServiceTemplate.class);
204 createConcreteRequirementObjectsInServiceTemplate(serviceTemplateFromYaml, toscaExtensionYamlUtil);
205 serviceTemplates.put(file.getName(), serviceTemplateFromYaml);
208 } catch (IOException ignore) {
210 } catch (FileNotFoundException e) {
212 } catch (IOException e) {
218 private static void createConcreteRequirementObjectsInServiceTemplate(ServiceTemplate
219 serviceTemplateFromYaml,
220 ToscaExtensionYamlUtil
221 toscaExtensionYamlUtil) {
223 if (serviceTemplateFromYaml == null
224 || serviceTemplateFromYaml.getTopology_template() == null
225 || serviceTemplateFromYaml.getTopology_template().getNode_templates() == null) {
229 //Creating concrete objects
230 Map<String, NodeTemplate> nodeTemplates =
231 serviceTemplateFromYaml.getTopology_template().getNode_templates();
232 for (Map.Entry<String, NodeTemplate> entry : nodeTemplates.entrySet()) {
233 NodeTemplate nodeTemplate = entry.getValue();
234 List<Map<String, RequirementAssignment>> requirements = nodeTemplate.getRequirements();
235 List<Map<String, RequirementAssignment>> concreteRequirementList = new ArrayList<>();
236 if (requirements != null) {
237 ListIterator<Map<String, RequirementAssignment>> reqListIterator = requirements
239 while (reqListIterator.hasNext()){
240 Map<String, RequirementAssignment> requirement = reqListIterator.next();
241 Map<String, RequirementAssignment> concreteRequirement = new HashMap<>();
242 for (Map.Entry<String, RequirementAssignment> reqEntry : requirement.entrySet()) {
243 RequirementAssignment requirementAssignment = (toscaExtensionYamlUtil
244 .yamlToObject(toscaExtensionYamlUtil.objectToYaml(reqEntry.getValue()),
245 RequirementAssignment.class));
246 concreteRequirement.put(reqEntry.getKey(), requirementAssignment);
247 concreteRequirementList.add(concreteRequirement);
248 reqListIterator.remove();
251 requirements.clear();
252 requirements.addAll(concreteRequirementList);
253 nodeTemplate.setRequirements(requirements);
255 System.out.println();
256 //toscaExtensionYamlUtil.yamlToObject(nodeTemplate, NodeTemplate.class);
260 public static void updateMultiplePortConsolidationDatas(String serviceTemplateName,
261 List<String> portNodeTemplateIds,
262 List<List<String>> nodesConnectedInIds,
263 List<List<String>> nodesConnectedOutIds,
264 List<List<String>> groupIds,
265 List<List<String>> getAttrInIds,
266 List<List<Pair<String, GetAttrFuncData>>> getAttrOutFuncDataList,
267 ConsolidationData consolidationData){
268 for(int i = 0; i < portNodeTemplateIds.size(); i++){
269 updatePortConsolidationData(serviceTemplateName, portNodeTemplateIds.get(i),
270 nodesConnectedInIds.get(i), nodesConnectedOutIds.get(i),
271 groupIds.get(i), getAttrInIds.get(i),getAttrOutFuncDataList.get(i), consolidationData);
275 public static void updatePortConsolidationData(String serviceTemplateFileName,
276 String portNodeTemplateId,
277 List<String> nodesConnectedInIds,
278 List<String> nodesConnectedOutIds,
279 List<String> groupIds, List<String> getAttrInIds,
280 List<Pair<String, GetAttrFuncData>> getAttrOutFuncDataList,
281 ConsolidationData consolidationData) {
283 PortTemplateConsolidationData portTemplateConsolidationData =
284 createPortTemplateConsolidationData(portNodeTemplateId);
286 updateRelationsForEntityConsolidationData(portNodeTemplateId, nodesConnectedInIds,
287 nodesConnectedOutIds, groupIds, getAttrInIds, getAttrOutFuncDataList, portTemplateConsolidationData);
289 consolidationData.getPortConsolidationData()
290 .getFilePortConsolidationData(serviceTemplateFileName)
291 .setPortTemplateConsolidationData(portNodeTemplateId, portTemplateConsolidationData);
294 public static PortTemplateConsolidationData createPortTemplateConsolidationData(
295 String portNodeTemplateId) {
296 PortTemplateConsolidationData portTemplateConsolidationData =
297 new PortTemplateConsolidationData();
298 portTemplateConsolidationData.setNodeTemplateId(portNodeTemplateId);
299 return portTemplateConsolidationData;
302 public static void initPortConsolidationData(String serviceTemplateFileName,
303 ConsolidationData consolidationData) {
305 consolidationData.getPortConsolidationData()
306 .setFilePortConsolidationData(serviceTemplateFileName, new FilePortConsolidationData());
309 public static void updateComputeTemplateConsolidationData(String serviceTemplateFileName,
310 String computeNodeTypeName,
311 String computeNodeTemplateId,
312 List<String> nodeIdsConnectedIn,
313 List<String> nodeIdsConnectedOut,
314 List<String> volumeIds,
315 List<String> groupIds,
316 List<String> getAttrInIds,
317 List<Pair<String, GetAttrFuncData>> getAttrOutIds,
318 List<Pair<String, String>> portTypeToIdList,
319 ConsolidationData consolidationData) {
321 initComputeNodeTemplateIdInConsolidationData(serviceTemplateFileName, computeNodeTypeName,
322 computeNodeTemplateId, consolidationData);
324 Map<String, List<RequirementAssignmentData>> volumes =
325 consolidationData.getComputeConsolidationData().getFileComputeConsolidationData
326 (serviceTemplateFileName).getTypeComputeConsolidationData(computeNodeTypeName)
327 .getComputeTemplateConsolidationData(computeNodeTemplateId).getVolumes();
329 ComputeTemplateConsolidationData computeTemplateConsolidationData =
330 createComputeTemplateConsolidationData(computeNodeTemplateId, portTypeToIdList, volumes);
332 updateRelationsForEntityConsolidationData(computeNodeTemplateId, nodeIdsConnectedIn,
333 nodeIdsConnectedOut, groupIds, getAttrInIds, getAttrOutIds, computeTemplateConsolidationData);
335 updateVolumes(computeTemplateConsolidationData, volumeIds);
337 consolidationData.getComputeConsolidationData()
338 .getFileComputeConsolidationData(serviceTemplateFileName)
339 .getTypeComputeConsolidationData(computeNodeTypeName)
340 .setComputeTemplateConsolidationData(computeNodeTemplateId,
341 computeTemplateConsolidationData);
344 private static void updateRelationsForEntityConsolidationData(String entityNodeTemplateId,
345 List<String> nodeIdsConnectedIn,
346 List<String> nodeIdsConnectedOut,
347 List<String> groupIds,
348 List<String> getAttrInIds,
349 List<Pair<String, GetAttrFuncData>> getAttrOutFuncDataList,
350 EntityConsolidationData entity) {
351 updateRelationsIn(entity, nodeIdsConnectedIn);
352 updateRelationsOut(entity, entityNodeTemplateId, nodeIdsConnectedOut);
353 updateGetAttrIn(entity, getAttrInIds);
354 updateGetAttrOut(entity, getAttrOutFuncDataList);
355 entity.setGroupIds(groupIds);
358 public static void initComputeNodeTemplateIdInConsolidationData(String serviceTemplateFileName,
359 String computeNodeTypeName,
360 String computeNodeTemplateId,
361 ConsolidationData consolidationData) {
363 if(Objects.isNull(consolidationData.getComputeConsolidationData().getFileComputeConsolidationData
364 (serviceTemplateFileName))) {
365 consolidationData.getComputeConsolidationData().setFileComputeConsolidationData
366 (serviceTemplateFileName, new FileComputeConsolidationData());
368 TypeComputeConsolidationData typeComputeConsolidationData =
369 consolidationData.getComputeConsolidationData().getFileComputeConsolidationData
370 (serviceTemplateFileName).getTypeComputeConsolidationData(computeNodeTypeName);
373 typeComputeConsolidationData.getComputeTemplateConsolidationData(computeNodeTemplateId) == null) {
375 consolidationData.getComputeConsolidationData()
376 .getFileComputeConsolidationData(serviceTemplateFileName)
377 .getTypeComputeConsolidationData(computeNodeTypeName)
378 .setComputeTemplateConsolidationData(computeNodeTemplateId, new ComputeTemplateConsolidationData());
383 public static void updateNestedConsolidationData(String serviceTemplateName,
384 List<String> substitutionNodeTemplateIds,
385 ConsolidationData consolidationData){
386 if(Objects.isNull(consolidationData.getNestedConsolidationData())){
387 consolidationData.setNestedConsolidationData(new NestedConsolidationData());
390 FileNestedConsolidationData fileNestedConsolidationData = new FileNestedConsolidationData();
391 for(String substitutionNodeTemplateId : substitutionNodeTemplateIds) {
392 NestedTemplateConsolidationData nestedTemplateConsolidationData = new NestedTemplateConsolidationData();
393 nestedTemplateConsolidationData.setNodeTemplateId(substitutionNodeTemplateId);
394 fileNestedConsolidationData.setNestedTemplateConsolidationData(substitutionNodeTemplateId, nestedTemplateConsolidationData);
396 consolidationData.getNestedConsolidationData().setFileNestedConsolidationData(serviceTemplateName, fileNestedConsolidationData);
399 public static ComputeTemplateConsolidationData createComputeTemplateConsolidationData(String computeNodeTemplateId,
400 List<Pair<String, String>> portTypeToIdList,
401 Map<String,List<RequirementAssignmentData>> volumes) {
402 ComputeTemplateConsolidationData compute = new ComputeTemplateConsolidationData();
403 compute.setNodeTemplateId(computeNodeTemplateId);
404 if (portTypeToIdList != null) {
405 for (Pair<String, String> port : portTypeToIdList) {
406 compute.addPort(port.getLeft(), port.getRight());
409 compute.setVolumes(volumes);
413 public static void updateRelationsIn(EntityConsolidationData entity,
414 List<String> idsPontingTome){
415 if(CollectionUtils.isEmpty(idsPontingTome)){
419 for(String pointingId : idsPontingTome){
420 entity.addNodesConnectedIn(pointingId, entity.getNodeTemplateId(), new RequirementAssignment());
424 public static void updateRelationsOut(EntityConsolidationData entity,
425 String nodeTemplateId,
426 List<String> idsToUpdate){
427 if(CollectionUtils.isEmpty(idsToUpdate)){
431 for(String id : idsToUpdate){
432 entity.addNodesConnectedOut(id, id, new RequirementAssignment());
436 public static void updateGetAttrIn(EntityConsolidationData entity,
437 List<String> idsToUpdate){
438 if(CollectionUtils.isEmpty(idsToUpdate)){
442 for(String id : idsToUpdate){
443 entity.addNodesGetAttrIn(id, new GetAttrFuncData());
447 public static void updateGetAttrOut(EntityConsolidationData entity,
448 List<Pair<String, GetAttrFuncData>> getAttrOutIds){
449 if(CollectionUtils.isEmpty(getAttrOutIds)){
453 for(Pair<String, GetAttrFuncData> getAttrOutFunc : getAttrOutIds){
454 entity.addNodesGetAttrOut(getAttrOutFunc.getLeft(), getAttrOutFunc.getRight());
458 public static void updateVolumes(ComputeTemplateConsolidationData compute,
459 List<String> volumeIds){
460 if(CollectionUtils.isEmpty(volumeIds)){
464 for(String id : volumeIds){
465 RequirementAssignment requirementAssignment = new RequirementAssignment();
466 requirementAssignment.setNode(id);
467 compute.addVolume(id, requirementAssignment);
471 public static void initComputeNodeTypeInConsolidationData(String serviceTemplateFileName,
472 String computeNodeTypeName,
473 ConsolidationData consolidationData) {
474 ComputeConsolidationData computeConsolidationData =
475 consolidationData.getComputeConsolidationData();
476 if (!computeConsolidationData.getAllServiceTemplateFileNames()
477 .contains(serviceTemplateFileName)) {
478 computeConsolidationData
479 .setFileComputeConsolidationData(serviceTemplateFileName,
480 new FileComputeConsolidationData());
482 computeConsolidationData
483 .getFileComputeConsolidationData(serviceTemplateFileName).setTypeComputeConsolidationData(
484 computeNodeTypeName, new TypeComputeConsolidationData());
487 public static Map<String, List<RequirementAssignmentData>> getNodeConnectedOutList(
488 NodeTemplate nodeTemplate, String requirementKey) {
489 Map<String, List<RequirementAssignmentData>> requirementAssignmentDataMap = new HashMap<>();
490 Optional<List<RequirementAssignmentData>> requirementAssignmentDataList =
491 TestUtils.createRequirementAssignmentDataList(nodeTemplate, requirementKey);
492 if (requirementAssignmentDataList.isPresent()) {
493 for (RequirementAssignmentData requirementAssignmentData : requirementAssignmentDataList
495 String connectedNodeTemplateId = requirementAssignmentData.getRequirementAssignment()
497 requirementAssignmentDataMap
498 .computeIfAbsent(connectedNodeTemplateId, k -> new ArrayList<>());
499 requirementAssignmentDataMap.get(connectedNodeTemplateId).add(requirementAssignmentData);
502 return requirementAssignmentDataMap;
505 public static Map<String, List<GetAttrFuncData>> getNodesGetAttrIn(NodeTemplate nodeTemplate,
506 String nodeTemplateId) {
507 Map<String, List<GetAttrFuncData>> nodesGetAttrIn = new HashMap<>();
508 List<GetAttrFuncData> getAttrList = new ArrayList<>();
509 ObjectMapper mapper = new ObjectMapper();
510 Map<String, Object> nodeTemplateProperties = nodeTemplate.getProperties();
511 for (Map.Entry<String, Object> propertyEntry : nodeTemplateProperties.entrySet()) {
512 Map<String, List> propertyValue = mapper.convertValue(propertyEntry.getValue(), Map.class);
513 for (Map.Entry<String, List> entry : propertyValue.entrySet()) {
514 if (entry.getKey().equals("get_attribute")) {
515 GetAttrFuncData data = new GetAttrFuncData();
516 data.setFieldName(propertyEntry.getKey());
517 data.setAttributeName(entry.getValue().get(1).toString());
518 getAttrList.add(data);
521 System.out.println();
523 nodesGetAttrIn.put(nodeTemplateId, getAttrList);
524 return nodesGetAttrIn;
527 public static void updatePortsInComputeTemplateConsolidationData(
528 List<Pair<String, String>> portIdToTypeList, ComputeTemplateConsolidationData
530 compute.setPorts(new HashMap<>());
531 for(Pair<String, String> portIdToType : portIdToTypeList){
532 compute.getPorts().putIfAbsent(portIdToType.getLeft(), new ArrayList<>());
533 compute.getPorts().get(portIdToType.getLeft()).add(portIdToType.getRight());
537 public static Map<String, List<RequirementAssignmentData>> getNodeConnectedInList(
538 String sourceNodeTemplateId,
539 ServiceTemplate serviceTemplate, String requirementKey) {
540 Optional<List<RequirementAssignmentData>> requirementAssignmentDataList = Optional.empty();
541 List<RequirementAssignmentData> assignmentDataList = new ArrayList<>();
542 Map<String, List<RequirementAssignmentData>> requirementAssignmentDataMap = new HashMap<>();
543 Map<String, NodeTemplate> nodeTemplates = serviceTemplate.getTopology_template()
544 .getNode_templates();
545 for (Map.Entry<String, NodeTemplate> entry : nodeTemplates.entrySet()) {
546 String nodeTemplateId = entry.getKey();
547 List<Map<String, RequirementAssignment>> requirements = entry.getValue().getRequirements();
548 if (requirements != null) {
549 for (Map<String, RequirementAssignment> requirement : requirements) {
550 if (requirement.get(requirementKey) != null) {
551 RequirementAssignment requirementAssignment = requirement.get(requirementKey);
552 if (requirementAssignment != null) {
553 if (requirementAssignment.getNode().equals(sourceNodeTemplateId)) {
554 RequirementAssignmentData data = new RequirementAssignmentData(requirementKey,
555 requirementAssignment);
556 assignmentDataList.add(data);
561 requirementAssignmentDataList = Optional.ofNullable(assignmentDataList);
562 if (requirementAssignmentDataList.isPresent()) {
563 for (RequirementAssignmentData requirementAssignmentData : requirementAssignmentDataList
565 requirementAssignmentDataMap.computeIfAbsent(nodeTemplateId, k -> new ArrayList<>());
566 requirementAssignmentDataMap.get(nodeTemplateId).add(requirementAssignmentData);
569 requirementAssignmentDataList = Optional.empty();
572 return requirementAssignmentDataMap;
575 public static List<String> getGroupsForNode(ServiceTemplate serviceTemplate, String
577 List<String> entityGroups = new ArrayList<>();
578 Map<String, GroupDefinition> groups = serviceTemplate.getTopology_template().getGroups();
579 Map<String, NodeTemplate> nodeTemplates =
580 serviceTemplate.getTopology_template().getNode_templates();
581 for (Map.Entry<String, GroupDefinition> entry : groups.entrySet()) {
582 String groupId = entry.getKey();
583 GroupDefinition groupDefinition = entry.getValue();
584 if (groupDefinition.getType().contains("HeatStack"))
586 List<String> groupMembers = groupDefinition.getMembers();
587 for (String member : groupMembers) {
588 if (groups.containsKey(member))
590 if (member.equals(nodeTemplateId)) {
591 entityGroups.add(groupId);
598 private static Optional<List<RequirementAssignmentData>> createRequirementAssignmentDataList(
599 NodeTemplate nodeTemplate, String requirementKey) {
601 Optional<List<RequirementAssignment>> requirementAssignmentLink =
602 DataModelUtil.getRequirementAssignment(nodeTemplate.getRequirements(), requirementKey);
603 if (!requirementAssignmentLink.isPresent()) {
604 return Optional.empty();
607 List<RequirementAssignmentData> requirementAssignmentDataList = new ArrayList<>();
608 for (RequirementAssignment requirementAssignment : requirementAssignmentLink.get()) {
609 RequirementAssignmentData requirementAssignmentData = new RequirementAssignmentData
610 (requirementKey, requirementAssignment);
611 requirementAssignmentDataList.add(requirementAssignmentData);
613 return Optional.ofNullable(requirementAssignmentDataList);
616 public static Optional<List<RequirementAssignmentData>> getRequirementAssignmentDataList(
617 NodeTemplate nodeTemplate, String requirementKey) {
618 List<RequirementAssignmentData> returnedReqAssignmentDataList = new ArrayList<>();
619 Optional<List<RequirementAssignmentData>> requirementAssignmentDataList =
620 TestUtils.createRequirementAssignmentDataList(nodeTemplate, requirementKey);
622 if (requirementAssignmentDataList.isPresent()) {
623 for (RequirementAssignmentData requirementAssignmentData : requirementAssignmentDataList
625 returnedReqAssignmentDataList.add(requirementAssignmentData);
627 return Optional.of(returnedReqAssignmentDataList);
629 return Optional.empty();