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.logging.api.Logger;
31 import org.openecomp.sdc.logging.api.LoggerFactory;
32 import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel;
33 import org.openecomp.sdc.tosca.datatypes.model.GroupDefinition;
34 import org.openecomp.sdc.tosca.datatypes.model.NodeTemplate;
35 import org.openecomp.sdc.tosca.datatypes.model.RequirementAssignment;
36 import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate;
37 import org.openecomp.sdc.tosca.services.DataModelUtil;
38 import org.openecomp.sdc.tosca.services.ToscaExtensionYamlUtil;
39 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.*;
42 import java.io.FileInputStream;
43 import java.io.FileNotFoundException;
44 import java.io.IOException;
45 import java.io.InputStream;
47 import java.nio.file.NotDirectoryException;
50 public class TestUtils {
51 private static final String MANIFEST_NAME = SdcCommon.MANIFEST_NAME;
52 private static String zipFilename = "VSP.zip";
53 private static String validationFilename = "validationOutput.json";
55 private static Logger logger = (Logger) LoggerFactory.getLogger(TestUtils.class);
61 public static void addFilesToTranslator(HeatToToscaTranslator heatToToscaTranslator, String path)
63 File manifestFile = new File(path);
64 File[] files = manifestFile.listFiles();
67 Assert.assertNotNull("manifest files is empty", files);
69 for (File file : files) {
71 try (FileInputStream fis = new FileInputStream(file)) {
73 fileContent = FileUtils.toByteArray(fis);
75 if (file.getName().equals(MANIFEST_NAME)) {
76 heatToToscaTranslator.addManifest(MANIFEST_NAME, fileContent);
78 if (!file.getName().equals(zipFilename) && (!file.getName().equals(validationFilename))) {
79 heatToToscaTranslator.addFile(file.getName(), fileContent);
87 * Get tosca service template models for the files in a directory
88 * @param baseDirPath base directory for the tosca file
89 * @return Map of <ServiceTemplateFilename, ServiceTemplate> for the files in this directory
91 public static Map<String, ServiceTemplate> getServiceTemplates(String baseDirPath){
92 Map<String, ServiceTemplate> serviceTemplateMap = new HashMap<>();
93 ToscaExtensionYamlUtil toscaExtensionYamlUtil = new ToscaExtensionYamlUtil();
94 baseDirPath = "."+baseDirPath+"/";
96 String[] fileList = {};
97 URL filesDirUrl = TestUtils.class.getClassLoader().getResource(baseDirPath);
98 if (filesDirUrl != null && filesDirUrl.getProtocol().equals("file")) {
99 fileList = new File(filesDirUrl.toURI()).list();
101 Assert.fail("Invalid expected output files directory");
103 for (int i = 0; i < fileList.length; i++) {
105 URL resource = TestUtils.class.getClassLoader().getResource(baseDirPath + fileList[i]);
106 ServiceTemplate serviceTemplate = FileUtils.readViaInputStream(resource,
107 stream -> toscaExtensionYamlUtil.yamlToObject(stream, ServiceTemplate.class));
109 serviceTemplateMap.put(fileList[i], serviceTemplate);
111 } catch (Exception e) {
113 Assert.fail(e.getMessage());
115 return serviceTemplateMap;
119 * Get tosca service template models
120 * @param expectedResultMap Map of filename and payload of the expected result files
121 * @return Map of <ServiceTemplateFilename, ServiceTemplate> for the files in this directory
123 public static Map<String, ServiceTemplate> getServiceTemplates(Map<String, byte[]>
125 Map<String, ServiceTemplate> serviceTemplateMap = new HashMap<>();
126 ToscaExtensionYamlUtil toscaExtensionYamlUtil = new ToscaExtensionYamlUtil();
127 for(String fileName : expectedResultMap.keySet()){
128 ServiceTemplate serviceTemplate = toscaExtensionYamlUtil.yamlToObject
129 (new String(expectedResultMap.get(fileName)), ServiceTemplate.class);
130 serviceTemplateMap.put(fileName, serviceTemplate);
132 return serviceTemplateMap;
136 public static ToscaServiceModel loadToscaServiceModel(String serviceTemplatesPath,
137 String globalServiceTemplatesPath,
138 String entryDefinitionServiceTemplate)
140 ToscaExtensionYamlUtil toscaExtensionYamlUtil = new ToscaExtensionYamlUtil();
141 Map<String, ServiceTemplate> serviceTemplates = new HashMap<>();
142 if (entryDefinitionServiceTemplate == null) {
143 entryDefinitionServiceTemplate = "MainServiceTemplate.yaml";
146 serviceTemplates = getServiceTemplates(serviceTemplatesPath);
147 if (globalServiceTemplatesPath != null) {
148 serviceTemplates = getServiceTemplates(globalServiceTemplatesPath);
151 return new ToscaServiceModel(null, serviceTemplates, entryDefinitionServiceTemplate);
154 public static ServiceTemplate loadServiceTemplate(String serviceTemplatePath)
156 ServiceTemplate serviceTemplateFromYaml = new ServiceTemplate();
157 ToscaExtensionYamlUtil toscaExtensionYamlUtil = new ToscaExtensionYamlUtil();
158 URL urlFile = TestUtils.class.getResource(serviceTemplatePath);
159 if (urlFile != null) {
160 File pathFile = new File(urlFile.getFile());
161 File[] files = pathFile.listFiles();
162 for (File file : files) {
163 try (InputStream yamlFile = new FileInputStream(file)) {
164 serviceTemplateFromYaml =
165 toscaExtensionYamlUtil.yamlToObject(yamlFile, ServiceTemplate.class);
166 createConcreteRequirementObjectsInServiceTemplate(serviceTemplateFromYaml, toscaExtensionYamlUtil);
169 } catch (IOException ignore) {
170 logger.debug("",ignore);
172 } catch (FileNotFoundException e) {
174 } catch (IOException e) {
179 throw new NotDirectoryException(serviceTemplatePath);
181 return serviceTemplateFromYaml;
185 public static void loadServiceTemplates(String serviceTemplatesPath,
186 ToscaExtensionYamlUtil toscaExtensionYamlUtil,
187 Map<String, ServiceTemplate> serviceTemplates)
189 URL urlFile = TestUtils.class.getResource(serviceTemplatesPath);
190 if (urlFile != null) {
191 File pathFile = new File(urlFile.getFile());
192 File[] files = pathFile.listFiles();
194 addServiceTemplateFiles(serviceTemplates, files, toscaExtensionYamlUtil);
196 throw new NotDirectoryException(serviceTemplatesPath);
199 throw new NotDirectoryException(serviceTemplatesPath);
203 private static void addServiceTemplateFiles(Map<String, ServiceTemplate> serviceTemplates,
205 ToscaExtensionYamlUtil toscaExtensionYamlUtil)
207 for (File file : files) {
208 try (InputStream yamlFile = new FileInputStream(file)) {
209 ServiceTemplate serviceTemplateFromYaml =
210 toscaExtensionYamlUtil.yamlToObject(yamlFile, ServiceTemplate.class);
211 createConcreteRequirementObjectsInServiceTemplate(serviceTemplateFromYaml, toscaExtensionYamlUtil);
212 serviceTemplates.put(file.getName(), serviceTemplateFromYaml);
215 } catch (IOException ignore) {
216 logger.debug("",ignore);
218 } catch (FileNotFoundException e) {
220 } catch (IOException e) {
226 private static void createConcreteRequirementObjectsInServiceTemplate(ServiceTemplate
227 serviceTemplateFromYaml,
228 ToscaExtensionYamlUtil
229 toscaExtensionYamlUtil) {
231 if (serviceTemplateFromYaml == null
232 || serviceTemplateFromYaml.getTopology_template() == null
233 || serviceTemplateFromYaml.getTopology_template().getNode_templates() == null) {
237 //Creating concrete objects
238 Map<String, NodeTemplate> nodeTemplates =
239 serviceTemplateFromYaml.getTopology_template().getNode_templates();
240 for (Map.Entry<String, NodeTemplate> entry : nodeTemplates.entrySet()) {
241 NodeTemplate nodeTemplate = entry.getValue();
242 List<Map<String, RequirementAssignment>> requirements = nodeTemplate.getRequirements();
243 List<Map<String, RequirementAssignment>> concreteRequirementList = new ArrayList<>();
244 if (requirements != null) {
245 ListIterator<Map<String, RequirementAssignment>> reqListIterator = requirements
247 while (reqListIterator.hasNext()){
248 Map<String, RequirementAssignment> requirement = reqListIterator.next();
249 Map<String, RequirementAssignment> concreteRequirement = new HashMap<>();
250 for (Map.Entry<String, RequirementAssignment> reqEntry : requirement.entrySet()) {
251 RequirementAssignment requirementAssignment = (toscaExtensionYamlUtil
252 .yamlToObject(toscaExtensionYamlUtil.objectToYaml(reqEntry.getValue()),
253 RequirementAssignment.class));
254 concreteRequirement.put(reqEntry.getKey(), requirementAssignment);
255 concreteRequirementList.add(concreteRequirement);
256 reqListIterator.remove();
259 requirements.clear();
260 requirements.addAll(concreteRequirementList);
261 nodeTemplate.setRequirements(requirements);
263 System.out.println();
264 //toscaExtensionYamlUtil.yamlToObject(nodeTemplate, NodeTemplate.class);
268 public static void updateMultiplePortConsolidationDatas(String serviceTemplateName,
269 List<String> portNodeTemplateIds,
270 List<List<String>> nodesConnectedInIds,
271 List<List<String>> nodesConnectedOutIds,
272 List<List<String>> groupIds,
273 List<List<String>> getAttrInIds,
274 List<List<Pair<String, GetAttrFuncData>>> getAttrOutFuncDataList,
275 ConsolidationData consolidationData){
276 for(int i = 0; i < portNodeTemplateIds.size(); i++){
277 updatePortConsolidationData(serviceTemplateName, portNodeTemplateIds.get(i),
278 nodesConnectedInIds.get(i), nodesConnectedOutIds.get(i),
279 groupIds.get(i), getAttrInIds.get(i),getAttrOutFuncDataList.get(i), consolidationData);
283 public static void updatePortConsolidationData(String serviceTemplateFileName,
284 String portNodeTemplateId,
285 List<String> nodesConnectedInIds,
286 List<String> nodesConnectedOutIds,
287 List<String> groupIds, List<String> getAttrInIds,
288 List<Pair<String, GetAttrFuncData>> getAttrOutFuncDataList,
289 ConsolidationData consolidationData) {
291 PortTemplateConsolidationData portTemplateConsolidationData =
292 createPortTemplateConsolidationData(portNodeTemplateId);
294 updateRelationsForEntityConsolidationData(portNodeTemplateId, nodesConnectedInIds,
295 nodesConnectedOutIds, groupIds, getAttrInIds, getAttrOutFuncDataList, portTemplateConsolidationData);
297 consolidationData.getPortConsolidationData()
298 .getFilePortConsolidationData(serviceTemplateFileName)
299 .setPortTemplateConsolidationData(portNodeTemplateId, portTemplateConsolidationData);
302 public static PortTemplateConsolidationData createPortTemplateConsolidationData(
303 String portNodeTemplateId) {
304 PortTemplateConsolidationData portTemplateConsolidationData =
305 new PortTemplateConsolidationData();
306 portTemplateConsolidationData.setNodeTemplateId(portNodeTemplateId);
307 return portTemplateConsolidationData;
310 public static void initPortConsolidationData(String serviceTemplateFileName,
311 ConsolidationData consolidationData) {
313 consolidationData.getPortConsolidationData()
314 .setFilePortConsolidationData(serviceTemplateFileName, new FilePortConsolidationData());
317 public static void updateComputeTemplateConsolidationData(String serviceTemplateFileName,
318 String computeNodeTypeName,
319 String computeNodeTemplateId,
320 List<String> nodeIdsConnectedIn,
321 List<String> nodeIdsConnectedOut,
322 List<String> volumeIds,
323 List<String> groupIds,
324 List<String> getAttrInIds,
325 List<Pair<String, GetAttrFuncData>> getAttrOutIds,
326 List<Pair<String, String>> portTypeToIdList,
327 ConsolidationData consolidationData) {
329 initComputeNodeTemplateIdInConsolidationData(serviceTemplateFileName, computeNodeTypeName,
330 computeNodeTemplateId, consolidationData);
332 Map<String, List<RequirementAssignmentData>> volumes =
333 consolidationData.getComputeConsolidationData().getFileComputeConsolidationData
334 (serviceTemplateFileName).getTypeComputeConsolidationData(computeNodeTypeName)
335 .getComputeTemplateConsolidationData(computeNodeTemplateId).getVolumes();
337 ComputeTemplateConsolidationData computeTemplateConsolidationData =
338 createComputeTemplateConsolidationData(computeNodeTemplateId, portTypeToIdList, volumes);
340 updateRelationsForEntityConsolidationData(computeNodeTemplateId, nodeIdsConnectedIn,
341 nodeIdsConnectedOut, groupIds, getAttrInIds, getAttrOutIds, computeTemplateConsolidationData);
343 updateVolumes(computeTemplateConsolidationData, volumeIds);
345 consolidationData.getComputeConsolidationData()
346 .getFileComputeConsolidationData(serviceTemplateFileName)
347 .getTypeComputeConsolidationData(computeNodeTypeName)
348 .setComputeTemplateConsolidationData(computeNodeTemplateId,
349 computeTemplateConsolidationData);
352 private static void updateRelationsForEntityConsolidationData(String entityNodeTemplateId,
353 List<String> nodeIdsConnectedIn,
354 List<String> nodeIdsConnectedOut,
355 List<String> groupIds,
356 List<String> getAttrInIds,
357 List<Pair<String, GetAttrFuncData>> getAttrOutFuncDataList,
358 EntityConsolidationData entity) {
359 updateRelationsIn(entity, nodeIdsConnectedIn);
360 updateRelationsOut(entity, entityNodeTemplateId, nodeIdsConnectedOut);
361 updateGetAttrIn(entity, getAttrInIds);
362 updateGetAttrOut(entity, getAttrOutFuncDataList);
363 entity.setGroupIds(groupIds);
366 public static void initComputeNodeTemplateIdInConsolidationData(String serviceTemplateFileName,
367 String computeNodeTypeName,
368 String computeNodeTemplateId,
369 ConsolidationData consolidationData) {
371 if(Objects.isNull(consolidationData.getComputeConsolidationData().getFileComputeConsolidationData
372 (serviceTemplateFileName))) {
373 consolidationData.getComputeConsolidationData().setFileComputeConsolidationData
374 (serviceTemplateFileName, new FileComputeConsolidationData());
376 TypeComputeConsolidationData typeComputeConsolidationData =
377 consolidationData.getComputeConsolidationData().getFileComputeConsolidationData
378 (serviceTemplateFileName).getTypeComputeConsolidationData(computeNodeTypeName);
381 typeComputeConsolidationData.getComputeTemplateConsolidationData(computeNodeTemplateId) == null) {
383 consolidationData.getComputeConsolidationData()
384 .getFileComputeConsolidationData(serviceTemplateFileName)
385 .getTypeComputeConsolidationData(computeNodeTypeName)
386 .setComputeTemplateConsolidationData(computeNodeTemplateId, new ComputeTemplateConsolidationData());
391 public static void updateNestedConsolidationData(String serviceTemplateName,
392 List<String> substitutionNodeTemplateIds,
393 ConsolidationData consolidationData){
394 if(Objects.isNull(consolidationData.getNestedConsolidationData())){
395 consolidationData.setNestedConsolidationData(new NestedConsolidationData());
398 FileNestedConsolidationData fileNestedConsolidationData = new FileNestedConsolidationData();
399 for(String substitutionNodeTemplateId : substitutionNodeTemplateIds) {
400 NestedTemplateConsolidationData nestedTemplateConsolidationData = new NestedTemplateConsolidationData();
401 nestedTemplateConsolidationData.setNodeTemplateId(substitutionNodeTemplateId);
402 fileNestedConsolidationData.setNestedTemplateConsolidationData(substitutionNodeTemplateId, nestedTemplateConsolidationData);
404 consolidationData.getNestedConsolidationData().setFileNestedConsolidationData(serviceTemplateName, fileNestedConsolidationData);
407 public static ComputeTemplateConsolidationData createComputeTemplateConsolidationData(String computeNodeTemplateId,
408 List<Pair<String, String>> portTypeToIdList,
409 Map<String,List<RequirementAssignmentData>> volumes) {
410 ComputeTemplateConsolidationData compute = new ComputeTemplateConsolidationData();
411 compute.setNodeTemplateId(computeNodeTemplateId);
412 if (portTypeToIdList != null) {
413 for (Pair<String, String> port : portTypeToIdList) {
414 compute.addPort(port.getLeft(), port.getRight());
417 compute.setVolumes(volumes);
421 public static void updateRelationsIn(EntityConsolidationData entity,
422 List<String> idsPontingTome){
423 if(CollectionUtils.isEmpty(idsPontingTome)){
427 for(String pointingId : idsPontingTome){
428 entity.addNodesConnectedIn(pointingId, entity.getNodeTemplateId(), new RequirementAssignment());
432 public static void updateRelationsOut(EntityConsolidationData entity,
433 String nodeTemplateId,
434 List<String> idsToUpdate){
435 if(CollectionUtils.isEmpty(idsToUpdate)){
439 for(String id : idsToUpdate){
440 entity.addNodesConnectedOut(id, id, new RequirementAssignment());
444 public static void updateGetAttrIn(EntityConsolidationData entity,
445 List<String> idsToUpdate){
446 if(CollectionUtils.isEmpty(idsToUpdate)){
450 for(String id : idsToUpdate){
451 entity.addNodesGetAttrIn(id, new GetAttrFuncData());
455 public static void updateGetAttrOut(EntityConsolidationData entity,
456 List<Pair<String, GetAttrFuncData>> getAttrOutIds){
457 if(CollectionUtils.isEmpty(getAttrOutIds)){
461 for(Pair<String, GetAttrFuncData> getAttrOutFunc : getAttrOutIds){
462 entity.addNodesGetAttrOut(getAttrOutFunc.getLeft(), getAttrOutFunc.getRight());
466 public static void updateVolumes(ComputeTemplateConsolidationData compute,
467 List<String> volumeIds){
468 if(CollectionUtils.isEmpty(volumeIds)){
472 for(String id : volumeIds){
473 RequirementAssignment requirementAssignment = new RequirementAssignment();
474 requirementAssignment.setNode(id);
475 compute.addVolume(id, requirementAssignment);
479 public static void initComputeNodeTypeInConsolidationData(String serviceTemplateFileName,
480 String computeNodeTypeName,
481 ConsolidationData consolidationData) {
482 ComputeConsolidationData computeConsolidationData =
483 consolidationData.getComputeConsolidationData();
484 if (!computeConsolidationData.getAllServiceTemplateFileNames()
485 .contains(serviceTemplateFileName)) {
486 computeConsolidationData
487 .setFileComputeConsolidationData(serviceTemplateFileName,
488 new FileComputeConsolidationData());
490 computeConsolidationData
491 .getFileComputeConsolidationData(serviceTemplateFileName).setTypeComputeConsolidationData(
492 computeNodeTypeName, new TypeComputeConsolidationData());
495 public static Map<String, List<RequirementAssignmentData>> getNodeConnectedOutList(
496 NodeTemplate nodeTemplate, String requirementKey) {
497 Map<String, List<RequirementAssignmentData>> requirementAssignmentDataMap = new HashMap<>();
498 Optional<List<RequirementAssignmentData>> requirementAssignmentDataList =
499 TestUtils.createRequirementAssignmentDataList(nodeTemplate, requirementKey);
500 if (requirementAssignmentDataList.isPresent()) {
501 for (RequirementAssignmentData requirementAssignmentData : requirementAssignmentDataList
503 String connectedNodeTemplateId = requirementAssignmentData.getRequirementAssignment()
505 requirementAssignmentDataMap
506 .computeIfAbsent(connectedNodeTemplateId, k -> new ArrayList<>());
507 requirementAssignmentDataMap.get(connectedNodeTemplateId).add(requirementAssignmentData);
510 return requirementAssignmentDataMap;
513 public static Map<String, List<GetAttrFuncData>> getNodesGetAttrIn(NodeTemplate nodeTemplate,
514 String nodeTemplateId) {
515 Map<String, List<GetAttrFuncData>> nodesGetAttrIn = new HashMap<>();
516 List<GetAttrFuncData> getAttrList = new ArrayList<>();
517 ObjectMapper mapper = new ObjectMapper();
518 Map<String, Object> nodeTemplateProperties = nodeTemplate.getProperties();
519 for (Map.Entry<String, Object> propertyEntry : nodeTemplateProperties.entrySet()) {
520 Map<String, List> propertyValue = mapper.convertValue(propertyEntry.getValue(), Map.class);
521 for (Map.Entry<String, List> entry : propertyValue.entrySet()) {
522 if (entry.getKey().equals("get_attribute")) {
523 GetAttrFuncData data = new GetAttrFuncData();
524 data.setFieldName(propertyEntry.getKey());
525 data.setAttributeName(entry.getValue().get(1).toString());
526 getAttrList.add(data);
529 System.out.println();
531 nodesGetAttrIn.put(nodeTemplateId, getAttrList);
532 return nodesGetAttrIn;
535 public static void updatePortsInComputeTemplateConsolidationData(
536 List<Pair<String, String>> portIdToTypeList, ComputeTemplateConsolidationData
538 compute.setPorts(new HashMap<>());
539 for(Pair<String, String> portIdToType : portIdToTypeList){
540 compute.getPorts().putIfAbsent(portIdToType.getLeft(), new ArrayList<>());
541 compute.getPorts().get(portIdToType.getLeft()).add(portIdToType.getRight());
545 public static Map<String, List<RequirementAssignmentData>> getNodeConnectedInList(
546 String sourceNodeTemplateId,
547 ServiceTemplate serviceTemplate, String requirementKey) {
548 Optional<List<RequirementAssignmentData>> requirementAssignmentDataList = Optional.empty();
549 List<RequirementAssignmentData> assignmentDataList = new ArrayList<>();
550 Map<String, List<RequirementAssignmentData>> requirementAssignmentDataMap = new HashMap<>();
551 Map<String, NodeTemplate> nodeTemplates = serviceTemplate.getTopology_template()
552 .getNode_templates();
553 for (Map.Entry<String, NodeTemplate> entry : nodeTemplates.entrySet()) {
554 String nodeTemplateId = entry.getKey();
555 List<Map<String, RequirementAssignment>> requirements = entry.getValue().getRequirements();
556 if (requirements != null) {
557 for (Map<String, RequirementAssignment> requirement : requirements) {
558 if (requirement.get(requirementKey) != null) {
559 RequirementAssignment requirementAssignment = requirement.get(requirementKey);
560 if (requirementAssignment != null) {
561 if (requirementAssignment.getNode().equals(sourceNodeTemplateId)) {
562 RequirementAssignmentData data = new RequirementAssignmentData(requirementKey,
563 requirementAssignment);
564 assignmentDataList.add(data);
569 requirementAssignmentDataList = Optional.ofNullable(assignmentDataList);
570 if (requirementAssignmentDataList.isPresent()) {
571 for (RequirementAssignmentData requirementAssignmentData : requirementAssignmentDataList
573 requirementAssignmentDataMap.computeIfAbsent(nodeTemplateId, k -> new ArrayList<>());
574 requirementAssignmentDataMap.get(nodeTemplateId).add(requirementAssignmentData);
577 requirementAssignmentDataList = Optional.empty();
580 return requirementAssignmentDataMap;
583 public static List<String> getGroupsForNode(ServiceTemplate serviceTemplate, String
585 List<String> entityGroups = new ArrayList<>();
586 Map<String, GroupDefinition> groups = serviceTemplate.getTopology_template().getGroups();
587 Map<String, NodeTemplate> nodeTemplates =
588 serviceTemplate.getTopology_template().getNode_templates();
589 for (Map.Entry<String, GroupDefinition> entry : groups.entrySet()) {
590 String groupId = entry.getKey();
591 GroupDefinition groupDefinition = entry.getValue();
592 if (groupDefinition.getType().contains("HeatStack"))
594 List<String> groupMembers = groupDefinition.getMembers();
595 for (String member : groupMembers) {
596 if (groups.containsKey(member))
598 if (member.equals(nodeTemplateId)) {
599 entityGroups.add(groupId);
606 private static Optional<List<RequirementAssignmentData>> createRequirementAssignmentDataList(
607 NodeTemplate nodeTemplate, String requirementKey) {
609 Optional<List<RequirementAssignment>> requirementAssignmentLink =
610 DataModelUtil.getRequirementAssignment(nodeTemplate.getRequirements(), requirementKey);
611 if (!requirementAssignmentLink.isPresent()) {
612 return Optional.empty();
615 List<RequirementAssignmentData> requirementAssignmentDataList = new ArrayList<>();
616 for (RequirementAssignment requirementAssignment : requirementAssignmentLink.get()) {
617 RequirementAssignmentData requirementAssignmentData = new RequirementAssignmentData
618 (requirementKey, requirementAssignment);
619 requirementAssignmentDataList.add(requirementAssignmentData);
621 return Optional.ofNullable(requirementAssignmentDataList);
624 public static Optional<List<RequirementAssignmentData>> getRequirementAssignmentDataList(
625 NodeTemplate nodeTemplate, String requirementKey) {
626 List<RequirementAssignmentData> returnedReqAssignmentDataList = new ArrayList<>();
627 Optional<List<RequirementAssignmentData>> requirementAssignmentDataList =
628 TestUtils.createRequirementAssignmentDataList(nodeTemplate, requirementKey);
630 if (requirementAssignmentDataList.isPresent()) {
631 for (RequirementAssignmentData requirementAssignmentData : requirementAssignmentDataList
633 returnedReqAssignmentDataList.add(requirementAssignmentData);
635 return Optional.of(returnedReqAssignmentDataList);
637 return Optional.empty();