0a5444b9bdddcc28915bc53fda1808c112034e8d
[integration/csit.git] / plans / so / integration-etsi-testing / so-simulators / vnfm-simulator / vnfm-service / src / main / java / org / onap / so / svnfm / simulator / services / InstantiateOperationProgressor.java
1 package org.onap.so.svnfm.simulator.services;
2
3 import java.util.ArrayList;
4 import java.util.Collections;
5 import java.util.HashMap;
6 import java.util.List;
7 import java.util.Map;
8 import java.util.UUID;
9 import org.modelmapper.ModelMapper;
10 import org.onap.so.adapters.vnfmadapter.extclients.vnfm.grant.model.GrantsAddResources;
11 import org.onap.so.adapters.vnfmadapter.extclients.vnfm.grant.model.GrantsAddResources.TypeEnum;
12 import org.onap.so.adapters.vnfmadapter.extclients.vnfm.grant.model.InlineResponse201;
13 import org.onap.so.adapters.vnfmadapter.extclients.vnfm.grant.model.InlineResponse201AddResources;
14 import org.onap.so.adapters.vnfmadapter.extclients.vnfm.grant.model.InlineResponse201VimConnections;
15 import org.onap.so.adapters.vnfmadapter.extclients.vnfm.lcn.model.LcnVnfLcmOperationOccurrenceNotificationAffectedVnfcs.ChangeTypeEnum;
16 import org.onap.so.adapters.vnfmadapter.extclients.vnfm.model.InlineResponse201.InstantiationStateEnum;
17 import org.onap.so.adapters.vnfmadapter.extclients.vnfm.model.InlineResponse201InstantiatedVnfInfo;
18 import org.onap.so.adapters.vnfmadapter.extclients.vnfm.model.InlineResponse201InstantiatedVnfInfoResourceHandle;
19 import org.onap.so.adapters.vnfmadapter.extclients.vnfm.model.InlineResponse201InstantiatedVnfInfoVnfcResourceInfo;
20 import org.onap.so.adapters.vnfmadapter.extclients.vnfm.model.InlineResponse201VimConnectionInfo;
21 import org.onap.so.svnfm.simulator.model.Vnfds;
22 import org.onap.so.svnfm.simulator.model.Vnfds.Vnfc;
23 import org.onap.so.svnfm.simulator.model.Vnfds.Vnfd;
24 import org.onap.so.svnfm.simulator.repository.VnfOperationRepository;
25 import org.onap.so.svnfm.simulator.config.ApplicationConfig;
26 import org.onap.so.svnfm.simulator.model.VnfOperation;
27 import org.slf4j.Logger;
28 import org.slf4j.LoggerFactory;
29
30 public class InstantiateOperationProgressor extends OperationProgressor {
31
32     private static final Logger LOGGER = LoggerFactory.getLogger(InstantiateOperationProgressor.class);
33
34     public InstantiateOperationProgressor(final VnfOperation operation, final SvnfmService svnfmService,
35             final VnfOperationRepository vnfOperationRepository, final ApplicationConfig applicationConfig,
36             final Vnfds vnfds, final SubscriptionService subscriptionService) {
37         super(operation, svnfmService, vnfOperationRepository, applicationConfig, vnfds, subscriptionService);
38     }
39
40     @Override
41     protected List<GrantsAddResources> getAddResources(final String vnfdId) {
42         final List<GrantsAddResources> resources = new ArrayList<>();
43
44         for (final Vnfd vnfd : vnfds.getVnfdList()) {
45             if (vnfd.getVnfdId().equals(vnfdId)) {
46                 for (final Vnfc vnfc : vnfd.getVnfcList()) {
47                     final GrantsAddResources addResource = new GrantsAddResources();
48                     vnfc.setGrantResourceId(UUID.randomUUID().toString());
49                     addResource.setId(vnfc.getGrantResourceId());
50                     addResource.setType(TypeEnum.fromValue(vnfc.getType()));
51                     addResource.setResourceTemplateId(vnfc.getResourceTemplateId());
52                     addResource.setVduId(vnfc.getVduId());
53                     resources.add(addResource);
54                 }
55             }
56         }
57         return resources;
58     }
59
60     @Override
61     protected List<GrantsAddResources> getRemoveResources(final String vnfdId) {
62         return Collections.emptyList();
63     }
64
65     @Override
66     protected List<InlineResponse201InstantiatedVnfInfoVnfcResourceInfo> handleGrantResponse(
67             final InlineResponse201 grantResponse) {
68         final InlineResponse201InstantiatedVnfInfo instantiatedVnfInfo = createInstantiatedVnfInfo(grantResponse);
69         svnfmService.updateVnf(InstantiationStateEnum.INSTANTIATED, instantiatedVnfInfo, operation.getVnfInstanceId(),
70                 getVimConnections(grantResponse));
71         return instantiatedVnfInfo.getVnfcResourceInfo();
72     }
73
74     private InlineResponse201InstantiatedVnfInfo createInstantiatedVnfInfo(final InlineResponse201 grantResponse) {
75         final InlineResponse201InstantiatedVnfInfo instantiatedVnfInfo = new InlineResponse201InstantiatedVnfInfo();
76
77         final Map<String, String> mapOfGrantResourceIdToVimConnectionId = new HashMap<>();
78         for (final InlineResponse201AddResources addResource : grantResponse.getAddResources()) {
79             mapOfGrantResourceIdToVimConnectionId.put(addResource.getResourceDefinitionId(),
80                     addResource.getVimConnectionId());
81         }
82         LOGGER.info("VIM connections in grant response: {}", mapOfGrantResourceIdToVimConnectionId);
83
84         for (final Vnfd vnfd : vnfds.getVnfdList()) {
85             if (vnfd.getVnfdId().equals(svnfmService.getVnf(operation.getVnfInstanceId()).getVnfdId())) {
86                 for (final Vnfc vnfc : vnfd.getVnfcList()) {
87                     final InlineResponse201InstantiatedVnfInfoVnfcResourceInfo vnfcResourceInfoItem =
88                             new InlineResponse201InstantiatedVnfInfoVnfcResourceInfo();
89                     vnfcResourceInfoItem.setId(vnfc.getVnfcId());
90                     vnfcResourceInfoItem.setVduId(vnfc.getVduId());
91                     final InlineResponse201InstantiatedVnfInfoResourceHandle computeResource =
92                             new InlineResponse201InstantiatedVnfInfoResourceHandle();
93                     computeResource.setResourceId(UUID.randomUUID().toString());
94                     LOGGER.info("Checking for VIM connection id for : {}", vnfc.getGrantResourceId());
95                     computeResource
96                             .setVimConnectionId(mapOfGrantResourceIdToVimConnectionId.get(vnfc.getGrantResourceId()));
97
98                     computeResource.setVimLevelResourceType("OS::Nova::Server");
99                     vnfcResourceInfoItem.setComputeResource(computeResource);
100                     instantiatedVnfInfo.addVnfcResourceInfoItem(vnfcResourceInfoItem);
101                 }
102             }
103         }
104
105         return instantiatedVnfInfo;
106     }
107
108
109     private List<InlineResponse201VimConnectionInfo> getVimConnections(final InlineResponse201 grantResponse) {
110         final List<InlineResponse201VimConnectionInfo> vimConnectionInfo = new ArrayList<>();
111         for (final InlineResponse201VimConnections vimConnection : grantResponse.getVimConnections()) {
112             final ModelMapper modelMapper = new ModelMapper();
113             vimConnectionInfo.add(modelMapper.map(vimConnection, InlineResponse201VimConnectionInfo.class));
114         }
115         return vimConnectionInfo;
116     }
117
118     @Override
119     protected ChangeTypeEnum getVnfcChangeType() {
120         return ChangeTypeEnum.ADDED;
121     }
122
123 }