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;
19 import java.util.ArrayList;
20 import java.util.List;
22 import java.util.Objects;
23 import java.util.Optional;
24 import org.apache.commons.collections4.MapUtils;
25 import org.apache.commons.lang3.StringUtils;
26 import org.onap.sdc.tosca.datatypes.model.RequirementAssignment;
27 import org.onap.sdc.tosca.datatypes.model.ServiceTemplate;
28 import org.openecomp.core.utilities.file.FileUtils;
29 import org.openecomp.sdc.common.errors.CoreException;
30 import org.openecomp.sdc.datatypes.configuration.ImplementationConfiguration;
31 import org.openecomp.sdc.heat.datatypes.model.HeatOrchestrationTemplate;
32 import org.openecomp.sdc.heat.datatypes.model.HeatResourcesTypes;
33 import org.openecomp.sdc.heat.datatypes.model.Resource;
34 import org.openecomp.sdc.tosca.services.ToscaUtil;
35 import org.openecomp.sdc.translator.datatypes.heattotosca.TranslationContext;
36 import org.openecomp.sdc.translator.datatypes.heattotosca.to.TranslateTo;
37 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.ComputeConsolidationData;
38 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.ComputeTemplateConsolidationData;
39 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.ConsolidationData;
40 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.ConsolidationDataHandler;
41 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.EntityConsolidationData;
42 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.FileComputeConsolidationData;
43 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.FileNestedConsolidationData;
44 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.FilePortConsolidationData;
45 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.GetAttrFuncData;
46 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.NestedConsolidationData;
47 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.NestedTemplateConsolidationData;
48 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.PortConsolidationData;
49 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.PortTemplateConsolidationData;
50 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.SubInterfaceTemplateConsolidationData;
51 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.TypeComputeConsolidationData;
52 import org.openecomp.sdc.translator.services.heattotosca.errors.DuplicateResourceIdsInDifferentFilesErrorBuilder;
56 * Utility class for consolidation data collection helper methods.
58 public class ConsolidationDataUtil {
60 private static final String UNDERSCORE = "_";
61 private static final String DIGIT_REGEX = "\\d+";
63 private ConsolidationDataUtil() {
64 // prevent instantiation of utility class
68 * Gets compute template consolidation data.
70 * @param context the translation context
71 * @param serviceTemplate the service template
72 * @param computeNodeType the compute node type
73 * @param computeNodeTemplateId the compute node template id
74 * @return the compute template consolidation data
76 public static ComputeTemplateConsolidationData getComputeTemplateConsolidationData(TranslationContext context,
77 ServiceTemplate serviceTemplate, String computeNodeType, String computeNodeTemplateId) {
79 ConsolidationData consolidationData = context.getConsolidationData();
80 String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate);
82 ComputeConsolidationData computeConsolidationData = consolidationData.getComputeConsolidationData();
84 FileComputeConsolidationData fileComputeConsolidationData =
85 computeConsolidationData.getFileComputeConsolidationData(serviceTemplateFileName);
87 if (fileComputeConsolidationData == null) {
88 fileComputeConsolidationData = new FileComputeConsolidationData();
89 computeConsolidationData.setFileComputeConsolidationData(serviceTemplateFileName,
90 fileComputeConsolidationData);
93 TypeComputeConsolidationData typeComputeConsolidationData =
94 fileComputeConsolidationData.getTypeComputeConsolidationData(computeNodeType);
95 if (typeComputeConsolidationData == null) {
96 typeComputeConsolidationData = new TypeComputeConsolidationData();
97 fileComputeConsolidationData.setTypeComputeConsolidationData(computeNodeType,
98 typeComputeConsolidationData);
101 ComputeTemplateConsolidationData computeTemplateConsolidationData =
102 typeComputeConsolidationData.getComputeTemplateConsolidationData(computeNodeTemplateId);
103 if (computeTemplateConsolidationData == null) {
104 computeTemplateConsolidationData = new ComputeTemplateConsolidationData();
105 computeTemplateConsolidationData.setNodeTemplateId(computeNodeTemplateId);
106 typeComputeConsolidationData.setComputeTemplateConsolidationData(computeNodeTemplateId,
107 computeTemplateConsolidationData);
110 return computeTemplateConsolidationData;
115 * Gets port template consolidation data.
117 * @param context the context
118 * @param serviceTemplate the service template
119 * @param portNodeTemplateId the port node template id
120 * @return the port template consolidation data
122 public static PortTemplateConsolidationData getPortTemplateConsolidationData(TranslationContext context,
123 ServiceTemplate serviceTemplate,
124 String portResourceId,
125 String portResourceType,
126 String portNodeTemplateId) {
128 ConsolidationData consolidationData = context.getConsolidationData();
129 String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate);
131 PortConsolidationData portConsolidationData = consolidationData.getPortConsolidationData();
133 FilePortConsolidationData filePortConsolidationData =
134 portConsolidationData.getFilePortConsolidationData(serviceTemplateFileName);
136 if (filePortConsolidationData == null) {
137 filePortConsolidationData = new FilePortConsolidationData();
138 portConsolidationData.setFilePortConsolidationData(serviceTemplateFileName,
139 filePortConsolidationData);
142 PortTemplateConsolidationData portTemplateConsolidationData =
143 filePortConsolidationData.getPortTemplateConsolidationData(portNodeTemplateId);
144 if (portTemplateConsolidationData == null) {
145 portTemplateConsolidationData = getInitPortTemplateConsolidationData(portNodeTemplateId,
146 portResourceId, portResourceType);
147 filePortConsolidationData.setPortTemplateConsolidationData(portNodeTemplateId,
148 portTemplateConsolidationData);
151 return portTemplateConsolidationData;
154 private static PortTemplateConsolidationData getInitPortTemplateConsolidationData(String portNodeTemplateId,
155 String portResourceId,
156 String portResourceType) {
157 PortTemplateConsolidationData portTemplateConsolidationData = new PortTemplateConsolidationData();
158 portTemplateConsolidationData.setNodeTemplateId(portNodeTemplateId);
159 Optional<String> portNetworkRole = HeatToToscaUtil.evaluateNetworkRoleFromResourceId(portResourceId,
161 portNetworkRole.ifPresent(portTemplateConsolidationData::setNetworkRole);
162 return portTemplateConsolidationData;
166 public static Optional<SubInterfaceTemplateConsolidationData> getSubInterfaceTemplateConsolidationData(
167 TranslateTo subInterfaceTo, String subInterfaceNodeTemplateId) {
169 Optional<String> parentPortNodeTemplateId =
170 HeatToToscaUtil.getSubInterfaceParentPortNodeTemplateId(subInterfaceTo);
172 return parentPortNodeTemplateId.map(s -> getSubInterfaceTemplateConsolidationData(subInterfaceTo,
173 s, subInterfaceNodeTemplateId));
177 private static SubInterfaceTemplateConsolidationData getSubInterfaceTemplateConsolidationData(
178 TranslateTo subInterfaceTo, String parentPortNodeTemplateId, String subInterfaceNodeTemplateId) {
180 ConsolidationData consolidationData = subInterfaceTo.getContext().getConsolidationData();
181 String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(subInterfaceTo.getServiceTemplate());
183 PortConsolidationData portConsolidationData = consolidationData.getPortConsolidationData();
185 FilePortConsolidationData filePortConsolidationData =
186 portConsolidationData.getFilePortConsolidationData(serviceTemplateFileName);
188 if (filePortConsolidationData == null) {
189 filePortConsolidationData = new FilePortConsolidationData();
190 portConsolidationData.setFilePortConsolidationData(serviceTemplateFileName,
191 filePortConsolidationData);
194 PortTemplateConsolidationData portTemplateConsolidationData =
195 filePortConsolidationData.getPortTemplateConsolidationData(parentPortNodeTemplateId);
196 if (portTemplateConsolidationData == null) {
197 portTemplateConsolidationData = new PortTemplateConsolidationData();
198 portTemplateConsolidationData.setNodeTemplateId(parentPortNodeTemplateId);
199 filePortConsolidationData.setPortTemplateConsolidationData(parentPortNodeTemplateId,
200 portTemplateConsolidationData);
203 return portTemplateConsolidationData.addSubInterfaceTemplateConsolidationData(
204 subInterfaceTo.getResource(), subInterfaceNodeTemplateId, parentPortNodeTemplateId);
208 * Gets nested template consolidation data.
210 * @param context the context
211 * @param serviceTemplate the service template
212 * @param nestedNodeTemplateId the nested node template id @return the nested template
215 public static NestedTemplateConsolidationData getNestedTemplateConsolidationData(TranslationContext context,
216 ServiceTemplate serviceTemplate, String nestedHeatFileName, String nestedNodeTemplateId) {
218 if (isNestedResourceIdOccursInDifferentNestedFiles(context, nestedHeatFileName,
219 nestedNodeTemplateId)) {
220 throw new CoreException(new DuplicateResourceIdsInDifferentFilesErrorBuilder(nestedNodeTemplateId).build());
223 if (isNodeTemplatePointsToServiceTemplateWithoutNodeTemplates(
224 nestedNodeTemplateId, nestedHeatFileName, context)) {
228 ConsolidationData consolidationData = context.getConsolidationData();
229 String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate);
231 NestedConsolidationData nestedConsolidationData = consolidationData
232 .getNestedConsolidationData();
234 FileNestedConsolidationData fileNestedConsolidationData =
235 nestedConsolidationData.getFileNestedConsolidationData(serviceTemplateFileName);
237 if (fileNestedConsolidationData == null) {
238 fileNestedConsolidationData = new FileNestedConsolidationData();
239 nestedConsolidationData.setFileNestedConsolidationData(serviceTemplateFileName,
240 fileNestedConsolidationData);
243 NestedTemplateConsolidationData nestedTemplateConsolidationData =
244 fileNestedConsolidationData.getNestedTemplateConsolidationData(nestedNodeTemplateId);
245 if (nestedTemplateConsolidationData == null) {
246 nestedTemplateConsolidationData = new NestedTemplateConsolidationData();
247 nestedTemplateConsolidationData.setNodeTemplateId(nestedNodeTemplateId);
248 fileNestedConsolidationData.setNestedTemplateConsolidationData(nestedNodeTemplateId,
249 nestedTemplateConsolidationData);
252 return nestedTemplateConsolidationData;
255 public static boolean isNodeTemplatePointsToServiceTemplateWithoutNodeTemplates(String
256 nestedNodeTemplateId,
257 String nestedHeatFileName,
258 TranslationContext context) {
260 return context.isServiceTemplateWithoutNodeTemplatesSection(
261 FileUtils.getFileWithoutExtention(nestedHeatFileName))
262 || context.isNodeTemplateIdPointsToStWithoutNodeTemplates(nestedNodeTemplateId);
265 private static boolean isNestedResourceIdOccursInDifferentNestedFiles(TranslationContext context,
266 String nestedHeatFileName,
267 String nestedNodeTemplateId) {
268 return Objects.nonNull(nestedHeatFileName)
269 && context.getAllTranslatedResourceIdsFromDiffNestedFiles(nestedHeatFileName)
270 .contains(nestedNodeTemplateId);
274 * Update group id information in consolidation data.
276 * @param entityConsolidationData Entity consolidation data (Port/Compute)
277 * @param translatedGroupId Group id of which compute node is a part
279 public static void updateGroupIdInConsolidationData(EntityConsolidationData
280 entityConsolidationData,
281 String translatedGroupId) {
282 if (entityConsolidationData.getGroupIds() == null) {
283 entityConsolidationData.setGroupIds(new ArrayList<>());
285 entityConsolidationData.getGroupIds().add(translatedGroupId);
289 * Update volume information in consolidation data.
291 * @param translateTo {@link TranslateTo} object
292 * @param computeType Local type of the compute node
293 * @param computeNodeTemplateId Node template id of the compute node
294 * @param requirementAssignment RequirementAssignment object
296 public static void updateComputeConsolidationDataVolumes(TranslateTo translateTo,
298 String computeNodeTemplateId,
299 String requirementId,
300 RequirementAssignment
301 requirementAssignment) {
302 TranslationContext translationContext = translateTo.getContext();
303 ServiceTemplate serviceTemplate = translateTo.getServiceTemplate();
304 ComputeTemplateConsolidationData computeTemplateConsolidationData =
305 getComputeTemplateConsolidationData(translationContext, serviceTemplate, computeType,
306 computeNodeTemplateId);
307 computeTemplateConsolidationData.addVolume(requirementId, requirementAssignment);
312 * Update port in consolidation data.
314 * @param translateTo the translate to
315 * @param computeNodeType the compute node type
316 * @param portResourceId the port resource id
317 * @param portNodeTemplateId the port node template id
319 public static void updatePortInConsolidationData(TranslateTo translateTo,
320 String computeNodeType,
321 String portResourceId,
322 String portResourceType,
323 String portNodeTemplateId) {
324 TranslationContext translationContext = translateTo.getContext();
325 String computeNodeTemplateId = translateTo.getTranslatedId();
326 String portType = getPortType(portNodeTemplateId);
328 translationContext.getComputeConsolidationDataHandler().addPortToConsolidationData(
329 translateTo, computeNodeType, computeNodeTemplateId, portType, portNodeTemplateId);
331 ServiceTemplate serviceTemplate = translateTo.getServiceTemplate();
332 String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate);
333 translationContext.getPortConsolidationDataHandler().addConsolidationData(
334 serviceTemplateFileName, portResourceId, portResourceType, portNodeTemplateId);
338 * Update nodes connected in and out for Depends on and connectivity in consolidation data.
340 * @param translateTo the translate to
341 * @param targetResourceId the target resource id
342 * @param nodeTemplateId the source node template id
343 * @param requirementAssignment the requirement assignment
345 public static void updateNodesConnectedData(TranslateTo translateTo, String targetResourceId,
346 Resource targetResource, Resource sourceResource,
347 String nodeTemplateId, String requirementId,
348 RequirementAssignment requirementAssignment) {
349 ConsolidationEntityType consolidationEntityType = ConsolidationEntityType.OTHER;
350 consolidationEntityType.setEntityType(sourceResource, targetResource, translateTo.getContext());
351 // Add resource dependency information in nodesConnectedIn if the target node
352 // is a consolidation entity
353 if (isConsolidationEntity(consolidationEntityType.getTargetEntityType())) {
354 ConsolidationDataUtil.updateNodesConnectedIn(translateTo,
355 nodeTemplateId, consolidationEntityType.getTargetEntityType(), targetResourceId,
356 requirementId, requirementAssignment);
359 //Add resource dependency information in nodesConnectedOut if the source node
360 //is a consolidation entity
361 if (isConsolidationEntity(consolidationEntityType.getSourceEntityType())) {
362 ConsolidationDataUtil.updateNodesConnectedOut(translateTo,
363 requirementAssignment.getNode(), consolidationEntityType.getSourceEntityType(),
364 requirementId, requirementAssignment);
370 private static boolean isConsolidationEntity(ConsolidationEntityType consolidationEntityType) {
371 return ConsolidationEntityType.getSupportedConsolidationEntities().contains(consolidationEntityType);
375 * Update nodes connected from this node in consolidation data.
377 * @param translateTo the translate to
378 * @param nodeTemplateId the node template id of the target node
379 * @param consolidationEntityType the entity type (compute or port)
380 * @param requirementId the requirement id
381 * @param requirementAssignment the requirement assignment
383 public static void updateNodesConnectedOut(TranslateTo translateTo,
384 String nodeTemplateId,
385 ConsolidationEntityType consolidationEntityType,
386 String requirementId,
387 RequirementAssignment requirementAssignment) {
388 TranslationContext translationContext = translateTo.getContext();
389 translationContext.updateRequirementAssignmentIdIndex(
390 ToscaUtil.getServiceTemplateFileName(translateTo.getServiceTemplate()), translateTo.getResourceId(),
393 Optional<ConsolidationDataHandler> consolidationDataHandler =
394 translationContext.getConsolidationDataHandler(consolidationEntityType);
395 consolidationDataHandler.ifPresent(handler -> handler.addNodesConnectedOut(
396 translateTo, nodeTemplateId, requirementId, requirementAssignment));
401 * Update nodes connected from this node in consolidation data.
403 * @param translateTo the translate to
404 * @param sourceNodeTemplateId the node template id of the source node
405 * @param consolidationEntityType Entity type (compute or port)
406 * @param targetResourceId Target Resource Id
407 * @param requirementId Requirement Id
408 * @param requirementAssignment the requirement assignment
410 public static void updateNodesConnectedIn(TranslateTo translateTo, String sourceNodeTemplateId,
411 ConsolidationEntityType consolidationEntityType,
412 String targetResourceId,
413 String requirementId,
414 RequirementAssignment requirementAssignment) {
417 TranslationContext translationContext = translateTo.getContext();
418 Optional<ConsolidationDataHandler> consolidationDataHandler =
419 translationContext.getConsolidationDataHandler(consolidationEntityType);
420 String dependentNodeTemplateId = requirementAssignment.getNode();
421 consolidationDataHandler.ifPresent(
422 handler -> handler.addNodesConnectedIn(translateTo, sourceNodeTemplateId, dependentNodeTemplateId,
423 targetResourceId, requirementId, requirementAssignment));
428 * Checks if the current HEAT resource if of type compute.
430 * @param heatOrchestrationTemplate the heat orchestration template
431 * @param resourceId the resource id
432 * @return true if the resource is of compute type and false otherwise
434 public static boolean isComputeResource(HeatOrchestrationTemplate heatOrchestrationTemplate,
436 String resourceType = heatOrchestrationTemplate.getResources().get(resourceId).getType();
437 Map<String, ImplementationConfiguration> supportedComputeResources =
438 TranslationContext.getSupportedConsolidationComputeResources();
439 if (supportedComputeResources.containsKey(resourceType)) {
440 return supportedComputeResources.get(resourceType).isEnable();
446 * Checks if the current HEAT resource if of type compute.
448 * @param resource the resource
449 * @return true if the resource is of compute type and false otherwise
451 public static boolean isComputeResource(Resource resource) {
452 String resourceType = resource.getType();
453 Map<String, ImplementationConfiguration> supportedComputeResources =
454 TranslationContext.getSupportedConsolidationComputeResources();
455 if (supportedComputeResources.containsKey(resourceType)) {
456 return supportedComputeResources.get(resourceType).isEnable();
462 * Checks if the current HEAT resource if of type port.
464 * @param heatOrchestrationTemplate the heat orchestration template
465 * @param resourceId the resource id
466 * @return true if the resource is of port type and false otherwise
468 public static boolean isPortResource(HeatOrchestrationTemplate heatOrchestrationTemplate,
470 String resourceType = heatOrchestrationTemplate.getResources().get(resourceId).getType();
471 Map<String, ImplementationConfiguration> supportedPortResources =
472 TranslationContext.getSupportedConsolidationPortResources();
473 if (supportedPortResources.containsKey(resourceType)) {
474 return supportedPortResources.get(resourceType).isEnable();
480 * Checks if the current HEAT resource if of type port.
482 * @param resource the resource
483 * @return true if the resource is of port type and false otherwise
485 public static boolean isPortResource(Resource resource) {
486 String resourceType = resource.getType();
487 Map<String, ImplementationConfiguration> supportedPortResources =
488 TranslationContext.getSupportedConsolidationPortResources();
489 if (supportedPortResources.containsKey(resourceType)) {
490 return supportedPortResources.get(resourceType).isEnable();
496 * Checks if the current HEAT resource if of type volume.
498 * @param heatOrchestrationTemplate the heat orchestration template
499 * @param resourceId the resource id
500 * @return true if the resource is of volume type and false otherwise
502 public static boolean isVolumeResource(HeatOrchestrationTemplate heatOrchestrationTemplate,
504 String resourceType = heatOrchestrationTemplate.getResources().get(resourceId).getType();
505 return resourceType.equals(HeatResourcesTypes.CINDER_VOLUME_RESOURCE_TYPE.getHeatResource())
506 || resourceType.equals(HeatResourcesTypes.CINDER_VOLUME_ATTACHMENT_RESOURCE_TYPE
511 * Checks if the current HEAT resource if of type volume.
513 * @param resource the resource
514 * @return true if the resource is of volume type and false otherwise
516 public static boolean isVolumeResource(Resource resource) {
517 String resourceType = resource.getType();
518 return resourceType.equals(HeatResourcesTypes.CINDER_VOLUME_RESOURCE_TYPE.getHeatResource())
519 || resourceType.equals(HeatResourcesTypes.CINDER_VOLUME_ATTACHMENT_RESOURCE_TYPE
526 * @param portNodeTemplateId the port node template id
527 * @return the port type
529 public static String getPortType(String portNodeTemplateId) {
531 if (StringUtils.isBlank(portNodeTemplateId)) {
532 return portNodeTemplateId;
535 String formattedName = portNodeTemplateId.replaceAll(UNDERSCORE + DIGIT_REGEX + "$", "");
537 StringBuilder sb = new StringBuilder();
539 for (String token : formattedName.split(UNDERSCORE)) {
541 if (StringUtils.isNotBlank(token)) {
545 if (count != 2 || (!StringUtils.isBlank(token) && !token.matches(DIGIT_REGEX))) {
546 sb.append(token).append(UNDERSCORE);
550 return portNodeTemplateId.endsWith(UNDERSCORE) ? sb.toString() : sb.substring(0, sb.length() - 1);
554 * Update node template id for the nested node templates in the consolidation data.
556 * @param translateTo the translate to
558 public static void updateNestedNodeTemplateId(TranslateTo translateTo) {
559 TranslationContext context = translateTo.getContext();
560 ServiceTemplate serviceTemplate = translateTo.getServiceTemplate();
561 String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate);
562 // create nested in consolidation data
563 context.getNestedConsolidationDataHandler()
564 .addConsolidationData(serviceTemplateFileName, context,
565 translateTo.getHeatFileName(), translateTo.getTranslatedId());
569 public static void removeSharedResource(ServiceTemplate serviceTemplate,
570 HeatOrchestrationTemplate heatOrchestrationTemplate,
571 TranslationContext context,
573 String contrailSharedResourceId,
574 String sharedTranslatedResourceId) {
575 Optional<ConsolidationDataHandler> consolidationDataHandler =
576 ConsolidationDataUtil.getConsolidationDataHandler(heatOrchestrationTemplate, context,
577 contrailSharedResourceId);
579 consolidationDataHandler.ifPresent(
580 handler -> handler.removeParamNameFromAttrFuncList(serviceTemplate, heatOrchestrationTemplate,
581 paramName, contrailSharedResourceId, sharedTranslatedResourceId));
585 private static Optional<ConsolidationDataHandler> getConsolidationDataHandler(
586 HeatOrchestrationTemplate heatOrchestrationTemplate, TranslationContext context,
587 String contrailSharedResourceId) {
588 Resource resource = heatOrchestrationTemplate.getResources().get(contrailSharedResourceId);
589 ConsolidationEntityType consolidationEntityType = ConsolidationEntityType.OTHER;
590 consolidationEntityType.setEntityType(resource, resource, context);
591 return context.getConsolidationDataHandler(consolidationEntityType.getSourceEntityType());
594 public static void updateNodeGetAttributeIn(EntityConsolidationData entityConsolidationData,
595 String nodeTemplateId, String propertyName,
596 String attributeName) {
597 GetAttrFuncData getAttrFuncData = new GetAttrFuncData();
598 getAttrFuncData.setFieldName(propertyName);
599 getAttrFuncData.setAttributeName(attributeName);
600 entityConsolidationData.addNodesGetAttrIn(nodeTemplateId, getAttrFuncData);
604 public static void updateNodeGetAttributeOut(EntityConsolidationData entityConsolidationData,
605 String nodeTemplateId, String propertyName,
606 String attributeName) {
608 GetAttrFuncData getAttrFuncData = new GetAttrFuncData();
609 getAttrFuncData.setFieldName(propertyName);
610 getAttrFuncData.setAttributeName(attributeName);
611 entityConsolidationData.addNodesGetAttrOut(nodeTemplateId, getAttrFuncData);
615 public static void updateOutputGetAttributeInConsolidationData(EntityConsolidationData
616 entityConsolidationData,
617 String outputParameterName,
618 String attributeName) {
620 GetAttrFuncData getAttrFuncData = new GetAttrFuncData();
621 getAttrFuncData.setFieldName(outputParameterName);
622 getAttrFuncData.setAttributeName(attributeName);
623 entityConsolidationData.addOutputParamGetAttrIn(getAttrFuncData);
627 public static boolean isComputeReferenceToPortId(ComputeTemplateConsolidationData compute,
629 if (MapUtils.isEmpty(compute.getPorts())) {
632 for (List<String> portIdsPerType : compute.getPorts().values()) {
633 if (portIdsPerType.contains(portId)) {