update oof utils to fix bug caused by oof interface change 98/107598/4
authorhetengjiao <hetengjiao@chinamobile.com>
Wed, 13 May 2020 03:52:38 +0000 (11:52 +0800)
committerHE TENGJIAO <hetengjiao@chinamobile.com>
Wed, 13 May 2020 10:57:11 +0000 (10:57 +0000)
Issue-ID: SO-2919

Change-Id: Iecdf4a142f090cc0a2555c547bc4b7ba2e165fa3
Signed-off-by: hetengjiao <hetengjiao@chinamobile.com>
bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/OofUtils.groovy
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateNSSI.groovy

index 34cbb00..d307a4e 100644 (file)
@@ -534,6 +534,7 @@ class OofUtils {
     public String buildSelectNSTRequest(String requestId, Map<String, Object> profileInfo) {
         def transactionId = requestId
         logger.debug( "transactionId is: " + transactionId)
+        String callbackUrl = "http://0.0.0.0:9000/callback/"
         ObjectMapper objectMapper = new ObjectMapper()
         String json = objectMapper.writeValueAsString(profileInfo)
         StringBuilder response = new StringBuilder()
@@ -543,11 +544,45 @@ class OofUtils {
                         "    \"transactionId\": \"${transactionId}\",\n" +
                         "    \"requestId\": \"${requestId}\",\n" +
                         "    \"sourceId\": \"so\",\n" +
-                        "    \"timeout\": 600\n" +
+                        "    \"timeout\": 600,\n" +
+                        "    \"callbackUrl\": \"${callbackUrl}\"\n" +
                         "    },\n")
-        response.append(",\n \"serviceInfo\": \n")
+        response.append(" \"serviceProfile\": {\n" +
+                "   \"serviceProfileParameters\": ")
+        response.append(json);
+        response.append("\n }\n")
+        response.append("\n}\n")
+        return response.toString()
+    }
+
+    public String buildSelectNSIRequest(String requestId, String nstInfo, Map<String, Object> profileInfo){
+
+        def transactionId = requestId
+        logger.debug( "transactionId is: " + transactionId)
+        String callbackUrl = "http://0.0.0.0:9000/callback/"
+        ObjectMapper objectMapper = new ObjectMapper();
+        String json = objectMapper.writeValueAsString(profileInfo);
+        StringBuilder response = new StringBuilder();
+        response.append(
+                "{\n" +
+                        "  \"requestInfo\": {\n" +
+                        "    \"transactionId\": \"${transactionId}\",\n" +
+                        "    \"requestId\": \"${requestId}\",\n" +
+                        "    \"sourceId\": \"so\",\n" +
+                        "    \"timeout\": 600,\n" +
+                        "    \"callbackUrl\": \"${callbackUrl}\"\n" +
+                        "    },\n" +
+                        "  \"serviceInfo\": {\n" +
+                        "    \"serviceInstanceId\": \"\",\n" +
+                        "    \"serviceName\": \"\"\n" +
+                        "    },\n" +
+                        "  \"NSTInfoList\": [\n")
+        response.append(nstInfo);
+        response.append("\n  ],\n")
+        response.append("\n \"serviceProfile\": \n")
         response.append(json);
         response.append("\n  }\n")
         return response.toString()
     }
+
 }
index e2aa797..2d0034a 100644 (file)
@@ -4,7 +4,6 @@ import org.camunda.bpm.engine.delegate.BpmnError
 import org.camunda.bpm.engine.delegate.DelegateExecution
 import org.onap.aai.domain.yang.ServiceInstance
 import org.onap.aai.domain.yang.SliceProfile
-import org.onap.logging.filter.base.ONAPComponents
 import org.onap.so.beans.nsmf.AllocateAnNssi
 import org.onap.so.beans.nsmf.AllocateCnNssi
 import org.onap.so.beans.nsmf.AllocateTnNssi
@@ -19,18 +18,15 @@ import org.onap.so.beans.nsmf.PerfReq
 import org.onap.so.beans.nsmf.PerfReqEmbbList
 import org.onap.so.beans.nsmf.PerfReqUrllcList
 import org.onap.so.beans.nsmf.ResourceSharingLevel
-import org.onap.so.beans.nsmf.ServiceProfile
 import org.onap.so.beans.nsmf.SliceTaskParams
 import org.onap.so.beans.nsmf.TnSliceProfile
 import org.onap.so.beans.nsmf.UeMobilityLevel
 import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.common.scripts.NssmfAdapterUtils
 import org.onap.so.bpmn.core.RollbackData
-import org.onap.so.bpmn.core.UrnPropertiesReader
 import org.onap.so.bpmn.core.domain.ModelInfo
 import org.onap.so.bpmn.core.domain.ServiceDecomposition
 import org.onap.so.bpmn.core.json.JsonUtils
-import org.onap.so.client.HttpClient
-import org.onap.so.client.HttpClientFactory
 import org.onap.aaiclient.client.aai.AAIObjectType
 import org.onap.aaiclient.client.aai.AAIResourcesClient
 import org.onap.aaiclient.client.aai.entities.AAIEdgeLabel
@@ -39,7 +35,6 @@ import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory
 import org.slf4j.Logger
 import org.slf4j.LoggerFactory
 import com.fasterxml.jackson.databind.ObjectMapper;
-import javax.ws.rs.core.Response
 
 import static org.apache.commons.lang3.StringUtils.isBlank
 
@@ -53,6 +48,8 @@ class DoAllocateNSSI extends org.onap.so.bpmn.common.scripts.AbstractServiceTask
 
     JsonUtils jsonUtil = new JsonUtils()
 
+    private NssmfAdapterUtils nssmfAdapterUtils = new NssmfAdapterUtils(httpClientFactory, jsonUtil)
+
     /**
      * Pre Process the BPMN Flow Request
      * Inclouds:
@@ -155,134 +152,78 @@ class DoAllocateNSSI extends org.onap.so.bpmn.common.scripts.AbstractServiceTask
 
 
     void sendUpdateRequestNSSMF(DelegateExecution execution) {
-        logger.trace("Enter sendUpdateRequestNSSMF in DoAllocateNSSI()")
-        String urlString = UrnPropertiesReader.getVariable("mso.adapters.nssmf.endpoint", execution)
-        logger.debug( "get NSSMF: " + urlString)
-
-       //Prepare auth for NSSMF - Begin
-        def authHeader = ""
-        String basicAuth = UrnPropertiesReader.getVariable("mso.nssmf.auth", execution)
+        logger.debug("Enter sendUpdateRequestNSSMF in DoAllocateNSSI()")
         String domain = execution.getVariable("nsstDomain")
         String nssmfRequest = buildUpdateNSSMFRequest(execution, domain.toUpperCase())
 
-        //send request to update NSSI option - Begin
-        URL url = new URL(urlString+"/api/rest/provMns/v1/NSS/SliceProfiles")
-        HttpClient httpClient = new HttpClientFactory().newJsonClient(url, ONAPComponents.EXTERNAL)
-        Response httpResponse = httpClient.post(nssmfRequest)
-
-        int responseCode = httpResponse.getStatus()
-        logger.debug("NSSMF sync response code is: " + responseCode)
-
-        if(responseCode < 199 && responseCode > 299){
-            String nssmfResponse ="NSSMF response have nobody"
-            if(httpResponse.hasEntity())
-                nssmfResponse = httpResponse.readEntity(String.class)
-            logger.trace("received error message from NSSMF : "+nssmfResponse)
-            logger.trace("Exit sendCreateRequestNSSMF in DoAllocateNSSI()")
-            exceptionUtil.buildAndThrowWorkflowException(execution, responseCode, "Received a Bad Sync Response from NSSMF.")
-        }
+        String urlString = "/api/rest/provMns/v1/NSS/SliceProfiles"
+
+        String nssmfResponse = nssmfAdapterUtils.sendPostRequestNSSMF(execution, urlString, nssmfRequest)
 
-        if(httpResponse.hasEntity()){
-            String nssmfResponse = httpResponse.readEntity(String.class)
+        if (nssmfResponse != null) {
             execution.setVariable("nssmfResponse", nssmfResponse)
             String nssiId = jsonUtil.getJsonValue(nssmfResponse, "nssiId")
             String jobId = jsonUtil.getJsonValue(nssmfResponse, "jobId")
             execution.setVariable("nssiId",nssiId)
             execution.setVariable("jobId",jobId)
-        }else{
-            exceptionUtil.buildAndThrowWorkflowException(execution, responseCode, "Received a Bad Sync Response from NSSMF.")
+
+        } else {
+            logger.error("received error message from NSSMF : "+ nssmfResponse)
+            exceptionUtil.buildAndThrowWorkflowException(execution, 7000,"Received a Bad Sync Response from NSSMF.")
         }
         logger.trace("Exit sendUpdateRequestNSSMF in DoAllocateNSSI()")
     }
 
     void sendCreateRequestNSSMF(DelegateExecution execution) {
-        logger.trace("Enter sendCreateRequestNSSMF in DoAllocateNSSI()")
-        String urlString = UrnPropertiesReader.getVariable("mso.adapters.nssmf.endpoint", execution)
-        logger.debug( "get NSSMF: " + urlString)
-
+        logger.debug("Enter sendCreateRequestNSSMF in DoAllocateNSSI()")
         //Prepare auth for NSSMF - Begin
         String domain = execution.getVariable("nsstDomain")
         String nssmfRequest = buildCreateNSSMFRequest(execution, domain.toUpperCase())
 
-        //send request to get NSI option - Begin
-        URL url = new URL(urlString+"/api/rest/provMns/v1/NSS/SliceProfiles")
-        HttpClient httpClient = new HttpClientFactory().newJsonClient(url, ONAPComponents.EXTERNAL)
-        Response httpResponse = httpClient.post(nssmfRequest)
-
-        int responseCode = httpResponse.getStatus()
-        logger.debug("NSSMF sync response code is: " + responseCode)
-
-        if(responseCode < 199 || responseCode > 299 ){
-            String nssmfResponse ="NSSMF response have nobody"
-            if(httpResponse.hasEntity())
-                nssmfResponse = httpResponse.readEntity(String.class)
-            logger.trace("received error message from NSSMF : "+nssmfResponse)
-            logger.trace("Exit sendCreateRequestNSSMF in DoAllocateNSSI()")
-            exceptionUtil.buildAndThrowWorkflowException(execution, responseCode, "Received a Bad Sync Response from NSSMF.")
-        }
+        String urlString = "/api/rest/provMns/v1/NSS/SliceProfiles"
+
+        String nssmfResponse = nssmfAdapterUtils.sendPostRequestNSSMF(execution, urlString, nssmfRequest)
 
-        if(httpResponse.hasEntity()){
-            String nssmfResponse = httpResponse.readEntity(String.class)
+        if (nssmfResponse != null) {
             execution.setVariable("nssmfResponse", nssmfResponse)
             String nssiId = jsonUtil.getJsonValue(nssmfResponse, "nssiId")
             String jobId = jsonUtil.getJsonValue(nssmfResponse, "jobId")
             execution.setVariable("nssiId",nssiId)
             execution.setVariable("jobId",jobId)
-        }else{
-            exceptionUtil.buildAndThrowWorkflowException(execution, responseCode, "Received a Bad Sync Response from NSSMF.")
+
+        } else {
+            logger.error("received error message from NSSMF : "+ nssmfResponse)
+            exceptionUtil.buildAndThrowWorkflowException(execution, 7000,"Received a Bad Sync Response from NSSMF.")
         }
-        logger.trace("Exit sendCreateRequestNSSMF in DoAllocateNSSI()")
 
+        logger.debug("Exit sendCreateRequestNSSMF in DoAllocateNSSI()")
     }
 
     void getNSSMFProgresss(DelegateExecution execution) {
-        logger.trace("Enter getNSSMFProgresss in DoAllocateNSSI()")
-
-        String endpoint = UrnPropertiesReader.getVariable("mso.adapters.nssmf.endpoint", execution)
-        logger.debug( "get NSSMF: " + endpoint)
-
-        //Prepare auth for NSSMF - Begin
-        def authHeader = ""
-        String basicAuth = UrnPropertiesReader.getVariable("mso.nssmf.auth", execution)
+        logger.debug("Enter getNSSMFProgresss in DoAllocateNSSI()")
 
         String nssmfRequest = buildNSSMFProgressRequest(execution)
-        String strUrl="/api/rest/provMns/v1/NSS/jobs/"+execution.getVariable("jobId")
-        //send request to update NSSI option - Begin
-        URL url = new URL(endpoint+strUrl)
-        HttpClient httpClient = new HttpClientFactory().newJsonClient(url, ONAPComponents.EXTERNAL)
-        Response httpResponse = httpClient.post(nssmfRequest)
-
-        int responseCode = httpResponse.getStatus()
-        logger.debug("NSSMF sync response code is: " + responseCode)
-
-        if(responseCode < 199 || responseCode > 299){
-            String nssmfResponse ="NSSMF response have nobody"
-            if(httpResponse.hasEntity())
-                nssmfResponse = httpResponse.readEntity(String.class)
-            logger.trace("received error message from NSSMF : "+nssmfResponse)
-            logger.trace("Exit sendCreateRequestNSSMF in DoAllocateNSSI()")
-            exceptionUtil.buildAndThrowWorkflowException(execution, responseCode, "Received a Bad Sync Response from NSSMF.")
-        }
+        String strUrl="/api/rest/provMns/v1/NSS/jobs/" + execution.getVariable("jobId")
+
+        String nssmfResponse = nssmfAdapterUtils.sendPostRequestNSSMF(execution, strUrl, nssmfRequest)
 
-        if(httpResponse.hasEntity()){
-            String nssmfResponse = httpResponse.readEntity(String.class)
+        if(nssmfResponse != null){
             Boolean isNSSICreated = false
             execution.setVariable("nssmfResponse", nssmfResponse)
-            Integer progress = java.lang.Integer.parseInt(jsonUtil.getJsonValue(nssmfResponse, "responseDescriptor.progress"))
+            Integer progress = Integer.parseInt(jsonUtil.getJsonValue(nssmfResponse, "responseDescriptor.progress"))
             String status = jsonUtil.getJsonValue(nssmfResponse, "responseDescriptor.status")
             String statusDescription = jsonUtil.getJsonValue(nssmfResponse, "responseDescriptor.statusDescription")
             execution.setVariable("nssmfProgress",progress)
             execution.setVariable("nssmfStatus",status)
             execution.setVariable("nddmfStatusDescription",statusDescription)
-            if(progress>99)
+            if(progress > 99)
                 isNSSICreated = true
             execution.setVariable("isNSSICreated",isNSSICreated)
-
-        }else{
-            exceptionUtil.buildAndThrowWorkflowException(execution, responseCode, "Received a Bad Sync Response from NSSMF.")
+        } else {
+            logger.error("received error message from NSSMF : "+ nssmfResponse)
+            exceptionUtil.buildAndThrowWorkflowException(execution, 7000,"Received a Bad Sync Response from NSSMF.")
         }
-        logger.trace("Exit getNSSMFProgresss in DoAllocateNSSI()")
-
+        logger.debug("Exit getNSSMFProgresss in DoAllocateNSSI()")
     }
 
     void updateRelationship(DelegateExecution execution) {