1 package org.onap.so.svnfm.simulator.services;
3 import java.util.ArrayList;
4 import java.util.Collections;
5 import java.util.HashMap;
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;
30 public class InstantiateOperationProgressor extends OperationProgressor {
32 private static final Logger LOGGER = LoggerFactory.getLogger(InstantiateOperationProgressor.class);
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);
41 protected List<GrantsAddResources> getAddResources(final String vnfdId) {
42 final List<GrantsAddResources> resources = new ArrayList<>();
43 LOGGER.info("Will find GrantsAddResources for vnfdId: {}", vnfdId);
44 for (final Vnfd vnfd : vnfds.getVnfdList()) {
45 if (vnfd.getVnfdId().equals(vnfdId)) {
46 LOGGER.info("Found vnfd: {}", vnfd);
47 for (final Vnfc vnfc : vnfd.getVnfcList()) {
48 final GrantsAddResources addResource = new GrantsAddResources();
49 vnfc.setGrantResourceId(UUID.randomUUID().toString());
50 addResource.setId(vnfc.getGrantResourceId());
51 addResource.setType(TypeEnum.fromValue(vnfc.getType()));
52 addResource.setResourceTemplateId(vnfc.getResourceTemplateId());
53 addResource.setVduId(vnfc.getVduId());
54 resources.add(addResource);
62 protected List<GrantsAddResources> getRemoveResources(final String vnfdId) {
63 return Collections.emptyList();
67 protected List<InlineResponse201InstantiatedVnfInfoVnfcResourceInfo> handleGrantResponse(
68 final InlineResponse201 grantResponse) {
69 final InlineResponse201InstantiatedVnfInfo instantiatedVnfInfo = createInstantiatedVnfInfo(grantResponse);
70 svnfmService.updateVnf(InstantiationStateEnum.INSTANTIATED, instantiatedVnfInfo, operation.getVnfInstanceId(),
71 getVimConnections(grantResponse));
72 return instantiatedVnfInfo.getVnfcResourceInfo();
75 private InlineResponse201InstantiatedVnfInfo createInstantiatedVnfInfo(final InlineResponse201 grantResponse) {
76 final InlineResponse201InstantiatedVnfInfo instantiatedVnfInfo = new InlineResponse201InstantiatedVnfInfo();
78 final Map<String, String> mapOfGrantResourceIdToVimConnectionId = new HashMap<>();
79 for (final InlineResponse201AddResources addResource : grantResponse.getAddResources()) {
80 mapOfGrantResourceIdToVimConnectionId.put(addResource.getResourceDefinitionId(),
81 addResource.getVimConnectionId());
83 LOGGER.info("VIM connections in grant response: {}", mapOfGrantResourceIdToVimConnectionId);
84 final String vnfInstanceId = operation.getVnfInstanceId();
86 LOGGER.info("vnfds: {}", vnfds);
88 for (final Vnfd vnfd : vnfds.getVnfdList()) {
89 if (vnfd.getVnfdId().equals(svnfmService.getVnf(vnfInstanceId).getVnfdId())) {
90 for (final Vnfc vnfc : vnfd.getVnfcList()) {
91 final InlineResponse201InstantiatedVnfInfoVnfcResourceInfo vnfcResourceInfoItem =
92 new InlineResponse201InstantiatedVnfInfoVnfcResourceInfo();
93 vnfcResourceInfoItem.setId(vnfc.getVnfcId());
94 vnfcResourceInfoItem.setVduId(vnfc.getVduId());
95 final InlineResponse201InstantiatedVnfInfoResourceHandle computeResource =
96 new InlineResponse201InstantiatedVnfInfoResourceHandle();
97 computeResource.setResourceId(UUID.randomUUID().toString());
98 LOGGER.info("Checking for VIM connection id for : {}", vnfc.getGrantResourceId());
100 .setVimConnectionId(mapOfGrantResourceIdToVimConnectionId.get(vnfc.getGrantResourceId()));
102 computeResource.setVimLevelResourceType("OS::Nova::Server");
103 vnfcResourceInfoItem.setComputeResource(computeResource);
104 instantiatedVnfInfo.addVnfcResourceInfoItem(vnfcResourceInfoItem);
109 return instantiatedVnfInfo;
113 private List<InlineResponse201VimConnectionInfo> getVimConnections(final InlineResponse201 grantResponse) {
114 final List<InlineResponse201VimConnectionInfo> vimConnectionInfo = new ArrayList<>();
115 for (final InlineResponse201VimConnections vimConnection : grantResponse.getVimConnections()) {
116 final ModelMapper modelMapper = new ModelMapper();
117 vimConnectionInfo.add(modelMapper.map(vimConnection, InlineResponse201VimConnectionInfo.class));
119 return vimConnectionInfo;
123 protected ChangeTypeEnum getVnfcChangeType() {
124 return ChangeTypeEnum.ADDED;