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