summaryrefslogtreecommitdiffstats
path: root/bpmn
diff options
context:
space:
mode:
Diffstat (limited to 'bpmn')
-rw-r--r--bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/tasks/BBInputSetup.java3
-rw-r--r--bpmn/mso-infrastructure-bpmn/pom.xml20
-rw-r--r--bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/ActivateSliceService.groovy648
-rw-r--r--bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteCommunicationService.groovy7
-rw-r--r--bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoActivateSliceService.groovy273
-rw-r--r--bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoActivateTnNssi.groovy13
-rw-r--r--bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateCoreNSSI.groovy28
-rw-r--r--bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateCoreNonSharedSlice.groovy247
-rw-r--r--bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateCoreSharedSlice.groovy143
-rw-r--r--bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteSliceService.groovy66
-rw-r--r--bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoSendCommandToNSSMF.groovy423
-rw-r--r--bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/ServiceLevelUpgrade.groovy126
-rw-r--r--bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateCoreNonSharedSliceTest.groovy32
-rw-r--r--bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateCoreSharedSliceTest.groovy22
-rw-r--r--bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/ActivateSliceService.bpmn552
-rw-r--r--bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/GenericPnfHealthCheck.bpmn3
-rw-r--r--bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/GenericPnfSWUPDownload.bpmn3
-rw-r--r--bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/GenericPnfSoftwareUpgrade.bpmn3
-rw-r--r--bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/ServiceLevelUpgrade.bpmn140
-rw-r--r--bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoActivateSliceService.bpmn211
-rw-r--r--bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoActivateTransportNSSI.bpmn5
-rw-r--r--bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoAllocateCoreNSSI.bpmn1
-rw-r--r--bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoAllocateCoreSharedSlice.bpmn107
-rw-r--r--bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoAllocateTransportNSSI.bpmn6
-rw-r--r--bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeallocateTransportNSSI.bpmn2
-rw-r--r--bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteSliceService.bpmn27
-rw-r--r--bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoModifyTransportNSSI.bpmn2
-rw-r--r--bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoSendCommandToNSSMF.bpmn344
-rw-r--r--bpmn/so-bpmn-infrastructure-flows/src/test/java/org/onap/so/bpmn/infrastructure/process/ServiceLevelUpgradeTest.java4
-rw-r--r--bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ExecuteBuildingBlockBuilder.java217
-rw-r--r--bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowAction.java193
-rw-r--r--bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionConstants.java12
-rw-r--r--bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/listeners/SkipCDSBuildingBlockListener.java2
-rw-r--r--bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/listeners/SkipConfigVnfListener.java2
-rw-r--r--bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ExecuteBuildingBlockBuilderTest.java90
-rw-r--r--bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionTest.java55
36 files changed, 2062 insertions, 1970 deletions
diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/tasks/BBInputSetup.java b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/tasks/BBInputSetup.java
index 4cd1d7dcb0..d971689f94 100644
--- a/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/tasks/BBInputSetup.java
+++ b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/tasks/BBInputSetup.java
@@ -640,7 +640,8 @@ public class BBInputSetup implements JavaDelegate {
parameter.getServiceModel().getCurrentService(), vnfModelCustomizationUUID);
}
}
- if (vfModule.getModelInfoVfModule() != null && vfModule.getModelInfoVfModule().getModelName() != null
+ if (vfModule != null && vfModule.getModelInfoVfModule() != null
+ && vfModule.getModelInfoVfModule().getModelName() != null
&& vfModule.getModelInfoVfModule().getModelName().contains("helm")) {
parameter.setIsHelm(true);
}
diff --git a/bpmn/mso-infrastructure-bpmn/pom.xml b/bpmn/mso-infrastructure-bpmn/pom.xml
index b621853f2b..4f7ceca9b9 100644
--- a/bpmn/mso-infrastructure-bpmn/pom.xml
+++ b/bpmn/mso-infrastructure-bpmn/pom.xml
@@ -335,8 +335,11 @@
</dependency>
<dependency>
<groupId>org.onap.aaf.authz</groupId>
+ <artifactId>aaf-cadi-client</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.onap.aaf.authz</groupId>
<artifactId>aaf-cadi-aaf</artifactId>
- <version>${aaf.cadi.version}</version>
<exclusions>
<exclusion>
<groupId>javax.servlet</groupId>
@@ -348,5 +351,20 @@
</exclusion>
</exclusions>
</dependency>
+ <dependency>
+ <groupId>org.onap.aaf.authz</groupId>
+ <artifactId>aaf-auth-client</artifactId>
+ <scope>runtime</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.onap.aaf.authz</groupId>
+ <artifactId>aaf-misc-env</artifactId>
+ <scope>runtime</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.onap.aaf.authz</groupId>
+ <artifactId>aaf-misc-rosetta</artifactId>
+ <scope>runtime</scope>
+ </dependency>
</dependencies>
</project>
diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/ActivateSliceService.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/ActivateSliceService.groovy
index 36d579c7ab..5c030a9f86 100644
--- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/ActivateSliceService.groovy
+++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/ActivateSliceService.groovy
@@ -20,9 +20,7 @@
package org.onap.so.bpmn.infrastructure.scripts
-import static org.apache.commons.lang3.StringUtils.isBlank
-import java.lang.reflect.Type
-import javax.ws.rs.NotFoundException
+
import org.camunda.bpm.engine.delegate.BpmnError
import org.camunda.bpm.engine.delegate.DelegateExecution
import org.onap.aai.domain.yang.*
@@ -32,9 +30,12 @@ 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.AAIUriFactory
import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder
-import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder.Types
import org.onap.logging.filter.base.ErrorCode
-import org.onap.so.beans.nsmf.NSSI
+import org.onap.so.beans.nsmf.CustomerInfo
+import org.onap.so.beans.nsmf.NetworkType
+import org.onap.so.beans.nsmf.NssInstance
+import org.onap.so.beans.nsmf.OperationType
+import org.onap.so.beans.nsmf.OrchestrationStatusEnum
import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
import org.onap.so.bpmn.common.scripts.ExceptionUtil
import org.onap.so.bpmn.common.scripts.MsoUtils
@@ -46,8 +47,11 @@ import org.onap.so.logger.LoggingAnchor
import org.onap.so.logger.MessageEnum
import org.slf4j.Logger
import org.slf4j.LoggerFactory
-import com.google.gson.Gson
-import com.google.gson.reflect.TypeToken
+
+import javax.ws.rs.NotFoundException
+import java.util.function.Consumer
+
+import static org.apache.commons.lang3.StringUtils.isBlank
/**
* This groovy class supports the <class>ActivateSliceService.bpmn</class> process.
@@ -66,6 +70,8 @@ class ActivateSliceService extends AbstractServiceTaskProcessor {
RequestDBUtil requestDBUtil = new RequestDBUtil()
+ AAIResourcesClient client = getAAIClient()
+
private static final Logger logger = LoggerFactory.getLogger(ActivateSliceService.class)
void preProcessRequest(DelegateExecution execution) {
@@ -75,7 +81,7 @@ class ActivateSliceService extends AbstractServiceTaskProcessor {
try {
// check for incoming json message/input
- String siRequest = execution.getVariable("bpmnRequest")
+ String siRequest = Objects.requireNonNull(execution.getVariable("bpmnRequest"))
logger.debug(siRequest)
String requestId = execution.getVariable("mso-request-id")
@@ -109,13 +115,20 @@ class ActivateSliceService extends AbstractServiceTaskProcessor {
} else {
execution.setVariable("subscriptionServiceType", subscriptionServiceType)
}
- String operationId = jsonUtil.getJsonValue(siRequest, "operationId")
+ String operationId = Objects.requireNonNull(jsonUtil.getJsonValue(siRequest, "operationId"))
execution.setVariable("operationId", operationId)
- String operationType = execution.getVariable("operationType")
- execution.setVariable("operationType", operationType.toUpperCase())
-
+ String operationType = Objects.requireNonNull(execution.getVariable("operationType"))
logger.info("operationType is " + execution.getVariable("operationType") )
+
+ CustomerInfo customerInfo = CustomerInfo.builder().operationId(operationId)
+ .operationType(Objects.requireNonNull(OperationType.getOperationType(operationType)))
+ .globalSubscriberId(globalSubscriberId).serviceInstanceId(serviceInstanceId)
+ .subscriptionServiceType(subscriptionServiceType)
+ .build()
+
+ execution.setVariable("customerInfo", customerInfo)
+
} catch (BpmnError e) {
throw e
} catch (Exception ex) {
@@ -126,14 +139,58 @@ class ActivateSliceService extends AbstractServiceTaskProcessor {
logger.debug(Prefix + "preProcessRequest Exit")
}
+ /**
+ * Init the service Operation Status
+ */
+ def prepareInitServiceOperationStatus = { DelegateExecution execution ->
+ logger.debug(Prefix + "prepareActivateServiceOperationStatus Start")
+ try {
+ CustomerInfo customerInfo = execution.getVariable("customerInfo") as CustomerInfo
+ String serviceId = customerInfo.getServiceInstanceId()
+ String operationId = customerInfo.getOperationId()
+ String operationType = customerInfo.getOperationType().getType()
+ String userId = customerInfo.getGlobalSubscriberId()
+ String result = "processing"
+ String progress = "0"
+ String reason = ""
+ String operationContent = "Prepare service activation"
+
+ execution.setVariable("e2eserviceInstanceId", serviceId)
+ //execution.setVariable("operationType", operationType)
+
+ OperationStatus initStatus = new OperationStatus()
+ initStatus.setServiceId(serviceId)
+ initStatus.setOperationId(operationId)
+ initStatus.setOperation(operationType)
+ initStatus.setUserId(userId)
+ initStatus.setResult(result)
+ initStatus.setProgress(progress)
+ initStatus.setReason(reason)
+ initStatus.setOperationContent(operationContent)
+
+ requestDBUtil.prepareUpdateOperationStatus(execution, initStatus)
+
+ } catch (Exception e) {
+ logger.error(LoggingAnchor.FIVE, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(),
+ "Exception Occured Processing prepareInitServiceOperationStatus.", "BPMN",
+ ErrorCode.UnknownError.getValue(), "Exception is:\n" + e)
+ execution.setVariable("CVFMI_ErrorResponse",
+ "Error Occurred during prepareInitServiceOperationStatus Method:\n" + e.getMessage())
+ }
+ logger.debug(Prefix + "prepareInitServiceOperationStatus Exit")
+ }
+
def sendSyncResponse = { DelegateExecution execution ->
logger.debug(Prefix + "sendSyncResponse Start")
try {
- String operationId = execution.getVariable("operationId")
+ CustomerInfo customerInfo = execution.getVariable("customerInfo") as CustomerInfo
+ String operationId = customerInfo.getOperationId()
+
// RESTResponse for API Handler (APIH) Reply Task
String Activate5GsliceServiceRestRequest = """{"operationId":"${operationId}"}""".trim()
logger.debug(" sendSyncResponse to APIH:" + "\n" + Activate5GsliceServiceRestRequest)
+
sendWorkflowResponse(execution, 202, Activate5GsliceServiceRestRequest)
execution.setVariable("sentSyncResponse", true)
} catch (Exception ex) {
@@ -171,410 +228,289 @@ class ActivateSliceService extends AbstractServiceTaskProcessor {
logger.debug(Prefix + "sendSyncError Exit")
}
+ def checkAAIOrchStatusOfE2ESlice = { DelegateExecution execution ->
+ logger.debug(Prefix + "CheckAAIOrchStatus Start")
+ execution.setVariable("isContinue", "false")
+ CustomerInfo customerInfo = execution.getVariable("customerInfo") as CustomerInfo
+ String msg
+ String serviceInstanceId = customerInfo.serviceInstanceId
+ String globalSubscriberId = customerInfo.globalSubscriberId
+ String subscriptionServiceType = customerInfo.subscriptionServiceType
- def prepareCompletionRequest = { DelegateExecution execution ->
- logger.debug(Prefix + "prepareCompletionRequest Start")
- String serviceId = execution.getVariable("serviceInstanceId")
- String operationId = execution.getVariable("operationId")
- String userId = execution.getVariable("globalSubscriberId")
- //String result = execution.getVariable("result")
- String result = "finished"
- String progress = "100"
- String reason = ""
- String operationContent = execution.getVariable("operationContent")
- String operationType = execution.getVariable("operationType")
-
- OperationStatus initStatus = new OperationStatus()
- initStatus.setServiceId(serviceId)
- initStatus.setOperationId(operationId)
- initStatus.setOperation(operationType)
- initStatus.setUserId(userId)
- initStatus.setResult(result)
- initStatus.setProgress(progress)
- initStatus.setReason(reason)
- initStatus.setOperationContent(operationContent)
-
- requestDBUtil.prepareUpdateOperationStatus(execution, initStatus)
-
- logger.debug(Prefix + "prepareCompletionRequest Exit")
- }
-
+ logger.debug("serviceInstanceId: " + serviceInstanceId)
- /**
- * Init the service Operation Status
- */
- def prepareInitServiceOperationStatus = { DelegateExecution execution ->
- logger.debug(Prefix + "prepareActivateServiceOperationStatus Start")
+ //check the e2e slice status
try {
- String serviceId = execution.getVariable("serviceInstanceId")
- String operationId = execution.getVariable("operationId")
- String operationType = execution.getVariable("operationType")
- String userId = execution.getVariable("globalSubscriberId")
- String result = "processing"
- String progress = "0"
- String reason = ""
- String operationContent = "Prepare service activation"
-
- execution.setVariable("e2eserviceInstanceId", serviceId)
- execution.setVariable("operationType", operationType)
+ AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business()
+ .customer(globalSubscriberId)
+ .serviceSubscription(subscriptionServiceType)
+ .serviceInstance(serviceInstanceId))
- OperationStatus initStatus = new OperationStatus()
- initStatus.setServiceId(serviceId)
- initStatus.setOperationId(operationId)
- initStatus.setOperation(operationType)
- initStatus.setUserId(userId)
- initStatus.setResult(result)
- initStatus.setProgress(progress)
- initStatus.setReason(reason)
- initStatus.setOperationContent(operationContent)
+ AAIResultWrapper wrapper = client.get(uri, NotFoundException.class)
+ Optional<ServiceInstance> si = wrapper.asBean(ServiceInstance.class)
+ ServiceInstance serviceInstance = si.orElseThrow()
- requestDBUtil.prepareUpdateOperationStatus(execution, initStatus)
+ boolean isContinue = handleOperation(customerInfo, serviceInstance)
+ execution.setVariable("isContinue", isContinue)
+ customerInfo.setSnssai(serviceInstance.getEnvironmentContext())
- } catch (Exception e) {
- logger.error(LoggingAnchor.FIVE, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(),
- "Exception Occured Processing prepareInitServiceOperationStatus.", "BPMN",
- ErrorCode.UnknownError.getValue(), "Exception is:\n" + e)
- execution.setVariable("CVFMI_ErrorResponse",
- "Error Occurred during prepareInitServiceOperationStatus Method:\n" + e.getMessage())
+ execution.setVariable("customerInfo", customerInfo)
+ execution.setVariable("ssInstance", serviceInstance)
+ execution.setVariable("ssiUri", uri)
+ } catch (BpmnError e) {
+ throw e
+ } catch (Exception ex) {
+ execution.setVariable("isContinue", "false")
+ msg = "Exception in org.onap.so.bpmn.common.scripts.CompleteMsoProcess.CheckAAIOrchStatus, " +
+ "Requested e2eservice does not exist: " + ex.getMessage()
+ logger.info(msg)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
}
- logger.debug(Prefix + "prepareInitServiceOperationStatus Exit")
- }
+ logger.debug(Prefix + "CheckAAIOrchStatus Exit")
+ }
- private getSNSSIStatusByNsi = { DelegateExecution execution, String NSIServiceId ->
+ static boolean handleOperation(CustomerInfo customerInfo, ServiceInstance serviceInstance) {
+ OperationType operationType = customerInfo.operationType
+ OrchestrationStatusEnum status = OrchestrationStatusEnum.getStatus(Objects.requireNonNull(
+ serviceInstance.getOrchestrationStatus()))
- logger.debug(Prefix + "getSNSSIStatusByNsi Start")
- String globalSubscriberId = execution.getVariable("globalSubscriberId")
- String subscriptionServiceType = execution.getVariable("subscriptionServiceType")
+ return ((OrchestrationStatusEnum.ACTIVATED == status && OperationType.DEACTIVATE == operationType)
+ || (OrchestrationStatusEnum.DEACTIVATED == status && OperationType.ACTIVATE == operationType))
+ }
- AAIResourcesClient client = new AAIResourcesClient()
- AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(subscriptionServiceType).serviceInstance(NSIServiceId))
- if (!client.exists(uri)) {
- exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Service Instance was not found in aai")
- }
- AAIResultWrapper wrapper = client.get(uri, NotFoundException.class)
- Optional<ServiceInstance> si = wrapper.asBean(ServiceInstance.class)
- if (si.isPresent()) {
+ void checkAAIOrchStatusOfAllocates(DelegateExecution execution) {
+ logger.debug(Prefix + "CheckAAIOrchStatus Start")
+ CustomerInfo customerInfo = execution.getVariable("customerInfo") as CustomerInfo
+ String msg
+ String serviceInstanceId = customerInfo.serviceInstanceId
+ String globalSubscriberId = customerInfo.globalSubscriberId
+ String subscriptionServiceType = customerInfo.subscriptionServiceType
- List<Relationship> relatedList = si.get().getRelationshipList().getRelationship()
- for (Relationship relationship : relatedList) {
- String relatedTo = relationship.getRelatedTo()
- if (relatedTo.toLowerCase() == "allotted-resource") {
- //get snssi from allotted resource in list by nsi
- List<String> SNSSIList = new ArrayList<>()
- List<RelationshipData> relationshipDataList = relationship.getRelationshipData()
- for (RelationshipData relationshipData : relationshipDataList) {
- if (relationshipData.getRelationshipKey() == "service-instance.service-instance-id") {
- SNSSIList.add(relationshipData.getRelationshipValue())
- }
- }
- for (String snssi : SNSSIList) {
- AAIResourcesClient client01 = new AAIResourcesClient()
- AAIResourceUri uri01 = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(subscriptionServiceType).serviceInstance(snssi))
- if (!client.exists(uri01)) {
- exceptionUtil.buildAndThrowWorkflowException(execution, 2500,
- "Service Instance was not found in aai")
- }
- AAIResultWrapper wrapper01 = client01.get(uri01, NotFoundException.class)
- Optional<ServiceInstance> nssiSi = wrapper01.asBean(ServiceInstance.class)
- if (nssiSi.isPresent()) {
- return nssiSi.get().getOrchestrationStatus() == "deactivated"
- }
- }
+ logger.debug("serviceInstanceId: " + serviceInstanceId)
- }
- }
+ //check the NSI is exist or the status of NSI is active or de-active
+ try {
- }
- logger.debug(Prefix + "getSNSSIStatusByNsi Exit")
- }
+ //get the allotted-resources by e2e slice id
+ AAIPluralResourceUri uriAllotted = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business()
+ .customer(globalSubscriberId)
+ .serviceSubscription(subscriptionServiceType)
+ .serviceInstance(serviceInstanceId)
+ .allottedResources()
+ )
+ AAIResultWrapper wrapperAllotted = client.get(uriAllotted, NotFoundException.class)
+ Optional<AllottedResources> allAllotted = wrapperAllotted.asBean(AllottedResources.class)
- def updateStatusSNSSAIandNSIandNSSI = { DelegateExecution execution ->
- logger.debug(Prefix + "updateStatusSNSSAIandNSIandNSSI Start")
- logger.debug(" ***** update SNSSAI NSI NSSI slicing ***** ")
- String e2eserviceInstanceId = execution.getVariable("e2eserviceInstanceId")
- String NSIserviceInstanceId = execution.getVariable("NSIserviceid")
-
- String globalCustId = execution.getVariable("globalSubscriberId")
- String serviceType = execution.getVariable("serviceType")
- String operationType = execution.getVariable("operationType")
-
- String nssiMap = execution.getVariable("nssiMap")
- Type type = new TypeToken<HashMap<String, NSSI>>() {}.getType()
- Map<String, NSSI> activateNssiMap = new Gson().fromJson(nssiMap, type)
- //update tn/cn/an nssi
- for (Map.Entry<String, NSSI> entry : activateNssiMap.entrySet()) {
- NSSI nssi = entry.getValue()
- String nssiid = nssi.getNssiId()
- updateStratus(execution, globalCustId, serviceType, nssiid, operationType)
- }
- if (operationType.equalsIgnoreCase("activation")) {
- //update the s-nssai
- updateStratus(execution, globalCustId, serviceType, e2eserviceInstanceId, operationType)
- //update the nsi
- updateStratus(execution, globalCustId, serviceType, NSIserviceInstanceId, operationType)
- } else {
- //update the s-nssai
- updateStratus(execution, globalCustId, serviceType, e2eserviceInstanceId, operationType)
- boolean flag = getSNSSIStatusByNsi(execution, NSIserviceInstanceId)
- if (flag) {
- //update the nsi
- updateStratus(execution, globalCustId, serviceType, NSIserviceInstanceId, operationType)
- } else {
- logger.error("Service's status update failed")
- String msg = "Service's status update failed"
- exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+ AllottedResources allottedResources = allAllotted.get()
+ List<AllottedResource> AllottedResourceList = allottedResources.getAllottedResource()
+ if (AllottedResourceList.isEmpty()) {
+ execution.setVariable("isContinue", "false")
+ exceptionUtil.buildAndThrowWorkflowException(execution, 2500,
+ "allottedResources in aai is empty")
}
+ AllottedResource ar = AllottedResourceList.first()
+ String relatedLink = ar.getRelationshipList().getRelationship().first().getRelatedLink()
+ String nsiServiceId = relatedLink.substring(relatedLink.lastIndexOf("/") + 1, relatedLink.length())
+ customerInfo.setNsiId(nsiServiceId)
+ execution.setVariable("customerInfo", customerInfo)
+ logger.info("the NSI ID is:" + nsiServiceId)
+ } catch (BpmnError e) {
+ throw e
+ } catch (Exception ex) {
+ logger.info("NSI Service doesnt exist")
+ execution.setVariable("isContinue", "false")
+ msg = "Exception in org.onap.so.bpmn.common.scripts.CompleteMsoProcess.CheckAAIOrchStatus " + ex.getMessage()
+ logger.info(msg)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
}
- logger.debug(Prefix + "updateStatusSNSSAIandNSIandNSSI Exit")
+ logger.debug(Prefix + "CheckAAIOrchStatus Exit")
}
+ void checkAAIOrchStatusOfNSI(DelegateExecution execution) {
- def updateStratus = { DelegateExecution execution, String globalCustId,
- String serviceType, String serviceId, String operationType ->
- logger.debug(Prefix + "updateStratus Start")
+ logger.debug(Prefix + "CheckAAIOrchStatus Start")
+ CustomerInfo customerInfo = execution.getVariable("customerInfo") as CustomerInfo
+ String msg = ""
+ String globalSubscriberId = customerInfo.globalSubscriberId
+ String subscriptionServiceType = customerInfo.subscriptionServiceType
+ String nsiServiceId = customerInfo.getNsiId()
+
+ logger.debug("network slice instance id: " + nsiServiceId)
+ //check the NSI is exist or the status of NSI is active or de-active
try {
- AAIResourcesClient client = new AAIResourcesClient()
- AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalCustId).serviceSubscription(serviceType).serviceInstance(serviceId))
- if (!client.exists(uri)) {
- exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Service Instance was not found in aai")
- }
+ //Query nsi by nsi id
+
+ //get the NSI id by e2e slice id
+ AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business()
+ .customer(globalSubscriberId)
+ .serviceSubscription(subscriptionServiceType)
+ .serviceInstance(nsiServiceId))
+
AAIResultWrapper wrapper = client.get(uri, NotFoundException.class)
Optional<ServiceInstance> si = wrapper.asBean(ServiceInstance.class)
- if (si.isPresent()) {
- if (operationType.equalsIgnoreCase("activation")) {
- if (si.get().getOrchestrationStatus() == "deactivated") {
- si.get().setOrchestrationStatus("activated")
- client.update(uri, si.get())
- }
- } else {
- if (si.get().getOrchestrationStatus() == "activated") {
- si.get().setOrchestrationStatus("deactivated")
- client.update(uri, si.get())
- }
- }
-
+ ServiceInstance nsInstance = si.get()
+ if (!"nsi".equalsIgnoreCase(nsInstance.getServiceRole().toLowerCase())) {
+ logger.info("the service id" + nsInstance.getServiceInstanceId() + "is " +
+ nsInstance.getServiceRole())
+ exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
}
- } catch (Exception e) {
- logger.info("Service is already in active state")
- String msg = "Service is already in active state, " + e.getMessage()
+ execution.setVariable("nsInstance", nsInstance)
+ execution.setVariable("nsiUri", uri)
+ boolean isContinue = handleOperation(customerInfo, nsInstance)
+ execution.setVariable("isContinue", isContinue)
+
+ } catch (BpmnError e) {
+ throw e
+ } catch (Exception ex) {
+ logger.info("NSI Service doesnt exist")
+ execution.setVariable("isActivate", "false")
+ execution.setVariable("isContinue", "false")
+ msg = "Exception in org.onap.so.bpmn.common.scripts.CompleteMsoProcess.CheckAAIOrchStatus " + ex.getMessage()
+ logger.info(msg)
exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
}
-
- logger.debug(Prefix + "updateStratus Exit")
+ logger.debug(Prefix + "CheckAAIOrchStatus Exit")
}
-
- def prepareActivation = { DelegateExecution execution ->
+ void prepareActivation(DelegateExecution execution) {
logger.debug(Prefix + "prepareActivation Start")
- logger.debug(" ***** prepare active NSI/AN/CN/TN slice ***** ")
- String NSIserviceInstanceId = execution.getVariable("NSIserviceid")
-
- String globalSubscriberId = execution.getVariable("globalSubscriberId")
- String subscriptionServiceType = execution.getVariable("subscriptionServiceType")
-
- Map<String, NSSI> nssiMap = new HashMap<>()
+ CustomerInfo customerInfo = execution.getVariable("customerInfo") as CustomerInfo
+ String globalSubscriberId = customerInfo.globalSubscriberId
+ String subscriptionServiceType = customerInfo.subscriptionServiceType
- List<String> activationSequence = new ArrayList<>(Arrays.asList("an", "tn", "cn"))
-
- def activationCount = activationSequence.size()
-
- execution.setVariable("activationIndex", "0")
+ logger.debug(" ***** prepare active NSI/AN/CN/TN slice ***** ")
- execution.setVariable("activationCount", activationCount)
+ Queue<NssInstance> nssInstances = new LinkedList<>()
+ ServiceInstance nsInstance =
+ execution.getVariable("nsInstance") as ServiceInstance
try {
//get the TN NSSI id by NSI id, active NSSI TN slicing
- AAIResourcesClient client = new AAIResourcesClient()
- AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(subscriptionServiceType).serviceInstance(NSIserviceInstanceId))
- if (!client.exists(uri)) {
- exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Service Instance was not found in aai")
- }
- AAIResultWrapper wrapper = client.get(uri, NotFoundException.class)
- Optional<ServiceInstance> si = wrapper.asBean(ServiceInstance.class)
- if (si.isPresent()) {
-
- List<Relationship> relatedList = si.get().getRelationshipList().getRelationship()
- for (Relationship relationship : relatedList) {
- String relatedTo = relationship.getRelatedTo()
- if (relatedTo.toLowerCase() == "service-instance") {
- String relatioshipurl = relationship.getRelatedLink()
- String nssiserviceid =
- relatioshipurl.substring(relatioshipurl.lastIndexOf("/") + 1, relatioshipurl.length())
-
- AAIResourcesClient client01 = new AAIResourcesClient()
- AAIResourceUri uri01 = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(subscriptionServiceType).serviceInstance(nssiserviceid))
- if (!client.exists(uri01)) {
- exceptionUtil.buildAndThrowWorkflowException(execution, 2500,
- "Service Instance was not found in aai")
- }
- AAIResultWrapper wrapper01 = client01.get(uri01, NotFoundException.class)
- Optional<ServiceInstance> nssiSi = wrapper01.asBean(ServiceInstance.class)
- if (nssiSi.isPresent()) {
- if (nssiSi.get().getEnvironmentContext().toLowerCase().contains("an")
- || nssiSi.get().getEnvironmentContext().toLowerCase().contains("cn")
- || nssiSi.get().getEnvironmentContext().toLowerCase().contains("tn")) {
- nssiMap.put(nssiSi.get().getEnvironmentContext(),
- new NSSI(nssiSi.get().getServiceInstanceId(),
- nssiSi.get().getModelInvariantId(), nssiSi.get().getModelVersionId()))
- }
- }
- }
+ List<Relationship> relatedList = nsInstance.getRelationshipList().getRelationship()
+ for (Relationship relationship : relatedList) {
+ String relatedTo = relationship.getRelatedTo()
+ if (!"service-instance".equalsIgnoreCase(relatedTo)) {
+ continue
}
-
-
+ String relatioshipurl = relationship.getRelatedLink()
+ String nssiserviceid = relatioshipurl.substring(relatioshipurl.lastIndexOf("/") + 1,
+ relatioshipurl.length())
+
+ AAIResourceUri nsiUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business()
+ .customer(globalSubscriberId)
+ .serviceSubscription(subscriptionServiceType)
+ .serviceInstance(nssiserviceid))
+ if (!client.exists(nsiUri)) {
+ exceptionUtil.buildAndThrowWorkflowException(execution, 2500,
+ "Service Instance was not found in aai")
+ }
+ AAIResultWrapper wrapper01 = client.get(nsiUri, NotFoundException.class)
+ Optional<ServiceInstance> nssiSi = wrapper01.asBean(ServiceInstance.class)
+ nssiSi.ifPresent(new Consumer<ServiceInstance>() {
+ @Override
+ void accept(ServiceInstance instance) {
+ String env = Objects.requireNonNull(instance.getEnvironmentContext())
+ NssInstance nssi = NssInstance.builder().nssiId(instance.getServiceInstanceId())
+ .modelInvariantId(instance.getModelInvariantId())
+ .modelVersionId(instance.getModelVersionId())
+ .networkType(NetworkType.fromString(env))
+ .operationType(customerInfo.operationType)
+ .snssai(customerInfo.snssai)
+ .serviceType(instance.getServiceType())
+ .build()
+ nssInstances.offer(nssi)
+ }
+ })
}
+ execution.setVariable("nssInstances", nssInstances)
+ execution.setVariable("nssInstanceInfos", nssInstances)
} catch (Exception e) {
String msg = "Requested service does not exist:" + e.getMessage()
logger.info("Service doesnt exist")
exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
}
- if (nssiMap.size() > 0) {
- execution.setVariable("isNSSIActivate", "true")
- String nssiMap01 = mapToJsonStr(nssiMap)
- execution.setVariable("nssiMap", nssiMap01)
- execution.setVariable("operation_type", "activate")
- execution.setVariable("activationCount", nssiMap.size())
- logger.info("the nssiMap01 is :" + nssiMap01)
- } else {
- execution.setVariable("isNSSIActivate", "false")
- }
-
logger.debug(Prefix + "prepareActivation Exit")
}
-
- private mapToJsonStr = { HashMap<String, NSSI> stringNSSIHashMap ->
- HashMap<String, NSSI> map = new HashMap<String, NSSI>()
- for (Map.Entry<String, NSSI> child : stringNSSIHashMap.entrySet()) {
- map.put(child.getKey(), child.getValue())
+ void isOperationFinished(DelegateExecution execution) {
+ Queue<NssInstance> nssInstances = execution.getVariable("nssInstances") as Queue<NssInstance>
+ if (nssInstances.isEmpty()) {
+ execution.setVariable("isOperationFinished", "true")
}
- return new Gson().toJson(map)
}
+ def updateStatusSNSSAIandNSIandNSSI = { DelegateExecution execution ->
+ logger.debug(Prefix + "updateStatusSNSSAIandNSIandNSSI Start")
+ logger.debug(" ***** update SNSSAI NSI NSSI slicing ***** ")
+ ServiceInstance ssInstance = execution.getVariable("ssInstance") as ServiceInstance
+ AAIResourceUri ssUri = execution.getVariable("ssiUri") as AAIResourceUri
- def checkAAIOrchStatusofslice = { DelegateExecution execution ->
- logger.debug(Prefix + "CheckAAIOrchStatus Start")
+ CustomerInfo customerInfo = execution.getVariable("customerInfo") as CustomerInfo
+ OperationType operationType = customerInfo.operationType
- String msg = ""
- String serviceInstanceId = execution.getVariable("serviceInstanceId")
- String globalSubscriberId = execution.getVariable("globalSubscriberId")
- String subscriptionServiceType = execution.getVariable("subscriptionServiceType")
- String operationType = execution.getVariable("operationType")
+ updateStratus(execution, ssInstance, operationType, ssUri)
+ //update the nsi
+ ServiceInstance nsInstance = execution.getVariable("nsInstance") as ServiceInstance
+ AAIResourceUri nsiUri = execution.getVariable("nsiUri") as AAIResourceUri
- logger.debug("serviceInstanceId: " + serviceInstanceId)
+ updateStratus(execution, nsInstance, operationType, nsiUri)
- //check the e2e slice status
- try {
- try {
- AAIResourcesClient client = new AAIResourcesClient()
- AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(subscriptionServiceType).serviceInstance(serviceInstanceId))
- if (!client.exists(uri)) {
- exceptionUtil.buildAndThrowWorkflowException(execution, 2500,
- "Service Instance was not found in aai")
- }
- AAIResultWrapper wrapper = client.get(uri, NotFoundException.class)
- Optional<ServiceInstance> si = wrapper.asBean(ServiceInstance.class)
- if (si.isPresent()) {
- if (si.get().getOrchestrationStatus().toLowerCase() == "activated" &&
- operationType.equalsIgnoreCase("deactivation")) {
- logger.info("Service is in active state")
- execution.setVariable("e2eservicestatus", "activated")
- execution.setVariable("isContinue", "true")
- String snssai = si.get().getEnvironmentContext()
- execution.setVariable("snssai", snssai)
- } else if (si.get().getOrchestrationStatus().toLowerCase() == "deactivated" &&
- operationType.equalsIgnoreCase("activation")) {
- logger.info("Service is in de-activated state")
- execution.setVariable("e2eservicestatus", "deactivated")
- execution.setVariable("isContinue", "true")
- String snssai = si.get().getEnvironmentContext()
- execution.setVariable("snssai", snssai)
- } else {
- execution.setVariable("isContinue", "false")
- }
- }
- } catch (Exception e) {
- msg = "Requested e2eservice does not exist"
- logger.info("e2eservice doesnt exist")
- execution.setVariable("isContinue", "false")
- exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
- }
- //check the NSI is exist or the status of NSI is active or de-active
- try {
+ logger.debug(Prefix + "updateStatusSNSSAIandNSIandNSSI Exit")
+ }
- //get the allotted-resources by e2e slice id
- AAIResourcesClient client_allotted = new AAIResourcesClient()
- AAIPluralResourceUri uri_allotted = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(subscriptionServiceType).serviceInstance(serviceInstanceId).allottedResources()
- )
- if (!client_allotted.exists(uri_allotted)) {
- exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Service Instance was not found in aai")
- }
- AAIResultWrapper wrapper_allotted = client_allotted.get(uri_allotted, NotFoundException.class)
- Optional<AllottedResources> all_allotted = wrapper_allotted.asBean(AllottedResources.class)
-
- if (all_allotted.isPresent() && all_allotted.get().getAllottedResource()) {
- List<AllottedResource> AllottedResourceList = all_allotted.get().getAllottedResource()
- AllottedResource ar = AllottedResourceList.first()
- String relatedLink = ar.getRelationshipList().getRelationship().first().getRelatedLink()
- String nsiserviceid = relatedLink.substring(relatedLink.lastIndexOf("/") + 1, relatedLink.length())
- execution.setVariable("NSIserviceid", nsiserviceid)
- logger.info("the NSI ID is:" + nsiserviceid)
-
- //Query nsi by nsi id
- try {
- //get the NSI id by e2e slice id
- AAIResourcesClient client = new AAIResourcesClient()
- AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(subscriptionServiceType).serviceInstance(nsiserviceid))
- if (!client.exists(uri)) {
- exceptionUtil.buildAndThrowWorkflowException(execution, 2500,
- "Service Instance was not found in aai")
- }
- AAIResultWrapper wrapper = client.get(uri, NotFoundException.class)
- Optional<ServiceInstance> si = wrapper.asBean(ServiceInstance.class)
-
- if (si.isPresent()) {
- if (si.get().getServiceRole().toLowerCase() == "nsi") {
- if (si.get().getOrchestrationStatus() == "activated") {
- logger.info("NSI services is in activated state")
- execution.setVariable("NSIservicestatus", "activated")
- } else {
- logger.info("NSI services is in deactivated state")
- execution.setVariable("NSIservicestatus", "deactivated")
- }
- } else {
- logger.info("the service id" + si.get().getServiceInstanceId() + "is " +
- si.get().getServiceRole())
- exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
- }
- }
- } catch (Exception e) {
- msg = "Requested NSI service does not exist:" + e.getMessage()
- logger.info("NSI service doesnt exist")
- execution.setVariable("isContinue", "false")
- exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
- }
- }
- } catch (Exception e) {
- msg = "Requested service does not exist: " + e.getMessage()
- logger.info("NSI Service doesnt exist")
- execution.setVariable("isActivate", "false")
- exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+ void updateStratus(DelegateExecution execution, ServiceInstance serviceInstance,
+ OperationType operationType, AAIResourceUri uri) {
+
+ logger.debug(Prefix + "updateStratus Start")
+
+ try {
+ serviceInstance.setOrchestrationStatus()
+ if (OperationType.ACTIVATE == operationType) {
+ serviceInstance.setOrchestrationStatus(OrchestrationStatusEnum.ACTIVATED.getValue())
+ } else {
+ serviceInstance.setOrchestrationStatus(OrchestrationStatusEnum.DEACTIVATED.getValue())
}
- } catch (BpmnError e) {
- throw e
- } catch (Exception ex) {
- msg = "Exception in org.onap.so.bpmn.common.scripts.CompleteMsoProcess.CheckAAIOrchStatus " + ex.getMessage()
- logger.info(msg)
+ client.update(uri, serviceInstance)
+ } catch (Exception e) {
+ logger.info("Service is already in active state")
+ String msg = "Service is already in active state, " + e.getMessage()
exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
}
- logger.debug(Prefix + "CheckAAIOrchStatus Exit")
+ logger.debug(Prefix + "updateStratus Exit")
}
+ def prepareCompletionRequest = { DelegateExecution execution ->
+ logger.debug(Prefix + "prepareCompletionRequest Start")
+ CustomerInfo customerInfo = execution.getVariable("customerInfo") as CustomerInfo
+ String serviceId = customerInfo.getServiceInstanceId()
+ String operationId = customerInfo.getOperationId()
+ String userId = customerInfo.getGlobalSubscriberId()
+
+ String result = "finished"
+ String progress = "100"
+ String reason = ""
+ String operationContent = "action finished success"
+ String operationType = customerInfo.operationType.getType()
+
+ OperationStatus initStatus = new OperationStatus()
+ initStatus.setServiceId(serviceId)
+ initStatus.setOperationId(operationId)
+ initStatus.setOperation(operationType)
+ initStatus.setUserId(userId)
+ initStatus.setResult(result)
+ initStatus.setProgress(progress)
+ initStatus.setReason(reason)
+ initStatus.setOperationContent(operationContent)
+
+ requestDBUtil.prepareUpdateOperationStatus(execution, initStatus)
+
+ logger.debug(Prefix + "prepareCompletionRequest Exit")
+ }
}
diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteCommunicationService.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteCommunicationService.groovy
index b94c81b41f..d00f349690 100644
--- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteCommunicationService.groovy
+++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteCommunicationService.groovy
@@ -19,6 +19,7 @@
*/
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
@@ -319,12 +320,12 @@ class DeleteCommunicationService extends AbstractServiceTaskProcessor {
CommunicationServiceProfile csProfile = csProfiles.getCommunicationServiceProfile().get(0)
profileId = csProfile ? csProfile.getProfileId() : ""
}
- resourceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(serviceType).serviceInstance(serviceInstanceId).communicationServiceProfile(profileId))
- if (!getAAIClient().exists(resourceUri)) {
+ AAISimpleUri profileUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(serviceType).serviceInstance(serviceInstanceId).communicationServiceProfile(profileId))
+ if (!getAAIClient().exists(profileUri)) {
exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "communication service profile was not found in aai")
}
- getAAIClient().delete(resourceUri)
+ getAAIClient().delete(profileUri)
LOGGER.debug("end delete communication service profile from AAI")
}
catch (any)
diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoActivateSliceService.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoActivateSliceService.groovy
new file mode 100644
index 0000000000..3d9f67653b
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoActivateSliceService.groovy
@@ -0,0 +1,273 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ # Copyright (c) 2020, CMCC Technologies Co., Ltd.
+ #
+ # Licensed under the Apache License, Version 2.0 (the "License")
+ # you may not use this file except in compliance with the License.
+ # You may obtain a copy of the License at
+ #
+ # http://www.apache.org/licenses/LICENSE-2.0
+ #
+ # Unless required by applicable law or agreed to in writing, software
+ # distributed under the License is distributed on an "AS IS" BASIS,
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ # See the License for the specific language governing permissions and
+ # limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.bpmn.infrastructure.scripts
+
+import com.fasterxml.jackson.databind.ObjectMapper
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+import org.apache.commons.lang3.StringUtils
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.delegate.DelegateExecution
+import org.onap.logging.filter.base.ErrorCode
+import org.onap.so.beans.nsmf.*
+import org.onap.so.beans.nsmf.oof.SubnetType
+import org.onap.so.bpmn.common.scripts.*
+import org.onap.so.bpmn.core.UrnPropertiesReader
+import org.onap.so.bpmn.core.WorkflowException
+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.logger.LoggingAnchor
+import org.onap.so.logger.MessageEnum
+import org.slf4j.Logger
+import org.slf4j.LoggerFactory
+import org.springframework.web.util.UriUtils
+
+import java.lang.reflect.Type
+
+/**
+ * This class supports the DoCreateVnf building block subflow
+ * with the creation of a generic vnf for
+ * infrastructure.
+ *
+ */
+class DoActivateSliceService extends AbstractServiceTaskProcessor {
+
+ private static final Logger logger = LoggerFactory.getLogger(DoActivateSliceService.class)
+
+ private static final NSSMF_ACTIVATION_URL = "/api/rest/provMns/v1/NSS/%s/activation"
+
+ private static final NSSMF_DEACTIVATION_URL = "/api/rest/provMns/v1/NSS/%s/deactivation"
+
+ private static final NSSMF_QUERY_JOB_STATUS_URL = "/api/rest/provMns/v1/NSS/jobs/%s"
+
+ String Prefix="DoCNSSMF_"
+ ExceptionUtil exceptionUtil = new ExceptionUtil()
+
+ JsonUtils jsonUtil = new JsonUtils()
+
+ ObjectMapper objectMapper = new ObjectMapper()
+
+ SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
+
+ private NssmfAdapterUtils nssmfAdapterUtils = new NssmfAdapterUtils(httpClientFactory, jsonUtil)
+
+ /**
+ * This method gets and validates the incoming
+ * request.
+ *
+ * @param - execution
+ *
+ */
+ public void preProcessRequest(DelegateExecution execution) {
+
+ execution.setVariable("prefix",Prefix)
+ logger.debug("STARTED Do sendcommandtoNssmf PreProcessRequest Process")
+
+ /*******************/
+ try{
+ Queue<NssInstance> nssInstances = execution.getVariable("nssInstances") as Queue<NssInstance>
+ NssInstance nssInstance = nssInstances.poll()
+ execution.setVariable("nssInstances", nssInstances)
+ execution.setVariable("nssInstance", nssInstance)
+
+ logger.info("the end !!")
+ }catch(BpmnError b){
+ logger.debug("Rethrowing MSOWorkflowException")
+ throw b
+ }catch(Exception e){
+ logger.info("the end of catch !!")
+ logger.debug(" Error Occured in DoSendCommandToNSSMF PreProcessRequest method!" + e.getMessage())
+ exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in DoSendCommandToNSSMF PreProcessRequest")
+
+ }
+ logger.trace("COMPLETED DoSendCommandToNSSMF PreProcessRequest Process")
+ }
+
+ void prepareCompose(DelegateExecution execution) {
+ NssInstance nssInstance = execution.getVariable("nssInstance") as NssInstance
+ execution.setVariable("nssInstanceId", nssInstance.nssiId)
+ String serviceModelInfo = """{
+ "modelInvariantUuid":"${nssInstance.modelInvariantId}",
+ "modelUuid":"${nssInstance.modelVersionId}",
+ "modelVersion":""
+ }"""
+ execution.setVariable("serviceModelInfo", serviceModelInfo)
+ }
+
+ /**
+ * get vendor Info
+ * @param execution
+ */
+ void processDecomposition(DelegateExecution execution) {
+ logger.debug("***** processDecomposition *****")
+
+ try {
+ ServiceDecomposition serviceDecomposition =
+ execution.getVariable("serviceDecomposition") as ServiceDecomposition
+
+ String vendor = serviceDecomposition.getServiceRole()
+ CustomerInfo customerInfo = execution.getVariable("customerInfo") as CustomerInfo
+ NssInstance nssInstance = execution.getVariable("nssInstance") as NssInstance
+ String reqUrl
+ String actionType
+ if (OperationType.ACTIVATE == nssInstance.operationType) {
+ reqUrl = String.format(NSSMF_ACTIVATION_URL, nssInstance.snssai)
+ actionType = "activate"
+ } else {
+ reqUrl = String.format(NSSMF_DEACTIVATION_URL, nssInstance.snssai)
+ actionType = "deactivate"
+ }
+ execution.setVariable("reqUrl", reqUrl)
+
+ NssmfAdapterNBIRequest nbiRequest = new NssmfAdapterNBIRequest()
+
+ EsrInfo esrInfo = new EsrInfo()
+ esrInfo.setVendor(vendor)
+ esrInfo.setNetworkType(nssInstance.networkType)
+
+ ServiceInfo serviceInfo = ServiceInfo.builder()
+ .nssiId(nssInstance.nssiId)
+ .subscriptionServiceType(customerInfo.subscriptionServiceType)
+ .globalSubscriberId(customerInfo.globalSubscriberId)
+ .nsiId(customerInfo.nsiId)
+ .serviceInvariantUuid(nssInstance.modelInvariantId)
+ .serviceUuid(nssInstance.modelVersionId)
+ .serviceType(nssInstance.serviceType)
+ .actionType(actionType)
+ .build()
+
+ ActDeActNssi actDeActNssi = new ActDeActNssi()
+ actDeActNssi.setNsiId(customerInfo.nsiId)
+ actDeActNssi.setNssiId(nssInstance.nssiId)
+
+ nbiRequest.setEsrInfo(esrInfo)
+ nbiRequest.setServiceInfo(serviceInfo)
+ nbiRequest.setActDeActNssi(actDeActNssi)
+ execution.setVariable("nbiRequest", nbiRequest)
+ execution.setVariable("esrInfo", esrInfo)
+ execution.setVariable("serviceInfo", serviceInfo)
+
+ } catch (any) {
+ String exceptionMessage = "Bpmn error encountered in deallocate nssi. processDecomposition() - " + any.getMessage()
+ logger.debug(exceptionMessage)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+ }
+ logger.debug("***** Exit processDecomposition *****")
+ }
+
+ /**
+ * send Create Request NSSMF
+ * @param execution
+ */
+ void sendCreateRequestNSSMF(DelegateExecution execution) {
+ NssmfAdapterNBIRequest nbiRequest = execution.getVariable("nbiRequest") as NssmfAdapterNBIRequest
+ String nssmfRequest = objectMapper.writeValueAsString(nbiRequest)
+ logger.debug("sendCreateRequestNSSMF: " + nssmfRequest)
+
+ String reqUrl = execution.getVariable("reqUrl")
+ String response = nssmfAdapterUtils.sendPostRequestNSSMF(execution, reqUrl, nssmfRequest)
+
+ if (response != null) {
+ NssiResponse nssiResponse = objectMapper.readValue(response, NssiResponse.class)
+ execution.setVariable("nssiAllocateResult", nssiResponse)
+ }
+ //todo: error
+ }
+
+ /**
+ * query nssi allocate status
+ * @param execution
+ */
+ void queryNSSIStatus(DelegateExecution execution) {
+ NssmfAdapterNBIRequest nbiRequest = new NssmfAdapterNBIRequest()
+ EsrInfo esrInfo = execution.getVariable("esrInfo") as EsrInfo
+ ServiceInfo serviceInfo = execution.getVariable("serviceInfo") as ServiceInfo
+ nbiRequest.setEsrInfo(esrInfo)
+ nbiRequest.setServiceInfo(serviceInfo)
+
+ NssiResponse nssiAllocateResult = execution.getVariable("nssiAllocateResult") as NssiResponse
+ String jobId = nssiAllocateResult.getJobId()
+
+ String endpoint = String.format(NSSMF_QUERY_JOB_STATUS_URL, jobId)
+
+ String response =
+ nssmfAdapterUtils.sendPostRequestNSSMF(execution, endpoint, objectMapper.writeValueAsString(nbiRequest))
+
+ logger.debug("nssmf response nssiAllocateStatus:" + response)
+
+ if (response != null) {
+ JobStatusResponse jobStatusResponse = objectMapper.readValue(response, JobStatusResponse.class)
+
+ execution.setVariable("nssiAllocateStatus", jobStatusResponse)
+ if (jobStatusResponse.getResponseDescriptor().getProgress() == 100) {
+ execution.setVariable("jobFinished", true)
+ }
+ }
+ }
+
+ void timeDelay(DelegateExecution execution) {
+ logger.trace("Enter timeDelay in DoAllocateNSSI()")
+ try {
+ Thread.sleep(60000)
+
+ int currentCycle = execution.hasVariable("currentCycle") ?
+ execution.getVariable("currentCycle") as Integer : 1
+
+ currentCycle = currentCycle + 1
+ if(currentCycle > 60)
+ {
+ logger.trace("Completed all the retry times... but still nssmf havent completed the creation process...")
+ exceptionUtil.buildAndThrowWorkflowException(execution, 500, "NSSMF creation didnt complete by time...")
+ }
+ execution.setVariable("currentCycle", currentCycle)
+ } catch(InterruptedException e) {
+ logger.info("Time Delay exception" + e)
+ }
+ logger.trace("Exit timeDelay in DoAllocateNSSI()")
+ }
+
+ void sendSyncError (DelegateExecution execution) {
+ logger.trace("start sendSyncError")
+ try {
+ String errorMessage = ""
+ if (execution.getVariable("WorkflowException") instanceof WorkflowException) {
+ WorkflowException wfe = execution.getVariable("WorkflowException")
+ errorMessage = wfe.getErrorMessage()
+ } else {
+ errorMessage = "Sending Sync Error."
+ }
+
+ String buildworkflowException =
+ """<aetgt:WorkflowException xmlns:aetgt="http://org.onap/so/workflow/schema/v1">
+ <aetgt:ErrorMessage>${MsoUtils.xmlEscape(errorMessage)}</aetgt:ErrorMessage>
+ <aetgt:ErrorCode>7000</aetgt:ErrorCode>
+ </aetgt:WorkflowException>"""
+
+ logger.debug(buildworkflowException)
+ sendWorkflowResponse(execution, 500, buildworkflowException)
+
+ } catch (Exception ex) {
+ logger.debug("Sending Sync Error Activity Failed. " + "\n" + ex.getMessage())
+ }
+ logger.trace("finished sendSyncError")
+ }
+}
diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoActivateTnNssi.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoActivateTnNssi.groovy
index f3f8c8bacf..ff7b0a3b6d 100644
--- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoActivateTnNssi.groovy
+++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoActivateTnNssi.groovy
@@ -117,6 +117,19 @@ public class DoActivateTnNssi extends AbstractServiceTaskProcessor {
}
+ String getOrchStatusBasedOnActionType(String actionType) {
+ String res = "unknown"
+ if (actionType.equals("activate")) {
+ res = "activated"
+ } else if (actionType.equals("deactivate")) {
+ res = "deactivated"
+ } else {
+ logger.error("ERROR: getOrchStatusBasedOnActionType bad actionType= \n" + actionType)
+ }
+
+ return res
+ }
+
void updateAAIOrchStatus(DelegateExecution execution) {
logger.debug("Start updateAAIOrchStatus")
String tnNssiId = execution.getVariable("sliceServiceInstanceId")
diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateCoreNSSI.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateCoreNSSI.groovy
index 64c36e7026..ec97972e5d 100644
--- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateCoreNSSI.groovy
+++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateCoreNSSI.groovy
@@ -68,10 +68,7 @@ class DoAllocateCoreNSSI extends AbstractServiceTaskProcessor {
execution.setVariable("coreServiceInstanceId", coreServiceInstanceId)
logger.debug(Prefix+" **** Exit DoAllocateCoreNSSI ::: preProcessRequest ****")
}
- /**
- * Query NSST name from CatalogDB
- * @param execution
- */
+
void getNSSTName(DelegateExecution execution){
logger.debug(Prefix+" **** Enter DoAllocateCoreNSSI ::: getNSSTName ****")
String nsstModelInvariantUuid = execution.getVariable("modelInvariantUuid")
@@ -79,8 +76,8 @@ class DoAllocateCoreNSSI extends AbstractServiceTaskProcessor {
String json = catalogDbUtils.getServiceResourcesByServiceModelInvariantUuidString(execution, nsstModelInvariantUuid)
logger.debug("***** JSON Response is: "+json)
String nsstName = jsonUtil.getJsonValue(json, "serviceResources.modelInfo.modelName") ?: ""
- String networkServiceModelInfo = jsonUtil.getJsonValue(json, "serviceResources.serviceProxy.modelInfo") ?: ""
-
+ List serviceProxyList = jsonUtil.StringArrayToList(jsonUtil.getJsonValue(json, "serviceResources.serviceProxy"))
+ String networkServiceModelInfo = serviceProxyList.get(0)
execution.setVariable("networkServiceModelInfo", networkServiceModelInfo)
logger.debug("***** nsstName is: "+ nsstName)
execution.setVariable("nsstName",nsstName)
@@ -93,6 +90,7 @@ class DoAllocateCoreNSSI extends AbstractServiceTaskProcessor {
}
logger.debug(Prefix+" **** Exit DoAllocateCoreNSSI ::: getNSSTName ****")
}
+
void prepareOOFRequest(DelegateExecution execution){
logger.debug(Prefix+" **** Enter DoAllocateCoreNSSI ::: prepareOOFRequest ****")
//API Path
@@ -105,8 +103,6 @@ class DoAllocateCoreNSSI extends AbstractServiceTaskProcessor {
//Setting messageType for all Core slice as cn
String messageType = "cn"
execution.setVariable("NSSI_messageType", messageType)
- //Is there any specific timeout we have to set or else we don't need to send
- //if blank will be set default value in DoHandleOofRequest
String timeout = "PT30M"
execution.setVariable("NSSI_timeout", timeout)
Map<String, Object> profileInfo = mapper.readValue(execution.getVariable("sliceProfile"), Map.class)
@@ -128,6 +124,10 @@ class DoAllocateCoreNSSI extends AbstractServiceTaskProcessor {
String solutions =""
if(requestStatus.equals("completed")) {
solutions = jsonUtil.getJsonValue(OOFResponse, "solutions")
+ List solutionsList = jsonUtil.StringArrayToList(jsonUtil.getJsonValue(OOFResponse, "solutions"))
+ if(solutionsList!=null && !solutionsList.isEmpty() ) {
+ solutions = solutionsList.get(0)
+ }
} else {
String statusMessage = jsonUtil.getJsonValue(OOFResponse, "statusMessage")
logger.error("received failed status from oof "+ statusMessage)
@@ -139,16 +139,20 @@ class DoAllocateCoreNSSI extends AbstractServiceTaskProcessor {
void prepareFailedOperationStatusUpdate(DelegateExecution execution){
logger.debug(Prefix + " **** Enter DoAllocateCoreNSSI ::: prepareFailedOperationStatusUpdate ****")
- String serviceId = execution.getVariable("nssiId")
+ String serviceId = execution.getVariable("nsiId")
String jobId = execution.getVariable("jobId")
String nsiId = execution.getVariable("nsiId")
- String operationType = execution.getVariable("operationType")
+ String nssiId = execution.getVariable("nssiId")
+ String operationType = "ALLOCATE"
+ logger.debug("serviceId: "+serviceId+" jobId: "+jobId+" nsiId: "+nsiId+" operationType: "+operationType)
+ String modelUuid= execution.getVariable("modelUuid")
ResourceOperationStatus resourceOperationStatus = new ResourceOperationStatus()
resourceOperationStatus.setServiceId(serviceId)
+ resourceOperationStatus.setJobId(jobId)
resourceOperationStatus.setOperationId(jobId)
- resourceOperationStatus.setResourceTemplateUUID(nsiId)
+ resourceOperationStatus.setResourceTemplateUUID(modelUuid)
resourceOperationStatus.setOperType(operationType)
- resourceOperationStatus.setProgress(0)
+ resourceOperationStatus.setProgress("0")
resourceOperationStatus.setStatus("failed")
resourceOperationStatus.setStatusDescription("Core NSSI Allocate Failed")
requestDBUtil.prepareUpdateResourceOperationStatus(execution, resourceOperationStatus)
diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateCoreNonSharedSlice.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateCoreNonSharedSlice.groovy
index c5a928aaf9..1ca0605ac8 100644
--- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateCoreNonSharedSlice.groovy
+++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateCoreNonSharedSlice.groovy
@@ -64,6 +64,8 @@ import org.onap.so.bpmn.core.json.JsonUtils
import org.slf4j.Logger
import org.slf4j.LoggerFactory
import org.springframework.http.HttpEntity
+import org.onap.aai.domain.yang.NetworkPolicy
+import org.onap.aaiclient.client.aai.AAINamespaceConstants
import javax.ws.rs.NotFoundException
@@ -79,24 +81,26 @@ class DoAllocateCoreNonSharedSlice extends AbstractServiceTaskProcessor {
public void preProcessRequest(DelegateExecution execution) {
logger.debug(Prefix+ "**** Enter DoAllocateCoreNonSharedSlice::: preProcessRequest ****")
String nssiServiceInstanceId= execution.getVariable("serviceInstanceId")
+ logger.debug("nssiServiceInstanceId: "+nssiServiceInstanceId)
execution.setVariable("nssiServiceInstanceId", nssiServiceInstanceId)
//Set orchestration-status as created
execution.setVariable("orchestrationStatus", "created")
//networkServiceName
- String networkServiceName = jsonUtil.getJsonValue(execution.getVariable("networkServiceModelInfo"), "modelName") ?: ""
+ String networkServiceName = jsonUtil.getJsonValue(execution.getVariable("networkServiceModelInfo"), "modelInfo.modelName") ?: ""
execution.setVariable("networkServiceName", networkServiceName.replaceAll(" Service Proxy", ""))
//networkServiceModelUuid
- String networkServiceModelUuid = jsonUtil.getJsonValue(execution.getVariable("networkServiceModelInfo"), "modelUuid") ?: ""
+ logger.debug("networkServiceName: "+networkServiceName)
+ String networkServiceModelUuid = jsonUtil.getJsonValue(execution.getVariable("networkServiceModelInfo"), "sourceModelUuid") ?: ""
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))
- }
+ 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 ****")
}
@@ -139,10 +143,8 @@ class DoAllocateCoreNonSharedSlice extends AbstractServiceTaskProcessor {
si.setWorkloadContext(workloadContext)
logger.debug("AAI service Instance Request Payload : "+si.toString())
AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(execution.getVariable("globalSubscriberId")).serviceSubscription(serviceType).serviceInstance(serviceInstanceId))
- Response response = getAAIClient().create(uri, si)
- if(response.getStatus()!=200) {
- exceptionUtil.buildAndThrowWorkflowException(execution, response.getStatus(), "AAI instance creation failed")
- }
+ getAAIClient().create(uri, si)
+
execution.setVariable("nssiServiceInstance", si)
} catch (BpmnError e) {
throw e;
@@ -151,12 +153,14 @@ class DoAllocateCoreNonSharedSlice extends AbstractServiceTaskProcessor {
logger.debug(msg)
exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
}
+ getVnfInstanceName(execution)
logger.debug(Prefix+ " Exit DoAllocateCoreNonSharedSlice ::: Enter createNSSIinAAI ****")
}
public void prepareServiceOrderRequest(DelegateExecution execution) {
logger.debug("**** Enter DoAllocateCoreNonSharedSlice ::: prepareServiceOrderRequest ****")
- String extAPIPath = UrnPropertiesReader.getVariable("extapi.endpoint", execution) + '/serviceOrder'
+ //extAPI path hardcoded for testing purposes, will be updated in next patch
+ String extAPIPath = "https://nbi.onap:8443/nbi/api/v4" + "/serviceOrder"
execution.setVariable("ExternalAPIURL", extAPIPath)
ObjectMapper objectMapper = new ObjectMapper();
Map<String, Object> serviceOrder = new LinkedHashMap()
@@ -186,10 +190,10 @@ class DoAllocateCoreNonSharedSlice extends AbstractServiceTaskProcessor {
// service Details
Map<String, Object> service = new LinkedHashMap()
//ServiceName
- String serviceName= "nsi_"+execution.getVariable("networkServiceName")
+ String serviceName= "ns_"+execution.getVariable("networkServiceName")+"_"+execution.getVariable("serviceInstanceId")
service.put("name", serviceName)
// Service Type
- service.put("serviceType", execution.getVariable("serviceType"))
+ service.put("serviceType", execution.getVariable("subscriptionServiceType"))
//Service State
service.put("serviceState", "active")
Map<String, String> serviceSpecification = new LinkedHashMap()
@@ -198,7 +202,7 @@ class DoAllocateCoreNonSharedSlice extends AbstractServiceTaskProcessor {
//serviceCharacteristic List
List serviceCharacteristicList = new ArrayList()
Map<String, Object> serviceCharacteristic = objectMapper.readValue(execution.getVariable("sliceProfile"), Map.class);
- List serviceCharacteristicListMap = retrieveServiceCharacteristicsAsKeyValue(serviceCharacteristic)
+ List serviceCharacteristicListMap = retrieveServiceCharacteristicsAsKeyValue(execution, serviceCharacteristic)
logger.debug("serviceCharacteristicListMap "+serviceCharacteristicListMap)
serviceCharacteristicList.add(serviceCharacteristic)
//service.put("serviceCharacteristic", serviceCharacteristicList)
@@ -213,10 +217,23 @@ class DoAllocateCoreNonSharedSlice extends AbstractServiceTaskProcessor {
logger.debug(Prefix+ " **** Exit DoAllocateCoreNonSharedSlice ::: prepareServiceOrderRequest****")
}
- private List retrieveServiceCharacteristicsAsKeyValue(Map serviceCharacteristics) {
+ private void getVnfInstanceName(DelegateExecution execution) {
+ //Get NetworkService modelInvariantUuid
+ String networkServiceModelUuid = execution.getVariable("networkServiceModelUuid")
+ String json = catalogDbUtils.getServiceResourcesByServiceModelUuid(execution, networkServiceModelUuid, "v2")
+ logger.debug("json returned: "+json)
+ logger.debug(("Service Vnfs JSON: "+jsonUtil.getJsonValue(json, "serviceResources.serviceVnfs")))
+ List serviceVnfs = jsonUtil.StringArrayToList(jsonUtil.getJsonValue(json, "serviceResources.serviceVnfs"))
+ String networkServiceVnfJson = serviceVnfs.get(0)
+ String vnfInstanceName = (jsonUtil.getJsonValue(networkServiceVnfJson, "modelInfo.modelInstanceName")).trim() ?: ""
+ execution.setVariable("vnfInstanceName", vnfInstanceName)
+ }
+
+ private List retrieveServiceCharacteristicsAsKeyValue(DelegateExecution execution, Map serviceCharacteristics) {
logger.debug(Prefix+ " **** Enter DoAllocateCoreNonSharedSlice ::: retrieveServiceCharacteristicsAsKeyValue ****")
List serviceCharacteristicsList = new ArrayList()
ObjectMapper mapperObj = new ObjectMapper();
+ String vnfInstanceName = execution.getVariable("vnfInstanceName")
Map<String, Object> serviceCharacteristicsObject = new LinkedHashMap()
for (Map.Entry<String, Integer> entry : serviceCharacteristics.entrySet()) {
Map<String, Object> ServiceCharacteristicValueObject = new LinkedHashMap<>()
@@ -224,7 +241,7 @@ class DoAllocateCoreNonSharedSlice extends AbstractServiceTaskProcessor {
//For G Release we are sending single value from snssaiList
if(entry.getKey().equals("snssaiList")) {
List sNssaiValue = entry.getValue()
- serviceCharacteristicsObject.put("name", "snssai")
+ serviceCharacteristicsObject.put("name", vnfInstanceName+"_snssai")
ServiceCharacteristicValueObject.put("serviceCharacteristicValue", sNssaiValue.get(0))
serviceCharacteristicsObject.put("value", ServiceCharacteristicValueObject)
}
@@ -303,18 +320,12 @@ class DoAllocateCoreNonSharedSlice extends AbstractServiceTaskProcessor {
JSONObject item = items.get(0)
JSONObject service = item.get("service")
String networkServiceId = service.get("id")
- if (networkServiceId == null || networkServiceId.equals("null")) {
- prepareFailedOperationStatusUpdate(execution)
- return
- }
+
execution.setVariable("networkServiceId", networkServiceId)
String serviceOrderState = item.get("state")
execution.setVariable("ServiceOrderState", serviceOrderState)
// Get serviceOrder State and process progress
- if("ACKNOWLEDGED".equalsIgnoreCase(serviceOrderState)) {
- execution.setVariable("status", "processing")
- }
- else if("INPROGRESS".equalsIgnoreCase(serviceOrderState)) {
+ if("ACKNOWLEDGED".equalsIgnoreCase(serviceOrderState) || "INPROGRESS".equalsIgnoreCase(serviceOrderState)) {
execution.setVariable("status", "processing")
}
else if("COMPLETED".equalsIgnoreCase(serviceOrderState)) {
@@ -328,6 +339,7 @@ class DoAllocateCoreNonSharedSlice extends AbstractServiceTaskProcessor {
msg = "ServiceOrder failed"
exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
}
+ logger.debug("NBI serviceOrder state: "+serviceOrderState)
}
else{
msg = "Get ServiceOrder Received a Bad Response Code. Response Code is: " + responseCode
@@ -340,9 +352,6 @@ class DoAllocateCoreNonSharedSlice extends AbstractServiceTaskProcessor {
logger.debug(Prefix+ " **** Exit DoAllocateCoreNonSharedSlice ::: getNBIServiceOrderProgress ****")
}
- /**
- * delay 5 sec
- */
public void timeDelay(DelegateExecution execution) {
try {
logger.debug(Prefix+ " **** DoAllocateCoreNonSharedSlice ::: timeDelay going to sleep for 5 sec")
@@ -353,47 +362,42 @@ class DoAllocateCoreNonSharedSlice extends AbstractServiceTaskProcessor {
}
}
-
void updateRelationship(DelegateExecution execution) {
logger.debug(Prefix+ " **** Enter DoAllocateCoreNonSharedSlice ::: updateRelationship ****")
-
String networkServiceInstanceId = execution.getVariable("networkServiceId")
String nssiId = execution.getVariable("nssiServiceInstanceId")
String globalCustId = execution.getVariable("globalSubscriberId")
- String serviceType = execution.getVariable("serviceType")
+ String serviceType = execution.getVariable("subscriptionServiceType")
+ logger.debug("networkServiceInstanceId: "+networkServiceInstanceId +" nssiId: "+nssiId +" globalCustId: "+globalCustId+ " serviceType: "+serviceType)
try{
//Update NSSI orchestration status nssiServiceInstance
ServiceInstance si = execution.getVariable("nssiServiceInstance")
+ logger.debug("nssiServiceInstance "+si)
si.setOrchestrationStatus("activated")
+ AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalCustId).serviceSubscription(serviceType).serviceInstance(nssiId))
+ logger.debug("uri to call: "+uri)
- AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalCustId).serviceSubscription(serviceType).serviceInstance(networkServiceInstanceId))
try {
getAAIClient().update(uri, si)
} catch (Exception e) {
logger.info("Update OrchestrationStatus in AAI failed")
- String msg = "Update OrchestrationStatus in AAI failed, " + e.getMessage()
+ String msg = "Update OrchestrationStatus in AAI failed, " + e
exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
}
-
//URI for NSSI
AAIResourceUri nssiUri = AAIUriFactory.createResourceUri(Types.SERVICE_INSTANCE.getFragment(nssiId));
-
+ logger.debug("nssiUri to update RelationShip : "+nssiUri)
//URI for Network Service Instance
AAIResourceUri networkServiceInstanceUri = AAIUriFactory.createResourceUri(Types.SERVICE_INSTANCE.getFragment(networkServiceInstanceId))
-
+ logger.debug("networkServiceInstanceUri to update RelationShip : "+networkServiceInstanceUri)
// Update Relationship in AAI
- Response response = getAAIClient().connect(nssiUri, networkServiceInstanceUri, AAIEdgeLabel.COMPOSED_OF);
-
- 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")
- setResourceOperationStatus(execution)
- }
+ getAAIClient().connect(nssiUri, networkServiceInstanceUri, AAIEdgeLabel.COMPOSED_OF);
+ //end point update
+ createEndPointsInAai(execution)
+ execution.setVariable("progress", "100")
+ execution.setVariable("status", "finished")
+ execution.setVariable("statusDescription", "DoAllocateCoreNonSharedNSSI success")
+ setResourceOperationStatus(execution)
}catch(Exception ex) {
String msg = "Exception while creating relationship " + ex.getMessage()
logger.info(msg)
@@ -402,78 +406,81 @@ 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
+ * creates EndPoints in AAI
* @param execution
- * @param operationType
*/
+ private void createEndPointsInAai(DelegateExecution execution) {
+ String type = "endpoint"
+ String function = "core_EP"
+ int prefixLength = 24
+ String addressFamily = "ipv4"
+ //BH end point update
+ String bh_endpoint = execution.getVariable("bh_endpoint")
+ 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()
+ logger.debug("bh_endpoint: "+bh_endpoint +" "+ "bh_routeId: "+bh_routeId +" "+ "cnIpAddress: "+cnIpAddress +" "+ "role: "+role +" "+ "cnIpAddress: "+cnIpAddress +" "+ "LogicalLinkId: "+LogicalLinkId +" "+ "nextHopInfo: "+nextHopInfo +" "+ "bh_ep: "+bh_ep)
+ 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")
+ logger.debug("networkRouteUri: "+networkRouteUri+"relationship: "+relationship)
+ try {
+ AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE,
+ execution.getVariable("globalSubscriberId"),
+ execution.getVariable("subscriptionServiceType"),
+ coreNssi).relationshipAPI()
+ logger.debug("uri: "+uri)
+ client.create(uri, relationship)
+ } catch (BpmnError e) {
+ throw e
+ } catch (Exception ex) {
+ String msg = "Exception in createRelationShipInAAI. " + ex.getMessage()
+ logger.debug(msg+": "+ex)
+ 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)
+ }
+ }
+
private void setResourceOperationStatus(DelegateExecution execution) {
logger.debug(Prefix+ " **** Enter DoAllocateCoreNonSharedSlice ::: setResourceOperationStatus ****")
- String serviceId = execution.getVariable("nssiId")
+ String serviceId = execution.getVariable("nsiId")
String jobId = execution.getVariable("jobId")
String nsiId = execution.getVariable("nsiId")
- String operationType = execution.getVariable("operationType")
+ String operationType = "ALLOCATE"
ResourceOperationStatus resourceOperationStatus = new ResourceOperationStatus()
resourceOperationStatus.setServiceId(serviceId)
resourceOperationStatus.setOperationId(jobId)
resourceOperationStatus.setResourceTemplateUUID(nsiId)
+ resourceOperationStatus.setResourceInstanceID(nssiId)
resourceOperationStatus.setOperType(operationType)
resourceOperationStatus.setStatus(execution.getVariable("status"))
resourceOperationStatus.setProgress(execution.getVariable("progress"))
@@ -484,17 +491,21 @@ class DoAllocateCoreNonSharedSlice extends AbstractServiceTaskProcessor {
void prepareFailedOperationStatusUpdate(DelegateExecution execution){
logger.debug(Prefix + " **** Enter DoAllocateCoreNonSharedSlice ::: prepareFailedOperationStatusUpdate ****")
- String serviceId = execution.getVariable("nssiId")
+ String serviceId = execution.getVariable("nsiId")
String jobId = execution.getVariable("jobId")
String nsiId = execution.getVariable("nsiId")
- String operationType = execution.getVariable("operationType")
-
+ String nssiId = execution.getVariable("nssiId")
+ String operationType = "ALLOCATE"
+ //modelUuid
+ String modelUuid= execution.getVariable("modelUuid")
+ logger.debug("serviceId: "+serviceId +" "+ "jobId: "+jobId +" "+ "nsiId: "+nsiId +" "+ "operationType: "+operationType)
ResourceOperationStatus resourceOperationStatus = new ResourceOperationStatus()
resourceOperationStatus.setServiceId(serviceId)
+ resourceOperationStatus.setJobId(jobId)
resourceOperationStatus.setOperationId(jobId)
- resourceOperationStatus.setResourceTemplateUUID(nsiId)
+ resourceOperationStatus.setResourceTemplateUUID(modelUuid)
resourceOperationStatus.setOperType(operationType)
- resourceOperationStatus.setProgress(0)
+ resourceOperationStatus.setProgress("0")
resourceOperationStatus.setStatus("failed")
resourceOperationStatus.setStatusDescription("Core NSSI Allocate Failed")
requestDBUtil.prepareUpdateResourceOperationStatus(execution, resourceOperationStatus)
diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateCoreSharedSlice.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateCoreSharedSlice.groovy
index 5ecfc9a872..b3c99c6e9a 100644
--- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateCoreSharedSlice.groovy
+++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateCoreSharedSlice.groovy
@@ -115,7 +115,7 @@ class DoAllocateCoreSharedSlice extends AbstractServiceTaskProcessor {
logger.debug(Prefix+" **** Enter DoAllocateCoreSharedSlice ::: getNetworkInstanceAssociatedWithNssiId ****")
//NSSI Id as service Instance Id to get from Request
- String serviceInstanceId = execution.getVariable("serviceInstanceID")
+ String serviceInstanceId = execution.getVariable("nssiId")
String errorMsg = "query Network Service Instance from AAI failed"
AAIResultWrapper wrapper = queryAAI(execution, Types.SERVICE_INSTANCE, serviceInstanceId, errorMsg)
@@ -304,14 +304,6 @@ class DoAllocateCoreSharedSlice extends AbstractServiceTaskProcessor {
logger.debug(Prefix+" **** Exit DoAllocateCoreSharedSlice ::: getVnfRelationships ****")
}
-
- /**
- * query AAI
- * @param execution
- * @param aaiObjectName
- * @param instanceId
- * @return AAIResultWrapper
- */
private AAIResultWrapper queryAAI(DelegateExecution execution, AAIObjectName aaiObjectName, String instanceId, String errorMsg) {
logger.debug(Prefix+" **** Enter DoAllocateCoreSharedSlice ::: queryAAI ****")
String globalSubscriberId = execution.getVariable("globalSubscriberId")
@@ -368,6 +360,8 @@ class DoAllocateCoreSharedSlice extends AbstractServiceTaskProcessor {
Map vnfMap = vnfList.get(0)
ModelInfo vnfModelInfo = vnfMap.get("modelInfo")
+ vnfModelInfo.setModelCustomizationId(vnfModelInfo.getModelCustomizationUuid())
+ vnfModelInfo.setModelVersionId(vnfModelInfo.getModelId())
logger.debug("vnfModelInfo "+vnfModelInfo)
//List of VFModules
@@ -380,6 +374,8 @@ class DoAllocateCoreSharedSlice extends AbstractServiceTaskProcessor {
//Traverse VFModules List and add in vfModelInfoList
for (vfModule in vfModuleList) {
ModelInfo vfModelInfo = vfModule.get("modelInfo")
+ vfModelInfo.setModelCustomizationId(vfModelInfo.getModelCustomizationUuid())
+ vfModelInfo.setModelVersionId(vfModelInfo.getModelId())
logger.debug("vfModelInfo "+vfModelInfo)
vfModelInfoList.add(vfModelInfo)
}
@@ -410,25 +406,31 @@ class DoAllocateCoreSharedSlice extends AbstractServiceTaskProcessor {
//Individual VFModule List
Map<String, Object> vfModuleValues = new LinkedHashMap<>()
vfModuleValues.put("modelInfo", vfModuleModelInfo)
- vfModuleValues.put("instanceName", vfModuleModelInfo.getModelInstanceName())
+ vfModuleValues.put("instanceName", vfModuleModelInfo.getModelName())
//VFModule InstanceParams should be empty or this field should not be there?
List<Map<String, Object>> vfModuleInstanceParams = new ArrayList<>()
vfModuleValues.put("instanceParams", vfModuleInstanceParams)
+ vfModules.add(vfModuleValues)
}
//Vnf intsanceParams
Map<String, Object> sliceProfile = mapper.readValue(execution.getVariable("sliceProfile"), Map.class);
- List vnfInstanceParamsList = new ArrayList<>()
+ List<Map<String, Object>> vnfInstanceParamsList = new ArrayList<>()
String supportedsNssaiJson= prepareVnfInstanceParamsJson(execution)
- vnfInstanceParamsList.add(supportedsNssaiJson)
+
+ Map<String, Object> supportedNssai= new LinkedHashMap<>()
+ supportedNssai.put("supportedsNssai", supportedsNssaiJson)
+ vnfInstanceParamsList.add(supportedNssai)
Platform platform = new Platform()
- platform.setPlatformName(execution.getVariable("platform"))
+ String platformName = execution.getVariable("platformName")
+ platform.setPlatformName(platformName)
LineOfBusiness lineOfbusiness = new LineOfBusiness()
- lineOfbusiness.setLineOfBusinessName(execution.getVariable("lineOfBusiness"))
+ String lineOfBusinessName = execution.getVariable("lineOfBusinessName")
+ lineOfbusiness.setLineOfBusinessName(lineOfBusinessName)
//Vnf Values
Map<String, Object> vnfValues = new LinkedHashMap<>()
@@ -438,7 +440,7 @@ class DoAllocateCoreSharedSlice extends AbstractServiceTaskProcessor {
vnfValues.put("cloudConfiguration", cloudConfiguration)
vnfValues.put("vfModules", vfModules)
vnfValues.put("modelInfo", vnfModelInfo)
- vnfValues.put("instanceName", execution.getVariable("vnfInstanceName"))
+ vnfValues.put("instanceName", vnfModelInfo.getModelInstanceName())
vnfValues.put("instanceParams",vnfInstanceParamsList)
vnfModelInfoList.add(vnfValues)
@@ -496,10 +498,8 @@ class DoAllocateCoreSharedSlice extends AbstractServiceTaskProcessor {
Map<String, Object> requestDetailsMap = new LinkedHashMap<>()
requestDetailsMap.put("requestDetails", requestDetails)
String requestPayload = mapper.writeValueAsString(requestDetailsMap)
-
logger.debug("requestDetails "+requestPayload)
execution.setVariable("requestPayload", requestPayload)
-
logger.debug(Prefix+" **** Exit DoAllocateCoreSharedSlice ::: prepareSOMacroRequestPayLoad ****")
}
@@ -508,14 +508,11 @@ class DoAllocateCoreSharedSlice extends AbstractServiceTaskProcessor {
List instanceParamsvalues = execution.getVariable("snssaiAndOrchStatusList")
Map<String, Object> nSsai= new LinkedHashMap<>()
nSsai.put("sNssai", instanceParamsvalues)
-
String supportedsNssaiJson = mapper.writeValueAsString(nSsai)
//SupportedNssai
- Map<String, Object> supportedNssai= new LinkedHashMap<>()
- supportedNssai.put("supportedNssai", supportedsNssaiJson)
- logger.debug("**** supportedsNssaiJson**** "+supportedNssai)
+ logger.debug("**** supportedsNssaiJson**** "+supportedsNssaiJson)
logger.debug(Prefix+" **** Exit DoAllocateCoreSharedSlice ::: prepareVnfInstanceParamsJson ****")
- return supportedNssai
+ return supportedsNssaiJson
}
public void sendPutRequestToSOMacro(DelegateExecution execution) {
@@ -523,14 +520,9 @@ class DoAllocateCoreSharedSlice extends AbstractServiceTaskProcessor {
try {
String msoEndpoint = UrnPropertiesReader.getVariable("mso.infra.endpoint.url", execution)
String url = msoEndpoint+"/serviceInstantiation/v7/serviceInstances/"+execution.getVariable("networkServiceInstanceId")+"/vnfs/"+execution.getVariable("vnfId")
-
String requestBody = execution.getVariable("requestPayload")
-
- 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 encodeString = "Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA=="
+ logger.debug("msoEndpoint: "+msoEndpoint +" "+ "url: "+url +" requestBody: "+requestBody +" "+ "encodeString: "+encodeString)
HttpClient httpClient = getHttpClientFactory().newJsonClient(new URL(url), ONAPComponents.SO)
httpClient.addAdditionalHeader("Authorization", encodeString)
httpClient.addAdditionalHeader("Accept", "application/json")
@@ -546,84 +538,93 @@ class DoAllocateCoreSharedSlice extends AbstractServiceTaskProcessor {
logger.debug(Prefix+" **** Exit DoAllocateCoreSharedSlice ::: sendPostRequestToSOMacro ****")
}
- /**
- * Handle SO Response for PUT and prepare update operation status
- * @param execution
- */
private void handleSOResponse(Response httpResponse, DelegateExecution execution){
logger.debug(Prefix+" **** Enter DoAllocateCoreSharedSlice ::: handleSOResponse ****")
-
int soResponseCode = httpResponse.getStatus()
logger.debug("soResponseCode : "+soResponseCode)
if (soResponseCode >= 200 && soResponseCode < 204 && httpResponse.hasEntity()) {
String soResponse = httpResponse.readEntity(String.class)
- String operationId = execution.getVariable("operationId")
- def macroOperationId = jsonUtil.getJsonValue(soResponse, "operationId")
+ logger.debug("soResponse: "+soResponse)
+ logger.debug("soResponse JsonUtil: "+jsonUtil.getJsonValue(soResponse, "requestReferences.requestId"))
+ def macroOperationId = jsonUtil.getJsonValue(soResponse, "requestReferences.requestId")
+ def requestSelfLink = jsonUtil.getJsonValue(soResponse, "requestReferences.requestSelfLink")
execution.setVariable("macroOperationId", macroOperationId)
+ execution.setVariable("requestSelfLink", requestSelfLink)
execution.setVariable("isSOTimeOut", "no")
execution.setVariable("isSOResponseSucceed","yes")
}
else {
- String serviceName = execution.getVariable("serviceInstanceName")
execution.setVariable("isSOResponseSucceed","no")
prepareFailedOperationStatusUpdate(execution)
}
logger.debug(Prefix+" **** Exit DoAllocateCoreSharedSlice ::: handleSOResponse ****")
}
- /**
- * prepare to call sub process CheckProcessStatus
- * @param execution
- */
- void prepareCallCheckProcessStatus(DelegateExecution execution){
- logger.debug(Prefix+" **** Enter DoAllocateCoreSharedSlice ::: prepareCallCheckProcessStatus ****")
- def successConditions = new ArrayList<>()
- successConditions.add("finished")
- execution.setVariable("successConditions", successConditions)
- def errorConditions = new ArrayList<>()
- errorConditions.add("error")
- execution.setVariable("errorConditions", errorConditions)
- execution.setVariable("processServiceType", "Network service")
- execution.setVariable("subOperationType", "PUT")
- execution.setVariable("initProgress", 20)
- execution.setVariable("endProgress",90)
- execution.setVariable("timeOut", TIMEOUT)
- logger.debug(Prefix+" **** Exit DoAllocateCoreSharedSlice ::: prepareCallCheckProcessStatus ****")
+ public void getSOPUTProgress(DelegateExecution execution) {
+ logger.debug(Prefix+ " **** Enter DoAllocateCoreSharedSlice ::: getSOPUTProgress ****")
+ String url= execution.getVariable("requestSelfLink")
+ logger.debug("url "+url)
+ HttpClient httpClient = getHttpClientFactory().newJsonClient(new URL(url), ONAPComponents.SO)
+ //Hardcoding for now, will be updated in next patch
+ httpClient.addAdditionalHeader("Authorization", "Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA==")
+ httpClient.addAdditionalHeader("Accept", "application/json")
+ Response httpResponse = httpClient.get()
+ logger.debug("httpResponse "+httpResponse)
+ int soResponseCode = httpResponse.getStatus()
+ logger.debug("soResponseCode : "+soResponseCode)
+ if (soResponseCode >= 200 && soResponseCode < 204 && httpResponse.hasEntity()) {
+ String soResponse = httpResponse.readEntity(String.class)
+ logger.debug("soResponse: "+soResponse)
+ String requestState= jsonUtil.getJsonValue(soResponse, "request.requestStatus.requestState")
+ logger.debug("requestState: "+requestState)
+ execution.setVariable("requestState", requestState)
+ } else {
+ execution.setVariable("isSOResponseSucceed","no")
+ prepareFailedOperationStatusUpdate(execution)
+ }
+ logger.debug(Prefix+ " **** Exit DoAllocateCoreSharedSlice ::: getSOPUTProgress ****")
+ }
+
+ public void timeDelay(DelegateExecution execution) {
+ try {
+ logger.debug(Prefix+ " **** DoAllocateCoreSharedSlice ::: timeDelay going to sleep for 5 sec")
+ Thread.sleep(5000)
+ logger.debug("**** DoAllocateCoreNonSharedSlice ::: timeDelay wakeup after 5 sec")
+ } catch(InterruptedException e) {
+ logger.error(Prefix+ " **** DoAllocateCoreSharedSlice ::: timeDelay exception" + e)
+ }
}
void prepareUpdateResourceOperationStatus(DelegateExecution execution) {
logger.debug(Prefix+" **** Enter DoAllocateCoreSharedSlice ::: prepareUpdateResourceOperationStatus ****")
//Prepare Update Status for PUT failure and success
- if(execution.getVariable("isTimeOut").equals("YES")) {
- logger.debug("TIMEOUT - SO PUT Failure")
- exceptionUtil.buildAndThrowWorkflowException(execution, 7000, "SO PUT Failure")
- } else {
+ if("COMPLETED".equals(execution.getVariable("requestState"))) {
execution.setVariable("progress", "100")
execution.setVariable("status", "finished")
execution.setVariable("operationContent", "AllocteCoreNSSI successful.")
- logger.debug("prepareFailureStatus,result:${execution.getVariable("result")}, reason: ${execution.getVariable("reason")}")
+ logger.debug("Success ,result:${execution.getVariable("result")}, reason: ${execution.getVariable("reason")}")
+ } else {
+ logger.debug("SO PUT Failure")
+ exceptionUtil.buildAndThrowWorkflowException(execution, 7000, "SO PUT Failure")
}
setResourceOperationStatus(execution)
logger.debug(Prefix+" **** Exit DoAllocateCoreSharedSlice ::: prepareUpdateResourceOperationStatus ****")
}
- /**
- * prepare ResourceOperation status
- * @param execution
- * @param operationType
- */
private void setResourceOperationStatus(DelegateExecution execution) {
logger.debug(Prefix+" **** Enter DoAllocateCoreSharedSlice ::: setResourceOperationStatus ****")
String serviceId = execution.getVariable("nssiId")
String jobId = execution.getVariable("jobId")
String nsiId = execution.getVariable("nsiId")
String operationType = execution.getVariable("operationType")
+ logger.debug("serviceId: "+serviceId +" "+ " jobId: "+jobId +" "+ " nsiId: "+nsiId+" nssiId: "+nssiId+" operationType: "+operationType)
ResourceOperationStatus resourceOperationStatus = new ResourceOperationStatus()
resourceOperationStatus.setServiceId(serviceId)
resourceOperationStatus.setOperationId(jobId)
resourceOperationStatus.setResourceTemplateUUID(nsiId)
+ resourceOperationStatus.setResourceInstanceID(nssiId)
resourceOperationStatus.setOperType(operationType)
resourceOperationStatus.setStatus("finished")
resourceOperationStatus.setProgress("100")
@@ -634,17 +635,19 @@ class DoAllocateCoreSharedSlice extends AbstractServiceTaskProcessor {
void prepareFailedOperationStatusUpdate(DelegateExecution execution){
logger.debug(Prefix + " **** Enter DoAllocateCoreSharedSlice ::: prepareFailedOperationStatusUpdate ****")
- String serviceId = execution.getVariable("nssiId")
+ String serviceId = execution.getVariable("nsiId")
String jobId = execution.getVariable("jobId")
String nsiId = execution.getVariable("nsiId")
- String operationType = execution.getVariable("operationType")
-
+ String operationType = "ALLOCATE"
+ logger.debug("serviceId: "+serviceId +" "+ " jobId: "+jobId +" "+ " nsiId: "+nsiId+" operationType: "+operationType)
+ String modelUuid= execution.getVariable("modelUuid")
ResourceOperationStatus resourceOperationStatus = new ResourceOperationStatus()
resourceOperationStatus.setServiceId(serviceId)
+ resourceOperationStatus.setJobId(jobId)
resourceOperationStatus.setOperationId(jobId)
- resourceOperationStatus.setResourceTemplateUUID(nsiId)
+ resourceOperationStatus.setResourceTemplateUUID(modelUuid)
resourceOperationStatus.setOperType(operationType)
- resourceOperationStatus.setProgress(0)
+ resourceOperationStatus.setProgress("0")
resourceOperationStatus.setStatus("failed")
resourceOperationStatus.setStatusDescription("Core NSSI Allocate Failed")
requestDBUtil.prepareUpdateResourceOperationStatus(execution, resourceOperationStatus)
diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteSliceService.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteSliceService.groovy
index 2889f79c30..5fd06fd8d4 100644
--- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteSliceService.groovy
+++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteSliceService.groovy
@@ -19,22 +19,15 @@
*/
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
import org.camunda.bpm.engine.delegate.BpmnError
import org.camunda.bpm.engine.delegate.DelegateExecution
import org.onap.aai.domain.yang.AllottedResource
import org.onap.aai.domain.yang.AllottedResources
import org.onap.aai.domain.yang.Relationship
import org.onap.aai.domain.yang.ServiceInstance
-import org.onap.aai.domain.yang.ServiceProfile
-import org.onap.aai.domain.yang.ServiceProfiles
import org.onap.aaiclient.client.aai.AAIObjectName
import org.onap.aaiclient.client.aai.entities.AAIResultWrapper
+import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri
import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory
import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder
import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder.Types
@@ -48,6 +41,11 @@ import org.onap.so.client.HttpClientFactory
import org.slf4j.Logger
import org.slf4j.LoggerFactory
+import javax.ws.rs.NotFoundException
+import javax.ws.rs.core.Response
+
+import static org.apache.commons.lang3.StringUtils.isBlank
+
/**
* This groovy class supports the <class>DoDeleteSliceService.bpmn</class> process.
*
@@ -193,13 +191,27 @@ class DoDeleteSliceService extends AbstractServiceTaskProcessor {
{
LOGGER.trace(" *****${PREFIX} Start getNSIFromAAI *****")
String nsiId = execution.getVariable("nsiId")
+ List<String> nssiIdList = getNSSIIdList(execution, nsiId)
+ String msg = "nsiId: ${nsiId}, nssiIdList:"
+ msg+= nssiIdList.join(",")
+ LOGGER.info(msg)
+ execution.setVariable("nssiIdList", nssiIdList)
+ LOGGER.trace(" *****${PREFIX} Exit getNSIFromAAI *****")
+ }
+ /**
+ * Get NSSI Id from AAI
+ * @param execution
+ * @param nsiId
+ * @return
+ */
+ private List<String> getNSSIIdList(DelegateExecution execution, String nsiId){
+ List<String> nssiIdList = []
+
try
{
- String errorMsg = "query nsi from aai failed."
+ String errorMsg = "query nssi from aai failed."
AAIResultWrapper wrapper = queryAAI(execution, Types.SERVICE_INSTANCE, nsiId, errorMsg)
- Optional<ServiceInstance> si =wrapper.asBean(ServiceInstance.class)
- List<String> nssiIdList = []
- String msg = "nsiId:${nsiId},nssiIdList:"
+ Optional<ServiceInstance> si = wrapper.asBean(ServiceInstance.class)
if(si.isPresent())
{
List<Relationship> relationshipList = si.get().getRelationshipList()?.getRelationship()
@@ -217,15 +229,12 @@ class DoDeleteSliceService extends AbstractServiceTaskProcessor {
ServiceInstance instance = serviceInstance.get()
if ("nssi".equalsIgnoreCase(instance.getServiceRole())) {
nssiId = instance.getServiceInstanceId()
+ nssiIdList.add(nssiId)
}
}
- nssiIdList.add(nssiId)
- msg+="${nssiId}, "
}
}
}
- LOGGER.info(msg)
- execution.setVariable("nssiIdList", nssiIdList)
}
catch(BpmnError e){
throw e
@@ -235,7 +244,7 @@ class DoDeleteSliceService extends AbstractServiceTaskProcessor {
LOGGER.error(msg)
exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
}
- LOGGER.trace(" *****${PREFIX} Exit getNSIFromAAI *****")
+ return nssiIdList
}
/**
@@ -396,6 +405,7 @@ class DoDeleteSliceService extends AbstractServiceTaskProcessor {
LOGGER.debug("Start terminateNSIQuery")
return
+
//To test
String requestId = execution.getVariable("msoRequestId")
String nxlId = currentNSSI['nsiServiceInstanceId']
@@ -446,4 +456,26 @@ class DoDeleteSliceService extends AbstractServiceTaskProcessor {
}
LOGGER.debug("Finish terminateNSIQuery")
}
+
+
+ /**
+ * If no nssi,delete NSI from AAI
+ * @param execution
+ */
+ void deleteNSIInstance(DelegateExecution execution){
+ def currentNSSI = execution.getVariable("currentNSSI")
+ def nsiId = currentNSSI['nsiServiceInstanceId']
+ List<String> nssiIdList = getNSSIIdList(execution, nsiId)
+ try
+ {
+ if(0 == nssiIdList.size()){
+ AAIResourceUri serviceInstanceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(execution.getVariable("globalSubscriberId")).serviceSubscription(execution.getVariable("serviceType")).serviceInstance(nsiId))
+ getAAIClient().delete(serviceInstanceUri)
+ }
+ } catch (Exception ex) {
+ LOGGER.debug( "Failed to delete NSI instance.")
+ exceptionUtil.buildAndThrowWorkflowException(execution, 401, "Failed to delete NSI instance.")
+ }
+
+ }
}
diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoSendCommandToNSSMF.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoSendCommandToNSSMF.groovy
deleted file mode 100644
index a85f5d8ab3..0000000000
--- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoSendCommandToNSSMF.groovy
+++ /dev/null
@@ -1,423 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- # Copyright (c) 2019, CMCC Technologies Co., Ltd.
- #
- # Licensed under the Apache License, Version 2.0 (the "License")
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.bpmn.infrastructure.scripts
-
-import com.fasterxml.jackson.databind.ObjectMapper
-import com.google.gson.Gson
-import com.google.gson.reflect.TypeToken
-import org.camunda.bpm.engine.delegate.BpmnError
-import org.camunda.bpm.engine.delegate.DelegateExecution
-import org.onap.so.beans.nsmf.*
-import org.onap.so.bpmn.common.scripts.*
-import org.onap.so.bpmn.core.UrnPropertiesReader
-import org.onap.so.bpmn.core.WorkflowException
-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.logging.filter.base.ErrorCode
-import org.onap.so.logger.LoggingAnchor
-import org.onap.so.logger.MessageEnum
-import org.slf4j.Logger
-import org.slf4j.LoggerFactory
-import org.springframework.web.util.UriUtils
-
-import java.lang.reflect.Type
-
-/**
- * This class supports the DoCreateVnf building block subflow
- * with the creation of a generic vnf for
- * infrastructure.
- *
- */
-class DoSendCommandToNSSMF extends AbstractServiceTaskProcessor {
-
- private static final Logger logger = LoggerFactory.getLogger( DoSendCommandToNSSMF.class);
- String Prefix="DoCNSSMF_"
- ExceptionUtil exceptionUtil = new ExceptionUtil()
- JsonUtils jsonUtil = new JsonUtils()
- VidUtils vidUtils = new VidUtils(this)
- SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
-
- private NssmfAdapterUtils nssmfAdapterUtils = new NssmfAdapterUtils(httpClientFactory, jsonUtil)
-
- /**
- * This method gets and validates the incoming
- * request.
- *
- * @param - execution
- *
- */
- public void preProcessRequest(DelegateExecution execution) {
-
- execution.setVariable("prefix",Prefix)
- logger.debug("STARTED Do sendcommandtoNssmf PreProcessRequest Process")
-
- /*******************/
- try{
- // Get Variables
- String e2eserviceInstanceId = execution.getVariable("e2eserviceInstanceId")
- String serviceInstanceId = execution.getVariable("e2eserviceInstanceId")
- execution.setVariable("e2eserviceInstanceId", e2eserviceInstanceId)
- execution.setVariable("serviceInstanceId", serviceInstanceId)
- logger.debug("Incoming e2eserviceInstanceId is: " + e2eserviceInstanceId)
-
- String NSIserviceid = execution.getVariable("NSIserviceid")
- execution.setVariable("NSIserviceid", NSIserviceid)
- logger.debug("Incoming NSI id is: " + NSIserviceid)
-
-
- String nssiMap = execution.getVariable("nssiMap")
- Type type = new TypeToken<HashMap<String, NSSI>>(){}.getType()
- Map<String, NSSI> DonssiMap = new Gson().fromJson(nssiMap,type)
- String strDonssiMap = mapToJsonStr(DonssiMap)
- execution.setVariable("DonssiMap",strDonssiMap)
- logger.debug("Incoming DonssiMap is: " + strDonssiMap)
-
- String requestId = execution.getVariable("msoRequestId")
- execution.setVariable("msoRequestId", requestId)
-
- String operationType = execution.getVariable("operationType")
- execution.setVariable("operationType", operationType.toLowerCase())
- logger.debug("Incoming operationType is: " + operationType)
-
- if (operationType == "activation") {
- execution.setVariable("activationSequence","an,tn,cn")
- }else {
- execution.setVariable("activationSequence","cn,tn,an")
- }
- execution.setVariable("activationIndex",0)
- execution.setVariable("miniute", "0")
- execution.setVariable("activateNumberSlice",0)
-
- logger.info("the end !!")
- }catch(BpmnError b){
- logger.debug("Rethrowing MSOWorkflowException")
- throw b
- }catch(Exception e){
- logger.info("the end of catch !!")
- logger.debug(" Error Occured in DoSendCommandToNSSMF PreProcessRequest method!" + e.getMessage())
- exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in DoSendCommandToNSSMF PreProcessRequest")
-
- }
- logger.trace("COMPLETED DoSendCommandToNSSMF PreProcessRequest Process")
- }
-
- private String mapToJsonStr(Map<String, NSSI> stringNSSIHashMap) {
- HashMap<String, NSSI> map = new HashMap<String, NSSI>()
- for(Map.Entry<String, NSSI> child:stringNSSIHashMap.entrySet())
- {
- map.put(child.getKey(), child.getValue())
- }
- return new Gson().toJson(map)
- }
-
- public void getNSSIformlist(DelegateExecution execution) {
-
- String nssiMap = execution.getVariable("DonssiMap")
- Type type = new TypeToken<HashMap<String, NSSI>>(){}.getType()
- Map<String, NSSI> DonssiMap = new Gson().fromJson(nssiMap,type)
- String isNSSIActivate = execution.getVariable("isNSSIActivate")
-
- String activationSequence01 = execution.getVariable("activationSequence")
- String[] strlist = activationSequence01.split(",")
-
- int activationIndex = execution.getVariable("activationIndex")
- int indexcurrent = 0
- if (isNSSIActivate == "true")
- {
- execution.setVariable("isGetSuccessfull", "false")
- }else{for (int index = activationIndex; index < 3;index++) {
- String domaintype01 = strlist[index]
- if (DonssiMap.containsKey(domaintype01)) {
- NSSI nssiobject = DonssiMap.get(domaintype01)
- execution.setVariable("domainType", domaintype01)
- execution.setVariable("nssiId", nssiobject.getNssiId())
- execution.setVariable("modelInvariantUuid", nssiobject.getModelInvariantId())
- execution.setVariable("modelUuid", nssiobject.getModelVersionId())
- execution.setVariable("isGetSuccessfull", "true")
- String modelInvariantUuid = execution.getVariable("modelInvariantUuid")
- String modelUuid = execution.getVariable("modelUuid")
- //here modelVersion is not set, we use modelUuid to decompose the service.
- String serviceModelInfo = """{
- "modelInvariantUuid":"${modelInvariantUuid}",
- "modelUuid":"${modelUuid}",
- "modelVersion":""
- }"""
- execution.setVariable("serviceModelInfo", serviceModelInfo)
- indexcurrent = index
- execution.setVariable("activationIndex", indexcurrent)
- break
- }else
- {
- indexcurrent = index + 1
-
- }
- }
- if ( activationIndex > 2) {
- execution.setVariable("isGetSuccessfull", "false")
- }
- execution.setVariable("activationIndex", indexcurrent)}
-
- }
-
- /**
- * get vendor Info
- * @param execution
- */
- private void processDecomposition(DelegateExecution execution) {
- logger.debug("***** processDecomposition *****")
-
- 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")
-
- execution.setVariable("vendor", vendor)
- // currentNSSI['domainType'] = domainType
- logger.info("processDecomposition, current vendor-domainType:" + vendor)
-
- } catch (any) {
- String exceptionMessage = "Bpmn error encountered in deallocate nssi. processDecomposition() - " + any.getMessage()
- logger.debug(exceptionMessage)
- exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
- }
- logger.debug("***** Exit processDecomposition *****")
- }
-
- public void UpdateIndex(DelegateExecution execution) {
- def activationIndex = execution.getVariable("activationIndex")
- int activateNumberSlice = execution.getVariable("activateNumberSlice") as Integer
- def activationCount= execution.getVariable("activationCount")
- //DecimalFormat df1 = new DecimalFormat("##%")
- int rate = (activateNumberSlice / activationCount) * 100
- if (rate == 100)
- {
- execution.setVariable("isNSSIActivate","true")
- }
- else{
- execution.setVariable("isNSSIActivate","false")
- }
- activationIndex = activationIndex + 1
- execution.setVariable("activationIndex",activationIndex)
- logger.trace("the Progress of activation is " + rate.toString() + "%" )
- try{
- String serviceId = execution.getVariable("serviceInstanceId")
- String operationId = UUID.randomUUID().toString()
- String operationType = execution.getVariable("operationType")
- String userId = ""
- String result = (operationType.equalsIgnoreCase("activation"))? "ACTIVATING": "DEACTIVATING"
- int progress = rate
- String reason = ""
- String operationContent = "Service activation in progress"
- logger.debug("Generated new operation for Service Instance serviceId:" + serviceId + " operationId:" + operationId)
- serviceId = UriUtils.encode(serviceId,"UTF-8")
- execution.setVariable("e2eserviceInstanceId", serviceId)
- execution.setVariable("operationId", operationId)
- execution.setVariable("operationType", operationType)
-
- def dbAdapterEndpoint = UrnPropertiesReader.getVariable("mso.adapters.openecomp.db.endpoint",execution)
- execution.setVariable("CVFMI_dbAdapterEndpoint", dbAdapterEndpoint)
- logger.debug("DB Adapter Endpoint is: " + dbAdapterEndpoint)
-
- String payload =
- """<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
- xmlns:ns="http://org.onap.so/requestsdb">
- <soapenv:Header/>
- <soapenv:Body>
- <ns:initServiceOperationStatus xmlns:ns="http://org.onap.so/requestsdb">
- <serviceId>${MsoUtils.xmlEscape(serviceId)}</serviceId>
- <operationId>${MsoUtils.xmlEscape(operationId)}</operationId>
- <operationType>${MsoUtils.xmlEscape(operationType)}</operationType>
- <userId>${MsoUtils.xmlEscape(userId)}</userId>
- <result>${MsoUtils.xmlEscape(result)}</result>
- <operationContent>${MsoUtils.xmlEscape(operationContent)}</operationContent>
- <progress>${MsoUtils.xmlEscape(progress)}</progress>
- <reason>${MsoUtils.xmlEscape(reason)}</reason>
- </ns:initServiceOperationStatus>
- </soapenv:Body>
- </soapenv:Envelope>"""
-
- payload = utils.formatXml(payload)
- execution.setVariable("CVFMI_updateServiceOperStatusRequest", payload)
- logger.debug("Outgoing CVFMI_updateServiceOperStatusRequest: \n" + payload)
-
- }catch(Exception e){
- logger.error(LoggingAnchor.FIVE, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(),
- "Exception Occured Processing Activate Slice .", "BPMN",
- ErrorCode.UnknownError.getValue(), "Exception is:\n" + e)
- execution.setVariable("CVFMI_ErrorResponse", "Error Occurred during Activate Slice Method:\n" + e.getMessage())
- }
- logger.trace("finished Activate Slice")
- }
-
- public void WaitForReturn(DelegateExecution execution) {
- //logger.debug("Query : "+ Jobid)
- String miniute = execution.getVariable("miniute")
- Thread.sleep(10000)
- int miniute01 = Integer.parseInt(miniute) + 1
- logger.debug("waiting for : "+ miniute + "miniutes")
- execution.setVariable("miniute", String.valueOf(miniute01))
- }
-
- public void GetTheStatusOfActivation(DelegateExecution execution) {
-
- String domaintype = execution.getVariable("domainType")
- String NSIserviceid=execution.getVariable("NSIserviceid")
- String nssiId = execution.getVariable("nssiId")
- String Jobid=execution.getVariable("JobId")
- String miniute=execution.getVariable("miniute")
- String vendor = execution.getVariable("vendor")
- String jobstatus
-
-
- logger.debug("Query the jobid activation of SNSSAI: "+ Jobid)
- logger.debug("the domain is : "+ domaintype)
- logger.debug("the NSSID is : "+nssiId)
- logger.debug("the NSIserviceid is : "+NSIserviceid)
-
- JobStatusRequest jobStatusRequest = new JobStatusRequest()
-
- EsrInfo info = new EsrInfo()
- info.setNetworkType(NetworkType.fromString(domaintype))
- info.setVendor(vendor)
-
- jobStatusRequest.setNsiId(NSIserviceid)
- jobStatusRequest.setNssiId(nssiId)
- jobStatusRequest.setEsrInfo(info)
-
-
- ObjectMapper mapper = new ObjectMapper()
- String nssmfRequest = mapper.writeValueAsString(jobStatusRequest)
- String isActivateSuccessfull
-
- String urlString = "/api/rest/provMns/v1/NSS/jobs/" +Jobid
-
- JobStatusResponse jobStatusResponse = nssmfAdapterUtils.sendPostRequestNSSMF(execution, urlString, nssmfRequest, JobStatusResponse.class)
-
- if (jobStatusResponse != null) {
- execution.setVariable("statusDescription", jobStatusResponse.getResponseDescriptor().getStatusDescription())
- jobstatus = jobStatusResponse.getResponseDescriptor().getStatus()
- switch(jobstatus) {
- case "started":
- case "processing":
- isActivateSuccessfull = "waitting"
- execution.setVariable("isActivateSuccessfull", isActivateSuccessfull)
- break
- case "finished":
- isActivateSuccessfull = "true"
- execution.setVariable("isActivateSuccessfull", isActivateSuccessfull)
- execution.setVariable("activateNumberSlice",execution.getVariable("activateNumberSlice")+ 1)
- break
- case "error":
- default:
- isActivateSuccessfull = "false"
- execution.setVariable("isActivateSuccessfull", isActivateSuccessfull)
-
- }
- if(Integer.parseInt(miniute) > 6 )
- {
- isActivateSuccessfull = "false"
- execution.setVariable("isActivateSuccessfull", isActivateSuccessfull)
- exceptionUtil.buildAndThrowWorkflowException(execution, 7000, "Received a timeout job status Response from NSSMF.")
- }
- } else {
- exceptionUtil.buildAndThrowWorkflowException(execution, 7000, "Received a Bad job status Response from NSSMF.")
- isActivateSuccessfull = false
- execution.setVariable("isActivateSuccessfull", isActivateSuccessfull)
- }
- }
-
- public void SendCommandToNssmf(DelegateExecution execution) {
-
- String snssai= execution.getVariable("snssai")
- String domaintype = execution.getVariable("domainType")
- String NSIserviceid=execution.getVariable("NSIserviceid")
- String nssiId = execution.getVariable("nssiId")
- String vendor = execution.getVariable("vendor")
-
-
- logger.debug("the domain is : "+domaintype)
- logger.debug("SNSSAI: "+snssai +" will be activated")
- logger.debug("the NSSID is : "+nssiId)
- logger.debug("the NSIserviceid is : "+NSIserviceid)
-
- EsrInfo esr = new EsrInfo();
- esr.setNetworkType(NetworkType.fromString(domaintype))
- esr.setVendor(vendor)
-
- ActDeActNssi actNssi = new ActDeActNssi();
- actNssi.setNsiId(NSIserviceid);
- actNssi.setNssiId(nssiId);
- NssiActDeActRequest actRequest = new NssiActDeActRequest();
- actRequest.setActDeActNssi(actNssi);
- actRequest.setEsrInfo(esr)
-
- ObjectMapper mapper = new ObjectMapper()
- String nssmfRequest = mapper.writeValueAsString(actRequest)
-
- String operationType = execution.getVariable("operationType")
-
- String urlString = "/api/rest/provMns/v1/NSS/" + snssai + "/" + operationType.toLowerCase()
-
- NssiResponse nssmfResponse = nssmfAdapterUtils.sendPostRequestNSSMF(execution, urlString, nssmfRequest, NssiResponse.class)
-
- if (nssmfResponse != null) {
- String isNSSIActivated = "true"
- execution.setVariable("isNSSIActivated", isNSSIActivated)
- String jobId = nssmfResponse.getJobId() ?: ""
- execution.setVariable("JobId", jobId)
- } else {
- exceptionUtil.buildAndThrowWorkflowException(execution, 7000, "Received a Bad Response from NSSMF.")
- String isNSSIActivated = "false"
- execution.setVariable("isNSSIActivated", isNSSIActivated)
- execution.setVariable("isNSSIActivate","false")
- }
-
- }
-
- void sendSyncError (DelegateExecution execution) {
- logger.trace("start sendSyncError")
- try {
- String errorMessage = ""
- if (execution.getVariable("WorkflowException") instanceof WorkflowException) {
- WorkflowException wfe = execution.getVariable("WorkflowException")
- errorMessage = wfe.getErrorMessage()
- } else {
- errorMessage = "Sending Sync Error."
- }
-
- String buildworkflowException =
- """<aetgt:WorkflowException xmlns:aetgt="http://org.onap/so/workflow/schema/v1">
- <aetgt:ErrorMessage>${MsoUtils.xmlEscape(errorMessage)}</aetgt:ErrorMessage>
- <aetgt:ErrorCode>7000</aetgt:ErrorCode>
- </aetgt:WorkflowException>"""
-
- logger.debug(buildworkflowException)
- sendWorkflowResponse(execution, 500, buildworkflowException)
-
- } catch (Exception ex) {
- logger.debug("Sending Sync Error Activity Failed. " + "\n" + ex.getMessage())
- }
- logger.trace("finished sendSyncError")
- }
-}
diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/ServiceLevelUpgrade.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/ServiceLevelUpgrade.groovy
new file mode 100644
index 0000000000..15f44ce03c
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/ServiceLevelUpgrade.groovy
@@ -0,0 +1,126 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.bpmn.infrastructure.scripts
+
+import org.camunda.bpm.engine.delegate.DelegateExecution
+import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.common.scripts.MsoUtils
+import org.onap.so.bpmn.common.workflow.context.WorkflowContext
+import org.onap.so.bpmn.common.workflow.context.WorkflowContextHolder
+import org.onap.so.bpmn.core.WorkflowException
+import org.slf4j.Logger
+import org.slf4j.LoggerFactory
+
+import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.PNF_CORRELATION_ID
+import static org.onap.so.bpmn.infrastructure.pnf.delegate.ExecutionVariableNames.REQUEST_ID
+
+class ServiceLevelUpgrade extends AbstractServiceTaskProcessor {
+ private static final Logger logger = LoggerFactory.getLogger(ServiceLevelUpgrade.class)
+
+ ExceptionUtil exceptionUtil = new ExceptionUtil()
+ String prefix = "ServiceLevelUpgrade_"
+
+ @Override
+ void preProcessRequest(DelegateExecution execution) {
+ }
+
+ void sendResponse(DelegateExecution execution) {
+ def requestId = execution.getVariable(REQUEST_ID)
+ def instanceId = execution.getVariable(PNF_CORRELATION_ID)
+ logger.debug("Send response for requestId: {}, instanceId: {}", requestId, instanceId)
+
+ String response = """{"requestReferences":{"requestId":"${requestId}", "instanceId":"${instanceId}"}}""".trim()
+ sendWorkflowResponse(execution, 200, response)
+ }
+
+ static WorkflowContext getWorkflowContext(DelegateExecution execution) {
+ String requestId = execution.getVariable(REQUEST_ID)
+ return WorkflowContextHolder.getInstance().getWorkflowContext(requestId)
+ }
+
+ void prepareCompletion(DelegateExecution execution) {
+ try {
+ String requestId = execution.getVariable(REQUEST_ID)
+ logger.debug("Prepare Completion of Service Level Upgrade for requestId: {}", requestId)
+
+ String msoCompletionRequest =
+ """<aetgt:MsoCompletionRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1"
+ xmlns:ns="http://org.onap/so/request/types/v1">
+ <request-info xmlns="http://org.onap/so/infra/vnf-request/v1">
+ <request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+ <action>UPDATE</action>
+ <source>VID</source>
+ </request-info>
+ <aetgt:status-message>Service Level Upgrade successful.</aetgt:status-message>
+ <aetgt:mso-bpel-name>SERVICE_LEVEL_UPGRADE</aetgt:mso-bpel-name>
+ </aetgt:MsoCompletionRequest>"""
+ String xmlMsoCompletionRequest = utils.formatXml(msoCompletionRequest)
+
+ execution.setVariable(prefix + "CompleteMsoProcessRequest", xmlMsoCompletionRequest)
+
+ logger.debug("CompleteMsoProcessRequest of Service Level Upgrade - " + "\n" + xmlMsoCompletionRequest)
+ } catch (Exception e) {
+ String msg = "Prepare Completion error for Service Level Upgrade - " + e.getMessage()
+ logger.error(msg)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 2000, msg)
+ }
+ }
+
+ void prepareFalloutHandler(DelegateExecution execution) {
+ WorkflowContext workflowContext = getWorkflowContext(execution)
+ if (workflowContext == null) {
+ logger.debug("Error occurred before sending response to API handler, and send it now")
+ sendResponse(execution)
+ }
+
+ try {
+ String requestId = execution.getVariable(REQUEST_ID)
+ logger.debug("Prepare FalloutHandler of Service Level Upgrade for requestId: {}", requestId)
+
+ WorkflowException workflowException = (WorkflowException)execution.getVariable("WorkflowException")
+ String errorCode = String.valueOf(workflowException.getErrorCode())
+ String errorMessage = workflowException.getErrorMessage()
+ String falloutHandlerRequest =
+ """<aetgt:FalloutHandlerRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1"
+ xmlns:ns="http://org.onap/so/request/types/v1">
+ <request-info xmlns="http://org.onap/so/infra/vnf-request/v1">
+ <request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+ <action>UPDATE</action>
+ <source>VID</source>
+ </request-info>
+ <aetgt:WorkflowException xmlns:aetgt="http://org.onap/so/workflow/schema/v1">
+ <aetgt:ErrorMessage>${MsoUtils.xmlEscape(errorMessage)}</aetgt:ErrorMessage>
+ <aetgt:ErrorCode>${MsoUtils.xmlEscape(errorCode)}</aetgt:ErrorCode>
+ </aetgt:WorkflowException>
+ </aetgt:FalloutHandlerRequest>"""
+ String xmlFalloutHandlerRequest = utils.formatXml(falloutHandlerRequest)
+
+ execution.setVariable(prefix + "FalloutHandlerRequest", xmlFalloutHandlerRequest)
+
+ logger.debug("FalloutHandlerRequest of Service Level Upgrade - " + "\n" + xmlFalloutHandlerRequest)
+ } catch (Exception e) {
+ String msg = "Prepare FalloutHandler error for Service Level upgrade - " + e.getMessage()
+ logger.error(msg)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 2000, msg)
+ }
+ }
+}
diff --git a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateCoreNonSharedSliceTest.groovy b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateCoreNonSharedSliceTest.groovy
index 6b15407dd0..fa1cef291e 100644
--- a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateCoreNonSharedSliceTest.groovy
+++ b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateCoreNonSharedSliceTest.groovy
@@ -20,7 +20,8 @@
package org.onap.so.bpmn.infrastructure.scripts
-import static org.junit.Assert.*
+import static org.junit.Assert.assertNotNull
+import static org.junit.Assert.assertEquals
import org.junit.Before
import org.junit.Test
@@ -49,14 +50,19 @@ class DoAllocateCoreNonSharedSliceTest extends MsoGroovyTest {
@Test
public void testPreProcessRequest() {
- String networkServiceModelInfo=""" {
- "modelName" : "5GC-eMBB Service Proxy",
- "modelUuid" : "b666119e-4400-47c6-a0c1-bbe050a33b47",
- "modelInvariantUuid" : "a26327e1-4a9b-4883-b7a5-5f37dcb7405a",
+ String networkServiceModelInfo="""{
+ "modelInfo" : {
+ "modelName" : "vfw_cnf_service_2310 Service Proxy",
+ "modelUuid" : "35386eb0-b673-48c5-9757-45ecfc506bf8",
+ "modelInvariantUuid" : "b048d7bc-8bfd-4950-aea5-22b1aaf5d76b",
"modelVersion" : "1.0",
- "modelCustomizationUuid" : "cbc12c2a-67e6-4336-9236-eaf51eacdc75",
- "modelInstanceName" : "5gcembb_proxy 0"
- }"""
+ "modelCustomizationUuid" : "82f4db76-e7ad-47eb-b5e3-661683f14de6",
+ "modelInstanceName" : "vfw_cnf_service_2310_proxy 0"
+ },
+ "toscaNodeType" : "org.openecomp.nodes.vfw_cnf_service_2310_proxy",
+ "description" : "A Proxy for Service vfw_cnf_service_2310",
+ "sourceModelUuid" : "f3666c56-744e-4055-9f4a-0726460898e0"
+ }"""
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}"""
@@ -70,10 +76,10 @@ class DoAllocateCoreNonSharedSliceTest extends MsoGroovyTest {
Mockito.verify(mockExecution, times(1)).setVariable(eq("networkServiceModelUuid"), captor.capture())
captor.getValue()
- assertEquals("b666119e-4400-47c6-a0c1-bbe050a33b47", captor.getValue())
+ assertEquals("f3666c56-744e-4055-9f4a-0726460898e0", captor.getValue())
Mockito.verify(mockExecution, times(1)).setVariable(eq("networkServiceName"), captor.capture())
- assertEquals("5GC-eMBB", captor.getValue())
+ assertEquals("vfw_cnf_service_2310", captor.getValue())
Mockito.verify(mockExecution, times(1)).setVariable(eq("orchestrationStatus"), captor.capture())
assertEquals("created", captor.getValue())
@@ -90,6 +96,7 @@ class DoAllocateCoreNonSharedSliceTest extends MsoGroovyTest {
when(mockExecution.getVariable("networkServiceName")).thenReturn("5g_embb")
when(mockExecution.getVariable("globalSubscriberId")).thenReturn("5GCustomer")
when(mockExecution.getVariable("networkServiceModelUuid")).thenReturn("12345")
+ when(mockExecution.getVariable("vnfInstanceName")).thenReturn("vf00")
DoAllocateCoreNonSharedSlice allocateNssi = new DoAllocateCoreNonSharedSlice()
allocateNssi.prepareServiceOrderRequest(mockExecution)
@@ -106,7 +113,7 @@ class DoAllocateCoreNonSharedSliceTest extends MsoGroovyTest {
Map<String, Object> ServiceCharacteristicValue = new LinkedHashMap<>()
Map<String, Object> ServiceCharacteristicValueObject = new LinkedHashMap<>()
ServiceCharacteristicValueObject.put("serviceCharacteristicValue","001-100001")
- ServiceCharacteristicValue.put("name", "snssai")
+ ServiceCharacteristicValue.put("name", "vf00_snssai")
ServiceCharacteristicValue.put("value", ServiceCharacteristicValueObject)
List expectedList= new ArrayList()
@@ -116,8 +123,7 @@ class DoAllocateCoreNonSharedSliceTest extends MsoGroovyTest {
Map<String, Object> serviceCharacteristic = objectMapper.readValue(sliceProfile, Map.class);
DoAllocateCoreNonSharedSlice allocateNssi = new DoAllocateCoreNonSharedSlice()
- List characteristicList=allocateNssi.retrieveServiceCharacteristicsAsKeyValue(serviceCharacteristic)
-
+ List characteristicList=allocateNssi.retrieveServiceCharacteristicsAsKeyValue(mockExecution, serviceCharacteristic)
assertEquals(expectedList, characteristicList)
}
} \ No newline at end of file
diff --git a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateCoreSharedSliceTest.groovy b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateCoreSharedSliceTest.groovy
index 0ac48ad189..9068692e30 100644
--- a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateCoreSharedSliceTest.groovy
+++ b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateCoreSharedSliceTest.groovy
@@ -20,6 +20,9 @@
package org.onap.so.bpmn.infrastructure.scripts
+import static org.junit.Assert.assertNotNull
+import static org.junit.Assert.assertEquals
+
import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity
import org.junit.Before
import org.junit.Test
@@ -32,7 +35,6 @@ import org.onap.aaiclient.client.aai.entities.AAIResultWrapper
import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri
import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory
import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder
-import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder.Types
import static org.mockito.Mockito.spy
import static org.mockito.Mockito.times
@@ -91,7 +93,7 @@ class DoAllocateCoreSharedSliceTest extends MsoGroovyTest {
}
@Test
- public void tesPrepareSOMacroRequestPayload() {
+ public void testPrepareSOMacroRequestPayload() {
String json ="{ \"serviceResources\" : {\r\n\t\"modelInfo\" : {\r\n\t\t\"modelName\" : \"MSOTADevInfra_vSAMP10a_Service\",\r\n\t\t\"modelUuid\" : \"5df8b6de-2083-11e7-93ae-92361f002671\",\r\n\t\t\"modelInvariantUuid\" : \"9647dfc4-2083-11e7-93ae-92361f002671\",\r\n\t\t\"modelVersion\" : \"1.0\"\r\n\t},\r\n\t\"serviceType\" : \"PortMirroring\",\r\n\t\"serviceRole\" : \"InfraRole\",\r\n\t\"environmentContext\" : \"Luna\",\r\n\t\"workloadContext\" : \"Oxygen\",\r\n\t\"serviceVnfs\": [\r\n\t\r\n\t\t{ \"modelInfo\" : {\r\n\t\t\t\"modelName\" : \"vSAMP10a\",\r\n\t\t\t\"modelUuid\" : \"ff2ae348-214a-11e7-93ae-92361f002671\",\r\n\t\t\t\"modelInvariantUuid\" : \"2fff5b20-214b-11e7-93ae-92361f002671\",\r\n\t\t\t\"modelVersion\" : \"1.0\",\r\n\t\t\t\"modelCustomizationUuid\" : \"68dc9a92-214c-11e7-93ae-92361f002671\",\r\n\t\t\t\"modelInstanceName\" : \"vSAMP10a 1\"\r\n\t\t\t},\r\n\t\t\"toscaNodeType\" : \"VF\",\r\n\t\t\"nfFunction\" \t: null,\r\n\t\t\"nfType\" \t\t: null,\r\n\t\t\"nfRole\" \t\t: null,\r\n\t\t\"nfNamingCode\" \t: null,\r\n\t\t\"multiStageDesign\"\t\t: null,\r\n\t\t\t\"vfModules\": [\r\n\t\t\t\t{\r\n\t\t\t\t\t\"modelInfo\" : { \r\n\t\t\t\t\t\t\"modelName\" : \"NetworkFqdnTest4\",\r\n\t\t\t\t\t\t\"modelUuid\" : \"025606c1-4223-11e7-9252-005056850d2e\",\r\n\t\t\t\t\t\t\"modelInvariantUuid\" : \"06bd0a18-65c0-4418-83c7-5b0d13cba01a\",\r\n\t\t\t\t\t\t\"modelVersion\" : \"2.0\",\r\n\t\t\t\t\t\t\"modelCustomizationUuid\" : \"06bd0a18-65c0-4418-83c7-5b0d13cba01a\"\r\n\t\t\t\t\t},\t\t\"isBase\" : true,\r\n\t\t\t\t\t\"vfModuleLabel\" : \"label\",\r\n\t\t\t\t\t\"initialCount\" : 0,\r\n\t\t\t\t\t\"hasVolumeGroup\" : true\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t\"modelInfo\" : { \r\n\t\t\t\t\t\t\"modelName\" : \"NetworkFqdnTest3\",\r\n\t\t\t\t\t\t\"modelUuid\" : \"02560575-4223-11e7-9252-005056850d2e\",\r\n\t\t\t\t\t\t\"modelInvariantUuid\" : \"06bd0a18-65c0-4418-83c7-5b0d13cba0bb\",\r\n\t\t\t\t\t\t\"modelVersion\" : \"1.0\",\r\n\t\t\t\t\t\t\"modelCustomizationUuid\" : \"06bd0a18-65c0-4418-83c7-5b0d13cba0bb\"\r\n\t\t\t\t\t},\t\t\"isBase\" : true,\r\n\t\t\t\t\t\"vfModuleLabel\" : \"label\",\r\n\t\t\t\t\t\"initialCount\" : 0,\r\n\t\t\t\t\t\"hasVolumeGroup\" : false\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t\"modelInfo\" : { \r\n\t\t\t\t\t\t\"modelName\" : \"NetworkFqdnTest5\",\r\n\t\t\t\t\t\t\"modelUuid\" : \"025607e4-4223-11e7-9252-005056850d2e\",\r\n\t\t\t\t\t\t\"modelInvariantUuid\" : \"06bd0a18-65c0-4418-83c7-5b0d14cba01a\",\r\n\t\t\t\t\t\t\"modelVersion\" : \"1.0\",\r\n\t\t\t\t\t\t\"modelCustomizationUuid\" : \"06bd0a18-65c0-4418-83c7-5b0d14cba01a\"\r\n\t\t\t\t\t},\t\t\"isBase\" : false,\r\n\t\t\t\t\t\"vfModuleLabel\" : \"label\",\r\n\t\t\t\t\t\"initialCount\" : 0,\r\n\t\t\t\t\t\"hasVolumeGroup\" : false\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t\"modelInfo\" : { \r\n\t\t\t\t\t\t\"modelName\" : \"vSAMP10aDEV::PCM::module-2\",\r\n\t\t\t\t\t\t\"modelUuid\" : \"7774b4e4-7d37-11e7-bb31-be2e44b06b34\",\r\n\t\t\t\t\t\t\"modelInvariantUuid\" : \"93e9c1d2-7d37-11e7-bb31-be2e44b06b34\",\r\n\t\t\t\t\t\t\"modelVersion\" : \"2\",\r\n\t\t\t\t\t\t\"modelCustomizationUuid\" : \"6728bee8-7d3a-11e7-bb31-be2e44b06b34\"\r\n\t\t\t\t\t},\t\t\"isBase\" : false,\r\n\t\t\t\t\t\"vfModuleLabel\" : \"PCM\",\r\n\t\t\t\t\t\"initialCount\" : 0,\r\n\t\t\t\t\t\"hasVolumeGroup\" : true\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t\"modelInfo\" : { \r\n\t\t\t\t\t\t\"modelName\" : \"vSAMP10aDEV::PCM::module-1\",\r\n\t\t\t\t\t\t\"modelUuid\" : \"066de97e-253e-11e7-93ae-92361f002671\",\r\n\t\t\t\t\t\t\"modelInvariantUuid\" : \"64efd51a-2544-11e7-93ae-92361f002671\",\r\n\t\t\t\t\t\t\"modelVersion\" : \"2\",\r\n\t\t\t\t\t\t\"modelCustomizationUuid\" : \"b4ea86b4-253f-11e7-93ae-92361f002671\"\r\n\t\t\t\t\t},\t\t\"isBase\" : false,\r\n\t\t\t\t\t\"vfModuleLabel\" : \"PCM\",\r\n\t\t\t\t\t\"initialCount\" : 0,\r\n\t\t\t\t\t\"hasVolumeGroup\" : true\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t\"modelInfo\" : { \r\n\t\t\t\t\t\t\"modelName\" : \"vSAMP10aDEV::base::module-0\",\r\n\t\t\t\t\t\t\"modelUuid\" : \"20c4431c-246d-11e7-93ae-92361f002671\",\r\n\t\t\t\t\t\t\"modelInvariantUuid\" : \"78ca26d0-246d-11e7-93ae-92361f002671\",\r\n\t\t\t\t\t\t\"modelVersion\" : \"2\",\r\n\t\t\t\t\t\t\"modelCustomizationUuid\" : \"cb82ffd8-252a-11e7-93ae-92361f002671\"\r\n\t\t\t\t\t},\t\t\"isBase\" : true,\r\n\t\t\t\t\t\"vfModuleLabel\" : \"base\",\r\n\t\t\t\t\t\"initialCount\" : 1,\r\n\t\t\t\t\t\"hasVolumeGroup\" : true\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t\"modelInfo\" : { \r\n\t\t\t\t\t\t\"modelName\" : \"vSAMP10a::base::module-0\",\r\n\t\t\t\t\t\t\"modelUuid\" : \"02560de2-4223-11e7-9252-005056850d2e\",\r\n\t\t\t\t\t\t\"modelInvariantUuid\" : null,\r\n\t\t\t\t\t\t\"modelVersion\" : \"2\",\r\n\t\t\t\t\t\t\"modelCustomizationUuid\" : \"MIGRATED_36e76920-ef30-4793-9979-cbd7d4b2bfc4\"\r\n\t\t\t\t\t},\t\t\"isBase\" : true,\r\n\t\t\t\t\t\"vfModuleLabel\" : \"base\",\r\n\t\t\t\t\t\"initialCount\" : 1,\r\n\t\t\t\t\t\"hasVolumeGroup\" : true\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t\"modelInfo\" : { \r\n\t\t\t\t\t\t\"modelName\" : \"base::module-0\",\r\n\t\t\t\t\t\t\"modelUuid\" : \"02561381-4223-11e7-9252-005056850d2e\",\r\n\t\t\t\t\t\t\"modelInvariantUuid\" : null,\r\n\t\t\t\t\t\t\"modelVersion\" : \"1\",\r\n\t\t\t\t\t\t\"modelCustomizationUuid\" : \"MIGRATED_51baae4c-b7c7-4f57-b77e-6e01acca89e5\"\r\n\t\t\t\t\t},\t\t\"isBase\" : true,\r\n\t\t\t\t\t\"vfModuleLabel\" : \"module-0\",\r\n\t\t\t\t\t\"initialCount\" : 1,\r\n\t\t\t\t\t\"hasVolumeGroup\" : false\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t\"modelInfo\" : { \r\n\t\t\t\t\t\t\"modelName\" : \"vSAMP10a::PCM::module-1\",\r\n\t\t\t\t\t\t\"modelUuid\" : \"02560f1b-4223-11e7-9252-005056850d2e\",\r\n\t\t\t\t\t\t\"modelInvariantUuid\" : null,\r\n\t\t\t\t\t\t\"modelVersion\" : \"1\",\r\n\t\t\t\t\t\t\"modelCustomizationUuid\" : \"MIGRATED_e9be2ed7-45b6-479c-b06e-9093899f8ce8\"\r\n\t\t\t\t\t},\t\t\"isBase\" : true,\r\n\t\t\t\t\t\"vfModuleLabel\" : \"PCM\",\r\n\t\t\t\t\t\"initialCount\" : 1,\r\n\t\t\t\t\t\"hasVolumeGroup\" : true\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t}\r\n\t],\r\n\t\"serviceNetworks\": [],\r\n\t\"serviceAllottedResources\": [\r\n\t\t{\r\n\t\t\t\"modelInfo\" : {\r\n\t\t\t\t\"modelName\" : \"Tunnel_Xconn\",\r\n\t\t\t\t\"modelUuid\" : \"f6b7d4c6-e8a4-46e2-81bc-31cad5072842\",\r\n\t\t\t\t\"modelInvariantUuid\" : \"b7a1b78e-6b6b-4b36-9698-8c9530da14af\",\r\n\t\t\t\t\"modelVersion\" : \"1.0\",\r\n\t\t\t\t\"modelCustomizationUuid\" : \"5b9bee43-f537-4fb3-9e8b-4de9f714d28a\",\r\n\t\t\t\t\"modelInstanceName\" : \"Pri_Tunnel_Xconn 9\"\r\n\t\t\t},\r\n\t\t\t\"toscaNodeType\" : null,\r\n\t\t\t\"allottedResourceType\" : null,\r\n\t\t\t\"allottedResourceRole\" : null,\r\n\t\t\t\"providingServiceModelInvariantUuid\" : null,\r\n\t\t\t\"nfFunction\" : null,\r\n\t\t\t\"nfType\" : null,\r\n\t\t\t\"nfRole\" : null,\r\n\t\t\t\"nfNamingCode\" : null\r\n\t\t}\r\n\t],\r\n\t\"serviceConfigs\": [\r\n\t\t{\r\n\t\t\t\"modelInfo\" : {\r\n\t\t\t\t\"modelName\" : \"Mulder\",\r\n\t\t\t\t\"modelUuid\" : \"025606c1-4fff-11e7-9252-005056850d2e\",\r\n\t\t\t\t\"modelInvariantUuid\" : \"025606c1-4eee-11e7-9252-005056850d2e\",\r\n\t\t\t\t\"modelVersion\" : \"1.0\",\r\n\t\t\t\t\"modelCustomizationUuid\" : \"025606c1-4ddd-11e7-9252-005056850d2e\",\r\n\t\t\t\t\"modelInstanceName\" : \"X_FILES_001\"\r\n\t\t\t},\r\n\t\t\t\"toscaNodeType\" : \"Scully\"\r\n\t\t},\r\n\t\t{\r\n\t\t\t\"modelInfo\" : {\r\n\t\t\t\t\"modelName\" : \"Krychuk\",\r\n\t\t\t\t\"modelUuid\" : \"025606c1-5fff-11e7-9252-005056850d2e\",\r\n\t\t\t\t\"modelInvariantUuid\" : \"025606c1-5eee-11e7-9252-005056850d2e\",\r\n\t\t\t\t\"modelVersion\" : \"1.0\",\r\n\t\t\t\t\"modelCustomizationUuid\" : \"025606c1-5ddd-11e7-9252-005056850d2e\",\r\n\t\t\t\t\"modelInstanceName\" : \"X_FILES_002\"\r\n\t\t\t},\r\n\t\t\t\"toscaNodeType\" : \"Skinner\"\r\n\t\t}\r\n\t]\r\n\t}}\r\n\r\n"
String sliceProfile = "{\r\n \"snssaiList\": [ \r\n \"001-100001\"\r\n ],\r\n \"sliceProfileId\": \"ab9af40f13f721b5f13539d87484098\",\r\n \"plmnIdList\": [\r\n \"460-00\",\r\n \"460-01\"\r\n ],\r\n \"perfReq\": {\r\n \"perfReqEmbbList \": [\r\n {\r\n \"activityFactor\": 50\r\n }\r\n ]\r\n },\r\n \"maxNumberofUEs\": 200, \r\n \"coverageAreaTAList\": [ \r\n \"1\",\r\n \"2\",\r\n \"3\",\r\n \"4\"\r\n ],\r\n \"latency\": 2,\r\n \"resourceSharingLevel\": \"non-shared\" \r\n }"
@@ -125,7 +127,7 @@ class DoAllocateCoreSharedSliceTest extends MsoGroovyTest {
when(mockExecution.getVariable("snssaiAndOrchStatusList")).thenReturn(snssaiList)
String returnedJsonAsString= allocate.prepareVnfInstanceParamsJson(mockExecution)
- String expectedJsonAsString = """{supportedNssai={"sNssai":[{"snssai":"01-5C83F071","status":"activated"},{"snssai":"01-5B179BD4","status":"activated"}]}}"""
+ String expectedJsonAsString = """{"sNssai":[{"snssai":"01-5C83F071","status":"activated"},{"snssai":"01-5B179BD4","status":"activated"}]}"""
assertEquals(expectedJsonAsString, returnedJsonAsString)
}
@@ -137,6 +139,7 @@ class DoAllocateCoreSharedSliceTest extends MsoGroovyTest {
DoAllocateCoreSharedSlice obj = spy(DoAllocateCoreSharedSlice.class)
when(obj.getAAIClient()).thenReturn(client)
+
AAIResourceUri resourceUri1 = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer("5GCustomer").serviceSubscription("5G").serviceInstance("NSSI-C-7Q4-HDBNJ-NSSMF-01-A-ZX"))
when(client.exists(resourceUri1)).thenReturn(true)
AAIResultWrapper wrapper1 = new AAIResultWrapper(mockQuerySliceServiceReturn())
@@ -149,15 +152,14 @@ class DoAllocateCoreSharedSliceTest extends MsoGroovyTest {
when(client.exists(resourceUri2)).thenReturn(true)
AAIResultWrapper wrapper2 = new AAIResultWrapper(mockQueryNS())
when(client.get(resourceUri2, NotFoundException.class)).thenReturn(wrapper2)
-
//Check Vnf
when(mockExecution.getVariable("vnfId")).thenReturn("eeb66c6f-36bd-47ad-8294-48f46b1aa912")
- AAIResourceUri resourceUri3 = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().genericVnf("eeb66c6f-36bd-47ad-8294-48f46b1aa912"))
+
+ AAIResourceUri resourceUri3 = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().genericVnf(mockExecution.getVariable("vnfId")))
when(client.exists(resourceUri3)).thenReturn(true)
AAIResultWrapper wrapper3 = new AAIResultWrapper(mockQueryVnf())
when(client.get(resourceUri3, NotFoundException.class)).thenReturn(wrapper3)
-
//Allotted Resources-1
AAIResourceUri resourceUri4 = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer("5GCustomer").serviceSubscription("5G").serviceInstance("0d3d3cce-46a8-486d-816a-954e71697c4e"))
when(client.exists(resourceUri4)).thenReturn(true)
@@ -185,22 +187,19 @@ class DoAllocateCoreSharedSliceTest extends MsoGroovyTest {
Mockito.verify(mockExecution, times(1)).setVariable(eq("owningEntityId"), captor.capture())
assertEquals("OE-generic", captor.getValue())
- //assertEquals("206535e7-77c9-4036-9387-3f1cf57b4379", captor.getValue())
-
//VnfId
Mockito.verify(mockExecution, times(1)).setVariable(eq("vnfId"), captor.capture())
assertEquals("eeb66c6f-36bd-47ad-8294-48f46b1aa912", captor.getValue())
- //
Mockito.verify(mockExecution, times(1)).setVariable(eq("snssaiAndOrchStatusList"), captor.capture())
List<Map<String, Object>> snssaiList = new ArrayList<>()
Map<String, Object> snssaiMap = new LinkedHashMap<>()
snssaiMap.put("snssai", "01-5C83F071")
- snssaiMap.put("orchestrationStatus", "activated")
+ snssaiMap.put("status", "activated")
snssaiList.add(snssaiMap)
Map<String, Object> snssaiMap1 = new LinkedHashMap<>()
snssaiMap1.put("snssai", "01-5B179BD4")
- snssaiMap1.put("orchestrationStatus", "activated")
+ snssaiMap1.put("status", "activated")
snssaiList.add(snssaiMap1)
assertEquals(snssaiList, captor.getValue())
@@ -237,6 +236,7 @@ class DoAllocateCoreSharedSliceTest extends MsoGroovyTest {
when(mockExecution.getVariable("msoRequestId")).thenReturn("5ad89cf9-0569-4a93-4509-d8324321e2be")
when(mockExecution.getVariable("serviceInstanceID")).thenReturn("NSSI-C-7Q4-HDBNJ-NSSMF-01-A-ZX")
+ when(mockExecution.getVariable("nssiId")).thenReturn("NSSI-C-7Q4-HDBNJ-NSSMF-01-A-ZX")
when(mockExecution.getVariable("nsiId")).thenReturn("NSI-M-001-HDBNJ-NSMF-01-A-ZX")
when(mockExecution.getVariable("globalSubscriberId")).thenReturn("5GCustomer")
when(mockExecution.getVariable("subscriptionServiceType")).thenReturn("5G")
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/ActivateSliceService.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/ActivateSliceService.bpmn
index cd4cf473a6..af89197057 100644
--- a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/ActivateSliceService.bpmn
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/ActivateSliceService.bpmn
@@ -2,25 +2,12 @@
<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:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_13dsy4w" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="3.4.1">
<bpmn:error id="Error_0l3pcnc" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
<bpmn:error id="Error_1eyu7sx" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
- <bpmn:collaboration id="Collaboration_0htncd8">
- <bpmn:participant id="ActivateSliceService01" name="ActivateSliceService" processRef="ActivateSliceService" />
- </bpmn:collaboration>
+ <bpmn:error id="Error_0vq6f5h" name="Error_3ai5jm1" />
<bpmn:process id="ActivateSliceService" name="ActivateSliceService" isExecutable="true">
- <bpmn:scriptTask id="Task_1vscxgp" name="Update the status of SNSSAI and NSI and NSSI" scriptFormat="groovy">
- <bpmn:incoming>SequenceFlow_1jp9gjt</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_1gkpl5q</bpmn:outgoing>
- <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def csi= new ActivateSliceService()
-csi.updateStatusSNSSAIandNSIandNSSI(execution)</bpmn:script>
- </bpmn:scriptTask>
- <bpmn:scriptTask id="ScriptTask_0cbth6k" name="Prepare Completion Request" scriptFormat="groovy">
- <bpmn:incoming>SequenceFlow_1gkpl5q</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_0pzts4p</bpmn:outgoing>
- <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def csi = new ActivateSliceService()
-csi.prepareCompletionRequest(execution)</bpmn:script>
- </bpmn:scriptTask>
- <bpmn:serviceTask id="ServiceTask_1aymwlt" name="Update Service Operation Status to Success">
+ <bpmn:startEvent id="StartEvent_01bdhbw" name="start">
+ <bpmn:outgoing>SequenceFlow_1tdecf1</bpmn:outgoing>
+ </bpmn:startEvent>
+ <bpmn:serviceTask id="ServiceTask_1hmtmeq" name="Update Service Operation Status">
<bpmn:extensionElements>
<camunda:connector>
<camunda:inputOutput>
@@ -28,7 +15,7 @@ csi.prepareCompletionRequest(execution)</bpmn:script>
<camunda:inputParameter name="headers">
<camunda:map>
<camunda:entry key="content-type">application/soap+xml</camunda:entry>
- <camunda:entry key="Authorization">${UrnPropertiesReader.getVariable("mso.adapters.requestDb.auth", execution)}</camunda:entry>
+ <camunda:entry key="Authorization">Basic YnBlbDpwYXNzd29yZDEk</camunda:entry>
</camunda:map>
</camunda:inputParameter>
<camunda:inputParameter name="payload">${updateOperationStatus}</camunda:inputParameter>
@@ -39,65 +26,95 @@ csi.prepareCompletionRequest(execution)</bpmn:script>
<camunda:connectorId>http-connector</camunda:connectorId>
</camunda:connector>
</bpmn:extensionElements>
- <bpmn:incoming>SequenceFlow_0pzts4p</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_0ozefu5</bpmn:outgoing>
+ <bpmn:incoming>SequenceFlow_1ox6oh6</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_0szxmyf</bpmn:outgoing>
</bpmn:serviceTask>
- <bpmn:endEvent id="EndEvent_0d1g3mv">
- <bpmn:incoming>SequenceFlow_0r611x8</bpmn:incoming>
- <bpmn:incoming>SequenceFlow_0ozefu5</bpmn:incoming>
- </bpmn:endEvent>
- <bpmn:endEvent id="EndEvent_1pujgw8">
- <bpmn:incoming>SequenceFlow_1qa8miv</bpmn:incoming>
- <bpmn:errorEventDefinition id="ErrorEventDefinition_17jklyl" errorRef="Error_1eyu7sx" />
- </bpmn:endEvent>
- <bpmn:exclusiveGateway id="ExclusiveGateway_0z7s0nx" name="IsSuccessfull">
- <bpmn:incoming>SequenceFlow_00ba5l9</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_1jp9gjt</bpmn:outgoing>
- <bpmn:outgoing>SequenceFlow_1qa8miv</bpmn:outgoing>
- </bpmn:exclusiveGateway>
- <bpmn:callActivity id="CallActivity_1cvb0iq" name="Send command NSSMF" calledElement="DoSendCommandToNSSMF">
- <bpmn:extensionElements>
- <camunda:in source="nssiMap" target="nssiMap" />
- <camunda:in source="operationType" target="operationType" />
- <camunda:in source="NSIserviceid" target="NSIserviceid" />
- <camunda:out source="WorkflowException" target="WorkflowException" />
- <camunda:out source="isNSSIActivate" target="isNSSIActivate" />
- <camunda:in source="snssai" target="snssai" />
- <camunda:in source="e2eserviceInstanceId" target="e2eserviceInstanceId" />
- <camunda:in source="msoRequestId" target="msoRequestId" />
- <camunda:in source="activationCount" target="activationCount" />
- <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
- </bpmn:extensionElements>
- <bpmn:incoming>SequenceFlow_1o4zjvp</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_00ba5l9</bpmn:outgoing>
- </bpmn:callActivity>
- <bpmn:scriptTask id="ScriptTask_04p0zjj" name="Send Sync Ack Response" scriptFormat="groovy">
- <bpmn:incoming>SequenceFlow_1yus0c1</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_1uqgdxr</bpmn:outgoing>
+ <bpmn:scriptTask id="ScriptTask_1wow08q" name="Pre Process Incoming Request" scriptFormat="groovy">
+ <bpmn:incoming>SequenceFlow_1tdecf1</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_0bvnci8</bpmn:outgoing>
+ <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
+def csi= new ActivateSliceService()
+csi.preProcessRequest(execution)</bpmn:script>
+ </bpmn:scriptTask>
+ <bpmn:scriptTask id="ScriptTask_1730kjg" name="Init Service Operation Status" scriptFormat="groovy">
+ <bpmn:incoming>SequenceFlow_0bvnci8</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_1ox6oh6</bpmn:outgoing>
+ <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
+def csi= new ActivateSliceService()
+csi.prepareInitServiceOperationStatus(execution)</bpmn:script>
+ </bpmn:scriptTask>
+ <bpmn:sequenceFlow id="SequenceFlow_1tdecf1" sourceRef="StartEvent_01bdhbw" targetRef="ScriptTask_1wow08q" />
+ <bpmn:sequenceFlow id="SequenceFlow_0bvnci8" sourceRef="ScriptTask_1wow08q" targetRef="ScriptTask_1730kjg" />
+ <bpmn:sequenceFlow id="SequenceFlow_1ox6oh6" sourceRef="ScriptTask_1730kjg" targetRef="ServiceTask_1hmtmeq" />
+ <bpmn:scriptTask id="ScriptTask_1gm0rl4" name="Send Sync Ack Response" scriptFormat="groovy">
+ <bpmn:incoming>SequenceFlow_0szxmyf</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_1p778c2</bpmn:outgoing>
<bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
def csi = new ActivateSliceService()
csi.sendSyncResponse(execution)</bpmn:script>
</bpmn:scriptTask>
- <bpmn:scriptTask id="Task_1o8fe1v" name="check AAI Orch Status of slice" scriptFormat="groovy">
- <bpmn:incoming>SequenceFlow_1uqgdxr</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_149lhmo</bpmn:outgoing>
+ <bpmn:sequenceFlow id="SequenceFlow_0szxmyf" sourceRef="ServiceTask_1hmtmeq" targetRef="ScriptTask_1gm0rl4" />
+ <bpmn:scriptTask id="ScriptTask_1yc7wdf" name="check AAI Orch Status of e2e slice" default="SequenceFlow_0mr8oz6" scriptFormat="groovy">
+ <bpmn:incoming>SequenceFlow_1p778c2</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_1wrrg4v</bpmn:outgoing>
+ <bpmn:outgoing>SequenceFlow_0mr8oz6</bpmn:outgoing>
<bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
def csi= new ActivateSliceService()
-csi.checkAAIOrchStatusofslice(execution)</bpmn:script>
+csi.checkAAIOrchStatusOfE2ESlice(execution)</bpmn:script>
</bpmn:scriptTask>
- <bpmn:exclusiveGateway id="ExclusiveGateway_0fcc3uy" name="Success?">
- <bpmn:incoming>SequenceFlow_149lhmo</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_15fdf5d</bpmn:outgoing>
- <bpmn:outgoing>SequenceFlow_0r611x8</bpmn:outgoing>
+ <bpmn:exclusiveGateway id="ExclusiveGateway_0nce7pi" name="Success?">
+ <bpmn:incoming>SequenceFlow_19gpkz7</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_0cn6n0t</bpmn:outgoing>
+ <bpmn:outgoing>SequenceFlow_0cs78yf</bpmn:outgoing>
</bpmn:exclusiveGateway>
- <bpmn:scriptTask id="Task_08zavab" name="PrepareActiviation" scriptFormat="groovy">
- <bpmn:incoming>SequenceFlow_15fdf5d</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_144cqr9</bpmn:outgoing>
+ <bpmn:intermediateThrowEvent id="IntermediateThrowEvent_08yipcf" name="goto prepare active">
+ <bpmn:incoming>SequenceFlow_0cn6n0t</bpmn:incoming>
+ <bpmn:linkEventDefinition name="prepareActive" />
+ </bpmn:intermediateThrowEvent>
+ <bpmn:sequenceFlow id="SequenceFlow_0cn6n0t" name="yes" sourceRef="ExclusiveGateway_0nce7pi" targetRef="IntermediateThrowEvent_08yipcf">
+ <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{execution.getVariable("isContinue") == "true"}</bpmn:conditionExpression>
+ </bpmn:sequenceFlow>
+ <bpmn:scriptTask id="ScriptTask_0916zkl" name="PrepareActiviation" scriptFormat="groovy">
+ <bpmn:incoming>SequenceFlow_003ne6w</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_1b7nvps</bpmn:outgoing>
<bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
def csi= new ActivateSliceService()
csi.prepareActivation(execution)</bpmn:script>
</bpmn:scriptTask>
- <bpmn:serviceTask id="Task_18urz3r" name="Update Service Operation Status">
+ <bpmn:endEvent id="EndEvent_0bvm36p">
+ <bpmn:incoming>SequenceFlow_1pgjdeq</bpmn:incoming>
+ <bpmn:errorEventDefinition id="ErrorEventDefinition_1jpik0g" errorRef="Error_0l3pcnc" />
+ </bpmn:endEvent>
+ <bpmn:sequenceFlow id="SequenceFlow_003ne6w" sourceRef="IntermediateThrowEvent_0m13l1h" targetRef="ScriptTask_0916zkl" />
+ <bpmn:callActivity id="CallActivity_06ommam" name="DoActivateSliceService" default="SequenceFlow_1pgjdeq" calledElement="DoActivateSliceService">
+ <bpmn:extensionElements>
+ <camunda:out source="WorkflowException" target="WorkflowException" />
+ <camunda:out source="isNSSIActivate" target="isNSSIActivate" />
+ <camunda:in source="msoRequestId" target="msoRequestId" />
+ <camunda:in source="nssInstances" target="nssInstances" />
+ <camunda:out source="nssInstances" target="nssInstances" />
+ <camunda:in source="customerInfo" target="customerInfo" />
+ </bpmn:extensionElements>
+ <bpmn:incoming>SequenceFlow_1b7nvps</bpmn:incoming>
+ <bpmn:incoming>SequenceFlow_1rsr0hp</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_1pgjdeq</bpmn:outgoing>
+ <bpmn:outgoing>SequenceFlow_150j97l</bpmn:outgoing>
+ </bpmn:callActivity>
+ <bpmn:scriptTask id="ScriptTask_0x0emke" name="Update the status of SNSSAI and NSI " scriptFormat="groovy">
+ <bpmn:incoming>SequenceFlow_194fylv</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_0eiek58</bpmn:outgoing>
+ <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
+def csi= new ActivateSliceService()
+csi.updateStatusSNSSAIandNSIandNSSI(execution)</bpmn:script>
+ </bpmn:scriptTask>
+ <bpmn:scriptTask id="ScriptTask_0032ffo" name="Prepare Completion Request" scriptFormat="groovy">
+ <bpmn:incoming>SequenceFlow_0eiek58</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_0dc8i0s</bpmn:outgoing>
+ <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
+def csi = new ActivateSliceService()
+csi.prepareCompletionRequest(execution)</bpmn:script>
+ </bpmn:scriptTask>
+ <bpmn:serviceTask id="ServiceTask_06tcv65" name="Update Service Operation Status to Success">
<bpmn:extensionElements>
<camunda:connector>
<camunda:inputOutput>
@@ -105,7 +122,7 @@ csi.prepareActivation(execution)</bpmn:script>
<camunda:inputParameter name="headers">
<camunda:map>
<camunda:entry key="content-type">application/soap+xml</camunda:entry>
- <camunda:entry key="Authorization">Basic YnBlbDpwYXNzd29yZDEk</camunda:entry>
+ <camunda:entry key="Authorization">${UrnPropertiesReader.getVariable("mso.adapters.requestDb.auth", execution)}</camunda:entry>
</camunda:map>
</camunda:inputParameter>
<camunda:inputParameter name="payload">${updateOperationStatus}</camunda:inputParameter>
@@ -116,256 +133,275 @@ csi.prepareActivation(execution)</bpmn:script>
<camunda:connectorId>http-connector</camunda:connectorId>
</camunda:connector>
</bpmn:extensionElements>
- <bpmn:incoming>SequenceFlow_1av6du3</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_1yus0c1</bpmn:outgoing>
+ <bpmn:incoming>SequenceFlow_0dc8i0s</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_11u2ido</bpmn:outgoing>
</bpmn:serviceTask>
- <bpmn:scriptTask id="Task_1ossedo" name="Pre Process Incoming Request" scriptFormat="groovy">
- <bpmn:incoming>SequenceFlow_0qksr1g</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_183ypky</bpmn:outgoing>
- <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def csi= new ActivateSliceService()
-csi.preProcessRequest(execution)</bpmn:script>
- </bpmn:scriptTask>
- <bpmn:exclusiveGateway id="ExclusiveGateway_1g8cg9g" name="Any NSSI to activate?">
- <bpmn:incoming>SequenceFlow_144cqr9</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_1o4zjvp</bpmn:outgoing>
- <bpmn:outgoing>SequenceFlow_1pj1j1o</bpmn:outgoing>
- </bpmn:exclusiveGateway>
- <bpmn:startEvent id="StartEvent_1">
- <bpmn:outgoing>SequenceFlow_0qksr1g</bpmn:outgoing>
- </bpmn:startEvent>
- <bpmn:endEvent id="EndEvent_1taw2p9">
- <bpmn:incoming>SequenceFlow_1pj1j1o</bpmn:incoming>
- <bpmn:errorEventDefinition id="ErrorEventDefinition_03iwehr" errorRef="Error_0l3pcnc" />
+ <bpmn:endEvent id="EndEvent_1uebh6a" name="end">
+ <bpmn:incoming>SequenceFlow_11u2ido</bpmn:incoming>
+ <bpmn:incoming>SequenceFlow_0cs78yf</bpmn:incoming>
</bpmn:endEvent>
- <bpmn:scriptTask id="Task_13zoo6a" name="Init Service Operation Status" scriptFormat="groovy">
- <bpmn:incoming>SequenceFlow_183ypky</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_1av6du3</bpmn:outgoing>
- <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def csi= new ActivateSliceService()
-csi.prepareInitServiceOperationStatus(execution)</bpmn:script>
- </bpmn:scriptTask>
- <bpmn:subProcess id="SubProcess_0iljxjd" name="sub process for fallouthandler and rollback" triggeredByEvent="true">
- <bpmn:scriptTask id="Task_01ooik6" name="Send Error Response">
- <bpmn:incoming>SequenceFlow_0oiiwjo</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_0uckyao</bpmn:outgoing>
+ <bpmn:sequenceFlow id="SequenceFlow_11u2ido" sourceRef="ServiceTask_06tcv65" targetRef="EndEvent_1uebh6a" />
+ <bpmn:subProcess id="SubProcess_1s80wtc" name="sub process for fallouthandler and rollback" triggeredByEvent="true">
+ <bpmn:scriptTask id="ScriptTask_0pv8gip" name="Send Error Response">
+ <bpmn:incoming>SequenceFlow_16jz1l6</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_097vxbl</bpmn:outgoing>
<bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
def csi= new ActivateSliceService()
csi.sendSyncError(execution)</bpmn:script>
</bpmn:scriptTask>
- <bpmn:endEvent id="EndEvent_1wd8iqk">
- <bpmn:incoming>SequenceFlow_0uckyao</bpmn:incoming>
+ <bpmn:endEvent id="EndEvent_0yy0a8r">
+ <bpmn:incoming>SequenceFlow_097vxbl</bpmn:incoming>
</bpmn:endEvent>
- <bpmn:startEvent id="StartEvent_0hmwdqq">
- <bpmn:outgoing>SequenceFlow_0oiiwjo</bpmn:outgoing>
- <bpmn:errorEventDefinition id="ErrorEventDefinition_1il80ww" />
+ <bpmn:startEvent id="StartEvent_1a9lxvc">
+ <bpmn:outgoing>SequenceFlow_16jz1l6</bpmn:outgoing>
+ <bpmn:errorEventDefinition id="ErrorEventDefinition_00r6zey" />
</bpmn:startEvent>
- <bpmn:sequenceFlow id="SequenceFlow_0oiiwjo" sourceRef="StartEvent_0hmwdqq" targetRef="Task_01ooik6" />
- <bpmn:sequenceFlow id="SequenceFlow_0uckyao" sourceRef="Task_01ooik6" targetRef="EndEvent_1wd8iqk" />
+ <bpmn:sequenceFlow id="SequenceFlow_097vxbl" sourceRef="ScriptTask_0pv8gip" targetRef="EndEvent_0yy0a8r" />
+ <bpmn:sequenceFlow id="SequenceFlow_16jz1l6" sourceRef="StartEvent_1a9lxvc" targetRef="ScriptTask_0pv8gip" />
</bpmn:subProcess>
- <bpmn:sequenceFlow id="SequenceFlow_1av6du3" sourceRef="Task_13zoo6a" targetRef="Task_18urz3r" />
- <bpmn:sequenceFlow id="SequenceFlow_1pj1j1o" name="no" sourceRef="ExclusiveGateway_1g8cg9g" targetRef="EndEvent_1taw2p9">
- <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{execution.getVariable("isNSSIActivate") == "false"}</bpmn:conditionExpression>
- </bpmn:sequenceFlow>
- <bpmn:sequenceFlow id="SequenceFlow_0r611x8" name="NO" sourceRef="ExclusiveGateway_0fcc3uy" targetRef="EndEvent_0d1g3mv">
+ <bpmn:sequenceFlow id="SequenceFlow_0eiek58" sourceRef="ScriptTask_0x0emke" targetRef="ScriptTask_0032ffo" />
+ <bpmn:sequenceFlow id="SequenceFlow_0dc8i0s" sourceRef="ScriptTask_0032ffo" targetRef="ServiceTask_06tcv65" />
+ <bpmn:sequenceFlow id="SequenceFlow_0cs78yf" name="no" sourceRef="ExclusiveGateway_0nce7pi" targetRef="EndEvent_1uebh6a">
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{execution.getVariable("isContinue") == "false"}</bpmn:conditionExpression>
</bpmn:sequenceFlow>
- <bpmn:sequenceFlow id="SequenceFlow_1qa8miv" name="no" sourceRef="ExclusiveGateway_0z7s0nx" targetRef="EndEvent_1pujgw8">
- <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{execution.getVariable("isNSSIActivate") == "false"}</bpmn:conditionExpression>
- </bpmn:sequenceFlow>
- <bpmn:sequenceFlow id="SequenceFlow_1jp9gjt" name="yes" sourceRef="ExclusiveGateway_0z7s0nx" targetRef="Task_1vscxgp">
- <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{execution.getVariable("isNSSIActivate") == "true"}</bpmn:conditionExpression>
+ <bpmn:intermediateCatchEvent id="IntermediateThrowEvent_0m13l1h" name="prepareActive">
+ <bpmn:outgoing>SequenceFlow_003ne6w</bpmn:outgoing>
+ <bpmn:linkEventDefinition name="prepareActive" />
+ </bpmn:intermediateCatchEvent>
+ <bpmn:scriptTask id="ScriptTask_1oa27ir" name="check AAI Orch Status of NSI" scriptFormat="groovy">
+ <bpmn:incoming>SequenceFlow_1wrrg4v</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_1ny9zkw</bpmn:outgoing>
+ <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
+def csi= new ActivateSliceService()
+csi.checkAAIOrchStatusOfAllocates(execution)</bpmn:script>
+ </bpmn:scriptTask>
+ <bpmn:sequenceFlow id="SequenceFlow_1wrrg4v" name="continue" sourceRef="ScriptTask_1yc7wdf" targetRef="ScriptTask_1oa27ir">
+ <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{execution.getVariable("isContinue") == true}</bpmn:conditionExpression>
</bpmn:sequenceFlow>
- <bpmn:sequenceFlow id="SequenceFlow_00ba5l9" sourceRef="CallActivity_1cvb0iq" targetRef="ExclusiveGateway_0z7s0nx" />
- <bpmn:sequenceFlow id="SequenceFlow_1uqgdxr" sourceRef="ScriptTask_04p0zjj" targetRef="Task_1o8fe1v" />
- <bpmn:sequenceFlow id="SequenceFlow_0qksr1g" sourceRef="StartEvent_1" targetRef="Task_1ossedo" />
- <bpmn:sequenceFlow id="SequenceFlow_183ypky" sourceRef="Task_1ossedo" targetRef="Task_13zoo6a" />
- <bpmn:sequenceFlow id="SequenceFlow_1yus0c1" sourceRef="Task_18urz3r" targetRef="ScriptTask_04p0zjj" />
- <bpmn:sequenceFlow id="SequenceFlow_149lhmo" sourceRef="Task_1o8fe1v" targetRef="ExclusiveGateway_0fcc3uy" />
- <bpmn:sequenceFlow id="SequenceFlow_15fdf5d" name="yes" sourceRef="ExclusiveGateway_0fcc3uy" targetRef="Task_08zavab">
- <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{execution.getVariable("isContinue") == "true"}</bpmn:conditionExpression>
+ <bpmn:endEvent id="EndEvent_0n9enas" name="already operate so end">
+ <bpmn:incoming>SequenceFlow_0mr8oz6</bpmn:incoming>
+ </bpmn:endEvent>
+ <bpmn:sequenceFlow id="SequenceFlow_0mr8oz6" sourceRef="ScriptTask_1yc7wdf" targetRef="EndEvent_0n9enas" />
+ <bpmn:sequenceFlow id="SequenceFlow_1ny9zkw" sourceRef="ScriptTask_1oa27ir" targetRef="Task_14srbts" />
+ <bpmn:sequenceFlow id="SequenceFlow_19gpkz7" sourceRef="Task_14srbts" targetRef="ExclusiveGateway_0nce7pi" />
+ <bpmn:scriptTask id="Task_14srbts" name="check AAI Orch Status of NSI" scriptFormat="groovy">
+ <bpmn:incoming>SequenceFlow_1ny9zkw</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_19gpkz7</bpmn:outgoing>
+ <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
+def csi= new ActivateSliceService()
+csi.checkAAIOrchStatusOfNSI(execution)</bpmn:script>
+ </bpmn:scriptTask>
+ <bpmn:sequenceFlow id="SequenceFlow_1b7nvps" sourceRef="ScriptTask_0916zkl" targetRef="CallActivity_06ommam" />
+ <bpmn:sequenceFlow id="SequenceFlow_1pgjdeq" sourceRef="CallActivity_06ommam" targetRef="EndEvent_0bvm36p" />
+ <bpmn:sequenceFlow id="SequenceFlow_150j97l" sourceRef="CallActivity_06ommam" targetRef="Task_0gu3dv6">
+ <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{execution.getVariable("WorkflowException") == null}</bpmn:conditionExpression>
</bpmn:sequenceFlow>
- <bpmn:sequenceFlow id="SequenceFlow_144cqr9" sourceRef="Task_08zavab" targetRef="ExclusiveGateway_1g8cg9g" />
- <bpmn:sequenceFlow id="SequenceFlow_1o4zjvp" name="yes" sourceRef="ExclusiveGateway_1g8cg9g" targetRef="CallActivity_1cvb0iq">
- <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{execution.getVariable("isNSSIActivate") == "true"}</bpmn:conditionExpression>
+ <bpmn:sequenceFlow id="SequenceFlow_194fylv" sourceRef="Task_0gu3dv6" targetRef="ScriptTask_0x0emke">
+ <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{execution.getVariable("isOperationFinished") == "true"}</bpmn:conditionExpression>
</bpmn:sequenceFlow>
- <bpmn:sequenceFlow id="SequenceFlow_1gkpl5q" sourceRef="Task_1vscxgp" targetRef="ScriptTask_0cbth6k" />
- <bpmn:sequenceFlow id="SequenceFlow_0pzts4p" sourceRef="ScriptTask_0cbth6k" targetRef="ServiceTask_1aymwlt" />
- <bpmn:sequenceFlow id="SequenceFlow_0ozefu5" sourceRef="ServiceTask_1aymwlt" targetRef="EndEvent_0d1g3mv" />
+ <bpmn:sequenceFlow id="SequenceFlow_1rsr0hp" sourceRef="Task_0gu3dv6" targetRef="CallActivity_06ommam" />
+ <bpmn:scriptTask id="Task_0gu3dv6" name="isOperationFinished&#10;" default="SequenceFlow_1rsr0hp" scriptFormat="groovy">
+ <bpmn:incoming>SequenceFlow_150j97l</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_194fylv</bpmn:outgoing>
+ <bpmn:outgoing>SequenceFlow_1rsr0hp</bpmn:outgoing>
+ <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
+def csi= new ActivateSliceService()
+csi.isOperationFinished(execution)</bpmn:script>
+ </bpmn:scriptTask>
+ <bpmn:sequenceFlow id="SequenceFlow_1p778c2" sourceRef="ScriptTask_1gm0rl4" targetRef="ScriptTask_1yc7wdf" />
</bpmn:process>
- <bpmn:error id="Error_0vq6f5h" name="Error_3ai5jm1" />
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
- <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Collaboration_0htncd8">
- <bpmndi:BPMNShape id="Participant_1x12pgg_di" bpmnElement="ActivateSliceService01" isHorizontal="true">
- <dc:Bounds x="160" y="120" width="2290" height="990" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="SubProcess_1qw5nm4_di" bpmnElement="SubProcess_0iljxjd" isExpanded="true">
- <dc:Bounds x="935" y="680" width="810" height="180" />
+ <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="ActivateSliceService">
+ <bpmndi:BPMNShape id="StartEvent_01bdhbw_di" bpmnElement="StartEvent_01bdhbw">
+ <dc:Bounds x="172" y="72" width="36" height="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="179" y="115" width="23" height="14" />
+ </bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="ScriptTask_1azew71_di" bpmnElement="Task_01ooik6">
- <dc:Bounds x="1255" y="720" width="100" height="80" />
+ <bpmndi:BPMNShape id="ServiceTask_1hmtmeq_di" bpmnElement="ServiceTask_1hmtmeq">
+ <dc:Bounds x="550" y="50" width="100" height="80" />
</bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="EndEvent_1wd8iqk_di" bpmnElement="EndEvent_1wd8iqk">
- <dc:Bounds x="1492" y="742" width="36" height="36" />
+ <bpmndi:BPMNShape id="ScriptTask_1wow08q_di" bpmnElement="ScriptTask_1wow08q">
+ <dc:Bounds x="250" y="50" width="100" height="80" />
</bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="StartEvent_0hmwdqq_di" bpmnElement="StartEvent_0hmwdqq">
- <dc:Bounds x="1042" y="742" width="36" height="36" />
+ <bpmndi:BPMNShape id="ScriptTask_1730kjg_di" bpmnElement="ScriptTask_1730kjg">
+ <dc:Bounds x="390" y="50" width="100" height="80" />
</bpmndi:BPMNShape>
- <bpmndi:BPMNEdge id="SequenceFlow_0oiiwjo_di" bpmnElement="SequenceFlow_0oiiwjo">
- <di:waypoint x="1078" y="760" />
- <di:waypoint x="1255" y="760" />
+ <bpmndi:BPMNEdge id="SequenceFlow_1tdecf1_di" bpmnElement="SequenceFlow_1tdecf1">
+ <di:waypoint x="208" y="90" />
+ <di:waypoint x="250" y="90" />
</bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_0uckyao_di" bpmnElement="SequenceFlow_0uckyao">
- <di:waypoint x="1355" y="760" />
- <di:waypoint x="1492" y="760" />
+ <bpmndi:BPMNEdge id="SequenceFlow_0bvnci8_di" bpmnElement="SequenceFlow_0bvnci8">
+ <di:waypoint x="350" y="90" />
+ <di:waypoint x="390" y="90" />
</bpmndi:BPMNEdge>
- <bpmndi:BPMNShape id="ScriptTask_1lb7w6u_di" bpmnElement="Task_1vscxgp">
- <dc:Bounds x="1670" y="310" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="EndEvent_0d1g3mv_di" bpmnElement="EndEvent_0d1g3mv">
- <dc:Bounds x="2212" y="332" width="36" height="36" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="EndEvent_1pujgw8_di" bpmnElement="EndEvent_1pujgw8">
- <dc:Bounds x="1462" y="422" width="36" height="36" />
+ <bpmndi:BPMNEdge id="SequenceFlow_1ox6oh6_di" bpmnElement="SequenceFlow_1ox6oh6">
+ <di:waypoint x="490" y="90" />
+ <di:waypoint x="550" y="90" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="ScriptTask_1gm0rl4_di" bpmnElement="ScriptTask_1gm0rl4">
+ <dc:Bounds x="690" y="50" width="100" height="80" />
</bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="ScriptTask_0cbth6k_di" bpmnElement="ScriptTask_0cbth6k">
- <dc:Bounds x="1860" y="310" width="100" height="80" />
+ <bpmndi:BPMNEdge id="SequenceFlow_0szxmyf_di" bpmnElement="SequenceFlow_0szxmyf">
+ <di:waypoint x="650" y="90" />
+ <di:waypoint x="690" y="90" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="ScriptTask_1yc7wdf_di" bpmnElement="ScriptTask_1yc7wdf">
+ <dc:Bounds x="840" y="50" width="100" height="80" />
</bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="ExclusiveGateway_0z7s0nx_di" bpmnElement="ExclusiveGateway_0z7s0nx" isMarkerVisible="true">
- <dc:Bounds x="1455" y="325" width="50" height="50" />
+ <bpmndi:BPMNShape id="ExclusiveGateway_0nce7pi_di" bpmnElement="ExclusiveGateway_0nce7pi" isMarkerVisible="true">
+ <dc:Bounds x="1315" y="65" width="50" height="50" />
<bpmndi:BPMNLabel>
- <dc:Bounds x="1449" y="313" width="65" height="14" />
+ <dc:Bounds x="1347" y="55" width="48" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="CallActivity_1cvb0iq_di" bpmnElement="CallActivity_1cvb0iq">
- <dc:Bounds x="1290" y="310" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="ScriptTask_04p0zjj_di" bpmnElement="ScriptTask_04p0zjj">
- <dc:Bounds x="695" y="310" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="ScriptTask_1nsbn4r_di" bpmnElement="Task_1o8fe1v">
- <dc:Bounds x="850" y="310" width="100" height="80" />
+ <bpmndi:BPMNShape id="IntermediateThrowEvent_10d4tak_di" bpmnElement="IntermediateThrowEvent_08yipcf">
+ <dc:Bounds x="1432" y="72" width="36" height="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="1422" y="115" width="63" height="27" />
+ </bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="ExclusiveGateway_0fcc3uy_di" bpmnElement="ExclusiveGateway_0fcc3uy" isMarkerVisible="true">
- <dc:Bounds x="975" y="325" width="50" height="50" />
+ <bpmndi:BPMNEdge id="SequenceFlow_0cn6n0t_di" bpmnElement="SequenceFlow_0cn6n0t">
+ <di:waypoint x="1365" y="90" />
+ <di:waypoint x="1432" y="90" />
<bpmndi:BPMNLabel>
- <dc:Bounds x="1006" y="315" width="49" height="14" />
+ <dc:Bounds x="1390" y="72" width="17" height="14" />
</bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="ScriptTask_0916zkl_di" bpmnElement="ScriptTask_0916zkl">
+ <dc:Bounds x="250" y="390" width="100" height="80" />
</bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="ScriptTask_0g9vipz_di" bpmnElement="Task_08zavab">
- <dc:Bounds x="1060" y="310" width="100" height="80" />
+ <bpmndi:BPMNShape id="EndEvent_0bvm36p_di" bpmnElement="EndEvent_0bvm36p">
+ <dc:Bounds x="522" y="532" width="36" height="36" />
</bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="ServiceTask_1tv1ow6_di" bpmnElement="Task_18urz3r">
- <dc:Bounds x="540" y="310" width="100" height="80" />
+ <bpmndi:BPMNEdge id="SequenceFlow_003ne6w_di" bpmnElement="SequenceFlow_003ne6w">
+ <di:waypoint x="208" y="430" />
+ <di:waypoint x="250" y="430" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="CallActivity_06ommam_di" bpmnElement="CallActivity_06ommam">
+ <dc:Bounds x="490" y="390" width="100" height="80" />
</bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="ScriptTask_0tam79l_di" bpmnElement="Task_1ossedo">
- <dc:Bounds x="290" y="310" width="100" height="80" />
+ <bpmndi:BPMNShape id="ScriptTask_0x0emke_di" bpmnElement="ScriptTask_0x0emke">
+ <dc:Bounds x="920" y="390" width="100" height="80" />
</bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="ExclusiveGateway_1g8cg9g_di" bpmnElement="ExclusiveGateway_1g8cg9g" isMarkerVisible="true">
- <dc:Bounds x="1195" y="325" width="50" height="50" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="1141" y="406" width="58" height="27" />
- </bpmndi:BPMNLabel>
+ <bpmndi:BPMNShape id="ScriptTask_0032ffo_di" bpmnElement="ScriptTask_0032ffo">
+ <dc:Bounds x="1120" y="390" width="100" height="80" />
</bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
- <dc:Bounds x="212" y="332" width="36" height="36" />
+ <bpmndi:BPMNShape id="ServiceTask_06tcv65_di" bpmnElement="ServiceTask_06tcv65">
+ <dc:Bounds x="1270" y="390" width="100" height="80" />
</bpmndi:BPMNShape>
- <bpmndi:BPMNEdge id="SequenceFlow_1o4zjvp_di" bpmnElement="SequenceFlow_1o4zjvp">
- <di:waypoint x="1220" y="350" />
- <di:waypoint x="1290" y="350" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="1251" y="332" width="18" height="14" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_144cqr9_di" bpmnElement="SequenceFlow_144cqr9">
- <di:waypoint x="1160" y="350" />
- <di:waypoint x="1195" y="350" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_15fdf5d_di" bpmnElement="SequenceFlow_15fdf5d">
- <di:waypoint x="1025" y="350" />
- <di:waypoint x="1060" y="350" />
+ <bpmndi:BPMNShape id="EndEvent_1uebh6a_di" bpmnElement="EndEvent_1uebh6a">
+ <dc:Bounds x="1422" y="412" width="36" height="36" />
<bpmndi:BPMNLabel>
- <dc:Bounds x="1034" y="332" width="18" height="14" />
+ <dc:Bounds x="1431" y="455" width="19" height="14" />
</bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="SequenceFlow_11u2ido_di" bpmnElement="SequenceFlow_11u2ido">
+ <di:waypoint x="1370" y="430" />
+ <di:waypoint x="1422" y="430" />
</bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_149lhmo_di" bpmnElement="SequenceFlow_149lhmo">
- <di:waypoint x="950" y="350" />
- <di:waypoint x="975" y="350" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_1yus0c1_di" bpmnElement="SequenceFlow_1yus0c1">
- <di:waypoint x="640" y="350" />
- <di:waypoint x="695" y="350" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_183ypky_di" bpmnElement="SequenceFlow_183ypky">
- <di:waypoint x="390" y="350" />
- <di:waypoint x="420" y="350" />
+ <bpmndi:BPMNShape id="SubProcess_1s80wtc_di" bpmnElement="SubProcess_1s80wtc" isExpanded="true">
+ <dc:Bounds x="410" y="700" width="810" height="180" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="ScriptTask_0pv8gip_di" bpmnElement="ScriptTask_0pv8gip">
+ <dc:Bounds x="730" y="740" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="EndEvent_0yy0a8r_di" bpmnElement="EndEvent_0yy0a8r">
+ <dc:Bounds x="967" y="762" width="36" height="36" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="StartEvent_1a9lxvc_di" bpmnElement="StartEvent_1a9lxvc">
+ <dc:Bounds x="517" y="762" width="36" height="36" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="SequenceFlow_097vxbl_di" bpmnElement="SequenceFlow_097vxbl">
+ <di:waypoint x="830" y="780" />
+ <di:waypoint x="967" y="780" />
</bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_0qksr1g_di" bpmnElement="SequenceFlow_0qksr1g">
- <di:waypoint x="248" y="350" />
- <di:waypoint x="290" y="350" />
+ <bpmndi:BPMNEdge id="SequenceFlow_16jz1l6_di" bpmnElement="SequenceFlow_16jz1l6">
+ <di:waypoint x="553" y="780" />
+ <di:waypoint x="730" y="780" />
</bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_1uqgdxr_di" bpmnElement="SequenceFlow_1uqgdxr">
- <di:waypoint x="795" y="350" />
- <di:waypoint x="850" y="350" />
+ <bpmndi:BPMNEdge id="SequenceFlow_0eiek58_di" bpmnElement="SequenceFlow_0eiek58">
+ <di:waypoint x="1020" y="430" />
+ <di:waypoint x="1120" y="430" />
</bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_00ba5l9_di" bpmnElement="SequenceFlow_00ba5l9">
- <di:waypoint x="1390" y="350" />
- <di:waypoint x="1455" y="350" />
+ <bpmndi:BPMNEdge id="SequenceFlow_0dc8i0s_di" bpmnElement="SequenceFlow_0dc8i0s">
+ <di:waypoint x="1220" y="430" />
+ <di:waypoint x="1270" y="430" />
</bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_1jp9gjt_di" bpmnElement="SequenceFlow_1jp9gjt">
- <di:waypoint x="1505" y="350" />
- <di:waypoint x="1670" y="350" />
+ <bpmndi:BPMNEdge id="SequenceFlow_0cs78yf_di" bpmnElement="SequenceFlow_0cs78yf">
+ <di:waypoint x="1340" y="115" />
+ <di:waypoint x="1340" y="170" />
+ <di:waypoint x="1440" y="170" />
+ <di:waypoint x="1440" y="412" />
<bpmndi:BPMNLabel>
- <dc:Bounds x="1596" y="332" width="18" height="14" />
+ <dc:Bounds x="1384" y="152" width="13" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_1qa8miv_di" bpmnElement="SequenceFlow_1qa8miv">
- <di:waypoint x="1480" y="375" />
- <di:waypoint x="1480" y="422" />
+ <bpmndi:BPMNShape id="IntermediateCatchEvent_1vye481_di" bpmnElement="IntermediateThrowEvent_0m13l1h">
+ <dc:Bounds x="172" y="412" width="36" height="36" />
<bpmndi:BPMNLabel>
- <dc:Bounds x="1489" y="383" width="12" height="14" />
+ <dc:Bounds x="156" y="455" width="68" height="14" />
</bpmndi:BPMNLabel>
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_0r611x8_di" bpmnElement="SequenceFlow_0r611x8">
- <di:waypoint x="1000" y="375" />
- <di:waypoint x="1000" y="500" />
- <di:waypoint x="2230" y="500" />
- <di:waypoint x="2230" y="368" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="ScriptTask_1oa27ir_di" bpmnElement="ScriptTask_1oa27ir">
+ <dc:Bounds x="1000" y="50" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="SequenceFlow_1wrrg4v_di" bpmnElement="SequenceFlow_1wrrg4v">
+ <di:waypoint x="940" y="90" />
+ <di:waypoint x="1000" y="90" />
<bpmndi:BPMNLabel>
- <dc:Bounds x="1608" y="482" width="15" height="14" />
+ <dc:Bounds x="950" y="72" width="42" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_1pj1j1o_di" bpmnElement="SequenceFlow_1pj1j1o">
- <di:waypoint x="1220" y="375" />
- <di:waypoint x="1220" y="422" />
+ <bpmndi:BPMNShape id="EndEvent_0n9enas_di" bpmnElement="EndEvent_0n9enas">
+ <dc:Bounds x="872" y="182" width="36" height="36" />
<bpmndi:BPMNLabel>
- <dc:Bounds x="1199" y="378" width="12" height="14" />
+ <dc:Bounds x="855" y="225" width="77" height="27" />
</bpmndi:BPMNLabel>
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNShape id="EndEvent_1taw2p9_di" bpmnElement="EndEvent_1taw2p9">
- <dc:Bounds x="1202" y="422" width="36" height="36" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="ScriptTask_0uwsu46_di" bpmnElement="Task_13zoo6a">
- <dc:Bounds x="420" y="310" width="100" height="80" />
</bpmndi:BPMNShape>
- <bpmndi:BPMNEdge id="SequenceFlow_1av6du3_di" bpmnElement="SequenceFlow_1av6du3">
- <di:waypoint x="520" y="350" />
- <di:waypoint x="540" y="350" />
+ <bpmndi:BPMNEdge id="SequenceFlow_0mr8oz6_di" bpmnElement="SequenceFlow_0mr8oz6">
+ <di:waypoint x="890" y="130" />
+ <di:waypoint x="890" y="182" />
</bpmndi:BPMNEdge>
- <bpmndi:BPMNShape id="ServiceTask_1aymwlt_di" bpmnElement="ServiceTask_1aymwlt">
- <dc:Bounds x="2020" y="310" width="100" height="80" />
+ <bpmndi:BPMNEdge id="SequenceFlow_1ny9zkw_di" bpmnElement="SequenceFlow_1ny9zkw">
+ <di:waypoint x="1100" y="90" />
+ <di:waypoint x="1170" y="90" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_19gpkz7_di" bpmnElement="SequenceFlow_19gpkz7">
+ <di:waypoint x="1270" y="90" />
+ <di:waypoint x="1315" y="90" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="ScriptTask_0tmggtr_di" bpmnElement="Task_14srbts">
+ <dc:Bounds x="1170" y="50" width="100" height="80" />
</bpmndi:BPMNShape>
- <bpmndi:BPMNEdge id="SequenceFlow_0ozefu5_di" bpmnElement="SequenceFlow_0ozefu5">
- <di:waypoint x="2120" y="350" />
- <di:waypoint x="2212" y="350" />
+ <bpmndi:BPMNEdge id="SequenceFlow_1b7nvps_di" bpmnElement="SequenceFlow_1b7nvps">
+ <di:waypoint x="350" y="430" />
+ <di:waypoint x="490" y="430" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_1pgjdeq_di" bpmnElement="SequenceFlow_1pgjdeq">
+ <di:waypoint x="540" y="470" />
+ <di:waypoint x="540" y="532" />
</bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_0pzts4p_di" bpmnElement="SequenceFlow_0pzts4p">
- <di:waypoint x="1960" y="350" />
- <di:waypoint x="2020" y="350" />
+ <bpmndi:BPMNEdge id="SequenceFlow_150j97l_di" bpmnElement="SequenceFlow_150j97l">
+ <di:waypoint x="590" y="430" />
+ <di:waypoint x="710" y="430" />
</bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_1gkpl5q_di" bpmnElement="SequenceFlow_1gkpl5q">
- <di:waypoint x="1770" y="350" />
- <di:waypoint x="1860" y="350" />
+ <bpmndi:BPMNEdge id="SequenceFlow_194fylv_di" bpmnElement="SequenceFlow_194fylv">
+ <di:waypoint x="810" y="430" />
+ <di:waypoint x="920" y="430" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_1rsr0hp_di" bpmnElement="SequenceFlow_1rsr0hp">
+ <di:waypoint x="760" y="390" />
+ <di:waypoint x="760" y="300" />
+ <di:waypoint x="540" y="300" />
+ <di:waypoint x="540" y="390" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="ScriptTask_0i2gnhv_di" bpmnElement="Task_0gu3dv6">
+ <dc:Bounds x="710" y="390" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="SequenceFlow_1p778c2_di" bpmnElement="SequenceFlow_1p778c2">
+ <di:waypoint x="790" y="90" />
+ <di:waypoint x="840" y="90" />
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/GenericPnfHealthCheck.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/GenericPnfHealthCheck.bpmn
index 36f6221da9..d46b5856d1 100644
--- a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/GenericPnfHealthCheck.bpmn
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/GenericPnfHealthCheck.bpmn
@@ -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:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1yd8m0g" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="4.0.0">
+<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:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1yd8m0g" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="4.4.0">
<bpmn:process id="GenericPnfHealthCheck" name="GenericPnfHealthCheck" isExecutable="true">
<bpmn:startEvent id="pnfHealthCheck_startEvent" name="Start Flow">
<bpmn:outgoing>SequenceFlow_1ng4b6l</bpmn:outgoing>
@@ -42,6 +42,7 @@ taskProcessor.prepareCompletion(execution)</bpmn:script>
<bpmn:callActivity id="CallActivity_0o1mi8u" name="Complete Process" calledElement="CompleteMsoProcess">
<bpmn:extensionElements>
<camunda:in source="PnfSwUpgrade_CompleteMsoProcessRequest" target="CompleteMsoProcessRequest" />
+ <camunda:in source="requestId" target="CMSO_request_id" />
</bpmn:extensionElements>
<bpmn:incoming>SequenceFlow_0ipc3nt</bpmn:incoming>
<bpmn:outgoing>SequenceFlow_0tle5zb</bpmn:outgoing>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/GenericPnfSWUPDownload.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/GenericPnfSWUPDownload.bpmn
index 6a0b260a70..8c667a291b 100644
--- a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/GenericPnfSWUPDownload.bpmn
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/GenericPnfSWUPDownload.bpmn
@@ -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:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_0474hns" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="4.0.0">
+<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:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_0474hns" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="4.4.0">
<bpmn:process id="GenericPnfSWUPDownload" name="GenericPnfSWUPDownload" isExecutable="true">
<bpmn:startEvent id="download_StartEvent" name="Start Flow">
<bpmn:outgoing>SequenceFlow_1fdclh0</bpmn:outgoing>
@@ -131,6 +131,7 @@ pnfSwUpgrade.prepareCompletion(execution)</bpmn:script>
<bpmn:callActivity id="CallActivity_0tq2dug" name="Complete Process" calledElement="CompleteMsoProcess">
<bpmn:extensionElements>
<camunda:in source="PnfSwUpgrade_CompleteMsoProcessRequest" target="CompleteMsoProcessRequest" />
+ <camunda:in source="requestId" target="CMSO_request_id" />
</bpmn:extensionElements>
<bpmn:incoming>SequenceFlow_183s0wo</bpmn:incoming>
<bpmn:outgoing>SequenceFlow_0mjjdia</bpmn:outgoing>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/GenericPnfSoftwareUpgrade.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/GenericPnfSoftwareUpgrade.bpmn
index 9b8ce4a7b7..0303d7d1d5 100644
--- a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/GenericPnfSoftwareUpgrade.bpmn
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/GenericPnfSoftwareUpgrade.bpmn
@@ -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:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1yd8m0g" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="4.0.0">
+<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:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1yd8m0g" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="4.4.0">
<bpmn:process id="GenericPnfSoftwareUpgrade" name="GenericPnfSoftwareUpgrade" isExecutable="true">
<bpmn:startEvent id="softwareUpgrade_startEvent" name="Start Flow">
<bpmn:outgoing>SequenceFlow_1ng4b6l</bpmn:outgoing>
@@ -138,6 +138,7 @@ pnfSwUpgrade.prepareCompletion(execution)</bpmn:script>
<bpmn:callActivity id="CallActivity_0o1mi8u" name="Complete Process" calledElement="CompleteMsoProcess">
<bpmn:extensionElements>
<camunda:in source="PnfSwUpgrade_CompleteMsoProcessRequest" target="CompleteMsoProcessRequest" />
+ <camunda:in source="requestId" target="CMSO_request_id" />
</bpmn:extensionElements>
<bpmn:incoming>SequenceFlow_0ipc3nt</bpmn:incoming>
<bpmn:outgoing>SequenceFlow_0tle5zb</bpmn:outgoing>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/ServiceLevelUpgrade.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/ServiceLevelUpgrade.bpmn
index a12d8fef34..a48278e19f 100644
--- a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/ServiceLevelUpgrade.bpmn
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/ServiceLevelUpgrade.bpmn
@@ -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:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_1k6npmy" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="4.0.0">
+<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:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_1k6npmy" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="4.4.0">
<bpmn:process id="ServiceLevelUpgrade" name="ServiceLevelUpgrade" isExecutable="true">
<bpmn:startEvent id="Event_02mc8tr">
<bpmn:outgoing>Flow_0nrz340</bpmn:outgoing>
@@ -54,13 +54,16 @@
<bpmn:outgoing>Flow_1ptk2a3</bpmn:outgoing>
</bpmn:serviceTask>
<bpmn:scriptTask id="Activity_1n4rk7m" name="Prepare Completion" scriptFormat="groovy">
- <bpmn:incoming>Flow_0l67uzl</bpmn:incoming>
+ <bpmn:incoming>Flow_05aa7gj</bpmn:incoming>
<bpmn:outgoing>Flow_0frhsd0</bpmn:outgoing>
<bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def pnfSwUpgrade = new GenericPnfSoftwareUpgrade()
-pnfSwUpgrade.prepareCompletion(execution)</bpmn:script>
+def serviceLevelUpgrade = new ServiceLevelUpgrade()
+serviceLevelUpgrade.prepareCompletion(execution)</bpmn:script>
</bpmn:scriptTask>
<bpmn:callActivity id="Activity_1lz38px" name="Complete Process" calledElement="CompleteMsoProcess">
+ <bpmn:extensionElements>
+ <camunda:in source="requestId" target="CMSO_request_id" />
+ </bpmn:extensionElements>
<bpmn:incoming>Flow_0frhsd0</bpmn:incoming>
<bpmn:outgoing>Flow_10jgbxm</bpmn:outgoing>
</bpmn:callActivity>
@@ -100,7 +103,7 @@ pnfSwUpgrade.prepareFalloutHandler(execution)</bpmn:script>
</bpmn:sequenceFlow>
<bpmn:sequenceFlow id="Flow_1ru18s3" sourceRef="Activity_0ft7fa2" targetRef="Gateway_1vq11i7" />
<bpmn:sequenceFlow id="Flow_1tcnzdx" name="Failure" sourceRef="Gateway_1vq11i7" targetRef="Event_03tpudy" />
- <bpmn:sequenceFlow id="Flow_0l67uzl" name="Success" sourceRef="Gateway_1vq11i7" targetRef="Activity_1n4rk7m">
+ <bpmn:sequenceFlow id="Flow_0l67uzl" name="Success" sourceRef="Gateway_1vq11i7" targetRef="Activity_0o2rrag">
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{execution.getVariable("ControllerStatus").equals("Success")}</bpmn:conditionExpression>
</bpmn:sequenceFlow>
<bpmn:sequenceFlow id="Flow_0frhsd0" sourceRef="Activity_1n4rk7m" targetRef="Activity_1lz38px" />
@@ -116,6 +119,7 @@ pnfSwUpgrade.prepareFalloutHandler(execution)</bpmn:script>
<camunda:out source="ControllerStatus" target="ControllerStatus" />
<camunda:in source="isRollback" target="isRollback" />
<camunda:in source="pnfName" target="pnfName" />
+ <camunda:in source="requestId" target="requestId" />
</bpmn:extensionElements>
<bpmn:incoming>Flow_0rpnl02</bpmn:incoming>
<bpmn:outgoing>Flow_0zjsp5x</bpmn:outgoing>
@@ -129,6 +133,7 @@ pnfSwUpgrade.prepareFalloutHandler(execution)</bpmn:script>
<camunda:out source="ControllerStatus" target="ControllerStatus" />
<camunda:in source="isRollback" target="isRollback" />
<camunda:in source="pnfName" target="pnfName" />
+ <camunda:in source="requestId" target="requestId" />
</bpmn:extensionElements>
<bpmn:incoming>Flow_0g6gkgx</bpmn:incoming>
<bpmn:outgoing>Flow_1y3cptr</bpmn:outgoing>
@@ -175,6 +180,14 @@ pnfSwUpgrade.prepareFalloutHandler(execution)</bpmn:script>
<bpmn:incoming>Flow_19tmp99</bpmn:incoming>
<bpmn:outgoing>Flow_0g6gkgx</bpmn:outgoing>
</bpmn:serviceTask>
+ <bpmn:scriptTask id="Activity_0o2rrag" name="Send Response" scriptFormat="groovy">
+ <bpmn:incoming>Flow_0l67uzl</bpmn:incoming>
+ <bpmn:outgoing>Flow_05aa7gj</bpmn:outgoing>
+ <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
+def pnfSwUpgrade = new GenericPnfSoftwareUpgrade()
+pnfSwUpgrade.sendResponse(execution)</bpmn:script>
+ </bpmn:scriptTask>
+ <bpmn:sequenceFlow id="Flow_05aa7gj" sourceRef="Activity_0o2rrag" targetRef="Activity_1n4rk7m" />
</bpmn:process>
<bpmn:error id="Error_01a8p43" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
<bpmn:error id="Error_0e5owqi" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
@@ -223,8 +236,8 @@ pnfSwUpgrade.prepareFalloutHandler(execution)</bpmn:script>
<di:waypoint x="930" y="182" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1ptk2a3_di" bpmnElement="Flow_1ptk2a3">
- <di:waypoint x="600" y="182" />
- <di:waypoint x="760" y="182" />
+ <di:waypoint x="710" y="181" />
+ <di:waypoint x="760" y="181" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0ny61qm_di" bpmnElement="Flow_0ny61qm">
<di:waypoint x="1140" y="346" />
@@ -263,11 +276,9 @@ pnfSwUpgrade.prepareFalloutHandler(execution)</bpmn:script>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0l67uzl_di" bpmnElement="Flow_0l67uzl">
<di:waypoint x="964" y="490" />
- <di:waypoint x="210" y="490" />
- <di:waypoint x="210" y="579" />
- <di:waypoint x="262" y="579" />
+ <di:waypoint x="362" y="490" />
<bpmndi:BPMNLabel>
- <dc:Bounds x="612" y="476" width="43" height="14" />
+ <dc:Bounds x="637" y="476" width="43" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1tcnzdx_di" bpmnElement="Flow_1tcnzdx">
@@ -304,81 +315,69 @@ pnfSwUpgrade.prepareFalloutHandler(execution)</bpmn:script>
<di:waypoint x="624" y="580" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1b392qs_di" bpmnElement="Flow_1b392qs">
- <di:waypoint x="362" y="182" />
- <di:waypoint x="500" y="182" />
+ <di:waypoint x="536" y="182" />
+ <di:waypoint x="610" y="182" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0nrz340_di" bpmnElement="Flow_0nrz340">
- <di:waypoint x="186" y="180" />
- <di:waypoint x="262" y="182" />
+ <di:waypoint x="226" y="182" />
+ <di:waypoint x="436" y="182" />
</bpmndi:BPMNEdge>
- <bpmndi:BPMNShape id="Event_02mc8tr_di" bpmnElement="Event_02mc8tr">
- <dc:Bounds x="154" y="164" width="32" height="32" />
+ <bpmndi:BPMNEdge id="Flow_05aa7gj_di" bpmnElement="Flow_05aa7gj">
+ <di:waypoint x="262" y="490" />
+ <di:waypoint x="210" y="490" />
+ <di:waypoint x="210" y="579" />
+ <di:waypoint x="262" y="579" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="Event_12983th_di" bpmnElement="Event_12983th">
+ <dc:Bounds x="624" y="565" width="32" height="32" />
<bpmndi:BPMNLabel>
- <dc:Bounds x="-6" y="-188" width="51" height="14" />
+ <dc:Bounds x="-132" y="-188" width="20" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_18vue7u_di" bpmnElement="Activity_18vue7u">
- <dc:Bounds x="262" y="142" width="100" height="80" />
- </bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_02fectw_di" bpmnElement="Gateway_02fectw" isMarkerVisible="true">
<dc:Bounds x="788" y="314" width="32" height="32" />
</bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="Event_0ldlupa_di" bpmnElement="Event_0ldlupa">
+ <dc:Bounds x="788" y="414" width="32" height="32" />
+ </bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_1nr51kr_di" bpmnElement="Gateway_1nr51kr" isMarkerVisible="true">
<dc:Bounds x="1124" y="166" width="32" height="32" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Event_16k9r1c_di" bpmnElement="Event_16k9r1c">
<dc:Bounds x="1284" y="166" width="32" height="32" />
</bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_0snmatn_di" bpmnElement="Activity_0snmatn">
- <dc:Bounds x="262" y="290" width="100" height="80" />
+ <bpmndi:BPMNShape id="Gateway_1vq11i7_di" bpmnElement="Gateway_1vq11i7" isMarkerVisible="true">
+ <dc:Bounds x="964" y="474" width="32" height="32" />
</bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_09bqns0_di" bpmnElement="Activity_09bqns0">
- <dc:Bounds x="500" y="142" width="100" height="80" />
+ <bpmndi:BPMNShape id="Event_03tpudy_di" bpmnElement="Event_03tpudy">
+ <dc:Bounds x="964" y="554" width="32" height="32" />
</bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Event_0ldlupa_di" bpmnElement="Event_0ldlupa">
- <dc:Bounds x="788" y="414" width="32" height="32" />
+ <bpmndi:BPMNShape id="Activity_0snmatn_di" bpmnElement="Activity_0snmatn">
+ <dc:Bounds x="262" y="290" width="100" height="80" />
</bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_1lz38px_di" bpmnElement="Activity_1lz38px">
- <dc:Bounds x="450" y="539" width="100" height="80" />
+ <bpmndi:BPMNShape id="Activity_0ft7fa2_di" bpmnElement="Activity_0ft7fa2">
+ <dc:Bounds x="1090" y="450" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_1n4rk7m_di" bpmnElement="Activity_1n4rk7m">
<dc:Bounds x="262" y="539" width="100" height="80" />
</bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Event_12983th_di" bpmnElement="Event_12983th">
- <dc:Bounds x="624" y="565" width="32" height="32" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="-132" y="-188" width="20" height="14" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_0n17xou_di" bpmnElement="Activity_0n17xou">
- <dc:Bounds x="930" y="142" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_1q4o9fx_di" bpmnElement="Activity_1q4o9fx">
- <dc:Bounds x="590" y="290" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_1hp67qz_di" bpmnElement="Activity_1hp67qz">
- <dc:Bounds x="930" y="290" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Gateway_18ch73t_di" bpmnElement="Gateway_18ch73t" isMarkerVisible="true">
- <dc:Bounds x="1124" y="314" width="32" height="32" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Event_1fhov6x_di" bpmnElement="Event_1fhov6x">
- <dc:Bounds x="1124" y="404" width="32" height="32" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_1bjlebw_di" bpmnElement="Activity_02vp5np">
- <dc:Bounds x="760" y="142" width="100" height="80" />
+ <bpmndi:BPMNShape id="Activity_1lz38px_di" bpmnElement="Activity_1lz38px">
+ <dc:Bounds x="450" y="539" width="100" height="80" />
</bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_1knf0nl_di" bpmnElement="Activity_0e6w886">
- <dc:Bounds x="438" y="290" width="100" height="80" />
+ <bpmndi:BPMNShape id="Activity_09bqns0_di" bpmnElement="Activity_09bqns0">
+ <dc:Bounds x="610" y="140" width="100" height="80" />
</bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Event_03tpudy_di" bpmnElement="Event_03tpudy">
- <dc:Bounds x="964" y="554" width="32" height="32" />
+ <bpmndi:BPMNShape id="Activity_0o2rrag_di" bpmnElement="Activity_0o2rrag">
+ <dc:Bounds x="262" y="450" width="100" height="80" />
</bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_0ft7fa2_di" bpmnElement="Activity_0ft7fa2">
- <dc:Bounds x="1090" y="450" width="100" height="80" />
+ <bpmndi:BPMNShape id="Activity_18vue7u_di" bpmnElement="Activity_18vue7u">
+ <dc:Bounds x="436" y="142" width="100" height="80" />
</bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Gateway_1vq11i7_di" bpmnElement="Gateway_1vq11i7" isMarkerVisible="true">
- <dc:Bounds x="964" y="474" width="32" height="32" />
+ <bpmndi:BPMNShape id="Event_02mc8tr_di" bpmnElement="Event_02mc8tr">
+ <dc:Bounds x="194" y="166" width="32" height="32" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="-6" y="-188" width="51" height="14" />
+ </bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_0ui6tp1_di" bpmnElement="Activity_0ui6tp1" isExpanded="true">
<dc:Bounds x="362" y="810" width="650" height="190" />
@@ -413,6 +412,27 @@ pnfSwUpgrade.prepareFalloutHandler(execution)</bpmn:script>
<dc:Bounds x="-132" y="-188" width="20" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="Activity_0n17xou_di" bpmnElement="Activity_0n17xou">
+ <dc:Bounds x="930" y="142" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="Activity_1q4o9fx_di" bpmnElement="Activity_1q4o9fx">
+ <dc:Bounds x="590" y="290" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="Activity_1hp67qz_di" bpmnElement="Activity_1hp67qz">
+ <dc:Bounds x="930" y="290" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="Gateway_18ch73t_di" bpmnElement="Gateway_18ch73t" isMarkerVisible="true">
+ <dc:Bounds x="1124" y="314" width="32" height="32" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="Event_1fhov6x_di" bpmnElement="Event_1fhov6x">
+ <dc:Bounds x="1124" y="404" width="32" height="32" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="Activity_1bjlebw_di" bpmnElement="Activity_02vp5np">
+ <dc:Bounds x="760" y="142" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="Activity_1knf0nl_di" bpmnElement="Activity_0e6w886">
+ <dc:Bounds x="438" y="290" width="100" height="80" />
+ </bpmndi:BPMNShape>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</bpmn:definitions> \ No newline at end of file
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoActivateSliceService.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoActivateSliceService.bpmn
new file mode 100644
index 0000000000..ca231b3daf
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoActivateSliceService.bpmn
@@ -0,0 +1,211 @@
+<?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:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_13dsy4w" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="3.4.1">
+ <bpmn:error id="Error_08p7hsc" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
+ <bpmn:process id="DoActivateSliceService" name="DoActivateSliceService" isExecutable="true">
+ <bpmn:startEvent id="StartEvent_0s4ou5u" name="Start">
+ <bpmn:outgoing>SequenceFlow_13fdjwf</bpmn:outgoing>
+ </bpmn:startEvent>
+ <bpmn:scriptTask id="ScriptTask_1774fcg" name="Preprocess Request" scriptFormat="groovy">
+ <bpmn:incoming>SequenceFlow_13fdjwf</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_1lh6vpe</bpmn:outgoing>
+ <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
+def dcso = new DoActivateSliceService()
+dcso.preProcessRequest(execution)</bpmn:script>
+ </bpmn:scriptTask>
+ <bpmn:sequenceFlow id="SequenceFlow_13fdjwf" sourceRef="StartEvent_0s4ou5u" targetRef="ScriptTask_1774fcg" />
+ <bpmn:callActivity id="CallActivity_1ba0boc" name="Call Decompose Service" calledElement="DecomposeService">
+ <bpmn:extensionElements>
+ <camunda:in source="msoRequestId" target="msoRequestId" />
+ <camunda:in source="nssInstanceId" target="serviceInstanceId" />
+ <camunda:in source="serviceModelInfo" target="serviceModelInfo" />
+ <camunda:out source="serviceDecomposition" target="serviceDecomposition" />
+ <camunda:out source="serviceDecompositionString" target="serviceDecompositionString" />
+ </bpmn:extensionElements>
+ <bpmn:incoming>SequenceFlow_1yqrli6</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_0ru5d0h</bpmn:outgoing>
+ </bpmn:callActivity>
+ <bpmn:scriptTask id="ScriptTask_0vhhyt1" name="processDecomposition" scriptFormat="groovy">
+ <bpmn:incoming>SequenceFlow_0ru5d0h</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_0so165e</bpmn:outgoing>
+ <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
+def dcso = new DoActivateSliceService()
+dcso.processDecomposition(execution)</bpmn:script>
+ </bpmn:scriptTask>
+ <bpmn:scriptTask id="ScriptTask_17x7ifp" name="SendCommandToNssmf" scriptFormat="groovy">
+ <bpmn:incoming>SequenceFlow_0so165e</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_05wxhwm</bpmn:outgoing>
+ <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
+def dcso = new DoActivateSliceService()
+dcso.sendCreateRequestNSSMF(execution)</bpmn:script>
+ </bpmn:scriptTask>
+ <bpmn:sequenceFlow id="SequenceFlow_0ru5d0h" sourceRef="CallActivity_1ba0boc" targetRef="ScriptTask_0vhhyt1" />
+ <bpmn:sequenceFlow id="SequenceFlow_0so165e" sourceRef="ScriptTask_0vhhyt1" targetRef="ScriptTask_17x7ifp" />
+ <bpmn:sequenceFlow id="SequenceFlow_1lh6vpe" sourceRef="ScriptTask_1774fcg" targetRef="Task_0sjhszu" />
+ <bpmn:sequenceFlow id="SequenceFlow_1yqrli6" sourceRef="Task_0sjhszu" targetRef="CallActivity_1ba0boc" />
+ <bpmn:scriptTask id="Task_0sjhszu" name="Prepare Compose&#10;" scriptFormat="groovy">
+ <bpmn:incoming>SequenceFlow_1lh6vpe</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_1yqrli6</bpmn:outgoing>
+ <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
+def dcso = new DoActivateSliceService()
+dcso.prepareCompose(execution)</bpmn:script>
+ </bpmn:scriptTask>
+ <bpmn:scriptTask id="ScriptTask_00sf7s2" name="Query NSSI progress from adapter" scriptFormat="groovy">
+ <bpmn:incoming>SequenceFlow_0oa5clt</bpmn:incoming>
+ <bpmn:incoming>SequenceFlow_05wxhwm</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_1herzai</bpmn:outgoing>
+ <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
+def dcso = new DoActivateSliceService()
+dcso.queryNSSIStatus(execution)</bpmn:script>
+ </bpmn:scriptTask>
+ <bpmn:exclusiveGateway id="ExclusiveGateway_0z3hxio" name="Completed" default="SequenceFlow_0btrzm8">
+ <bpmn:incoming>SequenceFlow_1herzai</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_0btrzm8</bpmn:outgoing>
+ <bpmn:outgoing>SequenceFlow_1lvozh0</bpmn:outgoing>
+ </bpmn:exclusiveGateway>
+ <bpmn:endEvent id="EndEvent_1mivpop" name="end">
+ <bpmn:incoming>SequenceFlow_1lvozh0</bpmn:incoming>
+ </bpmn:endEvent>
+ <bpmn:scriptTask id="ScriptTask_1lpgplr" name="Time delay" scriptFormat="groovy">
+ <bpmn:incoming>SequenceFlow_0btrzm8</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_0oa5clt</bpmn:outgoing>
+ <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
+def dcso = new DoActivateSliceService()
+dcso.timeDelay(execution)</bpmn:script>
+ </bpmn:scriptTask>
+ <bpmn:sequenceFlow id="SequenceFlow_0oa5clt" sourceRef="ScriptTask_1lpgplr" targetRef="ScriptTask_00sf7s2" />
+ <bpmn:sequenceFlow id="SequenceFlow_1herzai" sourceRef="ScriptTask_00sf7s2" targetRef="ExclusiveGateway_0z3hxio" />
+ <bpmn:sequenceFlow id="SequenceFlow_0btrzm8" name="false" sourceRef="ExclusiveGateway_0z3hxio" targetRef="ScriptTask_1lpgplr" />
+ <bpmn:sequenceFlow id="SequenceFlow_1lvozh0" name="yes" sourceRef="ExclusiveGateway_0z3hxio" targetRef="EndEvent_1mivpop">
+ <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{(execution.getVariable("jobFinished" ) == true)}</bpmn:conditionExpression>
+ </bpmn:sequenceFlow>
+ <bpmn:sequenceFlow id="SequenceFlow_05wxhwm" sourceRef="ScriptTask_17x7ifp" targetRef="ScriptTask_00sf7s2" />
+ <bpmn:subProcess id="SubProcess_0bkr0v1" name="sub process for fallouthandler and rollback" triggeredByEvent="true">
+ <bpmn:startEvent id="StartEvent_0g7e26e">
+ <bpmn:outgoing>SequenceFlow_0ca8iyv</bpmn:outgoing>
+ <bpmn:errorEventDefinition id="ErrorEventDefinition_1cir65m" />
+ </bpmn:startEvent>
+ <bpmn:endEvent id="EndEvent_14z3xck">
+ <bpmn:incoming>SequenceFlow_0aqapur</bpmn:incoming>
+ </bpmn:endEvent>
+ <bpmn:scriptTask id="ScriptTask_1gitk4f" name="Send Error Response" scriptFormat="groovy">
+ <bpmn:incoming>SequenceFlow_0ca8iyv</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_0aqapur</bpmn:outgoing>
+ <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
+def dcso = new DoActivateSliceService()
+dcso.sendSyncError(execution)</bpmn:script>
+ </bpmn:scriptTask>
+ <bpmn:sequenceFlow id="SequenceFlow_0aqapur" sourceRef="ScriptTask_1gitk4f" targetRef="EndEvent_14z3xck" />
+ <bpmn:sequenceFlow id="SequenceFlow_0ca8iyv" sourceRef="StartEvent_0g7e26e" targetRef="ScriptTask_1gitk4f" />
+ </bpmn:subProcess>
+ </bpmn:process>
+ <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+ <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoActivateSliceService">
+ <bpmndi:BPMNShape id="StartEvent_0s4ou5u_di" bpmnElement="StartEvent_0s4ou5u">
+ <dc:Bounds x="152" y="102" width="36" height="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="158" y="145" width="25" height="14" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="ScriptTask_1774fcg_di" bpmnElement="ScriptTask_1774fcg">
+ <dc:Bounds x="220" y="80" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="SequenceFlow_13fdjwf_di" bpmnElement="SequenceFlow_13fdjwf">
+ <di:waypoint x="188" y="120" />
+ <di:waypoint x="220" y="120" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="CallActivity_1ba0boc_di" bpmnElement="CallActivity_1ba0boc">
+ <dc:Bounds x="520" y="80" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="ScriptTask_0vhhyt1_di" bpmnElement="ScriptTask_0vhhyt1">
+ <dc:Bounds x="660" y="80" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="ScriptTask_17x7ifp_di" bpmnElement="ScriptTask_17x7ifp">
+ <dc:Bounds x="810" y="80" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="SequenceFlow_0ru5d0h_di" bpmnElement="SequenceFlow_0ru5d0h">
+ <di:waypoint x="620" y="120" />
+ <di:waypoint x="660" y="120" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_0so165e_di" bpmnElement="SequenceFlow_0so165e">
+ <di:waypoint x="760" y="120" />
+ <di:waypoint x="810" y="120" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_1lh6vpe_di" bpmnElement="SequenceFlow_1lh6vpe">
+ <di:waypoint x="320" y="120" />
+ <di:waypoint x="360" y="120" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_1yqrli6_di" bpmnElement="SequenceFlow_1yqrli6">
+ <di:waypoint x="460" y="120" />
+ <di:waypoint x="520" y="120" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="ScriptTask_1mfr1lo_di" bpmnElement="Task_0sjhszu">
+ <dc:Bounds x="360" y="80" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="ScriptTask_00sf7s2_di" bpmnElement="ScriptTask_00sf7s2">
+ <dc:Bounds x="960" y="80" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="ExclusiveGateway_0z3hxio_di" bpmnElement="ExclusiveGateway_0z3hxio" isMarkerVisible="true">
+ <dc:Bounds x="1125" y="95" width="50" height="50" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="1123" y="71" width="54" height="14" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="EndEvent_1mivpop_di" bpmnElement="EndEvent_1mivpop">
+ <dc:Bounds x="1292" y="102" width="36" height="36" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="1301" y="145" width="19" height="14" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="ScriptTask_1lpgplr_di" bpmnElement="ScriptTask_1lpgplr">
+ <dc:Bounds x="1100" y="260" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="SequenceFlow_0oa5clt_di" bpmnElement="SequenceFlow_0oa5clt">
+ <di:waypoint x="1100" y="300" />
+ <di:waypoint x="1010" y="300" />
+ <di:waypoint x="1010" y="160" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_1herzai_di" bpmnElement="SequenceFlow_1herzai">
+ <di:waypoint x="1060" y="120" />
+ <di:waypoint x="1125" y="120" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_0btrzm8_di" bpmnElement="SequenceFlow_0btrzm8">
+ <di:waypoint x="1150" y="145" />
+ <di:waypoint x="1150" y="260" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="1126" y="205" width="23" height="14" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_1lvozh0_di" bpmnElement="SequenceFlow_1lvozh0">
+ <di:waypoint x="1175" y="120" />
+ <di:waypoint x="1292" y="120" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="1226" y="133" width="17" height="14" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_05wxhwm_di" bpmnElement="SequenceFlow_05wxhwm">
+ <di:waypoint x="910" y="120" />
+ <di:waypoint x="960" y="120" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="SubProcess_0bkr0v1_di" bpmnElement="SubProcess_0bkr0v1" isExpanded="true">
+ <dc:Bounds x="240" y="420" width="810" height="180" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="StartEvent_0g7e26e_di" bpmnElement="StartEvent_0g7e26e">
+ <dc:Bounds x="347" y="482" width="36" height="36" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="EndEvent_14z3xck_di" bpmnElement="EndEvent_14z3xck">
+ <dc:Bounds x="797" y="482" width="36" height="36" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="ScriptTask_1gitk4f_di" bpmnElement="ScriptTask_1gitk4f">
+ <dc:Bounds x="560" y="460" width="100" height="80" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="SequenceFlow_0aqapur_di" bpmnElement="SequenceFlow_0aqapur">
+ <di:waypoint x="660" y="500" />
+ <di:waypoint x="797" y="500" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="SequenceFlow_0ca8iyv_di" bpmnElement="SequenceFlow_0ca8iyv">
+ <di:waypoint x="383" y="500" />
+ <di:waypoint x="560" y="500" />
+ </bpmndi:BPMNEdge>
+ </bpmndi:BPMNPlane>
+ </bpmndi:BPMNDiagram>
+</bpmn:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoActivateTransportNSSI.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoActivateTransportNSSI.bpmn
index 51448b027c..eb0c007403 100644
--- a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoActivateTransportNSSI.bpmn
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoActivateTransportNSSI.bpmn
@@ -30,7 +30,7 @@ ex.processJavaException(execution)</bpmn:script>
<bpmn:outgoing>SequenceFlow_1qv8qw1</bpmn:outgoing>
<bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
def runScript = new DoActivateTnNssi()
-runScript.prepareUpdateJobStatus(execution,"finished","100","Activate or Deactivate successfully")</bpmn:script>
+runScript.prepareUpdateJobStatus(execution,"FINISHED","100","Activate or Deactivate successfully")</bpmn:script>
</bpmn:scriptTask>
<bpmn:sequenceFlow id="SequenceFlow_03s744c" sourceRef="StartEvent_1nbljfd" targetRef="ScriptTask_1tc44ge" />
<bpmn:sequenceFlow id="SequenceFlow_1qv8qw1" sourceRef="ScriptTask_1ssh2l9" targetRef="Activity_0nhxd67" />
@@ -40,8 +40,9 @@ runScript.prepareUpdateJobStatus(execution,"finished","100","Activate or Deactiv
<bpmn:outgoing>SequenceFlow_0kixzdj</bpmn:outgoing>
<bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
def actionType = execution.getVariable("actionType")
-execution.setVariable("orchestrationStatus", actionType)
def runScript = new DoActivateTnNssi()
+def orchStatus = runScript.getOrchStatusBasedOnActionType(actionType)
+execution.setVariable("orchestrationStatus", orchStatus)
runScript.updateAAIOrchStatus(execution)</bpmn:script>
</bpmn:scriptTask>
<bpmn:sequenceFlow id="SequenceFlow_0kixzdj" sourceRef="ScriptTask_19uxoi8" targetRef="ScriptTask_1ssh2l9" />
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoAllocateCoreNSSI.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoAllocateCoreNSSI.bpmn
index 92407e9b2a..45ebfb9664 100644
--- a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoAllocateCoreNSSI.bpmn
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoAllocateCoreNSSI.bpmn
@@ -78,6 +78,7 @@ allocateNssi.prepareOOFRequest(execution)</bpmn:script>
<camunda:in source="servicename" target="servicename" />
<camunda:in source="msoRequestId" target="msoRequestId" />
<camunda:in source="sliceProfile" target="sliceProfile" />
+ <camunda:in source="jobId" target="jobId" />
</bpmn:extensionElements>
<bpmn:incoming>SequenceFlow_1ygklb8</bpmn:incoming>
<bpmn:outgoing>SequenceFlow_0tytimn</bpmn:outgoing>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoAllocateCoreSharedSlice.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoAllocateCoreSharedSlice.bpmn
index 0a482beca0..88902d1c91 100644
--- a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoAllocateCoreSharedSlice.bpmn
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoAllocateCoreSharedSlice.bpmn
@@ -39,37 +39,15 @@ allocateNssi.prepareSOMacroRequestPayload(execution)</bpmn:script>
def allocateNssi = new DoAllocateCoreSharedSlice()
allocateNssi.sendPutRequestToSOMacro(execution)</bpmn:script>
</bpmn:scriptTask>
- <bpmn:scriptTask id="Activity_0ge2y0l" name="Prepare Call CheckServiceProcessStatus" scriptFormat="groovy">
+ <bpmn:scriptTask id="Activity_0ge2y0l" name="Call Get SO PUT progress" scriptFormat="groovy">
<bpmn:incoming>Flow_0x7shtq</bpmn:incoming>
+ <bpmn:incoming>Flow_163kxug</bpmn:incoming>
<bpmn:outgoing>Flow_1c9nkx4</bpmn:outgoing>
<bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
def allocateNssi = new DoAllocateCoreSharedSlice()
-allocateNssi.prepareCallCheckProcessStatus(execution)</bpmn:script>
+allocateNssi.getSOPUTProgress(execution)</bpmn:script>
</bpmn:scriptTask>
- <bpmn:callActivity id="Activity_19xwwnc" name="CallCheckServiceProcessStatus" calledElement="CheckServiceProcessStatus">
- <bpmn:extensionElements>
- <camunda:in source="networkServiceInstanceId" target="serviceInstanceId" />
- <camunda:in source="macroOperationId" target="operationId" />
- <camunda:in source="successConditions" target="successConditions" />
- <camunda:in source="errorConditions" target="errorConditions" />
- <camunda:in source="processServiceType" target="processServiceType" />
- <camunda:in source="timeOut" target="timeOut" />
- <camunda:out source="operationStatus" target="result" />
- <camunda:out source="operationContent" target="reason" />
- <camunda:out source="WorkflowException" target="WorkflowException" />
- <camunda:out source="isTimeOut" target="isTimeOut" />
- <camunda:in source="subOperationType" target="operationType" />
- <camunda:in source="initProgress" target="initProgress" />
- <camunda:in source="endProgress" target="endProgress" />
- <camunda:in source="serviceInstanceID" target="parentServiceInstanceId" />
- <camunda:in source="globalSubscriberId" target="globalSubscriberId" />
- <camunda:in source="operationId" target="parentOperationId" />
- </bpmn:extensionElements>
- <bpmn:incoming>Flow_1c9nkx4</bpmn:incoming>
- <bpmn:outgoing>Flow_0c94gye</bpmn:outgoing>
- </bpmn:callActivity>
- <bpmn:sequenceFlow id="Flow_1c9nkx4" sourceRef="Activity_0ge2y0l" targetRef="Activity_19xwwnc" />
- <bpmn:sequenceFlow id="Flow_0c94gye" sourceRef="Activity_19xwwnc" targetRef="Activity_1t49t6c" />
+ <bpmn:sequenceFlow id="Flow_1c9nkx4" sourceRef="Activity_0ge2y0l" targetRef="Gateway_1boyqt9" />
<bpmn:scriptTask id="Activity_0no0sxa" name="Get VNF/VFs modelInfo from CatalogDB" scriptFormat="groovy">
<bpmn:incoming>Flow_1973d9m</bpmn:incoming>
<bpmn:outgoing>Flow_0da7dao</bpmn:outgoing>
@@ -78,13 +56,13 @@ def allocateNssi = new DoAllocateCoreSharedSlice()
allocateNssi.getServiceVNFAndVFsFromCatalogDB(execution)</bpmn:script>
</bpmn:scriptTask>
<bpmn:scriptTask id="Activity_1t49t6c" name="Prepare Update Operation Status" scriptFormat="groovy">
- <bpmn:incoming>Flow_0c94gye</bpmn:incoming>
+ <bpmn:incoming>Flow_15lksyg</bpmn:incoming>
<bpmn:outgoing>SequenceFlow_1re5jor</bpmn:outgoing>
<bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
def allocateNssi = new DoAllocateCoreSharedSlice()
allocateNssi.prepareUpdateResourceOperationStatus(execution)</bpmn:script>
</bpmn:scriptTask>
- <bpmn:serviceTask id="Activity_0t6viuq" name="Update Service Operation Status">
+ <bpmn:serviceTask id="Activity_0t6viuq" name="Update Resource Operation Status">
<bpmn:extensionElements>
<camunda:connector>
<camunda:inputOutput>
@@ -95,7 +73,7 @@ allocateNssi.prepareUpdateResourceOperationStatus(execution)</bpmn:script>
<camunda:entry key="Authorization">Basic YnBlbDpwYXNzd29yZDEk</camunda:entry>
</camunda:map>
</camunda:inputParameter>
- <camunda:inputParameter name="payload">${updateOperationStatus}</camunda:inputParameter>
+ <camunda:inputParameter name="payload">${updateResourceOperationStatus}</camunda:inputParameter>
<camunda:inputParameter name="method">POST</camunda:inputParameter>
<camunda:outputParameter name="NSSMF_dbResponseCode">${statusCode}</camunda:outputParameter>
<camunda:outputParameter name="NSSMF_dbResponse">${response}</camunda:outputParameter>
@@ -111,11 +89,11 @@ allocateNssi.prepareUpdateResourceOperationStatus(execution)</bpmn:script>
<bpmn:sequenceFlow id="SequenceFlow_08q2fd9" sourceRef="Activity_12jcmzc" targetRef="Gateway_0sfmiku" />
<bpmn:sequenceFlow id="SequenceFlow_1re5jor" sourceRef="Activity_1t49t6c" targetRef="Activity_0t6viuq" />
<bpmn:sequenceFlow id="SequenceFlow_1j1qqcs" sourceRef="Task_16983t3" targetRef="IntermediateThrowEvent_09rhn4h" />
- <bpmn:intermediateThrowEvent id="IntermediateThrowEvent_09rhn4h" name="Call SO macro api">
+ <bpmn:intermediateThrowEvent id="IntermediateThrowEvent_09rhn4h" name="CallSO">
<bpmn:incoming>SequenceFlow_1j1qqcs</bpmn:incoming>
<bpmn:linkEventDefinition name="CallSO" />
</bpmn:intermediateThrowEvent>
- <bpmn:intermediateCatchEvent id="IntermediateThrowEvent_0qh9wy2" name="Call SO macro api">
+ <bpmn:intermediateCatchEvent id="IntermediateThrowEvent_0qh9wy2" name="CallSO">
<bpmn:outgoing>SequenceFlow_013bc74</bpmn:outgoing>
<bpmn:linkEventDefinition name="CallSO" />
</bpmn:intermediateCatchEvent>
@@ -178,16 +156,33 @@ allocateNssi.prepareFailedOperationStatusUpdate(execution)</bpmn:script>
<bpmn:sequenceFlow id="Flow_0kadgoq" sourceRef="Activity_0sqggtb" targetRef="Activity_1btidug" />
<bpmn:sequenceFlow id="Flow_128o22z" sourceRef="Activity_1btidug" targetRef="Activity_1150yu6" />
</bpmn:subProcess>
+ <bpmn:exclusiveGateway id="Gateway_1boyqt9" default="Flow_15lksyg">
+ <bpmn:incoming>Flow_1c9nkx4</bpmn:incoming>
+ <bpmn:outgoing>Flow_15lksyg</bpmn:outgoing>
+ <bpmn:outgoing>Flow_1lzv4jo</bpmn:outgoing>
+ </bpmn:exclusiveGateway>
+ <bpmn:sequenceFlow id="Flow_15lksyg" sourceRef="Gateway_1boyqt9" targetRef="Activity_1t49t6c" />
+ <bpmn:sequenceFlow id="Flow_1lzv4jo" name="requestState=IN_PROGRESS" sourceRef="Gateway_1boyqt9" targetRef="Activity_1qm4des">
+ <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{(execution.getVariable("requestState" ) == "IN_PROGRESS")}</bpmn:conditionExpression>
+ </bpmn:sequenceFlow>
+ <bpmn:scriptTask id="Activity_1qm4des" name="Time Delay 5s" scriptFormat="groovy">
+ <bpmn:incoming>Flow_1lzv4jo</bpmn:incoming>
+ <bpmn:outgoing>Flow_163kxug</bpmn:outgoing>
+ <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
+def allocateNssi = new DoAllocateCoreSharedSlice()
+allocateNssi.timeDelay(execution)</bpmn:script>
+ </bpmn:scriptTask>
+ <bpmn:sequenceFlow id="Flow_163kxug" sourceRef="Activity_1qm4des" targetRef="Activity_0ge2y0l" />
</bpmn:process>
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoAllocateCoreSharedSlice">
<bpmndi:BPMNEdge id="Flow_1nn15tq_di" bpmnElement="Flow_1nn15tq">
- <di:waypoint x="420" y="306" />
- <di:waypoint x="420" y="360" />
- <di:waypoint x="967" y="360" />
- <di:waypoint x="967" y="321" />
+ <di:waypoint x="420" y="256" />
+ <di:waypoint x="420" y="200" />
+ <di:waypoint x="967" y="200" />
+ <di:waypoint x="967" y="241" />
<bpmndi:BPMNLabel>
- <dc:Bounds x="687" y="342" width="14" height="12" />
+ <dc:Bounds x="687" y="182" width="15" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0x7shtq_di" bpmnElement="Flow_0x7shtq">
@@ -232,16 +227,9 @@ allocateNssi.prepareFailedOperationStatusUpdate(execution)</bpmn:script>
<dc:Bounds x="931.5" y="336" width="90" height="20" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="Flow_0c94gye_di" bpmnElement="Flow_0c94gye">
- <di:waypoint x="736" y="281" />
- <di:waypoint x="778" y="281" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="652" y="336" width="90" height="20" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1c9nkx4_di" bpmnElement="Flow_1c9nkx4">
<di:waypoint x="584" y="281" />
- <di:waypoint x="636" y="281" />
+ <di:waypoint x="655" y="281" />
<bpmndi:BPMNLabel>
<dc:Bounds x="505" y="336" width="90" height="20" />
</bpmndi:BPMNLabel>
@@ -271,6 +259,22 @@ allocateNssi.prepareFailedOperationStatusUpdate(execution)</bpmn:script>
<dc:Bounds x="207" y="179" width="90" height="12" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="Flow_15lksyg_di" bpmnElement="Flow_15lksyg">
+ <di:waypoint x="705" y="281" />
+ <di:waypoint x="778" y="281" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="Flow_1lzv4jo_di" bpmnElement="Flow_1lzv4jo">
+ <di:waypoint x="680" y="306" />
+ <di:waypoint x="680" y="340" />
+ <bpmndi:BPMNLabel>
+ <dc:Bounds x="603" y="315" width="78" height="27" />
+ </bpmndi:BPMNLabel>
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNEdge id="Flow_163kxug_di" bpmnElement="Flow_163kxug">
+ <di:waypoint x="630" y="380" />
+ <di:waypoint x="534" y="380" />
+ <di:waypoint x="534" y="321" />
+ </bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
<dc:Bounds x="248" y="102" width="36" height="36" />
<bpmndi:BPMNLabel>
@@ -298,9 +302,6 @@ allocateNssi.prepareFailedOperationStatusUpdate(execution)</bpmn:script>
<bpmndi:BPMNShape id="Activity_0ge2y0l_di" bpmnElement="Activity_0ge2y0l">
<dc:Bounds x="484" y="241" width="100" height="80" />
</bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="Activity_19xwwnc_di" bpmnElement="Activity_19xwwnc">
- <dc:Bounds x="636" y="241" width="100" height="80" />
- </bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_0k70k5i_di" bpmnElement="Activity_0no0sxa">
<dc:Bounds x="654" y="80" width="100" height="80" />
</bpmndi:BPMNShape>
@@ -313,21 +314,27 @@ allocateNssi.prepareFailedOperationStatusUpdate(execution)</bpmn:script>
<bpmndi:BPMNShape id="IntermediateThrowEvent_06785ru_di" bpmnElement="IntermediateThrowEvent_09rhn4h">
<dc:Bounds x="949" y="102" width="36" height="36" />
<bpmndi:BPMNLabel>
- <dc:Bounds x="923" y="142" width="90" height="14" />
+ <dc:Bounds x="950" y="142" width="36" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="IntermediateCatchEvent_09u3rdp_di" bpmnElement="IntermediateThrowEvent_0qh9wy2">
<dc:Bounds x="182" y="263" width="36" height="36" />
<bpmndi:BPMNLabel>
- <dc:Bounds x="156" y="303" width="90" height="14" />
+ <dc:Bounds x="183" y="303" width="36" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_0sfmiku_di" bpmnElement="Gateway_0sfmiku" isMarkerVisible="true">
<dc:Bounds x="395" y="256" width="50" height="50" />
<bpmndi:BPMNLabel>
- <dc:Bounds x="380" y="226" width="80" height="27" />
+ <dc:Bounds x="380" y="315.5" width="80" height="27" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="Gateway_1boyqt9_di" bpmnElement="Gateway_1boyqt9" isMarkerVisible="true">
+ <dc:Bounds x="655" y="256" width="50" height="50" />
+ </bpmndi:BPMNShape>
+ <bpmndi:BPMNShape id="Activity_1iksno7_di" bpmnElement="Activity_1qm4des">
+ <dc:Bounds x="630" y="340" width="100" height="80" />
+ </bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_08h38js_di" bpmnElement="Activity_08h38js" isExpanded="true">
<dc:Bounds x="250" y="440" width="781" height="196" />
</bpmndi:BPMNShape>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoAllocateTransportNSSI.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoAllocateTransportNSSI.bpmn
index f3bd700d9a..124b75cbe8 100644
--- a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoAllocateTransportNSSI.bpmn
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoAllocateTransportNSSI.bpmn
@@ -69,7 +69,7 @@ ex.processJavaException(execution)</bpmn:script>
<bpmn:outgoing>SequenceFlow_0t094g7</bpmn:outgoing>
<bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
def runScript = new TnAllocateNssi()
-runScript.prepareUpdateJobStatus(execution,"progress","10","Allocate TN NSSI started")</bpmn:script>
+runScript.prepareUpdateJobStatus(execution,"INPROGRESS","10","Allocate TN NSSI started")</bpmn:script>
</bpmn:scriptTask>
<bpmn:intermediateThrowEvent id="IntermediateThrowEvent_1ex8ke9" name="Goto OOF TN NSSI Selection">
<bpmn:incoming>SequenceFlow_0jrclmc</bpmn:incoming>
@@ -80,7 +80,7 @@ runScript.prepareUpdateJobStatus(execution,"progress","10","Allocate TN NSSI sta
<bpmn:outgoing>SequenceFlow_1qv8qw1</bpmn:outgoing>
<bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
def runScript = new TnAllocateNssi()
-runScript.prepareUpdateJobStatus(execution,"finished","100","Allocated TN NSSI successfully")</bpmn:script>
+runScript.prepareUpdateJobStatus(execution,"FINISHED","100","Allocated TN NSSI successfully")</bpmn:script>
</bpmn:scriptTask>
<bpmn:callActivity id="CallActivity_1bnkmaz" name="Call Decompose Service" calledElement="DecomposeService">
<bpmn:extensionElements>
@@ -174,7 +174,7 @@ runScript.updateAAIOrchStatus(execution)</bpmn:script>
<bpmn:outgoing>Flow_1853sgs</bpmn:outgoing>
<bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
def runScript = new TnAllocateNssi()
-runScript.prepareUpdateJobStatus(execution,"finished","100","Allocated TN NSSI successfully")</bpmn:script>
+runScript.prepareUpdateJobStatus(execution,"FINISHED","100","Allocated TN NSSI successfully")</bpmn:script>
</bpmn:scriptTask>
<bpmn:sequenceFlow id="Flow_1853sgs" sourceRef="Activity_1mh10j4" targetRef="Activity_124z7q2" />
<bpmn:callActivity id="Activity_187hs2t" name="Handle TN NSSI Selection OOF request" calledElement="DoHandleOofRequest">
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeallocateTransportNSSI.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeallocateTransportNSSI.bpmn
index de8391428d..1dd362bf4b 100644
--- a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeallocateTransportNSSI.bpmn
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeallocateTransportNSSI.bpmn
@@ -30,7 +30,7 @@ ex.processJavaException(execution)</bpmn:script>
<bpmn:outgoing>SequenceFlow_1qv8qw1</bpmn:outgoing>
<bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
def runScript = new DoDeallocateTnNssi()
-runScript.prepareUpdateJobStatus(execution,"finished","100","Deallocated TN NSSI successfully")</bpmn:script>
+runScript.prepareUpdateJobStatus(execution,"FINISHED","100","Deallocated TN NSSI successfully")</bpmn:script>
</bpmn:scriptTask>
<bpmn:sequenceFlow id="SequenceFlow_03s744c" sourceRef="StartEvent_1nbljfd" targetRef="ScriptTask_1tc44ge" />
<bpmn:sequenceFlow id="SequenceFlow_1qv8qw1" sourceRef="ScriptTask_1ssh2l9" targetRef="Activity_0rgeefb" />
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteSliceService.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteSliceService.bpmn
index 9edb6127f0..f1534a0360 100644
--- a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteSliceService.bpmn
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteSliceService.bpmn
@@ -34,9 +34,9 @@ ddss.getNSSIListFromAAI(execution)</bpmn:script>
<bpmn:outgoing>SequenceFlow_0926ghe</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:endEvent id="EndEvent_0jaitqv" name="End">
- <bpmn:incoming>SequenceFlow_1c4fjbv</bpmn:incoming>
+ <bpmn:incoming>SequenceFlow_1odnvjl</bpmn:incoming>
</bpmn:endEvent>
- <bpmn:sequenceFlow id="SequenceFlow_1c4fjbv" name="yes" sourceRef="ExclusiveGateway_1ogbunu" targetRef="EndEvent_0jaitqv">
+ <bpmn:sequenceFlow id="SequenceFlow_1c4fjbv" name="yes" sourceRef="ExclusiveGateway_1ogbunu" targetRef="Task_10yni6k">
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{(execution.getVariable("isAllNSSIFinished" ) == true)}</bpmn:conditionExpression>
</bpmn:sequenceFlow>
<bpmn:sequenceFlow id="SequenceFlow_0c58sw3" sourceRef="Task_1rc7mcw" targetRef="ScriptTask_159855t" />
@@ -96,6 +96,14 @@ dss.terminateNSIQuery(execution)</bpmn:script>
<bpmn:sequenceFlow id="SequenceFlow_17tvomo" sourceRef="Task_1iomfas" targetRef="Task_1rc7mcw" />
<bpmn:sequenceFlow id="SequenceFlow_1aa2ek0" sourceRef="Task_1u755sr" targetRef="Task_1iuls9p" />
<bpmn:sequenceFlow id="SequenceFlow_1252rbf" sourceRef="Task_1iuls9p" targetRef="Task_1iomfas" />
+ <bpmn:sequenceFlow id="SequenceFlow_1odnvjl" sourceRef="Task_10yni6k" targetRef="EndEvent_0jaitqv" />
+ <bpmn:scriptTask id="Task_10yni6k" name="DeleteNSIFromAAI" scriptFormat="groovy">
+ <bpmn:incoming>SequenceFlow_1c4fjbv</bpmn:incoming>
+ <bpmn:outgoing>SequenceFlow_1odnvjl</bpmn:outgoing>
+ <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
+def ddss= new DoDeleteSliceService()
+ddss.deleteNSIInstance(execution)</bpmn:script>
+ </bpmn:scriptTask>
</bpmn:process>
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoDeleteSliceServiceV1">
@@ -138,9 +146,9 @@ dss.terminateNSIQuery(execution)</bpmn:script>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="SequenceFlow_1c4fjbv_di" bpmnElement="SequenceFlow_1c4fjbv">
<di:waypoint x="1765" y="140" />
- <di:waypoint x="1802" y="140" />
+ <di:waypoint x="1830" y="140" />
<bpmndi:BPMNLabel>
- <dc:Bounds x="1771" y="118" width="17" height="14" />
+ <dc:Bounds x="1793" y="118" width="17" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="SequenceFlow_1rgfzzy_di" bpmnElement="SequenceFlow_1rgfzzy">
@@ -177,9 +185,9 @@ dss.terminateNSIQuery(execution)</bpmn:script>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="EndEvent_0jaitqv_di" bpmnElement="EndEvent_0jaitqv">
- <dc:Bounds x="1802" y="122" width="36" height="36" />
+ <dc:Bounds x="2002" y="122" width="36" height="36" />
<bpmndi:BPMNLabel>
- <dc:Bounds x="1810" y="168" width="20" height="14" />
+ <dc:Bounds x="2010" y="168" width="20" height="14" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="ScriptTask_0icszw6_di" bpmnElement="Task_0etki1p">
@@ -200,6 +208,13 @@ dss.terminateNSIQuery(execution)</bpmn:script>
<bpmndi:BPMNShape id="Activity_1iuls9p_di" bpmnElement="Task_1iuls9p">
<dc:Bounds x="1050" y="100" width="100" height="80" />
</bpmndi:BPMNShape>
+ <bpmndi:BPMNEdge id="SequenceFlow_1odnvjl_di" bpmnElement="SequenceFlow_1odnvjl">
+ <di:waypoint x="1930" y="140" />
+ <di:waypoint x="2002" y="140" />
+ </bpmndi:BPMNEdge>
+ <bpmndi:BPMNShape id="ScriptTask_1qk9lnm_di" bpmnElement="Task_10yni6k">
+ <dc:Bounds x="1830" y="100" width="100" height="80" />
+ </bpmndi:BPMNShape>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</bpmn:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoModifyTransportNSSI.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoModifyTransportNSSI.bpmn
index d70bed68cb..2b122fb5e2 100644
--- a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoModifyTransportNSSI.bpmn
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoModifyTransportNSSI.bpmn
@@ -30,7 +30,7 @@ ex.processJavaException(execution)</bpmn:script>
<bpmn:outgoing>SequenceFlow_1qv8qw1</bpmn:outgoing>
<bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
def runScript = new DoActivateTnNssi()
-runScript.prepareUpdateJobStatus(execution,"finished","100","Modified TN NSSI successfully")</bpmn:script>
+runScript.prepareUpdateJobStatus(execution,"FINISHED","100","Modified TN NSSI successfully")</bpmn:script>
</bpmn:scriptTask>
<bpmn:sequenceFlow id="SequenceFlow_03s744c" sourceRef="StartEvent_1nbljfd" targetRef="ScriptTask_1tc44ge" />
<bpmn:sequenceFlow id="SequenceFlow_1qv8qw1" sourceRef="ScriptTask_1ssh2l9" targetRef="Activity_0ziz3ti" />
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoSendCommandToNSSMF.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoSendCommandToNSSMF.bpmn
deleted file mode 100644
index 4f12ca7f41..0000000000
--- a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoSendCommandToNSSMF.bpmn
+++ /dev/null
@@ -1,344 +0,0 @@
-<?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:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_13dsy4w" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="3.4.1">
- <bpmn:collaboration id="Collaboration_0htncd8">
- <bpmn:participant id="DoSendCommandToNSSMF01" name="DoSendCommandToNSSMF" processRef="DoSendCommandToNSSMF" />
- </bpmn:collaboration>
- <bpmn:process id="DoSendCommandToNSSMF" name="DoSendCommandToNSSMF" isExecutable="true">
- <bpmn:scriptTask id="Task_0qx12sa" name="Get one NSSI info from list" scriptFormat="groovy">
- <bpmn:incoming>SequenceFlow_0umnozs</bpmn:incoming>
- <bpmn:incoming>SequenceFlow_1vuuuhr</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_1ea3pk8</bpmn:outgoing>
- <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def csi= new DoSendCommandToNSSMF()
-csi.getNSSIformlist(execution)</bpmn:script>
- </bpmn:scriptTask>
- <bpmn:exclusiveGateway id="ExclusiveGateway_18qkm4u" name="Activation completed?">
- <bpmn:incoming>SequenceFlow_1yjsv5s</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_1qxmooy</bpmn:outgoing>
- <bpmn:outgoing>SequenceFlow_1lh0it1</bpmn:outgoing>
- <bpmn:outgoing>SequenceFlow_0swcqw8</bpmn:outgoing>
- </bpmn:exclusiveGateway>
- <bpmn:exclusiveGateway id="ExclusiveGateway_07yenxg" name="Get successful?">
- <bpmn:incoming>SequenceFlow_1ea3pk8</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_080lgb0</bpmn:outgoing>
- <bpmn:outgoing>SequenceFlow_1oi86yc</bpmn:outgoing>
- </bpmn:exclusiveGateway>
- <bpmn:sequenceFlow id="SequenceFlow_1vuuuhr" sourceRef="ServiceTask_0myj742" targetRef="Task_0qx12sa" />
- <bpmn:sequenceFlow id="SequenceFlow_1oeexsj" sourceRef="Task_1a9qxuo" targetRef="ServiceTask_0myj742" />
- <bpmn:sequenceFlow id="SequenceFlow_1ea3pk8" sourceRef="Task_0qx12sa" targetRef="ExclusiveGateway_07yenxg" />
- <bpmn:sequenceFlow id="SequenceFlow_1yjsv5s" sourceRef="Task_1y09kt4" targetRef="ExclusiveGateway_18qkm4u" />
- <bpmn:sequenceFlow id="SequenceFlow_0swcqw8" name="waitting" sourceRef="ExclusiveGateway_18qkm4u" targetRef="Task_08qjojj">
- <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{execution.getVariable("isActivateSuccessfull") == "waitting"}</bpmn:conditionExpression>
- </bpmn:sequenceFlow>
- <bpmn:sequenceFlow id="SequenceFlow_1lh0it1" name="no" sourceRef="ExclusiveGateway_18qkm4u" targetRef="EndEvent_0k52g73">
- <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{execution.getVariable("isActivateSuccessfull") == "false"}</bpmn:conditionExpression>
- </bpmn:sequenceFlow>
- <bpmn:sequenceFlow id="SequenceFlow_1qxmooy" name="yes" sourceRef="ExclusiveGateway_18qkm4u" targetRef="Task_1a9qxuo">
- <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{execution.getVariable("isActivateSuccessfull") == "true"}</bpmn:conditionExpression>
- </bpmn:sequenceFlow>
- <bpmn:sequenceFlow id="SequenceFlow_080lgb0" name="yes" sourceRef="ExclusiveGateway_07yenxg" targetRef="CallActivity_0018jhc">
- <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{execution.getVariable("isGetSuccessfull") == "true"}</bpmn:conditionExpression>
- </bpmn:sequenceFlow>
- <bpmn:sequenceFlow id="SequenceFlow_08xfw41" sourceRef="Task_0xfp2r8" targetRef="ExclusiveGateway_0ljwjfh" />
- <bpmn:sequenceFlow id="SequenceFlow_1s2oozd" name="yes" sourceRef="ExclusiveGateway_0ljwjfh" targetRef="Task_08qjojj">
- <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{execution.getVariable("isNSSIActivated") == "true"}</bpmn:conditionExpression>
- </bpmn:sequenceFlow>
- <bpmn:sequenceFlow id="SequenceFlow_020xvv4" name="no" sourceRef="ExclusiveGateway_0ljwjfh" targetRef="EndEvent_0k52g73">
- <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{execution.getVariable("isNSSIActivated") == "false"}</bpmn:conditionExpression>
- </bpmn:sequenceFlow>
- <bpmn:sequenceFlow id="SequenceFlow_10162l8" sourceRef="Task_08qjojj" targetRef="Task_1y09kt4" />
- <bpmn:sequenceFlow id="SequenceFlow_1pfo460" sourceRef="StartEvent_1" targetRef="ScriptTask_1otgwej" />
- <bpmn:sequenceFlow id="SequenceFlow_1oi86yc" name="no" sourceRef="ExclusiveGateway_07yenxg" targetRef="EndEvent_0d1g3mv">
- <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{execution.getVariable("isGetSuccessfull") == "false"}</bpmn:conditionExpression>
- </bpmn:sequenceFlow>
- <bpmn:endEvent id="EndEvent_0d1g3mv">
- <bpmn:incoming>SequenceFlow_1oi86yc</bpmn:incoming>
- </bpmn:endEvent>
- <bpmn:startEvent id="StartEvent_1">
- <bpmn:outgoing>SequenceFlow_1pfo460</bpmn:outgoing>
- </bpmn:startEvent>
- <bpmn:scriptTask id="ScriptTask_1otgwej" name="Preprocess Request" scriptFormat="groovy">
- <bpmn:incoming>SequenceFlow_1pfo460</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_0umnozs</bpmn:outgoing>
- <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dcso = new DoSendCommandToNSSMF()
-dcso.preProcessRequest(execution)</bpmn:script>
- </bpmn:scriptTask>
- <bpmn:subProcess id="SubProcess_0iljxjd" name="sub process for fallouthandler and rollback" triggeredByEvent="true">
- <bpmn:startEvent id="StartEvent_0hmwdqq">
- <bpmn:outgoing>SequenceFlow_0oiiwjo</bpmn:outgoing>
- <bpmn:errorEventDefinition id="ErrorEventDefinition_1il80ww" />
- </bpmn:startEvent>
- <bpmn:endEvent id="EndEvent_1wd8iqk">
- <bpmn:incoming>SequenceFlow_0uckyao</bpmn:incoming>
- </bpmn:endEvent>
- <bpmn:sequenceFlow id="SequenceFlow_0oiiwjo" sourceRef="StartEvent_0hmwdqq" targetRef="Task_01ooik6" />
- <bpmn:sequenceFlow id="SequenceFlow_0uckyao" sourceRef="Task_01ooik6" targetRef="EndEvent_1wd8iqk" />
- <bpmn:scriptTask id="Task_01ooik6" name="Send Error Response" scriptFormat="groovy">
- <bpmn:incoming>SequenceFlow_0oiiwjo</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_0uckyao</bpmn:outgoing>
- <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def csi= new DoSendCommandToNSSMF()
-csi.sendSyncError(execution)</bpmn:script>
- </bpmn:scriptTask>
- </bpmn:subProcess>
- <bpmn:sequenceFlow id="SequenceFlow_0umnozs" sourceRef="ScriptTask_1otgwej" targetRef="Task_0qx12sa" />
- <bpmn:sequenceFlow id="SequenceFlow_1ucjcm1" sourceRef="CallActivity_0018jhc" targetRef="ScriptTask_0q7is68" />
- <bpmn:endEvent id="EndEvent_0k52g73">
- <bpmn:incoming>SequenceFlow_020xvv4</bpmn:incoming>
- <bpmn:incoming>SequenceFlow_1lh0it1</bpmn:incoming>
- <bpmn:errorEventDefinition id="ErrorEventDefinition_0fypnen" errorRef="Error_08p7hsc" />
- </bpmn:endEvent>
- <bpmn:scriptTask id="Task_08qjojj" name="wait for Return" scriptFormat="groovy">
- <bpmn:incoming>SequenceFlow_1s2oozd</bpmn:incoming>
- <bpmn:incoming>SequenceFlow_0swcqw8</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_10162l8</bpmn:outgoing>
- <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def csi= new DoSendCommandToNSSMF()
-csi.WaitForReturn(execution)</bpmn:script>
- </bpmn:scriptTask>
- <bpmn:scriptTask id="Task_1y09kt4" name="Get the activation status" scriptFormat="groovy">
- <bpmn:incoming>SequenceFlow_10162l8</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_1yjsv5s</bpmn:outgoing>
- <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def csi= new DoSendCommandToNSSMF()
-csi.GetTheStatusOfActivation(execution)</bpmn:script>
- </bpmn:scriptTask>
- <bpmn:exclusiveGateway id="ExclusiveGateway_0ljwjfh" name="Activation successful?">
- <bpmn:incoming>SequenceFlow_08xfw41</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_1s2oozd</bpmn:outgoing>
- <bpmn:outgoing>SequenceFlow_020xvv4</bpmn:outgoing>
- </bpmn:exclusiveGateway>
- <bpmn:scriptTask id="Task_0xfp2r8" name="SendCommandToNssmf" scriptFormat="groovy">
- <bpmn:incoming>SequenceFlow_1a6iu8c</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_08xfw41</bpmn:outgoing>
- <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def csi= new DoSendCommandToNSSMF()
-csi.SendCommandToNssmf(execution)</bpmn:script>
- </bpmn:scriptTask>
- <bpmn:callActivity id="CallActivity_0018jhc" name="Call Decompose Service" calledElement="DecomposeService">
- <bpmn:extensionElements>
- <camunda:in source="msoRequestId" target="msoRequestId" />
- <camunda:in source="nssiId" target="serviceInstanceId" />
- <camunda:in source="serviceModelInfo" target="serviceModelInfo" />
- <camunda:out source="serviceDecomposition" target="serviceDecomposition" />
- <camunda:out source="serviceDecompositionString" target="serviceDecompositionString" />
- </bpmn:extensionElements>
- <bpmn:incoming>SequenceFlow_080lgb0</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_1ucjcm1</bpmn:outgoing>
- </bpmn:callActivity>
- <bpmn:scriptTask id="ScriptTask_0q7is68" name="processDecomposition" scriptFormat="groovy">
- <bpmn:incoming>SequenceFlow_1ucjcm1</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_1a6iu8c</bpmn:outgoing>
- <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def csi= new DoSendCommandToNSSMF()
-csi.processDecomposition(execution)</bpmn:script>
- </bpmn:scriptTask>
- <bpmn:sequenceFlow id="SequenceFlow_1a6iu8c" sourceRef="ScriptTask_0q7is68" targetRef="Task_0xfp2r8" />
- <bpmn:serviceTask id="ServiceTask_0myj742" name="Update Service Operation Status">
- <bpmn:extensionElements>
- <camunda:connector>
- <camunda:inputOutput>
- <camunda:inputParameter name="url">${CVFMI_dbAdapterEndpoint}</camunda:inputParameter>
- <camunda:inputParameter name="headers">
- <camunda:map>
- <camunda:entry key="content-type">application/soap+xml</camunda:entry>
- <camunda:entry key="Authorization">Basic YnBlbDpwYXNzd29yZDEk</camunda:entry>
- </camunda:map>
- </camunda:inputParameter>
- <camunda:inputParameter name="payload">${CVFMI_updateServiceOperStatusRequest}</camunda:inputParameter>
- <camunda:inputParameter name="method">POST</camunda:inputParameter>
- <camunda:outputParameter name="CVFMI_dbResponseCode">${statusCode}</camunda:outputParameter>
- <camunda:outputParameter name="CVFMI_dbResponse">${response}</camunda:outputParameter>
- </camunda:inputOutput>
- <camunda:connectorId>http-connector</camunda:connectorId>
- </camunda:connector>
- </bpmn:extensionElements>
- <bpmn:incoming>SequenceFlow_1oeexsj</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_1vuuuhr</bpmn:outgoing>
- </bpmn:serviceTask>
- <bpmn:scriptTask id="Task_1a9qxuo" name="Update Index" scriptFormat="groovy">
- <bpmn:incoming>SequenceFlow_1qxmooy</bpmn:incoming>
- <bpmn:outgoing>SequenceFlow_1oeexsj</bpmn:outgoing>
- <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def csi= new DoSendCommandToNSSMF()
-csi.UpdateIndex(execution)</bpmn:script>
- </bpmn:scriptTask>
- </bpmn:process>
- <bpmn:error id="Error_08p7hsc" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
- <bpmndi:BPMNDiagram id="BPMNDiagram_1">
- <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Collaboration_0htncd8">
- <bpmndi:BPMNShape id="Participant_1x12pgg_di" bpmnElement="DoSendCommandToNSSMF01" isHorizontal="true">
- <dc:Bounds x="160" y="60" width="2080" height="1000" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="EndEvent_0d1g3mv_di" bpmnElement="EndEvent_0d1g3mv">
- <dc:Bounds x="1642" y="302" width="36" height="36" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
- <dc:Bounds x="262" y="302" width="36" height="36" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNEdge id="SequenceFlow_0uckyao_di" bpmnElement="SequenceFlow_0uckyao">
- <di:waypoint x="1120" y="860" />
- <di:waypoint x="1257" y="860" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_0oiiwjo_di" bpmnElement="SequenceFlow_0oiiwjo">
- <di:waypoint x="843" y="860" />
- <di:waypoint x="1020" y="860" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNShape id="StartEvent_0hmwdqq_di" bpmnElement="StartEvent_0hmwdqq">
- <dc:Bounds x="807" y="842" width="36" height="36" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="EndEvent_1wd8iqk_di" bpmnElement="EndEvent_1wd8iqk">
- <dc:Bounds x="1257" y="842" width="36" height="36" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="ScriptTask_0s82iw4_di" bpmnElement="Task_0xfp2r8">
- <dc:Bounds x="1230" y="280" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="ExclusiveGateway_18qkm4u_di" bpmnElement="ExclusiveGateway_18qkm4u" isMarkerVisible="true">
- <dc:Bounds x="835" y="595" width="50" height="50" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="832" y="558" width="55" height="27" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNShape>
- <bpmndi:BPMNEdge id="SequenceFlow_1ea3pk8_di" bpmnElement="SequenceFlow_1ea3pk8">
- <di:waypoint x="770" y="320" />
- <di:waypoint x="815" y="320" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_08xfw41_di" bpmnElement="SequenceFlow_08xfw41">
- <di:waypoint x="1330" y="320" />
- <di:waypoint x="1415" y="320" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_1yjsv5s_di" bpmnElement="SequenceFlow_1yjsv5s">
- <di:waypoint x="1390" y="620" />
- <di:waypoint x="885" y="620" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNShape id="ExclusiveGateway_0ljwjfh_di" bpmnElement="ExclusiveGateway_0ljwjfh" isMarkerVisible="true">
- <dc:Bounds x="1415" y="295" width="50" height="50" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="1412" y="265" width="60" height="27" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNShape>
- <bpmndi:BPMNEdge id="SequenceFlow_1s2oozd_di" bpmnElement="SequenceFlow_1s2oozd">
- <di:waypoint x="1440" y="345" />
- <di:waypoint x="1440" y="420" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="1451" y="373" width="18" height="14" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNShape id="EndEvent_0k52g73_di" bpmnElement="EndEvent_0k52g73">
- <dc:Bounds x="1532" y="302" width="36" height="36" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNEdge id="SequenceFlow_020xvv4_di" bpmnElement="SequenceFlow_020xvv4">
- <di:waypoint x="1465" y="320" />
- <di:waypoint x="1532" y="320" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="1494" y="302" width="12" height="14" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNShape id="ScriptTask_121jfnq_di" bpmnElement="Task_0qx12sa">
- <dc:Bounds x="670" y="280" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="ExclusiveGateway_07yenxg_di" bpmnElement="ExclusiveGateway_07yenxg" isMarkerVisible="true">
- <dc:Bounds x="815" y="295" width="50" height="50" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="800" y="353" width="80" height="14" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNShape>
- <bpmndi:BPMNEdge id="SequenceFlow_080lgb0_di" bpmnElement="SequenceFlow_080lgb0">
- <di:waypoint x="865" y="320" />
- <di:waypoint x="930" y="320" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="869" y="302" width="18" height="14" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_10162l8_di" bpmnElement="SequenceFlow_10162l8">
- <di:waypoint x="1440" y="500" />
- <di:waypoint x="1440" y="580" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_1qxmooy_di" bpmnElement="SequenceFlow_1qxmooy">
- <di:waypoint x="835" y="620" />
- <di:waypoint x="770" y="620" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="813" y="623" width="18" height="14" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNShape id="ScriptTask_0aspjme_di" bpmnElement="Task_1a9qxuo">
- <dc:Bounds x="670" y="580" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="ScriptTask_170g0ll_di" bpmnElement="Task_08qjojj">
- <dc:Bounds x="1390" y="420" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="ScriptTask_1meh39q_di" bpmnElement="Task_1y09kt4">
- <dc:Bounds x="1390" y="580" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNEdge id="SequenceFlow_1lh0it1_di" bpmnElement="SequenceFlow_1lh0it1">
- <di:waypoint x="860" y="645" />
- <di:waypoint x="860" y="720" />
- <di:waypoint x="1550" y="720" />
- <di:waypoint x="1550" y="338" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="1110" y="702" width="12" height="14" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_0swcqw8_di" bpmnElement="SequenceFlow_0swcqw8">
- <di:waypoint x="860" y="595" />
- <di:waypoint x="860" y="460" />
- <di:waypoint x="1390" y="460" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="1067" y="443" width="38" height="14" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_1oeexsj_di" bpmnElement="SequenceFlow_1oeexsj">
- <di:waypoint x="720" y="580" />
- <di:waypoint x="720" y="520" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNShape id="ServiceTask_0myj742_di" bpmnElement="ServiceTask_0myj742">
- <dc:Bounds x="670" y="440" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNEdge id="SequenceFlow_1vuuuhr_di" bpmnElement="SequenceFlow_1vuuuhr">
- <di:waypoint x="720" y="440" />
- <di:waypoint x="720" y="360" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_1pfo460_di" bpmnElement="SequenceFlow_1pfo460">
- <di:waypoint x="298" y="320" />
- <di:waypoint x="420" y="320" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="SequenceFlow_1oi86yc_di" bpmnElement="SequenceFlow_1oi86yc">
- <di:waypoint x="840" y="295" />
- <di:waypoint x="840" y="230" />
- <di:waypoint x="1660" y="230" />
- <di:waypoint x="1660" y="302" />
- <bpmndi:BPMNLabel>
- <dc:Bounds x="884" y="212" width="12" height="14" />
- </bpmndi:BPMNLabel>
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNShape id="ScriptTask_1otgwej_di" bpmnElement="ScriptTask_1otgwej">
- <dc:Bounds x="420" y="280" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="SubProcess_1hlwd77_di" bpmnElement="SubProcess_0iljxjd" isExpanded="true">
- <dc:Bounds x="700" y="780" width="810" height="180" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="ScriptTask_1c5l0io_di" bpmnElement="Task_01ooik6">
- <dc:Bounds x="1020" y="820" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNEdge id="SequenceFlow_0umnozs_di" bpmnElement="SequenceFlow_0umnozs">
- <di:waypoint x="520" y="320" />
- <di:waypoint x="670" y="320" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNShape id="CallActivity_0018jhc_di" bpmnElement="CallActivity_0018jhc">
- <dc:Bounds x="930" y="280" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNEdge id="SequenceFlow_1ucjcm1_di" bpmnElement="SequenceFlow_1ucjcm1">
- <di:waypoint x="1030" y="320" />
- <di:waypoint x="1070" y="320" />
- </bpmndi:BPMNEdge>
- <bpmndi:BPMNShape id="ScriptTask_0q7is68_di" bpmnElement="ScriptTask_0q7is68">
- <dc:Bounds x="1070" y="280" width="100" height="80" />
- </bpmndi:BPMNShape>
- <bpmndi:BPMNEdge id="SequenceFlow_1a6iu8c_di" bpmnElement="SequenceFlow_1a6iu8c">
- <di:waypoint x="1170" y="320" />
- <di:waypoint x="1230" y="320" />
- </bpmndi:BPMNEdge>
- </bpmndi:BPMNPlane>
- </bpmndi:BPMNDiagram>
-</bpmn:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/test/java/org/onap/so/bpmn/infrastructure/process/ServiceLevelUpgradeTest.java b/bpmn/so-bpmn-infrastructure-flows/src/test/java/org/onap/so/bpmn/infrastructure/process/ServiceLevelUpgradeTest.java
index 4322ff5bdf..7da3a2c81b 100644
--- a/bpmn/so-bpmn-infrastructure-flows/src/test/java/org/onap/so/bpmn/infrastructure/process/ServiceLevelUpgradeTest.java
+++ b/bpmn/so-bpmn-infrastructure-flows/src/test/java/org/onap/so/bpmn/infrastructure/process/ServiceLevelUpgradeTest.java
@@ -145,7 +145,7 @@ public class ServiceLevelUpgradeTest extends BaseBPMNTest {
assertThat(pi).isEnded().hasPassedInOrder("Event_02mc8tr", "Activity_18vue7u", "Activity_09bqns0",
"Activity_02vp5np", "Activity_0n17xou", "Gateway_1nr51kr", "Activity_0snmatn", "Activity_0e6w886",
"Activity_1q4o9fx", "Gateway_02fectw", "Activity_1hp67qz", "Gateway_18ch73t", "Activity_0ft7fa2",
- "Gateway_1vq11i7", "Activity_1n4rk7m", "Activity_1lz38px", "Event_12983th");
+ "Gateway_1vq11i7", "Activity_0o2rrag", "Activity_1n4rk7m", "Activity_1lz38px", "Event_12983th");
List<ExecutionServiceInput> detailedMessages = grpcNettyServer.getDetailedMessages();
assertThat(detailedMessages.size() == 5);
@@ -205,7 +205,7 @@ public class ServiceLevelUpgradeTest extends BaseBPMNTest {
private void mockAai() {
final String sIUrl =
- "/business/customers/customer/5df8b6de-2083-11e7-93ae-92361f002676/service-subscriptions/service-subscription/pNF/service-instances/service-instance/ETE_Customer_807c7a02-249c-4db8-9fa9-bee973fe08ce";
+ "/business/customers/customer/ETE_Customer_807c7a02-249c-4db8-9fa9-bee973fe08ce/service-subscriptions/service-subscription/pNF/service-instances/service-instance/5df8b6de-2083-11e7-93ae-92361f002676";
final String aaiPnfDemoEntry = FileUtil.readResourceFile("response/PnfDemo_aai.json");
final String aaiPnfDemo1Entry = FileUtil.readResourceFile("response/PnfDemo1_aai.json");
final String aaiServiceInstanceEntry = FileUtil.readResourceFile("response/Service_instance_aai.json");
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ExecuteBuildingBlockBuilder.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ExecuteBuildingBlockBuilder.java
new file mode 100644
index 0000000000..b8699838e2
--- /dev/null
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ExecuteBuildingBlockBuilder.java
@@ -0,0 +1,217 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ================================================================================
+ * Modifications Copyright (c) 2021 Nokia
+ * ================================================================================
+ * Modifications Copyright (c) 2020 Tech Mahindra
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.bpmn.infrastructure.workflow.tasks;
+
+import org.onap.so.bpmn.servicedecomposition.entities.BuildingBlock;
+import org.onap.so.bpmn.servicedecomposition.entities.ConfigurationResourceKeys;
+import org.onap.so.bpmn.servicedecomposition.entities.ExecuteBuildingBlock;
+import org.onap.so.bpmn.servicedecomposition.entities.WorkflowResourceIds;
+import org.onap.so.db.catalog.beans.macro.OrchestrationFlow;
+import org.onap.so.serviceinstancebeans.RequestDetails;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Optional;
+import java.util.UUID;
+import java.util.stream.Collectors;
+import static org.onap.so.bpmn.infrastructure.workflow.tasks.WorkflowActionConstants.ASSIGNINSTANCE;
+import static org.onap.so.bpmn.infrastructure.workflow.tasks.WorkflowActionConstants.CONFIGURATION;
+import static org.onap.so.bpmn.infrastructure.workflow.tasks.WorkflowActionConstants.CONTROLLER;
+import static org.onap.so.bpmn.infrastructure.workflow.tasks.WorkflowActionConstants.CREATE_INSTANCE;
+import static org.onap.so.bpmn.infrastructure.workflow.tasks.WorkflowActionConstants.NETWORKCOLLECTION;
+import static org.onap.so.bpmn.infrastructure.workflow.tasks.WorkflowActionConstants.REPLACEINSTANCE;
+import static org.onap.so.bpmn.infrastructure.workflow.tasks.WorkflowActionConstants.REPLACEINSTANCERETAINASSIGNMENTS;
+import static org.onap.so.bpmn.infrastructure.workflow.tasks.WorkflowActionConstants.SERVICE;
+import static org.onap.so.bpmn.infrastructure.workflow.tasks.WorkflowActionConstants.VOLUMEGROUP;
+
+@Component
+public class ExecuteBuildingBlockBuilder {
+
+ private static final Logger logger = LoggerFactory.getLogger(ExecuteBuildingBlockBuilder.class);
+
+ private static final String VNF = "Vnf";
+ private static final String PNF = "Pnf";
+ private static final String VFMODULE = "VfModule";
+ private static final String NETWORK = "Network";
+
+ protected List<ExecuteBuildingBlock> buildExecuteBuildingBlockList(List<OrchestrationFlow> orchFlows,
+ List<Resource> resourceList, String requestId, String apiVersion, String resourceId, String requestAction,
+ String vnfType, WorkflowResourceIds workflowResourceIds, RequestDetails requestDetails,
+ boolean replaceVnf) {
+ List<ExecuteBuildingBlock> flowsToExecute = new ArrayList<>();
+ for (OrchestrationFlow orchFlow : orchFlows) {
+ if (orchFlow.getFlowName().contains(SERVICE)) {
+ if (!replaceVnf) {
+ workflowResourceIds.setServiceInstanceId(resourceId);
+ }
+ addBuildingBlockToExecuteBBList(flowsToExecute, resourceList, WorkflowType.SERVICE, orchFlow, requestId,
+ apiVersion, resourceId, requestAction, vnfType, workflowResourceIds, requestDetails, false,
+ false);
+ } else if (orchFlow.getFlowName().contains(VNF) || (orchFlow.getFlowName().contains(CONTROLLER)
+ && (VNF).equalsIgnoreCase(orchFlow.getBpmnScope()))) {
+ addBuildingBlockToExecuteBBList(flowsToExecute, resourceList, WorkflowType.VNF, orchFlow, requestId,
+ apiVersion, resourceId, requestAction, vnfType, workflowResourceIds, requestDetails, false,
+ false);
+ } else if (orchFlow.getFlowName().contains(PNF) || (orchFlow.getFlowName().contains(CONTROLLER)
+ && (PNF).equalsIgnoreCase(orchFlow.getBpmnScope()))) {
+ addBuildingBlockToExecuteBBList(flowsToExecute, resourceList, WorkflowType.PNF, orchFlow, requestId,
+ apiVersion, resourceId, requestAction, vnfType, workflowResourceIds, requestDetails, false,
+ false);
+ } else if (orchFlow.getFlowName().contains(NETWORK)
+ && !orchFlow.getFlowName().contains(NETWORKCOLLECTION)) {
+ addBuildingBlockToExecuteBBList(flowsToExecute, resourceList, WorkflowType.NETWORK, orchFlow, requestId,
+ apiVersion, resourceId, requestAction, vnfType, workflowResourceIds, requestDetails, false,
+ false);
+ addBuildingBlockToExecuteBBList(flowsToExecute, resourceList, WorkflowType.VIRTUAL_LINK, orchFlow,
+ requestId, apiVersion, resourceId, requestAction, vnfType, workflowResourceIds, requestDetails,
+ true, false);
+ } else if (orchFlow.getFlowName().contains(VFMODULE) || (orchFlow.getFlowName().contains(CONTROLLER)
+ && (VFMODULE).equalsIgnoreCase(orchFlow.getBpmnScope()))) {
+ List<Resource> vfModuleResourcesSorted;
+ if (requestAction.equals(CREATE_INSTANCE) || requestAction.equals(ASSIGNINSTANCE)
+ || requestAction.equals("activateInstance")) {
+ vfModuleResourcesSorted = sortVfModulesByBaseFirst(resourceList.stream()
+ .filter(x -> WorkflowType.VFMODULE == x.getResourceType()).collect(Collectors.toList()));
+ } else {
+ vfModuleResourcesSorted = sortVfModulesByBaseLast(resourceList.stream()
+ .filter(x -> WorkflowType.VFMODULE == x.getResourceType()).collect(Collectors.toList()));
+ }
+ for (Resource resource : vfModuleResourcesSorted) {
+ flowsToExecute.add(buildExecuteBuildingBlock(orchFlow, requestId, resource, apiVersion, resourceId,
+ requestAction, false, vnfType, workflowResourceIds, requestDetails, false, null, null,
+ false, null));
+ }
+ } else if (orchFlow.getFlowName().contains(VOLUMEGROUP)) {
+ if (requestAction.equalsIgnoreCase(REPLACEINSTANCE)
+ || requestAction.equalsIgnoreCase(REPLACEINSTANCERETAINASSIGNMENTS)) {
+ logger.debug("Replacing workflow resource id by volume group id");
+ resourceId = workflowResourceIds.getVolumeGroupId();
+ }
+ addBuildingBlockToExecuteBBList(flowsToExecute, resourceList, WorkflowType.VOLUMEGROUP, orchFlow,
+ requestId, apiVersion, resourceId, requestAction, vnfType, workflowResourceIds, requestDetails,
+ false, false);
+ } else if (orchFlow.getFlowName().contains(NETWORKCOLLECTION)) {
+ addBuildingBlockToExecuteBBList(flowsToExecute, resourceList, WorkflowType.NETWORKCOLLECTION, orchFlow,
+ requestId, apiVersion, resourceId, requestAction, vnfType, workflowResourceIds, requestDetails,
+ false, false);
+ } else if (orchFlow.getFlowName().contains(CONFIGURATION)) {
+ addBuildingBlockToExecuteBBList(flowsToExecute, resourceList, WorkflowType.CONFIGURATION, orchFlow,
+ requestId, apiVersion, resourceId, requestAction, vnfType, workflowResourceIds, requestDetails,
+ false, true);
+ } else {
+ flowsToExecute
+ .add(buildExecuteBuildingBlock(orchFlow, requestId, null, apiVersion, resourceId, requestAction,
+ false, vnfType, workflowResourceIds, requestDetails, false, null, null, false, null));
+ }
+ }
+ return flowsToExecute;
+ }
+
+ protected ExecuteBuildingBlock buildExecuteBuildingBlock(OrchestrationFlow orchFlow, String requestId,
+ Resource resource, String apiVersion, String resourceId, String requestAction, boolean aLaCarte,
+ String vnfType, WorkflowResourceIds workflowResourceIds, RequestDetails requestDetails,
+ boolean isVirtualLink, String virtualLinkKey, String vnfcName, boolean isConfiguration,
+ ReplaceInstanceRelatedInformation replaceInfo) {
+
+ BuildingBlock buildingBlock =
+ new BuildingBlock().setBpmnFlowName(orchFlow.getFlowName()).setMsoId(UUID.randomUUID().toString())
+ .setIsVirtualLink(isVirtualLink).setVirtualLinkKey(virtualLinkKey)
+ .setKey(Optional.ofNullable(resource).map(Resource::getResourceId).orElse(""));
+ Optional.ofNullable(orchFlow.getBpmnAction()).ifPresent(buildingBlock::setBpmnAction);
+ Optional.ofNullable(orchFlow.getBpmnScope()).ifPresent(buildingBlock::setBpmnScope);
+ String oldVolumeGroupName = "";
+ if (replaceInfo != null) {
+ oldVolumeGroupName = replaceInfo.getOldVolumeGroupName();
+ }
+ if (resource != null
+ && (orchFlow.getFlowName().contains(VOLUMEGROUP) && (requestAction.equalsIgnoreCase(REPLACEINSTANCE)
+ || requestAction.equalsIgnoreCase(REPLACEINSTANCERETAINASSIGNMENTS)))) {
+ logger.debug("Setting resourceId to volume group id for volume group flow on replace");
+ resourceId = workflowResourceIds.getVolumeGroupId();
+ }
+
+ ExecuteBuildingBlock executeBuildingBlock = new ExecuteBuildingBlock().setApiVersion(apiVersion)
+ .setaLaCarte(aLaCarte).setRequestAction(requestAction).setResourceId(resourceId).setVnfType(vnfType)
+ .setWorkflowResourceIds(workflowResourceIds).setRequestId(requestId).setBuildingBlock(buildingBlock)
+ .setRequestDetails(requestDetails).setOldVolumeGroupName(oldVolumeGroupName);
+
+ if (resource != null && (isConfiguration || resource.getResourceType().equals(WorkflowType.CONFIGURATION))) {
+ ConfigurationResourceKeys configurationResourceKeys = getConfigurationResourceKeys(resource, vnfcName);
+ executeBuildingBlock.setConfigurationResourceKeys(configurationResourceKeys);
+ }
+ return executeBuildingBlock;
+ }
+
+ protected List<Resource> sortVfModulesByBaseFirst(List<Resource> vfModuleResources) {
+ int count = 0;
+ for (Resource resource : vfModuleResources) {
+ if (resource.isBaseVfModule()) {
+ Collections.swap(vfModuleResources, 0, count);
+ break;
+ }
+ count++;
+ }
+ return vfModuleResources;
+ }
+
+ protected List<Resource> sortVfModulesByBaseLast(List<Resource> vfModuleResources) {
+ int count = 0;
+ for (Resource resource : vfModuleResources) {
+ if (resource.isBaseVfModule()) {
+ Collections.swap(vfModuleResources, vfModuleResources.size() - 1, count);
+ break;
+ }
+ count++;
+ }
+ return vfModuleResources;
+ }
+
+ private void addBuildingBlockToExecuteBBList(List<ExecuteBuildingBlock> flowsToExecute, List<Resource> resourceList,
+ WorkflowType workflowType, OrchestrationFlow orchFlow, String requestId, String apiVersion,
+ String resourceId, String requestAction, String vnfType, WorkflowResourceIds workflowResourceIds,
+ RequestDetails requestDetails, boolean isVirtualLink, boolean isConfiguration) {
+
+ resourceList.stream().filter(resource -> resource.getResourceType().equals(workflowType))
+ .forEach(resource -> flowsToExecute.add(buildExecuteBuildingBlock(orchFlow, requestId, resource,
+ apiVersion, resourceId, requestAction, false, vnfType, workflowResourceIds, requestDetails,
+ isVirtualLink, resource.getVirtualLinkKey(), null, isConfiguration, null)));
+ }
+
+ private ConfigurationResourceKeys getConfigurationResourceKeys(Resource resource, String vnfcName) {
+ ConfigurationResourceKeys configurationResourceKeys = new ConfigurationResourceKeys();
+ Optional.ofNullable(vnfcName).ifPresent(configurationResourceKeys::setVnfcName);
+ configurationResourceKeys.setCvnfcCustomizationUUID(resource.getCvnfModuleCustomizationId());
+ configurationResourceKeys.setVfModuleCustomizationUUID(resource.getVfModuleCustomizationId());
+ configurationResourceKeys.setVnfResourceCustomizationUUID(resource.getVnfCustomizationId());
+ return configurationResourceKeys;
+ }
+
+
+}
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowAction.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowAction.java
index 7821463acd..aad8b51a48 100644
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowAction.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowAction.java
@@ -6,7 +6,7 @@
* ================================================================================
* Modifications Copyright (c) 2019 Samsung
* ================================================================================
- * Modifications Copyright (c) 2020 Nokia
+ * Modifications Copyright (c) 2021 Nokia
* ================================================================================
* Modifications Copyright (c) 2020 Tech Mahindra
* ================================================================================
@@ -48,7 +48,6 @@ import org.onap.so.bpmn.common.BBConstants;
import org.onap.so.bpmn.infrastructure.workflow.tasks.utils.WorkflowResourceIdsUtils;
import org.onap.so.bpmn.servicedecomposition.bbobjects.Configuration;
import org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule;
-import org.onap.so.bpmn.servicedecomposition.entities.BuildingBlock;
import org.onap.so.bpmn.servicedecomposition.entities.ConfigurationResourceKeys;
import org.onap.so.bpmn.servicedecomposition.entities.ExecuteBuildingBlock;
import org.onap.so.bpmn.servicedecomposition.entities.WorkflowResourceIds;
@@ -80,7 +79,6 @@ import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
@@ -89,40 +87,36 @@ import java.util.UUID;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
+import static org.onap.so.bpmn.infrastructure.workflow.tasks.WorkflowActionConstants.ASSIGNINSTANCE;
+import static org.onap.so.bpmn.infrastructure.workflow.tasks.WorkflowActionConstants.CONTROLLER;
import static org.onap.so.bpmn.infrastructure.workflow.tasks.WorkflowActionConstants.CREATE_INSTANCE;
import static org.onap.so.bpmn.infrastructure.workflow.tasks.WorkflowActionConstants.FABRIC_CONFIGURATION;
+import static org.onap.so.bpmn.infrastructure.workflow.tasks.WorkflowActionConstants.NETWORKCOLLECTION;
+import static org.onap.so.bpmn.infrastructure.workflow.tasks.WorkflowActionConstants.REPLACEINSTANCE;
+import static org.onap.so.bpmn.infrastructure.workflow.tasks.WorkflowActionConstants.REPLACEINSTANCERETAINASSIGNMENTS;
+import static org.onap.so.bpmn.infrastructure.workflow.tasks.WorkflowActionConstants.SERVICE;
import static org.onap.so.bpmn.infrastructure.workflow.tasks.WorkflowActionConstants.USER_PARAM_SERVICE;
import static org.onap.so.bpmn.infrastructure.workflow.tasks.WorkflowActionConstants.WORKFLOW_ACTION_ERROR_MESSAGE;
@Component
public class WorkflowAction {
+ private static final Logger logger = LoggerFactory.getLogger(WorkflowAction.class);
+
private static final String SERVICE_INSTANCES = "serviceInstances";
private static final String VF_MODULES = "vfModules";
private static final String VNF_TYPE = "vnfType";
- private static final String SERVICE = "Service";
- private static final String VNF = "Vnf";
- private static final String PNF = "Pnf";
- private static final String VFMODULE = "VfModule";
- private static final String VOLUMEGROUP = "VolumeGroup";
- private static final String NETWORK = "Network";
- private static final String NETWORKCOLLECTION = "NetworkCollection";
private static final String CONFIGURATION = "Configuration";
- private static final String ASSIGNINSTANCE = "assignInstance";
- private static final String REPLACEINSTANCE = "replaceInstance";
- private static final String REPLACEINSTANCERETAINASSIGNMENTS = "replaceInstanceRetainAssignments";
private static final String SUPPORTEDTYPES =
"vnfs|vfModules|networks|networkCollections|volumeGroups|serviceInstances|instanceGroups";
private static final String HOMINGSOLUTION = "Homing_Solution";
private static final String SERVICE_TYPE_TRANSPORT = "TRANSPORT";
private static final String SERVICE_TYPE_BONDING = "BONDING";
private static final String CLOUD_OWNER = "DEFAULT";
- private static final Logger logger = LoggerFactory.getLogger(WorkflowAction.class);
private static final String CREATENETWORKBB = "CreateNetworkBB";
private static final String ACTIVATENETWORKBB = "ActivateNetworkBB";
private static final String VOLUMEGROUP_DELETE_PATTERN = "(Un|De)(.*)Volume(.*)";
private static final String VOLUMEGROUP_CREATE_PATTERN = "(A|C)(.*)Volume(.*)";
- private static final String CONTROLLER = "Controller";
private static final String DEFAULT_CLOUD_OWNER = "org.onap.so.cloud-owner";
private static final String HOMING = "homing";
@@ -146,6 +140,8 @@ public class WorkflowAction {
private UserParamsServiceTraversal userParamsServiceTraversal;
@Autowired
private AaiResourceIdValidator aaiResourceIdValidator;
+ @Autowired
+ private ExecuteBuildingBlockBuilder executeBuildingBlockBuilder;
public void setBbInputSetupUtils(BBInputSetupUtils bbInputSetupUtils) {
this.bbInputSetupUtils = bbInputSetupUtils;
@@ -227,9 +223,9 @@ public class WorkflowAction {
.collect(Collectors.toList());
for (OrchestrationFlow orchFlow : orchFlows) {
- ExecuteBuildingBlock ebb = buildExecuteBuildingBlock(orchFlow, requestId, resourceKey,
- apiVersion, resourceId, requestAction, true, vnfType, workflowResourceIds,
- requestDetails, false, null, null, false, replaceInfo);
+ ExecuteBuildingBlock ebb = executeBuildingBlockBuilder.buildExecuteBuildingBlock(orchFlow,
+ requestId, resourceKey, apiVersion, resourceId, requestAction, true, vnfType,
+ workflowResourceIds, requestDetails, false, null, null, false, replaceInfo);
flowsToExecute.add(ebb);
}
}
@@ -311,8 +307,9 @@ public class WorkflowAction {
|| REPLACEINSTANCERETAINASSIGNMENTS.equalsIgnoreCase(requestAction))) {
vnfReplace = true;
}
- flowsToExecute = buildExecuteBuildingBlockList(orchFlows, resourceList, requestId, apiVersion,
- resourceId, requestAction, vnfType, workflowResourceIds, requestDetails, vnfReplace);
+ flowsToExecute = executeBuildingBlockBuilder.buildExecuteBuildingBlockList(orchFlows, resourceList,
+ requestId, apiVersion, resourceId, requestAction, vnfType, workflowResourceIds,
+ requestDetails, vnfReplace);
if (isNetworkCollectionInTheResourceList(resourceList)) {
logger.info("Sorting for Vlan Tagging");
flowsToExecute = sortExecutionPathByObjectForVlanTagging(flowsToExecute, requestAction);
@@ -427,9 +424,9 @@ public class WorkflowAction {
requestDetails, requestAction, resourceId, flowsToExecute, vnfType, apiVersion, resourceKey,
replaceInfo, configOrchFlows);
} else {
- ExecuteBuildingBlock ebb = buildExecuteBuildingBlock(orchFlow, requestId, resourceKey, apiVersion,
- resourceId, requestAction, true, vnfType, workflowResourceIds, requestDetails, false, null,
- null, false, replaceInfo);
+ ExecuteBuildingBlock ebb = executeBuildingBlockBuilder.buildExecuteBuildingBlock(orchFlow, requestId,
+ resourceKey, apiVersion, resourceId, requestAction, true, vnfType, workflowResourceIds,
+ requestDetails, false, null, null, false, replaceInfo);
flowsToExecute.add(ebb);
}
}
@@ -597,10 +594,11 @@ public class WorkflowAction {
+ ": VnfcName does not exist or is null while there is a configuration for the vfModule",
new Exception("Vnfc and Configuration do not match"));
}
- ExecuteBuildingBlock ebb = buildExecuteBuildingBlock(orchFlow, dataObj.getRequestId(),
- dataObj.getResourceKey(), dataObj.getApiVersion(), dataObj.getResourceId(),
- dataObj.getRequestAction(), dataObj.isaLaCarte(), dataObj.getVnfType(), workflowIdsCopy,
- dataObj.getRequestDetails(), false, null, vnfcName, true, null);
+ ExecuteBuildingBlock ebb =
+ executeBuildingBlockBuilder.buildExecuteBuildingBlock(orchFlow, dataObj.getRequestId(),
+ dataObj.getResourceKey(), dataObj.getApiVersion(), dataObj.getResourceId(),
+ dataObj.getRequestAction(), dataObj.isaLaCarte(), dataObj.getVnfType(),
+ workflowIdsCopy, dataObj.getRequestDetails(), false, null, vnfcName, true, null);
flowsToExecuteConfigs.add(ebb);
}
}
@@ -682,29 +680,7 @@ public class WorkflowAction {
return orchFlows;
}
- protected List<Resource> sortVfModulesByBaseFirst(List<Resource> vfModuleResources) {
- int count = 0;
- for (Resource resource : vfModuleResources) {
- if (resource.isBaseVfModule()) {
- Collections.swap(vfModuleResources, 0, count);
- break;
- }
- count++;
- }
- return vfModuleResources;
- }
- protected List<Resource> sortVfModulesByBaseLast(List<Resource> vfModuleResources) {
- int count = 0;
- for (Resource resource : vfModuleResources) {
- if (resource.isBaseVfModule()) {
- Collections.swap(vfModuleResources, vfModuleResources.size() - 1, count);
- break;
- }
- count++;
- }
- return vfModuleResources;
- }
private void updateResourceIdsFromAAITraversal(List<ExecuteBuildingBlock> flowsToExecute,
List<Resource> resourceList, List<Pair<WorkflowType, String>> aaiResourceIds, String serviceInstanceId) {
@@ -1331,125 +1307,6 @@ public class WorkflowAction {
return sortedOrchFlows;
}
- private void addBuildingBlockToExecuteBBList(List<ExecuteBuildingBlock> flowsToExecute, List<Resource> resourceList,
- WorkflowType workflowType, OrchestrationFlow orchFlow, String requestId, String apiVersion,
- String resourceId, String requestAction, String vnfType, WorkflowResourceIds workflowResourceIds,
- RequestDetails requestDetails, boolean isVirtualLink, boolean isConfiguration) {
-
- resourceList.stream().filter(resource -> resource.getResourceType().equals(workflowType))
- .forEach(resource -> flowsToExecute.add(buildExecuteBuildingBlock(orchFlow, requestId, resource,
- apiVersion, resourceId, requestAction, false, vnfType, workflowResourceIds, requestDetails,
- isVirtualLink, resource.getVirtualLinkKey(), null, isConfiguration, null)));
- }
-
- protected List<ExecuteBuildingBlock> buildExecuteBuildingBlockList(List<OrchestrationFlow> orchFlows,
- List<Resource> resourceList, String requestId, String apiVersion, String resourceId, String requestAction,
- String vnfType, WorkflowResourceIds workflowResourceIds, RequestDetails requestDetails,
- boolean replaceVnf) {
- List<ExecuteBuildingBlock> flowsToExecute = new ArrayList<>();
- for (OrchestrationFlow orchFlow : orchFlows) {
- if (orchFlow.getFlowName().contains(SERVICE)) {
- if (!replaceVnf) {
- workflowResourceIds.setServiceInstanceId(resourceId);
- }
- addBuildingBlockToExecuteBBList(flowsToExecute, resourceList, WorkflowType.SERVICE, orchFlow, requestId,
- apiVersion, resourceId, requestAction, vnfType, workflowResourceIds, requestDetails, false,
- false);
- } else if (orchFlow.getFlowName().contains(VNF) || (orchFlow.getFlowName().contains(CONTROLLER)
- && (VNF).equalsIgnoreCase(orchFlow.getBpmnScope()))) {
- addBuildingBlockToExecuteBBList(flowsToExecute, resourceList, WorkflowType.VNF, orchFlow, requestId,
- apiVersion, resourceId, requestAction, vnfType, workflowResourceIds, requestDetails, false,
- false);
- } else if (orchFlow.getFlowName().contains(PNF) || (orchFlow.getFlowName().contains(CONTROLLER)
- && (PNF).equalsIgnoreCase(orchFlow.getBpmnScope()))) {
- addBuildingBlockToExecuteBBList(flowsToExecute, resourceList, WorkflowType.PNF, orchFlow, requestId,
- apiVersion, resourceId, requestAction, vnfType, workflowResourceIds, requestDetails, false,
- false);
- } else if (orchFlow.getFlowName().contains(NETWORK)
- && !orchFlow.getFlowName().contains(NETWORKCOLLECTION)) {
- addBuildingBlockToExecuteBBList(flowsToExecute, resourceList, WorkflowType.NETWORK, orchFlow, requestId,
- apiVersion, resourceId, requestAction, vnfType, workflowResourceIds, requestDetails, false,
- false);
- addBuildingBlockToExecuteBBList(flowsToExecute, resourceList, WorkflowType.VIRTUAL_LINK, orchFlow,
- requestId, apiVersion, resourceId, requestAction, vnfType, workflowResourceIds, requestDetails,
- true, false);
- } else if (orchFlow.getFlowName().contains(VFMODULE) || (orchFlow.getFlowName().contains(CONTROLLER)
- && (VFMODULE).equalsIgnoreCase(orchFlow.getBpmnScope()))) {
- List<Resource> vfModuleResourcesSorted;
- if (requestAction.equals(CREATE_INSTANCE) || requestAction.equals(ASSIGNINSTANCE)
- || requestAction.equals("activateInstance")) {
- vfModuleResourcesSorted = sortVfModulesByBaseFirst(resourceList.stream()
- .filter(x -> WorkflowType.VFMODULE == x.getResourceType()).collect(Collectors.toList()));
- } else {
- vfModuleResourcesSorted = sortVfModulesByBaseLast(resourceList.stream()
- .filter(x -> WorkflowType.VFMODULE == x.getResourceType()).collect(Collectors.toList()));
- }
- for (Resource resource : vfModuleResourcesSorted) {
- flowsToExecute.add(buildExecuteBuildingBlock(orchFlow, requestId, resource, apiVersion, resourceId,
- requestAction, false, vnfType, workflowResourceIds, requestDetails, false, null, null,
- false, null));
- }
- } else if (orchFlow.getFlowName().contains(VOLUMEGROUP)) {
- if (requestAction.equalsIgnoreCase(REPLACEINSTANCE)
- || requestAction.equalsIgnoreCase(REPLACEINSTANCERETAINASSIGNMENTS)) {
- logger.debug("Replacing workflow resource id by volume group id");
- resourceId = workflowResourceIds.getVolumeGroupId();
- }
- addBuildingBlockToExecuteBBList(flowsToExecute, resourceList, WorkflowType.VOLUMEGROUP, orchFlow,
- requestId, apiVersion, resourceId, requestAction, vnfType, workflowResourceIds, requestDetails,
- false, false);
- } else if (orchFlow.getFlowName().contains(NETWORKCOLLECTION)) {
- addBuildingBlockToExecuteBBList(flowsToExecute, resourceList, WorkflowType.NETWORKCOLLECTION, orchFlow,
- requestId, apiVersion, resourceId, requestAction, vnfType, workflowResourceIds, requestDetails,
- false, false);
- } else if (orchFlow.getFlowName().contains(CONFIGURATION)) {
- addBuildingBlockToExecuteBBList(flowsToExecute, resourceList, WorkflowType.CONFIGURATION, orchFlow,
- requestId, apiVersion, resourceId, requestAction, vnfType, workflowResourceIds, requestDetails,
- false, true);
- } else {
- flowsToExecute
- .add(buildExecuteBuildingBlock(orchFlow, requestId, null, apiVersion, resourceId, requestAction,
- false, vnfType, workflowResourceIds, requestDetails, false, null, null, false, null));
- }
- }
- return flowsToExecute;
- }
-
- protected ExecuteBuildingBlock buildExecuteBuildingBlock(OrchestrationFlow orchFlow, String requestId,
- Resource resource, String apiVersion, String resourceId, String requestAction, boolean aLaCarte,
- String vnfType, WorkflowResourceIds workflowResourceIds, RequestDetails requestDetails,
- boolean isVirtualLink, String virtualLinkKey, String vnfcName, boolean isConfiguration,
- ReplaceInstanceRelatedInformation replaceInfo) {
-
- BuildingBlock buildingBlock =
- new BuildingBlock().setBpmnFlowName(orchFlow.getFlowName()).setMsoId(UUID.randomUUID().toString())
- .setIsVirtualLink(isVirtualLink).setVirtualLinkKey(virtualLinkKey)
- .setKey(Optional.ofNullable(resource).map(Resource::getResourceId).orElse(""));
- Optional.ofNullable(orchFlow.getBpmnAction()).ifPresent(buildingBlock::setBpmnAction);
- Optional.ofNullable(orchFlow.getBpmnScope()).ifPresent(buildingBlock::setBpmnScope);
- String oldVolumeGroupName = "";
- if (replaceInfo != null) {
- oldVolumeGroupName = replaceInfo.getOldVolumeGroupName();
- }
- if (resource != null
- && (orchFlow.getFlowName().contains(VOLUMEGROUP) && (requestAction.equalsIgnoreCase(REPLACEINSTANCE)
- || requestAction.equalsIgnoreCase(REPLACEINSTANCERETAINASSIGNMENTS)))) {
- logger.debug("Setting resourceId to volume group id for volume group flow on replace");
- resourceId = workflowResourceIds.getVolumeGroupId();
- }
-
- ExecuteBuildingBlock executeBuildingBlock = new ExecuteBuildingBlock().setApiVersion(apiVersion)
- .setaLaCarte(aLaCarte).setRequestAction(requestAction).setResourceId(resourceId).setVnfType(vnfType)
- .setWorkflowResourceIds(workflowResourceIds).setRequestId(requestId).setBuildingBlock(buildingBlock)
- .setRequestDetails(requestDetails).setOldVolumeGroupName(oldVolumeGroupName);
-
- if (resource != null && (isConfiguration || resource.getResourceType().equals(WorkflowType.CONFIGURATION))) {
- ConfigurationResourceKeys configurationResourceKeys = getConfigurationResourceKeys(resource, vnfcName);
- executeBuildingBlock.setConfigurationResourceKeys(configurationResourceKeys);
- }
- return executeBuildingBlock;
- }
-
private ConfigurationResourceKeys getConfigurationResourceKeys(Resource resource, String vnfcName) {
ConfigurationResourceKeys configurationResourceKeys = new ConfigurationResourceKeys();
Optional.ofNullable(vnfcName).ifPresent(configurationResourceKeys::setVnfcName);
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionConstants.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionConstants.java
index bffa2592c1..5e16097304 100644
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionConstants.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionConstants.java
@@ -28,8 +28,20 @@ package org.onap.so.bpmn.infrastructure.workflow.tasks;
public final class WorkflowActionConstants {
+ private WorkflowActionConstants() {
+ throw new IllegalStateException("Utility class");
+ }
+
static final String USER_PARAM_SERVICE = "service";
static final String CREATE_INSTANCE = "createInstance";
static final String FABRIC_CONFIGURATION = "FabricConfiguration";
static final String WORKFLOW_ACTION_ERROR_MESSAGE = "WorkflowActionErrorMessage";
+ static final String SERVICE = "Service";
+ static final String CONTROLLER = "Controller";
+ static final String NETWORKCOLLECTION = "NetworkCollection";
+ static final String CONFIGURATION = "Configuration";
+ static final String ASSIGNINSTANCE = "assignInstance";
+ static final String REPLACEINSTANCE = "replaceInstance";
+ static final String VOLUMEGROUP = "VolumeGroup";
+ static final String REPLACEINSTANCERETAINASSIGNMENTS = "replaceInstanceRetainAssignments";
}
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/listeners/SkipCDSBuildingBlockListener.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/listeners/SkipCDSBuildingBlockListener.java
index 2119ced951..564ee91fb2 100644
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/listeners/SkipCDSBuildingBlockListener.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/listeners/SkipCDSBuildingBlockListener.java
@@ -84,7 +84,7 @@ public class SkipCDSBuildingBlockListener implements FlowManipulator {
VnfResourceCustomization vrc = catalogDbClient.findVnfResourceCustomizationInList(customizationUUID,
vnfResourceCustomizations);
if (null != vrc) {
- boolean skipConfigVNF = vrc.isSkipPostInstConf();
+ boolean skipConfigVNF = vrc.isSkipPostInstConf().booleanValue();
currentSequenceSkipCheck(execution, skipConfigVNF);
}
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/listeners/SkipConfigVnfListener.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/listeners/SkipConfigVnfListener.java
index 6589ae77f5..83f61e3a4f 100644
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/listeners/SkipConfigVnfListener.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/listeners/SkipConfigVnfListener.java
@@ -34,7 +34,7 @@ public class SkipConfigVnfListener implements FlowManipulator {
if (vnfResourceCustomizations != null && !vnfResourceCustomizations.isEmpty()) {
VnfResourceCustomization vrc =
catalogDbClient.findVnfResourceCustomizationInList(vnfCustomizationUUID, vnfResourceCustomizations);
- boolean skipConfigVNF = vrc.isSkipPostInstConf();
+ boolean skipConfigVNF = vrc.isSkipPostInstConf().booleanValue();
if (skipConfigVNF) {
execution.setVariable(BBConstants.G_CURRENT_SEQUENCE,
((int) execution.getVariable(BBConstants.G_CURRENT_SEQUENCE)) + 1);
diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ExecuteBuildingBlockBuilderTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ExecuteBuildingBlockBuilderTest.java
new file mode 100644
index 0000000000..c8914f6e02
--- /dev/null
+++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ExecuteBuildingBlockBuilderTest.java
@@ -0,0 +1,90 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ================================================================================
+ * Modifications Copyright (c) 2021 Nokia
+ * ================================================================================
+ * Modifications Copyright (c) 2020 Tech Mahindra
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.bpmn.infrastructure.workflow.tasks;
+
+import org.junit.Test;
+import org.onap.so.bpmn.servicedecomposition.entities.ExecuteBuildingBlock;
+import org.onap.so.db.catalog.beans.macro.OrchestrationFlow;
+import java.util.ArrayList;
+import java.util.List;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.fail;
+
+public class ExecuteBuildingBlockBuilderTest {
+
+ final private ExecuteBuildingBlockBuilder executeBBBuilder = new ExecuteBuildingBlockBuilder();
+
+ @Test
+ public void sortVfModulesByBaseFirstTest() {
+ List<Resource> resources = new ArrayList<>();
+ Resource resource1 = new Resource(WorkflowType.VFMODULE, "111", false);
+ resource1.setBaseVfModule(false);
+ resources.add(resource1);
+ Resource resource2 = new Resource(WorkflowType.VFMODULE, "222", false);
+ resource2.setBaseVfModule(false);
+ resources.add(resource2);
+ Resource resource3 = new Resource(WorkflowType.VFMODULE, "333", false);
+ resource3.setBaseVfModule(true);
+ resources.add(resource3);
+
+ List<Resource> result = executeBBBuilder.sortVfModulesByBaseFirst(resources);
+ assertEquals("333", result.get(0).getResourceId());
+ assertEquals("222", result.get(1).getResourceId());
+ assertEquals("111", result.get(2).getResourceId());
+ }
+
+ @Test
+ public void sortVfModulesByBaseLastTest() {
+ List<Resource> resources = new ArrayList<>();
+ Resource resource1 = new Resource(WorkflowType.VFMODULE, "111", false);
+ resource1.setBaseVfModule(true);
+ resources.add(resource1);
+ Resource resource2 = new Resource(WorkflowType.VFMODULE, "222", false);
+ resource2.setBaseVfModule(false);
+ resources.add(resource2);
+ Resource resource3 = new Resource(WorkflowType.VFMODULE, "333", false);
+ resource3.setBaseVfModule(false);
+ resources.add(resource3);
+ List<Resource> result = executeBBBuilder.sortVfModulesByBaseLast(resources);
+ assertEquals("333", result.get(0).getResourceId());
+ assertEquals("222", result.get(1).getResourceId());
+ assertEquals("111", result.get(2).getResourceId());
+ }
+
+ @Test
+ public void verifyLackOfNullPointerExceptionForNullResource() {
+ ExecuteBuildingBlock result = null;
+ try {
+ result = executeBBBuilder.buildExecuteBuildingBlock(new OrchestrationFlow(), null, null, null, null, null,
+ false, null, null, null, false, null, null, true, null);
+ } catch (NullPointerException e) {
+ fail("NullPointerException should not be thrown when 'resource' is null");
+ }
+ assertNotNull(result);
+ }
+}
diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionTest.java
index c916e09c79..100c32f1c2 100644
--- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionTest.java
+++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionTest.java
@@ -120,6 +120,7 @@ public class WorkflowActionTest extends BaseTaskTest {
protected Environment environment;
@Mock
protected UserParamsServiceTraversal userParamsServiceTraversal;
+
@Mock
private AaiResourceIdValidator aaiResourceIdValidator;
@InjectMocks
@@ -131,6 +132,9 @@ public class WorkflowActionTest extends BaseTaskTest {
@Spy
protected WorkflowAction SPY_workflowAction;
+ @Spy
+ protected ExecuteBuildingBlockBuilder executeBuildingBlockBuilder;
+
@Rule
public ExpectedException thrown = ExpectedException.none();
@@ -159,6 +163,7 @@ public class WorkflowActionTest extends BaseTaskTest {
when(bbSetupUtils.getAAIServiceInstanceByName(anyString(), anyObject())).thenReturn(servInstance);
workflowAction.setBbInputSetupUtils(bbSetupUtils);
workflowAction.setBbInputSetup(bbInputSetup);
+
}
/**
@@ -179,6 +184,7 @@ public class WorkflowActionTest extends BaseTaskTest {
when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
+
workflowAction.selectExecutionList(execution);
List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
assertEqualsBulkFlowName(ebbs, "AssignNetwork1802BB", "CreateNetworkBB", "ActivateNetworkBB");
@@ -199,6 +205,7 @@ public class WorkflowActionTest extends BaseTaskTest {
when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
+
workflowAction.selectExecutionList(execution);
List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetwork1802BB");
@@ -219,6 +226,7 @@ public class WorkflowActionTest extends BaseTaskTest {
when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
+
workflowAction.selectExecutionList(execution);
List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "ActivateServiceInstanceBB");
@@ -292,6 +300,7 @@ public class WorkflowActionTest extends BaseTaskTest {
.thenReturn(vfModuleCustomization2);
when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
.thenReturn(vfModuleCustomization3);
+
workflowAction.selectExecutionList(execution);
List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
@@ -471,6 +480,7 @@ public class WorkflowActionTest extends BaseTaskTest {
doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
+
workflowAction.selectExecutionList(execution);
List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignNetworkBB", "CreateNetworkBB",
@@ -2063,41 +2073,7 @@ public class WorkflowActionTest extends BaseTaskTest {
workflowAction.traverseCatalogDbService(execution, sIRequest, resourceCounter, aaiResourceIds);
}
- @Test
- public void sortVfModulesByBaseFirstTest() {
- List<Resource> resources = new ArrayList<>();
- Resource resource1 = new Resource(WorkflowType.VFMODULE, "111", false);
- resource1.setBaseVfModule(false);
- resources.add(resource1);
- Resource resource2 = new Resource(WorkflowType.VFMODULE, "222", false);
- resource2.setBaseVfModule(false);
- resources.add(resource2);
- Resource resource3 = new Resource(WorkflowType.VFMODULE, "333", false);
- resource3.setBaseVfModule(true);
- resources.add(resource3);
- List<Resource> result = workflowAction.sortVfModulesByBaseFirst(resources);
- assertEquals("333", result.get(0).getResourceId());
- assertEquals("222", result.get(1).getResourceId());
- assertEquals("111", result.get(2).getResourceId());
- }
- @Test
- public void sortVfModulesByBaseLastTest() {
- List<Resource> resources = new ArrayList<>();
- Resource resource1 = new Resource(WorkflowType.VFMODULE, "111", false);
- resource1.setBaseVfModule(true);
- resources.add(resource1);
- Resource resource2 = new Resource(WorkflowType.VFMODULE, "222", false);
- resource2.setBaseVfModule(false);
- resources.add(resource2);
- Resource resource3 = new Resource(WorkflowType.VFMODULE, "333", false);
- resource3.setBaseVfModule(false);
- resources.add(resource3);
- List<Resource> result = workflowAction.sortVfModulesByBaseLast(resources);
- assertEquals("333", result.get(0).getResourceId());
- assertEquals("222", result.get(1).getResourceId());
- assertEquals("111", result.get(2).getResourceId());
- }
@Test
public void findCatalogNetworkCollectionTest() {
@@ -2136,17 +2112,6 @@ public class WorkflowActionTest extends BaseTaskTest {
execution.getVariable("WorkflowActionErrorMessage"));
}
- @Test
- public void verifyLackOfNullPointerExceptionForNullResource() {
- ExecuteBuildingBlock result = null;
- try {
- result = workflowAction.buildExecuteBuildingBlock(new OrchestrationFlow(), null, null, null, null, null,
- false, null, null, null, false, null, null, true, null);
- } catch (NullPointerException e) {
- fail("NullPointerException should not be thrown when 'resource' is null");
- }
- assertNotNull(result);
- }
@Test
public void traverseAAIServiceTest() {