TOSCA Consolidation Data handling - Refactoring
[sdc.git] / openecomp-be / lib / openecomp-sdc-translator-lib / openecomp-sdc-translator-core / src / main / java / org / openecomp / sdc / translator / services / heattotosca / ConsolidationDataUtil.java
index 34fccc0..be28208 100644 (file)
 
 package org.openecomp.sdc.translator.services.heattotosca;
 
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Optional;
 import org.apache.commons.collections4.MapUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.onap.sdc.tosca.datatypes.model.RequirementAssignment;
+import org.onap.sdc.tosca.datatypes.model.ServiceTemplate;
 import org.openecomp.core.utilities.file.FileUtils;
 import org.openecomp.sdc.common.errors.CoreException;
 import org.openecomp.sdc.datatypes.configuration.ImplementationConfiguration;
 import org.openecomp.sdc.heat.datatypes.model.HeatOrchestrationTemplate;
 import org.openecomp.sdc.heat.datatypes.model.HeatResourcesTypes;
 import org.openecomp.sdc.heat.datatypes.model.Resource;
-import org.onap.sdc.tosca.datatypes.model.NodeTemplate;
-import org.onap.sdc.tosca.datatypes.model.RequirementAssignment;
-import org.onap.sdc.tosca.datatypes.model.ServiceTemplate;
-import org.openecomp.sdc.tosca.services.DataModelUtil;
 import org.openecomp.sdc.tosca.services.ToscaUtil;
 import org.openecomp.sdc.translator.datatypes.heattotosca.TranslationContext;
 import org.openecomp.sdc.translator.datatypes.heattotosca.to.TranslateTo;
 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.ComputeConsolidationData;
 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.ComputeTemplateConsolidationData;
 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.ConsolidationData;
+import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.ConsolidationDataHandler;
 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.EntityConsolidationData;
 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.FileComputeConsolidationData;
 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.FileNestedConsolidationData;
@@ -43,694 +47,592 @@ import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolida
 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.NestedTemplateConsolidationData;
 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.PortConsolidationData;
 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.PortTemplateConsolidationData;
-import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.RequirementAssignmentData;
 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.SubInterfaceTemplateConsolidationData;
 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.TypeComputeConsolidationData;
 import org.openecomp.sdc.translator.services.heattotosca.errors.DuplicateResourceIdsInDifferentFilesErrorBuilder;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Optional;
-
 
 /**
  * Utility class for consolidation data collection helper methods.
  */
 public class ConsolidationDataUtil {
 
-  private static final String UNDERSCORE = "_";
-  private static final String DIGIT_REGEX = "\\d+";
-
-  private ConsolidationDataUtil() {
-  }
-
-  /**
-   * Gets compute template consolidation data.
-   *
-   * @param context               the translation context
-   * @param serviceTemplate       the service template
-   * @param computeNodeType       the compute node type
-   * @param computeNodeTemplateId the compute node template id
-   * @return the compute template consolidation data
-   */
-  public static ComputeTemplateConsolidationData getComputeTemplateConsolidationData(
-      TranslationContext context,
-      ServiceTemplate serviceTemplate,
-      String computeNodeType,
-      String computeNodeTemplateId) {
-
-    ConsolidationData consolidationData = context.getConsolidationData();
-    String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate);
-
-    ComputeConsolidationData computeConsolidationData = consolidationData
-        .getComputeConsolidationData();
-
-    FileComputeConsolidationData fileComputeConsolidationData = computeConsolidationData
-        .getFileComputeConsolidationData(serviceTemplateFileName);
-
-    if (fileComputeConsolidationData == null) {
-      fileComputeConsolidationData = new FileComputeConsolidationData();
-      computeConsolidationData.setFileComputeConsolidationData(serviceTemplateFileName,
-          fileComputeConsolidationData);
-    }
+    private static final String UNDERSCORE = "_";
+    private static final String DIGIT_REGEX = "\\d+";
 
-    TypeComputeConsolidationData typeComputeConsolidationData = fileComputeConsolidationData
-        .getTypeComputeConsolidationData(computeNodeType);
-    if (typeComputeConsolidationData == null) {
-      typeComputeConsolidationData = new TypeComputeConsolidationData();
-      fileComputeConsolidationData.setTypeComputeConsolidationData(computeNodeType,
-          typeComputeConsolidationData);
+    private ConsolidationDataUtil() {
+        // prevent instantiation of utility class
     }
 
-    ComputeTemplateConsolidationData computeTemplateConsolidationData =
-        typeComputeConsolidationData.getComputeTemplateConsolidationData(computeNodeTemplateId);
-    if (computeTemplateConsolidationData == null) {
-      computeTemplateConsolidationData = new ComputeTemplateConsolidationData();
-      computeTemplateConsolidationData.setNodeTemplateId(computeNodeTemplateId);
-      typeComputeConsolidationData.setComputeTemplateConsolidationData(computeNodeTemplateId,
-          computeTemplateConsolidationData);
+    /**
+     * Gets compute template consolidation data.
+     *
+     * @param context               the translation context
+     * @param serviceTemplate       the service template
+     * @param computeNodeType       the compute node type
+     * @param computeNodeTemplateId the compute node template id
+     * @return the compute template consolidation data
+     */
+    public static ComputeTemplateConsolidationData getComputeTemplateConsolidationData(TranslationContext context,
+            ServiceTemplate serviceTemplate, String computeNodeType, String computeNodeTemplateId) {
+
+        ConsolidationData consolidationData = context.getConsolidationData();
+        String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate);
+
+        ComputeConsolidationData computeConsolidationData = consolidationData.getComputeConsolidationData();
+
+        FileComputeConsolidationData fileComputeConsolidationData =
+                computeConsolidationData.getFileComputeConsolidationData(serviceTemplateFileName);
+
+        if (fileComputeConsolidationData == null) {
+            fileComputeConsolidationData = new FileComputeConsolidationData();
+            computeConsolidationData.setFileComputeConsolidationData(serviceTemplateFileName,
+                    fileComputeConsolidationData);
+        }
+
+        TypeComputeConsolidationData typeComputeConsolidationData =
+                fileComputeConsolidationData.getTypeComputeConsolidationData(computeNodeType);
+        if (typeComputeConsolidationData == null) {
+            typeComputeConsolidationData = new TypeComputeConsolidationData();
+            fileComputeConsolidationData.setTypeComputeConsolidationData(computeNodeType,
+                    typeComputeConsolidationData);
+        }
+
+        ComputeTemplateConsolidationData computeTemplateConsolidationData =
+                typeComputeConsolidationData.getComputeTemplateConsolidationData(computeNodeTemplateId);
+        if (computeTemplateConsolidationData == null) {
+            computeTemplateConsolidationData = new ComputeTemplateConsolidationData();
+            computeTemplateConsolidationData.setNodeTemplateId(computeNodeTemplateId);
+            typeComputeConsolidationData.setComputeTemplateConsolidationData(computeNodeTemplateId,
+                    computeTemplateConsolidationData);
+        }
+
+        return computeTemplateConsolidationData;
     }
 
-    return computeTemplateConsolidationData;
-  }
-
 
-  /**
-   * Gets port template consolidation data.
-   *
-   * @param context            the context
-   * @param serviceTemplate    the service template
-   * @param portNodeTemplateId the port node template id
-   * @return the port template consolidation data
-   */
-  public static PortTemplateConsolidationData getPortTemplateConsolidationData(TranslationContext context,
-                                                                               ServiceTemplate serviceTemplate,
-                                                                               String portResourceId,
-                                                                               String portResourceType,
-                                                                               String portNodeTemplateId) {
+    /**
+     * Gets port template consolidation data.
+     *
+     * @param context            the context
+     * @param serviceTemplate    the service template
+     * @param portNodeTemplateId the port node template id
+     * @return the port template consolidation data
+     */
+    public static PortTemplateConsolidationData getPortTemplateConsolidationData(TranslationContext context,
+                                                                                        ServiceTemplate serviceTemplate,
+                                                                                        String portResourceId,
+                                                                                        String portResourceType,
+                                                                                        String portNodeTemplateId) {
+
+        ConsolidationData consolidationData = context.getConsolidationData();
+        String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate);
+
+        PortConsolidationData portConsolidationData = consolidationData.getPortConsolidationData();
+
+        FilePortConsolidationData filePortConsolidationData =
+                portConsolidationData.getFilePortConsolidationData(serviceTemplateFileName);
+
+        if (filePortConsolidationData == null) {
+            filePortConsolidationData = new FilePortConsolidationData();
+            portConsolidationData.setFilePortConsolidationData(serviceTemplateFileName,
+                    filePortConsolidationData);
+        }
+
+        PortTemplateConsolidationData portTemplateConsolidationData =
+                filePortConsolidationData.getPortTemplateConsolidationData(portNodeTemplateId);
+        if (portTemplateConsolidationData == null) {
+            portTemplateConsolidationData = getInitPortTemplateConsolidationData(portNodeTemplateId,
+                    portResourceId, portResourceType);
+            filePortConsolidationData.setPortTemplateConsolidationData(portNodeTemplateId,
+                    portTemplateConsolidationData);
+        }
+
+        return portTemplateConsolidationData;
+    }
 
-    ConsolidationData consolidationData = context.getConsolidationData();
-    String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate);
+    private static PortTemplateConsolidationData getInitPortTemplateConsolidationData(String portNodeTemplateId,
+                                                                                             String portResourceId,
+                                                                                             String portResourceType) {
+        PortTemplateConsolidationData portTemplateConsolidationData = new PortTemplateConsolidationData();
+        portTemplateConsolidationData.setNodeTemplateId(portNodeTemplateId);
+        Optional<String> portNetworkRole = HeatToToscaUtil.evaluateNetworkRoleFromResourceId(portResourceId,
+                portResourceType);
+        portNetworkRole.ifPresent(portTemplateConsolidationData::setNetworkRole);
+        return portTemplateConsolidationData;
+    }
 
-    PortConsolidationData portConsolidationData = consolidationData.getPortConsolidationData();
 
-    FilePortConsolidationData filePortConsolidationData = portConsolidationData
-        .getFilePortConsolidationData(serviceTemplateFileName);
+    public static Optional<SubInterfaceTemplateConsolidationData> getSubInterfaceTemplateConsolidationData(
+            TranslateTo subInterfaceTo, String subInterfaceNodeTemplateId) {
 
-    if (filePortConsolidationData == null) {
-      filePortConsolidationData = new FilePortConsolidationData();
-      portConsolidationData.setFilePortConsolidationData(serviceTemplateFileName,
-          filePortConsolidationData);
+        Optional<String> parentPortNodeTemplateId =
+                HeatToToscaUtil.getSubInterfaceParentPortNodeTemplateId(subInterfaceTo);
+        if (parentPortNodeTemplateId.isPresent()) {
+            return Optional.ofNullable(getSubInterfaceTemplateConsolidationData(subInterfaceTo,
+                    parentPortNodeTemplateId.get(), subInterfaceNodeTemplateId));
+        }
+        return Optional.empty();
     }
 
-    PortTemplateConsolidationData portTemplateConsolidationData =
-        filePortConsolidationData.getPortTemplateConsolidationData(portNodeTemplateId);
-    if (portTemplateConsolidationData == null) {
-      portTemplateConsolidationData = getInitPortTemplateConsolidationData(portNodeTemplateId,
-          portResourceId, portResourceType);
-      filePortConsolidationData.setPortTemplateConsolidationData(portNodeTemplateId, portTemplateConsolidationData);
-    }
+    private static SubInterfaceTemplateConsolidationData getSubInterfaceTemplateConsolidationData(
+            TranslateTo subInterfaceTo, String parentPortNodeTemplateId, String subInterfaceNodeTemplateId) {
 
-    return portTemplateConsolidationData;
-  }
-
-  private static PortTemplateConsolidationData getInitPortTemplateConsolidationData(String portNodeTemplateId,
-                                                                             String portResourceId,
-                                                                             String portResourceType) {
-    PortTemplateConsolidationData portTemplateConsolidationData = new PortTemplateConsolidationData();
-    portTemplateConsolidationData.setNodeTemplateId(portNodeTemplateId);
-    Optional<String> portNetworkRole = HeatToToscaUtil.evaluateNetworkRoleFromResourceId(portResourceId,
-        portResourceType);
-    portNetworkRole.ifPresent(portTemplateConsolidationData::setNetworkRole);
-    return portTemplateConsolidationData;
-  }
-
-  public static Optional<SubInterfaceTemplateConsolidationData> getSubInterfaceTemplateConsolidationData(
-      TranslateTo subInterfaceTo,
-      String subInterfaceNodeTemplateId) {
-    Optional<String> parentPortNodeTemplateId =
-        HeatToToscaUtil.getSubInterfaceParentPortNodeTemplateId(subInterfaceTo);
-    if (parentPortNodeTemplateId.isPresent()) {
-      return Optional.ofNullable(getSubInterfaceTemplateConsolidationData(subInterfaceTo,
-         parentPortNodeTemplateId.get(), subInterfaceNodeTemplateId));
-    }
-    return Optional.empty();
-  }
+        ConsolidationData consolidationData = subInterfaceTo.getContext().getConsolidationData();
+        String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(subInterfaceTo.getServiceTemplate());
 
-  private static SubInterfaceTemplateConsolidationData getSubInterfaceTemplateConsolidationData(
-      TranslateTo subInterfaceTo,
-      String parentPortNodeTemplateId,
-      String subInterfaceNodeTemplateId) {
+        PortConsolidationData portConsolidationData = consolidationData.getPortConsolidationData();
 
-    ConsolidationData consolidationData = subInterfaceTo.getContext().getConsolidationData();
-    String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(subInterfaceTo.getServiceTemplate());
+        FilePortConsolidationData filePortConsolidationData =
+                portConsolidationData.getFilePortConsolidationData(serviceTemplateFileName);
 
-    PortConsolidationData portConsolidationData = consolidationData.getPortConsolidationData();
+        if (filePortConsolidationData == null) {
+            filePortConsolidationData = new FilePortConsolidationData();
+            portConsolidationData.setFilePortConsolidationData(serviceTemplateFileName,
+                    filePortConsolidationData);
+        }
 
-    FilePortConsolidationData filePortConsolidationData = portConsolidationData
-        .getFilePortConsolidationData(serviceTemplateFileName);
+        PortTemplateConsolidationData portTemplateConsolidationData =
+                filePortConsolidationData.getPortTemplateConsolidationData(parentPortNodeTemplateId);
+        if (portTemplateConsolidationData == null) {
+            portTemplateConsolidationData = new PortTemplateConsolidationData();
+            portTemplateConsolidationData.setNodeTemplateId(parentPortNodeTemplateId);
+            filePortConsolidationData.setPortTemplateConsolidationData(parentPortNodeTemplateId,
+                    portTemplateConsolidationData);
+        }
 
-    if (filePortConsolidationData == null) {
-      filePortConsolidationData = new FilePortConsolidationData();
-      portConsolidationData.setFilePortConsolidationData(serviceTemplateFileName,
-          filePortConsolidationData);
+        return portTemplateConsolidationData.getSubInterfaceResourceTemplateConsolidationData(
+                subInterfaceTo.getResource(), subInterfaceNodeTemplateId, parentPortNodeTemplateId);
     }
 
-    PortTemplateConsolidationData portTemplateConsolidationData =
-        filePortConsolidationData.getPortTemplateConsolidationData(parentPortNodeTemplateId);
-    if (portTemplateConsolidationData == null) {
-      portTemplateConsolidationData = new PortTemplateConsolidationData();
-      portTemplateConsolidationData.setNodeTemplateId(parentPortNodeTemplateId);
-      filePortConsolidationData.setPortTemplateConsolidationData(parentPortNodeTemplateId,
-          portTemplateConsolidationData);
+    /**
+     * Gets nested template consolidation data.
+     *
+     * @param context              the context
+     * @param serviceTemplate      the service template
+     * @param nestedNodeTemplateId the nested node template id  @return the nested template
+     *                             consolidation data
+     */
+    public static NestedTemplateConsolidationData getNestedTemplateConsolidationData(TranslationContext context,
+            ServiceTemplate serviceTemplate, String nestedHeatFileName, String nestedNodeTemplateId) {
+
+        if (isNestedResourceIdOccursInDifferentNestedFiles(context, nestedHeatFileName,
+                nestedNodeTemplateId)) {
+            throw new CoreException(new DuplicateResourceIdsInDifferentFilesErrorBuilder(nestedNodeTemplateId).build());
+        }
+
+        if (isNodeTemplatePointsToServiceTemplateWithoutNodeTemplates(
+                nestedNodeTemplateId, nestedHeatFileName, context)) {
+            return null;
+        }
+
+        ConsolidationData consolidationData = context.getConsolidationData();
+        String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate);
+
+        NestedConsolidationData nestedConsolidationData = consolidationData
+                                                                  .getNestedConsolidationData();
+
+        FileNestedConsolidationData fileNestedConsolidationData =
+                nestedConsolidationData.getFileNestedConsolidationData(serviceTemplateFileName);
+
+        if (fileNestedConsolidationData == null) {
+            fileNestedConsolidationData = new FileNestedConsolidationData();
+            nestedConsolidationData.setFileNestedConsolidationData(serviceTemplateFileName,
+                    fileNestedConsolidationData);
+        }
+
+        NestedTemplateConsolidationData nestedTemplateConsolidationData =
+                fileNestedConsolidationData.getNestedTemplateConsolidationData(nestedNodeTemplateId);
+        if (nestedTemplateConsolidationData == null) {
+            nestedTemplateConsolidationData = new NestedTemplateConsolidationData();
+            nestedTemplateConsolidationData.setNodeTemplateId(nestedNodeTemplateId);
+            fileNestedConsolidationData.setNestedTemplateConsolidationData(nestedNodeTemplateId,
+                    nestedTemplateConsolidationData);
+        }
+
+        return nestedTemplateConsolidationData;
     }
 
-    return portTemplateConsolidationData.getSubInterfaceResourceTemplateConsolidationData(subInterfaceTo.getResource(),
-        subInterfaceNodeTemplateId, parentPortNodeTemplateId);
-  }
-
-  /**
-   * Gets nested template consolidation data.
-   *
-   * @param context              the context
-   * @param serviceTemplate      the service template
-   * @param nestedNodeTemplateId the nested node template id  @return the nested template
-   *                             consolidation data
-   */
-  public static NestedTemplateConsolidationData getNestedTemplateConsolidationData(
-      TranslationContext context,
-      ServiceTemplate serviceTemplate,
-      String nestedHeatFileName, String nestedNodeTemplateId) {
-
-    if (isNestedResourceIdOccuresInDifferentNestedFiles(context, nestedHeatFileName,
-        nestedNodeTemplateId)) {
-      throw new CoreException(
-          new DuplicateResourceIdsInDifferentFilesErrorBuilder(nestedNodeTemplateId).build());
-    }
+    public static boolean isNodeTemplatePointsToServiceTemplateWithoutNodeTemplates(String
+                                                                                            nestedNodeTemplateId,
+                                                                                           String nestedHeatFileName,
+                                                                                           TranslationContext context) {
 
-    if (isNodeTemplatePointsToServiceTemplateWithoutNodeTemplates(
-        nestedNodeTemplateId, nestedHeatFileName, context)) {
-      return null;
+        return context.isServiceTemplateWithoutNodeTemplatesSection(
+                FileUtils.getFileWithoutExtention(nestedHeatFileName))
+                       || context.isNodeTemplateIdPointsToStWithoutNodeTemplates(nestedNodeTemplateId);
     }
 
-    ConsolidationData consolidationData = context.getConsolidationData();
-    String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate);
-
-    NestedConsolidationData nestedConsolidationData = consolidationData
-        .getNestedConsolidationData();
-
-    FileNestedConsolidationData fileNestedConsolidationData = nestedConsolidationData
-        .getFileNestedConsolidationData(serviceTemplateFileName);
+    private static boolean isNestedResourceIdOccursInDifferentNestedFiles(TranslationContext context,
+                                                                                  String nestedHeatFileName,
+                                                                                  String nestedNodeTemplateId) {
+        return Objects.nonNull(nestedHeatFileName)
+                       && context.getAllTranslatedResourceIdsFromDiffNestedFiles(nestedHeatFileName)
+                                 .contains(nestedNodeTemplateId);
+    }
 
-    if (fileNestedConsolidationData == null) {
-      fileNestedConsolidationData = new FileNestedConsolidationData();
-      nestedConsolidationData.setFileNestedConsolidationData(serviceTemplateFileName,
-          fileNestedConsolidationData);
+    /**
+     * Update group id information in consolidation data.
+     *
+     * @param entityConsolidationData Entity consolidation data (Port/Compute)
+     * @param translatedGroupId       Group id of which compute node is a part
+     */
+    public static void updateGroupIdInConsolidationData(EntityConsolidationData
+                                                                entityConsolidationData,
+                                                               String translatedGroupId) {
+        if (entityConsolidationData.getGroupIds() == null) {
+            entityConsolidationData.setGroupIds(new ArrayList<>());
+        }
+        entityConsolidationData.getGroupIds().add(translatedGroupId);
     }
 
-    NestedTemplateConsolidationData nestedTemplateConsolidationData =
-        fileNestedConsolidationData.getNestedTemplateConsolidationData(nestedNodeTemplateId);
-    if (nestedTemplateConsolidationData == null) {
-      nestedTemplateConsolidationData = new NestedTemplateConsolidationData();
-      nestedTemplateConsolidationData.setNodeTemplateId(nestedNodeTemplateId);
-      fileNestedConsolidationData.setNestedTemplateConsolidationData(nestedNodeTemplateId,
-          nestedTemplateConsolidationData);
+    /**
+     * Update volume information in consolidation data.
+     *
+     * @param translateTo           {@link TranslateTo} object
+     * @param computeType           Local type of the compute node
+     * @param computeNodeTemplateId Node template id of the compute node
+     * @param requirementAssignment RequirementAssignment object
+     */
+    public static void updateComputeConsolidationDataVolumes(TranslateTo translateTo,
+                                                                    String computeType,
+                                                                    String computeNodeTemplateId,
+                                                                    String requirementId,
+                                                                    RequirementAssignment
+                                                                            requirementAssignment) {
+        TranslationContext translationContext = translateTo.getContext();
+        ServiceTemplate serviceTemplate = translateTo.getServiceTemplate();
+        ComputeTemplateConsolidationData computeTemplateConsolidationData =
+                getComputeTemplateConsolidationData(translationContext, serviceTemplate, computeType,
+                        computeNodeTemplateId);
+        computeTemplateConsolidationData.addVolume(requirementId, requirementAssignment);
     }
 
-    return nestedTemplateConsolidationData;
-  }
 
-  public static boolean isNodeTemplatePointsToServiceTemplateWithoutNodeTemplates(String
-                                                                                      nestedNodeTemplateId,
-                                                                                  String nestedHeatFileName,
-                                                                                  TranslationContext context) {
-
-    return context.isServiceTemplateWithoutNodeTemplatesSection(
-        FileUtils.getFileWithoutExtention(nestedHeatFileName))
-        || context.isNodeTemplateIdPointsToStWithoutNodeTemplates(nestedNodeTemplateId);
-  }
-
-  private static boolean isNestedResourceIdOccuresInDifferentNestedFiles(TranslationContext context,
-                                                                         String nestedHeatFileName,
-                                                                         String nestedNodeTemplateId) {
-    return Objects.nonNull(nestedHeatFileName)
-        && context.getAllTranslatedResourceIdsFromDiffNestedFiles(nestedHeatFileName)
-        .contains(nestedNodeTemplateId);
-  }
-
-  /**
-   * Update group id information in consolidation data.
-   *
-   * @param entityConsolidationData Entity consolidation data (Port/Compute)
-   * @param translatedGroupId       Group id of which compute node is a part
-   */
-  public static void updateGroupIdInConsolidationData(EntityConsolidationData
-                                                          entityConsolidationData,
-                                                      String translatedGroupId) {
-    if (entityConsolidationData.getGroupIds() == null) {
-      entityConsolidationData.setGroupIds(new ArrayList<>());
+    /**
+     * Update port in consolidation data.
+     *
+     * @param translateTo        the translate to
+     * @param computeNodeType    the compute node type
+     * @param portResourceId     the port resource id
+     * @param portNodeTemplateId the port node template id
+     */
+    public static void updatePortInConsolidationData(TranslateTo translateTo,
+                                                            String computeNodeType,
+                                                            String portResourceId,
+                                                            String portResourceType,
+                                                            String portNodeTemplateId) {
+        TranslationContext translationContext = translateTo.getContext();
+        ServiceTemplate serviceTemplate = translateTo.getServiceTemplate();
+        ComputeTemplateConsolidationData computeTemplateConsolidationData =
+                getComputeTemplateConsolidationData(translationContext, serviceTemplate, computeNodeType,
+                        translateTo.getTranslatedId());
+        computeTemplateConsolidationData.addPort(getPortType(portNodeTemplateId), portNodeTemplateId);
+        // create port in consolidation data
+        getPortTemplateConsolidationData(translationContext, serviceTemplate, portResourceId,
+                portResourceType, portNodeTemplateId);
     }
-    entityConsolidationData.getGroupIds().add(translatedGroupId);
-  }
-
-  /**
-   * Update volume information in consolidation data.
-   *
-   * @param translateTo           {@link TranslateTo} object
-   * @param computeType           Local type of the compute node
-   * @param computeNodeTemplateId Node template id of the compute node
-   * @param requirementAssignment RequirementAssignment object
-   */
-  public static void updateComputeConsolidationDataVolumes(TranslateTo translateTo,
-                                                           String computeType,
-                                                           String computeNodeTemplateId,
-                                                           String requirementId,
-                                                           RequirementAssignment
-                                                               requirementAssignment) {
-    TranslationContext translationContext = translateTo.getContext();
-    ServiceTemplate serviceTemplate = translateTo.getServiceTemplate();
-    ComputeTemplateConsolidationData computeTemplateConsolidationData =
-        getComputeTemplateConsolidationData(translationContext, serviceTemplate, computeType,
-            computeNodeTemplateId);
-    computeTemplateConsolidationData.addVolume(requirementId, requirementAssignment);
-  }
-
-
-  /**
-   * Update port in consolidation data.
-   *
-   * @param translateTo        the translate to
-   * @param computeNodeType    the compute node type
-   * @param portResourceId     the port resource id
-   * @param portNodeTemplateId the port node template id
-   */
-  public static void updatePortInConsolidationData(TranslateTo translateTo,
-                                                   String computeNodeType,
-                                                   String portResourceId,
-                                                   String portResourceType,
-                                                   String portNodeTemplateId) {
-    TranslationContext translationContext = translateTo.getContext();
-    ServiceTemplate serviceTemplate = translateTo.getServiceTemplate();
-    ComputeTemplateConsolidationData computeTemplateConsolidationData =
-        getComputeTemplateConsolidationData(translationContext, serviceTemplate, computeNodeType,
-            translateTo.getTranslatedId());
-    computeTemplateConsolidationData.addPort(getPortType(portNodeTemplateId), portNodeTemplateId);
-    // create port in consolidation data
-    getPortTemplateConsolidationData(translationContext, serviceTemplate, portResourceId,
-        portResourceType, portNodeTemplateId);
-  }
-
-  /**
-   * Update nodes connected in and out for Depends on and connectivity in consolidation data.
-   *
-   * @param translateTo           the translate to
-   * @param targetResourceId      the target resource id
-   * @param nodeTemplateId        the source node template id
-   * @param requirementAssignment the requirement assignment
-   */
-  public static void updateNodesConnectedData(TranslateTo translateTo, String targetResourceId,
-                                              Resource targetResource, Resource sourceResource,
-                                              String nodeTemplateId, String requirementId,
-                                              RequirementAssignment requirementAssignment) {
-    ConsolidationEntityType consolidationEntityType = ConsolidationEntityType.OTHER;
-    consolidationEntityType.setEntityType(sourceResource, targetResource, translateTo.getContext());
-    // Add resource dependency information in nodesConnectedIn if the target node
-    // is a consolidation entity
-    if (isConsolidationEntity(consolidationEntityType.getTargetEntityType())) {
-      ConsolidationDataUtil.updateNodesConnectedIn(translateTo,
-          nodeTemplateId, consolidationEntityType.getTargetEntityType(), targetResourceId,
-          requirementId, requirementAssignment);
+
+    /**
+     * Update nodes connected in and out for Depends on and connectivity in consolidation data.
+     *
+     * @param translateTo           the translate to
+     * @param targetResourceId      the target resource id
+     * @param nodeTemplateId        the source node template id
+     * @param requirementAssignment the requirement assignment
+     */
+    public static void updateNodesConnectedData(TranslateTo translateTo, String targetResourceId,
+                                                       Resource targetResource, Resource sourceResource,
+                                                       String nodeTemplateId, String requirementId,
+                                                       RequirementAssignment requirementAssignment) {
+        ConsolidationEntityType consolidationEntityType = ConsolidationEntityType.OTHER;
+        consolidationEntityType.setEntityType(sourceResource, targetResource, translateTo.getContext());
+        // Add resource dependency information in nodesConnectedIn if the target node
+        // is a consolidation entity
+        if (isConsolidationEntity(consolidationEntityType.getTargetEntityType())) {
+            ConsolidationDataUtil.updateNodesConnectedIn(translateTo,
+                    nodeTemplateId, consolidationEntityType.getTargetEntityType(), targetResourceId,
+                    requirementId, requirementAssignment);
+        }
+
+        //Add resource dependency information in nodesConnectedOut if the source node
+        //is a consolidation entity
+        if (isConsolidationEntity(consolidationEntityType.getSourceEntityType())) {
+            ConsolidationDataUtil.updateNodesConnectedOut(translateTo,
+                    requirementAssignment.getNode(), consolidationEntityType.getSourceEntityType(),
+                    requirementId, requirementAssignment);
+
+        }
     }
 
-    //Add resource dependency information in nodesConnectedOut if the source node
-    //is a consolidation entity
-    if (isConsolidationEntity(consolidationEntityType.getSourceEntityType())) {
-      ConsolidationDataUtil.updateNodesConnectedOut(translateTo,
-          requirementAssignment.getNode(), consolidationEntityType.getSourceEntityType(),
-          requirementId, requirementAssignment);
 
-    }
-  }
-
-
-  private static boolean isConsolidationEntity(ConsolidationEntityType consolidationEntityType) {
-    return ConsolidationEntityType.getSupportedConsolidationEntities().contains(consolidationEntityType);
-  }
-
-  /**
-   * Update nodes connected from this node in consolidation data.
-   *
-   * @param translateTo             the translate to
-   * @param nodeTemplateId          the node template id of the target node
-   * @param consolidationEntityType the entity type (compute or port)
-   * @param requirementId           the requirement id
-   * @param requirementAssignment   the requirement assignment
-   */
-  public static void updateNodesConnectedOut(TranslateTo translateTo,
-                                             String nodeTemplateId,
-                                             ConsolidationEntityType consolidationEntityType,
-                                             String requirementId,
-                                             RequirementAssignment requirementAssignment) {
-    EntityConsolidationData entityConsolidationData = null;
-    TranslationContext translationContext = translateTo.getContext();
-    ServiceTemplate serviceTemplate = translateTo.getServiceTemplate();
-
-    translationContext.updateRequirementAssignmentIdIndex(ToscaUtil.getServiceTemplateFileName
-        (translateTo.getServiceTemplate()), translateTo.getResourceId(), requirementId);
-
-    RequirementAssignmentData requirementAssignmentData = new RequirementAssignmentData(
-        requirementId, requirementAssignment);
-
-    if (consolidationEntityType == ConsolidationEntityType.COMPUTE) {
-      String nodeType = DataModelUtil.getNodeTemplate(serviceTemplate, translateTo
-          .getTranslatedId()).getType();
-      entityConsolidationData = getComputeTemplateConsolidationData(translationContext,
-          serviceTemplate, nodeType, translateTo.getTranslatedId());
-    } else if (consolidationEntityType == ConsolidationEntityType.PORT) {
-      entityConsolidationData = getPortTemplateConsolidationData(translationContext, serviceTemplate,
-          translateTo.getResourceId(), translateTo.getResource().getType(), translateTo
-          .getTranslatedId());
-    } else if (consolidationEntityType == ConsolidationEntityType.SUB_INTERFACE
-        && Objects.nonNull(serviceTemplate.getTopology_template().getNode_templates()
-        .get(translateTo.getTranslatedId()))) {
-      Optional<SubInterfaceTemplateConsolidationData> subInterfaceTemplateConsolidationData =
-          getSubInterfaceTemplateConsolidationData(translateTo, translateTo.getTranslatedId());
-      if (subInterfaceTemplateConsolidationData.isPresent()) {
-        entityConsolidationData = subInterfaceTemplateConsolidationData.get();
-      }
-    } else if (consolidationEntityType == ConsolidationEntityType.VFC_NESTED
-        || consolidationEntityType == ConsolidationEntityType.NESTED) {
-      entityConsolidationData =
-          getNestedTemplateConsolidationData(translationContext, serviceTemplate,
-              translateTo.getHeatFileName(),
-              translateTo.getTranslatedId());
+    private static boolean isConsolidationEntity(ConsolidationEntityType consolidationEntityType) {
+        return ConsolidationEntityType.getSupportedConsolidationEntities().contains(consolidationEntityType);
     }
 
-    if (Objects.nonNull(entityConsolidationData)) {
-      if (Objects.isNull(entityConsolidationData.getNodesConnectedOut())) {
-        entityConsolidationData.setNodesConnectedOut(new HashMap<>());
-      }
+    /**
+     * Update nodes connected from this node in consolidation data.
+     *
+     * @param translateTo             the translate to
+     * @param nodeTemplateId          the node template id of the target node
+     * @param consolidationEntityType the entity type (compute or port)
+     * @param requirementId           the requirement id
+     * @param requirementAssignment   the requirement assignment
+     */
+    public static void updateNodesConnectedOut(TranslateTo translateTo,
+                                                      String nodeTemplateId,
+                                                      ConsolidationEntityType consolidationEntityType,
+                                                      String requirementId,
+                                                      RequirementAssignment requirementAssignment) {
+        TranslationContext translationContext = translateTo.getContext();
+        translationContext.updateRequirementAssignmentIdIndex(
+                ToscaUtil.getServiceTemplateFileName(translateTo.getServiceTemplate()), translateTo.getResourceId(),
+                requirementId);
+
+        Optional<ConsolidationDataHandler> consolidationDataHandler =
+                translationContext.getConsolidationData().getConsolidationDataHandler(consolidationEntityType);
+        consolidationDataHandler.ifPresent(handler -> handler.addNodesConnectedOut(
+                translateTo, nodeTemplateId, requirementId, requirementAssignment));
 
-      entityConsolidationData.getNodesConnectedOut()
-          .computeIfAbsent(nodeTemplateId, k -> new ArrayList<>())
-          .add(requirementAssignmentData);
-    }
-  }
-
-  /**
-   * Update nodes connected from this node in consolidation data.
-   *
-   * @param translateTo             the translate to
-   * @param sourceNodeTemplateId    the node template id of the source node
-   * @param consolidationEntityType Entity type (compute or port)
-   * @param requirementId           Requirement Id
-   * @param requirementAssignment   the requirement assignment
-   */
-  public static void updateNodesConnectedIn(TranslateTo translateTo, String sourceNodeTemplateId,
-                                            ConsolidationEntityType consolidationEntityType,
-                                            String targetResourceId,
-                                            String requirementId,
-                                            RequirementAssignment requirementAssignment) {
-    EntityConsolidationData entityConsolidationData = null;
-    TranslationContext translationContext = translateTo.getContext();
-    ServiceTemplate serviceTemplate = translateTo.getServiceTemplate();
-    RequirementAssignmentData requirementAssignmentData = new RequirementAssignmentData(
-        requirementId, requirementAssignment);
-    String dependentNodeTemplateId = requirementAssignment.getNode();
-    if (consolidationEntityType == ConsolidationEntityType.COMPUTE) {
-      NodeTemplate computeNodeTemplate = DataModelUtil.getNodeTemplate(serviceTemplate,
-          dependentNodeTemplateId);
-      String nodeType;
-      if (Objects.isNull(computeNodeTemplate)) {
-        Resource targetResource =
-            translateTo.getHeatOrchestrationTemplate().getResources().get(targetResourceId);
-        NameExtractor nodeTypeNameExtractor =
-            TranslationContext.getNameExtractorImpl(targetResource.getType());
-        nodeType =
-            nodeTypeNameExtractor.extractNodeTypeName(translateTo.getHeatOrchestrationTemplate()
-                    .getResources().get(dependentNodeTemplateId),
-                dependentNodeTemplateId, dependentNodeTemplateId);
-      } else {
-        nodeType = computeNodeTemplate.getType();
-      }
-
-      entityConsolidationData = getComputeTemplateConsolidationData(translationContext,
-          serviceTemplate, nodeType, dependentNodeTemplateId);
-    } else if (consolidationEntityType == ConsolidationEntityType.PORT) {
-      entityConsolidationData = getPortTemplateConsolidationData(translationContext, serviceTemplate,
-          translateTo.getResourceId(), translateTo.getResource().getType(), dependentNodeTemplateId);
-    }  else if (consolidationEntityType == ConsolidationEntityType.SUB_INTERFACE) {
-      Resource targetResource =
-          translateTo.getHeatOrchestrationTemplate().getResources().get(targetResourceId);
-      TranslateTo subInterfaceTo = new TranslateTo(translateTo.getHeatFileName(), serviceTemplate, translateTo
-          .getHeatOrchestrationTemplate(), targetResource, targetResourceId, null, translationContext);
-      Optional<SubInterfaceTemplateConsolidationData> subInterfaceTemplateConsolidationData =
-          getSubInterfaceTemplateConsolidationData(subInterfaceTo, targetResourceId);
-      if (subInterfaceTemplateConsolidationData.isPresent()) {
-        entityConsolidationData = subInterfaceTemplateConsolidationData.get();
-      }
-    } else if (consolidationEntityType == ConsolidationEntityType.NESTED
-        || consolidationEntityType == ConsolidationEntityType.VFC_NESTED) {
-      entityConsolidationData = getNestedTemplateConsolidationData(translationContext,
-          serviceTemplate, translateTo.getHeatFileName(), dependentNodeTemplateId);
     }
 
-    if (entityConsolidationData != null) {
-      if (entityConsolidationData.getNodesConnectedIn() == null) {
-        entityConsolidationData.setNodesConnectedIn(new HashMap<>());
-      }
+    /**
+     * Update nodes connected from this node in consolidation data.
+     *
+     * @param translateTo             the translate to
+     * @param sourceNodeTemplateId    the node template id of the source node
+     * @param consolidationEntityType Entity type (compute or port)
+     * @param targetResourceId           Target Resource Id
+     * @param requirementId           Requirement Id
+     * @param requirementAssignment   the requirement assignment
+     */
+    public static void updateNodesConnectedIn(TranslateTo translateTo, String sourceNodeTemplateId,
+                                                     ConsolidationEntityType consolidationEntityType,
+                                                     String targetResourceId,
+                                                     String requirementId,
+                                                     RequirementAssignment requirementAssignment) {
+
+
+        TranslationContext translationContext = translateTo.getContext();
+        Optional<ConsolidationDataHandler> consolidationDataHandler =
+                translationContext.getConsolidationData().getConsolidationDataHandler(consolidationEntityType);
+        String dependentNodeTemplateId = requirementAssignment.getNode();
+        consolidationDataHandler.ifPresent(
+                handler -> handler.addNodesConnectedIn(translateTo, sourceNodeTemplateId, dependentNodeTemplateId,
+                        targetResourceId, requirementId, requirementAssignment));
 
-      entityConsolidationData.getNodesConnectedIn()
-          .computeIfAbsent(sourceNodeTemplateId, k -> new ArrayList<>())
-          .add(requirementAssignmentData);
+    }
 
+    /**
+     * Checks if the current HEAT resource if of type compute.
+     *
+     * @param heatOrchestrationTemplate the heat orchestration template
+     * @param resourceId                the resource id
+     * @return true if the resource is of compute type and false otherwise
+     */
+    public static boolean isComputeResource(HeatOrchestrationTemplate heatOrchestrationTemplate,
+                                                   String resourceId) {
+        String resourceType = heatOrchestrationTemplate.getResources().get(resourceId).getType();
+        Map<String, ImplementationConfiguration> supportedComputeResources =
+                TranslationContext.getSupportedConsolidationComputeResources();
+        if (supportedComputeResources.containsKey(resourceType)) {
+            return supportedComputeResources.get(resourceType).isEnable();
+        }
+        return false;
     }
-  }
-
-  /**
-   * Checks if the current HEAT resource if of type compute.
-   *
-   * @param heatOrchestrationTemplate the heat orchestration template
-   * @param resourceId                the resource id
-   * @return true if the resource is of compute type and false otherwise
-   */
-  public static boolean isComputeResource(HeatOrchestrationTemplate heatOrchestrationTemplate,
-                                          String resourceId) {
-    String resourceType = heatOrchestrationTemplate.getResources().get(resourceId).getType();
-    Map<String, ImplementationConfiguration> supportedComputeResources = TranslationContext
-        .getSupportedConsolidationComputeResources();
-    if (supportedComputeResources.containsKey(resourceType)) {
-      return supportedComputeResources.get(resourceType).isEnable();
+
+    /**
+     * Checks if the current HEAT resource if of type compute.
+     *
+     * @param resource the resource
+     * @return true if the resource is of compute type and false otherwise
+     */
+    public static boolean isComputeResource(Resource resource) {
+        String resourceType = resource.getType();
+        Map<String, ImplementationConfiguration> supportedComputeResources =
+                TranslationContext.getSupportedConsolidationComputeResources();
+        if (supportedComputeResources.containsKey(resourceType)) {
+            return supportedComputeResources.get(resourceType).isEnable();
+        }
+        return false;
     }
-    return false;
-  }
-
-  /**
-   * Checks if the current HEAT resource if of type compute.
-   *
-   * @param resource the resource
-   * @return true if the resource is of compute type and false otherwise
-   */
-  public static boolean isComputeResource(Resource resource) {
-    String resourceType = resource.getType();
-    Map<String, ImplementationConfiguration> supportedComputeResources = TranslationContext
-        .getSupportedConsolidationComputeResources();
-    if (supportedComputeResources.containsKey(resourceType)) {
-      return supportedComputeResources.get(resourceType).isEnable();
+
+    /**
+     * Checks if the current HEAT resource if of type port.
+     *
+     * @param heatOrchestrationTemplate the heat orchestration template
+     * @param resourceId                the resource id
+     * @return true if the resource is of port type and false otherwise
+     */
+    public static boolean isPortResource(HeatOrchestrationTemplate heatOrchestrationTemplate,
+                                                String resourceId) {
+        String resourceType = heatOrchestrationTemplate.getResources().get(resourceId).getType();
+        Map<String, ImplementationConfiguration> supportedPortResources =
+                TranslationContext.getSupportedConsolidationPortResources();
+        if (supportedPortResources.containsKey(resourceType)) {
+            return supportedPortResources.get(resourceType).isEnable();
+        }
+        return false;
     }
-    return false;
-  }
-
-  /**
-   * Checks if the current HEAT resource if of type port.
-   *
-   * @param heatOrchestrationTemplate the heat orchestration template
-   * @param resourceId                the resource id
-   * @return true if the resource is of port type and false otherwise
-   */
-  public static boolean isPortResource(HeatOrchestrationTemplate heatOrchestrationTemplate,
-                                       String resourceId) {
-    String resourceType = heatOrchestrationTemplate.getResources().get(resourceId).getType();
-    Map<String, ImplementationConfiguration> supportedPortResources = TranslationContext
-        .getSupportedConsolidationPortResources();
-    if (supportedPortResources.containsKey(resourceType)) {
-      return supportedPortResources.get(resourceType).isEnable();
+
+    /**
+     * Checks if the current HEAT resource if of type port.
+     *
+     * @param resource the resource
+     * @return true if the resource is of port type and false otherwise
+     */
+    public static boolean isPortResource(Resource resource) {
+        String resourceType = resource.getType();
+        Map<String, ImplementationConfiguration> supportedPortResources =
+                TranslationContext.getSupportedConsolidationPortResources();
+        if (supportedPortResources.containsKey(resourceType)) {
+            return supportedPortResources.get(resourceType).isEnable();
+        }
+        return false;
     }
-    return false;
-  }
-
-  /**
-   * Checks if the current HEAT resource if of type port.
-   *
-   * @param resource the resource
-   * @return true if the resource is of port type and false otherwise
-   */
-  public static boolean isPortResource(Resource resource) {
-    String resourceType = resource.getType();
-    Map<String, ImplementationConfiguration> supportedPortResources = TranslationContext
-        .getSupportedConsolidationPortResources();
-    if (supportedPortResources.containsKey(resourceType)) {
-      return supportedPortResources.get(resourceType).isEnable();
+
+    /**
+     * Checks if the current HEAT resource if of type volume.
+     *
+     * @param heatOrchestrationTemplate the heat orchestration template
+     * @param resourceId                the resource id
+     * @return true if the resource is of volume type and false otherwise
+     */
+    public static boolean isVolumeResource(HeatOrchestrationTemplate heatOrchestrationTemplate,
+                                                  String resourceId) {
+        String resourceType = heatOrchestrationTemplate.getResources().get(resourceId).getType();
+        return resourceType.equals(HeatResourcesTypes.CINDER_VOLUME_RESOURCE_TYPE.getHeatResource())
+                       || resourceType.equals(HeatResourcesTypes.CINDER_VOLUME_ATTACHMENT_RESOURCE_TYPE
+                                                      .getHeatResource());
     }
-    return false;
-  }
-
-  /**
-   * Checks if the current HEAT resource if of type volume.
-   *
-   * @param heatOrchestrationTemplate the heat orchestration template
-   * @param resourceId                the resource id
-   * @return true if the resource is of volume type and false otherwise
-   */
-  public static boolean isVolumeResource(HeatOrchestrationTemplate heatOrchestrationTemplate,
-                                         String resourceId) {
-    String resourceType = heatOrchestrationTemplate.getResources().get(resourceId).getType();
-    return resourceType.equals(HeatResourcesTypes.CINDER_VOLUME_RESOURCE_TYPE.getHeatResource())
-        || resourceType.equals(HeatResourcesTypes.CINDER_VOLUME_ATTACHMENT_RESOURCE_TYPE
-        .getHeatResource());
-  }
-
-  /**
-   * Checks if the current HEAT resource if of type volume.
-   *
-   * @param resource the resource
-   * @return true if the resource is of volume type and false otherwise
-   */
-  public static boolean isVolumeResource(Resource resource) {
-    String resourceType = resource.getType();
-    return resourceType.equals(HeatResourcesTypes.CINDER_VOLUME_RESOURCE_TYPE.getHeatResource())
-        || resourceType.equals(HeatResourcesTypes.CINDER_VOLUME_ATTACHMENT_RESOURCE_TYPE
-        .getHeatResource());
-  }
-
-  /**
-   * Gets port type.
-   *
-   * @param portNodeTemplateId the port node template id
-   * @return the port type
-   */
-  public static String getPortType(String portNodeTemplateId) {
-
-    if (StringUtils.isBlank(portNodeTemplateId)) {
-      return portNodeTemplateId;
+
+    /**
+     * Checks if the current HEAT resource if of type volume.
+     *
+     * @param resource the resource
+     * @return true if the resource is of volume type and false otherwise
+     */
+    public static boolean isVolumeResource(Resource resource) {
+        String resourceType = resource.getType();
+        return resourceType.equals(HeatResourcesTypes.CINDER_VOLUME_RESOURCE_TYPE.getHeatResource())
+                       || resourceType.equals(HeatResourcesTypes.CINDER_VOLUME_ATTACHMENT_RESOURCE_TYPE
+                                                      .getHeatResource());
     }
 
-    String formattedName = portNodeTemplateId.replaceAll(UNDERSCORE + DIGIT_REGEX + "$", "");
+    /**
+     * Gets port type.
+     *
+     * @param portNodeTemplateId the port node template id
+     * @return the port type
+     */
+    public static String getPortType(String portNodeTemplateId) {
 
-    StringBuilder sb = new StringBuilder();
-    int count = 0;
-    for (String token : formattedName.split(UNDERSCORE)) {
+        if (StringUtils.isBlank(portNodeTemplateId)) {
+            return portNodeTemplateId;
+        }
 
-      if (StringUtils.isNotBlank(token)) {
-        count++;
-      }
+        String formattedName = portNodeTemplateId.replaceAll(UNDERSCORE + DIGIT_REGEX + "$", "");
 
-      if (count != 2 || !token.matches(DIGIT_REGEX)) {
-        sb.append(token).append(UNDERSCORE);
-      }
-    }
+        StringBuilder sb = new StringBuilder();
+        int count = 0;
+        for (String token : formattedName.split(UNDERSCORE)) {
+
+            if (StringUtils.isNotBlank(token)) {
+                count++;
+            }
+
+            if (count != 2 || (!StringUtils.isBlank(token) && !token.matches(DIGIT_REGEX))) {
+                sb.append(token).append(UNDERSCORE);
+            }
+        }
 
-    return portNodeTemplateId.endsWith(UNDERSCORE) ? sb.toString() : sb.substring(0, sb.length() - 1);
-  }
-
-  /**
-   * Update node template id for the nested node templates in the consolidation data.
-   *
-   * @param translateTo the translate to
-   */
-  public static void updateNestedNodeTemplateId(TranslateTo translateTo) {
-    TranslationContext context = translateTo.getContext();
-    ServiceTemplate serviceTemplate = translateTo.getServiceTemplate();
-    getNestedTemplateConsolidationData(
-        context, serviceTemplate, translateTo.getHeatFileName(), translateTo.getTranslatedId());
-  }
-
-  public static void removeSharedResource(ServiceTemplate serviceTemplate,
-                                          HeatOrchestrationTemplate heatOrchestrationTemplate,
-                                          TranslationContext context,
-                                          String paramName,
-                                          String contrailSharedResourceId,
-                                          String sharedTranslatedResourceId) {
-    if (ConsolidationDataUtil.isComputeResource(heatOrchestrationTemplate,
-        contrailSharedResourceId)) {
-      NodeTemplate nodeTemplate = DataModelUtil.getNodeTemplate(serviceTemplate,
-          sharedTranslatedResourceId);
-      EntityConsolidationData entityConsolidationData = getComputeTemplateConsolidationData(
-          context, serviceTemplate, nodeTemplate.getType(), sharedTranslatedResourceId);
-      List<GetAttrFuncData> getAttrFuncDataList = entityConsolidationData
-          .getOutputParametersGetAttrIn();
-      removeParamNameFromAttrFuncList(paramName, getAttrFuncDataList);
+        return portNodeTemplateId.endsWith(UNDERSCORE) ? sb.toString() : sb.substring(0, sb.length() - 1);
     }
-    if (ConsolidationDataUtil.isPortResource(heatOrchestrationTemplate,
-        contrailSharedResourceId)) {
-      Resource resource = heatOrchestrationTemplate.getResources().get(contrailSharedResourceId);
-      EntityConsolidationData entityConsolidationData = getPortTemplateConsolidationData(context, serviceTemplate,
-          contrailSharedResourceId, resource.getType(), sharedTranslatedResourceId);
-      List<GetAttrFuncData> getAttrFuncDataList = entityConsolidationData
-          .getOutputParametersGetAttrIn();
-      removeParamNameFromAttrFuncList(paramName, getAttrFuncDataList);
+
+    /**
+     * Update node template id for the nested node templates in the consolidation data.
+     *
+     * @param translateTo the translate to
+     */
+    public static void updateNestedNodeTemplateId(TranslateTo translateTo) {
+        TranslationContext context = translateTo.getContext();
+        ServiceTemplate serviceTemplate = translateTo.getServiceTemplate();
+        getNestedTemplateConsolidationData(
+                context, serviceTemplate, translateTo.getHeatFileName(), translateTo.getTranslatedId());
     }
-  }
-
-  private static void removeParamNameFromAttrFuncList(String paramName,
-                                                      List<GetAttrFuncData> getAttrFuncDataList) {
-    Iterator<GetAttrFuncData> itr = getAttrFuncDataList.iterator();
-    while (itr.hasNext()) {
-      GetAttrFuncData getAttrFuncData = itr.next();
-      if (paramName.equals(getAttrFuncData.getFieldName())) {
-        itr.remove();
-      }
+
+    public static void removeSharedResource(ServiceTemplate serviceTemplate,
+                                                   HeatOrchestrationTemplate heatOrchestrationTemplate,
+                                                   TranslationContext context,
+                                                   String paramName,
+                                                   String contrailSharedResourceId,
+                                                   String sharedTranslatedResourceId) {
+        Optional<ConsolidationDataHandler> consolidationDataHandler =
+                ConsolidationDataUtil.getConsolidationDataHandler(heatOrchestrationTemplate, context,
+                        contrailSharedResourceId);
+
+        consolidationDataHandler.ifPresent(
+                handler -> handler.removeParamNameFromAttrFuncList(serviceTemplate, heatOrchestrationTemplate,
+                        paramName, contrailSharedResourceId, sharedTranslatedResourceId));
     }
-  }
 
-  public static void updateNodeGetAttributeIn(EntityConsolidationData entityConsolidationData,
-                                              String nodeTemplateId, String propertyName,
-                                              String attributeName) {
-    GetAttrFuncData getAttrFuncData = new GetAttrFuncData();
-    getAttrFuncData.setFieldName(propertyName);
-    getAttrFuncData.setAttributeName(attributeName);
-    entityConsolidationData.addNodesGetAttrIn(nodeTemplateId, getAttrFuncData);
 
-  }
+    public static Optional<ConsolidationDataHandler> getConsolidationDataHandler(
+            HeatOrchestrationTemplate heatOrchestrationTemplate, TranslationContext context,
+            String contrailSharedResourceId) {
+
+        Resource resource = heatOrchestrationTemplate.getResources().get(contrailSharedResourceId);
+        ConsolidationEntityType consolidationEntityType = ConsolidationEntityType.OTHER;
+        consolidationEntityType.setEntityType(resource, resource, context);
+        return context.getConsolidationData().getConsolidationDataHandler(
+                consolidationEntityType.getSourceEntityType());
 
-  public static void updateNodeGetAttributeOut(EntityConsolidationData entityConsolidationData,
-                                               String nodeTemplateId, String propertyName,
-                                               String attributeName) {
-    GetAttrFuncData getAttrFuncData = new GetAttrFuncData();
-    getAttrFuncData.setFieldName(propertyName);
-    getAttrFuncData.setAttributeName(attributeName);
-    entityConsolidationData.addNodesGetAttrOut(nodeTemplateId, getAttrFuncData);
+    }
+
+    public static void updateNodeGetAttributeIn(EntityConsolidationData entityConsolidationData,
+                                                       String nodeTemplateId, String propertyName,
+                                                       String attributeName) {
+        GetAttrFuncData getAttrFuncData = new GetAttrFuncData();
+        getAttrFuncData.setFieldName(propertyName);
+        getAttrFuncData.setAttributeName(attributeName);
+        entityConsolidationData.addNodesGetAttrIn(nodeTemplateId, getAttrFuncData);
+
+    }
 
-  }
+    public static void updateNodeGetAttributeOut(EntityConsolidationData entityConsolidationData,
+                                                        String nodeTemplateId, String propertyName,
+                                                        String attributeName) {
 
-  public static void updateOutputGetAttributeInConsolidationData(EntityConsolidationData
-                                                                     entityConsolidationData,
-                                                                 String outputParameterName,
-                                                                 String attributeName) {
+        GetAttrFuncData getAttrFuncData = new GetAttrFuncData();
+        getAttrFuncData.setFieldName(propertyName);
+        getAttrFuncData.setAttributeName(attributeName);
+        entityConsolidationData.addNodesGetAttrOut(nodeTemplateId, getAttrFuncData);
 
+    }
 
-    GetAttrFuncData getAttrFuncData = new GetAttrFuncData();
-    getAttrFuncData.setFieldName(outputParameterName);
-    getAttrFuncData.setAttributeName(attributeName);
-    entityConsolidationData.addOutputParamGetAttrIn(getAttrFuncData);
+    public static void updateOutputGetAttributeInConsolidationData(EntityConsolidationData
+                                                                           entityConsolidationData,
+                                                                          String outputParameterName,
+                                                                          String attributeName) {
 
-  }
+        GetAttrFuncData getAttrFuncData = new GetAttrFuncData();
+        getAttrFuncData.setFieldName(outputParameterName);
+        getAttrFuncData.setAttributeName(attributeName);
+        entityConsolidationData.addOutputParamGetAttrIn(getAttrFuncData);
 
-  public static boolean isComputeReferenceToPortId(ComputeTemplateConsolidationData compute,
-                                                   String portId) {
-    if (MapUtils.isEmpty(compute.getPorts())) {
-      return false;
     }
-    for (List<String> portIdsPerType : compute.getPorts().values()) {
-      if (portIdsPerType.contains(portId)) {
-        return true;
-      }
+
+    public static boolean isComputeReferenceToPortId(ComputeTemplateConsolidationData compute,
+                                                            String portId) {
+        if (MapUtils.isEmpty(compute.getPorts())) {
+            return false;
+        }
+        for (List<String> portIdsPerType : compute.getPorts().values()) {
+            if (portIdsPerType.contains(portId)) {
+                return true;
+            }
+        }
+        return false;
     }
-    return false;
-  }
 
 }