summaryrefslogtreecommitdiffstats
path: root/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationDataUtil.java
diff options
context:
space:
mode:
Diffstat (limited to 'openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationDataUtil.java')
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationDataUtil.java199
1 files changed, 159 insertions, 40 deletions
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationDataUtil.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationDataUtil.java
index 0a94d2a3d9..f5eac507f1 100644
--- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationDataUtil.java
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationDataUtil.java
@@ -1,5 +1,22 @@
+/*
+ * Copyright © 2016-2018 European Support Limited
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
package org.openecomp.sdc.translator.services.heattotosca;
+import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang3.StringUtils;
import org.openecomp.core.utilities.file.FileUtils;
@@ -8,6 +25,7 @@ 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.openecomp.sdc.tosca.datatypes.ToscaNodeType;
import org.openecomp.sdc.tosca.datatypes.model.NodeTemplate;
import org.openecomp.sdc.tosca.datatypes.model.RequirementAssignment;
import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate;
@@ -28,6 +46,7 @@ import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolida
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;
@@ -37,6 +56,7 @@ import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Objects;
+import java.util.Optional;
/**
@@ -47,6 +67,9 @@ public class ConsolidationDataUtil {
private static final String UNDERSCORE = "_";
private static final String DIGIT_REGEX = "\\d+";
+ private ConsolidationDataUtil() {
+ }
+
/**
* Gets compute template consolidation data.
*
@@ -106,10 +129,11 @@ public class ConsolidationDataUtil {
* @param portNodeTemplateId the port node template id
* @return the port template consolidation data
*/
- public static PortTemplateConsolidationData getPortTemplateConsolidationData(
- TranslationContext context,
- ServiceTemplate serviceTemplate,
- String portNodeTemplateId) {
+ public static PortTemplateConsolidationData getPortTemplateConsolidationData(TranslationContext context,
+ ServiceTemplate serviceTemplate,
+ String portResourceId,
+ String portResourceType,
+ String portNodeTemplateId) {
ConsolidationData consolidationData = context.getConsolidationData();
String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate);
@@ -128,15 +152,98 @@ public class ConsolidationDataUtil {
PortTemplateConsolidationData portTemplateConsolidationData =
filePortConsolidationData.getPortTemplateConsolidationData(portNodeTemplateId);
if (portTemplateConsolidationData == null) {
+ portTemplateConsolidationData = getInitPortTemplateConsolidationData(portNodeTemplateId,
+ portResourceId, portResourceType);
+ filePortConsolidationData.setPortTemplateConsolidationData(portNodeTemplateId, portTemplateConsolidationData);
+ }
+
+ 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();
+ }
+
+ private static SubInterfaceTemplateConsolidationData getSubInterfaceTemplateConsolidationData(
+ TranslateTo subInterfaceTo,
+ String parentPortNodeTemplateId,
+ String subInterfaceNodeTemplateId) {
+
+ ConsolidationData consolidationData = subInterfaceTo.getContext().getConsolidationData();
+ String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(subInterfaceTo.getServiceTemplate());
+
+ PortConsolidationData portConsolidationData = consolidationData.getPortConsolidationData();
+
+ FilePortConsolidationData filePortConsolidationData = portConsolidationData
+ .getFilePortConsolidationData(serviceTemplateFileName);
+
+ if (filePortConsolidationData == null) {
+ filePortConsolidationData = new FilePortConsolidationData();
+ portConsolidationData.setFilePortConsolidationData(serviceTemplateFileName,
+ filePortConsolidationData);
+ }
+
+ PortTemplateConsolidationData portTemplateConsolidationData =
+ filePortConsolidationData.getPortTemplateConsolidationData(parentPortNodeTemplateId);
+ if (portTemplateConsolidationData == null) {
portTemplateConsolidationData = new PortTemplateConsolidationData();
- portTemplateConsolidationData.setNodeTemplateId(portNodeTemplateId);
- filePortConsolidationData.setPortTemplateConsolidationData(portNodeTemplateId,
+ portTemplateConsolidationData.setNodeTemplateId(parentPortNodeTemplateId);
+ filePortConsolidationData.setPortTemplateConsolidationData(parentPortNodeTemplateId,
portTemplateConsolidationData);
}
- return portTemplateConsolidationData;
+ return getSubInterfaceResourceTemplateConsolidationData(subInterfaceTo.getResource(), portTemplateConsolidationData,
+ subInterfaceNodeTemplateId, parentPortNodeTemplateId);
}
+ private static SubInterfaceTemplateConsolidationData getSubInterfaceResourceTemplateConsolidationData(
+ Resource resource,
+ PortTemplateConsolidationData portTemplateConsolidationData,
+ String subInterfaceNodeTemplateId,
+ String parentPortNodeTemplateId) {
+ String subInterfaceType = ToscaNodeType.VLAN_SUB_INTERFACE_RESOURCE_TYPE_PREFIX
+ + FileUtils.getFileWithoutExtention(HeatToToscaUtil.getSubInterfaceResourceType(resource));
+ SubInterfaceTemplateConsolidationData data = new SubInterfaceTemplateConsolidationData();
+ data.setNodeTemplateId(subInterfaceNodeTemplateId);
+ data.setParentPortNodeTemplateId(parentPortNodeTemplateId);
+ if (CollectionUtils.isNotEmpty(portTemplateConsolidationData.getSubInterfaceConsolidationData(subInterfaceType))) {
+ boolean isNewSubInterface = true;
+ List<SubInterfaceTemplateConsolidationData> subInterfaceTemplateConsolidationDataList =
+ portTemplateConsolidationData.getSubInterfaceConsolidationData(subInterfaceType);
+ for (SubInterfaceTemplateConsolidationData subInterfaceTemplateConsolidationData :
+ subInterfaceTemplateConsolidationDataList) {
+ if (subInterfaceNodeTemplateId.equals(subInterfaceTemplateConsolidationData.getNodeTemplateId())) {
+ data = subInterfaceTemplateConsolidationData;
+ isNewSubInterface = false;
+ }
+ }
+ if (isNewSubInterface) {
+ portTemplateConsolidationData.addSubInterfaceConsolidationData(subInterfaceType, data);
+ }
+ } else {
+ portTemplateConsolidationData.addSubInterfaceConsolidationData(subInterfaceType, data);
+ }
+ return data;
+ }
/**
* Gets nested template consolidation data.
@@ -250,10 +357,13 @@ public class ConsolidationDataUtil {
*
* @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();
@@ -262,7 +372,8 @@ public class ConsolidationDataUtil {
translateTo.getTranslatedId());
computeTemplateConsolidationData.addPort(getPortType(portNodeTemplateId), portNodeTemplateId);
// create port in consolidation data
- getPortTemplateConsolidationData(translationContext, serviceTemplate, portNodeTemplateId);
+ getPortTemplateConsolidationData(translationContext, serviceTemplate, portResourceId,
+ portResourceType, portNodeTemplateId);
}
/**
@@ -278,12 +389,7 @@ public class ConsolidationDataUtil {
String nodeTemplateId, String requirementId,
RequirementAssignment requirementAssignment) {
ConsolidationEntityType consolidationEntityType = ConsolidationEntityType.OTHER;
- HeatOrchestrationTemplate heatOrchestrationTemplate = translateTo
- .getHeatOrchestrationTemplate();
- TranslationContext translationContext = translateTo.getContext();
-
- consolidationEntityType.setEntityType(heatOrchestrationTemplate, sourceResource,
- targetResource, translateTo.getContext());
+ consolidationEntityType.setEntityType(sourceResource, targetResource, translateTo.getContext());
// Add resource dependency information in nodesConnectedIn if the target node
// is a consolidation entity
if (isConsolidationEntity(consolidationEntityType.getTargetEntityType())) {
@@ -304,10 +410,7 @@ public class ConsolidationDataUtil {
private static boolean isConsolidationEntity(ConsolidationEntityType consolidationEntityType) {
- return (consolidationEntityType == ConsolidationEntityType.COMPUTE
- || consolidationEntityType == ConsolidationEntityType.PORT
- || consolidationEntityType == ConsolidationEntityType.NESTED
- || consolidationEntityType == ConsolidationEntityType.VFC_NESTED);
+ return ConsolidationEntityType.getSupportedConsolidationEntities().contains(consolidationEntityType);
}
/**
@@ -340,8 +443,17 @@ public class ConsolidationDataUtil {
entityConsolidationData = getComputeTemplateConsolidationData(translationContext,
serviceTemplate, nodeType, translateTo.getTranslatedId());
} else if (consolidationEntityType == ConsolidationEntityType.PORT) {
- entityConsolidationData = getPortTemplateConsolidationData(translationContext,
- serviceTemplate, translateTo.getTranslatedId());
+ 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 =
@@ -350,17 +462,15 @@ public class ConsolidationDataUtil {
translateTo.getTranslatedId());
}
- if (Objects.isNull(entityConsolidationData)) {
- return;
- }
+ if (Objects.nonNull(entityConsolidationData)) {
+ if (Objects.isNull(entityConsolidationData.getNodesConnectedOut())) {
+ entityConsolidationData.setNodesConnectedOut(new HashMap<>());
+ }
- if (Objects.isNull(entityConsolidationData.getNodesConnectedOut())) {
- entityConsolidationData.setNodesConnectedOut(new HashMap<>());
+ entityConsolidationData.getNodesConnectedOut()
+ .computeIfAbsent(nodeTemplateId, k -> new ArrayList<>())
+ .add(requirementAssignmentData);
}
-
- entityConsolidationData.getNodesConnectedOut()
- .computeIfAbsent(nodeTemplateId, k -> new ArrayList<>())
- .add(requirementAssignmentData);
}
/**
@@ -386,7 +496,7 @@ public class ConsolidationDataUtil {
if (consolidationEntityType == ConsolidationEntityType.COMPUTE) {
NodeTemplate computeNodeTemplate = DataModelUtil.getNodeTemplate(serviceTemplate,
dependentNodeTemplateId);
- String nodeType = null;
+ String nodeType;
if (Objects.isNull(computeNodeTemplate)) {
Resource targetResource =
translateTo.getHeatOrchestrationTemplate().getResources().get(targetResourceId);
@@ -403,8 +513,18 @@ public class ConsolidationDataUtil {
entityConsolidationData = getComputeTemplateConsolidationData(translationContext,
serviceTemplate, nodeType, dependentNodeTemplateId);
} else if (consolidationEntityType == ConsolidationEntityType.PORT) {
- entityConsolidationData = getPortTemplateConsolidationData(translationContext,
- serviceTemplate, dependentNodeTemplateId);
+ 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,
@@ -501,9 +621,9 @@ public class ConsolidationDataUtil {
public static boolean isVolumeResource(HeatOrchestrationTemplate heatOrchestrationTemplate,
String resourceId) {
String resourceType = heatOrchestrationTemplate.getResources().get(resourceId).getType();
- return (resourceType.equals(HeatResourcesTypes.CINDER_VOLUME_RESOURCE_TYPE.getHeatResource())
+ return resourceType.equals(HeatResourcesTypes.CINDER_VOLUME_RESOURCE_TYPE.getHeatResource())
|| resourceType.equals(HeatResourcesTypes.CINDER_VOLUME_ATTACHMENT_RESOURCE_TYPE
- .getHeatResource()));
+ .getHeatResource());
}
/**
@@ -514,9 +634,9 @@ public class ConsolidationDataUtil {
*/
public static boolean isVolumeResource(Resource resource) {
String resourceType = resource.getType();
- return (resourceType.equals(HeatResourcesTypes.CINDER_VOLUME_RESOURCE_TYPE.getHeatResource())
+ return resourceType.equals(HeatResourcesTypes.CINDER_VOLUME_RESOURCE_TYPE.getHeatResource())
|| resourceType.equals(HeatResourcesTypes.CINDER_VOLUME_ATTACHMENT_RESOURCE_TYPE
- .getHeatResource()));
+ .getHeatResource());
}
/**
@@ -579,10 +699,9 @@ public class ConsolidationDataUtil {
}
if (ConsolidationDataUtil.isPortResource(heatOrchestrationTemplate,
contrailSharedResourceId)) {
- NodeTemplate nodeTemplate = DataModelUtil.getNodeTemplate(serviceTemplate,
- sharedTranslatedResourceId);
- EntityConsolidationData entityConsolidationData = getPortTemplateConsolidationData(context,
- serviceTemplate, sharedTranslatedResourceId);
+ Resource resource = heatOrchestrationTemplate.getResources().get(contrailSharedResourceId);
+ EntityConsolidationData entityConsolidationData = getPortTemplateConsolidationData(context, serviceTemplate,
+ contrailSharedResourceId, resource.getType(), sharedTranslatedResourceId);
List<GetAttrFuncData> getAttrFuncDataList = entityConsolidationData
.getOutputParametersGetAttrIn();
removeParamNameFromAttrFuncList(paramName, getAttrFuncDataList);