AssignPnfBB connects PNF and service instance in AAI
[so.git] / bpmn / so-bpmn-tasks / src / main / java / org / onap / so / client / aai / mapper / AAIObjectMapper.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Modifications Copyright (c) 2020 Nokia
8  * ================================================================================
9  * Licensed under the Apache License, Version 2.0 (the "License");
10  * you may not use this file except in compliance with the License.
11  * You may obtain a copy of the License at
12  * 
13  *      http://www.apache.org/licenses/LICENSE-2.0
14  * 
15  * Unless required by applicable law or agreed to in writing, software
16  * distributed under the License is distributed on an "AS IS" BASIS,
17  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18  * See the License for the specific language governing permissions and
19  * limitations under the License.
20  * ============LICENSE_END=========================================================
21  */
22
23 package org.onap.so.client.aai.mapper;
24
25 import org.modelmapper.ModelMapper;
26 import org.modelmapper.PropertyMap;
27 import org.onap.aai.domain.yang.RouteTargets;
28 import org.onap.so.bpmn.servicedecomposition.bbobjects.*;
29 import org.springframework.stereotype.Component;
30 import java.util.List;
31 import org.modelmapper.Converter;
32 import org.modelmapper.spi.MappingContext;
33 import org.onap.so.bpmn.servicedecomposition.bbobjects.HostRoute;
34 import org.onap.so.bpmn.servicedecomposition.bbobjects.SegmentationAssignment;
35 import org.onap.so.bpmn.servicedecomposition.bbobjects.CtagAssignment;
36 import org.onap.so.bpmn.servicedecomposition.bbobjects.Subnet;
37
38 @Component
39 public class AAIObjectMapper {
40     private static final ModelMapper modelMapper = new ModelMapper();
41
42     public org.onap.aai.domain.yang.ServiceInstance mapServiceInstance(ServiceInstance serviceInstance) {
43         if (modelMapper.getTypeMap(ServiceInstance.class, org.onap.aai.domain.yang.ServiceInstance.class) == null) {
44             modelMapper.addMappings(new PropertyMap<ServiceInstance, org.onap.aai.domain.yang.ServiceInstance>() {
45                 @Override
46                 protected void configure() {
47                     map().setServiceType(source.getModelInfoServiceInstance().getServiceType());
48                     map().setServiceRole(source.getModelInfoServiceInstance().getServiceRole());
49                     map().setModelInvariantId(source.getModelInfoServiceInstance().getModelInvariantUuid());
50                     map().setModelVersionId(source.getModelInfoServiceInstance().getModelUuid());
51                     map().setEnvironmentContext(source.getModelInfoServiceInstance().getEnvironmentContext());
52                     map().setWorkloadContext(source.getModelInfoServiceInstance().getWorkloadContext());
53                 }
54             });
55         }
56
57         return modelMapper.map(serviceInstance, org.onap.aai.domain.yang.ServiceInstance.class);
58     }
59
60     public org.onap.aai.domain.yang.Project mapProject(Project project) {
61         return modelMapper.map(project, org.onap.aai.domain.yang.Project.class);
62     }
63
64     public org.onap.aai.domain.yang.ServiceSubscription mapServiceSubscription(
65             ServiceSubscription serviceSubscription) {
66         return modelMapper.map(serviceSubscription, org.onap.aai.domain.yang.ServiceSubscription.class);
67     }
68
69     public org.onap.aai.domain.yang.OwningEntity mapOwningEntity(OwningEntity owningEntity) {
70         return modelMapper.map(owningEntity, org.onap.aai.domain.yang.OwningEntity.class);
71     }
72
73     public org.onap.aai.domain.yang.GenericVnf mapVnf(GenericVnf vnf) {
74         if (modelMapper.getTypeMap(GenericVnf.class, org.onap.aai.domain.yang.GenericVnf.class) == null) {
75             modelMapper.addMappings(new PropertyMap<GenericVnf, org.onap.aai.domain.yang.GenericVnf>() {
76                 @Override
77                 protected void configure() {
78                     map().setModelCustomizationId(source.getModelInfoGenericVnf().getModelCustomizationUuid());
79                     map().setModelInvariantId(source.getModelInfoGenericVnf().getModelInvariantUuid());
80                     map().setModelVersionId(source.getModelInfoGenericVnf().getModelUuid());
81                     map().setNfRole(source.getModelInfoGenericVnf().getNfRole());
82                     map().setNfType(source.getModelInfoGenericVnf().getNfType());
83                     map().setNfFunction(source.getModelInfoGenericVnf().getNfFunction());
84                     map().setNfNamingCode(source.getModelInfoGenericVnf().getNfNamingCode());
85                 }
86             });
87         }
88
89         return modelMapper.map(vnf, org.onap.aai.domain.yang.GenericVnf.class);
90     }
91
92     public org.onap.aai.domain.yang.Pnf mapPnf(Pnf pnf) {
93         return modelMapper.map(pnf, org.onap.aai.domain.yang.Pnf.class);
94     }
95
96     public org.onap.aai.domain.yang.VfModule mapVfModule(VfModule vfModule) {
97         if (modelMapper.getTypeMap(VfModule.class, org.onap.aai.domain.yang.VfModule.class) == null) {
98             modelMapper.addMappings(new PropertyMap<VfModule, org.onap.aai.domain.yang.VfModule>() {
99                 @Override
100                 protected void configure() {
101                     map().setModelCustomizationId(source.getModelInfoVfModule().getModelCustomizationUUID());
102                     map().setModelInvariantId(source.getModelInfoVfModule().getModelInvariantUUID());
103                     map().setModelVersionId(source.getModelInfoVfModule().getModelUUID());
104                     map().setPersonaModelVersion(source.getModelInfoVfModule().getModelInvariantUUID());
105                     map().setIsBaseVfModule(source.getModelInfoVfModule().getIsBaseBoolean());
106
107                 }
108             });
109         }
110
111         return modelMapper.map(vfModule, org.onap.aai.domain.yang.VfModule.class);
112     }
113
114     public org.onap.aai.domain.yang.VolumeGroup mapVolumeGroup(VolumeGroup volumeGroup) {
115         if (modelMapper.getTypeMap(VolumeGroup.class, org.onap.aai.domain.yang.VolumeGroup.class) == null) {
116             modelMapper.addMappings(new PropertyMap<VolumeGroup, org.onap.aai.domain.yang.VolumeGroup>() {
117                 @Override
118                 protected void configure() {
119                     map().setModelCustomizationId(source.getModelInfoVfModule().getModelCustomizationUUID());
120                     map().setVfModuleModelCustomizationId(source.getModelInfoVfModule().getModelCustomizationUUID());
121                 }
122             });
123         }
124         return modelMapper.map(volumeGroup, org.onap.aai.domain.yang.VolumeGroup.class);
125     }
126
127     public org.onap.aai.domain.yang.L3Network mapNetwork(L3Network l3Network) {
128         if (modelMapper.getTypeMap(L3Network.class, org.onap.aai.domain.yang.L3Network.class) == null) {
129             modelMapper.addMappings(new PropertyMap<L3Network, org.onap.aai.domain.yang.L3Network>() {
130                 @Override
131                 protected void configure() {
132                     map().setModelCustomizationId(source.getModelInfoNetwork().getModelCustomizationUUID());
133                     map().setModelInvariantId(source.getModelInfoNetwork().getModelInvariantUUID());
134                     map().setModelVersionId(source.getModelInfoNetwork().getModelUUID());
135                     map().setNetworkType(source.getModelInfoNetwork().getNetworkType());
136                     map().setNetworkRole(source.getModelInfoNetwork().getNetworkRole());
137                     map().setNetworkTechnology(source.getModelInfoNetwork().getNetworkTechnology());
138                     modelMapper.addConverter(convertSubnets);
139                     modelMapper.addConverter(convertCtagAssignments);
140                     modelMapper.addConverter(convertSegmentationAssignments);
141                 }
142             });
143         }
144         return modelMapper.map(l3Network, org.onap.aai.domain.yang.L3Network.class);
145     }
146
147     public org.onap.aai.domain.yang.InstanceGroup mapInstanceGroup(InstanceGroup instanceGroup) {
148         if (modelMapper.getTypeMap(InstanceGroup.class, org.onap.aai.domain.yang.InstanceGroup.class) == null) {
149             modelMapper.addMappings(new PropertyMap<InstanceGroup, org.onap.aai.domain.yang.InstanceGroup>() {
150                 @Override
151                 protected void configure() {
152                     map().setInstanceGroupRole(source.getModelInfoInstanceGroup().getInstanceGroupRole());
153                     map().setModelInvariantId(source.getModelInfoInstanceGroup().getModelInvariantUUID());
154                     map().setModelVersionId(source.getModelInfoInstanceGroup().getModelUUID());
155                     map().setInstanceGroupType(source.getModelInfoInstanceGroup().getType());
156                     map().setDescription(source.getModelInfoInstanceGroup().getDescription());
157                     map().setInstanceGroupFunction(source.getModelInfoInstanceGroup().getFunction());
158                 }
159             });
160         }
161         return modelMapper.map(instanceGroup, org.onap.aai.domain.yang.InstanceGroup.class);
162     }
163
164     public org.onap.aai.domain.yang.Customer mapCustomer(Customer customer) {
165         return modelMapper.map(customer, org.onap.aai.domain.yang.Customer.class);
166     }
167
168     private Converter<List<Subnet>, org.onap.aai.domain.yang.Subnets> convertSubnets =
169             new Converter<List<Subnet>, org.onap.aai.domain.yang.Subnets>() {
170                 public org.onap.aai.domain.yang.Subnets convert(
171                         MappingContext<List<Subnet>, org.onap.aai.domain.yang.Subnets> context) {
172                     return mapToAAISubNets(context.getSource());
173                 }
174             };
175
176     private Converter<List<CtagAssignment>, org.onap.aai.domain.yang.CtagAssignments> convertCtagAssignments =
177             new Converter<List<CtagAssignment>, org.onap.aai.domain.yang.CtagAssignments>() {
178                 public org.onap.aai.domain.yang.CtagAssignments convert(
179                         MappingContext<List<CtagAssignment>, org.onap.aai.domain.yang.CtagAssignments> context) {
180                     return mapToAAICtagAssignmentList(context.getSource());
181                 }
182             };
183
184     private Converter<List<SegmentationAssignment>, org.onap.aai.domain.yang.SegmentationAssignments> convertSegmentationAssignments =
185             new Converter<List<SegmentationAssignment>, org.onap.aai.domain.yang.SegmentationAssignments>() {
186                 public org.onap.aai.domain.yang.SegmentationAssignments convert(
187                         MappingContext<List<SegmentationAssignment>, org.onap.aai.domain.yang.SegmentationAssignments> context) {
188                     return mapToAAISegmentationAssignmentList(context.getSource());
189                 }
190             };
191
192     public org.onap.aai.domain.yang.Subnets mapToAAISubNets(List<Subnet> subnetList) {
193         org.onap.aai.domain.yang.Subnets subnets = null;
194
195         if (!subnetList.isEmpty()) {
196             subnets = new org.onap.aai.domain.yang.Subnets();
197             org.onap.aai.domain.yang.Subnet subnet = null;
198             for (Subnet subnetSource : subnetList) {
199                 subnet = new org.onap.aai.domain.yang.Subnet();
200                 subnet.setSubnetId(subnetSource.getSubnetId());
201                 subnet.setSubnetName(subnetSource.getSubnetName());
202                 subnet.setNeutronSubnetId(subnetSource.getNeutronSubnetId());
203                 subnet.setGatewayAddress(subnetSource.getGatewayAddress());
204                 subnet.setCidrMask(subnetSource.getCidrMask());
205                 subnet.setIpVersion(subnetSource.getIpVersion());
206                 subnet.setOrchestrationStatus(subnetSource.getOrchestrationStatus().toString());
207                 subnet.setCidrMask(subnetSource.getCidrMask());
208                 subnet.setDhcpEnabled(subnetSource.isDhcpEnabled());
209                 subnet.setDhcpStart(subnetSource.getDhcpStart());
210                 subnet.setDhcpEnd(subnetSource.getDhcpEnd());
211                 subnet.setSubnetRole(subnetSource.getSubnetRole());
212                 subnet.setIpAssignmentDirection(subnetSource.getIpAssignmentDirection());
213                 subnet.setSubnetSequence(subnetSource.getSubnetSequence());
214
215                 org.onap.aai.domain.yang.HostRoutes hostRoutes = new org.onap.aai.domain.yang.HostRoutes();
216                 org.onap.aai.domain.yang.HostRoute hostRoute = null;
217                 for (HostRoute hostRouteSource : subnetSource.getHostRoutes()) {
218                     hostRoute = new org.onap.aai.domain.yang.HostRoute();
219                     hostRoute.setHostRouteId(hostRouteSource.getHostRouteId());
220                     hostRoute.setRoutePrefix(hostRouteSource.getRoutePrefix());
221                     hostRoute.setNextHop(hostRouteSource.getNextHop());
222                     hostRoute.setNextHopType(hostRouteSource.getNextHopType());
223                     hostRoutes.getHostRoute().add(hostRoute);
224                 }
225                 subnet.setHostRoutes(hostRoutes);
226                 subnets.getSubnet().add(subnet);
227             }
228         }
229         return subnets;
230     }
231
232     public org.onap.aai.domain.yang.CtagAssignments mapToAAICtagAssignmentList(
233             List<CtagAssignment> ctagAssignmentsList) {
234         org.onap.aai.domain.yang.CtagAssignments ctagAssignments = null;
235         if (!ctagAssignmentsList.isEmpty()) {
236             ctagAssignments = new org.onap.aai.domain.yang.CtagAssignments();
237
238             org.onap.aai.domain.yang.CtagAssignment ctagAssignment = null;
239             for (CtagAssignment ctagAssignmentSource : ctagAssignmentsList) {
240                 ctagAssignment = new org.onap.aai.domain.yang.CtagAssignment();
241                 ctagAssignment.setVlanIdInner(ctagAssignmentSource.getVlanIdInner());
242                 ctagAssignments.getCtagAssignment().add(ctagAssignment);
243             }
244         }
245         return ctagAssignments;
246     }
247
248     public org.onap.aai.domain.yang.SegmentationAssignments mapToAAISegmentationAssignmentList(
249             List<SegmentationAssignment> segmentationAssignmentList) {
250         org.onap.aai.domain.yang.SegmentationAssignments segmentationAssignments = null;
251         if (!segmentationAssignmentList.isEmpty()) {
252             segmentationAssignments = new org.onap.aai.domain.yang.SegmentationAssignments();
253             org.onap.aai.domain.yang.SegmentationAssignment segmentationAssignment = null;
254             for (SegmentationAssignment segmentationAssignmentSource : segmentationAssignmentList) {
255                 segmentationAssignment = new org.onap.aai.domain.yang.SegmentationAssignment();
256                 segmentationAssignment.setSegmentationId(segmentationAssignmentSource.getSegmentationId());
257                 segmentationAssignments.getSegmentationAssignment().add(segmentationAssignment);
258             }
259         }
260         return segmentationAssignments;
261     }
262
263     public org.onap.aai.domain.yang.Configuration mapConfiguration(Configuration configuration) {
264         if (null == modelMapper.getTypeMap(Configuration.class, org.onap.aai.domain.yang.Configuration.class)) {
265             modelMapper.addMappings(new PropertyMap<Configuration, org.onap.aai.domain.yang.Configuration>() {
266                 @Override
267                 protected void configure() {
268                     map().setModelCustomizationId(source.getModelInfoConfiguration().getModelCustomizationId());
269                     map().setModelVersionId(source.getModelInfoConfiguration().getModelVersionId());
270                     map().setModelInvariantId(source.getModelInfoConfiguration().getModelInvariantId());
271                     map().setConfigurationType(source.getModelInfoConfiguration().getConfigurationType());
272                     map().setConfigurationSubType(source.getModelInfoConfiguration().getConfigurationRole());
273                     map().setConfigPolicyName(source.getModelInfoConfiguration().getPolicyName());
274                 }
275             });
276         }
277         return modelMapper.map(configuration, org.onap.aai.domain.yang.Configuration.class);
278     }
279
280     public org.onap.aai.domain.yang.Collection mapCollection(Collection networkCollection) {
281         if (modelMapper.getTypeMap(Collection.class, org.onap.aai.domain.yang.Collection.class) == null) {
282             modelMapper.addMappings(new PropertyMap<Collection, org.onap.aai.domain.yang.Collection>() {
283                 @Override
284                 protected void configure() {
285                     map().setModelInvariantId(source.getModelInfoCollection().getModelInvariantUUID());
286                     map().setModelVersionId(source.getModelInfoCollection().getModelVersionId());
287                     map().setCollectionCustomizationId(source.getModelInfoCollection().getModelCustomizationUUID());
288                     map().setCollectionFunction(source.getModelInfoCollection().getCollectionFunction());
289                     map().setCollectionRole(source.getModelInfoCollection().getCollectionRole());
290                     map().setCollectionType(source.getModelInfoCollection().getCollectionType());
291                     map().setCollectionName(source.getName());
292                 }
293             });
294         }
295         return modelMapper.map(networkCollection, org.onap.aai.domain.yang.Collection.class);
296     }
297
298
299     public org.onap.aai.domain.yang.VpnBinding mapVpnBinding(VpnBinding vpnBinding) {
300         org.onap.aai.domain.yang.VpnBinding aaiVpnBinding =
301                 modelMapper.map(vpnBinding, org.onap.aai.domain.yang.VpnBinding.class);
302         mapRouteTargetToVpnBinding(aaiVpnBinding, vpnBinding);
303         return aaiVpnBinding;
304     }
305
306     public org.onap.aai.domain.yang.RouteTarget mapRouteTarget(RouteTarget routeTarget) {
307         return modelMapper.map(routeTarget, org.onap.aai.domain.yang.RouteTarget.class);
308     }
309
310     private void mapRouteTargetToVpnBinding(org.onap.aai.domain.yang.VpnBinding aaiVpnBinding, VpnBinding vpnBinding) {
311         if (vpnBinding.getRouteTargets() != null && !vpnBinding.getRouteTargets().isEmpty()) {
312             RouteTargets routeTargets = new RouteTargets();
313             for (RouteTarget routeTarget : vpnBinding.getRouteTargets()) {
314                 routeTargets.getRouteTarget().add(mapRouteTarget(routeTarget));
315             }
316             aaiVpnBinding.setRouteTargets(routeTargets);
317         }
318     }
319
320     public org.onap.aai.domain.yang.Subnet mapSubnet(Subnet subnet) {
321         return modelMapper.map(subnet, org.onap.aai.domain.yang.Subnet.class);
322     }
323
324     public org.onap.aai.domain.yang.NetworkPolicy mapNetworkPolicy(NetworkPolicy networkPolicy) {
325         return modelMapper.map(networkPolicy, org.onap.aai.domain.yang.NetworkPolicy.class);
326     }
327 }