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.core.utilities.file.FileUtils;
6 import org.openecomp.sdc.common.errors.CoreException;
7 import org.openecomp.sdc.common.errors.ErrorCode;
8 import org.openecomp.sdc.datatypes.configuration.ImplementationConfiguration;
9 import org.openecomp.sdc.heat.datatypes.model.HeatOrchestrationTemplate;
10 import org.openecomp.sdc.heat.datatypes.model.HeatResourcesTypes;
11 import org.openecomp.sdc.heat.datatypes.model.Resource;
12 import org.openecomp.sdc.logging.api.Logger;
13 import org.openecomp.sdc.logging.api.LoggerFactory;
14 import org.openecomp.sdc.tosca.datatypes.model.NodeTemplate;
15 import org.openecomp.sdc.tosca.datatypes.model.RequirementAssignment;
16 import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate;
17 import org.openecomp.sdc.tosca.services.DataModelUtil;
18 import org.openecomp.sdc.tosca.services.ToscaUtil;
19 import org.openecomp.sdc.translator.datatypes.heattotosca.TranslationContext;
20 import org.openecomp.sdc.translator.datatypes.heattotosca.to.TranslateTo;
21 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.ComputeConsolidationData;
22 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.ComputeTemplateConsolidationData;
23 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.ConsolidationData;
24 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.EntityConsolidationData;
25 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.FileComputeConsolidationData;
26 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.FileNestedConsolidationData;
27 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.FilePortConsolidationData;
28 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.GetAttrFuncData;
29 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.NestedConsolidationData;
30 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.NestedTemplateConsolidationData;
31 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.PortConsolidationData;
32 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.PortTemplateConsolidationData;
33 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.RequirementAssignmentData;
34 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.TypeComputeConsolidationData;
35 import org.openecomp.sdc.translator.services.heattotosca.errors.DuplicateResourceIdsInDifferentFilesErrorBuilder;
37 import java.util.ArrayList;
38 import java.util.HashMap;
39 import java.util.Iterator;
40 import java.util.List;
42 import java.util.Objects;
46 * Utility class for consolidation data collection helper methods.
48 public class ConsolidationDataUtil {
50 protected static Logger logger = (Logger) LoggerFactory.getLogger(ConsolidationDataUtil.class);
53 * Gets compute template consolidation data.
55 * @param context the translation context
56 * @param serviceTemplate the service template
57 * @param computeNodeType the compute node type
58 * @param computeNodeTemplateId the compute node template id
59 * @return the compute template consolidation data
61 public static ComputeTemplateConsolidationData getComputeTemplateConsolidationData(
62 TranslationContext context,
63 ServiceTemplate serviceTemplate,
64 String computeNodeType,
65 String computeNodeTemplateId) {
67 ConsolidationData consolidationData = context.getConsolidationData();
68 String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate);
70 ComputeConsolidationData computeConsolidationData = consolidationData
71 .getComputeConsolidationData();
73 FileComputeConsolidationData fileComputeConsolidationData = computeConsolidationData
74 .getFileComputeConsolidationData(serviceTemplateFileName);
76 if (fileComputeConsolidationData == null) {
77 fileComputeConsolidationData = new FileComputeConsolidationData();
78 computeConsolidationData.setFileComputeConsolidationData(serviceTemplateFileName,
79 fileComputeConsolidationData);
82 TypeComputeConsolidationData typeComputeConsolidationData = fileComputeConsolidationData
83 .getTypeComputeConsolidationData(computeNodeType);
84 if (typeComputeConsolidationData == null) {
85 typeComputeConsolidationData = new TypeComputeConsolidationData();
86 fileComputeConsolidationData.setTypeComputeConsolidationData(computeNodeType,
87 typeComputeConsolidationData);
90 ComputeTemplateConsolidationData computeTemplateConsolidationData =
91 typeComputeConsolidationData.getComputeTemplateConsolidationData(computeNodeTemplateId);
92 if (computeTemplateConsolidationData == null) {
93 computeTemplateConsolidationData = new ComputeTemplateConsolidationData();
94 computeTemplateConsolidationData.setNodeTemplateId(computeNodeTemplateId);
95 typeComputeConsolidationData.setComputeTemplateConsolidationData(computeNodeTemplateId,
96 computeTemplateConsolidationData);
99 return computeTemplateConsolidationData;
104 * Gets port template consolidation data.
106 * @param context the context
107 * @param serviceTemplate the service template
108 * @param portNodeTemplateId the port node template id
109 * @return the port template consolidation data
111 public static PortTemplateConsolidationData getPortTemplateConsolidationData(
112 TranslationContext context,
113 ServiceTemplate serviceTemplate,
114 String portNodeTemplateId) {
116 ConsolidationData consolidationData = context.getConsolidationData();
117 String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate);
119 PortConsolidationData portConsolidationData = consolidationData.getPortConsolidationData();
121 FilePortConsolidationData filePortConsolidationData = portConsolidationData
122 .getFilePortConsolidationData(serviceTemplateFileName);
124 if (filePortConsolidationData == null) {
125 filePortConsolidationData = new FilePortConsolidationData();
126 portConsolidationData.setFilePortConsolidationData(serviceTemplateFileName,
127 filePortConsolidationData);
130 PortTemplateConsolidationData portTemplateConsolidationData =
131 filePortConsolidationData.getPortTemplateConsolidationData(portNodeTemplateId);
132 if (portTemplateConsolidationData == null) {
133 portTemplateConsolidationData = new PortTemplateConsolidationData();
134 portTemplateConsolidationData.setNodeTemplateId(portNodeTemplateId);
135 filePortConsolidationData.setPortTemplateConsolidationData(portNodeTemplateId,
136 portTemplateConsolidationData);
139 return portTemplateConsolidationData;
144 * Gets nested template consolidation data.
146 * @param context the context
147 * @param serviceTemplate the service template
148 * @param nestedNodeTemplateId the nested node template id @return the nested template
151 public static NestedTemplateConsolidationData getNestedTemplateConsolidationData(
152 TranslationContext context,
153 ServiceTemplate serviceTemplate,
154 String nestedHeatFileName, String nestedNodeTemplateId) {
156 if (isNestedResourceIdOccuresInDifferentNestedFiles(context, nestedHeatFileName,
157 nestedNodeTemplateId)) {
158 throw new CoreException(
159 new DuplicateResourceIdsInDifferentFilesErrorBuilder(nestedNodeTemplateId).build());
162 if (isNodeTemplatePointsToServiceTemplateWithoutNodeTemplates(
163 nestedNodeTemplateId, nestedHeatFileName, context)) {
167 ConsolidationData consolidationData = context.getConsolidationData();
168 String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate);
170 NestedConsolidationData nestedConsolidationData = consolidationData
171 .getNestedConsolidationData();
173 FileNestedConsolidationData fileNestedConsolidationData = nestedConsolidationData
174 .getFileNestedConsolidationData(serviceTemplateFileName);
176 if (fileNestedConsolidationData == null) {
177 fileNestedConsolidationData = new FileNestedConsolidationData();
178 nestedConsolidationData.setFileNestedConsolidationData(serviceTemplateFileName,
179 fileNestedConsolidationData);
182 NestedTemplateConsolidationData nestedTemplateConsolidationData =
183 fileNestedConsolidationData.getNestedTemplateConsolidationData(nestedNodeTemplateId);
184 if (nestedTemplateConsolidationData == null) {
185 nestedTemplateConsolidationData = new NestedTemplateConsolidationData();
186 nestedTemplateConsolidationData.setNodeTemplateId(nestedNodeTemplateId);
187 fileNestedConsolidationData.setNestedTemplateConsolidationData(nestedNodeTemplateId,
188 nestedTemplateConsolidationData);
191 return nestedTemplateConsolidationData;
194 public static boolean isNodeTemplatePointsToServiceTemplateWithoutNodeTemplates(String
195 nestedNodeTemplateId,
196 String nestedHeatFileName,
197 TranslationContext context) {
199 return context.isServiceTemplateWithoutNodeTemplatesSection(
200 FileUtils.getFileWithoutExtention(nestedHeatFileName))
201 || context.isNodeTemplateIdPointsToStWithoutNodeTemplates(nestedNodeTemplateId);
204 private static boolean isNestedResourceIdOccuresInDifferentNestedFiles(TranslationContext context,
205 String nestedHeatFileName,
206 String nestedNodeTemplateId) {
207 return Objects.nonNull(nestedHeatFileName)
208 && context.getAllTranslatedResourceIdsFromDiffNestedFiles(nestedHeatFileName)
209 .contains(nestedNodeTemplateId);
213 * Update group id information in consolidation data.
215 * @param entityConsolidationData Entity consolidation data (Port/Compute)
216 * @param translatedGroupId Group id of which compute node is a part
218 public static void updateGroupIdInConsolidationData(EntityConsolidationData
219 entityConsolidationData,
220 String translatedGroupId) {
221 if (entityConsolidationData.getGroupIds() == null) {
222 entityConsolidationData.setGroupIds(new ArrayList<>());
224 entityConsolidationData.getGroupIds().add(translatedGroupId);
228 * Update volume information in consolidation data.
230 * @param translateTo {@link TranslateTo} object
231 * @param computeType Local type of the compute node
232 * @param computeNodeTemplateId Node template id of the compute node
233 * @param requirementAssignment RequirementAssignment object
235 public static void updateComputeConsolidationDataVolumes(TranslateTo translateTo,
237 String computeNodeTemplateId,
238 String requirementId,
239 RequirementAssignment
240 requirementAssignment) {
241 TranslationContext translationContext = translateTo.getContext();
242 ServiceTemplate serviceTemplate = translateTo.getServiceTemplate();
243 ComputeTemplateConsolidationData computeTemplateConsolidationData =
244 getComputeTemplateConsolidationData(translationContext, serviceTemplate, computeType,
245 computeNodeTemplateId);
246 computeTemplateConsolidationData.addVolume(requirementId, requirementAssignment);
251 * Update port in consolidation data.
253 * @param translateTo the translate to
254 * @param computeNodeType the compute node type
255 * @param portNodeTemplateId the port node template id
257 public static void updatePortInConsolidationData(TranslateTo translateTo,
258 String computeNodeType,
259 String portNodeTemplateId) {
260 TranslationContext translationContext = translateTo.getContext();
261 ServiceTemplate serviceTemplate = translateTo.getServiceTemplate();
262 ComputeTemplateConsolidationData computeTemplateConsolidationData =
263 getComputeTemplateConsolidationData(translationContext, serviceTemplate, computeNodeType,
264 translateTo.getTranslatedId());
265 computeTemplateConsolidationData.addPort(getPortType(portNodeTemplateId), portNodeTemplateId);
266 // create port in consolidation data
267 getPortTemplateConsolidationData(translationContext, serviceTemplate, portNodeTemplateId);
271 * Update nodes connected in and out for Depends on and connectivity in consolidation data.
273 * @param translateTo the translate to
274 * @param targetResourceId the target resource id
275 * @param nodeTemplateId the source node template id
276 * @param requirementAssignment the requirement assignment
278 public static void updateNodesConnectedData(TranslateTo translateTo, String targetResourceId,
279 Resource targetResource, Resource sourceResource,
280 String nodeTemplateId, String requirementId,
281 RequirementAssignment requirementAssignment) {
282 ConsolidationEntityType consolidationEntityType = ConsolidationEntityType.OTHER;
283 HeatOrchestrationTemplate heatOrchestrationTemplate = translateTo
284 .getHeatOrchestrationTemplate();
285 TranslationContext translationContext = translateTo.getContext();
287 consolidationEntityType.setEntityType(heatOrchestrationTemplate, sourceResource,
288 targetResource, translateTo.getContext());
289 // Add resource dependency information in nodesConnectedIn if the target node
290 // is a consolidation entity
291 if (isConsolidationEntity(consolidationEntityType.getTargetEntityType())) {
292 ConsolidationDataUtil.updateNodesConnectedIn(translateTo,
293 nodeTemplateId, consolidationEntityType.getTargetEntityType(), targetResourceId,
294 requirementId, requirementAssignment);
297 //Add resource dependency information in nodesConnectedOut if the source node
298 //is a consolidation entity
299 if (isConsolidationEntity(consolidationEntityType.getSourceEntityType())) {
300 ConsolidationDataUtil.updateNodesConnectedOut(translateTo,
301 requirementAssignment.getNode(), consolidationEntityType.getSourceEntityType(),
302 requirementId, requirementAssignment);
308 private static boolean isConsolidationEntity(ConsolidationEntityType consolidationEntityType) {
309 return (consolidationEntityType == ConsolidationEntityType.COMPUTE
310 || consolidationEntityType == ConsolidationEntityType.PORT
311 || consolidationEntityType == ConsolidationEntityType.NESTED
312 || consolidationEntityType == ConsolidationEntityType.VFC_NESTED);
316 * Update nodes connected from this node in consolidation data.
318 * @param translateTo the translate to
319 * @param nodeTemplateId the node template id of the target node
320 * @param consolidationEntityType the entity type (compute or port)
321 * @param requirementId the requirement id
322 * @param requirementAssignment the requirement assignment
324 public static void updateNodesConnectedOut(TranslateTo translateTo,
325 String nodeTemplateId,
326 ConsolidationEntityType consolidationEntityType,
327 String requirementId,
328 RequirementAssignment requirementAssignment) {
329 EntityConsolidationData entityConsolidationData = null;
330 TranslationContext translationContext = translateTo.getContext();
331 ServiceTemplate serviceTemplate = translateTo.getServiceTemplate();
333 translationContext.updateRequirementAssignmentIdIndex(ToscaUtil.getServiceTemplateFileName
334 (translateTo.getServiceTemplate()), translateTo.getResourceId(), requirementId);
336 RequirementAssignmentData requirementAssignmentData = new RequirementAssignmentData(
337 requirementId, requirementAssignment);
339 if (consolidationEntityType == ConsolidationEntityType.COMPUTE) {
340 String nodeType = DataModelUtil.getNodeTemplate(serviceTemplate, translateTo
341 .getTranslatedId()).getType();
342 entityConsolidationData = getComputeTemplateConsolidationData(translationContext,
343 serviceTemplate, nodeType, translateTo.getTranslatedId());
344 } else if (consolidationEntityType == ConsolidationEntityType.PORT) {
345 entityConsolidationData = getPortTemplateConsolidationData(translationContext,
346 serviceTemplate, translateTo.getTranslatedId());
347 } else if (consolidationEntityType == ConsolidationEntityType.VFC_NESTED
348 || consolidationEntityType == ConsolidationEntityType.NESTED) {
349 entityConsolidationData =
350 getNestedTemplateConsolidationData(translationContext, serviceTemplate,
351 translateTo.getHeatFileName(),
352 translateTo.getTranslatedId());
355 if (Objects.isNull(entityConsolidationData)) {
359 if (Objects.isNull(entityConsolidationData.getNodesConnectedOut())) {
360 entityConsolidationData.setNodesConnectedOut(new HashMap<>());
363 entityConsolidationData.getNodesConnectedOut()
364 .computeIfAbsent(nodeTemplateId, k -> new ArrayList<>())
365 .add(requirementAssignmentData);
369 * Update nodes connected from this node in consolidation data.
371 * @param translateTo the translate to
372 * @param sourceNodeTemplateId the node template id of the source node
373 * @param consolidationEntityType Entity type (compute or port)
374 * @param requirementId Requirement Id
375 * @param requirementAssignment the requirement assignment
377 public static void updateNodesConnectedIn(TranslateTo translateTo, String sourceNodeTemplateId,
378 ConsolidationEntityType consolidationEntityType,
379 String targetResourceId,
380 String requirementId,
381 RequirementAssignment requirementAssignment) {
382 EntityConsolidationData entityConsolidationData = null;
383 TranslationContext translationContext = translateTo.getContext();
384 ServiceTemplate serviceTemplate = translateTo.getServiceTemplate();
385 RequirementAssignmentData requirementAssignmentData = new RequirementAssignmentData(
386 requirementId, requirementAssignment);
387 String dependentNodeTemplateId = requirementAssignment.getNode();
388 if (consolidationEntityType == ConsolidationEntityType.COMPUTE) {
389 NodeTemplate computeNodeTemplate = DataModelUtil.getNodeTemplate(serviceTemplate,
390 dependentNodeTemplateId);
391 String nodeType = null;
392 if (Objects.isNull(computeNodeTemplate)) {
393 Resource targetResource =
394 translateTo.getHeatOrchestrationTemplate().getResources().get(targetResourceId);
395 NameExtractor nodeTypeNameExtractor =
396 translateTo.getContext().getNameExtractorImpl(targetResource.getType());
398 nodeTypeNameExtractor.extractNodeTypeName(translateTo.getHeatOrchestrationTemplate()
399 .getResources().get(dependentNodeTemplateId),
400 dependentNodeTemplateId, dependentNodeTemplateId);
402 nodeType = computeNodeTemplate.getType();
405 entityConsolidationData = getComputeTemplateConsolidationData(translationContext,
406 serviceTemplate, nodeType, dependentNodeTemplateId);
407 } else if (consolidationEntityType == ConsolidationEntityType.PORT) {
408 entityConsolidationData = getPortTemplateConsolidationData(translationContext,
409 serviceTemplate, dependentNodeTemplateId);
410 } else if (consolidationEntityType == ConsolidationEntityType.NESTED
411 || consolidationEntityType == ConsolidationEntityType.VFC_NESTED) {
412 entityConsolidationData = getNestedTemplateConsolidationData(translationContext,
413 serviceTemplate, translateTo.getHeatFileName(), dependentNodeTemplateId);
416 if (entityConsolidationData != null) {
417 if (entityConsolidationData.getNodesConnectedIn() == null) {
418 entityConsolidationData.setNodesConnectedIn(new HashMap<>());
421 entityConsolidationData.getNodesConnectedIn()
422 .computeIfAbsent(sourceNodeTemplateId, k -> new ArrayList<>())
423 .add(requirementAssignmentData);
429 * Checks if the current HEAT resource if of type compute.
431 * @param heatOrchestrationTemplate the heat orchestration template
432 * @param resourceId the resource id
433 * @return true if the resource is of compute type and false otherwise
435 public static boolean isComputeResource(HeatOrchestrationTemplate heatOrchestrationTemplate,
437 String resourceType = heatOrchestrationTemplate.getResources().get(resourceId).getType();
438 Map<String, ImplementationConfiguration> supportedComputeResources = TranslationContext
439 .getSupportedConsolidationComputeResources();
440 if (supportedComputeResources.containsKey(resourceType)) {
441 if (supportedComputeResources.get(resourceType).isEnable()) {
450 * Checks if the current HEAT resource if of type compute.
452 * @param resource the resource
453 * @return true if the resource is of compute type and false otherwise
455 public static boolean isComputeResource(Resource resource) {
456 String resourceType = resource.getType();
457 Map<String, ImplementationConfiguration> supportedComputeResources = TranslationContext
458 .getSupportedConsolidationComputeResources();
459 if (supportedComputeResources.containsKey(resourceType)) {
460 if (supportedComputeResources.get(resourceType).isEnable()) {
469 * Checks if the current HEAT resource if of type port.
471 * @param heatOrchestrationTemplate the heat orchestration template
472 * @param resourceId the resource id
473 * @return true if the resource is of port type and false otherwise
475 public static boolean isPortResource(HeatOrchestrationTemplate heatOrchestrationTemplate,
477 String resourceType = heatOrchestrationTemplate.getResources().get(resourceId).getType();
478 Map<String, ImplementationConfiguration> supportedPortResources = TranslationContext
479 .getSupportedConsolidationPortResources();
480 if (supportedPortResources.containsKey(resourceType)) {
481 if (supportedPortResources.get(resourceType).isEnable()) {
490 * Checks if the current HEAT resource if of type port.
492 * @param resource the resource
493 * @return true if the resource is of port type and false otherwise
495 public static boolean isPortResource(Resource resource) {
496 String resourceType = resource.getType();
497 Map<String, ImplementationConfiguration> supportedPortResources = TranslationContext
498 .getSupportedConsolidationPortResources();
499 if (supportedPortResources.containsKey(resourceType)) {
500 if (supportedPortResources.get(resourceType).isEnable()) {
509 * Checks if the current HEAT resource if of type volume.
511 * @param heatOrchestrationTemplate the heat orchestration template
512 * @param resourceId the resource id
513 * @return true if the resource is of volume type and false otherwise
515 public static boolean isVolumeResource(HeatOrchestrationTemplate heatOrchestrationTemplate,
517 String resourceType = heatOrchestrationTemplate.getResources().get(resourceId).getType();
518 return (resourceType.equals(HeatResourcesTypes.CINDER_VOLUME_RESOURCE_TYPE.getHeatResource())
519 || resourceType.equals(HeatResourcesTypes.CINDER_VOLUME_ATTACHMENT_RESOURCE_TYPE
520 .getHeatResource()));
524 * Checks if the current HEAT resource if of type volume.
526 * @param resource the resource
527 * @return true if the resource is of volume type and false otherwise
529 public static boolean isVolumeResource(Resource resource) {
530 String resourceType = resource.getType();
531 return (resourceType.equals(HeatResourcesTypes.CINDER_VOLUME_RESOURCE_TYPE.getHeatResource())
532 || resourceType.equals(HeatResourcesTypes.CINDER_VOLUME_ATTACHMENT_RESOURCE_TYPE
533 .getHeatResource()));
539 * @param portNodeTemplateId the port node template id
540 * @return the port type
542 public static String getPortType(String portNodeTemplateId) {
543 String[] portSplitArr = portNodeTemplateId.split("(?<=\\D)(?=\\d)|(?<=\\d)(?=\\D)");
544 String finalValue = "";
545 if (NumberUtils.isNumber(portSplitArr[portSplitArr.length - 1])) {
546 for (String id : portSplitArr) {
547 finalValue = finalValue + id;
549 while (finalValue.length() > 0) {
550 if (Character.isLetter(finalValue.charAt(finalValue.length() - 1))) {
553 finalValue = finalValue.substring(0, finalValue.length() - 1);
556 for (String id : portSplitArr) {
557 if (!NumberUtils.isNumber(id)) {
558 finalValue = finalValue + id;
566 * Update node template id for the nested node templates in the consolidation data.
568 * @param translateTo the translate to
570 public static void updateNestedNodeTemplateId(TranslateTo translateTo) {
571 TranslationContext context = translateTo.getContext();
572 ServiceTemplate serviceTemplate = translateTo.getServiceTemplate();
573 getNestedTemplateConsolidationData(
574 context, serviceTemplate, translateTo.getHeatFileName(), translateTo.getTranslatedId());
577 public static void removeSharedResource(ServiceTemplate serviceTemplate,
578 HeatOrchestrationTemplate heatOrchestrationTemplate,
579 TranslationContext context,
581 String contrailSharedResourceId,
582 String sharedTranslatedResourceId) {
583 if (ConsolidationDataUtil.isComputeResource(heatOrchestrationTemplate,
584 contrailSharedResourceId)) {
585 NodeTemplate nodeTemplate = DataModelUtil.getNodeTemplate(serviceTemplate,
586 sharedTranslatedResourceId);
587 EntityConsolidationData entityConsolidationData = getComputeTemplateConsolidationData(
588 context, serviceTemplate, nodeTemplate.getType(), sharedTranslatedResourceId);
589 List<GetAttrFuncData> getAttrFuncDataList = entityConsolidationData
590 .getOutputParametersGetAttrIn();
591 removeParamNameFromAttrFuncList(paramName, getAttrFuncDataList);
593 if (ConsolidationDataUtil.isPortResource(heatOrchestrationTemplate,
594 contrailSharedResourceId)) {
595 NodeTemplate nodeTemplate = DataModelUtil.getNodeTemplate(serviceTemplate,
596 sharedTranslatedResourceId);
597 EntityConsolidationData entityConsolidationData = getPortTemplateConsolidationData(context,
598 serviceTemplate, sharedTranslatedResourceId);
599 List<GetAttrFuncData> getAttrFuncDataList = entityConsolidationData
600 .getOutputParametersGetAttrIn();
601 removeParamNameFromAttrFuncList(paramName, getAttrFuncDataList);
605 private static void removeParamNameFromAttrFuncList(String paramName,
606 List<GetAttrFuncData> getAttrFuncDataList) {
607 Iterator<GetAttrFuncData> itr = getAttrFuncDataList.iterator();
608 while (itr.hasNext()) {
609 GetAttrFuncData getAttrFuncData = itr.next();
610 if (paramName.equals(getAttrFuncData.getFieldName())) {
616 public static void updateNodeGetAttributeIn(EntityConsolidationData entityConsolidationData,
617 String nodeTemplateId, String propertyName,
618 String attributeName) {
619 GetAttrFuncData getAttrFuncData = new GetAttrFuncData();
620 getAttrFuncData.setFieldName(propertyName);
621 getAttrFuncData.setAttributeName(attributeName);
622 entityConsolidationData.addNodesGetAttrIn(nodeTemplateId, getAttrFuncData);
626 public static void updateNodeGetAttributeOut(EntityConsolidationData entityConsolidationData,
627 String nodeTemplateId, String propertyName,
628 String attributeName) {
629 GetAttrFuncData getAttrFuncData = new GetAttrFuncData();
630 getAttrFuncData.setFieldName(propertyName);
631 getAttrFuncData.setAttributeName(attributeName);
632 entityConsolidationData.addNodesGetAttrOut(nodeTemplateId, getAttrFuncData);
636 public static void updateOutputGetAttributeInConsolidationData(EntityConsolidationData
637 entityConsolidationData,
638 String outputParameterName,
639 String attributeName) {
642 GetAttrFuncData getAttrFuncData = new GetAttrFuncData();
643 getAttrFuncData.setFieldName(outputParameterName);
644 getAttrFuncData.setAttributeName(attributeName);
645 entityConsolidationData.addOutputParamGetAttrIn(getAttrFuncData);
649 public static boolean isComputeReferenceToPortId(ComputeTemplateConsolidationData compute,
651 if (MapUtils.isEmpty(compute.getPorts())) {
654 for (List<String> portIdsPerType : compute.getPorts().values()) {
655 if (portIdsPerType.contains(portId)) {