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.ToscaCapabilityType;
37 import org.openecomp.sdc.tosca.datatypes.ToscaNodeType;
38 import org.openecomp.sdc.tosca.datatypes.ToscaRelationshipType;
39 import org.onap.sdc.tosca.datatypes.model.GroupDefinition;
40 import org.onap.sdc.tosca.datatypes.model.NodeTemplate;
41 import org.onap.sdc.tosca.datatypes.model.NodeType;
42 import org.onap.sdc.tosca.datatypes.model.RequirementAssignment;
43 import org.onap.sdc.tosca.datatypes.model.ServiceTemplate;
44 import org.openecomp.sdc.tosca.services.DataModelUtil;
45 import org.openecomp.sdc.tosca.services.ToscaConstants;
46 import org.openecomp.sdc.tosca.services.impl.ToscaAnalyzerServiceImpl;
47 import org.openecomp.sdc.translator.datatypes.heattotosca.TranslationContext;
48 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.ComputeTemplateConsolidationData;
49 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.ConsolidationData;
50 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.FileNestedConsolidationData;
51 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.GetAttrFuncData;
52 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.NestedConsolidationData;
53 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.NestedTemplateConsolidationData;
54 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.PortTemplateConsolidationData;
55 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.RequirementAssignmentData;
56 import org.openecomp.sdc.translator.services.heattotosca.ConsolidationDataUtil;
57 import org.openecomp.sdc.translator.services.heattotosca.HeatToToscaUtil;
59 import java.util.ArrayList;
60 import java.util.HashMap;
61 import java.util.Iterator;
62 import java.util.LinkedHashMap;
63 import java.util.LinkedList;
64 import java.util.List;
66 import java.util.Objects;
67 import java.util.Optional;
70 public class ConsolidationDataTestUtil {
72 public static void validateVolumeInConsolidationData(String computeNodeTemplateId,
73 ComputeTemplateConsolidationData
74 computeTemplateConsolidationData,
75 ServiceTemplate expectedServiceTemplate,
77 Assert.assertNotNull(computeTemplateConsolidationData);
78 //Get the volume information from consolidation data
79 Map<String, List<RequirementAssignmentData>> volumeConsolidationData =
80 computeTemplateConsolidationData.getVolumes();
82 if(testName.equals("Negative")) {
83 Assert.assertNull(volumeConsolidationData);
87 //Get the volume requirement information from the output translated template
88 NodeTemplate computeNode = DataModelUtil.getNodeTemplate(expectedServiceTemplate,
89 computeNodeTemplateId);
91 if(!isComputeNodeType(expectedServiceTemplate, computeNode.getType()) ) {
92 //According to toplogy only Compute->volume relationship is valid
93 Assert.assertNull(volumeConsolidationData);
97 Assert.assertNotNull(computeNode);
98 List<String> computeVolumeRequirementsNodes = new ArrayList<>();
99 List<Map<String, RequirementAssignment>> requirementList = computeNode.getRequirements();
100 if(requirementList != null){
101 for(Map<String, RequirementAssignment> req : requirementList){
102 Set<String> reqKeySet = req.keySet();
103 for(String reqKey : reqKeySet){
104 //populating the "node" property of all the requirements "local_storage" related to volume
105 if(reqKey.equals(ToscaConstants.LOCAL_STORAGE_REQUIREMENT_ID)){
106 RequirementAssignment requirementAssignment = new ObjectMapper().convertValue(req.get
107 (reqKey), RequirementAssignment.class);
108 computeVolumeRequirementsNodes.add(requirementAssignment.getNode());
112 isVolumeComputeRequirement(computeVolumeRequirementsNodes, volumeConsolidationData);
116 private static void isVolumeComputeRequirement(List<String> computeVolumeRequirementsNodes,
117 Map<String, List<RequirementAssignmentData>>
118 volumeConsolidationData) {
119 Assert.assertEquals(computeVolumeRequirementsNodes.size(), volumeConsolidationData.size());
120 for(String volumeNodeTemplateId : computeVolumeRequirementsNodes) {
121 Assert.assertNotNull(volumeConsolidationData.containsKey(volumeNodeTemplateId));
122 List<RequirementAssignmentData> requirementAssignmentDataList = volumeConsolidationData.get
123 (volumeNodeTemplateId);
124 for(RequirementAssignmentData requirementAssignmentData : requirementAssignmentDataList){
125 Assert.assertTrue(requirementAssignmentData.getRequirementId().equals(ToscaConstants
126 .LOCAL_STORAGE_REQUIREMENT_ID));
132 public static void validatePortsInConsolidationData(String computeNodeTemplateId,
133 ComputeTemplateConsolidationData
134 computeTemplateConsolidationData,
135 ServiceTemplate outputServiceTemplate){
136 Map<String,List<String>> consolidatedMap = computeTemplateConsolidationData.getPorts();
137 Map<String,List<String>> expectedMap = getPortsInConsolidationData(outputServiceTemplate).get
138 (computeNodeTemplateId);
139 if(expectedMap == null && consolidatedMap == null){
142 for(String consolidatedKey : consolidatedMap.keySet()){
143 List<String> consolidatedList = consolidatedMap.get(consolidatedKey);
144 if (expectedMap != null) {
145 List<String> expectedList = expectedMap.get(consolidatedKey);
146 if (expectedList == null) {
149 if (!CollectionUtils.isEqualCollection(consolidatedList, expectedList)) {
156 public static void validateDependsOnInConsolidationData(String computeNodeTemplateId,
157 ComputeTemplateConsolidationData computeTemplateConsolidationData,
158 ServiceTemplate outputServiceTemplate,
160 Map<String, NodeTemplate> outputNodeTemplates = outputServiceTemplate.getTopology_template()
161 .getNode_templates();
162 Map<String, List<RequirementAssignmentData>> nodesConnectedIn =
163 computeTemplateConsolidationData.getNodesConnectedIn();
164 Map<String, List<RequirementAssignmentData>> nodesConnectedOut =
165 computeTemplateConsolidationData.getNodesConnectedOut();
167 if(testName.equals(TEST_DEPENDS_ON_INVALID_DEPENDENCY_CANDIDATE) ||
168 testName.equals(TEST_DEPENDS_ON_NO_DEPENDENCY)) {
169 Assert.assertNull(nodesConnectedIn);
170 Assert.assertNull(nodesConnectedOut);
173 //key - nodetemplate id , value - requirementassignment
174 Map<String, List<RequirementAssignment>> outputDependsOnNodeRequirementMap = new HashMap<>();
175 for(Map.Entry<String, NodeTemplate> entry : outputNodeTemplates.entrySet()) {
176 NodeTemplate nodeTemplate = entry.getValue();
177 List<Map<String, RequirementAssignment>> nodeRequirements = nodeTemplate.getRequirements();
178 if(nodeRequirements != null){
179 for(Map<String, RequirementAssignment> req : nodeRequirements) {
180 Set<String> keySet = req.keySet();
181 for(String key : keySet) {
182 if(key.equals(ToscaConstants.DEPENDS_ON_REQUIREMENT_ID))
183 //collect all dependency requirements in a map with key -> node template id
184 outputDependsOnNodeRequirementMap.computeIfAbsent(entry.getKey(), k -> new ArrayList<>())
191 if(testName.equals(TEST_DEPENDS_ON_NODES_CONNECTED_OUT)){
192 Assert.assertNull(nodesConnectedIn);
193 validateDependsOnNodesConnectedOut(computeNodeTemplateId, nodesConnectedOut,
194 outputDependsOnNodeRequirementMap, outputServiceTemplate);
197 if(testName.equals(TEST_DEPENDS_ON_NODES_CONNECTED_IN)){
198 Assert.assertNull(nodesConnectedOut);
199 validateDependsOnNodesConnectedIn(computeNodeTemplateId, nodesConnectedIn,
200 outputDependsOnNodeRequirementMap,
201 outputServiceTemplate);
204 if(testName.equals(TEST_DEPENDS_ON_NODES_CONNECTED_IN_AND_OUT)){
205 Assert.assertNotNull(nodesConnectedIn);
206 Assert.assertNotNull(nodesConnectedOut);
207 validateDependsOnNodesConnectedOut(computeNodeTemplateId, nodesConnectedOut,
208 outputDependsOnNodeRequirementMap,
209 outputServiceTemplate);
210 validateDependsOnNodesConnectedIn(computeNodeTemplateId, nodesConnectedIn,
211 outputDependsOnNodeRequirementMap,
212 outputServiceTemplate);
215 if(testName.equals(TEST_DEPENDS_ON_MULTIPLE_COMPUTE)){
216 if(nodesConnectedOut != null)
217 validateDependsOnNodesConnectedOut(computeNodeTemplateId, nodesConnectedOut,
218 outputDependsOnNodeRequirementMap,
219 outputServiceTemplate);
220 if(nodesConnectedIn != null)
221 validateDependsOnNodesConnectedIn(computeNodeTemplateId, nodesConnectedIn,
222 outputDependsOnNodeRequirementMap,
223 outputServiceTemplate);
229 private static void validateDependsOnNodesConnectedIn(String computeNodeTemplateId,
231 List<RequirementAssignmentData>>
233 Map<String, List<RequirementAssignment>>
234 outputDependsOnNodeRequirementMap,
235 ServiceTemplate outputServiceTemplate) {
236 ToscaAnalyzerServiceImpl analyzerService = new ToscaAnalyzerServiceImpl();
237 for(Map.Entry<String, List<RequirementAssignment>> entry : outputDependsOnNodeRequirementMap
239 String sourceNodeTemplateId = entry.getKey();
240 Optional<NodeTemplate> sourceNodeTemplate = analyzerService.getNodeTemplateById
241 (outputServiceTemplate, sourceNodeTemplateId);
242 String sourceNodeType = sourceNodeTemplate.get().getType();
243 for(Object obj : entry.getValue()){
244 RequirementAssignment req = new ObjectMapper().convertValue(obj, RequirementAssignment
246 String targetNodeTemplateId = req.getNode();
247 Optional<NodeTemplate> targetNodeTemplate = analyzerService.getNodeTemplateById
248 (outputServiceTemplate, targetNodeTemplateId);
250 String targetNodeType = targetNodeTemplate.get().getType();
251 boolean isValidTargetForConnectedIn = false;
252 if(isComputeNodeType(outputServiceTemplate, targetNodeType)) {
253 isValidTargetForConnectedIn = true;
254 } else if(isPortNodeType(outputServiceTemplate, targetNodeType)) {
255 isValidTargetForConnectedIn = true;
258 if(isValidTargetForConnectedIn) {
259 //Should be present if target node is compute or port
260 if(computeNodeTemplateId.equals(entry.getKey()))
261 Assert.assertTrue(nodesConnectedIn.containsKey(entry.getKey()));
264 if(sourceNodeType.startsWith(ToscaNodeType.NOVA_SERVER)
265 && (targetNodeType.startsWith(ToscaNodeType.NOVA_SERVER)
266 || targetNodeType.startsWith(ToscaNodeType.NEUTRON_PORT)
267 || targetNodeType.startsWith(ToscaNodeType.CONTRAILV2_VIRTUAL_MACHINE_INTERFACE))) {
268 //Ignore Compute->Port, Compute->Compute, Compute->Volume relationship
269 Assert.assertFalse(nodesConnectedIn.containsKey(targetNodeTemplateId));
272 if(sourceNodeType.startsWith(ToscaNodeType.NEUTRON_PORT)
273 && (targetNodeType.startsWith(ToscaNodeType.NOVA_SERVER)
274 || targetNodeType.startsWith(ToscaNodeType.NEUTRON_PORT)
275 || targetNodeType.startsWith(ToscaNodeType.CONTRAILV2_VIRTUAL_MACHINE_INTERFACE))) {
276 //Ignore Port->Port, Port->Compute, Port->Volume relationship
277 Assert.assertFalse(nodesConnectedIn.containsKey(targetNodeTemplateId));
283 private static boolean isComputeNodeType(ServiceTemplate serviceTemplate,
286 if(nodeType.equals(ToscaNodeType.NOVA_SERVER) ||
287 nodeType.equals(ToscaNodeType.NATIVE_COMPUTE))
290 Map<String, NodeType> nodeTypes = serviceTemplate.getNode_types();
291 if(nodeTypes.containsKey(nodeType)) {
292 NodeType nodeTypeInfo = nodeTypes.get(nodeType);
293 if(nodeTypeInfo.getDerived_from().equals(ToscaNodeType.NOVA_SERVER))
299 private static boolean isPortNodeType(ServiceTemplate serviceTemplate,
301 if(nodeType.equals(ToscaNodeType.NEUTRON_PORT) ||
302 nodeType.equals(ToscaNodeType.CONTRAILV2_VIRTUAL_MACHINE_INTERFACE))
305 Map<String, NodeType> nodeTypes = serviceTemplate.getNode_types();
306 if(nodeTypes.containsKey(nodeType)) {
307 NodeType nodeTypeInfo = nodeTypes.get(nodeType);
308 if(nodeTypeInfo.getDerived_from().equals(ToscaNodeType.NEUTRON_PORT) ||
309 nodeTypeInfo.getDerived_from().equals(ToscaNodeType.CONTRAILV2_VIRTUAL_MACHINE_INTERFACE))
315 private static void validateDependsOnNodesConnectedOut(String computeNodeTemplateId,
317 List<RequirementAssignmentData>>
319 Map<String, List<RequirementAssignment>>
320 outputDependsOnNodeRequirementMap,
321 ServiceTemplate outputServiceTemplate) {
322 ToscaAnalyzerServiceImpl analyzerService = new ToscaAnalyzerServiceImpl();
323 //Iterating the map <nodeTemplateId, all the requirements of that node>
324 for(Map.Entry<String, List<RequirementAssignment>> entry : outputDependsOnNodeRequirementMap
326 String sourceNodeTemplateId = entry.getKey();
327 Optional<NodeTemplate> sourceNodeTemplate = analyzerService.getNodeTemplateById
328 (outputServiceTemplate, sourceNodeTemplateId);
329 String sourceNodeType = sourceNodeTemplate.get().getType();
330 boolean isValidSourceForConnectedOut = false;
331 if(isComputeNodeType(outputServiceTemplate, sourceNodeType)) {
332 isValidSourceForConnectedOut = true;
333 } else if(isPortNodeType(outputServiceTemplate, sourceNodeType)) {
334 isValidSourceForConnectedOut = true;
336 for(Object obj : entry.getValue()){
337 RequirementAssignment req = new ObjectMapper().convertValue(obj, RequirementAssignment
339 String targetNodeTemplateId = req.getNode();
340 Optional<NodeTemplate> targetNodeTemplate = analyzerService.getNodeTemplateById
341 (outputServiceTemplate, targetNodeTemplateId);
342 String targetNodeType = targetNodeTemplate.get().getType();
344 if(isValidSourceForConnectedOut) {
345 //Should be present if source node is compute or port
346 if(computeNodeTemplateId.equals(entry.getKey()))
347 Assert.assertTrue(nodesConnectedOut.containsKey(targetNodeTemplateId));
350 if(sourceNodeType.startsWith(ToscaNodeType.NOVA_SERVER)
351 && (targetNodeType.startsWith(ToscaNodeType.NOVA_SERVER)
352 || targetNodeType.startsWith(ToscaNodeType.NEUTRON_PORT)
353 || targetNodeType.startsWith(ToscaNodeType.CONTRAILV2_VIRTUAL_MACHINE_INTERFACE))) {
354 //Ignore Compute->Port, Compute->Compute, Compute->Volume relationship
355 Assert.assertFalse(nodesConnectedOut.containsKey(targetNodeTemplateId));
358 if(sourceNodeType.startsWith(ToscaNodeType.NEUTRON_PORT)
359 && (targetNodeType.startsWith(ToscaNodeType.NOVA_SERVER)
360 || targetNodeType.startsWith(ToscaNodeType.NEUTRON_PORT)
361 || targetNodeType.startsWith(ToscaNodeType.CONTRAILV2_VIRTUAL_MACHINE_INTERFACE))) {
362 //Ignore Port->Port, Port->Compute, Port->Volume relationship
363 Assert.assertFalse(nodesConnectedOut.containsKey(targetNodeTemplateId));
369 private static Map<String,Map<String,List<String>>> getPortsInConsolidationData(ServiceTemplate
371 Map<String,Map<String,List<String>>> portMap = new LinkedHashMap<>();
372 Map<String, NodeTemplate> nodeTempMap = output.getTopology_template().getNode_templates();
373 for(String nodeName : nodeTempMap.keySet()){
374 NodeTemplate node = nodeTempMap.get(nodeName);
375 if(ToscaNodeType.NEUTRON_PORT.equals(node.getType()) || ToscaNodeType
376 .CONTRAILV2_VIRTUAL_MACHINE_INTERFACE.equals(node.getType())){
377 List<Map<String, RequirementAssignment>> reqAssignList = node.getRequirements();
378 if(reqAssignList != null) {
379 for (Map<String, RequirementAssignment> reqAssignMap : reqAssignList) {
380 //RequirementAssignment req = reqAssignMap.get("binding");
381 RequirementAssignment req = new ObjectMapper().convertValue(reqAssignMap.get("binding"),
382 RequirementAssignment.class);
385 String portNode = req.getNode();
386 if (!portMap.containsKey(portNode)) {
387 portMap.put(portNode, new LinkedHashMap<>());
389 Map<String, List<String>> portTypMaps = portMap.get(portNode);
390 String id = ConsolidationDataUtil.getPortType(nodeName);
391 if (!portTypMaps.containsKey(id)) {
392 portTypMaps.put(id, new ArrayList<>());
394 List<String> portIds = portTypMaps.get(id);
395 portIds.add(nodeName);
404 public static void validateGroupsInConsolidationData(String computeNodeTemplateId,
405 ComputeTemplateConsolidationData
406 computeTemplateConsolidationData,
407 ServiceTemplate expectedServiceTemplate) {
408 Assert.assertNotNull(computeTemplateConsolidationData);
409 List<String> groupIds = computeTemplateConsolidationData.getGroupIds();
410 if (groupIds != null) {
411 for (String groupId : groupIds) {
412 isComputeGroupMember(expectedServiceTemplate, computeNodeTemplateId, groupId);
417 private static void isComputeGroupMember(ServiceTemplate expectedServiceTemplate, String
418 computeNodeTemplateId, String groupId) {
419 //Check if the collected group id is in the member list of the groups
420 GroupDefinition group = expectedServiceTemplate.getTopology_template().getGroups().get(groupId);
421 List<String> groupMembers = group.getMembers();
422 Assert.assertNotNull(groupMembers);
423 Assert.assertTrue(groupMembers.contains(computeNodeTemplateId));
426 public static void validateNestedConsolidationDataNodeTemplateIds(ConsolidationData consolidationData,
427 Map<String, ServiceTemplate>
428 expectedServiceTemplateModels ){
429 Map<String,List<String>> consolidatedMap = getSubstituteNodeTemplateIds(consolidationData);
430 Map<String,List<String>> expectedMap = getSubstituteMapping(expectedServiceTemplateModels);
431 for(String consolidatedKey : consolidatedMap.keySet()){
432 List<String> consolidatedList = consolidatedMap.get(consolidatedKey);
433 List<String> expectedList = expectedMap.get(consolidatedKey);
434 if(expectedList == null ){
436 } if(!CollectionUtils.isEqualCollection(consolidatedList,expectedList)){
442 private static Map<String,List<String>> getSubstituteNodeTemplateIds(ConsolidationData
444 Map<String,List<String>> nestedNodeTemplateIdMap = new HashMap<>();
445 NestedConsolidationData nestedConsolidationData =
446 consolidationData.getNestedConsolidationData();
447 Set<String> serviceTemplateFileNames =
448 nestedConsolidationData.getAllServiceTemplateFileNames();
449 for (String fileName : serviceTemplateFileNames) {
450 FileNestedConsolidationData fileNestedConsolidationData =
451 nestedConsolidationData.getFileNestedConsolidationData(fileName);
452 if (Objects.isNull(fileNestedConsolidationData)) {
455 Set<String> nestedNodeTemplateIds =
456 fileNestedConsolidationData.getAllNestedNodeTemplateIds();
457 if (nestedNodeTemplateIds != null) {
458 List<String> fileNestedNodeTemplateIds = new ArrayList<>();
459 fileNestedNodeTemplateIds.addAll(nestedNodeTemplateIds);
460 nestedNodeTemplateIdMap.put(fileName, fileNestedNodeTemplateIds);
463 return nestedNodeTemplateIdMap;
466 private static Map<String,List<String>> getSubstituteMapping(Map<String, ServiceTemplate>
467 expectedServiceTemplateModels ){
468 Map<String,List<String>> map = new LinkedHashMap<>();
469 for(String key : expectedServiceTemplateModels.keySet()){
470 ServiceTemplate serviceTemplate = expectedServiceTemplateModels.get(key);
471 if(serviceTemplate.getTopology_template() != null && serviceTemplate
472 .getTopology_template().getNode_templates() != null) {
473 for (String key1 : serviceTemplate.getTopology_template().getNode_templates().keySet()) {
474 NodeTemplate nodeTemplate = serviceTemplate.getTopology_template().getNode_templates()
476 if (nodeTemplate.getType().contains(ToscaNodeType.ABSTRACT_NODE_TYPE_PREFIX + "heat.")) {
478 List<String> subNodeTempIdList = map.get(key);
479 if (subNodeTempIdList == null) {
480 subNodeTempIdList = new ArrayList<>();
481 map.put(key, subNodeTempIdList);
483 subNodeTempIdList.add(key1);
491 public static void validateComputeConnectivityIn(ComputeTemplateConsolidationData
492 computeTemplateConsolidationData,
493 ServiceTemplate expectedServiceTemplate){
494 Map<String,List<RequirementAssignmentData>> nodesConnectedIn = computeTemplateConsolidationData.
495 getNodesConnectedIn();
496 if(nodesConnectedIn==null){
499 boolean found = false;
500 for(String nodeIdConnTo : nodesConnectedIn.keySet()){
501 List<RequirementAssignmentData> connectToList = nodesConnectedIn.get(nodeIdConnTo);
502 List<Map<String, RequirementAssignment>> requirementsList = expectedServiceTemplate
503 .getTopology_template().getNode_templates().get(nodeIdConnTo).getRequirements();
504 for(RequirementAssignmentData requirementAssignmentData : connectToList) {
505 for (Map<String, RequirementAssignment> requirementAssignmentMap : requirementsList) {
506 RequirementAssignment requirementAssignment =
507 new ObjectMapper().convertValue(requirementAssignmentMap.values().iterator().next(),
508 RequirementAssignment.class);
509 if (requirementAssignment.getNode().equals(requirementAssignmentData.getRequirementAssignment().getNode())) {
510 Assert.assertEquals(requirementAssignment.getCapability(),requirementAssignmentData.getRequirementAssignment().getCapability());
511 Assert.assertEquals(requirementAssignment.getNode(),requirementAssignmentData.getRequirementAssignment().getNode());
512 Assert.assertEquals(requirementAssignment.getRelationship(),requirementAssignmentData.getRequirementAssignment()
525 public static void validateComputeConnectivityOut(String computeNodeTemplateId,
526 ComputeTemplateConsolidationData
527 computeTemplateConsolidationData,
528 ServiceTemplate expectedServiceTemplate){
529 Map<String,List<RequirementAssignmentData>> nodesConnectedOut = computeTemplateConsolidationData.
530 getNodesConnectedOut();
531 if(nodesConnectedOut==null){
534 boolean found = false;
535 for(String nodeIdConnFrom : nodesConnectedOut.keySet()){
536 List<RequirementAssignmentData> connectToList = nodesConnectedOut.get(nodeIdConnFrom);
537 List<Map<String, RequirementAssignment>> requirementsList = expectedServiceTemplate
538 .getTopology_template().getNode_templates().get(computeNodeTemplateId).getRequirements();
539 for(RequirementAssignmentData requirementAssignmentData : connectToList) {
540 for (Map<String, RequirementAssignment> requirementAssignmentMap : requirementsList) {
541 RequirementAssignment requirementAssignment =
542 new ObjectMapper().convertValue(requirementAssignmentMap.values().iterator().next(),
543 RequirementAssignment.class);
544 if (requirementAssignment.getNode().equals(requirementAssignmentData.getRequirementAssignment().getNode())) {
545 Assert.assertEquals(requirementAssignment.getCapability(),requirementAssignmentData.getRequirementAssignment().getCapability());
546 Assert.assertEquals(requirementAssignment.getNode(),requirementAssignmentData.getRequirementAssignment().getNode());
547 Assert.assertEquals(requirementAssignment.getRelationship(),requirementAssignmentData.getRequirementAssignment()
560 public static void validatePortConnectivityIn(PortTemplateConsolidationData
561 portTemplateConsolidationData,
562 ServiceTemplate expectedServiceTemplate){
563 Map<String,List<RequirementAssignmentData>> nodesConnectedIn = portTemplateConsolidationData.
564 getNodesConnectedIn();
565 if(nodesConnectedIn==null){
568 boolean found = false;
569 for(String nodeIdConnTo : nodesConnectedIn.keySet()){
570 List<RequirementAssignmentData> connectToList = nodesConnectedIn.get(nodeIdConnTo);
571 List<Map<String, RequirementAssignment>> requirementsList = expectedServiceTemplate
572 .getTopology_template().getNode_templates().get(nodeIdConnTo).getRequirements();
573 for(RequirementAssignmentData requirementAssignmentData : connectToList) {
574 for (Map<String, RequirementAssignment> requirementAssignmentMap : requirementsList) {
575 RequirementAssignment requirementAssignment =
576 new ObjectMapper().convertValue(requirementAssignmentMap.values().iterator().next(),
577 RequirementAssignment.class);
578 if (requirementAssignment.getNode().equals(requirementAssignmentData.getRequirementAssignment().getNode())) {
579 Assert.assertEquals(requirementAssignment.getCapability(),requirementAssignmentData.getRequirementAssignment().getCapability());
580 Assert.assertEquals(requirementAssignment.getNode(),requirementAssignmentData.getRequirementAssignment().getNode());
581 Assert.assertEquals(requirementAssignment.getRelationship(),requirementAssignmentData.getRequirementAssignment()
594 public static void validatePortConnectivityOut(String portNodeTemplateId,
595 PortTemplateConsolidationData
596 portTemplateConsolidationData,
597 ServiceTemplate expectedServiceTemplate){
598 Map<String, List<RequirementAssignmentData>> nodesConnectedOut =
599 portTemplateConsolidationData.getNodesConnectedOut();
600 if(nodesConnectedOut==null){
603 boolean found = false;
604 for(String nodeIdConnFrom : nodesConnectedOut.keySet()){
605 List<RequirementAssignmentData> connectToList = nodesConnectedOut.get(nodeIdConnFrom);
606 List<Map<String, RequirementAssignment>> requirementsList = expectedServiceTemplate
607 .getTopology_template().getNode_templates().get(portNodeTemplateId).getRequirements();
608 for(RequirementAssignmentData requirementAssignmentData : connectToList) {
609 for (Map<String, RequirementAssignment> requirementAssignmentMap : requirementsList) {
610 RequirementAssignment requirementAssignment =
611 new ObjectMapper().convertValue(requirementAssignmentMap.values().iterator().next(),
612 RequirementAssignment.class);
613 if (requirementAssignment.getNode().equals(requirementAssignmentData.getRequirementAssignment().getNode())) {
614 Assert.assertEquals(requirementAssignment.getCapability(),requirementAssignmentData.getRequirementAssignment().getCapability());
615 Assert.assertEquals(requirementAssignment.getNode(),requirementAssignmentData.getRequirementAssignment().getNode());
616 Assert.assertEquals(requirementAssignment.getRelationship(),requirementAssignmentData.getRequirementAssignment()
629 public static void validateGetAttr(TranslationContext translationContext, Map<String,
631 expectedServiceTemplateModels,String testName){
632 ConsolidationData consolidationData = translationContext.getConsolidationData();
633 Assert.assertNotNull(consolidationData);
634 if(TestConstants.TEST_GET_ATTR_FOR_MORE_THAN_ONE_ATTR_IN_ATTR_LIST.equals(testName)){
635 PortTemplateConsolidationData portTemplateConsolidationData = consolidationData
636 .getPortConsolidationData().getFilePortConsolidationData("ep-jsa_netServiceTemplate.yaml")
637 .getPortTemplateConsolidationData("VMI1");
638 Assert.assertNotNull(portTemplateConsolidationData);
639 Assert.assertEquals(2, portTemplateConsolidationData.getNodesGetAttrIn().size());
640 List<GetAttrFuncData> attrFuncDataList = portTemplateConsolidationData.getNodesGetAttrIn()
642 Assert.assertEquals(1,attrFuncDataList.size());
643 Assert.assertEquals("name",attrFuncDataList.get(0).getFieldName());
644 Assert.assertEquals("name",attrFuncDataList.get(0).getAttributeName());
646 attrFuncDataList = portTemplateConsolidationData.getNodesGetAttrIn()
648 Assert.assertEquals(1,attrFuncDataList.size());
649 Assert.assertEquals("name",attrFuncDataList.get(0).getFieldName());
650 Assert.assertEquals("virtual_machine_interface_allowed_address_pairs",attrFuncDataList.get(0).getAttributeName());
652 ComputeTemplateConsolidationData computeTemplateConsolidationDataFSB2 = consolidationData
653 .getComputeConsolidationData()
654 .getFileComputeConsolidationData("ep-jsa_netServiceTemplate.yaml")
655 .getTypeComputeConsolidationData("org.openecomp.resource.vfc.nodes.heat.FSB2")
656 .getComputeTemplateConsolidationData("FSB2");
657 Assert.assertEquals(1,computeTemplateConsolidationDataFSB2.getNodesGetAttrOut().size());
658 List<GetAttrFuncData> attrFuncDataOutList = computeTemplateConsolidationDataFSB2
659 .getNodesGetAttrOut().get("VMI1");
660 Assert.assertEquals(1,attrFuncDataOutList.size());
661 Assert.assertEquals("name",attrFuncDataOutList.get(0).getFieldName());
662 Assert.assertEquals("virtual_machine_interface_allowed_address_pairs",attrFuncDataOutList
663 .get(0).getAttributeName());
664 ComputeTemplateConsolidationData computeTemplateConsolidationDataFSB1 = consolidationData
665 .getComputeConsolidationData()
666 .getFileComputeConsolidationData("ep-jsa_netServiceTemplate.yaml")
667 .getTypeComputeConsolidationData("org.openecomp.resource.vfc.nodes.heat.FSB1")
668 .getComputeTemplateConsolidationData("FSB1");
669 Assert.assertEquals(1,computeTemplateConsolidationDataFSB1.getNodesGetAttrOut().size());
670 List<GetAttrFuncData> attrFuncDataOutList2 = computeTemplateConsolidationDataFSB1
671 .getNodesGetAttrOut().get("VMI1");
672 Assert.assertEquals(1,attrFuncDataOutList2.size());
673 Assert.assertEquals("name",attrFuncDataOutList2.get(0).getFieldName());
674 Assert.assertEquals("name",attrFuncDataOutList2
675 .get(0).getAttributeName());
676 } else if(TestConstants.TEST_IGNORE_GET_ATTR_FROM_OUTPUT.equals(testName)){
677 if(!consolidationData.getPortConsolidationData().getAllServiceTemplateFileNames().isEmpty()){
678 Iterator<String> itr = consolidationData.getPortConsolidationData()
679 .getFilePortConsolidationData("MainServiceTemplate.yaml").getAllPortNodeTemplateIds()
681 while(itr.hasNext()){
682 String key = itr.next();
683 PortTemplateConsolidationData portTemplateConsolidationData = consolidationData
684 .getPortConsolidationData()
685 .getFilePortConsolidationData("MainServiceTemplate.yaml")
686 .getPortTemplateConsolidationData(key);
687 Assert.assertNull(portTemplateConsolidationData.getOutputParametersGetAttrIn());
690 } else if(TestConstants.TEST_GET_ATTR_FOR_NOT_SUPPORTED_ATTR_IN_ATTR_LIST.equals(testName)){
691 Assert.assertNull(consolidationData.getPortConsolidationData()
692 .getFilePortConsolidationData("MainServiceTemplate.yaml")
693 .getPortTemplateConsolidationData("FSB1_Internal2").getNodesGetAttrIn());
694 } else if(TestConstants.TEST_GET_ATTR_FOR_ONLY_RESOURCE_NAME.equals(testName)){
695 PortTemplateConsolidationData portTemplateConsolidationData = consolidationData
696 .getPortConsolidationData().getFilePortConsolidationData("MainServiceTemplate.yaml")
697 .getPortTemplateConsolidationData("VMI1");
698 Assert.assertNotNull(portTemplateConsolidationData);
699 Assert.assertEquals("name",portTemplateConsolidationData.getNodesGetAttrIn().get("FSB1").
700 get(0).getFieldName());
701 Assert.assertEquals("tenant_id",portTemplateConsolidationData.getNodesGetAttrIn().get("FSB1").
702 get(0).getAttributeName());
703 } else if(TestConstants.TEST_GET_ATTR_FOR_NONE_TO_PORT_OR_COMPUTE.equals(testName)){
704 ComputeTemplateConsolidationData computeTemplateConsolidationData = consolidationData
705 .getComputeConsolidationData()
706 .getFileComputeConsolidationData("MainServiceTemplate.yaml")
707 .getTypeComputeConsolidationData("org.openecomp.resource.vfc.nodes.heat.compute")
708 .getComputeTemplateConsolidationData("server_compute_get_attr_test");
709 Assert.assertEquals("user_data_format",computeTemplateConsolidationData
710 .getNodesGetAttrOut().get("server_pcm_001").get(0).getFieldName());
711 Assert.assertEquals("oam_net_gw",computeTemplateConsolidationData
712 .getNodesGetAttrOut().get("server_pcm_001").get(0).getAttributeName());
713 } else if(TestConstants.TEST_OUTPUT_GET_ATTR.equals(testName)){
714 ComputeTemplateConsolidationData computeTemplateConsolidationData1 = consolidationData
715 .getComputeConsolidationData()
716 .getFileComputeConsolidationData("firstnet_fgi_frwlServiceTemplate.yaml")
717 .getTypeComputeConsolidationData("org.openecomp.resource.vfc.nodes.heat.cgi_fw")
718 .getComputeTemplateConsolidationData("CGI_FW_SERVER_1");
719 Assert.assertEquals("cgi_fw_01_left_mac_1",computeTemplateConsolidationData1
720 .getOutputParametersGetAttrIn()
721 .get(0).getFieldName());
722 Assert.assertEquals("addresses",computeTemplateConsolidationData1.getOutputParametersGetAttrIn()
723 .get(0).getAttributeName());
724 ComputeTemplateConsolidationData computeTemplateConsolidationData2 = consolidationData
725 .getComputeConsolidationData()
726 .getFileComputeConsolidationData("firstnet_fgi_frwlServiceTemplate.yaml")
727 .getTypeComputeConsolidationData("org.openecomp.resource.vfc.nodes.heat.cgi_fw")
728 .getComputeTemplateConsolidationData("CGI_FW_SERVER_2");
729 Assert.assertEquals(1,computeTemplateConsolidationData2
730 .getNodesGetAttrIn().get("CGI_FW_SERVER_2").size());
731 Assert.assertEquals("availability_zone",computeTemplateConsolidationData2
732 .getNodesGetAttrIn().get("CGI_FW_SERVER_2").get(0).getFieldName());
733 Assert.assertEquals("addresses",computeTemplateConsolidationData2
734 .getNodesGetAttrIn().get("CGI_FW_SERVER_2").get(0).getAttributeName());
735 Assert.assertEquals(1,computeTemplateConsolidationData2
736 .getNodesGetAttrOut().get("CGI_FW_SERVER_2").size());
737 Assert.assertEquals("availability_zone",computeTemplateConsolidationData2
738 .getNodesGetAttrOut().get("CGI_FW_SERVER_2").get(0).getFieldName());
739 Assert.assertEquals("addresses",computeTemplateConsolidationData2
740 .getNodesGetAttrOut().get("CGI_FW_SERVER_2").get(0).getAttributeName());
741 Assert.assertEquals("cgi_fw_01_left_mac_2",computeTemplateConsolidationData2
742 .getOutputParametersGetAttrIn().get(0).getFieldName());
743 Assert.assertEquals("addresses",computeTemplateConsolidationData2
744 .getOutputParametersGetAttrIn().get(0).getAttributeName());
745 Assert.assertEquals("cgi_fw_01_left_mac_3",computeTemplateConsolidationData2
746 .getOutputParametersGetAttrIn().get(1).getFieldName());
747 Assert.assertEquals("addresses",computeTemplateConsolidationData2
748 .getOutputParametersGetAttrIn().get(1).getAttributeName());
749 Assert.assertEquals("cgi_fw_01_left_mac_4",computeTemplateConsolidationData2
750 .getOutputParametersGetAttrIn().get(2).getFieldName());
751 Assert.assertEquals("addresses",computeTemplateConsolidationData2
752 .getOutputParametersGetAttrIn().get(2).getAttributeName());
753 Assert.assertEquals("cgi_fw_01_left_mac_5",computeTemplateConsolidationData2
754 .getOutputParametersGetAttrIn().get(3).getFieldName());
755 Assert.assertEquals("addresses",computeTemplateConsolidationData2
756 .getOutputParametersGetAttrIn().get(3).getAttributeName());
757 Assert.assertEquals("cgi_fw_01_left_mac_5",computeTemplateConsolidationData2
758 .getOutputParametersGetAttrIn().get(4).getFieldName());
759 Assert.assertEquals("addresses",computeTemplateConsolidationData2
760 .getOutputParametersGetAttrIn().get(4).getAttributeName());
761 Assert.assertEquals("cgi_fw_01_left_mac_6",computeTemplateConsolidationData2
762 .getOutputParametersGetAttrIn().get(5).getFieldName());
763 Assert.assertEquals("addresses",computeTemplateConsolidationData2
764 .getOutputParametersGetAttrIn().get(5).getAttributeName());
765 Assert.assertEquals("cgi_fw_01_left_mac_9",computeTemplateConsolidationData2
766 .getOutputParametersGetAttrIn().get(6).getFieldName());
767 Assert.assertEquals("addresses",computeTemplateConsolidationData2
768 .getOutputParametersGetAttrIn().get(6).getAttributeName());
769 Assert.assertEquals("cgi_fw_01_left_mac_10",computeTemplateConsolidationData2
770 .getOutputParametersGetAttrIn().get(7).getFieldName());
771 Assert.assertEquals("addresses",computeTemplateConsolidationData2
772 .getOutputParametersGetAttrIn().get(7).getAttributeName());
773 PortTemplateConsolidationData portTemplateConsolidationData = consolidationData
774 .getPortConsolidationData().getFilePortConsolidationData("firstnet_fgi_frwlServiceTemplate.yaml")
775 .getPortTemplateConsolidationData("contrail_vmi_subinterface");
776 Assert.assertEquals("cgi_fw_01_left_mac_7",portTemplateConsolidationData
777 .getOutputParametersGetAttrIn().get(0).getFieldName());
778 Assert.assertEquals("virtual_machine_interface_properties",portTemplateConsolidationData
779 .getOutputParametersGetAttrIn().get(0).getAttributeName());
780 Assert.assertEquals("cgi_fw_01_left_mac_8",portTemplateConsolidationData
781 .getOutputParametersGetAttrIn().get(1).getFieldName());
782 Assert.assertEquals("virtual_machine_interface_allowed_address_pairs",
783 portTemplateConsolidationData.getOutputParametersGetAttrIn()
784 .get(1).getAttributeName());
785 Assert.assertEquals("cgi_fw_01_left_mac_10",portTemplateConsolidationData
786 .getOutputParametersGetAttrIn().get(2).getFieldName());
787 Assert.assertEquals("virtual_machine_interface_allowed_address_pairs",
788 portTemplateConsolidationData.getOutputParametersGetAttrIn()
789 .get(2).getAttributeName());
793 public static void validateNestedConsolidationData(TranslationContext context,
795 ConsolidationData consolidationData = context.getConsolidationData();
796 if (testName.equals(TEST_SINGLE_NESTED_RESOURCE)) {
797 String nestedNodeTemplateId = "server_pcm_001";
798 NestedTemplateConsolidationData nestedTemplateConsolidationData =
799 consolidationData.getNestedConsolidationData()
800 .getFileNestedConsolidationData(MAIN_SERVICE_TEMPLATE)
801 .getNestedTemplateConsolidationData(nestedNodeTemplateId);
802 //Validate basic null attributes
803 validateBasicNestedConsolidationData(nestedTemplateConsolidationData);
804 //Validate nodeTemplateId
805 Assert.assertEquals(nestedTemplateConsolidationData.getNodeTemplateId(), nestedNodeTemplateId);
806 //Validate nodes connected in (will only be populated for dependsOn relationships)
807 Map<String, List<RequirementAssignmentData>> nodesConnectedIn =
808 nestedTemplateConsolidationData.getNodesConnectedIn();
809 List<String> dependentNodes = new LinkedList<>();
810 dependentNodes.add("packet_mirror_network");
811 validateNestedNodesConnectedInDependency(nodesConnectedIn, nestedNodeTemplateId, dependentNodes);
813 //Validate get attribute in
814 Map<String, List<GetAttrFuncData>> nodesGetAttrIn =
815 nestedTemplateConsolidationData.getNodesGetAttrIn();
816 String getAttrNodeTemplateId = "server_compute_get_attr_test";
817 List<GetAttrFuncData> getAttrFuncData = nodesGetAttrIn.get(getAttrNodeTemplateId);
818 Assert.assertNotNull(getAttrFuncData);
819 Assert.assertEquals(getAttrFuncData.size(), 2);
820 Assert.assertEquals(getAttrFuncData.get(0).getFieldName(), "metadata");
821 Assert.assertEquals(getAttrFuncData.get(0).getAttributeName(), "server_pcm_id");
822 Assert.assertEquals(getAttrFuncData.get(1).getFieldName(), "user_data_format");
823 Assert.assertEquals(getAttrFuncData.get(1).getAttributeName(), "oam_net_gw");
825 //Validate output parameter get attribute in
826 List<GetAttrFuncData> outputParametersGetAttrIn =
827 nestedTemplateConsolidationData.getOutputParametersGetAttrIn();
828 Assert.assertNotNull(outputParametersGetAttrIn);
829 Assert.assertEquals(outputParametersGetAttrIn.size(), 1);
830 Assert.assertEquals(outputParametersGetAttrIn.get(0).getFieldName(), "output_attr_1");
831 Assert.assertEquals(outputParametersGetAttrIn.get(0).getAttributeName(), "pcm_vol");
833 } else if (testName.equals(TEST_MULTIPLE_NESTED_RESOURCE)) {
834 List<String> nestedNodeTemplateIds = new ArrayList<>();
835 nestedNodeTemplateIds.add("server_pcm_001");
836 nestedNodeTemplateIds.add("server_pcm_002");
837 nestedNodeTemplateIds.add("server_pcm_003");
839 for (String nestedNodeTemplateId : nestedNodeTemplateIds) {
840 NestedTemplateConsolidationData nestedTemplateConsolidationData =
841 consolidationData.getNestedConsolidationData()
842 .getFileNestedConsolidationData(MAIN_SERVICE_TEMPLATE)
843 .getNestedTemplateConsolidationData(nestedNodeTemplateId);
844 //Validate basic null attributes
845 validateBasicNestedConsolidationData(nestedTemplateConsolidationData);
846 //Validate nodeTemplateId
847 Assert.assertEquals(nestedTemplateConsolidationData.getNodeTemplateId(),
848 nestedNodeTemplateId);
849 if (nestedNodeTemplateId.equals("server_pcm_001")) {
850 //Validate nodes connected in (will only be populated for dependsOn relationships)
851 Map<String, List<RequirementAssignmentData>> nodesConnectedIn =
852 nestedTemplateConsolidationData.getNodesConnectedIn();
853 List<String> dependentNodes = new LinkedList<>();
854 dependentNodes.add("packet_mirror_network");
855 validateNestedNodesConnectedInDependency(nodesConnectedIn, nestedNodeTemplateId, dependentNodes);
857 Assert.assertNull(nestedTemplateConsolidationData.getNodesConnectedIn());
860 String nestedNodeTemplateId = "server_pcm_001";
862 //Validate get attribute in
863 NestedTemplateConsolidationData nestedTemplateConsolidationData =
864 consolidationData.getNestedConsolidationData()
865 .getFileNestedConsolidationData(MAIN_SERVICE_TEMPLATE)
866 .getNestedTemplateConsolidationData("server_pcm_002");
867 Map<String, List<GetAttrFuncData>> nodesGetAttrIn =
868 nestedTemplateConsolidationData.getNodesGetAttrIn();
869 String getAttrNodeTemplateId = "server_pcm_001";
870 List<GetAttrFuncData> getAttrFuncData = nodesGetAttrIn.get(getAttrNodeTemplateId);
871 Assert.assertNotNull(getAttrFuncData);
872 Assert.assertEquals(getAttrFuncData.size(), 1);
873 Assert.assertEquals(getAttrFuncData.get(0).getFieldName(), "user_data_format");
874 Assert.assertEquals(getAttrFuncData.get(0).getAttributeName(), "pcm_vol");
875 //Validate output parameter get attribute in
876 List<GetAttrFuncData> outputParametersGetAttrIn =
877 nestedTemplateConsolidationData.getOutputParametersGetAttrIn();
878 Assert.assertNotNull(outputParametersGetAttrIn);
879 Assert.assertEquals(outputParametersGetAttrIn.size(), 1);
880 Assert.assertEquals(outputParametersGetAttrIn.get(0).getFieldName(), "output_attr_2");
881 Assert.assertEquals(outputParametersGetAttrIn.get(0).getAttributeName(), "oam_net_ip");
884 nestedTemplateConsolidationData = consolidationData.getNestedConsolidationData()
885 .getFileNestedConsolidationData(MAIN_SERVICE_TEMPLATE)
886 .getNestedTemplateConsolidationData("server_pcm_001");
887 nodesGetAttrIn = nestedTemplateConsolidationData.getNodesGetAttrIn();
888 getAttrNodeTemplateId = "server_pcm_002";
889 getAttrFuncData = nodesGetAttrIn.get(getAttrNodeTemplateId);
890 Assert.assertNotNull(getAttrFuncData);
891 Assert.assertEquals(getAttrFuncData.size(), 1);
892 Assert.assertEquals(getAttrFuncData.get(0).getFieldName(), "metadata");
893 Assert.assertEquals(getAttrFuncData.get(0).getAttributeName(), "server_pcm_id");
894 //Validate output parameter get attribute in
895 outputParametersGetAttrIn = nestedTemplateConsolidationData.getOutputParametersGetAttrIn();
896 Assert.assertNotNull(outputParametersGetAttrIn);
897 Assert.assertEquals(outputParametersGetAttrIn.size(), 1);
898 Assert.assertEquals(outputParametersGetAttrIn.get(0).getFieldName(), "output_attr_1");
899 Assert.assertEquals(outputParametersGetAttrIn.get(0).getAttributeName(), "pcm_vol");
901 nestedTemplateConsolidationData = consolidationData.getNestedConsolidationData()
902 .getFileNestedConsolidationData(MAIN_SERVICE_TEMPLATE)
903 .getNestedTemplateConsolidationData("server_pcm_003");
904 Assert.assertNull(nestedTemplateConsolidationData.getNodesGetAttrIn());
905 Assert.assertNull(nestedTemplateConsolidationData.getOutputParametersGetAttrIn());
907 } else if (testName.equals(TEST_MULTIPLE_MULTI_LEVEL_NESTED_RESOURCE)) {
908 String nestedNodeTemplateId = "test_nested";
909 NestedTemplateConsolidationData nestedTemplateConsolidationData =
910 consolidationData.getNestedConsolidationData()
911 .getFileNestedConsolidationData(MAIN_SERVICE_TEMPLATE)
912 .getNestedTemplateConsolidationData(nestedNodeTemplateId);
913 //Validate basic null attributes
914 validateBasicNestedConsolidationData(nestedTemplateConsolidationData);
915 //Validate nodeTemplateId
916 Assert.assertEquals(nestedTemplateConsolidationData.getNodeTemplateId(),
917 nestedNodeTemplateId);
918 //Validate nodes connected in (will only be populated for dependsOn relationships)
919 Map<String, List<RequirementAssignmentData>> nodesConnectedIn =
920 nestedTemplateConsolidationData.getNodesConnectedIn();
921 List<String> dependentNodes = new LinkedList<>();
922 dependentNodes.add("packet_mirror_network");
923 validateNestedNodesConnectedInDependency(nodesConnectedIn, nestedNodeTemplateId, dependentNodes);
924 //Validate output parameter get attribute in
925 List<GetAttrFuncData> getAttrFuncData =
926 nestedTemplateConsolidationData.getNodesGetAttrIn().get("packet_mirror_network");
927 Assert.assertNotNull(getAttrFuncData);
928 Assert.assertEquals(getAttrFuncData.size(), 1);
929 Assert.assertEquals(getAttrFuncData.get(0).getFieldName(), "shared");
930 Assert.assertEquals(getAttrFuncData.get(0).getAttributeName(), "output_attr_1");
931 Assert.assertNull(nestedTemplateConsolidationData.getOutputParametersGetAttrIn());
933 nestedNodeTemplateId = "test_nested2";
934 nestedTemplateConsolidationData = consolidationData.getNestedConsolidationData()
935 .getFileNestedConsolidationData("nestedServiceTemplate.yaml")
936 .getNestedTemplateConsolidationData(nestedNodeTemplateId);
937 //Validate basic null attributes
938 validateBasicNestedConsolidationData(nestedTemplateConsolidationData);
939 //Validate nodeTemplateId
940 Assert.assertEquals(nestedTemplateConsolidationData.getNodeTemplateId(),
941 nestedNodeTemplateId);
942 Assert.assertNull(nestedTemplateConsolidationData.getNodesConnectedIn());
943 //Validate output parameter get attribute in
944 getAttrFuncData = nestedTemplateConsolidationData.getNodesGetAttrIn().get("server_cmaui_1");
945 Assert.assertNotNull(getAttrFuncData);
946 Assert.assertEquals(getAttrFuncData.size(), 1);
947 Assert.assertEquals(getAttrFuncData.get(0).getFieldName(), "metadata");
948 Assert.assertEquals(getAttrFuncData.get(0).getAttributeName(), "availability_zone_0");
950 List<GetAttrFuncData> outputParametersGetAttrIn1 =
951 nestedTemplateConsolidationData.getOutputParametersGetAttrIn();
952 Assert.assertNotNull(outputParametersGetAttrIn1);
953 Assert.assertEquals(outputParametersGetAttrIn1.size(), 1);
954 Assert.assertEquals(outputParametersGetAttrIn1.get(0).getFieldName(), "output_attr_1");
955 Assert.assertEquals(outputParametersGetAttrIn1.get(0).getAttributeName(), "availability_zone_0");
959 private static void validateBasicNestedConsolidationData(NestedTemplateConsolidationData
960 nestedTemplateConsolidationData) {
961 Assert.assertNull(nestedTemplateConsolidationData.getGroupIds());
962 Assert.assertNull(nestedTemplateConsolidationData.getNodesConnectedOut());
963 //Assert.assertNull(nestedTemplateConsolidationData.getNodesGetAttrOut());
966 private static void validateNestedNodesConnectedInDependency(Map<String,
967 List<RequirementAssignmentData>> nodesConnectedIn,
968 String nestedNodeTemplateId,
969 List<String> dependentNodeTemplateIds) {
970 Assert.assertNotNull(nodesConnectedIn);
971 for (String dependentNodeTemplateId : dependentNodeTemplateIds) {
972 List<RequirementAssignmentData> requirementAssignmentData =
973 nodesConnectedIn.get(dependentNodeTemplateId);
974 Assert.assertNotNull(requirementAssignmentData);
975 for (RequirementAssignmentData data : requirementAssignmentData) {
976 Assert.assertEquals(data.getRequirementId(), ToscaConstants.DEPENDS_ON_REQUIREMENT_ID);
977 Assert.assertEquals(data.getRequirementAssignment().getCapability(), ToscaCapabilityType
979 Assert.assertEquals(data.getRequirementAssignment().getNode(), nestedNodeTemplateId);
980 Assert.assertEquals(data.getRequirementAssignment().getRelationship(),
981 ToscaRelationshipType.NATIVE_DEPENDS_ON);
986 public static void validateNestedNodesConnectedInSecurityRuleToPort(String testName,
987 TranslationContext context) {
988 ConsolidationData consolidationData = context.getConsolidationData();
989 if (testName.equals(TEST_SECURITY_RULE_PORT_NESTED_CONNECTION) ||
990 testName.equals(TestConstants.TEST_SECURITY_RULE_PORT_NESTED_SHARED_PORT)) {
991 String nestedNodeTemplateId = "test_nested";
992 NestedTemplateConsolidationData nestedTemplateConsolidationData =
993 consolidationData.getNestedConsolidationData()
994 .getFileNestedConsolidationData(MAIN_SERVICE_TEMPLATE)
995 .getNestedTemplateConsolidationData(nestedNodeTemplateId);
996 //Validate basic null attributes
997 validateBasicNestedConsolidationData(nestedTemplateConsolidationData);
998 //Validate nodeTemplateId
1000 .assertEquals(nestedTemplateConsolidationData.getNodeTemplateId(), nestedNodeTemplateId);
1001 String securityRuleNodeTemplateId = "jsa_security_group1";
1002 validateNestedNodesConnectedInSecurityRuleToPort(HeatToToscaUtil
1003 .getServiceTemplateFromContext(MAIN_SERVICE_TEMPLATE, context).get(),
1004 nestedNodeTemplateId, securityRuleNodeTemplateId,
1005 nestedTemplateConsolidationData);
1006 securityRuleNodeTemplateId = "jsa_security_group2";
1007 validateNestedNodesConnectedInSecurityRuleToPort(HeatToToscaUtil
1008 .getServiceTemplateFromContext(MAIN_SERVICE_TEMPLATE, context).get(),
1009 nestedNodeTemplateId, securityRuleNodeTemplateId,
1010 nestedTemplateConsolidationData);
1011 if (testName.equals(TestConstants.TEST_SECURITY_RULE_PORT_NESTED_SHARED_PORT)) {
1012 nestedNodeTemplateId = "test_nestedArrayParam";
1013 Assert.assertEquals(nestedNodeTemplateId, consolidationData.getNestedConsolidationData()
1014 .getFileNestedConsolidationData(MAIN_SERVICE_TEMPLATE)
1015 .getNestedTemplateConsolidationData(nestedNodeTemplateId).getNodeTemplateId());
1016 Assert.assertNull(consolidationData.getNestedConsolidationData()
1017 .getFileNestedConsolidationData(MAIN_SERVICE_TEMPLATE)
1018 .getNestedTemplateConsolidationData(nestedNodeTemplateId).getNodesConnectedIn());
1020 } else if (testName.equals(TEST_SECURITY_RULE_PORT_MULTI_LEVEL_NESTED_CONNECTION) ||
1021 testName.equals(TEST_SECURITY_RULE_PORT_MULTI_LEVEL_NESTED_SHARED_PORT)) {
1022 String nestedNodeTemplateId = "test_nested2Level";
1023 Assert.assertEquals(nestedNodeTemplateId, consolidationData.getNestedConsolidationData()
1024 .getFileNestedConsolidationData("nested1ServiceTemplate.yaml")
1025 .getNestedTemplateConsolidationData(nestedNodeTemplateId).getNodeTemplateId());
1026 Assert.assertNull(consolidationData.getNestedConsolidationData()
1027 .getFileNestedConsolidationData("nested1ServiceTemplate.yaml")
1028 .getNestedTemplateConsolidationData(nestedNodeTemplateId).getNodesConnectedIn());
1029 nestedNodeTemplateId = "test_nested3Level";
1030 Assert.assertEquals(nestedNodeTemplateId, consolidationData.getNestedConsolidationData()
1031 .getFileNestedConsolidationData("nested2ServiceTemplate.yaml")
1032 .getNestedTemplateConsolidationData(nestedNodeTemplateId).getNodeTemplateId());
1033 Assert.assertNull(consolidationData.getNestedConsolidationData()
1034 .getFileNestedConsolidationData("nested2ServiceTemplate.yaml")
1035 .getNestedTemplateConsolidationData(nestedNodeTemplateId).getNodesConnectedIn());
1036 nestedNodeTemplateId = "test_nested4Level";
1037 Assert.assertEquals(nestedNodeTemplateId, consolidationData.getNestedConsolidationData()
1038 .getFileNestedConsolidationData("nested3ServiceTemplate.yaml")
1039 .getNestedTemplateConsolidationData(nestedNodeTemplateId).getNodeTemplateId());
1040 Assert.assertNull(consolidationData.getNestedConsolidationData()
1041 .getFileNestedConsolidationData("nested3ServiceTemplate.yaml")
1042 .getNestedTemplateConsolidationData(nestedNodeTemplateId).getNodesConnectedIn());
1044 //Validate main service template
1046 nestedNodeTemplateId = "test_nested1Level";
1047 NestedTemplateConsolidationData nestedTemplateConsolidationData =
1048 consolidationData.getNestedConsolidationData()
1049 .getFileNestedConsolidationData(MAIN_SERVICE_TEMPLATE)
1050 .getNestedTemplateConsolidationData(nestedNodeTemplateId);
1051 //Validate basic null attributes
1052 validateBasicNestedConsolidationData(nestedTemplateConsolidationData);
1053 //Validate nodeTemplateId
1055 .assertEquals(nestedTemplateConsolidationData.getNodeTemplateId(), nestedNodeTemplateId);
1056 String securityRuleNodeTemplateId = "jsa_security_group1";
1057 validateNestedNodesConnectedInSecurityRuleToPort(HeatToToscaUtil
1058 .getServiceTemplateFromContext(MAIN_SERVICE_TEMPLATE, context).get(),
1059 nestedNodeTemplateId, securityRuleNodeTemplateId,
1060 nestedTemplateConsolidationData);
1061 securityRuleNodeTemplateId = "jsa_security_group2";
1062 validateNestedNodesConnectedInSecurityRuleToPort(HeatToToscaUtil
1063 .getServiceTemplateFromContext(MAIN_SERVICE_TEMPLATE, context).get(),
1064 nestedNodeTemplateId, securityRuleNodeTemplateId,
1065 nestedTemplateConsolidationData);
1067 nestedNodeTemplateId = "test_resourceGroup";
1068 nestedTemplateConsolidationData = consolidationData.getNestedConsolidationData()
1069 .getFileNestedConsolidationData(MAIN_SERVICE_TEMPLATE)
1070 .getNestedTemplateConsolidationData(nestedNodeTemplateId);
1071 //Validate basic null attributes
1072 validateBasicNestedConsolidationData(nestedTemplateConsolidationData);
1073 //Validate nodeTemplateId
1075 .assertEquals(nestedTemplateConsolidationData.getNodeTemplateId(), nestedNodeTemplateId);
1076 securityRuleNodeTemplateId = "jsa_security_group2";
1077 validateNestedNodesConnectedInSecurityRuleToPort(HeatToToscaUtil
1078 .getServiceTemplateFromContext(MAIN_SERVICE_TEMPLATE, context).get(),
1079 nestedNodeTemplateId, securityRuleNodeTemplateId,
1080 nestedTemplateConsolidationData);
1081 securityRuleNodeTemplateId = "jsa_security_group2";
1082 validateNestedNodesConnectedInSecurityRuleToPort(HeatToToscaUtil
1083 .getServiceTemplateFromContext(MAIN_SERVICE_TEMPLATE, context).get(),
1084 nestedNodeTemplateId, securityRuleNodeTemplateId,
1085 nestedTemplateConsolidationData);
1087 nestedNodeTemplateId = "test_nestedInvalidConnectionToNova";
1088 Assert.assertEquals(nestedNodeTemplateId, consolidationData.getNestedConsolidationData()
1089 .getFileNestedConsolidationData(MAIN_SERVICE_TEMPLATE)
1090 .getNestedTemplateConsolidationData(nestedNodeTemplateId).getNodeTemplateId());
1091 Assert.assertNull(consolidationData.getNestedConsolidationData()
1092 .getFileNestedConsolidationData(MAIN_SERVICE_TEMPLATE)
1093 .getNestedTemplateConsolidationData(nestedNodeTemplateId).getNodesConnectedIn());
1097 private static void validateNestedNodesConnectedInSecurityRuleToPort(ServiceTemplate
1099 String nestedNodeTemplateId,
1101 securityRuleNodeTemplateId,
1102 NestedTemplateConsolidationData nestedTemplateConsolidationData) {
1103 Map<String, List<RequirementAssignmentData>> consolidationDataNodesConnectedIn =
1104 nestedTemplateConsolidationData.getNodesConnectedIn();
1105 Assert.assertNotNull(consolidationDataNodesConnectedIn);
1106 NodeTemplate securityRuleNodeTemplate = DataModelUtil.getNodeTemplate(serviceTemplate,
1107 securityRuleNodeTemplateId);
1108 List<Map<String, RequirementAssignment>> securityRuleNodeTemplateRequirements =
1109 securityRuleNodeTemplate.getRequirements();
1110 for (Map<String, RequirementAssignment> req : securityRuleNodeTemplateRequirements) {
1111 String requirementId = req.keySet().toArray()[0].toString();
1112 if (requirementId.equals(ToscaConstants.PORT_REQUIREMENT_ID)) {
1113 RequirementAssignment requirementAssignment = req.get(requirementId);
1114 if (requirementAssignment.getNode().equals(nestedNodeTemplateId)) {
1115 validateSecurityRulePortNestedConsolidationData(requirementAssignment,
1116 securityRuleNodeTemplateId, consolidationDataNodesConnectedIn);
1122 private static void validateSecurityRulePortNestedConsolidationData(RequirementAssignment
1123 requirementAssignment,
1124 String securityRuleNodeTemplateId,
1126 List<RequirementAssignmentData>> consolidationDataNodesConnectedIn) {
1127 List<RequirementAssignmentData> requirementAssignmentDataList =
1128 consolidationDataNodesConnectedIn.get(securityRuleNodeTemplateId);
1129 Assert.assertNotNull(requirementAssignmentDataList);
1130 boolean result = false;
1131 for (RequirementAssignmentData data : requirementAssignmentDataList) {
1132 RequirementAssignment dataRequirementAssignment = data.getRequirementAssignment();
1133 result = DataModelUtil
1134 .compareRequirementAssignment(requirementAssignment, dataRequirementAssignment);
1139 Assert.assertTrue(result);