import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang3.math.NumberUtils;
+import org.openecomp.sdc.common.errors.CoreException;
+import org.openecomp.sdc.common.errors.ErrorCode;
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.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.TypeComputeConsolidationData;
+import org.openecomp.sdc.translator.services.heattotosca.errors.DuplicateResourceIdsInDifferentFilesErrorBuilder;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
*
* @param context the context
* @param serviceTemplate the service template
- * @param nestedNodeTemplateId the nested node template id
- * @return the nested template consolidation data
+ * @param nestedHeatFileName
+ *@param nestedNodeTemplateId the nested node template id @return the nested template consolidation data
*/
public static NestedTemplateConsolidationData getNestedTemplateConsolidationData(
TranslationContext context,
ServiceTemplate serviceTemplate,
- String nestedNodeTemplateId) {
+ String nestedHeatFileName, String nestedNodeTemplateId) {
+
+ if(isNestedResourceIdOccuresInDifferentNestedFiles(context, nestedHeatFileName,
+ nestedNodeTemplateId)){
+ throw new CoreException(new DuplicateResourceIdsInDifferentFilesErrorBuilder(nestedNodeTemplateId).build());
+ }
ConsolidationData consolidationData = context.getConsolidationData();
String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate);
return nestedTemplateConsolidationData;
}
+ 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.
*
targetResource, translateTo.getContext());
// Add resource dependency information in nodesConnectedIn if the target node
// is a consolidation entity
- if (isConsolidationEntity(consolidationEntityType.getTargetEntityType())
- && HeatToToscaUtil
- .isValidDependsOnCandidate(heatOrchestrationTemplate, sourceResource,
- targetResource, consolidationEntityType, translationContext)) {
+ 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())
- && HeatToToscaUtil
- .isValidDependsOnCandidate(heatOrchestrationTemplate, sourceResource,
- targetResource, consolidationEntityType, translationContext)) {
+ if (isConsolidationEntity(consolidationEntityType.getSourceEntityType())) {
ConsolidationDataUtil.updateNodesConnectedOut(translateTo,
requirementAssignment.getNode(), consolidationEntityType.getSourceEntityType(),
requirementId, 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);
serviceTemplate, translateTo.getTranslatedId());
} else if (consolidationEntityType == ConsolidationEntityType.VFC_NESTED
|| consolidationEntityType == ConsolidationEntityType.NESTED) {
- //ConnectedOut data for nested is not updated
- return;
+ entityConsolidationData =
+ getNestedTemplateConsolidationData(translationContext, serviceTemplate,
+ null,
+ translateTo.getTranslatedId());
}
- if (entityConsolidationData.getNodesConnectedOut() == null) {
- entityConsolidationData.setNodesConnectedOut(new HashMap<>());
+ if(Objects.isNull(entityConsolidationData)){
+ return;
}
+ if (entityConsolidationData != null) {
+ if (entityConsolidationData.getNodesConnectedOut() == null) {
+ entityConsolidationData.setNodesConnectedOut(new HashMap<>());
+ }
- entityConsolidationData.getNodesConnectedOut()
- .computeIfAbsent(nodeTemplateId, k -> new ArrayList<>())
- .add(requirementAssignmentData);
+ entityConsolidationData.getNodesConnectedOut()
+ .computeIfAbsent(nodeTemplateId, k -> new ArrayList<>())
+ .add(requirementAssignmentData);
+ }
}
/**
} else if (consolidationEntityType == ConsolidationEntityType.NESTED
|| consolidationEntityType == ConsolidationEntityType.VFC_NESTED) {
entityConsolidationData = getNestedTemplateConsolidationData(translationContext,
- serviceTemplate, dependentNodeTemplateId);
+ serviceTemplate, translateTo.getHeatFileName(), dependentNodeTemplateId);
}
- if (entityConsolidationData.getNodesConnectedIn() == null) {
- entityConsolidationData.setNodesConnectedIn(new HashMap<>());
- }
+ if (entityConsolidationData != null) {
+ if (entityConsolidationData.getNodesConnectedIn() == null) {
+ entityConsolidationData.setNodesConnectedIn(new HashMap<>());
+ }
- entityConsolidationData.getNodesConnectedIn()
- .computeIfAbsent(sourceNodeTemplateId, k -> new ArrayList<>())
- .add(requirementAssignmentData);
+ entityConsolidationData.getNodesConnectedIn()
+ .computeIfAbsent(sourceNodeTemplateId, k -> new ArrayList<>())
+ .add(requirementAssignmentData);
+ }
}
/**
public static void updateNestedNodeTemplateId(TranslateTo translateTo) {
TranslationContext context = translateTo.getContext();
ServiceTemplate serviceTemplate = translateTo.getServiceTemplate();
- getNestedTemplateConsolidationData(context, serviceTemplate, translateTo.getTranslatedId());
+ getNestedTemplateConsolidationData(
+ context, serviceTemplate, translateTo.getHeatFileName(), translateTo.getTranslatedId());
}
public static void removeSharedResource(ServiceTemplate serviceTemplate,