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;
25 import org.apache.commons.collections4.MapUtils;
26 import org.apache.commons.lang3.StringUtils;
27 import org.onap.sdc.tosca.datatypes.model.RequirementAssignment;
28 import org.onap.sdc.tosca.datatypes.model.ServiceTemplate;
29 import org.openecomp.core.utilities.file.FileUtils;
30 import org.openecomp.sdc.common.errors.CoreException;
31 import org.openecomp.sdc.datatypes.configuration.ImplementationConfiguration;
32 import org.openecomp.sdc.heat.datatypes.model.HeatOrchestrationTemplate;
33 import org.openecomp.sdc.heat.datatypes.model.HeatResourcesTypes;
34 import org.openecomp.sdc.heat.datatypes.model.Resource;
35 import org.openecomp.sdc.tosca.services.ToscaUtil;
36 import org.openecomp.sdc.translator.datatypes.heattotosca.TranslationContext;
37 import org.openecomp.sdc.translator.datatypes.heattotosca.to.TranslateTo;
38 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.ComputeConsolidationData;
39 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.ComputeTemplateConsolidationData;
40 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.ConsolidationData;
41 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.ConsolidationDataHandler;
42 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.EntityConsolidationData;
43 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.FileComputeConsolidationData;
44 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.FileNestedConsolidationData;
45 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.FilePortConsolidationData;
46 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.GetAttrFuncData;
47 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.NestedConsolidationData;
48 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.NestedTemplateConsolidationData;
49 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.PortConsolidationData;
50 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.PortTemplateConsolidationData;
51 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.SubInterfaceTemplateConsolidationData;
52 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.TypeComputeConsolidationData;
53 import org.openecomp.sdc.translator.services.heattotosca.errors.DuplicateResourceIdsInDifferentFilesErrorBuilder;
57 * Utility class for consolidation data collection helper methods.
59 public class ConsolidationDataUtil {
61 private static final String UNDERSCORE = "_";
62 private static final String DIGIT_REGEX = "\\d+";
64 private ConsolidationDataUtil() {
65 // prevent instantiation of utility class
69 * Gets compute template consolidation data.
71 * @param context the translation context
72 * @param serviceTemplate the service template
73 * @param computeNodeType the compute node type
74 * @param computeNodeTemplateId the compute node template id
75 * @return the compute template consolidation data
77 public static ComputeTemplateConsolidationData getComputeTemplateConsolidationData(TranslationContext context,
78 ServiceTemplate serviceTemplate, String computeNodeType, String computeNodeTemplateId) {
80 ConsolidationData consolidationData = context.getConsolidationData();
81 String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate);
83 ComputeConsolidationData computeConsolidationData = consolidationData.getComputeConsolidationData();
85 FileComputeConsolidationData fileComputeConsolidationData =
86 computeConsolidationData.getFileComputeConsolidationData(serviceTemplateFileName);
88 if (fileComputeConsolidationData == null) {
89 fileComputeConsolidationData = new FileComputeConsolidationData();
90 computeConsolidationData.setFileComputeConsolidationData(serviceTemplateFileName,
91 fileComputeConsolidationData);
94 TypeComputeConsolidationData typeComputeConsolidationData =
95 fileComputeConsolidationData.getTypeComputeConsolidationData(computeNodeType);
96 if (typeComputeConsolidationData == null) {
97 typeComputeConsolidationData = new TypeComputeConsolidationData();
98 fileComputeConsolidationData.setTypeComputeConsolidationData(computeNodeType,
99 typeComputeConsolidationData);
102 ComputeTemplateConsolidationData computeTemplateConsolidationData =
103 typeComputeConsolidationData.getComputeTemplateConsolidationData(computeNodeTemplateId);
104 if (computeTemplateConsolidationData == null) {
105 computeTemplateConsolidationData = new ComputeTemplateConsolidationData();
106 computeTemplateConsolidationData.setNodeTemplateId(computeNodeTemplateId);
107 typeComputeConsolidationData.setComputeTemplateConsolidationData(computeNodeTemplateId,
108 computeTemplateConsolidationData);
111 return computeTemplateConsolidationData;
116 * Gets port template consolidation data.
118 * @param context the context
119 * @param serviceTemplate the service template
120 * @param portNodeTemplateId the port node template id
121 * @return the port template consolidation data
123 public static PortTemplateConsolidationData getPortTemplateConsolidationData(TranslationContext context,
124 ServiceTemplate serviceTemplate,
125 String portResourceId,
126 String portResourceType,
127 String portNodeTemplateId) {
129 ConsolidationData consolidationData = context.getConsolidationData();
130 String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate);
132 PortConsolidationData portConsolidationData = consolidationData.getPortConsolidationData();
134 FilePortConsolidationData filePortConsolidationData =
135 portConsolidationData.getFilePortConsolidationData(serviceTemplateFileName);
137 if (filePortConsolidationData == null) {
138 filePortConsolidationData = new FilePortConsolidationData();
139 portConsolidationData.setFilePortConsolidationData(serviceTemplateFileName,
140 filePortConsolidationData);
143 PortTemplateConsolidationData portTemplateConsolidationData =
144 filePortConsolidationData.getPortTemplateConsolidationData(portNodeTemplateId);
145 if (portTemplateConsolidationData == null) {
146 portTemplateConsolidationData = filePortConsolidationData
147 .createPortTemplateConsolidationData(portNodeTemplateId, portResourceId, portResourceType);
148 filePortConsolidationData.setPortTemplateConsolidationData(portNodeTemplateId,
149 portTemplateConsolidationData);
152 return portTemplateConsolidationData;
155 public static Optional<SubInterfaceTemplateConsolidationData> getSubInterfaceTemplateConsolidationData(
156 TranslateTo subInterfaceTo, String subInterfaceNodeTemplateId) {
158 Optional<String> parentPortNodeTemplateId =
159 HeatToToscaUtil.getSubInterfaceParentPortNodeTemplateId(subInterfaceTo);
161 return parentPortNodeTemplateId.map(s -> getSubInterfaceTemplateConsolidationData(subInterfaceTo,
162 s, subInterfaceNodeTemplateId));
166 private static SubInterfaceTemplateConsolidationData getSubInterfaceTemplateConsolidationData(
167 TranslateTo subInterfaceTo, String parentPortNodeTemplateId, String subInterfaceNodeTemplateId) {
169 ConsolidationData consolidationData = subInterfaceTo.getContext().getConsolidationData();
170 String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(subInterfaceTo.getServiceTemplate());
172 PortConsolidationData portConsolidationData = consolidationData.getPortConsolidationData();
174 FilePortConsolidationData filePortConsolidationData =
175 portConsolidationData.getFilePortConsolidationData(serviceTemplateFileName);
177 if (filePortConsolidationData == null) {
178 filePortConsolidationData = new FilePortConsolidationData();
179 portConsolidationData.setFilePortConsolidationData(serviceTemplateFileName,
180 filePortConsolidationData);
183 PortTemplateConsolidationData portTemplateConsolidationData =
184 filePortConsolidationData.getPortTemplateConsolidationData(parentPortNodeTemplateId);
185 if (portTemplateConsolidationData == null) {
186 Optional<String> portResourceId = getSubInterfaceParentPortResourceId(parentPortNodeTemplateId,
188 if (portResourceId.isPresent()) {
189 portTemplateConsolidationData = filePortConsolidationData.createPortTemplateConsolidationData(
190 parentPortNodeTemplateId, portResourceId.get(),
191 HeatToToscaUtil.getResourceType(portResourceId.get(), subInterfaceTo
192 .getHeatOrchestrationTemplate(), subInterfaceTo.getHeatFileName()));
194 portTemplateConsolidationData = new PortTemplateConsolidationData();
195 portTemplateConsolidationData.setNodeTemplateId(parentPortNodeTemplateId);
197 filePortConsolidationData.setPortTemplateConsolidationData(parentPortNodeTemplateId,
198 portTemplateConsolidationData);
200 return portTemplateConsolidationData.addSubInterfaceTemplateConsolidationData(
201 subInterfaceTo.getResource(), subInterfaceNodeTemplateId, parentPortNodeTemplateId);
204 private static Optional<String> getSubInterfaceParentPortResourceId(String parentPortNodeTemplateId,
205 TranslateTo subInterfaceTo) {
206 Map<String, String> resourceIdTranslatedResourceIdMap =
207 subInterfaceTo.getContext().getTranslatedIds().get(subInterfaceTo.getHeatFileName());
208 if (MapUtils.isEmpty(resourceIdTranslatedResourceIdMap)) {
209 return Optional.empty();
211 for (Map.Entry<String, String> entry : resourceIdTranslatedResourceIdMap.entrySet()) {
212 if (entry.getValue().equals(parentPortNodeTemplateId)) {
213 return Optional.of(entry.getKey());
216 return Optional.empty();
220 * Gets nested template consolidation data.
222 * @param context the context
223 * @param serviceTemplate the service template
224 * @param nestedNodeTemplateId the nested node template id @return the nested template
227 public static NestedTemplateConsolidationData getNestedTemplateConsolidationData(TranslationContext context,
228 ServiceTemplate serviceTemplate, String nestedHeatFileName, String nestedNodeTemplateId) {
230 if (isNestedResourceIdOccursInDifferentNestedFiles(context, nestedHeatFileName,
231 nestedNodeTemplateId)) {
232 throw new CoreException(new DuplicateResourceIdsInDifferentFilesErrorBuilder(nestedNodeTemplateId).build());
235 if (isNodeTemplatePointsToServiceTemplateWithoutNodeTemplates(
236 nestedNodeTemplateId, nestedHeatFileName, context)) {
240 ConsolidationData consolidationData = context.getConsolidationData();
241 String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate);
243 NestedConsolidationData nestedConsolidationData = consolidationData
244 .getNestedConsolidationData();
246 FileNestedConsolidationData fileNestedConsolidationData =
247 nestedConsolidationData.getFileNestedConsolidationData(serviceTemplateFileName);
249 if (fileNestedConsolidationData == null) {
250 fileNestedConsolidationData = new FileNestedConsolidationData();
251 nestedConsolidationData.setFileNestedConsolidationData(serviceTemplateFileName,
252 fileNestedConsolidationData);
255 NestedTemplateConsolidationData nestedTemplateConsolidationData =
256 fileNestedConsolidationData.getNestedTemplateConsolidationData(nestedNodeTemplateId);
257 if (nestedTemplateConsolidationData == null) {
258 nestedTemplateConsolidationData = new NestedTemplateConsolidationData();
259 nestedTemplateConsolidationData.setNodeTemplateId(nestedNodeTemplateId);
260 fileNestedConsolidationData.setNestedTemplateConsolidationData(nestedNodeTemplateId,
261 nestedTemplateConsolidationData);
264 return nestedTemplateConsolidationData;
267 public static boolean isNodeTemplatePointsToServiceTemplateWithoutNodeTemplates(String
268 nestedNodeTemplateId,
269 String nestedHeatFileName,
270 TranslationContext context) {
272 return context.isServiceTemplateWithoutNodeTemplatesSection(
273 FileUtils.getFileWithoutExtention(nestedHeatFileName))
274 || context.isNodeTemplateIdPointsToStWithoutNodeTemplates(nestedNodeTemplateId);
277 private static boolean isNestedResourceIdOccursInDifferentNestedFiles(TranslationContext context,
278 String nestedHeatFileName,
279 String nestedNodeTemplateId) {
280 return Objects.nonNull(nestedHeatFileName)
281 && context.getAllTranslatedResourceIdsFromDiffNestedFiles(nestedHeatFileName)
282 .contains(nestedNodeTemplateId);
286 * Update group id information in consolidation data.
288 * @param entityConsolidationData Entity consolidation data (Port/Compute)
289 * @param translatedGroupId Group id of which compute node is a part
291 public static void updateGroupIdInConsolidationData(EntityConsolidationData
292 entityConsolidationData,
293 String translatedGroupId) {
294 if (entityConsolidationData.getGroupIds() == null) {
295 entityConsolidationData.setGroupIds(new ArrayList<>());
297 entityConsolidationData.getGroupIds().add(translatedGroupId);
301 * Update volume information in consolidation data.
303 * @param translateTo {@link TranslateTo} object
304 * @param computeType Local type of the compute node
305 * @param computeNodeTemplateId Node template id of the compute node
306 * @param requirementAssignment RequirementAssignment object
308 public static void updateComputeConsolidationDataVolumes(TranslateTo translateTo,
310 String computeNodeTemplateId,
311 String requirementId,
312 RequirementAssignment
313 requirementAssignment) {
314 TranslationContext translationContext = translateTo.getContext();
315 ServiceTemplate serviceTemplate = translateTo.getServiceTemplate();
316 ComputeTemplateConsolidationData computeTemplateConsolidationData =
317 getComputeTemplateConsolidationData(translationContext, serviceTemplate, computeType,
318 computeNodeTemplateId);
319 computeTemplateConsolidationData.addVolume(requirementId, requirementAssignment);
324 * Update port in consolidation data.
326 * @param translateTo the translate to
327 * @param computeNodeType the compute node type
328 * @param portResourceId the port resource id
329 * @param portNodeTemplateId the port node template id
331 public static void updatePortInConsolidationData(TranslateTo translateTo,
332 String computeNodeType,
333 String portResourceId,
334 String portResourceType,
335 String portNodeTemplateId) {
336 TranslationContext translationContext = translateTo.getContext();
337 String computeNodeTemplateId = translateTo.getTranslatedId();
338 String portType = getPortType(portNodeTemplateId);
340 translationContext.getComputeConsolidationDataHandler().addPortToConsolidationData(
341 translateTo, computeNodeType, computeNodeTemplateId, portType, portNodeTemplateId);
343 ServiceTemplate serviceTemplate = translateTo.getServiceTemplate();
344 String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate);
345 translationContext.getPortConsolidationDataHandler().addConsolidationData(
346 serviceTemplateFileName, portResourceId, portResourceType, portNodeTemplateId);
350 * Update nodes connected in and out for Depends on and connectivity in consolidation data.
352 * @param translateTo the translate to
353 * @param targetResourceId the target resource id
354 * @param nodeTemplateId the source node template id
355 * @param requirementAssignment the requirement assignment
357 public static void updateNodesConnectedData(TranslateTo translateTo, String targetResourceId,
358 Resource targetResource, Resource sourceResource,
359 String nodeTemplateId, String requirementId,
360 RequirementAssignment requirementAssignment) {
361 ConsolidationEntityType consolidationEntityType = ConsolidationEntityType.OTHER;
362 consolidationEntityType.setEntityType(sourceResource, targetResource, translateTo.getContext());
363 // Add resource dependency information in nodesConnectedIn if the target node
364 // is a consolidation entity
365 if (isConsolidationEntity(consolidationEntityType.getTargetEntityType())) {
366 ConsolidationDataUtil.updateNodesConnectedIn(translateTo,
367 nodeTemplateId, consolidationEntityType.getTargetEntityType(), targetResourceId,
368 requirementId, requirementAssignment);
371 //Add resource dependency information in nodesConnectedOut if the source node
372 //is a consolidation entity
373 if (isConsolidationEntity(consolidationEntityType.getSourceEntityType())) {
374 ConsolidationDataUtil.updateNodesConnectedOut(translateTo,
375 requirementAssignment.getNode(), consolidationEntityType.getSourceEntityType(),
376 requirementId, requirementAssignment);
382 private static boolean isConsolidationEntity(ConsolidationEntityType consolidationEntityType) {
383 return ConsolidationEntityType.getSupportedConsolidationEntities().contains(consolidationEntityType);
387 * Update nodes connected from this node in consolidation data.
389 * @param translateTo the translate to
390 * @param nodeTemplateId the node template id of the target node
391 * @param consolidationEntityType the entity type (compute or port)
392 * @param requirementId the requirement id
393 * @param requirementAssignment the requirement assignment
395 public static void updateNodesConnectedOut(TranslateTo translateTo,
396 String nodeTemplateId,
397 ConsolidationEntityType consolidationEntityType,
398 String requirementId,
399 RequirementAssignment requirementAssignment) {
400 TranslationContext translationContext = translateTo.getContext();
401 translationContext.updateRequirementAssignmentIdIndex(
402 ToscaUtil.getServiceTemplateFileName(translateTo.getServiceTemplate()), translateTo.getResourceId(),
405 Optional<ConsolidationDataHandler> consolidationDataHandler =
406 translationContext.getConsolidationDataHandler(consolidationEntityType);
407 consolidationDataHandler.ifPresent(handler -> handler.addNodesConnectedOut(
408 translateTo, nodeTemplateId, requirementId, requirementAssignment));
413 * Update nodes connected from this node in consolidation data.
415 * @param translateTo the translate to
416 * @param sourceNodeTemplateId the node template id of the source node
417 * @param consolidationEntityType Entity type (compute or port)
418 * @param targetResourceId Target Resource Id
419 * @param requirementId Requirement Id
420 * @param requirementAssignment the requirement assignment
422 public static void updateNodesConnectedIn(TranslateTo translateTo, String sourceNodeTemplateId,
423 ConsolidationEntityType consolidationEntityType,
424 String targetResourceId,
425 String requirementId,
426 RequirementAssignment requirementAssignment) {
429 TranslationContext translationContext = translateTo.getContext();
430 Optional<ConsolidationDataHandler> consolidationDataHandler =
431 translationContext.getConsolidationDataHandler(consolidationEntityType);
432 String dependentNodeTemplateId = requirementAssignment.getNode();
433 consolidationDataHandler.ifPresent(
434 handler -> handler.addNodesConnectedIn(translateTo, sourceNodeTemplateId, dependentNodeTemplateId,
435 targetResourceId, requirementId, requirementAssignment));
440 * Checks if the current HEAT resource if of type compute.
442 * @param heatOrchestrationTemplate the heat orchestration template
443 * @param resourceId the resource id
444 * @return true if the resource is of compute type and false otherwise
446 public static boolean isComputeResource(HeatOrchestrationTemplate heatOrchestrationTemplate,
448 String resourceType = heatOrchestrationTemplate.getResources().get(resourceId).getType();
449 Map<String, ImplementationConfiguration> supportedComputeResources =
450 TranslationContext.getSupportedConsolidationComputeResources();
451 if (supportedComputeResources.containsKey(resourceType)) {
452 return supportedComputeResources.get(resourceType).isEnable();
458 * Checks if the current HEAT resource if of type compute.
460 * @param resource the resource
461 * @return true if the resource is of compute type and false otherwise
463 public static boolean isComputeResource(Resource resource) {
464 String resourceType = resource.getType();
465 Map<String, ImplementationConfiguration> supportedComputeResources =
466 TranslationContext.getSupportedConsolidationComputeResources();
467 if (supportedComputeResources.containsKey(resourceType)) {
468 return supportedComputeResources.get(resourceType).isEnable();
474 * Checks if the current HEAT resource if of type port.
476 * @param heatOrchestrationTemplate the heat orchestration template
477 * @param resourceId the resource id
478 * @return true if the resource is of port type and false otherwise
480 public static boolean isPortResource(HeatOrchestrationTemplate heatOrchestrationTemplate,
482 String resourceType = heatOrchestrationTemplate.getResources().get(resourceId).getType();
483 Map<String, ImplementationConfiguration> supportedPortResources =
484 TranslationContext.getSupportedConsolidationPortResources();
485 if (supportedPortResources.containsKey(resourceType)) {
486 return supportedPortResources.get(resourceType).isEnable();
492 * Checks if the current HEAT resource if of type port.
494 * @param resource the resource
495 * @return true if the resource is of port type and false otherwise
497 public static boolean isPortResource(Resource resource) {
498 String resourceType = resource.getType();
499 Map<String, ImplementationConfiguration> supportedPortResources =
500 TranslationContext.getSupportedConsolidationPortResources();
501 if (supportedPortResources.containsKey(resourceType)) {
502 return supportedPortResources.get(resourceType).isEnable();
508 * Checks if the current HEAT resource if of type volume.
510 * @param heatOrchestrationTemplate the heat orchestration template
511 * @param resourceId the resource id
512 * @return true if the resource is of volume type and false otherwise
514 public static boolean isVolumeResource(HeatOrchestrationTemplate heatOrchestrationTemplate,
516 String resourceType = heatOrchestrationTemplate.getResources().get(resourceId).getType();
517 return resourceType.equals(HeatResourcesTypes.CINDER_VOLUME_RESOURCE_TYPE.getHeatResource())
518 || resourceType.equals(HeatResourcesTypes.CINDER_VOLUME_ATTACHMENT_RESOURCE_TYPE
523 * Checks if the current HEAT resource if of type volume.
525 * @param resource the resource
526 * @return true if the resource is of volume type and false otherwise
528 public static boolean isVolumeResource(Resource resource) {
529 String resourceType = resource.getType();
530 return resourceType.equals(HeatResourcesTypes.CINDER_VOLUME_RESOURCE_TYPE.getHeatResource())
531 || resourceType.equals(HeatResourcesTypes.CINDER_VOLUME_ATTACHMENT_RESOURCE_TYPE
538 * @param portNodeTemplateId the port node template id
539 * @return the port type
541 public static String getPortType(String portNodeTemplateId) {
543 if (StringUtils.isBlank(portNodeTemplateId)) {
544 return portNodeTemplateId;
547 String formattedName = portNodeTemplateId.replaceAll(UNDERSCORE + DIGIT_REGEX + "$", "");
549 StringBuilder sb = new StringBuilder();
551 for (String token : formattedName.split(UNDERSCORE)) {
553 if (StringUtils.isNotBlank(token)) {
557 if (count != 2 || (!StringUtils.isBlank(token) && !token.matches(DIGIT_REGEX))) {
558 sb.append(token).append(UNDERSCORE);
562 return portNodeTemplateId.endsWith(UNDERSCORE) ? sb.toString() : sb.substring(0, sb.length() - 1);
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 String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate);
574 // create nested in consolidation data
575 context.getNestedConsolidationDataHandler()
576 .addConsolidationData(serviceTemplateFileName, context,
577 translateTo.getHeatFileName(), translateTo.getTranslatedId());
581 public static void removeSharedResource(ServiceTemplate serviceTemplate,
582 HeatOrchestrationTemplate heatOrchestrationTemplate,
583 TranslationContext context,
585 String contrailSharedResourceId,
586 String sharedTranslatedResourceId) {
587 Optional<ConsolidationDataHandler> consolidationDataHandler =
588 ConsolidationDataUtil.getConsolidationDataHandler(heatOrchestrationTemplate, context,
589 contrailSharedResourceId);
591 consolidationDataHandler.ifPresent(
592 handler -> handler.removeParamNameFromAttrFuncList(serviceTemplate, heatOrchestrationTemplate,
593 paramName, contrailSharedResourceId, sharedTranslatedResourceId));
597 private static Optional<ConsolidationDataHandler> getConsolidationDataHandler(
598 HeatOrchestrationTemplate heatOrchestrationTemplate, TranslationContext context,
599 String contrailSharedResourceId) {
600 Resource resource = heatOrchestrationTemplate.getResources().get(contrailSharedResourceId);
601 ConsolidationEntityType consolidationEntityType = ConsolidationEntityType.OTHER;
602 consolidationEntityType.setEntityType(resource, resource, context);
603 return context.getConsolidationDataHandler(consolidationEntityType.getSourceEntityType());
606 public static void updateNodeGetAttributeIn(EntityConsolidationData entityConsolidationData,
607 String nodeTemplateId, String propertyName,
608 String attributeName) {
609 GetAttrFuncData getAttrFuncData = new GetAttrFuncData();
610 getAttrFuncData.setFieldName(propertyName);
611 getAttrFuncData.setAttributeName(attributeName);
612 entityConsolidationData.addNodesGetAttrIn(nodeTemplateId, getAttrFuncData);
616 public static void updateNodeGetAttributeOut(EntityConsolidationData entityConsolidationData,
617 String nodeTemplateId, String propertyName,
618 String attributeName) {
620 GetAttrFuncData getAttrFuncData = new GetAttrFuncData();
621 getAttrFuncData.setFieldName(propertyName);
622 getAttrFuncData.setAttributeName(attributeName);
623 entityConsolidationData.addNodesGetAttrOut(nodeTemplateId, getAttrFuncData);
627 public static void updateOutputGetAttributeInConsolidationData(EntityConsolidationData
628 entityConsolidationData,
629 String outputParameterName,
630 String attributeName) {
632 GetAttrFuncData getAttrFuncData = new GetAttrFuncData();
633 getAttrFuncData.setFieldName(outputParameterName);
634 getAttrFuncData.setAttributeName(attributeName);
635 entityConsolidationData.addOutputParamGetAttrIn(getAttrFuncData);
639 public static boolean isComputeReferenceToPortId(ComputeTemplateConsolidationData compute,
641 if (MapUtils.isEmpty(compute.getPorts())) {
644 for (List<String> portIdsPerType : compute.getPorts().values()) {
645 if (portIdsPerType.contains(portId)) {