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.List;
21 import java.util.Objects;
22 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.ComputeConsolidationDataHandler;
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 volume information in consolidation data.
288 * @param translateTo {@link TranslateTo} object
289 * @param computeType Local type of the compute node
290 * @param computeNodeTemplateId Node template id of the compute node
291 * @param requirementAssignment RequirementAssignment object
293 public static void updateComputeConsolidationDataVolumes(TranslateTo translateTo,
295 String computeNodeTemplateId,
296 String requirementId,
297 RequirementAssignment requirementAssignment) {
298 ComputeConsolidationDataHandler handler =
299 translateTo.getContext().getComputeConsolidationDataHandler();
300 handler.addVolumeToConsolidationData(
301 translateTo, computeType, computeNodeTemplateId, requirementId, requirementAssignment);
305 * Update port in consolidation data.
307 * @param translateTo the translate to
308 * @param computeNodeType the compute node type
309 * @param portResourceId the port resource id
310 * @param portNodeTemplateId the port node template id
312 public static void updatePortInConsolidationData(TranslateTo translateTo,
313 String computeNodeType,
314 String portResourceId,
315 String portResourceType,
316 String portNodeTemplateId) {
317 TranslationContext translationContext = translateTo.getContext();
318 String computeNodeTemplateId = translateTo.getTranslatedId();
319 String portType = getPortType(portNodeTemplateId);
321 translationContext.getComputeConsolidationDataHandler().addPortToConsolidationData(
322 translateTo, computeNodeType, computeNodeTemplateId, portType, portNodeTemplateId);
324 ServiceTemplate serviceTemplate = translateTo.getServiceTemplate();
325 String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate);
326 translationContext.getPortConsolidationDataHandler().addConsolidationData(
327 serviceTemplateFileName, portResourceId, portResourceType, portNodeTemplateId);
331 * Update nodes connected in and out for Depends on and connectivity in consolidation data.
333 * @param translateTo the translate to
334 * @param targetResourceId the target resource id
335 * @param nodeTemplateId the source node template id
336 * @param requirementAssignment the requirement assignment
338 public static void updateNodesConnectedData(TranslateTo translateTo, String targetResourceId,
339 Resource targetResource, Resource sourceResource,
340 String nodeTemplateId, String requirementId,
341 RequirementAssignment requirementAssignment) {
342 ConsolidationEntityType consolidationEntityType = ConsolidationEntityType.OTHER;
343 consolidationEntityType.setEntityType(sourceResource, targetResource, translateTo.getContext());
344 // Add resource dependency information in nodesConnectedIn if the target node
345 // is a consolidation entity
346 if (isConsolidationEntity(consolidationEntityType.getTargetEntityType())) {
347 ConsolidationDataUtil.updateNodesConnectedIn(translateTo,
348 nodeTemplateId, consolidationEntityType.getTargetEntityType(), targetResourceId,
349 requirementId, requirementAssignment);
352 //Add resource dependency information in nodesConnectedOut if the source node
353 //is a consolidation entity
354 if (isConsolidationEntity(consolidationEntityType.getSourceEntityType())) {
355 ConsolidationDataUtil.updateNodesConnectedOut(translateTo,
356 requirementAssignment.getNode(), consolidationEntityType.getSourceEntityType(),
357 requirementId, requirementAssignment);
363 private static boolean isConsolidationEntity(ConsolidationEntityType consolidationEntityType) {
364 return ConsolidationEntityType.getSupportedConsolidationEntities().contains(consolidationEntityType);
368 * Update nodes connected from this node in consolidation data.
370 * @param translateTo the translate to
371 * @param nodeTemplateId the node template id of the target node
372 * @param consolidationEntityType the entity type (compute or port)
373 * @param requirementId the requirement id
374 * @param requirementAssignment the requirement assignment
376 public static void updateNodesConnectedOut(TranslateTo translateTo,
377 String nodeTemplateId,
378 ConsolidationEntityType consolidationEntityType,
379 String requirementId,
380 RequirementAssignment requirementAssignment) {
381 TranslationContext translationContext = translateTo.getContext();
382 translationContext.updateRequirementAssignmentIdIndex(
383 ToscaUtil.getServiceTemplateFileName(translateTo.getServiceTemplate()), translateTo.getResourceId(),
386 Optional<ConsolidationDataHandler> consolidationDataHandler =
387 translationContext.getConsolidationDataHandler(consolidationEntityType);
388 consolidationDataHandler.ifPresent(handler -> handler.addNodesConnectedOut(
389 translateTo, nodeTemplateId, requirementId, requirementAssignment));
394 * Update nodes connected from this node in consolidation data.
396 * @param translateTo the translate to
397 * @param sourceNodeTemplateId the node template id of the source node
398 * @param consolidationEntityType Entity type (compute or port)
399 * @param targetResourceId Target Resource Id
400 * @param requirementId Requirement Id
401 * @param requirementAssignment the requirement assignment
403 public static void updateNodesConnectedIn(TranslateTo translateTo, String sourceNodeTemplateId,
404 ConsolidationEntityType consolidationEntityType,
405 String targetResourceId,
406 String requirementId,
407 RequirementAssignment requirementAssignment) {
410 TranslationContext translationContext = translateTo.getContext();
411 Optional<ConsolidationDataHandler> consolidationDataHandler =
412 translationContext.getConsolidationDataHandler(consolidationEntityType);
413 String dependentNodeTemplateId = requirementAssignment.getNode();
414 consolidationDataHandler.ifPresent(
415 handler -> handler.addNodesConnectedIn(translateTo, sourceNodeTemplateId, dependentNodeTemplateId,
416 targetResourceId, requirementId, requirementAssignment));
421 * Checks if the current HEAT resource if of type compute.
423 * @param heatOrchestrationTemplate the heat orchestration template
424 * @param resourceId the resource id
425 * @return true if the resource is of compute type and false otherwise
427 public static boolean isComputeResource(HeatOrchestrationTemplate heatOrchestrationTemplate,
429 String resourceType = heatOrchestrationTemplate.getResources().get(resourceId).getType();
430 Map<String, ImplementationConfiguration> supportedComputeResources =
431 TranslationContext.getSupportedConsolidationComputeResources();
432 if (supportedComputeResources.containsKey(resourceType)) {
433 return supportedComputeResources.get(resourceType).isEnable();
439 * Checks if the current HEAT resource if of type compute.
441 * @param resource the resource
442 * @return true if the resource is of compute type and false otherwise
444 public static boolean isComputeResource(Resource resource) {
445 String resourceType = resource.getType();
446 Map<String, ImplementationConfiguration> supportedComputeResources =
447 TranslationContext.getSupportedConsolidationComputeResources();
448 if (supportedComputeResources.containsKey(resourceType)) {
449 return supportedComputeResources.get(resourceType).isEnable();
455 * Checks if the current HEAT resource if of type port.
457 * @param heatOrchestrationTemplate the heat orchestration template
458 * @param resourceId the resource id
459 * @return true if the resource is of port type and false otherwise
461 public static boolean isPortResource(HeatOrchestrationTemplate heatOrchestrationTemplate,
463 String resourceType = heatOrchestrationTemplate.getResources().get(resourceId).getType();
464 Map<String, ImplementationConfiguration> supportedPortResources =
465 TranslationContext.getSupportedConsolidationPortResources();
466 if (supportedPortResources.containsKey(resourceType)) {
467 return supportedPortResources.get(resourceType).isEnable();
473 * Checks if the current HEAT resource if of type port.
475 * @param resource the resource
476 * @return true if the resource is of port type and false otherwise
478 public static boolean isPortResource(Resource resource) {
479 String resourceType = resource.getType();
480 Map<String, ImplementationConfiguration> supportedPortResources =
481 TranslationContext.getSupportedConsolidationPortResources();
482 if (supportedPortResources.containsKey(resourceType)) {
483 return supportedPortResources.get(resourceType).isEnable();
489 * Checks if the current HEAT resource if of type volume.
491 * @param heatOrchestrationTemplate the heat orchestration template
492 * @param resourceId the resource id
493 * @return true if the resource is of volume type and false otherwise
495 public static boolean isVolumeResource(HeatOrchestrationTemplate heatOrchestrationTemplate,
497 String resourceType = heatOrchestrationTemplate.getResources().get(resourceId).getType();
498 return resourceType.equals(HeatResourcesTypes.CINDER_VOLUME_RESOURCE_TYPE.getHeatResource())
499 || resourceType.equals(HeatResourcesTypes.CINDER_VOLUME_ATTACHMENT_RESOURCE_TYPE
504 * Checks if the current HEAT resource if of type volume.
506 * @param resource the resource
507 * @return true if the resource is of volume type and false otherwise
509 public static boolean isVolumeResource(Resource resource) {
510 String resourceType = resource.getType();
511 return resourceType.equals(HeatResourcesTypes.CINDER_VOLUME_RESOURCE_TYPE.getHeatResource())
512 || resourceType.equals(HeatResourcesTypes.CINDER_VOLUME_ATTACHMENT_RESOURCE_TYPE
519 * @param portNodeTemplateId the port node template id
520 * @return the port type
522 public static String getPortType(String portNodeTemplateId) {
524 if (StringUtils.isBlank(portNodeTemplateId)) {
525 return portNodeTemplateId;
528 String formattedName = portNodeTemplateId.replaceAll(UNDERSCORE + DIGIT_REGEX + "$", "");
530 StringBuilder sb = new StringBuilder();
532 for (String token : formattedName.split(UNDERSCORE)) {
534 if (StringUtils.isNotBlank(token)) {
538 if (count != 2 || (!StringUtils.isBlank(token) && !token.matches(DIGIT_REGEX))) {
539 sb.append(token).append(UNDERSCORE);
543 return portNodeTemplateId.endsWith(UNDERSCORE) ? sb.toString() : sb.substring(0, sb.length() - 1);
547 * Update node template id for the nested node templates in the consolidation data.
549 * @param translateTo the translate to
551 public static void updateNestedNodeTemplateId(TranslateTo translateTo) {
552 TranslationContext context = translateTo.getContext();
553 ServiceTemplate serviceTemplate = translateTo.getServiceTemplate();
554 String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate);
555 // create nested in consolidation data
556 context.getNestedConsolidationDataHandler()
557 .addConsolidationData(serviceTemplateFileName, context,
558 translateTo.getHeatFileName(), translateTo.getTranslatedId());
562 public static void removeSharedResource(ServiceTemplate serviceTemplate,
563 HeatOrchestrationTemplate heatOrchestrationTemplate,
564 TranslationContext context,
566 String contrailSharedResourceId,
567 String sharedTranslatedResourceId) {
568 Optional<ConsolidationDataHandler> consolidationDataHandler =
569 ConsolidationDataUtil.getConsolidationDataHandler(heatOrchestrationTemplate, context,
570 contrailSharedResourceId);
572 consolidationDataHandler.ifPresent(
573 handler -> handler.removeParamNameFromAttrFuncList(serviceTemplate, heatOrchestrationTemplate,
574 paramName, contrailSharedResourceId, sharedTranslatedResourceId));
578 private static Optional<ConsolidationDataHandler> getConsolidationDataHandler(
579 HeatOrchestrationTemplate heatOrchestrationTemplate, TranslationContext context,
580 String contrailSharedResourceId) {
581 Resource resource = heatOrchestrationTemplate.getResources().get(contrailSharedResourceId);
582 ConsolidationEntityType consolidationEntityType = ConsolidationEntityType.OTHER;
583 consolidationEntityType.setEntityType(resource, resource, context);
584 return context.getConsolidationDataHandler(consolidationEntityType.getSourceEntityType());
587 public static void updateNodeGetAttributeIn(EntityConsolidationData entityConsolidationData,
588 String nodeTemplateId, String propertyName,
589 String attributeName) {
590 GetAttrFuncData getAttrFuncData = new GetAttrFuncData();
591 getAttrFuncData.setFieldName(propertyName);
592 getAttrFuncData.setAttributeName(attributeName);
593 entityConsolidationData.addNodesGetAttrIn(nodeTemplateId, getAttrFuncData);
597 public static void updateNodeGetAttributeOut(EntityConsolidationData entityConsolidationData,
598 String nodeTemplateId, String propertyName,
599 String attributeName) {
601 GetAttrFuncData getAttrFuncData = new GetAttrFuncData();
602 getAttrFuncData.setFieldName(propertyName);
603 getAttrFuncData.setAttributeName(attributeName);
604 entityConsolidationData.addNodesGetAttrOut(nodeTemplateId, getAttrFuncData);
608 public static void updateOutputGetAttributeInConsolidationData(EntityConsolidationData
609 entityConsolidationData,
610 String outputParameterName,
611 String attributeName) {
613 GetAttrFuncData getAttrFuncData = new GetAttrFuncData();
614 getAttrFuncData.setFieldName(outputParameterName);
615 getAttrFuncData.setAttributeName(attributeName);
616 entityConsolidationData.addOutputParamGetAttrIn(getAttrFuncData);
620 public static boolean isComputeReferenceToPortId(ComputeTemplateConsolidationData compute,
622 if (MapUtils.isEmpty(compute.getPorts())) {
625 for (List<String> portIdsPerType : compute.getPorts().values()) {
626 if (portIdsPerType.contains(portId)) {