1 package org.openecomp.sdc.translator.services.heattotosca;
3 import org.apache.commons.collections4.MapUtils;
4 import org.apache.commons.lang3.math.NumberUtils;
5 import org.openecomp.sdc.common.errors.CoreException;
6 import org.openecomp.sdc.common.errors.ErrorCode;
7 import org.openecomp.sdc.datatypes.configuration.ImplementationConfiguration;
8 import org.openecomp.sdc.heat.datatypes.model.HeatOrchestrationTemplate;
9 import org.openecomp.sdc.heat.datatypes.model.HeatResourcesTypes;
10 import org.openecomp.sdc.heat.datatypes.model.Resource;
11 import org.openecomp.sdc.logging.api.Logger;
12 import org.openecomp.sdc.logging.api.LoggerFactory;
13 import org.openecomp.sdc.tosca.datatypes.model.NodeTemplate;
14 import org.openecomp.sdc.tosca.datatypes.model.RequirementAssignment;
15 import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate;
16 import org.openecomp.sdc.tosca.services.DataModelUtil;
17 import org.openecomp.sdc.tosca.services.ToscaUtil;
18 import org.openecomp.sdc.translator.datatypes.heattotosca.TranslationContext;
19 import org.openecomp.sdc.translator.datatypes.heattotosca.to.TranslateTo;
20 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.ComputeConsolidationData;
21 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.ComputeTemplateConsolidationData;
22 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.ConsolidationData;
23 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.EntityConsolidationData;
24 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.FileComputeConsolidationData;
25 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.FileNestedConsolidationData;
26 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.FilePortConsolidationData;
27 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.GetAttrFuncData;
28 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.NestedConsolidationData;
29 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.NestedTemplateConsolidationData;
30 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.PortConsolidationData;
31 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.PortTemplateConsolidationData;
32 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.RequirementAssignmentData;
33 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.TypeComputeConsolidationData;
35 import java.util.ArrayList;
36 import java.util.Collection;
37 import java.util.HashMap;
38 import java.util.Iterator;
39 import java.util.List;
41 import java.util.Objects;
45 * Utility class for consolidation data collection helper methods.
47 public class ConsolidationDataUtil {
49 protected static Logger logger = (Logger) LoggerFactory.getLogger(ConsolidationDataUtil.class);
52 * Gets compute template consolidation data.
54 * @param context the translation context
55 * @param serviceTemplate the service template
56 * @param computeNodeType the compute node type
57 * @param computeNodeTemplateId the compute node template id
58 * @return the compute template consolidation data
60 public static ComputeTemplateConsolidationData getComputeTemplateConsolidationData(
61 TranslationContext context,
62 ServiceTemplate serviceTemplate,
63 String computeNodeType,
64 String computeNodeTemplateId) {
66 ConsolidationData consolidationData = context.getConsolidationData();
67 String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate);
69 ComputeConsolidationData computeConsolidationData = consolidationData
70 .getComputeConsolidationData();
72 FileComputeConsolidationData fileComputeConsolidationData = computeConsolidationData
73 .getFileComputeConsolidationData(serviceTemplateFileName);
75 if (fileComputeConsolidationData == null) {
76 fileComputeConsolidationData = new FileComputeConsolidationData();
77 computeConsolidationData.setFileComputeConsolidationData(serviceTemplateFileName,
78 fileComputeConsolidationData);
81 TypeComputeConsolidationData typeComputeConsolidationData = fileComputeConsolidationData
82 .getTypeComputeConsolidationData(computeNodeType);
83 if (typeComputeConsolidationData == null) {
84 typeComputeConsolidationData = new TypeComputeConsolidationData();
85 fileComputeConsolidationData.setTypeComputeConsolidationData(computeNodeType,
86 typeComputeConsolidationData);
89 ComputeTemplateConsolidationData computeTemplateConsolidationData =
90 typeComputeConsolidationData.getComputeTemplateConsolidationData(computeNodeTemplateId);
91 if (computeTemplateConsolidationData == null) {
92 computeTemplateConsolidationData = new ComputeTemplateConsolidationData();
93 computeTemplateConsolidationData.setNodeTemplateId(computeNodeTemplateId);
94 typeComputeConsolidationData.setComputeTemplateConsolidationData(computeNodeTemplateId,
95 computeTemplateConsolidationData);
98 return computeTemplateConsolidationData;
103 * Gets port template consolidation data.
105 * @param context the context
106 * @param serviceTemplate the service template
107 * @param portNodeTemplateId the port node template id
108 * @return the port template consolidation data
110 public static PortTemplateConsolidationData getPortTemplateConsolidationData(
111 TranslationContext context,
112 ServiceTemplate serviceTemplate,
113 String portNodeTemplateId) {
115 ConsolidationData consolidationData = context.getConsolidationData();
116 String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate);
118 PortConsolidationData portConsolidationData = consolidationData.getPortConsolidationData();
120 FilePortConsolidationData filePortConsolidationData = portConsolidationData
121 .getFilePortConsolidationData(serviceTemplateFileName);
123 if (filePortConsolidationData == null) {
124 filePortConsolidationData = new FilePortConsolidationData();
125 portConsolidationData.setFilePortConsolidationData(serviceTemplateFileName,
126 filePortConsolidationData);
129 PortTemplateConsolidationData portTemplateConsolidationData =
130 filePortConsolidationData.getPortTemplateConsolidationData(portNodeTemplateId);
131 if (portTemplateConsolidationData == null) {
132 portTemplateConsolidationData = new PortTemplateConsolidationData();
133 portTemplateConsolidationData.setNodeTemplateId(portNodeTemplateId);
134 filePortConsolidationData.setPortTemplateConsolidationData(portNodeTemplateId,
135 portTemplateConsolidationData);
138 return portTemplateConsolidationData;
143 * Gets nested template consolidation data.
145 * @param context the context
146 * @param serviceTemplate the service template
147 * @param nestedHeatFileName
148 *@param nestedNodeTemplateId the nested node template id @return the nested template consolidation data
150 public static NestedTemplateConsolidationData getNestedTemplateConsolidationData(
151 TranslationContext context,
152 ServiceTemplate serviceTemplate,
153 String nestedHeatFileName, String nestedNodeTemplateId) {
155 if(isNestedResourceIdOccuresInDifferentNestedFiles(context, nestedHeatFileName,
156 nestedNodeTemplateId)){
157 throw new CoreException((new ErrorCode.ErrorCodeBuilder())
158 .withMessage("Resource with id "
159 + nestedNodeTemplateId + " occures more than once in different addOn "
163 ConsolidationData consolidationData = context.getConsolidationData();
164 String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate);
166 NestedConsolidationData nestedConsolidationData = consolidationData
167 .getNestedConsolidationData();
169 FileNestedConsolidationData fileNestedConsolidationData = nestedConsolidationData
170 .getFileNestedConsolidationData(serviceTemplateFileName);
172 if (fileNestedConsolidationData == null) {
173 fileNestedConsolidationData = new FileNestedConsolidationData();
174 nestedConsolidationData.setFileNestedConsolidationData(serviceTemplateFileName,
175 fileNestedConsolidationData);
178 NestedTemplateConsolidationData nestedTemplateConsolidationData =
179 fileNestedConsolidationData.getNestedTemplateConsolidationData(nestedNodeTemplateId);
180 if (nestedTemplateConsolidationData == null) {
181 nestedTemplateConsolidationData = new NestedTemplateConsolidationData();
182 nestedTemplateConsolidationData.setNodeTemplateId(nestedNodeTemplateId);
183 fileNestedConsolidationData.setNestedTemplateConsolidationData(nestedNodeTemplateId,
184 nestedTemplateConsolidationData);
187 return nestedTemplateConsolidationData;
190 private static boolean isNestedResourceIdOccuresInDifferentNestedFiles(TranslationContext context,
191 String nestedHeatFileName,
192 String nestedNodeTemplateId) {
193 return Objects.nonNull(nestedHeatFileName)
194 && context.getAllTranslatedResourceIdsFromDiffNestedFiles(nestedHeatFileName).contains(nestedNodeTemplateId);
198 * Update group id information in consolidation data.
200 * @param entityConsolidationData Entity consolidation data (Port/Compute)
201 * @param translatedGroupId Group id of which compute node is a part
203 public static void updateGroupIdInConsolidationData(EntityConsolidationData
204 entityConsolidationData,
205 String translatedGroupId) {
206 if (entityConsolidationData.getGroupIds() == null) {
207 entityConsolidationData.setGroupIds(new ArrayList<>());
209 entityConsolidationData.getGroupIds().add(translatedGroupId);
213 * Update volume information in consolidation data.
215 * @param translateTo {@link TranslateTo} object
216 * @param computeType Local type of the compute node
217 * @param computeNodeTemplateId Node template id of the compute node
218 * @param requirementAssignment RequirementAssignment object
220 public static void updateComputeConsolidationDataVolumes(TranslateTo translateTo,
222 String computeNodeTemplateId,
223 String requirementId,
224 RequirementAssignment
225 requirementAssignment) {
226 TranslationContext translationContext = translateTo.getContext();
227 ServiceTemplate serviceTemplate = translateTo.getServiceTemplate();
228 ComputeTemplateConsolidationData computeTemplateConsolidationData =
229 getComputeTemplateConsolidationData(translationContext, serviceTemplate, computeType,
230 computeNodeTemplateId);
231 computeTemplateConsolidationData.addVolume(requirementId, requirementAssignment);
236 * Update port in consolidation data.
238 * @param translateTo the translate to
239 * @param computeNodeType the compute node type
240 * @param portNodeTemplateId the port node template id
242 public static void updatePortInConsolidationData(TranslateTo translateTo,
243 String computeNodeType,
244 String portNodeTemplateId) {
245 TranslationContext translationContext = translateTo.getContext();
246 ServiceTemplate serviceTemplate = translateTo.getServiceTemplate();
247 ComputeTemplateConsolidationData computeTemplateConsolidationData =
248 getComputeTemplateConsolidationData(translationContext, serviceTemplate, computeNodeType,
249 translateTo.getTranslatedId());
250 computeTemplateConsolidationData.addPort(getPortType(portNodeTemplateId), portNodeTemplateId);
251 // create port in consolidation data
252 getPortTemplateConsolidationData(translationContext, serviceTemplate, portNodeTemplateId);
256 * Update nodes connected in and out for Depends on and connectivity in consolidation data.
258 * @param translateTo the translate to
259 * @param targetResourceId the target resource id
260 * @param nodeTemplateId the source node template id
261 * @param requirementAssignment the requirement assignment
263 public static void updateNodesConnectedData(TranslateTo translateTo, String targetResourceId,
264 Resource targetResource, Resource sourceResource,
265 String nodeTemplateId, String requirementId,
266 RequirementAssignment requirementAssignment) {
267 ConsolidationEntityType consolidationEntityType = ConsolidationEntityType.OTHER;
268 HeatOrchestrationTemplate heatOrchestrationTemplate = translateTo
269 .getHeatOrchestrationTemplate();
270 TranslationContext translationContext = translateTo.getContext();
272 consolidationEntityType.setEntityType(heatOrchestrationTemplate, sourceResource,
273 targetResource, translateTo.getContext());
274 // Add resource dependency information in nodesConnectedIn if the target node
275 // is a consolidation entity
276 if (isConsolidationEntity(consolidationEntityType.getTargetEntityType())) {
277 ConsolidationDataUtil.updateNodesConnectedIn(translateTo,
278 nodeTemplateId, consolidationEntityType.getTargetEntityType(), targetResourceId,
279 requirementId, requirementAssignment);
282 //Add resource dependency information in nodesConnectedOut if the source node
283 //is a consolidation entity
284 if (isConsolidationEntity(consolidationEntityType.getSourceEntityType())) {
285 ConsolidationDataUtil.updateNodesConnectedOut(translateTo,
286 requirementAssignment.getNode(), consolidationEntityType.getSourceEntityType(),
287 requirementId, requirementAssignment);
293 private static boolean isConsolidationEntity(ConsolidationEntityType consolidationEntityType) {
294 return (consolidationEntityType == ConsolidationEntityType.COMPUTE
295 || consolidationEntityType == ConsolidationEntityType.PORT
296 || consolidationEntityType == ConsolidationEntityType.NESTED
297 || consolidationEntityType == ConsolidationEntityType.VFC_NESTED);
301 * Update nodes connected from this node in consolidation data.
303 * @param translateTo the translate to
304 * @param nodeTemplateId the node template id of the target node
305 * @param consolidationEntityType the entity type (compute or port)
306 * @param requirementId the requirement id
307 * @param requirementAssignment the requirement assignment
309 public static void updateNodesConnectedOut(TranslateTo translateTo,
310 String nodeTemplateId,
311 ConsolidationEntityType consolidationEntityType,
312 String requirementId,
313 RequirementAssignment requirementAssignment) {
314 EntityConsolidationData entityConsolidationData = null;
315 TranslationContext translationContext = translateTo.getContext();
316 ServiceTemplate serviceTemplate = translateTo.getServiceTemplate();
318 translationContext.updateRequirementAssignmentIdIndex(ToscaUtil.getServiceTemplateFileName
319 (translateTo.getServiceTemplate()), translateTo.getResourceId(), requirementId);
321 RequirementAssignmentData requirementAssignmentData = new RequirementAssignmentData(
322 requirementId, requirementAssignment);
324 if (consolidationEntityType == ConsolidationEntityType.COMPUTE) {
325 String nodeType = DataModelUtil.getNodeTemplate(serviceTemplate, translateTo
326 .getTranslatedId()).getType();
327 entityConsolidationData = getComputeTemplateConsolidationData(translationContext,
328 serviceTemplate, nodeType, translateTo.getTranslatedId());
329 } else if (consolidationEntityType == ConsolidationEntityType.PORT) {
330 entityConsolidationData = getPortTemplateConsolidationData(translationContext,
331 serviceTemplate, translateTo.getTranslatedId());
332 } else if (consolidationEntityType == ConsolidationEntityType.VFC_NESTED
333 || consolidationEntityType == ConsolidationEntityType.NESTED) {
334 entityConsolidationData =
335 getNestedTemplateConsolidationData(translationContext, serviceTemplate,
337 translateTo.getTranslatedId());
340 if(Objects.isNull(entityConsolidationData)){
343 if (entityConsolidationData != null) {
344 if (entityConsolidationData.getNodesConnectedOut() == null) {
345 entityConsolidationData.setNodesConnectedOut(new HashMap<>());
348 entityConsolidationData.getNodesConnectedOut()
349 .computeIfAbsent(nodeTemplateId, k -> new ArrayList<>())
350 .add(requirementAssignmentData);
355 * Update nodes connected from this node in consolidation data.
357 * @param translateTo the translate to
358 * @param sourceNodeTemplateId the node template id of the source node
359 * @param consolidationEntityType Entity type (compute or port)
360 * @param requirementId Requirement Id
361 * @param requirementAssignment the requirement assignment
363 public static void updateNodesConnectedIn(TranslateTo translateTo, String sourceNodeTemplateId,
364 ConsolidationEntityType consolidationEntityType,
365 String targetResourceId,
366 String requirementId,
367 RequirementAssignment requirementAssignment) {
368 EntityConsolidationData entityConsolidationData = null;
369 TranslationContext translationContext = translateTo.getContext();
370 ServiceTemplate serviceTemplate = translateTo.getServiceTemplate();
371 RequirementAssignmentData requirementAssignmentData = new RequirementAssignmentData(
372 requirementId, requirementAssignment);
373 String dependentNodeTemplateId = requirementAssignment.getNode();
374 if (consolidationEntityType == ConsolidationEntityType.COMPUTE) {
375 NodeTemplate computeNodeTemplate = DataModelUtil.getNodeTemplate(serviceTemplate,
376 dependentNodeTemplateId);
377 String nodeType = null;
378 if (Objects.isNull(computeNodeTemplate)) {
379 Resource targetResource =
380 translateTo.getHeatOrchestrationTemplate().getResources().get(targetResourceId);
381 NameExtractor nodeTypeNameExtractor =
382 translateTo.getContext().getNameExtractorImpl(targetResource.getType());
384 nodeTypeNameExtractor.extractNodeTypeName(translateTo.getHeatOrchestrationTemplate()
385 .getResources().get(dependentNodeTemplateId),
386 dependentNodeTemplateId, dependentNodeTemplateId);
388 nodeType = computeNodeTemplate.getType();
391 entityConsolidationData = getComputeTemplateConsolidationData(translationContext,
392 serviceTemplate, nodeType, dependentNodeTemplateId);
393 } else if (consolidationEntityType == ConsolidationEntityType.PORT) {
394 entityConsolidationData = getPortTemplateConsolidationData(translationContext,
395 serviceTemplate, dependentNodeTemplateId);
396 } else if (consolidationEntityType == ConsolidationEntityType.NESTED
397 || consolidationEntityType == ConsolidationEntityType.VFC_NESTED) {
398 entityConsolidationData = getNestedTemplateConsolidationData(translationContext,
399 serviceTemplate, translateTo.getHeatFileName(), dependentNodeTemplateId);
402 if (entityConsolidationData != null) {
403 if (entityConsolidationData.getNodesConnectedIn() == null) {
404 entityConsolidationData.setNodesConnectedIn(new HashMap<>());
407 entityConsolidationData.getNodesConnectedIn()
408 .computeIfAbsent(sourceNodeTemplateId, k -> new ArrayList<>())
409 .add(requirementAssignmentData);
415 * Checks if the current HEAT resource if of type compute.
417 * @param heatOrchestrationTemplate the heat orchestration template
418 * @param resourceId the resource id
419 * @return true if the resource is of compute type and false otherwise
421 public static boolean isComputeResource(HeatOrchestrationTemplate heatOrchestrationTemplate,
423 String resourceType = heatOrchestrationTemplate.getResources().get(resourceId).getType();
424 Map<String, ImplementationConfiguration> supportedComputeResources = TranslationContext
425 .getSupportedConsolidationComputeResources();
426 if (supportedComputeResources.containsKey(resourceType)) {
427 if (supportedComputeResources.get(resourceType).isEnable()) {
436 * Checks if the current HEAT resource if of type compute.
438 * @param resource the resource
439 * @return true if the resource is of compute type and false otherwise
441 public static boolean isComputeResource(Resource resource) {
442 String resourceType = resource.getType();
443 Map<String, ImplementationConfiguration> supportedComputeResources = TranslationContext
444 .getSupportedConsolidationComputeResources();
445 if (supportedComputeResources.containsKey(resourceType)) {
446 if (supportedComputeResources.get(resourceType).isEnable()) {
455 * Checks if the current HEAT resource if of type port.
457 * @param heatOrchestrationTemplate the heat orchestration template
458 * @param resourceId the resource id
459 * @return true if the resource is of port type and false otherwise
461 public static boolean isPortResource(HeatOrchestrationTemplate heatOrchestrationTemplate,
463 String resourceType = heatOrchestrationTemplate.getResources().get(resourceId).getType();
464 Map<String, ImplementationConfiguration> supportedPortResources = TranslationContext
465 .getSupportedConsolidationPortResources();
466 if (supportedPortResources.containsKey(resourceType)) {
467 if (supportedPortResources.get(resourceType).isEnable()) {
476 * Checks if the current HEAT resource if of type port.
478 * @param resource the resource
479 * @return true if the resource is of port type and false otherwise
481 public static boolean isPortResource(Resource resource) {
482 String resourceType = resource.getType();
483 Map<String, ImplementationConfiguration> supportedPortResources = TranslationContext
484 .getSupportedConsolidationPortResources();
485 if (supportedPortResources.containsKey(resourceType)) {
486 if (supportedPortResources.get(resourceType).isEnable()) {
495 * Checks if the current HEAT resource if of type volume.
497 * @param heatOrchestrationTemplate the heat orchestration template
498 * @param resourceId the resource id
499 * @return true if the resource is of volume type and false otherwise
501 public static boolean isVolumeResource(HeatOrchestrationTemplate heatOrchestrationTemplate,
503 String resourceType = heatOrchestrationTemplate.getResources().get(resourceId).getType();
504 return (resourceType.equals(HeatResourcesTypes.CINDER_VOLUME_RESOURCE_TYPE.getHeatResource())
505 || resourceType.equals(HeatResourcesTypes.CINDER_VOLUME_ATTACHMENT_RESOURCE_TYPE
506 .getHeatResource()));
510 * Checks if the current HEAT resource if of type volume.
512 * @param resource the resource
513 * @return true if the resource is of volume type and false otherwise
515 public static boolean isVolumeResource(Resource resource) {
516 String resourceType = resource.getType();
517 return (resourceType.equals(HeatResourcesTypes.CINDER_VOLUME_RESOURCE_TYPE.getHeatResource())
518 || resourceType.equals(HeatResourcesTypes.CINDER_VOLUME_ATTACHMENT_RESOURCE_TYPE
519 .getHeatResource()));
525 * @param portNodeTemplateId the port node template id
526 * @return the port type
528 public static String getPortType(String portNodeTemplateId) {
529 String[] portSplitArr = portNodeTemplateId.split("(?<=\\D)(?=\\d)|(?<=\\d)(?=\\D)");
530 String finalValue = "";
531 if (NumberUtils.isNumber(portSplitArr[portSplitArr.length - 1])) {
532 for (String id : portSplitArr) {
533 finalValue = finalValue + id;
535 while (finalValue.length() > 0) {
536 if (Character.isLetter(finalValue.charAt(finalValue.length() - 1))) {
539 finalValue = finalValue.substring(0, finalValue.length() - 1);
542 for (String id : portSplitArr) {
543 if (!NumberUtils.isNumber(id)) {
544 finalValue = finalValue + id;
552 * Update node template id for the nested node templates in the consolidation data.
554 * @param translateTo the translate to
556 public static void updateNestedNodeTemplateId(TranslateTo translateTo) {
557 TranslationContext context = translateTo.getContext();
558 ServiceTemplate serviceTemplate = translateTo.getServiceTemplate();
559 getNestedTemplateConsolidationData(
560 context, serviceTemplate, translateTo.getHeatFileName(), translateTo.getTranslatedId());
563 public static void removeSharedResource(ServiceTemplate serviceTemplate,
564 HeatOrchestrationTemplate heatOrchestrationTemplate,
565 TranslationContext context,
567 String contrailSharedResourceId,
568 String sharedTranslatedResourceId) {
569 if (ConsolidationDataUtil.isComputeResource(heatOrchestrationTemplate,
570 contrailSharedResourceId)) {
571 NodeTemplate nodeTemplate = DataModelUtil.getNodeTemplate(serviceTemplate,
572 sharedTranslatedResourceId);
573 EntityConsolidationData entityConsolidationData = getComputeTemplateConsolidationData(
574 context, serviceTemplate, nodeTemplate.getType(), sharedTranslatedResourceId);
575 List<GetAttrFuncData> getAttrFuncDataList = entityConsolidationData
576 .getOutputParametersGetAttrIn();
577 removeParamNameFromAttrFuncList(paramName, getAttrFuncDataList);
579 if (ConsolidationDataUtil.isPortResource(heatOrchestrationTemplate,
580 contrailSharedResourceId)) {
581 NodeTemplate nodeTemplate = DataModelUtil.getNodeTemplate(serviceTemplate,
582 sharedTranslatedResourceId);
583 EntityConsolidationData entityConsolidationData = getPortTemplateConsolidationData(context,
584 serviceTemplate, sharedTranslatedResourceId);
585 List<GetAttrFuncData> getAttrFuncDataList = entityConsolidationData
586 .getOutputParametersGetAttrIn();
587 removeParamNameFromAttrFuncList(paramName, getAttrFuncDataList);
591 private static void removeParamNameFromAttrFuncList(String paramName,
592 List<GetAttrFuncData> getAttrFuncDataList) {
593 Iterator<GetAttrFuncData> itr = getAttrFuncDataList.iterator();
594 while (itr.hasNext()) {
595 GetAttrFuncData getAttrFuncData = itr.next();
596 if (paramName.equals(getAttrFuncData.getFieldName())) {
602 public static void updateNodeGetAttributeIn(EntityConsolidationData entityConsolidationData,
603 String nodeTemplateId, String propertyName,
604 String attributeName) {
605 GetAttrFuncData getAttrFuncData = new GetAttrFuncData();
606 getAttrFuncData.setFieldName(propertyName);
607 getAttrFuncData.setAttributeName(attributeName);
608 entityConsolidationData.addNodesGetAttrIn(nodeTemplateId, getAttrFuncData);
612 public static void updateNodeGetAttributeOut(EntityConsolidationData entityConsolidationData,
613 String nodeTemplateId, String propertyName,
614 String attributeName) {
615 GetAttrFuncData getAttrFuncData = new GetAttrFuncData();
616 getAttrFuncData.setFieldName(propertyName);
617 getAttrFuncData.setAttributeName(attributeName);
618 entityConsolidationData.addNodesGetAttrOut(nodeTemplateId, getAttrFuncData);
622 public static void updateOutputGetAttributeInConsolidationData(EntityConsolidationData
623 entityConsolidationData,
624 String outputParameterName,
625 String attributeName) {
628 GetAttrFuncData getAttrFuncData = new GetAttrFuncData();
629 getAttrFuncData.setFieldName(outputParameterName);
630 getAttrFuncData.setAttributeName(attributeName);
631 entityConsolidationData.addOutputParamGetAttrIn(getAttrFuncData);
635 public static boolean isComputeReferenceToPortId(ComputeTemplateConsolidationData compute,
637 if (MapUtils.isEmpty(compute.getPorts())) {
640 for (List<String> portIdsPerType : compute.getPorts().values()) {
641 if (portIdsPerType.contains(portId)) {