1 package org.onap.so.bpmn.infrastructure.scripts
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.slf4j.Logger
18 import org.slf4j.LoggerFactory
19 import org.springframework.http.ResponseEntity
21 import static org.apache.commons.lang3.StringUtils.isBlank
23 class DoAllocateNSSI extends AbstractServiceTaskProcessor {
25 private static final Logger logger = LoggerFactory.getLogger(DoAllocateNSSI.class);
27 ExceptionUtil exceptionUtil = new ExceptionUtil()
29 JsonUtils jsonUtil = new JsonUtils()
31 ObjectMapper objectMapper = new ObjectMapper()
33 private NssmfAdapterUtils nssmfAdapterUtils = new NssmfAdapterUtils(httpClientFactory, jsonUtil)
35 private static final NSSMF_ALLOCATE_URL = "/api/rest/provMns/v1/NSS/SliceProfiles"
37 private static final NSSMF_QUERY_JOB_STATUS_URL = "/NSS/jobs/%s"
40 void preProcessRequest(DelegateExecution execution) {
41 logger.trace("Enter preProcessRequest()")
43 NssmfAdapterNBIRequest nbiRequest = execution.getVariable("nbiRequest") as NssmfAdapterNBIRequest
45 //SliceTaskInfo sliceTaskInfo = execution.getVariable("sliceTaskInfo") as SliceTaskInfo
46 boolean isNSIOptionAvailable = execution.getVariable("isNSIOptionAvailable") as Boolean
48 if (isNSIOptionAvailable) {
49 nbiRequest.serviceInfo.setActionType("modify")
51 nbiRequest.serviceInfo.setActionType("allocate")
53 execution.setVariable("nbiRequest", nbiRequest)
54 logger.trace("Exit preProcessRequest")
58 * send Create Request NSSMF
61 void sendCreateRequestNSSMF(DelegateExecution execution) {
62 NssmfAdapterNBIRequest nbiRequest = execution.getVariable("nbiRequest") as NssmfAdapterNBIRequest
63 String response = nssmfAdapterUtils.sendPostRequestNSSMF(execution, NSSMF_ALLOCATE_URL,
64 objectMapper.writeValueAsString(nbiRequest))
65 ResponseEntity responseEntity = objectMapper.readValue(response, ResponseEntity.class)
66 String respBody = responseEntity.getBody()
67 NssiResponse result = objectMapper.readValue(respBody, NssiResponse.class)
70 execution.setVariable("serviceInfo", nbiRequest.getServiceInfo())
71 execution.setVariable("esrInfo", nbiRequest.getEsrInfo())
75 * query nssi allocate status
78 void queryNSSIStatus(DelegateExecution execution) {
79 NssmfAdapterNBIRequest nbiRequest = new NssmfAdapterNBIRequest()
80 NssiResponse nssiAllocateResult = execution.getVariable("nssiAllocateResult") as NssiResponse
81 String jobId = nssiAllocateResult.getJobId()
82 String nssiId = nssiAllocateResult.getNssiId()
84 ServiceInfo serviceInfo = execution.getVariable("serviceInfo") as ServiceInfo
85 serviceInfo.setNssiId(nssiId)
86 EsrInfo esrInfo = execution.getVariable("esrInfo") as EsrInfo
88 //nbiRequest.setResponseId(jobId)
89 nbiRequest.setServiceInfo(serviceInfo)
90 nbiRequest.setEsrInfo(esrInfo)
92 String endpoint = String.format(NSSMF_QUERY_JOB_STATUS_URL, jobId)
95 nssmfAdapterUtils.sendPostRequestNSSMF(execution, endpoint, objectMapper.writeValueAsString(nbiRequest))
97 ResponseEntity responseEntity = objectMapper.readValue(response, ResponseEntity.class)
98 String result = responseEntity.getBody()
100 ResponseDescriptor responseDescriptor = objectMapper.readValue(result, ResponseDescriptor.class)
102 //todo: handle status
103 execution.setVariable("nssiAllocateResult", responseDescriptor)
106 void prepareUpdateOrchestrationTask(DelegateExecution execution) {
107 //todo;update orchestration task
110 void timeDelay(DelegateExecution execution) {