Merge "SOL003 Adapter Package Management - Terminate Subscription"
[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         if (modelMapper.getTypeMap(Pnf.class, org.onap.aai.domain.yang.Pnf.class) == null) {
94             modelMapper.addMappings(new PropertyMap<Pnf, org.onap.aai.domain.yang.Pnf>() {
95                 @Override
96                 protected void configure() {
97                     map().setModelCustomizationId(source.getModelInfoPnf().getModelCustomizationUuid());
98                     map().setModelInvariantId(source.getModelInfoPnf().getModelInvariantUuid());
99                     map().setModelVersionId(source.getModelInfoPnf().getModelUuid());
100                 }
101             });
102         }
103
104         return modelMapper.map(pnf, org.onap.aai.domain.yang.Pnf.class);
105     }
106
107     public org.onap.aai.domain.yang.VfModule mapVfModule(VfModule vfModule) {
108         if (modelMapper.getTypeMap(VfModule.class, org.onap.aai.domain.yang.VfModule.class) == null) {
109             modelMapper.addMappings(new PropertyMap<VfModule, org.onap.aai.domain.yang.VfModule>() {
110                 @Override
111                 protected void configure() {
112                     map().setModelCustomizationId(source.getModelInfoVfModule().getModelCustomizationUUID());
113                     map().setModelInvariantId(source.getModelInfoVfModule().getModelInvariantUUID());
114                     map().setModelVersionId(source.getModelInfoVfModule().getModelUUID());
115                     map().setPersonaModelVersion(source.getModelInfoVfModule().getModelInvariantUUID());
116                     map().setIsBaseVfModule(source.getModelInfoVfModule().getIsBaseBoolean());
117
118                 }
119             });
120         }
121
122         return modelMapper.map(vfModule, org.onap.aai.domain.yang.VfModule.class);
123     }
124
125     public org.onap.aai.domain.yang.VolumeGroup mapVolumeGroup(VolumeGroup volumeGroup) {
126         if (modelMapper.getTypeMap(VolumeGroup.class, org.onap.aai.domain.yang.VolumeGroup.class) == null) {
127             modelMapper.addMappings(new PropertyMap<VolumeGroup, org.onap.aai.domain.yang.VolumeGroup>() {
128                 @Override
129                 protected void configure() {
130                     map().setModelCustomizationId(source.getModelInfoVfModule().getModelCustomizationUUID());
131                     map().setVfModuleModelCustomizationId(source.getModelInfoVfModule().getModelCustomizationUUID());
132                 }
133             });
134         }
135         return modelMapper.map(volumeGroup, org.onap.aai.domain.yang.VolumeGroup.class);
136     }
137
138     public org.onap.aai.domain.yang.L3Network mapNetwork(L3Network l3Network) {
139         if (modelMapper.getTypeMap(L3Network.class, org.onap.aai.domain.yang.L3Network.class) == null) {
140             modelMapper.addMappings(new PropertyMap<L3Network, org.onap.aai.domain.yang.L3Network>() {
141                 @Override
142                 protected void configure() {
143                     map().setModelCustomizationId(source.getModelInfoNetwork().getModelCustomizationUUID());
144                     map().setModelInvariantId(source.getModelInfoNetwork().getModelInvariantUUID());
145                     map().setModelVersionId(source.getModelInfoNetwork().getModelUUID());
146                     map().setNetworkType(source.getModelInfoNetwork().getNetworkType());
147                     map().setNetworkRole(source.getModelInfoNetwork().getNetworkRole());
148                     map().setNetworkTechnology(source.getModelInfoNetwork().getNetworkTechnology());
149                     modelMapper.addConverter(convertSubnets);
150                     modelMapper.addConverter(convertCtagAssignments);
151                     modelMapper.addConverter(convertSegmentationAssignments);
152                 }
153             });
154         }
155         return modelMapper.map(l3Network, org.onap.aai.domain.yang.L3Network.class);
156     }
157
158     public org.onap.aai.domain.yang.InstanceGroup mapInstanceGroup(InstanceGroup instanceGroup) {
159         if (modelMapper.getTypeMap(InstanceGroup.class, org.onap.aai.domain.yang.InstanceGroup.class) == null) {
160             modelMapper.addMappings(new PropertyMap<InstanceGroup, org.onap.aai.domain.yang.InstanceGroup>() {
161                 @Override
162                 protected void configure() {
163                     map().setInstanceGroupRole(source.getModelInfoInstanceGroup().getInstanceGroupRole());
164                     map().setModelInvariantId(source.getModelInfoInstanceGroup().getModelInvariantUUID());
165                     map().setModelVersionId(source.getModelInfoInstanceGroup().getModelUUID());
166                     map().setInstanceGroupType(source.getModelInfoInstanceGroup().getType());
167                     map().setDescription(source.getModelInfoInstanceGroup().getDescription());
168                     map().setInstanceGroupFunction(source.getModelInfoInstanceGroup().getFunction());
169                 }
170             });
171         }
172         return modelMapper.map(instanceGroup, org.onap.aai.domain.yang.InstanceGroup.class);
173     }
174
175     public org.onap.aai.domain.yang.Customer mapCustomer(Customer customer) {
176         return modelMapper.map(customer, org.onap.aai.domain.yang.Customer.class);
177     }
178
179     private Converter<List<Subnet>, org.onap.aai.domain.yang.Subnets> convertSubnets =
180             new Converter<List<Subnet>, org.onap.aai.domain.yang.Subnets>() {
181                 public org.onap.aai.domain.yang.Subnets convert(
182                         MappingContext<List<Subnet>, org.onap.aai.domain.yang.Subnets> context) {
183                     return mapToAAISubNets(context.getSource());
184                 }
185             };
186
187     private Converter<List<CtagAssignment>, org.onap.aai.domain.yang.CtagAssignments> convertCtagAssignments =
188             new Converter<List<CtagAssignment>, org.onap.aai.domain.yang.CtagAssignments>() {
189                 public org.onap.aai.domain.yang.CtagAssignments convert(
190                         MappingContext<List<CtagAssignment>, org.onap.aai.domain.yang.CtagAssignments> context) {
191                     return mapToAAICtagAssignmentList(context.getSource());
192                 }
193             };
194
195     private Converter<List<SegmentationAssignment>, org.onap.aai.domain.yang.SegmentationAssignments> convertSegmentationAssignments =
196             new Converter<List<SegmentationAssignment>, org.onap.aai.domain.yang.SegmentationAssignments>() {
197                 public org.onap.aai.domain.yang.SegmentationAssignments convert(
198                         MappingContext<List<SegmentationAssignment>, org.onap.aai.domain.yang.SegmentationAssignments> context) {
199                     return mapToAAISegmentationAssignmentList(context.getSource());
200                 }
201             };
202
203     public org.onap.aai.domain.yang.Subnets mapToAAISubNets(List<Subnet> subnetList) {
204         org.onap.aai.domain.yang.Subnets subnets = null;
205
206         if (!subnetList.isEmpty()) {
207             subnets = new org.onap.aai.domain.yang.Subnets();
208             org.onap.aai.domain.yang.Subnet subnet = null;
209             for (Subnet subnetSource : subnetList) {
210                 subnet = new org.onap.aai.domain.yang.Subnet();
211                 subnet.setSubnetId(subnetSource.getSubnetId());
212                 subnet.setSubnetName(subnetSource.getSubnetName());
213                 subnet.setNeutronSubnetId(subnetSource.getNeutronSubnetId());
214                 subnet.setGatewayAddress(subnetSource.getGatewayAddress());
215                 subnet.setCidrMask(subnetSource.getCidrMask());
216                 subnet.setIpVersion(subnetSource.getIpVersion());
217                 subnet.setOrchestrationStatus(subnetSource.getOrchestrationStatus().toString());
218                 subnet.setCidrMask(subnetSource.getCidrMask());
219                 subnet.setDhcpEnabled(subnetSource.isDhcpEnabled());
220                 subnet.setDhcpStart(subnetSource.getDhcpStart());
221                 subnet.setDhcpEnd(subnetSource.getDhcpEnd());
222                 subnet.setSubnetRole(subnetSource.getSubnetRole());
223                 subnet.setIpAssignmentDirection(subnetSource.getIpAssignmentDirection());
224                 subnet.setSubnetSequence(subnetSource.getSubnetSequence());
225
226                 org.onap.aai.domain.yang.HostRoutes hostRoutes = new org.onap.aai.domain.yang.HostRoutes();
227                 org.onap.aai.domain.yang.HostRoute hostRoute = null;
228                 for (HostRoute hostRouteSource : subnetSource.getHostRoutes()) {
229                     hostRoute = new org.onap.aai.domain.yang.HostRoute();
230                     hostRoute.setHostRouteId(hostRouteSource.getHostRouteId());
231                     hostRoute.setRoutePrefix(hostRouteSource.getRoutePrefix());
232                     hostRoute.setNextHop(hostRouteSource.getNextHop());
233                     hostRoute.setNextHopType(hostRouteSource.getNextHopType());
234                     hostRoutes.getHostRoute().add(hostRoute);
235                 }
236                 subnet.setHostRoutes(hostRoutes);
237                 subnets.getSubnet().add(subnet);
238             }
239         }
240         return subnets;
241     }
242
243     public org.onap.aai.domain.yang.CtagAssignments mapToAAICtagAssignmentList(
244             List<CtagAssignment> ctagAssignmentsList) {
245         org.onap.aai.domain.yang.CtagAssignments ctagAssignments = null;
246         if (!ctagAssignmentsList.isEmpty()) {
247             ctagAssignments = new org.onap.aai.domain.yang.CtagAssignments();
248
249             org.onap.aai.domain.yang.CtagAssignment ctagAssignment = null;
250             for (CtagAssignment ctagAssignmentSource : ctagAssignmentsList) {
251                 ctagAssignment = new org.onap.aai.domain.yang.CtagAssignment();
252                 ctagAssignment.setVlanIdInner(ctagAssignmentSource.getVlanIdInner());
253                 ctagAssignments.getCtagAssignment().add(ctagAssignment);
254             }
255         }
256         return ctagAssignments;
257     }
258
259     public org.onap.aai.domain.yang.SegmentationAssignments mapToAAISegmentationAssignmentList(
260             List<SegmentationAssignment> segmentationAssignmentList) {
261         org.onap.aai.domain.yang.SegmentationAssignments segmentationAssignments = null;
262         if (!segmentationAssignmentList.isEmpty()) {
263             segmentationAssignments = new org.onap.aai.domain.yang.SegmentationAssignments();
264             org.onap.aai.domain.yang.SegmentationAssignment segmentationAssignment = null;
265             for (SegmentationAssignment segmentationAssignmentSource : segmentationAssignmentList) {
266                 segmentationAssignment = new org.onap.aai.domain.yang.SegmentationAssignment();
267                 segmentationAssignment.setSegmentationId(segmentationAssignmentSource.getSegmentationId());
268                 segmentationAssignments.getSegmentationAssignment().add(segmentationAssignment);
269             }
270         }
271         return segmentationAssignments;
272     }
273
274     public org.onap.aai.domain.yang.Configuration mapConfiguration(Configuration configuration) {
275         if (null == modelMapper.getTypeMap(Configuration.class, org.onap.aai.domain.yang.Configuration.class)) {
276             modelMapper.addMappings(new PropertyMap<Configuration, org.onap.aai.domain.yang.Configuration>() {
277                 @Override
278                 protected void configure() {
279                     map().setModelCustomizationId(source.getModelInfoConfiguration().getModelCustomizationId());
280                     map().setModelVersionId(source.getModelInfoConfiguration().getModelVersionId());
281                     map().setModelInvariantId(source.getModelInfoConfiguration().getModelInvariantId());
282                     map().setConfigurationType(source.getModelInfoConfiguration().getConfigurationType());
283                     map().setConfigurationSubType(source.getModelInfoConfiguration().getConfigurationRole());
284                     map().setConfigPolicyName(source.getModelInfoConfiguration().getPolicyName());
285                 }
286             });
287         }
288         return modelMapper.map(configuration, org.onap.aai.domain.yang.Configuration.class);
289     }
290
291     public org.onap.aai.domain.yang.Collection mapCollection(Collection networkCollection) {
292         if (modelMapper.getTypeMap(Collection.class, org.onap.aai.domain.yang.Collection.class) == null) {
293             modelMapper.addMappings(new PropertyMap<Collection, org.onap.aai.domain.yang.Collection>() {
294                 @Override
295                 protected void configure() {
296                     map().setModelInvariantId(source.getModelInfoCollection().getModelInvariantUUID());
297                     map().setModelVersionId(source.getModelInfoCollection().getModelVersionId());
298                     map().setCollectionCustomizationId(source.getModelInfoCollection().getModelCustomizationUUID());
299                     map().setCollectionFunction(source.getModelInfoCollection().getCollectionFunction());
300                     map().setCollectionRole(source.getModelInfoCollection().getCollectionRole());
301                     map().setCollectionType(source.getModelInfoCollection().getCollectionType());
302                     map().setCollectionName(source.getName());
303                 }
304             });
305         }
306         return modelMapper.map(networkCollection, org.onap.aai.domain.yang.Collection.class);
307     }
308
309
310     public org.onap.aai.domain.yang.VpnBinding mapVpnBinding(VpnBinding vpnBinding) {
311         org.onap.aai.domain.yang.VpnBinding aaiVpnBinding =
312                 modelMapper.map(vpnBinding, org.onap.aai.domain.yang.VpnBinding.class);
313         mapRouteTargetToVpnBinding(aaiVpnBinding, vpnBinding);
314         return aaiVpnBinding;
315     }
316
317     public org.onap.aai.domain.yang.RouteTarget mapRouteTarget(RouteTarget routeTarget) {
318         return modelMapper.map(routeTarget, org.onap.aai.domain.yang.RouteTarget.class);
319     }
320
321     private void mapRouteTargetToVpnBinding(org.onap.aai.domain.yang.VpnBinding aaiVpnBinding, VpnBinding vpnBinding) {
322         if (vpnBinding.getRouteTargets() != null && !vpnBinding.getRouteTargets().isEmpty()) {
323             RouteTargets routeTargets = new RouteTargets();
324             for (RouteTarget routeTarget : vpnBinding.getRouteTargets()) {
325                 routeTargets.getRouteTarget().add(mapRouteTarget(routeTarget));
326             }
327             aaiVpnBinding.setRouteTargets(routeTargets);
328         }
329     }
330
331     public org.onap.aai.domain.yang.Subnet mapSubnet(Subnet subnet) {
332         return modelMapper.map(subnet, org.onap.aai.domain.yang.Subnet.class);
333     }
334
335     public org.onap.aai.domain.yang.NetworkPolicy mapNetworkPolicy(NetworkPolicy networkPolicy) {
336         return modelMapper.map(networkPolicy, org.onap.aai.domain.yang.NetworkPolicy.class);
337     }
338 }