2 * ============LICENSE_START=======================================================
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
13 * http://www.apache.org/licenses/LICENSE-2.0
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=========================================================
23 package org.onap.so.client.aai.mapper;
25 import java.util.List;
26 import org.modelmapper.Converter;
27 import org.modelmapper.ModelMapper;
28 import org.modelmapper.PropertyMap;
29 import org.modelmapper.spi.MappingContext;
30 import org.onap.aai.domain.yang.RouteTargets;
31 import org.onap.so.bpmn.servicedecomposition.bbobjects.Collection;
32 import org.onap.so.bpmn.servicedecomposition.bbobjects.Configuration;
33 import org.onap.so.bpmn.servicedecomposition.bbobjects.CtagAssignment;
34 import org.onap.so.bpmn.servicedecomposition.bbobjects.Customer;
35 import org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf;
36 import org.onap.so.bpmn.servicedecomposition.bbobjects.HostRoute;
37 import org.onap.so.bpmn.servicedecomposition.bbobjects.InstanceGroup;
38 import org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network;
39 import org.onap.so.bpmn.servicedecomposition.bbobjects.NetworkPolicy;
40 import org.onap.so.bpmn.servicedecomposition.bbobjects.OwningEntity;
41 import org.onap.so.bpmn.servicedecomposition.bbobjects.Pnf;
42 import org.onap.so.bpmn.servicedecomposition.bbobjects.Project;
43 import org.onap.so.bpmn.servicedecomposition.bbobjects.RouteTarget;
44 import org.onap.so.bpmn.servicedecomposition.bbobjects.SegmentationAssignment;
45 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
46 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceSubscription;
47 import org.onap.so.bpmn.servicedecomposition.bbobjects.Subnet;
48 import org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule;
49 import org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup;
50 import org.onap.so.bpmn.servicedecomposition.bbobjects.VpnBinding;
51 import org.springframework.stereotype.Component;
54 public class AAIObjectMapper {
55 private final ModelMapper modelMapper = new ModelMapper();
57 public org.onap.aai.domain.yang.ServiceInstance mapServiceInstance(ServiceInstance serviceInstance) {
58 if (modelMapper.getTypeMap(ServiceInstance.class, org.onap.aai.domain.yang.ServiceInstance.class) == null) {
59 modelMapper.addMappings(new PropertyMap<ServiceInstance, org.onap.aai.domain.yang.ServiceInstance>() {
61 protected void configure() {
62 map().setServiceType(source.getModelInfoServiceInstance().getServiceType());
63 map().setServiceRole(source.getModelInfoServiceInstance().getServiceRole());
64 map().setServiceFunction(source.getModelInfoServiceInstance().getServiceFunction());
65 map().setModelInvariantId(source.getModelInfoServiceInstance().getModelInvariantUuid());
66 map().setModelVersionId(source.getModelInfoServiceInstance().getModelUuid());
67 map().setEnvironmentContext(source.getModelInfoServiceInstance().getEnvironmentContext());
68 map().setWorkloadContext(source.getModelInfoServiceInstance().getWorkloadContext());
73 return modelMapper.map(serviceInstance, org.onap.aai.domain.yang.ServiceInstance.class);
76 public org.onap.aai.domain.yang.Project mapProject(Project project) {
77 return modelMapper.map(project, org.onap.aai.domain.yang.Project.class);
80 public org.onap.aai.domain.yang.ServiceSubscription mapServiceSubscription(
81 ServiceSubscription serviceSubscription) {
82 return modelMapper.map(serviceSubscription, org.onap.aai.domain.yang.ServiceSubscription.class);
85 public org.onap.aai.domain.yang.OwningEntity mapOwningEntity(OwningEntity owningEntity) {
86 return modelMapper.map(owningEntity, org.onap.aai.domain.yang.OwningEntity.class);
89 public org.onap.aai.domain.yang.GenericVnf mapVnf(GenericVnf vnf) {
90 if (modelMapper.getTypeMap(GenericVnf.class, org.onap.aai.domain.yang.GenericVnf.class) == null) {
91 modelMapper.addMappings(new PropertyMap<GenericVnf, org.onap.aai.domain.yang.GenericVnf>() {
93 protected void configure() {
94 map().setModelCustomizationId(source.getModelInfoGenericVnf().getModelCustomizationUuid());
95 map().setModelInvariantId(source.getModelInfoGenericVnf().getModelInvariantUuid());
96 map().setModelVersionId(source.getModelInfoGenericVnf().getModelUuid());
97 map().setNfRole(source.getModelInfoGenericVnf().getNfRole());
98 map().setNfType(source.getModelInfoGenericVnf().getNfType());
99 map().setNfFunction(source.getModelInfoGenericVnf().getNfFunction());
100 map().setNfNamingCode(source.getModelInfoGenericVnf().getNfNamingCode());
105 return modelMapper.map(vnf, org.onap.aai.domain.yang.GenericVnf.class);
108 public org.onap.aai.domain.yang.Pnf mapPnf(Pnf pnf) {
109 if (modelMapper.getTypeMap(Pnf.class, org.onap.aai.domain.yang.Pnf.class) == null) {
110 modelMapper.addMappings(new PropertyMap<Pnf, org.onap.aai.domain.yang.Pnf>() {
112 protected void configure() {
113 map().setModelCustomizationId(source.getModelInfoPnf().getModelCustomizationUuid());
114 map().setModelInvariantId(source.getModelInfoPnf().getModelInvariantUuid());
115 map().setModelVersionId(source.getModelInfoPnf().getModelUuid());
116 map().setNfType(source.getModelInfoPnf().getNfType());
117 map().setInMaint(source.isInMaint());
122 return modelMapper.map(pnf, org.onap.aai.domain.yang.Pnf.class);
125 public org.onap.aai.domain.yang.VfModule mapVfModule(VfModule vfModule) {
126 if (modelMapper.getTypeMap(VfModule.class, org.onap.aai.domain.yang.VfModule.class) == null) {
127 modelMapper.addMappings(new PropertyMap<VfModule, org.onap.aai.domain.yang.VfModule>() {
129 protected void configure() {
130 map().setModelCustomizationId(source.getModelInfoVfModule().getModelCustomizationUUID());
131 map().setModelInvariantId(source.getModelInfoVfModule().getModelInvariantUUID());
132 map().setModelVersionId(source.getModelInfoVfModule().getModelUUID());
133 map().setPersonaModelVersion(source.getModelInfoVfModule().getModelInvariantUUID());
134 map().setIsBaseVfModule(source.getModelInfoVfModule().getIsBaseBoolean());
140 return modelMapper.map(vfModule, org.onap.aai.domain.yang.VfModule.class);
143 public org.onap.aai.domain.yang.VolumeGroup mapVolumeGroup(VolumeGroup volumeGroup) {
144 if (modelMapper.getTypeMap(VolumeGroup.class, org.onap.aai.domain.yang.VolumeGroup.class) == null) {
145 modelMapper.addMappings(new PropertyMap<VolumeGroup, org.onap.aai.domain.yang.VolumeGroup>() {
147 protected void configure() {
148 map().setModelCustomizationId(source.getModelInfoVfModule().getModelCustomizationUUID());
149 map().setVfModuleModelCustomizationId(source.getModelInfoVfModule().getModelCustomizationUUID());
153 return modelMapper.map(volumeGroup, org.onap.aai.domain.yang.VolumeGroup.class);
156 public org.onap.aai.domain.yang.L3Network mapNetwork(L3Network l3Network) {
157 if (modelMapper.getTypeMap(L3Network.class, org.onap.aai.domain.yang.L3Network.class) == null) {
158 modelMapper.addMappings(new PropertyMap<L3Network, org.onap.aai.domain.yang.L3Network>() {
160 protected void configure() {
161 map().setModelCustomizationId(source.getModelInfoNetwork().getModelCustomizationUUID());
162 map().setModelInvariantId(source.getModelInfoNetwork().getModelInvariantUUID());
163 map().setModelVersionId(source.getModelInfoNetwork().getModelUUID());
164 map().setNetworkType(source.getModelInfoNetwork().getNetworkType());
165 map().setNetworkRole(source.getModelInfoNetwork().getNetworkRole());
166 map().setNetworkTechnology(source.getModelInfoNetwork().getNetworkTechnology());
167 modelMapper.addConverter(convertSubnets);
168 modelMapper.addConverter(convertCtagAssignments);
169 modelMapper.addConverter(convertSegmentationAssignments);
173 return modelMapper.map(l3Network, org.onap.aai.domain.yang.L3Network.class);
176 public org.onap.aai.domain.yang.InstanceGroup mapInstanceGroup(InstanceGroup instanceGroup) {
177 if (modelMapper.getTypeMap(InstanceGroup.class, org.onap.aai.domain.yang.InstanceGroup.class) == null) {
178 modelMapper.addMappings(new PropertyMap<InstanceGroup, org.onap.aai.domain.yang.InstanceGroup>() {
180 protected void configure() {
181 map().setInstanceGroupRole(source.getModelInfoInstanceGroup().getInstanceGroupRole());
182 map().setModelInvariantId(source.getModelInfoInstanceGroup().getModelInvariantUUID());
183 map().setModelVersionId(source.getModelInfoInstanceGroup().getModelUUID());
184 map().setInstanceGroupType(source.getModelInfoInstanceGroup().getType());
185 map().setDescription(source.getModelInfoInstanceGroup().getDescription());
186 map().setInstanceGroupFunction(source.getModelInfoInstanceGroup().getFunction());
190 return modelMapper.map(instanceGroup, org.onap.aai.domain.yang.InstanceGroup.class);
193 public org.onap.aai.domain.yang.Customer mapCustomer(Customer customer) {
194 return modelMapper.map(customer, org.onap.aai.domain.yang.Customer.class);
197 private Converter<List<Subnet>, org.onap.aai.domain.yang.Subnets> convertSubnets =
198 new Converter<List<Subnet>, org.onap.aai.domain.yang.Subnets>() {
200 public org.onap.aai.domain.yang.Subnets convert(
201 MappingContext<List<Subnet>, org.onap.aai.domain.yang.Subnets> context) {
202 return mapToAAISubNets(context.getSource());
206 private Converter<List<CtagAssignment>, org.onap.aai.domain.yang.CtagAssignments> convertCtagAssignments =
207 new Converter<List<CtagAssignment>, org.onap.aai.domain.yang.CtagAssignments>() {
209 public org.onap.aai.domain.yang.CtagAssignments convert(
210 MappingContext<List<CtagAssignment>, org.onap.aai.domain.yang.CtagAssignments> context) {
211 return mapToAAICtagAssignmentList(context.getSource());
215 private Converter<List<SegmentationAssignment>, org.onap.aai.domain.yang.SegmentationAssignments> convertSegmentationAssignments =
216 new Converter<List<SegmentationAssignment>, org.onap.aai.domain.yang.SegmentationAssignments>() {
218 public org.onap.aai.domain.yang.SegmentationAssignments convert(
219 MappingContext<List<SegmentationAssignment>, org.onap.aai.domain.yang.SegmentationAssignments> context) {
220 return mapToAAISegmentationAssignmentList(context.getSource());
224 public org.onap.aai.domain.yang.Subnets mapToAAISubNets(List<Subnet> subnetList) {
225 org.onap.aai.domain.yang.Subnets subnets = null;
227 if (!subnetList.isEmpty()) {
228 subnets = new org.onap.aai.domain.yang.Subnets();
229 org.onap.aai.domain.yang.Subnet subnet = null;
230 for (Subnet subnetSource : subnetList) {
231 subnet = new org.onap.aai.domain.yang.Subnet();
232 subnet.setSubnetId(subnetSource.getSubnetId());
233 subnet.setSubnetName(subnetSource.getSubnetName());
234 subnet.setNeutronSubnetId(subnetSource.getNeutronSubnetId());
235 subnet.setGatewayAddress(subnetSource.getGatewayAddress());
236 subnet.setCidrMask(subnetSource.getCidrMask());
237 subnet.setIpVersion(subnetSource.getIpVersion());
238 subnet.setOrchestrationStatus(subnetSource.getOrchestrationStatus().toString());
239 subnet.setCidrMask(subnetSource.getCidrMask());
240 subnet.setDhcpEnabled(subnetSource.isDhcpEnabled());
241 subnet.setDhcpStart(subnetSource.getDhcpStart());
242 subnet.setDhcpEnd(subnetSource.getDhcpEnd());
243 subnet.setSubnetRole(subnetSource.getSubnetRole());
244 subnet.setIpAssignmentDirection(subnetSource.getIpAssignmentDirection());
245 subnet.setSubnetSequence(subnetSource.getSubnetSequence());
247 org.onap.aai.domain.yang.HostRoutes hostRoutes = new org.onap.aai.domain.yang.HostRoutes();
248 org.onap.aai.domain.yang.HostRoute hostRoute = null;
249 for (HostRoute hostRouteSource : subnetSource.getHostRoutes()) {
250 hostRoute = new org.onap.aai.domain.yang.HostRoute();
251 hostRoute.setHostRouteId(hostRouteSource.getHostRouteId());
252 hostRoute.setRoutePrefix(hostRouteSource.getRoutePrefix());
253 hostRoute.setNextHop(hostRouteSource.getNextHop());
254 hostRoute.setNextHopType(hostRouteSource.getNextHopType());
255 hostRoutes.getHostRoute().add(hostRoute);
257 subnet.setHostRoutes(hostRoutes);
258 subnets.getSubnet().add(subnet);
264 public org.onap.aai.domain.yang.CtagAssignments mapToAAICtagAssignmentList(
265 List<CtagAssignment> ctagAssignmentsList) {
266 org.onap.aai.domain.yang.CtagAssignments ctagAssignments = null;
267 if (!ctagAssignmentsList.isEmpty()) {
268 ctagAssignments = new org.onap.aai.domain.yang.CtagAssignments();
270 org.onap.aai.domain.yang.CtagAssignment ctagAssignment = null;
271 for (CtagAssignment ctagAssignmentSource : ctagAssignmentsList) {
272 ctagAssignment = new org.onap.aai.domain.yang.CtagAssignment();
273 ctagAssignment.setVlanIdInner(ctagAssignmentSource.getVlanIdInner());
274 ctagAssignments.getCtagAssignment().add(ctagAssignment);
277 return ctagAssignments;
280 public org.onap.aai.domain.yang.SegmentationAssignments mapToAAISegmentationAssignmentList(
281 List<SegmentationAssignment> segmentationAssignmentList) {
282 org.onap.aai.domain.yang.SegmentationAssignments segmentationAssignments = null;
283 if (!segmentationAssignmentList.isEmpty()) {
284 segmentationAssignments = new org.onap.aai.domain.yang.SegmentationAssignments();
285 org.onap.aai.domain.yang.SegmentationAssignment segmentationAssignment = null;
286 for (SegmentationAssignment segmentationAssignmentSource : segmentationAssignmentList) {
287 segmentationAssignment = new org.onap.aai.domain.yang.SegmentationAssignment();
288 segmentationAssignment.setSegmentationId(segmentationAssignmentSource.getSegmentationId());
289 segmentationAssignments.getSegmentationAssignment().add(segmentationAssignment);
292 return segmentationAssignments;
295 public org.onap.aai.domain.yang.Configuration mapConfiguration(Configuration configuration) {
296 if (null == modelMapper.getTypeMap(Configuration.class, org.onap.aai.domain.yang.Configuration.class)) {
297 modelMapper.addMappings(new PropertyMap<Configuration, org.onap.aai.domain.yang.Configuration>() {
299 protected void configure() {
300 map().setModelCustomizationId(source.getModelInfoConfiguration().getModelCustomizationId());
301 map().setModelVersionId(source.getModelInfoConfiguration().getModelVersionId());
302 map().setModelInvariantId(source.getModelInfoConfiguration().getModelInvariantId());
303 map().setConfigurationType(source.getModelInfoConfiguration().getConfigurationType());
304 map().setConfigurationSubType(source.getModelInfoConfiguration().getConfigurationRole());
305 map().setConfigPolicyName(source.getModelInfoConfiguration().getPolicyName());
306 skip().setConfigurationRole(null);
310 return modelMapper.map(configuration, org.onap.aai.domain.yang.Configuration.class);
313 public org.onap.aai.domain.yang.Collection mapCollection(Collection networkCollection) {
314 if (modelMapper.getTypeMap(Collection.class, org.onap.aai.domain.yang.Collection.class) == null) {
315 modelMapper.addMappings(new PropertyMap<Collection, org.onap.aai.domain.yang.Collection>() {
317 protected void configure() {
318 map().setModelInvariantId(source.getModelInfoCollection().getModelInvariantUUID());
319 map().setModelVersionId(source.getModelInfoCollection().getModelVersionId());
320 map().setCollectionCustomizationId(source.getModelInfoCollection().getModelCustomizationUUID());
321 map().setCollectionFunction(source.getModelInfoCollection().getCollectionFunction());
322 map().setCollectionRole(source.getModelInfoCollection().getCollectionRole());
323 map().setCollectionType(source.getModelInfoCollection().getCollectionType());
324 map().setCollectionName(source.getName());
328 return modelMapper.map(networkCollection, org.onap.aai.domain.yang.Collection.class);
332 public org.onap.aai.domain.yang.VpnBinding mapVpnBinding(VpnBinding vpnBinding) {
333 org.onap.aai.domain.yang.VpnBinding aaiVpnBinding =
334 modelMapper.map(vpnBinding, org.onap.aai.domain.yang.VpnBinding.class);
335 mapRouteTargetToVpnBinding(aaiVpnBinding, vpnBinding);
336 return aaiVpnBinding;
339 public org.onap.aai.domain.yang.RouteTarget mapRouteTarget(RouteTarget routeTarget) {
340 return modelMapper.map(routeTarget, org.onap.aai.domain.yang.RouteTarget.class);
343 private void mapRouteTargetToVpnBinding(org.onap.aai.domain.yang.VpnBinding aaiVpnBinding, VpnBinding vpnBinding) {
344 if (vpnBinding.getRouteTargets() != null && !vpnBinding.getRouteTargets().isEmpty()) {
345 RouteTargets routeTargets = new RouteTargets();
346 for (RouteTarget routeTarget : vpnBinding.getRouteTargets()) {
347 routeTargets.getRouteTarget().add(mapRouteTarget(routeTarget));
349 aaiVpnBinding.setRouteTargets(routeTargets);
353 public org.onap.aai.domain.yang.Subnet mapSubnet(Subnet subnet) {
354 return modelMapper.map(subnet, org.onap.aai.domain.yang.Subnet.class);
357 public org.onap.aai.domain.yang.NetworkPolicy mapNetworkPolicy(NetworkPolicy networkPolicy) {
358 return modelMapper.map(networkPolicy, org.onap.aai.domain.yang.NetworkPolicy.class);