summaryrefslogtreecommitdiffstats
path: root/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/unifiedmodel/consolidation
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/datatypes/heattotosca/unifiedmodel/consolidation')
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/unifiedmodel/consolidation/ComputeConsolidationDataHandler.java138
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/unifiedmodel/consolidation/ConsolidationData.java210
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/unifiedmodel/consolidation/ConsolidationDataHandler.java54
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/unifiedmodel/consolidation/EntityConsolidationData.java492
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/unifiedmodel/consolidation/NestedConsolidationDataHandler.java138
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/unifiedmodel/consolidation/PortConsolidationDataHandler.java98
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/unifiedmodel/consolidation/SubInterfaceConsolidationDataHandler.java122
7 files changed, 945 insertions, 307 deletions
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/unifiedmodel/consolidation/ComputeConsolidationDataHandler.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/unifiedmodel/consolidation/ComputeConsolidationDataHandler.java
new file mode 100644
index 0000000000..cc27dd9806
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/unifiedmodel/consolidation/ComputeConsolidationDataHandler.java
@@ -0,0 +1,138 @@
+/*
+ * 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.datatypes.heattotosca.unifiedmodel.consolidation;
+
+import java.util.Objects;
+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.heat.datatypes.model.HeatOrchestrationTemplate;
+import org.openecomp.sdc.heat.datatypes.model.Resource;
+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.services.heattotosca.NameExtractor;
+
+public class ComputeConsolidationDataHandler implements ConsolidationDataHandler {
+
+ private final ComputeConsolidationData computeConsolidationData;
+
+ ComputeConsolidationDataHandler(ComputeConsolidationData computeConsolidationData) {
+ this.computeConsolidationData = computeConsolidationData;
+ }
+
+ @Override
+ public void addNodesConnectedOut(TranslateTo translateTo, String nodeTemplateId, String requirementId,
+ RequirementAssignment requirementAssignment) {
+
+ String translatedSourceNodeId = translateTo.getTranslatedId();
+ ServiceTemplate serviceTemplate = translateTo.getServiceTemplate();
+ NodeTemplate computeNodeTemplate = DataModelUtil.getNodeTemplate(serviceTemplate, translatedSourceNodeId);
+ String nodeType = computeNodeTemplate.getType();
+
+ EntityConsolidationData entityConsolidationData =
+ getComputeTemplateConsolidationData(translateTo, nodeType, translatedSourceNodeId);
+
+ if (Objects.nonNull(entityConsolidationData)) {
+ entityConsolidationData.addNodesConnectedOut(nodeTemplateId, requirementId, requirementAssignment);
+ }
+ }
+
+ @Override
+ public void addNodesConnectedIn(TranslateTo translateTo, String sourceNodeTemplateId,
+ String dependentNodeTemplateId, String targetResourceId, String requirementId,
+ RequirementAssignment requirementAssignment) {
+
+ ServiceTemplate serviceTemplate = translateTo.getServiceTemplate();
+ NodeTemplate nodeTemplate = DataModelUtil.getNodeTemplate(serviceTemplate, dependentNodeTemplateId);
+ String nodeType = getNodeType(nodeTemplate, translateTo, targetResourceId, dependentNodeTemplateId);
+ EntityConsolidationData entityConsolidationData =
+ getComputeTemplateConsolidationData(translateTo, nodeType, dependentNodeTemplateId);
+
+ if (Objects.nonNull(entityConsolidationData)) {
+ entityConsolidationData.addNodesConnectedIn(sourceNodeTemplateId, requirementId, requirementAssignment);
+ }
+ }
+
+ @Override
+ public void removeParamNameFromAttrFuncList(ServiceTemplate serviceTemplate,
+ HeatOrchestrationTemplate heatOrchestrationTemplate, String paramName, String contrailSharedResourceId,
+ String sharedTranslatedResourceId) {
+
+ NodeTemplate nodeTemplate = DataModelUtil.getNodeTemplate(serviceTemplate, sharedTranslatedResourceId);
+ EntityConsolidationData entityConsolidationData =
+ getComputeTemplateConsolidationData(serviceTemplate, nodeTemplate.getType(),
+ sharedTranslatedResourceId);
+
+ if (Objects.nonNull(entityConsolidationData)) {
+ entityConsolidationData.removeParamNameFromAttrFuncList(paramName);
+ }
+ }
+
+ private ComputeTemplateConsolidationData getComputeTemplateConsolidationData(
+ TranslateTo translateTo, String computeNodeType, String computeNodeTemplateId) {
+
+ ServiceTemplate serviceTemplate = translateTo.getServiceTemplate();
+ return getComputeTemplateConsolidationData(serviceTemplate, computeNodeType, computeNodeTemplateId);
+ }
+
+ private ComputeTemplateConsolidationData getComputeTemplateConsolidationData(ServiceTemplate serviceTemplate,
+ String computeNodeType, String computeNodeTemplateId) {
+
+ String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate);
+
+ 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;
+ }
+
+ private String getNodeType(NodeTemplate computeNodeTemplate, TranslateTo translateTo, String targetResourceId,
+ String nodeTemplateId) {
+
+ if (Objects.isNull(computeNodeTemplate)) {
+ Resource targetResource = translateTo.getHeatOrchestrationTemplate().getResources().get(targetResourceId);
+ NameExtractor nodeTypeNameExtractor = TranslationContext.getNameExtractorImpl(targetResource.getType());
+ return nodeTypeNameExtractor.extractNodeTypeName(translateTo.getHeatOrchestrationTemplate()
+ .getResources().get(nodeTemplateId), nodeTemplateId, nodeTemplateId);
+ }
+
+ return computeNodeTemplate.getType();
+ }
+} \ No newline at end of file
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/unifiedmodel/consolidation/ConsolidationData.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/unifiedmodel/consolidation/ConsolidationData.java
index 20cc3be3cd..c46e7450e5 100644
--- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/unifiedmodel/consolidation/ConsolidationData.java
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/unifiedmodel/consolidation/ConsolidationData.java
@@ -1,81 +1,139 @@
+/*
+ * 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.datatypes.heattotosca.unifiedmodel.consolidation;
-/**
- * The type Consolidation data.
- */
+import java.util.Optional;
+import org.openecomp.sdc.translator.services.heattotosca.ConsolidationEntityType;
+
public class ConsolidationData {
- //Compute consolidation data
- private ComputeConsolidationData computeConsolidationData;
-
- //Port Consolidation data
- private PortConsolidationData portConsolidationData;
-
- //Nested Consolidation data
- private NestedConsolidationData nestedConsolidationData;
-
-
- /**
- * Instantiates a new Consolidation data.
- */
- public ConsolidationData() {
- computeConsolidationData = new ComputeConsolidationData();
- portConsolidationData = new PortConsolidationData();
- nestedConsolidationData = new NestedConsolidationData();
- }
-
- /**
- * Gets compute consolidation data.
- *
- * @return the compute consolidation data
- */
- public ComputeConsolidationData getComputeConsolidationData() {
- return computeConsolidationData;
- }
-
- /**
- * Sets compute consolidation data.
- *
- * @param computeConsolidationData the compute consolidation data
- */
- public void setComputeConsolidationData(ComputeConsolidationData computeConsolidationData) {
- this.computeConsolidationData = computeConsolidationData;
- }
-
- /**
- * Gets port consolidation data.
- *
- * @return the port consolidation data
- */
- public PortConsolidationData getPortConsolidationData() {
- return portConsolidationData;
- }
-
- /**
- * Sets port consolidation data.
- *
- * @param portConsolidationData the port consolidation data
- */
- public void setPortConsolidationData(
- PortConsolidationData portConsolidationData) {
- this.portConsolidationData = portConsolidationData;
- }
-
- /**
- * Gets nested consolidation data.
- *
- * @return the nested consolidation data
- */
- public NestedConsolidationData getNestedConsolidationData() {
- return nestedConsolidationData;
- }
-
- /**
- * Sets nested consolidation data.
- *
- * @param nestedConsolidationData the nested consolidation data
- */
- public void setNestedConsolidationData(NestedConsolidationData nestedConsolidationData) {
- this.nestedConsolidationData = nestedConsolidationData;
- }
+ private ComputeConsolidationData computeConsolidationData;
+ private final ComputeConsolidationDataHandler computeConsolidationDataHandler;
+
+ private PortConsolidationData portConsolidationData;
+ private final PortConsolidationDataHandler portConsolidationDataHandler;
+ private final SubInterfaceConsolidationDataHandler subInterfaceConsolidationDataHandler;
+
+ private NestedConsolidationData nestedConsolidationData;
+ private final NestedConsolidationDataHandler nestedConsolidationDataHandler;
+
+ public ConsolidationData() {
+
+ computeConsolidationData = new ComputeConsolidationData();
+ computeConsolidationDataHandler = new ComputeConsolidationDataHandler(computeConsolidationData);
+
+ portConsolidationData = new PortConsolidationData();
+ portConsolidationDataHandler = new PortConsolidationDataHandler(portConsolidationData);
+ subInterfaceConsolidationDataHandler = new SubInterfaceConsolidationDataHandler(portConsolidationData);
+
+ nestedConsolidationData = new NestedConsolidationData();
+ nestedConsolidationDataHandler = new NestedConsolidationDataHandler(nestedConsolidationData);
+
+ }
+
+ /**
+ * Get Consolidation data handler by entity type.
+ *
+ * @return If there is no consolidation handler for a type, return an empty {@link Optional}.
+ */
+ public Optional<ConsolidationDataHandler> getConsolidationDataHandler(ConsolidationEntityType type) {
+
+ switch (type) {
+ case COMPUTE:
+ return Optional.of(getComputeConsolidationDataHelper());
+ case PORT:
+ return Optional.of(getPortConsolidationDataHandler());
+ case SUB_INTERFACE:
+ return Optional.of(getSubInterfaceConsolidationDataHandler());
+ case NESTED:
+ case VFC_NESTED:
+ return Optional.of(getNestedConsolidationDataHandler());
+ default:
+ return Optional.empty();
+ }
+ }
+
+ public ComputeConsolidationDataHandler getComputeConsolidationDataHelper() {
+ return computeConsolidationDataHandler;
+ }
+
+ public PortConsolidationDataHandler getPortConsolidationDataHandler() {
+ return portConsolidationDataHandler;
+ }
+
+ public NestedConsolidationDataHandler getNestedConsolidationDataHandler() {
+ return nestedConsolidationDataHandler;
+ }
+
+ public SubInterfaceConsolidationDataHandler getSubInterfaceConsolidationDataHandler() {
+ return subInterfaceConsolidationDataHandler;
+ }
+
+ /**
+ * Gets compute consolidation data.
+ *
+ * @return the compute consolidation data
+ */
+ public ComputeConsolidationData getComputeConsolidationData() {
+ return computeConsolidationData;
+ }
+
+ /**
+ * Sets compute consolidation data.
+ *
+ * @param computeConsolidationData the compute consolidation data
+ */
+ public void setComputeConsolidationData(ComputeConsolidationData computeConsolidationData) {
+ this.computeConsolidationData = computeConsolidationData;
+ }
+
+ /**
+ * Gets port consolidation data.
+ *
+ * @return the port consolidation data
+ */
+ public PortConsolidationData getPortConsolidationData() {
+ return portConsolidationData;
+ }
+
+ /**
+ * Sets port consolidation data.
+ *
+ * @param portConsolidationData the port consolidation data
+ */
+ public void setPortConsolidationData(PortConsolidationData portConsolidationData) {
+ this.portConsolidationData = portConsolidationData;
+ }
+
+ /**
+ * Gets nested consolidation data.
+ *
+ * @return the nested consolidation data
+ */
+ public NestedConsolidationData getNestedConsolidationData() {
+ return nestedConsolidationData;
+ }
+
+ /**
+ * Sets nested consolidation data.
+ *
+ * @param nestedConsolidationData the nested consolidation data
+ */
+ public void setNestedConsolidationData(NestedConsolidationData nestedConsolidationData) {
+ this.nestedConsolidationData = nestedConsolidationData;
+ }
}
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/unifiedmodel/consolidation/ConsolidationDataHandler.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/unifiedmodel/consolidation/ConsolidationDataHandler.java
new file mode 100644
index 0000000000..bbd26342b1
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/unifiedmodel/consolidation/ConsolidationDataHandler.java
@@ -0,0 +1,54 @@
+/*
+ * 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.datatypes.heattotosca.unifiedmodel.consolidation;
+
+import org.onap.sdc.tosca.datatypes.model.RequirementAssignment;
+import org.onap.sdc.tosca.datatypes.model.ServiceTemplate;
+import org.openecomp.sdc.heat.datatypes.model.HeatOrchestrationTemplate;
+import org.openecomp.sdc.translator.datatypes.heattotosca.to.TranslateTo;
+
+public interface ConsolidationDataHandler {
+
+ /**
+ * Add node connected out from current consolidation entity.
+ *
+ * @param nodeTemplateId the node template id of target node - node connected out from current node
+ * @param requirementId the requirement id of requirement assignment
+ * @param requirementAssignment the requirement assignment data connected to target node
+ */
+ void addNodesConnectedOut(TranslateTo translateTo, String nodeTemplateId,
+ String requirementId, RequirementAssignment requirementAssignment);
+
+ /**
+ * Add source node connected in to target node consolidation entity.
+ *
+ * @param sourceNodeTemplateId the node template id of source node connected to consolidation entity
+ * @param targetNodeTemplateId the node template id of consolidation entity node
+ * @param targetResourceId the resource id of consolidation entity node
+ * @param requirementId the requirement id of source node
+ * @param requirementAssignment the requirement assignment data of source node
+ */
+ void addNodesConnectedIn(TranslateTo translateTo, String sourceNodeTemplateId,
+ String targetNodeTemplateId,
+ String targetResourceId, String requirementId,
+ RequirementAssignment requirementAssignment);
+
+ void removeParamNameFromAttrFuncList(ServiceTemplate serviceTemplate,
+ HeatOrchestrationTemplate heatOrchestrationTemplate,
+ String paramName, String contrailSharedResourceId,
+ String sharedTranslatedResourceId);
+}
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/unifiedmodel/consolidation/EntityConsolidationData.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/unifiedmodel/consolidation/EntityConsolidationData.java
index 0b4b454adf..06b1a58718 100644
--- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/unifiedmodel/consolidation/EntityConsolidationData.java
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/unifiedmodel/consolidation/EntityConsolidationData.java
@@ -1,245 +1,275 @@
-package org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation;
+/*
+ * 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.
+ */
-import org.onap.sdc.tosca.datatypes.model.RequirementAssignment;
+package org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import org.onap.sdc.tosca.datatypes.model.RequirementAssignment;
/**
* The type Entity consolidation data.
*/
public class EntityConsolidationData {
- private String nodeTemplateId;
-
- //groups that point to this entity node template
- private List<String> groupIds;
-
- // key - node template id which has connection to this entity
- // value - List of Requirement assignment data which connect to this entity
- private Map<String, List<RequirementAssignmentData>> nodesConnectedIn;
-
- // key - node template id which connected from this entity
- // List of Requirement assignment data which connect to the key node template id
- private Map<String, List<RequirementAssignmentData>> nodesConnectedOut;
-
- //key - node template id which include get attribute function from this entity
- //key - node template id which include get attribute function from this entity
- //value - List of getAttr data
- private Map<String, List<GetAttrFuncData>> nodesGetAttrIn;
-
- //key - node template id which is pointed by this entity using get attribute function
- //value - List of getAttr data
- private Map<String, List<GetAttrFuncData>> nodesGetAttrOut;
-
- //List of getAttr data
- private List<GetAttrFuncData> outputParametersGetAttrIn;
-
- /**
- * Gets node template id.
- *
- * @return the node template id
- */
- public String getNodeTemplateId() {
- return nodeTemplateId;
- }
-
- /**
- * Sets node template id.
- *
- * @param nodeTemplateId the node template id
- */
- public void setNodeTemplateId(String nodeTemplateId) {
- this.nodeTemplateId = nodeTemplateId;
- }
-
- /**
- * Gets group ids point to me.
- *
- * @return the group ids point to me
- */
- public List<String> getGroupIds() {
- return groupIds;
- }
-
- /**
- * Sets group ids point to me.
- *
- * @param groupIds the group ids point to me
- */
- public void setGroupIds(List<String> groupIds) {
- this.groupIds = groupIds;
- }
-
-
- /**
- * Sets node connected to me.
- *
- * @param nodesConnectedIn the node connected to me
- */
- public void setNodesConnectedIn(Map<String, List<RequirementAssignmentData>> nodesConnectedIn) {
- this.nodesConnectedIn = nodesConnectedIn;
- }
-
- /**
- * Add nodeConnectedIn.
- *
- * @param nodeTemplateId the node template id which has connection to me
- * @param requirementId the requirement id
- * @param requirementAssignment the requirement assignment
- */
- public void addNodesConnectedIn(String nodeTemplateId, String requirementId,
+ private String nodeTemplateId;
+
+ //groups that point to this entity node template
+ private List<String> groupIds;
+
+ // key - node template id which has connection to this entity
+ // value - List of Requirement assignment data which connect to this entity
+ private Map<String, List<RequirementAssignmentData>> nodesConnectedIn;
+
+ // key - node template id which connected from this entity
+ // List of Requirement assignment data which connect to the key node template id
+ private Map<String, List<RequirementAssignmentData>> nodesConnectedOut;
+
+ //key - node template id which include get attribute function from this entity
+ //key - node template id which include get attribute function from this entity
+ //value - List of getAttr data
+ private Map<String, List<GetAttrFuncData>> nodesGetAttrIn;
+
+ //key - node template id which is pointed by this entity using get attribute function
+ //value - List of getAttr data
+ private Map<String, List<GetAttrFuncData>> nodesGetAttrOut;
+
+ //List of getAttr data
+ private List<GetAttrFuncData> outputParametersGetAttrIn;
+
+ /**
+ * Gets node template id.
+ *
+ * @return the node template id
+ */
+ public String getNodeTemplateId() {
+ return nodeTemplateId;
+ }
+
+ /**
+ * Sets node template id.
+ *
+ * @param nodeTemplateId the node template id
+ */
+ public void setNodeTemplateId(String nodeTemplateId) {
+ this.nodeTemplateId = nodeTemplateId;
+ }
+
+ /**
+ * Gets group ids point to me.
+ *
+ * @return the group ids point to me
+ */
+ public List<String> getGroupIds() {
+ return groupIds;
+ }
+
+ /**
+ * Sets group ids point to me.
+ *
+ * @param groupIds the group ids point to me
+ */
+ public void setGroupIds(List<String> groupIds) {
+ this.groupIds = groupIds;
+ }
+
+
+ /**
+ * Sets node connected to me.
+ *
+ * @param nodesConnectedIn the node connected to me
+ */
+ public void setNodesConnectedIn(Map<String, List<RequirementAssignmentData>> nodesConnectedIn) {
+ this.nodesConnectedIn = nodesConnectedIn;
+ }
+
+ /**
+ * Add nodeConnectedIn.
+ *
+ * @param nodeTemplateId the node template id which has connection to me
+ * @param requirementId the requirement id
+ * @param requirementAssignment the requirement assignment
+ */
+ public void addNodesConnectedIn(String nodeTemplateId, String requirementId,
RequirementAssignment requirementAssignment) {
- if (this.nodesConnectedIn == null) {
- this.nodesConnectedIn = new HashMap<>();
- }
- this.nodesConnectedIn.computeIfAbsent(nodeTemplateId, k -> new ArrayList<>());
- this.nodesConnectedIn.get(nodeTemplateId).add(new RequirementAssignmentData(requirementId,
- requirementAssignment));
- }
-
- /**
- * Gets node connected to me.
- *
- * @return the node connected to me
- */
- public Map<String, List<RequirementAssignmentData>> getNodesConnectedIn() {
- return nodesConnectedIn;
- }
-
-
- /**
- * Gets node connected from me.
- *
- * @return the node connected from me
- */
- public Map<String, List<RequirementAssignmentData>> getNodesConnectedOut() {
- return nodesConnectedOut;
- }
-
- /**
- * Sets node connected from me.
- *
- * @param nodesConnectedOut the node connected from me
- */
- public void setNodesConnectedOut(
- Map<String, List<RequirementAssignmentData>> nodesConnectedOut) {
- this.nodesConnectedOut = nodesConnectedOut;
- }
-
- /**
- * Add nodeConnectedOut.
- *
- * @param nodeTemplateId the node template id which is connected from me
- * @param requirementId the requirement id
- * @param requirementAssignment the requirement assignment
- */
- public void addNodesConnectedOut(String nodeTemplateId, String requirementId,
- RequirementAssignment
- requirementAssignment) {
- if (this.nodesConnectedOut == null) {
- this.nodesConnectedOut = new HashMap<>();
- }
- this.nodesConnectedOut.computeIfAbsent(nodeTemplateId, k -> new ArrayList<>());
- this.nodesConnectedOut.get(nodeTemplateId).add(new RequirementAssignmentData(requirementId,
- requirementAssignment));
- }
-
- /**
- * Gets nodes get attr in.
- *
- * @return the get attr in
- */
- public Map<String, List<GetAttrFuncData>> getNodesGetAttrIn() {
- return nodesGetAttrIn;
- }
-
- /**
- * Sets nodes get attr in.
- *
- * @param nodesGetAttrIn the get attr in
- */
- public void setNodesGetAttrIn(
- Map<String, List<GetAttrFuncData>> nodesGetAttrIn) {
- this.nodesGetAttrIn = nodesGetAttrIn;
- }
-
- /**
- * Add nodes get attr in data.
- *
- * @param nodeTemplateId the node template id
- * @param getAttrFuncData get attr data
- */
- public void addNodesGetAttrIn(String nodeTemplateId, GetAttrFuncData getAttrFuncData) {
- if (nodesGetAttrIn == null) {
- nodesGetAttrIn = new HashMap<>();
- }
- this.nodesGetAttrIn.putIfAbsent(nodeTemplateId, new ArrayList<>());
- this.nodesGetAttrIn.get(nodeTemplateId).add(getAttrFuncData);
- }
-
- /**
- * Gets output parameters get attr from me.
- *
- * @return the get attr from me
- */
- public List<GetAttrFuncData> getOutputParametersGetAttrIn() {
- return outputParametersGetAttrIn;
- }
-
- /**
- * Sets output parameters get attr from me.
- *
- * @param outputParametersGetAttrIn the output parameters get attr from me
- */
- public void setOutputParametersGetAttrIn(List<GetAttrFuncData> outputParametersGetAttrIn) {
- this.outputParametersGetAttrIn = outputParametersGetAttrIn;
- }
-
- /**
- * Add output parameters get attr data.
- *
- * @param getAttrFuncData get attr data
- */
- public void addOutputParamGetAttrIn(GetAttrFuncData getAttrFuncData) {
- if (outputParametersGetAttrIn == null) {
- outputParametersGetAttrIn = new ArrayList<>();
- }
- this.outputParametersGetAttrIn.add(getAttrFuncData);
- }
-
- /**
- * Gets nodes get attr out.
- *
- * @return the get attr out
- */
- public Map<String, List<GetAttrFuncData>> getNodesGetAttrOut() {
- return nodesGetAttrOut;
- }
-
- /**
- * Sets nodes get attr out.
- *
- * @param nodesGetAttrOut the get attr out
- */
- public void setNodesGetAttrOut(
- Map<String, List<GetAttrFuncData>> nodesGetAttrOut) {
- this.nodesGetAttrOut = nodesGetAttrOut;
- }
-
- /**
- * Add nodes get attr out data.
- *
- * @param nodeTemplateId the node template id
- * @param getAttrFuncData get attr data
- */
- public void addNodesGetAttrOut(String nodeTemplateId, GetAttrFuncData getAttrFuncData) {
- if (nodesGetAttrOut == null) {
- nodesGetAttrOut = new HashMap<>();
- }
- this.nodesGetAttrOut.putIfAbsent(nodeTemplateId, new ArrayList<>());
- this.nodesGetAttrOut.get(nodeTemplateId).add(getAttrFuncData);
- }
+
+ if (this.nodesConnectedIn == null) {
+ this.nodesConnectedIn = new HashMap<>();
+ }
+
+ this.nodesConnectedIn.computeIfAbsent(nodeTemplateId, k -> new ArrayList<>());
+ this.nodesConnectedIn.get(nodeTemplateId).add(
+ new RequirementAssignmentData(requirementId, requirementAssignment));
+ }
+
+ /**
+ * Gets node connected to me.
+ *
+ * @return the node connected to me
+ */
+ public Map<String, List<RequirementAssignmentData>> getNodesConnectedIn() {
+ return nodesConnectedIn;
+ }
+
+
+ /**
+ * Gets node connected from me.
+ *
+ * @return the node connected from me
+ */
+ public Map<String, List<RequirementAssignmentData>> getNodesConnectedOut() {
+ return nodesConnectedOut;
+ }
+
+ /**
+ * Sets node connected from me.
+ *
+ * @param nodesConnectedOut the node connected from me
+ */
+ public void setNodesConnectedOut(Map<String, List<RequirementAssignmentData>> nodesConnectedOut) {
+ this.nodesConnectedOut = nodesConnectedOut;
+ }
+
+ /**
+ * Add nodeConnectedOut.
+ *
+ * @param nodeTemplateId the node template id which is connected from me
+ * @param requirementId the requirement id
+ * @param requirementAssignment the requirement assignment
+ */
+ public void addNodesConnectedOut(String nodeTemplateId, String requirementId,
+ RequirementAssignment requirementAssignment) {
+
+ if (this.nodesConnectedOut == null) {
+ this.nodesConnectedOut = new HashMap<>();
+ }
+
+ this.nodesConnectedOut.computeIfAbsent(nodeTemplateId, k -> new ArrayList<>());
+ this.nodesConnectedOut.get(nodeTemplateId).add(
+ new RequirementAssignmentData(requirementId, requirementAssignment));
+ }
+
+ /**
+ * Gets nodes get attr in.
+ *
+ * @return the get attr in
+ */
+ public Map<String, List<GetAttrFuncData>> getNodesGetAttrIn() {
+ return nodesGetAttrIn;
+ }
+
+ /**
+ * Sets nodes get attr in.
+ *
+ * @param nodesGetAttrIn the get attr in
+ */
+ public void setNodesGetAttrIn(Map<String, List<GetAttrFuncData>> nodesGetAttrIn) {
+ this.nodesGetAttrIn = nodesGetAttrIn;
+ }
+
+ /**
+ * Add nodes get attr in data.
+ *
+ * @param nodeTemplateId the node template id
+ * @param getAttrFuncData get attr data
+ */
+ public void addNodesGetAttrIn(String nodeTemplateId, GetAttrFuncData getAttrFuncData) {
+
+ if (nodesGetAttrIn == null) {
+ nodesGetAttrIn = new HashMap<>();
+ }
+
+ this.nodesGetAttrIn.putIfAbsent(nodeTemplateId, new ArrayList<>());
+ this.nodesGetAttrIn.get(nodeTemplateId).add(getAttrFuncData);
+ }
+
+ /**
+ * Gets output parameters get attr from me.
+ *
+ * @return the get attr from me
+ */
+ public List<GetAttrFuncData> getOutputParametersGetAttrIn() {
+ return outputParametersGetAttrIn;
+ }
+
+ /**
+ * Sets output parameters get attr from me.
+ *
+ * @param outputParametersGetAttrIn the output parameters get attr from me
+ */
+ public void setOutputParametersGetAttrIn(List<GetAttrFuncData> outputParametersGetAttrIn) {
+ this.outputParametersGetAttrIn = outputParametersGetAttrIn;
+ }
+
+ /**
+ * Add output parameters get attr data.
+ *
+ * @param getAttrFuncData get attr data
+ */
+ public void addOutputParamGetAttrIn(GetAttrFuncData getAttrFuncData) {
+
+ if (outputParametersGetAttrIn == null) {
+ outputParametersGetAttrIn = new ArrayList<>();
+ }
+
+ this.outputParametersGetAttrIn.add(getAttrFuncData);
+ }
+
+ /**
+ * Gets nodes get attr out.
+ *
+ * @return the get attr out
+ */
+ public Map<String, List<GetAttrFuncData>> getNodesGetAttrOut() {
+ return nodesGetAttrOut;
+ }
+
+ /**
+ * Sets nodes get attr out.
+ *
+ * @param nodesGetAttrOut the get attr out
+ */
+ public void setNodesGetAttrOut(Map<String, List<GetAttrFuncData>> nodesGetAttrOut) {
+ this.nodesGetAttrOut = nodesGetAttrOut;
+ }
+
+ /**
+ * Add nodes get attr out data.
+ *
+ * @param nodeTemplateId the node template id
+ * @param getAttrFuncData get attr data
+ */
+ public void addNodesGetAttrOut(String nodeTemplateId, GetAttrFuncData getAttrFuncData) {
+
+ if (nodesGetAttrOut == null) {
+ nodesGetAttrOut = new HashMap<>();
+ }
+
+ this.nodesGetAttrOut.putIfAbsent(nodeTemplateId, new ArrayList<>());
+ this.nodesGetAttrOut.get(nodeTemplateId).add(getAttrFuncData);
+ }
+
+ public void removeParamNameFromAttrFuncList(String paramName) {
+
+ if (outputParametersGetAttrIn == null) {
+ return;
+ }
+
+ outputParametersGetAttrIn.removeIf(outputParameters -> paramName.equals(outputParameters.getFieldName()));
+ }
}
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/unifiedmodel/consolidation/NestedConsolidationDataHandler.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/unifiedmodel/consolidation/NestedConsolidationDataHandler.java
new file mode 100644
index 0000000000..f7c877074d
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/unifiedmodel/consolidation/NestedConsolidationDataHandler.java
@@ -0,0 +1,138 @@
+/*
+ * 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.datatypes.heattotosca.unifiedmodel.consolidation;
+
+import java.util.Objects;
+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.heat.datatypes.model.HeatOrchestrationTemplate;
+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.services.heattotosca.errors.DuplicateResourceIdsInDifferentFilesErrorBuilder;
+
+public class NestedConsolidationDataHandler implements ConsolidationDataHandler {
+
+ private final NestedConsolidationData nestedConsolidationData;
+
+ public NestedConsolidationDataHandler(NestedConsolidationData nestedConsolidationData) {
+ this.nestedConsolidationData = nestedConsolidationData;
+ }
+
+ @Override
+ public void addNodesConnectedOut(TranslateTo translateTo, String nodeTemplateId, String requirementId,
+ RequirementAssignment requirementAssignment) {
+ EntityConsolidationData entityConsolidationData =
+ getNestedTemplateConsolidationData(translateTo, translateTo.getHeatFileName(),
+ translateTo.getTranslatedId());
+
+ if (Objects.nonNull(entityConsolidationData)) {
+ entityConsolidationData.addNodesConnectedOut(nodeTemplateId, requirementId, requirementAssignment);
+ }
+ }
+
+ @Override
+ public void addNodesConnectedIn(TranslateTo translateTo, String sourceNodeTemplateId,
+ String dependentNodeTemplateId, String targetResourceId,
+ String requirementId, RequirementAssignment requirementAssignment) {
+
+ EntityConsolidationData entityConsolidationData =
+ getNestedTemplateConsolidationData(translateTo, translateTo.getHeatFileName(), dependentNodeTemplateId);
+
+ if (Objects.nonNull(entityConsolidationData)) {
+ entityConsolidationData.addNodesConnectedIn(sourceNodeTemplateId, requirementId, requirementAssignment);
+ }
+
+ }
+
+ @Override
+ public void removeParamNameFromAttrFuncList(ServiceTemplate serviceTemplate,
+ HeatOrchestrationTemplate heatOrchestrationTemplate,
+ String paramName,
+ String contrailSharedResourceId,
+ String sharedTranslatedResourceId) {
+
+ throw new UnsupportedOperationException(
+ "API removeParamNameFromAttrFuncList not supported for NestedConsolidationDataHandler");
+
+ }
+
+ private NestedTemplateConsolidationData getNestedTemplateConsolidationData(TranslateTo translateTo,
+ String nestedHeatFileName,
+ String nestedNodeTemplateId) {
+ ServiceTemplate serviceTemplate = translateTo.getServiceTemplate();
+ TranslationContext context = translateTo.getContext();
+ return getNestedTemplateConsolidationData(serviceTemplate, context, nestedHeatFileName, nestedNodeTemplateId);
+ }
+
+ private NestedTemplateConsolidationData getNestedTemplateConsolidationData(
+ ServiceTemplate serviceTemplate, TranslationContext context,
+ String nestedHeatFileName, String nestedNodeTemplateId) {
+
+
+ if (isNestedResourceIdOccursInDifferentNestedFiles(context, nestedHeatFileName,
+ nestedNodeTemplateId)) {
+ throw new CoreException(new
+ DuplicateResourceIdsInDifferentFilesErrorBuilder(
+ nestedNodeTemplateId).build());
+ }
+
+ if (isNodeTemplatePointsToServiceTemplateWithoutNodeTemplates(
+ nestedNodeTemplateId, nestedHeatFileName, context)) {
+ return null;
+ }
+
+ String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate);
+ 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;
+ }
+
+ private boolean isNodeTemplatePointsToServiceTemplateWithoutNodeTemplates(String nestedNodeTemplateId,
+ String nestedHeatFileName,
+ TranslationContext context) {
+
+ return context.isServiceTemplateWithoutNodeTemplatesSection(
+ FileUtils.getFileWithoutExtention(nestedHeatFileName))
+ || context.isNodeTemplateIdPointsToStWithoutNodeTemplates(nestedNodeTemplateId);
+ }
+
+ private boolean isNestedResourceIdOccursInDifferentNestedFiles(TranslationContext context,
+ String nestedHeatFileName,
+ String nestedNodeTemplateId) {
+ return Objects.nonNull(nestedHeatFileName) && context.getAllTranslatedResourceIdsFromDiffNestedFiles(
+ nestedHeatFileName).contains(nestedNodeTemplateId);
+ }
+}
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/unifiedmodel/consolidation/PortConsolidationDataHandler.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/unifiedmodel/consolidation/PortConsolidationDataHandler.java
new file mode 100644
index 0000000000..2da1f7e0fa
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/unifiedmodel/consolidation/PortConsolidationDataHandler.java
@@ -0,0 +1,98 @@
+package org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation;
+
+import java.util.Optional;
+import org.onap.sdc.tosca.datatypes.model.RequirementAssignment;
+import org.onap.sdc.tosca.datatypes.model.ServiceTemplate;
+import org.openecomp.sdc.heat.datatypes.model.HeatOrchestrationTemplate;
+import org.openecomp.sdc.heat.datatypes.model.Resource;
+import org.openecomp.sdc.tosca.services.ToscaUtil;
+import org.openecomp.sdc.translator.datatypes.heattotosca.to.TranslateTo;
+import org.openecomp.sdc.translator.services.heattotosca.HeatToToscaUtil;
+
+public class PortConsolidationDataHandler implements ConsolidationDataHandler {
+
+ private final PortConsolidationData portConsolidationData;
+
+ public PortConsolidationDataHandler(PortConsolidationData portConsolidationData) {
+ this.portConsolidationData = portConsolidationData;
+ }
+
+ @Override
+ public void addNodesConnectedOut(TranslateTo translateTo, String nodeTemplateId, String requirementId,
+ RequirementAssignment requirementAssignment) {
+
+ EntityConsolidationData entityConsolidationData =
+ getPortTemplateConsolidationData(translateTo, translateTo.getResourceId(),
+ translateTo.getResource().getType(), translateTo.getTranslatedId());
+
+ entityConsolidationData.addNodesConnectedOut(nodeTemplateId, requirementId, requirementAssignment);
+
+ }
+
+ @Override
+ public void addNodesConnectedIn(TranslateTo translateTo, String sourceNodeTemplateId,
+ String dependentNodeTemplateId, String targetResourceId, String requirementId,
+ RequirementAssignment requirementAssignment) {
+
+ EntityConsolidationData entityConsolidationData =
+ getPortTemplateConsolidationData(translateTo, translateTo.getResourceId(),
+ translateTo.getResource().getType(), dependentNodeTemplateId);
+
+ entityConsolidationData.addNodesConnectedIn(sourceNodeTemplateId, requirementId, requirementAssignment);
+
+ }
+
+ @Override
+ public void removeParamNameFromAttrFuncList(ServiceTemplate serviceTemplate,
+ HeatOrchestrationTemplate heatOrchestrationTemplate, String paramName, String contrailSharedResourceId,
+ String sharedTranslatedResourceId) {
+
+ Resource resource = heatOrchestrationTemplate.getResources().get(contrailSharedResourceId);
+ EntityConsolidationData entityConsolidationData = getPortTemplateConsolidationData(serviceTemplate,
+ contrailSharedResourceId, resource.getType(), sharedTranslatedResourceId);
+ entityConsolidationData.removeParamNameFromAttrFuncList(paramName);
+
+ }
+
+ private PortTemplateConsolidationData getPortTemplateConsolidationData(TranslateTo translateTo,
+ String portResourceId, String portResourceType, String portNodeTemplateId) {
+ ServiceTemplate serviceTemplate = translateTo.getServiceTemplate();
+ return getPortTemplateConsolidationData(serviceTemplate, portResourceId, portResourceType, portNodeTemplateId);
+ }
+
+ private PortTemplateConsolidationData getPortTemplateConsolidationData(ServiceTemplate serviceTemplate,
+ String portResourceId, String portResourceType, String portNodeTemplateId) {
+
+ String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate);
+ 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;
+ }
+
+ 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;
+ }
+}
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/unifiedmodel/consolidation/SubInterfaceConsolidationDataHandler.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/unifiedmodel/consolidation/SubInterfaceConsolidationDataHandler.java
new file mode 100644
index 0000000000..ddc770bac7
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/unifiedmodel/consolidation/SubInterfaceConsolidationDataHandler.java
@@ -0,0 +1,122 @@
+/*
+ * 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.datatypes.heattotosca.unifiedmodel.consolidation;
+
+import java.util.Objects;
+import java.util.Optional;
+import org.onap.sdc.tosca.datatypes.model.RequirementAssignment;
+import org.onap.sdc.tosca.datatypes.model.ServiceTemplate;
+import org.openecomp.sdc.heat.datatypes.model.HeatOrchestrationTemplate;
+import org.openecomp.sdc.heat.datatypes.model.Resource;
+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.services.heattotosca.HeatToToscaUtil;
+
+public class SubInterfaceConsolidationDataHandler implements ConsolidationDataHandler {
+
+ private final PortConsolidationData portConsolidationData;
+
+ SubInterfaceConsolidationDataHandler(PortConsolidationData portConsolidationData) {
+ this.portConsolidationData = portConsolidationData;
+ }
+
+ @Override
+ public void addNodesConnectedOut(TranslateTo translateTo, String nodeTemplateId, String requirementId,
+ RequirementAssignment requirementAssignment) {
+ ServiceTemplate serviceTemplate = translateTo.getServiceTemplate();
+ if (Objects.nonNull(
+ serviceTemplate.getTopology_template().getNode_templates().get(translateTo.getTranslatedId()))) {
+ Optional<SubInterfaceTemplateConsolidationData> subInterfaceTemplateConsolidationData =
+ getSubInterfaceTemplateConsolidationData(translateTo, translateTo.getTranslatedId());
+
+ subInterfaceTemplateConsolidationData.ifPresent(
+ consolidationData -> consolidationData.addNodesConnectedOut(nodeTemplateId,
+ requirementId, requirementAssignment));
+
+ }
+ }
+
+ @Override
+ public void addNodesConnectedIn(TranslateTo translateTo, String sourceNodeTemplateId,
+ String dependentNodeTemplateId, String targetResourceId,
+ String requirementId, RequirementAssignment requirementAssignment) {
+ ServiceTemplate serviceTemplate = translateTo.getServiceTemplate();
+ TranslationContext translationContext = translateTo.getContext();
+ 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);
+
+ subInterfaceTemplateConsolidationData.ifPresent(
+ consolidationData -> consolidationData.addNodesConnectedIn(sourceNodeTemplateId,
+ requirementId, requirementAssignment));
+
+ }
+
+ @Override
+ public void removeParamNameFromAttrFuncList(ServiceTemplate serviceTemplate,
+ HeatOrchestrationTemplate heatOrchestrationTemplate,
+ String paramName,
+ String contrailSharedResourceId,
+ String sharedTranslatedResourceId) {
+
+
+ throw new UnsupportedOperationException(
+ "API removeParamNameFromAttrFuncList not supported for SubInterfaceConsolidationDataHandler");
+
+ }
+
+ private Optional<SubInterfaceTemplateConsolidationData> getSubInterfaceTemplateConsolidationData(
+ TranslateTo subInterfaceTo, String subInterfaceNodeTemplateId) {
+
+ Optional<String> parentPortNodeTemplateId =
+ HeatToToscaUtil.getSubInterfaceParentPortNodeTemplateId(subInterfaceTo);
+ return parentPortNodeTemplateId.map(s -> getSubInterfaceTemplateConsolidationData(subInterfaceTo, s,
+ subInterfaceNodeTemplateId));
+
+ }
+
+ private SubInterfaceTemplateConsolidationData getSubInterfaceTemplateConsolidationData(TranslateTo subInterfaceTo,
+ String parentPortNodeTemplateId, String subInterfaceNodeTemplateId) {
+
+ String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(subInterfaceTo.getServiceTemplate());
+ 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(parentPortNodeTemplateId);
+ filePortConsolidationData.setPortTemplateConsolidationData(parentPortNodeTemplateId,
+ portTemplateConsolidationData);
+ }
+
+ return portTemplateConsolidationData.getSubInterfaceResourceTemplateConsolidationData(
+ subInterfaceTo.getResource(), subInterfaceNodeTemplateId, parentPortNodeTemplateId);
+ }
+
+}