2 * Copyright © 2016-2018 European Support Limited
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 package org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation;
19 import java.util.Objects;
20 import java.util.Optional;
21 import org.onap.sdc.tosca.datatypes.model.RequirementAssignment;
22 import org.onap.sdc.tosca.datatypes.model.ServiceTemplate;
23 import org.openecomp.sdc.heat.datatypes.model.HeatOrchestrationTemplate;
24 import org.openecomp.sdc.heat.datatypes.model.Resource;
25 import org.openecomp.sdc.tosca.services.ToscaUtil;
26 import org.openecomp.sdc.translator.datatypes.heattotosca.TranslationContext;
27 import org.openecomp.sdc.translator.datatypes.heattotosca.to.TranslateTo;
28 import org.openecomp.sdc.translator.services.heattotosca.HeatToToscaUtil;
30 public class SubInterfaceConsolidationDataHandler implements ConsolidationDataHandler {
32 private final PortConsolidationData portConsolidationData;
34 SubInterfaceConsolidationDataHandler(PortConsolidationData portConsolidationData) {
35 this.portConsolidationData = portConsolidationData;
39 public void addNodesConnectedOut(TranslateTo translateTo, String nodeTemplateId, String requirementId,
40 RequirementAssignment requirementAssignment) {
41 ServiceTemplate serviceTemplate = translateTo.getServiceTemplate();
43 serviceTemplate.getTopology_template().getNode_templates().get(translateTo.getTranslatedId()))) {
44 Optional<SubInterfaceTemplateConsolidationData> subInterfaceTemplateConsolidationData =
45 getSubInterfaceTemplateConsolidationData(translateTo, translateTo.getTranslatedId());
47 subInterfaceTemplateConsolidationData.ifPresent(
48 consolidationData -> consolidationData.addNodesConnectedOut(nodeTemplateId,
49 requirementId, requirementAssignment));
55 public void addNodesConnectedIn(TranslateTo translateTo, String sourceNodeTemplateId,
56 String dependentNodeTemplateId, String targetResourceId,
57 String requirementId, RequirementAssignment requirementAssignment) {
58 ServiceTemplate serviceTemplate = translateTo.getServiceTemplate();
59 TranslationContext translationContext = translateTo.getContext();
60 Resource targetResource = translateTo.getHeatOrchestrationTemplate().getResources().get(targetResourceId);
61 TranslateTo subInterfaceTo = new TranslateTo(translateTo.getHeatFileName(), serviceTemplate,
62 translateTo.getHeatOrchestrationTemplate(), targetResource,
63 targetResourceId, null, translationContext);
64 Optional<SubInterfaceTemplateConsolidationData> subInterfaceTemplateConsolidationData =
65 getSubInterfaceTemplateConsolidationData(subInterfaceTo, targetResourceId);
67 subInterfaceTemplateConsolidationData.ifPresent(
68 consolidationData -> consolidationData.addNodesConnectedIn(sourceNodeTemplateId,
69 requirementId, requirementAssignment));
74 public void removeParamNameFromAttrFuncList(ServiceTemplate serviceTemplate,
75 HeatOrchestrationTemplate heatOrchestrationTemplate,
77 String contrailSharedResourceId,
78 String sharedTranslatedResourceId) {
81 throw new UnsupportedOperationException(
82 "API removeParamNameFromAttrFuncList not supported for SubInterfaceConsolidationDataHandler");
86 private Optional<SubInterfaceTemplateConsolidationData> getSubInterfaceTemplateConsolidationData(
87 TranslateTo subInterfaceTo, String subInterfaceNodeTemplateId) {
89 Optional<String> parentPortNodeTemplateId =
90 HeatToToscaUtil.getSubInterfaceParentPortNodeTemplateId(subInterfaceTo);
91 return parentPortNodeTemplateId.map(s -> getSubInterfaceTemplateConsolidationData(subInterfaceTo, s,
92 subInterfaceNodeTemplateId));
96 private SubInterfaceTemplateConsolidationData getSubInterfaceTemplateConsolidationData(TranslateTo subInterfaceTo,
97 String parentPortNodeTemplateId, String subInterfaceNodeTemplateId) {
99 String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(subInterfaceTo.getServiceTemplate());
100 FilePortConsolidationData filePortConsolidationData =
101 portConsolidationData.getFilePortConsolidationData(serviceTemplateFileName);
103 if (filePortConsolidationData == null) {
104 filePortConsolidationData = new FilePortConsolidationData();
105 portConsolidationData.setFilePortConsolidationData(serviceTemplateFileName,
106 filePortConsolidationData);
109 PortTemplateConsolidationData portTemplateConsolidationData =
110 filePortConsolidationData.getPortTemplateConsolidationData(parentPortNodeTemplateId);
111 if (portTemplateConsolidationData == null) {
112 portTemplateConsolidationData = new PortTemplateConsolidationData();
113 portTemplateConsolidationData.setNodeTemplateId(parentPortNodeTemplateId);
114 filePortConsolidationData.setPortTemplateConsolidationData(parentPortNodeTemplateId,
115 portTemplateConsolidationData);
118 return portTemplateConsolidationData.getSubInterfaceResourceTemplateConsolidationData(
119 subInterfaceTo.getResource(), subInterfaceNodeTemplateId, parentPortNodeTemplateId);