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.fasterxml.jackson.databind.ObjectMapper
41 import org.onap.aaiclient.client.aai.AAIObjectType
42 import org.onap.aaiclient.client.aai.AAIResourcesClient
43 import org.onap.aaiclient.client.aai.entities.AAIResultWrapper
44 import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri
45 import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory
46 import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder
47 import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder.Types
48 import javax.ws.rs.NotFoundException
49 import org.onap.so.beans.nsmf.AllocateTnNssi
50 import org.onap.so.beans.nsmf.DeAllocateNssi
51 import org.onap.so.beans.nsmf.EsrInfo
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
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){
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 ObjectMapper objectMapper = new ObjectMapper();
74 String profileJson = objectMapper.writeValueAsString(profileInfo);
75 String nsstInfoListString = objectMapper.writeValueAsString(nsstInfoList);
76 //Prepare requestInfo object
77 JsonObject requestInfo = new JsonObject()
78 requestInfo.addProperty("transactionId", transactionId)
79 requestInfo.addProperty("requestId", requestId)
80 requestInfo.addProperty("callbackUrl", callbackUrl)
81 requestInfo.addProperty("sourceId","SO" )
82 requestInfo.addProperty("timeout", 600)
83 requestInfo.addProperty("numSolutions", 1)
85 //Prepare serviceInfo object
86 JsonObject ranNsstInfo = new JsonObject()
87 ranNsstInfo.addProperty("UUID", UUID)
88 ranNsstInfo.addProperty("invariantUUID", invariantUUID)
89 ranNsstInfo.addProperty("name", name)
91 JsonObject json = new JsonObject()
92 json.add("requestInfo", requestInfo)
93 json.add("NSTInfo", ranNsstInfo)
94 json.addProperty("serviceProfile", profileJson)
95 json.addProperty("NSSTInfo", nsstInfoListString)
96 json.add("subnetCapabilities", capabilitiesList)
97 json.addProperty("preferReuse", preferReuse)
99 return json.toString()
102 public String buildCreateTNNSSMFSubnetCapabilityRequest() {
103 EsrInfo esrInfo = new EsrInfo()
104 esrInfo.setNetworkType("TN")
105 esrInfo.setVendor("ONAP")
107 JsonArray subnetTypes = new JsonArray()
108 subnetTypes.add("TN_FH")
109 subnetTypes.add("TN_MH")
110 JsonObject response = new JsonObject()
111 response.add("subnetCapabilityQuery", subnetTypes)
112 response.addProperty("esrInfo", objectMapper.writeValueAsString(esrInfo))
113 return response.toString()
116 public String buildCreateANNFNSSMFSubnetCapabilityRequest() {
117 EsrInfo esrInfo = new EsrInfo()
118 esrInfo.setNetworkType("AN")
119 esrInfo.setVendor("ONAP")
121 JsonArray subnetTypes = new JsonArray()
122 subnetTypes.add("AN_NF")
123 JsonObject response = new JsonObject()
124 response.add("subnetCapabilityQuery", subnetTypes)
125 response.addProperty("esrInfo", objectMapper.writeValueAsString(esrInfo))
126 return response.toString()
128 public void createDomainWiseSliceProfiles(List<String> ranConstituentSliceProfiles, DelegateExecution execution) {
130 for(String profile : ranConstituentSliceProfiles) {
131 String domainType = jsonUtil.getJsonValue(profile, "domainType")
134 execution.setVariable("ranNfSliceProfile", profile)
137 execution.setVariable("tnFhSliceProfile", profile)
140 execution.setVariable("tnMhSliceProfile", profile)
143 logger.debug("No expected match found for current domainType")
144 logger.error("No expected match found for current domainType "+ domainType)
145 exceptionUtil.buildAndThrowWorkflowException(execution, 1000,"No expected match found for current domainType "+ domainType)
151 public void createSliceProfilesInAai(DelegateExecution execution) {
153 org.onap.aai.domain.yang.ServiceInstance ANNF_sliceProfileInstance = new ServiceInstance();
154 org.onap.aai.domain.yang.ServiceInstance TNFH_sliceProfileInstance = new ServiceInstance();
155 org.onap.aai.domain.yang.ServiceInstance TNMH_sliceProfileInstance = new ServiceInstance();
156 //generate slice profile ids and slice profile instance ids
157 String ANNF_sliceProfileInstanceId = UUID.randomUUID().toString()
158 String ANNF_sliceProfileId = UUID.randomUUID().toString()
159 String TNFH_sliceProfileInstanceId = UUID.randomUUID().toString()
160 String TNFH_sliceProfileId = UUID.randomUUID().toString()
161 String TNMH_sliceProfileInstanceId = UUID.randomUUID().toString()
162 String TNMH_sliceProfileId = UUID.randomUUID().toString()
163 execution.setVariable("ANNF_sliceProfileInstanceId",ANNF_sliceProfileInstanceId)
164 execution.setVariable("ANNF_sliceProfileId",ANNF_sliceProfileId)
165 execution.setVariable("TNFH_sliceProfileInstanceId",TNFH_sliceProfileInstanceId)
166 execution.setVariable("TNFH_sliceProfileId",TNFH_sliceProfileId)
167 execution.setVariable("TNMH_sliceProfileInstanceId",TNMH_sliceProfileInstanceId)
168 execution.setVariable("TNMH_sliceProfileId",TNMH_sliceProfileId)
169 //slice profiles assignment
170 org.onap.aai.domain.yang.SliceProfiles ANNF_SliceProfiles = new SliceProfiles()
171 org.onap.aai.domain.yang.SliceProfiles TNFH_SliceProfiles = new SliceProfiles()
172 org.onap.aai.domain.yang.SliceProfiles TNMH_SliceProfiles = new SliceProfiles()
173 org.onap.aai.domain.yang.SliceProfile ANNF_SliceProfile = new SliceProfile()
174 org.onap.aai.domain.yang.SliceProfile TNFH_SliceProfile = new SliceProfile()
175 org.onap.aai.domain.yang.SliceProfile TNMH_SliceProfile = new SliceProfile()
176 ANNF_SliceProfile = createSliceProfile("AN-NF", execution)
177 TNFH_SliceProfile = createSliceProfile("TN-FH",execution)
178 TNMH_SliceProfile = createSliceProfile("TN-MH",execution)
180 ANNF_SliceProfiles.getSliceProfile().add(ANNF_SliceProfile)
181 TNFH_SliceProfiles.getSliceProfile().add(TNFH_SliceProfile)
182 TNMH_SliceProfiles.getSliceProfile().add(TNMH_SliceProfile)
184 logger.debug("sliceProfiles : 1. "+ANNF_SliceProfiles.toString()+"\n 2. "+TNFH_SliceProfiles.toString()+"\n 3. "+TNMH_SliceProfiles.toString())
185 //ANNF slice profile instance creation
186 ANNF_sliceProfileInstance.setServiceInstanceId(ANNF_sliceProfileInstanceId)
187 String sliceInstanceName = "sliceprofile_"+ANNF_sliceProfileId
188 ANNF_sliceProfileInstance.setServiceInstanceName(sliceInstanceName)
189 String serviceType = jsonUtil.getJsonValue(execution.getVariable("ranNfSliceProfile"), "sST")
190 ANNF_sliceProfileInstance.setServiceType(serviceType)
191 String serviceStatus = "deactivated"
192 ANNF_sliceProfileInstance.setOrchestrationStatus(serviceStatus)
193 String serviceInstanceLocationid = jsonUtil.getJsonValue(execution.getVariable("ranNfSliceProfile"), "plmnIdList")
194 ANNF_sliceProfileInstance.setServiceInstanceLocationId(serviceInstanceLocationid)
195 String serviceRole = "slice-profile-instance"
196 ANNF_sliceProfileInstance.setServiceRole(serviceRole)
197 List<String> snssaiList = objectMapper.readValue(execution.getVariable("snssaiList"), List.class)
198 String snssai = snssaiList.get(0)
199 ANNF_sliceProfileInstance.setEnvironmentContext(snssai)
200 ANNF_sliceProfileInstance.setWorkloadContext("AN-NF")
201 ANNF_sliceProfileInstance.setSliceProfiles(ANNF_SliceProfiles)
202 logger.debug("completed ANNF sliceprofileinstance build "+ ANNF_sliceProfileInstance.toString())
203 //TNFH slice profile instance creation
204 TNFH_sliceProfileInstance.setServiceInstanceId(TNFH_sliceProfileInstanceId)
205 sliceInstanceName = "sliceprofile_"+TNFH_sliceProfileId
206 TNFH_sliceProfileInstance.setServiceInstanceName(sliceInstanceName)
207 serviceType = jsonUtil.getJsonValue(execution.getVariable("tnFhSliceProfile"), "sST")
208 TNFH_sliceProfileInstance.setServiceType(serviceType)
209 TNFH_sliceProfileInstance.setOrchestrationStatus(serviceStatus)
210 serviceInstanceLocationid = jsonUtil.getJsonValue(execution.getVariable("tnFhSliceProfile"), "plmnIdList")
211 TNFH_sliceProfileInstance.setServiceInstanceLocationId(serviceInstanceLocationid)
212 TNFH_sliceProfileInstance.setServiceRole(serviceRole)
213 TNFH_sliceProfileInstance.setEnvironmentContext(snssai)
214 TNFH_sliceProfileInstance.setWorkloadContext("TN-FH")
215 TNFH_sliceProfileInstance.setSliceProfiles(TNFH_SliceProfiles)
216 logger.debug("completed TNFH sliceprofileinstance build "+TNFH_sliceProfileInstance)
217 //TNMH slice profile instance creation
218 TNMH_sliceProfileInstance.setServiceInstanceId(TNMH_sliceProfileInstanceId)
219 sliceInstanceName = "sliceprofile_"+TNMH_sliceProfileId
220 TNMH_sliceProfileInstance.setServiceInstanceName(sliceInstanceName)
221 serviceType = jsonUtil.getJsonValue(execution.getVariable("tnMhSliceProfile"), "sST")
222 TNMH_sliceProfileInstance.setServiceType(serviceType)
223 TNMH_sliceProfileInstance.setOrchestrationStatus(serviceStatus)
224 serviceInstanceLocationid = jsonUtil.getJsonValue(execution.getVariable("tnMhSliceProfile"), "plmnIdList")
225 TNMH_sliceProfileInstance.setServiceInstanceLocationId(serviceInstanceLocationid)
226 TNMH_sliceProfileInstance.setServiceRole(serviceRole)
227 TNMH_sliceProfileInstance.setEnvironmentContext(snssai)
228 TNMH_sliceProfileInstance.setWorkloadContext("TN-MH")
229 TNMH_sliceProfileInstance.setSliceProfiles(TNMH_SliceProfiles)
230 logger.debug("completed TNMH sliceprofileinstance build "+TNMH_sliceProfileInstance)
234 AAIResourcesClient client = new AAIResourcesClient()
235 AAIResourceUri sliceProfileUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(execution.getVariable("globalSubscriberId")).serviceSubscription(execution.getVariable("subscriptionServiceType")).serviceInstance(ANNF_sliceProfileInstanceId))
236 client.create(sliceProfileUri, ANNF_sliceProfileInstance)
238 AAIResourceUri sliceProfileUri1 = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(execution.getVariable("globalSubscriberId")).serviceSubscription(execution.getVariable("subscriptionServiceType")).serviceInstance(TNFH_sliceProfileInstanceId))
239 client.create(sliceProfileUri1, TNFH_sliceProfileInstance)
241 AAIResourceUri sliceProfileUri2 = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(execution.getVariable("globalSubscriberId")).serviceSubscription(execution.getVariable("subscriptionServiceType")).serviceInstance(TNMH_sliceProfileInstanceId))
242 client.create(sliceProfileUri2, TNMH_sliceProfileInstance)
244 } catch (BpmnError e) {
246 } catch (Exception ex) {
247 msg = "Exception in AnNssmfUtils.createSliceProfilesInAai " + ex.getMessage()
249 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
253 private SliceProfile createSliceProfile(String domainType, DelegateExecution execution) {
255 SliceProfile result = new SliceProfile()
256 Map<String,Object> profile
259 profile = objectMapper.readValue(execution.getVariable("ranNfSliceProfile"), Map.class)//pending fields - maxBandwidth, sST, pLMNIdList, cSReliabilityMeanTime,
260 //msgSizeByte, maxNumberofPDUSessions,overallUserDensity,transferIntervalTarget
261 result.setJitter(profile.get("jitter"))
262 result.setLatency(profile.get("latency"))
263 result.setResourceSharingLevel(profile.get("resourceSharingLevel"))
264 result.setSNssai(profile.get("sNSSAI"))
265 result.setUeMobilityLevel(profile.get("uEMobilityLevel"))
266 result.setMaxNumberOfUEs(profile.get("maxNumberofUEs"))
267 result.setActivityFactor(profile.get("activityFactor"))
268 result.setCoverageAreaTAList(profile.get("coverageAreaTAList"))
269 result.setCsAvailability(profile.get("cSAvailabilityTarget"))
270 result.setExpDataRateDL(profile.get("expDataRateDL"))
271 result.setExpDataRateUL(profile.get("expDataRateUL"))
272 result.setSurvivalTime(profile.get("survivalTime"))
273 result.setAreaTrafficCapDL(profile.get("areaTrafficCapDL"))
274 result.setAreaTrafficCapUL(profile.get("areaTrafficCapUL"))
275 result.setExpDataRate(profile.get("expDataRate"))
276 result.setProfileId(execution.getVariable("ANNF_sliceProfileId"))
279 profile = objectMapper.readValue(execution.getVariable("tnFhSliceProfile"), Map.class) //pending fields - maxBandwidth, sST, pLMNIdList
280 result.setJitter(profile.get("jitter"))
281 result.setLatency(profile.get("latency"))
282 result.setResourceSharingLevel(profile.get("resourceSharingLevel"))
283 result.setSNssai(profile.get("sNSSAI"))
284 result.setProfileId(execution.getVariable("TNFH_sliceProfileId"))
287 profile = objectMapper.readValue(execution.getVariable("tnMhSliceProfile"), Map.class)//pending fields - maxBandwidth, sST, pLMNIdList
288 result.setJitter(profile.get("jitter"))
289 result.setLatency(profile.get("latency"))
290 result.setResourceSharingLevel(profile.get("resourceSharingLevel"))
291 result.setSNssai(profile.get("sNSSAI"))
292 result.setProfileId(execution.getVariable("TNMH_sliceProfileId"))
295 logger.debug("No expected match found for current domainType")
296 logger.error("No expected match found for current domainType "+ domainType)
297 exceptionUtil.buildAndThrowWorkflowException(execution, 1000,"No expected match found for current domainType "+ domainType)
303 * create relationship in AAI
305 public createRelationShipInAAI = { DelegateExecution execution, final Relationship relationship, String instanceId ->
306 logger.debug("createRelationShipInAAI Start")
308 AAIResourcesClient client = new AAIResourcesClient()
310 AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(execution.getVariable("globalSubscriberId")).serviceSubscription(execution.getVariable("subscriptionServiceType")).serviceInstance(instanceId).relationshipAPI())
311 client.create(uri, relationship)
313 } catch (BpmnError e) {
315 } catch (Exception ex) {
316 msg = "Exception in CreateCommunicationService.createRelationShipInAAI. " + ex.getMessage()
318 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
320 logger.debug("createRelationShipInAAI Exit")
324 public void processRanNfModifyRsp(DelegateExecution execution) {
325 String status = execution.getVariable("ranNfStatus")
326 if(status.equals("success")) {
327 logger.debug("completed Ran NF NSSI modification ... proceeding with the flow")
330 logger.error("failed to modify ran Nf nssi")
331 exceptionUtil.buildAndThrowWorkflowException(execution, 1000, "modify ran nf nssi not successfull")
335 public String buildCreateNSSMFRequest(DelegateExecution execution, String domainType, String action) {
336 EsrInfo esrInfo = new EsrInfo()
337 esrInfo.setNetworkType("TN")
338 esrInfo.setVendor("ONAP")
339 String esrInfoString = objectMapper.writeValueAsString(esrInfo)
340 JsonObject response = new JsonObject()
341 JsonObject allocateTnNssi = new JsonObject()
342 JsonObject serviceInfo = new JsonObject()
343 JsonArray transportSliceNetworksList = new JsonArray()
344 JsonArray connectionLinksList = new JsonArray()
345 JsonObject connectionLinks = new JsonObject()
346 if(action.equals("allocate")){
347 Map<String, String> endpoints
348 if(domainType.equals("TN_FH")) {
349 serviceInfo.addProperty("serviceInvariantUuid", execution.getVariable("TNFH_modelInvariantUuid"))
350 serviceInfo.addProperty("serviceUuid", execution.getVariable("TNFH_modelUuid"))
351 allocateTnNssi.addProperty("nsstId", execution.getVariable("TNFH_modelUuid"))
352 allocateTnNssi.addProperty("nssiName", execution.getVariable("TNFH_modelName"))
353 Map<String,Object> sliceProfile = objectMapper.readValue(execution.getVariable("tnFhSliceProfile"), Map.class)
354 sliceProfile.put("sliceProfileId", execution.getVariable("TNFH_sliceProfileInstanceId"))
355 String sliceProfileString = objectMapper.writeValueAsString(sliceProfile)
356 allocateTnNssi.addProperty("sliceProfile", sliceProfileString)
357 endpoints.put("transportEndpointA", execution.getVariable("tranportEp_ID_RU"))
358 endpoints.put("transportEndpointB", execution.getVariable("tranportEp_ID_DUIN"))
359 String endpointsString = objectMapper.writeValueAsString(endpoints)
360 connectionLinksList.add(endpointsString)
361 }else if(domainType.equals("TN_MH")) {
362 serviceInfo.addProperty("serviceInvariantUuid", execution.getVariable("TNMH_modelInvariantUuid"))
363 serviceInfo.addProperty("serviceUuid", execution.getVariable("TNMH_modelUuid"))
364 allocateTnNssi.addProperty("nsstId", execution.getVariable("TNMH_modelUuid"))
365 allocateTnNssi.addProperty("nssiName", execution.getVariable("TNMH_modelName"))
366 Map<String,Object> sliceProfile = objectMapper.readValue(execution.getVariable("tnMhSliceProfile"), Map.class)
367 sliceProfile.put("sliceProfileId", execution.getVariable("TNMH_sliceProfileInstanceId"))
368 String sliceProfileString = objectMapper.writeValueAsString(sliceProfile)
369 allocateTnNssi.addProperty("sliceProfile", sliceProfileString)
370 endpoints.put("transportEndpointA", execution.getVariable("tranportEp_ID_DUEG"))
371 endpoints.put("transportEndpointB", execution.getVariable("tranportEp_ID_CUIN"))
372 String endpointsString = objectMapper.writeValueAsString(endpoints)
373 connectionLinksList.add(endpointsString)
377 connectionLinks.add("connectionLinks", connectionLinksList)
378 transportSliceNetworksList.add(connectionLinks)
379 allocateTnNssi.add("transportSliceNetworks", transportSliceNetworksList)
380 allocateTnNssi.addProperty("nssiId", null)
381 serviceInfo.addProperty("nssiId", null)
382 }else if(action.equals("modify-allocate")) {
383 if(domainType.equals("TN_FH")) {
384 serviceInfo.addProperty("serviceInvariantUuid", null)
385 serviceInfo.addProperty("serviceUuid", null)
386 allocateTnNssi.addProperty("nsstId", null)
387 allocateTnNssi.addProperty("nssiName", execution.getVariable("TNFH_nssiName"))
388 allocateTnNssi.addProperty("sliceProfileId", execution.getVariable("TNFH_sliceProfileInstanceId"))
389 allocateTnNssi.addProperty("nssiId", execution.getVariable("TNFH_NSSI"))
390 serviceInfo.addProperty("nssiId", execution.getVariable("TNFH_NSSI"))
391 }else if(domainType.equals("TN_MH")) {
392 serviceInfo.addProperty("serviceInvariantUuid", null)
393 serviceInfo.addProperty("serviceUuid", null)
394 allocateTnNssi.addProperty("nsstId", null)
395 allocateTnNssi.addProperty("nssiName", execution.getVariable("TNMH_nssiName"))
396 allocateTnNssi.addProperty("sliceProfileId", execution.getVariable("TNMH_sliceProfileInstanceId"))
397 allocateTnNssi.addProperty("nssiId", execution.getVariable("TNMH_NSSI"))
398 serviceInfo.addProperty("nssiId", execution.getVariable("TNMH_NSSI"))
401 String nsiInfo = jsonUtil.getJsonValue(execution.getVariable("sliceParams"), "nsiInfo")
402 allocateTnNssi.addProperty("nsiInfo", nsiInfo)
403 allocateTnNssi.addProperty("scriptName", "TN1")
404 serviceInfo.addProperty("nsiId", execution.getVariable("nsiId"))
405 serviceInfo.addProperty("globalSubscriberId", execution.getVariable("globalSubscriberId"))
406 serviceInfo.addProperty("subscriptionServiceType", execution.getVariable("subscriptionServiceType"))
407 response.addProperty("esrInfo", esrInfoString)
408 response.add("serviceInfo", serviceInfo)
409 response.add("allocateTnNssi", allocateTnNssi)
410 return response.toString()
413 public String buildDeallocateNssiRequest(DelegateExecution execution,String domainType) {
414 String globalSubscriberId = execution.getVariable("globalSubscriberId")
415 String subscriptionServiceType = execution.getVariable("subscriptionServiceType")
417 JsonObject deAllocateNssi = new JsonObject()
418 deAllocateNssi.addProperty("snssaiList", execution.getVariable("snssaiList"))
419 deAllocateNssi.addProperty("nsiId", execution.getVariable("nsiId"))
420 deAllocateNssi.addProperty("modifyAction", true)
421 deAllocateNssi.addProperty("terminateNssiOption", 0)
422 deAllocateNssi.addProperty("scriptName", "TN1")
424 if(domainType.equals("TN_FH")) {
425 deAllocateNssi.addProperty("nssiId", execution.getVariable("TNFH_NSSI"))
426 deAllocateNssi.addProperty("sliceProfileId", execution.getVariable("TNFH_sliceProfileInstanceId"))
427 }else if(domainType.equals("TN_MH")) {
428 deAllocateNssi.addProperty("nssiId", execution.getVariable("TNMH_NSSI"))
429 deAllocateNssi.addProperty("sliceProfileId", execution.getVariable("TNMH_sliceProfileInstanceId"))
432 EsrInfo esrInfo = new EsrInfo()
433 esrInfo.setVendor("ONAP")
434 esrInfo.setNetworkType("TN")
436 JsonObject serviceInfo = new JsonObject()
437 serviceInfo.addProperty("serviceInvariantUuid", null)
438 serviceInfo.addProperty("serviceUuid", null)
439 serviceInfo.addProperty("globalSubscriberId", globalSubscriberId)
440 serviceInfo.addProperty("subscriptionServiceType", subscriptionServiceType)
442 JsonObject json = new JsonObject()
443 json.add("deAllocateNssi", deAllocateNssi)
444 json.addProperty("esrInfo", objectMapper.writeValueAsString(esrInfo))
445 json.add("serviceInfo", serviceInfo)
446 return json.toString()