Merge "Add userParams as inputs"
[so.git] / bpmn / so-bpmn-infrastructure-common / src / main / groovy / org / onap / so / bpmn / infrastructure / scripts / AnNssmfutils.groovy
1 /*
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
4  * ================================================================================
5  # Copyright (c) 2020, Wipro Limited.
6  #
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
10  #
11  #       http://www.apache.org/licenses/LICENSE-2.0
12  #
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=========================================================
19  */
20
21 package org.onap.so.bpmn.infrastructure.scripts
22
23
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
37 import java.util.List
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
58
59
60 class AnNssmfUtils {
61
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
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)
84
85         //Prepare serviceInfo object
86         JsonObject ranNsstInfo = new JsonObject()
87         ranNsstInfo.addProperty("UUID", UUID)
88         ranNsstInfo.addProperty("invariantUUID", invariantUUID)
89         ranNsstInfo.addProperty("name", name)
90
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)
98
99         return json.toString()
100 }
101
102 public String buildCreateTNNSSMFSubnetCapabilityRequest() {
103         EsrInfo esrInfo = new EsrInfo()
104         esrInfo.setNetworkType("TN")
105         esrInfo.setVendor("ONAP")
106
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()
114 }
115
116 public String buildCreateANNFNSSMFSubnetCapabilityRequest() {
117         EsrInfo esrInfo = new EsrInfo()
118         esrInfo.setNetworkType("AN")
119         esrInfo.setVendor("ONAP")
120
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()
127 }
128 public void createDomainWiseSliceProfiles(List<String> ranConstituentSliceProfiles, DelegateExecution execution) {
129         
130         for(String profile : ranConstituentSliceProfiles) {
131                 String domainType = jsonUtil.getJsonValue(profile, "domainType")
132                 switch(domainType) {
133                         case "AN_NF":
134                                 execution.setVariable("ranNfSliceProfile", profile)
135                                 break
136                         case "TN_FH":
137                                 execution.setVariable("tnFhSliceProfile", profile)
138                                 break
139                         case "TN_MH":
140                                 execution.setVariable("tnMhSliceProfile", profile)
141                                 break
142                         default:
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)
146                 }
147                 
148         }
149 }
150
151 public void createSliceProfilesInAai(DelegateExecution execution) {
152         
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)
179         
180         ANNF_SliceProfiles.getSliceProfile().add(ANNF_SliceProfile)
181         TNFH_SliceProfiles.getSliceProfile().add(TNFH_SliceProfile)
182         TNMH_SliceProfiles.getSliceProfile().add(TNMH_SliceProfile)
183         
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)
231         String msg = ""
232         try {
233
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)
237
238                 AAIResourceUri sliceProfileUri1 = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(execution.getVariable("globalSubscriberId")).serviceSubscription(execution.getVariable("subscriptionServiceType")).serviceInstance(TNFH_sliceProfileInstanceId))
239                 client.create(sliceProfileUri1, TNFH_sliceProfileInstance)
240
241                 AAIResourceUri sliceProfileUri2 = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(execution.getVariable("globalSubscriberId")).serviceSubscription(execution.getVariable("subscriptionServiceType")).serviceInstance(TNMH_sliceProfileInstanceId))
242                 client.create(sliceProfileUri2, TNMH_sliceProfileInstance)
243
244         } catch (BpmnError e) {
245                 throw e
246         } catch (Exception ex) {
247                 msg = "Exception in AnNssmfUtils.createSliceProfilesInAai " + ex.getMessage()
248                 logger.info(msg)
249                 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
250         }
251
252 }
253 private SliceProfile createSliceProfile(String domainType, DelegateExecution execution) {
254
255         SliceProfile result = new SliceProfile()
256         Map<String,Object> profile
257         switch(domainType) {
258                 case "AN-NF":
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"))
277                         break
278                 case "TN-FH":
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"))
285                         break
286                 case "TN-MH":
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"))
293                         break
294                 default:
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)
298         }
299         return result
300 }
301
302  /**
303      * create relationship in AAI
304      */
305     public createRelationShipInAAI = { DelegateExecution execution, final Relationship relationship, String instanceId ->
306         logger.debug("createRelationShipInAAI Start")
307         String msg
308                 AAIResourcesClient client = new AAIResourcesClient()
309         try {
310             AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(execution.getVariable("globalSubscriberId")).serviceSubscription(execution.getVariable("subscriptionServiceType")).serviceInstance(instanceId).relationshipAPI())
311             client.create(uri, relationship)
312
313         } catch (BpmnError e) {
314             throw e
315         } catch (Exception ex) {
316             msg = "Exception in CreateCommunicationService.createRelationShipInAAI. " + ex.getMessage()
317             logger.info(msg)
318             exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
319         }
320         logger.debug("createRelationShipInAAI Exit")
321
322     }
323         
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")
328                 }
329                 else {
330                         logger.error("failed to modify ran Nf nssi")
331                         exceptionUtil.buildAndThrowWorkflowException(execution, 1000, "modify ran nf nssi not successfull")
332                 }
333         }
334         
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)
374                         }
375                         
376                         //Connection links
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"))
399                         }
400                 }
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()
411         }
412         
413         public String buildDeallocateNssiRequest(DelegateExecution execution,String domainType) {
414                 String globalSubscriberId = execution.getVariable("globalSubscriberId")
415                 String subscriptionServiceType = execution.getVariable("subscriptionServiceType")
416            
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")
423                 
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"))
430                 }
431                 
432                 EsrInfo esrInfo = new EsrInfo()
433                 esrInfo.setVendor("ONAP")
434                 esrInfo.setNetworkType("TN")
435            
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)
441            
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()
447            
448         }
449 }