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);
171 if (parentPortNodeTemplateId.isPresent()) {
172 return Optional.ofNullable(getSubInterfaceTemplateConsolidationData(subInterfaceTo,
173 parentPortNodeTemplateId.get(), subInterfaceNodeTemplateId));
175 return Optional.empty();
178 private static SubInterfaceTemplateConsolidationData getSubInterfaceTemplateConsolidationData(
179 TranslateTo subInterfaceTo, String parentPortNodeTemplateId, String subInterfaceNodeTemplateId) {
181 ConsolidationData consolidationData = subInterfaceTo.getContext().getConsolidationData();
182 String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(subInterfaceTo.getServiceTemplate());
184 PortConsolidationData portConsolidationData = consolidationData.getPortConsolidationData();
186 FilePortConsolidationData filePortConsolidationData =
187 portConsolidationData.getFilePortConsolidationData(serviceTemplateFileName);
189 if (filePortConsolidationData == null) {
190 filePortConsolidationData = new FilePortConsolidationData();
191 portConsolidationData.setFilePortConsolidationData(serviceTemplateFileName,
192 filePortConsolidationData);
195 PortTemplateConsolidationData portTemplateConsolidationData =
196 filePortConsolidationData.getPortTemplateConsolidationData(parentPortNodeTemplateId);
197 if (portTemplateConsolidationData == null) {
198 portTemplateConsolidationData = new PortTemplateConsolidationData();
199 portTemplateConsolidationData.setNodeTemplateId(parentPortNodeTemplateId);
200 filePortConsolidationData.setPortTemplateConsolidationData(parentPortNodeTemplateId,
201 portTemplateConsolidationData);
204 return portTemplateConsolidationData.getSubInterfaceResourceTemplateConsolidationData(
205 subInterfaceTo.getResource(), subInterfaceNodeTemplateId, parentPortNodeTemplateId);
209 * Gets nested template consolidation data.
211 * @param context the context
212 * @param serviceTemplate the service template
213 * @param nestedNodeTemplateId the nested node template id @return the nested template
216 public static NestedTemplateConsolidationData getNestedTemplateConsolidationData(TranslationContext context,
217 ServiceTemplate serviceTemplate, String nestedHeatFileName, String nestedNodeTemplateId) {
219 if (isNestedResourceIdOccursInDifferentNestedFiles(context, nestedHeatFileName,
220 nestedNodeTemplateId)) {
221 throw new CoreException(new DuplicateResourceIdsInDifferentFilesErrorBuilder(nestedNodeTemplateId).build());
224 if (isNodeTemplatePointsToServiceTemplateWithoutNodeTemplates(
225 nestedNodeTemplateId, nestedHeatFileName, context)) {
229 ConsolidationData consolidationData = context.getConsolidationData();
230 String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate);
232 NestedConsolidationData nestedConsolidationData = consolidationData
233 .getNestedConsolidationData();
235 FileNestedConsolidationData fileNestedConsolidationData =
236 nestedConsolidationData.getFileNestedConsolidationData(serviceTemplateFileName);
238 if (fileNestedConsolidationData == null) {
239 fileNestedConsolidationData = new FileNestedConsolidationData();
240 nestedConsolidationData.setFileNestedConsolidationData(serviceTemplateFileName,
241 fileNestedConsolidationData);
244 NestedTemplateConsolidationData nestedTemplateConsolidationData =
245 fileNestedConsolidationData.getNestedTemplateConsolidationData(nestedNodeTemplateId);
246 if (nestedTemplateConsolidationData == null) {
247 nestedTemplateConsolidationData = new NestedTemplateConsolidationData();
248 nestedTemplateConsolidationData.setNodeTemplateId(nestedNodeTemplateId);
249 fileNestedConsolidationData.setNestedTemplateConsolidationData(nestedNodeTemplateId,
250 nestedTemplateConsolidationData);
253 return nestedTemplateConsolidationData;
256 public static boolean isNodeTemplatePointsToServiceTemplateWithoutNodeTemplates(String
257 nestedNodeTemplateId,
258 String nestedHeatFileName,
259 TranslationContext context) {
261 return context.isServiceTemplateWithoutNodeTemplatesSection(
262 FileUtils.getFileWithoutExtention(nestedHeatFileName))
263 || context.isNodeTemplateIdPointsToStWithoutNodeTemplates(nestedNodeTemplateId);
266 private static boolean isNestedResourceIdOccursInDifferentNestedFiles(TranslationContext context,
267 String nestedHeatFileName,
268 String nestedNodeTemplateId) {
269 return Objects.nonNull(nestedHeatFileName)
270 && context.getAllTranslatedResourceIdsFromDiffNestedFiles(nestedHeatFileName)
271 .contains(nestedNodeTemplateId);
275 * Update group id information in consolidation data.
277 * @param entityConsolidationData Entity consolidation data (Port/Compute)
278 * @param translatedGroupId Group id of which compute node is a part
280 public static void updateGroupIdInConsolidationData(EntityConsolidationData
281 entityConsolidationData,
282 String translatedGroupId) {
283 if (entityConsolidationData.getGroupIds() == null) {
284 entityConsolidationData.setGroupIds(new ArrayList<>());
286 entityConsolidationData.getGroupIds().add(translatedGroupId);
290 * Update volume information in consolidation data.
292 * @param translateTo {@link TranslateTo} object
293 * @param computeType Local type of the compute node
294 * @param computeNodeTemplateId Node template id of the compute node
295 * @param requirementAssignment RequirementAssignment object
297 public static void updateComputeConsolidationDataVolumes(TranslateTo translateTo,
299 String computeNodeTemplateId,
300 String requirementId,
301 RequirementAssignment
302 requirementAssignment) {
303 TranslationContext translationContext = translateTo.getContext();
304 ServiceTemplate serviceTemplate = translateTo.getServiceTemplate();
305 ComputeTemplateConsolidationData computeTemplateConsolidationData =
306 getComputeTemplateConsolidationData(translationContext, serviceTemplate, computeType,
307 computeNodeTemplateId);
308 computeTemplateConsolidationData.addVolume(requirementId, requirementAssignment);
313 * Update port in consolidation data.
315 * @param translateTo the translate to
316 * @param computeNodeType the compute node type
317 * @param portResourceId the port resource id
318 * @param portNodeTemplateId the port node template id
320 public static void updatePortInConsolidationData(TranslateTo translateTo,
321 String computeNodeType,
322 String portResourceId,
323 String portResourceType,
324 String portNodeTemplateId) {
325 TranslationContext translationContext = translateTo.getContext();
326 ServiceTemplate serviceTemplate = translateTo.getServiceTemplate();
327 ComputeTemplateConsolidationData computeTemplateConsolidationData =
328 getComputeTemplateConsolidationData(translationContext, serviceTemplate, computeNodeType,
329 translateTo.getTranslatedId());
330 computeTemplateConsolidationData.addPort(getPortType(portNodeTemplateId), portNodeTemplateId);
331 // create port in consolidation data
332 getPortTemplateConsolidationData(translationContext, serviceTemplate, portResourceId,
333 portResourceType, portNodeTemplateId);
337 * Update nodes connected in and out for Depends on and connectivity in consolidation data.
339 * @param translateTo the translate to
340 * @param targetResourceId the target resource id
341 * @param nodeTemplateId the source node template id
342 * @param requirementAssignment the requirement assignment
344 public static void updateNodesConnectedData(TranslateTo translateTo, String targetResourceId,
345 Resource targetResource, Resource sourceResource,
346 String nodeTemplateId, String requirementId,
347 RequirementAssignment requirementAssignment) {
348 ConsolidationEntityType consolidationEntityType = ConsolidationEntityType.OTHER;
349 consolidationEntityType.setEntityType(sourceResource, targetResource, translateTo.getContext());
350 // Add resource dependency information in nodesConnectedIn if the target node
351 // is a consolidation entity
352 if (isConsolidationEntity(consolidationEntityType.getTargetEntityType())) {
353 ConsolidationDataUtil.updateNodesConnectedIn(translateTo,
354 nodeTemplateId, consolidationEntityType.getTargetEntityType(), targetResourceId,
355 requirementId, requirementAssignment);
358 //Add resource dependency information in nodesConnectedOut if the source node
359 //is a consolidation entity
360 if (isConsolidationEntity(consolidationEntityType.getSourceEntityType())) {
361 ConsolidationDataUtil.updateNodesConnectedOut(translateTo,
362 requirementAssignment.getNode(), consolidationEntityType.getSourceEntityType(),
363 requirementId, requirementAssignment);
369 private static boolean isConsolidationEntity(ConsolidationEntityType consolidationEntityType) {
370 return ConsolidationEntityType.getSupportedConsolidationEntities().contains(consolidationEntityType);
374 * Update nodes connected from this node in consolidation data.
376 * @param translateTo the translate to
377 * @param nodeTemplateId the node template id of the target node
378 * @param consolidationEntityType the entity type (compute or port)
379 * @param requirementId the requirement id
380 * @param requirementAssignment the requirement assignment
382 public static void updateNodesConnectedOut(TranslateTo translateTo,
383 String nodeTemplateId,
384 ConsolidationEntityType consolidationEntityType,
385 String requirementId,
386 RequirementAssignment requirementAssignment) {
387 TranslationContext translationContext = translateTo.getContext();
388 translationContext.updateRequirementAssignmentIdIndex(
389 ToscaUtil.getServiceTemplateFileName(translateTo.getServiceTemplate()), translateTo.getResourceId(),
392 Optional<ConsolidationDataHandler> consolidationDataHandler =
393 translationContext.getConsolidationData().getConsolidationDataHandler(consolidationEntityType);
394 consolidationDataHandler.ifPresent(handler -> handler.addNodesConnectedOut(
395 translateTo, nodeTemplateId, requirementId, requirementAssignment));
400 * Update nodes connected from this node in consolidation data.
402 * @param translateTo the translate to
403 * @param sourceNodeTemplateId the node template id of the source node
404 * @param consolidationEntityType Entity type (compute or port)
405 * @param targetResourceId Target Resource Id
406 * @param requirementId Requirement Id
407 * @param requirementAssignment the requirement assignment
409 public static void updateNodesConnectedIn(TranslateTo translateTo, String sourceNodeTemplateId,
410 ConsolidationEntityType consolidationEntityType,
411 String targetResourceId,
412 String requirementId,
413 RequirementAssignment requirementAssignment) {
416 TranslationContext translationContext = translateTo.getContext();
417 Optional<ConsolidationDataHandler> consolidationDataHandler =
418 translationContext.getConsolidationData().getConsolidationDataHandler(consolidationEntityType);
419 String dependentNodeTemplateId = requirementAssignment.getNode();
420 consolidationDataHandler.ifPresent(
421 handler -> handler.addNodesConnectedIn(translateTo, sourceNodeTemplateId, dependentNodeTemplateId,
422 targetResourceId, requirementId, requirementAssignment));
427 * Checks if the current HEAT resource if of type compute.
429 * @param heatOrchestrationTemplate the heat orchestration template
430 * @param resourceId the resource id
431 * @return true if the resource is of compute type and false otherwise
433 public static boolean isComputeResource(HeatOrchestrationTemplate heatOrchestrationTemplate,
435 String resourceType = heatOrchestrationTemplate.getResources().get(resourceId).getType();
436 Map<String, ImplementationConfiguration> supportedComputeResources =
437 TranslationContext.getSupportedConsolidationComputeResources();
438 if (supportedComputeResources.containsKey(resourceType)) {
439 return supportedComputeResources.get(resourceType).isEnable();
445 * Checks if the current HEAT resource if of type compute.
447 * @param resource the resource
448 * @return true if the resource is of compute type and false otherwise
450 public static boolean isComputeResource(Resource resource) {
451 String resourceType = resource.getType();
452 Map<String, ImplementationConfiguration> supportedComputeResources =
453 TranslationContext.getSupportedConsolidationComputeResources();
454 if (supportedComputeResources.containsKey(resourceType)) {
455 return supportedComputeResources.get(resourceType).isEnable();
461 * Checks if the current HEAT resource if of type port.
463 * @param heatOrchestrationTemplate the heat orchestration template
464 * @param resourceId the resource id
465 * @return true if the resource is of port type and false otherwise
467 public static boolean isPortResource(HeatOrchestrationTemplate heatOrchestrationTemplate,
469 String resourceType = heatOrchestrationTemplate.getResources().get(resourceId).getType();
470 Map<String, ImplementationConfiguration> supportedPortResources =
471 TranslationContext.getSupportedConsolidationPortResources();
472 if (supportedPortResources.containsKey(resourceType)) {
473 return supportedPortResources.get(resourceType).isEnable();
479 * Checks if the current HEAT resource if of type port.
481 * @param resource the resource
482 * @return true if the resource is of port type and false otherwise
484 public static boolean isPortResource(Resource resource) {
485 String resourceType = resource.getType();
486 Map<String, ImplementationConfiguration> supportedPortResources =
487 TranslationContext.getSupportedConsolidationPortResources();
488 if (supportedPortResources.containsKey(resourceType)) {
489 return supportedPortResources.get(resourceType).isEnable();
495 * Checks if the current HEAT resource if of type volume.
497 * @param heatOrchestrationTemplate the heat orchestration template
498 * @param resourceId the resource id
499 * @return true if the resource is of volume type and false otherwise
501 public static boolean isVolumeResource(HeatOrchestrationTemplate heatOrchestrationTemplate,
503 String resourceType = heatOrchestrationTemplate.getResources().get(resourceId).getType();
504 return resourceType.equals(HeatResourcesTypes.CINDER_VOLUME_RESOURCE_TYPE.getHeatResource())
505 || resourceType.equals(HeatResourcesTypes.CINDER_VOLUME_ATTACHMENT_RESOURCE_TYPE
510 * Checks if the current HEAT resource if of type volume.
512 * @param resource the resource
513 * @return true if the resource is of volume type and false otherwise
515 public static boolean isVolumeResource(Resource resource) {
516 String resourceType = resource.getType();
517 return resourceType.equals(HeatResourcesTypes.CINDER_VOLUME_RESOURCE_TYPE.getHeatResource())
518 || resourceType.equals(HeatResourcesTypes.CINDER_VOLUME_ATTACHMENT_RESOURCE_TYPE
525 * @param portNodeTemplateId the port node template id
526 * @return the port type
528 public static String getPortType(String portNodeTemplateId) {
530 if (StringUtils.isBlank(portNodeTemplateId)) {
531 return portNodeTemplateId;
534 String formattedName = portNodeTemplateId.replaceAll(UNDERSCORE + DIGIT_REGEX + "$", "");
536 StringBuilder sb = new StringBuilder();
538 for (String token : formattedName.split(UNDERSCORE)) {
540 if (StringUtils.isNotBlank(token)) {
544 if (count != 2 || (!StringUtils.isBlank(token) && !token.matches(DIGIT_REGEX))) {
545 sb.append(token).append(UNDERSCORE);
549 return portNodeTemplateId.endsWith(UNDERSCORE) ? sb.toString() : sb.substring(0, sb.length() - 1);
553 * Update node template id for the nested node templates in the consolidation data.
555 * @param translateTo the translate to
557 public static void updateNestedNodeTemplateId(TranslateTo translateTo) {
558 TranslationContext context = translateTo.getContext();
559 ServiceTemplate serviceTemplate = translateTo.getServiceTemplate();
560 getNestedTemplateConsolidationData(
561 context, serviceTemplate, translateTo.getHeatFileName(), translateTo.getTranslatedId());
564 public static void removeSharedResource(ServiceTemplate serviceTemplate,
565 HeatOrchestrationTemplate heatOrchestrationTemplate,
566 TranslationContext context,
568 String contrailSharedResourceId,
569 String sharedTranslatedResourceId) {
570 Optional<ConsolidationDataHandler> consolidationDataHandler =
571 ConsolidationDataUtil.getConsolidationDataHandler(heatOrchestrationTemplate, context,
572 contrailSharedResourceId);
574 consolidationDataHandler.ifPresent(
575 handler -> handler.removeParamNameFromAttrFuncList(serviceTemplate, heatOrchestrationTemplate,
576 paramName, contrailSharedResourceId, sharedTranslatedResourceId));
580 public static Optional<ConsolidationDataHandler> getConsolidationDataHandler(
581 HeatOrchestrationTemplate heatOrchestrationTemplate, TranslationContext context,
582 String contrailSharedResourceId) {
584 Resource resource = heatOrchestrationTemplate.getResources().get(contrailSharedResourceId);
585 ConsolidationEntityType consolidationEntityType = ConsolidationEntityType.OTHER;
586 consolidationEntityType.setEntityType(resource, resource, context);
587 return context.getConsolidationData().getConsolidationDataHandler(
588 consolidationEntityType.getSourceEntityType());
592 public static void updateNodeGetAttributeIn(EntityConsolidationData entityConsolidationData,
593 String nodeTemplateId, String propertyName,
594 String attributeName) {
595 GetAttrFuncData getAttrFuncData = new GetAttrFuncData();
596 getAttrFuncData.setFieldName(propertyName);
597 getAttrFuncData.setAttributeName(attributeName);
598 entityConsolidationData.addNodesGetAttrIn(nodeTemplateId, getAttrFuncData);
602 public static void updateNodeGetAttributeOut(EntityConsolidationData entityConsolidationData,
603 String nodeTemplateId, String propertyName,
604 String attributeName) {
606 GetAttrFuncData getAttrFuncData = new GetAttrFuncData();
607 getAttrFuncData.setFieldName(propertyName);
608 getAttrFuncData.setAttributeName(attributeName);
609 entityConsolidationData.addNodesGetAttrOut(nodeTemplateId, getAttrFuncData);
613 public static void updateOutputGetAttributeInConsolidationData(EntityConsolidationData
614 entityConsolidationData,
615 String outputParameterName,
616 String attributeName) {
618 GetAttrFuncData getAttrFuncData = new GetAttrFuncData();
619 getAttrFuncData.setFieldName(outputParameterName);
620 getAttrFuncData.setAttributeName(attributeName);
621 entityConsolidationData.addOutputParamGetAttrIn(getAttrFuncData);
625 public static boolean isComputeReferenceToPortId(ComputeTemplateConsolidationData compute,
627 if (MapUtils.isEmpty(compute.getPorts())) {
630 for (List<String> portIdsPerType : compute.getPorts().values()) {
631 if (portIdsPerType.contains(portId)) {