d5a91f177f2d2374046051067aba2776f7f5880a
[sdc.git] /
1 /*
2  * Copyright © 2016-2018 European Support Limited
3  *
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
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  */
16
17 package org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation;
18
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;
29
30 public class SubInterfaceConsolidationDataHandler implements ConsolidationDataHandler {
31
32     private final PortConsolidationData portConsolidationData;
33
34     SubInterfaceConsolidationDataHandler(PortConsolidationData portConsolidationData) {
35         this.portConsolidationData = portConsolidationData;
36     }
37
38     @Override
39     public void addNodesConnectedOut(TranslateTo translateTo, String nodeTemplateId, String requirementId,
40                                             RequirementAssignment requirementAssignment) {
41         ServiceTemplate serviceTemplate = translateTo.getServiceTemplate();
42         if (Objects.nonNull(
43                 serviceTemplate.getTopology_template().getNode_templates().get(translateTo.getTranslatedId()))) {
44             Optional<SubInterfaceTemplateConsolidationData> subInterfaceTemplateConsolidationData =
45                     getSubInterfaceTemplateConsolidationData(translateTo, translateTo.getTranslatedId());
46
47             subInterfaceTemplateConsolidationData.ifPresent(
48                     consolidationData -> consolidationData.addNodesConnectedOut(nodeTemplateId,
49                             requirementId, requirementAssignment));
50
51         }
52     }
53
54     @Override
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);
66
67         subInterfaceTemplateConsolidationData.ifPresent(
68                 consolidationData -> consolidationData.addNodesConnectedIn(sourceNodeTemplateId,
69                         requirementId, requirementAssignment));
70
71     }
72
73     @Override
74     public void removeParamNameFromAttrFuncList(ServiceTemplate serviceTemplate,
75                                                        HeatOrchestrationTemplate heatOrchestrationTemplate,
76                                                        String paramName,
77                                                        String contrailSharedResourceId,
78                                                        String sharedTranslatedResourceId) {
79
80
81         throw new UnsupportedOperationException("API removeParamNameFromAttrFuncList "
82                   + "not supported for SubInterfaceConsolidationDataHandler");
83
84
85     }
86
87     private Optional<SubInterfaceTemplateConsolidationData> getSubInterfaceTemplateConsolidationData(
88             TranslateTo subInterfaceTo, String subInterfaceNodeTemplateId) {
89         Optional<String> parentPortNodeTemplateId =
90                 HeatToToscaUtil.getSubInterfaceParentPortNodeTemplateId(subInterfaceTo);
91         return parentPortNodeTemplateId.map(s -> getSubInterfaceTemplateConsolidationData(subInterfaceTo,
92                 s, subInterfaceNodeTemplateId));
93     }
94
95     private SubInterfaceTemplateConsolidationData getSubInterfaceTemplateConsolidationData(
96             TranslateTo subInterfaceTo, String parentPortNodeTemplateId,String subInterfaceNodeTemplateId) {
97         String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(subInterfaceTo.getServiceTemplate());
98         Resource resource = subInterfaceTo.getResource();
99         return portConsolidationData.addSubInterfaceTemplateConsolidationData(
100                     serviceTemplateFileName, resource, subInterfaceNodeTemplateId, parentPortNodeTemplateId);
101     }
102
103 }