BH endpoint update in AAI for 5G Core. 15/114615/2
authoraleemraja <ar00500721@techmahindra.com>
Fri, 6 Nov 2020 10:35:10 +0000 (16:05 +0530)
committeraleemraja <ar00500721@techmahindra.com>
Fri, 6 Nov 2020 10:35:21 +0000 (16:05 +0530)
Issue-ID: SO-3354
Signed-off-by: aleemraja <ar00500721@techmahindra.com>
Change-Id: I99dc4e53dbec1231a76ae184fe4b57afe1a696db

bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateCoreNonSharedSlice.groovy
bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateCoreNonSharedSliceTest.groovy

index b5e1e6b..c5a928a 100644 (file)
@@ -49,7 +49,9 @@ import org.onap.so.client.HttpClient
 import org.onap.so.client.HttpClientFactory
 import org.onap.logging.filter.base.ONAPComponents
 import org.onap.so.bpmn.core.UrnPropertiesReader
+import org.onap.aai.domain.yang.NetworkRoute
 import org.onap.aai.domain.yang.v19.ServiceInstance
+import org.onap.aai.domain.yang.v20.Relationship
 import org.onap.aaiclient.client.aai.AAIObjectType
 import org.onap.aaiclient.client.aai.entities.AAIResultWrapper
 import org.onap.aaiclient.client.aai.entities.AAIEdgeLabel
@@ -86,6 +88,15 @@ class DoAllocateCoreNonSharedSlice extends AbstractServiceTaskProcessor {
         //networkServiceModelUuid
         String networkServiceModelUuid = jsonUtil.getJsonValue(execution.getVariable("networkServiceModelInfo"), "modelUuid") ?: ""
         execution.setVariable("networkServiceModelUuid", networkServiceModelUuid)
+               String sliceParams = execution.getVariable("sliceParams")
+               logger.debug("sliceParams "+sliceParams)
+               List<String> bhEndPoints = jsonUtil.StringArrayToList(jsonUtil.getJsonValue(sliceParams, "endPoints"))
+               if(bhEndPoints.empty) {
+                       logger.debug("End point info is empty")
+                       exceptionUtil.buildAndThrowWorkflowException(execution, 500, "End point info is empty")
+               }else {
+                       execution.setVariable("bh_endpoint", bhEndPoints.get(0))
+               }
         logger.debug(Prefix+ " **** Exit DoAllocateCoreNonSharedSlice:::  preProcessRequest ****")
     }
 
@@ -376,6 +387,8 @@ class DoAllocateCoreNonSharedSlice extends AbstractServiceTaskProcessor {
             if(response.getStatus()!=200 || response.getStatus()!=201 || response.getStatus()!=202) {
                 exceptionUtil.buildAndThrowWorkflowException(execution, response.getStatus(), "Set association of NSSI and Network service instance has failed in AAI")
             } else {
+                               //end point update
+                               createEndPointsInAai(execution)
                 execution.setVariable("progress", 100)
                 execution.setVariable("status", "finished")
                 execution.setVariable("statusDescription", "DoAllocateCoreNonSharedNSSI success")
@@ -389,6 +402,63 @@ class DoAllocateCoreNonSharedSlice extends AbstractServiceTaskProcessor {
         logger.debug(Prefix+ " **** Exit DoAllocateCoreNonSharedSlice ::: updateRelationship ****")
     }
 
+       private void createEndPointsInAai(DelegateExecution execution) {
+               String type = "endpoint"
+               String function = "core_EP"
+               int prefixLength = 24
+               String addressFamily = "ipv4"
+               //BH RAN end point update
+               String bh_endpoint = execution.getVariable("bhEndPoints")
+               String bh_routeId = UUID.randomUUID().toString()
+               execution.setVariable("coreEp_ID_bh", bh_routeId)
+               String role = "CN"
+               String cnIpAddress = jsonUtil.getJsonValue(bh_endpoint, "IpAddress")
+               String LogicalLinkId = jsonUtil.getJsonValue(bh_endpoint, "LogicalLinkId")
+               String nextHopInfo = jsonUtil.getJsonValue(bh_endpoint, "nextHopInfo")
+               NetworkRoute bh_ep = new NetworkRoute()
+               bh_ep.setRouteId(bh_routeId)
+               bh_ep.setFunction(function)
+               bh_ep.setRole(role)
+               bh_ep.setType(type)
+               bh_ep.setIpAddress(cnIpAddress)
+               bh_ep.setLogicalInterfaceId(LogicalLinkId)
+               bh_ep.setNextHop(nextHopInfo)
+               bh_ep.setPrefixLength(prefixLength)
+               bh_ep.setAddressFamily(addressFamily)
+               try {
+                       AAIResourcesClient client = new AAIResourcesClient()
+                       logger.debug("creating bh endpoint . ID : "+bh_routeId+" node details : "+bh_ep.toString())
+                       AAIResourceUri networkRouteUri = AAIUriFactory.createResourceUri( new AAIObjectType(AAINamespaceConstants.NETWORK, NetworkRoute.class), bh_routeId)
+                       client.create(networkRouteUri, bh_ep)
+                       //relationship b/w bh_ep and Core NSSI
+                       def coreNssi = execution.getVariable("NSSIserviceInstanceId")
+                       Relationship relationship = new Relationship()
+                       String relatedLink = "aai/v21/network/network-routes/network-route/${bh_routeId}"
+                       relationship.setRelatedLink(relatedLink)
+                       relationship.setRelatedTo("network-route")
+                       relationship.setRelationshipLabel("org.onap.relationships.inventory.ComposedOf")
+                       try {
+                               AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE,
+                                               execution.getVariable("globalSubscriberId"),
+                                               execution.getVariable("subscriptionServiceType"),
+                                               coreNssi).relationshipAPI()
+                               client.create(uri, relationship)
+                       } catch (BpmnError e) {
+                               throw e
+                       } catch (Exception ex) {
+                               String msg = "Exception in CreateCommunicationService.createRelationShipInAAI. " + ex.getMessage()
+                               logger.info(msg)
+                               exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+                       }
+               } catch (BpmnError e) {
+                       throw e
+               } catch (Exception ex) {
+                       String msg = "Exception in createEndPointsInAai " + ex.getMessage()
+                       logger.info(msg)
+                       exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+               }
+       }
+
     /**
      * prepare ResourceOperation status
      * @param execution
index 1eddf66..6b15407 100644 (file)
@@ -58,9 +58,13 @@ class DoAllocateCoreNonSharedSliceTest extends MsoGroovyTest {
                                 "modelInstanceName"      : "5gcembb_proxy 0"
         }"""
 
+               String sliceParams= """{\r\n\t\"sliceProfile\": {\r\n\t\t\"snssaiList\": [\r\n\t\t\t\"001-100001\"\r\n\t\t],\r\n\t\t\"sliceProfileId\": \"ab9af40f13f721b5f13539d87484098\",\r\n\t\t\"plmnIdList\": [\r\n\t\t\t\"460-00\",\r\n\t\t\t\"460-01\"\r\n\t\t],\r\n\t\t\"perfReq\": {\r\n\t\t\t\"perfReqEmbbList \": [{\r\n\t\t\t\t\"activityFactor\": 50\r\n\t\t\t}]\r\n\t\t},\r\n\t\t\"maxNumberofUEs\": 200,\r\n\t\t\"coverageAreaTAList\": [\r\n\t\t\t\"1\",\r\n\t\t\t\"2\",\r\n\t\t\t\"3\",\r\n\t\t\t\"4\"\r\n\t\t],\r\n\t\t\"latency\": 2,\r\n\t\t\"resourceSharingLevel\": \"non-shared\"\r\n\t},\r\n\t\"endPoints\": [{\r\n\t\t\"IpAdress\": \"\",\r\n\t\t\"LogicalLinkId\": \"\",\r\n\t\t\"nextHopInfo\": \"\"\r\n\t}],\r\n\t\"nsiInfo\": {\r\n\t\t\"nsiId\": \"NSI-M-001-HDBNJ-NSMF-01-A-ZX\",\r\n\t\t\"nsiName\": \"eMBB-001\"\r\n\t},\r\n\t\"scriptName\": \"AN1\"\r\n}"""
+
         when(mockExecution.getVariable("serviceInstanceId")).thenReturn("123456")
         when(mockExecution.getVariable("networkServiceModelInfo")).thenReturn(networkServiceModelInfo)
 
+               when(mockExecution.getVariable("sliceParams")).thenReturn(sliceParams)
+
         DoAllocateCoreNonSharedSlice allocateNssi = new DoAllocateCoreNonSharedSlice()
         allocateNssi.preProcessRequest(mockExecution)
 
@@ -73,7 +77,8 @@ class DoAllocateCoreNonSharedSliceTest extends MsoGroovyTest {
 
         Mockito.verify(mockExecution, times(1)).setVariable(eq("orchestrationStatus"), captor.capture())
         assertEquals("created", captor.getValue())
-        Mockito.verify(mockExecution, times(4)).setVariable(captor.capture() as String, captor.capture())
+
+        Mockito.verify(mockExecution, times(5)).setVariable(captor.capture() as String, captor.capture())
     }
 
     @Test