Merge "release the cnf adapter artifacts"
[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 org.camunda.bpm.engine.delegate.BpmnError
4 import org.camunda.bpm.engine.delegate.DelegateExecution
5 import org.onap.aai.domain.yang.ServiceInstance
6 import org.onap.aai.domain.yang.SliceProfile
7 import org.onap.so.beans.nsmf.AllocateAnNssi
8 import org.onap.so.beans.nsmf.AllocateCnNssi
9 import org.onap.so.beans.nsmf.AllocateTnNssi
10 import org.onap.so.beans.nsmf.AnSliceProfile
11 import org.onap.so.beans.nsmf.CnSliceProfile
12 import org.onap.so.beans.nsmf.EsrInfo
13 import org.onap.so.beans.nsmf.JobStatusRequest
14 import org.onap.so.beans.nsmf.NetworkType
15 import org.onap.so.beans.nsmf.NsiInfo
16 import org.onap.so.beans.nsmf.NssiAllocateRequest
17 import org.onap.so.beans.nsmf.PerfReq
18 import org.onap.so.beans.nsmf.PerfReqEmbb
19 import org.onap.so.beans.nsmf.PerfReqUrllc
20 import org.onap.so.beans.nsmf.ResourceSharingLevel
21 import org.onap.so.beans.nsmf.SliceTaskParams
22 import org.onap.so.beans.nsmf.TnSliceProfile
23 import org.onap.so.beans.nsmf.UeMobilityLevel
24 import org.onap.so.bpmn.common.scripts.ExceptionUtil
25 import org.onap.so.bpmn.common.scripts.NssmfAdapterUtils
26 import org.onap.so.bpmn.core.RollbackData
27 import org.onap.so.bpmn.core.domain.ModelInfo
28 import org.onap.so.bpmn.core.domain.ServiceDecomposition
29 import org.onap.so.bpmn.core.json.JsonUtils
30 import org.onap.aaiclient.client.aai.AAIObjectType
31 import org.onap.aaiclient.client.aai.AAIResourcesClient
32 import org.onap.aaiclient.client.aai.entities.AAIEdgeLabel
33 import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri
34 import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory
35 import org.slf4j.Logger
36 import org.slf4j.LoggerFactory
37 import com.fasterxml.jackson.databind.ObjectMapper;
38
39 import static org.apache.commons.lang3.StringUtils.isBlank
40
41
42 class DoAllocateNSSI extends org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor{
43
44     private static final Logger logger = LoggerFactory.getLogger( DoAllocateNSSI.class);
45     private static final ObjectMapper MAPPER = new ObjectMapper();
46
47     ExceptionUtil exceptionUtil = new ExceptionUtil()
48
49     JsonUtils jsonUtil = new JsonUtils()
50
51     private NssmfAdapterUtils nssmfAdapterUtils = new NssmfAdapterUtils(httpClientFactory, jsonUtil)
52
53     /**
54      * Pre Process the BPMN Flow Request
55      * Inclouds:
56      * generate the nsOperationKey
57      * generate the nsParameters
58      */
59     void preProcessRequest (DelegateExecution execution) {
60         logger.trace("Enter preProcessRequest()")
61         String msg = ""
62         String nssmfOperation = ""
63         String msoRequestId = execution.getVariable("msoRequestId")
64         String nsstInput = execution.getVariable("nsstInput")
65         String modelUuid = jsonUtil.getJsonValue(nsstInput, "modelUuid")
66         //modelUuid="2763777c-27bd-4df7-93b8-c690e23f4d3f"
67         String nssiInstanceId = jsonUtil.getJsonValue(nsstInput, "serviceInstanceId")
68         String serviceModelInfo = """{
69             "modelInvariantUuid":"",
70             "modelUuid":"${modelUuid}",
71             "modelVersion":""
72              }"""
73         execution.setVariable("serviceModelInfo",serviceModelInfo)
74         execution.setVariable("nssiInstanceId",nssiInstanceId)
75         String nssiProfileID = UUID.randomUUID().toString()
76         execution.setVariable("nssiProfileID",nssiProfileID)
77         if(isBlank(nssiInstanceId))
78         {
79             nssmfOperation="create"
80             nssiInstanceId = UUID.randomUUID().toString()
81         }else {
82             nssmfOperation = "update"
83         }
84         execution.setVariable("nssmfOperation",nssmfOperation)
85         execution.setVariable("nssiInstanceId",nssiInstanceId)
86
87         def isDebugLogEnabled ="false"
88         def isNSSICreated = false
89         execution.setVariable("isNSSICreated",isNSSICreated)
90
91         int currentCycle = 0
92         execution.setVariable("currentCycle", currentCycle)
93
94         logger.trace("Exit preProcessRequest")
95     }
96
97
98     void getNSSTInfo(DelegateExecution execution){
99         logger.trace("Enter getNSSTInfo in DoAllocateNSSI()")
100         ServiceDecomposition serviceDecomposition= execution.getVariable("serviceDecomposition")
101         ModelInfo modelInfo = serviceDecomposition.getModelInfo()
102         String serviceRole = "nssi"
103         String nssiServiceInvariantUuid = serviceDecomposition.modelInfo.getModelInvariantUuid()
104         String nssiServiceUuid = serviceDecomposition.modelInfo.getModelUuid()
105         String nssiServiceType = serviceDecomposition.getServiceType()
106         String uuiRequest = execution.getVariable("uuiRequest")
107         String nssiServiceName = "nssi_"+jsonUtil.getJsonValue(uuiRequest, "service.name")
108         execution.setVariable("nssiServiceName",nssiServiceName)
109         execution.setVariable("nssiServiceType",nssiServiceType)
110         execution.setVariable("nssiServiceInvariantUuid",nssiServiceInvariantUuid)
111         execution.setVariable("nssiServiceUuid",nssiServiceUuid)
112         execution.setVariable("serviceRole",serviceRole)
113
114         String content = serviceDecomposition.getServiceInfo().getServiceArtifact().get(0).getContent()
115         String nsstID = jsonUtil.getJsonValue(content, "metadata.id")
116         String nsstVendor = jsonUtil.getJsonValue(content, "metadata.vendor")
117         String nsstDomain = jsonUtil.getJsonValue(content, "metadata.domainType")
118         String nsstType = jsonUtil.getJsonValue(content, "metadata.type")
119
120         execution.setVariable("nsstID",nsstID)
121         execution.setVariable("nsstVendor",nsstVendor)
122         execution.setVariable("nsstDomain",nsstDomain)
123         execution.setVariable("nssiServiceUuid",nssiServiceUuid)
124         execution.setVariable("nsstType",nsstType)
125
126         String nsstContentInfo = """{
127         "NsstID":"${nsstID}",
128         "Vendor":"${nsstVendor}",
129         "type":"${nsstType}"
130          }"""
131
132         logger.trace("Exit getNSSTInfo in DoAllocateNSSI()")
133     }
134
135     void timeDelay(DelegateExecution execution) {
136         logger.trace("Enter timeDelay in DoAllocateNSSI()")
137         try {
138             Thread.sleep(60000);
139             int currentCycle = execution.getVariable("currentCycle")
140             currentCycle=currentCycle+1
141             if(currentCycle>60)
142             {
143                 logger.trace("Completed all the retry times... but still nssmf havent completed the creation process...")
144                 exceptionUtil.buildAndThrowWorkflowException(execution, 500, "NSSMF creation didnt complete by time...")
145             }
146             execution.setVariable("currentCycle",currentCycle)
147         } catch(InterruptedException e) {
148             logger.info("Time Delay exception" + e)
149         }
150         logger.trace("Exit timeDelay in DoAllocateNSSI()")
151     }
152
153
154     void sendUpdateRequestNSSMF(DelegateExecution execution) {
155         logger.debug("Enter sendUpdateRequestNSSMF in DoAllocateNSSI()")
156         String domain = execution.getVariable("nsstDomain")
157         String nssmfRequest = buildUpdateNSSMFRequest(execution, domain.toUpperCase())
158
159         String urlString = "/api/rest/provMns/v1/NSS/SliceProfiles"
160
161         String nssmfResponse = nssmfAdapterUtils.sendPostRequestNSSMF(execution, urlString, nssmfRequest)
162
163         if (nssmfResponse != null) {
164             execution.setVariable("nssmfResponse", nssmfResponse)
165             String nssiId = jsonUtil.getJsonValue(nssmfResponse, "nssiId")
166             String jobId = jsonUtil.getJsonValue(nssmfResponse, "jobId")
167             execution.setVariable("nssiId",nssiId)
168             execution.setVariable("jobId",jobId)
169
170         } else {
171             logger.error("received error message from NSSMF : "+ nssmfResponse)
172             exceptionUtil.buildAndThrowWorkflowException(execution, 7000,"Received a Bad Sync Response from NSSMF.")
173         }
174         logger.trace("Exit sendUpdateRequestNSSMF in DoAllocateNSSI()")
175     }
176
177     void sendCreateRequestNSSMF(DelegateExecution execution) {
178         logger.debug("Enter sendCreateRequestNSSMF in DoAllocateNSSI()")
179         //Prepare auth for NSSMF - Begin
180         String domain = execution.getVariable("nsstDomain")
181         String nssmfRequest = buildCreateNSSMFRequest(execution, domain.toUpperCase())
182
183         String urlString = "/api/rest/provMns/v1/NSS/SliceProfiles"
184
185         String nssmfResponse = nssmfAdapterUtils.sendPostRequestNSSMF(execution, urlString, nssmfRequest)
186
187         if (nssmfResponse != null) {
188             execution.setVariable("nssmfResponse", nssmfResponse)
189             String nssiId = jsonUtil.getJsonValue(nssmfResponse, "nssiId")
190             String jobId = jsonUtil.getJsonValue(nssmfResponse, "jobId")
191             execution.setVariable("nssiId",nssiId)
192             execution.setVariable("jobId",jobId)
193
194         } else {
195             logger.error("received error message from NSSMF : "+ nssmfResponse)
196             exceptionUtil.buildAndThrowWorkflowException(execution, 7000,"Received a Bad Sync Response from NSSMF.")
197         }
198
199         logger.debug("Exit sendCreateRequestNSSMF in DoAllocateNSSI()")
200     }
201
202     void getNSSMFProgresss(DelegateExecution execution) {
203         logger.debug("Enter getNSSMFProgresss in DoAllocateNSSI()")
204
205         String nssmfRequest = buildNSSMFProgressRequest(execution)
206         String strUrl="/api/rest/provMns/v1/NSS/jobs/" + execution.getVariable("jobId")
207
208         String nssmfResponse = nssmfAdapterUtils.sendPostRequestNSSMF(execution, strUrl, nssmfRequest)
209
210         if(nssmfResponse != null){
211             Boolean isNSSICreated = false
212             execution.setVariable("nssmfResponse", nssmfResponse)
213             Integer progress = Integer.parseInt(jsonUtil.getJsonValue(nssmfResponse, "responseDescriptor.progress"))
214             String status = jsonUtil.getJsonValue(nssmfResponse, "responseDescriptor.status")
215             String statusDescription = jsonUtil.getJsonValue(nssmfResponse, "responseDescriptor.statusDescription")
216             execution.setVariable("nssmfProgress",progress)
217             execution.setVariable("nssmfStatus",status)
218             execution.setVariable("nddmfStatusDescription",statusDescription)
219             if(progress > 99)
220                 isNSSICreated = true
221             execution.setVariable("isNSSICreated",isNSSICreated)
222         } else {
223             logger.error("received error message from NSSMF : "+ nssmfResponse)
224             exceptionUtil.buildAndThrowWorkflowException(execution, 7000,"Received a Bad Sync Response from NSSMF.")
225         }
226         logger.debug("Exit getNSSMFProgresss in DoAllocateNSSI()")
227     }
228
229     void updateRelationship(DelegateExecution execution) {
230         logger.debug("Enter updateRelationship in DoAllocateNSSI()")
231         String nssiInstanceId = execution.getVariable("nssiInstanceId")
232         String nsiInstanceId = execution.getVariable("nsiServiceInstanceId")
233         try{
234             AAIResourceUri nsiServiceuri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, nsiInstanceId);
235             AAIResourceUri nssiServiceUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, nssiInstanceId)
236             getAAIClient().connect(nsiServiceuri, nssiServiceUri, AAIEdgeLabel.COMPOSED_OF);
237         }catch(Exception ex) {
238             String msg = "Exception in DoAllocateNSSI InstantiateNSSI service while creating relationship " + ex.getMessage()
239             logger.info(msg)
240             exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
241         }
242         logger.debug("Exit updateRelationship in DoAllocateNSSI()")
243     }
244
245
246     void instantiateNSSIService(DelegateExecution execution) {
247         logger.trace("Enter instantiateNSSIService in DoAllocateNSSI()")
248         //String nssiInstanceId = execution.getVariable("nssiInstanceId")
249         String nssiInstanceId = execution.getVariable("nssiId")
250         execution.setVariable("nssiInstanceId",nssiInstanceId)
251         String sliceInstanceId = execution.getVariable("nsiServiceInstanceId")
252         try {
253             org.onap.aai.domain.yang.ServiceInstance nssi = new ServiceInstance();
254             Map<String, Object> serviceProfileMap = execution.getVariable("serviceProfile")
255
256             nssi.setServiceInstanceId(nssiInstanceId)
257             nssi.setServiceInstanceName(execution.getVariable("nssiServiceName"))
258             //nssi.setServiceType(execution.getVariable("nssiServiceType"))
259             nssi.setServiceType(serviceProfileMap.get("sST").toString())
260             String serviceStatus = "deactivated"
261             nssi.setOrchestrationStatus(serviceStatus)
262             String modelInvariantUuid = execution.getVariable("nssiServiceInvariantUuid")
263             String modelUuid = execution.getVariable("nssiServiceUuid")
264             nssi.setModelInvariantId(modelInvariantUuid)
265             nssi.setModelVersionId(modelUuid)
266             String uuiRequest = execution.getVariable("uuiRequest")
267             String serviceInstanceLocationid = jsonUtil.getJsonValue(uuiRequest, "service.parameters.requestInputs.plmnIdList")
268             nssi.setServiceInstanceLocationId(serviceInstanceLocationid)
269             //String snssai = jsonUtil.getJsonValue(uuiRequest, "service.parameters.requestInputs.sNSSAI")
270             String envContext=execution.getVariable("nsstDomain")
271             nssi.setEnvironmentContext(envContext)
272             nssi.setServiceRole(execution.getVariable("serviceRole"))
273             AAIResourcesClient client = new AAIResourcesClient()
274             AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, execution.getVariable("globalSubscriberId"), execution.getVariable("subscriptionServiceType"), nssiInstanceId)
275             client.create(uri, nssi)
276         } catch (BpmnError e) {
277             throw e
278         } catch (Exception ex) {
279             String msg = "Exception in DoCreateSliceServiceInstance.instantiateSliceService. " + ex.getMessage()
280             logger.info(msg)
281             exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
282         }
283         try{
284             AAIResourceUri nsiServiceuri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, sliceInstanceId);
285             AAIResourceUri nssiServiceUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, nssiInstanceId)
286             getAAIClient().connect(nsiServiceuri, nssiServiceUri, AAIEdgeLabel.COMPOSED_OF);
287         }catch(Exception ex) {
288             String msg = "Exception in DoAllocateNSSI InstantiateNSSI service while creating relationship " + ex.getMessage()
289             logger.info(msg)
290             exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
291         }
292
293
294
295         def rollbackData = execution.getVariable("RollbackData")
296         if (rollbackData == null) {
297             rollbackData = new RollbackData();
298         }
299         //rollbackData.put("SERVICEINSTANCE", "disableRollback", idisableRollback.toStrng())
300         rollbackData.put("SERVICEINSTANCE", "rollbackAAI", "true")
301         rollbackData.put("SERVICEINSTANCE", "serviceInstanceId", nssiInstanceId)
302         rollbackData.put("SERVICEINSTANCE", "subscriptionServiceType", execution.getVariable("subscriptionServiceType"))
303         rollbackData.put("SERVICEINSTANCE", "globalSubscriberId", execution.getVariable("globalSubscriberId"))
304         execution.setVariable("rollbackData", rollbackData)
305         execution.setVariable("RollbackData", rollbackData)
306         logger.debug("RollbackData:" + rollbackData)
307         logger.trace("Exit instantiateNSSIService in DoAllocateNSSI()")
308     }
309
310
311     void createSliceProfile(DelegateExecution execution) {
312         logger.trace("Enter createSliceProfile in DoAllocateNSSI()")
313         String sliceserviceInstanceId = execution.getVariable("nssiInstanceId")
314         String nssiProfileID = execution.getVariable("nssiProfileID")
315         Map<String, Object> sliceProfileMap = execution.getVariable("sliceProfileCn")
316         Map<String, Object> serviceProfileMap = execution.getVariable("serviceProfile")
317         SliceProfile sliceProfile = new SliceProfile()
318         sliceProfile.setServiceAreaDimension("")
319         sliceProfile.setPayloadSize(0)
320         sliceProfile.setJitter(0)
321         sliceProfile.setSurvivalTime(0)
322         //sliceProfile.setCsAvailability()
323         //sliceProfile.setReliability()
324         sliceProfile.setExpDataRate(0)
325         sliceProfile.setTrafficDensity(0)
326         sliceProfile.setConnDensity(0)
327         sliceProfile.setSNssai(sliceProfileMap.get("sNSSAI").toString())
328         sliceProfile.setExpDataRateUL(Integer.parseInt(sliceProfileMap.get("expDataRateUL").toString()))
329         sliceProfile.setExpDataRateDL(Integer.parseInt(sliceProfileMap.get("expDataRateDL").toString()))
330         sliceProfile.setActivityFactor(Integer.parseInt(sliceProfileMap.get("activityFactor").toString()))
331         sliceProfile.setResourceSharingLevel(sliceProfileMap.get("activityFactor").toString())
332         sliceProfile.setUeMobilityLevel(serviceProfileMap.get("uEMobilityLevel").toString())
333         sliceProfile.setCoverageAreaTAList(serviceProfileMap.get("coverageAreaTAList").toString())
334         sliceProfile.setMaxNumberOfUEs(Integer.parseInt(sliceProfileMap.get("activityFactor").toString()))
335         sliceProfile.setLatency(Integer.parseInt(sliceProfileMap.get("latency").toString()))
336         sliceProfile.setProfileId(nssiProfileID)
337         sliceProfile.setE2ELatency(0)
338
339         try {
340             AAIResourcesClient client = new AAIResourcesClient()
341             AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SLICE_PROFILE,
342                     execution.getVariable("globalSubscriberId"), execution.getVariable("subscriptionServiceType"), sliceserviceInstanceId, nssiProfileID)
343             client.create(uri, sliceProfile)
344         } catch (BpmnError e) {
345             throw e
346         } catch (Exception ex) {
347             String msg = "Exception in DoCreateSliceServiceInstance.instantiateSliceService. " + ex.getMessage()
348             logger.info(msg)
349             exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
350         }
351
352         def rollbackData = execution.getVariable("RollbackData")
353         if (rollbackData == null) {
354             rollbackData = new RollbackData();
355         }
356         //rollbackData.put("SERVICEINSTANCE", "disableRollback", disableRollback.toString())
357         rollbackData.put("SERVICEINSTANCE", "rollbackAAI", "true")
358         rollbackData.put("SERVICEINSTANCE", "serviceInstanceId", sliceserviceInstanceId)
359         rollbackData.put("SERVICEINSTANCE", "subscriptionServiceType", execution.getVariable("serviceType"))
360         rollbackData.put("SERVICEINSTANCE", "globalSubscriberId", execution.getVariable("globalSubscriberId"))
361         execution.setVariable("rollbackData", rollbackData)
362         execution.setVariable("RollbackData", rollbackData)
363         logger.debug("RollbackData:" + rollbackData)
364         logger.trace("Exit createSliceProfile in DoAllocateNSSI()")
365     }
366
367
368     String buildCreateNSSMFRequest(DelegateExecution execution, String domain) {
369
370         NssiAllocateRequest request = new NssiAllocateRequest()
371         String strRequest = ""
372         //String uuiRequest = execution.getVariable("uuiRequest")
373         SliceTaskParams sliceTaskParams = execution.getVariable("sliceTaskParams")
374
375         switch (domain) {
376             case "AN":
377                 EsrInfo esrInfo = new EsrInfo()
378                 esrInfo.setNetworkType(execution.getVariable("networkType"))
379                 esrInfo.setVendor(execution.getVariable("nsstVendor"))
380
381                 NsiInfo nsiInfo = new NsiInfo()
382                 nsiInfo.setNsiId(execution.getVariable("nsiInstanceID"))
383                 nsiInfo.setNsiName(execution.getVariable("nsiInstanceName"))
384
385                 AnSliceProfile anSliceProfile = new AnSliceProfile()
386                 anSliceProfile.setLatency(execution.getVariable("latency"))
387                 anSliceProfile.setCoverageAreaTAList(execution.getVariable("coverageAreaList"))
388                 anSliceProfile.setQi(execution.getVariable("qi"))
389
390                 AllocateAnNssi allocateAnNssi = new AllocateAnNssi()
391                 allocateAnNssi.setNsstId(execution.getVariable("nsstId"))
392                 allocateAnNssi.setNssiName(execution.getVariable("nssiName"))
393                 allocateAnNssi.setNsiInfo(nsiInfo)
394                 allocateAnNssi.setSliceProfile(anSliceProfile)
395                 String anScriptName = sliceTaskParams.getAnScriptName()
396                 allocateAnNssi.setScriptName(anScriptName)
397
398                 request.setAllocateAnNssi(allocateAnNssi)
399                 request.setEsrInfo(esrInfo)
400                 break;
401             case "CN":
402                 Map<String, Object> sliceProfileCn =execution.getVariable("sliceProfileCn")
403                 Map<String, Object> serviceProfile = execution.getVariable("serviceProfile")
404                 NsiInfo nsiInfo = new NsiInfo()
405                 nsiInfo.setNsiId(execution.getVariable("nsiServiceInstanceId"))
406                 nsiInfo.setNsiName(execution.getVariable("nsiServiceInstanceName"))
407
408                 EsrInfo esrInfo = new EsrInfo()
409                 esrInfo.setNetworkType(NetworkType.fromString(domain))
410                 esrInfo.setVendor(execution.getVariable("nsstVendor"))
411                 execution.setVariable("esrInfo",esrInfo)
412
413
414                 PerfReqEmbb perfReqEmbb = new PerfReqEmbb()
415                 perfReqEmbb.setActivityFactor(sliceProfileCn.get("activityFactor"))
416                 perfReqEmbb.setAreaTrafficCapDL(sliceProfileCn.get("areaTrafficCapDL"))
417                 perfReqEmbb.setAreaTrafficCapUL(sliceProfileCn.get("areaTrafficCapUL"))
418                 perfReqEmbb.setExpDataRateDL(sliceProfileCn.get("expDataRateDL"))
419                 perfReqEmbb.setExpDataRateUL(sliceProfileCn.get("expDataRateUL"))
420
421                 List<PerfReqEmbb> listPerfReqEmbbList = new ArrayList<>()
422                 listPerfReqEmbbList.add(perfReqEmbb)
423
424                 PerfReq perfReq = new PerfReq()
425                 perfReq.setPerfReqEmbbList(listPerfReqEmbbList)
426
427                 PerfReqUrllc perfReqUrllc = new PerfReqUrllc()
428                 perfReqUrllc.setConnDensity(0)
429                 perfReqUrllc.setTrafficDensity(0)
430                 perfReqUrllc.setExpDataRate(0)
431                 perfReqUrllc.setReliability(0)
432                 perfReqUrllc.setCsAvailability(0)
433                 perfReqUrllc.setSurvivalTime(0)
434                 perfReqUrllc.setJitter(0)
435                 perfReqUrllc.setE2eLatency(0)
436                 perfReqUrllc.setPayloadSize("0")
437                 perfReqUrllc.setServiceAreaDimension("")
438
439                 List<PerfReqUrllc> perfReqUrllcList = new ArrayList<>()
440                 perfReqUrllcList.add(perfReqUrllc)
441                 perfReq.setPerfReqUrllcList(perfReqUrllcList)
442
443                 CnSliceProfile cnSliceProfile = new CnSliceProfile()
444                 cnSliceProfile.setSliceProfileId(execution.getVariable("nssiProfileID"))
445                 String plmnStr = serviceProfile.get("plmnIdList")
446                 List<String> plmnIdList=Arrays.asList(plmnStr.split("\\|"))
447                 cnSliceProfile.setPlmnIdList(plmnIdList)
448
449                 String resourceSharingLevel = serviceProfile.get("resourceSharingLevel").toString()
450                 cnSliceProfile.setResourceSharingLevel(ResourceSharingLevel.fromString(resourceSharingLevel))
451
452                 String coverageArea = serviceProfile.get("coverageAreaTAList")
453                 List<String> coverageAreaList=Arrays.asList(coverageArea.split("\\|"))
454                 cnSliceProfile.setCoverageAreaTAList(coverageAreaList)
455
456                 String ueMobilityLevel = serviceProfile.get("uEMobilityLevel").toString()
457                 cnSliceProfile.setUeMobilityLevel(UeMobilityLevel.fromString(ueMobilityLevel))
458
459                 int latency = serviceProfile.get("latency")
460                 cnSliceProfile.setLatency(latency)
461
462                 int maxUE = serviceProfile.get("maxNumberofUEs")
463                 cnSliceProfile.setMaxNumberofUEs(maxUE)
464
465                 String snssai = serviceProfile.get("sNSSAI")
466                 List<String> snssaiList = Arrays.asList(snssai.split("\\|"))
467                 cnSliceProfile.setSnssaiList(snssaiList)
468
469                 cnSliceProfile.setPerfReq(perfReq)
470
471                 AllocateCnNssi allocateCnNssi = new AllocateCnNssi()
472                 allocateCnNssi.setNsstId(execution.getVariable("nsstid"))
473                 allocateCnNssi.setNssiName(execution.getVariable("nssiName"))
474                 allocateCnNssi.setSliceProfile(cnSliceProfile)
475                 allocateCnNssi.setNsiInfo(nsiInfo)
476                 String cnScriptName = sliceTaskParams.getCnScriptName()
477                 allocateCnNssi.setScriptName(cnScriptName)
478                 request.setAllocateCnNssi(allocateCnNssi)
479                 request.setEsrInfo(esrInfo)
480                 break;
481             case "TN":
482                 EsrInfo esrInfo = new EsrInfo()
483                 esrInfo.setNetworkType(execution.getVariable("networkType"))
484                 esrInfo.setVendor(execution.getVariable("vendor"))
485
486                 TnSliceProfile tnSliceProfile = new TnSliceProfile()
487                 tnSliceProfile.setLatency(execution.getVariable("latency"))
488                 tnSliceProfile.setBandwidth(execution.getVariable("bandWidth"))
489
490                 NsiInfo nsiInfo = new NsiInfo()
491                 nsiInfo.setNsiId(execution.getVariable("nsiInstanceID"))
492                 nsiInfo.setNsiName(execution.getVariable("nsiInstanceName"))
493
494                 AllocateTnNssi allocateTnNssi = new AllocateTnNssi()
495                 allocateTnNssi.setSliceProfile(tnSliceProfile)
496                 allocateTnNssi.setNsiInfo(nsiInfo)
497                 allocateTnNssi.setNsstId(execution.getVariable("nsstid"))
498                 String tnScriptName = sliceTaskParams.getTnScriptName()
499                 allocateTnNssi.setScriptName(tnScriptName)
500
501                 request.setAllocateTnNssi(allocateTnNssi)
502                 request.setEsrInfo(esrInfo)
503                 break;
504             default:
505                 break;
506         }
507         try {
508             strRequest = MAPPER.writeValueAsString(request);
509         } catch (IOException e) {
510             logger.error("Invalid get progress request bean to convert as string");
511             exceptionUtil.buildAndThrowWorkflowException(execution, 7000, "Invalid get progress request bean to convert as string")
512         }
513         return strRequest
514     }
515
516
517     String buildUpdateNSSMFRequest(DelegateExecution execution, String domain) {
518         NssiAllocateRequest request = new NssiAllocateRequest()
519         String nsstInput = execution.getVariable("nsstInput")
520         String nssiId = jsonUtil.getJsonValue(nsstInput, "serviceInstanceId")
521         String strRequest = ""
522         SliceTaskParams sliceTaskParams = execution.getVariable("sliceTaskParams")
523         switch (domain) {
524             case "AN":
525                 EsrInfo esrInfo = new EsrInfo()
526                 esrInfo.setNetworkType(execution.getVariable("nsstType"))
527                 esrInfo.setVendor(execution.getVariable("vendor"))
528
529                 NsiInfo nsiInfo = new NsiInfo()
530                 nsiInfo.setNsiId(execution.getVariable("nsiInstanceID"))
531                 nsiInfo.setNsiName(execution.getVariable("nsiInstanceName"))
532
533                 AnSliceProfile anSliceProfile = new AnSliceProfile()
534                 anSliceProfile.setLatency(execution.getVariable("latency"))
535                 anSliceProfile.setCoverageAreaTAList(execution.getVariable("coverageAreaList"))
536                 anSliceProfile.setQi(execution.getVariable("qi"))
537
538                 AllocateAnNssi allocateAnNssi = new AllocateAnNssi()
539                 allocateAnNssi.setNsstId(execution.getVariable("nsstId"))
540                 allocateAnNssi.setNssiName(execution.getVariable("nssiName"))
541                 allocateAnNssi.setNsiInfo(nsiInfo)
542                 allocateAnNssi.setSliceProfile(anSliceProfile)
543                 String anScriptName = sliceTaskParams.getAnScriptName()
544                 allocateAnNssi.setScriptName(anScriptName)
545                 request.setAllocateAnNssi(allocateAnNssi)
546                 request.setEsrInfo(esrInfo)
547                 break;
548             case "CN":
549                 Map<String, Object> sliceProfileCn =execution.getVariable("sliceProfileCn")
550                 Map<String, Object> serviceProfile = execution.getVariable("serviceProfile")
551                 NsiInfo nsiInfo = new NsiInfo()
552                 nsiInfo.setNsiId(execution.getVariable("nsiServiceInstanceId"))
553                 nsiInfo.setNsiName(execution.getVariable("nsiServiceInstanceName"))
554
555                 EsrInfo esrInfo = new EsrInfo()
556                 esrInfo.setNetworkType(NetworkType.fromString(domain))
557                 esrInfo.setVendor(execution.getVariable("nsstVendor"))
558                 execution.setVariable("esrInfo",esrInfo)
559
560
561                 PerfReqEmbb perfReqEmbb = new PerfReqEmbb()
562                 perfReqEmbb.setActivityFactor(sliceProfileCn.get("activityFactor"))
563                 perfReqEmbb.setAreaTrafficCapDL(sliceProfileCn.get("areaTrafficCapDL"))
564                 perfReqEmbb.setAreaTrafficCapUL(sliceProfileCn.get("areaTrafficCapUL"))
565                 perfReqEmbb.setExpDataRateDL(sliceProfileCn.get("expDataRateDL"))
566                 perfReqEmbb.setExpDataRateUL(sliceProfileCn.get("expDataRateUL"))
567
568                 List<PerfReqEmbb> listPerfReqEmbbList = new ArrayList<>()
569                 listPerfReqEmbbList.add(perfReqEmbb)
570
571                 PerfReq perfReq = new PerfReq()
572                 perfReq.setPerfReqEmbbList(listPerfReqEmbbList)
573
574                 PerfReqUrllc perfReqUrllc = new PerfReqUrllc()
575                 perfReqUrllc.setConnDensity(0)
576                 perfReqUrllc.setTrafficDensity(0)
577                 perfReqUrllc.setExpDataRate(0)
578                 perfReqUrllc.setReliability(0)
579                 perfReqUrllc.setCsAvailability(0)
580                 perfReqUrllc.setSurvivalTime(0)
581                 perfReqUrllc.setJitter(0)
582                 perfReqUrllc.setE2eLatency(0)
583                 perfReqUrllc.setPayloadSize("0")
584                 perfReqUrllc.setServiceAreaDimension("")
585
586                 List<PerfReqUrllc> perfReqUrllcList = new ArrayList<>()
587                 perfReqUrllcList.add(perfReqUrllc)
588                 perfReq.setPerfReqUrllcList(perfReqUrllcList)
589
590                 CnSliceProfile cnSliceProfile = new CnSliceProfile()
591                 cnSliceProfile.setSliceProfileId(execution.getVariable("nssiProfileID"))
592                 String plmnStr = serviceProfile.get("plmnIdList")
593                 List<String> plmnIdList=Arrays.asList(plmnStr.split("\\|"))
594                 cnSliceProfile.setPlmnIdList(plmnIdList)
595
596                 String resourceSharingLevel = serviceProfile.get("resourceSharingLevel").toString()
597                 cnSliceProfile.setResourceSharingLevel(ResourceSharingLevel.fromString(resourceSharingLevel))
598
599                 String coverageArea = serviceProfile.get("coverageAreaTAList")
600                 List<String> coverageAreaList=Arrays.asList(coverageArea.split("\\|"))
601                 cnSliceProfile.setCoverageAreaTAList(coverageAreaList)
602
603                 String ueMobilityLevel = serviceProfile.get("uEMobilityLevel").toString()
604                 cnSliceProfile.setUeMobilityLevel(UeMobilityLevel.fromString(ueMobilityLevel))
605
606                 int latency = serviceProfile.get("latency")
607                 cnSliceProfile.setLatency(latency)
608
609                 int maxUE = serviceProfile.get("maxNumberofUEs")
610                 cnSliceProfile.setMaxNumberofUEs(maxUE)
611
612                 String snssai = serviceProfile.get("sNSSAI")
613                 List<String> snssaiList = Arrays.asList(snssai.split("\\|"))
614                 cnSliceProfile.setSnssaiList(snssaiList)
615
616                 cnSliceProfile.setPerfReq(perfReq)
617
618                 AllocateCnNssi allocateCnNssi = new AllocateCnNssi()
619                 allocateCnNssi.setNsstId(execution.getVariable("nsstid"))
620                 allocateCnNssi.setNssiName(execution.getVariable("nssiName"))
621                 allocateCnNssi.setSliceProfile(cnSliceProfile)
622                 allocateCnNssi.setNsiInfo(nsiInfo)
623                 allocateCnNssi.setNssiId(nssiId)              // need to check this
624                 String cnScriptName = sliceTaskParams.getCnScriptName()
625                 allocateCnNssi.setScriptName(cnScriptName)
626                 request.setAllocateCnNssi(allocateCnNssi)
627                 request.setEsrInfo(esrInfo)
628                 break;
629             case "TN":
630                 EsrInfo esrInfo = new EsrInfo()
631                 esrInfo.setNetworkType(execution.getVariable("networkType"))
632                 esrInfo.setVendor(execution.getVariable("vendor"))
633
634                 TnSliceProfile tnSliceProfile = new TnSliceProfile()
635                 tnSliceProfile.setLatency(execution.getVariable("latency"))
636                 tnSliceProfile.setBandwidth(execution.getVariable("bandWidth"))
637
638                 NsiInfo nsiInfo = new NsiInfo()
639                 nsiInfo.setNsiId(execution.getVariable("nsiInstanceID"))
640                 nsiInfo.setNsiName(execution.getVariable("nsiInstanceName"))
641
642                 AllocateTnNssi allocateTnNssi = new AllocateTnNssi()
643                 allocateTnNssi.setSliceProfile(tnSliceProfile)
644                 allocateTnNssi.setNsiInfo(nsiInfo)
645                 allocateTnNssi.setNsstId(execution.getVariable("nsstid"))
646                 String tnScriptName = sliceTaskParams.getTnScriptName()
647                 allocateTnNssi.setScriptName(tnScriptName)
648                 request.setAllocateTnNssi(allocateTnNssi)
649                 request.setEsrInfo(esrInfo)
650                 break;
651             default:
652                 break;
653         }
654         try {
655             strRequest = MAPPER.writeValueAsString(request);
656         } catch (IOException e) {
657             logger.error("Invalid get progress request bean to convert as string");
658             exceptionUtil.buildAndThrowWorkflowException(execution, 7000, "Invalid get progress request bean to convert as string")
659         }
660         return strRequest
661     }
662
663     String buildNSSMFProgressRequest(DelegateExecution execution){
664         JobStatusRequest request = new JobStatusRequest()
665         String strRequest = ""
666         EsrInfo esrInfo = execution.getVariable("esrInfo")
667         request.setNsiId(execution.getVariable("nsiServiceInstanceId"))
668         request.setNssiId(execution.getVariable("nssiId"))
669         request.setEsrInfo(esrInfo)
670
671         try {
672             strRequest = MAPPER.writeValueAsString(request);
673         } catch (IOException e) {
674             logger.error("Invalid get progress request bean to convert as string");
675             exceptionUtil.buildAndThrowWorkflowException(execution, 7000, "Invalid get progress request bean to convert as string")
676         }
677         return strRequest
678     }
679
680     public void prepareUpdateOrchestrationTask(DelegateExecution execution) {
681         logger.debug("Start prepareUpdateOrchestrationTask progress")
682         String requestMethod = "PUT"
683         String progress = execution.getVariable("nssmfProgress")
684         String status = execution.getVariable("nssmfStatus")
685         String statusDescription=execution.getVariable("nddmfStatusDescription")
686         SliceTaskParams sliceTaskParams = execution.getVariable("sliceTaskParams")
687         String domain = execution.getVariable("nsstDomain")
688         switch (domain.toUpperCase()) {
689             case "AN":
690                 sliceTaskParams.setAnProgress(progress)
691                 sliceTaskParams.setAnStatus(status)
692                 sliceTaskParams.setAnStatusDescription(statusDescription)
693                 break;
694             case "CN":
695                 sliceTaskParams.setCnProgress(progress)
696                 sliceTaskParams.setCnStatus(status)
697                 sliceTaskParams.setCnStatusDescription(statusDescription)
698                 break;
699             case "TN":
700                 sliceTaskParams.setTnProgress(progress)
701                 sliceTaskParams.setTnStatus(status)
702                 sliceTaskParams.setTnStatusDescription(statusDescription)
703                 break;
704             default:
705                 break;
706         }
707         String paramJson = sliceTaskParams.convertToJson()
708         execution.setVariable("CSSOT_paramJson", paramJson)
709         execution.setVariable("CSSOT_requestMethod", requestMethod)
710         logger.debug("Finish prepareUpdateOrchestrationTask progress")
711     }
712
713 }