Fix bugs found in TN Slicing integration involving OOF
[so.git] / bpmn / so-bpmn-infrastructure-common / src / main / groovy / org / onap / so / bpmn / infrastructure / scripts / AnNssmfutils.groovy
index 540358f..eb7e89c 100644 (file)
@@ -153,6 +153,52 @@ public void createDomainWiseSliceProfiles(List<String> ranConstituentSliceProfil
 
 public void createSliceProfilesInAai(DelegateExecution execution) {
        
+       String serviceCategory = execution.getVariable("serviceCategory")
+       if (execution.getVariable("IsRANNfAlonePresent")) {
+               ServiceInstance ANNF_sliceProfileInstance = new ServiceInstance();
+               String ANNF_sliceProfileInstanceId = UUID.randomUUID().toString()
+               String ANNF_sliceProfileId = UUID.randomUUID().toString()
+               execution.setVariable("ANNF_sliceProfileInstanceId", ANNF_sliceProfileInstanceId)
+               execution.setVariable("ANNF_sliceProfileId", ANNF_sliceProfileId)
+               SliceProfiles ANNF_SliceProfiles = new SliceProfiles()
+               SliceProfile ANNF_SliceProfile = createSliceProfile("AN_NF", execution)
+               ANNF_SliceProfiles.getSliceProfile().add(ANNF_SliceProfile)
+               logger.debug("sliceProfiles : 1. " + ANNF_SliceProfiles.toString())
+               //ANNF slice profile instance creation
+               ANNF_sliceProfileInstance.setServiceInstanceId(ANNF_sliceProfileInstanceId)
+               String sliceInstanceName = "sliceprofile_" + ANNF_sliceProfileId
+               ANNF_sliceProfileInstance.setServiceInstanceName(sliceInstanceName)
+               String serviceType = execution.getVariable("sst") as String
+               ANNF_sliceProfileInstance.setServiceType(serviceType)
+               String serviceStatus = "deactivated"
+               ANNF_sliceProfileInstance.setOrchestrationStatus(serviceStatus)
+               String serviceInstanceLocationid = jsonUtil.getJsonValue(execution.getVariable("ranNfSliceProfile") as String, "pLMNIdList")
+               ANNF_sliceProfileInstance.setServiceInstanceLocationId(jsonUtil.StringArrayToList(serviceInstanceLocationid).get(0))
+               String serviceRole = "slice-profile-instance"
+               ANNF_sliceProfileInstance.setServiceRole(serviceRole)
+               ArrayList<String> snssaiList = jsonUtil.StringArrayToList(execution.getVariable("snssaiList") as String)
+               String snssai = snssaiList.get(0)
+               ANNF_sliceProfileInstance.setEnvironmentContext(snssai)
+               ANNF_sliceProfileInstance.setWorkloadContext("AN_NF")
+               ANNF_sliceProfileInstance.setSliceProfiles(ANNF_SliceProfiles)
+               String serviceFunctionAnnf = jsonUtil.getJsonValue(execution.getVariable("ranNfSliceProfile") as String, "resourceSharingLevel")
+               ANNF_sliceProfileInstance.setServiceFunction(serviceFunctionAnnf)
+               logger.debug("completed ANNF sliceprofileinstance build : " + ANNF_sliceProfileInstance.toString())
+               String msg = ""
+               try {
+
+                       AAIResourcesClient client = new AAIResourcesClient()
+                       AAIResourceUri sliceProfileUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(execution.getVariable("globalSubscriberId") as String).serviceSubscription(execution.getVariable("subscriptionServiceType") as String).serviceInstance(ANNF_sliceProfileInstanceId))
+                       client.create(sliceProfileUri, ANNF_sliceProfileInstance)
+               } catch (BpmnError e) {
+                       throw e
+               } catch (Exception ex) {
+                       msg = "Exception in AnNssmfUtils.createSliceProfilesInAai " + ex.getMessage()
+                       logger.info(msg)
+                       exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+               }
+       }
+else{
        org.onap.aai.domain.yang.ServiceInstance ANNF_sliceProfileInstance = new ServiceInstance();
        org.onap.aai.domain.yang.ServiceInstance TNFH_sliceProfileInstance = new ServiceInstance();
        org.onap.aai.domain.yang.ServiceInstance TNMH_sliceProfileInstance = new ServiceInstance();
@@ -163,12 +209,12 @@ public void createSliceProfilesInAai(DelegateExecution execution) {
        String TNFH_sliceProfileId = UUID.randomUUID().toString()
        String TNMH_sliceProfileInstanceId = UUID.randomUUID().toString()
        String TNMH_sliceProfileId = UUID.randomUUID().toString()
-       execution.setVariable("ANNF_sliceProfileInstanceId",ANNF_sliceProfileInstanceId)
-       execution.setVariable("ANNF_sliceProfileId",ANNF_sliceProfileId)
-       execution.setVariable("TNFH_sliceProfileInstanceId",TNFH_sliceProfileInstanceId)
-       execution.setVariable("TNFH_sliceProfileId",TNFH_sliceProfileId)
-       execution.setVariable("TNMH_sliceProfileInstanceId",TNMH_sliceProfileInstanceId)
-       execution.setVariable("TNMH_sliceProfileId",TNMH_sliceProfileId)
+       execution.setVariable("ANNF_sliceProfileInstanceId", ANNF_sliceProfileInstanceId)
+       execution.setVariable("ANNF_sliceProfileId", ANNF_sliceProfileId)
+       execution.setVariable("TNFH_sliceProfileInstanceId", TNFH_sliceProfileInstanceId)
+       execution.setVariable("TNFH_sliceProfileId", TNFH_sliceProfileId)
+       execution.setVariable("TNMH_sliceProfileInstanceId", TNMH_sliceProfileInstanceId)
+       execution.setVariable("TNMH_sliceProfileId", TNMH_sliceProfileId)
        //slice profiles assignment
        org.onap.aai.domain.yang.SliceProfiles ANNF_SliceProfiles = new SliceProfiles()
        org.onap.aai.domain.yang.SliceProfiles TNFH_SliceProfiles = new SliceProfiles()
@@ -177,34 +223,34 @@ public void createSliceProfilesInAai(DelegateExecution execution) {
        org.onap.aai.domain.yang.SliceProfile TNFH_SliceProfile = new SliceProfile()
        org.onap.aai.domain.yang.SliceProfile TNMH_SliceProfile = new SliceProfile()
        ANNF_SliceProfile = createSliceProfile("AN_NF", execution)
-       TNFH_SliceProfile = createSliceProfile("TN_FH",execution)
-       TNMH_SliceProfile = createSliceProfile("TN_MH",execution)
-       
+       TNFH_SliceProfile = createSliceProfile("TN_FH", execution)
+       TNMH_SliceProfile = createSliceProfile("TN_MH", execution)
+
        ANNF_SliceProfiles.getSliceProfile().add(ANNF_SliceProfile)
        TNFH_SliceProfiles.getSliceProfile().add(TNFH_SliceProfile)
        TNMH_SliceProfiles.getSliceProfile().add(TNMH_SliceProfile)
-       
-       logger.debug("sliceProfiles : 1. "+ANNF_SliceProfiles.toString()+"\n 2. "+TNFH_SliceProfiles.toString()+"\n 3. "+TNMH_SliceProfiles.toString())
+
+       logger.debug("sliceProfiles : 1. " + ANNF_SliceProfiles.toString() + "\n 2. " + TNFH_SliceProfiles.toString() + "\n 3. " + TNMH_SliceProfiles.toString())
        //ANNF slice profile instance creation
        ANNF_sliceProfileInstance.setServiceInstanceId(ANNF_sliceProfileInstanceId)
-       String sliceInstanceName = "sliceprofile_"+ANNF_sliceProfileId
+       String sliceInstanceName = "sliceprofile_" + ANNF_sliceProfileId
        ANNF_sliceProfileInstance.setServiceInstanceName(sliceInstanceName)
        String serviceType = jsonUtil.getJsonValue(execution.getVariable("ranNfSliceProfile"), "sST")
        ANNF_sliceProfileInstance.setServiceType(serviceType)
        String serviceStatus = "deactivated"
        ANNF_sliceProfileInstance.setOrchestrationStatus(serviceStatus)
-       String serviceInstanceLocationid = jsonUtil.getJsonValue(execution.getVariable("ranNfSliceProfile"), "plmnIdList")
+       String serviceInstanceLocationid = jsonUtil.getJsonValue(execution.getVariable("ranNfSliceProfile"), "pLMNIdList")
         ANNF_sliceProfileInstance.setServiceInstanceLocationId(jsonUtil.StringArrayToList(serviceInstanceLocationid).get(0))
        String serviceRole = "slice-profile-instance"
        ANNF_sliceProfileInstance.setServiceRole(serviceRole)
-        ArrayList<String> snssaiList = execution.getVariable("snssaiList")
+       ArrayList<String> snssaiList = jsonUtil.StringArrayToList(execution.getVariable("snssaiList") as String)
        String snssai = snssaiList.get(0)
        ANNF_sliceProfileInstance.setEnvironmentContext(snssai)
-       ANNF_sliceProfileInstance.setWorkloadContext("AN_NF")    
+       ANNF_sliceProfileInstance.setWorkloadContext("AN_NF")
        ANNF_sliceProfileInstance.setSliceProfiles(ANNF_SliceProfiles)
        String serviceFunctionAnnf = jsonUtil.getJsonValue(execution.getVariable("ranNfSliceProfile"), "resourceSharingLevel")
        ANNF_sliceProfileInstance.setServiceFunction(serviceFunctionAnnf)
-       logger.debug("completed ANNF sliceprofileinstance build : "+ ANNF_sliceProfileInstance.toString())
+       logger.debug("completed ANNF sliceprofileinstance build :  "+ ANNF_sliceProfileInstance.toString())
        
        //TNFH slice profile instance creation
        TNFH_sliceProfileInstance.setServiceInstanceId(TNFH_sliceProfileInstanceId)
@@ -213,7 +259,7 @@ public void createSliceProfilesInAai(DelegateExecution execution) {
        serviceType = jsonUtil.getJsonValue(execution.getVariable("tnFhSliceProfile"), "sST")
        TNFH_sliceProfileInstance.setServiceType(serviceType)
        TNFH_sliceProfileInstance.setOrchestrationStatus(serviceStatus)
-       serviceInstanceLocationid = jsonUtil.getJsonValue(execution.getVariable("tnFhSliceProfile"), "plmnIdList")
+       serviceInstanceLocationid = jsonUtil.getJsonValue(execution.getVariable("tnFhSliceProfile"), "pLMNIdList")
         TNFH_sliceProfileInstance.setServiceInstanceLocationId(jsonUtil.StringArrayToList(serviceInstanceLocationid).get(0))
        TNFH_sliceProfileInstance.setServiceRole(serviceRole)
        TNFH_sliceProfileInstance.setEnvironmentContext(snssai)
@@ -221,7 +267,7 @@ public void createSliceProfilesInAai(DelegateExecution execution) {
        TNFH_sliceProfileInstance.setSliceProfiles(TNFH_SliceProfiles)
        String serviceFunctionTnFH = jsonUtil.getJsonValue(execution.getVariable("tnFhSliceProfile"), "resourceSharingLevel")
        TNFH_sliceProfileInstance.setServiceFunction(serviceFunctionTnFH)
-       logger.debug("completed TNFH sliceprofileinstance build : "+TNFH_sliceProfileInstance)
+       logger.debug("completed TNFH sliceprofileinstance build :   "+TNFH_sliceProfileInstance)
        
        //TNMH slice profile instance creation
        TNMH_sliceProfileInstance.setServiceInstanceId(TNMH_sliceProfileInstanceId)
@@ -230,7 +276,7 @@ public void createSliceProfilesInAai(DelegateExecution execution) {
        serviceType = jsonUtil.getJsonValue(execution.getVariable("tnMhSliceProfile"), "sST")
        TNMH_sliceProfileInstance.setServiceType(serviceType)
        TNMH_sliceProfileInstance.setOrchestrationStatus(serviceStatus)
-       serviceInstanceLocationid = jsonUtil.getJsonValue(execution.getVariable("tnMhSliceProfile"), "plmnIdList")
+       serviceInstanceLocationid = jsonUtil.getJsonValue(execution.getVariable("tnMhSliceProfile"), "pLMNIdList")
         TNMH_sliceProfileInstance.setServiceInstanceLocationId(jsonUtil.StringArrayToList(serviceInstanceLocationid).get(0))
        TNMH_sliceProfileInstance.setServiceRole(serviceRole)
        TNMH_sliceProfileInstance.setEnvironmentContext(snssai)
@@ -238,7 +284,7 @@ public void createSliceProfilesInAai(DelegateExecution execution) {
        TNMH_sliceProfileInstance.setSliceProfiles(TNMH_SliceProfiles)
        String serviceFunctionTnMH = jsonUtil.getJsonValue(execution.getVariable("tnMhSliceProfile"), "resourceSharingLevel")
        TNMH_sliceProfileInstance.setServiceFunction(serviceFunctionTnMH)
-       logger.debug("completed TNMH sliceprofileinstance build : "+TNMH_sliceProfileInstance)
+       logger.debug("completed TNMH sliceprofileinstance build :   "+TNMH_sliceProfileInstance)
        
        String msg = ""
        try {
@@ -260,6 +306,7 @@ public void createSliceProfilesInAai(DelegateExecution execution) {
                logger.info(msg)
                exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
        }
+       }
 
 }
 private SliceProfile createSliceProfile(String domainType, DelegateExecution execution) {
@@ -280,7 +327,7 @@ private SliceProfile createSliceProfile(String domainType, DelegateExecution exe
                        result.setExpDataRateDL(profile.get("expDataRateDL"))
                        result.setExpDataRateUL(profile.get("expDataRateUL"))
                        result.setSurvivalTime(profile.get("survivalTime"))
-                       result.setMaxNumberOfPDUSession(profile.get("maxNumberOfPDUSession")) 
+                       result.setMaxNumberOfPDUSession(profile.get("maxNumberofPDUSession"))
                        result.setAreaTrafficCapDL(profile.get("areaTrafficCapDL"))
                        result.setAreaTrafficCapUL(profile.get("areaTrafficCapUL"))
                        result.setOverallUserDensity(profile.get("overallUserDensity")) 
@@ -356,12 +403,15 @@ private SliceProfile createSliceProfile(String domainType, DelegateExecution exe
                JsonArray connectionLinksList = new JsonArray()
                JsonObject connectionLinks = new JsonObject()
                Gson jsonConverter = new Gson()
+               String TNFH_nssiInstanceId = UUID.randomUUID().toString()
+                String TNMH_nssiInstanceId = UUID.randomUUID().toString()
+
                if(action.equals("allocate")){
                        JsonObject endpoints = new JsonObject()
                        if(domainType.equals("TN_FH")) {
                                serviceInfo.addProperty("serviceInvariantUuid", execution.getVariable("TNFH_modelInvariantUuid"))
                                serviceInfo.addProperty("serviceUuid", execution.getVariable("TNFH_modelUuid"))
-                               serviceInfo.addProperty("nssiName", "nssi_"+execution.getVariable("TNFH_modelName"))
+                               serviceInfo.addProperty("nssiName", "nssi_tn_fh_"+TNFH_nssiInstanceId)
                                serviceInfo.addProperty("sst",  execution.getVariable("sst"))
                                allocateTnNssi.addProperty("nsstId", execution.getVariable("TNFH_modelUuid"))
                                allocateTnNssi.addProperty("nssiName", execution.getVariable("TNFH_modelName"))
@@ -374,7 +424,7 @@ private SliceProfile createSliceProfile(String domainType, DelegateExecution exe
                        }else if(domainType.equals("TN_MH")) {
                                serviceInfo.addProperty("serviceInvariantUuid", execution.getVariable("TNMH_modelInvariantUuid"))
                                serviceInfo.addProperty("serviceUuid", execution.getVariable("TNMH_modelUuid"))
-                               serviceInfo.addProperty("nssiName", "nssi_"+execution.getVariable("TNMH_modelName"))
+                               serviceInfo.addProperty("nssiName", "nssi_tn_mh_"+TNMH_nssiInstanceId)
                                serviceInfo.addProperty("sst",  execution.getVariable("sst"))
                                allocateTnNssi.addProperty("nsstId", execution.getVariable("TNMH_modelUuid"))
                                allocateTnNssi.addProperty("nssiName", execution.getVariable("TNMH_modelName"))
@@ -435,15 +485,15 @@ private SliceProfile createSliceProfile(String domainType, DelegateExecution exe
        public String buildDeallocateNssiRequest(DelegateExecution execution,String domainType) {
                String globalSubscriberId = execution.getVariable("globalSubscriberId")
                String subscriptionServiceType = execution.getVariable("subscriptionServiceType")
+
+                List<String> sNssaiList =  execution.getVariable("snssaiList") as List<String>
+
+               DeAllocateNssi deallocateNssi = new DeAllocateNssi()
+               deallocateNssi.setNsiId(execution.getVariable("nsiId") as String)
+               deallocateNssi.setScriptName("TN1")
+               deallocateNssi.setSnssaiList(sNssaiList)
+                deallocateNssi.setTerminateNssiOption(0)
           
-               JsonObject deAllocateNssi = new JsonObject()
-               deAllocateNssi.addProperty("snssaiList", execution.getVariable("snssaiList"))
-               deAllocateNssi.addProperty("nsiId", execution.getVariable("nsiId"))
-               deAllocateNssi.addProperty("modifyAction", true)
-               deAllocateNssi.addProperty("terminateNssiOption", 0)
-               deAllocateNssi.addProperty("scriptName", "TN1")
-               
-               
                JsonObject esrInfo = new JsonObject()
                esrInfo.addProperty("networkType", "tn")
                esrInfo.addProperty("vendor", "ONAP_internal")
@@ -451,19 +501,21 @@ private SliceProfile createSliceProfile(String domainType, DelegateExecution exe
                JsonObject serviceInfo = new JsonObject()
                serviceInfo.addProperty("globalSubscriberId", globalSubscriberId)
                serviceInfo.addProperty("subscriptionServiceType", subscriptionServiceType)
-               
+                       serviceInfo.addProperty("modifyAction", true)
+
                 if(domainType.equals("TN_FH")) {
-                        deAllocateNssi.addProperty("nssiId", execution.getVariable("TNFH_NSSI"))
-                        serviceInfo.addProperty("nssiId", execution.getVariable("TNFH_NSSI"))
-                        deAllocateNssi.addProperty("sliceProfileId", execution.getVariable("TNFH_sliceProfileInstanceId"))
+                       deallocateNssi.setNssiId(execution.getVariable("TNFH_NSSI") as String)
+                       deallocateNssi.setSliceProfileId(execution.getVariable("TNFH_sliceProfileInstanceId") as String)
+                        serviceInfo.addProperty("nssiId", execution.getVariable("TNFH_NSSI") as String)
                 }else if(domainType.equals("TN_MH")) {
-                        deAllocateNssi.addProperty("nssiId", execution.getVariable("TNMH_NSSI"))
-                        serviceInfo.addProperty("nssiId", execution.getVariable("TNMH_NSSI"))
-                        deAllocateNssi.addProperty("sliceProfileId", execution.getVariable("TNMH_sliceProfileInstanceId"))
+                       deallocateNssi.setNssiId(execution.getVariable("TNMH_NSSI") as String)
+                       deallocateNssi.setSliceProfileId(execution.getVariable("TNMH_sliceProfileInstanceId") as String)
+                        serviceInfo.addProperty("nssiId", execution.getVariable("TNMH_NSSI") as String)
                 }
 
                JsonObject json = new JsonObject()
-               json.add("deAllocateNssi", deAllocateNssi)
+                Gson jsonConverter = new Gson()
+                json.add("deAllocateNssi", jsonConverter.toJsonTree(deallocateNssi))
                json.add("esrInfo", esrInfo)
                json.add("serviceInfo", serviceInfo)
                return json.toString()