Fix some deallocate nssi issues 13/116513/2
authorzm330 <zhangminyj@chinamobile.com>
Thu, 24 Dec 2020 08:40:53 +0000 (16:40 +0800)
committerzm330 <zhangminyj@chinamobile.com>
Thu, 24 Dec 2020 09:11:57 +0000 (17:11 +0800)
Issue-ID: SO-3411

Signed-off-by: zm330 <zhangminyj@chinamobile.com>
Change-Id: I7abcc74b52e71e780cda12a2a55d02b4dda2133a

adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/manager/impl/ExternalNssmfManager.java
adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/manager/impl/external/ExternalAnNssmfManager.java
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteCommunicationService.groovy
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteSliceService.groovy
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateNSIandNSSI.groovy
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeallocateNSSI.groovy
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteSliceService.groovy
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/QueryJobStatus.groovy
bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeallocateNSSI.bpmn
bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteSliceService.bpmn

index 7ec6c0f..96f2956 100644 (file)
@@ -99,7 +99,8 @@ public abstract class ExternalNssmfManager extends BaseNssmfManager {
 
                 restUtil.createServiceInstance(nssiInstance, serviceInfo);
             } else if (ActionType.DEALLOCATE.equals(jobOperType)) {
-                restUtil.deleteServiceInstance(serviceInfo);
+                // TODO
+                // restUtil.deleteServiceInstance(serviceInfo);
             }
         }
     }
index 3d0d092..20ad3d1 100644 (file)
@@ -93,7 +93,7 @@ public class ExternalAnNssmfManager extends ExternalNssmfManager {
             status.setResourceInstanceID(nssiId);
             status.setOperType(actionType.toString());
 
-            updateDbStatus(status, restResponse.getStatus(), JobStatus.FINISHED,
+            updateDbStatus(status, restResponse.getStatus(), JobStatus.STARTED,
                     NssmfAdapterUtil.getStatusDesc(actionType));
         }
         // todo
index 8cab146..b94c81b 100644 (file)
@@ -215,11 +215,12 @@ class DeleteCommunicationService extends AbstractServiceTaskProcessor {
 
             String msoKey = UrnPropertiesReader.getVariable("mso.msoKey", execution)
             String basicAuth =  UrnPropertiesReader.getVariable("mso.infra.endpoint.auth", execution)
-            String basicAuthValue = utils.encrypt(basicAuth, msoKey)
-            String encodeString = utils.getBasicAuth(basicAuthValue, msoKey)
+//            String basicAuthValue = utils.encrypt(basicAuth, msoKey)
+//            String encodeString = utils.getBasicAuth(basicAuthValue, msoKey)
 
             HttpClient httpClient = getHttpClientFactory().newJsonClient(new URL(url), ONAPComponents.SO)
-            httpClient.addAdditionalHeader("Authorization", encodeString)
+//            httpClient.addAdditionalHeader("Authorization", encodeString)
+            httpClient.addAdditionalHeader("Authorization", basicAuth)
             httpClient.addAdditionalHeader("Accept", "application/json")
             Response httpResponse = httpClient.delete(requestBody)
             handleNSSMFWFResponse(httpResponse, execution)
index 4c008a2..8c04675 100644 (file)
@@ -20,6 +20,8 @@
 
 package org.onap.so.bpmn.infrastructure.scripts
 
+import org.onap.aaiclient.client.aai.entities.uri.AAISimpleUri
+
 import static org.apache.commons.lang3.StringUtils.isBlank
 import javax.ws.rs.NotFoundException
 import org.camunda.bpm.engine.delegate.BpmnError
@@ -176,11 +178,11 @@ class DeleteSliceService extends AbstractServiceTaskProcessor {
                 ServiceProfile serviceProfile = serviceProfiles.getServiceProfile().get(0)
                 profileId = serviceProfile ? serviceProfile.getProfileId() : ""
             }
-            resourceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(serviceType).serviceInstance(serviceInstanceId).serviceProfile(profileId))
-            if (!getAAIClient().exists(resourceUri)) {
+            AAISimpleUri profileUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(serviceType).serviceInstance(serviceInstanceId).serviceProfile(profileId))
+            if (!getAAIClient().exists(profileUri)) {
                 exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Service Instance was not found in aai")
             }
-            getAAIClient().delete(resourceUri)
+            getAAIClient().delete(profileUri)
         }
         catch (any)
         {
index 0311c3d..059a209 100644 (file)
@@ -394,6 +394,7 @@ class DoAllocateNSIandNSSI extends AbstractServiceTaskProcessor{
 
         AllocateAnNssi allocateAnNssi = new AllocateAnNssi()
         allocateAnNssi.sliceProfile = sliceTaskInfo.sliceProfile.trans2AnProfile()
+        allocateAnNssi.sliceProfile.sliceProfileId = sliceTaskInfo.sliceInstanceId
         allocateAnNssi.nsstId = sliceTaskInfo.NSSTInfo.UUID
         allocateAnNssi.nssiId = sliceTaskInfo.suggestNssiId
         allocateAnNssi.nssiName = "nssi_an" + execution.getVariable("sliceServiceInstanceName")
@@ -537,6 +538,8 @@ class DoAllocateNSIandNSSI extends AbstractServiceTaskProcessor{
         allocateCnNssi.nssiId = sliceTaskInfo.suggestNssiId
         allocateCnNssi.nssiName = "nssi_cn" + execution.getVariable("sliceServiceInstanceName")
         allocateCnNssi.sliceProfile = sliceTaskInfo.sliceProfile.trans2CnProfile()
+        allocateCnNssi.sliceProfile.sliceProfileId = sliceTaskInfo.sliceInstanceId
+
         NsiInfo nsiInfo = new NsiInfo()
         nsiInfo.nsiId = sliceParams.suggestNsiId
         nsiInfo.nsiName = sliceParams.suggestNsiName
index f3bc47e..147e623 100644 (file)
@@ -21,25 +21,26 @@ package org.onap.so.bpmn.infrastructure.scripts
 
 import com.fasterxml.jackson.databind.ObjectMapper
 import org.camunda.bpm.engine.delegate.DelegateExecution
+import org.onap.aai.domain.yang.SliceProfiles
+import org.onap.aaiclient.client.aai.entities.AAIResultWrapper
+import org.onap.aaiclient.client.aai.entities.uri.AAIPluralResourceUri
 import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri
+import org.onap.aaiclient.client.aai.entities.uri.AAISimpleUri
 import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory
 import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder
-import org.onap.so.beans.nsmf.DeAllocateNssi
-import org.onap.so.beans.nsmf.EsrInfo
-import org.onap.so.beans.nsmf.NetworkType
-import org.onap.so.beans.nsmf.NssiResponse
-import org.onap.so.beans.nsmf.ServiceInfo
+import org.onap.so.beans.nsmf.*
+import org.onap.so.beans.nsmf.oof.SubnetType
 import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
 import org.onap.so.bpmn.common.scripts.ExceptionUtil
 import org.onap.so.bpmn.common.scripts.NssmfAdapterUtils
 import org.onap.so.bpmn.common.scripts.RequestDBUtil
-import org.onap.so.bpmn.core.domain.ServiceArtifact
 import org.onap.so.bpmn.core.domain.ServiceDecomposition
 import org.onap.so.bpmn.core.json.JsonUtils
 import org.onap.so.db.request.beans.OperationStatus
 import org.slf4j.Logger
 import org.slf4j.LoggerFactory
 
+import javax.ws.rs.NotFoundException
 
 class DoDeallocateNSSI extends AbstractServiceTaskProcessor
 {
@@ -103,15 +104,13 @@ class DoDeallocateNSSI extends AbstractServiceTaskProcessor
 
         try {
             ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition") as ServiceDecomposition
-            ServiceArtifact serviceArtifact = serviceDecomposition ?.getServiceInfo()?.getServiceArtifact()?.get(0)
-            String content = serviceArtifact.getContent()
-            String vendor = jsonUtil.getJsonValue(content, "metadata.vendor")
-            String domainType  = jsonUtil.getJsonValue(content, "metadata.domainType")
+            String vendor = serviceDecomposition ?.getServiceRole()
+            NetworkType domainType = convertServiceCategory(serviceDecomposition.getServiceCategory())
 
             def currentNSSI = execution.getVariable("currentNSSI")
             currentNSSI['vendor'] = vendor
             currentNSSI['domainType'] = domainType
-            LOGGER.info("processDecomposition, current vendor-domainType:" +String.join("-", vendor, domainType))
+            LOGGER.info("processDecomposition, current vendor-domainType:" +String.join("-", vendor, domainType.toString()))
 
         } catch (any) {
             String exceptionMessage = "Bpmn error encountered in deallocate nssi. processDecomposition() - " + any.getMessage()
@@ -120,6 +119,27 @@ class DoDeallocateNSSI extends AbstractServiceTaskProcessor
         }
         LOGGER.debug("*****${PREFIX} Exit processDecomposition *****")
     }
+
+
+    /**
+     * get subnetType from serviceCategory
+     * @return
+     */
+    private NetworkType convertServiceCategory(String serviceCategory){
+        if(serviceCategory ==~ /CN.*/){
+            return SubnetType.CN.getNetworkType()
+        }
+        if (serviceCategory ==~ /AN.*NF.*/){
+            return SubnetType.AN.getNetworkType()
+        }
+        if (serviceCategory ==~ /TN.*BH.*/){
+            return SubnetType.TN_BH.getNetworkType()
+        }
+        if(serviceCategory ==~ /TN.*MH.*/){
+            return SubnetType.TN_MH.getNetworkType()
+        }
+        return null
+    }
     
     /**
      * send deallocate request to nssmf
@@ -136,9 +156,9 @@ class DoDeallocateNSSI extends AbstractServiceTaskProcessor
         String scriptName = execution.getVariable("scriptName")
 
         String serviceInvariantUuid = currentNSSI['modelInvariantId']
-        String serviceUuid = currentNSSI['modelId']
+        String serviceUuid = currentNSSI['modelVersionId']
         String globalSubscriberId = currentNSSI['globalSubscriberId']
-        String subscriptionServiceType = execution.getVariable("serviceType")
+        String subscriptionServiceType = currentNSSI['serviceType']
         
         DeAllocateNssi deAllocateNssi = new DeAllocateNssi()
         deAllocateNssi.setNsiId(nsiId)
@@ -191,8 +211,6 @@ class DoDeallocateNSSI extends AbstractServiceTaskProcessor
     {
         def currentNSSI = execution.getVariable("currentNSSI")
         String jobId = currentNSSI['jobId']
-
-        execution.setVariable("responseId", "3")
         execution.setVariable("jobId", jobId)
     }
 
@@ -245,11 +263,11 @@ class DoDeallocateNSSI extends AbstractServiceTaskProcessor
 
     private EsrInfo getEsrInfo(def currentNSSI)
     {
-        String domaintype = currentNSSI['domainType']
+        NetworkType domainType = currentNSSI['domainType']
         String vendor = currentNSSI['vendor']
         
         EsrInfo info = new EsrInfo()
-        info.setNetworkType(NetworkType.fromString(domaintype))
+        info.setNetworkType(domainType)
         info.setVendor(vendor)
         return info
     }
@@ -264,17 +282,17 @@ class DoDeallocateNSSI extends AbstractServiceTaskProcessor
         def currentNSSI = execution.getVariable("currentNSSI")
         int currentProgress = currentNSSI["jobProgress"]
         def proportion = currentNSSI['proportion']
-        def statusDes = currentNSSI["statusDescription"]
         int progress = (currentProgress as int) == 0 ? 0 : (currentProgress as int) / 100 * (proportion as int)
         def status = currentNSSI['status']
-        
+
+
         OperationStatus operationStatus = new OperationStatus()
         operationStatus.setServiceId(currentNSSI['e2eServiceInstanceId'] as String)
         operationStatus.setOperationId(currentNSSI['operationId'] as String)
         operationStatus.setOperation("DELETE")
-        operationStatus.setResult(status as String)
+        operationStatus.setResult("processing")
         operationStatus.setProgress(progress as String)
-        operationStatus.setOperationContent(statusDes as String)
+        operationStatus.setOperationContent(currentNSSI['domainType'].toString() + " " + status.toString())
         requestDBUtil.prepareUpdateOperationStatus(execution, operationStatus)
         LOGGER.debug("update operation, currentProgress=${currentProgress}, proportion=${proportion}, progress = ${progress}" )
     }
@@ -283,20 +301,20 @@ class DoDeallocateNSSI extends AbstractServiceTaskProcessor
      * delete slice profile from aai
      * @param execution
      */
-    void delSliceProfileFromAAI(DelegateExecution execution)
+    void delSliceProfileServiceFromAAI(DelegateExecution execution)
     {
         LOGGER.debug("*****${PREFIX} start delSliceProfileFromAAI *****")
         def currentNSSI = execution.getVariable("currentNSSI")
         String nssiServiceInstanceId = currentNSSI['nssiServiceInstanceId']
         String profileId = currentNSSI['profileId']
         String globalSubscriberId = currentNSSI["globalSubscriberId"]
-        String serviceType = execution.getVariable("serviceType")
+        String serviceType = currentNSSI['serviceType']
 
         try
         {
             LOGGER.debug("delete nssiServiceInstanceId:${nssiServiceInstanceId}, profileId:${profileId}")
             AAIResourceUri resourceUri = AAIUriFactory.createResourceUri(
-                AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(serviceType).serviceInstance(nssiServiceInstanceId).sliceProfile(profileId))
+                AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(serviceType).serviceInstance(profileId))
             if (!getAAIClient().exists(resourceUri)) {
                 exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Service Instance was not found in aai")
             }
@@ -310,4 +328,41 @@ class DoDeallocateNSSI extends AbstractServiceTaskProcessor
         }
         LOGGER.debug("*****${PREFIX} Exist delSliceProfileFromAAI *****")
     }
+
+    void delSliceProfileFromAAI(DelegateExecution execution){
+
+        LOGGER.debug("*****${PREFIX} start delSliceProfileFromAAI *****")
+        def currentNSSI = execution.getVariable("currentNSSI")
+        String globalSubscriberId = currentNSSI["globalSubscriberId"]
+        String serviceType = currentNSSI['serviceType']
+        String sliceProfileInstId = currentNSSI['profileId']
+
+        try
+        {
+            AAIPluralResourceUri resourceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(serviceType).serviceInstance(sliceProfileInstId).sliceProfiles())
+            AAIResultWrapper wrapper = getAAIClient().get(resourceUri, NotFoundException.class)
+            Optional<SliceProfiles> sliceProfilesOpt =wrapper.asBean(SliceProfiles.class)
+            SliceProfiles sliceProfiles
+            String profileId
+            if(sliceProfilesOpt.isPresent()){
+                sliceProfiles = sliceProfilesOpt.get()
+                org.onap.aai.domain.yang.SliceProfile sliceProfile = sliceProfiles.getSliceProfile().get(0)
+                profileId = sliceProfile ? sliceProfile.getProfileId() : ""
+            }
+            if (profileId){
+                AAISimpleUri profileUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(serviceType).serviceInstance(sliceProfileInstId).sliceProfile(profileId))
+                if (!getAAIClient().exists(profileUri)) {
+                    exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Service Instance was not found in aai")
+                }
+                getAAIClient().delete(profileUri)
+            }
+
+        }
+        catch (any)
+        {
+            String msg = "delete service profile from aai failed! cause-"+any.getCause()
+            LOGGER.error(any.printStackTrace())
+            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg);
+        }
+    }
 }
index c432122..2889f79 100644 (file)
@@ -19,6 +19,9 @@
  */
 package org.onap.so.bpmn.infrastructure.scripts
 
+import org.onap.aai.domain.yang.SliceProfiles
+import org.onap.aaiclient.client.aai.entities.uri.AAIPluralResourceUri
+
 import static org.apache.commons.lang3.StringUtils.isBlank
 import javax.ws.rs.NotFoundException
 import javax.ws.rs.core.Response
@@ -99,7 +102,7 @@ class DoDeleteSliceService extends AbstractServiceTaskProcessor {
      * save snssai
      * @param execution
      */
-    void queryE2ESliceSeriveFromAAI(DelegateExecution execution)
+    void queryServiceProfileFromAAI(DelegateExecution execution)
     {
         LOGGER.trace(" *****${PREFIX} Start queryE2ESliceSeriveFromAAI *****")
         String serviceInstanceId = execution.getVariable("serviceInstanceId")
@@ -111,11 +114,11 @@ class DoDeleteSliceService extends AbstractServiceTaskProcessor {
         if(si.isPresent())
         {
             String snssai = si.get()?.getEnvironmentContext()
-            ServiceProfiles serviceProfiles = si.get()?.getServiceProfiles()
-            ServiceProfile serviceProfile = serviceProfiles.getServiceProfile().get(0)
-            String serviceProfileId = serviceProfile ? serviceProfile.getProfileId() : ""
             execution.setVariable("snssai", snssai ?: "")
-            execution.setVariable("serviceProfileId",serviceProfileId)
+//            ServiceProfiles serviceProfiles = si.get()?.getServiceProfiles()
+//            ServiceProfile serviceProfile = serviceProfiles.getServiceProfile().get(0)
+//            String serviceProfileId = serviceProfile ? serviceProfile.getProfileId() : ""
+//            execution.setVariable("serviceProfileId", serviceProfileId)
             List<ServiceInstance> sliceProfileList = []
             List<Relationship> relationshipList = si.get().getRelationshipList().getRelationship()
             for (Relationship relationship : relationshipList) {
@@ -127,7 +130,7 @@ class DoDeleteSliceService extends AbstractServiceTaskProcessor {
                     Optional<ServiceInstance> serviceInstance = wrapper1.asBean(ServiceInstance.class)
                     if (serviceInstance.isPresent()) {
                         ServiceInstance instance = serviceInstance.get()
-                        if ("slice-profile-instance".equalsIgnoreCase(instance.getServiceRole())) {
+                        if ("slice-profile".equalsIgnoreCase(instance.getServiceRole())) {
                             sliceProfileList.add(instance)
                         }
                     }
@@ -158,7 +161,7 @@ class DoDeleteSliceService extends AbstractServiceTaskProcessor {
         try
         {
             String errorMsg = "query allotted resource from aai failed."
-            AAIResultWrapper wrapper = queryAAI(execution, Types.ALLOTTED_RESOURCES, serviceInstanceId, errorMsg)
+            AAIResultWrapper wrapper = queryAAI(execution, Types.ALLOTTED_RESOURCE, serviceInstanceId, errorMsg)
             Optional<AllottedResources> ars = wrapper?.asBean(AllottedResources.class)
             if(ars.isPresent() && ars.get().getAllottedResource())
             {
@@ -209,6 +212,7 @@ class DoDeleteSliceService extends AbstractServiceTaskProcessor {
                         String instanceId = relatedLink ? relatedLink.substring(relatedLink.lastIndexOf("/") + 1,relatedLink.length()) : ""
                         AAIResultWrapper wrapper1 = queryAAI(execution, Types.SERVICE_INSTANCE, instanceId, errorMsg)
                         Optional<ServiceInstance> serviceInstance = wrapper1.asBean(ServiceInstance.class)
+                        def nssiId
                         if (serviceInstance.isPresent()) {
                             ServiceInstance instance = serviceInstance.get()
                             if ("nssi".equalsIgnoreCase(instance.getServiceRole())) {
@@ -274,14 +278,39 @@ class DoDeleteSliceService extends AbstractServiceTaskProcessor {
         List<ServiceInstance> nssiInstanceList = execution.getVariable("nssiInstanceList")
         List<ServiceInstance> sliceProfileList = execution.getVariable("sliceProfileList")
         int currentIndex = execution.getVariable("currentNSSIIndex") as int
-        String profileId = ""
+        String profileInstId = ""
         ServiceInstance nssi = nssiInstanceList?.get(currentIndex)
+        List<Relationship> relationshipList = nssi.getRelationshipList()?.getRelationship()
         for(ServiceInstance sliceProfileInstance : sliceProfileList) {
-            if(sliceProfileInstance.getWorkloadContext().equalsIgnoreCase(nssi.getWorkloadContext()))
-            {
-                profileId = sliceProfileInstance.getServiceInstanceId()
+            for (Relationship relationship : relationshipList) {
+                String relatedTo = relationship.getRelatedTo()
+                if (relatedTo == "service-instance"){
+                    String relatedLink = relationship.getRelatedLink()?:""
+                    String instanceId = relatedLink ? relatedLink.substring(relatedLink.lastIndexOf("/") + 1,relatedLink.length()) : ""
+                    if(instanceId.equals(sliceProfileInstance.getServiceInstanceId())){
+                        profileInstId = sliceProfileInstance.getServiceInstanceId()
+                        break
+                    }
+                }
+            }
+            if(profileInstId){
+                break
             }
         }
+
+        //@TODO Temp begin*******************
+//        AAIPluralResourceUri resourceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(execution.getVariable("globalSubscriberId")).serviceSubscription(execution.getVariable("serviceType")).serviceInstance(profileInstId).sliceProfiles())
+//        AAIResultWrapper wrapper = getAAIClient().get(resourceUri, NotFoundException.class)
+//        Optional<SliceProfiles> sliceProfilesOpt =wrapper.asBean(SliceProfiles.class)
+//        SliceProfiles sliceProfiles
+//        String sliceProfileId
+//        if(sliceProfilesOpt.isPresent()){
+//            sliceProfiles = sliceProfilesOpt.get()
+//            org.onap.aai.domain.yang.SliceProfile sliceProfile = sliceProfiles.getSliceProfile().get(0)
+//            sliceProfileId = sliceProfile ? sliceProfile.getProfileId() : ""
+//        }
+        //@TODO Temp end*******************
+
         def currentNSSI = [:]
         currentNSSI['nssiServiceInstanceId'] = nssi?.getServiceInstanceId()
         currentNSSI['modelInvariantId'] = nssi?.getModelInvariantId()
@@ -289,7 +318,10 @@ class DoDeleteSliceService extends AbstractServiceTaskProcessor {
         currentNSSI['nssiName'] = nssi?.getServiceInstanceName()
         currentNSSI['sST'] = nssi?.getServiceType()
         currentNSSI['PLMNIdList'] = nssi?.getServiceInstanceLocationId()
-        currentNSSI['profileId'] =  profileId
+        //@TODO Temp
+
+        currentNSSI['profileId'] =  profileInstId
+//        currentNSSI['profileId'] =  sliceProfileId
         currentNSSI['snssai'] = execution.getVariable("snssai") ?: ""
         currentNSSI['nsiServiceInstanceId'] = execution.getVariable("nsiId") ?: ""
         currentNSSI['operationId'] = execution.getVariable("operationId") ?: ""
@@ -343,7 +375,7 @@ class DoDeleteSliceService extends AbstractServiceTaskProcessor {
 
         org.onap.aaiclient.client.generated.fluentbuilders.ServiceInstance serviceInstanceType = AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(serviceType).serviceInstance(instanceId)
         def type
-        if (aaiObjectName == Types.ALLOTTED_RESOURCES) {
+        if (aaiObjectName == Types.ALLOTTED_RESOURCE) {
             type = serviceInstanceType.allottedResources()
         } else if (aaiObjectName == Types.SLICE_PROFILES) {
             type = serviceInstanceType.sliceProfiles()
@@ -361,8 +393,10 @@ class DoDeleteSliceService extends AbstractServiceTaskProcessor {
 
     void terminateNSIQuery(DelegateExecution execution)
     {
-        logger.debug("Start terminateNSIQuery")
-        
+        LOGGER.debug("Start terminateNSIQuery")
+
+        return
+        //To test
         String requestId = execution.getVariable("msoRequestId")
         String nxlId = currentNSSI['nsiServiceInstanceId']
         String nxlType = "NSI"
@@ -375,17 +409,17 @@ class DoDeleteSliceService extends AbstractServiceTaskProcessor {
 
         String basicAuthValue = utils.encrypt(basicAuth, msokey)
         if (basicAuthValue != null) {
-            logger.debug( "Obtained BasicAuth username and password for OOF: " + basicAuthValue)
+            LOGGER.debug( "Obtained BasicAuth username and password for OOF: " + basicAuthValue)
             try {
                 authHeader = utils.getBasicAuth(basicAuthValue, msokey)
                 execution.setVariable("BasicAuthHeaderValue", authHeader)
             } catch (Exception ex) {
-                logger.debug( "Unable to encode username and password string: " + ex)
+                LOGGER.debug( "Unable to encode username and password string: " + ex)
                 exceptionUtil.buildAndThrowWorkflowException(execution, 401, "Internal Error - Unable to " +
                         "encode username and password string")
             }
         } else {
-            logger.debug( "Unable to obtain BasicAuth - BasicAuth value null")
+            LOGGER.debug( "Unable to obtain BasicAuth - BasicAuth value null")
             exceptionUtil.buildAndThrowWorkflowException(execution, 401, "Internal Error - BasicAuth " +
                     "value null")
         }
@@ -397,7 +431,7 @@ class DoDeleteSliceService extends AbstractServiceTaskProcessor {
         Response httpResponse = httpClient.post(oofRequest)
 
         int responseCode = httpResponse.getStatus()
-        logger.debug("OOF sync response code is: " + responseCode)
+        LOGGER.debug("OOF sync response code is: " + responseCode)
 
         if(responseCode != 200){
             exceptionUtil.buildAndThrowWorkflowException(execution, responseCode, "Received a Bad Sync Response from OOF.")
@@ -407,9 +441,9 @@ class DoDeleteSliceService extends AbstractServiceTaskProcessor {
             boolean terminateResponse = resMap.get("terminateResponse")
             execution.setVariable("terminateNSI", terminateResponse)
         } catch (Exception ex) {
-            logger.debug( "Failed to get terminate Response suggested by OOF.")
+            LOGGER.debug( "Failed to get terminate Response suggested by OOF.")
             exceptionUtil.buildAndThrowWorkflowException(execution, 401, "Failed to get terminate Response suggested by OOF.")
         }
-        logger.debug("Finish terminateNSIQuery")
+        LOGGER.debug("Finish terminateNSIQuery")
     }
 }
index 5cdf540..74c9a49 100644 (file)
 
 package org.onap.so.bpmn.infrastructure.scripts
 
+import com.fasterxml.jackson.databind.ObjectMapper
 import groovy.json.JsonSlurper
 import org.json.JSONObject
 import org.camunda.bpm.engine.delegate.DelegateExecution
+import org.onap.so.beans.nsmf.JobStatusRequest
 import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
 import org.onap.so.bpmn.common.scripts.ExceptionUtil
 import org.onap.so.bpmn.core.json.JsonUtils
@@ -43,16 +45,15 @@ public class QueryJobStatus extends AbstractServiceTaskProcessor{
         try{
             String requestId = execution.getVariable("msoRequestId")
             logger.debug("RequestId :" + requestId)
-            String responseId = execution.getVariable("responseId")
-            String jobId = execution.getVariable("jobId")   
+            String jobId = execution.getVariable("jobId")
             def jsonSlurper = new JsonSlurper()
             
-            HashMap<String,?> esrInfo=jsonSlurper.parseText(execution.getVariable("esrInfo"))
+            HashMap<String,?> esrInfo = jsonSlurper.parseText(execution.getVariable("esrInfo"))
             logger.debug("esrInfo" + esrInfo.toString())
             
-            HashMap<String,?> serviceInfo=jsonSlurper.parseText(execution.getVariable("serviceInfo"))
+            HashMap<String,?> serviceInfo = jsonSlurper.parseText(execution.getVariable("serviceInfo"))
             logger.debug("serviceInfo" + serviceInfo.toString())
-            
+
             execution.setVariable("esrInfo", esrInfo)
             execution.setVariable("serviceInfo", serviceInfo)
             
@@ -60,10 +61,9 @@ public class QueryJobStatus extends AbstractServiceTaskProcessor{
             String endPoint = String.format("/api/rest/provMns/v1/NSS/jobs/%s", jobId)          
             String url = nssmfEndpoint + endPoint 
             execution.setVariable("NSSMF_AdapterEndpoint", url)
-            
+
             String payload = """
                 {
-                  "responseId": "${responseId}",
                   "esrInfo":  ${execution.getVariable("esrInfo") as JSONObject},
                   "serviceInfo": ${execution.getVariable("serviceInfo") as JSONObject}
                 }
index a745f7c..85533e7 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_0884541" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="3.7.2">
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_0884541" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="3.4.1">
   <bpmn:process id="DoDeallocateNSSIV1" name="DoDeallocateNSSIV1" isExecutable="true">
     <bpmn:startEvent id="StartEvent_1" name="start">
       <bpmn:outgoing>SequenceFlow_05jfhy6</bpmn:outgoing>
@@ -33,7 +33,7 @@ def dnssi= new DoDeallocateNSSI()
 dnssi.processDecomposition(execution)</bpmn:script>
     </bpmn:scriptTask>
     <bpmn:sequenceFlow id="SequenceFlow_1e7o57n" sourceRef="Task_15ut397" targetRef="Task_0vi4ijv" />
-    <bpmn:scriptTask id="Task_0vi4ijv" name="Send deallocate request to NSSMF" scriptFormat="groovy">
+    <bpmn:scriptTask id="Task_0vi4ijv" name="Send request to NSSMF" scriptFormat="groovy">
       <bpmn:incoming>SequenceFlow_1e7o57n</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_1wj89r5</bpmn:outgoing>
       <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
@@ -53,9 +53,9 @@ def dnssi= new DoDeallocateNSSI()
 dnssi.delSliceProfileFromAAI(execution)</bpmn:script>
     </bpmn:scriptTask>
     <bpmn:endEvent id="EndEvent_1f579t4" name="end">
-      <bpmn:incoming>SequenceFlow_1ii5002</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_0hyn6ca</bpmn:incoming>
     </bpmn:endEvent>
-    <bpmn:sequenceFlow id="SequenceFlow_1ii5002" sourceRef="Task_13vaezk" targetRef="EndEvent_1f579t4" />
+    <bpmn:sequenceFlow id="SequenceFlow_1ii5002" sourceRef="Task_13vaezk" targetRef="Task_0ocemjg" />
     <bpmn:sequenceFlow id="SequenceFlow_0xq380j" name="yes" sourceRef="ExclusiveGateway_0nhfsui" targetRef="Task_13vaezk">
       <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{(execution.getVariable("isNSSIDeAllocated" )  == true)}</bpmn:conditionExpression>
     </bpmn:sequenceFlow>
@@ -102,7 +102,6 @@ dnssi.prepareUpdateOperationStatus(execution)</bpmn:script>
         <camunda:in source="esrInfo" target="esrInfo" />
         <camunda:in source="serviceInfo" target="serviceInfo" />
         <camunda:in source="jobId" target="jobId" />
-        <camunda:in source="responseId" target="responseId" />
         <camunda:out source="responseDescriptor" target="responseDescriptor" />
       </bpmn:extensionElements>
       <bpmn:incoming>SequenceFlow_0w01l14</bpmn:incoming>
@@ -133,6 +132,14 @@ dnssi.prepareJobStatusRequest(execution)</bpmn:script>
       <bpmn:errorEventDefinition id="ErrorEventDefinition_11pdh1q" errorRef="Error_1o5kb95" />
     </bpmn:endEvent>
     <bpmn:sequenceFlow id="SequenceFlow_1wpbkt9" name="no" sourceRef="ExclusiveGateway_0nhfsui" targetRef="Event_11u9vp2" />
+    <bpmn:sequenceFlow id="SequenceFlow_0hyn6ca" sourceRef="Task_0ocemjg" targetRef="EndEvent_1f579t4" />
+    <bpmn:scriptTask id="Task_0ocemjg" name="Delete Slice Profile Service From AAI" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1ii5002</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0hyn6ca</bpmn:outgoing>
+      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
+def dnssi= new DoDeallocateNSSI()
+dnssi.delSliceProfileServiceFromAAI(execution)</bpmn:script>
+    </bpmn:scriptTask>
   </bpmn:process>
   <bpmn:error id="Error_1o5kb95" name="MSO Workflow Exception" errorCode="MSOWorkflowException" />
   <bpmndi:BPMNDiagram id="BPMNDiagram_1">
@@ -181,7 +188,7 @@ dnssi.prepareJobStatusRequest(execution)</bpmn:script>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_1ii5002_di" bpmnElement="SequenceFlow_1ii5002">
         <di:waypoint x="2040" y="130" />
-        <di:waypoint x="2102" y="130" />
+        <di:waypoint x="2090" y="130" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_1e7o57n_di" bpmnElement="SequenceFlow_1e7o57n">
         <di:waypoint x="800" y="130" />
@@ -227,9 +234,9 @@ dnssi.prepareJobStatusRequest(execution)</bpmn:script>
         <dc:Bounds x="1940" y="90" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="EndEvent_1f579t4_di" bpmnElement="EndEvent_1f579t4">
-        <dc:Bounds x="2102" y="112" width="36" height="36" />
+        <dc:Bounds x="2272" y="112" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="2111" y="155" width="19" height="14" />
+          <dc:Bounds x="2281" y="155" width="19" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ScriptTask_1dytya8_di" bpmnElement="Task_1vste9s">
@@ -253,6 +260,13 @@ dnssi.prepareJobStatusRequest(execution)</bpmn:script>
       <bpmndi:BPMNShape id="Event_11u9vp2_di" bpmnElement="Event_11u9vp2">
         <dc:Bounds x="1842" y="212" width="36" height="36" />
       </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0hyn6ca_di" bpmnElement="SequenceFlow_0hyn6ca">
+        <di:waypoint x="2190" y="130" />
+        <di:waypoint x="2272" y="130" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_12dnirp_di" bpmnElement="Task_0ocemjg">
+        <dc:Bounds x="2090" y="90" width="100" height="80" />
+      </bpmndi:BPMNShape>
     </bpmndi:BPMNPlane>
   </bpmndi:BPMNDiagram>
 </bpmn:definitions>
index 5510dcd..9edb612 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_1p1suc9" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="3.7.2">
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_1p1suc9" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="3.4.1">
   <bpmn:process id="DoDeleteSliceServiceV1" name="DoDeleteSliceServiceV1" isExecutable="true">
     <bpmn:startEvent id="StartEvent_1" name="start">
       <bpmn:outgoing>SequenceFlow_0ep5het</bpmn:outgoing>
@@ -68,14 +68,14 @@ ddss.parseNextNSSI(execution)</bpmn:script>
     </bpmn:scriptTask>
     <bpmn:sequenceFlow id="SequenceFlow_15z9iio" sourceRef="ScriptTask_159855t" targetRef="ExclusiveGateway_1ogbunu" />
     <bpmn:sequenceFlow id="SequenceFlow_029u1wr" sourceRef="Task_13k9usx" targetRef="Task_1ujnqtj" />
-    <bpmn:scriptTask id="Task_13k9usx" name="Query E2ESlice Serive From AAI" scriptFormat="groovy">
+    <bpmn:scriptTask id="Task_13k9usx" name="Query ServiceProfile From AAI" scriptFormat="groovy">
       <bpmn:incoming>SequenceFlow_0npmman</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_029u1wr</bpmn:outgoing>
       <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
 def ddss= new DoDeleteSliceService()
-ddss.queryE2ESliceSeriveFromAAI(execution)</bpmn:script>
+ddss.queryServiceProfileFromAAI(execution)</bpmn:script>
     </bpmn:scriptTask>
-    <bpmn:callActivity id="Task_1rc7mcw" name="Do Deallocate NSSI " calledElement="DoDeallocateNSSIV1">
+    <bpmn:callActivity id="Task_1rc7mcw" name="Do Deallocate NSSI" calledElement="DoDeallocateNSSIV1">
       <bpmn:extensionElements>
         <camunda:in source="currentNSSI" target="currentNSSI" />
         <camunda:in source="msoRequestId" target="msoRequestId" />
@@ -90,7 +90,7 @@ ddss.queryE2ESliceSeriveFromAAI(execution)</bpmn:script>
       <bpmn:incoming>SequenceFlow_1aa2ek0</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_1252rbf</bpmn:outgoing>
       <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dss= new DeleteSliceService()
+def dss= new DoDeleteSliceService()
 dss.terminateNSIQuery(execution)</bpmn:script>
     </bpmn:scriptTask>
     <bpmn:sequenceFlow id="SequenceFlow_17tvomo" sourceRef="Task_1iomfas" targetRef="Task_1rc7mcw" />