2 * Copyright © 2016-2018 European Support Limited
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 package org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata;
19 import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.TestConstants.MAIN_SERVICE_TEMPLATE;
20 import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.TestConstants.TEST_DEPENDS_ON_INVALID_DEPENDENCY_CANDIDATE;
21 import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.TestConstants.TEST_DEPENDS_ON_MULTIPLE_COMPUTE;
22 import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.TestConstants.TEST_DEPENDS_ON_NODES_CONNECTED_IN;
23 import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.TestConstants.TEST_DEPENDS_ON_NODES_CONNECTED_IN_AND_OUT;
24 import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.TestConstants.TEST_DEPENDS_ON_NODES_CONNECTED_OUT;
25 import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.TestConstants.TEST_DEPENDS_ON_NO_DEPENDENCY;
26 import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.TestConstants.TEST_MULTIPLE_MULTI_LEVEL_NESTED_RESOURCE;
27 import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.TestConstants.TEST_MULTIPLE_NESTED_RESOURCE;
28 import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.TestConstants.TEST_SECURITY_RULE_PORT_MULTI_LEVEL_NESTED_CONNECTION;
29 import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.TestConstants.TEST_SECURITY_RULE_PORT_MULTI_LEVEL_NESTED_SHARED_PORT;
30 import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.TestConstants.TEST_SECURITY_RULE_PORT_NESTED_CONNECTION;
31 import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.TestConstants.TEST_SINGLE_NESTED_RESOURCE;
33 import com.fasterxml.jackson.databind.ObjectMapper;
34 import org.apache.commons.collections4.CollectionUtils;
35 import org.junit.Assert;
36 import org.openecomp.sdc.tosca.datatypes.ToscaNodeType;
37 import org.onap.sdc.tosca.datatypes.model.GroupDefinition;
38 import org.onap.sdc.tosca.datatypes.model.NodeTemplate;
39 import org.onap.sdc.tosca.datatypes.model.NodeType;
40 import org.onap.sdc.tosca.datatypes.model.RequirementAssignment;
41 import org.onap.sdc.tosca.datatypes.model.ServiceTemplate;
42 import org.openecomp.sdc.tosca.services.DataModelUtil;
43 import org.openecomp.sdc.tosca.services.ToscaConstants;
44 import org.openecomp.sdc.tosca.services.impl.ToscaAnalyzerServiceImpl;
45 import org.openecomp.sdc.translator.datatypes.heattotosca.TranslationContext;
46 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.ComputeTemplateConsolidationData;
47 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.ConsolidationData;
48 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.FileNestedConsolidationData;
49 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.GetAttrFuncData;
50 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.NestedConsolidationData;
51 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.NestedTemplateConsolidationData;
52 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.PortTemplateConsolidationData;
53 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.RequirementAssignmentData;
54 import org.openecomp.sdc.translator.services.heattotosca.ConsolidationDataUtil;
55 import org.openecomp.sdc.translator.services.heattotosca.HeatToToscaUtil;
57 import java.util.ArrayList;
58 import java.util.HashMap;
59 import java.util.Iterator;
60 import java.util.LinkedHashMap;
61 import java.util.LinkedList;
62 import java.util.List;
64 import java.util.Objects;
65 import java.util.Optional;
68 public class ConsolidationDataTestUtil {
70 public static void validateVolumeInConsolidationData(String computeNodeTemplateId,
71 ComputeTemplateConsolidationData
72 computeTemplateConsolidationData,
73 ServiceTemplate expectedServiceTemplate,
75 Assert.assertNotNull(computeTemplateConsolidationData);
76 //Get the volume information from consolidation data
77 Map<String, List<RequirementAssignmentData>> volumeConsolidationData =
78 computeTemplateConsolidationData.getVolumes();
80 if(testName.equals("Negative")) {
81 Assert.assertNull(volumeConsolidationData);
85 //Get the volume requirement information from the output translated template
86 NodeTemplate computeNode = DataModelUtil.getNodeTemplate(expectedServiceTemplate,
87 computeNodeTemplateId);
89 if(!isComputeNodeType(expectedServiceTemplate, computeNode.getType()) ) {
90 //According to toplogy only Compute->volume relationship is valid
91 Assert.assertNull(volumeConsolidationData);
95 Assert.assertNotNull(computeNode);
96 List<String> computeVolumeRequirementsNodes = new ArrayList<>();
97 List<Map<String, RequirementAssignment>> requirementList = computeNode.getRequirements();
98 if(requirementList != null){
99 for(Map<String, RequirementAssignment> req : requirementList){
100 Set<String> reqKeySet = req.keySet();
101 for(String reqKey : reqKeySet){
102 //populating the "node" property of all the requirements "local_storage" related to volume
103 if(reqKey.equals(ToscaConstants.LOCAL_STORAGE_REQUIREMENT_ID)){
104 RequirementAssignment requirementAssignment = new ObjectMapper().convertValue(req.get
105 (reqKey), RequirementAssignment.class);
106 computeVolumeRequirementsNodes.add(requirementAssignment.getNode());
110 isVolumeComputeRequirement(computeVolumeRequirementsNodes, volumeConsolidationData);
114 private static void isVolumeComputeRequirement(List<String> computeVolumeRequirementsNodes,
115 Map<String, List<RequirementAssignmentData>>
116 volumeConsolidationData) {
117 Assert.assertEquals(computeVolumeRequirementsNodes.size(), volumeConsolidationData.size());
118 for(String volumeNodeTemplateId : computeVolumeRequirementsNodes) {
119 Assert.assertNotNull(volumeConsolidationData.containsKey(volumeNodeTemplateId));
120 List<RequirementAssignmentData> requirementAssignmentDataList = volumeConsolidationData.get
121 (volumeNodeTemplateId);
122 for(RequirementAssignmentData requirementAssignmentData : requirementAssignmentDataList){
123 Assert.assertTrue(requirementAssignmentData.getRequirementId().equals(ToscaConstants
124 .LOCAL_STORAGE_REQUIREMENT_ID));
130 public static void validatePortsInConsolidationData(String computeNodeTemplateId,
131 ComputeTemplateConsolidationData
132 computeTemplateConsolidationData,
133 ServiceTemplate outputServiceTemplate){
134 Map<String,List<String>> consolidatedMap = computeTemplateConsolidationData.getPorts();
135 Map<String,List<String>> expectedMap = getPortsInConsolidationData(outputServiceTemplate).get
136 (computeNodeTemplateId);
137 if(expectedMap == null && consolidatedMap == null){
140 for(String consolidatedKey : consolidatedMap.keySet()){
141 List<String> consolidatedList = consolidatedMap.get(consolidatedKey);
142 if (expectedMap != null) {
143 List<String> expectedList = expectedMap.get(consolidatedKey);
144 if (expectedList == null) {
147 if (!CollectionUtils.isEqualCollection(consolidatedList, expectedList)) {
154 public static void validateDependsOnInConsolidationData(String computeNodeTemplateId,
155 ComputeTemplateConsolidationData computeTemplateConsolidationData,
156 ServiceTemplate outputServiceTemplate,
158 Map<String, NodeTemplate> outputNodeTemplates = outputServiceTemplate.getTopology_template()
159 .getNode_templates();
160 Map<String, List<RequirementAssignmentData>> nodesConnectedIn =
161 computeTemplateConsolidationData.getNodesConnectedIn();
162 Map<String, List<RequirementAssignmentData>> nodesConnectedOut =
163 computeTemplateConsolidationData.getNodesConnectedOut();
165 if(testName.equals(TEST_DEPENDS_ON_INVALID_DEPENDENCY_CANDIDATE) ||
166 testName.equals(TEST_DEPENDS_ON_NO_DEPENDENCY)) {
167 Assert.assertNull(nodesConnectedIn);
168 Assert.assertNull(nodesConnectedOut);
171 //key - nodetemplate id , value - requirementassignment
172 Map<String, List<RequirementAssignment>> outputDependsOnNodeRequirementMap = new HashMap<>();
173 for(Map.Entry<String, NodeTemplate> entry : outputNodeTemplates.entrySet()) {
174 NodeTemplate nodeTemplate = entry.getValue();
175 List<Map<String, RequirementAssignment>> nodeRequirements = nodeTemplate.getRequirements();
176 if(nodeRequirements != null){
177 for(Map<String, RequirementAssignment> req : nodeRequirements) {
178 Set<String> keySet = req.keySet();
179 for(String key : keySet) {
180 if(key.equals(ToscaConstants.DEPENDS_ON_REQUIREMENT_ID))
181 //collect all dependency requirements in a map with key -> node template id
182 outputDependsOnNodeRequirementMap.computeIfAbsent(entry.getKey(), k -> new ArrayList<>())
189 if(testName.equals(TEST_DEPENDS_ON_NODES_CONNECTED_OUT)){
190 Assert.assertNull(nodesConnectedIn);
191 validateDependsOnNodesConnectedOut(computeNodeTemplateId, nodesConnectedOut,
192 outputDependsOnNodeRequirementMap, outputServiceTemplate);
195 if(testName.equals(TEST_DEPENDS_ON_NODES_CONNECTED_IN)){
196 Assert.assertNull(nodesConnectedOut);
197 validateDependsOnNodesConnectedIn(computeNodeTemplateId, nodesConnectedIn,
198 outputDependsOnNodeRequirementMap,
199 outputServiceTemplate);
202 if(testName.equals(TEST_DEPENDS_ON_NODES_CONNECTED_IN_AND_OUT)){
203 Assert.assertNotNull(nodesConnectedIn);
204 Assert.assertNotNull(nodesConnectedOut);
205 validateDependsOnNodesConnectedOut(computeNodeTemplateId, nodesConnectedOut,
206 outputDependsOnNodeRequirementMap,
207 outputServiceTemplate);
208 validateDependsOnNodesConnectedIn(computeNodeTemplateId, nodesConnectedIn,
209 outputDependsOnNodeRequirementMap,
210 outputServiceTemplate);
213 if(testName.equals(TEST_DEPENDS_ON_MULTIPLE_COMPUTE)){
214 if(nodesConnectedOut != null)
215 validateDependsOnNodesConnectedOut(computeNodeTemplateId, nodesConnectedOut,
216 outputDependsOnNodeRequirementMap,
217 outputServiceTemplate);
218 if(nodesConnectedIn != null)
219 validateDependsOnNodesConnectedIn(computeNodeTemplateId, nodesConnectedIn,
220 outputDependsOnNodeRequirementMap,
221 outputServiceTemplate);
227 private static void validateDependsOnNodesConnectedIn(String computeNodeTemplateId,
229 List<RequirementAssignmentData>>
231 Map<String, List<RequirementAssignment>>
232 outputDependsOnNodeRequirementMap,
233 ServiceTemplate outputServiceTemplate) {
234 ToscaAnalyzerServiceImpl analyzerService = new ToscaAnalyzerServiceImpl();
235 for(Map.Entry<String, List<RequirementAssignment>> entry : outputDependsOnNodeRequirementMap
237 String sourceNodeTemplateId = entry.getKey();
238 Optional<NodeTemplate> sourceNodeTemplate = analyzerService.getNodeTemplateById
239 (outputServiceTemplate, sourceNodeTemplateId);
240 String sourceNodeType = sourceNodeTemplate.get().getType();
241 for(Object obj : entry.getValue()){
242 RequirementAssignment req = new ObjectMapper().convertValue(obj, RequirementAssignment
244 String targetNodeTemplateId = req.getNode();
245 Optional<NodeTemplate> targetNodeTemplate = analyzerService.getNodeTemplateById
246 (outputServiceTemplate, targetNodeTemplateId);
248 String targetNodeType = targetNodeTemplate.get().getType();
249 boolean isValidTargetForConnectedIn = false;
250 if(isComputeNodeType(outputServiceTemplate, targetNodeType)) {
251 isValidTargetForConnectedIn = true;
252 } else if(isPortNodeType(outputServiceTemplate, targetNodeType)) {
253 isValidTargetForConnectedIn = true;
256 if(isValidTargetForConnectedIn) {
257 //Should be present if target node is compute or port
258 if(computeNodeTemplateId.equals(entry.getKey()))
259 Assert.assertTrue(nodesConnectedIn.containsKey(entry.getKey()));
262 if(sourceNodeType.startsWith(ToscaNodeType.NOVA_SERVER)
263 && (targetNodeType.startsWith(ToscaNodeType.NOVA_SERVER)
264 || targetNodeType.startsWith(ToscaNodeType.NEUTRON_PORT)
265 || targetNodeType.startsWith(ToscaNodeType.CONTRAILV2_VIRTUAL_MACHINE_INTERFACE))) {
266 //Ignore Compute->Port, Compute->Compute, Compute->Volume relationship
267 Assert.assertFalse(nodesConnectedIn.containsKey(targetNodeTemplateId));
270 if(sourceNodeType.startsWith(ToscaNodeType.NEUTRON_PORT)
271 && (targetNodeType.startsWith(ToscaNodeType.NOVA_SERVER)
272 || targetNodeType.startsWith(ToscaNodeType.NEUTRON_PORT)
273 || targetNodeType.startsWith(ToscaNodeType.CONTRAILV2_VIRTUAL_MACHINE_INTERFACE))) {
274 //Ignore Port->Port, Port->Compute, Port->Volume relationship
275 Assert.assertFalse(nodesConnectedIn.containsKey(targetNodeTemplateId));
281 private static boolean isComputeNodeType(ServiceTemplate serviceTemplate,
284 if(nodeType.equals(ToscaNodeType.NOVA_SERVER) ||
285 nodeType.equals(ToscaNodeType.NATIVE_COMPUTE))
288 Map<String, NodeType> nodeTypes = serviceTemplate.getNode_types();
289 if(nodeTypes.containsKey(nodeType)) {
290 NodeType nodeTypeInfo = nodeTypes.get(nodeType);
291 if(nodeTypeInfo.getDerived_from().equals(ToscaNodeType.NOVA_SERVER))
297 private static boolean isPortNodeType(ServiceTemplate serviceTemplate,
299 if(nodeType.equals(ToscaNodeType.NEUTRON_PORT) ||
300 nodeType.equals(ToscaNodeType.CONTRAILV2_VIRTUAL_MACHINE_INTERFACE))
303 Map<String, NodeType> nodeTypes = serviceTemplate.getNode_types();
304 if(nodeTypes.containsKey(nodeType)) {
305 NodeType nodeTypeInfo = nodeTypes.get(nodeType);
306 if(nodeTypeInfo.getDerived_from().equals(ToscaNodeType.NEUTRON_PORT) ||
307 nodeTypeInfo.getDerived_from().equals(ToscaNodeType.CONTRAILV2_VIRTUAL_MACHINE_INTERFACE))
313 private static void validateDependsOnNodesConnectedOut(String computeNodeTemplateId,
315 List<RequirementAssignmentData>>
317 Map<String, List<RequirementAssignment>>
318 outputDependsOnNodeRequirementMap,
319 ServiceTemplate outputServiceTemplate) {
320 ToscaAnalyzerServiceImpl analyzerService = new ToscaAnalyzerServiceImpl();
321 //Iterating the map <nodeTemplateId, all the requirements of that node>
322 for(Map.Entry<String, List<RequirementAssignment>> entry : outputDependsOnNodeRequirementMap
324 String sourceNodeTemplateId = entry.getKey();
325 Optional<NodeTemplate> sourceNodeTemplate = analyzerService.getNodeTemplateById
326 (outputServiceTemplate, sourceNodeTemplateId);
327 String sourceNodeType = sourceNodeTemplate.get().getType();
328 boolean isValidSourceForConnectedOut = false;
329 if(isComputeNodeType(outputServiceTemplate, sourceNodeType)) {
330 isValidSourceForConnectedOut = true;
331 } else if(isPortNodeType(outputServiceTemplate, sourceNodeType)) {
332 isValidSourceForConnectedOut = true;
334 for(Object obj : entry.getValue()){
335 RequirementAssignment req = new ObjectMapper().convertValue(obj, RequirementAssignment
337 String targetNodeTemplateId = req.getNode();
338 Optional<NodeTemplate> targetNodeTemplate = analyzerService.getNodeTemplateById
339 (outputServiceTemplate, targetNodeTemplateId);
340 String targetNodeType = targetNodeTemplate.get().getType();
342 if(isValidSourceForConnectedOut) {
343 //Should be present if source node is compute or port
344 if(computeNodeTemplateId.equals(entry.getKey()))
345 Assert.assertTrue(nodesConnectedOut.containsKey(targetNodeTemplateId));
348 if(sourceNodeType.startsWith(ToscaNodeType.NOVA_SERVER)
349 && (targetNodeType.startsWith(ToscaNodeType.NOVA_SERVER)
350 || targetNodeType.startsWith(ToscaNodeType.NEUTRON_PORT)
351 || targetNodeType.startsWith(ToscaNodeType.CONTRAILV2_VIRTUAL_MACHINE_INTERFACE))) {
352 //Ignore Compute->Port, Compute->Compute, Compute->Volume relationship
353 Assert.assertFalse(nodesConnectedOut.containsKey(targetNodeTemplateId));
356 if(sourceNodeType.startsWith(ToscaNodeType.NEUTRON_PORT)
357 && (targetNodeType.startsWith(ToscaNodeType.NOVA_SERVER)
358 || targetNodeType.startsWith(ToscaNodeType.NEUTRON_PORT)
359 || targetNodeType.startsWith(ToscaNodeType.CONTRAILV2_VIRTUAL_MACHINE_INTERFACE))) {
360 //Ignore Port->Port, Port->Compute, Port->Volume relationship
361 Assert.assertFalse(nodesConnectedOut.containsKey(targetNodeTemplateId));
367 private static Map<String,Map<String,List<String>>> getPortsInConsolidationData(ServiceTemplate
369 Map<String,Map<String,List<String>>> portMap = new LinkedHashMap<>();
370 Map<String, NodeTemplate> nodeTempMap = output.getTopology_template().getNode_templates();
371 for(String nodeName : nodeTempMap.keySet()){
372 NodeTemplate node = nodeTempMap.get(nodeName);
373 if(ToscaNodeType.NEUTRON_PORT.equals(node.getType()) || ToscaNodeType
374 .CONTRAILV2_VIRTUAL_MACHINE_INTERFACE.equals(node.getType())){
375 List<Map<String, RequirementAssignment>> reqAssignList = node.getRequirements();
376 if(reqAssignList != null) {
377 for (Map<String, RequirementAssignment> reqAssignMap : reqAssignList) {
378 //RequirementAssignment req = reqAssignMap.get("binding");
379 RequirementAssignment req = new ObjectMapper().convertValue(reqAssignMap.get("binding"),
380 RequirementAssignment.class);
383 String portNode = req.getNode();
384 if (!portMap.containsKey(portNode)) {
385 portMap.put(portNode, new LinkedHashMap<>());
387 Map<String, List<String>> portTypMaps = portMap.get(portNode);
388 String id = ConsolidationDataUtil.getPortType(nodeName);
389 if (!portTypMaps.containsKey(id)) {
390 portTypMaps.put(id, new ArrayList<>());
392 List<String> portIds = portTypMaps.get(id);
393 portIds.add(nodeName);
402 public static void validateGroupsInConsolidationData(String computeNodeTemplateId,
403 ComputeTemplateConsolidationData
404 computeTemplateConsolidationData,
405 ServiceTemplate expectedServiceTemplate) {
406 Assert.assertNotNull(computeTemplateConsolidationData);
407 List<String> groupIds = computeTemplateConsolidationData.getGroupIds();
408 if (groupIds != null) {
409 for (String groupId : groupIds) {
410 isComputeGroupMember(expectedServiceTemplate, computeNodeTemplateId, groupId);
415 private static void isComputeGroupMember(ServiceTemplate expectedServiceTemplate, String
416 computeNodeTemplateId, String groupId) {
417 //Check if the collected group id is in the member list of the groups
418 GroupDefinition group = expectedServiceTemplate.getTopology_template().getGroups().get(groupId);
419 List<String> groupMembers = group.getMembers();
420 Assert.assertNotNull(groupMembers);
421 Assert.assertTrue(groupMembers.contains(computeNodeTemplateId));
424 public static void validateNestedConsolidationDataNodeTemplateIds(ConsolidationData consolidationData,
425 Map<String, ServiceTemplate>
426 expectedServiceTemplateModels ){
427 Map<String,List<String>> consolidatedMap = getSubstituteNodeTemplateIds(consolidationData);
428 Map<String,List<String>> expectedMap = getSubstituteMapping(expectedServiceTemplateModels);
429 for(String consolidatedKey : consolidatedMap.keySet()){
430 List<String> consolidatedList = consolidatedMap.get(consolidatedKey);
431 List<String> expectedList = expectedMap.get(consolidatedKey);
432 if(expectedList == null ){
434 } if(!CollectionUtils.isEqualCollection(consolidatedList,expectedList)){
440 private static Map<String,List<String>> getSubstituteNodeTemplateIds(ConsolidationData
442 Map<String,List<String>> nestedNodeTemplateIdMap = new HashMap<>();
443 NestedConsolidationData nestedConsolidationData =
444 consolidationData.getNestedConsolidationData();
445 Set<String> serviceTemplateFileNames =
446 nestedConsolidationData.getAllServiceTemplateFileNames();
447 for (String fileName : serviceTemplateFileNames) {
448 FileNestedConsolidationData fileNestedConsolidationData =
449 nestedConsolidationData.getFileNestedConsolidationData(fileName);
450 if (Objects.isNull(fileNestedConsolidationData)) {
453 Set<String> nestedNodeTemplateIds =
454 fileNestedConsolidationData.getAllNestedNodeTemplateIds();
455 if (nestedNodeTemplateIds != null) {
456 List<String> fileNestedNodeTemplateIds = new ArrayList<>();
457 fileNestedNodeTemplateIds.addAll(nestedNodeTemplateIds);
458 nestedNodeTemplateIdMap.put(fileName, fileNestedNodeTemplateIds);
461 return nestedNodeTemplateIdMap;
464 private static Map<String,List<String>> getSubstituteMapping(Map<String, ServiceTemplate>
465 expectedServiceTemplateModels ){
466 Map<String,List<String>> map = new LinkedHashMap<>();
467 for(String key : expectedServiceTemplateModels.keySet()){
468 ServiceTemplate serviceTemplate = expectedServiceTemplateModels.get(key);
469 if(serviceTemplate.getTopology_template() != null && serviceTemplate
470 .getTopology_template().getNode_templates() != null) {
471 for (String key1 : serviceTemplate.getTopology_template().getNode_templates().keySet()) {
472 NodeTemplate nodeTemplate = serviceTemplate.getTopology_template().getNode_templates()
474 if (nodeTemplate.getType().contains(ToscaNodeType.ABSTRACT_NODE_TYPE_PREFIX + "heat.")) {
476 List<String> subNodeTempIdList = map.get(key);
477 if (subNodeTempIdList == null) {
478 subNodeTempIdList = new ArrayList<>();
479 map.put(key, subNodeTempIdList);
481 subNodeTempIdList.add(key1);
489 public static void validateComputeConnectivityIn(ComputeTemplateConsolidationData
490 computeTemplateConsolidationData,
491 ServiceTemplate expectedServiceTemplate){
492 Map<String,List<RequirementAssignmentData>> nodesConnectedIn = computeTemplateConsolidationData.
493 getNodesConnectedIn();
494 if(nodesConnectedIn==null){
497 boolean found = false;
498 for(String nodeIdConnTo : nodesConnectedIn.keySet()){
499 List<RequirementAssignmentData> connectToList = nodesConnectedIn.get(nodeIdConnTo);
500 List<Map<String, RequirementAssignment>> requirementsList = expectedServiceTemplate
501 .getTopology_template().getNode_templates().get(nodeIdConnTo).getRequirements();
502 for(RequirementAssignmentData requirementAssignmentData : connectToList) {
503 for (Map<String, RequirementAssignment> requirementAssignmentMap : requirementsList) {
504 RequirementAssignment requirementAssignment =
505 new ObjectMapper().convertValue(requirementAssignmentMap.values().iterator().next(),
506 RequirementAssignment.class);
507 if (requirementAssignment.getNode().equals(requirementAssignmentData.getRequirementAssignment().getNode())) {
508 Assert.assertEquals(requirementAssignment.getCapability(),requirementAssignmentData.getRequirementAssignment().getCapability());
509 Assert.assertEquals(requirementAssignment.getNode(),requirementAssignmentData.getRequirementAssignment().getNode());
510 Assert.assertEquals(requirementAssignment.getRelationship(),requirementAssignmentData.getRequirementAssignment()
523 public static void validateComputeConnectivityOut(String computeNodeTemplateId,
524 ComputeTemplateConsolidationData
525 computeTemplateConsolidationData,
526 ServiceTemplate expectedServiceTemplate){
527 Map<String,List<RequirementAssignmentData>> nodesConnectedOut = computeTemplateConsolidationData.
528 getNodesConnectedOut();
529 if(nodesConnectedOut==null){
532 boolean found = false;
533 for(String nodeIdConnFrom : nodesConnectedOut.keySet()){
534 List<RequirementAssignmentData> connectToList = nodesConnectedOut.get(nodeIdConnFrom);
535 List<Map<String, RequirementAssignment>> requirementsList = expectedServiceTemplate
536 .getTopology_template().getNode_templates().get(computeNodeTemplateId).getRequirements();
537 for(RequirementAssignmentData requirementAssignmentData : connectToList) {
538 for (Map<String, RequirementAssignment> requirementAssignmentMap : requirementsList) {
539 RequirementAssignment requirementAssignment =
540 new ObjectMapper().convertValue(requirementAssignmentMap.values().iterator().next(),
541 RequirementAssignment.class);
542 if (requirementAssignment.getNode().equals(requirementAssignmentData.getRequirementAssignment().getNode())) {
543 Assert.assertEquals(requirementAssignment.getCapability(),requirementAssignmentData.getRequirementAssignment().getCapability());
544 Assert.assertEquals(requirementAssignment.getNode(),requirementAssignmentData.getRequirementAssignment().getNode());
545 Assert.assertEquals(requirementAssignment.getRelationship(),requirementAssignmentData.getRequirementAssignment()
558 public static void validatePortConnectivityIn(PortTemplateConsolidationData
559 portTemplateConsolidationData,
560 ServiceTemplate expectedServiceTemplate){
561 Map<String,List<RequirementAssignmentData>> nodesConnectedIn = portTemplateConsolidationData.
562 getNodesConnectedIn();
563 if(nodesConnectedIn==null){
566 boolean found = false;
567 for(String nodeIdConnTo : nodesConnectedIn.keySet()){
568 List<RequirementAssignmentData> connectToList = nodesConnectedIn.get(nodeIdConnTo);
569 List<Map<String, RequirementAssignment>> requirementsList = expectedServiceTemplate
570 .getTopology_template().getNode_templates().get(nodeIdConnTo).getRequirements();
571 for(RequirementAssignmentData requirementAssignmentData : connectToList) {
572 for (Map<String, RequirementAssignment> requirementAssignmentMap : requirementsList) {
573 RequirementAssignment requirementAssignment =
574 new ObjectMapper().convertValue(requirementAssignmentMap.values().iterator().next(),
575 RequirementAssignment.class);
576 if (requirementAssignment.getNode().equals(requirementAssignmentData.getRequirementAssignment().getNode())) {
577 Assert.assertEquals(requirementAssignment.getCapability(),requirementAssignmentData.getRequirementAssignment().getCapability());
578 Assert.assertEquals(requirementAssignment.getNode(),requirementAssignmentData.getRequirementAssignment().getNode());
579 Assert.assertEquals(requirementAssignment.getRelationship(),requirementAssignmentData.getRequirementAssignment()
592 public static void validatePortConnectivityOut(String portNodeTemplateId,
593 PortTemplateConsolidationData
594 portTemplateConsolidationData,
595 ServiceTemplate expectedServiceTemplate){
596 Map<String, List<RequirementAssignmentData>> nodesConnectedOut =
597 portTemplateConsolidationData.getNodesConnectedOut();
598 if(nodesConnectedOut==null){
601 boolean found = false;
602 for(String nodeIdConnFrom : nodesConnectedOut.keySet()){
603 List<RequirementAssignmentData> connectToList = nodesConnectedOut.get(nodeIdConnFrom);
604 List<Map<String, RequirementAssignment>> requirementsList = expectedServiceTemplate
605 .getTopology_template().getNode_templates().get(portNodeTemplateId).getRequirements();
606 for(RequirementAssignmentData requirementAssignmentData : connectToList) {
607 for (Map<String, RequirementAssignment> requirementAssignmentMap : requirementsList) {
608 RequirementAssignment requirementAssignment =
609 new ObjectMapper().convertValue(requirementAssignmentMap.values().iterator().next(),
610 RequirementAssignment.class);
611 if (requirementAssignment.getNode().equals(requirementAssignmentData.getRequirementAssignment().getNode())) {
612 Assert.assertEquals(requirementAssignment.getCapability(),requirementAssignmentData.getRequirementAssignment().getCapability());
613 Assert.assertEquals(requirementAssignment.getNode(),requirementAssignmentData.getRequirementAssignment().getNode());
614 Assert.assertEquals(requirementAssignment.getRelationship(),requirementAssignmentData.getRequirementAssignment()
627 public static void validateGetAttr(TranslationContext translationContext, Map<String,
629 expectedServiceTemplateModels,String testName){
630 ConsolidationData consolidationData = translationContext.getConsolidationData();
631 Assert.assertNotNull(consolidationData);
632 if(TestConstants.TEST_GET_ATTR_FOR_MORE_THAN_ONE_ATTR_IN_ATTR_LIST.equals(testName)){
633 PortTemplateConsolidationData portTemplateConsolidationData = consolidationData
634 .getPortConsolidationData().getFilePortConsolidationData("ep-jsa_netServiceTemplate.yaml")
635 .getPortTemplateConsolidationData("VMI1");
636 Assert.assertNotNull(portTemplateConsolidationData);
637 Assert.assertEquals(2, portTemplateConsolidationData.getNodesGetAttrIn().size());
638 List<GetAttrFuncData> attrFuncDataList = portTemplateConsolidationData.getNodesGetAttrIn()
640 Assert.assertEquals(1,attrFuncDataList.size());
641 Assert.assertEquals("name",attrFuncDataList.get(0).getFieldName());
642 Assert.assertEquals("name",attrFuncDataList.get(0).getAttributeName());
644 attrFuncDataList = portTemplateConsolidationData.getNodesGetAttrIn()
646 Assert.assertEquals(1,attrFuncDataList.size());
647 Assert.assertEquals("name",attrFuncDataList.get(0).getFieldName());
648 Assert.assertEquals("virtual_machine_interface_allowed_address_pairs",attrFuncDataList.get(0).getAttributeName());
650 ComputeTemplateConsolidationData computeTemplateConsolidationDataFSB2 = consolidationData
651 .getComputeConsolidationData()
652 .getFileComputeConsolidationData("ep-jsa_netServiceTemplate.yaml")
653 .getTypeComputeConsolidationData("org.openecomp.resource.vfc.nodes.heat.FSB2")
654 .getComputeTemplateConsolidationData("FSB2");
655 Assert.assertEquals(1,computeTemplateConsolidationDataFSB2.getNodesGetAttrOut().size());
656 List<GetAttrFuncData> attrFuncDataOutList = computeTemplateConsolidationDataFSB2
657 .getNodesGetAttrOut().get("VMI1");
658 Assert.assertEquals(1,attrFuncDataOutList.size());
659 Assert.assertEquals("name",attrFuncDataOutList.get(0).getFieldName());
660 Assert.assertEquals("virtual_machine_interface_allowed_address_pairs",attrFuncDataOutList
661 .get(0).getAttributeName());
662 ComputeTemplateConsolidationData computeTemplateConsolidationDataFSB1 = consolidationData
663 .getComputeConsolidationData()
664 .getFileComputeConsolidationData("ep-jsa_netServiceTemplate.yaml")
665 .getTypeComputeConsolidationData("org.openecomp.resource.vfc.nodes.heat.FSB1")
666 .getComputeTemplateConsolidationData("FSB1");
667 Assert.assertEquals(1,computeTemplateConsolidationDataFSB1.getNodesGetAttrOut().size());
668 List<GetAttrFuncData> attrFuncDataOutList2 = computeTemplateConsolidationDataFSB1
669 .getNodesGetAttrOut().get("VMI1");
670 Assert.assertEquals(1,attrFuncDataOutList2.size());
671 Assert.assertEquals("name",attrFuncDataOutList2.get(0).getFieldName());
672 Assert.assertEquals("name",attrFuncDataOutList2
673 .get(0).getAttributeName());
674 } else if(TestConstants.TEST_IGNORE_GET_ATTR_FROM_OUTPUT.equals(testName)){
675 if(!consolidationData.getPortConsolidationData().getAllServiceTemplateFileNames().isEmpty()){
676 Iterator<String> itr = consolidationData.getPortConsolidationData()
677 .getFilePortConsolidationData("MainServiceTemplate.yaml").getAllPortNodeTemplateIds()
679 while(itr.hasNext()){
680 String key = itr.next();
681 PortTemplateConsolidationData portTemplateConsolidationData = consolidationData
682 .getPortConsolidationData()
683 .getFilePortConsolidationData("MainServiceTemplate.yaml")
684 .getPortTemplateConsolidationData(key);
685 Assert.assertNull(portTemplateConsolidationData.getOutputParametersGetAttrIn());
688 } else if(TestConstants.TEST_GET_ATTR_FOR_NOT_SUPPORTED_ATTR_IN_ATTR_LIST.equals(testName)){
689 Assert.assertNull(consolidationData.getPortConsolidationData()
690 .getFilePortConsolidationData("MainServiceTemplate.yaml")
691 .getPortTemplateConsolidationData("FSB1_Internal2").getNodesGetAttrIn());
692 } else if(TestConstants.TEST_GET_ATTR_FOR_ONLY_RESOURCE_NAME.equals(testName)){
693 PortTemplateConsolidationData portTemplateConsolidationData = consolidationData
694 .getPortConsolidationData().getFilePortConsolidationData("MainServiceTemplate.yaml")
695 .getPortTemplateConsolidationData("VMI1");
696 Assert.assertNotNull(portTemplateConsolidationData);
697 Assert.assertEquals("name",portTemplateConsolidationData.getNodesGetAttrIn().get("FSB1").
698 get(0).getFieldName());
699 Assert.assertEquals("tenant_id",portTemplateConsolidationData.getNodesGetAttrIn().get("FSB1").
700 get(0).getAttributeName());
701 } else if(TestConstants.TEST_GET_ATTR_FOR_NONE_TO_PORT_OR_COMPUTE.equals(testName)){
702 ComputeTemplateConsolidationData computeTemplateConsolidationData = consolidationData
703 .getComputeConsolidationData()
704 .getFileComputeConsolidationData("MainServiceTemplate.yaml")
705 .getTypeComputeConsolidationData("org.openecomp.resource.vfc.nodes.heat.compute")
706 .getComputeTemplateConsolidationData("server_compute_get_attr_test");
707 Assert.assertEquals("user_data_format",computeTemplateConsolidationData
708 .getNodesGetAttrOut().get("server_pcm_001").get(0).getFieldName());
709 Assert.assertEquals("oam_net_gw",computeTemplateConsolidationData
710 .getNodesGetAttrOut().get("server_pcm_001").get(0).getAttributeName());
711 } else if(TestConstants.TEST_OUTPUT_GET_ATTR.equals(testName)){
712 ComputeTemplateConsolidationData computeTemplateConsolidationData1 = consolidationData
713 .getComputeConsolidationData()
714 .getFileComputeConsolidationData("firstnet_fgi_frwlServiceTemplate.yaml")
715 .getTypeComputeConsolidationData("org.openecomp.resource.vfc.nodes.heat.cgi_fw")
716 .getComputeTemplateConsolidationData("CGI_FW_SERVER_1");
717 Assert.assertEquals("cgi_fw_01_left_mac_1",computeTemplateConsolidationData1
718 .getOutputParametersGetAttrIn()
719 .get(0).getFieldName());
720 Assert.assertEquals("addresses",computeTemplateConsolidationData1.getOutputParametersGetAttrIn()
721 .get(0).getAttributeName());
722 ComputeTemplateConsolidationData computeTemplateConsolidationData2 = consolidationData
723 .getComputeConsolidationData()
724 .getFileComputeConsolidationData("firstnet_fgi_frwlServiceTemplate.yaml")
725 .getTypeComputeConsolidationData("org.openecomp.resource.vfc.nodes.heat.cgi_fw")
726 .getComputeTemplateConsolidationData("CGI_FW_SERVER_2");
727 Assert.assertEquals(1,computeTemplateConsolidationData2
728 .getNodesGetAttrIn().get("CGI_FW_SERVER_2").size());
729 Assert.assertEquals("availability_zone",computeTemplateConsolidationData2
730 .getNodesGetAttrIn().get("CGI_FW_SERVER_2").get(0).getFieldName());
731 Assert.assertEquals("addresses",computeTemplateConsolidationData2
732 .getNodesGetAttrIn().get("CGI_FW_SERVER_2").get(0).getAttributeName());
733 Assert.assertEquals(1,computeTemplateConsolidationData2
734 .getNodesGetAttrOut().get("CGI_FW_SERVER_2").size());
735 Assert.assertEquals("availability_zone",computeTemplateConsolidationData2
736 .getNodesGetAttrOut().get("CGI_FW_SERVER_2").get(0).getFieldName());
737 Assert.assertEquals("addresses",computeTemplateConsolidationData2
738 .getNodesGetAttrOut().get("CGI_FW_SERVER_2").get(0).getAttributeName());
739 Assert.assertEquals("cgi_fw_01_left_mac_2",computeTemplateConsolidationData2
740 .getOutputParametersGetAttrIn().get(0).getFieldName());
741 Assert.assertEquals("addresses",computeTemplateConsolidationData2
742 .getOutputParametersGetAttrIn().get(0).getAttributeName());
743 Assert.assertEquals("cgi_fw_01_left_mac_3",computeTemplateConsolidationData2
744 .getOutputParametersGetAttrIn().get(1).getFieldName());
745 Assert.assertEquals("addresses",computeTemplateConsolidationData2
746 .getOutputParametersGetAttrIn().get(1).getAttributeName());
747 Assert.assertEquals("cgi_fw_01_left_mac_4",computeTemplateConsolidationData2
748 .getOutputParametersGetAttrIn().get(2).getFieldName());
749 Assert.assertEquals("addresses",computeTemplateConsolidationData2
750 .getOutputParametersGetAttrIn().get(2).getAttributeName());
751 Assert.assertEquals("cgi_fw_01_left_mac_5",computeTemplateConsolidationData2
752 .getOutputParametersGetAttrIn().get(3).getFieldName());
753 Assert.assertEquals("addresses",computeTemplateConsolidationData2
754 .getOutputParametersGetAttrIn().get(3).getAttributeName());
755 Assert.assertEquals("cgi_fw_01_left_mac_5",computeTemplateConsolidationData2
756 .getOutputParametersGetAttrIn().get(4).getFieldName());
757 Assert.assertEquals("addresses",computeTemplateConsolidationData2
758 .getOutputParametersGetAttrIn().get(4).getAttributeName());
759 Assert.assertEquals("cgi_fw_01_left_mac_6",computeTemplateConsolidationData2
760 .getOutputParametersGetAttrIn().get(5).getFieldName());
761 Assert.assertEquals("addresses",computeTemplateConsolidationData2
762 .getOutputParametersGetAttrIn().get(5).getAttributeName());
763 Assert.assertEquals("cgi_fw_01_left_mac_9",computeTemplateConsolidationData2
764 .getOutputParametersGetAttrIn().get(6).getFieldName());
765 Assert.assertEquals("addresses",computeTemplateConsolidationData2
766 .getOutputParametersGetAttrIn().get(6).getAttributeName());
767 Assert.assertEquals("cgi_fw_01_left_mac_10",computeTemplateConsolidationData2
768 .getOutputParametersGetAttrIn().get(7).getFieldName());
769 Assert.assertEquals("addresses",computeTemplateConsolidationData2
770 .getOutputParametersGetAttrIn().get(7).getAttributeName());
771 PortTemplateConsolidationData portTemplateConsolidationData = consolidationData
772 .getPortConsolidationData().getFilePortConsolidationData("firstnet_fgi_frwlServiceTemplate.yaml")
773 .getPortTemplateConsolidationData("contrail_vmi_subinterface");
774 Assert.assertEquals("cgi_fw_01_left_mac_7",portTemplateConsolidationData
775 .getOutputParametersGetAttrIn().get(0).getFieldName());
776 Assert.assertEquals("virtual_machine_interface_properties",portTemplateConsolidationData
777 .getOutputParametersGetAttrIn().get(0).getAttributeName());
778 Assert.assertEquals("cgi_fw_01_left_mac_8",portTemplateConsolidationData
779 .getOutputParametersGetAttrIn().get(1).getFieldName());
780 Assert.assertEquals("virtual_machine_interface_allowed_address_pairs",
781 portTemplateConsolidationData.getOutputParametersGetAttrIn()
782 .get(1).getAttributeName());
783 Assert.assertEquals("cgi_fw_01_left_mac_10",portTemplateConsolidationData
784 .getOutputParametersGetAttrIn().get(2).getFieldName());
785 Assert.assertEquals("virtual_machine_interface_allowed_address_pairs",
786 portTemplateConsolidationData.getOutputParametersGetAttrIn()
787 .get(2).getAttributeName());
791 public static void validateNestedConsolidationData(TranslationContext context,
793 ConsolidationData consolidationData = context.getConsolidationData();
794 if (testName.equals(TEST_SINGLE_NESTED_RESOURCE)) {
795 String nestedNodeTemplateId = "server_pcm_001";
796 NestedTemplateConsolidationData nestedTemplateConsolidationData =
797 consolidationData.getNestedConsolidationData()
798 .getFileNestedConsolidationData(MAIN_SERVICE_TEMPLATE)
799 .getNestedTemplateConsolidationData(nestedNodeTemplateId);
800 //Validate basic null attributes
801 validateBasicNestedConsolidationData(nestedTemplateConsolidationData);
802 //Validate nodeTemplateId
803 Assert.assertEquals(nestedTemplateConsolidationData.getNodeTemplateId(), nestedNodeTemplateId);
804 //Validate nodes connected in (will only be populated for dependsOn relationships)
805 Map<String, List<RequirementAssignmentData>> nodesConnectedIn =
806 nestedTemplateConsolidationData.getNodesConnectedIn();
807 List<String> dependentNodes = new LinkedList<>();
808 dependentNodes.add("packet_mirror_network");
810 //Validate get attribute in
811 Map<String, List<GetAttrFuncData>> nodesGetAttrIn =
812 nestedTemplateConsolidationData.getNodesGetAttrIn();
813 String getAttrNodeTemplateId = "server_compute_get_attr_test";
814 List<GetAttrFuncData> getAttrFuncData = nodesGetAttrIn.get(getAttrNodeTemplateId);
815 Assert.assertNotNull(getAttrFuncData);
816 Assert.assertEquals(getAttrFuncData.size(), 2);
817 Assert.assertEquals(getAttrFuncData.get(0).getFieldName(), "metadata");
818 Assert.assertEquals(getAttrFuncData.get(0).getAttributeName(), "server_pcm_id");
819 Assert.assertEquals(getAttrFuncData.get(1).getFieldName(), "user_data_format");
820 Assert.assertEquals(getAttrFuncData.get(1).getAttributeName(), "oam_net_gw");
822 //Validate output parameter get attribute in
823 List<GetAttrFuncData> outputParametersGetAttrIn =
824 nestedTemplateConsolidationData.getOutputParametersGetAttrIn();
825 Assert.assertNotNull(outputParametersGetAttrIn);
826 Assert.assertEquals(outputParametersGetAttrIn.size(), 1);
827 Assert.assertEquals(outputParametersGetAttrIn.get(0).getFieldName(), "output_attr_1");
828 Assert.assertEquals(outputParametersGetAttrIn.get(0).getAttributeName(), "pcm_vol");
830 } else if (testName.equals(TEST_MULTIPLE_NESTED_RESOURCE)) {
831 List<String> nestedNodeTemplateIds = new ArrayList<>();
832 nestedNodeTemplateIds.add("server_pcm_001");
833 nestedNodeTemplateIds.add("server_pcm_002");
834 nestedNodeTemplateIds.add("server_pcm_003");
836 for (String nestedNodeTemplateId : nestedNodeTemplateIds) {
837 NestedTemplateConsolidationData nestedTemplateConsolidationData =
838 consolidationData.getNestedConsolidationData()
839 .getFileNestedConsolidationData(MAIN_SERVICE_TEMPLATE)
840 .getNestedTemplateConsolidationData(nestedNodeTemplateId);
841 //Validate basic null attributes
842 validateBasicNestedConsolidationData(nestedTemplateConsolidationData);
843 //Validate nodeTemplateId
844 Assert.assertEquals(nestedTemplateConsolidationData.getNodeTemplateId(),
845 nestedNodeTemplateId);
846 if (nestedNodeTemplateId.equals("server_pcm_001")) {
847 //Validate nodes connected in (will only be populated for dependsOn relationships)
848 Map<String, List<RequirementAssignmentData>> nodesConnectedIn =
849 nestedTemplateConsolidationData.getNodesConnectedIn();
850 List<String> dependentNodes = new LinkedList<>();
851 dependentNodes.add("packet_mirror_network");
853 Assert.assertNull(nestedTemplateConsolidationData.getNodesConnectedIn());
856 String nestedNodeTemplateId = "server_pcm_001";
858 //Validate get attribute in
859 NestedTemplateConsolidationData nestedTemplateConsolidationData =
860 consolidationData.getNestedConsolidationData()
861 .getFileNestedConsolidationData(MAIN_SERVICE_TEMPLATE)
862 .getNestedTemplateConsolidationData("server_pcm_002");
863 Map<String, List<GetAttrFuncData>> nodesGetAttrIn =
864 nestedTemplateConsolidationData.getNodesGetAttrIn();
865 String getAttrNodeTemplateId = "server_pcm_001";
866 List<GetAttrFuncData> getAttrFuncData = nodesGetAttrIn.get(getAttrNodeTemplateId);
867 Assert.assertNotNull(getAttrFuncData);
868 Assert.assertEquals(getAttrFuncData.size(), 1);
869 Assert.assertEquals(getAttrFuncData.get(0).getFieldName(), "user_data_format");
870 Assert.assertEquals(getAttrFuncData.get(0).getAttributeName(), "pcm_vol");
871 //Validate output parameter get attribute in
872 List<GetAttrFuncData> outputParametersGetAttrIn =
873 nestedTemplateConsolidationData.getOutputParametersGetAttrIn();
874 Assert.assertNotNull(outputParametersGetAttrIn);
875 Assert.assertEquals(outputParametersGetAttrIn.size(), 1);
876 Assert.assertEquals(outputParametersGetAttrIn.get(0).getFieldName(), "output_attr_2");
877 Assert.assertEquals(outputParametersGetAttrIn.get(0).getAttributeName(), "oam_net_ip");
880 nestedTemplateConsolidationData = consolidationData.getNestedConsolidationData()
881 .getFileNestedConsolidationData(MAIN_SERVICE_TEMPLATE)
882 .getNestedTemplateConsolidationData("server_pcm_001");
883 nodesGetAttrIn = nestedTemplateConsolidationData.getNodesGetAttrIn();
884 getAttrNodeTemplateId = "server_pcm_002";
885 getAttrFuncData = nodesGetAttrIn.get(getAttrNodeTemplateId);
886 Assert.assertNotNull(getAttrFuncData);
887 Assert.assertEquals(getAttrFuncData.size(), 1);
888 Assert.assertEquals(getAttrFuncData.get(0).getFieldName(), "metadata");
889 Assert.assertEquals(getAttrFuncData.get(0).getAttributeName(), "server_pcm_id");
890 //Validate output parameter get attribute in
891 outputParametersGetAttrIn = nestedTemplateConsolidationData.getOutputParametersGetAttrIn();
892 Assert.assertNotNull(outputParametersGetAttrIn);
893 Assert.assertEquals(outputParametersGetAttrIn.size(), 1);
894 Assert.assertEquals(outputParametersGetAttrIn.get(0).getFieldName(), "output_attr_1");
895 Assert.assertEquals(outputParametersGetAttrIn.get(0).getAttributeName(), "pcm_vol");
897 nestedTemplateConsolidationData = consolidationData.getNestedConsolidationData()
898 .getFileNestedConsolidationData(MAIN_SERVICE_TEMPLATE)
899 .getNestedTemplateConsolidationData("server_pcm_003");
900 Assert.assertNull(nestedTemplateConsolidationData.getNodesGetAttrIn());
901 Assert.assertNull(nestedTemplateConsolidationData.getOutputParametersGetAttrIn());
903 } else if (testName.equals(TEST_MULTIPLE_MULTI_LEVEL_NESTED_RESOURCE)) {
904 String nestedNodeTemplateId = "test_nested";
905 NestedTemplateConsolidationData nestedTemplateConsolidationData =
906 consolidationData.getNestedConsolidationData()
907 .getFileNestedConsolidationData(MAIN_SERVICE_TEMPLATE)
908 .getNestedTemplateConsolidationData(nestedNodeTemplateId);
909 //Validate basic null attributes
910 validateBasicNestedConsolidationData(nestedTemplateConsolidationData);
911 //Validate nodeTemplateId
912 Assert.assertEquals(nestedTemplateConsolidationData.getNodeTemplateId(),
913 nestedNodeTemplateId);
914 //Validate nodes connected in (will only be populated for dependsOn relationships)
915 Map<String, List<RequirementAssignmentData>> nodesConnectedIn =
916 nestedTemplateConsolidationData.getNodesConnectedIn();
917 List<String> dependentNodes = new LinkedList<>();
918 dependentNodes.add("packet_mirror_network");
919 //Validate output parameter get attribute in
920 List<GetAttrFuncData> getAttrFuncData =
921 nestedTemplateConsolidationData.getNodesGetAttrIn().get("packet_mirror_network");
922 Assert.assertNotNull(getAttrFuncData);
923 Assert.assertEquals(getAttrFuncData.size(), 1);
924 Assert.assertEquals(getAttrFuncData.get(0).getFieldName(), "shared");
925 Assert.assertEquals(getAttrFuncData.get(0).getAttributeName(), "output_attr_1");
926 Assert.assertNull(nestedTemplateConsolidationData.getOutputParametersGetAttrIn());
928 nestedNodeTemplateId = "test_nested2";
929 nestedTemplateConsolidationData = consolidationData.getNestedConsolidationData()
930 .getFileNestedConsolidationData("nestedServiceTemplate.yaml")
931 .getNestedTemplateConsolidationData(nestedNodeTemplateId);
932 //Validate basic null attributes
933 validateBasicNestedConsolidationData(nestedTemplateConsolidationData);
934 //Validate nodeTemplateId
935 Assert.assertEquals(nestedTemplateConsolidationData.getNodeTemplateId(),
936 nestedNodeTemplateId);
937 Assert.assertNull(nestedTemplateConsolidationData.getNodesConnectedIn());
938 //Validate output parameter get attribute in
939 getAttrFuncData = nestedTemplateConsolidationData.getNodesGetAttrIn().get("server_cmaui_1");
940 Assert.assertNotNull(getAttrFuncData);
941 Assert.assertEquals(getAttrFuncData.size(), 1);
942 Assert.assertEquals(getAttrFuncData.get(0).getFieldName(), "metadata");
943 Assert.assertEquals(getAttrFuncData.get(0).getAttributeName(), "availability_zone_0");
945 List<GetAttrFuncData> outputParametersGetAttrIn1 =
946 nestedTemplateConsolidationData.getOutputParametersGetAttrIn();
947 Assert.assertNotNull(outputParametersGetAttrIn1);
948 Assert.assertEquals(outputParametersGetAttrIn1.size(), 1);
949 Assert.assertEquals(outputParametersGetAttrIn1.get(0).getFieldName(), "output_attr_1");
950 Assert.assertEquals(outputParametersGetAttrIn1.get(0).getAttributeName(), "availability_zone_0");
954 private static void validateBasicNestedConsolidationData(NestedTemplateConsolidationData
955 nestedTemplateConsolidationData) {
956 Assert.assertNull(nestedTemplateConsolidationData.getGroupIds());
957 Assert.assertNull(nestedTemplateConsolidationData.getNodesConnectedOut());
960 public static void validateNestedNodesConnectedInSecurityRuleToPort(String testName,
961 TranslationContext context) {
962 ConsolidationData consolidationData = context.getConsolidationData();
963 if (testName.equals(TEST_SECURITY_RULE_PORT_NESTED_CONNECTION) ||
964 testName.equals(TestConstants.TEST_SECURITY_RULE_PORT_NESTED_SHARED_PORT)) {
965 String nestedNodeTemplateId = "test_nested";
966 NestedTemplateConsolidationData nestedTemplateConsolidationData =
967 consolidationData.getNestedConsolidationData()
968 .getFileNestedConsolidationData(MAIN_SERVICE_TEMPLATE)
969 .getNestedTemplateConsolidationData(nestedNodeTemplateId);
970 //Validate basic null attributes
971 validateBasicNestedConsolidationData(nestedTemplateConsolidationData);
972 //Validate nodeTemplateId
974 .assertEquals(nestedTemplateConsolidationData.getNodeTemplateId(), nestedNodeTemplateId);
975 String securityRuleNodeTemplateId = "jsa_security_group1";
976 validateNestedNodesConnectedInSecurityRuleToPort(HeatToToscaUtil
977 .getServiceTemplateFromContext(MAIN_SERVICE_TEMPLATE, context).get(),
978 nestedNodeTemplateId, securityRuleNodeTemplateId,
979 nestedTemplateConsolidationData);
980 securityRuleNodeTemplateId = "jsa_security_group2";
981 validateNestedNodesConnectedInSecurityRuleToPort(HeatToToscaUtil
982 .getServiceTemplateFromContext(MAIN_SERVICE_TEMPLATE, context).get(),
983 nestedNodeTemplateId, securityRuleNodeTemplateId,
984 nestedTemplateConsolidationData);
985 if (testName.equals(TestConstants.TEST_SECURITY_RULE_PORT_NESTED_SHARED_PORT)) {
986 nestedNodeTemplateId = "test_nestedArrayParam";
987 Assert.assertEquals(nestedNodeTemplateId, consolidationData.getNestedConsolidationData()
988 .getFileNestedConsolidationData(MAIN_SERVICE_TEMPLATE)
989 .getNestedTemplateConsolidationData(nestedNodeTemplateId).getNodeTemplateId());
990 Assert.assertNull(consolidationData.getNestedConsolidationData()
991 .getFileNestedConsolidationData(MAIN_SERVICE_TEMPLATE)
992 .getNestedTemplateConsolidationData(nestedNodeTemplateId).getNodesConnectedIn());
994 } else if (testName.equals(TEST_SECURITY_RULE_PORT_MULTI_LEVEL_NESTED_CONNECTION) ||
995 testName.equals(TEST_SECURITY_RULE_PORT_MULTI_LEVEL_NESTED_SHARED_PORT)) {
996 String nestedNodeTemplateId = "test_nested2Level";
997 Assert.assertEquals(nestedNodeTemplateId, consolidationData.getNestedConsolidationData()
998 .getFileNestedConsolidationData("nested1ServiceTemplate.yaml")
999 .getNestedTemplateConsolidationData(nestedNodeTemplateId).getNodeTemplateId());
1000 Assert.assertNull(consolidationData.getNestedConsolidationData()
1001 .getFileNestedConsolidationData("nested1ServiceTemplate.yaml")
1002 .getNestedTemplateConsolidationData(nestedNodeTemplateId).getNodesConnectedIn());
1003 nestedNodeTemplateId = "test_nested3Level";
1004 Assert.assertEquals(nestedNodeTemplateId, consolidationData.getNestedConsolidationData()
1005 .getFileNestedConsolidationData("nested2ServiceTemplate.yaml")
1006 .getNestedTemplateConsolidationData(nestedNodeTemplateId).getNodeTemplateId());
1007 Assert.assertNull(consolidationData.getNestedConsolidationData()
1008 .getFileNestedConsolidationData("nested2ServiceTemplate.yaml")
1009 .getNestedTemplateConsolidationData(nestedNodeTemplateId).getNodesConnectedIn());
1010 nestedNodeTemplateId = "test_nested4Level";
1011 Assert.assertEquals(nestedNodeTemplateId, consolidationData.getNestedConsolidationData()
1012 .getFileNestedConsolidationData("nested3ServiceTemplate.yaml")
1013 .getNestedTemplateConsolidationData(nestedNodeTemplateId).getNodeTemplateId());
1014 Assert.assertNull(consolidationData.getNestedConsolidationData()
1015 .getFileNestedConsolidationData("nested3ServiceTemplate.yaml")
1016 .getNestedTemplateConsolidationData(nestedNodeTemplateId).getNodesConnectedIn());
1018 //Validate main service template
1020 nestedNodeTemplateId = "test_nested1Level";
1021 NestedTemplateConsolidationData nestedTemplateConsolidationData =
1022 consolidationData.getNestedConsolidationData()
1023 .getFileNestedConsolidationData(MAIN_SERVICE_TEMPLATE)
1024 .getNestedTemplateConsolidationData(nestedNodeTemplateId);
1025 //Validate basic null attributes
1026 validateBasicNestedConsolidationData(nestedTemplateConsolidationData);
1027 //Validate nodeTemplateId
1029 .assertEquals(nestedTemplateConsolidationData.getNodeTemplateId(), nestedNodeTemplateId);
1030 String securityRuleNodeTemplateId = "jsa_security_group1";
1031 validateNestedNodesConnectedInSecurityRuleToPort(HeatToToscaUtil
1032 .getServiceTemplateFromContext(MAIN_SERVICE_TEMPLATE, context).get(),
1033 nestedNodeTemplateId, securityRuleNodeTemplateId,
1034 nestedTemplateConsolidationData);
1035 securityRuleNodeTemplateId = "jsa_security_group2";
1036 validateNestedNodesConnectedInSecurityRuleToPort(HeatToToscaUtil
1037 .getServiceTemplateFromContext(MAIN_SERVICE_TEMPLATE, context).get(),
1038 nestedNodeTemplateId, securityRuleNodeTemplateId,
1039 nestedTemplateConsolidationData);
1041 nestedNodeTemplateId = "test_resourceGroup";
1042 nestedTemplateConsolidationData = consolidationData.getNestedConsolidationData()
1043 .getFileNestedConsolidationData(MAIN_SERVICE_TEMPLATE)
1044 .getNestedTemplateConsolidationData(nestedNodeTemplateId);
1045 //Validate basic null attributes
1046 validateBasicNestedConsolidationData(nestedTemplateConsolidationData);
1047 //Validate nodeTemplateId
1049 .assertEquals(nestedTemplateConsolidationData.getNodeTemplateId(), nestedNodeTemplateId);
1050 securityRuleNodeTemplateId = "jsa_security_group2";
1051 validateNestedNodesConnectedInSecurityRuleToPort(HeatToToscaUtil
1052 .getServiceTemplateFromContext(MAIN_SERVICE_TEMPLATE, context).get(),
1053 nestedNodeTemplateId, securityRuleNodeTemplateId,
1054 nestedTemplateConsolidationData);
1055 securityRuleNodeTemplateId = "jsa_security_group2";
1056 validateNestedNodesConnectedInSecurityRuleToPort(HeatToToscaUtil
1057 .getServiceTemplateFromContext(MAIN_SERVICE_TEMPLATE, context).get(),
1058 nestedNodeTemplateId, securityRuleNodeTemplateId,
1059 nestedTemplateConsolidationData);
1061 nestedNodeTemplateId = "test_nestedInvalidConnectionToNova";
1062 Assert.assertEquals(nestedNodeTemplateId, consolidationData.getNestedConsolidationData()
1063 .getFileNestedConsolidationData(MAIN_SERVICE_TEMPLATE)
1064 .getNestedTemplateConsolidationData(nestedNodeTemplateId).getNodeTemplateId());
1065 Assert.assertNull(consolidationData.getNestedConsolidationData()
1066 .getFileNestedConsolidationData(MAIN_SERVICE_TEMPLATE)
1067 .getNestedTemplateConsolidationData(nestedNodeTemplateId).getNodesConnectedIn());
1071 private static void validateNestedNodesConnectedInSecurityRuleToPort(ServiceTemplate
1073 String nestedNodeTemplateId,
1075 securityRuleNodeTemplateId,
1076 NestedTemplateConsolidationData nestedTemplateConsolidationData) {
1077 Map<String, List<RequirementAssignmentData>> consolidationDataNodesConnectedIn =
1078 nestedTemplateConsolidationData.getNodesConnectedIn();
1079 Assert.assertNotNull(consolidationDataNodesConnectedIn);
1080 NodeTemplate securityRuleNodeTemplate = DataModelUtil.getNodeTemplate(serviceTemplate,
1081 securityRuleNodeTemplateId);
1082 List<Map<String, RequirementAssignment>> securityRuleNodeTemplateRequirements =
1083 securityRuleNodeTemplate.getRequirements();
1084 for (Map<String, RequirementAssignment> req : securityRuleNodeTemplateRequirements) {
1085 String requirementId = req.keySet().toArray()[0].toString();
1086 if (requirementId.equals(ToscaConstants.PORT_REQUIREMENT_ID)) {
1087 RequirementAssignment requirementAssignment = req.get(requirementId);
1088 if (requirementAssignment.getNode().equals(nestedNodeTemplateId)) {
1089 validateSecurityRulePortNestedConsolidationData(requirementAssignment,
1090 securityRuleNodeTemplateId, consolidationDataNodesConnectedIn);
1096 private static void validateSecurityRulePortNestedConsolidationData(RequirementAssignment
1097 requirementAssignment,
1098 String securityRuleNodeTemplateId,
1100 List<RequirementAssignmentData>> consolidationDataNodesConnectedIn) {
1101 List<RequirementAssignmentData> requirementAssignmentDataList =
1102 consolidationDataNodesConnectedIn.get(securityRuleNodeTemplateId);
1103 Assert.assertNotNull(requirementAssignmentDataList);
1104 boolean result = false;
1105 for (RequirementAssignmentData data : requirementAssignmentDataList) {
1106 RequirementAssignment dataRequirementAssignment = data.getRequirementAssignment();
1107 result = DataModelUtil
1108 .compareRequirementAssignment(requirementAssignment, dataRequirementAssignment);
1113 Assert.assertTrue(result);