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 Optional<String> portResourceId = getSubInterfaceParentPortResourceId(parentPortNodeTemplateId,
199 if (portResourceId.isPresent()) {
200 portTemplateConsolidationData = getInitPortTemplateConsolidationData(parentPortNodeTemplateId,
201 portResourceId.get(), HeatToToscaUtil.getResourceType(portResourceId.get(), subInterfaceTo
202 .getHeatOrchestrationTemplate(), subInterfaceTo.getHeatFileName()));
204 portTemplateConsolidationData = new PortTemplateConsolidationData();
205 portTemplateConsolidationData.setNodeTemplateId(parentPortNodeTemplateId);
207 filePortConsolidationData.setPortTemplateConsolidationData(parentPortNodeTemplateId,
208 portTemplateConsolidationData);
210 return portTemplateConsolidationData.addSubInterfaceTemplateConsolidationData(
211 subInterfaceTo.getResource(), subInterfaceNodeTemplateId, parentPortNodeTemplateId);
214 private static Optional<String> getSubInterfaceParentPortResourceId(String parentPortNodeTemplateId,
215 TranslateTo subInterfaceTo) {
216 Map<String, String> resourceIdTranslatedResourceIdMap =
217 subInterfaceTo.getContext().getTranslatedIds().get(subInterfaceTo.getHeatFileName());
218 if (MapUtils.isEmpty(resourceIdTranslatedResourceIdMap)) {
219 return Optional.empty();
221 for (Map.Entry<String, String> entry : resourceIdTranslatedResourceIdMap.entrySet()) {
222 if (entry.getValue().equals(parentPortNodeTemplateId)) {
223 return Optional.of(entry.getKey());
226 return Optional.empty();
230 * Gets nested template consolidation data.
232 * @param context the context
233 * @param serviceTemplate the service template
234 * @param nestedNodeTemplateId the nested node template id @return the nested template
237 public static NestedTemplateConsolidationData getNestedTemplateConsolidationData(TranslationContext context,
238 ServiceTemplate serviceTemplate, String nestedHeatFileName, String nestedNodeTemplateId) {
240 if (isNestedResourceIdOccursInDifferentNestedFiles(context, nestedHeatFileName,
241 nestedNodeTemplateId)) {
242 throw new CoreException(new DuplicateResourceIdsInDifferentFilesErrorBuilder(nestedNodeTemplateId).build());
245 if (isNodeTemplatePointsToServiceTemplateWithoutNodeTemplates(
246 nestedNodeTemplateId, nestedHeatFileName, context)) {
250 ConsolidationData consolidationData = context.getConsolidationData();
251 String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate);
253 NestedConsolidationData nestedConsolidationData = consolidationData
254 .getNestedConsolidationData();
256 FileNestedConsolidationData fileNestedConsolidationData =
257 nestedConsolidationData.getFileNestedConsolidationData(serviceTemplateFileName);
259 if (fileNestedConsolidationData == null) {
260 fileNestedConsolidationData = new FileNestedConsolidationData();
261 nestedConsolidationData.setFileNestedConsolidationData(serviceTemplateFileName,
262 fileNestedConsolidationData);
265 NestedTemplateConsolidationData nestedTemplateConsolidationData =
266 fileNestedConsolidationData.getNestedTemplateConsolidationData(nestedNodeTemplateId);
267 if (nestedTemplateConsolidationData == null) {
268 nestedTemplateConsolidationData = new NestedTemplateConsolidationData();
269 nestedTemplateConsolidationData.setNodeTemplateId(nestedNodeTemplateId);
270 fileNestedConsolidationData.setNestedTemplateConsolidationData(nestedNodeTemplateId,
271 nestedTemplateConsolidationData);
274 return nestedTemplateConsolidationData;
277 public static boolean isNodeTemplatePointsToServiceTemplateWithoutNodeTemplates(String
278 nestedNodeTemplateId,
279 String nestedHeatFileName,
280 TranslationContext context) {
282 return context.isServiceTemplateWithoutNodeTemplatesSection(
283 FileUtils.getFileWithoutExtention(nestedHeatFileName))
284 || context.isNodeTemplateIdPointsToStWithoutNodeTemplates(nestedNodeTemplateId);
287 private static boolean isNestedResourceIdOccursInDifferentNestedFiles(TranslationContext context,
288 String nestedHeatFileName,
289 String nestedNodeTemplateId) {
290 return Objects.nonNull(nestedHeatFileName)
291 && context.getAllTranslatedResourceIdsFromDiffNestedFiles(nestedHeatFileName)
292 .contains(nestedNodeTemplateId);
296 * Update group id information in consolidation data.
298 * @param entityConsolidationData Entity consolidation data (Port/Compute)
299 * @param translatedGroupId Group id of which compute node is a part
301 public static void updateGroupIdInConsolidationData(EntityConsolidationData
302 entityConsolidationData,
303 String translatedGroupId) {
304 if (entityConsolidationData.getGroupIds() == null) {
305 entityConsolidationData.setGroupIds(new ArrayList<>());
307 entityConsolidationData.getGroupIds().add(translatedGroupId);
311 * Update volume information in consolidation data.
313 * @param translateTo {@link TranslateTo} object
314 * @param computeType Local type of the compute node
315 * @param computeNodeTemplateId Node template id of the compute node
316 * @param requirementAssignment RequirementAssignment object
318 public static void updateComputeConsolidationDataVolumes(TranslateTo translateTo,
320 String computeNodeTemplateId,
321 String requirementId,
322 RequirementAssignment
323 requirementAssignment) {
324 TranslationContext translationContext = translateTo.getContext();
325 ServiceTemplate serviceTemplate = translateTo.getServiceTemplate();
326 ComputeTemplateConsolidationData computeTemplateConsolidationData =
327 getComputeTemplateConsolidationData(translationContext, serviceTemplate, computeType,
328 computeNodeTemplateId);
329 computeTemplateConsolidationData.addVolume(requirementId, requirementAssignment);
334 * Update port in consolidation data.
336 * @param translateTo the translate to
337 * @param computeNodeType the compute node type
338 * @param portResourceId the port resource id
339 * @param portNodeTemplateId the port node template id
341 public static void updatePortInConsolidationData(TranslateTo translateTo,
342 String computeNodeType,
343 String portResourceId,
344 String portResourceType,
345 String portNodeTemplateId) {
346 TranslationContext translationContext = translateTo.getContext();
347 String computeNodeTemplateId = translateTo.getTranslatedId();
348 String portType = getPortType(portNodeTemplateId);
350 translationContext.getComputeConsolidationDataHandler().addPortToConsolidationData(
351 translateTo, computeNodeType, computeNodeTemplateId, portType, portNodeTemplateId);
353 ServiceTemplate serviceTemplate = translateTo.getServiceTemplate();
354 String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate);
355 translationContext.getPortConsolidationDataHandler().addConsolidationData(
356 serviceTemplateFileName, portResourceId, portResourceType, portNodeTemplateId);
360 * Update nodes connected in and out for Depends on and connectivity in consolidation data.
362 * @param translateTo the translate to
363 * @param targetResourceId the target resource id
364 * @param nodeTemplateId the source node template id
365 * @param requirementAssignment the requirement assignment
367 public static void updateNodesConnectedData(TranslateTo translateTo, String targetResourceId,
368 Resource targetResource, Resource sourceResource,
369 String nodeTemplateId, String requirementId,
370 RequirementAssignment requirementAssignment) {
371 ConsolidationEntityType consolidationEntityType = ConsolidationEntityType.OTHER;
372 consolidationEntityType.setEntityType(sourceResource, targetResource, translateTo.getContext());
373 // Add resource dependency information in nodesConnectedIn if the target node
374 // is a consolidation entity
375 if (isConsolidationEntity(consolidationEntityType.getTargetEntityType())) {
376 ConsolidationDataUtil.updateNodesConnectedIn(translateTo,
377 nodeTemplateId, consolidationEntityType.getTargetEntityType(), targetResourceId,
378 requirementId, requirementAssignment);
381 //Add resource dependency information in nodesConnectedOut if the source node
382 //is a consolidation entity
383 if (isConsolidationEntity(consolidationEntityType.getSourceEntityType())) {
384 ConsolidationDataUtil.updateNodesConnectedOut(translateTo,
385 requirementAssignment.getNode(), consolidationEntityType.getSourceEntityType(),
386 requirementId, requirementAssignment);
392 private static boolean isConsolidationEntity(ConsolidationEntityType consolidationEntityType) {
393 return ConsolidationEntityType.getSupportedConsolidationEntities().contains(consolidationEntityType);
397 * Update nodes connected from this node in consolidation data.
399 * @param translateTo the translate to
400 * @param nodeTemplateId the node template id of the target node
401 * @param consolidationEntityType the entity type (compute or port)
402 * @param requirementId the requirement id
403 * @param requirementAssignment the requirement assignment
405 public static void updateNodesConnectedOut(TranslateTo translateTo,
406 String nodeTemplateId,
407 ConsolidationEntityType consolidationEntityType,
408 String requirementId,
409 RequirementAssignment requirementAssignment) {
410 TranslationContext translationContext = translateTo.getContext();
411 translationContext.updateRequirementAssignmentIdIndex(
412 ToscaUtil.getServiceTemplateFileName(translateTo.getServiceTemplate()), translateTo.getResourceId(),
415 Optional<ConsolidationDataHandler> consolidationDataHandler =
416 translationContext.getConsolidationDataHandler(consolidationEntityType);
417 consolidationDataHandler.ifPresent(handler -> handler.addNodesConnectedOut(
418 translateTo, nodeTemplateId, requirementId, requirementAssignment));
423 * Update nodes connected from this node in consolidation data.
425 * @param translateTo the translate to
426 * @param sourceNodeTemplateId the node template id of the source node
427 * @param consolidationEntityType Entity type (compute or port)
428 * @param targetResourceId Target Resource Id
429 * @param requirementId Requirement Id
430 * @param requirementAssignment the requirement assignment
432 public static void updateNodesConnectedIn(TranslateTo translateTo, String sourceNodeTemplateId,
433 ConsolidationEntityType consolidationEntityType,
434 String targetResourceId,
435 String requirementId,
436 RequirementAssignment requirementAssignment) {
439 TranslationContext translationContext = translateTo.getContext();
440 Optional<ConsolidationDataHandler> consolidationDataHandler =
441 translationContext.getConsolidationDataHandler(consolidationEntityType);
442 String dependentNodeTemplateId = requirementAssignment.getNode();
443 consolidationDataHandler.ifPresent(
444 handler -> handler.addNodesConnectedIn(translateTo, sourceNodeTemplateId, dependentNodeTemplateId,
445 targetResourceId, requirementId, requirementAssignment));
450 * Checks if the current HEAT resource if of type compute.
452 * @param heatOrchestrationTemplate the heat orchestration template
453 * @param resourceId the resource id
454 * @return true if the resource is of compute type and false otherwise
456 public static boolean isComputeResource(HeatOrchestrationTemplate heatOrchestrationTemplate,
458 String resourceType = heatOrchestrationTemplate.getResources().get(resourceId).getType();
459 Map<String, ImplementationConfiguration> supportedComputeResources =
460 TranslationContext.getSupportedConsolidationComputeResources();
461 if (supportedComputeResources.containsKey(resourceType)) {
462 return supportedComputeResources.get(resourceType).isEnable();
468 * Checks if the current HEAT resource if of type compute.
470 * @param resource the resource
471 * @return true if the resource is of compute type and false otherwise
473 public static boolean isComputeResource(Resource resource) {
474 String resourceType = resource.getType();
475 Map<String, ImplementationConfiguration> supportedComputeResources =
476 TranslationContext.getSupportedConsolidationComputeResources();
477 if (supportedComputeResources.containsKey(resourceType)) {
478 return supportedComputeResources.get(resourceType).isEnable();
484 * Checks if the current HEAT resource if of type port.
486 * @param heatOrchestrationTemplate the heat orchestration template
487 * @param resourceId the resource id
488 * @return true if the resource is of port type and false otherwise
490 public static boolean isPortResource(HeatOrchestrationTemplate heatOrchestrationTemplate,
492 String resourceType = heatOrchestrationTemplate.getResources().get(resourceId).getType();
493 Map<String, ImplementationConfiguration> supportedPortResources =
494 TranslationContext.getSupportedConsolidationPortResources();
495 if (supportedPortResources.containsKey(resourceType)) {
496 return supportedPortResources.get(resourceType).isEnable();
502 * Checks if the current HEAT resource if of type port.
504 * @param resource the resource
505 * @return true if the resource is of port type and false otherwise
507 public static boolean isPortResource(Resource resource) {
508 String resourceType = resource.getType();
509 Map<String, ImplementationConfiguration> supportedPortResources =
510 TranslationContext.getSupportedConsolidationPortResources();
511 if (supportedPortResources.containsKey(resourceType)) {
512 return supportedPortResources.get(resourceType).isEnable();
518 * Checks if the current HEAT resource if of type volume.
520 * @param heatOrchestrationTemplate the heat orchestration template
521 * @param resourceId the resource id
522 * @return true if the resource is of volume type and false otherwise
524 public static boolean isVolumeResource(HeatOrchestrationTemplate heatOrchestrationTemplate,
526 String resourceType = heatOrchestrationTemplate.getResources().get(resourceId).getType();
527 return resourceType.equals(HeatResourcesTypes.CINDER_VOLUME_RESOURCE_TYPE.getHeatResource())
528 || resourceType.equals(HeatResourcesTypes.CINDER_VOLUME_ATTACHMENT_RESOURCE_TYPE
533 * Checks if the current HEAT resource if of type volume.
535 * @param resource the resource
536 * @return true if the resource is of volume type and false otherwise
538 public static boolean isVolumeResource(Resource resource) {
539 String resourceType = resource.getType();
540 return resourceType.equals(HeatResourcesTypes.CINDER_VOLUME_RESOURCE_TYPE.getHeatResource())
541 || resourceType.equals(HeatResourcesTypes.CINDER_VOLUME_ATTACHMENT_RESOURCE_TYPE
548 * @param portNodeTemplateId the port node template id
549 * @return the port type
551 public static String getPortType(String portNodeTemplateId) {
553 if (StringUtils.isBlank(portNodeTemplateId)) {
554 return portNodeTemplateId;
557 String formattedName = portNodeTemplateId.replaceAll(UNDERSCORE + DIGIT_REGEX + "$", "");
559 StringBuilder sb = new StringBuilder();
561 for (String token : formattedName.split(UNDERSCORE)) {
563 if (StringUtils.isNotBlank(token)) {
567 if (count != 2 || (!StringUtils.isBlank(token) && !token.matches(DIGIT_REGEX))) {
568 sb.append(token).append(UNDERSCORE);
572 return portNodeTemplateId.endsWith(UNDERSCORE) ? sb.toString() : sb.substring(0, sb.length() - 1);
576 * Update node template id for the nested node templates in the consolidation data.
578 * @param translateTo the translate to
580 public static void updateNestedNodeTemplateId(TranslateTo translateTo) {
581 TranslationContext context = translateTo.getContext();
582 ServiceTemplate serviceTemplate = translateTo.getServiceTemplate();
583 String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate);
584 // create nested in consolidation data
585 context.getNestedConsolidationDataHandler()
586 .addConsolidationData(serviceTemplateFileName, context,
587 translateTo.getHeatFileName(), translateTo.getTranslatedId());
591 public static void removeSharedResource(ServiceTemplate serviceTemplate,
592 HeatOrchestrationTemplate heatOrchestrationTemplate,
593 TranslationContext context,
595 String contrailSharedResourceId,
596 String sharedTranslatedResourceId) {
597 Optional<ConsolidationDataHandler> consolidationDataHandler =
598 ConsolidationDataUtil.getConsolidationDataHandler(heatOrchestrationTemplate, context,
599 contrailSharedResourceId);
601 consolidationDataHandler.ifPresent(
602 handler -> handler.removeParamNameFromAttrFuncList(serviceTemplate, heatOrchestrationTemplate,
603 paramName, contrailSharedResourceId, sharedTranslatedResourceId));
607 private static Optional<ConsolidationDataHandler> getConsolidationDataHandler(
608 HeatOrchestrationTemplate heatOrchestrationTemplate, TranslationContext context,
609 String contrailSharedResourceId) {
610 Resource resource = heatOrchestrationTemplate.getResources().get(contrailSharedResourceId);
611 ConsolidationEntityType consolidationEntityType = ConsolidationEntityType.OTHER;
612 consolidationEntityType.setEntityType(resource, resource, context);
613 return context.getConsolidationDataHandler(consolidationEntityType.getSourceEntityType());
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) {
630 GetAttrFuncData getAttrFuncData = new GetAttrFuncData();
631 getAttrFuncData.setFieldName(propertyName);
632 getAttrFuncData.setAttributeName(attributeName);
633 entityConsolidationData.addNodesGetAttrOut(nodeTemplateId, getAttrFuncData);
637 public static void updateOutputGetAttributeInConsolidationData(EntityConsolidationData
638 entityConsolidationData,
639 String outputParameterName,
640 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)) {