1 package org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata;
3 import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.TestConstants.MAIN_SERVICE_TEMPLATE;
4 import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.TestConstants.TEST_DEPENDS_ON_INVALID_DEPENDENCY_CANDIDATE;
5 import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.TestConstants.TEST_DEPENDS_ON_MULTIPLE_COMPUTE;
6 import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.TestConstants.TEST_DEPENDS_ON_NODES_CONNECTED_IN;
7 import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.TestConstants.TEST_DEPENDS_ON_NODES_CONNECTED_IN_AND_OUT;
8 import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.TestConstants.TEST_DEPENDS_ON_NODES_CONNECTED_OUT;
9 import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.TestConstants.TEST_DEPENDS_ON_NO_DEPENDENCY;
10 import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.TestConstants.TEST_MULTIPLE_MULTI_LEVEL_NESTED_RESOURCE;
11 import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.TestConstants.TEST_MULTIPLE_NESTED_RESOURCE;
12 import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.TestConstants.TEST_SECURITY_RULE_PORT_MULTI_LEVEL_NESTED_CONNECTION;
13 import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.TestConstants.TEST_SECURITY_RULE_PORT_MULTI_LEVEL_NESTED_SHARED_PORT;
14 import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.TestConstants.TEST_SECURITY_RULE_PORT_NESTED_CONNECTION;
15 import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.TestConstants.TEST_SINGLE_NESTED_RESOURCE;
17 import com.fasterxml.jackson.databind.ObjectMapper;
18 import org.apache.commons.collections4.CollectionUtils;
19 import org.junit.Assert;
20 import org.openecomp.sdc.tosca.datatypes.ToscaCapabilityType;
21 import org.openecomp.sdc.tosca.datatypes.ToscaNodeType;
22 import org.openecomp.sdc.tosca.datatypes.ToscaRelationshipType;
23 import org.openecomp.sdc.tosca.datatypes.model.GroupDefinition;
24 import org.openecomp.sdc.tosca.datatypes.model.NodeTemplate;
25 import org.openecomp.sdc.tosca.datatypes.model.NodeType;
26 import org.openecomp.sdc.tosca.datatypes.model.RequirementAssignment;
27 import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate;
28 import org.openecomp.sdc.tosca.services.DataModelUtil;
29 import org.openecomp.sdc.tosca.services.ToscaConstants;
30 import org.openecomp.sdc.tosca.services.impl.ToscaAnalyzerServiceImpl;
31 import org.openecomp.sdc.translator.datatypes.heattotosca.TranslationContext;
32 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.ComputeTemplateConsolidationData;
33 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.ConsolidationData;
34 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.FileNestedConsolidationData;
35 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.GetAttrFuncData;
36 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.NestedConsolidationData;
37 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.NestedTemplateConsolidationData;
38 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.PortTemplateConsolidationData;
39 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.RequirementAssignmentData;
40 import org.openecomp.sdc.translator.services.heattotosca.ConsolidationDataUtil;
41 import org.openecomp.sdc.translator.services.heattotosca.HeatToToscaUtil;
43 import java.util.ArrayList;
44 import java.util.HashMap;
45 import java.util.Iterator;
46 import java.util.LinkedHashMap;
47 import java.util.LinkedList;
48 import java.util.List;
50 import java.util.Objects;
51 import java.util.Optional;
54 public class ConsolidationDataTestUtil {
56 public static void validateVolumeInConsolidationData(String computeNodeTemplateId,
57 ComputeTemplateConsolidationData
58 computeTemplateConsolidationData,
59 ServiceTemplate expectedServiceTemplate,
61 Assert.assertNotNull(computeTemplateConsolidationData);
62 //Get the volume information from consolidation data
63 Map<String, List<RequirementAssignmentData>> volumeConsolidationData =
64 computeTemplateConsolidationData.getVolumes();
66 if(testName.equals("Negative")) {
67 Assert.assertNull(volumeConsolidationData);
71 //Get the volume requirement information from the output translated template
72 NodeTemplate computeNode = DataModelUtil.getNodeTemplate(expectedServiceTemplate,
73 computeNodeTemplateId);
75 if(!isComputeNodeType(expectedServiceTemplate, computeNode.getType()) ) {
76 //According to toplogy only Compute->volume relationship is valid
77 Assert.assertNull(volumeConsolidationData);
81 Assert.assertNotNull(computeNode);
82 List<String> computeVolumeRequirementsNodes = new ArrayList<>();
83 List<Map<String, RequirementAssignment>> requirementList = computeNode.getRequirements();
84 if(requirementList != null){
85 for(Map<String, RequirementAssignment> req : requirementList){
86 Set<String> reqKeySet = req.keySet();
87 for(String reqKey : reqKeySet){
88 //populating the "node" property of all the requirements "local_storage" related to volume
89 if(reqKey.equals(ToscaConstants.LOCAL_STORAGE_REQUIREMENT_ID)){
90 RequirementAssignment requirementAssignment = new ObjectMapper().convertValue(req.get
91 (reqKey), RequirementAssignment.class);
92 computeVolumeRequirementsNodes.add(requirementAssignment.getNode());
96 isVolumeComputeRequirement(computeVolumeRequirementsNodes, volumeConsolidationData);
100 private static void isVolumeComputeRequirement(List<String> computeVolumeRequirementsNodes,
101 Map<String, List<RequirementAssignmentData>>
102 volumeConsolidationData) {
103 Assert.assertEquals(computeVolumeRequirementsNodes.size(), volumeConsolidationData.size());
104 for(String volumeNodeTemplateId : computeVolumeRequirementsNodes) {
105 Assert.assertNotNull(volumeConsolidationData.containsKey(volumeNodeTemplateId));
106 List<RequirementAssignmentData> requirementAssignmentDataList = volumeConsolidationData.get
107 (volumeNodeTemplateId);
108 for(RequirementAssignmentData requirementAssignmentData : requirementAssignmentDataList){
109 Assert.assertTrue(requirementAssignmentData.getRequirementId().equals(ToscaConstants
110 .LOCAL_STORAGE_REQUIREMENT_ID));
116 public static void validatePortsInConsolidationData(String computeNodeTemplateId,
117 ComputeTemplateConsolidationData
118 computeTemplateConsolidationData,
119 ServiceTemplate outputServiceTemplate){
120 Map<String,List<String>> consolidatedMap = computeTemplateConsolidationData.getPorts();
121 Map<String,List<String>> expectedMap = getPortsInConsolidationData(outputServiceTemplate).get
122 (computeNodeTemplateId);
123 if(expectedMap == null && consolidatedMap == null){
126 for(String consolidatedKey : consolidatedMap.keySet()){
127 List<String> consolidatedList = consolidatedMap.get(consolidatedKey);
128 List<String> expectedList = expectedMap.get(consolidatedKey);
129 if(expectedList == null ){
131 } if(!CollectionUtils.isEqualCollection(consolidatedList,expectedList)){
137 public static void validateDependsOnInConsolidationData(String computeNodeTemplateId,
138 ComputeTemplateConsolidationData computeTemplateConsolidationData,
139 ServiceTemplate outputServiceTemplate,
141 Map<String, NodeTemplate> outputNodeTemplates = outputServiceTemplate.getTopology_template()
142 .getNode_templates();
143 Map<String, List<RequirementAssignmentData>> nodesConnectedIn =
144 computeTemplateConsolidationData.getNodesConnectedIn();
145 Map<String, List<RequirementAssignmentData>> nodesConnectedOut =
146 computeTemplateConsolidationData.getNodesConnectedOut();
148 if(testName.equals(TEST_DEPENDS_ON_INVALID_DEPENDENCY_CANDIDATE) ||
149 testName.equals(TEST_DEPENDS_ON_NO_DEPENDENCY)) {
150 Assert.assertNull(nodesConnectedIn);
151 Assert.assertNull(nodesConnectedOut);
154 //key - nodetemplate id , value - requirementassignment
155 Map<String, List<RequirementAssignment>> outputDependsOnNodeRequirementMap = new HashMap<>();
156 for(Map.Entry<String, NodeTemplate> entry : outputNodeTemplates.entrySet()) {
157 NodeTemplate nodeTemplate = entry.getValue();
158 List<Map<String, RequirementAssignment>> nodeRequirements = nodeTemplate.getRequirements();
159 if(nodeRequirements != null){
160 for(Map<String, RequirementAssignment> req : nodeRequirements) {
161 Set<String> keySet = req.keySet();
162 for(String key : keySet) {
163 if(key.equals(ToscaConstants.DEPENDS_ON_REQUIREMENT_ID))
164 //collect all dependency requirements in a map with key -> node template id
165 outputDependsOnNodeRequirementMap.computeIfAbsent(entry.getKey(), k -> new ArrayList<>())
172 if(testName.equals(TEST_DEPENDS_ON_NODES_CONNECTED_OUT)){
173 Assert.assertNull(nodesConnectedIn);
174 validateDependsOnNodesConnectedOut(computeNodeTemplateId, nodesConnectedOut,
175 outputDependsOnNodeRequirementMap, outputServiceTemplate);
178 if(testName.equals(TEST_DEPENDS_ON_NODES_CONNECTED_IN)){
179 Assert.assertNull(nodesConnectedOut);
180 validateDependsOnNodesConnectedIn(computeNodeTemplateId, nodesConnectedIn,
181 outputDependsOnNodeRequirementMap,
182 outputServiceTemplate);
185 if(testName.equals(TEST_DEPENDS_ON_NODES_CONNECTED_IN_AND_OUT)){
186 Assert.assertNotNull(nodesConnectedIn);
187 Assert.assertNotNull(nodesConnectedOut);
188 validateDependsOnNodesConnectedOut(computeNodeTemplateId, nodesConnectedOut,
189 outputDependsOnNodeRequirementMap,
190 outputServiceTemplate);
191 validateDependsOnNodesConnectedIn(computeNodeTemplateId, nodesConnectedIn,
192 outputDependsOnNodeRequirementMap,
193 outputServiceTemplate);
196 if(testName.equals(TEST_DEPENDS_ON_MULTIPLE_COMPUTE)){
197 if(nodesConnectedOut != null)
198 validateDependsOnNodesConnectedOut(computeNodeTemplateId, nodesConnectedOut,
199 outputDependsOnNodeRequirementMap,
200 outputServiceTemplate);
201 if(nodesConnectedIn != null)
202 validateDependsOnNodesConnectedIn(computeNodeTemplateId, nodesConnectedIn,
203 outputDependsOnNodeRequirementMap,
204 outputServiceTemplate);
210 private static void validateDependsOnNodesConnectedIn(String computeNodeTemplateId,
212 List<RequirementAssignmentData>>
214 Map<String, List<RequirementAssignment>>
215 outputDependsOnNodeRequirementMap,
216 ServiceTemplate outputServiceTemplate) {
217 ToscaAnalyzerServiceImpl analyzerService = new ToscaAnalyzerServiceImpl();
218 for(Map.Entry<String, List<RequirementAssignment>> entry : outputDependsOnNodeRequirementMap
220 String sourceNodeTemplateId = entry.getKey();
221 Optional<NodeTemplate> sourceNodeTemplate = analyzerService.getNodeTemplateById
222 (outputServiceTemplate, sourceNodeTemplateId);
223 String sourceNodeType = sourceNodeTemplate.get().getType();
224 for(Object obj : entry.getValue()){
225 RequirementAssignment req = new ObjectMapper().convertValue(obj, RequirementAssignment
227 String targetNodeTemplateId = req.getNode();
228 Optional<NodeTemplate> targetNodeTemplate = analyzerService.getNodeTemplateById
229 (outputServiceTemplate, targetNodeTemplateId);
231 String targetNodeType = targetNodeTemplate.get().getType();
232 boolean isValidTargetForConnectedIn = false;
233 if(isComputeNodeType(outputServiceTemplate, targetNodeType)) {
234 isValidTargetForConnectedIn = true;
235 } else if(isPortNodeType(outputServiceTemplate, targetNodeType)) {
236 isValidTargetForConnectedIn = true;
239 if(isValidTargetForConnectedIn) {
240 //Should be present if target node is compute or port
241 if(computeNodeTemplateId.equals(entry.getKey()))
242 Assert.assertTrue(nodesConnectedIn.containsKey(entry.getKey()));
245 if(sourceNodeType.startsWith(ToscaNodeType.NOVA_SERVER)
246 && (targetNodeType.startsWith(ToscaNodeType.NOVA_SERVER)
247 || targetNodeType.startsWith(ToscaNodeType.NEUTRON_PORT)
248 || targetNodeType.startsWith(ToscaNodeType.CONTRAILV2_VIRTUAL_MACHINE_INTERFACE))) {
249 //Ignore Compute->Port, Compute->Compute, Compute->Volume relationship
250 Assert.assertFalse(nodesConnectedIn.containsKey(targetNodeTemplateId));
253 if(sourceNodeType.startsWith(ToscaNodeType.NEUTRON_PORT)
254 && (targetNodeType.startsWith(ToscaNodeType.NOVA_SERVER)
255 || targetNodeType.startsWith(ToscaNodeType.NEUTRON_PORT)
256 || targetNodeType.startsWith(ToscaNodeType.CONTRAILV2_VIRTUAL_MACHINE_INTERFACE))) {
257 //Ignore Port->Port, Port->Compute, Port->Volume relationship
258 Assert.assertFalse(nodesConnectedIn.containsKey(targetNodeTemplateId));
264 private static boolean isComputeNodeType(ServiceTemplate serviceTemplate,
267 if(nodeType.equals(ToscaNodeType.NOVA_SERVER) ||
268 nodeType.equals(ToscaNodeType.NATIVE_COMPUTE))
271 Map<String, NodeType> nodeTypes = serviceTemplate.getNode_types();
272 if(nodeTypes.containsKey(nodeType)) {
273 NodeType nodeTypeInfo = nodeTypes.get(nodeType);
274 if(nodeTypeInfo.getDerived_from().equals(ToscaNodeType.NOVA_SERVER))
280 private static boolean isPortNodeType(ServiceTemplate serviceTemplate,
282 if(nodeType.equals(ToscaNodeType.NEUTRON_PORT) ||
283 nodeType.equals(ToscaNodeType.CONTRAILV2_VIRTUAL_MACHINE_INTERFACE))
286 Map<String, NodeType> nodeTypes = serviceTemplate.getNode_types();
287 if(nodeTypes.containsKey(nodeType)) {
288 NodeType nodeTypeInfo = nodeTypes.get(nodeType);
289 if(nodeTypeInfo.getDerived_from().equals(ToscaNodeType.NEUTRON_PORT) ||
290 nodeTypeInfo.getDerived_from().equals(ToscaNodeType.CONTRAILV2_VIRTUAL_MACHINE_INTERFACE))
296 private static void validateDependsOnNodesConnectedOut(String computeNodeTemplateId,
298 List<RequirementAssignmentData>>
300 Map<String, List<RequirementAssignment>>
301 outputDependsOnNodeRequirementMap,
302 ServiceTemplate outputServiceTemplate) {
303 ToscaAnalyzerServiceImpl analyzerService = new ToscaAnalyzerServiceImpl();
304 //Iterating the map <nodeTemplateId, all the requirements of that node>
305 for(Map.Entry<String, List<RequirementAssignment>> entry : outputDependsOnNodeRequirementMap
307 String sourceNodeTemplateId = entry.getKey();
308 Optional<NodeTemplate> sourceNodeTemplate = analyzerService.getNodeTemplateById
309 (outputServiceTemplate, sourceNodeTemplateId);
310 String sourceNodeType = sourceNodeTemplate.get().getType();
311 boolean isValidSourceForConnectedOut = false;
312 if(isComputeNodeType(outputServiceTemplate, sourceNodeType)) {
313 isValidSourceForConnectedOut = true;
314 } else if(isPortNodeType(outputServiceTemplate, sourceNodeType)) {
315 isValidSourceForConnectedOut = true;
317 for(Object obj : entry.getValue()){
318 RequirementAssignment req = new ObjectMapper().convertValue(obj, RequirementAssignment
320 String targetNodeTemplateId = req.getNode();
321 Optional<NodeTemplate> targetNodeTemplate = analyzerService.getNodeTemplateById
322 (outputServiceTemplate, targetNodeTemplateId);
323 String targetNodeType = targetNodeTemplate.get().getType();
325 if(isValidSourceForConnectedOut) {
326 //Should be present if source node is compute or port
327 if(computeNodeTemplateId.equals(entry.getKey()))
328 Assert.assertTrue(nodesConnectedOut.containsKey(targetNodeTemplateId));
331 if(sourceNodeType.startsWith(ToscaNodeType.NOVA_SERVER)
332 && (targetNodeType.startsWith(ToscaNodeType.NOVA_SERVER)
333 || targetNodeType.startsWith(ToscaNodeType.NEUTRON_PORT)
334 || targetNodeType.startsWith(ToscaNodeType.CONTRAILV2_VIRTUAL_MACHINE_INTERFACE))) {
335 //Ignore Compute->Port, Compute->Compute, Compute->Volume relationship
336 Assert.assertFalse(nodesConnectedOut.containsKey(targetNodeTemplateId));
339 if(sourceNodeType.startsWith(ToscaNodeType.NEUTRON_PORT)
340 && (targetNodeType.startsWith(ToscaNodeType.NOVA_SERVER)
341 || targetNodeType.startsWith(ToscaNodeType.NEUTRON_PORT)
342 || targetNodeType.startsWith(ToscaNodeType.CONTRAILV2_VIRTUAL_MACHINE_INTERFACE))) {
343 //Ignore Port->Port, Port->Compute, Port->Volume relationship
344 Assert.assertFalse(nodesConnectedOut.containsKey(targetNodeTemplateId));
350 private static Map<String,Map<String,List<String>>> getPortsInConsolidationData(ServiceTemplate
352 Map<String,Map<String,List<String>>> portMap = new LinkedHashMap<>();
353 Map<String, NodeTemplate> nodeTempMap = output.getTopology_template().getNode_templates();
354 for(String nodeName : nodeTempMap.keySet()){
355 NodeTemplate node = nodeTempMap.get(nodeName);
356 if(ToscaNodeType.NEUTRON_PORT.equals(node.getType()) || ToscaNodeType
357 .CONTRAILV2_VIRTUAL_MACHINE_INTERFACE.equals(node.getType())){
358 List<Map<String, RequirementAssignment>> reqAssignList = node.getRequirements();
359 if(reqAssignList != null) {
360 for (Map<String, RequirementAssignment> reqAssignMap : reqAssignList) {
361 //RequirementAssignment req = reqAssignMap.get("binding");
362 RequirementAssignment req = new ObjectMapper().convertValue(reqAssignMap.get("binding"),
363 RequirementAssignment.class);
366 String portNode = req.getNode();
367 if (!portMap.containsKey(portNode)) {
368 portMap.put(portNode, new LinkedHashMap<>());
370 Map<String, List<String>> portTypMaps = portMap.get(portNode);
371 String id = ConsolidationDataUtil.getPortType(nodeName);
372 if (!portTypMaps.containsKey(id)) {
373 portTypMaps.put(id, new ArrayList<>());
375 List<String> portIds = portTypMaps.get(id);
376 portIds.add(nodeName);
385 public static void validateGroupsInConsolidationData(String computeNodeTemplateId,
386 ComputeTemplateConsolidationData
387 computeTemplateConsolidationData,
388 ServiceTemplate expectedServiceTemplate) {
389 Assert.assertNotNull(computeTemplateConsolidationData);
390 List<String> groupIds = computeTemplateConsolidationData.getGroupIds();
391 if (groupIds != null) {
392 for (String groupId : groupIds) {
393 isComputeGroupMember(expectedServiceTemplate, computeNodeTemplateId, groupId);
398 private static void isComputeGroupMember(ServiceTemplate expectedServiceTemplate, String
399 computeNodeTemplateId, String groupId) {
400 //Check if the collected group id is in the member list of the groups
401 GroupDefinition group = expectedServiceTemplate.getTopology_template().getGroups().get(groupId);
402 List<String> groupMembers = group.getMembers();
403 Assert.assertNotNull(groupMembers);
404 Assert.assertTrue(groupMembers.contains(computeNodeTemplateId));
407 public static void validateNestedConsolidationDataNodeTemplateIds(ConsolidationData consolidationData,
408 Map<String, ServiceTemplate>
409 expectedServiceTemplateModels ){
410 Map<String,List<String>> consolidatedMap = getSubstituteNodeTemplateIds(consolidationData);
411 Map<String,List<String>> expectedMap = getSubstituteMapping(expectedServiceTemplateModels);
412 for(String consolidatedKey : consolidatedMap.keySet()){
413 List<String> consolidatedList = consolidatedMap.get(consolidatedKey);
414 List<String> expectedList = expectedMap.get(consolidatedKey);
415 if(expectedList == null ){
417 } if(!CollectionUtils.isEqualCollection(consolidatedList,expectedList)){
423 private static Map<String,List<String>> getSubstituteNodeTemplateIds(ConsolidationData
425 Map<String,List<String>> nestedNodeTemplateIdMap = new HashMap<>();
426 NestedConsolidationData nestedConsolidationData =
427 consolidationData.getNestedConsolidationData();
428 Set<String> serviceTemplateFileNames =
429 nestedConsolidationData.getAllServiceTemplateFileNames();
430 for (String fileName : serviceTemplateFileNames) {
431 FileNestedConsolidationData fileNestedConsolidationData =
432 nestedConsolidationData.getFileNestedConsolidationData(fileName);
433 if (Objects.isNull(fileNestedConsolidationData)) {
436 Set<String> nestedNodeTemplateIds =
437 fileNestedConsolidationData.getAllNestedNodeTemplateIds();
438 if (nestedNodeTemplateIds != null) {
439 List<String> fileNestedNodeTemplateIds = new ArrayList<>();
440 fileNestedNodeTemplateIds.addAll(nestedNodeTemplateIds);
441 nestedNodeTemplateIdMap.put(fileName, fileNestedNodeTemplateIds);
444 return nestedNodeTemplateIdMap;
447 private static Map<String,List<String>> getSubstituteMapping(Map<String, ServiceTemplate>
448 expectedServiceTemplateModels ){
449 Map<String,List<String>> map = new LinkedHashMap<>();
450 for(String key : expectedServiceTemplateModels.keySet()){
451 ServiceTemplate serviceTemplate = expectedServiceTemplateModels.get(key);
452 if(serviceTemplate.getTopology_template() != null && serviceTemplate
453 .getTopology_template().getNode_templates() != null) {
454 for (String key1 : serviceTemplate.getTopology_template().getNode_templates().keySet()) {
455 NodeTemplate nodeTemplate = serviceTemplate.getTopology_template().getNode_templates()
457 if (nodeTemplate.getType().contains(ToscaNodeType.ABSTRACT_NODE_TYPE_PREFIX + "heat.")) {
459 List<String> subNodeTempIdList = map.get(key);
460 if (subNodeTempIdList == null) {
461 subNodeTempIdList = new ArrayList<>();
462 map.put(key, subNodeTempIdList);
464 subNodeTempIdList.add(key1);
472 public static void validateComputeConnectivityIn(ComputeTemplateConsolidationData
473 computeTemplateConsolidationData,
474 ServiceTemplate expectedServiceTemplate){
475 Map<String,List<RequirementAssignmentData>> nodesConnectedIn = computeTemplateConsolidationData.
476 getNodesConnectedIn();
477 if(nodesConnectedIn==null){
480 boolean found = false;
481 for(String nodeIdConnTo : nodesConnectedIn.keySet()){
482 List<RequirementAssignmentData> connectToList = nodesConnectedIn.get(nodeIdConnTo);
483 List<Map<String, RequirementAssignment>> requirementsList = expectedServiceTemplate
484 .getTopology_template().getNode_templates().get(nodeIdConnTo).getRequirements();
485 for(RequirementAssignmentData requirementAssignmentData : connectToList) {
486 for (Map<String, RequirementAssignment> requirementAssignmentMap : requirementsList) {
487 RequirementAssignment requirementAssignment =
488 new ObjectMapper().convertValue(requirementAssignmentMap.values().iterator().next(),
489 RequirementAssignment.class);
490 if (requirementAssignment.getNode().equals(requirementAssignmentData.getRequirementAssignment().getNode())) {
491 Assert.assertEquals(requirementAssignment.getCapability(),requirementAssignmentData.getRequirementAssignment().getCapability());
492 Assert.assertEquals(requirementAssignment.getNode(),requirementAssignmentData.getRequirementAssignment().getNode());
493 Assert.assertEquals(requirementAssignment.getRelationship(),requirementAssignmentData.getRequirementAssignment()
506 public static void validateComputeConnectivityOut(String computeNodeTemplateId,
507 ComputeTemplateConsolidationData
508 computeTemplateConsolidationData,
509 ServiceTemplate expectedServiceTemplate){
510 Map<String,List<RequirementAssignmentData>> nodesConnectedOut = computeTemplateConsolidationData.
511 getNodesConnectedOut();
512 if(nodesConnectedOut==null){
515 boolean found = false;
516 for(String nodeIdConnFrom : nodesConnectedOut.keySet()){
517 List<RequirementAssignmentData> connectToList = nodesConnectedOut.get(nodeIdConnFrom);
518 List<Map<String, RequirementAssignment>> requirementsList = expectedServiceTemplate
519 .getTopology_template().getNode_templates().get(computeNodeTemplateId).getRequirements();
520 for(RequirementAssignmentData requirementAssignmentData : connectToList) {
521 for (Map<String, RequirementAssignment> requirementAssignmentMap : requirementsList) {
522 RequirementAssignment requirementAssignment =
523 new ObjectMapper().convertValue(requirementAssignmentMap.values().iterator().next(),
524 RequirementAssignment.class);
525 if (requirementAssignment.getNode().equals(requirementAssignmentData.getRequirementAssignment().getNode())) {
526 Assert.assertEquals(requirementAssignment.getCapability(),requirementAssignmentData.getRequirementAssignment().getCapability());
527 Assert.assertEquals(requirementAssignment.getNode(),requirementAssignmentData.getRequirementAssignment().getNode());
528 Assert.assertEquals(requirementAssignment.getRelationship(),requirementAssignmentData.getRequirementAssignment()
541 public static void validatePortConnectivityIn(PortTemplateConsolidationData
542 portTemplateConsolidationData,
543 ServiceTemplate expectedServiceTemplate){
544 Map<String,List<RequirementAssignmentData>> nodesConnectedIn = portTemplateConsolidationData.
545 getNodesConnectedIn();
546 if(nodesConnectedIn==null){
549 boolean found = false;
550 for(String nodeIdConnTo : nodesConnectedIn.keySet()){
551 List<RequirementAssignmentData> connectToList = nodesConnectedIn.get(nodeIdConnTo);
552 List<Map<String, RequirementAssignment>> requirementsList = expectedServiceTemplate
553 .getTopology_template().getNode_templates().get(nodeIdConnTo).getRequirements();
554 for(RequirementAssignmentData requirementAssignmentData : connectToList) {
555 for (Map<String, RequirementAssignment> requirementAssignmentMap : requirementsList) {
556 RequirementAssignment requirementAssignment =
557 new ObjectMapper().convertValue(requirementAssignmentMap.values().iterator().next(),
558 RequirementAssignment.class);
559 if (requirementAssignment.getNode().equals(requirementAssignmentData.getRequirementAssignment().getNode())) {
560 Assert.assertEquals(requirementAssignment.getCapability(),requirementAssignmentData.getRequirementAssignment().getCapability());
561 Assert.assertEquals(requirementAssignment.getNode(),requirementAssignmentData.getRequirementAssignment().getNode());
562 Assert.assertEquals(requirementAssignment.getRelationship(),requirementAssignmentData.getRequirementAssignment()
575 public static void validatePortConnectivityOut(String portNodeTemplateId,
576 PortTemplateConsolidationData
577 portTemplateConsolidationData,
578 ServiceTemplate expectedServiceTemplate){
579 Map<String, List<RequirementAssignmentData>> nodesConnectedOut =
580 portTemplateConsolidationData.getNodesConnectedOut();
581 if(nodesConnectedOut==null){
584 boolean found = false;
585 for(String nodeIdConnFrom : nodesConnectedOut.keySet()){
586 List<RequirementAssignmentData> connectToList = nodesConnectedOut.get(nodeIdConnFrom);
587 List<Map<String, RequirementAssignment>> requirementsList = expectedServiceTemplate
588 .getTopology_template().getNode_templates().get(portNodeTemplateId).getRequirements();
589 for(RequirementAssignmentData requirementAssignmentData : connectToList) {
590 for (Map<String, RequirementAssignment> requirementAssignmentMap : requirementsList) {
591 RequirementAssignment requirementAssignment =
592 new ObjectMapper().convertValue(requirementAssignmentMap.values().iterator().next(),
593 RequirementAssignment.class);
594 if (requirementAssignment.getNode().equals(requirementAssignmentData.getRequirementAssignment().getNode())) {
595 Assert.assertEquals(requirementAssignment.getCapability(),requirementAssignmentData.getRequirementAssignment().getCapability());
596 Assert.assertEquals(requirementAssignment.getNode(),requirementAssignmentData.getRequirementAssignment().getNode());
597 Assert.assertEquals(requirementAssignment.getRelationship(),requirementAssignmentData.getRequirementAssignment()
610 public static void validateGetAttr(TranslationContext translationContext, Map<String,
612 expectedServiceTemplateModels,String testName){
613 ConsolidationData consolidationData = translationContext.getConsolidationData();
614 Assert.assertNotNull(consolidationData);
615 if(TestConstants.TEST_GET_ATTR_FOR_MORE_THAN_ONE_ATTR_IN_ATTR_LIST.equals(testName)){
616 PortTemplateConsolidationData portTemplateConsolidationData = consolidationData
617 .getPortConsolidationData().getFilePortConsolidationData("MainServiceTemplate.yaml")
618 .getPortTemplateConsolidationData("VMI1");
619 Assert.assertNotNull(portTemplateConsolidationData);
620 Assert.assertEquals(2, portTemplateConsolidationData.getNodesGetAttrIn().size());
621 List<GetAttrFuncData> attrFuncDataList = portTemplateConsolidationData.getNodesGetAttrIn()
623 Assert.assertEquals(1,attrFuncDataList.size());
624 Assert.assertEquals("name",attrFuncDataList.get(0).getFieldName());
625 Assert.assertEquals("name",attrFuncDataList.get(0).getAttributeName());
627 attrFuncDataList = portTemplateConsolidationData.getNodesGetAttrIn()
629 Assert.assertEquals(1,attrFuncDataList.size());
630 Assert.assertEquals("name",attrFuncDataList.get(0).getFieldName());
631 Assert.assertEquals("virtual_machine_interface_allowed_address_pairs",attrFuncDataList.get(0).getAttributeName());
633 ComputeTemplateConsolidationData computeTemplateConsolidationDataFSB2 = consolidationData
634 .getComputeConsolidationData()
635 .getFileComputeConsolidationData("MainServiceTemplate.yaml")
636 .getTypeComputeConsolidationData("org.openecomp.resource.vfc.nodes.heat.FSB2")
637 .getComputeTemplateConsolidationData("FSB2");
638 Assert.assertEquals(1,computeTemplateConsolidationDataFSB2.getNodesGetAttrOut().size());
639 List<GetAttrFuncData> attrFuncDataOutList = computeTemplateConsolidationDataFSB2
640 .getNodesGetAttrOut().get("VMI1");
641 Assert.assertEquals(1,attrFuncDataOutList.size());
642 Assert.assertEquals("name",attrFuncDataOutList.get(0).getFieldName());
643 Assert.assertEquals("virtual_machine_interface_allowed_address_pairs",attrFuncDataOutList
644 .get(0).getAttributeName());
645 ComputeTemplateConsolidationData computeTemplateConsolidationDataFSB1 = consolidationData
646 .getComputeConsolidationData()
647 .getFileComputeConsolidationData("MainServiceTemplate.yaml")
648 .getTypeComputeConsolidationData("org.openecomp.resource.vfc.nodes.heat.FSB1")
649 .getComputeTemplateConsolidationData("FSB1");
650 Assert.assertEquals(1,computeTemplateConsolidationDataFSB1.getNodesGetAttrOut().size());
651 List<GetAttrFuncData> attrFuncDataOutList2 = computeTemplateConsolidationDataFSB1
652 .getNodesGetAttrOut().get("VMI1");
653 Assert.assertEquals(1,attrFuncDataOutList2.size());
654 Assert.assertEquals("name",attrFuncDataOutList2.get(0).getFieldName());
655 Assert.assertEquals("name",attrFuncDataOutList2
656 .get(0).getAttributeName());
657 } else if(TestConstants.TEST_IGNORE_GET_ATTR_FROM_OUTPUT.equals(testName)){
658 if(!consolidationData.getPortConsolidationData().getAllServiceTemplateFileNames().isEmpty()){
659 Iterator<String> itr = consolidationData.getPortConsolidationData()
660 .getFilePortConsolidationData("MainServiceTemplate.yaml").getAllPortNodeTemplateIds()
662 while(itr.hasNext()){
663 String key = itr.next();
664 PortTemplateConsolidationData portTemplateConsolidationData = consolidationData
665 .getPortConsolidationData()
666 .getFilePortConsolidationData("MainServiceTemplate.yaml")
667 .getPortTemplateConsolidationData(key);
668 Assert.assertNull(portTemplateConsolidationData.getOutputParametersGetAttrIn());
671 } else if(TestConstants.TEST_GET_ATTR_FOR_NOT_SUPPORTED_ATTR_IN_ATTR_LIST.equals(testName)){
672 Assert.assertNull(consolidationData.getPortConsolidationData()
673 .getFilePortConsolidationData("MainServiceTemplate.yaml")
674 .getPortTemplateConsolidationData("FSB1_Internal2").getNodesGetAttrIn());
675 } else if(TestConstants.TEST_GET_ATTR_FOR_ONLY_RESOURCE_NAME.equals(testName)){
676 PortTemplateConsolidationData portTemplateConsolidationData = consolidationData
677 .getPortConsolidationData().getFilePortConsolidationData("MainServiceTemplate.yaml")
678 .getPortTemplateConsolidationData("VMI1");
679 Assert.assertNotNull(portTemplateConsolidationData);
680 Assert.assertEquals("name",portTemplateConsolidationData.getNodesGetAttrIn().get("FSB1").
681 get(0).getFieldName());
682 Assert.assertEquals("fq_name",portTemplateConsolidationData.getNodesGetAttrIn().get("FSB1").
683 get(0).getAttributeName());
684 } else if(TestConstants.TEST_GET_ATTR_FOR_NONE_TO_PORT_OR_COMPUTE.equals(testName)){
685 ComputeTemplateConsolidationData computeTemplateConsolidationData = consolidationData
686 .getComputeConsolidationData()
687 .getFileComputeConsolidationData("MainServiceTemplate.yaml")
688 .getTypeComputeConsolidationData("org.openecomp.resource.vfc.nodes.heat.compute")
689 .getComputeTemplateConsolidationData("server_compute_get_attr_test");
690 Assert.assertEquals("user_data_format",computeTemplateConsolidationData
691 .getNodesGetAttrOut().get("server_pcm_001").get(0).getFieldName());
692 Assert.assertEquals("oam_net_gw",computeTemplateConsolidationData
693 .getNodesGetAttrOut().get("server_pcm_001").get(0).getAttributeName());
694 } else if(TestConstants.TEST_OUTPUT_GET_ATTR.equals(testName)){
695 ComputeTemplateConsolidationData computeTemplateConsolidationData1 = consolidationData
696 .getComputeConsolidationData()
697 .getFileComputeConsolidationData("MainServiceTemplate.yaml")
698 .getTypeComputeConsolidationData("org.openecomp.resource.vfc.nodes.heat.cgi_fw")
699 .getComputeTemplateConsolidationData("CGI_FW_SERVER_1");
700 Assert.assertEquals("cgi_fw_01_left_mac_1",computeTemplateConsolidationData1
701 .getOutputParametersGetAttrIn()
702 .get(0).getFieldName());
703 Assert.assertEquals("addresses",computeTemplateConsolidationData1.getOutputParametersGetAttrIn()
704 .get(0).getAttributeName());
705 ComputeTemplateConsolidationData computeTemplateConsolidationData2 = consolidationData
706 .getComputeConsolidationData()
707 .getFileComputeConsolidationData("MainServiceTemplate.yaml")
708 .getTypeComputeConsolidationData("org.openecomp.resource.vfc.nodes.heat.cgi_fw")
709 .getComputeTemplateConsolidationData("CGI_FW_SERVER_2");
710 Assert.assertEquals(1,computeTemplateConsolidationData2
711 .getNodesGetAttrIn().get("CGI_FW_SERVER_2").size());
712 Assert.assertEquals("availability_zone",computeTemplateConsolidationData2
713 .getNodesGetAttrIn().get("CGI_FW_SERVER_2").get(0).getFieldName());
714 Assert.assertEquals("addresses",computeTemplateConsolidationData2
715 .getNodesGetAttrIn().get("CGI_FW_SERVER_2").get(0).getAttributeName());
716 Assert.assertEquals(1,computeTemplateConsolidationData2
717 .getNodesGetAttrOut().get("CGI_FW_SERVER_2").size());
718 Assert.assertEquals("availability_zone",computeTemplateConsolidationData2
719 .getNodesGetAttrOut().get("CGI_FW_SERVER_2").get(0).getFieldName());
720 Assert.assertEquals("addresses",computeTemplateConsolidationData2
721 .getNodesGetAttrOut().get("CGI_FW_SERVER_2").get(0).getAttributeName());
722 Assert.assertEquals("cgi_fw_01_left_mac_2",computeTemplateConsolidationData2
723 .getOutputParametersGetAttrIn().get(0).getFieldName());
724 Assert.assertEquals("addresses",computeTemplateConsolidationData2
725 .getOutputParametersGetAttrIn().get(0).getAttributeName());
726 Assert.assertEquals("cgi_fw_01_left_mac_3",computeTemplateConsolidationData2
727 .getOutputParametersGetAttrIn().get(1).getFieldName());
728 Assert.assertEquals("addresses",computeTemplateConsolidationData2
729 .getOutputParametersGetAttrIn().get(1).getAttributeName());
730 Assert.assertEquals("cgi_fw_01_left_mac_4",computeTemplateConsolidationData2
731 .getOutputParametersGetAttrIn().get(2).getFieldName());
732 Assert.assertEquals("addresses",computeTemplateConsolidationData2
733 .getOutputParametersGetAttrIn().get(2).getAttributeName());
734 Assert.assertEquals("cgi_fw_01_left_mac_5",computeTemplateConsolidationData2
735 .getOutputParametersGetAttrIn().get(3).getFieldName());
736 Assert.assertEquals("addresses",computeTemplateConsolidationData2
737 .getOutputParametersGetAttrIn().get(3).getAttributeName());
738 Assert.assertEquals("cgi_fw_01_left_mac_5",computeTemplateConsolidationData2
739 .getOutputParametersGetAttrIn().get(4).getFieldName());
740 Assert.assertEquals("addresses",computeTemplateConsolidationData2
741 .getOutputParametersGetAttrIn().get(4).getAttributeName());
742 Assert.assertEquals("cgi_fw_01_left_mac_6",computeTemplateConsolidationData2
743 .getOutputParametersGetAttrIn().get(5).getFieldName());
744 Assert.assertEquals("addresses",computeTemplateConsolidationData2
745 .getOutputParametersGetAttrIn().get(5).getAttributeName());
746 Assert.assertEquals("cgi_fw_01_left_mac_9",computeTemplateConsolidationData2
747 .getOutputParametersGetAttrIn().get(6).getFieldName());
748 Assert.assertEquals("addresses",computeTemplateConsolidationData2
749 .getOutputParametersGetAttrIn().get(6).getAttributeName());
750 Assert.assertEquals("cgi_fw_01_left_mac_10",computeTemplateConsolidationData2
751 .getOutputParametersGetAttrIn().get(7).getFieldName());
752 Assert.assertEquals("addresses",computeTemplateConsolidationData2
753 .getOutputParametersGetAttrIn().get(7).getAttributeName());
754 PortTemplateConsolidationData portTemplateConsolidationData = consolidationData
755 .getPortConsolidationData().getFilePortConsolidationData("MainServiceTemplate.yaml")
756 .getPortTemplateConsolidationData("contrail_vmi_subinterface");
757 Assert.assertEquals("cgi_fw_01_left_mac_7",portTemplateConsolidationData
758 .getOutputParametersGetAttrIn().get(0).getFieldName());
759 Assert.assertEquals("virtual_machine_interface_properties",portTemplateConsolidationData
760 .getOutputParametersGetAttrIn().get(0).getAttributeName());
761 Assert.assertEquals("cgi_fw_01_left_mac_8",portTemplateConsolidationData
762 .getOutputParametersGetAttrIn().get(1).getFieldName());
763 Assert.assertEquals("virtual_machine_interface_allowed_address_pairs",
764 portTemplateConsolidationData.getOutputParametersGetAttrIn()
765 .get(1).getAttributeName());
766 Assert.assertEquals("cgi_fw_01_left_mac_10",portTemplateConsolidationData
767 .getOutputParametersGetAttrIn().get(2).getFieldName());
768 Assert.assertEquals("virtual_machine_interface_allowed_address_pairs",
769 portTemplateConsolidationData.getOutputParametersGetAttrIn()
770 .get(2).getAttributeName());
774 public static void validateNestedConsolidationData(TranslationContext context,
776 ConsolidationData consolidationData = context.getConsolidationData();
777 if (testName.equals(TEST_SINGLE_NESTED_RESOURCE)) {
778 String nestedNodeTemplateId = "server_pcm_001";
779 NestedTemplateConsolidationData nestedTemplateConsolidationData =
780 consolidationData.getNestedConsolidationData()
781 .getFileNestedConsolidationData(MAIN_SERVICE_TEMPLATE)
782 .getNestedTemplateConsolidationData(nestedNodeTemplateId);
783 //Validate basic null attributes
784 validateBasicNestedConsolidationData(nestedTemplateConsolidationData);
785 //Validate nodeTemplateId
786 Assert.assertEquals(nestedTemplateConsolidationData.getNodeTemplateId(), nestedNodeTemplateId);
787 //Validate nodes connected in (will only be populated for dependsOn relationships)
788 Map<String, List<RequirementAssignmentData>> nodesConnectedIn =
789 nestedTemplateConsolidationData.getNodesConnectedIn();
790 List<String> dependentNodes = new LinkedList<>();
791 dependentNodes.add("packet_mirror_network");
792 validateNestedNodesConnectedInDependency(nodesConnectedIn, nestedNodeTemplateId, dependentNodes);
794 //Validate get attribute in
795 Map<String, List<GetAttrFuncData>> nodesGetAttrIn =
796 nestedTemplateConsolidationData.getNodesGetAttrIn();
797 String getAttrNodeTemplateId = "server_compute_get_attr_test";
798 List<GetAttrFuncData> getAttrFuncData = nodesGetAttrIn.get(getAttrNodeTemplateId);
799 Assert.assertNotNull(getAttrFuncData);
800 Assert.assertEquals(getAttrFuncData.size(), 2);
801 Assert.assertEquals(getAttrFuncData.get(0).getFieldName(), "metadata");
802 Assert.assertEquals(getAttrFuncData.get(0).getAttributeName(), "server_pcm_id");
803 Assert.assertEquals(getAttrFuncData.get(1).getFieldName(), "user_data_format");
804 Assert.assertEquals(getAttrFuncData.get(1).getAttributeName(), "oam_net_gw");
806 //Validate output parameter get attribute in
807 List<GetAttrFuncData> outputParametersGetAttrIn =
808 nestedTemplateConsolidationData.getOutputParametersGetAttrIn();
809 Assert.assertNotNull(outputParametersGetAttrIn);
810 Assert.assertEquals(outputParametersGetAttrIn.size(), 1);
811 Assert.assertEquals(outputParametersGetAttrIn.get(0).getFieldName(), "output_attr_1");
812 Assert.assertEquals(outputParametersGetAttrIn.get(0).getAttributeName(), "pcm_vol");
814 } else if (testName.equals(TEST_MULTIPLE_NESTED_RESOURCE)) {
815 List<String> nestedNodeTemplateIds = new ArrayList<>();
816 nestedNodeTemplateIds.add("server_pcm_001");
817 nestedNodeTemplateIds.add("server_pcm_002");
818 nestedNodeTemplateIds.add("server_pcm_003");
820 for (String nestedNodeTemplateId : nestedNodeTemplateIds) {
821 NestedTemplateConsolidationData nestedTemplateConsolidationData =
822 consolidationData.getNestedConsolidationData()
823 .getFileNestedConsolidationData(MAIN_SERVICE_TEMPLATE)
824 .getNestedTemplateConsolidationData(nestedNodeTemplateId);
825 //Validate basic null attributes
826 validateBasicNestedConsolidationData(nestedTemplateConsolidationData);
827 //Validate nodeTemplateId
828 Assert.assertEquals(nestedTemplateConsolidationData.getNodeTemplateId(),
829 nestedNodeTemplateId);
830 if (nestedNodeTemplateId.equals("server_pcm_001")) {
831 //Validate nodes connected in (will only be populated for dependsOn relationships)
832 Map<String, List<RequirementAssignmentData>> nodesConnectedIn =
833 nestedTemplateConsolidationData.getNodesConnectedIn();
834 List<String> dependentNodes = new LinkedList<>();
835 dependentNodes.add("packet_mirror_network");
836 validateNestedNodesConnectedInDependency(nodesConnectedIn, nestedNodeTemplateId, dependentNodes);
838 Assert.assertNull(nestedTemplateConsolidationData.getNodesConnectedIn());
841 String nestedNodeTemplateId = "server_pcm_001";
843 //Validate get attribute in
844 NestedTemplateConsolidationData nestedTemplateConsolidationData =
845 consolidationData.getNestedConsolidationData()
846 .getFileNestedConsolidationData(MAIN_SERVICE_TEMPLATE)
847 .getNestedTemplateConsolidationData("server_pcm_002");
848 Map<String, List<GetAttrFuncData>> nodesGetAttrIn =
849 nestedTemplateConsolidationData.getNodesGetAttrIn();
850 String getAttrNodeTemplateId = "server_pcm_001";
851 List<GetAttrFuncData> getAttrFuncData = nodesGetAttrIn.get(getAttrNodeTemplateId);
852 Assert.assertNotNull(getAttrFuncData);
853 Assert.assertEquals(getAttrFuncData.size(), 1);
854 Assert.assertEquals(getAttrFuncData.get(0).getFieldName(), "user_data_format");
855 Assert.assertEquals(getAttrFuncData.get(0).getAttributeName(), "pcm_vol");
856 //Validate output parameter get attribute in
857 List<GetAttrFuncData> outputParametersGetAttrIn =
858 nestedTemplateConsolidationData.getOutputParametersGetAttrIn();
859 Assert.assertNotNull(outputParametersGetAttrIn);
860 Assert.assertEquals(outputParametersGetAttrIn.size(), 1);
861 Assert.assertEquals(outputParametersGetAttrIn.get(0).getFieldName(), "output_attr_2");
862 Assert.assertEquals(outputParametersGetAttrIn.get(0).getAttributeName(), "oam_net_ip");
865 nestedTemplateConsolidationData = consolidationData.getNestedConsolidationData()
866 .getFileNestedConsolidationData(MAIN_SERVICE_TEMPLATE)
867 .getNestedTemplateConsolidationData("server_pcm_001");
868 nodesGetAttrIn = nestedTemplateConsolidationData.getNodesGetAttrIn();
869 getAttrNodeTemplateId = "server_pcm_002";
870 getAttrFuncData = nodesGetAttrIn.get(getAttrNodeTemplateId);
871 Assert.assertNotNull(getAttrFuncData);
872 Assert.assertEquals(getAttrFuncData.size(), 1);
873 Assert.assertEquals(getAttrFuncData.get(0).getFieldName(), "metadata");
874 Assert.assertEquals(getAttrFuncData.get(0).getAttributeName(), "server_pcm_id");
875 //Validate output parameter get attribute in
876 outputParametersGetAttrIn = nestedTemplateConsolidationData.getOutputParametersGetAttrIn();
877 Assert.assertNotNull(outputParametersGetAttrIn);
878 Assert.assertEquals(outputParametersGetAttrIn.size(), 1);
879 Assert.assertEquals(outputParametersGetAttrIn.get(0).getFieldName(), "output_attr_1");
880 Assert.assertEquals(outputParametersGetAttrIn.get(0).getAttributeName(), "pcm_vol");
882 nestedTemplateConsolidationData = consolidationData.getNestedConsolidationData()
883 .getFileNestedConsolidationData(MAIN_SERVICE_TEMPLATE)
884 .getNestedTemplateConsolidationData("server_pcm_003");
885 Assert.assertNull(nestedTemplateConsolidationData.getNodesGetAttrIn());
886 Assert.assertNull(nestedTemplateConsolidationData.getOutputParametersGetAttrIn());
888 } else if (testName.equals(TEST_MULTIPLE_MULTI_LEVEL_NESTED_RESOURCE)) {
889 String nestedNodeTemplateId = "test_nested";
890 NestedTemplateConsolidationData nestedTemplateConsolidationData =
891 consolidationData.getNestedConsolidationData()
892 .getFileNestedConsolidationData(MAIN_SERVICE_TEMPLATE)
893 .getNestedTemplateConsolidationData(nestedNodeTemplateId);
894 //Validate basic null attributes
895 validateBasicNestedConsolidationData(nestedTemplateConsolidationData);
896 //Validate nodeTemplateId
897 Assert.assertEquals(nestedTemplateConsolidationData.getNodeTemplateId(),
898 nestedNodeTemplateId);
899 //Validate nodes connected in (will only be populated for dependsOn relationships)
900 Map<String, List<RequirementAssignmentData>> nodesConnectedIn =
901 nestedTemplateConsolidationData.getNodesConnectedIn();
902 List<String> dependentNodes = new LinkedList<>();
903 dependentNodes.add("packet_mirror_network");
904 validateNestedNodesConnectedInDependency(nodesConnectedIn, nestedNodeTemplateId, dependentNodes);
905 //Validate output parameter get attribute in
906 List<GetAttrFuncData> getAttrFuncData =
907 nestedTemplateConsolidationData.getNodesGetAttrIn().get("packet_mirror_network");
908 Assert.assertNotNull(getAttrFuncData);
909 Assert.assertEquals(getAttrFuncData.size(), 1);
910 Assert.assertEquals(getAttrFuncData.get(0).getFieldName(), "shared");
911 Assert.assertEquals(getAttrFuncData.get(0).getAttributeName(), "output_attr_1");
912 Assert.assertNull(nestedTemplateConsolidationData.getOutputParametersGetAttrIn());
914 nestedNodeTemplateId = "test_nested2";
915 nestedTemplateConsolidationData = consolidationData.getNestedConsolidationData()
916 .getFileNestedConsolidationData("nestedServiceTemplate.yaml")
917 .getNestedTemplateConsolidationData(nestedNodeTemplateId);
918 //Validate basic null attributes
919 validateBasicNestedConsolidationData(nestedTemplateConsolidationData);
920 //Validate nodeTemplateId
921 Assert.assertEquals(nestedTemplateConsolidationData.getNodeTemplateId(),
922 nestedNodeTemplateId);
923 Assert.assertNull(nestedTemplateConsolidationData.getNodesConnectedIn());
924 //Validate output parameter get attribute in
925 getAttrFuncData = nestedTemplateConsolidationData.getNodesGetAttrIn().get("server_cmaui");
926 Assert.assertNotNull(getAttrFuncData);
927 Assert.assertEquals(getAttrFuncData.size(), 1);
928 Assert.assertEquals(getAttrFuncData.get(0).getFieldName(), "metadata");
929 Assert.assertEquals(getAttrFuncData.get(0).getAttributeName(), "availability_zone_0");
931 List<GetAttrFuncData> outputParametersGetAttrIn1 =
932 nestedTemplateConsolidationData.getOutputParametersGetAttrIn();
933 Assert.assertNotNull(outputParametersGetAttrIn1);
934 Assert.assertEquals(outputParametersGetAttrIn1.size(), 1);
935 Assert.assertEquals(outputParametersGetAttrIn1.get(0).getFieldName(), "output_attr_1");
936 Assert.assertEquals(outputParametersGetAttrIn1.get(0).getAttributeName(), "availability_zone_0");
940 private static void validateBasicNestedConsolidationData(NestedTemplateConsolidationData
941 nestedTemplateConsolidationData) {
942 Assert.assertNull(nestedTemplateConsolidationData.getGroupIds());
943 Assert.assertNull(nestedTemplateConsolidationData.getNodesConnectedOut());
944 //Assert.assertNull(nestedTemplateConsolidationData.getNodesGetAttrOut());
947 private static void validateNestedNodesConnectedInDependency(Map<String,
948 List<RequirementAssignmentData>> nodesConnectedIn,
949 String nestedNodeTemplateId,
950 List<String> dependentNodeTemplateIds) {
951 Assert.assertNotNull(nodesConnectedIn);
952 for (String dependentNodeTemplateId : dependentNodeTemplateIds) {
953 List<RequirementAssignmentData> requirementAssignmentData =
954 nodesConnectedIn.get(dependentNodeTemplateId);
955 Assert.assertNotNull(requirementAssignmentData);
956 for (RequirementAssignmentData data : requirementAssignmentData) {
957 Assert.assertEquals(data.getRequirementId(), ToscaConstants.DEPENDS_ON_REQUIREMENT_ID);
958 Assert.assertEquals(data.getRequirementAssignment().getCapability(), ToscaCapabilityType
960 Assert.assertEquals(data.getRequirementAssignment().getNode(), nestedNodeTemplateId);
961 Assert.assertEquals(data.getRequirementAssignment().getRelationship(),
962 ToscaRelationshipType.NATIVE_DEPENDS_ON);
967 public static void validateNestedNodesConnectedInSecurityRuleToPort(String testName,
968 TranslationContext context) {
969 ConsolidationData consolidationData = context.getConsolidationData();
970 if (testName.equals(TEST_SECURITY_RULE_PORT_NESTED_CONNECTION) ||
971 testName.equals(TestConstants.TEST_SECURITY_RULE_PORT_NESTED_SHARED_PORT)) {
972 String nestedNodeTemplateId = "test_nested";
973 NestedTemplateConsolidationData nestedTemplateConsolidationData =
974 consolidationData.getNestedConsolidationData()
975 .getFileNestedConsolidationData(MAIN_SERVICE_TEMPLATE)
976 .getNestedTemplateConsolidationData(nestedNodeTemplateId);
977 //Validate basic null attributes
978 validateBasicNestedConsolidationData(nestedTemplateConsolidationData);
979 //Validate nodeTemplateId
981 .assertEquals(nestedTemplateConsolidationData.getNodeTemplateId(), nestedNodeTemplateId);
982 String securityRuleNodeTemplateId = "jsa_security_group1";
983 validateNestedNodesConnectedInSecurityRuleToPort(HeatToToscaUtil
984 .getServiceTemplateFromContext(MAIN_SERVICE_TEMPLATE, context).get(),
985 nestedNodeTemplateId, securityRuleNodeTemplateId,
986 nestedTemplateConsolidationData);
987 securityRuleNodeTemplateId = "jsa_security_group2";
988 validateNestedNodesConnectedInSecurityRuleToPort(HeatToToscaUtil
989 .getServiceTemplateFromContext(MAIN_SERVICE_TEMPLATE, context).get(),
990 nestedNodeTemplateId, securityRuleNodeTemplateId,
991 nestedTemplateConsolidationData);
992 if (testName.equals(TestConstants.TEST_SECURITY_RULE_PORT_NESTED_SHARED_PORT)) {
993 nestedNodeTemplateId = "test_nestedArrayParam";
994 Assert.assertEquals(nestedNodeTemplateId, consolidationData.getNestedConsolidationData()
995 .getFileNestedConsolidationData(MAIN_SERVICE_TEMPLATE)
996 .getNestedTemplateConsolidationData(nestedNodeTemplateId).getNodeTemplateId());
997 Assert.assertNull(consolidationData.getNestedConsolidationData()
998 .getFileNestedConsolidationData(MAIN_SERVICE_TEMPLATE)
999 .getNestedTemplateConsolidationData(nestedNodeTemplateId).getNodesConnectedIn());
1001 } else if (testName.equals(TEST_SECURITY_RULE_PORT_MULTI_LEVEL_NESTED_CONNECTION) ||
1002 testName.equals(TEST_SECURITY_RULE_PORT_MULTI_LEVEL_NESTED_SHARED_PORT)) {
1003 String nestedNodeTemplateId = "test_nested2Level";
1004 Assert.assertEquals(nestedNodeTemplateId, consolidationData.getNestedConsolidationData()
1005 .getFileNestedConsolidationData("nested1ServiceTemplate.yaml")
1006 .getNestedTemplateConsolidationData(nestedNodeTemplateId).getNodeTemplateId());
1007 Assert.assertNull(consolidationData.getNestedConsolidationData()
1008 .getFileNestedConsolidationData("nested1ServiceTemplate.yaml")
1009 .getNestedTemplateConsolidationData(nestedNodeTemplateId).getNodesConnectedIn());
1010 nestedNodeTemplateId = "test_nested3Level";
1011 Assert.assertEquals(nestedNodeTemplateId, consolidationData.getNestedConsolidationData()
1012 .getFileNestedConsolidationData("nested2ServiceTemplate.yaml")
1013 .getNestedTemplateConsolidationData(nestedNodeTemplateId).getNodeTemplateId());
1014 Assert.assertNull(consolidationData.getNestedConsolidationData()
1015 .getFileNestedConsolidationData("nested2ServiceTemplate.yaml")
1016 .getNestedTemplateConsolidationData(nestedNodeTemplateId).getNodesConnectedIn());
1017 nestedNodeTemplateId = "test_nested4Level";
1018 Assert.assertEquals(nestedNodeTemplateId, consolidationData.getNestedConsolidationData()
1019 .getFileNestedConsolidationData("nested3ServiceTemplate.yaml")
1020 .getNestedTemplateConsolidationData(nestedNodeTemplateId).getNodeTemplateId());
1021 Assert.assertNull(consolidationData.getNestedConsolidationData()
1022 .getFileNestedConsolidationData("nested3ServiceTemplate.yaml")
1023 .getNestedTemplateConsolidationData(nestedNodeTemplateId).getNodesConnectedIn());
1025 //Validate main service template
1027 nestedNodeTemplateId = "test_nested1Level";
1028 NestedTemplateConsolidationData nestedTemplateConsolidationData =
1029 consolidationData.getNestedConsolidationData()
1030 .getFileNestedConsolidationData(MAIN_SERVICE_TEMPLATE)
1031 .getNestedTemplateConsolidationData(nestedNodeTemplateId);
1032 //Validate basic null attributes
1033 validateBasicNestedConsolidationData(nestedTemplateConsolidationData);
1034 //Validate nodeTemplateId
1036 .assertEquals(nestedTemplateConsolidationData.getNodeTemplateId(), nestedNodeTemplateId);
1037 String securityRuleNodeTemplateId = "jsa_security_group1";
1038 validateNestedNodesConnectedInSecurityRuleToPort(HeatToToscaUtil
1039 .getServiceTemplateFromContext(MAIN_SERVICE_TEMPLATE, context).get(),
1040 nestedNodeTemplateId, securityRuleNodeTemplateId,
1041 nestedTemplateConsolidationData);
1042 securityRuleNodeTemplateId = "jsa_security_group2";
1043 validateNestedNodesConnectedInSecurityRuleToPort(HeatToToscaUtil
1044 .getServiceTemplateFromContext(MAIN_SERVICE_TEMPLATE, context).get(),
1045 nestedNodeTemplateId, securityRuleNodeTemplateId,
1046 nestedTemplateConsolidationData);
1048 nestedNodeTemplateId = "test_resourceGroup";
1049 nestedTemplateConsolidationData = consolidationData.getNestedConsolidationData()
1050 .getFileNestedConsolidationData(MAIN_SERVICE_TEMPLATE)
1051 .getNestedTemplateConsolidationData(nestedNodeTemplateId);
1052 //Validate basic null attributes
1053 validateBasicNestedConsolidationData(nestedTemplateConsolidationData);
1054 //Validate nodeTemplateId
1056 .assertEquals(nestedTemplateConsolidationData.getNodeTemplateId(), nestedNodeTemplateId);
1057 securityRuleNodeTemplateId = "jsa_security_group2";
1058 validateNestedNodesConnectedInSecurityRuleToPort(HeatToToscaUtil
1059 .getServiceTemplateFromContext(MAIN_SERVICE_TEMPLATE, context).get(),
1060 nestedNodeTemplateId, securityRuleNodeTemplateId,
1061 nestedTemplateConsolidationData);
1062 securityRuleNodeTemplateId = "jsa_security_group2";
1063 validateNestedNodesConnectedInSecurityRuleToPort(HeatToToscaUtil
1064 .getServiceTemplateFromContext(MAIN_SERVICE_TEMPLATE, context).get(),
1065 nestedNodeTemplateId, securityRuleNodeTemplateId,
1066 nestedTemplateConsolidationData);
1068 nestedNodeTemplateId = "test_nestedInvalidConnectionToNova";
1069 Assert.assertEquals(nestedNodeTemplateId, consolidationData.getNestedConsolidationData()
1070 .getFileNestedConsolidationData(MAIN_SERVICE_TEMPLATE)
1071 .getNestedTemplateConsolidationData(nestedNodeTemplateId).getNodeTemplateId());
1072 Assert.assertNull(consolidationData.getNestedConsolidationData()
1073 .getFileNestedConsolidationData(MAIN_SERVICE_TEMPLATE)
1074 .getNestedTemplateConsolidationData(nestedNodeTemplateId).getNodesConnectedIn());
1078 private static void validateNestedNodesConnectedInSecurityRuleToPort(ServiceTemplate
1080 String nestedNodeTemplateId,
1082 securityRuleNodeTemplateId,
1083 NestedTemplateConsolidationData nestedTemplateConsolidationData) {
1084 Map<String, List<RequirementAssignmentData>> consolidationDataNodesConnectedIn =
1085 nestedTemplateConsolidationData.getNodesConnectedIn();
1086 Assert.assertNotNull(consolidationDataNodesConnectedIn);
1087 NodeTemplate securityRuleNodeTemplate = DataModelUtil.getNodeTemplate(serviceTemplate,
1088 securityRuleNodeTemplateId);
1089 List<Map<String, RequirementAssignment>> securityRuleNodeTemplateRequirements =
1090 securityRuleNodeTemplate.getRequirements();
1091 for (Map<String, RequirementAssignment> req : securityRuleNodeTemplateRequirements) {
1092 String requirementId = req.keySet().toArray()[0].toString();
1093 if (requirementId.equals(ToscaConstants.PORT_REQUIREMENT_ID)) {
1094 RequirementAssignment requirementAssignment = req.get(requirementId);
1095 if (requirementAssignment.getNode().equals(nestedNodeTemplateId)) {
1096 validateSecurityRulePortNestedConsolidationData(requirementAssignment,
1097 securityRuleNodeTemplateId, consolidationDataNodesConnectedIn);
1103 private static void validateSecurityRulePortNestedConsolidationData(RequirementAssignment
1104 requirementAssignment,
1105 String securityRuleNodeTemplateId,
1107 List<RequirementAssignmentData>> consolidationDataNodesConnectedIn) {
1108 List<RequirementAssignmentData> requirementAssignmentDataList =
1109 consolidationDataNodesConnectedIn.get(securityRuleNodeTemplateId);
1110 Assert.assertNotNull(requirementAssignmentDataList);
1111 boolean result = false;
1112 for (RequirementAssignmentData data : requirementAssignmentDataList) {
1113 RequirementAssignment dataRequirementAssignment = data.getRequirementAssignment();
1114 result = DataModelUtil
1115 .compareRequirementAssignment(requirementAssignment, dataRequirementAssignment);
1120 Assert.assertTrue(result);