2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 # Copyright (c) 2020, Wipro Limited.
7 # Licensed under the Apache License, Version 2.0 (the "License")
8 # you may not use this file except in compliance with the License.
9 # You may obtain a copy of the License at
11 # http://www.apache.org/licenses/LICENSE-2.0
13 # Unless required by applicable law or agreed to in writing, software
14 # distributed under the License is distributed on an "AS IS" BASIS,
15 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 # See the License for the specific language governing permissions and
17 # limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.onap.so.bpmn.infrastructure.scripts
24 import com.google.gson.JsonArray
25 import org.camunda.bpm.engine.delegate.BpmnError
26 import org.camunda.bpm.engine.delegate.DelegateExecution
27 import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
28 import org.onap.so.bpmn.common.scripts.ExceptionUtil
29 import org.onap.so.bpmn.common.scripts.NssmfAdapterUtils
30 import org.onap.so.bpmn.common.scripts.OofUtils
31 import org.onap.so.bpmn.common.scripts.RequestDBUtil
32 import org.onap.so.bpmn.core.json.JsonUtils
33 import org.onap.so.db.request.beans.ResourceOperationStatus
34 import org.slf4j.Logger
35 import org.slf4j.LoggerFactory
36 import java.sql.Timestamp
38 import static org.apache.commons.lang3.StringUtils.isBlank
39 import com.google.gson.JsonObject
40 import com.google.gson.JsonParser
41 import com.fasterxml.jackson.databind.ObjectMapper
42 import org.onap.aaiclient.client.aai.AAIObjectType
43 import org.onap.aaiclient.client.aai.AAIResourcesClient
44 import org.onap.aaiclient.client.aai.entities.AAIResultWrapper
45 import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri
46 import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory
47 import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder
48 import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder.Types
49 import javax.ws.rs.NotFoundException
50 import org.onap.so.beans.nsmf.AllocateTnNssi
51 import org.onap.so.beans.nsmf.DeAllocateNssi
52 import org.onap.so.beans.nsmf.ServiceInfo
53 import org.onap.so.bpmn.core.UrnPropertiesReader
54 import org.onap.aai.domain.yang.ServiceInstance
55 import org.onap.aai.domain.yang.SliceProfile
56 import org.onap.aai.domain.yang.SliceProfiles
57 import org.onap.aai.domain.yang.Relationship
58 import com.google.gson.Gson
62 private static final Logger logger = LoggerFactory.getLogger(AnNssmfUtils.class)
63 ObjectMapper objectMapper = new ObjectMapper();
64 ExceptionUtil exceptionUtil = new ExceptionUtil()
65 JsonUtils jsonUtil = new JsonUtils()
66 public String buildSelectRANNSSIRequest(String requestId, String messageType, String UUID,String invariantUUID,
67 String name, Map<String, Object> profileInfo, List<String> nsstInfoList, JsonArray capabilitiesList, Boolean preferReuse){
68 JsonParser parser = new JsonParser()
69 def transactionId = requestId
70 logger.debug( "transactionId is: " + transactionId)
71 String correlator = requestId
72 String callbackUrl = UrnPropertiesReader.getVariable("mso.adapters.oof.callback.endpoint") + "/" + messageType + "/" + correlator
73 String profileJson = objectMapper.writeValueAsString(profileInfo);
74 String nsstInfoListString = objectMapper.writeValueAsString(nsstInfoList);
75 //Prepare requestInfo object
76 JsonObject requestInfo = new JsonObject()
77 requestInfo.addProperty("transactionId", transactionId)
78 requestInfo.addProperty("requestId", requestId)
79 requestInfo.addProperty("callbackUrl", callbackUrl)
80 requestInfo.addProperty("sourceId","SO" )
81 requestInfo.addProperty("timeout", 600)
82 requestInfo.addProperty("numSolutions", 1)
84 //Prepare serviceInfo object
85 JsonObject ranNsstInfo = new JsonObject()
86 ranNsstInfo.addProperty("UUID", UUID)
87 ranNsstInfo.addProperty("invariantUUID", invariantUUID)
88 ranNsstInfo.addProperty("name", name)
90 JsonObject json = new JsonObject()
91 json.add("requestInfo", requestInfo)
92 json.add("NSTInfo", ranNsstInfo)
93 json.add("serviceProfile", (JsonObject) parser.parse(profileJson))
94 //json.add("NSSTInfo", (JsonArray) parser.parse(nsstInfoListString))
95 json.add("subnetCapabilities", capabilitiesList)
96 json.addProperty("preferReuse", preferReuse)
98 return json.toString()
101 public String buildCreateTNNSSMFSubnetCapabilityRequest() {
102 JsonObject esrInfo = new JsonObject()
103 esrInfo.addProperty("networkType", "tn")
104 esrInfo.addProperty("vendor", "ONAP_internal")
106 JsonArray subnetTypes = new JsonArray()
107 subnetTypes.add("TN_FH")
108 subnetTypes.add("TN_MH")
109 JsonObject response = new JsonObject()
110 JsonObject subnetTypesObj = new JsonObject()
111 subnetTypesObj.add("subnetTypes", subnetTypes)
112 response.add("subnetCapabilityQuery", subnetTypesObj)
113 response.add("esrInfo", esrInfo)
114 return response.toString()
117 public String buildCreateANNFNSSMFSubnetCapabilityRequest() {
118 JsonObject esrInfo = new JsonObject()
119 esrInfo.addProperty("networkType", "an")
120 esrInfo.addProperty("vendor", "ONAP_internal")
122 JsonArray subnetTypes = new JsonArray()
123 subnetTypes.add("AN_NF")
124 JsonObject response = new JsonObject()
125 JsonObject subnetTypesObj = new JsonObject()
126 subnetTypesObj.add("subnetTypes", subnetTypes)
127 response.add("subnetCapabilityQuery", subnetTypesObj)
128 response.add("esrInfo", esrInfo)
129 return response.toString()
131 public void createDomainWiseSliceProfiles(List<String> ranConstituentSliceProfiles, DelegateExecution execution) {
133 for(String profile : ranConstituentSliceProfiles) {
134 String domainType = jsonUtil.getJsonValue(profile, "domainType")
137 execution.setVariable("ranNfSliceProfile", profile)
140 execution.setVariable("tnFhSliceProfile", profile)
143 execution.setVariable("tnMhSliceProfile", profile)
146 logger.debug("No expected match found for current domainType")
147 logger.error("No expected match found for current domainType "+ domainType)
148 exceptionUtil.buildAndThrowWorkflowException(execution, 1000,"No expected match found for current domainType "+ domainType)
154 public void createSliceProfilesInAai(DelegateExecution execution) {
156 org.onap.aai.domain.yang.ServiceInstance ANNF_sliceProfileInstance = new ServiceInstance();
157 org.onap.aai.domain.yang.ServiceInstance TNFH_sliceProfileInstance = new ServiceInstance();
158 org.onap.aai.domain.yang.ServiceInstance TNMH_sliceProfileInstance = new ServiceInstance();
159 //generate slice profile ids and slice profile instance ids
160 String ANNF_sliceProfileInstanceId = UUID.randomUUID().toString()
161 String ANNF_sliceProfileId = UUID.randomUUID().toString()
162 String TNFH_sliceProfileInstanceId = UUID.randomUUID().toString()
163 String TNFH_sliceProfileId = UUID.randomUUID().toString()
164 String TNMH_sliceProfileInstanceId = UUID.randomUUID().toString()
165 String TNMH_sliceProfileId = UUID.randomUUID().toString()
166 execution.setVariable("ANNF_sliceProfileInstanceId",ANNF_sliceProfileInstanceId)
167 execution.setVariable("ANNF_sliceProfileId",ANNF_sliceProfileId)
168 execution.setVariable("TNFH_sliceProfileInstanceId",TNFH_sliceProfileInstanceId)
169 execution.setVariable("TNFH_sliceProfileId",TNFH_sliceProfileId)
170 execution.setVariable("TNMH_sliceProfileInstanceId",TNMH_sliceProfileInstanceId)
171 execution.setVariable("TNMH_sliceProfileId",TNMH_sliceProfileId)
172 //slice profiles assignment
173 org.onap.aai.domain.yang.SliceProfiles ANNF_SliceProfiles = new SliceProfiles()
174 org.onap.aai.domain.yang.SliceProfiles TNFH_SliceProfiles = new SliceProfiles()
175 org.onap.aai.domain.yang.SliceProfiles TNMH_SliceProfiles = new SliceProfiles()
176 org.onap.aai.domain.yang.SliceProfile ANNF_SliceProfile = new SliceProfile()
177 org.onap.aai.domain.yang.SliceProfile TNFH_SliceProfile = new SliceProfile()
178 org.onap.aai.domain.yang.SliceProfile TNMH_SliceProfile = new SliceProfile()
179 ANNF_SliceProfile = createSliceProfile("AN-NF", execution)
180 TNFH_SliceProfile = createSliceProfile("TN-FH",execution)
181 TNMH_SliceProfile = createSliceProfile("TN-MH",execution)
183 ANNF_SliceProfiles.getSliceProfile().add(ANNF_SliceProfile)
184 TNFH_SliceProfiles.getSliceProfile().add(TNFH_SliceProfile)
185 TNMH_SliceProfiles.getSliceProfile().add(TNMH_SliceProfile)
187 logger.debug("sliceProfiles : 1. "+ANNF_SliceProfiles.toString()+"\n 2. "+TNFH_SliceProfiles.toString()+"\n 3. "+TNMH_SliceProfiles.toString())
188 //ANNF slice profile instance creation
189 ANNF_sliceProfileInstance.setServiceInstanceId(ANNF_sliceProfileInstanceId)
190 String sliceInstanceName = "sliceprofile_"+ANNF_sliceProfileId
191 ANNF_sliceProfileInstance.setServiceInstanceName(sliceInstanceName)
192 String serviceType = jsonUtil.getJsonValue(execution.getVariable("ranNfSliceProfile"), "sST")
193 ANNF_sliceProfileInstance.setServiceType(serviceType)
194 String serviceStatus = "deactivated"
195 ANNF_sliceProfileInstance.setOrchestrationStatus(serviceStatus)
196 String serviceInstanceLocationid = jsonUtil.getJsonValue(execution.getVariable("ranNfSliceProfile"), "plmnIdList")
197 ANNF_sliceProfileInstance.setServiceInstanceLocationId(serviceInstanceLocationid)
198 String serviceRole = "slice-profile-instance"
199 ANNF_sliceProfileInstance.setServiceRole(serviceRole)
200 ArrayList<String> snssaiList = execution.getVariable("snssaiList")
201 String snssai = snssaiList.get(0)
202 ANNF_sliceProfileInstance.setEnvironmentContext(snssai)
203 ANNF_sliceProfileInstance.setWorkloadContext("AN-NF")
204 ANNF_sliceProfileInstance.setSliceProfiles(ANNF_SliceProfiles)
205 String serviceFunctionAnnf = jsonUtil.getJsonValue(execution.getVariable("ranNfSliceProfile"), "resourceSharingLevel")
206 ANNF_sliceProfileInstance.setServiceFunction(serviceFunctionAnnf)
207 logger.debug("completed ANNF sliceprofileinstance build : "+ ANNF_sliceProfileInstance.toString())
209 //TNFH slice profile instance creation
210 TNFH_sliceProfileInstance.setServiceInstanceId(TNFH_sliceProfileInstanceId)
211 sliceInstanceName = "sliceprofile_"+TNFH_sliceProfileId
212 TNFH_sliceProfileInstance.setServiceInstanceName(sliceInstanceName)
213 serviceType = jsonUtil.getJsonValue(execution.getVariable("tnFhSliceProfile"), "sST")
214 TNFH_sliceProfileInstance.setServiceType(serviceType)
215 TNFH_sliceProfileInstance.setOrchestrationStatus(serviceStatus)
216 serviceInstanceLocationid = jsonUtil.getJsonValue(execution.getVariable("tnFhSliceProfile"), "plmnIdList")
217 TNFH_sliceProfileInstance.setServiceInstanceLocationId(serviceInstanceLocationid)
218 TNFH_sliceProfileInstance.setServiceRole(serviceRole)
219 TNFH_sliceProfileInstance.setEnvironmentContext(snssai)
220 TNFH_sliceProfileInstance.setWorkloadContext("TN-FH")
221 TNFH_sliceProfileInstance.setSliceProfiles(TNFH_SliceProfiles)
222 String serviceFunctionTnFH = jsonUtil.getJsonValue(execution.getVariable("tnFhSliceProfile"), "resourceSharingLevel")
223 TNFH_sliceProfileInstance.setServiceFunction(serviceFunctionTnFH)
224 logger.debug("completed TNFH sliceprofileinstance build : "+TNFH_sliceProfileInstance)
226 //TNMH slice profile instance creation
227 TNMH_sliceProfileInstance.setServiceInstanceId(TNMH_sliceProfileInstanceId)
228 sliceInstanceName = "sliceprofile_"+TNMH_sliceProfileId
229 TNMH_sliceProfileInstance.setServiceInstanceName(sliceInstanceName)
230 serviceType = jsonUtil.getJsonValue(execution.getVariable("tnMhSliceProfile"), "sST")
231 TNMH_sliceProfileInstance.setServiceType(serviceType)
232 TNMH_sliceProfileInstance.setOrchestrationStatus(serviceStatus)
233 serviceInstanceLocationid = jsonUtil.getJsonValue(execution.getVariable("tnMhSliceProfile"), "plmnIdList")
234 TNMH_sliceProfileInstance.setServiceInstanceLocationId(serviceInstanceLocationid)
235 TNMH_sliceProfileInstance.setServiceRole(serviceRole)
236 TNMH_sliceProfileInstance.setEnvironmentContext(snssai)
237 TNMH_sliceProfileInstance.setWorkloadContext("TN-MH")
238 TNMH_sliceProfileInstance.setSliceProfiles(TNMH_SliceProfiles)
239 String serviceFunctionTnMH = jsonUtil.getJsonValue(execution.getVariable("tnMhSliceProfile"), "resourceSharingLevel")
240 TNMH_sliceProfileInstance.setServiceFunction(serviceFunctionTnMH)
241 logger.debug("completed TNMH sliceprofileinstance build : "+TNMH_sliceProfileInstance)
246 AAIResourcesClient client = new AAIResourcesClient()
247 AAIResourceUri sliceProfileUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(execution.getVariable("globalSubscriberId")).serviceSubscription(execution.getVariable("subscriptionServiceType")).serviceInstance(ANNF_sliceProfileInstanceId))
248 client.create(sliceProfileUri, ANNF_sliceProfileInstance)
250 AAIResourceUri sliceProfileUri1 = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(execution.getVariable("globalSubscriberId")).serviceSubscription(execution.getVariable("subscriptionServiceType")).serviceInstance(TNFH_sliceProfileInstanceId))
251 client.create(sliceProfileUri1, TNFH_sliceProfileInstance)
253 AAIResourceUri sliceProfileUri2 = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(execution.getVariable("globalSubscriberId")).serviceSubscription(execution.getVariable("subscriptionServiceType")).serviceInstance(TNMH_sliceProfileInstanceId))
254 client.create(sliceProfileUri2, TNMH_sliceProfileInstance)
256 } catch (BpmnError e) {
258 } catch (Exception ex) {
259 msg = "Exception in AnNssmfUtils.createSliceProfilesInAai " + ex.getMessage()
261 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
265 private SliceProfile createSliceProfile(String domainType, DelegateExecution execution) {
267 SliceProfile result = new SliceProfile()
268 Map<String,Object> profile
271 profile = objectMapper.readValue(execution.getVariable("ranNfSliceProfile"), Map.class)//pending fields - maxBandwidth, sST, plmnIdList, cSReliabilityMeanTime,
272 //msgSizeByte, maxNumberofPDUSessions,overallUserDensity,transferIntervalTarget
273 result.setJitter(profile.get("jitter"))
274 result.setLatency(profile.get("latency"))
275 result.setResourceSharingLevel(profile.get("resourceSharingLevel"))
276 result.setUeMobilityLevel(profile.get("uEMobilityLevel"))
277 result.setMaxNumberOfUEs(profile.get("maxNumberofUEs"))
278 result.setActivityFactor(profile.get("activityFactor"))
279 result.setCoverageAreaTAList(profile.get("coverageAreaTAList"))
280 result.setExpDataRateDL(profile.get("expDataRateDL"))
281 result.setExpDataRateUL(profile.get("expDataRateUL"))
282 result.setSurvivalTime(profile.get("survivalTime"))
283 result.setAreaTrafficCapDL(profile.get("areaTrafficCapDL"))
284 result.setAreaTrafficCapUL(profile.get("areaTrafficCapUL"))
285 result.setExpDataRate(profile.get("expDataRate"))
286 result.setProfileId(execution.getVariable("ANNF_sliceProfileId"))
289 profile = objectMapper.readValue(execution.getVariable("tnFhSliceProfile"), Map.class) //pending fields - maxBandwidth, sST, plmnIdList
290 result.setJitter(profile.get("jitter"))
291 result.setLatency(profile.get("latency"))
292 result.setResourceSharingLevel(profile.get("resourceSharingLevel"))
293 result.setProfileId(execution.getVariable("TNFH_sliceProfileId"))
296 profile = objectMapper.readValue(execution.getVariable("tnMhSliceProfile"), Map.class)//pending fields - maxBandwidth, sST, plmnIdList
297 result.setJitter(profile.get("jitter"))
298 result.setLatency(profile.get("latency"))
299 result.setResourceSharingLevel(profile.get("resourceSharingLevel"))
300 result.setProfileId(execution.getVariable("TNMH_sliceProfileId"))
303 logger.debug("No expected match found for current domainType")
304 logger.error("No expected match found for current domainType "+ domainType)
305 exceptionUtil.buildAndThrowWorkflowException(execution, 1000,"No expected match found for current domainType "+ domainType)
311 * create relationship in AAI
313 public createRelationShipInAAI = { DelegateExecution execution, final Relationship relationship, String instanceId ->
314 logger.debug("createRelationShipInAAI Start")
316 AAIResourcesClient client = new AAIResourcesClient()
318 AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(execution.getVariable("globalSubscriberId")).serviceSubscription(execution.getVariable("subscriptionServiceType")).serviceInstance(instanceId)).relationshipAPI()
319 client.create(uri, relationship)
321 } catch (BpmnError e) {
323 } catch (Exception ex) {
324 msg = "Exception in AN NSSMF Utils : CreateRelationShipInAAI. " + ex.getMessage()
326 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
328 logger.debug("createRelationShipInAAI Exit")
332 public void processRanNfModifyRsp(DelegateExecution execution) {
333 String status = execution.getVariable("ranNfStatus")
334 if(status.equals("success")) {
335 logger.debug("completed Ran NF NSSI modification ... proceeding with the flow")
338 logger.error("failed to modify ran Nf nssi")
339 exceptionUtil.buildAndThrowWorkflowException(execution, 1000, "modify ran nf nssi not successfull")
343 public String buildCreateNSSMFRequest(DelegateExecution execution, String domainType, String action) {
344 JsonObject esrInfo = new JsonObject()
345 esrInfo.addProperty("networkType", "tn")
346 esrInfo.addProperty("vendor", "ONAP_internal")
347 JsonObject response = new JsonObject()
348 JsonObject allocateTnNssi = new JsonObject()
349 JsonObject serviceInfo = new JsonObject()
350 JsonArray transportSliceNetworksList = new JsonArray()
351 JsonArray connectionLinksList = new JsonArray()
352 JsonObject connectionLinks = new JsonObject()
353 Gson jsonConverter = new Gson()
354 if(action.equals("allocate")){
355 JsonObject endpoints = new JsonObject()
356 if(domainType.equals("TN_FH")) {
357 serviceInfo.addProperty("serviceInvariantUuid", execution.getVariable("TNFH_modelInvariantUuid"))
358 serviceInfo.addProperty("serviceUuid", execution.getVariable("TNFH_modelUuid"))
359 allocateTnNssi.addProperty("nsstId", execution.getVariable("TNFH_modelUuid"))
360 allocateTnNssi.addProperty("nssiName", execution.getVariable("TNFH_modelName"))
361 Map<String,Object> sliceProfile = objectMapper.readValue(execution.getVariable("tnFhSliceProfile"), Map.class)
362 sliceProfile.put("sliceProfileId", execution.getVariable("TNFH_sliceProfileInstanceId"))
363 allocateTnNssi.add("sliceProfile", jsonConverter.toJsonTree(sliceProfile))
364 endpoints.addProperty("transportEndpointA", execution.getVariable("tranportEp_ID_RU"))
365 endpoints.addProperty("transportEndpointB", execution.getVariable("tranportEp_ID_DUIN"))
366 connectionLinksList.add(endpoints)
367 }else if(domainType.equals("TN_MH")) {
368 serviceInfo.addProperty("serviceInvariantUuid", execution.getVariable("TNMH_modelInvariantUuid"))
369 serviceInfo.addProperty("serviceUuid", execution.getVariable("TNMH_modelUuid"))
370 allocateTnNssi.addProperty("nsstId", execution.getVariable("TNMH_modelUuid"))
371 allocateTnNssi.addProperty("nssiName", execution.getVariable("TNMH_modelName"))
372 Map<String,Object> sliceProfile = objectMapper.readValue(execution.getVariable("tnMhSliceProfile"), Map.class)
373 sliceProfile.put("sliceProfileId", execution.getVariable("TNMH_sliceProfileInstanceId"))
374 allocateTnNssi.add("sliceProfile", jsonConverter.toJsonTree(sliceProfile))
375 endpoints.addProperty("transportEndpointA", execution.getVariable("tranportEp_ID_DUEG"))
376 endpoints.addProperty("transportEndpointB", execution.getVariable("tranportEp_ID_CUIN"))
377 connectionLinksList.add(endpoints)
381 connectionLinks.add("connectionLinks", connectionLinksList)
382 transportSliceNetworksList.add(connectionLinks)
383 allocateTnNssi.add("transportSliceNetworks", transportSliceNetworksList)
384 }else if(action.equals("modify-allocate")) {
385 if(domainType.equals("TN_FH")) {
386 allocateTnNssi.addProperty("nssiName", execution.getVariable("TNFH_nssiName"))
387 allocateTnNssi.addProperty("sliceProfileId", execution.getVariable("TNFH_sliceProfileInstanceId"))
388 allocateTnNssi.addProperty("nssiId", execution.getVariable("TNFH_NSSI"))
389 serviceInfo.addProperty("nssiId", execution.getVariable("TNFH_NSSI"))
390 }else if(domainType.equals("TN_MH")) {
391 allocateTnNssi.addProperty("nssiName", execution.getVariable("TNMH_nssiName"))
392 allocateTnNssi.addProperty("sliceProfileId", execution.getVariable("TNMH_sliceProfileInstanceId"))
393 allocateTnNssi.addProperty("nssiId", execution.getVariable("TNMH_NSSI"))
394 serviceInfo.addProperty("nssiId", execution.getVariable("TNMH_NSSI"))
397 JsonParser parser = new JsonParser()
398 String nsiInfo = jsonUtil.getJsonValue(execution.getVariable("sliceParams"), "nsiInfo")
399 allocateTnNssi.add("nsiInfo",(JsonObject) parser.parse(nsiInfo))
400 allocateTnNssi.addProperty("scriptName", "TN1")
401 serviceInfo.addProperty("nsiId", execution.getVariable("nsiId"))
402 serviceInfo.addProperty("globalSubscriberId", execution.getVariable("globalSubscriberId"))
403 serviceInfo.addProperty("subscriptionServiceType", execution.getVariable("subscriptionServiceType"))
404 response.add("esrInfo", esrInfo)
405 response.add("serviceInfo", serviceInfo)
406 response.add("allocateTnNssi", allocateTnNssi)
407 return response.toString()
410 public String buildDeallocateNssiRequest(DelegateExecution execution,String domainType) {
411 String globalSubscriberId = execution.getVariable("globalSubscriberId")
412 String subscriptionServiceType = execution.getVariable("subscriptionServiceType")
414 JsonObject deAllocateNssi = new JsonObject()
415 deAllocateNssi.addProperty("snssaiList", execution.getVariable("snssaiList"))
416 deAllocateNssi.addProperty("nsiId", execution.getVariable("nsiId"))
417 deAllocateNssi.addProperty("modifyAction", true)
418 deAllocateNssi.addProperty("terminateNssiOption", 0)
419 deAllocateNssi.addProperty("scriptName", "TN1")
421 if(domainType.equals("TN_FH")) {
422 deAllocateNssi.addProperty("nssiId", execution.getVariable("TNFH_NSSI"))
423 deAllocateNssi.addProperty("sliceProfileId", execution.getVariable("TNFH_sliceProfileInstanceId"))
424 }else if(domainType.equals("TN_MH")) {
425 deAllocateNssi.addProperty("nssiId", execution.getVariable("TNMH_NSSI"))
426 deAllocateNssi.addProperty("sliceProfileId", execution.getVariable("TNMH_sliceProfileInstanceId"))
429 JsonObject esrInfo = new JsonObject()
430 esrInfo.addProperty("networkType", "tn")
431 esrInfo.addProperty("vendor", "ONAP_internal")
433 JsonObject serviceInfo = new JsonObject()
434 serviceInfo.addProperty("serviceInvariantUuid", null)
435 serviceInfo.addProperty("serviceUuid", null)
436 serviceInfo.addProperty("globalSubscriberId", globalSubscriberId)
437 serviceInfo.addProperty("subscriptionServiceType", subscriptionServiceType)
439 JsonObject json = new JsonObject()
440 json.add("deAllocateNssi", deAllocateNssi)
441 json.add("esrInfo", esrInfo)
442 json.add("serviceInfo", serviceInfo)
443 return json.toString()