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
 
  23 import com.google.gson.JsonArray
 
  24 import org.camunda.bpm.engine.delegate.BpmnError
 
  25 import org.camunda.bpm.engine.delegate.DelegateExecution
 
  26 import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
 
  27 import org.onap.so.bpmn.common.scripts.ExceptionUtil
 
  28 import org.onap.so.bpmn.common.scripts.NssmfAdapterUtils
 
  29 import org.onap.so.bpmn.common.scripts.OofUtils
 
  30 import org.onap.so.bpmn.common.scripts.RequestDBUtil
 
  31 import org.onap.so.bpmn.core.json.JsonUtils
 
  32 import org.onap.so.db.request.beans.ResourceOperationStatus
 
  33 import org.slf4j.Logger
 
  34 import org.slf4j.LoggerFactory
 
  35 import java.sql.Timestamp
 
  37 import static org.apache.commons.lang3.StringUtils.isBlank
 
  38 import com.google.gson.JsonObject
 
  39 import com.fasterxml.jackson.databind.ObjectMapper
 
  40 import org.onap.aaiclient.client.aai.AAIObjectType
 
  41 import org.onap.aaiclient.client.aai.AAIResourcesClient
 
  42 import org.onap.aaiclient.client.aai.entities.AAIResultWrapper
 
  43 import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri
 
  44 import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory
 
  45 import javax.ws.rs.NotFoundException
 
  46 import org.onap.so.beans.nsmf.AllocateTnNssi
 
  47 import org.onap.so.beans.nsmf.DeAllocateNssi
 
  48 import org.onap.so.beans.nsmf.EsrInfo
 
  49 import org.onap.so.beans.nsmf.ServiceInfo
 
  50 import org.onap.so.bpmn.core.UrnPropertiesReader
 
  51 import org.onap.aai.domain.yang.ServiceInstance
 
  52 import org.onap.aai.domain.yang.SliceProfile
 
  53 import org.onap.aai.domain.yang.SliceProfiles
 
  54 import org.onap.aai.domain.yang.Relationship
 
  58         private static final Logger logger = LoggerFactory.getLogger(AnNssmfUtils.class)
 
  59         ObjectMapper objectMapper = new ObjectMapper();
 
  60         ExceptionUtil exceptionUtil = new ExceptionUtil()
 
  61         JsonUtils jsonUtil = new JsonUtils()
 
  62         public String buildSelectRANNSSIRequest(String requestId, String messageType, String UUID,String invariantUUID,
 
  63                 String name, Map<String, Object> profileInfo, List<String> nsstInfoList, JsonArray capabilitiesList, Boolean preferReuse){
 
  65         def transactionId = requestId
 
  66         logger.debug( "transactionId is: " + transactionId)
 
  67         String correlator = requestId
 
  68         String callbackUrl = UrnPropertiesReader.getVariable("mso.adapters.oof.callback.endpoint") + "/" + messageType + "/" + correlator
 
  69         ObjectMapper objectMapper = new ObjectMapper();
 
  70         String profileJson = objectMapper.writeValueAsString(profileInfo);
 
  71         String nsstInfoListString = objectMapper.writeValueAsString(nsstInfoList);
 
  72         //Prepare requestInfo object
 
  73         JsonObject requestInfo = new JsonObject()
 
  74         requestInfo.addProperty("transactionId", transactionId)
 
  75         requestInfo.addProperty("requestId", requestId)
 
  76         requestInfo.addProperty("callbackUrl", callbackUrl)
 
  77         requestInfo.addProperty("sourceId","SO" )
 
  78         requestInfo.addProperty("timeout", 600)
 
  79         requestInfo.addProperty("numSolutions", 1)
 
  81         //Prepare serviceInfo object
 
  82         JsonObject ranNsstInfo = new JsonObject()
 
  83         ranNsstInfo.addProperty("UUID", UUID)
 
  84         ranNsstInfo.addProperty("invariantUUID", invariantUUID)
 
  85         ranNsstInfo.addProperty("name", name)
 
  87         JsonObject json = new JsonObject()
 
  88         json.add("requestInfo", requestInfo)
 
  89         json.add("NSTInfo", ranNsstInfo)
 
  90         json.addProperty("serviceProfile", profileJson)
 
  91         json.addProperty("NSSTInfo", nsstInfoListString)
 
  92         json.add("subnetCapabilities", capabilitiesList)
 
  93         json.addProperty("preferReuse", preferReuse)
 
  95         return json.toString()
 
  98 public String buildCreateTNNSSMFSubnetCapabilityRequest() {
 
  99         EsrInfo esrInfo = new EsrInfo()
 
 100         esrInfo.setNetworkType("TN")
 
 101         esrInfo.setVendor("ONAP")
 
 103         JsonArray subnetTypes = new JsonArray()
 
 104         subnetTypes.add("TN_FH")
 
 105         subnetTypes.add("TN_MH")
 
 106         JsonObject response = new JsonObject()
 
 107         response.add("subnetCapabilityQuery", subnetTypes)
 
 108         response.addProperty("esrInfo", objectMapper.writeValueAsString(esrInfo))
 
 109         return response.toString()
 
 112 public String buildCreateANNFNSSMFSubnetCapabilityRequest() {
 
 113         EsrInfo esrInfo = new EsrInfo()
 
 114         esrInfo.setNetworkType("AN")
 
 115         esrInfo.setVendor("ONAP")
 
 117         JsonArray subnetTypes = new JsonArray()
 
 118         subnetTypes.add("AN_NF")
 
 119         JsonObject response = new JsonObject()
 
 120         response.add("subnetCapabilityQuery", subnetTypes)
 
 121         response.addProperty("esrInfo", objectMapper.writeValueAsString(esrInfo))
 
 122         return response.toString()
 
 124 public void createDomainWiseSliceProfiles(List<String> ranConstituentSliceProfiles, DelegateExecution execution) {
 
 126         for(String profile : ranConstituentSliceProfiles) {
 
 127                 String domainType = jsonUtil.getJsonValue(profile, "domainType")
 
 130                                 execution.setVariable("ranNfSliceProfile", profile)
 
 133                                 execution.setVariable("tnFhSliceProfile", profile)
 
 136                                 execution.setVariable("tnMhSliceProfile", profile)
 
 139                                 logger.debug("No expected match found for current domainType")
 
 140                                 logger.error("No expected match found for current domainType "+ domainType)
 
 141                                 exceptionUtil.buildAndThrowWorkflowException(execution, 1000,"No expected match found for current domainType "+ domainType)
 
 147 public void createSliceProfilesInAai(DelegateExecution execution) {
 
 149         org.onap.aai.domain.yang.ServiceInstance ANNF_sliceProfileInstance = new ServiceInstance();
 
 150         org.onap.aai.domain.yang.ServiceInstance TNFH_sliceProfileInstance = new ServiceInstance();
 
 151         org.onap.aai.domain.yang.ServiceInstance TNMH_sliceProfileInstance = new ServiceInstance();
 
 152         //generate slice profile ids and slice profile instance ids
 
 153         String ANNF_sliceProfileInstanceId = UUID.randomUUID().toString()
 
 154         String ANNF_sliceProfileId = UUID.randomUUID().toString()
 
 155         String TNFH_sliceProfileInstanceId = UUID.randomUUID().toString()
 
 156         String TNFH_sliceProfileId = UUID.randomUUID().toString()
 
 157         String TNMH_sliceProfileInstanceId = UUID.randomUUID().toString()
 
 158         String TNMH_sliceProfileId = UUID.randomUUID().toString()
 
 159         execution.setVariable("ANNF_sliceProfileInstanceId",ANNF_sliceProfileInstanceId)
 
 160         execution.setVariable("ANNF_sliceProfileId",ANNF_sliceProfileId)
 
 161         execution.setVariable("TNFH_sliceProfileInstanceId",TNFH_sliceProfileInstanceId)
 
 162         execution.setVariable("TNFH_sliceProfileId",TNFH_sliceProfileId)
 
 163         execution.setVariable("TNMH_sliceProfileInstanceId",TNMH_sliceProfileInstanceId)
 
 164         execution.setVariable("TNMH_sliceProfileId",TNMH_sliceProfileId)
 
 165         //slice profiles assignment
 
 166         org.onap.aai.domain.yang.SliceProfiles ANNF_SliceProfiles = new SliceProfiles()
 
 167         org.onap.aai.domain.yang.SliceProfiles TNFH_SliceProfiles = new SliceProfiles()
 
 168         org.onap.aai.domain.yang.SliceProfiles TNMH_SliceProfiles = new SliceProfiles()
 
 169         org.onap.aai.domain.yang.SliceProfile ANNF_SliceProfile = new SliceProfile()
 
 170         org.onap.aai.domain.yang.SliceProfile TNFH_SliceProfile = new SliceProfile()
 
 171         org.onap.aai.domain.yang.SliceProfile TNMH_SliceProfile = new SliceProfile()
 
 172         ANNF_SliceProfile = createSliceProfile("AN-NF", execution)
 
 173         TNFH_SliceProfile = createSliceProfile("TN-FH",execution)
 
 174         TNMH_SliceProfile = createSliceProfile("TN-MH",execution)
 
 176         ANNF_SliceProfiles.getSliceProfile().add(ANNF_SliceProfile)
 
 177         TNFH_SliceProfiles.getSliceProfile().add(TNFH_SliceProfile)
 
 178         TNMH_SliceProfiles.getSliceProfile().add(TNMH_SliceProfile)
 
 180         logger.debug("sliceProfiles : 1. "+ANNF_SliceProfiles.toString()+"\n 2. "+TNFH_SliceProfiles.toString()+"\n 3. "+TNMH_SliceProfiles.toString())
 
 181         //ANNF slice profile instance creation
 
 182         ANNF_sliceProfileInstance.setServiceInstanceId(ANNF_sliceProfileInstanceId)
 
 183         String sliceInstanceName = "sliceprofile_"+ANNF_sliceProfileId
 
 184         ANNF_sliceProfileInstance.setServiceInstanceName(sliceInstanceName)
 
 185         String serviceType = jsonUtil.getJsonValue(execution.getVariable("ranNfSliceProfile"), "sST")
 
 186         ANNF_sliceProfileInstance.setServiceType(serviceType)
 
 187         String serviceStatus = "deactivated"
 
 188         ANNF_sliceProfileInstance.setOrchestrationStatus(serviceStatus)
 
 189         String serviceInstanceLocationid = jsonUtil.getJsonValue(execution.getVariable("ranNfSliceProfile"), "plmnIdList")
 
 190         ANNF_sliceProfileInstance.setServiceInstanceLocationId(serviceInstanceLocationid)
 
 191         String serviceRole = "slice-profile-instance"
 
 192         ANNF_sliceProfileInstance.setServiceRole(serviceRole)
 
 193         List<String> snssaiList = objectMapper.readValue(execution.getVariable("snssaiList"), List.class)
 
 194         String snssai = snssaiList.get(0)
 
 195         ANNF_sliceProfileInstance.setEnvironmentContext(snssai)
 
 196         ANNF_sliceProfileInstance.setWorkloadContext("AN-NF")    
 
 197         ANNF_sliceProfileInstance.setSliceProfiles(ANNF_SliceProfiles)
 
 198         logger.debug("completed ANNF sliceprofileinstance build "+ ANNF_sliceProfileInstance.toString())
 
 199         //TNFH slice profile instance creation
 
 200         TNFH_sliceProfileInstance.setServiceInstanceId(TNFH_sliceProfileInstanceId)
 
 201         sliceInstanceName = "sliceprofile_"+TNFH_sliceProfileId
 
 202         TNFH_sliceProfileInstance.setServiceInstanceName(sliceInstanceName)
 
 203         serviceType = jsonUtil.getJsonValue(execution.getVariable("tnFhSliceProfile"), "sST")
 
 204         TNFH_sliceProfileInstance.setServiceType(serviceType)
 
 205         TNFH_sliceProfileInstance.setOrchestrationStatus(serviceStatus)
 
 206         serviceInstanceLocationid = jsonUtil.getJsonValue(execution.getVariable("tnFhSliceProfile"), "plmnIdList")
 
 207         TNFH_sliceProfileInstance.setServiceInstanceLocationId(serviceInstanceLocationid)
 
 208         TNFH_sliceProfileInstance.setServiceRole(serviceRole)
 
 209         TNFH_sliceProfileInstance.setEnvironmentContext(snssai)
 
 210         TNFH_sliceProfileInstance.setWorkloadContext("TN-FH")
 
 211         TNFH_sliceProfileInstance.setSliceProfiles(TNFH_SliceProfiles)
 
 212         logger.debug("completed TNFH sliceprofileinstance build "+TNFH_sliceProfileInstance)
 
 213         //TNMH slice profile instance creation
 
 214         TNMH_sliceProfileInstance.setServiceInstanceId(TNMH_sliceProfileInstanceId)
 
 215         sliceInstanceName = "sliceprofile_"+TNMH_sliceProfileId
 
 216         TNMH_sliceProfileInstance.setServiceInstanceName(sliceInstanceName)
 
 217         serviceType = jsonUtil.getJsonValue(execution.getVariable("tnMhSliceProfile"), "sST")
 
 218         TNMH_sliceProfileInstance.setServiceType(serviceType)
 
 219         TNMH_sliceProfileInstance.setOrchestrationStatus(serviceStatus)
 
 220         serviceInstanceLocationid = jsonUtil.getJsonValue(execution.getVariable("tnMhSliceProfile"), "plmnIdList")
 
 221         TNMH_sliceProfileInstance.setServiceInstanceLocationId(serviceInstanceLocationid)
 
 222         TNMH_sliceProfileInstance.setServiceRole(serviceRole)
 
 223         TNMH_sliceProfileInstance.setEnvironmentContext(snssai)
 
 224         TNMH_sliceProfileInstance.setWorkloadContext("TN-MH")
 
 225         TNMH_sliceProfileInstance.setSliceProfiles(TNMH_SliceProfiles)
 
 226         logger.debug("completed TNMH sliceprofileinstance build "+TNMH_sliceProfileInstance)
 
 230                 AAIResourcesClient client = new AAIResourcesClient()
 
 231                 AAIResourceUri sliceProfileUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, execution.getVariable("globalSubscriberId"), execution.getVariable("subscriptionServiceType"), ANNF_sliceProfileInstanceId)
 
 232                 client.create(sliceProfileUri, ANNF_sliceProfileInstance)
 
 234                 AAIResourceUri sliceProfileUri1 = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, execution.getVariable("globalSubscriberId"), execution.getVariable("subscriptionServiceType"), TNFH_sliceProfileInstanceId)
 
 235                 client.create(sliceProfileUri1, TNFH_sliceProfileInstance)
 
 237                 AAIResourceUri sliceProfileUri2 = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, execution.getVariable("globalSubscriberId"), execution.getVariable("subscriptionServiceType"), TNMH_sliceProfileInstanceId)
 
 238                 client.create(sliceProfileUri2, TNMH_sliceProfileInstance)
 
 240         } catch (BpmnError e) {
 
 242         } catch (Exception ex) {
 
 243                 msg = "Exception in AnNssmfUtils.createSliceProfilesInAai " + ex.getMessage()
 
 245                 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
 
 249 private SliceProfile createSliceProfile(String domainType, DelegateExecution execution) {
 
 251         SliceProfile result = new SliceProfile()
 
 252         Map<String,Object> profile
 
 255                         profile = objectMapper.readValue(execution.getVariable("ranNfSliceProfile"), Map.class)//pending fields - maxBandwidth, sST, pLMNIdList, cSReliabilityMeanTime, 
 
 256                                                                                                                                                                                                         //msgSizeByte, maxNumberofPDUSessions,overallUserDensity,transferIntervalTarget
 
 257                         result.setJitter(profile.get("jitter"))
 
 258                         result.setLatency(profile.get("latency"))
 
 259                         result.setResourceSharingLevel(profile.get("resourceSharingLevel"))
 
 260                         result.setSNssai(profile.get("sNSSAI"))
 
 261                         result.setUeMobilityLevel(profile.get("uEMobilityLevel"))
 
 262                         result.setMaxNumberOfUEs(profile.get("maxNumberofUEs"))
 
 263                         result.setActivityFactor(profile.get("activityFactor"))
 
 264                         result.setCoverageAreaTAList(profile.get("coverageAreaTAList"))
 
 265                         result.setCsAvailability(profile.get("cSAvailabilityTarget"))
 
 266                         result.setExpDataRateDL(profile.get("expDataRateDL"))
 
 267                         result.setExpDataRateUL(profile.get("expDataRateUL"))
 
 268                         result.setSurvivalTime(profile.get("survivalTime"))
 
 269                         result.setAreaTrafficCapDL(profile.get("areaTrafficCapDL"))
 
 270                         result.setAreaTrafficCapUL(profile.get("areaTrafficCapUL"))
 
 271                         result.setExpDataRate(profile.get("expDataRate"))
 
 272                         result.setProfileId(execution.getVariable("ANNF_sliceProfileId"))
 
 275                         profile = objectMapper.readValue(execution.getVariable("tnFhSliceProfile"), Map.class) //pending fields - maxBandwidth, sST, pLMNIdList
 
 276                         result.setJitter(profile.get("jitter"))
 
 277                         result.setLatency(profile.get("latency"))
 
 278                         result.setResourceSharingLevel(profile.get("resourceSharingLevel"))
 
 279                         result.setSNssai(profile.get("sNSSAI"))
 
 280                         result.setProfileId(execution.getVariable("TNFH_sliceProfileId"))
 
 283                         profile = objectMapper.readValue(execution.getVariable("tnMhSliceProfile"), Map.class)//pending fields - maxBandwidth, sST, pLMNIdList
 
 284                         result.setJitter(profile.get("jitter"))
 
 285                         result.setLatency(profile.get("latency"))
 
 286                         result.setResourceSharingLevel(profile.get("resourceSharingLevel"))
 
 287                         result.setSNssai(profile.get("sNSSAI"))
 
 288                         result.setProfileId(execution.getVariable("TNMH_sliceProfileId"))
 
 291                         logger.debug("No expected match found for current domainType")
 
 292                         logger.error("No expected match found for current domainType "+ domainType)
 
 293                         exceptionUtil.buildAndThrowWorkflowException(execution, 1000,"No expected match found for current domainType "+ domainType)
 
 299      * create relationship in AAI
 
 301     public createRelationShipInAAI = { DelegateExecution execution, final Relationship relationship, String instanceId ->
 
 302         logger.debug("createRelationShipInAAI Start")
 
 304                 AAIResourcesClient client = new AAIResourcesClient()
 
 306             AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE,
 
 307                     execution.getVariable("globalSubscriberId"),
 
 308                     execution.getVariable("subscriptionServiceType"),
 
 309                     instanceId).relationshipAPI()
 
 310             client.create(uri, relationship)
 
 312         } catch (BpmnError e) {
 
 314         } catch (Exception ex) {
 
 315             msg = "Exception in CreateCommunicationService.createRelationShipInAAI. " + ex.getMessage()
 
 317             exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
 
 319         logger.debug("createRelationShipInAAI Exit")
 
 323         public void processRanNfModifyRsp(DelegateExecution execution) {
 
 324                 String status = execution.getVariable("ranNfStatus")
 
 325                 if(status.equals("success")) {
 
 326                         logger.debug("completed Ran NF NSSI modification ... proceeding with the flow")
 
 329                         logger.error("failed to modify ran Nf nssi")
 
 330                         exceptionUtil.buildAndThrowWorkflowException(execution, 1000, "modify ran nf nssi not successfull")
 
 334         public String buildCreateNSSMFRequest(DelegateExecution execution, String domainType, String action) {
 
 335                 EsrInfo esrInfo = new EsrInfo()
 
 336                 esrInfo.setNetworkType("TN")
 
 337                 esrInfo.setVendor("ONAP")
 
 338                 String esrInfoString = objectMapper.writeValueAsString(esrInfo)
 
 339                 JsonObject response = new JsonObject()
 
 340                 JsonObject allocateTnNssi = new JsonObject()
 
 341                 JsonObject serviceInfo = new JsonObject()
 
 342                 JsonArray transportSliceNetworksList  = new JsonArray()
 
 343                 JsonArray connectionLinksList = new JsonArray()
 
 344                 JsonObject connectionLinks = new JsonObject()
 
 345                 if(action.equals("allocate")){
 
 346                         Map<String, String> endpoints
 
 347                         if(domainType.equals("TN_FH")) {
 
 348                                 serviceInfo.addProperty("serviceInvariantUuid", execution.getVariable("TNFH_modelInvariantUuid"))
 
 349                                 serviceInfo.addProperty("serviceUuid", execution.getVariable("TNFH_modelUuid"))
 
 350                                 allocateTnNssi.addProperty("nsstId", execution.getVariable("TNFH_modelUuid"))
 
 351                                 allocateTnNssi.addProperty("nssiName", execution.getVariable("TNFH_modelName"))
 
 352                                 Map<String,Object> sliceProfile = objectMapper.readValue(execution.getVariable("tnFhSliceProfile"), Map.class)
 
 353                                 sliceProfile.put("sliceProfileId", execution.getVariable("TNFH_sliceProfileInstanceId"))
 
 354                                 String sliceProfileString = objectMapper.writeValueAsString(sliceProfile)
 
 355                                 allocateTnNssi.addProperty("sliceProfile", sliceProfileString)
 
 356                                 endpoints.put("transportEndpointA", execution.getVariable("tranportEp_ID_RU"))
 
 357                                 endpoints.put("transportEndpointB", execution.getVariable("tranportEp_ID_DUIN"))
 
 358                                 String endpointsString = objectMapper.writeValueAsString(endpoints)
 
 359                                 connectionLinksList.add(endpointsString)
 
 360                         }else if(domainType.equals("TN_MH")) {
 
 361                                 serviceInfo.addProperty("serviceInvariantUuid", execution.getVariable("TNMH_modelInvariantUuid"))
 
 362                                 serviceInfo.addProperty("serviceUuid", execution.getVariable("TNMH_modelUuid"))
 
 363                                 allocateTnNssi.addProperty("nsstId", execution.getVariable("TNMH_modelUuid"))
 
 364                                 allocateTnNssi.addProperty("nssiName", execution.getVariable("TNMH_modelName"))
 
 365                                 Map<String,Object> sliceProfile = objectMapper.readValue(execution.getVariable("tnMhSliceProfile"), Map.class)
 
 366                                 sliceProfile.put("sliceProfileId", execution.getVariable("TNMH_sliceProfileInstanceId"))
 
 367                                 String sliceProfileString = objectMapper.writeValueAsString(sliceProfile)
 
 368                                 allocateTnNssi.addProperty("sliceProfile", sliceProfileString)
 
 369                                 endpoints.put("transportEndpointA", execution.getVariable("tranportEp_ID_DUEG"))
 
 370                                 endpoints.put("transportEndpointB", execution.getVariable("tranportEp_ID_CUIN"))
 
 371                                 String endpointsString = objectMapper.writeValueAsString(endpoints)
 
 372                                 connectionLinksList.add(endpointsString)
 
 376                         connectionLinks.add("connectionLinks", connectionLinksList)
 
 377                         transportSliceNetworksList.add(connectionLinks)
 
 378                         allocateTnNssi.add("transportSliceNetworks", transportSliceNetworksList)
 
 379                         allocateTnNssi.addProperty("nssiId", null)
 
 380                         serviceInfo.addProperty("nssiId", null)
 
 381                 }else if(action.equals("modify-allocate")) {
 
 382                         if(domainType.equals("TN_FH")) {
 
 383                                 serviceInfo.addProperty("serviceInvariantUuid", null)
 
 384                                 serviceInfo.addProperty("serviceUuid", null)
 
 385                                 allocateTnNssi.addProperty("nsstId", null)
 
 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                                 serviceInfo.addProperty("serviceInvariantUuid", null)
 
 392                                 serviceInfo.addProperty("serviceUuid", null)
 
 393                                 allocateTnNssi.addProperty("nsstId", null)
 
 394                                 allocateTnNssi.addProperty("nssiName", execution.getVariable("TNMH_nssiName"))
 
 395                                 allocateTnNssi.addProperty("sliceProfileId", execution.getVariable("TNMH_sliceProfileInstanceId"))
 
 396                                 allocateTnNssi.addProperty("nssiId", execution.getVariable("TNMH_NSSI"))
 
 397                                 serviceInfo.addProperty("nssiId", execution.getVariable("TNMH_NSSI"))
 
 400                 String nsiInfo = jsonUtil.getJsonValue(execution.getVariable("sliceParams"), "nsiInfo")
 
 401                 allocateTnNssi.addProperty("nsiInfo", nsiInfo)
 
 402                 allocateTnNssi.addProperty("scriptName", "TN1")
 
 403                 serviceInfo.addProperty("nsiId", execution.getVariable("nsiId"))
 
 404                 serviceInfo.addProperty("globalSubscriberId", execution.getVariable("globalSubscriberId"))
 
 405                 serviceInfo.addProperty("subscriptionServiceType", execution.getVariable("subscriptionServiceType"))
 
 406                 response.addProperty("esrInfo", esrInfoString)
 
 407                 response.add("serviceInfo", serviceInfo)
 
 408                 response.add("allocateTnNssi", allocateTnNssi)
 
 409                 return response.toString()
 
 412         public String buildDeallocateNssiRequest(DelegateExecution execution,String domainType) {
 
 413                 String globalSubscriberId = execution.getVariable("globalSubscriberId")
 
 414                 String subscriptionServiceType = execution.getVariable("subscriptionServiceType")
 
 416                 JsonObject deAllocateNssi = new JsonObject()
 
 417                 deAllocateNssi.addProperty("snssaiList", execution.getVariable("snssaiList"))
 
 418                 deAllocateNssi.addProperty("nsiId", execution.getVariable("nsiId"))
 
 419                 deAllocateNssi.addProperty("modifyAction", true)
 
 420                 deAllocateNssi.addProperty("terminateNssiOption", 0)
 
 421                 deAllocateNssi.addProperty("scriptName", "TN1")
 
 423                 if(domainType.equals("TN_FH")) {
 
 424                         deAllocateNssi.addProperty("nssiId", execution.getVariable("TNFH_NSSI"))
 
 425                         deAllocateNssi.addProperty("sliceProfileId", execution.getVariable("TNFH_sliceProfileInstanceId"))
 
 426                 }else if(domainType.equals("TN_MH")) {
 
 427                         deAllocateNssi.addProperty("nssiId", execution.getVariable("TNMH_NSSI"))
 
 428                         deAllocateNssi.addProperty("sliceProfileId", execution.getVariable("TNMH_sliceProfileInstanceId"))
 
 431                 EsrInfo esrInfo = new EsrInfo()
 
 432                 esrInfo.setVendor("ONAP")
 
 433                 esrInfo.setNetworkType("TN")
 
 435                 JsonObject serviceInfo = new JsonObject()
 
 436                 serviceInfo.addProperty("serviceInvariantUuid", null)
 
 437                 serviceInfo.addProperty("serviceUuid", null)
 
 438                 serviceInfo.addProperty("globalSubscriberId", globalSubscriberId)
 
 439                 serviceInfo.addProperty("subscriptionServiceType", subscriptionServiceType)
 
 441                 JsonObject json = new JsonObject()
 
 442                 json.add("deAllocateNssi", deAllocateNssi)
 
 443                 json.addProperty("esrInfo", objectMapper.writeValueAsString(esrInfo))
 
 444                 json.add("serviceInfo", serviceInfo)
 
 445                 return json.toString()