Merge "Terminate NS Backend Service"
[so.git] / bpmn / so-bpmn-infrastructure-common / src / main / groovy / org / onap / so / bpmn / infrastructure / scripts / DoAllocateNSSI.groovy
1 package org.onap.so.bpmn.infrastructure.scripts
2
3 import com.fasterxml.jackson.databind.ObjectMapper
4 import org.camunda.bpm.engine.delegate.DelegateExecution
5 import org.onap.so.beans.nsmf.EsrInfo
6 import org.onap.so.beans.nsmf.NssiResponse
7 import org.onap.so.beans.nsmf.NssmfAdapterNBIRequest
8 import org.onap.so.beans.nsmf.ResponseDescriptor
9 import org.onap.so.beans.nsmf.ServiceInfo
10 import org.onap.so.beans.nsmf.SliceTaskInfo
11 import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
12 import org.onap.so.bpmn.common.scripts.ExceptionUtil
13 import org.onap.so.bpmn.common.scripts.NssmfAdapterUtils
14 import org.onap.so.bpmn.core.domain.ModelInfo
15 import org.onap.so.bpmn.core.domain.ServiceDecomposition
16 import org.onap.so.bpmn.core.json.JsonUtils
17 import org.onap.aaiclient.client.aai.AAIObjectType
18 import org.onap.aaiclient.client.aai.AAIResourcesClient
19 import org.onap.aaiclient.client.aai.entities.AAIEdgeLabel
20 import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri
21 import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory
22 import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder
23 import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder.Types
24 import org.slf4j.Logger
25 import org.slf4j.LoggerFactory
26 import org.springframework.http.ResponseEntity
27
28 import static org.apache.commons.lang3.StringUtils.isBlank
29
30 class DoAllocateNSSI extends AbstractServiceTaskProcessor {
31
32     private static final Logger logger = LoggerFactory.getLogger(DoAllocateNSSI.class);
33
34     ExceptionUtil exceptionUtil = new ExceptionUtil()
35
36     JsonUtils jsonUtil = new JsonUtils()
37
38     ObjectMapper objectMapper = new ObjectMapper()
39
40     private NssmfAdapterUtils nssmfAdapterUtils = new NssmfAdapterUtils(httpClientFactory, jsonUtil)
41
42     private static final NSSMF_ALLOCATE_URL = "/api/rest/provMns/v1/NSS/SliceProfiles"
43
44     private static final NSSMF_QUERY_JOB_STATUS_URL = "/NSS/jobs/%s"
45
46     @Override
47     void preProcessRequest(DelegateExecution execution) {
48         logger.trace("Enter preProcessRequest()")
49
50         NssmfAdapterNBIRequest nbiRequest = execution.getVariable("nbiRequest") as NssmfAdapterNBIRequest
51
52         //SliceTaskInfo sliceTaskInfo = execution.getVariable("sliceTaskInfo") as SliceTaskInfo
53         boolean isNSIOptionAvailable = execution.getVariable("isNSIOptionAvailable") as Boolean
54
55         if (isNSIOptionAvailable) {
56             nbiRequest.serviceInfo.setActionType("modify")
57         } else {
58             nbiRequest.serviceInfo.setActionType("allocate")
59         }
60         execution.setVariable("nbiRequest", nbiRequest)
61         logger.trace("Exit preProcessRequest")
62     }
63
64     /**
65      * send Create Request NSSMF
66      * @param execution
67      */
68     void sendCreateRequestNSSMF(DelegateExecution execution) {
69         NssmfAdapterNBIRequest nbiRequest = execution.getVariable("nbiRequest") as NssmfAdapterNBIRequest
70         String response = nssmfAdapterUtils.sendPostRequestNSSMF(execution, NSSMF_ALLOCATE_URL,
71                 objectMapper.writeValueAsString(nbiRequest))
72         ResponseEntity responseEntity = objectMapper.readValue(response, ResponseEntity.class)
73         String respBody = responseEntity.getBody()
74         NssiResponse result = objectMapper.readValue(respBody, NssiResponse.class)
75         //todo: if success
76         //todo:
77         execution.setVariable("serviceInfo", nbiRequest.getServiceInfo())
78         execution.setVariable("esrInfo", nbiRequest.getEsrInfo())
79     }
80
81     /**
82      * query nssi allocate status
83      * @param execution
84      */
85     void queryNSSIStatus(DelegateExecution execution) {
86         NssmfAdapterNBIRequest nbiRequest = new NssmfAdapterNBIRequest()
87         NssiResponse nssiAllocateResult = execution.getVariable("nssiAllocateResult") as NssiResponse
88         String jobId = nssiAllocateResult.getJobId()
89         String nssiId = nssiAllocateResult.getNssiId()
90
91         ServiceInfo serviceInfo = execution.getVariable("serviceInfo") as ServiceInfo
92         serviceInfo.setNssiId(nssiId)
93         EsrInfo esrInfo = execution.getVariable("esrInfo") as EsrInfo
94
95         //nbiRequest.setResponseId(jobId)
96         nbiRequest.setServiceInfo(serviceInfo)
97         nbiRequest.setEsrInfo(esrInfo)
98
99         String endpoint = String.format(NSSMF_QUERY_JOB_STATUS_URL, jobId)
100
101         String response =
102                 nssmfAdapterUtils.sendPostRequestNSSMF(execution, endpoint, objectMapper.writeValueAsString(nbiRequest))
103
104         ResponseEntity responseEntity = objectMapper.readValue(response, ResponseEntity.class)
105         String result = responseEntity.getBody()
106         //todo;if success
107         ResponseDescriptor responseDescriptor = objectMapper.readValue(result, ResponseDescriptor.class)
108
109         //todo: handle status
110         execution.setVariable("nssiAllocateResult", responseDescriptor)
111     }
112
113     void prepareUpdateOrchestrationTask(DelegateExecution execution) {
114         //todo;update orchestration task
115     }
116
117     void timeDelay(DelegateExecution execution) {
118         //todo: time delay
119     }
120
121 }