Merge from ECOMP's repository
[vid.git] / vid-app-common / src / main / java / org / onap / vid / job / command / VolumeGroupInstantiationCommand.java
1 package org.onap.vid.job.command;
2
3
4 import org.apache.commons.lang3.StringUtils;
5 import org.onap.vid.changeManagement.RequestDetailsWrapper;
6 import org.onap.vid.job.*;
7 import org.onap.vid.job.command.CommandParentData.CommandDataKey;
8 import org.onap.vid.model.serviceInstantiation.VfModule;
9 import org.onap.vid.mso.model.VolumeGroupRequestDetails;
10 import org.onap.vid.services.AsyncInstantiationBusinessLogic;
11 import org.springframework.beans.factory.config.ConfigurableBeanFactory;
12 import org.springframework.context.annotation.Scope;
13 import org.springframework.stereotype.Component;
14
15 import javax.inject.Inject;
16 import java.util.Collections;
17 import java.util.List;
18 import java.util.Map;
19
20 @Component
21 @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
22 public class VolumeGroupInstantiationCommand extends ResourceInstantiationCommand {
23     @Inject
24     private AsyncInstantiationBusinessLogic asyncInstantiationBL;
25
26     @Inject
27     protected JobsBrokerService jobsBrokerService;
28
29     @Inject
30     protected JobAdapter jobAdapter;
31
32     @Override
33     protected String getRequestPath() {
34         return asyncInstantiationBL.getVolumeGroupInstantiationPath(commandParentData.getInstanceId(CommandDataKey.SERVICE_INSTANCE_ID),commandParentData.getInstanceId(CommandDataKey.VNF_INSTANCE_ID));
35     }
36
37     @Override
38     protected RequestDetailsWrapper<VolumeGroupRequestDetails> generateMSORequest(JobAdapter.AsyncJobRequest request, String userId) {
39         return asyncInstantiationBL.generateVolumeGroupInstantiationRequest(
40                 (VfModule) getSharedData().getRequest(),
41                 commandParentData.getModelInfo(CommandDataKey.SERVICE_MODEL_INFO),
42                 commandParentData.getInstanceId(CommandDataKey.SERVICE_INSTANCE_ID),
43                 commandParentData.getModelInfo(CommandDataKey.VNF_MODEL_INFO),
44                 commandParentData.getInstanceId(CommandDataKey.VNF_INSTANCE_ID),
45                 getSharedData().getUserId()
46         );
47     }
48
49     @Override
50     protected NextCommand getNextCommand(String requestId, String instanceId){
51         return new NextCommand(
52                 Job.JobStatus.RESOURCE_IN_PROGRESS,
53                 new VolumeGroupInProgressStatusCommand(getSharedData(), requestId, instanceId, commandParentData)
54         );
55     }
56
57     @Override
58     protected String getJobAuditMSOStatus() {
59         return "VOLUME_GROUP_REQUESTED";
60     }
61
62     @Override
63     public NextCommand call() {
64         String vgName = ((VfModule)getSharedData().getRequest()).getVolumeGroupInstanceName();
65         if(StringUtils.isNotEmpty(vgName)){
66             return super.call();//create volume group
67         }else {
68             //go to vf module creation
69             VfModule request = (VfModule) getSharedData().getRequest();
70             Map<String, Object> dataForChild = buildDataForChild();
71             List<String> vfModuleJob = Collections.singletonList(jobsBrokerService.add(
72                     jobAdapter.createChildJob(JobType.VfmoduleInstantiation, Job.JobStatus.CREATING, request, getSharedData(), dataForChild)).toString());
73
74             return new NextCommand(Job.JobStatus.RESOURCE_IN_PROGRESS, new WatchingCommand(getSharedData(), vfModuleJob, false));
75         }
76
77     }
78
79     private Map<String, Object> buildDataForChild() {
80        return commandParentData.getParentData();
81     }
82
83 }