Fix issues in AN NSSMF for allocate &modify flow 91/120491/5
authordeepikasatheesh <deepika.s84@wipro.com>
Tue, 13 Apr 2021 15:12:08 +0000 (15:12 +0000)
committerDeepika S <deepika.s84@wipro.com>
Mon, 5 Jul 2021 06:10:54 +0000 (06:10 +0000)
Issue-ID: SO-3624

Signed-off-by: deepikasatheesh <deepika.s84@wipro.com>
Change-Id: Iaeca92aee45a2e0e920c12b0ed407b9fd5514f09

bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/AnNssmfutils.groovy
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateAccessNSSI.groovy
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoModifyAccessNSSI.groovy
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoModifyRanNfNssi.groovy
bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/AllocateSliceSubnet.bpmn
bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoAllocateAccessNSSI.bpmn
bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoModifyAccessNSSI.bpmn

index 2c1fa64..540358f 100644 (file)
@@ -176,9 +176,9 @@ public void createSliceProfilesInAai(DelegateExecution execution) {
        org.onap.aai.domain.yang.SliceProfile ANNF_SliceProfile = new SliceProfile()
        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)
+       ANNF_SliceProfile = createSliceProfile("AN_NF", 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)
@@ -194,13 +194,13 @@ public void createSliceProfilesInAai(DelegateExecution execution) {
        String serviceStatus = "deactivated"
        ANNF_sliceProfileInstance.setOrchestrationStatus(serviceStatus)
        String serviceInstanceLocationid = jsonUtil.getJsonValue(execution.getVariable("ranNfSliceProfile"), "plmnIdList")
-       ANNF_sliceProfileInstance.setServiceInstanceLocationId(serviceInstanceLocationid)
+        ANNF_sliceProfileInstance.setServiceInstanceLocationId(jsonUtil.StringArrayToList(serviceInstanceLocationid).get(0))
        String serviceRole = "slice-profile-instance"
        ANNF_sliceProfileInstance.setServiceRole(serviceRole)
         ArrayList<String> snssaiList = execution.getVariable("snssaiList")
        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)
@@ -214,10 +214,10 @@ public void createSliceProfilesInAai(DelegateExecution execution) {
        TNFH_sliceProfileInstance.setServiceType(serviceType)
        TNFH_sliceProfileInstance.setOrchestrationStatus(serviceStatus)
        serviceInstanceLocationid = jsonUtil.getJsonValue(execution.getVariable("tnFhSliceProfile"), "plmnIdList")
-       TNFH_sliceProfileInstance.setServiceInstanceLocationId(serviceInstanceLocationid)
+        TNFH_sliceProfileInstance.setServiceInstanceLocationId(jsonUtil.StringArrayToList(serviceInstanceLocationid).get(0))
        TNFH_sliceProfileInstance.setServiceRole(serviceRole)
        TNFH_sliceProfileInstance.setEnvironmentContext(snssai)
-       TNFH_sliceProfileInstance.setWorkloadContext("TN-FH")
+       TNFH_sliceProfileInstance.setWorkloadContext("TN_FH")
        TNFH_sliceProfileInstance.setSliceProfiles(TNFH_SliceProfiles)
        String serviceFunctionTnFH = jsonUtil.getJsonValue(execution.getVariable("tnFhSliceProfile"), "resourceSharingLevel")
        TNFH_sliceProfileInstance.setServiceFunction(serviceFunctionTnFH)
@@ -231,10 +231,10 @@ public void createSliceProfilesInAai(DelegateExecution execution) {
        TNMH_sliceProfileInstance.setServiceType(serviceType)
        TNMH_sliceProfileInstance.setOrchestrationStatus(serviceStatus)
        serviceInstanceLocationid = jsonUtil.getJsonValue(execution.getVariable("tnMhSliceProfile"), "plmnIdList")
-       TNMH_sliceProfileInstance.setServiceInstanceLocationId(serviceInstanceLocationid)
+        TNMH_sliceProfileInstance.setServiceInstanceLocationId(jsonUtil.StringArrayToList(serviceInstanceLocationid).get(0))
        TNMH_sliceProfileInstance.setServiceRole(serviceRole)
        TNMH_sliceProfileInstance.setEnvironmentContext(snssai)
-       TNMH_sliceProfileInstance.setWorkloadContext("TN-MH")
+       TNMH_sliceProfileInstance.setWorkloadContext("TN_MH")
        TNMH_sliceProfileInstance.setSliceProfiles(TNMH_SliceProfiles)
        String serviceFunctionTnMH = jsonUtil.getJsonValue(execution.getVariable("tnMhSliceProfile"), "resourceSharingLevel")
        TNMH_sliceProfileInstance.setServiceFunction(serviceFunctionTnMH)
@@ -267,7 +267,7 @@ private SliceProfile createSliceProfile(String domainType, DelegateExecution exe
        SliceProfile result = new SliceProfile()
        Map<String,Object> profile
        switch(domainType) {
-               case "AN-NF":
+               case "AN_NF":
                        profile = objectMapper.readValue(execution.getVariable("ranNfSliceProfile"), Map.class)//pending fields - cSReliabilityMeanTime, cSAvailabilityTarget, terminalDensity, msgSizeByte
                        result.setJitter(profile.get("jitter"))
                        result.setLatency(profile.get("latency"))
@@ -288,7 +288,7 @@ private SliceProfile createSliceProfile(String domainType, DelegateExecution exe
                        result.setExpDataRate(profile.get("expDataRate"))
                        result.setProfileId(execution.getVariable("ANNF_sliceProfileId"))
                        break
-               case "TN-FH":
+               case "TN_FH":
                        profile = objectMapper.readValue(execution.getVariable("tnFhSliceProfile"), Map.class) 
                        result.setJitter(profile.get("jitter"))
                        result.setLatency(profile.get("latency"))
@@ -296,7 +296,7 @@ private SliceProfile createSliceProfile(String domainType, DelegateExecution exe
                        result.setResourceSharingLevel(profile.get("resourceSharingLevel"))
                        result.setProfileId(execution.getVariable("TNFH_sliceProfileId"))
                        break
-               case "TN-MH":
+               case "TN_MH":
                        profile = objectMapper.readValue(execution.getVariable("tnMhSliceProfile"), Map.class)
                        result.setJitter(profile.get("jitter"))
                        result.setLatency(profile.get("latency"))
@@ -361,7 +361,8 @@ private SliceProfile createSliceProfile(String domainType, DelegateExecution exe
                        if(domainType.equals("TN_FH")) {
                                serviceInfo.addProperty("serviceInvariantUuid", execution.getVariable("TNFH_modelInvariantUuid"))
                                serviceInfo.addProperty("serviceUuid", execution.getVariable("TNFH_modelUuid"))
-                               serviceInfo.addProperty("nssiName", execution.getVariable("TNFH_modelName"))
+                               serviceInfo.addProperty("nssiName", "nssi_"+execution.getVariable("TNFH_modelName"))
+                               serviceInfo.addProperty("sst",  execution.getVariable("sst"))
                                allocateTnNssi.addProperty("nsstId", execution.getVariable("TNFH_modelUuid"))
                                allocateTnNssi.addProperty("nssiName", execution.getVariable("TNFH_modelName"))
                                Map<String,Object> sliceProfile = objectMapper.readValue(execution.getVariable("tnFhSliceProfile"), Map.class)
@@ -373,7 +374,8 @@ 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", execution.getVariable("TNMH_modelName"))
+                               serviceInfo.addProperty("nssiName", "nssi_"+execution.getVariable("TNMH_modelName"))
+                               serviceInfo.addProperty("sst",  execution.getVariable("sst"))
                                allocateTnNssi.addProperty("nsstId", execution.getVariable("TNMH_modelUuid"))
                                allocateTnNssi.addProperty("nssiName", execution.getVariable("TNMH_modelName"))
                                Map<String,Object> sliceProfile = objectMapper.readValue(execution.getVariable("tnMhSliceProfile"), Map.class)
@@ -383,26 +385,40 @@ private SliceProfile createSliceProfile(String domainType, DelegateExecution exe
                                endpoints.addProperty("transportEndpointB", execution.getVariable("tranportEp_ID_CUIN"))
                                connectionLinksList.add(endpoints)
                        }
-                       
-                       //Connection links
-                       connectionLinks.add("connectionLinks", connectionLinksList)
-                       transportSliceNetworksList.add(connectionLinks)
-                       allocateTnNssi.add("transportSliceNetworks", transportSliceNetworksList)
                }else if(action.equals("modify-allocate")) {
+                        JsonObject endpoints = new JsonObject()
                        if(domainType.equals("TN_FH")) {
                                allocateTnNssi.addProperty("nssiName", execution.getVariable("TNFH_nssiName"))
                                allocateTnNssi.addProperty("sliceProfileId", execution.getVariable("TNFH_sliceProfileInstanceId"))
                                allocateTnNssi.addProperty("nssiId", execution.getVariable("TNFH_NSSI"))
                                serviceInfo.addProperty("nssiId", execution.getVariable("TNFH_NSSI"))
                                 serviceInfo.addProperty("nssiName", execution.getVariable("TNFH_nssiName"))
+                                Map<String,Object> sliceProfile = objectMapper.readValue(execution.getVariable("tnFhSliceProfile"), Map.class)
+                                sliceProfile.put("sliceProfileId", execution.getVariable("TNFH_sliceProfileInstanceId"))
+                                allocateTnNssi.add("sliceProfile", jsonConverter.toJsonTree(sliceProfile))
+                                endpoints.addProperty("transportEndpointA", execution.getVariable("tranportEp_ID_RU"))
+                                endpoints.addProperty("transportEndpointB", execution.getVariable("tranportEp_ID_DUIN"))
+                                connectionLinksList.add(endpoints)
                        }else if(domainType.equals("TN_MH")) {
                                allocateTnNssi.addProperty("nssiName", execution.getVariable("TNMH_nssiName"))
                                allocateTnNssi.addProperty("sliceProfileId", execution.getVariable("TNMH_sliceProfileInstanceId"))
                                allocateTnNssi.addProperty("nssiId", execution.getVariable("TNMH_NSSI"))
                                serviceInfo.addProperty("nssiId", execution.getVariable("TNMH_NSSI"))
                                 serviceInfo.addProperty("nssiName", execution.getVariable("TNMH_nssiName"))
+                                Map<String,Object> sliceProfile = objectMapper.readValue(execution.getVariable("tnMhSliceProfile"), Map.class)
+                                sliceProfile.put("sliceProfileId", execution.getVariable("TNMH_sliceProfileInstanceId"))
+                                allocateTnNssi.add("sliceProfile", jsonConverter.toJsonTree(sliceProfile))
+                                endpoints.addProperty("transportEndpointA", execution.getVariable("tranportEp_ID_DUEG"))
+                                endpoints.addProperty("transportEndpointB", execution.getVariable("tranportEp_ID_CUIN"))
+                                connectionLinksList.add(endpoints)
                        }
                }
+
+                //Connection links
+                connectionLinks.add("connectionLinks", connectionLinksList)
+                transportSliceNetworksList.add(connectionLinks)
+                allocateTnNssi.add("transportSliceNetworks", transportSliceNetworksList)
+
                JsonParser parser = new JsonParser()
                String nsiInfo = jsonUtil.getJsonValue(execution.getVariable("sliceParams"), "nsiInfo")
                allocateTnNssi.add("nsiInfo",(JsonObject) parser.parse(nsiInfo))
index 567c703..f3fca05 100644 (file)
@@ -53,6 +53,7 @@ import org.onap.aaiclient.client.aai.AAINamespaceConstants
 import org.onap.aaiclient.client.aai.AAIObjectType
 import org.onap.aai.domain.yang.NetworkPolicy
 import org.onap.aai.domain.yang.NetworkRoute
+import org.json.JSONArray
 
 class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor {
 
@@ -85,7 +86,8 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor {
                                        " subscriptionServiceType - "+execution.getVariable("subscriptionServiceType")+
                                        " jobId - "+execution.getVariable("jobId")+
                                        " sliceParams - "+execution.getVariable("sliceParams")+
-                                       " servicename - "+ execution.getVariable("servicename"))
+                                       " servicename - "+ execution.getVariable("servicename")+
+                                        " sst - "+ execution.getVariable("sst"))
 
                        //validate slice subnet inputs
 
@@ -101,7 +103,14 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor {
                        String sliceProfileId = jsonUtil.getJsonValue(sliceProfile, "sliceProfileId")
                        def snssaiList = jsonUtil.StringArrayToList(jsonUtil.getJsonValue(sliceProfile, "snssaiList"))
                        def plmnIdList = jsonUtil.StringArrayToList(jsonUtil.getJsonValue(sliceProfile, "plmnIdList"))
-                       def coverageAreaTAList = jsonUtil.StringArrayToList(jsonUtil.getJsonValue(sliceProfile, "coverageAreaTAList"))
+                        String jsonArray = jsonUtil.getJsonValue(sliceProfile, "coverageAreaTAList")
+                        List<Integer> list = new ArrayList<>();
+                        JSONArray arr = new JSONArray(jsonArray);
+                        for (int i = 0; i < arr.length(); i++) {
+                                 int s = (int) arr.get(i);
+                                 list.add(s);
+                        }
+                        def coverageAreaTAList = list;
 
                        if (isBlank(sliceProfileId) || (snssaiList.empty) || (plmnIdList.empty)
                        || (coverageAreaTAList.empty)) {
@@ -131,16 +140,16 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor {
                        execution.setVariable("job_timeout", 10)
                        
                        //set BH end point
-                       List<String> BH_endPoints = jsonUtil.StringArrayToList(jsonUtil.getJsonValue(sliceParams, "endPoints"))
-                       logger.debug("BH end points list : "+BH_endPoints)
-                       if(BH_endPoints.empty) {
-                               msg = "End point info is empty"
-                               logger.debug(msg)
-                               exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
-                       }else {
-                               execution.setVariable("bh_endpoint", BH_endPoints.get(0))
-                       }
-                       
+                       def BH_endPoints = jsonUtil.getJsonValue(sliceParams, "endPoint")
+                        logger.debug("BH end points list : "+BH_endPoints)
+                        if(isBlank(BH_endPoints)) {
+                                msg = "End point info is empty"
+                                logger.debug(msg)
+                                exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+                        }else {
+                                execution.setVariable("bh_endpoint", BH_endPoints)
+                        }
+
                } catch(BpmnError e) {
                        throw e
                } catch(Exception ex) {
@@ -261,6 +270,7 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor {
                String requestId = execution.getVariable("msoRequestId")
                String messageType = "NSISelectionResponse"
                Map<String, Object> profileInfo = objectMapper.readValue(execution.getVariable("sliceProfile"), Map.class)
+                profileInfo.put("sST",execution.getVariable("sst"))
                String modelUuid = execution.getVariable("modelUuid")
                String modelInvariantUuid = execution.getVariable("modelInvariantUuid")
                String modelName = execution.getVariable("ranModelName")
@@ -377,8 +387,7 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor {
                serviceInfo.addProperty("nssiId", execution.getVariable("RANServiceInstanceId"))
                serviceInfo.addProperty("nsiId", execution.getVariable("nsiId"))
                serviceInfo.addProperty("nssiName", execution.getVariable("servicename"))
-               String sST = jsonUtil.getJsonValue(execution.getVariable("sliceProfile"), "sST")
-               serviceInfo.addProperty("sST", sST)
+                serviceInfo.addProperty("sST", execution.getVariable("sst"))
                serviceInfo.addProperty("PLMNIdList", objectMapper.writeValueAsString(execution.getVariable("plmnIdList")))
                serviceInfo.addProperty("globalSubscriberId", execution.getVariable("globalSubscriberId"))
                serviceInfo.addProperty("subscriptionServiceType", execution.getVariable("subscriptionServiceType"))
@@ -475,6 +484,7 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor {
                List<String> ranConstituentSliceProfiles = jsonUtil.StringArrayToList(execution.getVariable("RanConstituentSliceProfiles"))
                anNssmfUtils.createDomainWiseSliceProfiles(ranConstituentSliceProfiles, execution)
                Map<String, Object> profileInfo = objectMapper.readValue(execution.getVariable("ranNfSliceProfile"), Map.class)
+               profileInfo.put("sST",execution.getVariable("sst"))
                String modelUuid = execution.getVariable("ANNF_modelUuid")
                String modelInvariantUuid = execution.getVariable("ANNF_modelInvariantUuid")
                String modelName = execution.getVariable("ANNF_modelName")
@@ -518,6 +528,7 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor {
                                ServiceDecomposition serviceDecomposition = execution.getVariable("ANNF_ServiceDecomposition")
                                serviceDecomposition.setServiceInstance(serviceInstance);
                                execution.setVariable("ANNF_ServiceDecomposition", serviceDecomposition)
+                                execution.setVariable("modifyAction","allocate")
                                execution.setVariable("isRspRanNfNssi", true)
                        }else {
                                logger.debug("No solutions returned from OOF .. Create new RAN NF NSSI")
@@ -544,17 +555,18 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor {
                String sliceInstanceName = execution.getVariable("servicename")
                ANServiceInstance.setServiceInstanceName(sliceInstanceName)
                String serviceType = jsonUtil.getJsonValue(execution.getVariable("sliceProfile"), "sST")
-               ANServiceInstance.setServiceType(serviceType)
+                ANServiceInstance.setServiceType(execution.getVariable("sst"))
                String serviceStatus = "deactivated"
                ANServiceInstance.setOrchestrationStatus(serviceStatus)
                String serviceInstanceLocationid = jsonUtil.getJsonValue(execution.getVariable("sliceProfile"), "plmnIdList")
-               ANServiceInstance.setServiceInstanceLocationId(serviceInstanceLocationid)
+                ANServiceInstance.setServiceInstanceLocationId(jsonUtil.StringArrayToList(serviceInstanceLocationid).get(0))
                String serviceRole = "nssi"
                ANServiceInstance.setServiceRole(serviceRole)
-               List<String> snssaiList = objectMapper.readValue(execution.getVariable("snssaiList"), List.class)
+                List<String> snssaiList = execution.getVariable("snssaiList")
                String snssai = snssaiList.get(0)
-               ANServiceInstance.setEnvironmentContext(snssai)
-               ANServiceInstance.setWorkloadContext("AN")
+               //ANServiceInstance.setEnvironmentContext(snssai)
+                ANServiceInstance.setEnvironmentContext("an") //Network Type
+               ANServiceInstance.setWorkloadContext("AN") //domain Type
                
                logger.debug("completed AN service instance build "+ ANServiceInstance.toString())
                String msg = ""
@@ -610,7 +622,7 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor {
                String sliceInstanceName = execution.getVariable("servicename")
                ANServiceInstance.setServiceInstanceName(sliceInstanceName)
                String serviceType = jsonUtil.getJsonValue(execution.getVariable("sliceProfile"), "sST")
-               ANServiceInstance.setServiceType(serviceType)
+                ANServiceInstance.setServiceType(execution.getVariable("sst"))
                String serviceStatus = "deactivated"
                ANServiceInstance.setOrchestrationStatus(serviceStatus)
                String serviceInstanceLocationid = jsonUtil.getJsonValue(execution.getVariable("sliceProfile"), "plmnIdList")
@@ -630,19 +642,19 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor {
                logger.debug("completed AN service instance build "+ ANServiceInstance.toString())
                //create RAN NF NSSI
                ANNFServiceInstance.setServiceInstanceId(execution.getVariable("RANNFServiceInstanceId"))
-               sliceInstanceName = execution.getVariable("ANNF_modelName")
+               sliceInstanceName = "nssi_"+execution.getVariable("ANNF_modelName")
                ANNFServiceInstance.setServiceInstanceName(sliceInstanceName)
-               ANNFServiceInstance.setServiceType(serviceType)
+               ANNFServiceInstance.setServiceType(execution.getVariable("sst"))
                ANNFServiceInstance.setOrchestrationStatus(serviceStatus)
                serviceInstanceLocationid = jsonUtil.getJsonValue(execution.getVariable("ranNfSliceProfile"), "plmnIdList")
-               ANNFServiceInstance.setServiceInstanceLocationId(serviceInstanceLocationid)
+                ANNFServiceInstance.setServiceInstanceLocationId(jsonUtil.StringArrayToList(serviceInstanceLocationid).get(0))
                ANNFServiceInstance.setServiceRole(serviceRole)
                snssaiList = execution.getVariable("snssaiList")
                snssai = snssaiList.get(0)
                ANNFServiceInstance.setEnvironmentContext(snssai)
                 ANNFServiceInstance.setModelInvariantId(execution.getVariable("ANNF_modelInvariantUuid"))
                 ANNFServiceInstance.setModelVersionId(execution.getVariable("ANNF_modelUuid"))
-               ANNFServiceInstance.setWorkloadContext("AN-NF")
+               ANNFServiceInstance.setWorkloadContext("AN_NF")
                String serviceFunctionAnnf = jsonUtil.getJsonValue(execution.getVariable("ranNfSliceProfile"), "resourceSharingLevel")
                ANNFServiceInstance.setServiceFunction(serviceFunctionAnnf)
                logger.debug("completed AN service instance build "+ ANNFServiceInstance.toString())
@@ -720,8 +732,7 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor {
                execution.setVariable("esrInfo", esrInfo.toString())
                JsonObject serviceInfo = new JsonObject()
                serviceInfo.addProperty("nsiId", execution.getVariable("nsiId"))
-               String sST = jsonUtil.getJsonValue(execution.getVariable("sliceProfile"), "sST")
-               serviceInfo.addProperty("sST", sST)
+                serviceInfo.addProperty("sST", execution.getVariable("sst"))
                serviceInfo.addProperty("PLMNIdList", objectMapper.writeValueAsString(execution.getVariable("plmnIdList")))
                serviceInfo.addProperty("globalSubscriberId", execution.getVariable("globalSubscriberId"))
                serviceInfo.addProperty("subscriptionServiceType", execution.getVariable("subscriptionServiceType"))
@@ -902,7 +913,7 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor {
                String requestId = execution.getVariable("msoRequestId")
                Map<String,Object> sliceProfile = objectMapper.readValue(execution.getVariable("ranNfSliceProfile"), Map.class)
                sliceProfile.put("sliceProfileId", execution.getVariable("ANNF_sliceProfileInstanceId"))
-               sliceProfile.put("maxNumberofConns", sliceProfile.get("maxNumberofPDUSessions"))
+               sliceProfile.put("maxNumberofConns", sliceProfile.get("maxNumberofPDUSession"))
                sliceProfile.put("uLThptPerSlice", sliceProfile.get("expDataRateUL"))
                sliceProfile.put("dLThptPerSlice", sliceProfile.get("expDataRateDL"))
 
@@ -912,11 +923,11 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor {
                JsonObject commonHeader = new JsonObject()
                JsonObject payload = new JsonObject()
                JsonObject payloadInput = new JsonObject()
-               commonHeader.addProperty("TimeStamp",new Date(System.currentTimeMillis()).format("yyyy-MM-dd'T'HH:mm:ss.sss'Z'", TimeZone.getDefault()))
+               commonHeader.addProperty("timeStamp",new Date(System.currentTimeMillis()).format("yyyy-MM-dd'T'HH:mm:ss.sss'Z'", TimeZone.getDefault()))
                commonHeader.addProperty("api-ver", "1.0")
+                commonHeader.addProperty("originator-id", "testing")
                commonHeader.addProperty("request-id", requestId)
                commonHeader.addProperty("sub-request-id", "1")
-               commonHeader.add("request-track", new JsonObject())
                commonHeader.add("flags", new JsonObject())
                Gson jsonConverter = new Gson() 
                payloadInput.add("sliceProfile", jsonConverter.toJsonTree(sliceProfile))
@@ -924,6 +935,8 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor {
                payloadInput.addProperty("NSIID", execution.getVariable("nsiId"))
                payloadInput.addProperty("RANNFNSSIId", execution.getVariable("RANNFServiceInstanceId"))
                payloadInput.addProperty("callbackURL", callbackUrl)
+                payloadInput.addProperty("globalSubscriberId", execution.getVariable("globalSubscriberId"))
+               payloadInput.addProperty("subscriptionServiceType", execution.getVariable("subscriptionServiceType"))
                payloadInput.add("additionalproperties", new JsonObject())
                payload.add("input", payloadInput)
                input.add("common-header", commonHeader)
@@ -948,8 +961,8 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor {
                String bh_routeId = UUID.randomUUID().toString()
                execution.setVariable("tranportEp_ID_bh", bh_routeId)
                String role = "CU"
-               String CU_IpAddress = jsonUtil.getJsonValue(bh_endpoint, "IpAddress")
-               String LogicalLinkId = jsonUtil.getJsonValue(bh_endpoint, "LogicalLinkId")
+                String CU_IpAddress = jsonUtil.getJsonValue(bh_endpoint, "ipAddress")
+                String LogicalLinkId = jsonUtil.getJsonValue(bh_endpoint, "logicInterfaceId")
                String nextHopInfo = jsonUtil.getJsonValue(bh_endpoint, "nextHopInfo")
                NetworkRoute bh_ep = new NetworkRoute()
                bh_ep.setRouteId(bh_routeId)
index 8695946..8859af2 100644 (file)
@@ -28,6 +28,8 @@ import org.onap.so.bpmn.common.scripts.NssmfAdapterUtils
 import org.onap.so.bpmn.common.scripts.OofUtils
 import org.onap.so.bpmn.common.scripts.RequestDBUtil
 import org.onap.so.bpmn.core.json.JsonUtils
+import org.onap.so.beans.nsmf.PerfReqEmbb
+import org.onap.so.beans.nsmf.PerfReq
 import org.onap.so.db.request.beans.ResourceOperationStatus
 import org.slf4j.Logger
 import org.slf4j.LoggerFactory
@@ -47,6 +49,9 @@ import org.onap.aai.domain.yang.Relationship
 import org.onap.aai.domain.yang.ServiceInstance
 import org.onap.aai.domain.yang.SliceProfile
 import org.onap.aai.domain.yang.SliceProfiles
+import org.onap.aai.domain.yang.AllottedResource
+import org.onap.aai.domain.yang.AllottedResources
+import org.onap.aaiclient.client.graphinventory.entities.uri.Depth
 import org.onap.aaiclient.client.aai.entities.uri.AAISimplePluralUri
 import com.fasterxml.jackson.annotation.JsonInclude
 import com.fasterxml.jackson.databind.SerializationFeature
@@ -231,8 +236,28 @@ class DoModifyAccessNSSI extends AbstractServiceTaskProcessor {
                Map<String, Object> profileInfo = objectMapper.readValue(execution.getVariable("RANSliceProfile"), Map.class)
                 ServiceInstance ranSliceProfileInstance = execution.getVariable("ranSliceProfileInstance")
                 profileInfo.put("sST",ranSliceProfileInstance.getServiceType())
-                profileInfo.put("snssaiList",ranSliceProfileInstance.getEnvironmentContext())
-                profileInfo.put("plmnIdList",ranSliceProfileInstance.getServiceInstanceLocationId())
+                profileInfo.put("snssaiList",execution.getVariable("snssaiList"))
+                profileInfo.put("plmnIdList",Arrays.asList(ranSliceProfileInstance.getServiceInstanceLocationId()))
+                profileInfo.put("uEMobilityLevel",profileInfo.get("ueMobilityLevel"))
+                profileInfo.put("cSAvailabilityTarget",profileInfo.get("csAvailabilityTarget"))
+                profileInfo.put("maxNumberofPDUSession",profileInfo.get("maxNumberOfPDUSession"))
+                profileInfo.put("maxNumberofUEs",profileInfo.get("maxNumberOfUEs"))
+
+                PerfReq perfReq = new PerfReq();
+                List<PerfReqEmbb> perfReqEmbbs = new ArrayList<>();
+                PerfReqEmbb perfReqEmbb = new PerfReqEmbb();
+                perfReqEmbb.setExpDataRateDL(profileInfo.get("expDataRateDL"));
+                perfReqEmbb.setExpDataRateUL(profileInfo.get("expDataRateUL"));
+                perfReqEmbbs.add(perfReqEmbb);
+                perfReq.setPerfReqEmbbList(perfReqEmbbs);
+                profileInfo.put("perfReq",perfReq)
+
+                profileInfo.remove("maxNumberOfUEs")
+                profileInfo.remove("resourceVersion")
+                profileInfo.remove("csAvailabilityTarget")
+                profileInfo.remove("ueMobilityLevel")
+                profileInfo.remove("maxNumberOfPDUSession")
+                profileInfo.remove("profileId")
                 String modelUuid = ranSliceProfileInstance.getModelVersionId()
                 String modelInvariantUuid = ranSliceProfileInstance.getModelInvariantId()
                String modelName = execution.getVariable("servicename")
@@ -308,23 +333,25 @@ class DoModifyAccessNSSI extends AbstractServiceTaskProcessor {
                logger.debug("getNssisFromAai ranConstituentNssis : "+ranConstituentNssis.toString())
                ranConstituentNssis.each { key, val -> 
                        switch(key) {
-                               case "AN-NF":
+                               case "AN_NF":
                                        execution.setVariable("ANNF_NSSI", val.getServiceInstanceId())
                                        execution.setVariable("ANNF_nssiName", val.getServiceInstanceName())
                                         execution.setVariable("ANNF_modelInvariantUuid", val.getModelInvariantId())
                                        execution.setVariable("ANNF_modelUuid", val.getModelVersionId())
                                        break
-                               case "TN-FH":
+                               case "TN_FH":
                                        execution.setVariable("TNFH_NSSI", val.getServiceInstanceId())
                                        execution.setVariable("TNFH_nssiName", val.getServiceInstanceName())
                                         execution.setVariable("TNFH_modelInvariantUuid", val.getModelInvariantId())
                                        execution.setVariable("TNFH_modelUuid", val.getModelVersionId())
+                                        getConnectionLinks(execution, key, val)
                                        break
-                               case "TN-MH":
+                               case "TN_MH":
                                        execution.setVariable("TNMH_NSSI", val.getServiceInstanceId())
                                        execution.setVariable("TNMH_nssiName", val.getServiceInstanceName())
                                         execution.setVariable("TNMH_modelInvariantUuid", val.getModelInvariantId())
                                        execution.setVariable("TNMH_modelUuid", val.getModelVersionId())
+                                        getConnectionLinks(execution, key, val)
                                        break
                                default:
                                        logger.error("No expected match found for current domainType "+ key)
@@ -333,6 +360,50 @@ class DoModifyAccessNSSI extends AbstractServiceTaskProcessor {
                }
                
        }
+
+        private void getConnectionLinks(DelegateExecution execution, String domainType, ServiceInstance instance) {
+                AllottedResources allottedResources = instance.getAllottedResources()
+                               if(allottedResources == null) {
+                               String msg = "AllottedResourceFromAAI doesn't exist. " + instance
+                logger.debug(msg)
+                exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+                               }
+
+                List<AllottedResource> AllottedResourceList = allottedResources.getAllottedResource()
+                for(AllottedResource allottedResource : AllottedResourceList) {
+                List<Relationship> relationshipList = allottedResource.getRelationshipList().getRelationship()
+                    for (Relationship relationship : relationshipList) {
+                        String relatedTo = relationship.getRelatedTo()
+                        if (relatedTo.toLowerCase() == "logical-link") {
+                                String relatioshipurl = relationship.getRelatedLink()
+                                String logicalLinkId=
+                                                relatioshipurl.substring(relatioshipurl.lastIndexOf("/") + 1, relatioshipurl.length())
+                                AAIResourcesClient client = new AAIResourcesClient()
+                                AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().logicalLink(logicalLinkId))
+                                if (!client.exists(uri)) {
+                                        exceptionUtil.buildAndThrowWorkflowException(execution, 2500,
+                                                        "Resource was not found in aai: ${logicalLinkId}")
+                                }
+                                AAIResultWrapper wrapper01 = client.get(uri, NotFoundException.class)
+                                Optional<org.onap.aai.domain.yang.LogicalLink> resource = wrapper01.asBean(org.onap.aai.domain.yang.LogicalLink.class)
+                                if (resource.isPresent()) {
+                                        org.onap.aai.domain.yang.LogicalLink logicalLinkInstance = resource.get()
+                                        if(domainType.equalsIgnoreCase("TN-FH"))
+                                        {
+                                        execution.setVariable("tranportEp_ID_RU",logicalLinkInstance.getLinkName())
+                                        execution.setVariable("tranportEp_ID_DUIN",logicalLinkInstance.getLinkName2())
+                                        }
+                                        else if(domainType.equalsIgnoreCase("TN-MH"))
+                                        {
+                                        execution.setVariable("tranportEp_ID_DUEG",logicalLinkInstance.getLinkName())
+                                        execution.setVariable("tranportEp_ID_CUIN",logicalLinkInstance.getLinkName2())
+                                        }
+                                }
+                        }
+                    }
+                }
+        }
+
        def createSliceProfiles = { DelegateExecution execution ->
                logger.debug(Prefix+"createSliceProfiles method start")
                anNssmfUtils.createSliceProfilesInAai(execution)
@@ -446,8 +517,6 @@ class DoModifyAccessNSSI extends AbstractServiceTaskProcessor {
                JsonObject serviceInfo = new JsonObject()
                
                serviceInfo.addProperty("nsiId", execution.getVariable("nsiId"))
-               String sST = jsonUtil.getJsonValue(execution.getVariable("sliceProfile"), "sST")
-               serviceInfo.addProperty("sST", sST)
                serviceInfo.addProperty("PLMNIdList", objectMapper.writeValueAsString(execution.getVariable("plmnIdList")))
                serviceInfo.addProperty("globalSubscriberId", execution.getVariable("globalSubscriberId"))
                serviceInfo.addProperty("subscriptionServiceType", execution.getVariable("subscriptionServiceType"))
@@ -506,13 +575,13 @@ class DoModifyAccessNSSI extends AbstractServiceTaskProcessor {
                logger.debug("getSliceProfilesFromAai ranConstituentSliceProfiles : "+ranConstituentSliceProfiles.toString())
                ranConstituentSliceProfiles.each { key, val ->
                        switch(key) {
-                               case "AN-NF":
+                               case "AN_NF":
                                        execution.setVariable("ANNF_sliceProfileInstanceId", val.getServiceInstanceId())
                                        break
-                               case "TN-FH":
+                               case "TN_FH":
                                        execution.setVariable("TNFH_sliceProfileInstanceId", val.getServiceInstanceId())
                                        break
-                               case "TN-MH":
+                               case "TN_MH":
                                        execution.setVariable("TNMH_sliceProfileInstanceId", val.getServiceInstanceId())
                                        break
                                default:
@@ -655,7 +724,7 @@ class DoModifyAccessNSSI extends AbstractServiceTaskProcessor {
                                        exceptionUtil.buildAndThrowWorkflowException(execution, 2500,
                                                        "Service Instance was not found in aai: ${serviceInstanceId} related to ${instanceId}")
                                }
-                               AAIResultWrapper wrapper01 = client01.get(uri01, NotFoundException.class)
+                               AAIResultWrapper wrapper01 = client01.get(uri01.depth(Depth.TWO), NotFoundException.class)
                                Optional<ServiceInstance> serviceInstance = wrapper01.asBean(ServiceInstance.class)
                                if (serviceInstance.isPresent()) {
                                        ServiceInstance instance = serviceInstance.get()
index bb8e516..10846d4 100644 (file)
@@ -28,6 +28,7 @@ import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
 import org.onap.so.bpmn.common.scripts.ExceptionUtil
 import org.onap.so.bpmn.core.json.JsonUtils
 import com.fasterxml.jackson.databind.ObjectMapper
+import com.google.gson.Gson
 import com.google.gson.JsonObject
 import com.google.gson.JsonParser
 import java.time.Instant
@@ -114,7 +115,7 @@ class DoModifyRanNfNssi extends AbstractServiceTaskProcessor {
                logger.debug(Prefix+"createSdnrRequest method start")
                String callbackUrl = UrnPropertiesReader.getVariable("mso.workflow.message.endpoint") + "/AsyncSdnrResponse/"+execution.getVariable("msoRequestId")
                String modifyAction = execution.getVariable("modifyAction")
-               String sdnrRequest = buildSdnrAllocateRequest(execution, modifyAction, "InstantiateRANSlice", callbackUrl)
+               String sdnrRequest = buildSdnrAllocateRequest(execution, modifyAction, "instantiateRANSlice", callbackUrl)
                execution.setVariable("createNSSI_sdnrRequest", sdnrRequest)
                execution.setVariable("createNSSI_timeout", "PT10M")
                execution.setVariable("createNSSI_correlator", execution.getVariable("msoRequestId"))
@@ -152,7 +153,7 @@ class DoModifyRanNfNssi extends AbstractServiceTaskProcessor {
                if(action.equals("allocate")) {
                        sliceProfile = objectMapper.readValue(execution.getVariable("sliceProfile"), Map.class)
                        sliceProfile.put("sliceProfileId", execution.getVariable("sliceProfileId"))
-                       sliceProfile.put("maxNumberofConns", sliceProfile.get("maxNumberofPDUSessions"))
+                       sliceProfile.put("maxNumberofConns", sliceProfile.get("maxNumberofPDUSession"))
                        sliceProfile.put("uLThptPerSlice", sliceProfile.get("expDataRateUL"))
                        sliceProfile.put("dLThptPerSlice", sliceProfile.get("expDataRateDL"))
                        action = "modify-"+action
@@ -174,9 +175,12 @@ class DoModifyRanNfNssi extends AbstractServiceTaskProcessor {
                commonHeader.addProperty("request-id", requestId)
                commonHeader.addProperty("sub-request-id", "1")
                commonHeader.add("flags", new JsonObject())
-               payloadInput.addProperty("sliceProfile", sliceProfile.toString())
+                Gson jsonConverter = new Gson()
+                payloadInput.add("sliceProfile", jsonConverter.toJsonTree(sliceProfile))
                payloadInput.addProperty("RANNFNSSIId", execution.getVariable("serviceInstanceID"))
                payloadInput.addProperty("callbackURL", callbackUrl)
+                payloadInput.addProperty("globalSubscriberId", execution.getVariable("globalSubscriberId"))
+               payloadInput.addProperty("subscriptionServiceType", execution.getVariable("subscriptionServiceType"))
                payload.add("input", payloadInput)
                input.add("common-header", commonHeader)
                input.addProperty("action", action)
index 07077a1..4012467 100644 (file)
@@ -77,7 +77,8 @@ nss.sendSyncResponse(execution)</bpmn:script>
         <camunda:in source="jobId" target="jobId" />
         <camunda:in source="sliceParams" target="sliceParams" />
         <camunda:out source="WorkflowException" target="WorkflowException" />
-        <camunda:in source="servicename" target="servicename" />
+       <camunda:in source="servicename" target="servicename" />
+       <camunda:in source="sst" target="sst" />
       </bpmn:extensionElements>
       <bpmn:incoming>Flow_1kk0exp</bpmn:incoming>
       <bpmn:outgoing>Flow_09b50tn</bpmn:outgoing>
@@ -105,7 +106,8 @@ nss.prepareInitOperationStatus(execution)</bpmn:script>
         <camunda:in source="jobId" target="jobId" />
         <camunda:in source="sliceParams" target="sliceParams" />
         <camunda:out source="WorkflowException" target="WorkflowException" />
-        <camunda:in source="servicename" target="servicename" />
+       <camunda:in source="servicename" target="servicename" />
+       <camunda:in source="sst" target="sst" />
       </bpmn:extensionElements>
       <bpmn:incoming>Flow_1fij4ds</bpmn:incoming>
       <bpmn:outgoing>Flow_1coedjo</bpmn:outgoing>
index 9b44901..9df7398 100644 (file)
@@ -353,7 +353,7 @@ nss.createModifyNssiQueryJobStatus(execution)</bpmn:script>
         <camunda:in source="modifyRanNssiJobId" target="jobId" />
         <camunda:in source="modifySliceParams" target="sliceParams" />
         <camunda:out source="WorkflowException" target="WorkflowException" />
-        <camunda:in source="servicename" target="servicename" />
+        <camunda:in source="ranModelName" target="servicename" />
       </bpmn:extensionElements>
       <bpmn:incoming>Flow_10j50jb</bpmn:incoming>
       <bpmn:outgoing>Flow_05s0wso</bpmn:outgoing>
@@ -500,7 +500,7 @@ nss.prepareFailedOperationStatusUpdate(execution)</bpmn:script>
       <bpmn:extensionElements>
         <camunda:in source="msoRequestId" target="msoRequestId" />
         <camunda:in source="globalSubscriberId" target="globalSubscriberId" />
-        <camunda:in source="ANNF_NSSI" target="serviceInstanceID" />
+        <camunda:in source="RANNFServiceInstanceId" target="serviceInstanceID" />
         <camunda:in source="subscriptionServiceType" target="subscriptionServiceType" />
         <camunda:in source="ANNF_sliceProfileInstanceId" target="sliceProfileId" />
         <camunda:in source="snssaiList" target="snssaiList" />
index c346097..3844770 100644 (file)
@@ -73,7 +73,7 @@ nss.getNssisFromAai(execution)</bpmn:script>
     </bpmn:scriptTask>
     <bpmn:sequenceFlow id="Flow_1fpw4gf" sourceRef="Activity_0c8tzf1" targetRef="Activity_1so8vif" />
     <bpmn:sequenceFlow id="Flow_05cl21h" sourceRef="Activity_1so8vif" targetRef="Activity_0uxxkp1" />
-    <bpmn:scriptTask id="Activity_0uxxkp1" name="update AAI relationships">
+    <bpmn:scriptTask id="Activity_0uxxkp1" name="update AAI relationships" scriptFormat="groovy">
       <bpmn:incoming>Flow_05cl21h</bpmn:incoming>
       <bpmn:outgoing>Flow_1jwk3jy</bpmn:outgoing>
       <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*