diff options
Diffstat (limited to 'bpmn/so-bpmn-infrastructure-common')
115 files changed, 4824 insertions, 5303 deletions
diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/ActivateCommunicationService.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/ActivateCommunicationService.groovy index 8e3bef69de..11301587e2 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/ActivateCommunicationService.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/ActivateCommunicationService.groovy @@ -20,12 +20,20 @@ package org.onap.so.bpmn.infrastructure.scripts +import static org.apache.commons.lang3.StringUtils.isBlank +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.Relationship import org.onap.aai.domain.yang.RelationshipData import org.onap.aai.domain.yang.RelationshipList import org.onap.aai.domain.yang.ServiceInstance +import org.onap.aaiclient.client.aai.AAIResourcesClient +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 org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor import org.onap.so.bpmn.common.scripts.ExceptionUtil import org.onap.so.bpmn.common.scripts.MsoUtils @@ -33,19 +41,10 @@ import org.onap.so.bpmn.common.scripts.RequestDBUtil import org.onap.so.bpmn.core.UrnPropertiesReader import org.onap.so.bpmn.core.WorkflowException import org.onap.so.bpmn.core.json.JsonUtils -import org.onap.aaiclient.client.aai.AAIObjectType -import org.onap.aaiclient.client.aai.AAIResourcesClient -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.so.db.request.beans.OperationStatus import org.slf4j.Logger import org.slf4j.LoggerFactory -import javax.ws.rs.NotFoundException - -import static org.apache.commons.lang3.StringUtils.isBlank - class ActivateCommunicationService extends AbstractServiceTaskProcessor { String Prefix="ACS_" @@ -130,8 +129,7 @@ class ActivateCommunicationService extends AbstractServiceTaskProcessor { //check the cms status try { - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, - globalSubscriberId, subscriptionServiceType, serviceInstanceId) + 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") @@ -394,8 +392,7 @@ class ActivateCommunicationService extends AbstractServiceTaskProcessor { // create service ServiceInstance csi = new ServiceInstance() csi.setOrchestrationStatus(orchestrationStatus) - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, - globalSubscriberId, subscriptionServiceType, serviceInstanceId) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(subscriptionServiceType).serviceInstance(serviceInstanceId)) client.update(uri, csi) } catch (BpmnError e) { 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 334f5b4e4f..36d579c7ab 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,11 +20,20 @@ package org.onap.so.bpmn.infrastructure.scripts -import com.google.gson.Gson -import com.google.gson.reflect.TypeToken +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.* +import org.onap.aaiclient.client.aai.AAIResourcesClient +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.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.bpmn.common.scripts.AbstractServiceTaskProcessor import org.onap.so.bpmn.common.scripts.ExceptionUtil @@ -32,22 +41,13 @@ import org.onap.so.bpmn.common.scripts.MsoUtils import org.onap.so.bpmn.common.scripts.RequestDBUtil import org.onap.so.bpmn.core.WorkflowException import org.onap.so.bpmn.core.json.JsonUtils -import org.onap.aaiclient.client.aai.AAIObjectType -import org.onap.aaiclient.client.aai.AAIResourcesClient -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.so.db.request.beans.OperationStatus -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 javax.ws.rs.NotFoundException -import java.lang.reflect.Type - -import static org.apache.commons.lang3.StringUtils.isBlank +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken /** * This groovy class supports the <class>ActivateSliceService.bpmn</class> process. @@ -248,8 +248,7 @@ class ActivateSliceService extends AbstractServiceTaskProcessor { String subscriptionServiceType = execution.getVariable("subscriptionServiceType") AAIResourcesClient client = new AAIResourcesClient() - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, - globalSubscriberId, subscriptionServiceType, NSIServiceId) + 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") } @@ -271,8 +270,7 @@ class ActivateSliceService extends AbstractServiceTaskProcessor { } for (String snssi : SNSSIList) { AAIResourcesClient client01 = new AAIResourcesClient() - AAIResourceUri uri01 = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, - globalSubscriberId, subscriptionServiceType, snssi) + 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") @@ -339,8 +337,7 @@ class ActivateSliceService extends AbstractServiceTaskProcessor { try { AAIResourcesClient client = new AAIResourcesClient() - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, - globalCustId, serviceType, serviceId) + 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") } @@ -392,8 +389,7 @@ class ActivateSliceService extends AbstractServiceTaskProcessor { try { //get the TN NSSI id by NSI id, active NSSI TN slicing AAIResourcesClient client = new AAIResourcesClient() - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, - globalSubscriberId, subscriptionServiceType, NSIserviceInstanceId) + 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") } @@ -410,8 +406,7 @@ class ActivateSliceService extends AbstractServiceTaskProcessor { relatioshipurl.substring(relatioshipurl.lastIndexOf("/") + 1, relatioshipurl.length()) AAIResourcesClient client01 = new AAIResourcesClient() - AAIResourceUri uri01 = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, - globalSubscriberId, subscriptionServiceType, nssiserviceid) + 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") @@ -477,8 +472,7 @@ class ActivateSliceService extends AbstractServiceTaskProcessor { try { try { AAIResourcesClient client = new AAIResourcesClient() - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, - globalSubscriberId, subscriptionServiceType, serviceInstanceId) + 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") @@ -516,8 +510,8 @@ class ActivateSliceService extends AbstractServiceTaskProcessor { //get the allotted-resources by e2e slice id AAIResourcesClient client_allotted = new AAIResourcesClient() - AAIResourceUri uri_allotted = AAIUriFactory.createResourceUri(AAIObjectType.ALLOTTED_RESOURCE_ALL, - globalSubscriberId, subscriptionServiceType, serviceInstanceId) + 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") } @@ -536,8 +530,7 @@ class ActivateSliceService extends AbstractServiceTaskProcessor { try { //get the NSI id by e2e slice id AAIResourcesClient client = new AAIResourcesClient() - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, - globalSubscriberId, subscriptionServiceType, nsiserviceid) + 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") diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/AnNssmfutils.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/AnNssmfutils.groovy index d59f865b01..4108ccecff 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/AnNssmfutils.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/AnNssmfutils.groovy @@ -20,6 +20,7 @@ package org.onap.so.bpmn.infrastructure.scripts + import com.google.gson.JsonArray import org.camunda.bpm.engine.delegate.BpmnError import org.camunda.bpm.engine.delegate.DelegateExecution @@ -42,6 +43,8 @@ import org.onap.aaiclient.client.aai.AAIResourcesClient 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 javax.ws.rs.NotFoundException import org.onap.so.beans.nsmf.AllocateTnNssi import org.onap.so.beans.nsmf.DeAllocateNssi @@ -53,6 +56,7 @@ import org.onap.aai.domain.yang.SliceProfile import org.onap.aai.domain.yang.SliceProfiles import org.onap.aai.domain.yang.Relationship + class AnNssmfUtils { private static final Logger logger = LoggerFactory.getLogger(AnNssmfUtils.class) @@ -228,13 +232,13 @@ public void createSliceProfilesInAai(DelegateExecution execution) { try { AAIResourcesClient client = new AAIResourcesClient() - AAIResourceUri sliceProfileUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, execution.getVariable("globalSubscriberId"), execution.getVariable("subscriptionServiceType"), ANNF_sliceProfileInstanceId) + AAIResourceUri sliceProfileUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(execution.getVariable("globalSubscriberId")).serviceSubscription(execution.getVariable("subscriptionServiceType")).serviceInstance(ANNF_sliceProfileInstanceId)) client.create(sliceProfileUri, ANNF_sliceProfileInstance) - AAIResourceUri sliceProfileUri1 = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, execution.getVariable("globalSubscriberId"), execution.getVariable("subscriptionServiceType"), TNFH_sliceProfileInstanceId) + AAIResourceUri sliceProfileUri1 = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(execution.getVariable("globalSubscriberId")).serviceSubscription(execution.getVariable("subscriptionServiceType")).serviceInstance(TNFH_sliceProfileInstanceId)) client.create(sliceProfileUri1, TNFH_sliceProfileInstance) - AAIResourceUri sliceProfileUri2 = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, execution.getVariable("globalSubscriberId"), execution.getVariable("subscriptionServiceType"), TNMH_sliceProfileInstanceId) + AAIResourceUri sliceProfileUri2 = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(execution.getVariable("globalSubscriberId")).serviceSubscription(execution.getVariable("subscriptionServiceType")).serviceInstance(TNMH_sliceProfileInstanceId)) client.create(sliceProfileUri2, TNMH_sliceProfileInstance) } catch (BpmnError e) { @@ -303,10 +307,7 @@ private SliceProfile createSliceProfile(String domainType, DelegateExecution exe String msg AAIResourcesClient client = new AAIResourcesClient() try { - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, - execution.getVariable("globalSubscriberId"), - execution.getVariable("subscriptionServiceType"), - instanceId).relationshipAPI() + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(execution.getVariable("globalSubscriberId")).serviceSubscription(execution.getVariable("subscriptionServiceType")).serviceInstance(instanceId).relationshipAPI()) client.create(uri, relationship) } catch (BpmnError e) { diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/Create3rdONAPE2EServiceInstance.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/Create3rdONAPE2EServiceInstance.groovy index be5a029062..7b8b79f35f 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/Create3rdONAPE2EServiceInstance.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/Create3rdONAPE2EServiceInstance.groovy @@ -22,43 +22,28 @@ package org.onap.so.bpmn.infrastructure.scripts -import com.google.gson.JsonObject +import static org.apache.commons.lang3.StringUtils.* +import javax.ws.rs.core.Response +import org.camunda.bpm.engine.delegate.DelegateExecution import org.json.JSONArray import org.json.JSONObject -import org.json.XML -import org.onap.so.bpmn.common.scripts.ExternalAPIUtilFactory - -import static org.apache.commons.lang3.StringUtils.* -import groovy.xml.XmlUtil -import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor -import org.onap.so.bpmn.common.scripts.ExceptionUtil -import org.onap.so.bpmn.common.scripts.ExternalAPIUtil -import org.onap.so.bpmn.common.scripts.MsoUtils import org.onap.aai.domain.yang.SpPartner -import org.onap.so.bpmn.common.recipe.ResourceInput -import org.onap.so.bpmn.common.resource.ResourceRequestBuilder -import org.onap.so.bpmn.core.WorkflowException -import org.onap.so.bpmn.core.json.JsonUtils -import org.onap.so.bpmn.core.UrnPropertiesReader -import org.onap.so.bpmn.infrastructure.workflow.serviceTask.client.builder.AbstractBuilder -import org.onap.aaiclient.client.aai.AAIObjectType import org.onap.aaiclient.client.aai.AAIResourcesClient import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory -import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils -import org.onap.so.bpmn.infrastructure.workflow.service.ServicePluginFactory -import java.util.Map -import java.util.UUID -import javax.ws.rs.core.Response +import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder +import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder.Types +import org.onap.so.bpmn.common.recipe.ResourceInput +import org.onap.so.bpmn.common.resource.ResourceRequestBuilder +import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor +import org.onap.so.bpmn.common.scripts.ExceptionUtil +import org.onap.so.bpmn.common.scripts.ExternalAPIUtil +import org.onap.so.bpmn.common.scripts.ExternalAPIUtilFactory +import org.onap.so.bpmn.core.UrnPropertiesReader +import org.onap.so.bpmn.core.json.JsonUtils import org.slf4j.Logger import org.slf4j.LoggerFactory -import org.camunda.bpm.engine.runtime.Execution -import org.camunda.bpm.engine.delegate.BpmnError -import org.camunda.bpm.engine.delegate.DelegateExecution -import org.apache.commons.lang3.* -import org.apache.commons.codec.binary.Base64 - /** * This groovy class supports the <class>Create3rdONAPE2EServiceInstance.bpmn</class> process. @@ -604,12 +589,12 @@ public class Create3rdONAPE2EServiceInstance extends AbstractServiceTaskProcesso partner.setModelCustomizationId(resourceModelCustomizationUuid) AAIResourcesClient client = new AAIResourcesClient() - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SP_PARTNER, sppartnerId) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().spPartner(sppartnerId)) logger.info("sending request to create sp-partner: " + uri.toString()) logger.info("requestbody: " + partner) client.create(uri, partner) - AAIResourceUri siUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, globalSubscriberId, serviceType, serviceInstanceId) + AAIResourceUri siUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(serviceType).serviceInstance(serviceInstanceId)) client.connect(uri, siUri) } catch (Exception ex) { String msg = "Exception in Create3rdONAPE2EServiceInstance.saveSPPartnerInAAI. " + ex.getMessage() diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateCommunicationService.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateCommunicationService.groovy index f8eafe7e98..e253855ab3 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateCommunicationService.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateCommunicationService.groovy @@ -20,12 +20,16 @@ package org.onap.so.bpmn.infrastructure.scripts -import groovy.json.JsonSlurper +import static org.apache.commons.lang3.StringUtils.isBlank import org.camunda.bpm.engine.delegate.BpmnError import org.camunda.bpm.engine.delegate.DelegateExecution import org.json.JSONObject import org.onap.aai.domain.yang.Relationship import org.onap.aai.domain.yang.ServiceInstance +import org.onap.aaiclient.client.aai.AAIResourcesClient +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.so.bpmn.common.scripts.AbstractServiceTaskProcessor import org.onap.so.bpmn.common.scripts.ExceptionUtil import org.onap.so.bpmn.common.scripts.MsoUtils @@ -36,16 +40,11 @@ import org.onap.so.bpmn.core.domain.ServiceDecomposition import org.onap.so.bpmn.core.domain.ServiceInfo import org.onap.so.bpmn.core.domain.ServiceProxy import org.onap.so.bpmn.core.json.JsonUtils -import org.onap.aaiclient.client.aai.AAIObjectType -import org.onap.aaiclient.client.aai.AAIResourcesClient -import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri -import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory import org.onap.so.db.request.beans.OperationStatus import org.slf4j.Logger import org.slf4j.LoggerFactory import org.springframework.web.util.UriUtils - -import static org.apache.commons.lang3.StringUtils.isBlank +import groovy.json.JsonSlurper /** * This groovy class supports the <class>DoCreateCommunicationService.bpmn</class> process. @@ -538,10 +537,7 @@ class CreateCommunicationService extends AbstractServiceTaskProcessor { String msg try { String serviceInstanceId = execution.getVariable("serviceInstanceId") - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, - execution.getVariable("globalSubscriberId"), - execution.getVariable("subscriptionServiceType"), - serviceInstanceId).relationshipAPI() + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(execution.getVariable("globalSubscriberId")).serviceSubscription(execution.getVariable("subscriptionServiceType")).serviceInstance(serviceInstanceId)).relationshipAPI() client.create(uri, relationship) } catch (BpmnError e) { @@ -633,8 +629,7 @@ class CreateCommunicationService extends AbstractServiceTaskProcessor { // create service ServiceInstance csi = new ServiceInstance() csi.setOrchestrationStatus(orchestrationStatus) - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, - globalSubscriberId, subscriptionServiceType, serviceInstanceId) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(subscriptionServiceType).serviceInstance(serviceInstanceId)) client.update(uri, csi) logger.debug(Prefix + "updateFinishStatusInAAI update communication service status to deactivated") diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateCustomE2EServiceInstance.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateCustomE2EServiceInstance.groovy index c9ad18b0be..b7edc026be 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateCustomE2EServiceInstance.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateCustomE2EServiceInstance.groovy @@ -39,6 +39,8 @@ import org.onap.aaiclient.client.aai.AAIObjectType import org.onap.aaiclient.client.aai.AAIResourcesClient 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.logger.LoggingAnchor import org.onap.so.logger.MessageEnum @@ -361,7 +363,7 @@ public class CreateCustomE2EServiceInstance extends AbstractServiceTaskProcessor si.setOrchestrationStatus("Pending") } AAIResourcesClient client = new AAIResourcesClient() - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, serviceInstanceId) + AAIResourceUri uri = AAIUriFactory.createResourceUri(Types.SERVICE_INSTANCE.getFragment(serviceInstanceId)) client.update(uri, si) } catch (BpmnError e) { throw e diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateSDNCNetworkResource.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateSDNCNetworkResource.groovy index 2b9e43109c..eb67b8fa4c 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateSDNCNetworkResource.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateSDNCNetworkResource.groovy @@ -32,20 +32,19 @@ import org.onap.aai.domain.yang.ServiceInstance import org.onap.aai.domain.yang.ServiceInstances import org.onap.aai.domain.yang.v13.Metadata import org.onap.aai.domain.yang.v13.Metadatum +import org.onap.aaiclient.client.aai.AAIResourcesClient +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.so.bpmn.common.recipe.ResourceInput import org.onap.so.bpmn.common.resource.ResourceRequestBuilder 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.core.UrnPropertiesReader import org.onap.so.bpmn.core.domain.ModelInfo -import org.onap.so.bpmn.core.domain.ResourceType import org.onap.so.bpmn.core.json.JsonUtils -import org.onap.so.bpmn.core.UrnPropertiesReader -import org.onap.aaiclient.client.aai.AAIObjectPlurals -import org.onap.aaiclient.client.aai.AAIResourcesClient -import org.onap.aaiclient.client.aai.AAIObjectType -import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri -import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory import org.slf4j.Logger import org.slf4j.LoggerFactory @@ -142,8 +141,7 @@ public class CreateSDNCNetworkResource extends AbstractServiceTaskProcessor { AAIResourcesClient client = new AAIResourcesClient() // think how AAI queried for PNF name using the name - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE_METADATA, - customerId, serviceType, serId) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(customerId).serviceSubscription(serviceType).serviceInstance(serId).metadata()) logger.debug("uri for pnf get:" + uri.toString()) Metadata metadata = client.get(uri).asBean(Metadata.class).get() @@ -265,6 +263,7 @@ public class CreateSDNCNetworkResource extends AbstractServiceTaskProcessor { String uResourceInput = jsonUtil.addJsonValue(resourceInput, "requestInputs.service-name", inputParameters.get("name")) resourceInputObj.setResourceParameters(uResourceInput) execution.setVariable(Prefix + "resourceInput", resourceInputObj.toString()) + execution.setVariable("isAsyncRequired", "Yes") break case ~/[\w\s\W]*sdwanvpnattachment[\w\s\W]*/ : @@ -293,7 +292,7 @@ public class CreateSDNCNetworkResource extends AbstractServiceTaskProcessor { AAIResourcesClient client = new AAIResourcesClient() logger.info("sending request to resolve vpn-name:" + vpnName) - AAIResourceUri uri = AAIUriFactory.createResourceUri(new AAIObjectPlurals("/nodes", "/service-instances", "queryByName")).queryParam("service-instance-name", parentServiceName) + AAIResourceUri uri = AAIUriFactory.createNodesUri(Types.SERVICE_INSTANCES.getFragment()).queryParam("service-instance-name", parentServiceName) Optional<ServiceInstances> serviceInstancesOpt = client.get(ServiceInstances.class, uri) if(serviceInstancesOpt.isPresent()) { diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateSliceService.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateSliceService.groovy index dcbaf746ea..65398eb658 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateSliceService.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateSliceService.groovy @@ -2,54 +2,51 @@ * ============LICENSE_START======================================================= * ONAP - SO * ================================================================================ - * Copyright (C) 2019 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. + # 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 static org.apache.commons.lang3.StringUtils.* +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.delegate.DelegateExecution import org.onap.aai.domain.yang.ServiceInstance -import org.onap.so.client.HttpClient -import org.onap.so.client.HttpClientFactory -import org.onap.aaiclient.client.aai.AAIObjectType import org.onap.aaiclient.client.aai.AAIResourcesClient import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory - -import javax.ws.rs.core.Response - -import static org.apache.commons.lang3.StringUtils.* -import org.springframework.web.util.UriUtils -import groovy.json.JsonSlurper -import org.camunda.bpm.engine.delegate.BpmnError -import org.camunda.bpm.engine.delegate.DelegateExecution -import org.onap.logging.filter.base.ONAPComponents +import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder.Types +import org.onap.logging.filter.base.ErrorCode import org.onap.so.beans.nsmf.SliceTaskParams -import org.onap.so.db.request.beans.OrchestrationTask +import org.onap.so.beans.nsmf.SliceTaskParamsAdapter +import org.onap.so.beans.nsmf.oof.TemplateInfo 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.scripts.NssmfAdapterUtils import org.onap.so.bpmn.common.scripts.OofUtils import org.onap.so.bpmn.core.UrnPropertiesReader -import org.onap.so.bpmn.common.scripts.MsoUtils import org.onap.so.bpmn.core.json.JsonUtils -import org.onap.logging.filter.base.ErrorCode +import org.onap.so.db.request.beans.OrchestrationTask 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 com.fasterxml.jackson.databind.ObjectMapper +import groovy.json.JsonSlurper public class CreateSliceService extends AbstractServiceTaskProcessor { String Prefix = "CRESS_" @@ -59,8 +56,10 @@ public class CreateSliceService extends AbstractServiceTaskProcessor { JsonSlurper jsonSlurper = new JsonSlurper() ObjectMapper objectMapper = new ObjectMapper() OofUtils oofUtils = new OofUtils() - private static final Logger logger = LoggerFactory.getLogger(CreateSliceService.class) + NssmfAdapterUtils nssmfAdapterUtils = new NssmfAdapterUtils(httpClientFactory, jsonUtil) + AAIResourcesClient client = getAAIClient() + private static final Logger logger = LoggerFactory.getLogger(CreateSliceService.class) public void preProcessRequest(DelegateExecution execution) { logger.debug("Start preProcessRequest") @@ -150,7 +149,7 @@ public class CreateSliceService extends AbstractServiceTaskProcessor { logger.debug("User Input Parameters map: " + inputMap.toString()) String uuiRequest = inputMap.get("UUIRequest") - Map uuiReqMap = jsonSlurper.parseText(uuiRequest) + Map uuiReqMap = jsonSlurper.parseText(uuiRequest) as Map Map<String, Object> serviceObject = (Map<String, Object>) uuiReqMap.get("service") Map<String, Object> parameterObject = (Map<String, Object>) serviceObject.get("parameters") Map<String, Object> requestInputs = (Map<String, Object>) parameterObject.get("requestInputs") @@ -162,7 +161,8 @@ public class CreateSliceService extends AbstractServiceTaskProcessor { execution.setVariable("serviceInputParams", inputMap) execution.setVariable("uuiRequest", uuiRequest) - execution.setVariable("serviceProfile", serviceProfile) + execution.setVariable("se" + + "rviceProfile", serviceProfile) //TODO //execution.setVariable("serviceInputParams", jsonUtil.getJsonValue(siRequest, "requestDetails.requestParameters.userParams")) @@ -178,76 +178,69 @@ public class CreateSliceService extends AbstractServiceTaskProcessor { logger.debug("Finish preProcessRequest") } - public void prepareSelectNSTRequest(DelegateExecution execution) { - logger.debug("Start prepareSelectNSTRequest") - String requestId = execution.getVariable("msoRequestId") - String messageType = "NSTSelectionResponse" - Map<String, Object> serviceProfile = execution.getVariable("serviceProfile") - execution.setVariable("nstSelectionUrl", "/api/oof/v1/selection/nst") - execution.setVariable("nstSelection_messageType",messageType) - execution.setVariable("nstSelection_correlator",requestId) - String timeout = UrnPropertiesReader.getVariable("mso.adapters.oof.timeout", execution); - execution.setVariable("nstSelection_timeout",timeout) - String oofRequest = oofUtils.buildSelectNSTRequest(requestId,messageType, serviceProfile) - execution.setVariable("nstSelection_oofRequest",oofRequest) - logger.debug("Finish prepareSelectNSTRequest") - - } - - public void processNSTSolutions(DelegateExecution execution) { - Map<String, Object> nstSolution - try { - logger.debug("Start processing NSTSolutions") - Map<String, Object> resMap = objectMapper.readValue(execution.getVariable("nstSelection_oofResponse"),Map.class) - List<Map<String, Object>> nstSolutions = (List<Map<String, Object>>) resMap.get("solutions") - nstSolution = nstSolutions.get(0) - execution.setVariable("nstSolution", nstSolution) - } catch (Exception ex) { - logger.debug( "Failed to get NST solution suggested by OOF.") - exceptionUtil.buildAndThrowWorkflowException(execution, 401, "Failed to get NST solution suggested by OOF.") - } - - } - - public void prepareDecomposeService(DelegateExecution execution) { - logger.debug("Start prepareDecomposeService") - String uuiRequest = execution.getVariable("uuiRequest") - String ssModelInvariantUuid = jsonUtil.getJsonValue(uuiRequest, "service.serviceInvariantUuid") - String ssModelUuid = jsonUtil.getJsonValue(uuiRequest, "service.serviceUuid") - String ssServiceModelInfo = """{ - "modelInvariantUuid":"${ssModelInvariantUuid}", - "modelUuid":"${ssModelUuid}", - "modelVersion":"" - }""" - execution.setVariable("ssServiceModelInfo", ssServiceModelInfo) - - logger.debug("Finish prepareDecomposeService") - } - - public void processDecomposition(DelegateExecution execution) { - logger.debug("Start processDecomposition") - String uuiRequest = execution.getVariable("uuiRequest") - Map<String, Object> serviceProfile = execution.getVariable("serviceProfile") - Map<String, Object> nstSolution = execution.getVariable("nstSolution") - - Map uuiReqMap = jsonSlurper.parseText(uuiRequest) - Map<String, Object> serviceObject = (Map<String, Object>) uuiReqMap.get("service") - String subscriptionServiceType = serviceObject.get("serviceType") + /** + * + * @param execution + */ + public void prepareInitServiceOperationStatus(DelegateExecution execution) { + logger.debug("Start prepareInitServiceOperationStatus") + try{ + String serviceId = execution.getVariable("serviceInstanceId") + String operationId = execution.getVariable("operationId") + String operationType = "CREATE" + String userId = execution.getVariable("globalSubscriberId") + String result = "processing" + String progress = "0" + String reason = "" + String operationContent = "Prepare service creation" + logger.debug("Generated new operation for Service Instance serviceId:" + serviceId + " operationId:" + operationId) + serviceId = UriUtils.encode(serviceId,"UTF-8") + execution.setVariable("serviceInstanceId", serviceId) + execution.setVariable("operationType", operationType) - String serviceType = (String) serviceProfile.get("sST") - String resourceSharingLevel = (String) serviceProfile.get("resourceSharingLevel") - String nstModelUuid = (String) nstSolution.get("UUID") - String nstModelInvariantUuid = (String) nstSolution.get("invariantUUID") + def dbAdapterEndpoint = UrnPropertiesReader.getVariable("mso.adapters.openecomp.db.endpoint",execution) + execution.setVariable("CSSOS_dbAdapterEndpoint", dbAdapterEndpoint) + logger.debug("DB Adapter Endpoint is: " + dbAdapterEndpoint) + def dbAdapterAuth = UrnPropertiesReader.getVariable("mso.requestDb.auth") + Map<String, String> CSSOS_headerMap = [:] + CSSOS_headerMap.put("content-type", "application/soap+xml") + CSSOS_headerMap.put("Authorization", dbAdapterAuth) + execution.setVariable("CSSOS_headerMap", CSSOS_headerMap) + logger.debug("DB Adapter Header is: " + CSSOS_headerMap) - execution.setVariable("subscriptionServiceType", subscriptionServiceType) - execution.setVariable("serviceType", serviceType) - execution.setVariable("resourceSharingLevel", resourceSharingLevel) - execution.setVariable("nstModelUuid", nstModelUuid) - execution.setVariable("nstModelInvariantUuid", nstModelInvariantUuid) + 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>""" - logger.debug("Finish processDecomposition") + payload = utils.formatXml(payload) + execution.setVariable("CSSOS_updateServiceOperStatusRequest", payload) + logger.debug("Outgoing updateServiceOperStatusRequest: \n" + payload) + }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) + } + logger.debug("Finish prepareInitServiceOperationStatus") } + /** + * prepare create OrchestrationTask + * @param execution + */ public void prepareCreateOrchestrationTask(DelegateExecution execution) { logger.debug("Start createOrchestrationTask") String taskId = execution.getBusinessKey() @@ -265,21 +258,104 @@ public class CreateSliceService extends AbstractServiceTaskProcessor { execution.setVariable("CSSOT_isManual", isManual) execution.setVariable("CSSOT_requestMethod", requestMethod) - Map<String, Object> serviceProfile = execution.getVariable("serviceProfile") + Map<String, Object> serviceProfile = execution.getVariable("serviceProfile") as Map<String, Object> - SliceTaskParams sliceTaskParams = new SliceTaskParams() + SliceTaskParamsAdapter sliceTaskParams = new SliceTaskParamsAdapter() sliceTaskParams.setServiceId(serviceInstanceId) sliceTaskParams.setServiceName(serviceInstanceName) sliceTaskParams.setServiceProfile(serviceProfile) + execution.setVariable("sliceTaskParams", sliceTaskParams) - String paramJson = sliceTaskParams.convertToJson() - execution.setVariable("CSSOT_paramJson", paramJson) - logger.debug("CSSOT_paramJson: " + paramJson) + //todo:---------------------------------------- +// String paramJson = sliceTaskParams.convertToJson() +// execution.setVariable("CSSOT_paramJson", paramJson) + /*-------------------------------------------*/ logger.debug("Finish createOrchestrationTask") } + /** + * send sync response to csmf + * @param execution + */ + public void sendSyncResponse(DelegateExecution execution) { + logger.debug("Start sendSyncResponse") + try { + String operationId = execution.getVariable("operationId") + String serviceInstanceId = execution.getVariable("serviceInstanceId") + // RESTResponse for API Handler (APIH) Reply Task + String createServiceRestRequest = """ + { + "service": { + "serviceId":"${serviceInstanceId}", + "operationId":"${operationId}" + } + } + """.trim() + + logger.debug("sendSyncResponse to APIH:" + "\n" + createServiceRestRequest) + sendWorkflowResponse(execution, 202, createServiceRestRequest) + execution.setVariable("sentSyncResponse", true) + } catch (Exception e) { + String msg = "Exceptuion in sendSyncResponse:" + e.getMessage() + logger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + logger.debug("Finish sendSyncResponse") + } + + public void prepareSelectNSTRequest(DelegateExecution execution) { + logger.debug("Start prepareSelectNSTRequest") + String requestId = execution.getVariable("msoRequestId") + String messageType = "NSTSelectionResponse" + Map<String, Object> serviceProfile = execution.getVariable("serviceProfile") as Map<String, Object> + execution.setVariable("nstSelectionUrl", "/api/oof/v1/selection/nst") + execution.setVariable("nstSelection_messageType", messageType) + execution.setVariable("nstSelection_correlator", requestId) + String timeout = UrnPropertiesReader.getVariable("mso.adapters.oof.timeout", execution); + execution.setVariable("nstSelection_timeout", timeout) + String oofRequest = oofUtils.buildSelectNSTRequest(requestId, messageType, serviceProfile) + execution.setVariable("nstSelection_oofRequest", oofRequest) + logger.debug("Finish prepareSelectNSTRequest") + + } + + /** + * process async response of oof, put the {@solutions} at {@nstSolution} + * @param execution + */ + public void processNSTSolutions(DelegateExecution execution) { + Map<String, Object> nstSolution + try { + logger.debug("Start processing NSTSolutions") + Map<String, Object> resMap = + objectMapper.readValue(execution.getVariable("nstSelection_oofResponse") as String, + Map.class) + + List<Map<String, Object>> nstSolutions = (List<Map<String, Object>>) resMap.get("solutions") + nstSolution = nstSolutions.get(0) + execution.setVariable("nstSolution", nstSolution) + + //set nst info into sliceTaskParams + SliceTaskParamsAdapter sliceTaskParams = + execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter + TemplateInfo nstInfo = new TemplateInfo() + nstInfo.setUUID(nstSolution.get("UUID") as String) + nstInfo.setInvariantUUID(nstSolution.get("invariantUUID") as String) + nstInfo.setName(nstSolution.get("name") as String) + + sliceTaskParams.setNSTInfo(nstInfo) + + execution.setVariable("sliceTaskParams", sliceTaskParams) + + } catch (Exception ex) { + logger.debug( "Failed to get NST solution suggested by OOF.") + exceptionUtil.buildAndThrowWorkflowException(execution, 401, "Failed to get NST solution suggested by OOF.") + } + + } + public void prepareUpdateOrchestrationTask(DelegateExecution execution) { logger.debug("Start prepareUpdateOrchestrationTask") String requestMethod = "PUT" @@ -292,6 +368,7 @@ public class CreateSliceService extends AbstractServiceTaskProcessor { logger.debug("Finish prepareUpdateOrchestrationTask") } + public void prepareGetUserOptions(DelegateExecution execution) { logger.debug("Start prepareGetUserOptions") String requestMethod = "GET" @@ -325,10 +402,10 @@ public class CreateSliceService extends AbstractServiceTaskProcessor { String orchStatus = execution.getVariable("orchestrationStatus") try { - ServiceInstance si = ServiceInstance si = new ServiceInstance() + ServiceInstance si = new ServiceInstance() si.setOrchestrationStatus(orchStatus) AAIResourcesClient client = new AAIResourcesClient() - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, serviceInstanceId) + AAIResourceUri uri = AAIUriFactory.createResourceUri(Types.SERVICE_INSTANCE.getFragment(serviceInstanceId)) client.update(uri, si) } catch (BpmnError e) { throw e @@ -341,61 +418,6 @@ public class CreateSliceService extends AbstractServiceTaskProcessor { logger.debug("Finish updateAAIOrchStatus") } - public void prepareInitServiceOperationStatus(DelegateExecution execution) { - logger.debug("Start prepareInitServiceOperationStatus") - try{ - String serviceId = execution.getVariable("serviceInstanceId") - String operationId = execution.getVariable("operationId") - String operationType = "CREATE" - String userId = execution.getVariable("globalSubscriberId") - String result = "processing" - String progress = "0" - String reason = "" - String operationContent = "Prepare service creation" - logger.debug("Generated new operation for Service Instance serviceId:" + serviceId + " operationId:" + operationId) - serviceId = UriUtils.encode(serviceId,"UTF-8") - execution.setVariable("serviceInstanceId", serviceId) - execution.setVariable("operationType", operationType) - - def dbAdapterEndpoint = UrnPropertiesReader.getVariable("mso.adapters.openecomp.db.endpoint",execution) - execution.setVariable("CSSOS_dbAdapterEndpoint", dbAdapterEndpoint) - logger.debug("DB Adapter Endpoint is: " + dbAdapterEndpoint) - def dbAdapterAuth = UrnPropertiesReader.getVariable("mso.requestDb.auth") - Map<String, String> CSSOS_headerMap = [:] - CSSOS_headerMap.put("content-type", "application/soap+xml") - CSSOS_headerMap.put("Authorization", dbAdapterAuth) - execution.setVariable("CSSOS_headerMap", CSSOS_headerMap) - logger.debug("DB Adapter Header is: " + CSSOS_headerMap) - - 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("CSSOS_updateServiceOperStatusRequest", payload) - logger.debug("Outgoing updateServiceOperStatusRequest: \n" + payload) - }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) - } - logger.debug("Finish prepareInitServiceOperationStatus") - } - public void prepareUpdateServiceOperationStatus(DelegateExecution execution) { logger.debug("Start preUpdateServiceOperationStatus") try{ @@ -438,23 +460,7 @@ public class CreateSliceService extends AbstractServiceTaskProcessor { logger.debug("Finish preUpdateServiceOperationStatus") } - public void sendSyncResponse(DelegateExecution execution) { - logger.debug("Start sendSyncResponse") - try { - String operationId = execution.getVariable("operationId") - String serviceInstanceId = execution.getVariable("serviceInstanceId") - // RESTResponse for API Handler (APIH) Reply Task - String createServiceRestRequest = """{"service":{"serviceId":"${serviceInstanceId}","operationId":"${operationId}"}}""".trim() - logger.debug("sendSyncResponse to APIH:" + "\n" + createServiceRestRequest) - sendWorkflowResponse(execution, 202, createServiceRestRequest) - execution.setVariable("sentSyncResponse", true) - } catch (Exception e) { - String msg = "Exceptuion in sendSyncResponse:" + e.getMessage() - logger.debug(msg) - exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) - } - logger.debug("Finish sendSyncResponse") - } + public void prepareCompletionRequest (DelegateExecution execution) { logger.trace("Start prepareCompletionRequest") diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateVFCNSResource.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateVFCNSResource.groovy index 80b6641bb7..4cebb9286f 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateVFCNSResource.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateVFCNSResource.groovy @@ -26,6 +26,8 @@ import org.onap.so.client.HttpClientFactory import org.onap.aaiclient.client.aai.AAIObjectType 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.camunda.bpm.engine.delegate.BpmnError import org.camunda.bpm.engine.delegate.DelegateExecution import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor @@ -245,8 +247,8 @@ public class CreateVFCNSResource extends AbstractServiceTaskProcessor { String serviceType = execution.getVariable("serviceType") String serviceId = execution.getVariable("serviceInstanceId") - AAIResourceUri nsUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE,globalSubscriberId,serviceType,nsInstanceId) - AAIResourceUri relatedServiceUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE,globalSubscriberId,serviceType,serviceId) + AAIResourceUri nsUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(serviceType).serviceInstance(nsInstanceId)) + AAIResourceUri relatedServiceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(serviceType).serviceInstance(serviceId)) try{ getAAIClient().connect(nsUri,relatedServiceUri) diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateVfModuleVolumeInfraV1.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateVfModuleVolumeInfraV1.groovy index 1dfe13738e..4725f9a66d 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateVfModuleVolumeInfraV1.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateVfModuleVolumeInfraV1.groovy @@ -22,21 +22,21 @@ package org.onap.so.bpmn.infrastructure.scripts -import org.onap.so.logger.LoggingAnchor import org.camunda.bpm.engine.delegate.BpmnError import org.camunda.bpm.engine.delegate.DelegateExecution +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.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.core.WorkflowException -import org.onap.aaiclient.client.aai.AAIObjectType -import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri -import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory -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 groovy.json.JsonOutput import groovy.json.JsonSlurper @@ -324,7 +324,7 @@ class CreateVfModuleVolumeInfraV1 extends AbstractServiceTaskProcessor { ExceptionUtil exceptionUtil = new ExceptionUtil() try { - AAIResourceUri uri = AAIUriFactory.createNodesUri(AAIObjectType.SERVICE_INSTANCE,serviceInstanceId) + AAIResourceUri uri = AAIUriFactory.createNodesUri(Types.SERVICE_INSTANCE.getFragment(serviceInstanceId)) if(getAAIClient().exists(uri)){ logger.debug('Service instance ' + serviceInstanceId + ' found in AAI.') }else{ diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/Delete3rdONAPE2EServiceInstance.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/Delete3rdONAPE2EServiceInstance.groovy index 057863be28..3062b1ca32 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/Delete3rdONAPE2EServiceInstance.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/Delete3rdONAPE2EServiceInstance.groovy @@ -45,6 +45,8 @@ import org.onap.aaiclient.client.aai.AAIObjectType import org.onap.aaiclient.client.aai.AAIResourcesClient 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.slf4j.Logger import org.slf4j.LoggerFactory @@ -473,7 +475,7 @@ public class Delete3rdONAPE2EServiceInstance extends AbstractServiceTaskProcesso String id = execution.getVariable(Prefix + "SppartnerId") AAIResourcesClient client = new AAIResourcesClient() - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SP_PARTNER, id) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().spPartner(id)) SpPartner sp = client.get(uri).asBean(SpPartner.class).get() logger.debug("GET sppartner Received a Good Response") @@ -508,7 +510,7 @@ public class Delete3rdONAPE2EServiceInstance extends AbstractServiceTaskProcesso String sppartnerId = execution.getVariable(Prefix + "SppartnerId") AAIResourcesClient client = new AAIResourcesClient() - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SP_PARTNER, sppartnerId) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().spPartner(sppartnerId)) client.delete(uri) logger.debug("Delete sppartner Received a Good Response") execution.setVariable(Prefix + "SuccessIndicator", true) 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 26936bfd71..8cab146006 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 @@ -20,12 +20,23 @@ package org.onap.so.bpmn.infrastructure.scripts +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.Relationship -import org.onap.aai.domain.yang.ServiceInstance import org.onap.aai.domain.yang.CommunicationServiceProfile import org.onap.aai.domain.yang.CommunicationServiceProfiles +import org.onap.aai.domain.yang.Relationship +import org.onap.aai.domain.yang.ServiceInstance +import org.onap.aaiclient.client.aai.AAIObjectName +import org.onap.aaiclient.client.aai.AAIObjectType +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.AAIUriFactory +import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder +import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder.Types import org.onap.logging.filter.base.ONAPComponents import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor import org.onap.so.bpmn.common.scripts.ExceptionUtil @@ -35,21 +46,10 @@ import org.onap.so.bpmn.core.UrnPropertiesReader import org.onap.so.bpmn.core.WorkflowException import org.onap.so.bpmn.core.json.JsonUtils import org.onap.so.client.HttpClient -import org.onap.so.client.HttpClientFactory -import org.onap.aaiclient.client.aai.AAIObjectType -import org.onap.aaiclient.client.aai.AAIResourcesClient -import org.onap.aaiclient.client.aai.entities.AAIResultWrapper -import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri -import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory import org.onap.so.db.request.beans.OperationStatus 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 - class DeleteCommunicationService extends AbstractServiceTaskProcessor { private final String PREFIX ="DeleteCommunicationService" private final Long TIMEOUT = 60 * 60 * 1000 @@ -147,7 +147,7 @@ class DeleteCommunicationService extends AbstractServiceTaskProcessor { String serviceInstanceId = execution.getVariable("serviceInstanceId") String errorMsg = "query communication service from aai failed" - AAIResultWrapper wrapper = queryAAI(execution, AAIObjectType.SERVICE_INSTANCE, serviceInstanceId, errorMsg) + AAIResultWrapper wrapper = queryAAI(execution, Types.SERVICE_INSTANCE, serviceInstanceId, errorMsg) Optional<ServiceInstance> si = wrapper.asBean(ServiceInstance.class) if(si.isPresent()) { @@ -177,16 +177,16 @@ class DeleteCommunicationService extends AbstractServiceTaskProcessor { /** * query AAI * @param execution - * @param aaiObjectType + * @param aaiObjectName * @param instanceId * @return AAIResultWrapper */ - private AAIResultWrapper queryAAI(DelegateExecution execution, AAIObjectType aaiObjectType, String instanceId, String errorMsg) + private AAIResultWrapper queryAAI(DelegateExecution execution, AAIObjectName aaiObjectName, String instanceId, String errorMsg) { String globalSubscriberId = execution.getVariable("globalSubscriberId") String serviceType = execution.getVariable("serviceType") - AAIResourceUri resourceUri = AAIUriFactory.createResourceUri(aaiObjectType, globalSubscriberId, serviceType, instanceId) + AAIResourceUri resourceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(serviceType).serviceInstance(instanceId)) if (!getAAIClient().exists(resourceUri)) { exceptionUtil.buildAndThrowWorkflowException(execution, 2500, errorMsg) } @@ -310,7 +310,7 @@ class DeleteCommunicationService extends AbstractServiceTaskProcessor { String profileId try { - AAIResourceUri resourceUri = AAIUriFactory.createResourceUri(AAIObjectType.COMMUNICATION_PROFILE_ALL, globalSubscriberId, serviceType, serviceInstanceId) + AAIPluralResourceUri resourceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(serviceType).serviceInstance(serviceInstanceId).communicationServiceProfiles()) AAIResultWrapper wrapper = getAAIClient().get(resourceUri, NotFoundException.class) Optional<CommunicationServiceProfiles> csProfilesOpt = wrapper.asBean(CommunicationServiceProfiles.class) if(csProfilesOpt.isPresent()){ @@ -318,7 +318,7 @@ class DeleteCommunicationService extends AbstractServiceTaskProcessor { CommunicationServiceProfile csProfile = csProfiles.getCommunicationServiceProfile().get(0) profileId = csProfile ? csProfile.getProfileId() : "" } - resourceUri = AAIUriFactory.createResourceUri(AAIObjectType.COMMUNICATION_SERVICE_PROFILE, globalSubscriberId, serviceType, serviceInstanceId, profileId) + resourceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(serviceType).serviceInstance(serviceInstanceId).communicationServiceProfile(profileId)) if (!getAAIClient().exists(resourceUri)) { exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "communication service profile was not found in aai") } @@ -344,7 +344,7 @@ class DeleteCommunicationService extends AbstractServiceTaskProcessor { try { LOGGER.debug("start delete communication service from AAI") - AAIResourceUri serviceInstanceUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, execution.getVariable("globalSubscriberId"), execution.getVariable("serviceType"), execution.getVariable("serviceInstanceId")) + AAIResourceUri serviceInstanceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(execution.getVariable("globalSubscriberId")).serviceSubscription(execution.getVariable("serviceType")).serviceInstance(execution.getVariable("serviceInstanceId"))) getAAIClient().delete(serviceInstanceUri) execution.setVariable("progress", "100") diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteDeviceResource.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteDeviceResource.groovy index 99289b85b1..036fa51482 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteDeviceResource.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteDeviceResource.groovy @@ -41,6 +41,8 @@ import org.onap.aaiclient.client.aai.AAIObjectType import org.onap.aaiclient.client.aai.AAIResourcesClient 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.slf4j.Logger import org.slf4j.LoggerFactory import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils @@ -115,7 +117,7 @@ public class DeleteDeviceResource extends AbstractServiceTaskProcessor { String deviceId = execution.getVariable(Prefix + "DeviceId") AAIResourcesClient client = new AAIResourcesClient() - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.DEVICE, deviceId) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().device(deviceId)) Device dev = client.get(uri).asBean(Device.class).get() String devClass = dev.getClass () diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteSDNCNetworkResource.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteSDNCNetworkResource.groovy index cc5b8cf1e8..6d699d351d 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteSDNCNetworkResource.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteSDNCNetworkResource.groovy @@ -43,6 +43,8 @@ import org.onap.aaiclient.client.aai.AAIResourcesClient 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 org.slf4j.Logger import org.slf4j.LoggerFactory @@ -149,7 +151,7 @@ public class DeleteSDNCNetworkResource extends AbstractServiceTaskProcessor { try { String parentServiceId = ""; AAIResourcesClient resourceClient = new AAIResourcesClient(); - AAIResourceUri serviceInstanceUri = AAIUriFactory.createResourceUri(AAIObjectType.ALLOTTED_RESOURCE, globalCustId, serviceType, serviceInstanceId, allotedResourceId) + AAIResourceUri serviceInstanceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalCustId).serviceSubscription(serviceType).serviceInstance(serviceInstanceId).allottedResource(allotedResourceId)) AAIResultWrapper aaiResult = resourceClient.get(serviceInstanceUri, NotFoundException.class) Optional<AllottedResource> si = aaiResult.asBean(AllottedResource.class) if((si.present) && (null != si.get().getRelationshipList()) && (null != si.get().getRelationshipList().getRelationship())) { 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 d22ee5e82f..4c008a2eb9 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,29 +20,28 @@ package org.onap.so.bpmn.infrastructure.scripts +import static org.apache.commons.lang3.StringUtils.isBlank +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.ServiceProfile import org.onap.aai.domain.yang.ServiceProfiles +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.AAIUriFactory +import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder +import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder.Types 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.scripts.RequestDBUtil import org.onap.so.bpmn.core.WorkflowException import org.onap.so.bpmn.core.json.JsonUtils -import org.onap.aaiclient.client.aai.AAIObjectType -import org.onap.aaiclient.client.aai.AAIResourcesClient -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.so.db.request.beans.OperationStatus import org.slf4j.Logger import org.slf4j.LoggerFactory -import javax.ws.rs.NotFoundException - -import static org.apache.commons.lang3.StringUtils.isBlank - class DeleteSliceService extends AbstractServiceTaskProcessor { private final String PREFIX ="DeleteSliceService" @@ -122,7 +121,7 @@ class DeleteSliceService extends AbstractServiceTaskProcessor { LOGGER.trace("${PREFIX} Start deleteSliceServiceInstance") try { - AAIResourceUri serviceInstanceUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, execution.getVariable("globalSubscriberId"), execution.getVariable("serviceType"), execution.getVariable("serviceInstanceId")) + AAIResourceUri serviceInstanceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(execution.getVariable("globalSubscriberId")).serviceSubscription(execution.getVariable("serviceType")).serviceInstance(execution.getVariable("serviceInstanceId"))) getAAIClient().delete(serviceInstanceUri) execution.setVariable("progress", "100") @@ -169,7 +168,7 @@ class DeleteSliceService extends AbstractServiceTaskProcessor { try { - AAIResourceUri resourceUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_PROFILE_ALL, globalSubscriberId, serviceType, serviceInstanceId) + AAIPluralResourceUri resourceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(serviceType).serviceInstance(serviceInstanceId).serviceProfiles()) AAIResultWrapper wrapper = getAAIClient().get(resourceUri, NotFoundException.class) Optional<ServiceProfiles> serviceProfilesOpt =wrapper.asBean(ServiceProfiles.class) if(serviceProfilesOpt.isPresent()){ @@ -177,7 +176,7 @@ class DeleteSliceService extends AbstractServiceTaskProcessor { ServiceProfile serviceProfile = serviceProfiles.getServiceProfile().get(0) profileId = serviceProfile ? serviceProfile.getProfileId() : "" } - resourceUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_PROFILE, globalSubscriberId, serviceType, serviceInstanceId, profileId) + resourceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(serviceType).serviceInstance(serviceInstanceId).serviceProfile(profileId)) if (!getAAIClient().exists(resourceUri)) { exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Service Instance was not found in aai") } diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteVfModuleVolumeInfraV1.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteVfModuleVolumeInfraV1.groovy index 005f0f3c6b..1bcf615cd2 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteVfModuleVolumeInfraV1.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteVfModuleVolumeInfraV1.groovy @@ -31,6 +31,7 @@ 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 org.onap.logging.filter.base.ErrorCode import org.onap.so.bpmn.common.scripts.AaiUtil; import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor; @@ -197,7 +198,7 @@ public class DeleteVfModuleVolumeInfraV1 extends AbstractServiceTaskProcessor { AaiUtil aaiUtil = new AaiUtil(this) - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.CLOUD_REGION, Defaults.CLOUD_OWNER.toString(), cloudRegion) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.cloudInfrastructure().cloudRegion(Defaults.CLOUD_OWNER.toString(), cloudRegion)) def queryCloudRegionRequest = aaiUtil.createAaiUri(uri) execution.setVariable("DELVfModVol_queryCloudRegionRequest", queryCloudRegionRequest) @@ -240,7 +241,7 @@ public class DeleteVfModuleVolumeInfraV1 extends AbstractServiceTaskProcessor { String cloudRegion = execution.getVariable('DELVfModVol_aicCloudRegion') try { - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.VOLUME_GROUP, Defaults.CLOUD_OWNER.toString(), cloudRegion, volumeGroupId) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.cloudInfrastructure().cloudRegion(Defaults.CLOUD_OWNER.toString(), cloudRegion).volumeGroup(volumeGroupId)) AAIResultWrapper volumeGroupWrapper = getAAIClient().get(uri) if (!volumeGroupWrapper.isEmpty()) { @@ -249,7 +250,7 @@ public class DeleteVfModuleVolumeInfraV1 extends AbstractServiceTaskProcessor { def heatStackId = volumeGroupOp.get().getHeatStackId() ?: "" execution.setVariable('DELVfModVol_volumeGroupHeatStackId', heatStackId) - if ( volumeGroupWrapper.getRelationships().isPresent() && !volumeGroupWrapper.getRelationships().get().getRelatedAAIUris(AAIObjectType.VF_MODULE).isEmpty()) { + if ( volumeGroupWrapper.getRelationships().isPresent() && !volumeGroupWrapper.getRelationships().get().getRelatedUris(Types.VF_MODULE).isEmpty()) { logger.debug('Volume Group ' + volumeGroupId + ' currently in use') exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Volume Group ${volumeGroupId} currently in use - found vf-module relationship.") } @@ -283,7 +284,7 @@ public class DeleteVfModuleVolumeInfraV1 extends AbstractServiceTaskProcessor { */ private String getTenantIdFromVolumeGroup(AAIResultWrapper wrapper) { if(wrapper.getRelationships().isPresent()) { - List<AAIResourceUri> tenantURIList = wrapper.getRelationships().get().getRelatedAAIUris(AAIObjectType.TENANT) + List<AAIResourceUri> tenantURIList = wrapper.getRelationships().get().getRelatedUris(Types.TENANT) if(!tenantURIList.isEmpty()){ return tenantURIList.get(0).getURIKeys().get(AAIFluentTypeBuilder.Types.TENANT.getUriParams().tenantId) } @@ -356,7 +357,7 @@ public class DeleteVfModuleVolumeInfraV1 extends AbstractServiceTaskProcessor { ExceptionUtil exceptionUtil = new ExceptionUtil() try { - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.VOLUME_GROUP, Defaults.CLOUD_OWNER.toString(), cloudRegion, groupId) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.cloudInfrastructure().cloudRegion(Defaults.CLOUD_OWNER.toString(), cloudRegion).volumeGroup(groupId)) getAAIClient().delete(uri) logger.debug("Volume group $groupId deleted.") }catch(NotFoundException e){ diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoActivateAccessNSSI.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoActivateAccessNSSI.groovy index 4d86fb4cd9..9ccc6951ea 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoActivateAccessNSSI.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoActivateAccessNSSI.groovy @@ -19,7 +19,6 @@ */ package org.onap.so.bpmn.infrastructure.scripts - import static org.apache.commons.lang3.StringUtils.isBlank import javax.ws.rs.NotFoundException @@ -33,6 +32,8 @@ import org.onap.aaiclient.client.aai.AAIResourcesClient 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 org.onap.so.beans.nsmf.ActDeActNssi import org.onap.so.beans.nsmf.EsrInfo import org.onap.so.beans.nsmf.ServiceInfo @@ -49,6 +50,7 @@ import org.slf4j.LoggerFactory import com.fasterxml.jackson.databind.ObjectMapper import com.google.gson.JsonObject + /** * Internal AN NSSMF to handle NSSI Activation/Deactivation * @@ -421,8 +423,7 @@ class DoActivateAccessNSSI extends AbstractServiceTaskProcessor { try { AAIResourcesClient client = new AAIResourcesClient() - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, - globalSubscriberId, subscriptionServiceType, serviceId) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(subscriptionServiceType).serviceInstance(serviceId)) if (!client.exists(uri)) { exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Service Instance was not found in aai") } @@ -488,8 +489,7 @@ class DoActivateAccessNSSI extends AbstractServiceTaskProcessor { Map<String,ServiceInstance> relatedInstances = new HashMap<>() AAIResourcesClient client = getAAIClient() - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, - globalSubscriberId, subscriptionServiceType, instanceId) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(subscriptionServiceType).serviceInstance(instanceId)) if (!client.exists(uri)) { exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Service Instance was not found in aai : ${instanceId}") } @@ -504,8 +504,7 @@ class DoActivateAccessNSSI extends AbstractServiceTaskProcessor { String relatioshipurl = relationship.getRelatedLink() String serviceInstanceId = relatioshipurl.substring(relatioshipurl.lastIndexOf("/") + 1, relatioshipurl.length()) - uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, - globalSubscriberId, subscriptionServiceType, serviceInstanceId) + 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: ${serviceInstanceId} related to ${instanceId}") diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoActivateCoreNSSI.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoActivateCoreNSSI.groovy index 306c53a73c..5e50b9d52d 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoActivateCoreNSSI.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoActivateCoreNSSI.groovy @@ -20,15 +20,31 @@ package org.onap.so.bpmn.infrastructure.scripts +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.json.JSONObject +import org.onap.aai.domain.yang.GenericVnf +import org.onap.aai.domain.yang.RelatedToProperty +import org.onap.aai.domain.yang.Relationship +import org.onap.aai.domain.yang.RelationshipData +import org.onap.aai.domain.yang.ServiceInstance +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 import org.onap.logging.filter.base.ONAPComponents import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor import org.onap.so.bpmn.common.scripts.CatalogDbUtils import org.onap.so.bpmn.common.scripts.CatalogDbUtilsFactory import org.onap.so.bpmn.common.scripts.ExceptionUtil import org.onap.so.bpmn.common.scripts.RequestDBUtil +import org.onap.so.bpmn.core.UrnPropertiesReader +import org.onap.so.bpmn.core.json.JsonUtils +import org.onap.so.client.HttpClient +import org.onap.so.db.request.beans.ResourceOperationStatus import org.onap.so.serviceinstancebeans.CloudConfiguration import org.onap.so.serviceinstancebeans.LineOfBusiness import org.onap.so.serviceinstancebeans.ModelInfo @@ -36,37 +52,14 @@ import org.onap.so.serviceinstancebeans.ModelType import org.onap.so.serviceinstancebeans.OwningEntity import org.onap.so.serviceinstancebeans.Platform import org.onap.so.serviceinstancebeans.Project -import org.onap.so.bpmn.core.json.JsonUtils -import org.onap.so.bpmn.core.UrnPropertiesReader -import org.onap.so.rest.catalog.beans.Vnf import org.onap.so.serviceinstancebeans.RequestDetails import org.onap.so.serviceinstancebeans.RequestInfo import org.onap.so.serviceinstancebeans.RequestParameters import org.onap.so.serviceinstancebeans.SubscriberInfo -import org.onap.aai.domain.yang.GenericVnf -import org.onap.aai.domain.yang.RelatedToProperty -import org.onap.aai.domain.yang.Relationship -import org.onap.aai.domain.yang.RelationshipData -import org.onap.aai.domain.yang.RelationshipList -import org.onap.aai.domain.yang.ServiceInstance -import org.onap.aai.domain.yang.v19.SliceProfile -import org.onap.aai.domain.yang.v19.SliceProfiles import org.slf4j.Logger import org.slf4j.LoggerFactory -import org.onap.so.client.HttpClient -import org.onap.so.client.HttpClientFactory -import org.onap.so.db.request.beans.OperationStatus -import org.onap.so.db.request.beans.ResourceOperationStatus -import org.onap.aaiclient.client.aai.AAIObjectType -import org.onap.aaiclient.client.aai.AAIResourcesClient -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 com.fasterxml.jackson.databind.ObjectMapper -import javax.ws.rs.NotFoundException -import javax.ws.rs.core.Response - class DoActivateCoreNSSI extends AbstractServiceTaskProcessor { String Prefix="DACTCNSSI_" private static final Logger logger = LoggerFactory.getLogger(DoActivateCoreNSSI.class); @@ -117,7 +110,7 @@ class DoActivateCoreNSSI extends AbstractServiceTaskProcessor { //NSSI Id as service Instance Id to get from Request String serviceInstanceId = execution.getVariable("serviceInstanceID") String errorMsg = "query Network Service Instance from AAI failed" - AAIResultWrapper wrapper = queryAAI(execution, AAIObjectType.SERVICE_INSTANCE, serviceInstanceId, errorMsg) + AAIResultWrapper wrapper = queryAAI(execution, Types.SERVICE_INSTANCE, serviceInstanceId, errorMsg) Optional<ServiceInstance> nsi = wrapper.asBean(ServiceInstance.class) String networkServiceInstanceName = "" String networkServiceInstanceId ="" @@ -156,7 +149,7 @@ class DoActivateCoreNSSI extends AbstractServiceTaskProcessor { String errorSliceProfileMsg = "Slice Profile Service Instance was not found in aai" //Query Slice Profile Service Instance From AAI by sliceProfileServiceInstanceId - AAIResultWrapper sliceProfileInstanceWrapper = queryAAI(execution, AAIObjectType.SERVICE_INSTANCE, sliceProfileServiceInstanceId, errorSliceProfileMsg) + AAIResultWrapper sliceProfileInstanceWrapper = queryAAI(execution, Types.SERVICE_INSTANCE, sliceProfileServiceInstanceId, errorSliceProfileMsg) Optional<ServiceInstance> sliceProfileServiceInstance = sliceProfileInstanceWrapper.asBean(ServiceInstance.class) if (sliceProfileServiceInstance.isPresent()) { String orchestrationStatus= sliceProfileServiceInstance.get().getOrchestrationStatus() @@ -205,7 +198,7 @@ class DoActivateCoreNSSI extends AbstractServiceTaskProcessor { String serviceInstanceId = execution.getVariable("networkServiceInstanceId") logger.debug("**** serviceInstanceId :: getServiceInstanceRelationships :: "+serviceInstanceId) String errorMsg = "query Network Service Instance from AAI failed" - AAIResultWrapper wrapper = queryAAI(execution, AAIObjectType.SERVICE_INSTANCE, serviceInstanceId, errorMsg) + AAIResultWrapper wrapper = queryAAI(execution, Types.SERVICE_INSTANCE, serviceInstanceId, errorMsg) Optional<ServiceInstance> si = wrapper.asBean(ServiceInstance.class) String networkServiceModelInvariantUuid = si.get().getModelInvariantId() @@ -251,7 +244,7 @@ class DoActivateCoreNSSI extends AbstractServiceTaskProcessor { logger.debug(Prefix +" **** Enter DoActivateCoreNSSI ::: getVnfRelationships ****") String msg = "query Generic Vnf from AAI failed" try { - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, execution.getVariable('vnfId')) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().genericVnf(execution.getVariable('vnfId'))) if (!getAAIClient().exists(uri)) { exceptionUtil.buildAndThrowWorkflowException(execution, 2500, msg) } @@ -313,13 +306,13 @@ class DoActivateCoreNSSI extends AbstractServiceTaskProcessor { * @param instanceId * @return AAIResultWrapper */ - private AAIResultWrapper queryAAI(DelegateExecution execution, AAIObjectType aaiObjectType, String instanceId, String errorMsg) { + private AAIResultWrapper queryAAI(DelegateExecution execution, AAIObjectName aaiObjectName, String instanceId, String errorMsg) { logger.debug(Prefix +" **** Enter DoActivateCoreNSSI ::: queryAAI ****") String globalSubscriberId = execution.getVariable("globalSubscriberId") String serviceType = execution.getVariable("serviceType") - AAIResourceUri resourceUri = AAIUriFactory.createResourceUri(aaiObjectType, globalSubscriberId, serviceType, instanceId) + AAIResourceUri resourceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(serviceType).serviceInstance(instanceId)) if (!getAAIClient().exists(resourceUri)) { exceptionUtil.buildAndThrowWorkflowException(execution, 2500, errorMsg) } @@ -615,8 +608,7 @@ class DoActivateCoreNSSI extends AbstractServiceTaskProcessor { String sliceProfileInstanceId = si.getServiceInstanceId() si.setOrchestrationStatus(oStatus) - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, - globalCustId, serviceType, sliceProfileInstanceId) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalCustId).serviceSubscription(serviceType).serviceInstance(sliceProfileInstanceId)) try { Response response = getAAIClient().update(uri, si) 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 04fe161295..0900863a62 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 @@ -29,6 +29,8 @@ import org.onap.aaiclient.client.aai.AAIObjectType import org.onap.aaiclient.client.aai.AAIResourcesClient 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.so.bpmn.common.scripts.AbstractServiceTaskProcessor import org.onap.so.bpmn.common.scripts.ExceptionUtil import org.onap.so.bpmn.common.scripts.RequestDBUtil @@ -37,6 +39,7 @@ import org.onap.so.db.request.beans.ResourceOperationStatus import org.slf4j.Logger import org.slf4j.LoggerFactory + public class DoActivateTnNssi extends AbstractServiceTaskProcessor { String Prefix = "TNACT_" @@ -124,7 +127,7 @@ public class DoActivateTnNssi extends AbstractServiceTaskProcessor { ServiceInstance si = new ServiceInstance() si.setOrchestrationStatus(orchStatus) AAIResourcesClient client = getAAIClient() - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, tnNssiId) + AAIResourceUri uri = AAIUriFactory.createResourceUri(Types.SERVICE_INSTANCE.getFragment(tnNssiId)) client.update(uri, si) } catch (BpmnError e) { throw e diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateAccessNSSI.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateAccessNSSI.groovy index 3df0d3d6f0..fc14da3a7d 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateAccessNSSI.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateAccessNSSI.groovy @@ -47,6 +47,8 @@ import org.onap.so.bpmn.core.domain.ServiceDecomposition import org.onap.so.bpmn.core.domain.ServiceInstance import org.onap.so.bpmn.core.domain.ServiceProxy 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.aaiclient.client.aai.AAINamespaceConstants import org.onap.aaiclient.client.aai.AAIObjectType import org.onap.aai.domain.yang.NetworkPolicy @@ -549,7 +551,7 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor { try { AAIResourcesClient client = new AAIResourcesClient() - AAIResourceUri nssiServiceUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, execution.getVariable("globalSubscriberId"), execution.getVariable("subscriptionServiceType"), execution.getVariable("RANServiceInstanceId")) + AAIResourceUri nssiServiceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(execution.getVariable("globalSubscriberId")).serviceSubscription(execution.getVariable("subscriptionServiceType")).serviceInstance(execution.getVariable("RANServiceInstanceId"))) client.create(nssiServiceUri, ANServiceInstance) } catch (BpmnError e) { @@ -630,10 +632,10 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor { try { AAIResourcesClient client = new AAIResourcesClient() - AAIResourceUri nssiServiceUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, execution.getVariable("globalSubscriberId"), execution.getVariable("subscriptionServiceType"), execution.getVariable("RANServiceInstanceId")) + AAIResourceUri nssiServiceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(execution.getVariable("globalSubscriberId")).serviceSubscription(execution.getVariable("subscriptionServiceType")).serviceInstance(execution.getVariable("RANServiceInstanceId"))) client.create(nssiServiceUri, ANServiceInstance) - AAIResourceUri nssiServiceUri1 = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, execution.getVariable("globalSubscriberId"), execution.getVariable("subscriptionServiceType"), execution.getVariable("RANNFServiceInstanceId")) + AAIResourceUri nssiServiceUri1 = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(execution.getVariable("globalSubscriberId")).serviceSubscription(execution.getVariable("subscriptionServiceType")).serviceInstance(execution.getVariable("RANNFServiceInstanceId"))) client.create(nssiServiceUri1, ANNFServiceInstance) } catch (BpmnError e) { 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 2a31997cd5..b5e1e6b82a 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 @@ -54,6 +54,8 @@ import org.onap.aaiclient.client.aai.AAIObjectType import org.onap.aaiclient.client.aai.entities.AAIResultWrapper import org.onap.aaiclient.client.aai.entities.AAIEdgeLabel 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.so.bpmn.core.domain.ServiceDecomposition import org.onap.so.bpmn.core.domain.ServiceProxy import org.onap.so.bpmn.core.json.JsonUtils @@ -125,7 +127,7 @@ class DoAllocateCoreNonSharedSlice extends AbstractServiceTaskProcessor { si.setEnvironmentContext(environmentContext) si.setWorkloadContext(workloadContext) logger.debug("AAI service Instance Request Payload : "+si.toString()) - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, execution.getVariable("globalSubscriberId"), serviceType, serviceInstanceId) + 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") @@ -353,8 +355,7 @@ class DoAllocateCoreNonSharedSlice extends AbstractServiceTaskProcessor { ServiceInstance si = execution.getVariable("nssiServiceInstance") si.setOrchestrationStatus("activated") - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, - globalCustId, serviceType, networkServiceInstanceId) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalCustId).serviceSubscription(serviceType).serviceInstance(networkServiceInstanceId)) try { getAAIClient().update(uri, si) } catch (Exception e) { @@ -364,10 +365,10 @@ class DoAllocateCoreNonSharedSlice extends AbstractServiceTaskProcessor { } //URI for NSSI - AAIResourceUri nssiUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, nssiId); + AAIResourceUri nssiUri = AAIUriFactory.createResourceUri(Types.SERVICE_INSTANCE.getFragment(nssiId)); //URI for Network Service Instance - AAIResourceUri networkServiceInstanceUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, networkServiceInstanceId) + AAIResourceUri networkServiceInstanceUri = AAIUriFactory.createResourceUri(Types.SERVICE_INSTANCE.getFragment(networkServiceInstanceId)) // Update Relationship in AAI Response response = getAAIClient().connect(nssiUri, networkServiceInstanceUri, AAIEdgeLabel.COMPOSED_OF); 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 6367341228..5ecfc9a872 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 @@ -20,15 +20,32 @@ package org.onap.so.bpmn.infrastructure.scripts +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.json.JSONObject +import org.onap.aai.domain.yang.GenericVnf +import org.onap.aai.domain.yang.RelatedToProperty +import org.onap.aai.domain.yang.Relationship +import org.onap.aai.domain.yang.RelationshipData +import org.onap.aai.domain.yang.ServiceInstance +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 import org.onap.logging.filter.base.ONAPComponents import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor import org.onap.so.bpmn.common.scripts.CatalogDbUtils import org.onap.so.bpmn.common.scripts.CatalogDbUtilsFactory import org.onap.so.bpmn.common.scripts.ExceptionUtil import org.onap.so.bpmn.common.scripts.RequestDBUtil +import org.onap.so.bpmn.core.UrnPropertiesReader +import org.onap.so.bpmn.core.json.JsonUtils +import org.onap.so.client.HttpClient +import org.onap.so.db.request.beans.ResourceOperationStatus import org.onap.so.serviceinstancebeans.CloudConfiguration import org.onap.so.serviceinstancebeans.LineOfBusiness import org.onap.so.serviceinstancebeans.ModelInfo @@ -36,36 +53,14 @@ import org.onap.so.serviceinstancebeans.ModelType import org.onap.so.serviceinstancebeans.OwningEntity import org.onap.so.serviceinstancebeans.Platform import org.onap.so.serviceinstancebeans.Project -import org.onap.so.bpmn.core.json.JsonUtils -import org.onap.so.bpmn.core.UrnPropertiesReader -import org.onap.so.rest.catalog.beans.Vnf import org.onap.so.serviceinstancebeans.RequestDetails import org.onap.so.serviceinstancebeans.RequestInfo import org.onap.so.serviceinstancebeans.RequestParameters import org.onap.so.serviceinstancebeans.SubscriberInfo -import org.onap.aai.domain.yang.GenericVnf -import org.onap.aai.domain.yang.RelatedToProperty -import org.onap.aai.domain.yang.Relationship -import org.onap.aai.domain.yang.RelationshipData -import org.onap.aai.domain.yang.RelationshipList -import org.onap.aai.domain.yang.ServiceInstance import org.slf4j.Logger import org.slf4j.LoggerFactory -import org.onap.so.client.HttpClient -import org.onap.so.client.HttpClientFactory -import org.onap.so.db.request.beans.OperationStatus -import org.onap.so.db.request.beans.ResourceOperationStatus -import org.onap.aaiclient.client.aai.AAIObjectType -import org.onap.aaiclient.client.aai.AAIResourcesClient -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 com.fasterxml.jackson.databind.ObjectMapper -import static org.apache.commons.lang3.StringUtils.isBlank - -import javax.ws.rs.NotFoundException -import javax.ws.rs.core.Response class DoAllocateCoreSharedSlice extends AbstractServiceTaskProcessor { @@ -123,7 +118,7 @@ class DoAllocateCoreSharedSlice extends AbstractServiceTaskProcessor { String serviceInstanceId = execution.getVariable("serviceInstanceID") String errorMsg = "query Network Service Instance from AAI failed" - AAIResultWrapper wrapper = queryAAI(execution, AAIObjectType.SERVICE_INSTANCE, serviceInstanceId, errorMsg) + AAIResultWrapper wrapper = queryAAI(execution, Types.SERVICE_INSTANCE, serviceInstanceId, errorMsg) Optional<ServiceInstance> nsi = wrapper.asBean(ServiceInstance.class) String networkServiceInstanceName = "" @@ -163,7 +158,7 @@ class DoAllocateCoreSharedSlice extends AbstractServiceTaskProcessor { String errorSliceProfileMsg = "Slice Profile Service Instance was not found in aai" //Query Slice Profile Service Instance From AAI by sliceProfileServiceInstanceId - AAIResultWrapper sliceProfileInstanceWrapper = queryAAI(execution, AAIObjectType.SERVICE_INSTANCE, sliceProfileServiceInstanceId, errorSliceProfileMsg) + AAIResultWrapper sliceProfileInstanceWrapper = queryAAI(execution, Types.SERVICE_INSTANCE, sliceProfileServiceInstanceId, errorSliceProfileMsg) Optional<ServiceInstance> sliceProfileServiceInstance = sliceProfileInstanceWrapper.asBean(ServiceInstance.class) if (sliceProfileServiceInstance.isPresent()) { String orchestrationStatus= sliceProfileServiceInstance.get().getOrchestrationStatus() @@ -204,7 +199,7 @@ class DoAllocateCoreSharedSlice extends AbstractServiceTaskProcessor { String serviceInstanceId = execution.getVariable("networkServiceInstanceId") String errorMsg = "query Network Service Instance from AAI failed" - AAIResultWrapper wrapper = queryAAI(execution, AAIObjectType.SERVICE_INSTANCE, serviceInstanceId, errorMsg) + AAIResultWrapper wrapper = queryAAI(execution, Types.SERVICE_INSTANCE, serviceInstanceId, errorMsg) Optional<ServiceInstance> si = wrapper.asBean(ServiceInstance.class) String networkServiceModelInvariantUuid = si.get().getModelInvariantId() @@ -256,7 +251,7 @@ class DoAllocateCoreSharedSlice extends AbstractServiceTaskProcessor { logger.debug(Prefix+" **** Enter DoAllocateCoreSharedSlice ::: getVnfRelationships ****") String msg = "query Generic Vnf from AAI failed" try { - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, execution.getVariable('vnfId')) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().genericVnf(execution.getVariable('vnfId'))) if (!getAAIClient().exists(uri)) { exceptionUtil.buildAndThrowWorkflowException(execution, 2500, msg) } @@ -313,15 +308,15 @@ class DoAllocateCoreSharedSlice extends AbstractServiceTaskProcessor { /** * query AAI * @param execution - * @param aaiObjectType + * @param aaiObjectName * @param instanceId * @return AAIResultWrapper */ - private AAIResultWrapper queryAAI(DelegateExecution execution, AAIObjectType aaiObjectType, String instanceId, String errorMsg) { + private AAIResultWrapper queryAAI(DelegateExecution execution, AAIObjectName aaiObjectName, String instanceId, String errorMsg) { logger.debug(Prefix+" **** Enter DoAllocateCoreSharedSlice ::: queryAAI ****") String globalSubscriberId = execution.getVariable("globalSubscriberId") String serviceType = execution.getVariable("serviceType") - AAIResourceUri resourceUri = AAIUriFactory.createResourceUri(aaiObjectType, globalSubscriberId, serviceType, instanceId) + AAIResourceUri resourceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(serviceType).serviceInstance(instanceId)) if (!getAAIClient().exists(resourceUri)) { exceptionUtil.buildAndThrowWorkflowException(execution, 2500, errorMsg) } 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 4a8469cc8d..d0c189cb04 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 @@ -2,56 +2,65 @@ * ============LICENSE_START======================================================= * ONAP - SO * ================================================================================ - * Copyright (C) 2019 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. + # 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 org.onap.so.beans.nsmf.oof.SubnetType +import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor +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.Relationship -import org.onap.aai.domain.yang.RelationshipList import org.onap.aai.domain.yang.ServiceInstance -import org.onap.so.beans.nsmf.SliceTaskParams -import org.onap.so.bpmn.common.scripts.ExceptionUtil -import org.onap.so.bpmn.common.scripts.NssmfAdapterUtils -import org.onap.so.bpmn.core.domain.ServiceDecomposition -import org.onap.so.bpmn.core.domain.ServiceProxy -import org.onap.so.bpmn.core.json.JsonUtils -import org.onap.aaiclient.client.aai.AAIObjectType +import org.onap.aai.domain.yang.SliceProfile import org.onap.aaiclient.client.aai.AAIResourcesClient 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.so.beans.nsmf.AllocateAnNssi +import org.onap.so.beans.nsmf.AllocateCnNssi +import org.onap.so.beans.nsmf.AllocateTnNssi +import org.onap.so.beans.nsmf.AnSliceProfile +import org.onap.so.beans.nsmf.CnSliceProfile +import org.onap.so.beans.nsmf.EsrInfo +import org.onap.so.beans.nsmf.NssiResponse +import org.onap.so.beans.nsmf.NssmfAdapterNBIRequest +import org.onap.so.beans.nsmf.ResponseDescriptor +import org.onap.so.beans.nsmf.ServiceInfo +import org.onap.so.beans.nsmf.SliceTaskInfo +import org.onap.so.beans.nsmf.SliceTaskParamsAdapter +import org.onap.so.beans.nsmf.TnSliceProfile +import org.onap.so.bpmn.common.scripts.ExceptionUtil +import org.onap.so.bpmn.core.json.JsonUtils import org.slf4j.Logger import org.slf4j.LoggerFactory - -import javax.ws.rs.NotFoundException - import static org.apache.commons.lang3.StringUtils.isBlank -class DoAllocateNSIandNSSI extends org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor{ +class DoAllocateNSIandNSSI extends AbstractServiceTaskProcessor{ - private static final Logger logger = LoggerFactory.getLogger( DoAllocateNSIandNSSI.class); + private static final Logger logger = LoggerFactory.getLogger(DoAllocateNSIandNSSI.class); ExceptionUtil exceptionUtil = new ExceptionUtil() JsonUtils jsonUtil = new JsonUtils() - private NssmfAdapterUtils nssmfAdapterUtils = new NssmfAdapterUtils(httpClientFactory, jsonUtil) + AAIResourcesClient client = getAAIClient() /** * Pre Process the BPMN Flow Request @@ -72,165 +81,74 @@ class DoAllocateNSIandNSSI extends org.onap.so.bpmn.common.scripts.AbstractServi logger.trace("Exit preProcessRequest") } + /** + * Process NSI options + * @param execution + */ void retriveSliceOption(DelegateExecution execution) { logger.trace("Enter retriveSliceOption() of DoAllocateNSIandNSSI") - String uuiRequest = execution.getVariable("uuiRequest") - boolean isNSIOptionAvailable = false - List<String> nssiAssociated = new ArrayList<>() - SliceTaskParams sliceParams = execution.getVariable("sliceTaskParams") - try - { - Map<String, Object> nstSolution = execution.getVariable("nstSolution") as Map - String modelUuid = nstSolution.get("UUID") - String modelInvariantUuid = nstSolution.get("invariantUUID") - String serviceModelInfo = """{ - "modelInvariantUuid":"${modelInvariantUuid}", - "modelUuid":"${modelUuid}", - "modelVersion":"" - }""" - execution.setVariable("serviceModelInfo", serviceModelInfo) - //Params sliceParams = new Gson().fromJson(params, new TypeToken<Params>() {}.getType()); - execution.setVariable("sliceParams", sliceParams) - }catch (Exception ex) { - logger.debug( "Unable to get the task information from request DB: " + ex) - exceptionUtil.buildAndThrowWorkflowException(execution, 401, "Unable to get task information from request DB.") - } - if(isBlank(sliceParams.getSuggestNsiId())) - { - isNSIOptionAvailable=false - } - else - { - isNSIOptionAvailable=true - execution.setVariable('nsiServiceInstanceId',sliceParams.getSuggestNsiId()) - execution.setVariable('nsiServiceInstanceName',sliceParams.getSuggestNsiName()) - } - execution.setVariable("isNSIOptionAvailable",isNSIOptionAvailable) - logger.trace("Exit retriveSliceOption() of DoAllocateNSIandNSSI") - } + boolean isNSIOptionAvailable - void updateRelationship(DelegateExecution execution) { - logger.debug("Enter update relationship in DoAllocateNSIandNSSI()") - String allottedResourceId = execution.getVariable("allottedResourceId") - //Need to check whether nsi exist : Begin - org.onap.aai.domain.yang.ServiceInstance nsiServiceInstance = new org.onap.aai.domain.yang.ServiceInstance() - SliceTaskParams sliceParams = execution.getVariable("sliceParams") - String nsiServiceInstanceID = sliceParams.getSuggestNsiId() - - AAIResourcesClient resourceClient = new AAIResourcesClient() - AAIResourceUri nsiServiceuri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, execution.getVariable("globalSubscriberId"), execution.getVariable("subscriptionServiceType"), nsiServiceInstanceID) - //AAIResourceUri nsiServiceuri = AAIUriFactory.createResourceUri(AAIObjectType.QUERY_ALLOTTED_RESOURCE, execution.getVariable("globalSubscriberId"), execution.getVariable("serviceType"), nsiServiceInstanceID) + SliceTaskParamsAdapter sliceParams = + execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter - try { - AAIResultWrapper wrapper = resourceClient.get(nsiServiceuri, NotFoundException.class) - Optional<org.onap.aai.domain.yang.ServiceInstance> si = wrapper.asBean(org.onap.aai.domain.yang.ServiceInstance.class) - nsiServiceInstance = si.get() - //allottedResourceId=nsiServiceInstance.getAllottedResources().getAllottedResource().get(0).getId() - -// if(resourceClient.exists(nsiServiceuri)){ -// execution.setVariable("nsi_resourceLink", nsiServiceuri.build().toString()) -// }else{ -// exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Service instance was not found in aai to " + -// "associate for service :"+serviceInstanceId) -// } - - AAIResourceUri allottedResourceUri = AAIUriFactory.createResourceUri(AAIObjectType.ALLOTTED_RESOURCE, execution.getVariable("globalSubscriberId"), execution.getVariable("subscriptionServiceType"), execution.getVariable("sliceServiceInstanceId"), allottedResourceId) - getAAIClient().connect(allottedResourceUri,nsiServiceuri) - - List<String> nssiAssociated = new ArrayList<>() - RelationshipList relationshipList = nsiServiceInstance.getRelationshipList() - List<Relationship> relationships = relationshipList.getRelationship() - for(Relationship relationship in relationships) - { - if(relationship.getRelatedTo().equalsIgnoreCase("service-instance")) - { - String NSSIassociated = relationship.getRelatedLink().substring(relationship.getRelatedLink().lastIndexOf("/") + 1); - if(!NSSIassociated.equals(nsiServiceInstanceID)) - nssiAssociated.add(NSSIassociated) - } + if(isBlank(sliceParams.getSuggestNsiId())) { + isNSIOptionAvailable = false } - execution.setVariable("nssiAssociated",nssiAssociated) - execution.setVariable("nsiServiceInstanceName",nsiServiceInstance.getServiceInstanceName()) - }catch(BpmnError e) { - throw e - }catch (Exception ex){ - String msg = "NSI suggested in the option doesn't exist. " + nsiServiceInstanceID - logger.debug(msg) - exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + else { + isNSIOptionAvailable = true + execution.setVariable('nsiServiceInstanceId', sliceParams.getSuggestNsiId()) + execution.setVariable('nsiServiceInstanceName', sliceParams.getSuggestNsiName()) } - logger.debug("Exit update relationship in DoAllocateNSIandNSSI()") + execution.setVariable("isNSIOptionAvailable", isNSIOptionAvailable) + logger.trace("Exit retriveSliceOption() of DoAllocateNSIandNSSI") } - void prepareNssiModelInfo(DelegateExecution execution){ - logger.trace("Enter prepareNssiModelInfo in DoAllocateNSIandNSSI()") - List<String> nssiAssociated = new ArrayList<>() - Map<String, Object> nssiMap = new HashMap<>() - nssiAssociated=execution.getVariable("nssiAssociated") - for(String nssiID in nssiAssociated) - { - try { - AAIResourcesClient resourceClient = new AAIResourcesClient() - AAIResourceUri serviceInstanceUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, execution.getVariable("globalSubscriberId"), execution.getVariable("subscriptionServiceType"), nssiID) - AAIResultWrapper wrapper = resourceClient.get(serviceInstanceUri, NotFoundException.class) - Optional<org.onap.aai.domain.yang.ServiceInstance> si = wrapper.asBean(org.onap.aai.domain.yang.ServiceInstance.class) - org.onap.aai.domain.yang.ServiceInstance nssi = si.get() - nssiMap.put(nssi.getEnvironmentContext(),"""{ - "serviceInstanceId":"${nssi.getServiceInstanceId()}", - "modelUuid":"${nssi.getModelVersionId()}" - }""") - - }catch(NotFoundException e) - { - logger.debug("NSSI Service Instance not found in AAI: " + nssiID) - }catch(Exception e) - { - logger.debug("NSSI Service Instance not found in AAI: " + nssiID) - } - execution.setVariable("nssiMap",nssiMap) - - } - logger.trace("Exit prepareNssiModelInfo in DoAllocateNSIandNSSI()") - } + /** + * create nsi instance in aai + * @param execution + */ void createNSIinAAI(DelegateExecution execution) { logger.debug("Enter CreateNSIinAAI in DoAllocateNSIandNSSI()") - ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition") - org.onap.aai.domain.yang.ServiceInstance nsi = new ServiceInstance(); + String sliceInstanceId = UUID.randomUUID().toString() - execution.setVariable("sliceInstanceId",sliceInstanceId) - nsi.setServiceInstanceId(sliceInstanceId) + SliceTaskParamsAdapter sliceParams = + execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter + + //set new nsiId to sliceParams suggestNsiId + sliceParams.setSuggestNsiId(sliceInstanceId) + + ServiceInstance nsi = new ServiceInstance() + + String sliceInstanceName = "nsi_"+execution.getVariable("sliceServiceInstanceName") - nsi.setServiceInstanceName(sliceInstanceName) String serviceType = execution.getVariable("serviceType") - nsi.setServiceType(serviceType) String serviceStatus = "deactivated" + String modelInvariantUuid = sliceParams.getNSTInfo().invariantUUID + String modelUuid = sliceParams.getNSTInfo().UUID + + String uuiRequest = execution.getVariable("uuiRequest") + String serviceInstanceLocationid = jsonUtil.getJsonValue(uuiRequest, "service.parameters.requestInputs.plmnIdList") + String serviceRole = "nsi" + + execution.setVariable("sliceInstanceId", sliceInstanceId) + nsi.setServiceInstanceId(sliceInstanceId) + nsi.setServiceInstanceName(sliceInstanceName) + nsi.setServiceType(serviceType) nsi.setOrchestrationStatus(serviceStatus) - String modelInvariantUuid = serviceDecomposition.getModelInfo().getModelInvariantUuid() - String modelUuid = serviceDecomposition.getModelInfo().getModelUuid() nsi.setModelInvariantId(modelInvariantUuid) nsi.setModelVersionId(modelUuid) - String uuiRequest = execution.getVariable("uuiRequest") - String serviceInstanceLocationid = jsonUtil.getJsonValue(uuiRequest, "service.parameters.requestInputs.plmnIdList") nsi.setServiceInstanceLocationId(serviceInstanceLocationid) - //String snssai = jsonUtil.getJsonValue(uuiRequest, "service.requestInputs.snssai") - //nsi.setEnvironmentContext(snssai) - String serviceRole = "nsi" nsi.setServiceRole(serviceRole) - String msg = "" + String msg try { - AAIResourcesClient client = new AAIResourcesClient() - AAIResourceUri nsiServiceUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, execution.getVariable("globalSubscriberId"), execution.getVariable("subscriptionServiceType"), sliceInstanceId) + AAIResourceUri nsiServiceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(execution.getVariable("globalSubscriberId")).serviceSubscription(execution.getVariable("subscriptionServiceType")).serviceInstance(sliceInstanceId)) client.create(nsiServiceUri, nsi) - Relationship relationship = new Relationship() - logger.info("Creating Allotted resource relationship, nsiServiceUri: " + nsiServiceUri.build().toString()) - relationship.setRelatedLink(nsiServiceUri.build().toString()) - AAIResourceUri allottedResourceUri = AAIUriFactory.createResourceUri(AAIObjectType.ALLOTTED_RESOURCE, - execution.getVariable("globalSubscriberId"),execution.getVariable("subscriptionServiceType"), - execution.getVariable("sliceServiceInstanceId"), execution.getVariable("allottedResourceId")).relationshipAPI() - client.create(allottedResourceUri, relationship) + execution.setVariable("nsiServiceUri", nsiServiceUri) } catch (BpmnError e) { throw e @@ -239,124 +157,592 @@ class DoAllocateNSIandNSSI extends org.onap.so.bpmn.common.scripts.AbstractServi logger.info(msg) exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) } - Map<String, Object> nssiMap = new HashMap<>() - List<ServiceProxy> serviceProxyList = serviceDecomposition.getServiceProxy() - List<String> nsstModelInfoList = new ArrayList<>() - for(ServiceProxy serviceProxy : serviceProxyList) - { - //String nsstModelUuid = serviceProxy.getModelInfo().getModelUuid() - String nsstModelUuid = serviceProxy.getSourceModelUuid() - //String nsstModelInvariantUuid = serviceProxy.getModelInfo().getModelInvariantUuid() - String nsstServiceModelInfo = """{ - "modelInvariantUuid":"", - "modelUuid":"${nsstModelUuid}", - "modelVersion":"" - }""" - nsstModelInfoList.add(nsstServiceModelInfo) - } - int currentIndex=0 - int maxIndex=nsstModelInfoList.size() - if(maxIndex < 1) - { - msg = "Exception in DoAllocateNSIandNSSI. There is no NSST associated with NST " - logger.info(msg) + + logger.debug("Exit CreateNSIinAAI in DoAllocateNSIandNSSI()") + } + + + /** + * create relationship between nsi and service profile instance + * @param execution + */ + void createRelationship(DelegateExecution execution) { + //relation ship + String allottedResourceId = execution.getVariable("allottedResourceId") + SliceTaskParamsAdapter sliceParams = + execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter + + AAIResourceUri nsiServiceUri = execution.getVariable("nsiServiceUri") as AAIResourceUri + logger.info("Creating Allotted resource relationship, nsiServiceUri: " + nsiServiceUri) + + AAIResourceUri allottedResourceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(execution.getVariable("globalSubscriberId")).serviceSubscription(execution.getVariable("subscriptionServiceType")).serviceInstance(sliceParams.suggestNsiId).allottedResource(allottedResourceId)) + + client.connect(allottedResourceUri, nsiServiceUri) + } + + /** + * + * @param execution + */ + void updateRelationship(DelegateExecution execution) { + logger.debug("Enter update relationship in DoAllocateNSIandNSSI()") + //todo: allottedResourceId + String allottedResourceId = execution.getVariable("allottedResourceId") + //Need to check whether nsi exist : Begin + + SliceTaskParamsAdapter sliceParams = + execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter + + String nsiServiceInstanceID = sliceParams.getSuggestNsiId() + //sliceParams.setServiceId(nsiServiceInstanceID) + + AAIResourceUri nsiServiceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(execution.getVariable("globalSubscriberId")).serviceSubscription(execution.getVariable("subscriptionServiceType")).serviceInstance(nsiServiceInstanceID)) + + try { + AAIResultWrapper wrapper = client.get(nsiServiceUri, NotFoundException.class) + Optional<ServiceInstance> si = wrapper.asBean(ServiceInstance.class) + //todo: if exists + if (!si.ifPresent()) { + String msg = "NSI suggested in the option doesn't exist. " + nsiServiceInstanceID + logger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + + AAIResourceUri allottedResourceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(execution.getVariable("globalSubscriberId")).serviceSubscription(execution.getVariable("subscriptionServiceType")).serviceInstance(sliceParams.suggestNsiId).allottedResource(allottedResourceId)) + + client.connect(allottedResourceUri, nsiServiceUri) + + execution.setVariable("sliceTaskParams", sliceParams) + }catch(BpmnError e) { + throw e + }catch (Exception ex){ + String msg = "NSI suggested in the option doesn't exist. " + nsiServiceInstanceID + logger.debug(msg) exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) } - execution.setVariable("nsstModelInfoList",nsstModelInfoList) - execution.setVariable("currentIndex",currentIndex) - execution.setVariable("maxIndex",maxIndex) - execution.setVariable('nsiServiceInstanceId',sliceInstanceId) - execution.setVariable("nsiServiceInstanceName",sliceInstanceName) - logger.debug("Exit CreateNSIinAAI in DoAllocateNSIandNSSI()") + logger.debug("Exit update relationship in DoAllocateNSIandNSSI()") } - void getOneNsstInfo(DelegateExecution execution){ - List<String> nsstModelInfoList = new ArrayList<>() - nsstModelInfoList = execution.getVariable("nsstModelInfoList") - int currentIndex = execution.getVariable("currentIndex") - int maxIndex = execution.getVariable("maxIndex") - boolean isMoreNSSTtoProcess = true - String nsstServiceModelInfo = nsstModelInfoList.get(currentIndex) - execution.setVariable("serviceModelInfo", nsstServiceModelInfo) - execution.setVariable("currentIndex", currentIndex) - currentIndex = currentIndex+1 - if(currentIndex <= maxIndex ) - isMoreNSSTtoProcess = false - execution.setVariable("isMoreNSSTtoProcess", isMoreNSSTtoProcess) + /** + * create RAN Slice Profile Instance + * @param execution + */ + void createAnSliceProfileInstance(DelegateExecution execution) { + + String globalSubscriberId = execution.getVariable("globalSubscriberId") + String subscriptionServiceType = execution.getVariable("subscriptionServiceType") + String serviceInstanceId = UUID.randomUUID().toString() + execution.setVariable("ranSliceProfileInstanceId", serviceInstanceId) //todo: + + String serviceType = "" + String serviceRole = "slice-profile" + String oStatus = "deactivated" + + SliceTaskParamsAdapter sliceParams = + execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter + SliceTaskInfo<AnSliceProfile> sliceTaskInfo = sliceParams.anSliceTaskInfo + sliceTaskInfo.setSliceInstanceId(serviceInstanceId) + + // create slice profile + ServiceInstance rspi = new ServiceInstance() + rspi.setServiceInstanceName(sliceTaskInfo.NSSTInfo.name) + rspi.setServiceType(serviceType) + rspi.setServiceRole(serviceRole) + rspi.setOrchestrationStatus(oStatus) + rspi.setModelInvariantId(sliceTaskInfo.NSSTInfo.invariantUUID) + rspi.setModelVersionId(sliceTaskInfo.NSSTInfo.UUID) + rspi.setInputParameters(uuiRequest) + rspi.setWorkloadContext(useInterval) + rspi.setEnvironmentContext(sNSSAI_id) + + //timestamp format YYYY-MM-DD hh:mm:ss + rspi.setCreatedAt(new Date(System.currentTimeMillis()).format("yyyy-MM-dd HH:mm:ss", TimeZone.getDefault())) + + execution.setVariable("communicationServiceInstance", rspi) + + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(subscriptionServiceType).serviceInstance(serviceInstanceId)) + client.create(uri, rspi) + + execution.setVariable("sliceTaskParams", sliceParams) } - void createNSSTMap(DelegateExecution execution){ - ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition") - String modelUuid= serviceDecomposition.getModelInfo().getModelUuid() - String content = serviceDecomposition.getServiceInfo().getServiceArtifact().get(0).getContent() - //String nsstID = jsonUtil.getJsonValue(content, "metadata.id") - //String vendor = jsonUtil.getJsonValue(content, "metadata.vendor") - //String type = jsonUtil.getJsonValue(content, "metadata.type") - String domain = jsonUtil.getJsonValue(content, "metadata.domainType") - - Map<String, Object> nssiMap = execution.getVariable("nssiMap") - String servicename = execution.getVariable("sliceServiceInstanceName") - String nsiname = "nsi_"+servicename - nssiMap.put(domain,"""{ - "serviceInstanceId":"", - "modelUuid":"${modelUuid}" - }""") - execution.setVariable("nssiMap",nssiMap) + /** + * create An Slice Profile + * @param execution + */ + void createAnSliceProfile(DelegateExecution execution) { + + String globalSubscriberId = execution.getVariable("globalSubscriberId") + String subscriptionServiceType = execution.getVariable("subscriptionServiceType") + //String serviceInstanceId = execution.getVariable("ranSliceProfileInstanceId") + + SliceTaskParamsAdapter sliceParams = + execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter + SliceTaskInfo<AnSliceProfile> sliceTaskInfo = sliceParams.anSliceTaskInfo + AnSliceProfile anSliceProfile = sliceTaskInfo.sliceProfile + + String profileId = UUID.randomUUID().toString() + anSliceProfile.setSliceProfileId(profileId) + + SliceProfile sliceProfile = new SliceProfile() + sliceProfile.setProfileId(profileId) + sliceProfile.setCoverageAreaTAList(anSliceProfile.coverageAreaTAList as String) + //todo:... + AAIResourceUri uri = AAIUriFactory.createResourceUri( + AAIFluentTypeBuilder.business().customer(globalSubscriberId) + .serviceSubscription(subscriptionServiceType) + .serviceInstance(sliceTaskInfo.sliceInstanceId) + .sliceProfile(profileId) + ) + client.create(uri, sliceProfile) + execution.setVariable("sliceTaskParams", sliceParams) } - void prepareNSSIList(DelegateExecution execution){ - logger.trace("Enter prepareNSSIList in DoAllocateNSIandNSSI()") - Map<String, Object> nssiMap = new HashMap<>() - Boolean isMoreNSSI = false - nssiMap = execution.getVariable("nssiMap") - List<String> keys=new ArrayList<String>(nssiMap.values()) - List<String> nsstSequence = execution.getVariable("nsstSequence") - Integer currentIndex=0; - execution.setVariable("currentNssiIndex",currentIndex) - Integer maxIndex=keys.size() - execution.setVariable("maxIndex",maxIndex) - if(maxIndex>0) - isMoreNSSI=true - execution.setVariable("isMoreNSSI",isMoreNSSI) - logger.trace("Exit prepareNSSIList in DoAllocateNSIandNSSI()") + /** + * prepare AllocateAnNssi + * @param execution + */ + void prepareAllocateAnNssi(DelegateExecution execution) { + + //todo: + SliceTaskParamsAdapter sliceParams = + execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter + SliceTaskInfo<AnSliceProfile> sliceTaskInfo = sliceParams.anSliceTaskInfo + + NssmfAdapterNBIRequest nbiRequest = new NssmfAdapterNBIRequest() + + AllocateAnNssi allocateAnNssi = new AllocateAnNssi() + allocateAnNssi.nsstId = sliceTaskInfo.NSSTInfo.UUID + allocateAnNssi.nssiId = sliceTaskInfo.NSSTInfo.UUID + allocateAnNssi.nssiName = sliceTaskInfo.NSSTInfo.name + allocateAnNssi.sliceProfile = sliceTaskInfo.sliceProfile + allocateAnNssi.nsiInfo.nsiId = sliceParams.suggestNsiId + + EsrInfo esrInfo = new EsrInfo() + //todo: vendor and network + esrInfo.setVendor(sliceTaskInfo.getVendor()) + esrInfo.setNetworkType(sliceTaskInfo.getNetworkType()) + + String globalSubscriberId = execution.getVariable("globalSubscriberId") + String subscriptionServiceType = execution.getVariable("subscriptionServiceType") + + //todo: service info + ServiceInfo serviceInfo = new ServiceInfo() + serviceInfo.globalSubscriberId = globalSubscriberId + serviceInfo.subscriptionServiceType = subscriptionServiceType + serviceInfo.nsiId = sliceParams.suggestNsiId + serviceInfo.serviceInvariantUuid = sliceTaskInfo.NSSTInfo.invariantUUID + serviceInfo.serviceUuid = sliceTaskInfo.NSSTInfo.UUID + + nbiRequest.setServiceInfo(serviceInfo) + nbiRequest.setEsrInfo(esrInfo) + nbiRequest.setAllocateAnNssi(allocateAnNssi) + + execution.setVariable("AnAllocateNssiNbiRequest", nbiRequest) + execution.setVariable("anBHSliceTaskInfo", sliceTaskInfo) + execution.setVariable("anSubnetType", SubnetType.AN_NF) } - void getOneNSSIInfo(DelegateExecution execution){ - logger.trace("Enter getOneNSSIInfo in DoAllocateNSIandNSSI()") - - //ServiceDecomposition serviceDecompositionObj = execution.getVariable("serviceDecompositionObj") - Map<String, Object> nssiMap=execution.getVariable("nssiMap") - List<String> nsstSequence = execution.getVariable("nsstSequence") - String currentNSST= nsstSequence.get(execution.getVariable("currentNssiIndex")) - boolean isNSSIOptionAvailable = false - String nsstInput=nssiMap.get(currentNSST) - execution.setVariable("nsstInput",nsstInput) - String modelUuid = jsonUtil.getJsonValue(nsstInput, "modelUuid") - String nssiInstanceId = jsonUtil.getJsonValue(nsstInput, "serviceInstanceId") - String nssiserviceModelInfo = """{ - "modelInvariantUuid":"", - "modelUuid":"${modelUuid}", - "modelVersion":"" - }""" - Integer currentIndex = execution.getVariable("currentNssiIndex") - currentIndex=currentIndex+1; - execution.setVariable("currentNssiIndex",currentIndex) - execution.setVariable("nssiserviceModelInfo",nssiserviceModelInfo) - execution.setVariable("nssiInstanceId",nssiInstanceId) - logger.trace("Exit getOneNSSIInfo in DoAllocateNSIandNSSI()") + /** + * create RAN Slice Profile Instance + * @param execution + */ + void createCnSliceProfileInstance(DelegateExecution execution) { + + String globalSubscriberId = execution.getVariable("globalSubscriberId") + String subscriptionServiceType = execution.getVariable("subscriptionServiceType") + String serviceInstanceId = UUID.randomUUID().toString() + execution.setVariable("cnSliceProfileInstanceId", serviceInstanceId) //todo: + + String serviceType = "" + String serviceRole = "slice-profile" + String oStatus = "deactivated" + + SliceTaskParamsAdapter sliceParams = + execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter + SliceTaskInfo<CnSliceProfile> sliceTaskInfo = sliceParams.cnSliceTaskInfo + sliceTaskInfo.setSliceInstanceId(serviceInstanceId) + + // create slice profile + ServiceInstance rspi = new ServiceInstance() + rspi.setServiceInstanceName(sliceTaskInfo.NSSTInfo.name) + rspi.setServiceType(serviceType) + rspi.setServiceRole(serviceRole) + rspi.setOrchestrationStatus(oStatus) + rspi.setModelInvariantId(sliceTaskInfo.NSSTInfo.invariantUUID) + rspi.setModelVersionId(sliceTaskInfo.NSSTInfo.UUID) + rspi.setInputParameters(uuiRequest) + rspi.setWorkloadContext(useInterval) + rspi.setEnvironmentContext(sNSSAI_id) + + //timestamp format YYYY-MM-DD hh:mm:ss + rspi.setCreatedAt(new Date(System.currentTimeMillis()).format("yyyy-MM-dd HH:mm:ss", TimeZone.getDefault())) + + execution.setVariable("communicationServiceInstance", rspi) + + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(subscriptionServiceType).serviceInstance(serviceInstanceId)) + client.create(uri, rspi) + execution.setVariable("sliceTaskParams", sliceParams) + } + + /** + * create Cn Slice Profile + * @param execution + */ + void createCnSliceProfile(DelegateExecution execution) { + + String globalSubscriberId = execution.getVariable("globalSubscriberId") + String subscriptionServiceType = execution.getVariable("subscriptionServiceType") + //String serviceInstanceId = execution.getVariable("ranSliceProfileInstanceId") + + SliceTaskParamsAdapter sliceParams = + execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter + + SliceTaskInfo<CnSliceProfile> sliceTaskInfo = sliceParams.cnSliceTaskInfo + CnSliceProfile cnSliceProfile = sliceTaskInfo.sliceProfile + + String profileId = UUID.randomUUID().toString() + cnSliceProfile.setSliceProfileId(profileId) + + SliceProfile sliceProfile = new SliceProfile() + sliceProfile.setProfileId(profileId) + sliceProfile.setCoverageAreaTAList(cnSliceProfile.coverageAreaTAList as String) + //todo:... + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(subscriptionServiceType).serviceInstance(sliceTaskInfo.sliceInstanceId).sliceProfile(profileId)) + client.create(uri, sliceProfile) + execution.setVariable("sliceTaskParams", sliceParams) + } + + /** + * prepare AllocateCnNssi + * @param execution + */ + void prepareAllocateCnNssi(DelegateExecution execution) { + + //todo: + SliceTaskParamsAdapter sliceParams = + execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter + SliceTaskInfo<CnSliceProfile> sliceTaskInfo = sliceParams.cnSliceTaskInfo + + NssmfAdapterNBIRequest nbiRequest = new NssmfAdapterNBIRequest() + + AllocateCnNssi allocateCnNssi = new AllocateCnNssi() + allocateCnNssi.nsstId = sliceTaskInfo.NSSTInfo.UUID + allocateCnNssi.nssiId = sliceTaskInfo.suggestNssiId + allocateCnNssi.nssiName = sliceTaskInfo.NSSTInfo.name + allocateCnNssi.sliceProfile = sliceTaskInfo.sliceProfile + allocateCnNssi.nsiInfo.nsiId = sliceParams.suggestNsiId + + EsrInfo esrInfo = new EsrInfo() + //todo: vendor and network + esrInfo.setVendor(sliceTaskInfo.getVendor()) + esrInfo.setNetworkType(sliceTaskInfo.getNetworkType()) + + String globalSubscriberId = execution.getVariable("globalSubscriberId") + String subscriptionServiceType = execution.getVariable("subscriptionServiceType") + + //todo: service info + ServiceInfo serviceInfo = new ServiceInfo() + serviceInfo.globalSubscriberId = globalSubscriberId + serviceInfo.subscriptionServiceType = subscriptionServiceType + serviceInfo.nsiId = sliceParams.suggestNsiId + serviceInfo.serviceInvariantUuid = sliceTaskInfo.NSSTInfo.invariantUUID + serviceInfo.serviceUuid = sliceTaskInfo.NSSTInfo.UUID + serviceInfo.nssiId = sliceTaskInfo.suggestNssiId //if shared + + nbiRequest.setServiceInfo(serviceInfo) + nbiRequest.setEsrInfo(esrInfo) + nbiRequest.setAllocateCnNssi(allocateCnNssi) + + execution.setVariable("CnAllocateNssiNbiRequest", nbiRequest) + execution.setVariable("cnSliceTaskInfo", sliceTaskInfo) + execution.setVariable("cnSubnetType", SubnetType.CN) + } + + + /** + * create TN Slice Profile Instance + * @param execution + */ + void createTnBHSliceProfileInstance(DelegateExecution execution) { + String globalSubscriberId = execution.getVariable("globalSubscriberId") + String subscriptionServiceType = execution.getVariable("subscriptionServiceType") + + String serviceType = "" + String serviceRole = "slice-profile" + String oStatus = "deactivated" + + SliceTaskParamsAdapter sliceParams = + execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter + + SliceTaskInfo<TnSliceProfile> sliceTaskInfo = sliceParams.tnBHSliceTaskInfo + String serviceInstanceId = UUID.randomUUID().toString() + + sliceTaskInfo.setSliceInstanceId(serviceInstanceId) + //execution.setVariable("cnSliceProfileInstanceId", serviceInstanceId) //todo: + + // create slice profile + ServiceInstance rspi = new ServiceInstance() + rspi.setServiceInstanceName(sliceTaskInfo.NSSTInfo.name) + rspi.setServiceType(serviceType) + rspi.setServiceRole(serviceRole) + rspi.setOrchestrationStatus(oStatus) + rspi.setModelInvariantId(sliceTaskInfo.NSSTInfo.invariantUUID) + rspi.setModelVersionId(sliceTaskInfo.NSSTInfo.UUID) + rspi.setInputParameters(uuiRequest) + rspi.setWorkloadContext(useInterval) + rspi.setEnvironmentContext(sNSSAI_id) + + //timestamp format YYYY-MM-DD hh:mm:ss + rspi.setCreatedAt(new Date(System.currentTimeMillis()).format("yyyy-MM-dd HH:mm:ss", TimeZone.getDefault())) + + execution.setVariable("communicationServiceInstance", rspi) + + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(subscriptionServiceType).serviceInstance(serviceInstanceId)) + client.create(uri, rspi) + + execution.setVariable("sliceTaskParams", sliceParams) + } + + /** + * create Tn Slice Profile + * @param execution + */ + void createTnBHSliceProfile(DelegateExecution execution) { + + String globalSubscriberId = execution.getVariable("globalSubscriberId") + String subscriptionServiceType = execution.getVariable("subscriptionServiceType") + + SliceTaskParamsAdapter sliceParams = + execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter + + SliceTaskInfo<TnSliceProfile> sliceTaskInfo = sliceParams.tnBHSliceTaskInfo + + TnSliceProfile tnSliceProfile = sliceTaskInfo.sliceProfile + String profileId = UUID.randomUUID().toString() + tnSliceProfile.setSliceProfileId(profileId) + + SliceProfile sliceProfile = new SliceProfile() + sliceProfile.setProfileId(profileId) + //todo:... + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(subscriptionServiceType).serviceInstance(sliceTaskInfo.sliceInstanceId).sliceProfile(profileId)) + client.create(uri, sliceProfile) + + execution.setVariable("sliceTaskParams", sliceParams) + } + + /** + * prepare AllocateCnNssi + * @param execution + */ + void prepareAllocateTnBHNssi(DelegateExecution execution) { + + //todo: + SliceTaskParamsAdapter sliceParams = + execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter + SliceTaskInfo<TnSliceProfile> sliceTaskInfo = sliceParams.tnBHSliceTaskInfo + + NssmfAdapterNBIRequest nbiRequest = new NssmfAdapterNBIRequest() + + AllocateTnNssi allocateTnNssi = new AllocateTnNssi() + //todo: AllocateTnNssi + //todo: endpointId -> set into tn + allocateTnNssi.setTransportSliceNetworks() + allocateTnNssi.setNetworkSliceInfos() + + + //allocateTnNssi.networkSliceInfos + + EsrInfo esrInfo = new EsrInfo() + esrInfo.setVendor(sliceTaskInfo.getVendor()) + esrInfo.setNetworkType(sliceTaskInfo.getNetworkType()) + + String globalSubscriberId = execution.getVariable("globalSubscriberId") + String subscriptionServiceType = execution.getVariable("subscriptionServiceType") + + ServiceInfo serviceInfo = new ServiceInfo() + serviceInfo.globalSubscriberId = globalSubscriberId + serviceInfo.subscriptionServiceType = subscriptionServiceType + serviceInfo.nsiId = sliceParams.suggestNsiId + serviceInfo.serviceInvariantUuid = sliceTaskInfo.NSSTInfo.invariantUUID + serviceInfo.serviceUuid = sliceTaskInfo.NSSTInfo.UUID + serviceInfo.nssiId = sliceTaskInfo.suggestNssiId + + nbiRequest.setServiceInfo(serviceInfo) + nbiRequest.setEsrInfo(esrInfo) + nbiRequest.setAllocateTnNssi(allocateTnNssi) + + execution.setVariable("TnBHAllocateNssiNbiRequest", nbiRequest) + execution.setVariable("tnBHSliceTaskInfo", sliceTaskInfo) + execution.setVariable("tnBHSubnetType", SubnetType.TN_BH) + } + + /** + * Update relationship between + * 1. NSI and NSSI + * 2. Slice Profile and Service Profile + * 3. SliceProfile and NSSI + * 4. sliceProfile and endpoint + * + * @param execution + */ + public void updateAnRelationship(DelegateExecution execution) { + //todo: + SliceTaskParamsAdapter sliceParams = + execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter + + ResponseDescriptor result = execution.getVariable("anNssiAllocateResult") as ResponseDescriptor + String nssiId = result.getNssiId() + String nsiId = sliceParams.getSuggestNsiId() + String sliceProfileInstanceId = sliceParams.anSliceTaskInfo.sliceInstanceId + String serviceProfileInstanceId = sliceParams.serviceId + //nsi id + //todo: aai -> nssi -> relationship -> endpointId -> set into tn + String endPointId = getEndpointIdFromAAI(execution, nssiId) + execution.setVariable("endPointIdAn", endPointId) + + updateRelationship(execution, nsiId, nssiId) + + updateRelationship(execution, serviceProfileInstanceId, sliceProfileInstanceId) + + updateRelationship(execution, sliceProfileInstanceId, nssiId) + + sliceParams.anSliceTaskInfo.suggestNssiId = nssiId + execution.setVariable("sliceTaskParams", sliceParams) } - void updateCurrentIndex(DelegateExecution execution){ - logger.trace("Enter updateCurrentIndex in DoAllocateNSIandNSSI()") - Integer currentIndex = execution.getVariable("currentNssiIndex") - Integer maxIndex = execution.getVariable("maxIndex") - if(currentIndex>=maxIndex) - { - Boolean isMoreNSSI=false - execution.setVariable("isMoreNSSI",isMoreNSSI) + /** + * Update relationship between + * 1. NSI and NSSI + * 2. Slice Profile and Service Profile + * 3. SliceProfile and NSSI + * + * @param execution + */ + public void updateCnRelationship(DelegateExecution execution) { + //todo: + SliceTaskParamsAdapter sliceParams = + execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter + + NssiResponse result = execution.getVariable("cnNssiAllocateResult") as NssiResponse + String nssiId = result.getNssiId() + String nsiId = sliceParams.getSuggestNsiId() + String sliceProfileInstanceId = sliceParams.cnSliceTaskInfo.sliceInstanceId + String serviceProfileInstanceId = sliceParams.serviceId + //nsi id + //todo: aai -> nssi -> relationship -> endpointId -> set into tn + String endPointId = getEndpointIdFromAAI(execution, nssiId) + execution.setVariable("endPointIdCn", endPointId) + + updateRelationship(execution, nsiId, nssiId) + + updateRelationship(execution, serviceProfileInstanceId, sliceProfileInstanceId) + + updateRelationship(execution,sliceProfileInstanceId, nssiId) + + sliceParams.cnSliceTaskInfo.suggestNssiId = nssiId + execution.setVariable("sliceTaskParams", sliceParams) + } + + /** + * get endpoint Id from AAI by nssi id + * @param execution + * @param nssiId + * @return + */ + private String getEndpointIdFromAAI(DelegateExecution execution, String nssiId) { + logger.debug("Enter update relationship in DoAllocateNSIandNSSI()") + //todo: allottedResourceId + + SliceTaskParamsAdapter sliceParams = + execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter + + //sliceParams.setServiceId(nsiServiceInstanceID) + AAIResourceUri nsiServiceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(subscriptionServiceType).serviceInstance(nssiId)) + + String endpointId = null + + try { + AAIResultWrapper wrapper = client.get(nsiServiceUri, NotFoundException.class) + Optional<ServiceInstance> si = wrapper.asBean(ServiceInstance.class) + //todo: if exists + if (!si.ifPresent()) { + String msg = "NSSI in the option doesn't exist. " + nssiId + logger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + + if (si.ifPresent()) { + ServiceInstance nssiInstance = si.get() + //todo: handle relationship and return endpointId + for (Relationship relationship : nssiInstance.relationshipList.getRelationship()) { + if (relationship.relationshipLabel){ + endpointId = relationship //todo + } + } + + return endpointId + } + + }catch(BpmnError e) { + throw e + }catch (Exception ex){ + String msg = "NSSI suggested in the option doesn't exist. " + nssiId + logger.debug(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) } - logger.trace("Exit updateCurrentIndex in DoAllocateNSIandNSSI()") + logger.debug("Exit update relationship in DoAllocateNSIandNSSI()") } -}
\ No newline at end of file + + /** + * Update relationship between + * 1. NSI and NSSI + * 2. Slice Profile and Service Profile + * 3. SliceProfile and NSSI + * + * @param execution + */ + public void updateTnBHRelationship(DelegateExecution execution) { + SliceTaskParamsAdapter sliceParams = + execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter + + NssiResponse result = execution.getVariable("tnBHNssiAllocateResult") as NssiResponse + String nssiId = result.getNssiId() + String nsiId = sliceParams.getSuggestNsiId() + String sliceProfileInstanceId = sliceParams.tnBHSliceTaskInfo.sliceInstanceId + String serviceProfileInstanceId = sliceParams.serviceId + //nsi id + + updateRelationship(execution, nsiId, nssiId) + + updateRelationship(execution, serviceProfileInstanceId, sliceProfileInstanceId) + + updateRelationship(execution,sliceProfileInstanceId, nssiId) + + sliceParams.tnBHSliceTaskInfo.suggestNssiId = nssiId + execution.setVariable("sliceTaskParams", sliceParams) + } + + /** + * sourceId -> targetId + * @param execution + * @param sourceId + * @param targetId + */ + void updateRelationship(DelegateExecution execution, String sourceId, String targetId) { + //relation ship + Relationship relationship = new Relationship() + + AAIResourceUri nsiServiceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(execution.getVariable("globalSubscriberId")).serviceSubscription(execution.getVariable("subscriptionServiceType")).serviceInstance(targetId)) + + logger.info("Creating Allotted resource relationship, nsiServiceUri: " + nsiServiceUri) + + relationship.setRelatedLink(nsiServiceUri.build().toString()) + + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(execution.getVariable("globalSubscriberId")).serviceSubscription(execution.getVariable("subscriptionServiceType")).serviceInstance(sourceId).relationshipAPI()) + client.create(uri, relationship) + } + +} diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateNSIandNSSIV2.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateNSIandNSSIV2.groovy deleted file mode 100644 index 924b42fe9f..0000000000 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateNSIandNSSIV2.groovy +++ /dev/null @@ -1,613 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP - SO - * ================================================================================ - * Copyright (C) 2019 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.apache.commons.lang3.StringUtils -import org.camunda.bpm.engine.delegate.BpmnError -import org.camunda.bpm.engine.delegate.DelegateExecution -import org.onap.aai.domain.yang.Relationship -import org.onap.aai.domain.yang.ServiceInstance -import org.onap.aai.domain.yang.SliceProfile -import org.onap.aaiclient.client.aai.AAIObjectType -import org.onap.aaiclient.client.aai.AAIResourcesClient -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.so.beans.nsmf.* -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.core.json.JsonUtils -import org.slf4j.Logger -import org.slf4j.LoggerFactory - -import javax.ws.rs.NotFoundException - -class DoAllocateNSIandNSSIV2 extends AbstractServiceTaskProcessor{ - - private static final Logger logger = LoggerFactory.getLogger( DoAllocateNSIandNSSIV2.class); - - ExceptionUtil exceptionUtil = new ExceptionUtil() - - JsonUtils jsonUtil = new JsonUtils() - - private NssmfAdapterUtils nssmfAdapterUtils = new NssmfAdapterUtils(httpClientFactory, jsonUtil) - - AAIResourcesClient client = getAAIClient() - - /** - * Pre Process the BPMN Flow Request - * Inclouds: - * generate the nsOperationKey - * generate the nsParameters - */ - - void preProcessRequest (DelegateExecution execution) { - String msg = "" - logger.trace("Enter preProcessRequest()") - Map<String, Object> nssiMap = new HashMap<>() - execution.setVariable("nssiMap", nssiMap) - boolean isMoreNSSTtoProcess = true - execution.setVariable("isMoreNSSTtoProcess", isMoreNSSTtoProcess) - List<String> nsstSequence = new ArrayList<>(Arrays.asList("cn")) - execution.setVariable("nsstSequence", nsstSequence) - logger.trace("Exit preProcessRequest") - } - - /** - * Process NSI options - * @param execution - */ - void retriveSliceOption(DelegateExecution execution) { - logger.trace("Enter retriveSliceOption() of DoAllocateNSIandNSSI") - - boolean isNSIOptionAvailable - - SliceTaskParamsAdapter sliceParams = - execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter -// try -// { -// Map<String, Object> nstSolution = execution.getVariable("nstSolution") as Map -// String modelUuid = nstSolution.get("UUID") -// String modelInvariantUuid = nstSolution.get("invariantUUID") -// String serviceModelInfo = """{ -// "modelInvariantUuid":"${modelInvariantUuid}", -// "modelUuid":"${modelUuid}", -// "modelVersion":"" -// }""" -// execution.setVariable("serviceModelInfo", serviceModelInfo) -// -// execution.setVariable("sliceParams", sliceParams) -// }catch (Exception ex) { -// logger.debug( "Unable to get the task information from request DB: " + ex) -// exceptionUtil.buildAndThrowWorkflowException(execution, 401, "Unable to get task information from request DB.") -// } - - if(StringUtils.isBlank(sliceParams.getSuggestNsiId())) { - isNSIOptionAvailable = false - } - else { - isNSIOptionAvailable = true - execution.setVariable('nsiServiceInstanceId', sliceParams.getSuggestNsiId()) - execution.setVariable('nsiServiceInstanceName', sliceParams.getSuggestNsiName()) - } - execution.setVariable("isNSIOptionAvailable", isNSIOptionAvailable) - logger.trace("Exit retriveSliceOption() of DoAllocateNSIandNSSI") - } - - - /** - * create nsi instance in aai - * @param execution - */ - void createNSIinAAI(DelegateExecution execution) { - logger.debug("Enter CreateNSIinAAI in DoAllocateNSIandNSSI()") - - String sliceInstanceId = UUID.randomUUID().toString() - SliceTaskParamsAdapter sliceParams = - execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter - - sliceParams.setServiceId(sliceInstanceId) - - ServiceInstance nsi = new ServiceInstance() - - - String sliceInstanceName = "nsi_"+execution.getVariable("sliceServiceInstanceName") - String serviceType = execution.getVariable("serviceType") - String serviceStatus = "deactivated" - String modelInvariantUuid = sliceParams.getNSTInfo().invariantUUID - String modelUuid = sliceParams.getNSTInfo().UUID - - String uuiRequest = execution.getVariable("uuiRequest") - String serviceInstanceLocationid = jsonUtil.getJsonValue(uuiRequest, "service.parameters.requestInputs.plmnIdList") - String serviceRole = "nsi" - - execution.setVariable("sliceInstanceId", sliceInstanceId) - nsi.setServiceInstanceId(sliceInstanceId) - nsi.setServiceInstanceName(sliceInstanceName) - nsi.setServiceType(serviceType) - nsi.setOrchestrationStatus(serviceStatus) - nsi.setModelInvariantId(modelInvariantUuid) - nsi.setModelVersionId(modelUuid) - nsi.setServiceInstanceLocationId(serviceInstanceLocationid) - nsi.setServiceRole(serviceRole) - String msg - try { - - AAIResourceUri nsiServiceUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, - execution.getVariable("globalSubscriberId"), - execution.getVariable("subscriptionServiceType"), - sliceInstanceId) - client.create(nsiServiceUri, nsi) - - execution.setVariable("nsiServiceUri", nsiServiceUri.build().toString()) - - } catch (BpmnError e) { - throw e - } catch (Exception ex) { - msg = "Exception in DoCreateSliceServiceInstance.instantiateSliceService. " + ex.getMessage() - logger.info(msg) - exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) - } - - logger.debug("Exit CreateNSIinAAI in DoAllocateNSIandNSSI()") - } - - - /** - * create relationship between nsi and service profile instance - * @param execution - */ - void createRelationship(DelegateExecution execution) { - //relation ship - Relationship relationship = new Relationship() - String nsiServiceUri = execution.getVariable("nsiServiceUri") as String - logger.info("Creating Allotted resource relationship, nsiServiceUri: " + nsiServiceUri) - - relationship.setRelatedLink(nsiServiceUri) - - AAIResourceUri allottedResourceUri = AAIUriFactory.createResourceUri( - AAIObjectType.ALLOTTED_RESOURCE, - execution.getVariable("globalSubscriberId"), - execution.getVariable("subscriptionServiceType"), - execution.getVariable("sliceServiceInstanceId"), - execution.getVariable("allottedResourceId")) - .relationshipAPI() - client.create(allottedResourceUri, relationship) - } - - /** - * - * @param execution - */ - void updateRelationship(DelegateExecution execution) { - logger.debug("Enter update relationship in DoAllocateNSIandNSSI()") - String allottedResourceId = execution.getVariable("allottedResourceId") - //Need to check whether nsi exist : Begin - - SliceTaskParamsAdapter sliceParams = - execution.getVariable("sliceParams") as SliceTaskParamsAdapter - - String nsiServiceInstanceID = sliceParams.getSuggestNsiId() - sliceParams.setServiceId(nsiServiceInstanceID) - - AAIResourceUri nsiServiceUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, - execution.getVariable("globalSubscriberId"), - execution.getVariable("subscriptionServiceType"), - nsiServiceInstanceID) - - try { - AAIResultWrapper wrapper = client.get(nsiServiceUri, NotFoundException.class) - Optional<ServiceInstance> si = wrapper.asBean(ServiceInstance.class) - //todo: if exists - if (!si.ifPresent()) { - String msg = "NSI suggested in the option doesn't exist. " + nsiServiceInstanceID - logger.debug(msg) - exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) - } - - AAIResourceUri allottedResourceUri = AAIUriFactory.createResourceUri(AAIObjectType.ALLOTTED_RESOURCE, - execution.getVariable("globalSubscriberId"), - execution.getVariable("subscriptionServiceType"), - execution.getVariable("sliceServiceInstanceId"), - allottedResourceId) - - client.connect(allottedResourceUri, nsiServiceUri) - - execution.setVariable("sliceParams", sliceParams) - }catch(BpmnError e) { - throw e - }catch (Exception ex){ - String msg = "NSI suggested in the option doesn't exist. " + nsiServiceInstanceID - logger.debug(msg) - exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) - } - logger.debug("Exit update relationship in DoAllocateNSIandNSSI()") - } - - /** - * create RAN Slice Profile Instance - * @param execution - */ - void createAnSliceProfileInstance(DelegateExecution execution) { - - String globalSubscriberId = execution.getVariable("globalSubscriberId") - String subscriptionServiceType = execution.getVariable("subscriptionServiceType") - String serviceInstanceId = UUID.randomUUID().toString() - execution.setVariable("ranSliceProfileInstanceId", serviceInstanceId) //todo: - - String serviceType = "" - String serviceRole = "slice-profile" - String oStatus = "deactivated" - - SliceTaskParamsAdapter sliceParams = - execution.getVariable("sliceParams") as SliceTaskParamsAdapter - SliceTaskInfo<AnSliceProfile> sliceTaskInfo = sliceParams.anSliceTaskInfo - sliceTaskInfo.setServiceInstanceId(serviceInstanceId) - - // create slice profile - ServiceInstance rspi = new ServiceInstance() - rspi.setServiceInstanceName(sliceTaskInfo.NSSTInfo.name) - rspi.setServiceType(serviceType) - rspi.setServiceRole(serviceRole) - rspi.setOrchestrationStatus(oStatus) - rspi.setModelInvariantId(sliceTaskInfo.NSSTInfo.invariantUUID) - rspi.setModelVersionId(sliceTaskInfo.NSSTInfo.UUID) - rspi.setInputParameters(uuiRequest) - rspi.setWorkloadContext(useInterval) - rspi.setEnvironmentContext(sNSSAI_id) - - //timestamp format YYYY-MM-DD hh:mm:ss - rspi.setCreatedAt(new Date(System.currentTimeMillis()).format("yyyy-MM-dd HH:mm:ss", TimeZone.getDefault())) - - execution.setVariable("communicationServiceInstance", rspi) - - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, - globalSubscriberId, - subscriptionServiceType, - serviceInstanceId) - client.create(uri, rspi) - - execution.setVariable("sliceParams", sliceParams) - } - - /** - * create An Slice Profile - * @param execution - */ - void createAnSliceProfile(DelegateExecution execution) { - - String globalSubscriberId = execution.getVariable("globalSubscriberId") - String subscriptionServiceType = execution.getVariable("subscriptionServiceType") - //String serviceInstanceId = execution.getVariable("ranSliceProfileInstanceId") - - SliceTaskParamsAdapter sliceParams = - execution.getVariable("sliceParams") as SliceTaskParamsAdapter - SliceTaskInfo<AnSliceProfile> sliceTaskInfo = sliceParams.anSliceTaskInfo - AnSliceProfile anSliceProfile = sliceTaskInfo.sliceProfile - - String profileId = UUID.randomUUID().toString() - anSliceProfile.setSliceProfileId(profileId) - - SliceProfile sliceProfile = new SliceProfile() - sliceProfile.setProfileId(profileId) - sliceProfile.setCoverageAreaTAList(anSliceProfile.coverageAreaTAList as String) - //todo:... - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SLICE_PROFILE, - globalSubscriberId, - subscriptionServiceType, - sliceTaskInfo.serviceInstanceId, - profileId - ) - client.create(uri, sliceProfile) - execution.setVariable("sliceParams", sliceParams) - } - - /** - * prepare AllocateAnNssi - * @param execution - */ - void prepareAllocateAnNssi(DelegateExecution execution) { - - //todo: - SliceTaskParamsAdapter sliceParams = - execution.getVariable("sliceParams") as SliceTaskParamsAdapter - SliceTaskInfo<AnSliceProfile> sliceTaskInfo = sliceParams.anSliceTaskInfo - - NssmfAdapterNBIRequest nbiRequest = new NssmfAdapterNBIRequest() - - AllocateAnNssi allocateAnNssi = new AllocateAnNssi() - allocateAnNssi.nsstId = sliceTaskInfo.NSSTInfo.UUID - allocateAnNssi.nssiId = sliceTaskInfo.NSSTInfo.UUID - allocateAnNssi.nssiName = sliceTaskInfo.NSSTInfo.name - allocateAnNssi.sliceProfile = sliceTaskInfo.sliceProfile - allocateAnNssi.nsiInfo.nsiId = sliceParams - - EsrInfo esrInfo = new EsrInfo() - //todo: vendor and network - esrInfo.setVendor(sliceTaskInfo.getVendor()) - esrInfo.setNetworkType(sliceTaskInfo.getNetworkType()) - - String globalSubscriberId = execution.getVariable("globalSubscriberId") - String subscriptionServiceType = execution.getVariable("subscriptionServiceType") - - //todo: service info - ServiceInfo serviceInfo = new ServiceInfo() - serviceInfo.globalSubscriberId = globalSubscriberId - serviceInfo.subscriptionServiceType = subscriptionServiceType - serviceInfo.nsiId = sliceParams.serviceId - serviceInfo.serviceInvariantUuid = sliceTaskInfo.NSSTInfo.invariantUUID - serviceInfo.serviceUuid = sliceTaskInfo.NSSTInfo.UUID - - nbiRequest.setServiceInfo(serviceInfo) - nbiRequest.setEsrInfo(esrInfo) - nbiRequest.setAllocateAnNssi(allocateAnNssi) - - execution.setVariable("AnAllocateNssiNbiRequest", nbiRequest) - execution.setVariable("anBHSliceTaskInfo", sliceTaskInfo) - } - - - /** - * create RAN Slice Profile Instance - * @param execution - */ - void createCnSliceProfileInstance(DelegateExecution execution) { - - String globalSubscriberId = execution.getVariable("globalSubscriberId") - String subscriptionServiceType = execution.getVariable("subscriptionServiceType") - String serviceInstanceId = UUID.randomUUID().toString() - execution.setVariable("cnSliceProfileInstanceId", serviceInstanceId) //todo: - - String serviceType = "" - String serviceRole = "slice-profile" - String oStatus = "deactivated" - - SliceTaskParamsAdapter sliceParams = - execution.getVariable("sliceParams") as SliceTaskParamsAdapter - SliceTaskInfo<CnSliceProfile> sliceTaskInfo = sliceParams.cnSliceTaskInfo - sliceTaskInfo.setServiceInstanceId(serviceInstanceId) - - // create slice profile - ServiceInstance rspi = new ServiceInstance() - rspi.setServiceInstanceName(sliceTaskInfo.NSSTInfo.name) - rspi.setServiceType(serviceType) - rspi.setServiceRole(serviceRole) - rspi.setOrchestrationStatus(oStatus) - rspi.setModelInvariantId(sliceTaskInfo.NSSTInfo.invariantUUID) - rspi.setModelVersionId(sliceTaskInfo.NSSTInfo.UUID) - rspi.setInputParameters(uuiRequest) - rspi.setWorkloadContext(useInterval) - rspi.setEnvironmentContext(sNSSAI_id) - - //timestamp format YYYY-MM-DD hh:mm:ss - rspi.setCreatedAt(new Date(System.currentTimeMillis()).format("yyyy-MM-dd HH:mm:ss", TimeZone.getDefault())) - - execution.setVariable("communicationServiceInstance", rspi) - - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, - globalSubscriberId, - subscriptionServiceType, - serviceInstanceId) - client.create(uri, rspi) - execution.setVariable("sliceParams", sliceParams) - } - - /** - * create An Slice Profile - * @param execution - */ - void createCnSliceProfile(DelegateExecution execution) { - - String globalSubscriberId = execution.getVariable("globalSubscriberId") - String subscriptionServiceType = execution.getVariable("subscriptionServiceType") - //String serviceInstanceId = execution.getVariable("ranSliceProfileInstanceId") - - SliceTaskParamsAdapter sliceParams = - execution.getVariable("sliceParams") as SliceTaskParamsAdapter - - SliceTaskInfo<CnSliceProfile> sliceTaskInfo = sliceParams.cnSliceTaskInfo - CnSliceProfile cnSliceProfile = sliceTaskInfo.sliceProfile - - String profileId = UUID.randomUUID().toString() - cnSliceProfile.setSliceProfileId(profileId) - - SliceProfile sliceProfile = new SliceProfile() - sliceProfile.setProfileId(profileId) - sliceProfile.setCoverageAreaTAList(cnSliceProfile.coverageAreaTAList as String) - //todo:... - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SLICE_PROFILE, - globalSubscriberId, - subscriptionServiceType, - sliceTaskInfo.serviceInstanceId, - profileId - ) - client.create(uri, sliceProfile) - execution.setVariable("sliceParams", sliceParams) - } - - /** - * prepare AllocateCnNssi - * @param execution - */ - void prepareAllocateCnNssi(DelegateExecution execution) { - - //todo: - SliceTaskParamsAdapter sliceParams = - execution.getVariable("sliceParams") as SliceTaskParamsAdapter - SliceTaskInfo<CnSliceProfile> sliceTaskInfo = sliceParams.cnSliceTaskInfo - - NssmfAdapterNBIRequest nbiRequest = new NssmfAdapterNBIRequest() - - AllocateCnNssi allocateCnNssi = new AllocateCnNssi() - allocateCnNssi.nsstId = sliceTaskInfo.NSSTInfo.UUID - allocateCnNssi.nssiId = sliceTaskInfo.NSSTInfo.UUID - allocateCnNssi.nssiName = sliceTaskInfo.NSSTInfo.name - allocateCnNssi.sliceProfile = sliceTaskInfo.sliceProfile - allocateCnNssi.nsiInfo.nsiId = sliceParams - - EsrInfo esrInfo = new EsrInfo() - //todo: vendor and network - esrInfo.setVendor(sliceTaskInfo.getVendor()) - esrInfo.setNetworkType(sliceTaskInfo.getNetworkType()) - - String globalSubscriberId = execution.getVariable("globalSubscriberId") - String subscriptionServiceType = execution.getVariable("subscriptionServiceType") - - //todo: service info - ServiceInfo serviceInfo = new ServiceInfo() - serviceInfo.globalSubscriberId = globalSubscriberId - serviceInfo.subscriptionServiceType = subscriptionServiceType - serviceInfo.nsiId = sliceParams.serviceId - serviceInfo.serviceInvariantUuid = sliceTaskInfo.NSSTInfo.invariantUUID - serviceInfo.serviceUuid = sliceTaskInfo.NSSTInfo.UUID - - nbiRequest.setServiceInfo(serviceInfo) - nbiRequest.setEsrInfo(esrInfo) - nbiRequest.setAllocateCnNssi(allocateCnNssi) - - execution.setVariable("CnAllocateNssiNbiRequest", nbiRequest) - execution.setVariable("cnSliceTaskInfo", sliceTaskInfo) - } - - - /** - * create TN Slice Profile Instance - * @param execution - */ - void createTnBHSliceProfileInstance(DelegateExecution execution) { - String globalSubscriberId = execution.getVariable("globalSubscriberId") - String subscriptionServiceType = execution.getVariable("subscriptionServiceType") - - String serviceType = "" - String serviceRole = "slice-profile" - String oStatus = "deactivated" - - SliceTaskParamsAdapter sliceParams = - execution.getVariable("sliceParams") as SliceTaskParamsAdapter - - SliceTaskInfo<TnSliceProfile> sliceTaskInfo = sliceParams.tnBHSliceTaskInfo - String serviceInstanceId = UUID.randomUUID().toString() - - sliceTaskInfo.setServiceInstanceId(serviceInstanceId) - //execution.setVariable("cnSliceProfileInstanceId", serviceInstanceId) //todo: - - // create slice profile - ServiceInstance rspi = new ServiceInstance() - rspi.setServiceInstanceName(sliceTaskInfo.NSSTInfo.name) - rspi.setServiceType(serviceType) - rspi.setServiceRole(serviceRole) - rspi.setOrchestrationStatus(oStatus) - rspi.setModelInvariantId(sliceTaskInfo.NSSTInfo.invariantUUID) - rspi.setModelVersionId(sliceTaskInfo.NSSTInfo.UUID) - rspi.setInputParameters(uuiRequest) - rspi.setWorkloadContext(useInterval) - rspi.setEnvironmentContext(sNSSAI_id) - - //timestamp format YYYY-MM-DD hh:mm:ss - rspi.setCreatedAt(new Date(System.currentTimeMillis()).format("yyyy-MM-dd HH:mm:ss", TimeZone.getDefault())) - - execution.setVariable("communicationServiceInstance", rspi) - - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, - globalSubscriberId, - subscriptionServiceType, - serviceInstanceId) - client.create(uri, rspi) - - execution.setVariable("sliceParams", sliceParams) - } - - /** - * create An Slice Profile - * @param execution - */ - void createTnBHSliceProfile(DelegateExecution execution) { - - String globalSubscriberId = execution.getVariable("globalSubscriberId") - String subscriptionServiceType = execution.getVariable("subscriptionServiceType") - String serviceInstanceId = execution.getVariable("ranSliceProfileInstanceId") - - SliceTaskParamsAdapter sliceParams = - execution.getVariable("sliceParams") as SliceTaskParamsAdapter - - SliceTaskInfo<TnSliceProfile> sliceTaskInfo = sliceParams.tnBHSliceTaskInfo - - TnSliceProfile tnSliceProfile = sliceTaskInfo.sliceProfile - String profileId = UUID.randomUUID().toString() - tnSliceProfile.setSliceProfileId(profileId) - - SliceProfile sliceProfile = new SliceProfile() - sliceProfile.setProfileId(profileId) - //todo:... - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SLICE_PROFILE, - globalSubscriberId, - subscriptionServiceType, - serviceInstanceId, - profileId - ) - client.create(uri, sliceProfile) - - execution.setVariable("sliceParams", sliceParams) - } - - /** - * prepare AllocateCnNssi - * @param execution - */ - void prepareAllocateTnBHNssi(DelegateExecution execution) { - - //todo: - SliceTaskParamsAdapter sliceParams = - execution.getVariable("sliceParams") as SliceTaskParamsAdapter - SliceTaskInfo<TnSliceProfile> sliceTaskInfo = sliceParams.tnBHSliceTaskInfo - - NssmfAdapterNBIRequest nbiRequest = new NssmfAdapterNBIRequest() - - AllocateTnNssi allocateTnNssi = new AllocateTnNssi() - //todo: AllocateTnNssi - //allocateTnNssi.networkSliceInfos - - EsrInfo esrInfo = new EsrInfo() - //todo: vendor and network - esrInfo.setVendor(sliceTaskInfo.getVendor()) - esrInfo.setNetworkType(sliceTaskInfo.getNetworkType()) - - String globalSubscriberId = execution.getVariable("globalSubscriberId") - String subscriptionServiceType = execution.getVariable("subscriptionServiceType") - - //todo: service info - ServiceInfo serviceInfo = new ServiceInfo() - serviceInfo.globalSubscriberId = globalSubscriberId - serviceInfo.subscriptionServiceType = subscriptionServiceType - serviceInfo.nsiId = sliceParams.serviceId - serviceInfo.serviceInvariantUuid = sliceTaskInfo.NSSTInfo.invariantUUID - serviceInfo.serviceUuid = sliceTaskInfo.NSSTInfo.UUID - - nbiRequest.setServiceInfo(serviceInfo) - nbiRequest.setEsrInfo(esrInfo) - nbiRequest.setAllocateTnNssi(allocateTnNssi) - - execution.setVariable("TnBHAllocateNssiNbiRequest", nbiRequest) - execution.setVariable("tnBHSliceTaskInfo", sliceTaskInfo) - } - -}
\ No newline at end of file diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateNSSI.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateNSSI.groovy index 88edd79d6d..88014e7b54 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateNSSI.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateNSSI.groovy @@ -1,713 +1,172 @@ package org.onap.so.bpmn.infrastructure.scripts -import org.camunda.bpm.engine.delegate.BpmnError +import com.fasterxml.jackson.databind.ObjectMapper +import org.apache.commons.lang3.StringUtils import org.camunda.bpm.engine.delegate.DelegateExecution -import org.onap.aai.domain.yang.ServiceInstance -import org.onap.aai.domain.yang.SliceProfile -import org.onap.so.beans.nsmf.AllocateAnNssi -import org.onap.so.beans.nsmf.AllocateCnNssi -import org.onap.so.beans.nsmf.AllocateTnNssi -import org.onap.so.beans.nsmf.AnSliceProfile -import org.onap.so.beans.nsmf.CnSliceProfile import org.onap.so.beans.nsmf.EsrInfo -import org.onap.so.beans.nsmf.JobStatusRequest -import org.onap.so.beans.nsmf.NetworkType -import org.onap.so.beans.nsmf.NsiInfo -import org.onap.so.beans.nsmf.NssiAllocateRequest -import org.onap.so.beans.nsmf.PerfReq -import org.onap.so.beans.nsmf.PerfReqEmbb -import org.onap.so.beans.nsmf.PerfReqUrllc -import org.onap.so.beans.nsmf.ResourceSharingLevel -import org.onap.so.beans.nsmf.SliceTaskParams -import org.onap.so.beans.nsmf.TnSliceProfile -import org.onap.so.beans.nsmf.UeMobilityLevel +import org.onap.so.beans.nsmf.NssiResponse +import org.onap.so.beans.nsmf.NssmfAdapterNBIRequest +import org.onap.so.beans.nsmf.ResponseDescriptor +import org.onap.so.beans.nsmf.ServiceInfo +import org.onap.so.beans.nsmf.SliceTaskInfo +import org.onap.so.beans.nsmf.SliceTaskParamsAdapter +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.core.RollbackData -import org.onap.so.bpmn.core.domain.ModelInfo -import org.onap.so.bpmn.core.domain.ServiceDecomposition import org.onap.so.bpmn.core.json.JsonUtils -import org.onap.aaiclient.client.aai.AAIObjectType -import org.onap.aaiclient.client.aai.AAIResourcesClient -import org.onap.aaiclient.client.aai.entities.AAIEdgeLabel -import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri -import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory import org.slf4j.Logger import org.slf4j.LoggerFactory -import com.fasterxml.jackson.databind.ObjectMapper; +import org.springframework.http.ResponseEntity -import static org.apache.commons.lang3.StringUtils.isBlank +class DoAllocateNSSI extends AbstractServiceTaskProcessor { -class DoAllocateNSSI extends org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor{ - - private static final Logger logger = LoggerFactory.getLogger( DoAllocateNSSI.class); - private static final ObjectMapper MAPPER = new ObjectMapper(); + private static final Logger logger = LoggerFactory.getLogger(DoAllocateNSSI.class); ExceptionUtil exceptionUtil = new ExceptionUtil() JsonUtils jsonUtil = new JsonUtils() - private NssmfAdapterUtils nssmfAdapterUtils = new NssmfAdapterUtils(httpClientFactory, jsonUtil) - - /** - * Pre Process the BPMN Flow Request - * Inclouds: - * generate the nsOperationKey - * generate the nsParameters - */ - void preProcessRequest (DelegateExecution execution) { - logger.trace("Enter preProcessRequest()") - String msg = "" - String nssmfOperation = "" - String msoRequestId = execution.getVariable("msoRequestId") - String nsstInput = execution.getVariable("nsstInput") - String modelUuid = jsonUtil.getJsonValue(nsstInput, "modelUuid") - //modelUuid="2763777c-27bd-4df7-93b8-c690e23f4d3f" - String nssiInstanceId = jsonUtil.getJsonValue(nsstInput, "serviceInstanceId") - String serviceModelInfo = """{ - "modelInvariantUuid":"", - "modelUuid":"${modelUuid}", - "modelVersion":"" - }""" - execution.setVariable("serviceModelInfo",serviceModelInfo) - execution.setVariable("nssiInstanceId",nssiInstanceId) - String nssiProfileID = UUID.randomUUID().toString() - execution.setVariable("nssiProfileID",nssiProfileID) - if(isBlank(nssiInstanceId)) - { - nssmfOperation="create" - nssiInstanceId = UUID.randomUUID().toString() - }else { - nssmfOperation = "update" - } - execution.setVariable("nssmfOperation",nssmfOperation) - execution.setVariable("nssiInstanceId",nssiInstanceId) - - def isDebugLogEnabled ="false" - def isNSSICreated = false - execution.setVariable("isNSSICreated",isNSSICreated) - - int currentCycle = 0 - execution.setVariable("currentCycle", currentCycle) + ObjectMapper objectMapper = new ObjectMapper() - logger.trace("Exit preProcessRequest") - } - - - void getNSSTInfo(DelegateExecution execution){ - logger.trace("Enter getNSSTInfo in DoAllocateNSSI()") - ServiceDecomposition serviceDecomposition= execution.getVariable("serviceDecomposition") - ModelInfo modelInfo = serviceDecomposition.getModelInfo() - String serviceRole = "nssi" - String nssiServiceInvariantUuid = serviceDecomposition.modelInfo.getModelInvariantUuid() - String nssiServiceUuid = serviceDecomposition.modelInfo.getModelUuid() - String nssiServiceType = serviceDecomposition.getServiceType() - String uuiRequest = execution.getVariable("uuiRequest") - String nssiServiceName = "nssi_"+jsonUtil.getJsonValue(uuiRequest, "service.name") - execution.setVariable("nssiServiceName",nssiServiceName) - execution.setVariable("nssiServiceType",nssiServiceType) - execution.setVariable("nssiServiceInvariantUuid",nssiServiceInvariantUuid) - execution.setVariable("nssiServiceUuid",nssiServiceUuid) - execution.setVariable("serviceRole",serviceRole) - - String content = serviceDecomposition.getServiceInfo().getServiceArtifact().get(0).getContent() - String nsstID = jsonUtil.getJsonValue(content, "metadata.id") - String nsstVendor = jsonUtil.getJsonValue(content, "metadata.vendor") - String nsstDomain = jsonUtil.getJsonValue(content, "metadata.domainType") - String nsstType = jsonUtil.getJsonValue(content, "metadata.type") - - execution.setVariable("nsstID",nsstID) - execution.setVariable("nsstVendor",nsstVendor) - execution.setVariable("nsstDomain",nsstDomain) - execution.setVariable("nssiServiceUuid",nssiServiceUuid) - execution.setVariable("nsstType",nsstType) - - String nsstContentInfo = """{ - "NsstID":"${nsstID}", - "Vendor":"${nsstVendor}", - "type":"${nsstType}" - }""" - - logger.trace("Exit getNSSTInfo in DoAllocateNSSI()") - } - - void timeDelay(DelegateExecution execution) { - logger.trace("Enter timeDelay in DoAllocateNSSI()") - try { - Thread.sleep(60000); - int currentCycle = execution.getVariable("currentCycle") - 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()") - } + private NssmfAdapterUtils nssmfAdapterUtils = new NssmfAdapterUtils(httpClientFactory, jsonUtil) + private static final NSSMF_ALLOCATE_URL = "/api/rest/provMns/v1/NSS/SliceProfiles" - void sendUpdateRequestNSSMF(DelegateExecution execution) { - logger.debug("Enter sendUpdateRequestNSSMF in DoAllocateNSSI()") - String domain = execution.getVariable("nsstDomain") - String nssmfRequest = buildUpdateNSSMFRequest(execution, domain.toUpperCase()) + private static final NSSMF_QUERY_JOB_STATUS_URL = "/NSS/jobs/%s" - String urlString = "/api/rest/provMns/v1/NSS/SliceProfiles" + @Override + void preProcessRequest(DelegateExecution execution) { + logger.trace("Enter preProcessRequest()") - String nssmfResponse = nssmfAdapterUtils.sendPostRequestNSSMF(execution, urlString, nssmfRequest) + NssmfAdapterNBIRequest nbiRequest = execution.getVariable("nbiRequest") as NssmfAdapterNBIRequest - if (nssmfResponse != null) { - execution.setVariable("nssmfResponse", nssmfResponse) - String nssiId = jsonUtil.getJsonValue(nssmfResponse, "nssiId") - String jobId = jsonUtil.getJsonValue(nssmfResponse, "jobId") - execution.setVariable("nssiId",nssiId) - execution.setVariable("jobId",jobId) + execution.setVariable("currentCycle", 0) + boolean isNSIOptionAvailable = execution.getVariable("isNSIOptionAvailable") as Boolean + if (!isNSIOptionAvailable) { + nbiRequest.serviceInfo.setActionType("allocate") + } else if (StringUtils.isBlank(nbiRequest.serviceInfo.nssiId)){ + nbiRequest.serviceInfo.setActionType("allocate") } else { - logger.error("received error message from NSSMF : "+ nssmfResponse) - exceptionUtil.buildAndThrowWorkflowException(execution, 7000,"Received a Bad Sync Response from NSSMF.") + nbiRequest.serviceInfo.setActionType("modify") } - logger.trace("Exit sendUpdateRequestNSSMF in DoAllocateNSSI()") + execution.setVariable("nbiRequest", nbiRequest) + logger.trace("Exit preProcessRequest") } + /** + * send Create Request NSSMF + * @param execution + */ void sendCreateRequestNSSMF(DelegateExecution execution) { - logger.debug("Enter sendCreateRequestNSSMF in DoAllocateNSSI()") - //Prepare auth for NSSMF - Begin - String domain = execution.getVariable("nsstDomain") - String nssmfRequest = buildCreateNSSMFRequest(execution, domain.toUpperCase()) - - String urlString = "/api/rest/provMns/v1/NSS/SliceProfiles" - - String nssmfResponse = nssmfAdapterUtils.sendPostRequestNSSMF(execution, urlString, nssmfRequest) - - if (nssmfResponse != null) { - execution.setVariable("nssmfResponse", nssmfResponse) - String nssiId = jsonUtil.getJsonValue(nssmfResponse, "nssiId") - String jobId = jsonUtil.getJsonValue(nssmfResponse, "jobId") - execution.setVariable("nssiId",nssiId) - execution.setVariable("jobId",jobId) - - } else { - logger.error("received error message from NSSMF : "+ nssmfResponse) - exceptionUtil.buildAndThrowWorkflowException(execution, 7000,"Received a Bad Sync Response from NSSMF.") - } - - logger.debug("Exit sendCreateRequestNSSMF in DoAllocateNSSI()") - } - - void getNSSMFProgresss(DelegateExecution execution) { - logger.debug("Enter getNSSMFProgresss in DoAllocateNSSI()") - - String nssmfRequest = buildNSSMFProgressRequest(execution) - String strUrl="/api/rest/provMns/v1/NSS/jobs/" + execution.getVariable("jobId") - - String nssmfResponse = nssmfAdapterUtils.sendPostRequestNSSMF(execution, strUrl, nssmfRequest) - - if(nssmfResponse != null){ - Boolean isNSSICreated = false - execution.setVariable("nssmfResponse", nssmfResponse) - Integer progress = Integer.parseInt(jsonUtil.getJsonValue(nssmfResponse, "responseDescriptor.progress")) - String status = jsonUtil.getJsonValue(nssmfResponse, "responseDescriptor.status") - String statusDescription = jsonUtil.getJsonValue(nssmfResponse, "responseDescriptor.statusDescription") - execution.setVariable("nssmfProgress",progress) - execution.setVariable("nssmfStatus",status) - execution.setVariable("nddmfStatusDescription",statusDescription) - if(progress > 99) - isNSSICreated = true - execution.setVariable("isNSSICreated",isNSSICreated) - } else { - logger.error("received error message from NSSMF : "+ nssmfResponse) - exceptionUtil.buildAndThrowWorkflowException(execution, 7000,"Received a Bad Sync Response from NSSMF.") - } - logger.debug("Exit getNSSMFProgresss in DoAllocateNSSI()") - } - - void updateRelationship(DelegateExecution execution) { - logger.debug("Enter updateRelationship in DoAllocateNSSI()") - String nssiInstanceId = execution.getVariable("nssiInstanceId") - String nsiInstanceId = execution.getVariable("nsiServiceInstanceId") - try{ - AAIResourceUri nsiServiceuri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, nsiInstanceId); - AAIResourceUri nssiServiceUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, nssiInstanceId) - getAAIClient().connect(nsiServiceuri, nssiServiceUri, AAIEdgeLabel.COMPOSED_OF); - }catch(Exception ex) { - String msg = "Exception in DoAllocateNSSI InstantiateNSSI service while creating relationship " + ex.getMessage() - logger.info(msg) - exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) - } - logger.debug("Exit updateRelationship in DoAllocateNSSI()") + NssmfAdapterNBIRequest nbiRequest = execution.getVariable("nbiRequest") as NssmfAdapterNBIRequest + String response = nssmfAdapterUtils.sendPostRequestNSSMF(execution, NSSMF_ALLOCATE_URL, + objectMapper.writeValueAsString(nbiRequest)) + ResponseEntity responseEntity = objectMapper.readValue(response, ResponseEntity.class) + String respBody = responseEntity.getBody() + NssiResponse result = objectMapper.readValue(respBody, NssiResponse.class) + //todo: if success + //todo: + execution.setVariable("serviceInfo", nbiRequest.getServiceInfo()) + execution.setVariable("esrInfo", nbiRequest.getEsrInfo()) } + /** + * query nssi allocate status + * @param execution + */ + void queryNSSIStatus(DelegateExecution execution) { + NssmfAdapterNBIRequest nbiRequest = new NssmfAdapterNBIRequest() + NssiResponse nssiAllocateResult = execution.getVariable("nssiAllocateResult") as NssiResponse + String jobId = nssiAllocateResult.getJobId() + String nssiId = nssiAllocateResult.getNssiId() - void instantiateNSSIService(DelegateExecution execution) { - logger.trace("Enter instantiateNSSIService in DoAllocateNSSI()") - //String nssiInstanceId = execution.getVariable("nssiInstanceId") - String nssiInstanceId = execution.getVariable("nssiId") - execution.setVariable("nssiInstanceId",nssiInstanceId) - String sliceInstanceId = execution.getVariable("nsiServiceInstanceId") - try { - org.onap.aai.domain.yang.ServiceInstance nssi = new ServiceInstance(); - Map<String, Object> serviceProfileMap = execution.getVariable("serviceProfile") - - nssi.setServiceInstanceId(nssiInstanceId) - nssi.setServiceInstanceName(execution.getVariable("nssiServiceName")) - //nssi.setServiceType(execution.getVariable("nssiServiceType")) - nssi.setServiceType(serviceProfileMap.get("sST").toString()) - String serviceStatus = "deactivated" - nssi.setOrchestrationStatus(serviceStatus) - String modelInvariantUuid = execution.getVariable("nssiServiceInvariantUuid") - String modelUuid = execution.getVariable("nssiServiceUuid") - nssi.setModelInvariantId(modelInvariantUuid) - nssi.setModelVersionId(modelUuid) - String uuiRequest = execution.getVariable("uuiRequest") - String serviceInstanceLocationid = jsonUtil.getJsonValue(uuiRequest, "service.parameters.requestInputs.plmnIdList") - nssi.setServiceInstanceLocationId(serviceInstanceLocationid) - //String snssai = jsonUtil.getJsonValue(uuiRequest, "service.parameters.requestInputs.sNSSAI") - String envContext=execution.getVariable("nsstDomain") - nssi.setEnvironmentContext(envContext) - nssi.setServiceRole(execution.getVariable("serviceRole")) - AAIResourcesClient client = new AAIResourcesClient() - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, execution.getVariable("globalSubscriberId"), execution.getVariable("subscriptionServiceType"), nssiInstanceId) - client.create(uri, nssi) - } catch (BpmnError e) { - throw e - } catch (Exception ex) { - String msg = "Exception in DoCreateSliceServiceInstance.instantiateSliceService. " + ex.getMessage() - logger.info(msg) - exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) - } - try{ - AAIResourceUri nsiServiceuri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, sliceInstanceId); - AAIResourceUri nssiServiceUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, nssiInstanceId) - getAAIClient().connect(nsiServiceuri, nssiServiceUri, AAIEdgeLabel.COMPOSED_OF); - }catch(Exception ex) { - String msg = "Exception in DoAllocateNSSI InstantiateNSSI service while creating relationship " + ex.getMessage() - logger.info(msg) - exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) - } - + ServiceInfo serviceInfo = execution.getVariable("serviceInfo") as ServiceInfo + serviceInfo.setNssiId(nssiId) + EsrInfo esrInfo = execution.getVariable("esrInfo") as EsrInfo + //nbiRequest.setResponseId(jobId) + nbiRequest.setServiceInfo(serviceInfo) + nbiRequest.setEsrInfo(esrInfo) - def rollbackData = execution.getVariable("RollbackData") - if (rollbackData == null) { - rollbackData = new RollbackData(); - } - //rollbackData.put("SERVICEINSTANCE", "disableRollback", idisableRollback.toStrng()) - rollbackData.put("SERVICEINSTANCE", "rollbackAAI", "true") - rollbackData.put("SERVICEINSTANCE", "serviceInstanceId", nssiInstanceId) - rollbackData.put("SERVICEINSTANCE", "subscriptionServiceType", execution.getVariable("subscriptionServiceType")) - rollbackData.put("SERVICEINSTANCE", "globalSubscriberId", execution.getVariable("globalSubscriberId")) - execution.setVariable("rollbackData", rollbackData) - execution.setVariable("RollbackData", rollbackData) - logger.debug("RollbackData:" + rollbackData) - logger.trace("Exit instantiateNSSIService in DoAllocateNSSI()") - } + String endpoint = String.format(NSSMF_QUERY_JOB_STATUS_URL, jobId) + String response = + nssmfAdapterUtils.sendPostRequestNSSMF(execution, endpoint, objectMapper.writeValueAsString(nbiRequest)) - void createSliceProfile(DelegateExecution execution) { - logger.trace("Enter createSliceProfile in DoAllocateNSSI()") - String sliceserviceInstanceId = execution.getVariable("nssiInstanceId") - String nssiProfileID = execution.getVariable("nssiProfileID") - Map<String, Object> sliceProfileMap = execution.getVariable("sliceProfileCn") - Map<String, Object> serviceProfileMap = execution.getVariable("serviceProfile") - SliceProfile sliceProfile = new SliceProfile() - sliceProfile.setServiceAreaDimension("") - sliceProfile.setPayloadSize(0) - sliceProfile.setJitter(0) - sliceProfile.setSurvivalTime(0) - //sliceProfile.setCsAvailability() - //sliceProfile.setReliability() - sliceProfile.setExpDataRate(0) - sliceProfile.setTrafficDensity(0) - sliceProfile.setConnDensity(0) - sliceProfile.setSNssai(sliceProfileMap.get("sNSSAI").toString()) - sliceProfile.setExpDataRateUL(Integer.parseInt(sliceProfileMap.get("expDataRateUL").toString())) - sliceProfile.setExpDataRateDL(Integer.parseInt(sliceProfileMap.get("expDataRateDL").toString())) - sliceProfile.setActivityFactor(Integer.parseInt(sliceProfileMap.get("activityFactor").toString())) - sliceProfile.setResourceSharingLevel(sliceProfileMap.get("activityFactor").toString()) - sliceProfile.setUeMobilityLevel(serviceProfileMap.get("uEMobilityLevel").toString()) - sliceProfile.setCoverageAreaTAList(serviceProfileMap.get("coverageAreaTAList").toString()) - sliceProfile.setMaxNumberOfUEs(Integer.parseInt(sliceProfileMap.get("activityFactor").toString())) - sliceProfile.setLatency(Integer.parseInt(sliceProfileMap.get("latency").toString())) - sliceProfile.setProfileId(nssiProfileID) - sliceProfile.setE2ELatency(0) + ResponseEntity responseEntity = objectMapper.readValue(response, ResponseEntity.class) + String result = responseEntity.getBody() + //todo;if success + ResponseDescriptor responseDescriptor = objectMapper.readValue(result, ResponseDescriptor.class) - try { - AAIResourcesClient client = new AAIResourcesClient() - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SLICE_PROFILE, - execution.getVariable("globalSubscriberId"), execution.getVariable("subscriptionServiceType"), sliceserviceInstanceId, nssiProfileID) - client.create(uri, sliceProfile) - } catch (BpmnError e) { - throw e - } catch (Exception ex) { - String msg = "Exception in DoCreateSliceServiceInstance.instantiateSliceService. " + ex.getMessage() - logger.info(msg) - exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) - } - - def rollbackData = execution.getVariable("RollbackData") - if (rollbackData == null) { - rollbackData = new RollbackData(); - } - //rollbackData.put("SERVICEINSTANCE", "disableRollback", disableRollback.toString()) - rollbackData.put("SERVICEINSTANCE", "rollbackAAI", "true") - rollbackData.put("SERVICEINSTANCE", "serviceInstanceId", sliceserviceInstanceId) - rollbackData.put("SERVICEINSTANCE", "subscriptionServiceType", execution.getVariable("serviceType")) - rollbackData.put("SERVICEINSTANCE", "globalSubscriberId", execution.getVariable("globalSubscriberId")) - execution.setVariable("rollbackData", rollbackData) - execution.setVariable("RollbackData", rollbackData) - logger.debug("RollbackData:" + rollbackData) - logger.trace("Exit createSliceProfile in DoAllocateNSSI()") + //todo: handle status + execution.setVariable("nssiAllocateResult", responseDescriptor) } + void prepareUpdateOrchestrationTask(DelegateExecution execution) { + logger.debug("Start prepareUpdateOrchestrationTask progress") + String requestMethod = "PUT" - String buildCreateNSSMFRequest(DelegateExecution execution, String domain) { - - NssiAllocateRequest request = new NssiAllocateRequest() - String strRequest = "" - //String uuiRequest = execution.getVariable("uuiRequest") - SliceTaskParams sliceTaskParams = execution.getVariable("sliceTaskParams") - - switch (domain) { - case "AN": - EsrInfo esrInfo = new EsrInfo() - esrInfo.setNetworkType(execution.getVariable("networkType")) - esrInfo.setVendor(execution.getVariable("nsstVendor")) - - NsiInfo nsiInfo = new NsiInfo() - nsiInfo.setNsiId(execution.getVariable("nsiInstanceID")) - nsiInfo.setNsiName(execution.getVariable("nsiInstanceName")) - - AnSliceProfile anSliceProfile = new AnSliceProfile() - anSliceProfile.setLatency(execution.getVariable("latency")) - anSliceProfile.setCoverageAreaTAList(execution.getVariable("coverageAreaList")) - anSliceProfile.setQi(execution.getVariable("qi")) - - AllocateAnNssi allocateAnNssi = new AllocateAnNssi() - allocateAnNssi.setNsstId(execution.getVariable("nsstId")) - allocateAnNssi.setNssiName(execution.getVariable("nssiName")) - allocateAnNssi.setNsiInfo(nsiInfo) - allocateAnNssi.setSliceProfile(anSliceProfile) - String anScriptName = sliceTaskParams.getAnScriptName() - allocateAnNssi.setScriptName(anScriptName) - - request.setAllocateAnNssi(allocateAnNssi) - request.setEsrInfo(esrInfo) - break; - case "CN": - Map<String, Object> sliceProfileCn =execution.getVariable("sliceProfileCn") - Map<String, Object> serviceProfile = execution.getVariable("serviceProfile") - NsiInfo nsiInfo = new NsiInfo() - nsiInfo.setNsiId(execution.getVariable("nsiServiceInstanceId")) - nsiInfo.setNsiName(execution.getVariable("nsiServiceInstanceName")) - - EsrInfo esrInfo = new EsrInfo() - esrInfo.setNetworkType(NetworkType.fromString(domain)) - esrInfo.setVendor(execution.getVariable("nsstVendor")) - execution.setVariable("esrInfo",esrInfo) - - - PerfReqEmbb perfReqEmbb = new PerfReqEmbb() - perfReqEmbb.setActivityFactor(sliceProfileCn.get("activityFactor")) - perfReqEmbb.setAreaTrafficCapDL(sliceProfileCn.get("areaTrafficCapDL")) - perfReqEmbb.setAreaTrafficCapUL(sliceProfileCn.get("areaTrafficCapUL")) - perfReqEmbb.setExpDataRateDL(sliceProfileCn.get("expDataRateDL")) - perfReqEmbb.setExpDataRateUL(sliceProfileCn.get("expDataRateUL")) - - List<PerfReqEmbb> listPerfReqEmbbList = new ArrayList<>() - listPerfReqEmbbList.add(perfReqEmbb) - - PerfReq perfReq = new PerfReq() - perfReq.setPerfReqEmbbList(listPerfReqEmbbList) - - PerfReqUrllc perfReqUrllc = new PerfReqUrllc() - perfReqUrllc.setConnDensity(0) - perfReqUrllc.setTrafficDensity(0) - perfReqUrllc.setExpDataRate(0) - perfReqUrllc.setReliability(0) - perfReqUrllc.setCsAvailability(0) - perfReqUrllc.setSurvivalTime(0) - perfReqUrllc.setJitter(0) - perfReqUrllc.setE2eLatency(0) - perfReqUrllc.setPayloadSize("0") - perfReqUrllc.setServiceAreaDimension("") - - List<PerfReqUrllc> perfReqUrllcList = new ArrayList<>() - perfReqUrllcList.add(perfReqUrllc) - perfReq.setPerfReqUrllcList(perfReqUrllcList) - - CnSliceProfile cnSliceProfile = new CnSliceProfile() - cnSliceProfile.setSliceProfileId(execution.getVariable("nssiProfileID")) - String plmnStr = serviceProfile.get("plmnIdList") - List<String> plmnIdList=Arrays.asList(plmnStr.split("\\|")) - cnSliceProfile.setPlmnIdList(plmnIdList) - - String resourceSharingLevel = serviceProfile.get("resourceSharingLevel").toString() - cnSliceProfile.setResourceSharingLevel(ResourceSharingLevel.fromString(resourceSharingLevel)) - - String coverageArea = serviceProfile.get("coverageAreaTAList") - List<String> coverageAreaList=Arrays.asList(coverageArea.split("\\|")) - cnSliceProfile.setCoverageAreaTAList(coverageAreaList) - - String ueMobilityLevel = serviceProfile.get("uEMobilityLevel").toString() - cnSliceProfile.setUeMobilityLevel(UeMobilityLevel.fromString(ueMobilityLevel)) - - int latency = serviceProfile.get("latency") - cnSliceProfile.setLatency(latency) - - int maxUE = serviceProfile.get("maxNumberofUEs") - cnSliceProfile.setMaxNumberofUEs(maxUE) - - String snssai = serviceProfile.get("sNSSAI") - List<String> snssaiList = Arrays.asList(snssai.split("\\|")) - cnSliceProfile.setSnssaiList(snssaiList) - - cnSliceProfile.setPerfReq(perfReq) - - AllocateCnNssi allocateCnNssi = new AllocateCnNssi() - allocateCnNssi.setNsstId(execution.getVariable("nsstid")) - allocateCnNssi.setNssiName(execution.getVariable("nssiName")) - allocateCnNssi.setSliceProfile(cnSliceProfile) - allocateCnNssi.setNsiInfo(nsiInfo) - String cnScriptName = sliceTaskParams.getCnScriptName() - allocateCnNssi.setScriptName(cnScriptName) - request.setAllocateCnNssi(allocateCnNssi) - request.setEsrInfo(esrInfo) - break; - case "TN": - EsrInfo esrInfo = new EsrInfo() - esrInfo.setNetworkType(execution.getVariable("networkType")) - esrInfo.setVendor(execution.getVariable("vendor")) + SliceTaskParamsAdapter sliceParams = + execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter + ResponseDescriptor response = execution.getVariable("nssiAllocateResult") as ResponseDescriptor + SubnetType subnetType = execution.getVariable("subnetType") as SubnetType - TnSliceProfile tnSliceProfile = new TnSliceProfile() - tnSliceProfile.setLatency(execution.getVariable("latency")) - tnSliceProfile.setBandwidth(execution.getVariable("bandWidth")) - NsiInfo nsiInfo = new NsiInfo() - nsiInfo.setNsiId(execution.getVariable("nsiInstanceID")) - nsiInfo.setNsiName(execution.getVariable("nsiInstanceName")) + SliceTaskInfo sliceTaskInfo = execution.getVariable("sliceTaskInfo") as SliceTaskInfo + sliceTaskInfo.progress = response.getProgress() + sliceTaskInfo.status = response.getStatus() + sliceTaskInfo.statusDescription = response.getStatusDescription() + updateNssiResult(sliceParams, subnetType, sliceTaskInfo) - AllocateTnNssi allocateTnNssi = new AllocateTnNssi() - allocateTnNssi.setSliceProfile(tnSliceProfile) - allocateTnNssi.setNsiInfo(nsiInfo) - allocateTnNssi.setNsstId(execution.getVariable("nsstid")) - String tnScriptName = sliceTaskParams.getTnScriptName() - allocateTnNssi.setScriptName(tnScriptName) + String paramJson = sliceParams.convertToJson() + execution.setVariable("CSSOT_paramJson", paramJson) + execution.setVariable("CSSOT_requestMethod", requestMethod) - request.setAllocateTnNssi(allocateTnNssi) - request.setEsrInfo(esrInfo) - break; - default: - break; - } - try { - strRequest = MAPPER.writeValueAsString(request); - } catch (IOException e) { - logger.error("Invalid get progress request bean to convert as string"); - exceptionUtil.buildAndThrowWorkflowException(execution, 7000, "Invalid get progress request bean to convert as string") - } - return strRequest + execution.setVariable("sliceTaskParams", sliceParams) + execution.setVariable("sliceTaskInfo", sliceTaskInfo) + logger.debug("Finish prepareUpdateOrchestrationTask progress") } - - String buildUpdateNSSMFRequest(DelegateExecution execution, String domain) { - NssiAllocateRequest request = new NssiAllocateRequest() - String nsstInput = execution.getVariable("nsstInput") - String nssiId = jsonUtil.getJsonValue(nsstInput, "serviceInstanceId") - String strRequest = "" - SliceTaskParams sliceTaskParams = execution.getVariable("sliceTaskParams") - switch (domain) { - case "AN": - EsrInfo esrInfo = new EsrInfo() - esrInfo.setNetworkType(execution.getVariable("nsstType")) - esrInfo.setVendor(execution.getVariable("vendor")) - - NsiInfo nsiInfo = new NsiInfo() - nsiInfo.setNsiId(execution.getVariable("nsiInstanceID")) - nsiInfo.setNsiName(execution.getVariable("nsiInstanceName")) - - AnSliceProfile anSliceProfile = new AnSliceProfile() - anSliceProfile.setLatency(execution.getVariable("latency")) - anSliceProfile.setCoverageAreaTAList(execution.getVariable("coverageAreaList")) - anSliceProfile.setQi(execution.getVariable("qi")) - - AllocateAnNssi allocateAnNssi = new AllocateAnNssi() - allocateAnNssi.setNsstId(execution.getVariable("nsstId")) - allocateAnNssi.setNssiName(execution.getVariable("nssiName")) - allocateAnNssi.setNsiInfo(nsiInfo) - allocateAnNssi.setSliceProfile(anSliceProfile) - String anScriptName = sliceTaskParams.getAnScriptName() - allocateAnNssi.setScriptName(anScriptName) - request.setAllocateAnNssi(allocateAnNssi) - request.setEsrInfo(esrInfo) - break; - case "CN": - Map<String, Object> sliceProfileCn =execution.getVariable("sliceProfileCn") - Map<String, Object> serviceProfile = execution.getVariable("serviceProfile") - NsiInfo nsiInfo = new NsiInfo() - nsiInfo.setNsiId(execution.getVariable("nsiServiceInstanceId")) - nsiInfo.setNsiName(execution.getVariable("nsiServiceInstanceName")) - - EsrInfo esrInfo = new EsrInfo() - esrInfo.setNetworkType(NetworkType.fromString(domain)) - esrInfo.setVendor(execution.getVariable("nsstVendor")) - execution.setVariable("esrInfo",esrInfo) - - - PerfReqEmbb perfReqEmbb = new PerfReqEmbb() - perfReqEmbb.setActivityFactor(sliceProfileCn.get("activityFactor")) - perfReqEmbb.setAreaTrafficCapDL(sliceProfileCn.get("areaTrafficCapDL")) - perfReqEmbb.setAreaTrafficCapUL(sliceProfileCn.get("areaTrafficCapUL")) - perfReqEmbb.setExpDataRateDL(sliceProfileCn.get("expDataRateDL")) - perfReqEmbb.setExpDataRateUL(sliceProfileCn.get("expDataRateUL")) - - List<PerfReqEmbb> listPerfReqEmbbList = new ArrayList<>() - listPerfReqEmbbList.add(perfReqEmbb) - - PerfReq perfReq = new PerfReq() - perfReq.setPerfReqEmbbList(listPerfReqEmbbList) - - PerfReqUrllc perfReqUrllc = new PerfReqUrllc() - perfReqUrllc.setConnDensity(0) - perfReqUrllc.setTrafficDensity(0) - perfReqUrllc.setExpDataRate(0) - perfReqUrllc.setReliability(0) - perfReqUrllc.setCsAvailability(0) - perfReqUrllc.setSurvivalTime(0) - perfReqUrllc.setJitter(0) - perfReqUrllc.setE2eLatency(0) - perfReqUrllc.setPayloadSize("0") - perfReqUrllc.setServiceAreaDimension("") - - List<PerfReqUrllc> perfReqUrllcList = new ArrayList<>() - perfReqUrllcList.add(perfReqUrllc) - perfReq.setPerfReqUrllcList(perfReqUrllcList) - - CnSliceProfile cnSliceProfile = new CnSliceProfile() - cnSliceProfile.setSliceProfileId(execution.getVariable("nssiProfileID")) - String plmnStr = serviceProfile.get("plmnIdList") - List<String> plmnIdList=Arrays.asList(plmnStr.split("\\|")) - cnSliceProfile.setPlmnIdList(plmnIdList) - - String resourceSharingLevel = serviceProfile.get("resourceSharingLevel").toString() - cnSliceProfile.setResourceSharingLevel(ResourceSharingLevel.fromString(resourceSharingLevel)) - - String coverageArea = serviceProfile.get("coverageAreaTAList") - List<String> coverageAreaList=Arrays.asList(coverageArea.split("\\|")) - cnSliceProfile.setCoverageAreaTAList(coverageAreaList) - - String ueMobilityLevel = serviceProfile.get("uEMobilityLevel").toString() - cnSliceProfile.setUeMobilityLevel(UeMobilityLevel.fromString(ueMobilityLevel)) - - int latency = serviceProfile.get("latency") - cnSliceProfile.setLatency(latency) - - int maxUE = serviceProfile.get("maxNumberofUEs") - cnSliceProfile.setMaxNumberofUEs(maxUE) - - String snssai = serviceProfile.get("sNSSAI") - List<String> snssaiList = Arrays.asList(snssai.split("\\|")) - cnSliceProfile.setSnssaiList(snssaiList) - - cnSliceProfile.setPerfReq(perfReq) - - AllocateCnNssi allocateCnNssi = new AllocateCnNssi() - allocateCnNssi.setNsstId(execution.getVariable("nsstid")) - allocateCnNssi.setNssiName(execution.getVariable("nssiName")) - allocateCnNssi.setSliceProfile(cnSliceProfile) - allocateCnNssi.setNsiInfo(nsiInfo) - allocateCnNssi.setNssiId(nssiId) // need to check this - String cnScriptName = sliceTaskParams.getCnScriptName() - allocateCnNssi.setScriptName(cnScriptName) - request.setAllocateCnNssi(allocateCnNssi) - request.setEsrInfo(esrInfo) - break; - case "TN": - EsrInfo esrInfo = new EsrInfo() - esrInfo.setNetworkType(execution.getVariable("networkType")) - esrInfo.setVendor(execution.getVariable("vendor")) - - TnSliceProfile tnSliceProfile = new TnSliceProfile() - tnSliceProfile.setLatency(execution.getVariable("latency")) - tnSliceProfile.setBandwidth(execution.getVariable("bandWidth")) - - NsiInfo nsiInfo = new NsiInfo() - nsiInfo.setNsiId(execution.getVariable("nsiInstanceID")) - nsiInfo.setNsiName(execution.getVariable("nsiInstanceName")) - - AllocateTnNssi allocateTnNssi = new AllocateTnNssi() - allocateTnNssi.setSliceProfile(tnSliceProfile) - allocateTnNssi.setNsiInfo(nsiInfo) - allocateTnNssi.setNsstId(execution.getVariable("nsstid")) - String tnScriptName = sliceTaskParams.getTnScriptName() - allocateTnNssi.setScriptName(tnScriptName) - request.setAllocateTnNssi(allocateTnNssi) - request.setEsrInfo(esrInfo) - break; - default: - break; - } - try { - strRequest = MAPPER.writeValueAsString(request); - } catch (IOException e) { - logger.error("Invalid get progress request bean to convert as string"); - exceptionUtil.buildAndThrowWorkflowException(execution, 7000, "Invalid get progress request bean to convert as string") + private void updateNssiResult(SliceTaskParamsAdapter sliceTaskParams, SubnetType subnetType, + SliceTaskInfo sliceTaskInfo) { + switch (subnetType) { + case SubnetType.CN: + sliceTaskParams.cnSliceTaskInfo = sliceTaskInfo + break + case SubnetType.AN_NF: + sliceTaskParams.anSliceTaskInfo = sliceTaskInfo + break + case SubnetType.TN_BH: + sliceTaskParams.tnBHSliceTaskInfo = sliceTaskInfo + break + case SubnetType.TN_FH: + sliceTaskParams.tnFHSliceTaskInfo = sliceTaskInfo + break + case SubnetType.TN_MH: + sliceTaskParams.tnMHSliceTaskInfo = sliceTaskInfo + break } - return strRequest } - String buildNSSMFProgressRequest(DelegateExecution execution){ - JobStatusRequest request = new JobStatusRequest() - String strRequest = "" - EsrInfo esrInfo = execution.getVariable("esrInfo") - request.setNsiId(execution.getVariable("nsiServiceInstanceId")) - request.setNssiId(execution.getVariable("nssiId")) - request.setEsrInfo(esrInfo) - + void timeDelay(DelegateExecution execution) { + logger.trace("Enter timeDelay in DoAllocateNSSI()") try { - strRequest = MAPPER.writeValueAsString(request); - } catch (IOException e) { - logger.error("Invalid get progress request bean to convert as string"); - exceptionUtil.buildAndThrowWorkflowException(execution, 7000, "Invalid get progress request bean to convert as string") - } - return strRequest - } - - public void prepareUpdateOrchestrationTask(DelegateExecution execution) { - logger.debug("Start prepareUpdateOrchestrationTask progress") - String requestMethod = "PUT" - String progress = execution.getVariable("nssmfProgress") - String status = execution.getVariable("nssmfStatus") - String statusDescription=execution.getVariable("nddmfStatusDescription") - SliceTaskParams sliceTaskParams = execution.getVariable("sliceTaskParams") - String domain = execution.getVariable("nsstDomain") - switch (domain.toUpperCase()) { - case "AN": - sliceTaskParams.setAnProgress(progress) - sliceTaskParams.setAnStatus(status) - sliceTaskParams.setAnStatusDescription(statusDescription) - break; - case "CN": - sliceTaskParams.setCnProgress(progress) - sliceTaskParams.setCnStatus(status) - sliceTaskParams.setCnStatusDescription(statusDescription) - break; - case "TN": - sliceTaskParams.setTnProgress(progress) - sliceTaskParams.setTnStatus(status) - sliceTaskParams.setTnStatusDescription(statusDescription) - break; - default: - break; + Thread.sleep(60000) + int currentCycle = execution.getVariable("currentCycle") as Integer + 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) } - String paramJson = sliceTaskParams.convertToJson() - execution.setVariable("CSSOT_paramJson", paramJson) - execution.setVariable("CSSOT_requestMethod", requestMethod) - logger.debug("Finish prepareUpdateOrchestrationTask progress") + logger.trace("Exit timeDelay in DoAllocateNSSI()") } } diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateNSSIV2.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateNSSIV2.groovy deleted file mode 100644 index 05bb53a61e..0000000000 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateNSSIV2.groovy +++ /dev/null @@ -1,117 +0,0 @@ -package org.onap.so.bpmn.infrastructure.scripts - -import com.fasterxml.jackson.databind.ObjectMapper -import org.apache.commons.lang3.StringUtils -import org.camunda.bpm.engine.delegate.DelegateExecution -import org.onap.so.beans.nsmf.SliceTaskInfo -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.core.domain.ModelInfo -import org.onap.so.bpmn.core.domain.ServiceDecomposition -import org.onap.so.bpmn.core.json.JsonUtils -import org.slf4j.Logger -import org.slf4j.LoggerFactory - -class DoAllocateNSSIV2 extends AbstractServiceTaskProcessor { - - private static final Logger logger = LoggerFactory.getLogger( DoAllocateNSSIV2.class); - private static final ObjectMapper MAPPER = new ObjectMapper(); - - ExceptionUtil exceptionUtil = new ExceptionUtil() - - JsonUtils jsonUtil = new JsonUtils() - - private NssmfAdapterUtils nssmfAdapterUtils = new NssmfAdapterUtils(httpClientFactory, jsonUtil) - - @Override - void preProcessRequest(DelegateExecution execution) { - logger.trace("Enter preProcessRequest()") - -// String nssmfOperation -// -// String nsstInput = execution.getVariable("nsstInput") -// String modelUuid = jsonUtil.getJsonValue(nsstInput, "modelUuid") -// //modelUuid="2763777c-27bd-4df7-93b8-c690e23f4d3f" -// String nssiInstanceId = jsonUtil.getJsonValue(nsstInput, "serviceInstanceId") -// String serviceModelInfo = """{ -// "modelInvariantUuid":"", -// "modelUuid":"${modelUuid}", -// "modelVersion":"" -// }""" -// execution.setVariable("serviceModelInfo", serviceModelInfo) -// execution.setVariable("nssiInstanceId", nssiInstanceId) -// String nssiProfileID = UUID.randomUUID().toString() -// execution.setVariable("nssiProfileID", nssiProfileID) -// if(isBlank(nssiInstanceId)) -// { -// nssmfOperation="create" -// nssiInstanceId = UUID.randomUUID().toString() -// }else { -// nssmfOperation = "update" -// } -// execution.setVariable("nssmfOperation",nssmfOperation) -// execution.setVariable("nssiInstanceId",nssiInstanceId) -// -// def isNSSICreated = false -// execution.setVariable("isNSSICreated",isNSSICreated) -// -// int currentCycle = 0 -// execution.setVariable("currentCycle", currentCycle) - - - SliceTaskInfo sliceTaskInfo = execution.getVariable("sliceTaskInfo") as SliceTaskInfo - if (StringUtils.isBlank(sliceTaskInfo.suggestNssiId)) { - execution.setVariable("nssmfOperation", "create") - } else { - execution.setVariable("nssmfOperation", "update") - } - logger.trace("Exit preProcessRequest") - } - - /** - * prepare nssi request - * @param execution - */ - void prepareNSSIReq(DelegateExecution execution) { - - } - - void getNSSTInfo(DelegateExecution execution){ - logger.trace("Enter getNSSTInfo in DoAllocateNSSI()") - ServiceDecomposition serviceDecomposition= execution.getVariable("serviceDecomposition") - ModelInfo modelInfo = serviceDecomposition.getModelInfo() - String serviceRole = "nssi" - String nssiServiceInvariantUuid = serviceDecomposition.modelInfo.getModelInvariantUuid() - String nssiServiceUuid = serviceDecomposition.modelInfo.getModelUuid() - String nssiServiceType = serviceDecomposition.getServiceType() - String uuiRequest = execution.getVariable("uuiRequest") - String nssiServiceName = "nssi_"+jsonUtil.getJsonValue(uuiRequest, "service.name") - execution.setVariable("nssiServiceName",nssiServiceName) - execution.setVariable("nssiServiceType",nssiServiceType) - execution.setVariable("nssiServiceInvariantUuid",nssiServiceInvariantUuid) - execution.setVariable("nssiServiceUuid",nssiServiceUuid) - execution.setVariable("serviceRole",serviceRole) - - String content = serviceDecomposition.getServiceInfo().getServiceArtifact().get(0).getContent() - String nsstID = jsonUtil.getJsonValue(content, "metadata.id") - String nsstVendor = jsonUtil.getJsonValue(content, "metadata.vendor") - String nsstDomain = jsonUtil.getJsonValue(content, "metadata.domainType") - String nsstType = jsonUtil.getJsonValue(content, "metadata.type") - - execution.setVariable("nsstID",nsstID) - execution.setVariable("nsstVendor",nsstVendor) - execution.setVariable("nsstDomain",nsstDomain) - execution.setVariable("nssiServiceUuid",nssiServiceUuid) - execution.setVariable("nsstType",nsstType) - - String nsstContentInfo = """{ - "NsstID":"${nsstID}", - "Vendor":"${nsstVendor}", - "type":"${nsstType}" - }""" - - logger.trace("Exit getNSSTInfo in DoAllocateNSSI()") - } - -} diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCommonCoreNSSI.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCommonCoreNSSI.groovy new file mode 100644 index 0000000000..e225c360ed --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCommonCoreNSSI.groovy @@ -0,0 +1,1014 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2020 Telecom Italia + * ================================================================================ + * 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 org.camunda.bpm.engine.delegate.DelegateExecution +import org.onap.aai.domain.yang.CloudRegion +import org.onap.aai.domain.yang.GenericVnf +import org.onap.aai.domain.yang.ModelVer +import org.onap.aai.domain.yang.ServiceInstance +import org.onap.aai.domain.yang.ServiceSubscription +import org.onap.aai.domain.yang.SliceProfile +import org.onap.aai.domain.yang.Tenant +import org.onap.aai.domain.yang.VfModule +import org.onap.aaiclient.client.aai.AAIObjectType +import org.onap.aaiclient.client.aai.AAIResourcesClient +import org.onap.aaiclient.client.aai.entities.AAIResultWrapper +import org.onap.aaiclient.client.aai.entities.Relationships +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.ONAPComponents +import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor +import org.onap.so.bpmn.common.scripts.ExceptionUtil +import org.onap.so.bpmn.common.scripts.RequestDBUtil +import org.onap.so.bpmn.core.UrnPropertiesReader +import org.onap.so.bpmn.core.json.JsonUtils +import org.onap.so.client.HttpClient +import org.onap.so.db.request.beans.OperationStatus +import org.onap.so.requestsdb.RequestsDbConstant +import org.onap.so.serviceinstancebeans.CloudConfiguration +import org.onap.so.serviceinstancebeans.LineOfBusiness +import org.onap.so.serviceinstancebeans.ModelInfo +import org.onap.so.serviceinstancebeans.ModelType +import org.onap.so.serviceinstancebeans.OwningEntity +import org.onap.so.serviceinstancebeans.Project +import org.onap.so.serviceinstancebeans.RequestDetails +import org.onap.so.serviceinstancebeans.RequestInfo +import org.onap.so.serviceinstancebeans.RequestParameters +import org.onap.so.serviceinstancebeans.Resources +import org.onap.so.serviceinstancebeans.Service +import org.onap.so.serviceinstancebeans.SubscriberInfo +import org.onap.so.serviceinstancebeans.VfModules +import org.onap.so.serviceinstancebeans.Vnfs +import org.slf4j.Logger +import org.slf4j.LoggerFactory + +import javax.ws.rs.core.Response + + + class DoCommonCoreNSSI extends AbstractServiceTaskProcessor { + + private final String PREFIX ="DoCommonCoreNSSI" + + private static final Logger LOGGER = LoggerFactory.getLogger( DoCommonCoreNSSI.class) + + private JsonUtils jsonUtil = new JsonUtils() + private ExceptionUtil exceptionUtil = new ExceptionUtil() + private RequestDBUtil requestDBUtil = new RequestDBUtil() + + @Override + void preProcessRequest(DelegateExecution execution) { + LOGGER.trace("${getPrefix()} Start preProcessRequest") + + def currentNSSI = execution.getVariable("currentNSSI") + if (!currentNSSI) { + String msg = "currentNSSI is null" + LOGGER.error(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) + } + + LOGGER.trace("***** ${getPrefix()} Exit preProcessRequest") + } + + + /** + * Queries Network Service Instance in AAI + * @param execution + */ + void getNetworkServiceInstance(DelegateExecution execution) { + LOGGER.trace("${getPrefix()} Start getNetworkServiceInstance") + + AAIResourcesClient client = getAAIClient() + + def currentNSSI = execution.getVariable("currentNSSI") + + String nssiId = currentNSSI['nssiId'] + + AAIResourceUri nssiUri = AAIUriFactory.createResourceUri(Types.SERVICE_INSTANCE.getFragment(nssiId)) + Optional<ServiceInstance> nssiOpt = client.get(ServiceInstance.class, nssiUri) + + if (nssiOpt.isPresent()) { + ServiceInstance nssi = nssiOpt.get() + currentNSSI['nssi'] = nssi + + ServiceInstance networkServiceInstance = handleNetworkInstance(execution, nssiId, nssiUri, client) + currentNSSI['networkServiceInstance'] = networkServiceInstance + } + else { + String msg = String.format("NSSI %s not found in AAI", nssiId) + LOGGER.error(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, msg) + } + + LOGGER.trace("${getPrefix()} Exit getNetworkServiceInstance") + } + + + /** + * Handles Network Service + * @param nssiId + * @param nssiUri + * @param client + * @return Network Service Instance + */ + private ServiceInstance handleNetworkInstance(DelegateExecution execution, String nssiId, AAIResourceUri nssiUri, AAIResourcesClient client ) { + ServiceInstance networkServiceInstance = null + + def currentNSSI = execution.getVariable("currentNSSI") + + AAIResultWrapper wrapper = client.get(nssiUri) + Optional<Relationships> relationships = wrapper.getRelationships() + + if (relationships.isPresent()) { + for (AAIResourceUri networkServiceInstanceUri : relationships.get().getRelatedUris(Types.SERVICE_INSTANCE)) { + Optional<ServiceInstance> networkServiceInstanceOpt = client.get(ServiceInstance.class, networkServiceInstanceUri) + if (networkServiceInstanceOpt.isPresent()) { + networkServiceInstance = networkServiceInstanceOpt.get() + + if (networkServiceInstance.getServiceRole() == "Network Service") { // Network Service role + currentNSSI['networkServiceInstanceUri'] = networkServiceInstanceUri + break + } + } + else { + String msg = String.format("No Network Service Instance found for NSSI %s in AAI", nssiId) + LOGGER.error(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, msg) + } + } + } + else { + String msg = String.format("No relationship presented for NSSI %s in AAI", nssiId) + LOGGER.error(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, msg) + } + + if(networkServiceInstance == null) { + String msg = String.format("No Network Service Instance found for NSSI %s in AAI", nssiId) + LOGGER.error(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, msg) + } + + return networkServiceInstance + } + + + /** + * Queries constitute VNF from Network Service Instance + * @param execution + */ + void getConstituteVNFFromNetworkServiceInst(DelegateExecution execution) { + LOGGER.trace("${getPrefix()} Start getConstituteVNFFromNetworkServiceInst") + + def currentNSSI = execution.getVariable("currentNSSI") + + AAIResourcesClient client = getAAIClient() + + AAIResourceUri networkServiceInstanceUri = (AAIResourceUri)currentNSSI['networkServiceInstanceUri'] + AAIResultWrapper wrapper = client.get(networkServiceInstanceUri); + Optional<Relationships> relationships = wrapper.getRelationships() + if (relationships.isPresent()) { + for (AAIResourceUri constituteVnfUri : relationships.get().getRelatedUris(Types.GENERIC_VNF)) { + currentNSSI['constituteVnfUri'] = constituteVnfUri + Optional<GenericVnf> constituteVnfOpt = client.get(GenericVnf.class, constituteVnfUri) + if(constituteVnfOpt.isPresent()) { + GenericVnf constituteVnf = constituteVnfOpt.get() + currentNSSI['constituteVnf'] = constituteVnf + } + else { + String msg = String.format("No constitute VNF found for Network Service Instance %s in AAI", ((ServiceInstance)currentNSSI['networkServiceInstance']).getServiceInstanceId()) + LOGGER.error(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, msg) + } + + break // Should be only one constitute VNF + } + } + else { + String msg = String.format("No relationship presented for Network Service Instance %s in AAI", ((ServiceInstance)currentNSSI['networkServiceInstance']).getServiceInstanceId()) + LOGGER.error(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, msg) + } + + LOGGER.trace("${getPrefix()} Exit getConstituteVNFFromNetworkServiceInst") + + } + + + /** + * Retrieves NSSI associated profiles from AAI + * @param execution + */ + void getNSSIAssociatedProfiles(DelegateExecution execution) { + LOGGER.trace("${getPrefix()} Start getNSSIAssociatedProfiles") + + def currentNSSI = execution.getVariable("currentNSSI") + + ServiceInstance nssi = (ServiceInstance)currentNSSI['nssi'] + + List<SliceProfile> associatedProfiles = nssi.getSliceProfiles().getSliceProfile() + + if(associatedProfiles.isEmpty()) { + String msg = String.format("No associated profiles found for NSSI %s in AAI", nssi.getServiceInstanceId()) + LOGGER.error(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 2500, msg) + } + else { + currentNSSI['associatedProfiles'] = associatedProfiles + } + + LOGGER.trace("${getPrefix()} Exit getNSSIAssociatedProfiles") + } + + + /** + * Calculates a final list of S-NSSAI + * @param execution + */ + void calculateSNSSAI(DelegateExecution execution) { + LOGGER.trace("${getPrefix()} Start calculateSNSSAI") + + def currentNSSI = execution.getVariable("currentNSSI") + + List<SliceProfile> associatedProfiles = (List<SliceProfile>)currentNSSI['associatedProfiles'] + + String currentSNSSAI = currentNSSI['S-NSSAI'] + + List<String> snssais = new ArrayList<>() + + String isCreateSliceProfileInstanceVar = execution.getVariable("isCreateSliceProfileInstance" ) + + boolean isCreateSliceProfileInstance = Boolean.parseBoolean(isCreateSliceProfileInstanceVar) + + if(isCreateSliceProfileInstance) { // Slice Profile Instance has to be created + for (SliceProfile associatedProfile : associatedProfiles) { + snssais.add(associatedProfile.getSNssai()) + } + + snssais.add(currentSNSSAI) + } + else { // Slice profile instance has to be deleted + for (SliceProfile associatedProfile : associatedProfiles) { + if (!associatedProfile.getSNssai().equals(currentSNSSAI)) { // not current S-NSSAI + snssais.add(associatedProfile.getSNssai()) + } else { + currentNSSI['sliceProfileS-NSSAI'] = associatedProfile + } + } + } + + currentNSSI['S-NSSAIs'] = snssais + + LOGGER.trace("${getPrefix()} Exit calculateSNSSAI") + } + + + /** + * Invoke PUT Service Instance API + * @param execution + */ + void invokePUTServiceInstance(DelegateExecution execution) { + LOGGER.trace("${getPrefix()} Start invokePUTServiceInstance") + + def currentNSSI = execution.getVariable("currentNSSI") + + try { + //url:/onap/so/infra/serviceInstantiation/v7/serviceInstances/{serviceInstanceId}/vnfs/{vnfId}" + def nsmfЕndpoint = UrnPropertiesReader.getVariable("mso.infra.endpoint.url", execution) // ??? + + ServiceInstance networkServiceInstance = (ServiceInstance)currentNSSI['networkServiceInstance'] + + GenericVnf constituteVnf = (GenericVnf)currentNSSI['constituteVnf'] + + String url = String.format("${nsmfЕndpoint}/serviceInstantiation/v7/serviceInstances/%s/vnfs/%s", networkServiceInstance.getServiceInstanceId(), constituteVnf.getVnfId()) + + String msoKey = UrnPropertiesReader.getVariable("mso.msoKey", execution) + String basicAuth = UrnPropertiesReader.getVariable("mso.infra.endpoint.auth", execution) + + def authHeader = "" + String basicAuthValue = encryptBasicAuth(basicAuth, msoKey) //utils.encrypt(basicAuth, msoKey) + String responseAuthHeader = getAuthHeader(execution, basicAuthValue, msoKey) //utils.getBasicAuth(basicAuthValue, msoKey) + + String errorCode = jsonUtil.getJsonValue(responseAuthHeader, "errorCode") + if(errorCode == null || errorCode.isEmpty()) { // No error + authHeader = responseAuthHeader + } + else { + exceptionUtil.buildAndThrowWorkflowException(execution, Integer.parseInt(errorCode), jsonUtil.getJsonValue(responseAuthHeader, "errorMessage")) + } + + def requestDetails = "" + String prepareRequestDetailsResponse = prepareRequestDetails(execution) + errorCode = jsonUtil.getJsonValue(prepareRequestDetailsResponse, "errorCode") + if(errorCode == null || errorCode.isEmpty()) { // No error + requestDetails = prepareRequestDetailsResponse + } + else { + exceptionUtil.buildAndThrowWorkflowException(execution, Integer.parseInt(errorCode), jsonUtil.getJsonValue(prepareRequestDetailsResponse, "errorMessage")) + } + + String callPUTServiceInstanceResponse = callPUTServiceInstance(url, authHeader, requestDetails) + String putServiceInstanceResponse = "" + + if(errorCode == null || errorCode.isEmpty()) { // No error + putServiceInstanceResponse = callPUTServiceInstanceResponse // check the response ??? + } + else { + LOGGER.error(jsonUtil.getJsonValue(callPUTServiceInstanceResponse, "errorMessage")) + exceptionUtil.buildAndThrowWorkflowException(execution, Integer.parseInt(errorCode), jsonUtil.getJsonValue(callPUTServiceInstanceResponse, "errorMessage")) + } + + } catch (any) { + String msg = "Exception in ${getPrefix()}.invokePUTServiceInstance. " + any.getCause() + LOGGER.error(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + + LOGGER.trace("${getPrefix()} Exit invokePUTServiceInstance") + } + + + String callPUTServiceInstance(String url, String authHeader, String requestDetailsStr) { + String errorCode = "" + String errorMessage = "" + String response + + try { + HttpClient httpClient = getHttpClientFactory().newJsonClient(new URL(url), ONAPComponents.EXTERNAL) + httpClient.addAdditionalHeader("Authorization", authHeader) + httpClient.addAdditionalHeader("Accept", "application/json") + + Response httpResponse = httpClient.put(requestDetailsStr) // check http code ??? + + + if (httpResponse.hasEntity()) { + response = httpResponse.readEntity(String.class) + } + else { + errorCode = 500 + errorMessage = "No response received." + + response = "{\n" + + " \"errorCode\": \"${errorCode}\",\n" + + " \"errorMessage\": \"${errorMessage}\"\n" + + "}" + } + } + catch (any) { + String msg = "Exception in ${getPrefix()}.invokePUTServiceInstance. " + any.getCause() + LOGGER.error(msg) + + response = "{\n" + + " \"errorCode\": \"7000\",\n" + + " \"errorMessage\": \"${msg}\"\n" + + "}" + + } + + return response + + } + + + /** + * Prepare model info + * @param execution + * @param requestDetails + * @return ModelInfo + */ + ModelInfo prepareModelInfo(DelegateExecution execution) { + + def currentNSSI = execution.getVariable("currentNSSI") + ServiceInstance networkServiceInstance = (ServiceInstance)currentNSSI['networkServiceInstance'] + + ModelInfo modelInfo = new ModelInfo() + + modelInfo.setModelType(ModelType.service) + modelInfo.setModelInvariantId(networkServiceInstance.getModelInvariantId()) + + AAIResourcesClient client = getAAIClient() + + AAIResourceUri modelVerUrl = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.serviceDesignAndCreation().model(networkServiceInstance.getModelInvariantId()).modelVer(networkServiceInstance.getModelVersionId())) + Optional<ModelVer> modelVerOpt = client.get(ModelVer.class, modelVerUrl) + + if (modelVerOpt.isPresent()) { + modelInfo.setModelVersionId(modelVerOpt.get().getModelVersionId()) + modelInfo.setModelName(modelVerOpt.get().getModelName()) + modelInfo.setModelVersion(modelVerOpt.get().getModelVersion()) + } + + return modelInfo + } + + + /** + * Prepares subscriber info + * @param execution + * @return SubscriberInfo + */ + SubscriberInfo prepareSubscriberInfo(DelegateExecution execution) { + def currentNSSI = execution.getVariable("currentNSSI") + + String globalSubscriberId = currentNSSI['globalSubscriberId'] + + String subscriberName = currentNSSI['subscriberName'] + + SubscriberInfo subscriberInfo = new SubscriberInfo() + subscriberInfo.setGlobalSubscriberId(globalSubscriberId) + subscriberInfo.setSubscriberName(subscriberName) + + /* + AAIResourcesClient client = getAAIClient() + + Customer customer = null + + AAIResourceUri networkServiceInstanceUri = currentNSSI['networkServiceInstanceUri'] + AAIResultWrapper wrapper = client.get(networkServiceInstanceUri) + Optional<Relationships> serviceSubscriptionRelationshipsOps = wrapper.getRelationships() + if(serviceSubscriptionRelationshipsOps.isPresent()) { + List<AAIResourceUri> serviceSubscriptionRelatedAAIUris = serviceSubscriptionRelationshipsOps.get().getRelatedUris(Types.SERVICE_SUBSCRIPTION) + if(!(serviceSubscriptionRelatedAAIUris == null || serviceSubscriptionRelatedAAIUris.isEmpty())) { + AAIResourceUri serviceSubscriptionUri = serviceSubscriptionRelatedAAIUris.get(0) // Many-To-One relation + Optional<ServiceSubscription> serviceSubscriptionOpt = client.get(ServiceSubscription.class, serviceSubscriptionUri) + + if(serviceSubscriptionOpt.isPresent()) { + currentNSSI['serviceSubscription'] = serviceSubscriptionOpt.get() + } + + wrapper = client.get(serviceSubscriptionUri) + Optional<Relationships> customerRelationshipsOps = wrapper.getRelationships() + if(customerRelationshipsOps.isPresent()) { + List<AAIResourceUri> customerRelatedAAIUris = customerRelationshipsOps.get().getRelatedUris(Types.CUSTOMER) + if(!(customerRelatedAAIUris == null || customerRelatedAAIUris.isEmpty())) { + Optional<Customer> customerOpt = client.get(Customer.class, customerRelatedAAIUris.get(0)) // Many-To-One relation + if(customerOpt.isPresent()) { + customer = customerOpt.get() + subscriberInfo.setSubscriberName(customer.getSubscriberName()) + } + } + } + } + + } */ + + return subscriberInfo + } + + + /** + * Prepares Request Info + * @param execution + * @return RequestInfo + */ + RequestInfo prepareRequestInfo(DelegateExecution execution, ServiceInstance networkServiceInstance) { + def currentNSSI = execution.getVariable("currentNSSI") + + String serviceId = currentNSSI['serviceId'] + + RequestInfo requestInfo = new RequestInfo() + + requestInfo.setInstanceName(networkServiceInstance.getServiceInstanceName()) + requestInfo.setSource("VID") + requestInfo.setProductFamilyId(serviceId) + requestInfo.setRequestorId("NBI") + + return requestInfo + } + + + /** + * Prepares Model Info + * @param networkServiceInstance + * @param modelInfo + * @return ModelInfo + */ + ModelInfo prepareServiceModelInfo(ServiceInstance networkServiceInstance, ModelInfo modelInfo) { + + ModelInfo serviceModelInfo = new ModelInfo() + serviceModelInfo.setModelType(ModelType.service) + serviceModelInfo.setModelInvariantId(networkServiceInstance.getModelInvariantId()) + + serviceModelInfo.setModelVersionId(modelInfo.getModelVersionId()) + serviceModelInfo.setModelName(modelInfo.getModelName()) + serviceModelInfo.setModelVersion(modelInfo.getModelVersion()) + + return serviceModelInfo + } + + + /** + * Prepares Cloud configuration + * @param execution + * @return CloudConfiguration + */ + CloudConfiguration prepareCloudConfiguration(DelegateExecution execution) { + def currentNSSI = execution.getVariable("currentNSSI") + + CloudConfiguration cloudConfiguration = new CloudConfiguration() + + AAIResourcesClient client = getAAIClient() + + AAIResourceUri constituteVnfUri = currentNSSI['constituteVnfUri'] + AAIResultWrapper wrapper = client.get(constituteVnfUri) + Optional<Relationships> cloudRegionRelationshipsOps = wrapper.getRelationships() + + if(cloudRegionRelationshipsOps.isPresent()) { + List<AAIResourceUri> cloudRegionRelatedAAIUris = cloudRegionRelationshipsOps.get().getRelatedUris(Types.CLOUD_REGION) + if (!(cloudRegionRelatedAAIUris == null || cloudRegionRelatedAAIUris.isEmpty())) { + AAIResourceUri cloudRegionRelatedAAIUri = cloudRegionRelatedAAIUris.get(0) + currentNSSI['cloudRegionRelatedAAIUri'] = cloudRegionRelatedAAIUri + + Optional<CloudRegion> cloudRegionrOpt = client.get(CloudRegion.class, cloudRegionRelatedAAIUris.get(0)) + CloudRegion cloudRegion = null + if (cloudRegionrOpt.isPresent()) { + cloudRegion = cloudRegionrOpt.get() + cloudConfiguration.setLcpCloudRegionId(cloudRegion.getCloudRegionId()) + for (Tenant tenant : cloudRegion.getTenants().getTenant()) { + cloudConfiguration.setTenantId(tenant.getTenantId()) + break // only one is required + } + + cloudConfiguration.setCloudOwner(cloudRegion.getCloudOwner()) + } + } + } + + return cloudConfiguration + } + + + /** + * Prepares a list of VF Modules + * @param execution + * @param constituteVnf + * @return List<VfModules> + */ + List<VfModules> prepareVfModules(DelegateExecution execution, GenericVnf constituteVnf) { + + AAIResourcesClient client = getAAIClient() + + List<VfModules> vfModuless = new ArrayList<>() + for (VfModule vfModule : constituteVnf.getVfModules().getVfModule()) { + VfModules vfmodules = new VfModules() + + ModelInfo vfModuleModelInfo = new ModelInfo() + vfModuleModelInfo.setModelInvariantUuid(vfModule.getModelInvariantId()) + vfModuleModelInfo.setModelCustomizationId(vfModule.getModelCustomizationId()) + + AAIResourceUri vfModuleUrl = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.serviceDesignAndCreation().model(vfModule.getModelInvariantId()).modelVer(vfModule.getModelVersionId())) + + Optional<ModelVer> vfModuleModelVerOpt = client.get(ModelVer.class, vfModuleUrl) + + if (vfModuleModelVerOpt.isPresent()) { + vfModuleModelInfo.setModelVersionId(vfModuleModelVerOpt.get().getModelVersionId()) + vfModuleModelInfo.setModelName(vfModuleModelVerOpt.get().getModelName()) + vfModuleModelInfo.setModelVersion(vfModuleModelVerOpt.get().getModelVersion()) + } + vfmodules.setModelInfo(vfModuleModelInfo) + + vfmodules.setInstanceName(vfModule.getVfModuleName()) + + vfModuless.add(vfmodules) + } + + return vfModuless + } + + + /** + * prepares VNF Model Info + * @param execution + * @param constituteVnf + * @return ModelInfo + */ + ModelInfo prepareVNFModelInfo(DelegateExecution execution, GenericVnf constituteVnf) { + ModelInfo vnfModelInfo = new ModelInfo() + + AAIResourcesClient client = getAAIClient() + + vnfModelInfo.setModelInvariantUuid(constituteVnf.getModelInvariantId()) + vnfModelInfo.setModelCustomizationId(constituteVnf.getModelCustomizationId()) + vnfModelInfo.setModelInstanceName(constituteVnf.getVnfName()) + + AAIResourceUri vnfModelUrl = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.serviceDesignAndCreation().model(constituteVnf.getModelInvariantId()).modelVer(constituteVnf.getModelVersionId())) + + Optional<ModelVer> vnfModelVerOpt = client.get(ModelVer.class, vnfModelUrl) + + if (vnfModelVerOpt.isPresent()) { + vnfModelInfo.setModelVersionId(vnfModelVerOpt.get().getModelVersionId()) + vnfModelInfo.setModelName(vnfModelVerOpt.get().getModelName()) + vnfModelInfo.setModelVersion(vnfModelVerOpt.get().getModelVersion()) + } + + return vnfModelInfo + } + + + List<Map<String, Object>> prepareInstanceParams(DelegateExecution execution) { + def currentNSSI = execution.getVariable("currentNSSI") + + List<Map<String, Object>> instanceParams = new ArrayList<>() + Map<String, Object> instanceParamsMap = new HashMap<>() + + // Supported S-NSSAI + List<String> snssais = (List<String>) currentNSSI['S-NSSAIs'] + + ServiceInstance nssi = (ServiceInstance) currentNSSI['nssi'] + + String orchStatus = nssi.getOrchestrationStatus() + + + List<Map<String, String>> snssaiList = new ArrayList<>() + + for(String snssai:snssais) { + Map<String, String> snssaisMap = new HashMap<>() + snssaisMap.put("snssai", snssai) + snssaisMap.put("status", orchStatus) + snssaiList.add(snssaisMap) + } + + // Map<String, List<Map<String, String>>> supportedNssaiDetails = new HashMap<>() + // supportedNssaiDetails.put("sNssai", supportedNssaiDetails) + + ObjectMapper mapper = new ObjectMapper() + + String supportedNssaiDetailsStr = mapper.writeValueAsString(snssaiList) + + + instanceParamsMap.put("k8s-rb-profile-name", "default") // ??? + instanceParamsMap.put("config-type", "day2") // ??? + instanceParamsMap.put("supportedNssai", supportedNssaiDetailsStr) + instanceParams.add(instanceParamsMap) + + return instanceParams + } + + /** + * Prepares Resources + * @param execution + * @return Resources + */ + Resources prepareResources(DelegateExecution execution) { + def currentNSSI = execution.getVariable("currentNSSI") + + Resources resources = new Resources() + + // VNFs + List<Vnfs> vnfs = new ArrayList<>() + // VNF + Vnfs vnf = new Vnfs() + + // Line of Business + LineOfBusiness lob = new LineOfBusiness() + lob.setLineOfBusinessName("VNF") + vnf.setLineOfBusiness(lob) + + // Product family ID + GenericVnf constituteVnf = (GenericVnf)currentNSSI['constituteVnf'] + vnf.setProductFamilyId(constituteVnf.getServiceId()) + + // Cloud configuration + vnf.setCloudConfiguration(prepareCloudConfiguration(execution)) + + // VF Modules + vnf.setVfModules(prepareVfModules(execution, constituteVnf)) + + // Model Info + vnf.setModelInfo(prepareVNFModelInfo(execution, constituteVnf)) + + // Instance name + vnf.setInstanceName(constituteVnf.getVnfName()) + + // Instance params + vnf.setInstanceParams(prepareInstanceParams(execution)) + + // No platform data + + vnfs.add(vnf) + resources.setVnfs(vnfs) + + return resources + } + + + /** + * Prepare Service + * @return Service + */ + Service prepareService(DelegateExecution execution, ServiceInstance networkServiceInstance, ModelInfo modelInfo) { + Service service = new Service() + + // Model Info + service.setModelInfo(prepareServiceModelInfo(networkServiceInstance, modelInfo)) + + service.setInstanceName(networkServiceInstance.getServiceInstanceName()) + + // Resources + service.setResources(prepareResources(execution)) + + return service + + } + + + /** + * Prepares request parameters + * @param execution + * @return RequestParameters + */ + RequestParameters prepareRequestParameters(DelegateExecution execution, ServiceInstance networkServiceInstance, ModelInfo modelInfo) { + def currentNSSI = execution.getVariable("currentNSSI") + + RequestParameters requestParameters = new RequestParameters() + + ServiceSubscription serviceSubscription = (ServiceSubscription)currentNSSI['serviceSubscription'] + + if(serviceSubscription != null) { + requestParameters.setSubscriptionServiceType(serviceSubscription.getServiceType()) + } + + // User params + List<Map<String, Object>> userParams = new ArrayList<>() + + Map<String, Object> userParam = new HashMap<>() + userParam.put("Homing_Solution", "none") + userParams.add(userParam) + + // Service + Map<String, Object> serviceMap = new HashMap<>() + serviceMap.put("service", prepareService(execution, networkServiceInstance, modelInfo)) + userParams.add(serviceMap) + requestParameters.setUserParams(userParams) + + return requestParameters + } + + + /** + * Prepare Owning Entity + * @param execution + * @return OwningEntity + */ + OwningEntity prepareOwningEntity(DelegateExecution execution) { + def currentNSSI = execution.getVariable("currentNSSI") + + AAIResourcesClient client = getAAIClient() + + AAIResourceUri networkServiceInstanceUri = (AAIResourceUri)currentNSSI['networkServiceInstanceUri'] + + OwningEntity owningEntity = new OwningEntity() + AAIResultWrapper wrapper = client.get(networkServiceInstanceUri) + Optional<Relationships> owningEntityRelationshipsOps = wrapper.getRelationships() + if (owningEntityRelationshipsOps.isPresent()) { + List<AAIResourceUri> owningEntityRelatedAAIUris = owningEntityRelationshipsOps.get().getRelatedUris(Types.OWNING_ENTITY) + + if (!(owningEntityRelatedAAIUris == null || owningEntityRelatedAAIUris.isEmpty())) { + Optional<org.onap.aai.domain.yang.OwningEntity> owningEntityOpt = client.get(org.onap.aai.domain.yang.OwningEntity.class, owningEntityRelatedAAIUris.get(0)) // Many-To-One relation + if (owningEntityOpt.isPresent()) { + owningEntity.setOwningEntityId(owningEntityOpt.get().getOwningEntityId()) + owningEntity.setOwningEntityName(owningEntityOpt.get().getOwningEntityName()) + + } + } + } + + return owningEntity + } + + + /** + * Prepares Project + * @param execution + * @return Project + */ + Project prepareProject(DelegateExecution execution) { + def currentNSSI = execution.getVariable("currentNSSI") + + AAIResourcesClient client = getAAIClient() + + Project project = new Project() + + AAIResourceUri cloudRegionRelatedAAIUri = (AAIResourceUri)currentNSSI['cloudRegionRelatedAAIUri'] + + if (cloudRegionRelatedAAIUri != null) { + AAIResultWrapper wrapper = client.get(cloudRegionRelatedAAIUri) + Optional<Relationships> cloudRegionOps = wrapper.getRelationships() + if (cloudRegionOps.isPresent()) { + List<AAIResourceUri> projectAAIUris = cloudRegionOps.get().getRelatedUris(Types.PROJECT) + if (!(projectAAIUris == null || projectAAIUris.isEmpty())) { + Optional<org.onap.aai.domain.yang.Project> projectOpt = client.get(org.onap.aai.domain.yang.Project.class, projectAAIUris.get(0)) + if (projectOpt.isPresent()) { + project.setProjectName(projectOpt.get().getProjectName()) + } + } + } + } + + return project + } + + + /** + * Prepares RequestDetails object + * @param execution + * @return + */ + String prepareRequestDetails(DelegateExecution execution) { + String errorCode = "" + String errorMessage = "" + String response + + RequestDetails requestDetails = new RequestDetails() + + def currentNSSI = execution.getVariable("currentNSSI") + + ServiceInstance networkServiceInstance = (ServiceInstance)currentNSSI['networkServiceInstance'] + + try { + // Model Info + ModelInfo modelInfo = prepareModelInfo(execution) + requestDetails.setModelInfo(modelInfo) + + // Subscriber Info + requestDetails.setSubscriberInfo(prepareSubscriberInfo(execution)) + + // Request Info + requestDetails.setRequestInfo(prepareRequestInfo(execution, networkServiceInstance)) + + // Request Parameters + requestDetails.setRequestParameters(prepareRequestParameters(execution, networkServiceInstance, modelInfo)) + + // Cloud configuration + requestDetails.setCloudConfiguration(prepareCloudConfiguration(execution)) + + // Owning entity + requestDetails.setOwningEntity(prepareOwningEntity(execution)) + + // Project + requestDetails.setProject(prepareProject(execution)) + + ObjectMapper mapper = new ObjectMapper() + + response = mapper.writeValueAsString(requestDetails) + } + catch (any) { + String msg = "Exception in ${getPrefix()}.prepareRequestDetails. " + any.getCause() + LOGGER.error(msg) + + response = "{\n" + + " \"errorCode\": \"7000\",\n" + + " \"errorMessage\": \"${msg}\"\n" + + "}" + + } + + return response + } + + + String getAuthHeader(DelegateExecution execution, String basicAuthValue, String msokey) { + String response = "" + String errorCode = "" + String errorMessage = "" + + LOGGER.debug("Obtained BasicAuth username and password for OOF: " + basicAuthValue) + try { + response = utils.getBasicAuth(basicAuthValue, msokey) + } catch (Exception ex) { + LOGGER.error("Unable to encode username and password string: ", ex) + + errorCode = "401" + errorMessage = "Internal Error - Unable to encode username and password string" + + response = "{\n" + + " \"errorCode\": \"${errorCode}\",\n" + + " \"errorMessage\": \"${errorMessage}\"\n" + + "}" + } + + return response + } + + + String encryptBasicAuth(String basicAuth, String msoKey) { + return utils.encrypt(basicAuth, msoKey) + } + + + /** + * Removes Slice Profile association with NSSI + * @param execution + */ + void removeSPAssociationWithNSSI(DelegateExecution execution) { + LOGGER.trace("${getPrefix()} Start removeSPAssociationWithNSSI") + + AAIResourcesClient client = getAAIClient() + + def currentNSSI = execution.getVariable("currentNSSI") + + ServiceInstance nssi = (ServiceInstance)currentNSSI['nssi'] + + String nssiId = currentNSSI['nssiId'] + AAIResourceUri nssiUri = AAIUriFactory.createResourceUri(Types.SERVICE_INSTANCE.getFragment(nssiId)) + + List<SliceProfile> associatedProfiles = nssi.getSliceProfiles().getSliceProfile() + + String currentSNSSAI = currentNSSI['S-NSSAI'] + + associatedProfiles.removeIf({ associatedProfile -> (associatedProfile.getSNssai().equals(currentSNSSAI)) }) + + try { + getAAIClient().update(nssiUri, nssi) + }catch(Exception e){ + exceptionUtil.buildAndThrowWorkflowException(execution, 25000, "Exception occured while Slice Profile association with NSSI update call: " + e.getMessage()) + } + + LOGGER.trace("${getPrefix()} Exit removeSPAssociationWithNSSI") + } + + + /** + * Deletes Slice Profile Instance + * @param execution + */ + void deleteSliceProfileInstance(DelegateExecution execution) { + LOGGER.trace("${getPrefix()} Start deleteSliceProfileInstance") + + AAIResourcesClient client = getAAIClient() + + def currentNSSI = execution.getVariable("currentNSSI") + + SliceProfile sliceProfileContainsSNSSAI = (SliceProfile)currentNSSI['sliceProfileS-NSSAI'] + + String globalSubscriberId = currentNSSI['globalSubscriberId'] + String serviceType = currentNSSI['serviceType'] + String nssiId = currentNSSI['nssiId'] + + // global-customer-id, service-type, service-instance-id, profile-id + AAIResourceUri sliceProfileUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(serviceType).serviceInstance(nssiId).sliceProfile(sliceProfileContainsSNSSAI.getProfileId())) + + try { + getAAIClient().delete(sliceProfileUri) + }catch(Exception e){ + exceptionUtil.buildAndThrowWorkflowException(execution, 25000, "Exception occured while Slice Profile Instance delete call: " + e.getMessage()) + } + + LOGGER.trace("${getPrefix()} Exit deleteSliceProfileInstance") + } + + + /** + * Updates operation status + * @param execution + */ + void updateServiceOperationStatus(DelegateExecution execution) { + LOGGER.trace("${getPrefix()} Start updateServiceOperationStatus") + + def currentNSSI = execution.getVariable("currentNSSI") + + OperationStatus operationStatus = new OperationStatus() + operationStatus.setServiceId(currentNSSI['e2eServiceInstanceId'] as String) + operationStatus.setOperationId(currentNSSI['operationId'] as String) + operationStatus.setOperation(currentNSSI['operationType'] as String) + operationStatus.setResult(RequestsDbConstant.Status.FINISHED) + + requestDBUtil.prepareUpdateOperationStatus(execution, operationStatus) + + LOGGER.trace("${getPrefix()} Exit updateServiceOperationStatus") + } + + + /** + * Returns AAI client + * @return AAI client + */ + AAIResourcesClient getAAIClient() { + return new AAIResourcesClient() + } + + + String getPrefix() { + return PREFIX + } +} diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCompareModelofE2EServiceInstance.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCompareModelofE2EServiceInstance.groovy index 8cd9dee011..47e059c665 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCompareModelofE2EServiceInstance.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCompareModelofE2EServiceInstance.groovy @@ -42,6 +42,8 @@ import org.onap.aaiclient.client.aai.AAIResourcesClient 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 org.slf4j.Logger import org.slf4j.LoggerFactory @@ -142,7 +144,7 @@ public class DoCompareModelofE2EServiceInstance extends AbstractServiceTaskProce String serviceType = execution.getVariable('serviceType') AAIResourcesClient resourceClient = new AAIResourcesClient() - AAIResourceUri serviceInstanceUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, globalSubscriberId, serviceType, serviceInstanceId) + AAIResourceUri serviceInstanceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(serviceType).serviceInstance(serviceInstanceId)) AAIResultWrapper wrapper = resourceClient.get(serviceInstanceUri, NotFoundException.class) Optional<ServiceInstance> si = wrapper.asBean(ServiceInstance.class) diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateCommunicationService.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateCommunicationService.groovy index 7cdb084b7f..9f2ad5b537 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateCommunicationService.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateCommunicationService.groovy @@ -31,6 +31,8 @@ import org.onap.aaiclient.client.aai.AAIObjectType import org.onap.aaiclient.client.aai.AAIResourcesClient 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.slf4j.Logger import org.slf4j.LoggerFactory @@ -123,12 +125,7 @@ class DoCreateCommunicationService extends AbstractServiceTaskProcessor{ execution.setVariable("communicationServiceInstanceProfile", csp) - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.COMMUNICATION_SERVICE_PROFILE, - globalSubscriberId, - subscriptionServiceType, - serviceInstanceId, - profileId - ) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(subscriptionServiceType).serviceInstance(serviceInstanceId).communicationServiceProfile(profileId)) client.create(uri, csp) @@ -188,7 +185,7 @@ class DoCreateCommunicationService extends AbstractServiceTaskProcessor{ execution.setVariable("communicationServiceInstance", csi) - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, globalSubscriberId, subscriptionServiceType, serviceInstanceId) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(subscriptionServiceType).serviceInstance(serviceInstanceId)) client.create(uri, csi) } catch (BpmnError e) { diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateE2EServiceInstance.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateE2EServiceInstance.groovy index b90a34ea94..d1e61ac174 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateE2EServiceInstance.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateE2EServiceInstance.groovy @@ -22,40 +22,36 @@ */ package org.onap.so.bpmn.infrastructure.scripts -import com.fasterxml.jackson.databind.ObjectMapper -import com.fasterxml.jackson.databind.SerializationFeature - -import org.onap.so.logger.LoggingAnchor -import org.onap.logging.filter.base.ErrorCode - import static org.apache.commons.lang3.StringUtils.* - 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.Relationship import org.onap.aai.domain.yang.ServiceInstance +import org.onap.aaiclient.client.aai.AAIObjectType +import org.onap.aaiclient.client.aai.AAIResourcesClient +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.logging.filter.base.ErrorCode 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.core.RollbackData +import org.onap.so.bpmn.core.UrnPropertiesReader import org.onap.so.bpmn.core.WorkflowException import org.onap.so.bpmn.core.domain.Resource import org.onap.so.bpmn.core.domain.ServiceDecomposition import org.onap.so.bpmn.core.json.JsonUtils -import org.onap.aaiclient.client.aai.AAIObjectType -import org.onap.aaiclient.client.aai.AAIResourcesClient -import org.onap.aaiclient.client.aai.entities.AAIResultWrapper -import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri import org.onap.so.bpmn.infrastructure.workflow.service.ServicePluginFactory -import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory +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 org.onap.so.bpmn.core.UrnPropertiesReader +import com.fasterxml.jackson.databind.ObjectMapper +import com.fasterxml.jackson.databind.SerializationFeature /** * This groovy class supports the <class>DoCreateServiceInstance.bpmn</class> process. @@ -272,7 +268,7 @@ public class DoCreateE2EServiceInstance extends AbstractServiceTaskProcessor { org.onap.aai.domain.yang.ServiceInstance si = execution.getVariable("serviceInstanceData") AAIResourcesClient client = new AAIResourcesClient() - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, execution.getVariable("globalSubscriberId"), execution.getVariable("serviceType"), serviceInstanceId) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(execution.getVariable("globalSubscriberId")).serviceSubscription(execution.getVariable("serviceType")).serviceInstance(serviceInstanceId)) client.create(uri, si) } catch (BpmnError e) { @@ -345,7 +341,7 @@ public class DoCreateE2EServiceInstance extends AbstractServiceTaskProcessor { try { String serviceInstanceId = execution.getVariable("serviceInstanceId") AAIResourcesClient client = new AAIResourcesClient() - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, execution.getVariable("globalSubscriberId"), execution.getVariable("serviceType"), serviceInstanceId).relationshipAPI() + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(execution.getVariable("globalSubscriberId")).serviceSubscription(execution.getVariable("serviceType")).serviceInstance(serviceInstanceId)).relationshipAPI() client.create(uri, relationship) } catch (BpmnError e) { @@ -402,7 +398,7 @@ public class DoCreateE2EServiceInstance extends AbstractServiceTaskProcessor { String serviceType = execution.getVariable('subscriptionServiceType') AAIResourcesClient resourceClient = new AAIResourcesClient() - AAIResourceUri serviceInstanceUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, globalSubscriberId, serviceType, serviceInstanceId) + AAIResourceUri serviceInstanceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(serviceType).serviceInstance(serviceInstanceId)) AAIResultWrapper wrapper = resourceClient.get(serviceInstanceUri, NotFoundException.class) Optional<ServiceInstance> si = wrapper.asBean(ServiceInstance.class) diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateE2EServiceInstanceRollback.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateE2EServiceInstanceRollback.groovy index 3638d89faa..bb6697bfc9 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateE2EServiceInstanceRollback.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateE2EServiceInstanceRollback.groovy @@ -40,6 +40,8 @@ import org.onap.so.logger.MessageEnum import org.onap.so.bpmn.common.scripts.ExceptionUtil; 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.aaiclient.client.aai.AAIObjectType import org.onap.aaiclient.client.aai.AAIResourcesClient @@ -190,7 +192,7 @@ public class DoCreateE2EServiceInstanceRollback extends AbstractServiceTaskProce String serviceInstanceId = execution.getVariable("serviceInstanceId") AAIResourcesClient resourceClient = new AAIResourcesClient(); - AAIResourceUri serviceInstanceUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, globalCustId, serviceType, serviceInstanceId) + AAIResourceUri serviceInstanceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalCustId).serviceSubscription(serviceType).serviceInstance(serviceInstanceId)) resourceClient.delete(serviceInstanceUri) logger.trace("Completed Delete Service Instance") diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateNetworkInstance.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateNetworkInstance.groovy index 22e5819068..cc142ca36d 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateNetworkInstance.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateNetworkInstance.groovy @@ -33,7 +33,6 @@ import org.onap.aai.domain.yang.RouteTableReference import org.onap.aai.domain.yang.RouteTarget import org.onap.aai.domain.yang.Subnet import org.onap.aai.domain.yang.VpnBinding -import org.onap.aaiclient.client.aai.AAIObjectPlurals import org.onap.aaiclient.client.aai.AAIObjectType import org.onap.aaiclient.client.aai.AAIResourcesClient import org.onap.aaiclient.client.aai.entities.AAIResultWrapper @@ -42,6 +41,7 @@ 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.aaiclient.client.graphinventory.entities.uri.Depth import org.onap.so.bpmn.common.scripts.AaiUtil import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor @@ -335,7 +335,7 @@ public class DoCreateNetworkInstance extends AbstractServiceTaskProcessor { String serviceInstanceId = execution.getVariable('CRENWKI_serviceInstanceId') AAIResourcesClient resourceClient = new AAIResourcesClient() - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, serviceInstanceId) + AAIResourceUri uri = AAIUriFactory.createResourceUri(Types.SERVICE_INSTANCE.getFragment(serviceInstanceId)) if(!resourceClient.exists(uri)){ exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Service instance was not found in aai") @@ -367,7 +367,7 @@ public class DoCreateNetworkInstance extends AbstractServiceTaskProcessor { String networkName = utils.getNodeText(networkInputs, "network-name") AAIResourcesClient client = new AAIResourcesClient() - AAIPluralResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectPlurals.L3_NETWORK).queryParam("network-name", networkName) + AAIPluralResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().l3Networks()).queryParam("network-name", networkName) L3Networks networks = client.get(uri, NotFoundException.class).asBean(L3Networks.class).get() L3Network network = networks.getL3Network().get(0) @@ -405,7 +405,7 @@ public class DoCreateNetworkInstance extends AbstractServiceTaskProcessor { // Prepare AA&I url AaiUtil aaiUtil = new AaiUtil(this) - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.CLOUD_REGION, Defaults.CLOUD_OWNER.toString(), cloudRegion) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.cloudInfrastructure().cloudRegion(Defaults.CLOUD_OWNER.toString(), cloudRegion)) def queryCloudRegionRequest = aaiUtil.createAaiUri(uri) execution.setVariable(Prefix + "queryCloudRegionRequest", queryCloudRegionRequest) @@ -478,7 +478,7 @@ public class DoCreateNetworkInstance extends AbstractServiceTaskProcessor { execution.setVariable(Prefix + "networkName", networkName) AAIResourcesClient client = new AAIResourcesClient() - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.L3_NETWORK, networkId).depth(Depth.ONE) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().l3Network(networkId)).depth(Depth.ONE) L3Network network = client.get(uri, NotFoundException.class).asBean(L3Network.class).get() execution.setVariable(Prefix + "queryIdAAIResponse", network) @@ -514,7 +514,7 @@ public class DoCreateNetworkInstance extends AbstractServiceTaskProcessor { String netId = networkId AAIResourcesClient client = new AAIResourcesClient() - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.L3_NETWORK, networkId).depth(Depth.ONE) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().l3Network(networkId)).depth(Depth.ONE) L3Network network = client.get(uri, NotFoundException.class).asBean(L3Network.class).get() execution.setVariable(Prefix + "aaiRequeryIdReturnCode", "200") @@ -553,10 +553,10 @@ public class DoCreateNetworkInstance extends AbstractServiceTaskProcessor { try { AAIResourcesClient client = new AAIResourcesClient() - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.L3_NETWORK, execution.getVariable(Prefix + "networkId")) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().l3Network(execution.getVariable(Prefix + "networkId"))) Optional<Relationships> relationships = client.get(uri, NotFoundException.class).getRelationships() if(relationships.isPresent()){ - List<AAIResourceUri> uris = relationships.get().getRelatedAAIUris(AAIObjectType.VPN_BINDING) + List<AAIResourceUri> uris = relationships.get().getRelatedUris(Types.VPN_BINDING) logger.debug(Prefix + "vpnCount - " + uris.size()) @@ -625,10 +625,10 @@ public class DoCreateNetworkInstance extends AbstractServiceTaskProcessor { try { AAIResourcesClient client = new AAIResourcesClient() - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.L3_NETWORK, execution.getVariable(Prefix + "networkId")) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().l3Network(execution.getVariable(Prefix + "networkId"))) Optional<Relationships> relationships = client.get(uri, NotFoundException.class).getRelationships() if(relationships.isPresent()){ - List<AAIResourceUri> uris = relationships.get().getRelatedAAIUris(AAIObjectType.NETWORK_POLICY) + List<AAIResourceUri> uris = relationships.get().getRelatedUris(Types.NETWORK_POLICY) execution.setVariable(Prefix + "networkPolicyCount", uris.size()) logger.debug(Prefix + "networkPolicyCount - " + uris.size()) @@ -692,10 +692,10 @@ public class DoCreateNetworkInstance extends AbstractServiceTaskProcessor { try { AAIResourcesClient client = new AAIResourcesClient() - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.L3_NETWORK, execution.getVariable(Prefix + "networkId")) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().l3Network(execution.getVariable(Prefix + "networkId"))) Optional<Relationships> relationships = client.get(uri, NotFoundException.class).getRelationships() if(relationships.isPresent()){ - List<AAIResourceUri> uris = relationships.get().getRelatedAAIUris(AAIObjectType.ROUTE_TABLE_REFERENCE) + List<AAIResourceUri> uris = relationships.get().getRelatedUris(Types.ROUTE_TABLE_REFERENCE) execution.setVariable(Prefix + "networkTableRefCount", uris.size()) logger.debug(Prefix + "networkTableRefCount - " + uris.size()) @@ -791,7 +791,7 @@ public class DoCreateNetworkInstance extends AbstractServiceTaskProcessor { logger.debug("Updating l3-network in AAI" ) AAIResourcesClient client = new AAIResourcesClient() - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.L3_NETWORK, networkId) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().l3Network(networkId)) client.update(uri, l3Network) if(requeryIdAAIResponse.getSubnets() != null){ @@ -807,7 +807,7 @@ public class DoCreateNetworkInstance extends AbstractServiceTaskProcessor { } logger.debug("Updating subnet in AAI" ) - AAIResourceUri subUri = AAIUriFactory.createResourceUri(AAIObjectType.SUBNET, networkId, subnetId) + AAIResourceUri subUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().l3Network(networkId).subnet(subnetId)) client.update(subUri, subnet) } diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateServiceInstance.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateServiceInstance.groovy index fce12e56b0..94aca5f72f 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateServiceInstance.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateServiceInstance.groovy @@ -44,6 +44,8 @@ import org.onap.aaiclient.client.aai.AAIObjectType import org.onap.aaiclient.client.aai.AAIResourcesClient 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.slf4j.Logger import org.slf4j.LoggerFactory @@ -291,7 +293,7 @@ public class DoCreateServiceInstance extends AbstractServiceTaskProcessor { String globalCustomerId = execution.getVariable("globalSubscriberId") //VID to AAI name map logger.debug(" ***** getAAICustomerById ***** globalCustomerId:" + globalCustomerId) - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.CUSTOMER, globalCustomerId) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalCustomerId)) if(!getAAIClient().exists(uri)){ exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "GlobalCustomerId:" + globalCustomerId + " not found (404) in AAI") } @@ -352,7 +354,7 @@ public class DoCreateServiceInstance extends AbstractServiceTaskProcessor { si.setWorkloadContext(workloadContext) AAIResourcesClient client = new AAIResourcesClient() - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, execution.getVariable("globalSubscriberId"), execution.getVariable("subscriptionServiceType"), serviceInstanceId) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(execution.getVariable("globalSubscriberId")).serviceSubscription(execution.getVariable("subscriptionServiceType")).serviceInstance(serviceInstanceId)) client.create(uri, si) } catch (BpmnError e) { diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateSliceServiceInstance.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateSliceServiceInstance.groovy index b71379449e..f64f5e8ebf 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateSliceServiceInstance.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateSliceServiceInstance.groovy @@ -1,32 +1,41 @@ +/*- + * ============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 org.onap.aai.domain.yang.AllottedResource - -import static org.apache.commons.lang3.StringUtils.*; - import org.camunda.bpm.engine.delegate.BpmnError import org.camunda.bpm.engine.delegate.DelegateExecution -import org.onap.aai.domain.yang.OwningEntity +import org.onap.aai.domain.yang.AllottedResource +import org.onap.aai.domain.yang.ServiceInstance import org.onap.aai.domain.yang.ServiceProfile; +import org.onap.aaiclient.client.aai.AAIResourcesClient +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.so.beans.nsmf.SliceTaskParamsAdapter import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor -import org.onap.so.bpmn.common.scripts.CatalogDbUtils -import org.onap.so.bpmn.common.scripts.CatalogDbUtilsFactory import org.onap.so.bpmn.common.scripts.ExceptionUtil -import org.onap.so.bpmn.common.scripts.MsoUtils -import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils import org.onap.so.bpmn.core.RollbackData -import org.onap.so.bpmn.core.UrnPropertiesReader -import org.onap.so.bpmn.core.WorkflowException import org.onap.so.bpmn.core.domain.ModelInfo import org.onap.so.bpmn.core.domain.ServiceDecomposition -import org.onap.so.bpmn.core.domain.ServiceInstance import org.onap.so.bpmn.core.json.JsonUtils -import org.onap.so.bpmn.infrastructure.aai.groovyflows.AAICreateResources -import org.onap.aaiclient.client.aai.AAIObjectType -import org.onap.aaiclient.client.aai.AAIResourcesClient -import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri -import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory import org.slf4j.Logger import org.slf4j.LoggerFactory @@ -34,13 +43,13 @@ import org.slf4j.LoggerFactory class DoCreateSliceServiceInstance extends AbstractServiceTaskProcessor{ - private static final Logger logger = LoggerFactory.getLogger( DoCreateSliceServiceInstance.class); + private static final Logger logger = LoggerFactory.getLogger( DoCreateSliceServiceInstance.class) + JsonUtils jsonUtil = new JsonUtils() ExceptionUtil exceptionUtil = new ExceptionUtil() - CatalogDbUtils catalogDbUtils = new CatalogDbUtilsFactory().create() - + AAIResourcesClient client = getAAIClient() /** * Pre Process the BPMN Flow Request * Inclouds: @@ -48,86 +57,54 @@ class DoCreateSliceServiceInstance extends AbstractServiceTaskProcessor{ * generate the nsParameters */ void preProcessRequest (DelegateExecution execution) { - String msg = "" logger.trace("Enter preProcessRequest()") - //Need update - //1. Prepare service parameter. - //2. Prepare slice profile parameters. + //here modelVersion is not set, we use modelUuid to decompose the service. + def isDebugLogEnabled = true + execution.setVariable("isDebugLogEnabled", isDebugLogEnabled) + + logger.trace("Exit preProcessRequest") + } - String sliceserviceInstanceId = execution.getVariable("serviceInstanceId") - String allottedResourceId = UUID.randomUUID().toString() - execution.setVariable("sliceserviceInstanceId", sliceserviceInstanceId) - execution.setVariable("allottedResourceId", allottedResourceId) + /** + * prepare decompose service profile instance template + * @param execution + */ + public void prepareDecomposeService(DelegateExecution execution) { String uuiRequest = execution.getVariable("uuiRequest") String modelInvariantUuid = jsonUtil.getJsonValue(uuiRequest, "service.serviceInvariantUuid") String modelUuid = jsonUtil.getJsonValue(uuiRequest, "service.serviceUuid") - //here modelVersion is not set, we use modelUuid to decompose the service. - def isDebugLogEnabled = true - execution.setVariable("serviceInstanceId",sliceserviceInstanceId) - execution.setVariable("isDebugLogEnabled",isDebugLogEnabled) String serviceModelInfo = """{ "modelInvariantUuid":"${modelInvariantUuid}", "modelUuid":"${modelUuid}", "modelVersion":"" }""" execution.setVariable("serviceModelInfo", serviceModelInfo) - - logger.trace("Exit preProcessRequest") } + /** + * create service-profile instance in aai + * @param execution + */ + void createServiceProfileInstance(DelegateExecution execution) { - void createServiceProfile(DelegateExecution execution) { - - String sliceserviceInstanceId = execution.getVariable("sliceserviceInstanceId") - Map<String, Object> serviceProfileMap = execution.getVariable("serviceProfile") - String serviceProfileID = UUID.randomUUID().toString() - ServiceProfile serviceProfile = new ServiceProfile(); - serviceProfile.setProfileId(serviceProfileID) - serviceProfile.setLatency(Integer.parseInt(serviceProfileMap.get("latency").toString())) - serviceProfile.setMaxNumberOfUEs(Integer.parseInt(serviceProfileMap.get("maxNumberofUEs").toString())) - serviceProfile.setCoverageAreaTAList(serviceProfileMap.get("coverageAreaTAList").toString()) - serviceProfile.setUeMobilityLevel(serviceProfileMap.get("uEMobilityLevel").toString()) - serviceProfile.setResourceSharingLevel(serviceProfileMap.get("resourceSharingLevel").toString()) - serviceProfile.setExpDataRateUL(Integer.parseInt(serviceProfileMap.get("expDataRateUL").toString())) - serviceProfile.setExpDataRateDL(Integer.parseInt(serviceProfileMap.get("expDataRateDL").toString())) - serviceProfile.setAreaTrafficCapUL(Integer.parseInt(serviceProfileMap.get("areaTrafficCapUL").toString())) - serviceProfile.setAreaTrafficCapDL(Integer.parseInt(serviceProfileMap.get("areaTrafficCapDL").toString())) - serviceProfile.setActivityFactor(Integer.parseInt(serviceProfileMap.get("activityFactor").toString())) - - serviceProfile.setJitter(0) - serviceProfile.setSurvivalTime(0) - serviceProfile.setCsAvailability(new Object()) - serviceProfile.setReliability(new Object()) - serviceProfile.setExpDataRate(0) - serviceProfile.setTrafficDensity(0) - serviceProfile.setConnDensity(0) - try { - AAIResourcesClient client = new AAIResourcesClient() - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_PROFILE, execution.getVariable("globalSubscriberId"), - execution.getVariable("subscriptionServiceType"), sliceserviceInstanceId, serviceProfileID) - client.create(uri, serviceProfile) - - } catch (BpmnError e) { - throw e - } catch (Exception ex) { - String msg = "Exception in DoCreateSliceServiceInstance.instantiateSliceService. " + ex.getMessage() - logger.info(msg) - exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) - } - } - - void instantiateSliceService(DelegateExecution execution) { + SliceTaskParamsAdapter sliceParams = + execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter - ServiceDecomposition serviceDecomposition= execution.getVariable("sliceServiceDecomposition") - String uuiRequest = execution.getVariable("uuiRequest") + ServiceDecomposition serviceDecomposition = + execution.getVariable("serviceProfileDecomposition") as ServiceDecomposition ModelInfo modelInfo = serviceDecomposition.getModelInfo() - String serviceRole = "e2eslice-service" + //String serviceRole = "e2eslice-service" + /** + * todo: ServiceProfile params changed + * todo: role + */ + String serviceRole = "service-profile" String serviceType = execution.getVariable("serviceType") - Map<String, Object> serviceProfile = execution.getVariable("serviceProfile") + Map<String, Object> serviceProfile = sliceParams.getServiceProfile() String ssInstanceId = execution.getVariable("serviceInstanceId") try { - org.onap.aai.domain.yang.ServiceInstance ss = new org.onap.aai.domain.yang.ServiceInstance() + ServiceInstance ss = new ServiceInstance() ss.setServiceInstanceId(ssInstanceId) String sliceInstanceName = execution.getVariable("serviceInstanceName") ss.setServiceInstanceName(sliceInstanceName) @@ -143,8 +120,8 @@ class DoCreateSliceServiceInstance extends AbstractServiceTaskProcessor{ String snssai = serviceProfile.get("sNSSAI") ss.setEnvironmentContext(snssai) ss.setServiceRole(serviceRole) - AAIResourcesClient client = new AAIResourcesClient() - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, execution.getVariable("globalSubscriberId"), execution.getVariable("subscriptionServiceType"), ssInstanceId) + + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(execution.getVariable("globalSubscriberId")).serviceSubscription(execution.getVariable("subscriptionServiceType")).serviceInstance(ssInstanceId)) client.create(uri, ss) } catch (BpmnError e) { throw e @@ -157,7 +134,7 @@ class DoCreateSliceServiceInstance extends AbstractServiceTaskProcessor{ def rollbackData = execution.getVariable("RollbackData") if (rollbackData == null) { - rollbackData = new RollbackData(); + rollbackData = new RollbackData() } //rollbackData.put("SERVICEINSTANCE", "disableRollback", disableRollback.toString()) rollbackData.put("SERVICEINSTANCE", "rollbackAAI", "true") @@ -170,57 +147,96 @@ class DoCreateSliceServiceInstance extends AbstractServiceTaskProcessor{ } + /** + * create service profile in aai + * @param execution + */ + void createServiceProfile(DelegateExecution execution) { + + /** + * todo: ServiceProfile params changed + */ + SliceTaskParamsAdapter sliceParams = + execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter + Map<String, Object> serviceProfileMap = sliceParams.getServiceProfile() - void createAllottedResource(DelegateExecution execution) { - String serviceInstanceId = execution.getVariable('sliceserviceInstanceId') - - AAIResourcesClient resourceClient = new AAIResourcesClient() - AAIResourceUri ssServiceuri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, serviceInstanceId) - -// try { -// -// if(resourceClient.exists(ssServiceuri)){ -// execution.setVariable("ssi_resourceLink", uri.build().toString()) -// }else{ -// exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Service instance was not found in aai to " + -// "associate allotted resource for service :"+serviceInstanceId) -// } -// }catch(BpmnError e) { -// throw e; -// }catch (Exception ex){ -// String msg = "Exception in getServiceInstance. " + ex.getMessage() -// logger.debug(msg) -// exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) -// } + String serviceProfileInstanceId = execution.getVariable("serviceInstanceId") + String serviceProfileId = UUID.randomUUID().toString() + sliceParams.serviceProfile.put("profileId", serviceProfileId) + + ServiceProfile serviceProfile = new ServiceProfile() + serviceProfile.setProfileId(serviceProfileId) + serviceProfile.setLatency(Integer.parseInt(serviceProfileMap.get("latency").toString())) + serviceProfile.setMaxNumberOfUEs(Integer.parseInt(serviceProfileMap.get("maxNumberofUEs").toString())) + serviceProfile.setCoverageAreaTAList(serviceProfileMap.get("coverageAreaTAList").toString()) + serviceProfile.setUeMobilityLevel(serviceProfileMap.get("uEMobilityLevel").toString()) + serviceProfile.setResourceSharingLevel(serviceProfileMap.get("resourceSharingLevel").toString()) + serviceProfile.setExpDataRateUL(Integer.parseInt(serviceProfileMap.get("expDataRateUL").toString())) + serviceProfile.setExpDataRateDL(Integer.parseInt(serviceProfileMap.get("expDataRateDL").toString())) + serviceProfile.setAreaTrafficCapUL(Integer.parseInt(serviceProfileMap.get("areaTrafficCapUL").toString())) + serviceProfile.setAreaTrafficCapDL(Integer.parseInt(serviceProfileMap.get("areaTrafficCapDL").toString())) + serviceProfile.setActivityFactor(Integer.parseInt(serviceProfileMap.get("activityFactor").toString())) + + serviceProfile.setJitter(0) + serviceProfile.setSurvivalTime("0") + serviceProfile.setCsAvailability(new Object()) + serviceProfile.setReliability("") + serviceProfile.setExpDataRate(0) + serviceProfile.setTrafficDensity(0) + serviceProfile.setConnDensity(0) + try { + AAIResourceUri uri = AAIUriFactory.createResourceUri( + AAIFluentTypeBuilder.business().customer(execution.getVariable("globalSubscriberId")) + .serviceSubscription(execution.getVariable("subscriptionServiceType")) + .serviceInstance(serviceProfileInstanceId) + .serviceProfile(serviceProfileId)) + client.create(uri, serviceProfile) + execution.setVariable("sliceTaskParams", sliceParams) + + } catch (BpmnError e) { + throw e + } catch (Exception ex) { + String msg = "Exception in DoCreateSliceServiceInstance.instantiateSliceService. " + ex.getMessage() + logger.info(msg) + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) + } + } + + /** + * create allotted resource + * todo: unfinished + * @param execution + */ + public void createAllottedResource(DelegateExecution execution) { try { - String allottedResourceId = execution.getVariable("allottedResourceId") - ServiceDecomposition serviceDecomposition = execution.getVariable("sliceServiceDecomposition") + + ServiceDecomposition serviceDecomposition = + execution.getVariable("serviceProfileDecomposition") as ServiceDecomposition + List<org.onap.so.bpmn.core.domain.AllottedResource> allottedResourceList = serviceDecomposition.getAllottedResources() - for(org.onap.so.bpmn.core.domain.AllottedResource allottedResource : allottedResourceList) - { - //AAIResourceUri allottedResourceUri = AAIUriFactory.createResourceFromParentURI(ssServiceuri, AAIObjectType.ALLOTTED_RESOURCE, allottedResourceId) - AAIResourceUri allottedResourceUri = AAIUriFactory.createResourceUri(AAIObjectType.ALLOTTED_RESOURCE, - execution.getVariable("globalSubscriberId"),execution.getVariable("subscriptionServiceType"), - execution.getVariable("sliceserviceInstanceId"), allottedResourceId) + for(org.onap.so.bpmn.core.domain.AllottedResource allottedResource : allottedResourceList) { + String allottedResourceId = UUID.randomUUID().toString() + + AAIResourceUri allottedResourceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(execution.getVariable("globalSubscriberId")).serviceSubscription(execution.getVariable("subscriptionServiceType")).serviceInstance(execution.getVariable("serviceInstanceId")).allottedResource(allottedResourceId)) + execution.setVariable("allottedResourceUri", allottedResourceUri) String arType = allottedResource.getAllottedResourceType() String arRole = allottedResource.getAllottedResourceRole() String modelInvariantId = allottedResource.getModelInfo().getModelInvariantUuid() String modelVersionId = allottedResource.getModelInfo().getModelUuid() - org.onap.aai.domain.yang.AllottedResource resource = new org.onap.aai.domain.yang.AllottedResource() + AllottedResource resource = new AllottedResource() resource.setId(allottedResourceId) resource.setType(arType) resource.setAllottedResourceName("Allotted_"+ execution.getVariable("serviceInstanceName")) resource.setRole(arRole) resource.setModelInvariantId(modelInvariantId) resource.setModelVersionId(modelVersionId) - getAAIClient().create(allottedResourceUri, resource) - //AAIResourceUri serviceInstanceUri = AAIUriFactory.createResourceFromExistingURI(AAIObjectType.SERVICE_INSTANCE, UriBuilder.fromPath(ssServiceuri).build()) - //getAAIClient().connect(allottedResourceUri,ssServiceuri) + + client.create(allottedResourceUri, resource) + } - //execution.setVariable("aaiARPath", allottedResourceUri.build().toString()); }catch (Exception ex) { exceptionUtil.buildAndThrowWorkflowException(execution, 7000, "Exception in createAaiAR " + ex.getMessage()) diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateSliceServiceOption.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateSliceServiceOption.groovy index 9b78afba03..079a31be94 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateSliceServiceOption.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateSliceServiceOption.groovy @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * ONAP - SO * ================================================================================ - # Copyright (c) 2019, CMCC Technologies Co., Ltd. + # 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. @@ -20,37 +20,34 @@ package org.onap.so.bpmn.infrastructure.scripts -import com.fasterxml.jackson.core.type.TypeReference import com.fasterxml.jackson.databind.ObjectMapper -import groovy.json.JsonSlurper import org.camunda.bpm.engine.delegate.DelegateExecution -import org.onap.logging.filter.base.ONAPComponents -import org.onap.so.beans.nsmf.SliceTaskParams +import org.onap.so.beans.nsmf.AnSliceProfile +import org.onap.so.beans.nsmf.CnSliceProfile +import org.onap.so.beans.nsmf.EsrInfo +import org.onap.so.beans.nsmf.NetworkType +import org.onap.so.beans.nsmf.NssmfAdapterNBIRequest +import org.onap.so.beans.nsmf.SliceTaskParamsAdapter +import org.onap.so.beans.nsmf.TnSliceProfile +import org.onap.so.beans.nsmf.oof.SubnetCapability +import org.onap.so.beans.nsmf.oof.SubnetType +import org.onap.so.beans.nsmf.oof.TemplateInfo 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.OofUtils import org.onap.so.bpmn.core.UrnPropertiesReader +import org.onap.so.bpmn.core.domain.AllottedResource +import org.onap.so.bpmn.core.domain.ModelInfo import org.onap.so.bpmn.core.domain.ServiceDecomposition -import org.onap.so.bpmn.core.domain.ServiceProxy import org.onap.so.bpmn.core.json.JsonUtils -import org.onap.so.client.HttpClient -import org.onap.so.client.HttpClientFactory -import org.onap.aaiclient.client.aai.AAIObjectType -import org.onap.aaiclient.client.aai.AAIResourcesClient -import org.onap.aaiclient.client.aai.entities.AAIResultWrapper -import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri -import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory 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 +import org.springframework.http.ResponseEntity class DoCreateSliceServiceOption extends AbstractServiceTaskProcessor{ - private static final Logger logger = LoggerFactory.getLogger( DoCreateSliceServiceOption.class) + private static final Logger logger = LoggerFactory.getLogger(DoCreateSliceServiceOption.class) ExceptionUtil exceptionUtil = new ExceptionUtil() @@ -58,426 +55,624 @@ class DoCreateSliceServiceOption extends AbstractServiceTaskProcessor{ OofUtils oofUtils = new OofUtils() - ObjectMapper objectMapper = new ObjectMapper() + private static final ObjectMapper objectMapper = new ObjectMapper() + + private NssmfAdapterUtils nssmfAdapterUtils = new NssmfAdapterUtils(httpClientFactory, jsonUtil) + + private static final String QUERY_SUB_NET_CAPABILITY = "/api/rest/provMns/v1/NSS/subnetCapabilityQuery" + + private static final String QUERY_NSSI_SELECTION_CAPABILITY = "/api/rest/provMns/v1/NSS/NSSISelectionCapability" void preProcessRequest (DelegateExecution execution) { } + /** + * prepare the params for decompose nst + * @param execution + */ + public void prepareDecomposeNST(DelegateExecution execution) { - void prepareSelectNSIRequest(DelegateExecution execution) { + SliceTaskParamsAdapter sliceTaskParams = + execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter - String urlString = UrnPropertiesReader.getVariable("mso.oof.endpoint", execution) - logger.debug( "get NSI option OOF Url: " + urlString) - - boolean isNSISuggested = true - execution.setVariable("isNSISuggested",isNSISuggested) - String requestId = execution.getVariable("msoRequestId") - String messageType = "NSISelectionResponse" - - Map<String, Object> profileInfo = execution.getVariable("serviceProfile") - Map<String, Object> nstSolution = execution.getVariable("nstSolution") - logger.debug("Get NST selection from OOF: " + nstSolution.toString()) - String nstInfo = """{ - "modelInvariantId":"${nstSolution.invariantUUID}", - "modelVersionId":"${nstSolution.UUID}", - "modelName":"${nstSolution.NSTName}" - }""" - - execution.setVariable("nsiSelectionUrl", "/api/oof/selection/nsi/v1") - execution.setVariable("nsiSelection_messageType",messageType) - execution.setVariable("nsiSelection_correlator",requestId) - String timeout = UrnPropertiesReader.getVariable("mso.adapters.oof.timeout", execution); - execution.setVariable("nsiSelection_timeout",timeout) - String oofRequest = oofUtils.buildSelectNSIRequest(requestId, nstInfo,messageType, profileInfo) - execution.setVariable("nsiSelection_oofRequest",oofRequest) - logger.debug("Sending request to OOF: " + oofRequest) - } + String modelUuid = sliceTaskParams.getNSTInfo().getUUID() + String modelInvariantUuid = sliceTaskParams.getNSTInfo().getInvariantUUID() - void processOOFResponse(Response httpResponse, DelegateExecution execution) { - int responseCode = httpResponse.getStatus() - SliceTaskParams sliceTaskParams = execution.getVariable("sliceTaskParams") - String OOFResponse = execution.getVariable("nsiSelection_oofResponse") - logger.debug("NSI OOFResponse is: " + OOFResponse) - execution.setVariable("OOFResponse", OOFResponse) - //This needs to be changed to derive a value when we add policy to decide the solution options. - Map OOFResponseObject = new JsonSlurper().parseText(OOFResponse) - Map solutions = OOFResponseObject.get("solutions") - - String resourceSharingLevel = execution.getVariable("resourceSharingLevel") - Boolean isSharable = resourceSharingLevel.equals("shared") - - if (solutions != null) { - if (isSharable && hasSharedNSIsolutions(solutions)) { - //sharedNSISolution - processSharedNSISolutions(solutions, execution) - } - else if(solutions.containsKey("newNSISolutions")) { - processNewNSISolutions(solutions, execution) - } - } - execution.setVariable("sliceTaskParams", sliceTaskParams) - logger.debug("sliceTaskParams: "+sliceTaskParams.convertToJson()) - logger.debug("*** Completed options Call to OOF ***") - //解析sliceProfile - logger.debug("start parseServiceProfile") - parseServiceProfile(execution) - logger.debug("end parseServiceProfile") + String serviceModelInfo = """{ + "modelInvariantUuid":"${modelInvariantUuid}", + "modelUuid":"${modelUuid}", + "modelVersion":"" + }""" + execution.setVariable("nstServiceModelInfo", serviceModelInfo) } - private boolean hasSharedNSIsolutions( Map solutions){ - if(solutions.containsKey("sharedNSISolutions")){ - List sharedNSIsolutions = solutions.get("sharedNSISolutions") - if (sharedNSIsolutions != null && !sharedNSIsolutions.isEmpty()) { - return true - } + /** + * process the result of NST Decomposition + * @param execution + */ + public void processDecompositionNST(DelegateExecution execution) { + + List<TemplateInfo> nsstInfos = new ArrayList<>() + ServiceDecomposition nstServiceDecomposition = + execution.getVariable("nstServiceDecomposition") as ServiceDecomposition + //todo: + List<AllottedResource> allottedResources = nstServiceDecomposition.getAllottedResources() + for (AllottedResource allottedResource : allottedResources) { + TemplateInfo nsstInfo = new TemplateInfo() + nsstInfo.setUUID(allottedResource.getProvidingServiceModelUuid()) + nsstInfo.setInvariantUUID(allottedResource.getProvidingServiceModelInvariantUuid()) + nsstInfo.setName(allottedResource.getProvidingServiceModelName()) + nsstInfos.add(nsstInfo) } - return false + execution.setVariable("nsstInfos", nsstInfos) + + execution.setVariable("maxNsstIndex", allottedResources.size() - 1) + execution.setVariable("currentNsstIndex", 0) + + List<ServiceDecomposition> nsstServiceDecompositions = new ArrayList<>() + execution.setVariable("nsstServiceDecompositions", nsstServiceDecompositions) } - private void processNewNSISolutions(Map solutions, DelegateExecution execution) { - int index = 0 - List<Map> newNSISolutions = solutions.get("newNSISolutions") - List<Map> NSSImap = new ArrayList<>() - if (newNSISolutions != null && newNSISolutions.size() > 0) { - NSSImap = newNSISolutions.get(index).get("NSSISolutions") as List<Map> - for (Map nssi : NSSImap) { - Map oofSliceProfile = nssi.get("sliceProfile") - String domain = oofSliceProfile.getOrDefault("domainType","") - logger.debug("OOF newNSISolutions SliceProfile: " +oofSliceProfile.toString()+",domain:${domain}") - if(null != domain){ - //TODO -// def nssiSolution = nssi.get("NSSISolution") as Map<String, ?> -// String nssiName = nssiSolution.getOrDefault("NSSIName", "") -// String nssiId = nssiSolution.getOrDefault("NSSIId", "") -// saveNSSIId(nssi, sliceTaskParams) - Map<String, Object> sliceProfile = getSliceProfile(domain, execution, oofSliceProfile) - saveSliceProfile(execution, domain, sliceProfile) - - } - } - } + /** + * prepare the params for decompose nsst + * @param execution + */ + public void prepareDecomposeNSST(DelegateExecution execution) { + + List<TemplateInfo> nsstInfos = execution.getVariable("nsstInfos") as List<TemplateInfo> + int index = execution.getVariable("currentNsstIndex") as Integer + + String modelUuid = nsstInfos.get(index).getUUID() + String modelInvariantUuid = nsstInfos.get(index).getInvariantUUID() + + String serviceModelInfo = """{ + "modelInvariantUuid":"${modelInvariantUuid}", + "modelUuid":"${modelUuid}", + "modelVersion":"" + }""" + execution.setVariable("nsstServiceModelInfo", serviceModelInfo) + } - private void processSharedNSISolutions(Map solutions, DelegateExecution execution) { - String nsiName, nsiInstanceId, nssiId, nssiName - SliceTaskParams sliceTaskParams = execution.getVariable("sliceTaskParams") - - Map sharedNSIsolution = ((List) solutions.get("sharedNSISolutions"))?.get(0) - nsiInstanceId = sharedNSIsolution.getOrDefault("NSIId", "") - nsiName = sharedNSIsolution.getOrDefault("NSIName", "") - sliceTaskParams.setSuggestNsiId(nsiInstanceId) - sliceTaskParams.setSuggestNsiName(nsiName) - - //Temporary modification - List NSSIs = sharedNSIsolution.get("NSSIs") - for(Map nssi : NSSIs){ - Map oofSliceProfile = ((List)nssi.get("sliceProfile"))?.get(0) - String domain = oofSliceProfile.getOrDefault("domainType","") - nssiId = nssi.getOrDefault("NSSIId","") - nssiName = nssi.getOrDefault("NSSIName","") - saveNSSIId(domain, nssiId, nssiName,execution) - Map<String, Object> sliceProfile = getSliceProfile(domain, execution, oofSliceProfile) - saveSliceProfile(execution, domain, sliceProfile) - logger.debug("OOF sharedNSISolution SliceProfile:"+oofSliceProfile.toString()+",domain:${domain}") - logger.debug("OOF sharedNSISolution nsiInstanceId:${nsiInstanceId}, nsiName:${nsiName}, nssiId:${nssiId}, nssiName:${nssiName}") + /** + * process the result of NSST Decomposition + * @param execution + */ + public void processDecompositionNSST(DelegateExecution execution) { + + List<ServiceDecomposition> nsstServiceDecompositions = + execution.getVariable("nsstServiceDecompositions") as List<ServiceDecomposition> + + ServiceDecomposition nsstServiceDecomposition = + execution.getVariable("nsstServiceDecomposition") as ServiceDecomposition + + nsstServiceDecompositions.add(nsstServiceDecomposition) + + execution.setVariable("nsstServiceDecompositions", nsstServiceDecompositions) + + + + + int num = execution.getVariable("maxNsstIndex") as Integer + int index = execution.getVariable("currentNsstIndex") as Integer + + execution.setVariable("currentNsstIndex", index + 1) + + if (index >= num) { + execution.setVariable("nsstHandleContinue", false) + } else { + execution.setVariable("nsstHandleContinue", true) } + } - private void parseServiceProfile(DelegateExecution execution) { - logger.debug("Start parseServiceProfile") - String serviceType = execution.getVariable("serviceType") - Map<String, Object> serviceProfile = execution.getVariable("serviceProfile") - SliceTaskParams sliceTaskParams = execution.getVariable("sliceTaskParams") - // set sliceProfile for three domains - if(!sliceTaskParams.getSliceProfileAn()){ - Map<String, Object> sliceProfileAn = getSliceProfile( "AN", execution,null) - saveSliceProfile(execution,"AN",sliceProfileAn) - } + /** + * set nsst info to sliceTaskParams by type + * @param execution + */ + public void handleNsstByType(DelegateExecution execution) { - if(!sliceTaskParams.getSliceProfileTn()){ - Map<String, Object> sliceProfileTn = getSliceProfile( "TN", execution,null) - saveSliceProfile(execution,"TN",sliceProfileTn) - } + SliceTaskParamsAdapter sliceParams = + execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter - if(!sliceTaskParams.getSliceProfileCn()){ - Map<String, Object> sliceProfileCn = getSliceProfile( "CN", execution,null, ) - saveSliceProfile(execution,"CN",sliceProfileCn) + List<ServiceDecomposition> nsstServiceDecompositions = + execution.getVariable("nsstServiceDecompositions") as List<ServiceDecomposition> + + List<SubnetCapability> subnetCapabilities = new ArrayList<>() + + + + for (ServiceDecomposition serviceDecomposition : nsstServiceDecompositions) { + SubnetCapability subnetCapability = new SubnetCapability() + handleByType(execution, serviceDecomposition, sliceParams, subnetCapability) + subnetCapabilities.add(subnetCapability) } - logger.debug("Finish parseServiceProfile") + execution.setVariable("sliceTaskParams", sliceParams) + execution.setVariable("subnetCapabilities", subnetCapabilities) } - private void saveSliceProfile(DelegateExecution execution, String domain, Map<String, Object> sliceProfile){ - SliceTaskParams sliceTaskParams = execution.getVariable("sliceTaskParams") - if(domain.equalsIgnoreCase("AN")){ - execution.setVariable("sliceProfileAn", sliceProfile) - sliceTaskParams.setSliceProfileAn(sliceProfile) - logger.debug("sliceProfileAn: " + sliceProfile) + private void handleByType(DelegateExecution execution, ServiceDecomposition serviceDecomposition, + SliceTaskParamsAdapter sliceParams, SubnetCapability subnetCapability) { + //todo: + String domainType = "" + ModelInfo modelInfo = serviceDecomposition.getModelInfo() + String vendor = serviceDecomposition.getServiceRole() + SubnetType subnetType + + switch (domainType) { + case "tn_bh": + subnetType = SubnetType.TN_BH + sliceParams.tnBHSliceTaskInfo.vendor = vendor + sliceParams.tnBHSliceTaskInfo.subnetType = subnetType + sliceParams.tnBHSliceTaskInfo.networkType = subnetType.networkType + sliceParams.tnBHSliceTaskInfo.NSSTInfo.UUID = modelInfo.getModelUuid() + sliceParams.tnBHSliceTaskInfo.NSSTInfo.invariantUUID = modelInfo.getModelInvariantUuid() + sliceParams.tnBHSliceTaskInfo.NSSTInfo.name = modelInfo.getModelName() + + break + case "tn_mh": + subnetType = SubnetType.TN_MH + sliceParams.tnMHSliceTaskInfo.vendor = vendor + sliceParams.tnMHSliceTaskInfo.subnetType = subnetType + sliceParams.tnMHSliceTaskInfo.networkType = subnetType.networkType + sliceParams.tnMHSliceTaskInfo.NSSTInfo.UUID = modelInfo.getModelUuid() + sliceParams.tnMHSliceTaskInfo.NSSTInfo.invariantUUID = modelInfo.getModelInvariantUuid() + sliceParams.tnMHSliceTaskInfo.NSSTInfo.name = modelInfo.getModelName() + + break + case "an_nf": + subnetType = SubnetType.AN_NF + sliceParams.anSliceTaskInfo.vendor = vendor + sliceParams.anSliceTaskInfo.subnetType = subnetType + sliceParams.anSliceTaskInfo.networkType = subnetType.networkType + sliceParams.anSliceTaskInfo.NSSTInfo.UUID = modelInfo.getModelUuid() + sliceParams.anSliceTaskInfo.NSSTInfo.invariantUUID = modelInfo.getModelInvariantUuid() + sliceParams.anSliceTaskInfo.NSSTInfo.name = modelInfo.getModelName() + break + case "cn": + subnetType = SubnetType.CN + sliceParams.cnSliceTaskInfo.vendor = vendor + sliceParams.cnSliceTaskInfo.subnetType = subnetType + sliceParams.cnSliceTaskInfo.networkType = subnetType.networkType + sliceParams.cnSliceTaskInfo.NSSTInfo.UUID = modelInfo.getModelUuid() + sliceParams.cnSliceTaskInfo.NSSTInfo.invariantUUID = modelInfo.getModelInvariantUuid() + sliceParams.cnSliceTaskInfo.NSSTInfo.name = modelInfo.getModelName() + break + default: + subnetType = null + break + + //todo + } - else if(domain.equalsIgnoreCase("TN")){ - execution.setVariable("sliceProfileTn", sliceProfile) - sliceTaskParams.setSliceProfileTn(sliceProfile) - logger.debug("sliceProfileTn: " + sliceProfile) + if (subnetType == null) { + //todo: throw error + return } - else if(domain.equalsIgnoreCase("CN")){ - execution.setVariable("sliceProfileCn", sliceProfile) - sliceTaskParams.setSliceProfileCn(sliceProfile) - logger.debug("sliceProfileCn: " + sliceProfile) + String response = querySubnetCapability(execution, vendor, subnetType) + ResponseEntity responseEntity = objectMapper.readValue(response, ResponseEntity.class) + + Map<String, Object> result = responseEntity.getBody() as Map + for (Map.Entry<String, Object> entry : result.entrySet()) { + subnetCapability.setDomainType(entry.getKey()) + subnetCapability.setCapabilityDetails(entry.getValue()) } } - private void saveNSSIId(String domain, String nssiId, String nssiName, DelegateExecution execution) { - SliceTaskParams sliceTaskParams = execution.getVariable("sliceTaskParams") - if(domain.equalsIgnoreCase("AN")){ - sliceTaskParams.setAnSuggestNssiId(nssiId) - sliceTaskParams.setAnSuggestNssiName(nssiName) - } - else if(domain.equalsIgnoreCase("CN")){ - sliceTaskParams.setCnSuggestNssiId(nssiId) - sliceTaskParams.setCnSuggestNssiName(nssiName) - } - else if(domain.equalsIgnoreCase("TN")){ - sliceTaskParams.setTnSuggestNssiId(nssiId) - sliceTaskParams.setTnSuggestNssiName(nssiName) - } + /** + * query Subnet Capability of TN AN CN + * @param execution + */ + private String querySubnetCapability(DelegateExecution execution, String vendor, SubnetType subnetType) { + + String strRequest = objectMapper.writeValueAsString(buildQuerySubnetCapRequest(vendor, subnetType)) + + String response = nssmfAdapterUtils.sendPostRequestNSSMF(execution, QUERY_SUB_NET_CAPABILITY, strRequest) + return response } - private Map getSliceProfile(String domain, DelegateExecution execution, Map<String, Object> oofSliceProfile) { - String profileMapStr - Map<String, Object> serviceProfile = execution.getVariable("serviceProfile") - Integer domainLatency = (Integer) serviceProfile.get("latency")/3 - - if(domain.equalsIgnoreCase("AN")){ - profileMapStr = """ { - "latency": ${domainLatency}, - "sNSSAI": "sNSSAI", - "uEMobilityLevel": "uEMobilityLevel", - "coverageAreaTAList": "coverageAreaTAList", - "5QI": 100 - }""" - } - else if(domain.equalsIgnoreCase("TN")){ - profileMapStr =""" { - "latency":${domainLatency}, - "sNSSAI":"sNSSAI", - "e2eLatency":"latency", - "bandwidth": 100 - }""" - } - else if(domain.equalsIgnoreCase("CN")){ - profileMapStr = """ { - "areaTrafficCapDL":"areaTrafficCapDL", - "maxNumberofUEs":"maxNumberofUEs", - "latency":${domainLatency}, - "expDataRateUL":"expDataRateUL", - "sNSSAI":"sNSSAI", - "areaTrafficCapUL":"areaTrafficCapUL", - "uEMobilityLevel":"uEMobilityLevel", - "expDataRateDL":"expDataRateDL", - "activityFactor":"activityFactor", - "resourceSharingLevel":"resourceSharingLevel" - }""" - } + /** + * build request body for querying Subnet Capability + * @param vendor + * @param subnetTypes + * @param networkType + * @return + */ + private static String buildQuerySubnetCapRequest(String vendor, SubnetType subnetType) { + NssmfAdapterNBIRequest request = new NssmfAdapterNBIRequest() + + List<String> subnetTypes = new ArrayList<>() + subnetTypes.add(subnetType.subnetType) + Map<String, Object> paramMap = new HashMap() + paramMap.put("subnetTypes", subnetTypes) - logger.debug("Profile map for " + domain + " : " + profileMapStr) - Map<String, Object> profileMaps = objectMapper.readValue(profileMapStr.trim().replaceAll(" ", ""), new TypeReference<Map<String, String>>(){}) - Map<String, Object> sliceProfile = [:] - for (Map.Entry<String, String> profileMap : profileMaps) { - String key = profileMap.key - String value = profileMaps.get(key) - if(null != oofSliceProfile && oofSliceProfile.keySet().contains(key)){ - sliceProfile.put(key, oofSliceProfile.get(key)) - logger.debug("Get from oof, key:${key}, value: ${oofSliceProfile.get(key)}") + request.setSubnetCapabilityQuery(objectMapper.writeValueAsString(paramMap)) + + EsrInfo esrInfo = new EsrInfo() + esrInfo.setVendor(vendor) + esrInfo.setNetworkType(subnetType.networkType) + + request.setEsrInfo(esrInfo) + + String strRequest = objectMapper.writeValueAsString(request) + + return strRequest + } + + /** + * todo: need rewrite + * prepare select nsi request + * @param execution + */ + public void preNSIRequest(DelegateExecution execution) { + + String urlString = UrnPropertiesReader.getVariable("mso.oof.endpoint", execution) + logger.debug( "get NSI option OOF Url: " + urlString) + + + String requestId = execution.getVariable("msoRequestId") + String messageType = "NSISelectionResponse" + + execution.setVariable("nsiSelectionUrl", "/api/oof/selection/nsi/v1") + execution.setVariable("nsiSelection_messageType", messageType) + execution.setVariable("nsiSelection_correlator", requestId) + String timeout = UrnPropertiesReader.getVariable("mso.adapters.oof.timeout", execution) + execution.setVariable("nsiSelection_timeout", timeout) + + SliceTaskParamsAdapter sliceParams = + execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter + + Map<String, Object> profileInfo = sliceParams.getServiceProfile() + TemplateInfo nstInfo = sliceParams.getNSTInfo() + + List<TemplateInfo> nsstInfos = execution.getVariable("nsstInfos") as List<TemplateInfo> + + List<SubnetCapability> subnetCapabilities = + execution.getVariable("subnetCapabilities") as List<SubnetCapability> + + String oofRequest = oofUtils.buildSelectNSIRequest(requestId, nstInfo, nsstInfos, + messageType, profileInfo, subnetCapabilities, timeout as Integer) + + execution.setVariable("nsiSelection_oofRequest", oofRequest) + logger.debug("Sending request to OOF: " + oofRequest) + } + + /** + * todo: need rewrite + * process select nsi response + * @param execution + */ + public void processNSIResp(DelegateExecution execution) { + + SliceTaskParamsAdapter sliceTaskParams = + execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter + + String OOFResponse = execution.getVariable("nsiSelection_oofResponse") + logger.debug("NSI OOFResponse is: " + OOFResponse) + execution.setVariable("OOFResponse", OOFResponse) + //This needs to be changed to derive a value when we add policy to decide the solution options. + + Map<String, Object> resMap = objectMapper.readValue(OOFResponse, Map.class) + List<Map<String, Object>> nsiSolutions = (List<Map<String, Object>>) resMap.get("solutions") + Map<String, Object> solution = nsiSolutions.get(0) + + String resourceSharingLevel = execution.getVariable("resourceSharingLevel") + Boolean isSharable = resourceSharingLevel == "shared" + + if (solution != null) { + if (isSharable && solution.get("existingNSI")) { + //sharedNSISolution + processSharedNSI(solution, sliceTaskParams) } - else if(serviceProfile.keySet().contains(value)){ - sliceProfile.put(key, serviceProfile.get(value)) + else if(solution.containsKey("newNSISolution")) { + processNewNSI(solution, sliceTaskParams) } - else{ - sliceProfile.put(key, profileMaps.get(key)) + } + execution.setVariable("sliceTaskParams", sliceTaskParams) + //logger.debug("sliceTaskParams: " + sliceTaskParams.convertToJson()) + logger.debug("*** Completed options Call to OOF ***") + } + + private void processSharedNSI(Map<String, Object> solution, SliceTaskParamsAdapter sliceParams) { + Map<String, Object> sharedNSISolution = solution.get("sharedNSISolution") as Map + + String nsiId = sharedNSISolution.get("NSIId") + String nsiName = sharedNSISolution.get("NSIName") + sliceParams.setSuggestNsiId(nsiId) + sliceParams.setSuggestNsiName(nsiName) + } + + private void processNewNSI(Map<String, Object> solution, SliceTaskParamsAdapter sliceParams) { + Map<String, Object> newNSISolution = solution.get("newNSISolution") as Map + List<Map> sliceProfiles = newNSISolution.get("sliceProfiles") as List<Map> + for (Map sliceProfile : sliceProfiles) { + String domainType = sliceProfile.get("domainType") + switch (domainType.toLowerCase()) { + case "tn-bh": + sliceParams.tnBHSliceTaskInfo.sliceProfile = sliceProfile as TnSliceProfile + break + case "an-nf": + sliceParams.anSliceTaskInfo.sliceProfile = sliceProfile as AnSliceProfile + break + case "cn": + sliceParams.cnSliceTaskInfo.sliceProfile = sliceProfile as CnSliceProfile + break + default: + break } + + //todo + } - return sliceProfile } - void processDecomposition(DelegateExecution execution){ - logger.debug("Start processDecomposition") + /** + * get NSSI Selection Capability for AN + * @param execution + */ + public void getNSSISelectionCap4AN(DelegateExecution execution) { + + def vendor = execution.getVariable("vendor") as String + + String strRequest = buildNSSISelectionReq(vendor, NetworkType.ACCESS) + + String response = nssmfAdapterUtils.sendPostRequestNSSMF(execution, QUERY_NSSI_SELECTION_CAPABILITY, strRequest) + + Map<String, Object> resMap = objectMapper.readValue(response, Map.class) + + String selection = resMap.get("selection") - ServiceDecomposition serviceDecomposition= execution.getVariable("serviceDecomposition") - SliceTaskParams sliceTaskParams = execution.getVariable("sliceTaskParams") - String nstName = serviceDecomposition.getModelInfo().getModelName() - String nstId = serviceDecomposition.getModelInfo().getModelUuid() - sliceTaskParams.setNstName(nstName) - sliceTaskParams.setNstId(nstId) - logger.debug("End processDecomposition") + if ("NSMF".equalsIgnoreCase(selection)) { + execution.setVariable("NEED_AN_NSSI_SELECTION", true) + } } + /** + * get NSSI Selection Capability for TN + * @param execution + */ + public void getNSSISelectionCap4TN(DelegateExecution execution) { - void prepareNSTDecompose(DelegateExecution execution) { + def vendor = execution.getVariable("vendor") as String - String modelUuid = execution.getVariable("nstModelUuid") - String modelInvariantUuid = execution.getVariable("nstModelInvariantUuid") + String strRequest = buildNSSISelectionReq(vendor, NetworkType.TRANSPORT) - String serviceModelInfo = """{ - "modelInvariantUuid":"${modelInvariantUuid}", - "modelUuid":"${modelUuid}", - "modelVersion":"" - }""" - execution.setVariable("serviceModelInfo", serviceModelInfo) + String response = nssmfAdapterUtils.sendPostRequestNSSMF(execution, QUERY_NSSI_SELECTION_CAPABILITY, strRequest) + + Map<String, Object> resMap = objectMapper.readValue(response, Map.class) + + String selection = resMap.get("selection") + + if ("NSMF".equalsIgnoreCase(selection)) { + execution.setVariable("NEED_TN_NSSI_SELECTION", true) + } } - void prepareNSSTDecompose(DelegateExecution execution) { - Boolean isMoreNSSTtoProcess = false - Integer maxNSST = execution.getVariable("maxNSST") - Integer currentNSST=execution.getVariable("currentNSST") - List<String> nsstModelUUIDList = new ArrayList<>() - nsstModelUUIDList = execution.getVariable("nsstModelUUIDList") - String modelUuid = nsstModelUUIDList.get(currentNSST) - String serviceModelInfo = """{ - "modelInvariantUuid":"", - "modelUuid":"${modelUuid}", - "modelVersion":"" - }""" - execution.setVariable("serviceModelInfo", serviceModelInfo) - currentNSST=currentNSST+1 - if(currentNSST<maxNSST) - isMoreNSSTtoProcess=true - execution.setVariable("isMoreNSSTtoProcess",isMoreNSSTtoProcess) - execution.setVariable("maxNSST",maxNSST) - execution.setVariable("currentNSST",currentNSST) + /** + * get NSSI Selection Capability for CN + * @param execution + */ + public void getNSSISelectionCap4CN(DelegateExecution execution) { + + def vendor = execution.getVariable("vendor") as String + + String strRequest = buildNSSISelectionReq(vendor, NetworkType.CORE) + + String response = nssmfAdapterUtils.sendPostRequestNSSMF(execution, QUERY_NSSI_SELECTION_CAPABILITY, strRequest) + + Map<String, Object> resMap = objectMapper.readValue(response, Map.class) + + String selection = resMap.get("selection") + + if ("NSMF".equalsIgnoreCase(selection)) { + execution.setVariable("NEED_CN_NSSI_SELECTION", true) + } + } + + /** + * build NSSI Selection Capability Request body to nssmf adapter + * @param vendor + * @param networkType + * @return + */ + private static String buildNSSISelectionReq(String vendor, NetworkType networkType) { + NssmfAdapterNBIRequest request = new NssmfAdapterNBIRequest() + EsrInfo esrInfo = new EsrInfo() + esrInfo.setVendor(vendor) + esrInfo.setNetworkType(networkType) + request.setEsrInfo(esrInfo) + + return objectMapper.writeValueAsString(request) } + /** + * if exist nssi need to select? + * @param execution + */ + public void handleNssiSelect(DelegateExecution execution) { + + SliceTaskParamsAdapter sliceTaskParams = + execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter + + //todo + boolean needCnNssiSelection = execution.getVariable("NEED_CN_NSSI_SELECTION") as Boolean + boolean needAnNssiSelection = execution.getVariable("NEED_AN_NSSI_SELECTION") as Boolean + boolean needTnNssiSelection = execution.getVariable("NEED_TN_NSSI_SELECTION") as Boolean + + /** + * [ + * { + * "subType": subtype, + * "nsstInfo": object, + * "sliceProfile": object + * }, + * { + * "subType": subtype, + * "nsstInfo": object, + * "sliceProfile": object + * } + * ] + */ + List<Map> nssiNeedHandlerInfos = new ArrayList<>() + Map<String, Object> nssiNeedHandlerMap = new HashMap() + + //List<TemplateInfo> nssiNeedHandlers = new ArrayList<>() + //List<Object> nssiProfileNeedHandlers = new ArrayList<>() + if (needCnNssiSelection) { + nssiNeedHandlerMap.put("subnetType", sliceTaskParams.cnSliceTaskInfo.subnetType) + nssiNeedHandlerMap.put("nsstInfo", sliceTaskParams.cnSliceTaskInfo.NSSTInfo) + nssiNeedHandlerMap.put("sliceProfile", sliceTaskParams.cnSliceTaskInfo.sliceProfile) + nssiNeedHandlerInfos.add(nssiNeedHandlerMap) + } + if (needAnNssiSelection) { + nssiNeedHandlerMap.clear() + nssiNeedHandlerMap.put("subnetType", sliceTaskParams.anSliceTaskInfo.subnetType) + nssiNeedHandlerMap.put("nsstInfo", sliceTaskParams.anSliceTaskInfo.NSSTInfo) + nssiNeedHandlerMap.put("sliceProfile", sliceTaskParams.anSliceTaskInfo.sliceProfile) + nssiNeedHandlerInfos.add(nssiNeedHandlerMap) + } + if (needTnNssiSelection) { + nssiNeedHandlerMap.clear() + nssiNeedHandlerMap.put("subnetType", sliceTaskParams.tnBHSliceTaskInfo.subnetType) + nssiNeedHandlerMap.put("nsstInfo", sliceTaskParams.tnBHSliceTaskInfo.NSSTInfo) + nssiNeedHandlerMap.put("sliceProfile", sliceTaskParams.tnBHSliceTaskInfo.sliceProfile) + nssiNeedHandlerInfos.add(nssiNeedHandlerMap) + + nssiNeedHandlerMap.clear() + nssiNeedHandlerMap.put("subnetType", sliceTaskParams.tnMHSliceTaskInfo.subnetType) + nssiNeedHandlerMap.put("nsstInfo", sliceTaskParams.tnMHSliceTaskInfo.NSSTInfo) + nssiNeedHandlerMap.put("sliceProfile", sliceTaskParams.tnMHSliceTaskInfo.sliceProfile) + nssiNeedHandlerInfos.add(nssiNeedHandlerMap) + + nssiNeedHandlerMap.clear() + nssiNeedHandlerMap.put("subnetType", sliceTaskParams.tnFHSliceTaskInfo.subnetType) + nssiNeedHandlerMap.put("nsstInfo", sliceTaskParams.tnFHSliceTaskInfo.NSSTInfo) + nssiNeedHandlerMap.put("sliceProfile", sliceTaskParams.tnFHSliceTaskInfo.sliceProfile) + nssiNeedHandlerInfos.add(nssiNeedHandlerMap) + + } - void prepareNSSTlistfromNST(DelegateExecution execution) { - //Need to update this part from decomposition. - logger.trace("Enter prepareNSSTlistfromNST()") - Boolean isMoreNSSTtoProcess = false - ServiceDecomposition serviceDecomposition= execution.getVariable("serviceDecomposition") - SliceTaskParams sliceTaskParams = execution.getVariable("sliceTaskParams") - String nstName = serviceDecomposition.getModelInfo().getModelName() - sliceTaskParams.setNstName(nstName) - String nstId = serviceDecomposition.getModelInfo().getModelUuid() - sliceTaskParams.setNstId(nstId) - execution.setVariable("sliceTaskParams",sliceTaskParams) - - List<ServiceProxy> proxyList = serviceDecomposition.getServiceProxy() - List<String> nsstModelUUIDList = new ArrayList<>() - for(ServiceProxy serviceProxy:proxyList) - nsstModelUUIDList.add(serviceProxy.getSourceModelUuid()) - execution.setVariable("nsstModelUUIDList",nsstModelUUIDList) - Integer maxNSST = nsstModelUUIDList.size() - Integer currentNSST=0 - execution.setVariable("maxNSST",maxNSST) - execution.setVariable("currentNSST",currentNSST) - if(currentNSST<maxNSST) - isMoreNSSTtoProcess=true - execution.setVariable("isMoreNSSTtoProcess",isMoreNSSTtoProcess) - logger.trace("Exit prepareNSSTlistfromNST()") + if (nssiNeedHandlerInfos.size() > 0) { + execution.setVariable("needSelectNssi", true) + execution.setVariable("currNssiIndex", 0) + execution.setVariable("nssiNeedHandlerInfos", nssiNeedHandlerInfos) + } else { + execution.setVariable("needSelectNssi", false) + } + execution.setVariable("sliceTaskParams", sliceTaskParams) } - void getNSSTOption(DelegateExecution execution) { - ServiceDecomposition serviceDecomposition= execution.getVariable("serviceDecomposition") + /** + * prepare select nssi request + * @param execution + */ + public void preNSSIRequest(DelegateExecution execution) { + + List<Map> nssiNeedHandlerInfos = + execution.getVariable("nssiNeedHandlerInfos") as List<Map> + + int currNssiIndex = execution.getVariable("currNssiIndex") as Integer + Map nssiNeedHandlerInfo = nssiNeedHandlerInfos.get(currNssiIndex) as Map + + TemplateInfo nsstInfo = nssiNeedHandlerInfo.get("nsstInfo") as TemplateInfo + Object profileInfo = nssiNeedHandlerInfo.get("sliceProfile") + String urlString = UrnPropertiesReader.getVariable("mso.oof.endpoint", execution) - String globalSubscriberId = execution.getVariable("globalSubscriberId") - String serviceType = execution.getVariable("subscriptionServiceType") - String nssiInstanceId ="" - String nssiName ="" - SliceTaskParams sliceTaskParams = execution.getVariable("sliceTaskParams") logger.debug( "get NSI option OOF Url: " + urlString) - boolean isNSISuggested = false - execution.setVariable("isNSISuggested",isNSISuggested) - - //Prepare auth for OOF - Begin - def authHeader = "" - String basicAuth = UrnPropertiesReader.getVariable("mso.oof.auth", execution) - String msokey = UrnPropertiesReader.getVariable("mso.msoKey", execution) - - String basicAuthValue = utils.encrypt(basicAuth, msokey) - if (basicAuthValue != null) { - 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) - exceptionUtil.buildAndThrowWorkflowException(execution, 401, "Internal Error - Unable to " + - "encode username and password string") - } - } else { - logger.debug( "Unable to obtain BasicAuth - BasicAuth value null") - exceptionUtil.buildAndThrowWorkflowException(execution, 401, "Internal Error - BasicAuth " + - "value null") - } - //Prepare auth for OOF - End - //Prepare send request to OOF - Begin + String requestId = execution.getVariable("msoRequestId") - Map<String, Object> profileInfo = execution.getVariable("serviceProfile") - String nsstModelInvariantUuid = serviceDecomposition.getModelInfo().getModelInvariantUuid() - String nsstModelUuid = serviceDecomposition.getModelInfo().getModelUuid() - String nsstInfo = """"NSSTInfo": { - "invariantUUID":"${nsstModelInvariantUuid}", - "UUID":"${nsstModelUuid}" - }""" - String oofRequest = oofUtils.buildSelectNSSIRequest(execution, requestId, nsstInfo ,profileInfo) - - - URL url = new URL(urlString+"/api/oof/v1/selectnssi") - HttpClient httpClient = new HttpClientFactory().newJsonClient(url, ONAPComponents.OOF) - httpClient.addAdditionalHeader("Authorization", authHeader) - Response httpResponse = httpClient.post(oofRequest) - - int responseCode = httpResponse.getStatus() - logger.debug("OOF sync response code is: " + responseCode) - - if(responseCode != 200){ - exceptionUtil.buildAndThrowWorkflowException(execution, responseCode, "Received a Bad Sync Response from OOF.") + String messageType = "NSSISelectionResponse" + + execution.setVariable("nssiSelectionUrl", "/api/oof/selection/nssi/v1") + execution.setVariable("nssiSelection_messageType", messageType) + execution.setVariable("nssiSelection_correlator", requestId) + String timeout = UrnPropertiesReader.getVariable("mso.adapters.oof.timeout", execution) + execution.setVariable("nssiSelection_timeout", timeout) + + String oofRequest = oofUtils.buildSelectNSSIRequest(requestId, nsstInfo, messageType, + profileInfo, timeout as Integer) + + execution.setVariable("nssiSelection_oofRequest", oofRequest) + logger.debug("Sending request to OOF: " + oofRequest) + } + + /** + * process select nssi response + * @param execution + */ + public void processNSSIResp(DelegateExecution execution) { + + List<Map> nssiNeedHandlerInfos = + execution.getVariable("nssiNeedHandlerInfos") as List<Map> + + int currNssiIndex = execution.getVariable("currNssiIndex") as Integer + Map nssiNeedHandlerInfo = nssiNeedHandlerInfos.get(currNssiIndex) as Map + SubnetType subnetType = nssiNeedHandlerInfo.get("subnetType") as SubnetType + + SliceTaskParamsAdapter sliceTaskParams = + execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter + + + String OOFResponse = execution.getVariable("nssiSelection_oofResponse") + logger.debug("NSI OOFResponse is: " + OOFResponse) + execution.setVariable("OOFResponse", OOFResponse) + //This needs to be changed to derive a value when we add policy to decide the solution options. + + Map<String, Object> resMap = objectMapper.readValue(OOFResponse, Map.class) + List<Map<String, Object>> nsiSolutions = (List<Map<String, Object>>) resMap.get("solutions") + Map<String, Object> solution = nsiSolutions.get(0) + + String resourceSharingLevel = execution.getVariable("resourceSharingLevel") + Boolean isSharable = resourceSharingLevel == "shared" //todo + + if (isSharable && solution != null) { + processNssiResult(sliceTaskParams, subnetType, solution) } - if(httpResponse.hasEntity()){ - String OOFResponse = httpResponse.readEntity(String.class) - execution.setVariable("OOFResponse", OOFResponse) - nssiInstanceId = jsonUtil.getJsonValue(OOFResponse, "NSSIIInfo.NSSIID") - nssiName = jsonUtil.getJsonValue(OOFResponse, "NSSIInfo.NSSIName") - execution.setVariable("nssiInstanceId",nssiInstanceId) - execution.setVariable("nssiName",nssiName) + execution.setVariable("sliceTaskParams", sliceTaskParams) + //logger.debug("sliceTaskParams: "+ sliceTaskParams.convertToJson()) + logger.debug("*** Completed options Call to OOF ***") + + logger.debug("start parseServiceProfile") + //parseServiceProfile(execution) + logger.debug("end parseServiceProfile") + + if (currNssiIndex >= nssiNeedHandlerInfos.size() - 1) { + execution.setVariable("needSelectNssi", false) + } else { + execution.setVariable("currNssiIndex", currNssiIndex + 1) + execution.setVariable("needSelectNssi", true) } - if(isBlank(nssiInstanceId)){ - logger.debug( "There is no valid NSST suggested by OOF.") - }else - { - try { - AAIResourcesClient resourceClient = new AAIResourcesClient() - AAIResourceUri serviceInstanceUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, globalSubscriberId, serviceType, nssiInstanceId) - AAIResultWrapper wrapper = resourceClient.get(serviceInstanceUri, NotFoundException.class) - Optional<org.onap.aai.domain.yang.ServiceInstance> si = wrapper.asBean(org.onap.aai.domain.yang.ServiceInstance.class) - org.onap.aai.domain.yang.ServiceInstance nssi = si.get() - - String domain = nssi.getEnvironmentContext().toString().toUpperCase() - switch (domain) { - case "AN": - sliceTaskParams.setAnSuggestNssiId(nssi.getServiceInstanceId()) - sliceTaskParams.setAnSuggestNssiName(nssi.getServiceInstanceName()) - break - case "CN": - sliceTaskParams.setCnSuggestNssiId(nssi.getServiceInstanceId()) - sliceTaskParams.setCnSuggestNssiName(nssi.getServiceInstanceName()) - break - case "TN": - sliceTaskParams.setTnSuggestNssiId(nssi.getServiceInstanceId()) - sliceTaskParams.setTnSuggestNssiName(nssi.getServiceInstanceName()) - break - default: - break - } - }catch(NotFoundException e) - { - logger.debug("NSSI Service Instance not found in AAI: " + nssiInstanceId) - }catch(Exception e) - { - logger.debug("NSSI Service Instance not found in AAI: " + nssiInstanceId) - } + + } + + private void processNssiResult(SliceTaskParamsAdapter sliceTaskParams, SubnetType subnetType, + Map<String, Object> solution) { + switch (subnetType) { + case SubnetType.CN: + sliceTaskParams.cnSliceTaskInfo.suggestNssiId = solution.get("NSSIId") + sliceTaskParams.cnSliceTaskInfo.suggestNssiName = solution.get("NSSIName") + break + case SubnetType.AN_NF: + sliceTaskParams.anSliceTaskInfo.suggestNssiId = solution.get("NSSIId") + sliceTaskParams.anSliceTaskInfo.suggestNssiName = solution.get("NSSIName") + break + case SubnetType.TN_BH: + sliceTaskParams.tnBHSliceTaskInfo.suggestNssiId = solution.get("NSSIId") + sliceTaskParams.tnBHSliceTaskInfo.suggestNssiName = solution.get("NSSIName") + break + case SubnetType.TN_FH: + sliceTaskParams.tnFHSliceTaskInfo.suggestNssiId = solution.get("NSSIId") + sliceTaskParams.tnFHSliceTaskInfo.suggestNssiName = solution.get("NSSIName") + break + case SubnetType.TN_MH: + sliceTaskParams.tnMHSliceTaskInfo.suggestNssiId = solution.get("NSSIId") + sliceTaskParams.tnMHSliceTaskInfo.suggestNssiName = solution.get("NSSIName") + break } - logger.debug("Prepare NSSI option completed ") } + } diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateSliceServiceOptionV2.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateSliceServiceOptionV2.groovy deleted file mode 100644 index ca262172d0..0000000000 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateSliceServiceOptionV2.groovy +++ /dev/null @@ -1,907 +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.core.type.TypeReference -import com.fasterxml.jackson.databind.ObjectMapper -import org.apache.commons.lang3.StringUtils -import org.camunda.bpm.engine.delegate.DelegateExecution -import org.onap.aai.domain.yang.ServiceInstance -import org.onap.aaiclient.client.aai.AAIObjectType -import org.onap.aaiclient.client.aai.AAIResourcesClient -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.logging.filter.base.ONAPComponents -import org.onap.so.beans.nsmf.* -import org.onap.so.beans.nsmf.oof.SubnetCapability -import org.onap.so.beans.nsmf.oof.TemplateInfo -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.OofUtils -import org.onap.so.bpmn.core.UrnPropertiesReader -import org.onap.so.bpmn.core.domain.ServiceDecomposition -import org.onap.so.bpmn.core.domain.ServiceProxy -import org.onap.so.bpmn.core.json.JsonUtils -import org.onap.so.client.HttpClient -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 - -class DoCreateSliceServiceOptionV2 extends AbstractServiceTaskProcessor{ - - private static final Logger logger = LoggerFactory.getLogger( DoCreateSliceServiceOptionV2.class) - - ExceptionUtil exceptionUtil = new ExceptionUtil() - - JsonUtils jsonUtil = new JsonUtils() - - OofUtils oofUtils = new OofUtils() - - ObjectMapper objectMapper = new ObjectMapper() - - void preProcessRequest (DelegateExecution execution) { - } - - - /** - * prepare select nsi request - * @param execution - */ - void prepareSelectNSIRequest(DelegateExecution execution) { - - String urlString = UrnPropertiesReader.getVariable("mso.oof.endpoint", execution) - logger.debug( "get NSI option OOF Url: " + urlString) - - boolean isNSISuggested = true - execution.setVariable("isNSISuggested",isNSISuggested) - String requestId = execution.getVariable("msoRequestId") - String messageType = "NSISelectionResponse" - - Map<String, Object> profileInfo = execution.getVariable("serviceProfile") - Map<String, Object> nstSolution = execution.getVariable("nstSolution") - logger.debug("Get NST selection from OOF: " + nstSolution.toString()) - String nstInfo = """{ - "modelInvariantId":"${nstSolution.invariantUUID}", - "modelVersionId":"${nstSolution.UUID}", - "modelName":"${nstSolution.NSTName}" - }""" - - execution.setVariable("nsiSelectionUrl", "/api/oof/selection/nsi/v1") - execution.setVariable("nsiSelection_messageType",messageType) - execution.setVariable("nsiSelection_correlator",requestId) - String timeout = UrnPropertiesReader.getVariable("mso.adapters.oof.timeout", execution); - execution.setVariable("nsiSelection_timeout",timeout) - String oofRequest = oofUtils.buildSelectNSIRequest(requestId, nstInfo,messageType, profileInfo) - execution.setVariable("nsiSelection_oofRequest",oofRequest) - logger.debug("Sending request to OOF: " + oofRequest) - } - - /** - * process select nsi response - * @param execution - */ - void processOOFResponse(DelegateExecution execution) { - - SliceTaskParams sliceTaskParams = execution.getVariable("sliceTaskParams") as SliceTaskParams - String OOFResponse = execution.getVariable("nsiSelection_oofResponse") - logger.debug("NSI OOFResponse is: " + OOFResponse) - execution.setVariable("OOFResponse", OOFResponse) - //This needs to be changed to derive a value when we add policy to decide the solution options. - - Map<String, Object> resMap = objectMapper.readValue(OOFResponse, Map.class) - List<Map<String, Object>> nsiSolutions = (List<Map<String, Object>>) resMap.get("solutions") - Map<String, Object> solutions = nsiSolutions.get(0) - - String resourceSharingLevel = execution.getVariable("resourceSharingLevel") - Boolean isSharable = resourceSharingLevel == "shared" - - if (solutions != null) { - if (isSharable && solutions.get("existingNSI")) { - //sharedNSISolution - processSharedNSISolutions(solutions, execution) - } - else if(solutions.containsKey("newNSISolution")) { - processNewNSISolutions(solutions, execution) - } - } - execution.setVariable("sliceTaskParams", sliceTaskParams) - logger.debug("sliceTaskParams: "+sliceTaskParams.convertToJson()) - logger.debug("*** Completed options Call to OOF ***") - - logger.debug("start parseServiceProfile") - parseServiceProfile(execution) - logger.debug("end parseServiceProfile") - } - - - private void processNewNSISolutions(Map solutions, DelegateExecution execution) { - int index = 0 - List<Map> newNSISolutions = solutions.get("newNSISolution") - List<Map> NSSImap = new ArrayList<>() - if (newNSISolutions != null && newNSISolutions.size() > 0) { - NSSImap = newNSISolutions.get(index).get("NSSISolutions") as List<Map> - for (Map nssi : NSSImap) { - Map oofSliceProfile = nssi.get("sliceProfile") - String domain = oofSliceProfile.getOrDefault("domainType","") - logger.debug("OOF newNSISolutions SliceProfile: " +oofSliceProfile.toString()+",domain:${domain}") - if(null != domain){ - //TODO -// def nssiSolution = nssi.get("NSSISolution") as Map<String, ?> -// String nssiName = nssiSolution.getOrDefault("NSSIName", "") -// String nssiId = nssiSolution.getOrDefault("NSSIId", "") -// saveNSSIId(nssi, sliceTaskParams) - Map<String, Object> sliceProfile = getSliceProfile(domain, execution, oofSliceProfile) - saveSliceProfile(execution, domain, sliceProfile) - - } - } - } - } - - private void processSharedNSISolutions(Map solutions, DelegateExecution execution) { - String nsiName, nsiInstanceId, nssiId, nssiName - SliceTaskParams sliceTaskParams = execution.getVariable("sliceTaskParams") - - Map sharedNSIsolution = ((List) solutions.get("sharedNSISolutions"))?.get(0) - nsiInstanceId = sharedNSIsolution.getOrDefault("NSIId", "") - nsiName = sharedNSIsolution.getOrDefault("NSIName", "") - sliceTaskParams.setSuggestNsiId(nsiInstanceId) - sliceTaskParams.setSuggestNsiName(nsiName) - - //Temporary modification - List NSSIs = sharedNSIsolution.get("NSSIs") - for(Map nssi : NSSIs){ - Map oofSliceProfile = ((List)nssi.get("sliceProfile"))?.get(0) - String domain = oofSliceProfile.getOrDefault("domainType","") - nssiId = nssi.getOrDefault("NSSIId","") - nssiName = nssi.getOrDefault("NSSIName","") - saveNSSIId(domain, nssiId, nssiName,execution) - Map<String, Object> sliceProfile = getSliceProfile(domain, execution, oofSliceProfile) - saveSliceProfile(execution, domain, sliceProfile) - logger.debug("OOF sharedNSISolution SliceProfile:"+oofSliceProfile.toString()+",domain:${domain}") - logger.debug("OOF sharedNSISolution nsiInstanceId:${nsiInstanceId}, nsiName:${nsiName}, nssiId:${nssiId}, nssiName:${nssiName}") - } - } - - private void parseServiceProfile(DelegateExecution execution) { - logger.debug("Start parseServiceProfile") - String serviceType = execution.getVariable("serviceType") - Map<String, Object> serviceProfile = execution.getVariable("serviceProfile") - SliceTaskParams sliceTaskParams = execution.getVariable("sliceTaskParams") - // set sliceProfile for three domains - if(!sliceTaskParams.getSliceProfileAn()){ - Map<String, Object> sliceProfileAn = getSliceProfile( "AN", execution,null) - saveSliceProfile(execution,"AN",sliceProfileAn) - } - - if(!sliceTaskParams.getSliceProfileTn()){ - Map<String, Object> sliceProfileTn = getSliceProfile( "TN", execution,null) - saveSliceProfile(execution,"TN",sliceProfileTn) - } - - if(!sliceTaskParams.getSliceProfileCn()){ - Map<String, Object> sliceProfileCn = getSliceProfile( "CN", execution,null, ) - saveSliceProfile(execution,"CN",sliceProfileCn) - } - - logger.debug("Finish parseServiceProfile") - } - - private void saveSliceProfile(DelegateExecution execution, String domain, Map<String, Object> sliceProfile){ - SliceTaskParams sliceTaskParams = execution.getVariable("sliceTaskParams") - if(domain.equalsIgnoreCase("AN")){ - execution.setVariable("sliceProfileAn", sliceProfile) - sliceTaskParams.setSliceProfileAn(sliceProfile) - logger.debug("sliceProfileAn: " + sliceProfile) - } - else if(domain.equalsIgnoreCase("TN")){ - execution.setVariable("sliceProfileTn", sliceProfile) - sliceTaskParams.setSliceProfileTn(sliceProfile) - logger.debug("sliceProfileTn: " + sliceProfile) - } - else if(domain.equalsIgnoreCase("CN")){ - execution.setVariable("sliceProfileCn", sliceProfile) - sliceTaskParams.setSliceProfileCn(sliceProfile) - logger.debug("sliceProfileCn: " + sliceProfile) - } - } - - private void saveNSSIId(String domain, String nssiId, String nssiName, DelegateExecution execution) { - SliceTaskParams sliceTaskParams = execution.getVariable("sliceTaskParams") - if(domain.equalsIgnoreCase("AN")){ - sliceTaskParams.setAnSuggestNssiId(nssiId) - sliceTaskParams.setAnSuggestNssiName(nssiName) - } - else if(domain.equalsIgnoreCase("CN")){ - sliceTaskParams.setCnSuggestNssiId(nssiId) - sliceTaskParams.setCnSuggestNssiName(nssiName) - } - else if(domain.equalsIgnoreCase("TN")){ - sliceTaskParams.setTnSuggestNssiId(nssiId) - sliceTaskParams.setTnSuggestNssiName(nssiName) - } - } - - private Map getSliceProfile(String domain, DelegateExecution execution, Map<String, Object> oofSliceProfile) { - String profileMapStr - Map<String, Object> serviceProfile = execution.getVariable("serviceProfile") - Integer domainLatency = (Integer) serviceProfile.get("latency")/3 - - if(domain.equalsIgnoreCase("AN")){ - profileMapStr = """ { - "latency": ${domainLatency}, - "sNSSAI": "sNSSAI", - "uEMobilityLevel": "uEMobilityLevel", - "coverageAreaTAList": "coverageAreaTAList", - "5QI": 100 - }""" - } - else if(domain.equalsIgnoreCase("TN")){ - profileMapStr =""" { - "latency":${domainLatency}, - "sNSSAI":"sNSSAI", - "e2eLatency":"latency", - "bandwidth": 100 - }""" - } - else if(domain.equalsIgnoreCase("CN")){ - profileMapStr = """ { - "areaTrafficCapDL":"areaTrafficCapDL", - "maxNumberofUEs":"maxNumberofUEs", - "latency":${domainLatency}, - "expDataRateUL":"expDataRateUL", - "sNSSAI":"sNSSAI", - "areaTrafficCapUL":"areaTrafficCapUL", - "uEMobilityLevel":"uEMobilityLevel", - "expDataRateDL":"expDataRateDL", - "activityFactor":"activityFactor", - "resourceSharingLevel":"resourceSharingLevel" - }""" - } - - logger.debug("Profile map for " + domain + " : " + profileMapStr) - Map<String, Object> profileMaps = objectMapper.readValue(profileMapStr.trim().replaceAll(" ", ""), new TypeReference<Map<String, String>>(){}) - Map<String, Object> sliceProfile = [:] - for (Map.Entry<String, String> profileMap : profileMaps) { - String key = profileMap.key - String value = profileMaps.get(key) - if(null != oofSliceProfile && oofSliceProfile.keySet().contains(key)){ - sliceProfile.put(key, oofSliceProfile.get(key)) - logger.debug("Get from oof, key:${key}, value: ${oofSliceProfile.get(key)}") - } - else if(serviceProfile.keySet().contains(value)){ - sliceProfile.put(key, serviceProfile.get(value)) - } - else{ - sliceProfile.put(key, profileMaps.get(key)) - } - } - return sliceProfile - } - - void processDecomposition(DelegateExecution execution){ - logger.debug("Start processDecomposition") - - ServiceDecomposition serviceDecomposition= execution.getVariable("serviceDecomposition") - SliceTaskParams sliceTaskParams = execution.getVariable("sliceTaskParams") - String nstName = serviceDecomposition.getModelInfo().getModelName() - String nstId = serviceDecomposition.getModelInfo().getModelUuid() - sliceTaskParams.setNstName(nstName) - sliceTaskParams.setNstId(nstId) - - logger.debug("End processDecomposition") - } - - - void prepareNSTDecompose(DelegateExecution execution) { - - String modelUuid = execution.getVariable("nstModelUuid") - String modelInvariantUuid = execution.getVariable("nstModelInvariantUuid") - - String serviceModelInfo = """{ - "modelInvariantUuid":"${modelInvariantUuid}", - "modelUuid":"${modelUuid}", - "modelVersion":"" - }""" - execution.setVariable("serviceModelInfo", serviceModelInfo) - } - - void prepareNSSTDecompose(DelegateExecution execution) { - Boolean isMoreNSSTtoProcess = false - Integer maxNSST = execution.getVariable("maxNSST") - Integer currentNSST=execution.getVariable("currentNSST") - List<String> nsstModelUUIDList = new ArrayList<>() - nsstModelUUIDList = execution.getVariable("nsstModelUUIDList") - String modelUuid = nsstModelUUIDList.get(currentNSST) - String serviceModelInfo = """{ - "modelInvariantUuid":"", - "modelUuid":"${modelUuid}", - "modelVersion":"" - }""" - execution.setVariable("serviceModelInfo", serviceModelInfo) - currentNSST=currentNSST+1 - if(currentNSST<maxNSST) - isMoreNSSTtoProcess=true - execution.setVariable("isMoreNSSTtoProcess",isMoreNSSTtoProcess) - execution.setVariable("maxNSST",maxNSST) - execution.setVariable("currentNSST",currentNSST) - } - - - void prepareNSSTlistfromNST(DelegateExecution execution) { - //Need to update this part from decomposition. - logger.trace("Enter prepareNSSTlistfromNST()") - Boolean isMoreNSSTtoProcess = false - ServiceDecomposition serviceDecomposition= execution.getVariable("serviceDecomposition") - SliceTaskParams sliceTaskParams = execution.getVariable("sliceTaskParams") - String nstName = serviceDecomposition.getModelInfo().getModelName() - sliceTaskParams.setNstName(nstName) - String nstId = serviceDecomposition.getModelInfo().getModelUuid() - sliceTaskParams.setNstId(nstId) - execution.setVariable("sliceTaskParams",sliceTaskParams) - - List<ServiceProxy> proxyList = serviceDecomposition.getServiceProxy() - List<String> nsstModelUUIDList = new ArrayList<>() - for(ServiceProxy serviceProxy:proxyList) - nsstModelUUIDList.add(serviceProxy.getSourceModelUuid()) - execution.setVariable("nsstModelUUIDList",nsstModelUUIDList) - Integer maxNSST = nsstModelUUIDList.size() - Integer currentNSST=0 - execution.setVariable("maxNSST",maxNSST) - execution.setVariable("currentNSST",currentNSST) - if(currentNSST<maxNSST) - isMoreNSSTtoProcess=true - execution.setVariable("isMoreNSSTtoProcess",isMoreNSSTtoProcess) - logger.trace("Exit prepareNSSTlistfromNST()") - - } - - void getNSSTOption(DelegateExecution execution) { - ServiceDecomposition serviceDecomposition= execution.getVariable("serviceDecomposition") - String urlString = UrnPropertiesReader.getVariable("mso.oof.endpoint", execution) - String globalSubscriberId = execution.getVariable("globalSubscriberId") - String serviceType = execution.getVariable("subscriptionServiceType") - String nssiInstanceId ="" - String nssiName ="" - SliceTaskParams sliceTaskParams = execution.getVariable("sliceTaskParams") - logger.debug( "get NSI option OOF Url: " + urlString) - boolean isNSISuggested = false - execution.setVariable("isNSISuggested",isNSISuggested) - - //Prepare auth for OOF - Begin - def authHeader = "" - String basicAuth = UrnPropertiesReader.getVariable("mso.oof.auth", execution) - String msokey = UrnPropertiesReader.getVariable("mso.msoKey", execution) - - String basicAuthValue = utils.encrypt(basicAuth, msokey) - if (basicAuthValue != null) { - 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) - exceptionUtil.buildAndThrowWorkflowException(execution, 401, "Internal Error - Unable to " + - "encode username and password string") - } - } else { - logger.debug( "Unable to obtain BasicAuth - BasicAuth value null") - exceptionUtil.buildAndThrowWorkflowException(execution, 401, "Internal Error - BasicAuth " + - "value null") - } - //Prepare auth for OOF - End - //Prepare send request to OOF - Begin - String requestId = execution.getVariable("msoRequestId") - Map<String, Object> profileInfo = execution.getVariable("serviceProfile") - String nsstModelInvariantUuid = serviceDecomposition.getModelInfo().getModelInvariantUuid() - String nsstModelUuid = serviceDecomposition.getModelInfo().getModelUuid() - String nsstInfo = """"NSSTInfo": { - "invariantUUID":"${nsstModelInvariantUuid}", - "UUID":"${nsstModelUuid}" - }""" - String oofRequest = oofUtils.buildSelectNSSIRequest(execution, requestId, nsstInfo ,profileInfo) - - - URL url = new URL(urlString+"/api/oof/v1/selectnssi") - HttpClient httpClient = new HttpClientFactory().newJsonClient(url, ONAPComponents.OOF) - httpClient.addAdditionalHeader("Authorization", authHeader) - Response httpResponse = httpClient.post(oofRequest) - - int responseCode = httpResponse.getStatus() - logger.debug("OOF sync response code is: " + responseCode) - - if(responseCode != 200){ - exceptionUtil.buildAndThrowWorkflowException(execution, responseCode, "Received a Bad Sync Response from OOF.") - } - - if(httpResponse.hasEntity()){ - String OOFResponse = httpResponse.readEntity(String.class) - execution.setVariable("OOFResponse", OOFResponse) - nssiInstanceId = jsonUtil.getJsonValue(OOFResponse, "NSSIIInfo.NSSIID") - nssiName = jsonUtil.getJsonValue(OOFResponse, "NSSIInfo.NSSIName") - execution.setVariable("nssiInstanceId",nssiInstanceId) - execution.setVariable("nssiName",nssiName) - } - if(StringUtils.isBlank(nssiInstanceId)){ - logger.debug( "There is no valid NSST suggested by OOF.") - }else - { - try { - AAIResourcesClient resourceClient = new AAIResourcesClient() - AAIResourceUri serviceInstanceUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, globalSubscriberId, serviceType, nssiInstanceId) - AAIResultWrapper wrapper = resourceClient.get(serviceInstanceUri, NotFoundException.class) - Optional<ServiceInstance> si = wrapper.asBean(org.onap.aai.domain.yang.ServiceInstance.class) - org.onap.aai.domain.yang.ServiceInstance nssi = si.get() - - String domain = nssi.getEnvironmentContext().toString().toUpperCase() - switch (domain) { - case "AN": - sliceTaskParams.setAnSuggestNssiId(nssi.getServiceInstanceId()) - sliceTaskParams.setAnSuggestNssiName(nssi.getServiceInstanceName()) - break - case "CN": - sliceTaskParams.setCnSuggestNssiId(nssi.getServiceInstanceId()) - sliceTaskParams.setCnSuggestNssiName(nssi.getServiceInstanceName()) - break - case "TN": - sliceTaskParams.setTnSuggestNssiId(nssi.getServiceInstanceId()) - sliceTaskParams.setTnSuggestNssiName(nssi.getServiceInstanceName()) - break - default: - break - } - }catch(NotFoundException e) - { - logger.debug("NSSI Service Instance not found in AAI: " + nssiInstanceId) - }catch(Exception e) - { - logger.debug("NSSI Service Instance not found in AAI: " + nssiInstanceId) - } - } - logger.debug("Prepare NSSI option completed ") - } - - - /** - * new - */ - - private static final ObjectMapper MAPPER = new ObjectMapper() - - private NssmfAdapterUtils nssmfAdapterUtils = new NssmfAdapterUtils(httpClientFactory, jsonUtil) - - private static final String QUERY_SUB_NET_CAPABILITY = "/api/rest/provMns/v1/NSS/subnetCapabilityQuery" - - private static final String QUERY_NSSI_SELECTION_CAPABILITY = "/api/rest/provMns/v1/NSS/NSSISelectionCapability" - - /** - * query Subnet Capability of TN - * @param execution - */ - public void queryTNSubnetCapability(DelegateExecution execution) { - - String vendor = execution.getVariable("vendor") - - List<String> subnetTypes = new ArrayList<>() - subnetTypes.add("TN_FH") - subnetTypes.add("TN_MH") - subnetTypes.add("TN_BH") - - String strRequest = MAPPER.writeValueAsString( - buildQuerySubnetCapRequest(vendor, subnetTypes, NetworkType.TRANSPORT)) - - String response = nssmfAdapterUtils.sendPostRequestNSSMF(execution, QUERY_SUB_NET_CAPABILITY, strRequest) - execution.setVariable("subnetCapabilityOfTN", response) - } - - /** - * query Subnet Capability of CN - * @param execution - */ - public void queryCNSubnetCapability(DelegateExecution execution) { - - String vendor = execution.getVariable("vendor") - - List<String> subnetTypes = new ArrayList<>() - subnetTypes.add("CN") - - String strRequest = MAPPER.writeValueAsString(buildQuerySubnetCapRequest(vendor, subnetTypes, NetworkType.CORE)) - - String response = nssmfAdapterUtils.sendPostRequestNSSMF(execution, QUERY_SUB_NET_CAPABILITY, strRequest) - - execution.setVariable("subnetCapabilityOfCN", response) - } - - /** - * query Subnet Capability of AN - * @param execution - */ - public void queryANSubnetCapability(DelegateExecution execution) { - - String vendor = execution.getVariable("vendor") - - List<String> subnetTypes = new ArrayList<>() - subnetTypes.add("AN-NF") - - String strRequest = MAPPER.writeValueAsString(buildQuerySubnetCapRequest(vendor, subnetTypes, NetworkType.ACCESS)) - - String response = nssmfAdapterUtils.sendPostRequestNSSMF(execution, QUERY_SUB_NET_CAPABILITY, strRequest) - - execution.setVariable("subnetCapabilityOfAN", response) - } - - /** - * build request body for querying Subnet Capability - * @param vendor - * @param subnetTypes - * @param networkType - * @return - */ - private static String buildQuerySubnetCapRequest(String vendor, List<String> subnetTypes, NetworkType networkType) { - NssmfAdapterNBIRequest request = new NssmfAdapterNBIRequest() - - Map<String, Object> paramMap = new HashMap() - paramMap.put("subnetTypes", subnetTypes) - - request.setSubnetCapabilityQuery(MAPPER.writeValueAsString(paramMap)) - - EsrInfo esrInfo = new EsrInfo() - esrInfo.setVendor(vendor) - esrInfo.setNetworkType(networkType) - - request.setEsrInfo(esrInfo) - - String strRequest = MAPPER.writeValueAsString(request) - - return strRequest - } - - /** - * handle response of Subnet Capability, generate SubnetCapabilities Info for request to oof - * @param execution - */ - public void generateSubnetCapabilities(DelegateExecution execution) { - //todo: - execution.setVariable("subnetCapabilities", []) - } - - /** - * prepare the params for decompose nst - * @param execution - */ - public void prepareDecomposeNST(DelegateExecution execution) { - - String modelUuid = execution.getVariable("nstModelUuid") - String modelInvariantUuid = execution.getVariable("nstModelInvariantUuid") - - String serviceModelInfo = """{ - "modelInvariantUuid":"${modelInvariantUuid}", - "modelUuid":"${modelUuid}", - "modelVersion":"" - }""" - execution.setVariable("nstServiceModelInfo", serviceModelInfo) - } - - /** - * process the result of NST Decomposition - * @param execution - */ - public void processDecompositionNST(DelegateExecution execution) { - - ServiceDecomposition nstServiceDecomposition = execution.getVariable("nstServiceDecomposition") - //todo: - - } - - - /** - * prepare the params for decompose nsst - * @param execution - */ - public void prepareDecomposeNSST(DelegateExecution execution) { - Boolean isMoreNSSTtoProcess = false - def maxNSST = execution.getVariable("maxNSST") as Integer - def currentNSST = execution.getVariable("currentNSST") as Integer - def nsstModelUUIDList = execution.getVariable("nsstModelUUIDList") as List - String modelUuid = nsstModelUUIDList.get(currentNSST) - String serviceModelInfo = """{ - "modelInvariantUuid":"", - "modelUuid":"${modelUuid}", - "modelVersion":"" - }""" - execution.setVariable("nsstServiceModelInfo", serviceModelInfo) - currentNSST = currentNSST + 1 - - if(currentNSST < maxNSST) { - isMoreNSSTtoProcess = true - } - - execution.setVariable("isMoreNSSTtoProcess", isMoreNSSTtoProcess) - execution.setVariable("maxNSST", maxNSST) - execution.setVariable("currentNSST", currentNSST) - - //todo: - } - - /** - * process the result of NSST Decomposition - * @param execution - */ - public void processDecompositionNSST(DelegateExecution execution) { - ServiceDecomposition nsstServiceDecomposition = execution.getVariable("nsstServiceDecomposition") - //todo: - } - - /** - * todo: need rewrite - * prepare select nsi request - * @param execution - */ - public void preNSIRequest(DelegateExecution execution) { - - String urlString = UrnPropertiesReader.getVariable("mso.oof.endpoint", execution) - logger.debug( "get NSI option OOF Url: " + urlString) - - boolean isNSISuggested = true - execution.setVariable("isNSISuggested", isNSISuggested) - String requestId = execution.getVariable("msoRequestId") - String messageType = "NSISelectionResponse" - - ServiceProfile profileInfo = execution.getVariable("serviceProfile") as ServiceProfile - Map<String, Object> nstSolution = execution.getVariable("nstSolution") as Map - logger.debug("Get NST selection from OOF: " + nstSolution.toString()) - - execution.setVariable("nsiSelectionUrl", "/api/oof/selection/nsi/v1") - execution.setVariable("nsiSelection_messageType", messageType) - execution.setVariable("nsiSelection_correlator", requestId) - String timeout = UrnPropertiesReader.getVariable("mso.adapters.oof.timeout", execution) - execution.setVariable("nsiSelection_timeout", timeout) - - - TemplateInfo nstInfo = new TemplateInfo() - nstInfo.setInvariantUUID(nstSolution.get("invariantUUID") as String) - nstInfo.setUUID(nstSolution.get("UUID") as String) - nstInfo.setName(nstSolution.get("NSTName") as String) - - execution.setVariable("NSTInfo", nstInfo) - - List<TemplateInfo> nsstInfos = execution.getVariable("NSSTInfos") as List<TemplateInfo> - - List<SubnetCapability> subnetCapabilities = execution.getVariable("subnetCapabilities") as List<SubnetCapability> - - String oofRequest = oofUtils.buildSelectNSIRequest(requestId, nstInfo, nsstInfos, - messageType, profileInfo, subnetCapabilities, timeout as Integer) - - execution.setVariable("nsiSelection_oofRequest", oofRequest) - logger.debug("Sending request to OOF: " + oofRequest) - } - - /** - * todo: need rewrite - * process select nsi response - * @param execution - */ - public void processNSIResp(DelegateExecution execution) { - - SliceTaskParams sliceTaskParams = execution.getVariable("sliceTaskParams") as SliceTaskParams - String OOFResponse = execution.getVariable("nsiSelection_oofResponse") - logger.debug("NSI OOFResponse is: " + OOFResponse) - execution.setVariable("OOFResponse", OOFResponse) - //This needs to be changed to derive a value when we add policy to decide the solution options. - - Map<String, Object> resMap = objectMapper.readValue(OOFResponse, Map.class) - List<Map<String, Object>> nsiSolutions = (List<Map<String, Object>>) resMap.get("solutions") - Map<String, Object> solutions = nsiSolutions.get(0) - - String resourceSharingLevel = execution.getVariable("resourceSharingLevel") - Boolean isSharable = resourceSharingLevel == "shared" - - if (solutions != null) { - if (isSharable && solutions.get("existingNSI")) { - //sharedNSISolution - processSharedNSISolutions(solutions, execution) - } - else if(solutions.containsKey("newNSISolution")) { - processNewNSISolutions(solutions, execution) - } - } - execution.setVariable("sliceTaskParams", sliceTaskParams) - logger.debug("sliceTaskParams: " + sliceTaskParams.convertToJson()) - logger.debug("*** Completed options Call to OOF ***") - - logger.debug("start parseServiceProfile") - parseServiceProfile(execution) - logger.debug("end parseServiceProfile") - } - - /** - * get NSSI Selection Capability for AN - * @param execution - */ - public void getNSSISelectionCap4AN(DelegateExecution execution) { - - def vendor = execution.getVariable("vendor") as String - - String strRequest = buildNSSISelectionReq(vendor, NetworkType.ACCESS) - - String response = nssmfAdapterUtils.sendPostRequestNSSMF(execution, QUERY_NSSI_SELECTION_CAPABILITY, strRequest) - - Map<String, Object> resMap = objectMapper.readValue(response, Map.class) - - String selection = resMap.get("selection") - - - if ("NSMF".equalsIgnoreCase(selection)) { - execution.setVariable("NEED_AN_NSSI_SELECTION", true) - } - } - - /** - * get NSSI Selection Capability for TN - * @param execution - */ - public void getNSSISelectionCap4TN(DelegateExecution execution) { - - def vendor = execution.getVariable("vendor") as String - - String strRequest = buildNSSISelectionReq(vendor, NetworkType.TRANSPORT) - - String response = nssmfAdapterUtils.sendPostRequestNSSMF(execution, QUERY_NSSI_SELECTION_CAPABILITY, strRequest) - - Map<String, Object> resMap = objectMapper.readValue(response, Map.class) - - String selection = resMap.get("selection") - - if ("NSMF".equalsIgnoreCase(selection)) { - execution.setVariable("NEED_TN_NSSI_SELECTION", true) - } - } - - /** - * get NSSI Selection Capability for CN - * @param execution - */ - public void getNSSISelectionCap4CN(DelegateExecution execution) { - - def vendor = execution.getVariable("vendor") as String - - String strRequest = buildNSSISelectionReq(vendor, NetworkType.CORE) - - String response = nssmfAdapterUtils.sendPostRequestNSSMF(execution, QUERY_NSSI_SELECTION_CAPABILITY, strRequest) - - Map<String, Object> resMap = objectMapper.readValue(response, Map.class) - - String selection = resMap.get("selection") - - if ("NSMF".equalsIgnoreCase(selection)) { - execution.setVariable("NEED_CN_NSSI_SELECTION", true) - } - } - - /** - * build NSSI Selection Capability Request body to nssmf adapter - * @param vendor - * @param networkType - * @return - */ - private static String buildNSSISelectionReq(String vendor, NetworkType networkType) { - NssmfAdapterNBIRequest request = new NssmfAdapterNBIRequest() - EsrInfo esrInfo = new EsrInfo() - esrInfo.setVendor(vendor) - esrInfo.setNetworkType(networkType) - request.setEsrInfo(esrInfo) - - return MAPPER.writeValueAsString(request) - } - - /** - * if exist nssi need to select? - * @param execution - */ - public void handleNssiSelect(DelegateExecution execution) { - - SliceTaskParamsAdapter sliceTaskParams = - execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter - - execution.setVariable() - } - - /** - * todo: need rewrite - * prepare select nssi request - * @param execution - */ - public void preNSSIRequest(DelegateExecution execution) { - - String urlString = UrnPropertiesReader.getVariable("mso.oof.endpoint", execution) - logger.debug( "get NSI option OOF Url: " + urlString) - - boolean isNSISuggested = true - execution.setVariable("isNSISuggested", isNSISuggested) - String requestId = execution.getVariable("msoRequestId") - String messageType = "NSISelectionResponse" - - Map<String, Object> profileInfo = execution.getVariable("serviceProfile") as Map - Map<String, Object> nstSolution = execution.getVariable("nstSolution") as Map - logger.debug("Get NST selection from OOF: " + nstSolution.toString()) - String nstInfo = """{ - "modelInvariantId":"${nstSolution.invariantUUID}", - "modelVersionId":"${nstSolution.UUID}", - "modelName":"${nstSolution.NSTName}" - }""" - - execution.setVariable("nsiSelectionUrl", "/api/oof/selection/nsi/v1") - execution.setVariable("nsiSelection_messageType", messageType) - execution.setVariable("nsiSelection_correlator", requestId) - String timeout = UrnPropertiesReader.getVariable("mso.adapters.oof.timeout", execution) - execution.setVariable("nsiSelection_timeout", timeout) - - //todo - String oofRequest = oofUtils.buildSelectNSIRequest(requestId, nstInfo, messageType, profileInfo) - - execution.setVariable("nsiSelection_oofRequest", oofRequest) - logger.debug("Sending request to OOF: " + oofRequest) - } - - /** - * process select nssi response - * @param execution - */ - public void processNSSIResp(DelegateExecution execution) { - - SliceTaskParams sliceTaskParams = execution.getVariable("sliceTaskParams") as SliceTaskParams - String OOFResponse = execution.getVariable("nsiSelection_oofResponse") - logger.debug("NSI OOFResponse is: " + OOFResponse) - execution.setVariable("OOFResponse", OOFResponse) - //This needs to be changed to derive a value when we add policy to decide the solution options. - - Map<String, Object> resMap = objectMapper.readValue(OOFResponse, Map.class) - List<Map<String, Object>> nsiSolutions = (List<Map<String, Object>>) resMap.get("solutions") - Map<String, Object> solutions = nsiSolutions.get(0) - - String resourceSharingLevel = execution.getVariable("resourceSharingLevel") - Boolean isSharable = resourceSharingLevel == "shared" - - if (solutions != null) { - if (isSharable && solutions.get("existingNSI")) { - //sharedNSISolution - processSharedNSISolutions(solutions, execution) - } - else if(solutions.containsKey("newNSISolution")) { - processNewNSISolutions(solutions, execution) - } - } - execution.setVariable("sliceTaskParams", sliceTaskParams) - logger.debug("sliceTaskParams: "+sliceTaskParams.convertToJson()) - logger.debug("*** Completed options Call to OOF ***") - - logger.debug("start parseServiceProfile") - parseServiceProfile(execution) - logger.debug("end parseServiceProfile") - } - - -} diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateTnNssiInstance.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateTnNssiInstance.groovy index 534467f6ab..0f1bf0d8b4 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateTnNssiInstance.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateTnNssiInstance.groovy @@ -27,6 +27,8 @@ import org.onap.aaiclient.client.aai.AAIObjectType import org.onap.aaiclient.client.aai.AAIResourcesClient 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.so.bpmn.common.scripts.AbstractServiceTaskProcessor import org.onap.so.bpmn.common.scripts.ExceptionUtil import org.onap.so.bpmn.core.json.JsonUtils @@ -81,9 +83,7 @@ class DoCreateTnNssiInstance extends AbstractServiceTaskProcessor { sliceProfile.setReliability(new Object()) try { AAIResourcesClient client = getAAIClient() - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SLICE_PROFILE, execution.getVariable - ("globalSubscriberId"), - execution.getVariable("subscriptionServiceType"), sliceserviceInstanceId, sliceProfileId) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(execution.getVariable("globalSubscriberId")).serviceSubscription(execution.getVariable("subscriptionServiceType")).serviceInstance(sliceserviceInstanceId).sliceProfile(sliceProfileId)) client.create(uri, sliceProfile) } catch (BpmnError e) { @@ -120,7 +120,7 @@ class DoCreateTnNssiInstance extends AbstractServiceTaskProcessor { ss.setEnvironmentContext(snssai) ss.setServiceRole(serviceRole) AAIResourcesClient client = getAAIClient() - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, execution.getVariable("globalSubscriberId"), execution.getVariable("subscriptionServiceType"), ssInstanceId) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(execution.getVariable("globalSubscriberId")).serviceSubscription(execution.getVariable("subscriptionServiceType")).serviceInstance(ssInstanceId)) client.create(uri, ss) } catch (BpmnError e) { throw e @@ -136,16 +136,14 @@ class DoCreateTnNssiInstance extends AbstractServiceTaskProcessor { String serviceInstanceId = execution.getVariable('sliceServiceInstanceId') AAIResourcesClient resourceClient = getAAIClient() - AAIResourceUri ssServiceuri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, serviceInstanceId) + AAIResourceUri ssServiceuri = AAIUriFactory.createResourceUri(Types.SERVICE_INSTANCE.getFragment(serviceInstanceId)) try { List<String> networkStrList = jsonUtil.StringArrayToList(execution.getVariable("transportSliceNetworks")) for (String networkStr : networkStrList) { String allottedResourceId = UUID.randomUUID().toString() - AAIResourceUri allottedResourceUri = AAIUriFactory.createResourceUri(AAIObjectType.ALLOTTED_RESOURCE, - execution.getVariable("globalSubscriberId"), execution.getVariable("subscriptionServiceType"), - execution.getVariable("sliceserviceInstanceId"), allottedResourceId) + AAIResourceUri allottedResourceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(execution.getVariable("globalSubscriberId")).serviceSubscription(execution.getVariable("subscriptionServiceType")).serviceInstance(execution.getVariable("sliceserviceInstanceId")).allottedResource(allottedResourceId)) execution.setVariable("allottedResourceUri", allottedResourceUri) String modelInvariantId = execution.getVariable("modelInvariantUuid") String modelVersionId = execution.getVariable("modelUuid") @@ -157,7 +155,7 @@ class DoCreateTnNssiInstance extends AbstractServiceTaskProcessor { resource.setModelInvariantId(modelInvariantId) resource.setModelVersionId(modelVersionId) getAAIClient().create(allottedResourceUri, resource) - //AAIResourceUri serviceInstanceUri = AAIUriFactory.createResourceFromExistingURI(AAIObjectType.SERVICE_INSTANCE, UriBuilder.fromPath(ssServiceuri).build()) + //AAIResourceUri serviceInstanceUri = AAIUriFactory.createResourceFromExistingURI(Types.SERVICE_INSTANCE, UriBuilder.fromPath(ssServiceuri).build()) //getAAIClient().connect(allottedResourceUri,ssServiceuri) //execution.setVariable("aaiARPath", allottedResourceUri.build().toString()); @@ -191,7 +189,7 @@ class DoCreateTnNssiInstance extends AbstractServiceTaskProcessor { resource.setModelInvariantId(modelInvariantId) resource.setModelVersionId(modelVersionId) - AAIResourceUri logicalLinkUri = AAIUriFactory.createResourceUri(AAIObjectType.LOGICAL_LINK, logicalLinkId) + AAIResourceUri logicalLinkUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().logicalLink(logicalLinkId)) getAAIClient().create(logicalLinkUri, resource) } } catch (Exception ex) { diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVFCNetworkServiceInstance.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVFCNetworkServiceInstance.groovy index d5469c81a2..8eded75e44 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVFCNetworkServiceInstance.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVFCNetworkServiceInstance.groovy @@ -26,7 +26,9 @@ import org.onap.so.logger.LoggingAnchor import org.onap.so.client.HttpClientFactory import org.onap.aaiclient.client.aai.AAIObjectType import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri -import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory; +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.camunda.bpm.engine.delegate.BpmnError import org.camunda.bpm.engine.delegate.DelegateExecution import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor @@ -228,8 +230,8 @@ public class DoCreateVFCNetworkServiceInstance extends AbstractServiceTaskProces String serviceType = execution.getVariable("serviceType") String serviceId = execution.getVariable("serviceId") - AAIResourceUri nsUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE,globalSubscriberId,serviceType,nsInstanceId) - AAIResourceUri relatedServiceUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE,globalSubscriberId,serviceType,serviceId) + AAIResourceUri nsUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(serviceType).serviceInstance(nsInstanceId)) + AAIResourceUri relatedServiceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(serviceType).serviceInstance(serviceId)) try{ getAAIClient().connect(nsUri,relatedServiceUri) diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModule.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModule.groovy index 366cdfdb09..f19d064c8e 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModule.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModule.groovy @@ -32,6 +32,14 @@ import org.json.JSONArray import org.json.JSONObject import org.onap.aai.domain.yang.GenericVnf import org.onap.aai.domain.yang.NetworkPolicy +import org.onap.aaiclient.client.aai.AAIResourcesClient +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.AAIUriFactory +import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder +import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder.Types +import org.onap.aaiclient.client.graphinventory.entities.uri.Depth import org.onap.logging.filter.base.ErrorCode import org.onap.logging.filter.base.ONAPComponents; import org.onap.so.bpmn.common.scripts.AaiUtil @@ -51,14 +59,6 @@ import org.onap.so.bpmn.core.json.DecomposeJsonUtil import org.onap.so.bpmn.core.json.JsonUtils import org.onap.so.client.HttpClient import org.onap.so.client.HttpClientFactory -import org.onap.aaiclient.client.aai.AAIObjectPlurals -import org.onap.aaiclient.client.aai.AAIObjectType; -import org.onap.aaiclient.client.aai.AAIResourcesClient -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.AAIUriFactory; -import org.onap.aaiclient.client.graphinventory.entities.uri.Depth import org.onap.so.constants.Defaults import org.onap.so.db.catalog.beans.HomingInstance import org.onap.so.logger.LoggingAnchor @@ -303,7 +303,7 @@ public class DoCreateVfModule extends VfModuleBase { } try{ - AAIResourceUri serviceInstanceURI = AAIUriFactory.create(AAIObjectType.SERVICE_INSTANCE, globalSubscriberId,serviceType,serviceInstanceId) + AAIResourceUri serviceInstanceURI = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(serviceType).serviceInstance(serviceInstanceId)) AAIResourcesClient aaiRC = new AAIResourcesClient() AAIResultWrapper aaiRW = aaiRC.get(serviceInstanceURI) Map<String, Object> aaiJson = aaiRW.asMap() @@ -690,7 +690,7 @@ public class DoCreateVfModule extends VfModuleBase { def vfModuleId = execution.getVariable('DCVFM_vfModuleId') AaiUtil aaiUriUtil = new AaiUtil(this) - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId).depth(Depth.ONE) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().genericVnf(vnfId)).depth(Depth.ONE) String endPoint = aaiUriUtil.createAaiUri(uri) try { @@ -774,7 +774,7 @@ public class DoCreateVfModule extends VfModuleBase { def vfModuleName = execution.getVariable('DCVFM_vfModuleName') AaiUtil aaiUriUtil = new AaiUtil(this) - AAIPluralResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectPlurals.VF_MODULE, vnfId).queryParam("vf-module-name",vfModuleName) + AAIPluralResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().genericVnf(vnfId).vfModules()).queryParam("vf-module-name",vfModuleName) String endPoint = aaiUriUtil.createAaiUri(uri) HttpClient client = httpClientFactory.newXmlClient(new URL(endPoint), ONAPComponents.AAI) @@ -909,7 +909,7 @@ public class DoCreateVfModule extends VfModuleBase { String serviceOperation = "" if (element.equals("vnf")) { AAIResourcesClient resourceClient = new AAIResourcesClient() - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, execution.getVariable('DCVFM_vnfId')) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().genericVnf(execution.getVariable('DCVFM_vnfId'))) AAIResultWrapper wrapper = resourceClient.get(uri) Optional<GenericVnf> vnf = wrapper.asBean(GenericVnf.class) @@ -1792,7 +1792,7 @@ public class DoCreateVfModule extends VfModuleBase { // Prepare AA&I url AaiUtil aaiUtil = new AaiUtil(this) - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.CLOUD_REGION, Defaults.CLOUD_OWNER.toString(), cloudRegion) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.cloudInfrastructure().cloudRegion(Defaults.CLOUD_OWNER.toString(), cloudRegion)) def queryCloudRegionRequest = aaiUtil.createAaiUri(uri) execution.setVariable("DCVFM_queryCloudRegionRequest", queryCloudRegionRequest) @@ -1923,7 +1923,7 @@ public class DoCreateVfModule extends VfModuleBase { String fqdn = fqdnList[i] // Query AAI for this network policy FQDN - AAIPluralResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectPlurals.NETWORK_POLICY) + AAIPluralResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().networkPolicies()) uri.queryParam("network-policy-fqdn", fqdn) AAIResourcesClient resourceClient = new AAIResourcesClient() @@ -1944,8 +1944,8 @@ public class DoCreateVfModule extends VfModuleBase { policy.setNetworkPolicyId(networkPolicyId) policy.setNetworkPolicyFqdn(fqdn) policy.setHeatStackId(execution.getVariable("DCVFM_heatStackId")) - - AAIResourceUri netUri = AAIUriFactory.createResourceUri(AAIObjectType.NETWORK_POLICY, networkPolicyId) + + AAIResourceUri netUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().networkPolicy(networkPolicyId)) resourceClient.create(netUri, policy) rollbackData.put("VFMODULE", "rollbackCreateNetworkPoliciesAAI", "true") diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModuleRollback.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModuleRollback.groovy index b3c4698ab8..4b495e314e 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModuleRollback.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModuleRollback.groovy @@ -34,11 +34,12 @@ import org.onap.so.bpmn.common.scripts.MsoUtils import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils import org.onap.so.bpmn.core.UrnPropertiesReader import org.onap.so.bpmn.core.WorkflowException -import org.onap.aaiclient.client.aai.AAIObjectPlurals import org.onap.aaiclient.client.aai.AAIObjectType 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.logger.MessageEnum import org.slf4j.Logger @@ -507,7 +508,7 @@ public class DoCreateVfModuleRollback extends AbstractServiceTaskProcessor{ try { // Query AAI for this network policy FQDN - AAIPluralResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectPlurals.NETWORK_POLICY) + AAIPluralResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().networkPolicies()) uri.queryParam("network-policy-fqdn", fqdn) Optional<NetworkPolicies> networkPolicies = getAAIClient().get(NetworkPolicies.class, uri) @@ -516,7 +517,7 @@ public class DoCreateVfModuleRollback extends AbstractServiceTaskProcessor{ NetworkPolicy networkPolicy = networkPolicies.get().getNetworkPolicy().get(0) try{ - AAIResourceUri delUri = AAIUriFactory.createResourceUri(AAIObjectType.NETWORK_POLICY, networkPolicy.getNetworkPolicyId()) + AAIResourceUri delUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().networkPolicy(networkPolicy.getNetworkPolicyId())) getAAIClient().delete(delUri) execution.setVariable(Prefix + "aaiDeleteNetworkPolicyReturnCode", 200) logger.debug("AAI delete network policy Response Code, NetworkPolicy #" + counting + " : " + 200) diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModuleVolumeRollback.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModuleVolumeRollback.groovy index 80f6e0edb2..0e153b73e6 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModuleVolumeRollback.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModuleVolumeRollback.groovy @@ -23,24 +23,24 @@ package org.onap.so.bpmn.infrastructure.scripts +import javax.ws.rs.NotFoundException import org.camunda.bpm.engine.delegate.DelegateExecution import org.onap.aai.domain.yang.VolumeGroups +import org.onap.aaiclient.client.aai.AAIObjectType +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.so.bpmn.common.scripts.AbstractServiceTaskProcessor import org.onap.so.bpmn.common.scripts.ExceptionUtil import org.onap.so.bpmn.common.scripts.VidUtils import org.onap.so.bpmn.core.RollbackData import org.onap.so.bpmn.core.json.JsonUtils -import org.onap.aaiclient.client.aai.AAIObjectPlurals -import org.onap.aaiclient.client.aai.AAIObjectType -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.so.constants.Defaults import org.slf4j.Logger import org.slf4j.LoggerFactory -import javax.ws.rs.NotFoundException - public class DoCreateVfModuleVolumeRollback extends AbstractServiceTaskProcessor { private static final Logger logger = LoggerFactory.getLogger( DoCreateVfModuleVolumeRollback.class); @@ -133,7 +133,7 @@ public class DoCreateVfModuleVolumeRollback extends AbstractServiceTaskProcessor volumeGroupName = testVolumeGroupName } - AAIPluralResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectPlurals.VOLUME_GROUP, Defaults.CLOUD_OWNER.toString(), cloudRegion).queryParam("volume-group-name", volumeGroupName) + AAIPluralResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.cloudInfrastructure().cloudRegion(Defaults.CLOUD_OWNER.toString(), cloudRegion).volumeGroups()).queryParam("volume-group-name", volumeGroupName) try { Optional<VolumeGroups> volumeGroups = getAAIClient().get(VolumeGroups.class, uri) if (volumeGroups.isPresent()) { @@ -154,7 +154,7 @@ public class DoCreateVfModuleVolumeRollback extends AbstractServiceTaskProcessor String cloudRegion = execution.getVariable("DCVFMODVOLRBK_lcpCloudRegionId") String volumeGroupId = callRESTQueryAAIVolGrpName(execution, cloudRegion) - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.VOLUME_GROUP, Defaults.CLOUD_OWNER.toString(), cloudRegion, volumeGroupId) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.cloudInfrastructure().cloudRegion(Defaults.CLOUD_OWNER.toString(), cloudRegion).volumeGroup(volumeGroupId)) try { getAAIClient().delete(uri) }catch(NotFoundException ignored){ diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModuleVolumeV2.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModuleVolumeV2.groovy index b1d909b6b4..d65f144b3d 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModuleVolumeV2.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModuleVolumeV2.groovy @@ -28,6 +28,12 @@ import org.camunda.bpm.engine.delegate.DelegateExecution import org.onap.aai.domain.yang.GenericVnf import org.onap.aai.domain.yang.VolumeGroup import org.onap.aai.domain.yang.VolumeGroups +import org.onap.aaiclient.client.aai.AAIObjectType +import org.onap.aaiclient.client.aai.AAIResourcesClient +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.so.bpmn.common.scripts.AaiUtil import org.onap.so.bpmn.common.scripts.ExceptionUtil import org.onap.so.bpmn.common.scripts.MsoUtils @@ -36,11 +42,6 @@ import org.onap.so.bpmn.core.RollbackData import org.onap.so.bpmn.core.UrnPropertiesReader import org.onap.so.bpmn.core.WorkflowException import org.onap.so.bpmn.core.json.JsonUtils -import org.onap.aaiclient.client.aai.AAIObjectPlurals -import org.onap.aaiclient.client.aai.AAIObjectType -import org.onap.aaiclient.client.aai.AAIResourcesClient -import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri -import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory import org.onap.so.constants.Defaults import org.onap.so.db.catalog.beans.OrchestrationStatus import org.slf4j.Logger @@ -148,7 +149,7 @@ class DoCreateVfModuleVolumeV2 extends VfModuleBase { String serviceInstanceId = execution.getVariable('serviceInstanceId') AAIResourcesClient resourceClient = new AAIResourcesClient() - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, serviceInstanceId) + AAIResourceUri uri = AAIUriFactory.createResourceUri(Types.SERVICE_INSTANCE.getFragment(serviceInstanceId)) if(!resourceClient.exists(uri)){ (new ExceptionUtil()).buildAndThrowWorkflowException(execution, 2500, "Service instance was not found in aai") @@ -174,7 +175,7 @@ class DoCreateVfModuleVolumeV2 extends VfModuleBase { AaiUtil aaiUtil = new AaiUtil(this) - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.CLOUD_REGION, Defaults.CLOUD_OWNER.toString(), cloudRegion) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.cloudInfrastructure().cloudRegion(Defaults.CLOUD_OWNER.toString(), cloudRegion)) def queryCloudRegionRequest = aaiUtil.createAaiUri(uri) cloudRegion = aaiUtil.getAAICloudReqion(execution, queryCloudRegionRequest, "PO", cloudRegion) @@ -215,7 +216,7 @@ class DoCreateVfModuleVolumeV2 extends VfModuleBase { def cloudRegion = execution.getVariable('lcpCloudRegionId') try { - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectPlurals.VOLUME_GROUP, Defaults.CLOUD_OWNER.toString(), cloudRegion).queryParam("volume-group-name", volumeGroupName) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.cloudInfrastructure().cloudRegion(Defaults.CLOUD_OWNER.toString(), cloudRegion).volumeGroups()).queryParam("volume-group-name", volumeGroupName) Optional<VolumeGroups> volumeGroups = getAAIClient().get(VolumeGroups.class,uri) if(volumeGroups.isPresent()){ VolumeGroup volumeGroup = volumeGroups.get().getVolumeGroup().get(0); @@ -292,9 +293,9 @@ class DoCreateVfModuleVolumeV2 extends VfModuleBase { logger.debug("volumeGroupId to be used: " + volumeGroupId) - AAIResourceUri volumeGroupUri = AAIUriFactory.createResourceUri(AAIObjectType.VOLUME_GROUP, cloudOwner, cloudRegion, volumeGroupId) - AAIResourceUri tenantUri = AAIUriFactory.createResourceUri(AAIObjectType.TENANT, cloudOwner, cloudRegion, tenantId) - AAIResourceUri vnfUri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId) + AAIResourceUri volumeGroupUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.cloudInfrastructure().cloudRegion(cloudOwner, cloudRegion).volumeGroup(volumeGroupId)) + AAIResourceUri tenantUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.cloudInfrastructure().cloudRegion(cloudOwner, cloudRegion).tenant(tenantId)) + AAIResourceUri vnfUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().genericVnf(vnfId)) try { getAAIClient().create(volumeGroupUri, volumeGroup) getAAIClient().connect(volumeGroupUri, vnfUri) @@ -504,7 +505,7 @@ class DoCreateVfModuleVolumeV2 extends VfModuleBase { String cloudOwner = execution.getVariable('cloudOwner') String createVnfAResponse = execution.getVariable(prefix+"createVnfAResponse") def heatStackID = utils.getNodeText(createVnfAResponse, "volumeGroupStackId") - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.VOLUME_GROUP, cloudOwner, cloudRegion, volumeGroupId) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.cloudInfrastructure().cloudRegion(cloudOwner, cloudRegion).volumeGroup(volumeGroupId)) execution.setVariable(prefix+"heatStackId", heatStackID) @@ -534,7 +535,7 @@ class DoCreateVfModuleVolumeV2 extends VfModuleBase { public void callRESTQueryAAIGenericVnf(DelegateExecution execution, isDebugEnabled) { def vnfId = execution.getVariable('vnfId') - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().genericVnf(vnfId)) try { Optional<GenericVnf> genericVnf = getAAIClient().get(GenericVnf.class, uri) if (genericVnf.isPresent()) { diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVnf.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVnf.groovy index 488f2d85ac..1bb5ad1787 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVnf.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVnf.groovy @@ -30,6 +30,7 @@ import org.onap.aaiclient.client.aai.AAIResourcesClient 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.bpmn.common.scripts.AbstractServiceTaskProcessor import org.onap.so.bpmn.common.scripts.ExceptionUtil @@ -109,7 +110,7 @@ class DoCreateVnf extends AbstractServiceTaskProcessor { String vnfName = execution.getVariable("vnfName") if (vnfName.equals("") || vnfName.equals("null")) { AAIResourcesClient resourceClient = new AAIResourcesClient() - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, execution.getVariable("vnfId")) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().genericVnf(execution.getVariable("vnfId"))) if(resourceClient.exists(uri)){ exceptionUtil.buildWorkflowException(execution, 5000, "Generic Vnf Already Exist.") } @@ -281,7 +282,7 @@ class DoCreateVnf extends AbstractServiceTaskProcessor { String serviceInstanceId = execution.getVariable('DoCVNF_serviceInstanceId') AAIResourcesClient resourceClient = new AAIResourcesClient() - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, serviceInstanceId) + AAIResourceUri uri = AAIUriFactory.createResourceUri(Types.SERVICE_INSTANCE.getFragment(serviceInstanceId)) if(resourceClient.exists(uri)){ Map<String, String> keys = uri.getURIKeys() @@ -355,10 +356,10 @@ class DoCreateVnf extends AbstractServiceTaskProcessor { payload.put("nf-naming-code", nfNamingCode); AAIResourcesClient resourceClient = new AAIResourcesClient(); - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().genericVnf(vnfId)) resourceClient.create(uri, payload) - AAIResourceUri siUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, globalCustId, serviceType, serviceInstanceId) + AAIResourceUri siUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalCustId).serviceSubscription(serviceType).serviceInstance(serviceInstanceId)) resourceClient.connect(uri, siUri) }catch(Exception ex) { diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCustomDeleteE2EServiceInstance.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCustomDeleteE2EServiceInstance.groovy index 76629dd1ba..4a555503a3 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCustomDeleteE2EServiceInstance.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCustomDeleteE2EServiceInstance.groovy @@ -52,6 +52,8 @@ import org.w3c.dom.NodeList import org.xml.sax.InputSource 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.aaiclient.client.aai.AAIObjectType import org.onap.aaiclient.client.aai.AAIResourcesClient @@ -453,7 +455,7 @@ public class DoCustomDeleteE2EServiceInstance extends AbstractServiceTaskProcess String serviceInstanceId = execution.getVariable("serviceInstanceId") AAIResourcesClient resourceClient = new AAIResourcesClient() - AAIResourceUri serviceInstanceUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, globalCustId, serviceType, serviceInstanceId) + AAIResourceUri serviceInstanceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalCustId).serviceSubscription(serviceType).serviceInstance(serviceInstanceId)) resourceClient.delete(serviceInstanceUri) logger.trace("Exited deleteServiceInstance") diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCustomDeleteE2EServiceInstanceV2.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCustomDeleteE2EServiceInstanceV2.groovy index 53a98c2ec6..b9a3eab28a 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCustomDeleteE2EServiceInstanceV2.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCustomDeleteE2EServiceInstanceV2.groovy @@ -22,35 +22,32 @@ */ package org.onap.so.bpmn.infrastructure.scripts -import org.onap.so.logger.LoggingAnchor -import org.onap.aai.domain.yang.AllottedResource -import org.onap.logging.filter.base.ErrorCode - -import javax.ws.rs.core.UriBuilder - import static org.apache.commons.lang3.StringUtils.*; - +import javax.ws.rs.NotFoundException +import javax.ws.rs.core.UriBuilder import org.apache.commons.lang3.* import org.camunda.bpm.engine.delegate.BpmnError import org.camunda.bpm.engine.delegate.DelegateExecution import org.json.JSONArray +import org.json.JSONObject +import org.onap.aai.domain.yang.AllottedResource +import org.onap.aaiclient.client.aai.AAIResourcesClient +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 org.onap.logging.filter.base.ErrorCode 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.core.json.JsonUtils import org.onap.so.bpmn.core.UrnPropertiesReader +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 org.onap.aaiclient.client.aai.AAIResourcesClient -import org.onap.aaiclient.client.aai.AAIObjectType -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.json.JSONObject -import javax.ws.rs.NotFoundException import groovy.json.* @@ -174,7 +171,7 @@ public class DoCustomDeleteE2EServiceInstanceV2 extends AbstractServiceTaskProce String serviceType = execution.getVariable('serviceType') AAIResourcesClient resourceClient = new AAIResourcesClient() - AAIResourceUri serviceInstanceUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, globalSubscriberId, serviceType, serviceInstanceId) + AAIResourceUri serviceInstanceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(serviceType).serviceInstance(serviceInstanceId)) AAIResultWrapper wrapper = resourceClient.get(serviceInstanceUri, NotFoundException.class) String json = wrapper.getJson() @@ -582,7 +579,7 @@ public class DoCustomDeleteE2EServiceInstanceV2 extends AbstractServiceTaskProce private Optional<AllottedResource> getAaiAr(DelegateExecution execution, String relink) { def method = getClass().getSimpleName() + '.getAaiAr(' +'execution=' + execution.getId() +')' logger.info("Entered " + method) - AAIResourceUri uri = AAIUriFactory.createResourceFromExistingURI(AAIObjectType.ALLOTTED_RESOURCE, UriBuilder.fromPath(relink).build()) + AAIResourceUri uri = AAIUriFactory.createResourceFromExistingURI(Types.ALLOTTED_RESOURCE, UriBuilder.fromPath(relink).build()) return getAAIClient().get(AllottedResource.class,uri) } /** diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeAllocateAccessNSSI.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeAllocateAccessNSSI.groovy index 2ca0da4cbb..10a559475f 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeAllocateAccessNSSI.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeAllocateAccessNSSI.groovy @@ -33,6 +33,8 @@ import org.onap.aaiclient.client.aai.AAIResourcesClient 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 org.onap.logging.filter.base.ONAPComponents import org.onap.so.beans.nsmf.DeAllocateNssi import org.onap.so.beans.nsmf.EsrInfo @@ -54,6 +56,7 @@ import org.slf4j.LoggerFactory import com.fasterxml.jackson.databind.ObjectMapper import com.google.gson.JsonObject + /** * Internal AN NSSMF to handle NSSI Deallocation */ @@ -274,8 +277,7 @@ class DoDeAllocateAccessNSSI extends AbstractServiceTaskProcessor { String subscriptionServiceType = execution.getVariable("subscriptionServiceType") AAIResourcesClient client = new AAIResourcesClient() - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, - globalSubscriberId, subscriptionServiceType, anNfNssiId) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(subscriptionServiceType).serviceInstance(anNfNssiId)) if (!client.exists(uri)) { logger.debug("AN NF Service Instance was not found in aai : ${anNfNssiId}") }else { @@ -294,8 +296,7 @@ class DoDeAllocateAccessNSSI extends AbstractServiceTaskProcessor { String subscriptionServiceType = execution.getVariable("subscriptionServiceType") AAIResourcesClient client = new AAIResourcesClient() - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, - globalSubscriberId, subscriptionServiceType, anNfNssiId) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(subscriptionServiceType).serviceInstance(anNfNssiId)) if (!client.exists(uri)) { logger.debug("AN NF Service Instance was not found in aai : ${anNfNssiId}") }else { @@ -455,8 +456,7 @@ class DoDeAllocateAccessNSSI extends AbstractServiceTaskProcessor { Map<String,ServiceInstance> relatedInstances = new HashMap<>() AAIResourcesClient client = getAAIClient() - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, - globalSubscriberId, subscriptionServiceType, instanceId) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(subscriptionServiceType).serviceInstance(instanceId)) if (!client.exists(uri)) { exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Service Instance was not found in aai : ${instanceId}") } @@ -470,8 +470,7 @@ class DoDeAllocateAccessNSSI extends AbstractServiceTaskProcessor { String relatioshipurl = relationship.getRelatedLink() String serviceInstanceId = relatioshipurl.substring(relatioshipurl.lastIndexOf("/") + 1, relatioshipurl.length()) - uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, - globalSubscriberId, subscriptionServiceType, serviceInstanceId) + 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: ${serviceInstanceId} related to ${instanceId}") @@ -545,7 +544,7 @@ class DoDeAllocateAccessNSSI extends AbstractServiceTaskProcessor { private void deleteServiceInstanceInAAI(DelegateExecution execution,String instanceId) { try { - AAIResourceUri serviceInstanceUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, execution.getVariable("globalSubscriberId"), execution.getVariable("serviceType"), instanceId) + AAIResourceUri serviceInstanceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(execution.getVariable("globalSubscriberId")).serviceSubscription(execution.getVariable("serviceType")).serviceInstance(instanceId)) getAAIClient().delete(serviceInstanceUri) logger.debug("${Prefix} Exited deleteServiceInstance") }catch(Exception e){ diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeallocateCoreNSSI.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeallocateCoreNSSI.groovy index fcb3b52322..c94e2dd67d 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeallocateCoreNSSI.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeallocateCoreNSSI.groovy @@ -1,3 +1,23 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2020 Telecom Italia + * ================================================================================ + * 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 @@ -12,12 +32,14 @@ import org.onap.aai.domain.yang.GenericVnf import org.onap.aai.domain.yang.ServiceInstance import org.onap.aai.domain.yang.Tenant import org.onap.aai.domain.yang.VfModule -import org.onap.aaiclient.client.aai.AAIObjectType +import org.onap.aaiclient.client.aai.AAIClient import org.onap.aaiclient.client.aai.AAIResourcesClient import org.onap.aaiclient.client.aai.entities.AAIResultWrapper import org.onap.aaiclient.client.aai.entities.Relationships 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.ONAPComponents import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor import org.onap.so.bpmn.common.scripts.ExceptionUtil @@ -30,6 +52,7 @@ import org.onap.so.client.HttpClientFactory import org.onap.so.db.request.beans.OperationStatus import org.onap.so.requestsdb.RequestsDbConstant import org.onap.so.serviceinstancebeans.CloudConfiguration +import org.onap.so.serviceinstancebeans.LineOfBusiness import org.onap.so.serviceinstancebeans.ModelInfo import org.onap.so.serviceinstancebeans.ModelType import org.onap.so.serviceinstancebeans.OwningEntity @@ -47,7 +70,7 @@ import org.slf4j.LoggerFactory import javax.ws.rs.core.Response -class DoDeallocateCoreNSSI extends AbstractServiceTaskProcessor { +class DoDeallocateCoreNSSI extends DoCommonCoreNSSI { private final String PREFIX ="DoDeallocateCoreNSSI" private ExceptionUtil exceptionUtil = new ExceptionUtil() @@ -57,31 +80,13 @@ class DoDeallocateCoreNSSI extends AbstractServiceTaskProcessor { private static final Logger LOGGER = LoggerFactory.getLogger( DoDeallocateCoreNSSI.class) - @Override - void preProcessRequest(DelegateExecution execution) { - LOGGER.trace("${PREFIX} Start preProcessRequest") - - def currentNSSI = execution.getVariable("currentNSSI") - if (!currentNSSI) { - String msg = "currentNSSI is null" - LOGGER.error(msg) - exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) - } - - LOGGER.trace("***** ${PREFIX} Exit preProcessRequest") - } - - - /** +/** * Queries OOF for NSSI termination * @param execution */ void executeTerminateNSSIQuery(DelegateExecution execution) { - // TO DO: Unit test LOGGER.trace("${PREFIX} Start executeTerminateNSSIQuery") - def currentNSSI = execution.getVariable("currentNSSI") - String urlString = UrnPropertiesReader.getVariable("mso.oof.endpoint", execution) //Prepare auth for OOF @@ -89,19 +94,18 @@ class DoDeallocateCoreNSSI extends AbstractServiceTaskProcessor { String basicAuth = UrnPropertiesReader.getVariable("mso.oof.auth", execution) String msokey = UrnPropertiesReader.getVariable("mso.msoKey", execution) - String basicAuthValue = utils.encrypt(basicAuth, msokey) + String basicAuthValue = encryptBasicAuth(basicAuth, msokey) if (basicAuthValue != null) { - 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) - exceptionUtil.buildAndThrowWorkflowException(execution, 401, "Internal Error - Unable to " + - "encode username and password string") + String responseAuthHeader = getAuthHeader(execution, basicAuthValue, msokey) + String errorCode = jsonUtil.getJsonValue(responseAuthHeader, "errorCode") + if(errorCode == null || errorCode.isEmpty()) { // No error + authHeader = responseAuthHeader + } + else { + exceptionUtil.buildAndThrowWorkflowException(execution, Integer.parseInt(errorCode), jsonUtil.getJsonValue(responseAuthHeader, "errorMessage")) } } else { - logger.debug( "Unable to obtain BasicAuth - BasicAuth value null") + LOGGER.error( "Unable to obtain BasicAuth - BasicAuth value null") exceptionUtil.buildAndThrowWorkflowException(execution, 401, "Internal Error - BasicAuth " + "value null") } @@ -109,587 +113,233 @@ class DoDeallocateCoreNSSI extends AbstractServiceTaskProcessor { //Prepare send request to OOF String oofRequest = buildOOFRequest(execution) - URL url = new URL(urlString+"/api/oof/terminate/nxi/v1") - HttpClient httpClient = new HttpClientFactory().newJsonClient(url, ONAPComponents.OOF) - httpClient.addAdditionalHeader("Authorization", authHeader) - httpClient.addAdditionalHeader("Accept", "application/json") - httpClient.addAdditionalHeader("Content-Type", "application/json") - - Response httpResponse = httpClient.post(oofRequest) - - int responseCode = httpResponse.getStatus() - logger.debug("OOF sync response code is: " + responseCode) - - if(responseCode != 202){ // Accepted - exceptionUtil.buildAndThrowWorkflowException(execution, responseCode, "Received a Bad Sync Response from OOF.") - } - - if(httpResponse.hasEntity()){ - String OOFResponse = httpResponse.readEntity(Boolean.class) - String isTerminateNSSI = jsonUtil.getJsonValue(OOFResponse, "terminateResponse") + String callOOFResponse = callOOF(urlString, authHeader, oofRequest) + String errorCode = jsonUtil.getJsonValue(callOOFResponse, "errorCode") + if(errorCode == null || errorCode.isEmpty()) { // No error + String oofResponse = callOOFResponse + String isTerminateNSSI = jsonUtil.getJsonValue(oofResponse, "terminateResponse") execution.setVariable("isTerminateNSSI", Boolean.parseBoolean(isTerminateNSSI)) } - - LOGGER.trace("${PREFIX} Exit executeTerminateNSSIQuery") - } - - - /** - * Builds OOF request - * @param execution - * @return - */ - private String buildOOFRequest(DelegateExecution execution) { - - def currentNSSI = execution.getVariable("currentNSSI") - - String nssiId = currentNSSI['nssiId'] - String requestId = execution.getVariable("mso-request-id") - - String request = "{\n" + - " \"type\": \"NSSI\",\n" + - " \"NxIId\": \"${nssiId}\",\n" + - " \"requestInfo\": {\n" + - " \"transactionId\": \"${requestId}\",\n" + - " \"requestId\": \"${requestId}\",\n" + - " \"sourceId\": \"so\",\n" + - " }\n" + - "}" - - return request - } - - - - /** - * Queries Network Service Instance in AAI - * @param execution - */ - void getNetworkServiceInstance(DelegateExecution execution) { - LOGGER.trace("${PREFIX} Start getNetworkServiceInstance") - - AAIResourcesClient client = getAAIClient() - - def currentNSSI = execution.getVariable("currentNSSI") - - String globalSubscriberId = currentNSSI['globalSubscriberId'] - String serviceType = currentNSSI['serviceType'] - String nssiId = currentNSSI['nssiId'] - - AAIResourceUri nssiUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, nssiId) //AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, globalSubscriberId, serviceType, nssiId) - Optional<ServiceInstance> nssiOpt = client.get(ServiceInstance.class, nssiUri) - - if (nssiOpt.isPresent()) { - ServiceInstance nssi = nssiOpt.get() - currentNSSI['nssi'] = nssi - - ServiceInstance networkServiceInstance = handleNetworkInstance(execution, nssiId, nssiUri, client) - currentNSSI['networkServiceInstance'] = networkServiceInstance - } - else { - String msg = String.format("NSSI %s not found in AAI", nssiId) - LOGGER.error(msg) - exceptionUtil.buildAndThrowWorkflowException(execution, 2500, msg) - } - - LOGGER.trace("${PREFIX} Exit getNetworkServiceInstance") - } - - - /** - * Handles Network Service - * @param nssiId - * @param nssiUri - * @param client - * @return Network Service Instance - */ - private ServiceInstance handleNetworkInstance(DelegateExecution execution, String nssiId, AAIResourceUri nssiUri, AAIResourcesClient client ) { - ServiceInstance networkServiceInstance = null - - def currentNSSI = execution.getVariable("currentNSSI") - - AAIResultWrapper wrapper = client.get(nssiUri) - Optional<Relationships> relationships = wrapper.getRelationships() - - if (relationships.isPresent()) { - for (AAIResourceUri networkServiceInstanceUri : relationships.get().getRelatedAAIUris(AAIObjectType.SERVICE_INSTANCE)) { - Optional<ServiceInstance> networkServiceInstanceOpt = client.get(ServiceInstance.class, networkServiceInstanceUri) - if (networkServiceInstanceOpt.isPresent()) { - networkServiceInstance = networkServiceInstanceOpt.get() - - if (networkServiceInstance.getServiceRole().equals("Network Service")) { // Network Service role - currentNSSI['networkServiceInstanceUri'] = networkServiceInstanceUri - break - } - } - else { - String msg = String.format("No Network Service Instance found for NSSI %s in AAI", nssiId) - LOGGER.error(msg) - exceptionUtil.buildAndThrowWorkflowException(execution, 2500, msg) - } - } - } else { - String msg = String.format("No relationship presented for NSSI %s in AAI", nssiId) - LOGGER.error(msg) - exceptionUtil.buildAndThrowWorkflowException(execution, 2500, msg) + LOGGER.error(jsonUtil.getJsonValue(callOOFResponse, "errorMessage")) + exceptionUtil.buildAndThrowWorkflowException(execution, Integer.parseInt(errorCode), jsonUtil.getJsonValue(callOOFResponse, "errorMessage")) } - if(networkServiceInstance == null) { - String msg = String.format("No Network Service Instance found for NSSI %s in AAI", nssiId) - LOGGER.error(msg) - exceptionUtil.buildAndThrowWorkflowException(execution, 2500, msg) - } - return networkServiceInstance + LOGGER.trace("${PREFIX} Exit executeTerminateNSSIQuery") } /** - * Invokes deleteServiceOrder external API - * @param execution + * Executes sync call to OOF + * @return OOF response */ - void deleteServiceOrder(DelegateExecution execution) { - // TO DO: Unit test - LOGGER.trace("${PREFIX} Start deleteServiceOrder") - - def currentNSSI = execution.getVariable("currentNSSI") + String callOOF(String urlString, String authHeader, String oofRequest) { + String errorCode = "" + String errorMessage = "" + String response = "" try { - //url:/nbi/api/v4/serviceOrder/" - def nbiEndpointUrl = UrnPropertiesReader.getVariable("nbi.endpoint.url", execution) // ??? - - ServiceInstance networkServiceInstance = (ServiceInstance)currentNSSI['networkServiceInstance'] - - String url = String.format("${nbiEndpointUrl}/api/v4/serviceOrder/%s", networkServiceInstance.getServiceInstanceId()) // Service Order ID = Network Service Instance ID ??? - - 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) - - HttpClient httpClient = getHttpClientFactory().newJsonClient(new URL(url), ONAPComponents.EXTERNAL) - httpClient.addAdditionalHeader("Authorization", encodeString) + URL url = new URL(urlString + "/api/oof/terminate/nxi/v1") + HttpClient httpClient = new HttpClientFactory().newJsonClient(url, ONAPComponents.OOF) + httpClient.addAdditionalHeader("Authorization", authHeader) httpClient.addAdditionalHeader("Accept", "application/json") - Response httpResponse = httpClient.delete() // check http code ??? - } catch (any) { - String msg = "Exception in DoDeallocateCoreNSSI.deleteServiceOrder. " + any.getCause() - LOGGER.error(msg) - exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) - } + httpClient.addAdditionalHeader("Content-Type", "application/json") - LOGGER.trace("${PREFIX} Exit deleteServiceOrder") - } + Response httpResponse = httpClient.post(oofRequest) + int responseCode = httpResponse.getStatus() + LOGGER.debug("OOF sync response code is: " + responseCode) - /** - * Queries constitute VNF from Network Service Instance - * @param execution - */ - void getConstituteVNFFromNetworkServiceInst(DelegateExecution execution) { - LOGGER.trace("${PREFIX} Start getConstituteVNFFromNetworkServiceInst") - - def currentNSSI = execution.getVariable("currentNSSI") - - AAIResourcesClient client = getAAIClient() + if (responseCode != 202) { // Accepted + errorCode = responseCode + errorMessage = "Received a Bad Sync Response from OOF." - AAIResourceUri networkServiceInstanceUri = (AAIResourceUri)currentNSSI['networkServiceInstanceUri'] - AAIResultWrapper wrapper = client.get(networkServiceInstanceUri); - Optional<Relationships> relationships = wrapper.getRelationships() - if (relationships.isPresent()) { - for (AAIResourceUri constituteVnfUri : relationships.get().getRelatedAAIUris(AAIObjectType.GENERIC_VNF)) { // ??? - execution.setVariable("constituteVnfUri", constituteVnfUri) - Optional<GenericVnf> constituteVnfOpt = client.get(GenericVnf.class, constituteVnfUri) - if(constituteVnfOpt.isPresent()) { - GenericVnf constituteVnf = constituteVnfOpt.get() - execution.setVariable("constituteVnf", constituteVnf) - } - else { - String msg = String.format("No constitute VNF found for Network Service Instance %s in AAI", ((ServiceInstance)currentNSSI['networkServiceInstance']).getServiceInstanceId()) - LOGGER.error(msg) - exceptionUtil.buildAndThrowWorkflowException(execution, 2500, msg) - } + response = "{\n" + + " \"errorCode\": \"${errorCode}\",\n" + + " \"errorMessage\": \"${errorMessage}\"\n" + + "}" + //exceptionUtil.buildAndThrowWorkflowException(execution, responseCode, "Received a Bad Sync Response from OOF.") + } - break // Should be only one constitute VNF + if (httpResponse.hasEntity()) { + response = httpResponse.readEntity(String.class) + } + else { + errorCode = 500 + errorMessage = "No response received from OOF." + + response = "{\n" + + " \"errorCode\": \"${errorCode}\",\n" + + " \"errorMessage\": \"${errorMessage}\"\n" + + "}" } } - else { - String msg = String.format("No relationship presented for Network Service Instance %s in AAI", ((ServiceInstance)currentNSSI['networkServiceInstance']).getServiceInstanceId()) - LOGGER.error(msg) - exceptionUtil.buildAndThrowWorkflowException(execution, 2500, msg) + catch(Exception e) { + errorCode = 400 + errorMessage = e.getMessage() + + response = "{\n" + + " \"errorCode\": \"${errorCode}\",\n" + + " \"errorMessage\": \"${errorMessage}\"\n" + + "}" } - LOGGER.trace("${PREFIX} Exit getConstituteVNFFromNetworkServiceInst") + return response } - /** - * Retrieves NSSI associated profiles from AAI - * @param execution - */ - void getNSSIAssociatedProfiles(DelegateExecution execution) { - LOGGER.trace("${PREFIX} Start getNSSIAssociatedProfiles") + String encryptBasicAuth(String basicAuth, String msoKey) { + return utils.encrypt(basicAuth, msoKey) + } - def currentNSSI = execution.getVariable("currentNSSI") - ServiceInstance nssi = (ServiceInstance)currentNSSI['nssi'] + String getAuthHeader(DelegateExecution execution, String basicAuthValue, String msokey) { + String response = "" + String errorCode = "" + String errorMessage = "" + + LOGGER.debug("Obtained BasicAuth username and password for OOF: " + basicAuthValue) + try { + response = utils.getBasicAuth(basicAuthValue, msokey) + } catch (Exception ex) { + LOGGER.error("Unable to encode username and password string: ", ex) - List<SliceProfile> associatedProfiles = nssi.getSliceProfiles().getSliceProfile() + errorCode = "401" + errorMessage = "Internal Error - Unable to encode username and password string" - if(associatedProfiles.isEmpty()) { - String msg = String.format("No associated profiles found for NSSI %s in AAI", nssi.getServiceInstanceId()) - LOGGER.error(msg) - exceptionUtil.buildAndThrowWorkflowException(execution, 2500, msg) - } - else { - execution.setVariable("associatedProfiles", associatedProfiles) + response = "{\n" + + " \"errorCode\": \"${errorCode}\",\n" + + " \"errorMessage\": \"${errorMessage}\"\n" + + "}" } - LOGGER.trace("${PREFIX} Exit getNSSIAssociatedProfiles") + return response } + /** - * Calculates a final list of S-NSSAI + * Builds OOF request * @param execution + * @return */ - void calculateSNSSAI(DelegateExecution execution) { - LOGGER.trace("${PREFIX} Start calculateSNSSAI") - - List<SliceProfile> associatedProfiles = (List<SliceProfile>)execution.getVariable("associatedProfiles") + private String buildOOFRequest(DelegateExecution execution) { def currentNSSI = execution.getVariable("currentNSSI") - String currentSNSSAI = currentNSSI['S-NSSAI'] - - List<String> snssais = new ArrayList<>() - - for(SliceProfile associatedProfile:associatedProfiles) { - if(!associatedProfile.getSNssai().equals(currentNSSI)) { // not current S-NSSAI - snssais.add(associatedProfile.getSNssai()) - } - } + String nssiId = currentNSSI['nssiId'] + String requestId = execution.getVariable("mso-request-id") - execution.setVariable("S-NSSAIs", snssais) + String request = "{\n" + + " \"type\": \"NSSI\",\n" + + " \"NxIId\": \"${nssiId}\",\n" + + " \"requestInfo\": {\n" + + " \"transactionId\": \"${requestId}\",\n" + + " \"requestId\": \"${requestId}\",\n" + + " \"sourceId\": \"so\",\n" + + " }\n" + + "}" - LOGGER.trace("${PREFIX} Exit calculateSNSSAI") + return request } + /** - * Invoke PUT Service Instance API + * Invokes deleteServiceOrder external API * @param execution */ - void invokePUTServiceInstance(DelegateExecution execution) { - LOGGER.trace("${PREFIX} Start invokePUTServiceInstance") + void deleteServiceOrder(DelegateExecution execution) { + LOGGER.trace("${PREFIX} Start deleteServiceOrder") def currentNSSI = execution.getVariable("currentNSSI") try { - //url:/onap/so/infra/serviceInstantiation/v7/serviceInstances/{serviceInstanceId}/vnfs/{vnfId}" - def nsmfЕndpoint = UrnPropertiesReader.getVariable("mso.infra.endpoint.url", execution) // ??? + //url:/nbi/api/v4/serviceOrder/" + def nbiEndpointUrl = UrnPropertiesReader.getVariable("nbi.endpoint.url", execution) ServiceInstance networkServiceInstance = (ServiceInstance)currentNSSI['networkServiceInstance'] - GenericVnf constituteVnf = (GenericVnf)execution.getVariable("constituteVnf") - - String url = String.format("${nsmfЕndpoint}/serviceInstantiation/v7/serviceInstances/%s/vnfs/%s", networkServiceInstance.getServiceInstanceId(), constituteVnf.getVnfId()) // ??? + String url = String.format("${nbiEndpointUrl}/api/v4/serviceOrder/%s", networkServiceInstance.getServiceInstanceId()) // Service Order ID = Network Service Instance ID 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) - HttpClient httpClient = getHttpClientFactory().newJsonClient(new URL(url), ONAPComponents.EXTERNAL) - httpClient.addAdditionalHeader("Authorization", encodeString) - httpClient.addAdditionalHeader("Accept", "application/json") + String basicAuthValue = encryptBasicAuth(basicAuth, msoKey) + def authHeader = "" + if (basicAuthValue != null) { + String responseAuthHeader = getAuthHeader(execution, basicAuthValue, msoKey) + String errorCode = jsonUtil.getJsonValue(responseAuthHeader, "errorCode") + if(errorCode == null || errorCode.isEmpty()) { // No error + authHeader = responseAuthHeader + } + else { + exceptionUtil.buildAndThrowWorkflowException(execution, Integer.parseInt(errorCode), jsonUtil.getJsonValue(responseAuthHeader, "errorMessage")) + } + } else { + LOGGER.error( "Unable to obtain BasicAuth - BasicAuth value null") + exceptionUtil.buildAndThrowWorkflowException(execution, 401, "Internal Error - BasicAuth " + + "value null") + } - RequestDetails requestDetails = prepareRequestDetails(execution) - ObjectMapper mapper = new ObjectMapper() - String requestDetailsStr = mapper.writeValueAsString(requestDetails) + String callDeleteServiceOrderResponse = callDeleteServiceOrder(execution, url, authHeader) + String errorCode = jsonUtil.getJsonValue(callDeleteServiceOrderResponse, "errorCode") + String deleteServcieResponse = "" - Response httpResponse = httpClient.put(requestDetailsStr) // check http code ??? + if(errorCode == null || errorCode.isEmpty()) { // No error + deleteServcieResponse = callDeleteServiceOrderResponse // check the response ??? + } + else { + LOGGER.error(jsonUtil.getJsonValue(callDeleteServiceOrderResponse, "errorMessage")) + exceptionUtil.buildAndThrowWorkflowException(execution, Integer.parseInt(errorCode), jsonUtil.getJsonValue(callDeleteServiceOrderResponse, "errorMessage")) + } } catch (any) { String msg = "Exception in DoDeallocateCoreNSSI.deleteServiceOrder. " + any.getCause() LOGGER.error(msg) exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) } - LOGGER.trace("${PREFIX} Exit invokePUTServiceInstance") + LOGGER.trace("${PREFIX} Exit deleteServiceOrder") } - /** - * Prepare model info - * @param execution - * @param requestDetails - * @return - */ - private ModelInfo prepareModelInfo(DelegateExecution execution) { - ModelInfo modelInfo = new ModelInfo() - - modelInfo.setModelType(ModelType.service) - modelInfo.setModelInvariantId(networkServiceInstance.getModelInvariantId()) - - AAIResourceUri modelVerUrl = AAIUriFactory.createResourceUri(AAIObjectType.MODEL_VER, networkServiceInstance.getModelInvariantId()) // model of Network Service Instance ??? - Optional<ModelVer> modelVerOpt = client.get(ModelVer.class, modelVerUrl) - - if (modelVerOpt.isPresent()) { - modelInfo.setModelVersionId(modelVerOpt.get().getModelVersionId()) - modelInfo.setModelName(modelVerOpt.get().getModelName()) - modelInfo.setModelVersion(modelVerOpt.get().getModelVersion()) - } - - - return modelInfo - } - + String callDeleteServiceOrder(DelegateExecution execution, String urlString, String authHeader) { + String errorCode = "" + String errorMessage = "" + String response = "" - /** - * Prepares RequestDetails object - * @param execution - * @return - */ - private RequestDetails prepareRequestDetails(DelegateExecution execution) { - RequestDetails requestDetails = new RequestDetails() - - def currentNSSI = execution.getVariable("currentNSSI") - - String globalSubscriberId = currentNSSI['globalSubscriberId'] - - ServiceInstance networkServiceInstance = (ServiceInstance)currentNSSI['networkServiceInstance'] - - - AAIResourcesClient client = getAAIClient() - - // Model Info - requestDetails.setModelInfo(prepareModelInfo(execution)) - - // Subscriber Info - SubscriberInfo subscriberInfo = new SubscriberInfo() - subscriberInfo.setGlobalSubscriberId(globalSubscriberId) - - Customer customer = null - ServiceSubscription serviceSubscription = null - - AAIResourceUri networkServiceInstanceUri = currentNSSI['networkServiceInstanceUri'] - AAIResultWrapper wrapper = client.get(networkServiceInstanceUri) - Optional<Relationships> serviceSubscriptionRelationshipsOps = wrapper.getRelationships() - if(serviceSubscriptionRelationshipsOps.isPresent()) { - List<AAIResourceUri> serviceSubscriptionRelatedAAIUris = serviceSubscriptionRelationshipsOps.get().getRelatedAAIUris(AAIObjectType.SERVICE_SUBSCRIPTION) - if(!(serviceSubscriptionRelatedAAIUris == null || serviceSubscriptionRelatedAAIUris.isEmpty())) { - AAIResourceUri serviceSubscriptionUri = serviceSubscriptionRelatedAAIUris.get(0) // Many-To-One relation - Optional<ServiceSubscription> serviceSubscriptionOpt = client.get(ServiceSubscription.class, serviceSubscriptionUri) - if(serviceSubscriptionOpt.isPresent()) { - serviceSubscription = serviceSubscriptionOpt.get() - } + try { + HttpClient httpClient = getHttpClientFactory().newJsonClient(new URL(urlString), ONAPComponents.EXTERNAL) + httpClient.addAdditionalHeader("Authorization", authHeader) + httpClient.addAdditionalHeader("Accept", "application/json") + Response httpResponse = httpClient.delete() - wrapper = client.get(serviceSubscriptionUri) - Optional<Relationships> customerRelationshipsOps = wrapper.getRelationships() - if(customerRelationshipsOps.isPresent()) { - List<AAIResourceUri> customerRelatedAAIUris = customerRelationshipsOps.get().getRelatedAAIUris(AAIObjectType.CUSTOMER) - if(!(customerRelatedAAIUris == null || customerRelatedAAIUris.isEmpty())) { - Optional<Customer> customerOpt = client.get(Customer.class, customerRelatedAAIUris.get(0)) // Many-To-One relation - if(customerOpt.isPresent()) { - customer = customerOpt.get() - subscriberInfo.setSubscriberName(customer.getSubscriberName()) - } - } - } + if (httpResponse.hasEntity()) { + response = httpResponse.readEntity(String.class) } - - } - requestDetails.setSubscriberInfo(subscriberInfo) - - // Request Info - RequestInfo requestInfo = new RequestInfo() - requestInfo.setInstanceName(networkServiceInstance.getServiceInstanceName()) - - /* No found data to provide ??? - requestInfo.setSource() - requestInfo.setSuppressRollback() - requestInfo.setRequestorId() - requestInfo.setProductFamilyId() - */ - - requestDetails.setRequestInfo(requestInfo) - - - // Request Parameters - RequestParameters requestParameters = new RequestParameters() - - // No found data to provide ??? requestParameters.setaLaCarte() - requestParameters.setSubscriptionServiceType(serviceSubscription.getServiceType()) - - // User params - List<Map<String, Object>> userParams = new ArrayList<>() - // Service - Service service = new Service() - // Model Info - ModelInfo serviceModelInfo = new ModelInfo() - serviceModelInfo.setModelType(ModelType.service) - serviceModelInfo.setModelInvariantId(networkServiceInstance.getModelInvariantId()) - - serviceModelInfo.setModelVersionId(modelInfo.get().getModelVersionId()) - serviceModelInfo.setModelName(modelInfo.get().getModelName()) - serviceModelInfo.setModelVersion(modelInfo.get().getModelVersion()) - - service.setModelInfo(serviceModelInfo) - - // Resources - Resources resources = new Resources() - - CloudRegion cloudRegion = null - AAIResourceUri cloudRegionRelatedAAIUri = null - // VNFs - List<Vnfs> vnfs = new ArrayList<>() - // VNF - Vnfs vnf = new Vnfs() - - // Cloud configuration - CloudConfiguration cloudConfiguration = new CloudConfiguration() - - AAIResourceUri constituteVnfUri = (AAIResourceUri)execution.getVariable("constituteVnfUri") - wrapper = client.get(constituteVnfUri) - Optional<Relationships> constituteVnfOps = wrapper.getRelationships() - if(constituteVnfOps.isPresent()) { - List<AAIResourceUri> cloudRegionRelatedAAIUris = serviceSubscriptionRelationshipsOps.get().getRelatedAAIUris(AAIObjectType.CLOUD_REGION) - if(!(cloudRegionRelatedAAIUris == null || cloudRegionRelatedAAIUris.isEmpty())) { - cloudRegionRelatedAAIUri = cloudRegionRelatedAAIUris.get(0) - Optional<CloudRegion> cloudRegionrOpt = client.get(CloudRegion.class, cloudRegionRelatedAAIUris.get(0)) - if(cloudRegionrOpt.isPresent()) { - cloudRegion = cloudRegionrOpt.get() - cloudConfiguration.setLcpCloudRegionId(cloudRegion.getCloudRegionId()) - for(Tenant tenant:cloudRegion.getTenants()) { - cloudConfiguration.setTenantId(tenant.getTenantId()) - break // only one is required - } - - cloudConfiguration.setCloudOwner(cloudRegion.getCloudOwner()) - } - } - } - - vnf.setCloudConfiguration(cloudConfiguration) - - // VF Modules - GenericVnf constituteVnf = execution.getVariable("constituteVnf") - List<VfModules> vfModuless = new ArrayList<>() - for(VfModule vfModule:constituteVnf.getVfModules()) { - VfModules vfmodules = new VfModules() - - ModelInfo vfModuleModelInfo = new ModelInfo() - vfModuleModelInfo.setModelInvariantUuid(vfModule.getModelInvariantId()) - - AAIResourceUri vfModuleUrl = AAIUriFactory.createResourceUri(AAIObjectType.MODEL_VER, vfModule.getModelInvariantId()) // ??? - Optional<ModelVer> vfModuleModelVerOpt = client.get(ModelVer.class, vfModuleUrl) - - if (vfModuleModelVerOpt.isPresent()) { - vfModuleModelInfo.setModelVersionId(vfModuleModelVerOpt.get().getModelVersionId()) - vfModuleModelInfo.setModelName(vfModuleModelVerOpt.get().getModelName()) - vfModuleModelInfo.setModelVersion(vfModuleModelVerOpt.get().getModelVersion()) - - // No model customization ID - } - vfmodules.setModelInfo(vfModuleModelInfo) - - vfmodules.setInstanceName(vfModule.getVfModuleName()) // ??? - - vfModuless.add(vfmodules) - } - vnf.setVfModules(vfModuless) - - // Model Info - ModelInfo vnfModelInfo = new ModelInfo() - vnfModelInfo.setModelInvariantUuid(constituteVnf.getModelInvariantId()) - AAIResourceUri vnfModelUrl = AAIUriFactory.createResourceUri(AAIObjectType.MODEL_VER, constituteVnf.getModelInvariantId()) // ??? - Optional<ModelVer> vnfModelVerOpt = client.get(ModelVer.class, vnfModelUrl) - - if (vnfModelVerOpt.isPresent()) { - vnfModelInfo.setModelVersionId(vnfModelVerOpt.get().getModelVersionId()) - vnfModelInfo.setModelName(vnfModelVerOpt.get().getModelName()) - vnfModelInfo.setModelVersion(vnfModelVerOpt.get().getModelVersion()) - - // No model customization ID - // No model instance name - } - - vnf.setModelInfo(vnfModelInfo) - - // Instance name - vnf.setInstanceName(constituteVnf.getVnfInstanceId()) - - // Instance params - List<Map<String, Object>> instanceParams = new ArrayList<>() - Map<String, Object> supporrtedNSSAIMap = new HashMap<>() - - // Supported S-NSSAI - List<String> snssais = ( List<String>)execution.getVariable("S-NSSAIs") - supporrtedNSSAIMap.put("supporrtedNSSAI", snssais) // remaining S-NSSAIs ??? there is no status for each s-nssai - instanceParams.add(supporrtedNSSAIMap) - - // No other instance params, e.g. config-type - - vnf.setInstanceParams(instanceParams) - - // No platform data - - vnfs.add(vnf) - resources.setVnfs(vnfs) - - service.setResources(resources) - - Map<String, Object> serviceMap = new HashMap<>() - serviceMap.put("service", service) - userParams.add(serviceMap) - requestParameters.setUserParams(userParams) - - // No other user params - - requestDetails.setRequestParameters(requestParameters) - - // No other request params - - // Cloud configuration - requestDetails.setCloudConfiguration(cloudConfiguration) - - // Owning entity - OwningEntity owningEntity = new OwningEntity() - wrapper = client.get(networkServiceInstanceUri) - Optional<Relationships> owningEntityRelationshipsOps = wrapper.getRelationships() - if(owningEntityRelationshipsOps.isPresent()) { - List<AAIResourceUri> owningEntityRelatedAAIUris = owningEntityRelationshipsOps.get().getRelatedAAIUris(AAIObjectType.OWNING_ENTITY) - - if(!(owningEntityRelatedAAIUris == null || owningEntityRelatedAAIUris.isEmpty())) { - Optional<org.onap.aai.domain.yang.OwningEntity> owningEntityOpt = client.get(org.onap.aai.domain.yang.OwningEntity.class, owningEntityRelatedAAIUris.get(0)) // Many-To-One relation - if(owningEntityOpt.isPresent()) { - owningEntity.setOwningEntityId(owningEntityOpt.get().getOwningEntityId()) - owningEntity.setOwningEntityName(owningEntityOpt.get().getOwningEntityName()) - requestDetails.setOwningEntity(owningEntity) - } + else { + errorCode = 500 + errorMessage = "No response received." + + response = "{\n" + + " \"errorCode\": \"${errorCode}\",\n" + + " \"errorMessage\": \"${errorMessage}\"\n" + + "}" } } + catch (any) { + String msg = "Exception in DoDeallocateCoreNSSI.deleteServiceOrder. " + any.getCause() - // Project - Project project = new Project() - if(cloudRegionRelatedAAIUri != null) { - wrapper = client.get(cloudRegionRelatedAAIUri) - Optional<Relationships> cloudRegionOps = wrapper.getRelationships() - if(cloudRegionOps.isPresent()) { - List<AAIResourceUri> projectAAIUris = cloudRegionOps.get().getRelatedAAIUris(AAIObjectType.PROJECT) - if (!(projectAAIUris == null || projectAAIUris.isEmpty())) { - Optional<org.onap.aai.domain.yang.Project> projectOpt = client.get(org.onap.aai.domain.yang.Project.class, projectAAIUris.get(0)) - if(projectOpt.isPresent()) { - project.setProjectName(projectOpt.get().getProjectName()) - } - } - } + response = "{\n" + + " \"errorCode\": \"7000\",\n" + + " \"errorMessage\": \"${msg}\"\n" + + "}" } - requestDetails.setProject(project) - return requestDetails + return response } @@ -704,14 +354,14 @@ class DoDeallocateCoreNSSI extends AbstractServiceTaskProcessor { def currentNSSI = execution.getVariable("currentNSSI") - String nssiId = currentNSSI['nssiServiceInstanceId'] + String nssiId = currentNSSI['nssiId'] String nsiId = currentNSSI['nsiId'] - AAIResourceUri nssiUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, nssiId) - AAIResourceUri nsiUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, nsiId) + AAIResourceUri nssiUri = AAIUriFactory.createResourceUri(Types.SERVICE_INSTANCE.getFragment(nssiId)) + AAIResourceUri nsiUri = AAIUriFactory.createResourceUri(Types.SERVICE_INSTANCE.getFragment(nsiId)) try { - getAAIClient().disconnect(nssiUri, nsiUri) + client.disconnect(nssiUri, nsiUri) }catch(Exception e){ exceptionUtil.buildAndThrowWorkflowException(execution, 25000, "Exception occured while NSSI association with NSI disconnect call: " + e.getMessage()) } @@ -721,74 +371,6 @@ class DoDeallocateCoreNSSI extends AbstractServiceTaskProcessor { /** - * Removes Slice Profile association with NSSI - * @param execution - */ - void removeSPAssociationWithNSSI(DelegateExecution execution) { - LOGGER.trace("${PREFIX} Start removeSPAssociationWithNSSI") - - AAIResourcesClient client = getAAIClient() - - def currentNSSI = execution.getVariable("currentNSSI") - - ServiceInstance nssi = (ServiceInstance)currentNSSI['nssi'] - - String nssiId = currentNSSI['nssiServiceInstanceId'] - AAIResourceUri nssiUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, nssiId) - - List<SliceProfile> associatedProfiles = nssi.getSliceProfiles().getSliceProfile() - - String currentSNSSAI = currentNSSI['S-NSSAI'] - - associatedProfiles.removeIf({ associatedProfile -> (associatedProfile.getSNssai().equals(currentSNSSAI)) }) - - try { - getAAIClient().update(nssiUri, nssi) - }catch(Exception e){ - exceptionUtil.buildAndThrowWorkflowException(execution, 25000, "Exception occured while Slice Profile association with NSSI update call: " + e.getMessage()) - } - - LOGGER.trace("${PREFIX} Exit removeSPAssociationWithNSSI") - } - - - /** - * Deletes Slice Profile Instance - * @param execution - */ - void deleteSliceProfileInstance(DelegateExecution execution) { - LOGGER.trace("${PREFIX} Start deleteSliceProfileInstance") - - AAIResourcesClient client = getAAIClient() - - def currentNSSI = execution.getVariable("currentNSSI") - - ServiceInstance nssi = (ServiceInstance)currentNSSI['nssi'] - - List<SliceProfile> associatedProfiles = nssi.getSliceProfiles().getSliceProfile() - - String currentSNSSAI = currentNSSI['S-NSSAI'] - - AAIResourceUri sliceProfileUri = null - - for(SliceProfile associatedProfile:associatedProfiles) { - if(!associatedProfile.getSNssai().equals(currentNSSI)) { // not current S-NSSAI - sliceProfileUri = AAIUriFactory.createResourceUri(AAIObjectType.SLICE_PROFILE, associatedProfile.getProfileId()) - break - } - } - - try { - getAAIClient().delete(sliceProfileUri) - }catch(Exception e){ - exceptionUtil.buildAndThrowWorkflowException(execution, 25000, "Exception occured while Slice Profile Instance delete call: " + e.getMessage()) - } - - LOGGER.trace("${PREFIX} Exit deleteSliceProfileInstance") - } - - - /** * Delets NSSI Service Instance * @param execution */ @@ -799,8 +381,8 @@ class DoDeallocateCoreNSSI extends AbstractServiceTaskProcessor { def currentNSSI = execution.getVariable("currentNSSI") - String nssiId = currentNSSI['nssiServiceInstanceId'] - AAIResourceUri nssiUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, nssiId) + String nssiId = currentNSSI['nssiId'] + AAIResourceUri nssiUri = AAIUriFactory.createResourceUri(Types.SERVICE_INSTANCE.getFragment(nssiId)) try { getAAIClient().delete(nssiUri) @@ -812,33 +394,10 @@ class DoDeallocateCoreNSSI extends AbstractServiceTaskProcessor { } - /** - * Updates operation status - * @param execution - */ - void updateServiceOperationStatus(DelegateExecution execution) { - LOGGER.trace("${PREFIX} Start updateServiceOperationStatus") - - def currentNSSI = execution.getVariable("currentNSSI") - - OperationStatus operationStatus = new OperationStatus() - operationStatus.setServiceId(currentNSSI['e2eServiceInstanceId'] as String) - operationStatus.setOperationId(currentNSSI['operationId'] as String) - operationStatus.setOperation(currentNSSI['operationType'] as String) - operationStatus.setResult(RequestsDbConstant.Status.FINISHED) - - requestDBUtil.prepareUpdateOperationStatus(execution, operationStatus) - - LOGGER.trace("${PREFIX} Exit updateServiceOperationStatus") - } - - /** - * Returns AAI client - * @return AAI client - */ - AAIResourcesClient getAAIClient() { - return new AAIResourcesClient() + @Override + String getPrefix() { + return PREFIX } } 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 0c795b3bd1..9d6c4a1b2a 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 @@ -19,34 +19,26 @@ */ package org.onap.so.bpmn.infrastructure.scripts -import com.fasterxml.jackson.databind.ObjectMapper import org.camunda.bpm.engine.delegate.DelegateExecution -import org.onap.logging.filter.base.ONAPComponents +import org.json.JSONObject +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.so.beans.nsmf.DeAllocateNssi -import org.onap.so.beans.nsmf.ServiceInfo import org.onap.so.beans.nsmf.EsrInfo -import org.onap.so.beans.nsmf.JobStatusRequest -import org.onap.so.beans.nsmf.JobStatusResponse import org.onap.so.beans.nsmf.NetworkType -import org.onap.so.beans.nsmf.NssiDeAllocateRequest import org.onap.so.beans.nsmf.NssiResponse +import org.onap.so.beans.nsmf.ServiceInfo 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.UrnPropertiesReader 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.client.HttpClient -import org.onap.aaiclient.client.aai.AAIObjectType -import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri -import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory import org.onap.so.db.request.beans.OperationStatus import org.slf4j.Logger import org.slf4j.LoggerFactory -import org.json.JSONObject -import javax.ws.rs.core.Response class DoDeallocateNSSI extends AbstractServiceTaskProcessor @@ -322,7 +314,8 @@ class DoDeallocateNSSI extends AbstractServiceTaskProcessor try { LOGGER.debug("delete nssiServiceInstanceId:${nssiServiceInstanceId}, profileId:${profileId}") - AAIResourceUri resourceUri = AAIUriFactory.createResourceUri(AAIObjectType.SLICE_PROFILE, globalSubscriberId, serviceType, nssiServiceInstanceId, profileId) + AAIResourceUri resourceUri = AAIUriFactory.createResourceUri( + AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(serviceType).serviceInstance(nssiServiceInstanceId).sliceProfile(profileId)) if (!getAAIClient().exists(resourceUri)) { exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Service Instance was not found in aai") } diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeallocateTnNssi.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeallocateTnNssi.groovy index 7681bf9346..a410b93d16 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeallocateTnNssi.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeallocateTnNssi.groovy @@ -29,6 +29,8 @@ import org.onap.aaiclient.client.aai.AAIObjectType import org.onap.aaiclient.client.aai.AAIResourcesClient 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.so.bpmn.common.scripts.AbstractServiceTaskProcessor import org.onap.so.bpmn.common.scripts.ExceptionUtil import org.onap.so.bpmn.common.scripts.RequestDBUtil @@ -111,10 +113,7 @@ class DoDeallocateTnNssi extends AbstractServiceTaskProcessor { void deleteServiceInstance(DelegateExecution execution) { try { AAIResourcesClient client = getAAIClient() - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, - execution.getVariable("globalSubscriberId"), - execution.getVariable("subscriptionServiceType"), - execution.getVariable("serviceInstanceID")) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(execution.getVariable("globalSubscriberId")).serviceSubscription(execution.getVariable("subscriptionServiceType")).serviceInstance(execution.getVariable("serviceInstanceID"))) client.delete(uri) } catch (BpmnError e) { throw e @@ -134,7 +133,7 @@ class DoDeallocateTnNssi extends AbstractServiceTaskProcessor { ServiceInstance si = new ServiceInstance() si.setOrchestrationStatus(orchStatus) AAIResourcesClient client = getAAIClient() - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, tnNssiId) + AAIResourceUri uri = AAIUriFactory.createResourceUri(Types.SERVICE_INSTANCE.getFragment(tnNssiId)) client.update(uri, si) } catch (BpmnError e) { throw e diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteE2EServiceInstance.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteE2EServiceInstance.groovy index 0a7753e9e5..ef94ff1d16 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteE2EServiceInstance.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteE2EServiceInstance.groovy @@ -52,6 +52,8 @@ import org.onap.aaiclient.client.aai.AAIResourcesClient 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 org.slf4j.Logger import org.slf4j.LoggerFactory import org.onap.logging.filter.base.ONAPComponents; @@ -176,7 +178,7 @@ public class DoDeleteE2EServiceInstance extends AbstractServiceTaskProcessor { String globalSubscriberId = execution.getVariable('globalSubscriberId') String serviceType = execution.getVariable('serviceType') AAIResourcesClient resourceClient = new AAIResourcesClient() - AAIResourceUri serviceInstanceUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, globalSubscriberId, serviceType, serviceInstanceId) + AAIResourceUri serviceInstanceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(serviceType).serviceInstance(serviceInstanceId)) if (!resourceClient.exists(serviceInstanceUri)) { exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Service Instance was not found in aai") } @@ -658,7 +660,7 @@ public class DoDeleteE2EServiceInstance extends AbstractServiceTaskProcessor { String serviceInstanceId = execution.getVariable("serviceInstanceId") AAIResourcesClient resourceClient = new AAIResourcesClient() - AAIResourceUri serviceInstanceUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, globalCustId, serviceType, serviceInstanceId) + AAIResourceUri serviceInstanceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalCustId).serviceSubscription(serviceType).serviceInstance(serviceInstanceId)) resourceClient.delete(serviceInstanceUri) logger.trace("Exited deleteServiceInstance") diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteNetworkInstance.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteNetworkInstance.groovy index bee9ad260b..02200284df 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteNetworkInstance.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteNetworkInstance.groovy @@ -32,6 +32,7 @@ import org.onap.aaiclient.client.aai.entities.Relationships 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.aaiclient.client.graphinventory.entities.uri.Depth import org.onap.logging.filter.base.ErrorCode import org.onap.logging.filter.base.ONAPComponents; @@ -256,7 +257,7 @@ public class DoDeleteNetworkInstance extends AbstractServiceTaskProcessor { ExceptionUtil exceptionUtil = new ExceptionUtil() Boolean isVfRelationshipExist = false try { - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.L3_NETWORK, networkId).depth(Depth.ALL) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().l3Network(networkId)).depth(Depth.ALL) Optional<L3Network> l3Network = getAAIClient().get(L3Network.class,uri); AAIResultWrapper wrapper = getAAIClient().get(uri); Optional<Relationships> relationships = wrapper.getRelationships() @@ -266,13 +267,13 @@ public class DoDeleteNetworkInstance extends AbstractServiceTaskProcessor { execution.setVariable(Prefix + "queryAAIResponse", l3Network.get()) execution.setVariable(Prefix + "isAAIGood", true) if (relationships.isPresent()){ - if(!relationships.get().getRelatedAAIUris(AAIObjectType.VF_MODULE).isEmpty()){ + if(!relationships.get().getRelatedUris(Types.VF_MODULE).isEmpty()){ execution.setVariable(Prefix + "isVfRelationshipExist", true) isVfRelationshipExist = true String relationshipMessage = "AAI Query Success Response but 'vf-module' relationship exist, not allowed to delete: network Id: " + networkId exceptionUtil.buildWorkflowException(execution, 2500, relationshipMessage) }else{ - List<AAIResourceUri> tenantURIList = relationships.get().getRelatedAAIUris(AAIObjectType.TENANT) + List<AAIResourceUri> tenantURIList = relationships.get().getRelatedUris(Types.TENANT) for(AAIResourceUri tenantURI: tenantURIList){ if(execution.getVariable(Prefix + "tenantId") == null) { String tenantId = tenantURI.getURIKeys().get(AAIFluentTypeBuilder.Types.TENANT.getUriParams().tenantId) @@ -280,7 +281,7 @@ public class DoDeleteNetworkInstance extends AbstractServiceTaskProcessor { logger.debug(" Get AAI getTenantId() : " + tenantId) } } - List<AAIResourceUri> cloudRegionURIList = relationships.get().getRelatedAAIUris(AAIObjectType.CLOUD_REGION) + List<AAIResourceUri> cloudRegionURIList = relationships.get().getRelatedUris(Types.CLOUD_REGION) for(AAIResourceUri tenantURI: cloudRegionURIList){ if(execution.getVariable(Prefix + "lcpCloudRegion") == null) { String lcpCloudRegion = tenantURI.getURIKeys().get(AAIFluentTypeBuilder.Types.CLOUD_REGION.getUriParams().cloudRegionId) @@ -322,7 +323,7 @@ public class DoDeleteNetworkInstance extends AbstractServiceTaskProcessor { // Prepare AA&I url AaiUtil aaiUtil = new AaiUtil(this) - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.CLOUD_REGION, Defaults.CLOUD_OWNER.toString(), cloudRegion) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.cloudInfrastructure().cloudRegion(Defaults.CLOUD_OWNER.toString(), cloudRegion)) def queryCloudRegionRequest = aaiUtil.createAaiUri(uri) execution.setVariable(Prefix + "queryCloudRegionRequest", queryCloudRegionRequest) diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteServiceInstance.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteServiceInstance.groovy index cda7c321ac..85cbf32989 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteServiceInstance.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteServiceInstance.groovy @@ -32,6 +32,7 @@ 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 org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor import org.onap.so.bpmn.common.scripts.ExceptionUtil import org.onap.so.bpmn.common.scripts.MsoUtils @@ -285,7 +286,7 @@ public class DoDeleteServiceInstance extends AbstractServiceTaskProcessor { String serviceInstanceId = execution.getVariable('serviceInstanceId') AAIResourcesClient resourceClient = new AAIResourcesClient() - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, serviceInstanceId) + AAIResourceUri uri = AAIUriFactory.createResourceUri(Types.SERVICE_INSTANCE.getFragment(serviceInstanceId)) if(resourceClient.exists(uri)){ execution.setVariable("GENGS_FoundIndicator", true) @@ -307,9 +308,9 @@ public class DoDeleteServiceInstance extends AbstractServiceTaskProcessor { AAIResultWrapper wrapper = resourceClient.get(uri) if(wrapper.getRelationships().isPresent()){ - List<AAIResourceUri> uriList = wrapper.getRelationships().get().getRelatedAAIUris(AAIObjectType.ALLOTTED_RESOURCE) - uriList.addAll(wrapper.getRelationships().get().getRelatedAAIUris(AAIObjectType.GENERIC_VNF)) - uriList.addAll(wrapper.getRelationships().get().getRelatedAAIUris(AAIObjectType.L3_NETWORK)) + List<AAIResourceUri> uriList = wrapper.getRelationships().get().getRelatedUris(Types.ALLOTTED_RESOURCE) + uriList.addAll(wrapper.getRelationships().get().getRelatedUris(Types.GENERIC_VNF)) + uriList.addAll(wrapper.getRelationships().get().getRelatedUris(Types.L3_NETWORK)) if(uriList.isEmpty()){ Optional<ServiceInstance> si = wrapper.asBean(ServiceInstance.class) @@ -372,7 +373,7 @@ public class DoDeleteServiceInstance extends AbstractServiceTaskProcessor { String serviceInstanceId = execution.getVariable("serviceInstanceId") AAIResourcesClient resourceClient = new AAIResourcesClient(); - AAIResourceUri serviceInstanceUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, globalCustId, serviceType, serviceInstanceId) + AAIResourceUri serviceInstanceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalCustId).serviceSubscription(serviceType).serviceInstance(serviceInstanceId)) resourceClient.delete(serviceInstanceUri) logger.trace("Exited deleteServiceInstance") 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 2f78c3d551..c4321220fd 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 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 @@ -27,21 +30,20 @@ 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.AAIUriFactory +import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder +import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder.Types +import org.onap.logging.filter.base.ONAPComponents import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor import org.onap.so.bpmn.common.scripts.ExceptionUtil import org.onap.so.bpmn.common.scripts.OofUtils -import org.onap.aaiclient.client.aai.AAIObjectType -import org.onap.aaiclient.client.aai.entities.AAIResultWrapper -import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri +import org.onap.so.bpmn.core.UrnPropertiesReader import org.onap.so.client.HttpClient import org.onap.so.client.HttpClientFactory -import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory import org.slf4j.Logger import org.slf4j.LoggerFactory -import javax.ws.rs.core.Response -import javax.ws.rs.NotFoundException - -import static org.apache.commons.lang3.StringUtils.isBlank /** * This groovy class supports the <class>DoDeleteSliceService.bpmn</class> process. @@ -104,7 +106,7 @@ class DoDeleteSliceService extends AbstractServiceTaskProcessor { try { String errorMsg = "query e2e slice service from aai failed" - AAIResultWrapper wrapper = queryAAI(execution, AAIObjectType.SERVICE_INSTANCE, serviceInstanceId, errorMsg) + AAIResultWrapper wrapper = queryAAI(execution, Types.SERVICE_INSTANCE, serviceInstanceId, errorMsg) Optional<ServiceInstance> si =wrapper.asBean(ServiceInstance.class) if(si.isPresent()) { @@ -121,7 +123,7 @@ class DoDeleteSliceService extends AbstractServiceTaskProcessor { if (relatedTo.toLowerCase() == "service-instance") { String relatioshipurl = relationship.getRelatedLink() String instanceId = relatioshipurl.substring(relatioshipurl.lastIndexOf("/") + 1, relatioshipurl.length()) - AAIResultWrapper wrapper1 = queryAAI(execution, AAIObjectType.SERVICE_INSTANCE, instanceId, errorMsg) + AAIResultWrapper wrapper1 = queryAAI(execution, Types.SERVICE_INSTANCE, instanceId, errorMsg) Optional<ServiceInstance> serviceInstance = wrapper1.asBean(ServiceInstance.class) if (serviceInstance.isPresent()) { ServiceInstance instance = serviceInstance.get() @@ -156,7 +158,7 @@ class DoDeleteSliceService extends AbstractServiceTaskProcessor { try { String errorMsg = "query allotted resource from aai failed." - AAIResultWrapper wrapper = queryAAI(execution, AAIObjectType.ALLOTTED_RESOURCE_ALL, serviceInstanceId, errorMsg) + AAIResultWrapper wrapper = queryAAI(execution, Types.ALLOTTED_RESOURCES, serviceInstanceId, errorMsg) Optional<AllottedResources> ars = wrapper?.asBean(AllottedResources.class) if(ars.isPresent() && ars.get().getAllottedResource()) { @@ -191,7 +193,7 @@ class DoDeleteSliceService extends AbstractServiceTaskProcessor { try { String errorMsg = "query nsi from aai failed." - AAIResultWrapper wrapper = queryAAI(execution, AAIObjectType.SERVICE_INSTANCE, nsiId, errorMsg) + AAIResultWrapper wrapper = queryAAI(execution, Types.SERVICE_INSTANCE, nsiId, errorMsg) Optional<ServiceInstance> si =wrapper.asBean(ServiceInstance.class) List<String> nssiIdList = [] String msg = "nsiId:${nsiId},nssiIdList:" @@ -205,7 +207,7 @@ class DoDeleteSliceService extends AbstractServiceTaskProcessor { { String relatedLink = relationship.getRelatedLink()?:"" String instanceId = relatedLink ? relatedLink.substring(relatedLink.lastIndexOf("/") + 1,relatedLink.length()) : "" - AAIResultWrapper wrapper1 = queryAAI(execution, AAIObjectType.SERVICE_INSTANCE, instanceId, errorMsg) + AAIResultWrapper wrapper1 = queryAAI(execution, Types.SERVICE_INSTANCE, instanceId, errorMsg) Optional<ServiceInstance> serviceInstance = wrapper1.asBean(ServiceInstance.class) if (serviceInstance.isPresent()) { ServiceInstance instance = serviceInstance.get() @@ -245,7 +247,7 @@ class DoDeleteSliceService extends AbstractServiceTaskProcessor { String errorMsg = "query nssi list from aai failed" for(String nssiId : nssiIdList) { - AAIResultWrapper wrapper = queryAAI(execution, AAIObjectType.SERVICE_INSTANCE, nssiId, errorMsg) + AAIResultWrapper wrapper = queryAAI(execution, Types.SERVICE_INSTANCE, nssiId, errorMsg) Optional<ServiceInstance> si =wrapper.asBean(ServiceInstance.class) if(si.isPresent()) { @@ -329,21 +331,30 @@ class DoDeleteSliceService extends AbstractServiceTaskProcessor { /** * query AAI * @param execution - * @param aaiObjectType + * @param aaiObjectName * @param instanceId * @return AAIResultWrapper */ - private AAIResultWrapper queryAAI(DelegateExecution execution, AAIObjectType aaiObjectType, String instanceId, String errorMsg) + private AAIResultWrapper queryAAI(DelegateExecution execution, AAIObjectName aaiObjectName, String instanceId, String errorMsg) { LOGGER.trace(" *****${PREFIX} Start queryAAI *****") String globalSubscriberId = execution.getVariable("globalSubscriberId") String serviceType = execution.getVariable("serviceType") - AAIResourceUri resourceUri = AAIUriFactory.createResourceUri(aaiObjectType, globalSubscriberId, serviceType, instanceId) - if (!getAAIClient().exists(resourceUri)) { + org.onap.aaiclient.client.generated.fluentbuilders.ServiceInstance serviceInstanceType = AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(serviceType).serviceInstance(instanceId) + def type + if (aaiObjectName == Types.ALLOTTED_RESOURCES) { + type = serviceInstanceType.allottedResources() + } else if (aaiObjectName == Types.SLICE_PROFILES) { + type = serviceInstanceType.sliceProfiles() + } else { + type = serviceInstanceType + } + def uri = AAIUriFactory.createResourceUri(type) + if (!getAAIClient().exists(uri)) { exceptionUtil.buildAndThrowWorkflowException(execution, 2500, errorMsg) } - AAIResultWrapper wrapper = getAAIClient().get(resourceUri, NotFoundException.class) + AAIResultWrapper wrapper = getAAIClient().get(uri, NotFoundException.class) LOGGER.trace(" *****${PREFIX} Exit queryAAI *****") return wrapper } diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVFCNetworkServiceInstance.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVFCNetworkServiceInstance.groovy index 42f4cb7bd7..1ec11c67e9 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVFCNetworkServiceInstance.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVFCNetworkServiceInstance.groovy @@ -32,6 +32,8 @@ import org.onap.so.client.HttpClientFactory import org.onap.aaiclient.client.aai.AAIObjectType 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.slf4j.Logger import org.slf4j.LoggerFactory import org.onap.logging.filter.base.ONAPComponents; @@ -121,8 +123,8 @@ public class DoDeleteVFCNetworkServiceInstance extends AbstractServiceTaskProces String globalSubscriberId = execution.getVariable("globalSubscriberId") String serviceType = execution.getVariable("serviceType") String serviceId = execution.getVariable("serviceId") - AAIResourceUri serviceInstanceUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, globalSubscriberId, serviceType, serviceId) - AAIResourceUri nsServiceInstanceUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, globalSubscriberId, serviceType, nsInstanceId) + AAIResourceUri serviceInstanceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(serviceType).serviceInstance(serviceId)) + AAIResourceUri nsServiceInstanceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(serviceType).serviceInstance(nsInstanceId)) try { getAAIClient().disconnect(serviceInstanceUri, nsServiceInstanceUri) }catch(Exception e){ diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVfModule.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVfModule.groovy index 33a1ece091..3bc8daa98c 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVfModule.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVfModule.groovy @@ -39,11 +39,12 @@ import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils import org.onap.so.bpmn.core.UrnPropertiesReader import org.onap.so.bpmn.core.WorkflowException import org.onap.so.bpmn.core.json.JsonUtils -import org.onap.aaiclient.client.aai.AAIObjectPlurals import org.onap.aaiclient.client.aai.AAIObjectType 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.so.logger.MessageEnum import org.slf4j.Logger import org.slf4j.LoggerFactory @@ -486,7 +487,7 @@ public class DoDeleteVfModule extends AbstractServiceTaskProcessor{ for (i in 0..fqdnCount-1) { String fqdn = fqdnList[i] // Query AAI for this network policy FQDN - AAIPluralResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectPlurals.NETWORK_POLICY) + AAIPluralResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().networkPolicies()) uri.queryParam("network-policy-fqdn", fqdn) try { Optional<NetworkPolicies> networkPolicies = getAAIClient().get(NetworkPolicies.class, uri) @@ -498,7 +499,7 @@ public class DoDeleteVfModule extends AbstractServiceTaskProcessor{ def networkPolicyId = networkPolicy.getNetworkPolicyId() logger.debug("Deleting network-policy with network-policy-id " + networkPolicyId) try { - AAIResourceUri delUri = AAIUriFactory.createResourceUri(AAIObjectType.NETWORK_POLICY, networkPolicyId) + AAIResourceUri delUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().networkPolicy(networkPolicyId)) getAAIClient().delete(delUri) execution.setVariable("DoDVfMod_aaiDeleteNetworkPolicyReturnCode", 200) } catch (Exception e) { @@ -606,7 +607,7 @@ public class DoDeleteVfModule extends AbstractServiceTaskProcessor{ def vnfId = execution.getVariable('vnfId') def vfModuleId = execution.getVariable('vfModuleId') - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.VF_MODULE, vnfId, vfModuleId) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().genericVnf(vnfId).vfModule(vfModuleId)) try { Optional<org.onap.aai.domain.yang.VfModule> vfModule = getAAIClient().get(org.onap.aai.domain.yang.VfModule.class, uri); diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVfModuleFromVnf.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVfModuleFromVnf.groovy index 786cd3d747..00bebdf54a 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVfModuleFromVnf.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVfModuleFromVnf.groovy @@ -41,11 +41,12 @@ import org.onap.so.bpmn.core.UrnPropertiesReader import org.onap.so.bpmn.core.WorkflowException import org.onap.so.bpmn.core.json.JsonUtils import org.onap.aaiclient.client.graphinventory.entities.uri.Depth -import org.onap.aaiclient.client.aai.AAIObjectPlurals import org.onap.aaiclient.client.aai.AAIObjectType 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.so.logger.MessageEnum import org.slf4j.Logger import org.slf4j.LoggerFactory @@ -142,7 +143,7 @@ public class DoDeleteVfModuleFromVnf extends VfModuleBase { try { def vnfId = execution.getVariable('vnfId') - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId).depth(Depth.ONE) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().genericVnf(vnfId)).depth(Depth.ONE) try { Optional<GenericVnf> genericVnf = getAAIClient().get(GenericVnf.class,uri) @@ -514,7 +515,7 @@ public class DoDeleteVfModuleFromVnf extends VfModuleBase { // Query AAI for this network policy FQDN - AAIPluralResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectPlurals.NETWORK_POLICY) + AAIPluralResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().networkPolicies()) uri.queryParam("network-policy-fqdn", fqdn) try { @@ -530,7 +531,7 @@ public class DoDeleteVfModuleFromVnf extends VfModuleBase { // Retrieve the resource version for this network policy try { - AAIResourceUri delUri = AAIUriFactory.createResourceUri(AAIObjectType.NETWORK_POLICY, networkPolicyId) + AAIResourceUri delUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().networkPolicy(networkPolicyId)) getAAIClient().delete(delUri) execution.setVariable("DDVFMV_aaiDeleteNetworkPolicyReturnCode", 200) logger.debug(" ***** AAI delete network policy Response Code, NetworkPolicy #" + counting + " : " + 200) diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVfModuleVolumeV2.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVfModuleVolumeV2.groovy index 355b5f77c0..22b16d0e82 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVfModuleVolumeV2.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVfModuleVolumeV2.groovy @@ -32,6 +32,7 @@ import org.onap.aaiclient.client.aai.entities.Relationships 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.so.bpmn.common.scripts.AaiUtil import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor import org.onap.so.bpmn.common.scripts.ExceptionUtil @@ -122,7 +123,7 @@ class DoDeleteVfModuleVolumeV2 extends AbstractServiceTaskProcessor{ String cloudRegion = execution.getVariable('lcpCloudRegionId') AaiUtil aaiUtil = new AaiUtil(this) - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.CLOUD_REGION, Defaults.CLOUD_OWNER.toString(), cloudRegion) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.cloudInfrastructure().cloudRegion(Defaults.CLOUD_OWNER.toString(), cloudRegion)) def queryCloudRegionRequest = aaiUtil.createAaiUri(uri) cloudRegion = aaiUtil.getAAICloudReqion(execution, queryCloudRegionRequest, "PO", cloudRegion) @@ -159,7 +160,7 @@ class DoDeleteVfModuleVolumeV2 extends AbstractServiceTaskProcessor{ String cloudRegion = execution.getVariable(prefix+'aicCloudRegion') try { - AAIResourceUri resourceUri = AAIUriFactory.createResourceUri(AAIObjectType.VOLUME_GROUP , Defaults.CLOUD_OWNER.toString(), cloudRegion,volumeGroupId) + AAIResourceUri resourceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.cloudInfrastructure().cloudRegion(Defaults.CLOUD_OWNER.toString(), cloudRegion).volumeGroup(volumeGroupId)) Optional<VolumeGroup> volumeGroupOps = getAAIClient().get(VolumeGroup.class,resourceUri) if(volumeGroupOps.present) { VolumeGroup volumeGroup = volumeGroupOps.get() @@ -173,11 +174,11 @@ class DoDeleteVfModuleVolumeV2 extends AbstractServiceTaskProcessor{ String volumeGroupTenantId = null if(relationships.isPresent()){ - if(relationships.get().getRelatedAAIUris(AAIObjectType.VF_MODULE)){ + if(relationships.get().getRelatedUris(Types.VF_MODULE)){ logger.debug('Volume Group ' + volumeGroupId + ' currently in use') exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Volume Group ${volumeGroupId} currently in use - found vf-module relationship.") } - for(AAIResourceUri aaiResourceUri: relationships.get().getRelatedAAIUris(AAIObjectType.TENANT)){ + for(AAIResourceUri aaiResourceUri: relationships.get().getRelatedUris(Types.TENANT)){ volumeGroupTenantId = aaiResourceUri.getURIKeys().get(AAIFluentTypeBuilder.Types.TENANT.getUriParams().tenantId) } } @@ -264,7 +265,7 @@ class DoDeleteVfModuleVolumeV2 extends AbstractServiceTaskProcessor{ String cloudRegion = execution.getVariable(prefix+'aicCloudRegion') try { - AAIResourceUri resourceUri = AAIUriFactory.createResourceUri(AAIObjectType.VOLUME_GROUP,Defaults.CLOUD_OWNER.toString(), cloudRegion, volumeGroupId) + AAIResourceUri resourceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.cloudInfrastructure().cloudRegion(Defaults.CLOUD_OWNER.toString(), cloudRegion).volumeGroup(volumeGroupId)) getAAIClient().delete(resourceUri) logger.debug("Volume group $volumeGroupId deleted.") }catch (NotFoundException ex) { diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVnf.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVnf.groovy index 25fbc93c0a..181e62ee4c 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVnf.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVnf.groovy @@ -40,6 +40,8 @@ import org.onap.aaiclient.client.aai.AAIObjectType 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 org.w3c.dom.Document import org.w3c.dom.Element import org.w3c.dom.Node @@ -104,14 +106,14 @@ class DoDeleteVnf extends AbstractServiceTaskProcessor { try { AAIResourcesClient resourceClient = new AAIResourcesClient() - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, execution.getVariable('vnfId')) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().genericVnf(execution.getVariable('vnfId'))) if(resourceClient.exists(uri)){ execution.setVariable("GENGV_FoundIndicator", true) AAIResultWrapper wrapper = resourceClient.get(uri.depth(Depth.ONE)) if(wrapper.getRelationships().isPresent()){ - List<AAIResourceUri> relationships = wrapper.getRelationships().get().getRelatedAAIUris(AAIObjectType.CLOUD_REGION) - relationships.addAll(wrapper.getRelationships().get().getRelatedAAIUris(AAIObjectType.L3_NETWORK)) + List<AAIResourceUri> relationships = wrapper.getRelationships().get().getRelatedUris(Types.CLOUD_REGION) + relationships.addAll(wrapper.getRelationships().get().getRelatedUris(Types.L3_NETWORK)) if(!relationships.isEmpty()){ execution.setVariable("DoDVNF_vnfInUse", true) }else{ @@ -148,7 +150,7 @@ class DoDeleteVnf extends AbstractServiceTaskProcessor { String vnfId = execution.getVariable("DoDVNF_vnfId") AAIResourcesClient resourceClient = new AAIResourcesClient(); - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().genericVnf(vnfId)) resourceClient.delete(uri) logger.trace("COMPLETED deleteVnf") diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVnfAndModules.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVnfAndModules.groovy index 2a0cb5e610..5d1e2a2eae 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVnfAndModules.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVnfAndModules.groovy @@ -44,6 +44,8 @@ import org.onap.so.bpmn.core.json.JsonUtils import org.onap.aaiclient.client.graphinventory.entities.uri.Depth 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.aaiclient.client.aai.AAIObjectType import org.onap.logging.filter.base.ErrorCode import org.onap.so.logger.MessageEnum @@ -263,7 +265,7 @@ class DoDeleteVnfAndModules extends AbstractServiceTaskProcessor { try { def vnfId = execution.getVariable('vnfId') - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId).depth(Depth.ONE) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().genericVnf(vnfId)).depth(Depth.ONE) try { Optional<GenericVnf> genericVnfOp = getAAIClient().get(GenericVnf.class,uri) diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoModifyAccessNSSI.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoModifyAccessNSSI.groovy index 2e7e728b44..f591855b5c 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoModifyAccessNSSI.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoModifyAccessNSSI.groovy @@ -51,6 +51,8 @@ import org.onap.aaiclient.client.aai.AAIResourcesClient 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 javax.ws.rs.NotFoundException class DoModifyAccessNSSI extends AbstractServiceTaskProcessor { @@ -588,8 +590,7 @@ class DoModifyAccessNSSI extends AbstractServiceTaskProcessor { Map<String,ServiceInstance> relatedInstances = new HashMap<>() AAIResourcesClient client = new AAIResourcesClient() - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, - globalSubscriberId, subscriptionServiceType, instanceId) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(subscriptionServiceType).serviceInstance(instanceId)) if (!client.exists(uri)) { exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Service Instance was not found in aai : ${instanceId}") } @@ -605,8 +606,7 @@ class DoModifyAccessNSSI extends AbstractServiceTaskProcessor { relatioshipurl.substring(relatioshipurl.lastIndexOf("/") + 1, relatioshipurl.length()) AAIResourcesClient client01 = new AAIResourcesClient() - AAIResourceUri uri01 = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, - globalSubscriberId, subscriptionServiceType, serviceInstanceId) + AAIResourceUri uri01 = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(subscriptionServiceType).serviceInstance(serviceInstanceId)) if (!client.exists(uri01)) { exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Service Instance was not found in aai: ${serviceInstanceId} related to ${instanceId}") @@ -631,8 +631,7 @@ class DoModifyAccessNSSI extends AbstractServiceTaskProcessor { String subscriptionServiceType = execution.getVariable("subscriptionServiceType") ServiceInstance serviceInstance = new ServiceInstance() AAIResourcesClient client = new AAIResourcesClient() - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, - globalSubscriberId, subscriptionServiceType, instanceId) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(subscriptionServiceType).serviceInstance(instanceId)) if (!client.exists(uri)) { exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Service Instance was not found in aai : ${instanceId}") } @@ -646,7 +645,7 @@ class DoModifyAccessNSSI extends AbstractServiceTaskProcessor { } private void deleteServiceInstanceInAAI(DelegateExecution execution,String instanceId) { try { - AAIResourceUri serviceInstanceUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, execution.getVariable("globalSubscriberId"), execution.getVariable("serviceType"), instanceId) + AAIResourceUri serviceInstanceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(execution.getVariable("globalSubscriberId")).serviceSubscription(execution.getVariable("serviceType")).serviceInstance(instanceId)) getAAIClient().delete(serviceInstanceUri) logger.debug("${Prefix} Exited deleteServiceInstance") }catch(Exception e){ diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoModifyCoreNSSI.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoModifyCoreNSSI.groovy index 6c12a656f4..ebeab3eb7d 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoModifyCoreNSSI.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoModifyCoreNSSI.groovy @@ -1,3 +1,23 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2020 Telecom Italia + * ================================================================================ + * 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 @@ -19,6 +39,8 @@ import org.onap.aaiclient.client.aai.entities.AAIResultWrapper import org.onap.aaiclient.client.aai.entities.Relationships 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.ONAPComponents import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor import org.onap.so.bpmn.common.scripts.ExceptionUtil @@ -47,7 +69,7 @@ import org.slf4j.LoggerFactory import javax.ws.rs.core.Response -class DoModifyCoreNSSI extends AbstractServiceTaskProcessor { +class DoModifyCoreNSSI extends DoCommonCoreNSSI { private final String PREFIX ="DoModifyCoreNSSI" @@ -58,502 +80,6 @@ class DoModifyCoreNSSI extends AbstractServiceTaskProcessor { private static final Logger LOGGER = LoggerFactory.getLogger( DoModifyCoreNSSI.class) - @Override - void preProcessRequest(DelegateExecution execution) { - LOGGER.trace("${PREFIX} Start preProcessRequest") - - def currentNSSI = execution.getVariable("currentNSSI") - if (!currentNSSI) { - String msg = "currentNSSI is null" - LOGGER.error(msg) - exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg) - } - - LOGGER.trace("***** ${PREFIX} Exit preProcessRequest") - } - - - /** - * Queries Network Service Instance in AAI - * @param execution - */ - void getNetworkServiceInstance(DelegateExecution execution) { - LOGGER.trace("${PREFIX} Start getNetworkServiceInstance") - - AAIResourcesClient client = getAAIClient() - - def currentNSSI = execution.getVariable("currentNSSI") - - String globalSubscriberId = currentNSSI['globalSubscriberId'] - String serviceType = currentNSSI['serviceType'] - String nssiId = currentNSSI['nssiServiceInstanceId'] - - AAIResourceUri nssiUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, nssiId) //AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, globalSubscriberId, serviceType, nssiId) - Optional<ServiceInstance> nssiOpt = client.get(ServiceInstance.class, nssiUri) - - if (nssiOpt.isPresent()) { - ServiceInstance nssi = nssiOpt.get() - execution.setVariable("nssi", nssi) - - execution.setVariable("nssiUri", nssiUrl) - - // Network Service Instance - AAIResultWrapper wrapper = client.get(nssiUri); - Optional<Relationships> relationships = wrapper.getRelationships() - if (relationships.isPresent()) { - for(AAIResourceUri networkServiceInstanceUri: relationships.get().getRelatedAAIUris(AAIObjectType.SERVICE_INSTANCE)){ // ??? - Optional<ServiceInstance> networkServiceInstanceOpt = client.get(ServiceInstance.class, networkServiceInstanceUri) - if(networkServiceInstanceOpt.isPresent()) { - ServiceInstance networkServiceInstance = networkServiceInstanceOpt.get() - - if(networkServiceInstance.getServiceRole().equals("Network Service")) { // Network Service - execution.setVariable("networkServiceInstance", networkServiceInstance) - - execution.setVariable("networkServiceInstanceUri", networkServiceInstanceUri) - break // Should be only one Network Service Instance - } - } - else { - String msg = String.format("No Network Service Instance found for NSSI %s in AAI", nssiId) - LOGGER.error(msg) - exceptionUtil.buildAndThrowWorkflowException(execution, 2500, msg) - } - - } - } - else { - String msg = String.format("No relationship presented for NSSI %s in AAI", nssiId) - LOGGER.error(msg) - exceptionUtil.buildAndThrowWorkflowException(execution, 2500, msg) - } - } - else { - String msg = String.format("NSSI %s not found in AAI", nssiId) - LOGGER.error(msg) - exceptionUtil.buildAndThrowWorkflowException(execution, 2500, msg) - } - - - LOGGER.trace("***** ${PREFIX} Exit getNetworkServiceInstance") - } - - - /** - * Queries constitute VNF from Network Service Instance - * @param execution - */ - void getConstituteVNFFromNetworkServiceInst(DelegateExecution execution) { - LOGGER.trace("${PREFIX} Start getConstituteVNFFromNetworkServiceInst") - - AAIResourcesClient client = getAAIClient() - - AAIResourceUri networkServiceInstanceUri = (AAIResourceUri)execution.getVariable("networkServiceInstanceUri") - AAIResultWrapper wrapper = client.get(networkServiceInstanceUri); - Optional<Relationships> relationships = wrapper.getRelationships() - if (relationships.isPresent()) { - for (AAIResourceUri constituteVnfUri : relationships.get().getRelatedAAIUris(AAIObjectType.GENERIC_VNF)) { // ??? - execution.setVariable("constituteVnfUri", constituteVnfUri) - Optional<GenericVnf> constituteVnfOpt = client.get(GenericVnf.class, constituteVnfUri) - if(constituteVnfOpt.isPresent()) { - GenericVnf constituteVnf = constituteVnfOpt.get() - execution.setVariable("constituteVnf", constituteVnf) - } - else { - String msg = String.format("No constitute VNF found for Network Service Instance %s in AAI", ((ServiceInstance)execution.getVariable("networkServiceInstance")).getServiceInstanceId()) - LOGGER.error(msg) - exceptionUtil.buildAndThrowWorkflowException(execution, 2500, msg) - } - - execution.setVariable("networkServiceInstanceUri", networkServiceInstanceUri) - break // Should be only one constitute VNF - } - } - else { - String msg = String.format("No relationship presented for Network Service Instance %s in AAI", ((ServiceInstance)execution.getVariable("networkServiceInstance")).getServiceInstanceId()) - LOGGER.error(msg) - exceptionUtil.buildAndThrowWorkflowException(execution, 2500, msg) - } - - LOGGER.trace("${PREFIX} Exit getConstituteVNFFromNetworkServiceInst") - - } - - - /** - * Retrieves NSSI associated profiles from AAI - * @param execution - */ - void getNSSIAssociatedProfiles(DelegateExecution execution) { - LOGGER.trace("${PREFIX} Start getNSSIAssociatedProfiles") - - AAIResourcesClient client = getAAIClient() - - ServiceInstance nssi = (ServiceInstance)execution.getVariable("nssi") - - List<SliceProfile> associatedProfiles = nssi.getSliceProfiles().getSliceProfile() - - if(associatedProfiles.isEmpty()) { - String msg = String.format("No associated profiles found for NSSI %s in AAI", nssi.getServiceInstanceId()) - LOGGER.error(msg) - exceptionUtil.buildAndThrowWorkflowException(execution, 2500, msg) - } - else { - execution.setVariable("associatedProfiles", associatedProfiles) - } - - LOGGER.trace("${PREFIX} Exit getNSSIAssociatedProfiles") - } - - - /** - * Calculates a final list of S-NSSAI - * @param execution - */ - void calculateSNSSAI(DelegateExecution execution) { - LOGGER.trace("${PREFIX} Start calculateSNSSAI") - - List<SliceProfile> associatedProfiles = (List<SliceProfile>)execution.getVariable("associatedProfiles") - - def currentNSSI = execution.getVariable("currentNSSI") - - String currentSNSSAI = currentNSSI['S-NSSAI'] - - List<String> snssais = new ArrayList<>() - - if((Boolean)execution.getVariable("isCreateSliceProfileInstance" ).equals(Boolean.TRUE)) { // Slice Profile Instance has to be created - for (SliceProfile associatedProfile : associatedProfiles) { - snssais.add(associatedProfile.getSNssai()) - } - - snssais.add(currentSNSSAI) - } - else { // Slice profile instance has to be deleted - for (SliceProfile associatedProfile : associatedProfiles) { - if (!associatedProfile.getSNssai().equals(currentNSSI)) { // not current S-NSSAI - snssais.add(associatedProfile.getSNssai()) - } - } - } - - execution.setVariable("S-NSSAIs", snssais) - - LOGGER.trace("${PREFIX} Exit calculateSNSSAI") - } - - - /** - * Invoke PUT Service Instance API - * @param execution - */ - void invokePUTServiceInstance(DelegateExecution execution) { - LOGGER.trace("${PREFIX} Start invokePUTServiceInstance") - - try { - //url:/onap/so/infra/serviceInstantiation/v7/serviceInstances/{serviceInstanceId}/vnfs/{vnfId}" - def nsmfЕndpoint = UrnPropertiesReader.getVariable("mso.infra.endpoint.url", execution) // ??? - - ServiceInstance networkServiceInstance = (ServiceInstance)execution.getVariable("networkServiceInstance") - - GenericVnf constituteVnf = (GenericVnf)execution.getVariable("constituteVnf") - - String url = String.format("${nsmfЕndpoint}/serviceInstantiation/v7/serviceInstances/%s/vnfs/%s", networkServiceInstance.getServiceInstanceId(), constituteVnf.getVnfId()) // ??? - - 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) - - HttpClient httpClient = getHttpClientFactory().newJsonClient(new URL(url), ONAPComponents.EXTERNAL) - httpClient.addAdditionalHeader("Authorization", encodeString) - httpClient.addAdditionalHeader("Accept", "application/json") - - RequestDetails requestDetails = prepareRequestDetails(execution) - ObjectMapper mapper = new ObjectMapper() - String requestDetailsStr = mapper.writeValueAsString(requestDetails) - - Response httpResponse = httpClient.put(requestDetailsStr) // check http code ??? - } catch (any) { - String msg = "Exception in DoDeallocateCoreNSSI.deleteServiceOrder. " + any.getCause() - LOGGER.error(msg) - exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) - } - - LOGGER.trace("${PREFIX} Exit invokePUTServiceInstance") - } - - - /** - * Prepare model info - * @param execution - * @param requestDetails - * @return - */ - private ModelInfo prepareModelInfo(DelegateExecution execution) { - ModelInfo modelInfo = new ModelInfo() - - modelInfo.setModelType(ModelType.service) - modelInfo.setModelInvariantId(networkServiceInstance.getModelInvariantId()) - - AAIResourceUri modelVerUrl = AAIUriFactory.createResourceUri(AAIObjectType.MODEL_VER, networkServiceInstance.getModelInvariantId()) // model of Network Service Instance ??? - Optional<ModelVer> modelVerOpt = client.get(ModelVer.class, modelVerUrl) - - if (modelVerOpt.isPresent()) { - modelInfo.setModelVersionId(modelVerOpt.get().getModelVersionId()) - modelInfo.setModelName(modelVerOpt.get().getModelName()) - modelInfo.setModelVersion(modelVerOpt.get().getModelVersion()) - } - - - return modelInfo - } - - - /** - * Prepares RequestDetails object - * @param execution - * @return - */ - private RequestDetails prepareRequestDetails(DelegateExecution execution) { - RequestDetails requestDetails = new RequestDetails() - - def currentNSSI = execution.getVariable("currentNSSI") - - String globalSubscriberId = currentNSSI['globalSubscriberId'] - - ServiceInstance networkServiceInstance = (ServiceInstance)execution.getVariable("networkServiceInstance") - - - AAIResourcesClient client = getAAIClient() - - // Model Info - requestDetails.setModelInfo(prepareModelInfo(execution)) - - // Subscriber Info - SubscriberInfo subscriberInfo = new SubscriberInfo() - subscriberInfo.setGlobalSubscriberId(globalSubscriberId) - - Customer customer = null - ServiceSubscription serviceSubscription = null - - AAIResourceUri networkServiceInstanceUri = execution.getVariable("networkServiceInstanceUri") - AAIResultWrapper wrapper = client.get(networkServiceInstanceUri) - Optional<Relationships> serviceSubscriptionRelationshipsOps = wrapper.getRelationships() - if(serviceSubscriptionRelationshipsOps.isPresent()) { - List<AAIResourceUri> serviceSubscriptionRelatedAAIUris = serviceSubscriptionRelationshipsOps.get().getRelatedAAIUris(AAIObjectType.SERVICE_SUBSCRIPTION) - if(!(serviceSubscriptionRelatedAAIUris == null || serviceSubscriptionRelatedAAIUris.isEmpty())) { - AAIResourceUri serviceSubscriptionUri = serviceSubscriptionRelatedAAIUris.get(0) // Many-To-One relation - Optional<ServiceSubscription> serviceSubscriptionOpt = client.get(ServiceSubscription.class, serviceSubscriptionUri) - if(serviceSubscriptionOpt.isPresent()) { - serviceSubscription = serviceSubscriptionOpt.get() - } - - wrapper = client.get(serviceSubscriptionUri) - Optional<Relationships> customerRelationshipsOps = wrapper.getRelationships() - if(customerRelationshipsOps.isPresent()) { - List<AAIResourceUri> customerRelatedAAIUris = customerRelationshipsOps.get().getRelatedAAIUris(AAIObjectType.CUSTOMER) - if(!(customerRelatedAAIUris == null || customerRelatedAAIUris.isEmpty())) { - Optional<Customer> customerOpt = client.get(Customer.class, customerRelatedAAIUris.get(0)) // Many-To-One relation - if(customerOpt.isPresent()) { - customer = customerOpt.get() - subscriberInfo.setSubscriberName(customer.getSubscriberName()) - } - } - } - } - - } - requestDetails.setSubscriberInfo(subscriberInfo) - - // Request Info - RequestInfo requestInfo = new RequestInfo() - requestInfo.setInstanceName(networkServiceInstance.getServiceInstanceName()) - - /* No found data to provide ??? - requestInfo.setSource() - requestInfo.setSuppressRollback() - requestInfo.setRequestorId() - requestInfo.setProductFamilyId() - */ - - requestDetails.setRequestInfo(requestInfo) - - - // Request Parameters - RequestParameters requestParameters = new RequestParameters() - - // No found data to provide ??? requestParameters.setaLaCarte() - requestParameters.setSubscriptionServiceType(serviceSubscription.getServiceType()) - - // User params - List<Map<String, Object>> userParams = new ArrayList<>() - // Service - Service service = new Service() - // Model Info - ModelInfo serviceModelInfo = new ModelInfo() - serviceModelInfo.setModelType(ModelType.service) - serviceModelInfo.setModelInvariantId(networkServiceInstance.getModelInvariantId()) - - serviceModelInfo.setModelVersionId(modelInfo.get().getModelVersionId()) - serviceModelInfo.setModelName(modelInfo.get().getModelName()) - serviceModelInfo.setModelVersion(modelInfo.get().getModelVersion()) - - service.setModelInfo(serviceModelInfo) - - // Resources - Resources resources = new Resources() - - CloudRegion cloudRegion = null - AAIResourceUri cloudRegionRelatedAAIUri = null - // VNFs - List<Vnfs> vnfs = new ArrayList<>() - // VNF - Vnfs vnf = new Vnfs() - - // Cloud configuration - CloudConfiguration cloudConfiguration = new CloudConfiguration() - - AAIResourceUri constituteVnfUri = (AAIResourceUri)execution.getVariable("constituteVnfUri") - wrapper = client.get(constituteVnfUri) - Optional<Relationships> constituteVnfOps = wrapper.getRelationships() - if(constituteVnfOps.isPresent()) { - List<AAIResourceUri> cloudRegionRelatedAAIUris = serviceSubscriptionRelationshipsOps.get().getRelatedAAIUris(AAIObjectType.CLOUD_REGION) - if(!(cloudRegionRelatedAAIUris == null || cloudRegionRelatedAAIUris.isEmpty())) { - cloudRegionRelatedAAIUri = cloudRegionRelatedAAIUris.get(0) - Optional<CloudRegion> cloudRegionrOpt = client.get(CloudRegion.class, cloudRegionRelatedAAIUris.get(0)) - if(cloudRegionrOpt.isPresent()) { - cloudRegion = cloudRegionrOpt.get() - cloudConfiguration.setLcpCloudRegionId(cloudRegion.getCloudRegionId()) - for(Tenant tenant:cloudRegion.getTenants()) { - cloudConfiguration.setTenantId(tenant.getTenantId()) - break // only one is required - } - - cloudConfiguration.setCloudOwner(cloudRegion.getCloudOwner()) - } - } - } - - vnf.setCloudConfiguration(cloudConfiguration) - - // VF Modules - GenericVnf constituteVnf = execution.getVariable("constituteVnf") - List<VfModules> vfModuless = new ArrayList<>() - for(VfModule vfModule:constituteVnf.getVfModules()) { - VfModules vfmodules = new VfModules() - - ModelInfo vfModuleModelInfo = new ModelInfo() - vfModuleModelInfo.setModelInvariantUuid(vfModule.getModelInvariantId()) - - AAIResourceUri vfModuleUrl = AAIUriFactory.createResourceUri(AAIObjectType.MODEL_VER, vfModule.getModelInvariantId()) // ??? - Optional<ModelVer> vfModuleModelVerOpt = client.get(ModelVer.class, vfModuleUrl) - - if (vfModuleModelVerOpt.isPresent()) { - vfModuleModelInfo.setModelVersionId(vfModuleModelVerOpt.get().getModelVersionId()) - vfModuleModelInfo.setModelName(vfModuleModelVerOpt.get().getModelName()) - vfModuleModelInfo.setModelVersion(vfModuleModelVerOpt.get().getModelVersion()) - - // No model customization ID - } - vfmodules.setModelInfo(vfModuleModelInfo) - - vfmodules.setInstanceName(vfModule.getVfModuleName()) // ??? - - vfModuless.add(vfmodules) - } - vnf.setVfModules(vfModuless) - - // Model Info - ModelInfo vnfModelInfo = new ModelInfo() - vnfModelInfo.setModelInvariantUuid(constituteVnf.getModelInvariantId()) - AAIResourceUri vnfModelUrl = AAIUriFactory.createResourceUri(AAIObjectType.MODEL_VER, constituteVnf.getModelInvariantId()) // ??? - Optional<ModelVer> vnfModelVerOpt = client.get(ModelVer.class, vnfModelUrl) - - if (vnfModelVerOpt.isPresent()) { - vnfModelInfo.setModelVersionId(vnfModelVerOpt.get().getModelVersionId()) - vnfModelInfo.setModelName(vnfModelVerOpt.get().getModelName()) - vnfModelInfo.setModelVersion(vnfModelVerOpt.get().getModelVersion()) - - // No model customization ID - // No model instance name - } - - vnf.setModelInfo(vnfModelInfo) - - // Instance name - vnf.setInstanceName(constituteVnf.getVnfInstanceId()) - - // Instance params - List<Map<String, Object>> instanceParams = new ArrayList<>() - Map<String, Object> supporrtedNSSAIMap = new HashMap<>() - - // Supported S-NSSAI - List<String> snssais = ( List<String>)execution.getVariable("S-NSSAIs") - supporrtedNSSAIMap.put("supporrtedNSSAI", snssais) // remaining S-NSSAIs ??? there is no status for each s-nssai - instanceParams.add(supporrtedNSSAIMap) - - // No other instance params, e.g. config-type - - vnf.setInstanceParams(instanceParams) - - // No platform data - - vnfs.add(vnf) - resources.setVnfs(vnfs) - - service.setResources(resources) - - Map<String, Object> serviceMap = new HashMap<>() - serviceMap.put("service", service) - userParams.add(serviceMap) - requestParameters.setUserParams(userParams) - - // No other user params - - requestDetails.setRequestParameters(requestParameters) - - // No other request params - - // Cloud configuration - requestDetails.setCloudConfiguration(cloudConfiguration) - - // Owning entity - OwningEntity owningEntity = new OwningEntity() - wrapper = client.get(networkServiceInstanceUri) - Optional<Relationships> owningEntityRelationshipsOps = wrapper.getRelationships() - if(owningEntityRelationshipsOps.isPresent()) { - List<AAIResourceUri> owningEntityRelatedAAIUris = owningEntityRelationshipsOps.get().getRelatedAAIUris(AAIObjectType.OWNING_ENTITY) - - if(!(owningEntityRelatedAAIUris == null || owningEntityRelatedAAIUris.isEmpty())) { - Optional<org.onap.aai.domain.yang.OwningEntity> owningEntityOpt = client.get(org.onap.aai.domain.yang.OwningEntity.class, owningEntityRelatedAAIUris.get(0)) // Many-To-One relation - if(owningEntityOpt.isPresent()) { - owningEntity.setOwningEntityId(owningEntityOpt.get().getOwningEntityId()) - owningEntity.setOwningEntityName(owningEntityOpt.get().getOwningEntityName()) - requestDetails.setOwningEntity(owningEntity) - } - } - } - - // Project - Project project = new Project() - if(cloudRegionRelatedAAIUri != null) { - wrapper = client.get(cloudRegionRelatedAAIUri) - Optional<Relationships> cloudRegionOps = wrapper.getRelationships() - if(cloudRegionOps.isPresent()) { - List<AAIResourceUri> projectAAIUris = cloudRegionOps.get().getRelatedAAIUris(AAIObjectType.PROJECT) - if (!(projectAAIUris == null || projectAAIUris.isEmpty())) { - Optional<org.onap.aai.domain.yang.Project> projectOpt = client.get(org.onap.aai.domain.yang.Project.class, projectAAIUris.get(0)) - if(projectOpt.isPresent()) { - project.setProjectName(projectOpt.get().getProjectName()) - } - } - } - } - requestDetails.setProject(project) - - return requestDetails - } - - /** * Creates Slice Profile Instance * @param execution @@ -561,10 +87,16 @@ class DoModifyCoreNSSI extends AbstractServiceTaskProcessor { void createSliceProfileInstance(DelegateExecution execution) { LOGGER.trace("${PREFIX} Start createSliceProfileInstance") + def currentNSSI = execution.getVariable("currentNSSI") + String sliceProfileID = execution.getVariable("sliceProfileID") Map<String, Object> sliceProfileMap = execution.getVariable("sliceProfileCn") Map<String, Object> serviceProfileMap = execution.getVariable("serviceProfile") + String globalSubscriberId = currentNSSI['globalSubscriberId'] + String serviceType = currentNSSI['serviceType'] + String nssiId = currentNSSI['nssiId'] + SliceProfile sliceProfile = new SliceProfile() sliceProfile.setServiceAreaDimension("") sliceProfile.setPayloadSize(0) @@ -587,10 +119,10 @@ class DoModifyCoreNSSI extends AbstractServiceTaskProcessor { try { AAIResourcesClient client = getAAIClient() - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SLICE_PROFILE, sliceProfileID) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(serviceType).serviceInstance(nssiId).sliceProfile(sliceProfileID)) client.create(uri, sliceProfile) - execution.setVariable("createdSliceProfile", sliceProfile) + currentNSSI['createdSliceProfile'] = sliceProfile } catch (Exception ex) { exceptionUtil.buildAndThrowWorkflowException(execution, 25000, "Exception occured while Slice Profile create call:" + ex.getMessage()) } @@ -610,20 +142,22 @@ class DoModifyCoreNSSI extends AbstractServiceTaskProcessor { def currentNSSI = execution.getVariable("currentNSSI") - String nssiId = currentNSSI['nssiServiceInstanceId'] + String globalSubscriberId = currentNSSI['globalSubscriberId'] + String serviceType = currentNSSI['serviceType'] + String nssiId = currentNSSI['nssiId'] - AAIResourceUri nssiUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, nssiId) - AAIResourceUri sliceProfileUri = AAIUriFactory.createResourceUri(AAIObjectType.SLICE_PROFILE, sliceProfileID) + AAIResourceUri nssiUri = AAIUriFactory.createResourceUri(Types.SERVICE_INSTANCE.getFragment(nssiId)) + AAIResourceUri sliceProfileUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(serviceType).serviceInstance(nssiId).sliceProfile(sliceProfileID)) try { - SliceProfile createdSliceProfile = (SliceProfile)execution.getVariable("createdSliceProfile") - ServiceInstance nssi = (ServiceInstance)execution.getVariable("nssi") + SliceProfile createdSliceProfile = (SliceProfile)currentNSSI['createdSliceProfile'] + ServiceInstance nssi = (ServiceInstance)currentNSSI['nssi'] List<SliceProfile> associatedProfiles = nssi.getSliceProfiles().getSliceProfile() associatedProfiles.add(createdSliceProfile) getAAIClient().update(nssiUri, nssi) - getAAIClient().connect(sliceProfileUri, nsiUri, AAIEdgeLabel.BELONGS_TO) + getAAIClient().connect(sliceProfileUri, nssiUri, AAIEdgeLabel.BELONGS_TO) }catch(Exception e){ exceptionUtil.buildAndThrowWorkflowException(execution, 25000, "Exception occured while Slice Profile association with NSSI disconnect call: " + e.getMessage()) } @@ -632,101 +166,9 @@ class DoModifyCoreNSSI extends AbstractServiceTaskProcessor { } - /** - * Removes Slice Profile association with NSSI - * @param execution - */ - void removeSPAssociationWithNSSI(DelegateExecution execution) { - LOGGER.trace("${PREFIX} Start removeSPAssociationWithNSSI") - - AAIResourcesClient client = getAAIClient() - - def currentNSSI = execution.getVariable("currentNSSI") - - ServiceInstance nssi = (ServiceInstance)execution.getVariable("nssi") - - String nssiId = currentNSSI['nssiServiceInstanceId'] - AAIResourceUri nssiUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, nssiId) - - List<SliceProfile> associatedProfiles = nssi.getSliceProfiles().getSliceProfile() - - String currentSNSSAI = currentNSSI['S-NSSAI'] - - associatedProfiles.removeIf({ associatedProfile -> (associatedProfile.getSNssai().equals(currentSNSSAI)) }) - - try { - getAAIClient().update(nssiUri, nssi) - }catch(Exception e){ - exceptionUtil.buildAndThrowWorkflowException(execution, 25000, "Exception occured while Slice Profile association with NSSI update call: " + e.getMessage()) - } - - LOGGER.trace("${PREFIX} Exit removeSPAssociationWithNSSI") - } - - - /** - * Deletes Slice Profile Instance - * @param execution - */ - void deleteSliceProfileInstance(DelegateExecution execution) { - LOGGER.trace("${PREFIX} Start deleteSliceProfileInstance") - - AAIResourcesClient client = getAAIClient() - - def currentNSSI = execution.getVariable("currentNSSI") - - ServiceInstance nssi = (ServiceInstance)execution.getVariable("nssi") - - List<SliceProfile> associatedProfiles = nssi.getSliceProfiles().getSliceProfile() - - String currentSNSSAI = currentNSSI['S-NSSAI'] - - AAIResourceUri sliceProfileUri = null - - for(SliceProfile associatedProfile:associatedProfiles) { - if(!associatedProfile.getSNssai().equals(currentNSSI)) { // not current S-NSSAI - sliceProfileUri = AAIUriFactory.createResourceUri(AAIObjectType.SLICE_PROFILE, associatedProfile.getProfileId()) - break - } - } - - try { - getAAIClient().delete(sliceProfileUri) - }catch(Exception e){ - exceptionUtil.buildAndThrowWorkflowException(execution, 25000, "Exception occured while Slice Profile Instance delete call: " + e.getMessage()) - } - - LOGGER.trace("${PREFIX} Exit deleteSliceProfileInstance") - } - - - /** - * Updates operation status - * @param execution - */ - void updateServiceOperationStatus(DelegateExecution execution) { - LOGGER.trace("${PREFIX} Start updateServiceOperationStatus") - - def currentNSSI = execution.getVariable("currentNSSI") - - OperationStatus operationStatus = new OperationStatus() - operationStatus.setServiceId(currentNSSI['e2eServiceInstanceId'] as String) - operationStatus.setOperationId(currentNSSI['operationId'] as String) - operationStatus.setOperation(currentNSSI['operationType'] as String) - operationStatus.setResult(RequestsDbConstant.Status.FINISHED) - - requestDBUtil.prepareUpdateOperationStatus(execution, operationStatus) - - LOGGER.trace("${PREFIX} Exit updateServiceOperationStatus") - } - - - /** - * Returns AAI client - * @return AAI client - */ - AAIResourcesClient getAAIClient() { - return new AAIResourcesClient() + @Override + String getPrefix() { + return PREFIX } } diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoModifyTnNssi.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoModifyTnNssi.groovy index 0b7a5ff59b..03a726c52c 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoModifyTnNssi.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoModifyTnNssi.groovy @@ -30,6 +30,8 @@ import org.onap.aaiclient.client.aai.AAIObjectType import org.onap.aaiclient.client.aai.AAIResourcesClient 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.so.bpmn.common.scripts.AbstractServiceTaskProcessor import org.onap.so.bpmn.common.scripts.ExceptionUtil import org.onap.so.bpmn.common.scripts.RequestDBUtil @@ -132,10 +134,7 @@ public class DoModifyTnNssi extends AbstractServiceTaskProcessor { void deleteServiceInstance(DelegateExecution execution) { try { AAIResourcesClient client = getAAIClient() - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, - execution.getVariable("globalSubscriberId"), - execution.getVariable("subscriptionServiceType"), - execution.getVariable("serviceInstanceID")) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(execution.getVariable("globalSubscriberId")).serviceSubscription(execution.getVariable("subscriptionServiceType")).serviceInstance(execution.getVariable("serviceInstanceID"))) client.delete(uri) } catch (BpmnError e) { throw e @@ -151,7 +150,7 @@ public class DoModifyTnNssi extends AbstractServiceTaskProcessor { String serviceInstanceId = execution.getVariable("serviceInstanceID") AAIResourcesClient resourceClient = getAAIClient() - AAIResourceUri ssServiceuri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, serviceInstanceId) + AAIResourceUri ssServiceuri = AAIUriFactory.createResourceUri(Types.SERVICE_INSTANCE.getFragment(serviceInstanceId)) try { if (resourceClient.exists(ssServiceuri)) { @@ -214,7 +213,7 @@ public class DoModifyTnNssi extends AbstractServiceTaskProcessor { ss.setEnvironmentContext(snssai) ss.setServiceRole(serviceRole) AAIResourcesClient client = getAAIClient() - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, execution.getVariable("globalSubscriberId"), execution.getVariable("subscriptionServiceType"), ssInstanceId) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(execution.getVariable("globalSubscriberId")).serviceSubscription(execution.getVariable("subscriptionServiceType")).serviceInstance(ssInstanceId)) client.update(uri, ss) } catch (BpmnError e) { throw e @@ -243,9 +242,7 @@ public class DoModifyTnNssi extends AbstractServiceTaskProcessor { sliceProfile.setReliability(new Object()) try { AAIResourcesClient client = getAAIClient() - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SLICE_PROFILE, execution.getVariable - ("globalSubscriberId"), - execution.getVariable("subscriptionServiceType"), sliceserviceInstanceId, sliceProfileId) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(execution.getVariable("globalSubscriberId")).serviceSubscription(execution.getVariable("subscriptionServiceType")).serviceInstance(sliceserviceInstanceId).sliceProfile(sliceProfileId)) client.update(uri, sliceProfile) } catch (BpmnError e) { @@ -263,9 +260,7 @@ public class DoModifyTnNssi extends AbstractServiceTaskProcessor { List<String> arIdList = execution.getVariable("arIdList") try { for (String arId : arIdList) { - AAIResourceUri arUri = AAIUriFactory.createResourceUri(AAIObjectType.ALLOTTED_RESOURCE, - execution.getVariable("globalSubscriberId"), execution.getVariable("subscriptionServiceType"), - serviceInstanceId, arId) + AAIResourceUri arUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(execution.getVariable("globalSubscriberId")).serviceSubscription(execution.getVariable("subscriptionServiceType")).serviceInstance(serviceInstanceId).allottedResource(arId)) getAAIClient().delete(arUri) } @@ -274,9 +269,7 @@ public class DoModifyTnNssi extends AbstractServiceTaskProcessor { for (String networkStr : networkStrList) { String allottedResourceId = UUID.randomUUID().toString() - AAIResourceUri allottedResourceUri = AAIUriFactory.createResourceUri(AAIObjectType.ALLOTTED_RESOURCE, - execution.getVariable("globalSubscriberId"), execution.getVariable("subscriptionServiceType"), - execution.getVariable("sliceserviceInstanceId"), allottedResourceId) + AAIResourceUri allottedResourceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(execution.getVariable("globalSubscriberId")).serviceSubscription(execution.getVariable("subscriptionServiceType")).serviceInstance(execution.getVariable("sliceserviceInstanceId")).allottedResource(allottedResourceId)) execution.setVariable("allottedResourceUri", allottedResourceUri) String modelInvariantId = execution.getVariable("modelInvariantUuid") String modelVersionId = execution.getVariable("modelUuid") @@ -319,7 +312,7 @@ public class DoModifyTnNssi extends AbstractServiceTaskProcessor { resource.setModelInvariantId(modelInvariantId) resource.setModelVersionId(modelVersionId) - AAIResourceUri logicalLinkUri = AAIUriFactory.createResourceUri(AAIObjectType.LOGICAL_LINK, logicalLinkId) + AAIResourceUri logicalLinkUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().logicalLink(logicalLinkId)) getAAIClient().create(logicalLinkUri, resource) } } catch (Exception ex) { @@ -365,7 +358,7 @@ public class DoModifyTnNssi extends AbstractServiceTaskProcessor { ServiceInstance si = new ServiceInstance() si.setOrchestrationStatus(orchStatus) AAIResourcesClient client = getAAIClient() - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, sliceServiceInstanceId) + AAIResourceUri uri = AAIUriFactory.createResourceUri(Types.SERVICE_INSTANCE.getFragment(sliceServiceInstanceId)) client.update(uri, si) } catch (BpmnError e) { throw e diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateE2EServiceInstance.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateE2EServiceInstance.groovy index 6b91fec03e..615afcb8d7 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateE2EServiceInstance.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateE2EServiceInstance.groovy @@ -41,6 +41,8 @@ import org.onap.aaiclient.client.aai.AAIResourcesClient 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 org.springframework.web.util.UriUtils; import org.slf4j.Logger import org.slf4j.LoggerFactory @@ -315,7 +317,7 @@ public class DoUpdateE2EServiceInstance extends AbstractServiceTaskProcessor { org.onap.aai.domain.yang.ServiceInstance si = execution.getVariable("serviceInstanceData") AAIResourcesClient client = new AAIResourcesClient() - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, serviceInstanceId) + AAIResourceUri uri = AAIUriFactory.createResourceUri(Types.SERVICE_INSTANCE.getFragment(serviceInstanceId)) client.update(uri, si) } catch (BpmnError e) { diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateE2EServiceInstanceRollback.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateE2EServiceInstanceRollback.groovy index 154de6b887..5b16838c6a 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateE2EServiceInstanceRollback.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateE2EServiceInstanceRollback.groovy @@ -37,6 +37,8 @@ import org.onap.aaiclient.client.aai.AAIResourcesClient 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 org.slf4j.Logger import org.slf4j.LoggerFactory import org.onap.so.bpmn.common.scripts.ExceptionUtil; @@ -241,7 +243,7 @@ public class DoUpdateE2EServiceInstanceRollback extends AbstractServiceTaskProce org.onap.aai.domain.yang.ServiceInstance si = execution.getVariable("serviceInstanceData") AAIResourcesClient client = new AAIResourcesClient() - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, serviceInstanceId) + AAIResourceUri uri = AAIUriFactory.createResourceUri(Types.SERVICE_INSTANCE.getFragment(serviceInstanceId)) client.update(uri, si) } catch (BpmnError e) { diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateNetworkInstance.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateNetworkInstance.groovy index cf7bb22442..be82562898 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateNetworkInstance.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateNetworkInstance.groovy @@ -37,6 +37,7 @@ 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 org.onap.aaiclient.client.graphinventory.entities.uri.Depth import org.onap.so.bpmn.common.scripts.AaiUtil import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor @@ -328,7 +329,7 @@ public class DoUpdateNetworkInstance extends AbstractServiceTaskProcessor { String serviceInstanceId = execution.getVariable('serviceInstanceId') AAIResourcesClient resourceClient = new AAIResourcesClient() - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, serviceInstanceId) + AAIResourceUri uri = AAIUriFactory.createResourceUri(Types.SERVICE_INSTANCE.getFragment(serviceInstanceId)) if(!resourceClient.exists(uri)){ exceptionUtil.buildAndThrowWorkflowException(execution, 7000, "Service Instance not found in aai") @@ -361,7 +362,7 @@ public class DoUpdateNetworkInstance extends AbstractServiceTaskProcessor { String aai_endpoint = UrnPropertiesReader.getVariable("aai.endpoint", execution) AaiUtil aaiUtil = new AaiUtil(this) - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.CLOUD_REGION, Defaults.CLOUD_OWNER.toString(), cloudRegion) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.cloudInfrastructure().cloudRegion(Defaults.CLOUD_OWNER.toString(), cloudRegion)) def queryCloudRegionRequest = aaiUtil.createAaiUri(uri) execution.setVariable(Prefix + "queryCloudRegionRequest", queryCloudRegionRequest) @@ -409,7 +410,7 @@ public class DoUpdateNetworkInstance extends AbstractServiceTaskProcessor { execution.setVariable(Prefix + "networkId", networkId) AAIResourcesClient client = new AAIResourcesClient() - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.L3_NETWORK, networkId).depth(Depth.ONE) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().l3Network(networkId)).depth(Depth.ONE) AAIResultWrapper network = client.get(uri, NotFoundException.class) execution.setVariable(Prefix + "aaiIdReturnCode", "200") @@ -442,7 +443,7 @@ public class DoUpdateNetworkInstance extends AbstractServiceTaskProcessor { String networkId = utils.getNodeText(networkRequest, "network-id") AAIResourcesClient client = new AAIResourcesClient() - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.L3_NETWORK, networkId).depth(Depth.ONE) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().l3Network(networkId)).depth(Depth.ONE) AAIResultWrapper network = client.get(uri, NotFoundException.class) execution.setVariable(Prefix + "aaiRequeryIdReturnCode", "200") @@ -483,7 +484,7 @@ public class DoUpdateNetworkInstance extends AbstractServiceTaskProcessor { // get variables AAIResultWrapper queryIdAAIResponse = execution.getVariable(Prefix + "requeryIdAAIResponse") if(queryIdAAIResponse.getRelationships().isPresent()){ - List<AAIResourceUri> uris = queryIdAAIResponse.getRelationships().get().getRelatedAAIUris(AAIObjectType.VPN_BINDING) + List<AAIResourceUri> uris = queryIdAAIResponse.getRelationships().get().getRelatedUris(Types.VPN_BINDING) logger.debug(Prefix + "vpnCount - " + uris.size()) @@ -555,7 +556,7 @@ public class DoUpdateNetworkInstance extends AbstractServiceTaskProcessor { // get variables AAIResultWrapper queryIdAAIResponse = execution.getVariable(Prefix + "requeryIdAAIResponse") if(queryIdAAIResponse.getRelationships().isPresent()){ - List<AAIResourceUri> uris = queryIdAAIResponse.getRelationships().get().getRelatedAAIUris(AAIObjectType.NETWORK_POLICY) + List<AAIResourceUri> uris = queryIdAAIResponse.getRelationships().get().getRelatedUris(Types.NETWORK_POLICY) execution.setVariable(Prefix + "networkPolicyCount", uris.size()) logger.debug(Prefix + "networkPolicyCount - " + uris.size()) @@ -620,7 +621,7 @@ public class DoUpdateNetworkInstance extends AbstractServiceTaskProcessor { try { AAIResultWrapper queryIdAAIResponse = execution.getVariable(Prefix + "requeryIdAAIResponse") if(queryIdAAIResponse.getRelationships().isPresent()){ - List<AAIResourceUri> uris = queryIdAAIResponse.getRelationships().get().getRelatedAAIUris(AAIObjectType.ROUTE_TABLE_REFERENCE) + List<AAIResourceUri> uris = queryIdAAIResponse.getRelationships().get().getRelatedUris(Types.ROUTE_TABLE_REFERENCE) execution.setVariable(Prefix + "networkTableRefCount", uris.size()) logger.debug(Prefix + "networkTableRefCount - " + uris.size()) @@ -717,7 +718,7 @@ public class DoUpdateNetworkInstance extends AbstractServiceTaskProcessor { } AAIResourcesClient client = new AAIResourcesClient() - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.L3_NETWORK, networkId) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().l3Network(networkId)) client.update(uri, l3Network) List<Subnet> subnets = oldL3Network.getSubnets().getSubnet() @@ -734,7 +735,7 @@ public class DoUpdateNetworkInstance extends AbstractServiceTaskProcessor { subnet.setOrchestrationStatus("Active") } - AAIResourceUri subUri = AAIUriFactory.createResourceUri(AAIObjectType.SUBNET, networkId, subnetId) + AAIResourceUri subUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().l3Network(networkId).subnet(subnetId)) client.update(subUri, subnet) } diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateVfModule.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateVfModule.groovy index 00cf2a3ff1..b7bbbf91a5 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateVfModule.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateVfModule.groovy @@ -25,6 +25,14 @@ package org.onap.so.bpmn.infrastructure.scripts import org.camunda.bpm.engine.delegate.BpmnError import org.camunda.bpm.engine.delegate.DelegateExecution import org.onap.aai.domain.yang.GenericVnf +import org.onap.aaiclient.client.aai.AAIObjectType; +import org.onap.aaiclient.client.aai.AAIResourcesClient +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 org.onap.aaiclient.client.graphinventory.entities.uri.Depth import org.onap.logging.filter.base.ErrorCode import org.onap.so.bpmn.common.scripts.AaiUtil import org.onap.so.bpmn.common.scripts.CatalogDbUtils @@ -37,12 +45,6 @@ import org.onap.so.bpmn.common.scripts.VfModuleBase import org.onap.so.bpmn.core.UrnPropertiesReader import org.onap.so.bpmn.core.WorkflowException import org.onap.so.bpmn.core.json.JsonUtils; -import org.onap.aaiclient.client.aai.AAIObjectType; -import org.onap.aaiclient.client.aai.AAIResourcesClient -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.graphinventory.entities.uri.Depth import org.onap.so.constants.Defaults import org.onap.so.logger.LoggingAnchor import org.onap.so.logger.MessageEnum @@ -273,7 +275,7 @@ public class DoUpdateVfModule extends VfModuleBase { } try{ - AAIResourceUri serviceInstanceURI = AAIUriFactory.create(AAIObjectType.SERVICE_INSTANCE, globalSubscriberId,serviceType,serviceInstanceId) + AAIResourceUri serviceInstanceURI = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(serviceType).serviceInstance(serviceInstanceId)) AAIResourcesClient aaiRC = new AAIResourcesClient() AAIResultWrapper aaiRW = aaiRC.get(serviceInstanceURI) Map<String, Object> aaiJson = aaiRW.asMap() @@ -411,7 +413,7 @@ public class DoUpdateVfModule extends VfModuleBase { // Prepare AA&I url AaiUtil aaiUtil = new AaiUtil(this) - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.CLOUD_REGION, Defaults.CLOUD_OWNER.toString(), cloudRegion) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.cloudInfrastructure().cloudRegion(Defaults.CLOUD_OWNER.toString(), cloudRegion)) def queryCloudRegionRequest = aaiUtil.createAaiUri(uri) execution.setVariable(prefix + "queryCloudRegionRequest", queryCloudRegionRequest) @@ -1018,7 +1020,7 @@ public class DoUpdateVfModule extends VfModuleBase { try { def vnfId = execution.getVariable('DOUPVfMod_vnfId') - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId).depth(Depth.ONE) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().genericVnf(vnfId)).depth(Depth.ONE) try { Optional<GenericVnf> genericVnf = getAAIClient().get(GenericVnf.class,uri) diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateVnfAndModules.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateVnfAndModules.groovy index 7e180ca542..0285ae219c 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateVnfAndModules.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateVnfAndModules.groovy @@ -41,7 +41,9 @@ import org.onap.aaiclient.client.graphinventory.entities.uri.Depth import org.onap.so.client.HttpClient import org.onap.aaiclient.client.aai.AAIObjectType import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri -import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory; +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.so.logger.MessageEnum import org.slf4j.Logger import org.slf4j.LoggerFactory @@ -159,7 +161,7 @@ class DoUpdateVnfAndModules extends AbstractServiceTaskProcessor { def vnfId = execution.getVariable('vnfId') AaiUtil aaiUriUtil = new AaiUtil(this) - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId).depth(Depth.ONE) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().genericVnf(vnfId)).depth(Depth.ONE) String endPoint = aaiUriUtil.createAaiUri(uri) logger.debug("AAI endPoint: " + endPoint) diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/TnAllocateNssi.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/TnAllocateNssi.groovy index 3367920064..7d2e536af9 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/TnAllocateNssi.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/TnAllocateNssi.groovy @@ -31,6 +31,8 @@ import org.onap.aaiclient.client.aai.AAIObjectType import org.onap.aaiclient.client.aai.AAIResourcesClient 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.so.bpmn.common.scripts.AbstractServiceTaskProcessor import org.onap.so.bpmn.common.scripts.ExceptionUtil import org.onap.so.bpmn.common.scripts.RequestDBUtil @@ -302,7 +304,7 @@ class TnAllocateNssi extends AbstractServiceTaskProcessor { ServiceInstance si = new ServiceInstance() si.setOrchestrationStatus(orchStatus) AAIResourcesClient client = new AAIResourcesClient() - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, sliceServiceInstanceId) + AAIResourceUri uri = AAIUriFactory.createResourceUri(Types.SERVICE_INSTANCE.getFragment(sliceServiceInstanceId)) client.update(uri, si) } catch (BpmnError e) { throw e diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateCustomE2EServiceInstance.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateCustomE2EServiceInstance.groovy index 282e9611fd..3a199216da 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateCustomE2EServiceInstance.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateCustomE2EServiceInstance.groovy @@ -44,6 +44,8 @@ import org.onap.aaiclient.client.aai.AAIResourcesClient 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 org.springframework.web.util.UriUtils import org.slf4j.Logger import org.slf4j.LoggerFactory @@ -178,7 +180,7 @@ public class UpdateCustomE2EServiceInstance extends AbstractServiceTaskProcessor String serviceType = execution.getVariable('serviceType') AAIResourcesClient resourceClient = new AAIResourcesClient() - AAIResourceUri serviceInstanceUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, globalSubscriberId, serviceType, serviceInstanceId) + AAIResourceUri serviceInstanceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(serviceType).serviceInstance(serviceInstanceId)) AAIResultWrapper wrapper = resourceClient.get(serviceInstanceUri, NotFoundException.class) Optional<ServiceInstance> si = wrapper.asBean(ServiceInstance.class) diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVfModuleVolume.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVfModuleVolume.groovy index 148ab1898f..a50f96adab 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVfModuleVolume.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVfModuleVolume.groovy @@ -33,6 +33,7 @@ import org.onap.aaiclient.client.aai.entities.Relationships 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.bpmn.common.scripts.ExceptionUtil import org.onap.so.bpmn.common.scripts.MsoUtils @@ -185,7 +186,7 @@ class UpdateVfModuleVolume extends VfModuleBase { try { def volumeGroupId = execution.getVariable('UPDVfModVol_volumeGroupId') def aicCloudRegion = execution.getVariable('UPDVfModVol_aicCloudRegion') - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.VOLUME_GROUP, Defaults.CLOUD_OWNER.toString(),aicCloudRegion,volumeGroupId) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.cloudInfrastructure().cloudRegion(Defaults.CLOUD_OWNER.toString(), aicCloudRegion).volumeGroup(volumeGroupId)) AAIResultWrapper wrapper = getAAIClient().get(uri) Optional<VolumeGroup> volumeGroup = wrapper.asBean(VolumeGroup.class) if(volumeGroup.isPresent()){ @@ -193,7 +194,7 @@ class UpdateVfModuleVolume extends VfModuleBase { execution.setVariable('UPDVfModVol_volumeGroupHeatStackId', heatStackId) Optional<Relationships> relationships = wrapper.getRelationships() if(relationships.isPresent()){ - List<AAIResourceUri> resourceUriList = relationships.get().getRelatedAAIUris(AAIObjectType.TENANT) + List<AAIResourceUri> resourceUriList = relationships.get().getRelatedUris(Types.TENANT) if(CollectionUtils.isNotEmpty(resourceUriList)){ AAIResourceUri tenantUri = resourceUriList.get(0) String volumeGroupTenantId = tenantUri.getURIKeys().get(AAIFluentTypeBuilder.Types.TENANT.getUriParams().tenantId) diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVfModuleVolumeInfraV1.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVfModuleVolumeInfraV1.groovy index b6873a19fe..b7757715e9 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVfModuleVolumeInfraV1.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVfModuleVolumeInfraV1.groovy @@ -29,12 +29,12 @@ import org.camunda.bpm.engine.delegate.DelegateExecution import org.onap.aai.domain.yang.GenericVnf import org.onap.aai.domain.yang.VfModule import org.onap.aai.domain.yang.VolumeGroup -import org.onap.aaiclient.client.aai.AAIObjectType import org.onap.aaiclient.client.aai.entities.AAIResultWrapper import org.onap.aaiclient.client.aai.entities.Relationships 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.bpmn.common.scripts.ExceptionUtil import org.onap.so.bpmn.common.scripts.MsoUtils @@ -207,14 +207,14 @@ class UpdateVfModuleVolumeInfraV1 extends VfModuleBase { def aicCloudRegion = execution.getVariable('UPDVfModVol_aicCloudRegion') try { - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.VOLUME_GROUP, Defaults.CLOUD_OWNER.toString(), aicCloudRegion, volumeGroupId) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.cloudInfrastructure().cloudRegion(Defaults.CLOUD_OWNER.toString(), aicCloudRegion).volumeGroup(volumeGroupId)) AAIResultWrapper wrapper = getAAIClient().get(uri) Optional<VolumeGroup> volumeGroup = wrapper.asBean(VolumeGroup.class) if (volumeGroup.isPresent()) { execution.setVariable('UPDVfModVol_aaiVolumeGroupResponse', volumeGroup.get()) Optional<Relationships> relationships = wrapper.getRelationships() if (relationships.isPresent()) { - List<AAIResourceUri> tenantURIList = relationships.get().getRelatedAAIUris(AAIObjectType.TENANT) + List<AAIResourceUri> tenantURIList = relationships.get().getRelatedUris(Types.TENANT) if (!isEmpty(tenantURIList)) { String volumeGroupTenantId = tenantURIList.get(0).getURIKeys().get(AAIFluentTypeBuilder.Types.TENANT.getUriParams().tenantId) execution.setVariable('UPDVfModVol_volumeGroupTenantId', volumeGroupTenantId) @@ -224,7 +224,7 @@ class UpdateVfModuleVolumeInfraV1 extends VfModuleBase { exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Could not find Tenant Id element in Volume Group with Volume Group Id " + volumeGroupId + ", AIC Cloud Region " + aicCloudRegion) } - execution.setVariable('UPDVfModVol_relatedVfModuleLink', relationships.get().getRelatedLinks(AAIObjectType.VF_MODULE).get(0)) + execution.setVariable('UPDVfModVol_relatedVfModuleLink', relationships.get().getRelatedLinks(Types.VF_MODULE).get(0)) } else { exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Could not find Tenant Id element in Volume Group with Volume Group Id " + volumeGroupId @@ -249,7 +249,7 @@ class UpdateVfModuleVolumeInfraV1 extends VfModuleBase { def vnfId = execution.getVariable('vnfId') - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().genericVnf(vnfId)) try { Optional<GenericVnf> genericVnf = getAAIClient().get(GenericVnf.class, uri) if (genericVnf.isPresent()) { @@ -273,7 +273,7 @@ class UpdateVfModuleVolumeInfraV1 extends VfModuleBase { String queryAAIVfModuleRequest = execution.getVariable('UPDVfModVol_relatedVfModuleLink') execution.setVariable('UPDVfModVol_personaModelId', '') - AAIResourceUri uri = AAIUriFactory.createResourceFromExistingURI(AAIObjectType.VF_MODULE, UriBuilder.fromPath(queryAAIVfModuleRequest).build()) + AAIResourceUri uri = AAIUriFactory.createResourceFromExistingURI(Types.VF_MODULE, UriBuilder.fromPath(queryAAIVfModuleRequest).build()) try{ Optional<VfModule> vfModule = getAAIClient().get(VfModule.class,uri) if(vfModule.isPresent()){ diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/VnfCmBase.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/VnfCmBase.groovy index aa3512379a..c797f924b7 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/VnfCmBase.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/VnfCmBase.groovy @@ -32,6 +32,7 @@ import org.onap.aaiclient.client.aai.entities.Relationships 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.appc.client.lcm.model.Action import org.onap.appc.client.lcm.model.ActionIdentifiers import org.onap.appc.client.lcm.model.Flags @@ -218,7 +219,7 @@ public abstract class VnfCmBase extends AbstractServiceTaskProcessor { logger.debug("cloudRegionId is: {}", cloudRegionId) AAIResourcesClient client = new AAIResourcesClient() - AAIResourceUri genericVnfUri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId) + AAIResourceUri genericVnfUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().genericVnf(vnfId)) // Check if this VNF exists if (!client.exists(genericVnfUri)) { logger.debug("VNF with vnfId {} does not exist in A&AI", vnfId) @@ -243,7 +244,7 @@ public abstract class VnfCmBase extends AbstractServiceTaskProcessor { Relationships relationships = aaiRW.getRelationships().get() if (relationships != null) { - List<AAIResourceUri> vserverUris = relationships.getRelatedAAIUris(AAIObjectType.VSERVER) + List<AAIResourceUri> vserverUris = relationships.getRelatedUris(Types.VSERVER) JSONArray vserverIds = new JSONArray() JSONArray vserverSelfLinks = new JSONArray() @@ -436,7 +437,7 @@ public abstract class VnfCmBase extends AbstractServiceTaskProcessor { def vnfId = execution.getVariable("vnfId") logger.debug("vnfId is: {}", vnfId) AAIResourcesClient client = new AAIResourcesClient() - AAIResourceUri genericVnfUri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId) + AAIResourceUri genericVnfUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().genericVnf(vnfId)) AAIResultWrapper aaiRW = client.get(genericVnfUri) Map<String, Object> result = aaiRW.asMap() boolean isClosedLoopDisabled = result.getOrDefault("is-closed-loop-disabled", false) @@ -488,7 +489,7 @@ public abstract class VnfCmBase extends AbstractServiceTaskProcessor { def transactionLoggingUuid = UUID.randomUUID().toString() def vnfId = execution.getVariable("vnfId") AAIResourcesClient client = new AAIResourcesClient() - AAIResourceUri genericVnfUri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId) + AAIResourceUri genericVnfUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().genericVnf(vnfId)) Map<String, Boolean> request = new HashMap<>() request.put("is-closed-loop-disabled", setDisabled) diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/VnfConfigUpdate.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/VnfConfigUpdate.groovy index ddc80f6a50..ee173caeb1 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/VnfConfigUpdate.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/VnfConfigUpdate.groovy @@ -32,6 +32,8 @@ import org.onap.aaiclient.client.aai.* 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 org.onap.so.logger.MessageEnum import org.slf4j.Logger import org.slf4j.LoggerFactory @@ -360,7 +362,7 @@ public class VnfConfigUpdate extends VnfCmBase { def vnfId = execution.getVariable("vnfId") logger.debug("vnfId is: {}", vnfId) AAIResourcesClient client = new AAIResourcesClient() - AAIResourceUri genericVnfUri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId) + AAIResourceUri genericVnfUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().genericVnf(vnfId)) AAIResultWrapper aaiRW = client.get(genericVnfUri) Map<String, Object> result = aaiRW.asMap() boolean isClosedLoopDisabled = result.getOrDefault("is-closed-loop-disabled", false) @@ -412,7 +414,7 @@ public class VnfConfigUpdate extends VnfCmBase { def transactionLoggingUuid = UUID.randomUUID().toString() def vnfId = execution.getVariable("vnfId") AAIResourcesClient client = new AAIResourcesClient() - AAIResourceUri genericVnfUri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId) + AAIResourceUri genericVnfUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().genericVnf(vnfId)) Map<String, Boolean> request = new HashMap<>() request.put("is-closed-loop-disabled", setDisabled) diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/VnfInPlaceUpdate.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/VnfInPlaceUpdate.groovy index 603d5e4dd9..4fad3c33b4 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/VnfInPlaceUpdate.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/VnfInPlaceUpdate.groovy @@ -35,6 +35,8 @@ import org.onap.aaiclient.client.aai.* 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 org.onap.so.client.appc.ApplicationControllerClient import org.onap.so.client.appc.ApplicationControllerSupport import org.onap.so.logger.LoggingAnchor @@ -380,7 +382,7 @@ public class VnfInPlaceUpdate extends VnfCmBase { def vnfId = execution.getVariable("vnfId") logger.debug("vnfId is: " + vnfId) AAIResourcesClient client = new AAIResourcesClient() - AAIResourceUri genericVnfUri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId) + AAIResourceUri genericVnfUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().genericVnf(vnfId)) AAIResultWrapper aaiRW = client.get(genericVnfUri) Map<String, Object> result = aaiRW.asMap() boolean isClosedLoopDisabled = result.getOrDefault("is-closed-loop-disabled", false) @@ -431,7 +433,7 @@ public class VnfInPlaceUpdate extends VnfCmBase { def transactionLoggingUuid = UUID.randomUUID().toString() def vnfId = execution.getVariable("vnfId") AAIResourcesClient client = new AAIResourcesClient() - AAIResourceUri genericVnfUri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId) + AAIResourceUri genericVnfUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().genericVnf(vnfId)) Map<String, Boolean> request = new HashMap<>() request.put("is-closed-loop-disabled", setDisabled) diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/vcpe/scripts/DeleteVcpeResCustService.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/vcpe/scripts/DeleteVcpeResCustService.groovy index dd1dae6edd..236e9d6266 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/vcpe/scripts/DeleteVcpeResCustService.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/vcpe/scripts/DeleteVcpeResCustService.groovy @@ -31,6 +31,7 @@ import org.onap.aaiclient.client.aai.entities.Relationships 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.bpmn.common.scripts.AbstractServiceTaskProcessor import org.onap.so.bpmn.common.scripts.ExceptionUtil @@ -205,7 +206,7 @@ public class DeleteVcpeResCustService extends AbstractServiceTaskProcessor { String serviceInstanceId = execution.getVariable('serviceInstanceId') AAIResourcesClient resourceClient = new AAIResourcesClient() - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, serviceInstanceId) + AAIResourceUri uri = AAIUriFactory.createResourceUri(Types.SERVICE_INSTANCE.getFragment(serviceInstanceId)) if(resourceClient.exists(uri)){ AAIResultWrapper wrapper = resourceClient.get(uri, NotFoundException.class) @@ -217,13 +218,13 @@ public class DeleteVcpeResCustService extends AbstractServiceTaskProcessor { if(relationships.isPresent()){ - List<AAIResourceUri> vnfUris = relationships.get().getRelatedAAIUris(AAIObjectType.GENERIC_VNF) + List<AAIResourceUri> vnfUris = relationships.get().getRelatedUris(Types.GENERIC_VNF) for(AAIResourceUri u:vnfUris){ Map<String, String> keys = u.getURIKeys() String vnfId = keys.get(AAIFluentTypeBuilder.Types.GENERIC_VNF.getUriParams().vnfId) relatedVnfIdList.add(vnfId) } - List<AAIResourceUri> arUris = relationships.get().getRelatedAAIUris(AAIObjectType.ALLOTTED_RESOURCE) + List<AAIResourceUri> arUris = relationships.get().getRelatedUris(Types.ALLOTTED_RESOURCE) for(AAIResourceUri u:arUris){ String ar = resourceClient.get(u).getJson() diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/vcpe/scripts/DoCreateAllottedResourceBRG.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/vcpe/scripts/DoCreateAllottedResourceBRG.groovy index 683b82e4a7..87c2f673ff 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/vcpe/scripts/DoCreateAllottedResourceBRG.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/vcpe/scripts/DoCreateAllottedResourceBRG.groovy @@ -27,16 +27,17 @@ import javax.ws.rs.core.UriBuilder import org.camunda.bpm.engine.delegate.BpmnError import org.camunda.bpm.engine.delegate.DelegateExecution import org.onap.aai.domain.yang.AllottedResource +import org.onap.aaiclient.client.aai.AAIResourcesClient +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.bpmn.common.scripts.* import org.onap.so.bpmn.core.RollbackData import org.onap.so.bpmn.core.UrnPropertiesReader import org.onap.so.bpmn.core.WorkflowException import org.onap.so.bpmn.core.json.JsonUtils -import org.onap.aaiclient.client.aai.AAIObjectType -import org.onap.aaiclient.client.aai.AAIResourcesClient -import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri -import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory -import org.onap.logging.filter.base.ErrorCode import org.onap.so.logger.LoggingAnchor import org.onap.so.logger.MessageEnum import org.slf4j.Logger @@ -168,7 +169,7 @@ public class DoCreateAllottedResourceBRG extends AbstractServiceTaskProcessor{ String serviceInstanceId = execution.getVariable('serviceInstanceId') AAIResourcesClient resourceClient = new AAIResourcesClient() - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, serviceInstanceId) + AAIResourceUri uri = AAIUriFactory.createResourceUri(Types.SERVICE_INSTANCE.getFragment(serviceInstanceId)) if(resourceClient.exists(uri)){ execution.setVariable("CSI_resourceLink", uri.build().toString()) @@ -230,7 +231,7 @@ public class DoCreateAllottedResourceBRG extends AbstractServiceTaskProcessor{ String serviceInstanceId = execution.getVariable('parentServiceInstanceId') AAIResourcesClient resourceClient = new AAIResourcesClient() - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, serviceInstanceId) + AAIResourceUri uri = AAIUriFactory.createResourceUri(Types.SERVICE_INSTANCE.getFragment(serviceInstanceId)) //just to make sure the serviceInstance exists if (resourceClient.exists(uri)) { @@ -265,7 +266,7 @@ public class DoCreateAllottedResourceBRG extends AbstractServiceTaskProcessor{ AAIResourceUri siResourceLink= execution.getVariable("PSI_resourceLink") - AAIResourceUri allottedResourceUri = AAIUriFactory.createResourceFromParentURI(siResourceLink, AAIObjectType.ALLOTTED_RESOURCE, allottedResourceId) + AAIResourceUri allottedResourceUri = AAIUriFactory.createResourceFromParentURI(siResourceLink, Types.ALLOTTED_RESOURCE.getFragment(allottedResourceId)) execution.setVariable("aaiARPath", allottedResourceUri.build().toString()); String arType = execution.getVariable("allottedResourceType") @@ -283,7 +284,7 @@ public class DoCreateAllottedResourceBRG extends AbstractServiceTaskProcessor{ resource.setModelInvariantId(modelInvariantId) resource.setModelVersionId(modelVersionId) getAAIClient().create(allottedResourceUri, resource) - AAIResourceUri serviceInstanceUri = AAIUriFactory.createResourceFromExistingURI(AAIObjectType.SERVICE_INSTANCE, UriBuilder.fromPath(CSI_resourceLink).build()) + AAIResourceUri serviceInstanceUri = AAIUriFactory.createResourceFromExistingURI(Types.SERVICE_INSTANCE, UriBuilder.fromPath(CSI_resourceLink).build()) getAAIClient().connect(allottedResourceUri,serviceInstanceUri) }catch (Exception ex) { exceptionUtil.buildAndThrowWorkflowException(execution, 7000, "Exception in createAaiAR " + ex.getMessage()) diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/vcpe/scripts/DoCreateAllottedResourceTXC.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/vcpe/scripts/DoCreateAllottedResourceTXC.groovy index 9782440e85..69ce713b71 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/vcpe/scripts/DoCreateAllottedResourceTXC.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/vcpe/scripts/DoCreateAllottedResourceTXC.groovy @@ -22,26 +22,26 @@ package org.onap.so.bpmn.vcpe.scripts -import org.onap.so.logger.LoggingAnchor +import static org.apache.commons.lang3.StringUtils.isBlank +import javax.ws.rs.core.UriBuilder import org.camunda.bpm.engine.delegate.BpmnError import org.camunda.bpm.engine.delegate.DelegateExecution import org.onap.aai.domain.yang.AllottedResource +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.bpmn.common.scripts.*; import org.onap.so.bpmn.core.RollbackData import org.onap.so.bpmn.core.UrnPropertiesReader import org.onap.so.bpmn.core.WorkflowException import org.onap.so.bpmn.core.json.JsonUtils -import org.onap.aaiclient.client.aai.AAIObjectType -import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri -import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory -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 javax.ws.rs.core.UriBuilder -import static org.apache.commons.lang3.StringUtils.isBlank - /** * This groovy class supports the <class>DoCreateAllottedResourceTXC.bpmn</class> process. * @@ -206,7 +206,7 @@ public class DoCreateAllottedResourceTXC extends AbstractServiceTaskProcessor{ AAIResourceUri siResourceLink= execution.getVariable("PSI_resourceLink") - AAIResourceUri allottedResourceUri = AAIUriFactory.createResourceFromParentURI(siResourceLink, AAIObjectType.ALLOTTED_RESOURCE, allottedResourceId) + AAIResourceUri allottedResourceUri = AAIUriFactory.createResourceFromParentURI(siResourceLink, Types.ALLOTTED_RESOURCE.getFragment(allottedResourceId)) execution.setVariable("aaiARPath", allottedResourceUri.build().toString()); String arType = execution.getVariable("allottedResourceType") @@ -224,7 +224,7 @@ public class DoCreateAllottedResourceTXC extends AbstractServiceTaskProcessor{ resource.setModelInvariantId(modelInvariantId) resource.setModelVersionId(modelVersionId) getAAIClient().create(allottedResourceUri, resource) - AAIResourceUri serviceInstanceUri = AAIUriFactory.createResourceFromExistingURI(AAIObjectType.SERVICE_INSTANCE, UriBuilder.fromPath(CSI_resourceLink).build()) + AAIResourceUri serviceInstanceUri = AAIUriFactory.createResourceFromExistingURI(Types.SERVICE_INSTANCE, UriBuilder.fromPath(CSI_resourceLink).build()) getAAIClient().connect(allottedResourceUri,serviceInstanceUri) }catch (Exception ex) { diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/aai/AAICreateResources.java b/bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/aai/AAICreateResources.java index 1cc68953f8..3021852734 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/aai/AAICreateResources.java +++ b/bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/aai/AAICreateResources.java @@ -23,11 +23,12 @@ package org.onap.so.bpmn.infrastructure.aai; import java.util.HashMap; import java.util.Map; import java.util.Optional; -import org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf; -import org.onap.aaiclient.client.aai.AAIObjectType; 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 org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -36,17 +37,19 @@ public class AAICreateResources extends AAIResource { private static final Logger logger = LoggerFactory.getLogger(AAICreateResources.class); public void createAAIProject(String projectName, String serviceInstance) { - AAIResourceUri projectURI = AAIUriFactory.createResourceUri(AAIObjectType.PROJECT, projectName); + AAIResourceUri projectURI = + AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().project(projectName)); AAIResourceUri serviceInstanceURI = - AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, serviceInstance); + AAIUriFactory.createResourceUri(Types.SERVICE_INSTANCE.getFragment(serviceInstance)); getAaiClient().createIfNotExists(projectURI, Optional.empty()).connect(projectURI, serviceInstanceURI); } public void createAAIOwningEntity(String owningEntityId, String owningEntityName, String serviceInstance) { - AAIResourceUri owningEntityURI = AAIUriFactory.createResourceUri(AAIObjectType.OWNING_ENTITY, owningEntityId); + AAIResourceUri owningEntityURI = + AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().owningEntity(owningEntityId)); AAIResourceUri serviceInstanceURI = - AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, serviceInstance); + AAIUriFactory.createResourceUri(Types.SERVICE_INSTANCE.getFragment(serviceInstance)); Map<String, String> hashMap = new HashMap<>(); hashMap.put("owning-entity-name", owningEntityName); getAaiClient().createIfNotExists(owningEntityURI, Optional.of(hashMap)).connect(owningEntityURI, @@ -54,39 +57,44 @@ public class AAICreateResources extends AAIResource { } public boolean existsOwningEntity(String owningEntityId) { - AAIResourceUri owningEntityURI = AAIUriFactory.createResourceUri(AAIObjectType.OWNING_ENTITY, owningEntityId); + AAIResourceUri owningEntityURI = + AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().owningEntity(owningEntityId)); return getAaiClient().exists(owningEntityURI); } public void connectOwningEntityandServiceInstance(String owningEntityId, String serviceInstance) { - AAIResourceUri owningEntityURI = AAIUriFactory.createResourceUri(AAIObjectType.OWNING_ENTITY, owningEntityId); + AAIResourceUri owningEntityURI = + AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().owningEntity(owningEntityId)); AAIResourceUri serviceInstanceURI = - AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, serviceInstance); + AAIUriFactory.createResourceUri(Types.SERVICE_INSTANCE.getFragment(serviceInstance)); getAaiClient().connect(owningEntityURI, serviceInstanceURI); } public void createAAIPlatform(String platformName, String vnfId) { - AAIResourceUri platformURI = AAIUriFactory.createResourceUri(AAIObjectType.PLATFORM, platformName); - AAIResourceUri genericVnfURI = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId); + AAIResourceUri platformURI = + AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().platform(platformName)); + AAIResourceUri genericVnfURI = + AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().genericVnf(vnfId)); getAaiClient().createIfNotExists(platformURI, Optional.empty()).connect(platformURI, genericVnfURI); } public void createAAILineOfBusiness(String lineOfBusiness, String vnfId) { AAIResourceUri lineOfBusinessURI = - AAIUriFactory.createResourceUri(AAIObjectType.LINE_OF_BUSINESS, lineOfBusiness); - AAIResourceUri genericVnfURI = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId); + AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().lineOfBusiness(lineOfBusiness)); + AAIResourceUri genericVnfURI = + AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().genericVnf(vnfId)); getAaiClient().createIfNotExists(lineOfBusinessURI, Optional.empty()).connect(lineOfBusinessURI, genericVnfURI); } public void createAAIServiceInstance(String globalCustomerId, String serviceType, String serviceInstanceId) { - AAIResourceUri serviceInstanceURI = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, - globalCustomerId, serviceType, serviceInstanceId); + AAIResourceUri serviceInstanceURI = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business() + .customer(globalCustomerId).serviceSubscription(serviceType).serviceInstance(serviceInstanceId)); getAaiClient().createIfNotExists(serviceInstanceURI, Optional.empty()); } public Optional<GenericVnf> getVnfInstance(String vnfId) { try { - AAIResourceUri vnfURI = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId); + AAIResourceUri vnfURI = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().genericVnf(vnfId)); AAIResultWrapper aaiResponse = getAaiClient().get(vnfURI); Optional<GenericVnf> vnf = aaiResponse.asBean(GenericVnf.class); return vnf; diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/aai/AAIDeleteServiceInstance.java b/bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/aai/AAIDeleteServiceInstance.java index 22166483b1..97adc4d25f 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/aai/AAIDeleteServiceInstance.java +++ b/bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/aai/AAIDeleteServiceInstance.java @@ -22,10 +22,10 @@ package org.onap.so.bpmn.infrastructure.aai; import org.camunda.bpm.engine.delegate.DelegateExecution; import org.camunda.bpm.engine.delegate.JavaDelegate; -import org.onap.so.bpmn.common.scripts.ExceptionUtil; -import org.onap.aaiclient.client.aai.AAIObjectType; 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.Types; +import org.onap.so.bpmn.common.scripts.ExceptionUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -43,7 +43,7 @@ public class AAIDeleteServiceInstance extends AAIResource implements JavaDelegat try { String serviceInstanceId = (String) execution.getVariable("serviceInstanceId"); AAIResourceUri serviceInstanceURI = - AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, serviceInstanceId); + AAIUriFactory.createResourceUri(Types.SERVICE_INSTANCE.getFragment(serviceInstanceId)); getAaiClient().delete(serviceInstanceURI); execution.setVariable("GENDS_SuccessIndicator", true); } catch (Exception ex) { diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/aai/groovyflows/AAICreateResources.java b/bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/aai/groovyflows/AAICreateResources.java index c2e2a3c258..cc7eefcbd9 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/aai/groovyflows/AAICreateResources.java +++ b/bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/aai/groovyflows/AAICreateResources.java @@ -27,11 +27,11 @@ import java.util.Map; import java.util.Optional; import org.onap.aai.domain.yang.OwningEntities; import org.onap.aai.domain.yang.OwningEntity; -import org.onap.aaiclient.client.aai.AAIObjectPlurals; -import org.onap.aaiclient.client.aai.AAIObjectType; import org.onap.aaiclient.client.aai.AAIResourcesClient; 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.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -40,18 +40,20 @@ public class AAICreateResources { private static final Logger logger = LoggerFactory.getLogger(AAICreateResources.class); public void createAAIProject(String projectName, String serviceInstance) { - AAIResourceUri projectURI = AAIUriFactory.createResourceUri(AAIObjectType.PROJECT, projectName); + AAIResourceUri projectURI = + AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().project(projectName)); AAIResourceUri serviceInstanceURI = - AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, serviceInstance); + AAIUriFactory.createResourceUri(Types.SERVICE_INSTANCE.getFragment(serviceInstance)); AAIResourcesClient aaiRC = new AAIResourcesClient(); aaiRC.createIfNotExists(projectURI, Optional.empty()).connect(projectURI, serviceInstanceURI); } public void createAAIOwningEntity(String owningEntityId, String owningEntityName, String serviceInstance) { - AAIResourceUri owningEntityURI = AAIUriFactory.createResourceUri(AAIObjectType.OWNING_ENTITY, owningEntityId); + AAIResourceUri owningEntityURI = + AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().owningEntity(owningEntityId)); AAIResourceUri serviceInstanceURI = - AAIUriFactory.createNodesUri(AAIObjectType.SERVICE_INSTANCE, serviceInstance); + AAIUriFactory.createNodesUri(Types.SERVICE_INSTANCE.getFragment(serviceInstance)); Map<String, String> hashMap = new HashMap<>(); hashMap.put("owning-entity-name", owningEntityName); AAIResourcesClient aaiRC = new AAIResourcesClient(); @@ -59,7 +61,8 @@ public class AAICreateResources { } public boolean existsOwningEntity(String owningEntityId) { - AAIResourceUri owningEntityURI = AAIUriFactory.createResourceUri(AAIObjectType.OWNING_ENTITY, owningEntityId); + AAIResourceUri owningEntityURI = + AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().owningEntity(owningEntityId)); AAIResourcesClient aaiRC = new AAIResourcesClient(); return aaiRC.exists(owningEntityURI); } @@ -67,8 +70,10 @@ public class AAICreateResources { protected OwningEntities getOwningEntityName(String owningEntityName) { AAIResourcesClient aaiRC = new AAIResourcesClient(); - return aaiRC.get(OwningEntities.class, AAIUriFactory.createResourceUri(AAIObjectPlurals.OWNING_ENTITY) - .queryParam("owning-entity-name", owningEntityName)).orElseGet(() -> { + return aaiRC.get(OwningEntities.class, + AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().owningEntities()) + .queryParam("owning-entity-name", owningEntityName)) + .orElseGet(() -> { logger.debug("No Owning Entity matched by name"); return null; }); @@ -91,31 +96,35 @@ public class AAICreateResources { } public void connectOwningEntityandServiceInstance(String owningEntityId, String serviceInstance) { - AAIResourceUri owningEntityURI = AAIUriFactory.createResourceUri(AAIObjectType.OWNING_ENTITY, owningEntityId); + AAIResourceUri owningEntityURI = + AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().owningEntity(owningEntityId)); AAIResourceUri serviceInstanceURI = - AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, serviceInstance); + AAIUriFactory.createResourceUri(Types.SERVICE_INSTANCE.getFragment(serviceInstance)); AAIResourcesClient aaiRC = new AAIResourcesClient(); aaiRC.connect(owningEntityURI, serviceInstanceURI); } public void createAAIPlatform(String platformName, String vnfId) { - AAIResourceUri platformURI = AAIUriFactory.createResourceUri(AAIObjectType.PLATFORM, platformName); - AAIResourceUri genericVnfURI = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId); + AAIResourceUri platformURI = + AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().platform(platformName)); + AAIResourceUri genericVnfURI = + AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().genericVnf(vnfId)); AAIResourcesClient aaiRC = new AAIResourcesClient(); aaiRC.createIfNotExists(platformURI, Optional.empty()).connect(platformURI, genericVnfURI); } public void createAAILineOfBusiness(String lineOfBusiness, String vnfId) { AAIResourceUri lineOfBusinessURI = - AAIUriFactory.createResourceUri(AAIObjectType.LINE_OF_BUSINESS, lineOfBusiness); - AAIResourceUri genericVnfURI = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId); + AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().lineOfBusiness(lineOfBusiness)); + AAIResourceUri genericVnfURI = + AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().genericVnf(vnfId)); AAIResourcesClient aaiRC = new AAIResourcesClient(); aaiRC.createIfNotExists(lineOfBusinessURI, Optional.empty()).connect(lineOfBusinessURI, genericVnfURI); } public void createAAIServiceInstance(String globalCustomerId, String serviceType, String serviceInstanceId) { - AAIResourceUri serviceInstanceURI = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, - globalCustomerId, serviceType, serviceInstanceId); + AAIResourceUri serviceInstanceURI = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business() + .customer(globalCustomerId).serviceSubscription(serviceType).serviceInstance(serviceInstanceId)); AAIResourcesClient aaiRC = new AAIResourcesClient(); aaiRC.createIfNotExists(serviceInstanceURI, Optional.empty()); } diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/aai/groovyflows/AAIDeleteServiceInstance.java b/bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/aai/groovyflows/AAIDeleteServiceInstance.java index bb7415da93..df42e961bb 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/aai/groovyflows/AAIDeleteServiceInstance.java +++ b/bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/aai/groovyflows/AAIDeleteServiceInstance.java @@ -22,11 +22,11 @@ package org.onap.so.bpmn.infrastructure.aai.groovyflows; import org.camunda.bpm.engine.delegate.DelegateExecution; import org.camunda.bpm.engine.delegate.JavaDelegate; -import org.onap.so.bpmn.common.scripts.ExceptionUtil; -import org.onap.aaiclient.client.aai.AAIObjectType; import org.onap.aaiclient.client.aai.AAIResourcesClient; 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.Types; +import org.onap.so.bpmn.common.scripts.ExceptionUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -42,7 +42,7 @@ public class AAIDeleteServiceInstance implements JavaDelegate { try { String serviceInstanceId = (String) execution.getVariable("serviceInstanceId"); AAIResourceUri serviceInstanceURI = - AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, serviceInstanceId); + AAIUriFactory.createResourceUri(Types.SERVICE_INSTANCE.getFragment(serviceInstanceId)); AAIResourcesClient aaiRC = new AAIResourcesClient(); aaiRC.delete(serviceInstanceURI); execution.setVariable("GENDS_SuccessIndicator", true); diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/pnf/management/PnfManagementImpl.java b/bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/pnf/management/PnfManagementImpl.java index 001e166893..03ff55b90e 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/pnf/management/PnfManagementImpl.java +++ b/bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/pnf/management/PnfManagementImpl.java @@ -22,11 +22,12 @@ package org.onap.so.bpmn.infrastructure.pnf.management; import java.util.Optional; import org.onap.aai.domain.yang.Pnf; -import org.onap.aaiclient.client.aai.AAIObjectType; import org.onap.aaiclient.client.aai.AAIResourcesClient; import org.onap.aaiclient.client.aai.AAIRestClientImpl; 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.springframework.stereotype.Component; @Component @@ -52,8 +53,8 @@ public class PnfManagementImpl implements PnfManagement { @Override public void createRelation(String serviceInstanceId, String pnfName) { AAIResourceUri serviceInstanceURI = - AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, serviceInstanceId); - AAIResourceUri pnfUri = AAIUriFactory.createResourceUri(AAIObjectType.PNF, pnfName); + AAIUriFactory.createResourceUri(Types.SERVICE_INSTANCE.getFragment(serviceInstanceId)); + AAIResourceUri pnfUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().pnf(pnfName)); new AAIResourcesClient().connect(serviceInstanceURI, pnfUri); } } diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/workflow/service/ServicePluginFactory.java b/bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/workflow/service/ServicePluginFactory.java index 99ed7b1e91..d1fc0a6353 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/workflow/service/ServicePluginFactory.java +++ b/bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/workflow/service/ServicePluginFactory.java @@ -54,19 +54,19 @@ import org.onap.aai.domain.yang.LogicalLinks; import org.onap.aai.domain.yang.PInterface; import org.onap.aai.domain.yang.Pnf; import org.onap.aai.domain.yang.Relationship; -import org.onap.logging.filter.base.ErrorCode; -import org.onap.so.bpmn.core.UrnPropertiesReader; -import org.onap.so.bpmn.core.domain.Resource; -import org.onap.so.bpmn.core.domain.ServiceDecomposition; -import org.onap.so.bpmn.core.json.JsonUtils; -import org.onap.aaiclient.client.aai.AAIObjectPlurals; -import org.onap.aaiclient.client.aai.AAIObjectType; import org.onap.aaiclient.client.aai.AAIResourcesClient; import org.onap.aaiclient.client.aai.entities.AAIResultWrapper; import org.onap.aaiclient.client.aai.entities.Relationships; 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.bpmn.core.UrnPropertiesReader; +import org.onap.so.bpmn.core.domain.Resource; +import org.onap.so.bpmn.core.domain.ServiceDecomposition; +import org.onap.so.bpmn.core.json.JsonUtils; import org.onap.so.logger.MessageEnum; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -448,7 +448,7 @@ public class ServicePluginFactory { public Map getTPsfromAAI(String serviceName) { Map<String, Object> tpInfo = new HashMap<>(); - AAIPluralResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectPlurals.LOGICAL_LINK); + AAIPluralResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().logicalLinks()); AAIResourcesClient client = new AAIResourcesClient(); Optional<LogicalLinks> result = client.get(LogicalLinks.class, uri); @@ -464,10 +464,10 @@ public class ServicePluginFactory { List<AAIResourceUri> pInterfaces = new ArrayList<>(); if (optRelationships.isPresent()) { Relationships relationships = optRelationships.get(); - if (!relationships.getRelatedAAIUris(AAIObjectType.EXT_AAI_NETWORK).isEmpty()) { + if (!relationships.getRelatedUris(Types.EXT_AAI_NETWORK).isEmpty()) { isRemoteLink = true; } - pInterfaces.addAll(relationships.getRelatedAAIUris(AAIObjectType.P_INTERFACE)); + pInterfaces.addAll(relationships.getRelatedUris(Types.P_INTERFACE)); if (isRemoteLink) { // find remote p interface AAIResourceUri localTP = null; @@ -502,8 +502,8 @@ public class ServicePluginFactory { tpInfo.put("local-access-node-id", localNodeId); logger.info("Get info for local TP :{}", localNodeId); - Optional<Pnf> optLocalPnf = - client.get(Pnf.class, AAIUriFactory.createResourceUri(AAIObjectType.PNF, localNodeId)); + Optional<Pnf> optLocalPnf = client.get(Pnf.class, + AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().pnf(localNodeId))); getTpInfoFromLocalTp(tpInfo, optLocalPnf); @@ -523,8 +523,8 @@ public class ServicePluginFactory { logger.info("Get info for remote TP:{}", remoteNodeId); String[] networkRefRemote = intfRemote.getNetworkRef().split("-"); - Optional<Pnf> optRemotePnf = - client.get(Pnf.class, AAIUriFactory.createResourceUri(AAIObjectType.PNF, remoteNodeId)); + Optional<Pnf> optRemotePnf = client.get(Pnf.class, + AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().pnf(remoteNodeId))); getTpInfoFromRemoteTp(tpInfo, networkRefRemote, optRemotePnf); @@ -584,14 +584,14 @@ public class ServicePluginFactory { if (uriString != null) { // get the pnfname String[] token = uriString.split("/"); - AAIResourceUri parent = AAIUriFactory.createResourceUri(AAIObjectType.PNF, token[4]); + AAIResourceUri parent = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().pnf(token[4])); AAIResultWrapper wrapper = client.get(parent); Optional<Relationships> optRelationships = wrapper.getRelationships(); if (optRelationships.isPresent()) { Relationships relationships = optRelationships.get(); - return !relationships.getRelatedAAIUris(AAIObjectType.EXT_AAI_NETWORK).isEmpty(); + return !relationships.getRelatedUris(Types.EXT_AAI_NETWORK).isEmpty(); } } diff --git a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateSliceServiceTest.groovy b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateSliceServiceTest.groovy index 46f061d89c..01f4d6b97b 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateSliceServiceTest.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateSliceServiceTest.groovy @@ -160,45 +160,6 @@ class CreateSliceServiceTest extends MsoGroovyTest { } @Test - void testPrepareDecomposeService() { - when(mockExecution.getVariable("uuiRequest")).thenReturn(uuiRequest) - when(mockExecution.getVariable("serviceProfile")).thenReturn(serviceProfile) - CreateSliceService sliceService = new CreateSliceService() - sliceService.prepareDecomposeService(mockExecution) - - String serviceModelInfoExcept = """{ - "modelInvariantUuid":"123456", - "modelUuid":"123456", - "modelVersion":"" - }""" - Mockito.verify(mockExecution, times(1)).setVariable(eq("ssServiceModelInfo"), captor.capture()) - String serviceModelInfo = captor.getValue() - assertEquals(serviceModelInfoExcept.replaceAll("\\s+", ""), - serviceModelInfo.replaceAll("\\s+", "")) - } - - @Test - void testProcessDecomposition() { - when(mockExecution.getVariable("uuiRequest")).thenReturn(uuiRequest) - when(mockExecution.getVariable("serviceProfile")).thenReturn(serviceProfile) - when(mockExecution.getVariable("nstSolution")).thenReturn(nstSolution) - - CreateSliceService sliceService = new CreateSliceService() - sliceService.processDecomposition(mockExecution) - - Mockito.verify(mockExecution, times(1)).setVariable(eq("subscriptionServiceType"), captor.capture()) - assertEquals(captor.getValue(), "5G") - Mockito.verify(mockExecution, times(1)).setVariable(eq("serviceType"), captor.capture()) - assertEquals(captor.getValue(), "embb") - Mockito.verify(mockExecution, times(1)).setVariable(eq("resourceSharingLevel"), captor.capture()) - assertEquals(captor.getValue(), "shared") - Mockito.verify(mockExecution, times(1)).setVariable(eq("nstModelUuid"), captor.capture()) - assertEquals(captor.getValue(), "aaaaaa") - Mockito.verify(mockExecution, times(1)).setVariable(eq("nstModelInvariantUuid"), captor.capture()) - assertEquals(captor.getValue(), "bbbbbb") - } - - @Test void testPrepareCreateOrchestrationTask() { when(mockExecution.getVariable("serviceInstanceId")).thenReturn("123456") when(mockExecution.getVariable("serviceInstanceName")).thenReturn("test") diff --git a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateVFCNSResourceTest.groovy b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateVFCNSResourceTest.groovy index 1551533e53..61b4957310 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateVFCNSResourceTest.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateVFCNSResourceTest.groovy @@ -30,6 +30,8 @@ import org.onap.so.bpmn.common.scripts.MsoGroovyTest import org.onap.aaiclient.client.aai.AAIObjectType 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 javax.ws.rs.NotFoundException @@ -59,8 +61,8 @@ class CreateVFCNSResourceTest extends MsoGroovyTest{ when(mockExecution.getVariable("nsInstanceId")).thenReturn("nsInstanceId") doNothing().when(client).connect(isA(AAIResourceUri.class),isA(AAIResourceUri.class)) createVFCNSResource.addNSRelationship(mockExecution) - AAIResourceUri nsUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE,"globalSubscriberId1","serviceType","nsInstanceId") - AAIResourceUri relatedServiceUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE,"globalSubscriberId1","serviceType","serviceInstanceId") + AAIResourceUri nsUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer("globalSubscriberId1").serviceSubscription("serviceType").serviceInstance("nsInstanceId")) + AAIResourceUri relatedServiceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer("globalSubscriberId1").serviceSubscription("serviceType").serviceInstance("serviceInstanceId")) Mockito.verify(client).connect(nsUri,relatedServiceUri) } diff --git a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateVfModuleVolumeInfraV1Test.groovy b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateVfModuleVolumeInfraV1Test.groovy index 09b17701a6..c19cdfdb04 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateVfModuleVolumeInfraV1Test.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateVfModuleVolumeInfraV1Test.groovy @@ -38,6 +38,8 @@ import org.onap.aaiclient.client.aai.AAIObjectType 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.junit.Assert.assertEquals import static org.mockito.Mockito.* diff --git a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteCommunicationServiceTest.groovy b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteCommunicationServiceTest.groovy index 39d0334bef..51d64af550 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteCommunicationServiceTest.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteCommunicationServiceTest.groovy @@ -19,29 +19,29 @@ */ package org.onap.so.bpmn.infrastructure.scripts +import static org.junit.Assert.assertEquals +import static org.junit.Assert.assertNotNull +import static org.mockito.Mockito.* +import javax.ws.rs.NotFoundException +import javax.ws.rs.core.Response import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity import org.junit.Before import org.junit.Test import org.mockito.ArgumentCaptor import org.mockito.Captor import org.mockito.Mockito +import org.onap.aaiclient.client.aai.AAIObjectType +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.AAIUriFactory +import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder +import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder.Types import org.onap.logging.filter.base.ONAPComponents import org.onap.so.bpmn.common.scripts.MsoGroovyTest import org.onap.so.bpmn.core.WorkflowException import org.onap.so.client.HttpClient import org.onap.so.client.HttpClientFactory -import org.onap.aaiclient.client.aai.AAIObjectType -import org.onap.aaiclient.client.aai.entities.AAIResultWrapper -import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri -import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory - -import javax.ws.rs.NotFoundException -import javax.ws.rs.core.Response - -import static org.junit.Assert.assertEquals -import static org.junit.Assert.assertNotNull -import static org.mockito.ArgumentMatchers.eq -import static org.mockito.Mockito.* class DeleteCommunicationServiceTest extends MsoGroovyTest { @@ -96,7 +96,7 @@ class DeleteCommunicationServiceTest extends MsoGroovyTest { when(mockExecution.getVariable("globalSubscriberId")).thenReturn("5GCustomer") when(mockExecution.getVariable("serviceType")).thenReturn("5G") - AAIResourceUri resourceUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, "5GCustomer", "5G", "5ad89cf9-0569-4a93-9306-d8324321e2be") + AAIResourceUri resourceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer("5GCustomer").serviceSubscription("5G").serviceInstance("5ad89cf9-0569-4a93-9306-d8324321e2be")) DeleteCommunicationService obj = spy(DeleteCommunicationService.class) AAIResultWrapper wrapper = new AAIResultWrapper(mockQueryCommunicationServiceReturn()) @@ -126,8 +126,8 @@ class DeleteCommunicationServiceTest extends MsoGroovyTest { when(mockExecution.getVariable("serviceType")).thenReturn("5G") AAIResultWrapper wrapper = new AAIResultWrapper(mockQueryCommunicationServiceProfile()) - AAIResourceUri resourceUri = AAIUriFactory.createResourceUri(AAIObjectType.COMMUNICATION_PROFILE_ALL, "5GCustomer", "5G", "5ad89cf9-0569-4a93-9306-d8324321e2be") - AAIResourceUri profileUri = AAIUriFactory.createResourceUri(AAIObjectType.COMMUNICATION_SERVICE_PROFILE, "5GCustomer", "5G", "5ad89cf9-0569-4a93-9306-d8324321e2be", "5G-111111") + AAIPluralResourceUri resourceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer("5GCustomer").serviceSubscription("5G").serviceInstance("5ad89cf9-0569-4a93-9306-d8324321e2be").communicationServiceProfiles()) + AAIResourceUri profileUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer("5GCustomer").serviceSubscription("5G").serviceInstance("5ad89cf9-0569-4a93-9306-d8324321e2be").communicationServiceProfile("5G-111111")) DeleteCommunicationService obj = spy(DeleteCommunicationService.class) when(obj.getAAIClient()).thenReturn(client) @@ -162,7 +162,7 @@ class DeleteCommunicationServiceTest extends MsoGroovyTest { when(mockExecution.getVariable("globalSubscriberId")).thenReturn("5GCustomer") when(mockExecution.getVariable("serviceType")).thenReturn("5G") - AAIResourceUri serviceInstanceUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, "5GCustomer", "5G", "5ad89cf9-0569-4a93-9306-d8324321e2be") + AAIResourceUri serviceInstanceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer("5GCustomer").serviceSubscription("5G").serviceInstance("5ad89cf9-0569-4a93-9306-d8324321e2be")) DeleteCommunicationService obj = spy(DeleteCommunicationService.class) when(obj.getAAIClient()).thenReturn(client) doNothing().when(client).delete(serviceInstanceUri) diff --git a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteSliceServiceTest.groovy b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteSliceServiceTest.groovy index 1a9c6bb474..75b606c630 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteSliceServiceTest.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteSliceServiceTest.groovy @@ -19,29 +19,27 @@ */ package org.onap.so.bpmn.infrastructure.scripts +import static org.junit.Assert.assertNotNull +import static org.mockito.ArgumentMatchers.eq +import static org.mockito.Mockito.doNothing +import static org.mockito.Mockito.spy +import static org.mockito.Mockito.times +import static org.mockito.Mockito.when +import javax.ws.rs.NotFoundException import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity import org.junit.Before import org.junit.Test import org.mockito.ArgumentCaptor import org.mockito.Captor import org.mockito.Mockito -import org.onap.so.bpmn.common.scripts.MsoGroovyTest -import org.onap.so.bpmn.core.WorkflowException -import org.onap.aaiclient.client.aai.AAIObjectType 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.AAIUriFactory - -import javax.ws.rs.NotFoundException - -import static org.junit.Assert.assertNotNull -import static org.mockito.ArgumentMatchers.eq -import static org.mockito.Mockito.doNothing -import static org.mockito.Mockito.spy -import static org.mockito.Mockito.times -import static org.mockito.Mockito.when -import static org.mockito.Mockito.when -import static org.mockito.Mockito.when +import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder +import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder.Types +import org.onap.so.bpmn.common.scripts.MsoGroovyTest +import org.onap.so.bpmn.core.WorkflowException class DeleteSliceServiceTest extends MsoGroovyTest { @Before @@ -86,7 +84,7 @@ class DeleteSliceServiceTest extends MsoGroovyTest { when(mockExecution.getVariable("progress")).thenReturn("100") when(mockExecution.getVariable("operationContent")).thenReturn("NSMF completes slicing service termination.") - AAIResourceUri serviceInstanceUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, "5GCustomer", "5G", "5ad89cf9-0569-4a93-9306-d8324321e2be") + AAIResourceUri serviceInstanceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer("5GCustomer").serviceSubscription("5G").serviceInstance("5ad89cf9-0569-4a93-9306-d8324321e2be")) DeleteSliceService obj = spy(DeleteSliceService.class) when(obj.getAAIClient()).thenReturn(client) doNothing().when(client).delete(serviceInstanceUri) @@ -104,8 +102,8 @@ class DeleteSliceServiceTest extends MsoGroovyTest { when(mockExecution.getVariable("serviceType")).thenReturn("5G") AAIResultWrapper wrapper = new AAIResultWrapper(mockQuerySliceServiceProfile()) - AAIResourceUri resourceUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_PROFILE_ALL, "5GCustomer", "5G", "5ad89cf9-0569-4a93-9306-d8324321e2be") - AAIResourceUri profileUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_PROFILE, "5GCustomer", "5G", "5ad89cf9-0569-4a93-9306-d8324321e2be", "5G-2222222") + AAIPluralResourceUri resourceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer("5GCustomer").serviceSubscription("5G").serviceInstance("5ad89cf9-0569-4a93-9306-d8324321e2be").serviceProfiles()) + AAIResourceUri profileUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer("5GCustomer").serviceSubscription("5G").serviceInstance("5ad89cf9-0569-4a93-9306-d8324321e2be").serviceProfile("5G-2222222")) DeleteSliceService obj = spy(DeleteSliceService.class) when(obj.getAAIClient()).thenReturn(client) diff --git a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteVfModuleVolumeInfraV1Test.groovy b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteVfModuleVolumeInfraV1Test.groovy index 7137799433..0f0946dca2 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteVfModuleVolumeInfraV1Test.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteVfModuleVolumeInfraV1Test.groovy @@ -39,6 +39,8 @@ import org.onap.aaiclient.client.aai.AAIObjectType 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 org.onap.aaiclient.client.graphinventory.exceptions.GraphInventoryUriComputationException import javax.ws.rs.NotFoundException @@ -251,7 +253,7 @@ class DeleteVfModuleVolumeInfraV1Test extends MsoGroovyTest { volumeGroup.setVolumeGroupId("volumeGroupId1") when(mockExecution.getVariable("DELVfModVol_queryAAIVolGrpResponse")).thenReturn(volumeGroup) when(mockExecution.getVariable("DELVfModVol_aicCloudRegion")).thenReturn("region1") - AAIResourceUri resourceUri = AAIUriFactory.createResourceUri(AAIObjectType.VOLUME_GROUP,CLOUD_OWNER, "region1","volumeGroupId1") + AAIResourceUri resourceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.cloudInfrastructure().cloudRegion(CLOUD_OWNER, "region1").volumeGroup("volumeGroupId1")) doNothing().when(client).delete(resourceUri) deleteVfModuleVolumeInfraV1.deleteVolGrpId(mockExecution, true) verify(client).delete(resourceUri) @@ -263,7 +265,7 @@ class DeleteVfModuleVolumeInfraV1Test extends MsoGroovyTest { volumeGroup.setVolumeGroupId("volumeGroupId1") when(mockExecution.getVariable("DELVfModVol_queryAAIVolGrpResponse")).thenReturn(volumeGroup) when(mockExecution.getVariable("DELVfModVol_aicCloudRegion")).thenReturn("region1") - AAIResourceUri resourceUri = AAIUriFactory.createResourceUri(AAIObjectType.VOLUME_GROUP,CLOUD_OWNER, "region1","volumeGroupId1") + AAIResourceUri resourceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.cloudInfrastructure().cloudRegion(CLOUD_OWNER, "region1").volumeGroup("volumeGroupId1")) doThrow(new NotFoundException("Not Found")).when(client).delete(resourceUri) try { deleteVfModuleVolumeInfraV1.deleteVolGrpId(mockExecution, true) @@ -282,7 +284,7 @@ class DeleteVfModuleVolumeInfraV1Test extends MsoGroovyTest { volumeGroup.setVolumeGroupId("volumeGroupId1") when(mockExecution.getVariable("DELVfModVol_queryAAIVolGrpResponse")).thenReturn(volumeGroup) when(mockExecution.getVariable("DELVfModVol_aicCloudRegion")).thenReturn("region1") - AAIResourceUri resourceUri = AAIUriFactory.createResourceUri(AAIObjectType.VOLUME_GROUP,CLOUD_OWNER, "region1","volumeGroupId1") + AAIResourceUri resourceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.cloudInfrastructure().cloudRegion(CLOUD_OWNER, "region1").volumeGroup("volumeGroupId1")) doThrow(new GraphInventoryUriComputationException("Error")).when(client).delete(resourceUri) try { deleteVfModuleVolumeInfraV1.deleteVolGrpId(mockExecution, true) diff --git a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoActivateCoreNSSITest.groovy b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoActivateCoreNSSITest.groovy index a39ca04d71..69780939ef 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoActivateCoreNSSITest.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoActivateCoreNSSITest.groovy @@ -34,6 +34,8 @@ import org.onap.aaiclient.client.aai.AAIObjectType 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 @@ -81,7 +83,7 @@ class DoActivateCoreNSSITest extends MsoGroovyTest { DoActivateCoreNSSI obj = spy(DoActivateCoreNSSI.class) when(obj.getAAIClient()).thenReturn(client) - AAIResourceUri resourceUri1 = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, "5GCustomer", "5G", "NSSI-C-7Q4-HDBNJ-NSSMF-01-A-ZX") + 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()) when(client.get(resourceUri1, NotFoundException.class)).thenReturn(wrapper1) @@ -89,14 +91,14 @@ class DoActivateCoreNSSITest extends MsoGroovyTest { //networkServiceInstanceId when(mockExecution.getVariable("networkServiceInstanceId")).thenReturn("206535e7-77c9-4036-9387-3f1cf57b4379") - AAIResourceUri resourceUri2 = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, "5GCustomer", "5G", "206535e7-77c9-4036-9387-3f1cf57b4379") + AAIResourceUri resourceUri2 = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer("5GCustomer").serviceSubscription("5G").serviceInstance("206535e7-77c9-4036-9387-3f1cf57b4379")) 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(AAIObjectType.GENERIC_VNF, "eeb66c6f-36bd-47ad-8294-48f46b1aa912") + AAIResourceUri resourceUri3 = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().genericVnf("eeb66c6f-36bd-47ad-8294-48f46b1aa912")) when(client.exists(resourceUri3)).thenReturn(true) AAIResultWrapper wrapper3 = new AAIResultWrapper(mockQueryVnf()) when(client.get(resourceUri3, NotFoundException.class)).thenReturn(wrapper3) @@ -104,14 +106,14 @@ class DoActivateCoreNSSITest extends MsoGroovyTest { //Allotted Resources-1 //when(mockExecution.getVariable("vnfId")).thenReturn("eeb66c6f-36bd-47ad-8294-48f46b1aa912") - AAIResourceUri resourceUri4 = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, "5GCustomer", "5G", "0d3d3cce-46a8-486d-816a-954e71697c4e") + AAIResourceUri resourceUri4 = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer("5GCustomer").serviceSubscription("5G").serviceInstance("0d3d3cce-46a8-486d-816a-954e71697c4e")) when(client.exists(resourceUri4)).thenReturn(true) AAIResultWrapper wrapper4 = new AAIResultWrapper(mockServiceProfile1()) when(client.get(resourceUri4, NotFoundException.class)).thenReturn(wrapper4) //Allotted Resources-2 //when(mockExecution.getVariable("vnfId")).thenReturn("eeb66c6f-36bd-47ad-8294-48f46b1aa912") - AAIResourceUri resourceUri5 = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, "5GCustomer", "5G", "1c7046f2-a5a3-4d7f-9da8-388ee641a795") + AAIResourceUri resourceUri5 = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer("5GCustomer").serviceSubscription("5G").serviceInstance("1c7046f2-a5a3-4d7f-9da8-388ee641a795")) when(client.exists(resourceUri5)).thenReturn(true) AAIResultWrapper wrapper5 = new AAIResultWrapper(mockServiceProfile2()) when(client.get(resourceUri5, NotFoundException.class)).thenReturn(wrapper5) 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 e5799eca66..0ac48ad189 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,8 +20,6 @@ package org.onap.so.bpmn.infrastructure.scripts -import static org.junit.Assert.* - import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity import org.junit.Before import org.junit.Test @@ -33,6 +31,8 @@ import org.onap.aaiclient.client.aai.AAIObjectType 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 @@ -137,7 +137,7 @@ class DoAllocateCoreSharedSliceTest extends MsoGroovyTest { DoAllocateCoreSharedSlice obj = spy(DoAllocateCoreSharedSlice.class) when(obj.getAAIClient()).thenReturn(client) - AAIResourceUri resourceUri1 = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, "5GCustomer", "5G", "NSSI-C-7Q4-HDBNJ-NSSMF-01-A-ZX") + 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()) when(client.get(resourceUri1, NotFoundException.class)).thenReturn(wrapper1) @@ -145,27 +145,27 @@ class DoAllocateCoreSharedSliceTest extends MsoGroovyTest { //networkServiceInstanceId when(mockExecution.getVariable("networkServiceInstanceId")).thenReturn("206535e7-77c9-4036-9387-3f1cf57b4379") - AAIResourceUri resourceUri2 = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, "5GCustomer", "5G", "206535e7-77c9-4036-9387-3f1cf57b4379") + AAIResourceUri resourceUri2 = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer("5GCustomer").serviceSubscription("5G").serviceInstance("206535e7-77c9-4036-9387-3f1cf57b4379")) 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(AAIObjectType.GENERIC_VNF, "eeb66c6f-36bd-47ad-8294-48f46b1aa912") + AAIResourceUri resourceUri3 = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().genericVnf("eeb66c6f-36bd-47ad-8294-48f46b1aa912")) 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(AAIObjectType.SERVICE_INSTANCE, "5GCustomer", "5G", "0d3d3cce-46a8-486d-816a-954e71697c4e") + AAIResourceUri resourceUri4 = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer("5GCustomer").serviceSubscription("5G").serviceInstance("0d3d3cce-46a8-486d-816a-954e71697c4e")) when(client.exists(resourceUri4)).thenReturn(true) AAIResultWrapper wrapper4 = new AAIResultWrapper(mockServiceProfile1()) when(client.get(resourceUri4, NotFoundException.class)).thenReturn(wrapper4) //Allotted Resources-2 - AAIResourceUri resourceUri5 = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, "5GCustomer", "5G", "1c7046f2-a5a3-4d7f-9da8-388ee641a795") + AAIResourceUri resourceUri5 = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer("5GCustomer").serviceSubscription("5G").serviceInstance("1c7046f2-a5a3-4d7f-9da8-388ee641a795")) when(client.exists(resourceUri5)).thenReturn(true) AAIResultWrapper wrapper5 = new AAIResultWrapper(mockServiceProfile2()) when(client.get(resourceUri5, NotFoundException.class)).thenReturn(wrapper5) diff --git a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateTnNssiTest.groovy b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateTnNssiTest.groovy index 33110b6e5b..6ea2be8e55 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateTnNssiTest.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateTnNssiTest.groovy @@ -29,6 +29,8 @@ import org.mockito.Mockito import org.onap.aaiclient.client.aai.AAIObjectType 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.so.bpmn.common.scripts.MsoGroovyTest import static org.junit.Assert.assertNotNull @@ -82,7 +84,7 @@ class DoAllocateTnNssiTest extends MsoGroovyTest { // String sliceProfile = jsonUtil.getJsonValue(mockSliceParams(), "sliceProfile") // when(mockExecution.getVariable("sliceProfile")).thenReturn(sliceProfile) - AAIResourceUri serviceInstanceUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, "5GCustomer", "5G", "5ad89cf9-0569-4a93-9306-d8324321e2be") + AAIResourceUri serviceInstanceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer("5GCustomer").serviceSubscription("5G").serviceInstance("5ad89cf9-0569-4a93-9306-d8324321e2be")) DoCreateTnNssiInstance obj = spy(DoCreateTnNssiInstance.class) when(obj.getAAIClient()).thenReturn(client) diff --git a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCommonCoreNSSITest.groovy b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCommonCoreNSSITest.groovy new file mode 100644 index 0000000000..2c943ffc7c --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCommonCoreNSSITest.groovy @@ -0,0 +1,585 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2020 Telecom Italia + * ================================================================================ + * 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 org.junit.Before +import org.junit.Test +import org.mockito.Mockito +import org.onap.aai.domain.yang.* +import org.onap.aaiclient.client.aai.AAIObjectType +import org.onap.aaiclient.client.aai.entities.AAIResultWrapper +import org.onap.aaiclient.client.aai.entities.Relationships +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.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder.Types +import org.onap.aaiclient.client.aai.entities.uri.ServiceInstanceUri +import org.onap.so.bpmn.common.scripts.MsoGroovyTest +import org.onap.so.serviceinstancebeans.RequestDetails + +import static org.junit.Assert.assertNotNull +import static org.junit.Assert.assertTrue +import static org.mockito.Mockito.* + +class DoCommonCoreNSSITest extends MsoGroovyTest { + @Before + void init() throws IOException { + super.init("DoCommonCoreNSSITest") + } + + + @Test + void testPreProcessRequest() { + def currentNSSI = [:] + currentNSSI.put("nssiId","5G-999") + when(mockExecution.getVariable("currentNSSI")).thenReturn(currentNSSI) + + DoCommonCoreNSSI dcnssi = new DoCommonCoreNSSI() + dcnssi.preProcessRequest(mockExecution) + Mockito.verify(mockExecution,times(1)).getVariable("currentNSSI") + } + + + @Test + void testGetNetworkServiceInstance() { + def currentNSSI = [:] + currentNSSI.put("nssiId","5G-999") + + when(mockExecution.getVariable("currentNSSI")).thenReturn(currentNSSI) + + AAIResourceUri nssiUri = AAIUriFactory.createResourceUri(Types.SERVICE_INSTANCE.getFragment("5G-999")) + AAIResourceUri networkServiceInstanceUri = AAIUriFactory.createResourceUri(Types.SERVICE_INSTANCE.getFragment("NS-777")) + + ServiceInstance nssi = new ServiceInstance() + nssi.setServiceInstanceId("5G-999") + + ServiceInstance networkServiceInstance = new ServiceInstance() + networkServiceInstance.setServiceInstanceId("NS-777") + networkServiceInstance.setServiceRole("Network Service") + + Optional<ServiceInstance> nssiOpt = Optional.of(nssi) + Optional<ServiceInstance> networkServiceInstaneOpt = Optional.of(networkServiceInstance) + + DoCommonCoreNSSI spy = spy(DoCommonCoreNSSI.class) + when(spy.getAAIClient()).thenReturn(client) + + when(client.get(ServiceInstance.class, nssiUri)).thenReturn(nssiOpt) + + //String json = FileUtil.readResourceFile("__files/AAI/ServiceInstanceWithAR.json") + AAIResultWrapper wrapperMock = mock(AAIResultWrapper.class) //new AAIResultWrapper(json) + Relationships rsMock = mock(Relationships.class) + Optional<Relationships> orsMock = Optional.of(rsMock) + List<AAIResourceUri> arus = new ArrayList<>() + AAIResourceUri aru = new ServiceInstanceUri(networkServiceInstanceUri) + arus.add(aru) + + when(client.get(nssiUri)).thenReturn(wrapperMock) + when(wrapperMock.getRelationships()).thenReturn(orsMock) + + when(rsMockgetRelatedUris(Types.SERVICE_INSTANCE)).thenReturn(arus) + when(client.get(ServiceInstance.class, aru)).thenReturn(networkServiceInstaneOpt) + + spy.getNetworkServiceInstance(mockExecution) + + assertTrue("Either NSSI doesn't exist or unexpected NSSI Service Instance ID", + currentNSSI.get("nssi") != null && ((ServiceInstance)currentNSSI.get("nssi")).getServiceInstanceId().equals(nssi.getServiceInstanceId())) + + assertTrue("Either Network Service Instance doesn't exist or unexpected Network Service Instance ID", + currentNSSI.get("networkServiceInstance") != null && ((ServiceInstance)currentNSSI.get("networkServiceInstance")).getServiceInstanceId().equals(networkServiceInstance.getServiceInstanceId())) + + assertNotNull("networkServiceInstanceUri doesn't exist", currentNSSI.get("networkServiceInstanceUri")) + } + + + @Test + void getConstituteVNFFromNetworkServiceInst() { + def currentNSSI = [:] + + when(mockExecution.getVariable("currentNSSI")).thenReturn(currentNSSI) + + DoCommonCoreNSSI spy = spy(DoCommonCoreNSSI.class) + when(spy.getAAIClient()).thenReturn(client) + + ServiceInstance networkServiceInstance = new ServiceInstance() + networkServiceInstance.setServiceInstanceId("NS-777") + networkServiceInstance.setServiceRole("Network Service") + + GenericVnf genericVNF = new GenericVnf() + genericVNF.setVnfId("VNF-1") + + AAIResourceUri networkServiceInstanceUri = AAIUriFactory.createResourceUri(Types.SERVICE_INSTANCE.getFragment(networkServiceInstance.getServiceInstanceId())) + + Optional<GenericVnf> genericVnfOpt = Optional.of(genericVNF) + AAIResourceUri genericVNFUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().genericVnf(genericVNF.getVnfId())) + + currentNSSI.put("networkServiceInstanceUri", networkServiceInstanceUri) + currentNSSI.put("networkServiceInstance", networkServiceInstance) + + AAIResultWrapper wrapperMock = mock(AAIResultWrapper.class) //new AAIResultWrapper(json) + Relationships rsMock = mock(Relationships.class) + Optional<Relationships> orsMock = Optional.of(rsMock) + List<AAIResourceUri> arus = new ArrayList<>() + AAIResourceUri aru = new AAISimpleUri(genericVNFUri) + arus.add(aru) + + when(client.get(networkServiceInstanceUri)).thenReturn(wrapperMock) + when(wrapperMock.getRelationships()).thenReturn(orsMock) + + when(rsMockgetRelatedUris(Types.GENERIC_VNF)).thenReturn(arus) + when(client.get(GenericVnf.class, genericVNFUri)).thenReturn(genericVnfOpt) + + spy.getConstituteVNFFromNetworkServiceInst(mockExecution) + + assertNotNull("constituteVnfUri doesn't exist", currentNSSI.get("constituteVnfUri")) + + assertTrue("Either Constitute VNF doesn't exist or unexpected VNF ID", + currentNSSI.get("constituteVnf") != null && ((GenericVnf)currentNSSI.get("constituteVnf")).getVnfId().equals(genericVNF.getVnfId())) + } + + + @Test + void testGetNSSIAssociatedProfiles() { + def currentNSSI = [:] + when(mockExecution.getVariable("currentNSSI")).thenReturn(currentNSSI) + + ServiceInstance nssi = new ServiceInstance() + nssi.setServiceInstanceId("5G-999") + + SliceProfiles sliceProfiles = new SliceProfiles() + + List<SliceProfile> slProfiles = sliceProfiles.getSliceProfile() + slProfiles.add(new SliceProfile()) + slProfiles.add(new SliceProfile()) + + nssi.setSliceProfiles(sliceProfiles) + currentNSSI.put("nssi", nssi) + + DoCommonCoreNSSI obj = new DoCommonCoreNSSI() + obj.getNSSIAssociatedProfiles(mockExecution) + + List<SliceProfile> associatedProfiles = (List<SliceProfile>)currentNSSI.get("associatedProfiles") + assertTrue("Either associatedProfiles doesn't exist or size is incorrect", (associatedProfiles != null && associatedProfiles.size() == 2)) + } + + + @Test + void testInvokePUTServiceInstance() { + def currentNSSI = [:] + + ServiceInstance networkServiceInstance = new ServiceInstance() + networkServiceInstance.setServiceInstanceId("NS-777") + networkServiceInstance.setServiceRole("Network Service") + + GenericVnf constituteVnf = new GenericVnf() + constituteVnf.setVnfId("VNF-1") + + when(mockExecution.getVariable("currentNSSI")).thenReturn(currentNSSI) + + currentNSSI.put("networkServiceInstance", networkServiceInstance) + currentNSSI.put("constituteVnf", constituteVnf) + + when(mockExecution.getVariable("mso.infra.endpoint.url")).thenReturn("http://mso.onap:8088") + when(mockExecution.getVariable("mso.msoKey")).thenReturn("mso.msoKey") + when(mockExecution.getVariable("mso.infra.endpoint.auth")).thenReturn("mso.infra.endpoint.auth") + + DoCommonCoreNSSI spy = spy(DoCommonCoreNSSI.class) + when(spy.getAAIClient()).thenReturn(client) + + when(spy.encryptBasicAuth("mso.infra.endpoint.auth", "mso.msoKey")).thenReturn("auth-value") + + String authHeaderResponse = "auth-header" + + when(spy.getAuthHeader(mockExecution, "auth-value", "mso.msoKey")).thenReturn(authHeaderResponse) + + String urlString = String.format("http://mso.onap:8088/serviceInstantiation/v7/serviceInstances/%s/vnfs/%s", networkServiceInstance.getServiceInstanceId(), constituteVnf.getVnfId()) + + String callPUTServiceInstanceResponse = "put" + + RequestDetails requestDetails = new RequestDetails() + ObjectMapper mapper = new ObjectMapper() + String requestDetailsStr = mapper.writeValueAsString(requestDetails) + + when(spy.prepareRequestDetails(mockExecution)).thenReturn(requestDetailsStr) + + when(spy.callPUTServiceInstance(urlString, "auth-header", requestDetailsStr)).thenReturn(callPUTServiceInstanceResponse) + + spy.invokePUTServiceInstance(mockExecution) + } + + + @Test + void testRemoveSPAssociationWithNSSI() { + def currentNSSI = [:] + + when(mockExecution.getVariable("currentNSSI")).thenReturn(currentNSSI) + + String nssiId = "5G-999" + currentNSSI.put("nssiId", nssiId) + ServiceInstance nssi = new ServiceInstance() + nssi.setServiceInstanceId(nssiId) + nssi.setSliceProfiles(new SliceProfiles()) + + currentNSSI.put("nssi", nssi) + + AAIResourceUri nssiUri = AAIUriFactory.createResourceUri(Types.SERVICE_INSTANCE.getFragment(nssiId)) + + DoCommonCoreNSSI spy = spy(DoCommonCoreNSSI.class) + + when(spy.getAAIClient()).thenReturn(client) + + String theSNSSAI = "theS-NSSAI" + currentNSSI.put("S-NSSAI", theSNSSAI) + + List<SliceProfile> associatedProfiles = nssi.getSliceProfiles().getSliceProfile() + + SliceProfile sliceProfile1 = new SliceProfile() + sliceProfile1.setSNssai("snssai1") + + SliceProfile sliceProfile2 = new SliceProfile() + sliceProfile2.setSNssai(theSNSSAI) + + SliceProfile sliceProfile3 = new SliceProfile() + sliceProfile3.setSNssai("snssai3") + + associatedProfiles.add(sliceProfile1) + associatedProfiles.add(sliceProfile2) + associatedProfiles.add(sliceProfile3) + + int sizeBefore = associatedProfiles.size() + + doNothing().when(client).update(nssiUri, nssi) + + spy.removeSPAssociationWithNSSI(mockExecution) + + assertTrue("Association between slice profile and NSSI wasn't removed", ((ServiceInstance)currentNSSI.get("nssi")).getSliceProfiles().getSliceProfile().size() == (sizeBefore - 1)) + } + + + @Test + void testDeleteSliceProfileInstance() { + def currentNSSI = [:] + + when(mockExecution.getVariable("currentNSSI")).thenReturn(currentNSSI) + + String globalSubscriberId = "global-id" + String serviceType = "service" + String nssiId = "5G-999" + + currentNSSI.put("globalSubscriberId", globalSubscriberId) + currentNSSI.put("serviceType", serviceType) + currentNSSI.put("nssiId", nssiId) + + String theSNSSAI = "theS-NSSAI" + + SliceProfile sliceProfile = new SliceProfile() + sliceProfile.setSNssai(theSNSSAI) + sliceProfile.setProfileId("prof-id") + + AAIResourceUri nssiUri = AAIUriFactory.createResourceUri(Types.SERVICE_INSTANCE.getFragment(nssiId)) + + currentNSSI.put("sliceProfileS-NSSAI", sliceProfile) + + DoCommonCoreNSSI spy = spy(DoCommonCoreNSSI.class) + + when(spy.getAAIClient()).thenReturn(client) + + doNothing().when(client).delete(nssiUri) + + spy.deleteSliceProfileInstance(mockExecution) + + } + + + @Test + void testUpdateServiceOperationStatus() { + def currentNSSI = [:] + + when(mockExecution.getVariable("currentNSSI")).thenReturn(currentNSSI) + + String nssiId = "5G-999" + + currentNSSI.put("nssiId", nssiId) + currentNSSI.put("e2eServiceInstanceId", "e2eServiceInstanceId") + currentNSSI.put("operationId", "operationId") + currentNSSI.put("operationType", "operationType") + + DoCommonCoreNSSI spy = spy(DoCommonCoreNSSI.class) + + spy.updateServiceOperationStatus(mockExecution) + + } + + + @Test + void testPrepareRequestDetails() { + def currentNSSI = [:] + + when(mockExecution.getVariable("currentNSSI")).thenReturn(currentNSSI) + + ServiceInstance networkServiceInstance = new ServiceInstance() + networkServiceInstance.setServiceInstanceId("NS-777") + networkServiceInstance.setServiceRole("Network Service") + networkServiceInstance.setModelInvariantId("model-invariant-id") + networkServiceInstance.setServiceInstanceName("service-instance-name") + + ServiceInstance nssi = new ServiceInstance() + nssi.setServiceInstanceId("5G-999") + nssi.setOrchestrationStatus("orchestration-status") + + AAIResourceUri networkServiceInstanceUri = AAIUriFactory.createResourceUri(Types.SERVICE_INSTANCE.getFragment(networkServiceInstance.getServiceInstanceId())) + + AAIResourceUri cloudRegionAAIUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.cloudInfrastructure().cloudRegion("cloud-owner", "cloud-region-id")) + + currentNSSI.put("networkServiceInstanceUri", networkServiceInstanceUri) + + currentNSSI.put("networkServiceInstance", networkServiceInstance) + + currentNSSI.put("globalSubscriberId", "globalSubscriberId") + + currentNSSI.put("subscriberName", "subscriber-name") + + currentNSSI.put("serviceId", "service-id") + + currentNSSI.put("nssi", nssi) + + List<SliceProfile> associatedProfiles = new ArrayList<>() + SliceProfile sliceProfile1 = new SliceProfile() + sliceProfile1.setSNssai("snssai1") + + SliceProfile sliceProfile2 = new SliceProfile() + sliceProfile2.setSNssai("snssai2") + + associatedProfiles.add(sliceProfile1) + associatedProfiles.add(sliceProfile2) + + List<String> snssais = new ArrayList<>() + snssais.add(sliceProfile1.getSNssai()) + snssais.add(sliceProfile2.getSNssai()) + + currentNSSI.put("S-NSSAIs", snssais) + + + ServiceSubscription serviceSubscription = new ServiceSubscription() + serviceSubscription.setServiceType("service-type") + + currentNSSI.put("serviceSubscription", serviceSubscription) + + GenericVnf genericVnf = new GenericVnf() + genericVnf.setServiceId("service-id") + genericVnf.setVnfName("vnf-name") + genericVnf.setModelInvariantId("model-invariant-id") + genericVnf.setModelCustomizationId("model-customization-id") + genericVnf.setVnfName("vnf-name") + genericVnf.setVnfId("vnf-id") + + VfModule vfModule = new VfModule() + vfModule.setModelInvariantId("model-invariant-id") + vfModule.setModelCustomizationId("model-customization-id") + vfModule.setModelVersionId("model-version-id") + vfModule.setVfModuleName("vf-module-name") + + VfModules vfModules = new VfModules() + vfModules.getVfModule().add(vfModule) + genericVnf.setVfModules(vfModules) + + currentNSSI.put("constituteVnf", genericVnf) + + AAIResourceUri constituteVNFURI = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().genericVnf(genericVnf.getVnfId())) + + currentNSSI.put("constituteVnfUri", constituteVNFURI) + + DoCommonCoreNSSI spy = spy(DoCommonCoreNSSI.class) + + when(spy.getAAIClient()).thenReturn(client) + + prepareModelVer(networkServiceInstance) + + //prepareSubscriberInfo(networkServiceInstanceUri) + + prepareCloudConfiguration(constituteVNFURI, cloudRegionAAIUri) + + prepareModelVer(genericVnf) + + prepareModelVer(vfModule) + + prepareOwningEntity(networkServiceInstanceUri) + + prepareProject(cloudRegionAAIUri) + + String requestDetails = spy.prepareRequestDetails(mockExecution) + + } + + + void prepareProject(AAIResourceUri cloudRegionAAIUri) { + Project project = new Project() + project.setProjectName("project-name") + + AAIResultWrapper wrapperMock = mock(AAIResultWrapper.class) + Relationships rsMock = mock(Relationships.class) + Optional<Relationships> orsMock = Optional.of(rsMock) + + when(client.get(cloudRegionAAIUri)).thenReturn(wrapperMock) + when(wrapperMock.getRelationships()).thenReturn(orsMock) + + List<AAIResourceUri> arus = new ArrayList<>() + AAIResourceUri aru = new AAISimpleUri(cloudRegionAAIUri) + arus.add(aru) + + when(rsMockgetRelatedUris(Types.PROJECT)).thenReturn(arus) + + Optional<Project> projectOpt = Optional.of(project) + + when(client.get(Project.class, aru)).thenReturn(projectOpt) + } + + + void prepareOwningEntity(AAIResourceUri networkServiceInstanceUri) { + OwningEntity owningEntity = new OwningEntity() + + owningEntity.setOwningEntityId("owning-entity-id") + owningEntity.setOwningEntityName("owning-entity-name") + + AAIResultWrapper wrapperMock = mock(AAIResultWrapper.class) + + Relationships rsMock = mock(Relationships.class) + Optional<Relationships> orsMock = Optional.of(rsMock) + + when(client.get(networkServiceInstanceUri)).thenReturn(wrapperMock) + when(wrapperMock.getRelationships()).thenReturn(orsMock) + + List<AAIResourceUri> arus = new ArrayList<>() + AAIResourceUri aru = new AAISimpleUri(networkServiceInstanceUri) + arus.add(aru) + + when(rsMockgetRelatedUris(Types.OWNING_ENTITY)).thenReturn(arus) + + Optional<OwningEntity> owningEntityOpt = Optional.of(owningEntity) + + when(client.get(OwningEntity.class, aru)).thenReturn(owningEntityOpt) + } + + + + void prepareCloudConfiguration(AAIResourceUri constituteVNFURI, cloudRegionAAIUri) { + AAIResultWrapper wrapperMock = mock(AAIResultWrapper.class) + + Relationships rsMock = mock(Relationships.class) + Optional<Relationships> orsMock = Optional.of(rsMock) + + when(client.get(constituteVNFURI)).thenReturn(wrapperMock) + when(wrapperMock.getRelationships()).thenReturn(orsMock) + + List<AAIResourceUri> arus = new ArrayList<>() + AAIResourceUri aru = new AAISimpleUri(cloudRegionAAIUri) + arus.add(aru) + + when(rsMockgetRelatedUris(Types.CLOUD_REGION)).thenReturn(arus) + + CloudRegion cloudRegion = new CloudRegion() + cloudRegion.setCloudRegionId("cloud-region-id") + cloudRegion.setCloudOwner("cloud-owner") + Tenant tenant = new Tenant() + tenant.setTenantId("tenant-id") + + Tenants tenants = new Tenants() + tenants.getTenant().add(tenant) + cloudRegion.setTenants(tenants) + Optional<CloudRegion> cloudRegionOpt = Optional.of(cloudRegion) + + when(client.get(CloudRegion.class, aru)).thenReturn(cloudRegionOpt) + } + + + void prepareSubscriberInfo( AAIResourceUri networkServiceInstanceUri) { + AAIResultWrapper wrapperMock = mock(AAIResultWrapper.class) + + Relationships rsMock = mock(Relationships.class) + Optional<Relationships> orsMock = Optional.of(rsMock) + + when(client.get(networkServiceInstanceUri)).thenReturn(wrapperMock) + when(wrapperMock.getRelationships()).thenReturn(orsMock) + + AAIResourceUri serviceSubscriptionUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer("global-customer-id").serviceSubscription("service-type")) + + AAIResourceUri customerUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer("global-customer-id")) + List<AAIResourceUri> arus = new ArrayList<>() + + arus.add(serviceSubscriptionUri) + + when(rsMockgetRelatedUris(Types.SERVICE_SUBSCRIPTION)).thenReturn(arus) + + ServiceSubscription serviceSubscription = new ServiceSubscription() + serviceSubscription.setServiceType("service-type") + Optional<ServiceSubscription> serviceSubscriptionOpt = Optional.of(serviceSubscription) + + when(client.get(ServiceSubscription.class, serviceSubscriptionUri)).thenReturn(serviceSubscriptionOpt) + + when(client.get(networkServiceInstanceUri)).thenReturn(wrapperMock) + + when(rsMockgetRelatedUris(Types.CUSTOMER)).thenReturn(arus) + + Customer customer = new Customer() + customer.setSubscriberName("subscriber-name") + Optional<Customer> customerOpt = Optional.of(customer) + + when(client.get(Customer.class, customerUri)).thenReturn(customerOpt) + } + + + void prepareModelVer(ServiceInstance networkServiceInstance) { + ModelVer modelVer = new ModelVer() + modelVer.setModelVersionId("model-version-id") + modelVer.setModelName("model-name") + modelVer.setModelVersion("model-version") + + Optional<ModelVer> modelVerOpt = Optional.of(modelVer) + + AAIResourceUri modelVerUrl = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.serviceDesignAndCreation().model(networkServiceInstance.getModelInvariantId()).modelVer(networkServiceInstance.getModelVersionId())) + when(client.get(ModelVer.class, modelVerUrl)).thenReturn(modelVerOpt) + } + + void prepareModelVer(GenericVnf genericVnf) { + ModelVer modelVer = new ModelVer() + modelVer.setModelVersionId("model-version-id") + modelVer.setModelName("model-name") + modelVer.setModelVersion("model-version") + + Optional<ModelVer> modelVerOpt = Optional.of(modelVer) + + AAIResourceUri modelVerUrl = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.serviceDesignAndCreation().model(genericVnf.getModelInvariantId()).modelVer(genericVnf.getModelVersionId())) + when(client.get(ModelVer.class, modelVerUrl)).thenReturn(modelVerOpt) + } + + void prepareModelVer(VfModule vfModule) { + ModelVer modelVer = new ModelVer() + modelVer.setModelVersionId("model-version-id") + modelVer.setModelName("model-name") + modelVer.setModelVersion("model-version") + + Optional<ModelVer> modelVerOpt = Optional.of(modelVer) + + AAIResourceUri modelVerUrl = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.serviceDesignAndCreation().model(vfModule.getModelInvariantId()).modelVer(vfModule.getModelVersionId())) + when(client.get(ModelVer.class, modelVerUrl)).thenReturn(modelVerOpt) + } +} diff --git a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVFCNetworkServiceInstanceTest.groovy b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVFCNetworkServiceInstanceTest.groovy index 32ebf09531..0de2c8c575 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVFCNetworkServiceInstanceTest.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVFCNetworkServiceInstanceTest.groovy @@ -35,6 +35,8 @@ import org.onap.so.bpmn.common.scripts.MsoGroovyTest import org.onap.aaiclient.client.aai.AAIObjectType 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 javax.ws.rs.NotFoundException import static org.junit.Assert.assertEquals import static org.mockito.ArgumentMatchers.isA @@ -65,8 +67,8 @@ class DoCreateVFCNetworkServiceInstanceTest extends MsoGroovyTest { when(mockExecution.getVariable("serviceId")).thenReturn("SER12345") doNothing().when(client).connect(isA(AAIResourceUri.class),isA(AAIResourceUri.class)) doCreateVFCNetworkServiceInstance.addNSRelationship(mockExecution); - AAIResourceUri nsUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE,"MSO_dev","MSO-dev-service-type","NS12345") - AAIResourceUri relatedServiceUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE,"MSO_dev","MSO-dev-service-type","SER12345") + AAIResourceUri nsUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer("MSO_dev").serviceSubscription("MSO-dev-service-type").serviceInstance("NS12345")) + AAIResourceUri relatedServiceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer("MSO_dev").serviceSubscription("MSO-dev-service-type").serviceInstance("SER12345")) Mockito.verify(client).connect(nsUri,relatedServiceUri) } diff --git a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModuleRollbackTest.groovy b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModuleRollbackTest.groovy index b2573f1b51..1a15f0eb14 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModuleRollbackTest.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModuleRollbackTest.groovy @@ -43,11 +43,12 @@ import org.onap.so.bpmn.common.scripts.utils.XmlComparator import org.onap.so.bpmn.core.RollbackData import org.onap.so.bpmn.core.WorkflowException import org.onap.so.bpmn.mock.FileUtil -import org.onap.aaiclient.client.aai.AAIObjectPlurals import org.onap.aaiclient.client.aai.AAIObjectType 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.aaiclient.client.graphinventory.exceptions.GraphInventoryUriComputationException import javax.ws.rs.NotFoundException @@ -169,7 +170,7 @@ class DoCreateVfModuleRollbackTest extends MsoGroovyTest{ fqdnList.add("test") when(mockExecution.getVariable(prefix + "createdNetworkPolicyFqdnList")).thenReturn(fqdnList) - AAIPluralResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectPlurals.NETWORK_POLICY) + AAIPluralResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().networkPolicies()) uri.queryParam("network-policy-fqdn", "test") NetworkPolicies networkPolicies = new NetworkPolicies(); NetworkPolicy networkPolicy = new NetworkPolicy(); @@ -177,7 +178,7 @@ class DoCreateVfModuleRollbackTest extends MsoGroovyTest{ networkPolicies.getNetworkPolicy().add(networkPolicy) when(client.get(NetworkPolicies.class, uri)).thenReturn(Optional.of(networkPolicies)) - AAIResourceUri delUri = AAIUriFactory.createResourceUri(AAIObjectType.NETWORK_POLICY, networkPolicy.getNetworkPolicyId()) + AAIResourceUri delUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().networkPolicy(networkPolicy.getNetworkPolicyId())) doNothing().when(client).delete(delUri) doCreateVfModuleRollback.deleteNetworkPoliciesFromAAI(mockExecution) @@ -199,7 +200,7 @@ class DoCreateVfModuleRollbackTest extends MsoGroovyTest{ fqdnList.add("test") when(mockExecution.getVariable(prefix + "createdNetworkPolicyFqdnList")).thenReturn(fqdnList) - AAIPluralResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectPlurals.NETWORK_POLICY) + AAIPluralResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().networkPolicies()) uri.queryParam("network-policy-fqdn", "test") NetworkPolicies networkPolicies = new NetworkPolicies(); NetworkPolicy networkPolicy = new NetworkPolicy(); @@ -207,7 +208,7 @@ class DoCreateVfModuleRollbackTest extends MsoGroovyTest{ networkPolicies.getNetworkPolicy().add(networkPolicy) when(client.get(NetworkPolicies.class, uri)).thenReturn(Optional.of(networkPolicies)) - AAIResourceUri delUri = AAIUriFactory.createResourceUri(AAIObjectType.NETWORK_POLICY, networkPolicy.getNetworkPolicyId()) + AAIResourceUri delUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().networkPolicy(networkPolicy.getNetworkPolicyId())) doThrow(new NotFoundException("Not Found!")).when(client).delete(delUri) doCreateVfModuleRollback.deleteNetworkPoliciesFromAAI(mockExecution) @@ -229,7 +230,7 @@ class DoCreateVfModuleRollbackTest extends MsoGroovyTest{ fqdnList.add("test") when(mockExecution.getVariable(prefix + "createdNetworkPolicyFqdnList")).thenReturn(fqdnList) - AAIPluralResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectPlurals.NETWORK_POLICY) + AAIPluralResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().networkPolicies()) uri.queryParam("network-policy-fqdn", "test") NetworkPolicies networkPolicies = new NetworkPolicies(); NetworkPolicy networkPolicy = new NetworkPolicy(); @@ -237,7 +238,7 @@ class DoCreateVfModuleRollbackTest extends MsoGroovyTest{ networkPolicies.getNetworkPolicy().add(networkPolicy) when(client.get(NetworkPolicies.class, uri)).thenReturn(Optional.of(networkPolicies)) - AAIResourceUri delUri = AAIUriFactory.createResourceUri(AAIObjectType.NETWORK_POLICY, networkPolicy.getNetworkPolicyId()) + AAIResourceUri delUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().networkPolicy(networkPolicy.getNetworkPolicyId())) doThrow(new GraphInventoryUriComputationException("Error!")).when(client).delete(delUri) try { doCreateVfModuleRollback.deleteNetworkPoliciesFromAAI(mockExecution) diff --git a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModuleVolumeRollbackTest.groovy b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModuleVolumeRollbackTest.groovy index cc522544de..1bc6fc5f66 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModuleVolumeRollbackTest.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModuleVolumeRollbackTest.groovy @@ -20,21 +20,19 @@ package org.onap.so.bpmn.infrastructure.scripts; +import static org.mockito.Mockito.spy +import static org.mockito.Mockito.when; import org.junit.Before; import org.junit.Test -import org.onap.aai.domain.yang.VfModule import org.onap.aai.domain.yang.VolumeGroup import org.onap.aai.domain.yang.VolumeGroups; -import org.onap.so.bpmn.common.scripts.MsoGroovyTest -import org.onap.aaiclient.client.aai.AAIObjectPlurals 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.so.bpmn.common.scripts.MsoGroovyTest import org.onap.so.constants.Defaults -import static org.mockito.Mockito.spy -import static org.mockito.Mockito.when; - public class DoCreateVfModuleVolumeRollbackTest extends MsoGroovyTest { private DoCreateVfModuleVolumeRollback doCreateVfModuleVolumeRollback; @@ -51,7 +49,7 @@ public class DoCreateVfModuleVolumeRollbackTest extends MsoGroovyTest { String cloudRegionId = "cloudRegionId" when(mockExecution.getVariable("DCVFMODVOLRBK_volumeGroupName")).thenReturn(volumeGroupName) when(mockExecution.getVariable("DCVFMODVOLRBK_lcpCloudRegionId")).thenReturn(cloudRegionId) - AAIPluralResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectPlurals.VOLUME_GROUP, Defaults.CLOUD_OWNER.toString(), cloudRegionId).queryParam("volume-group-name", volumeGroupName) + AAIPluralResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.cloudInfrastructure().cloudRegion(Defaults.CLOUD_OWNER.toString(), cloudRegionId).volumeGroups()).queryParam("volume-group-name", volumeGroupName) VolumeGroup volumeGroup = new VolumeGroup(); volumeGroup.setVolumeGroupId("volumeGroupId") VolumeGroups groups = new VolumeGroups(); diff --git a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModuleVolumeV2Test.groovy b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModuleVolumeV2Test.groovy index 7aa162cae7..d417abc671 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModuleVolumeV2Test.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModuleVolumeV2Test.groovy @@ -20,39 +20,34 @@ package org.onap.so.bpmn.infrastructure.scripts +import static org.junit.Assert.assertEquals +import static org.junit.Assert.assertNotNull +import static org.mockito.ArgumentMatchers.anyObject +import static org.mockito.Mockito.spy +import static org.mockito.Mockito.times +import static org.mockito.Mockito.verify +import static org.mockito.Mockito.when import org.camunda.bpm.engine.delegate.BpmnError import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity import org.junit.Before -import org.junit.Rule import org.junit.Test -import org.junit.rules.ExpectedException -import org.junit.runner.RunWith import org.mockito.ArgumentCaptor import org.mockito.Captor import org.mockito.Mockito import org.mockito.MockitoAnnotations -import org.mockito.runners.MockitoJUnitRunner import org.onap.aai.domain.yang.GenericVnf -import org.onap.aai.domain.yang.Volume import org.onap.aai.domain.yang.VolumeGroup import org.onap.aai.domain.yang.VolumeGroups -import org.onap.so.bpmn.common.scripts.MsoGroovyTest -import org.onap.so.bpmn.core.RollbackData -import org.onap.aaiclient.client.aai.AAIObjectPlurals import org.onap.aaiclient.client.aai.AAIObjectType 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.so.bpmn.common.scripts.MsoGroovyTest +import org.onap.so.bpmn.core.RollbackData import org.onap.so.constants.Defaults -import static org.junit.Assert.assertEquals -import static org.junit.Assert.assertNotNull -import static org.mockito.ArgumentMatchers.anyObject -import static org.mockito.Mockito.spy -import static org.mockito.Mockito.times -import static org.mockito.Mockito.verify -import static org.mockito.Mockito.when - class DoCreateVfModuleVolumeV2Test extends MsoGroovyTest { @@ -161,7 +156,7 @@ class DoCreateVfModuleVolumeV2Test extends MsoGroovyTest { String lcpCloudRegionId = "lcpCloudRegionId" when(mockExecution.getVariable(volumeGroupName)).thenReturn(volumeGroupName) when(mockExecution.getVariable(lcpCloudRegionId)).thenReturn(lcpCloudRegionId) - AAIPluralResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectPlurals.VOLUME_GROUP, Defaults.CLOUD_OWNER.toString(), lcpCloudRegionId).queryParam("volume-group-name", volumeGroupName) + AAIPluralResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.cloudInfrastructure().cloudRegion(Defaults.CLOUD_OWNER.toString(), lcpCloudRegionId).volumeGroups()).queryParam("volume-group-name", volumeGroupName) VolumeGroups volumeGroups = new VolumeGroups(); VolumeGroup volumeGroup = new VolumeGroup() volumeGroup.setVolumeGroupId("volumeGroupId") @@ -177,7 +172,7 @@ class DoCreateVfModuleVolumeV2Test extends MsoGroovyTest { String lcpCloudRegionId = "lcpCloudRegionId" when(mockExecution.getVariable(volumeGroupName)).thenReturn(volumeGroupName) when(mockExecution.getVariable(lcpCloudRegionId)).thenReturn(lcpCloudRegionId) - AAIPluralResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectPlurals.VOLUME_GROUP, Defaults.CLOUD_OWNER.toString(), lcpCloudRegionId).queryParam("volume-group-name", volumeGroupName) + AAIPluralResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.cloudInfrastructure().cloudRegion(Defaults.CLOUD_OWNER.toString(), lcpCloudRegionId).volumeGroups()).queryParam("volume-group-name", volumeGroupName) when(client.get(VolumeGroup.class,uri)).thenReturn(Optional.empty()) thrown.expect(BpmnError.class) doCreateVfModuleVolumeV2.callRESTQueryAAIVolGrpName(mockExecution,null) @@ -215,7 +210,7 @@ class DoCreateVfModuleVolumeV2Test extends MsoGroovyTest { void testcallRESTQueryAAIGenericVnf(){ String vnfId = "vnfId" when(mockExecution.getVariable(vnfId)).thenReturn(vnfId) - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().genericVnf(vnfId)) GenericVnf genericVnf = new GenericVnf() genericVnf.setVnfId(vnfId) when(client.get(GenericVnf.class,uri)).thenReturn(Optional.of(genericVnf)) @@ -227,7 +222,7 @@ class DoCreateVfModuleVolumeV2Test extends MsoGroovyTest { void testcallRESTQueryAAIGenericVnf_NotFound(){ String vnfId = "vnfId" when(mockExecution.getVariable(vnfId)).thenReturn(vnfId) - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().genericVnf(vnfId)) when(client.get(GenericVnf.class,uri)).thenReturn(Optional.empty()) thrown.expect(BpmnError.class) doCreateVfModuleVolumeV2.callRESTQueryAAIGenericVnf(mockExecution,null) diff --git a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCustomDeleteE2EServiceInstanceV2Test.groovy b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCustomDeleteE2EServiceInstanceV2Test.groovy index a3b2a1c8b9..2cb351c2b9 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCustomDeleteE2EServiceInstanceV2Test.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCustomDeleteE2EServiceInstanceV2Test.groovy @@ -20,19 +20,20 @@ package org.onap.so.bpmn.infrastructure.scripts +import static org.mockito.Mockito.times +import static org.mockito.Mockito.when +import javax.ws.rs.core.UriBuilder import org.junit.Before import org.junit.Test import org.mockito.Mockito import org.mockito.Spy import org.onap.aai.domain.yang.AllottedResource -import org.onap.so.bpmn.common.scripts.MsoGroovyTest -import org.onap.so.bpmn.mock.FileUtil -import org.onap.aaiclient.client.aai.AAIObjectType import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory -import javax.ws.rs.core.UriBuilder -import static org.mockito.Mockito.times -import static org.mockito.Mockito.when +import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder +import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder.Types +import org.onap.so.bpmn.common.scripts.MsoGroovyTest +import org.onap.so.bpmn.mock.FileUtil class DoCustomDeleteE2EServiceInstanceV2Test extends MsoGroovyTest { @@ -49,7 +50,7 @@ class DoCustomDeleteE2EServiceInstanceV2Test extends MsoGroovyTest { void testPrepareServiceDeleteResource(){ when(mockExecution.getVariable("serviceInstance")).thenReturn(FileUtil.readResourceFile("__files/AAI/ServiceInstanceWithAR.json")) def relink = "/aai/v11/business/customers/customer/testCustIdInfra/service-subscriptions/service-subscription/HNPORTAL/service-instances/service-instance/testServiceInstanceIdPortalPri/allotted-resources/allotted-resource/testAllottedResourceIdPortalPri" - AAIResourceUri uri = AAIUriFactory.createResourceFromExistingURI(AAIObjectType.ALLOTTED_RESOURCE, UriBuilder.fromPath(relink).build()) + AAIResourceUri uri = AAIUriFactory.createResourceFromExistingURI(Types.ALLOTTED_RESOURCE, UriBuilder.fromPath(relink).build()) AllottedResource ar = new AllottedResource(); ar.setId("ar1") ar.setType("ar") diff --git a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeallocateCoreNSSITest.groovy b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeallocateCoreNSSITest.groovy new file mode 100644 index 0000000000..eae788666d --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeallocateCoreNSSITest.groovy @@ -0,0 +1,266 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2020 Telecom Italia + * ================================================================================ + * 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.junit.Before +import org.junit.Test +import org.onap.aai.domain.yang.ServiceInstance +import org.onap.aai.domain.yang.SliceProfile +import org.onap.aai.domain.yang.SliceProfiles +import org.onap.aaiclient.client.aai.AAIObjectType +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.so.bpmn.common.scripts.MsoGroovyTest + +import static org.junit.Assert.assertNotNull +import static org.junit.Assert.assertTrue +import static org.mockito.Mockito.* + +class DoDeallocateCoreNSSITest extends MsoGroovyTest { + + @Before + void init() throws IOException { + super.init("DoDeallocateNSSITest") + } + + + @Test + void testExecuteTerminateNSSIQuery() { + + def currentNSSI = [:] + currentNSSI.put("nssiId","5G-999") + + when(mockExecution.getVariable("currentNSSI")).thenReturn(currentNSSI) + + when(mockExecution.getVariable("mso.oof.endpoint")).thenReturn("http://oof.onap:8088") + when(mockExecution.getVariable("mso.oof.auth")).thenReturn("mso.oof.auth") + when(mockExecution.getVariable("mso.msoKey")).thenReturn("mso.msoKey") + when(mockExecution.getVariable("mso-request-id")).thenReturn("mso-request-id") + + DoDeallocateCoreNSSI spy = spy(DoDeallocateCoreNSSI.class) + when(spy.getAAIClient()).thenReturn(client) + + when(spy.encryptBasicAuth("mso.oof.auth", "mso.msoKey")).thenReturn("auth-value") + + String authHeaderResponse = "auth-header" + + /* String authHeaderResponse = "{\n" + + " \"errorCode\": \"401\",\n" + + " \"errorMessage\": \"Bad request\"\n" + + "}" */ + + when(spy.getAuthHeader(mockExecution, "auth-value", "mso.msoKey")).thenReturn(authHeaderResponse) + + String urlString = "http://oof.onap:8088" + + String httpRequest = "{\n" + + " \"type\": \"NSSI\",\n" + + " \"NxIId\": \"5G-999\",\n" + + " \"requestInfo\": {\n" + + " \"transactionId\": \"mso-request-id\",\n" + + " \"requestId\": \"mso-request-id\",\n" + + " \"sourceId\": \"so\",\n" + + " }\n" + + "}" + + boolean terminateResponse = true + + String oofResponse = "{\n" + + " \"requestId\": \"mso-request-id\",\n" + + " \"transactionId\": \"mso-request-id\",\n" + + " \"statusMessage\": \"\",\n" + + " \"requestStatus\": \"accepted\",\n" + + " \"terminateResponse\": \"${terminateResponse}\",\n" + + " \"reason\": \"\"\n" + + " }\n" + + String oofCallResponse = oofResponse + + /* String oofCallResponse = "{\n" + + " \"errorCode\": \"401\",\n" + + " \"errorMessage\": \"Exception during the call\"\n" + + "}" */ + + when(spy.callOOF(urlString, "auth-header", httpRequest)).thenReturn(oofCallResponse) + + spy.executeTerminateNSSIQuery(mockExecution) + + verify(mockExecution).setVariable("isTerminateNSSI", terminateResponse) + + } + + + @Test + void testDeleteServiceOrder() { + def currentNSSI = [:] + currentNSSI.put("nssiId","5G-999") + + ServiceInstance networkServiceInstance = new ServiceInstance() + networkServiceInstance.setServiceInstanceId("NS-777") + networkServiceInstance.setServiceRole("Network Service") + + when(mockExecution.getVariable("currentNSSI")).thenReturn(currentNSSI) + + currentNSSI.put("networkServiceInstance", networkServiceInstance) + + when(mockExecution.getVariable("nbi.endpoint.url")).thenReturn("http://nbi.onap:8088") + when(mockExecution.getVariable("mso.msoKey")).thenReturn("mso.msoKey") + when(mockExecution.getVariable("mso.infra.endpoint.auth")).thenReturn("mso.infra.endpoint.auth") + + DoDeallocateCoreNSSI spy = spy(DoDeallocateCoreNSSI.class) + when(spy.getAAIClient()).thenReturn(client) + + when(spy.encryptBasicAuth("mso.infra.endpoint.auth", "mso.msoKey")).thenReturn("auth-value") + + String authHeaderResponse = "auth-header" + + /* String authHeaderResponse = "{\n" + + " \"errorCode\": \"401\",\n" + + " \"errorMessage\": \"Bad request\"\n" + + "}" */ + + when(spy.getAuthHeader(mockExecution, "auth-value", "mso.msoKey")).thenReturn(authHeaderResponse) + + String urlString = String.format("http://nbi.onap:8088/api/v4/serviceOrder/%s", networkServiceInstance.getServiceInstanceId()) + + String callDeleteServiceOrderResponse = "deleted" + + when(spy.callDeleteServiceOrder(mockExecution, urlString, "auth-header")).thenReturn(callDeleteServiceOrderResponse) + + spy.deleteServiceOrder(mockExecution) + } + + + @Test + void testGetNSSIAssociatedProfiles() { + def currentNSSI = [:] + when(mockExecution.getVariable("currentNSSI")).thenReturn(currentNSSI) + + ServiceInstance nssi = new ServiceInstance() + nssi.setServiceInstanceId("5G-999") + + SliceProfiles sliceProfiles = new SliceProfiles() + + List<SliceProfile> slProfiles = sliceProfiles.getSliceProfile() + slProfiles.add(new SliceProfile()) + slProfiles.add(new SliceProfile()) + + nssi.setSliceProfiles(sliceProfiles) + currentNSSI.put("nssi", nssi) + + DoDeallocateCoreNSSI obj = new DoDeallocateCoreNSSI() + obj.getNSSIAssociatedProfiles(mockExecution) + + List<SliceProfile> associatedProfiles = (List<SliceProfile>)currentNSSI.get("associatedProfiles") + assertTrue("Either associatedProfiles doesn't exist or size is incorrect", (associatedProfiles != null && associatedProfiles.size() == 2)) + } + + + @Test + void testCalculateSNSSAI() { + def currentNSSI = [:] + when(mockExecution.getVariable("currentNSSI")).thenReturn(currentNSSI) + + String theSNSSAI = "theS-NSSAI" + + currentNSSI.put("S-NSSAI", theSNSSAI) + + List<SliceProfile> associatedProfiles = new ArrayList<>() + SliceProfile sliceProfile1 = new SliceProfile() + sliceProfile1.setSNssai("snssai1") + + SliceProfile sliceProfile2 = new SliceProfile() + sliceProfile2.setSNssai(theSNSSAI) + + SliceProfile sliceProfile3 = new SliceProfile() + sliceProfile3.setSNssai("snssai3") + + associatedProfiles.add(sliceProfile1) + associatedProfiles.add(sliceProfile2) + associatedProfiles.add(sliceProfile3) + + int sizeBefore = associatedProfiles.size() + + currentNSSI.put("associatedProfiles", associatedProfiles) + + DoDeallocateCoreNSSI obj = new DoDeallocateCoreNSSI() + obj.calculateSNSSAI(mockExecution) + + List<SliceProfile> snssais = (List<SliceProfile>)currentNSSI.get("S-NSSAIs") + SliceProfile sliceProfileContainsSNSSAI = (SliceProfile)currentNSSI.get("sliceProfileS-NSSAI") + + assertTrue("Either snssais doesn't exist or size is incorrect", (snssais != null && snssais.size() == (sizeBefore - 1))) + assertNotNull("Slice Profile which contains given S-NSSAI not found", sliceProfileContainsSNSSAI) + assertTrue("Wrong Slice Profile", sliceProfileContainsSNSSAI.getSNssai().equals(theSNSSAI)) + } + + + @Test + void testRemoveNSSIAssociationWithNSI() { + def currentNSSI = [:] + + when(mockExecution.getVariable("currentNSSI")).thenReturn(currentNSSI) + + DoDeallocateCoreNSSI spy = spy(DoDeallocateCoreNSSI.class) + + when(spy.getAAIClient()).thenReturn(client) + + String nssiId = "5G-999" + String nsiId = "5G-99" + currentNSSI.put("nssiId", nssiId) + currentNSSI.put("nsiId", nsiId) + + AAIResourceUri nssiUri = AAIUriFactory.createResourceUri(Types.SERVICE_INSTANCE.getFragment(nssiId)) + AAIResourceUri nsiUri = AAIUriFactory.createResourceUri(Types.SERVICE_INSTANCE.getFragment(nsiId)) + + doNothing().when(client).disconnect(nssiUri, nsiUri) + + spy.removeNSSIAssociationWithNSI(mockExecution) + + } + + + @Test + void testDeleteNSSIServiceInstance() { + def currentNSSI = [:] + + when(mockExecution.getVariable("currentNSSI")).thenReturn(currentNSSI) + + String nssiId = "5G-999" + + currentNSSI.put("nssiId", nssiId) + + AAIResourceUri nssiUri = AAIUriFactory.createResourceUri(Types.SERVICE_INSTANCE.getFragment(nssiId)) + + DoDeallocateCoreNSSI spy = spy(DoDeallocateCoreNSSI.class) + + when(spy.getAAIClient()).thenReturn(client) + + doNothing().when(client).delete(nssiUri) + + spy.deleteNSSIServiceInstance(mockExecution) + } + + +} diff --git a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeallocateNSSITest.groovy b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeallocateNSSITest.groovy index 88140d83ce..852f053f11 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeallocateNSSITest.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeallocateNSSITest.groovy @@ -38,6 +38,8 @@ import org.onap.so.client.HttpClientFactory import org.onap.aaiclient.client.aai.AAIObjectType 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 javax.ws.rs.core.Response @@ -137,7 +139,7 @@ class DoDeallocateNSSITest extends MsoGroovyTest { currentNSSI.put("serviceType","5G") when(mockExecution.getVariable("currentNSSI")).thenReturn(currentNSSI) - AAIResourceUri profileUri = AAIUriFactory.createResourceUri(AAIObjectType.SLICE_PROFILE, "5GCustomer", "5G", "5G-999", "ddf57704-fe8d-417b-882d-2f2a12ddb225") + AAIResourceUri profileUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer("5GCustomer").serviceSubscription("5G").serviceInstance("5G-999").sliceProfile("ddf57704-fe8d-417b-882d-2f2a12ddb225")) DoDeallocateNSSI obj = spy(DoDeallocateNSSI.class) when(obj.getAAIClient()).thenReturn(client) when(client.exists(profileUri)).thenReturn(true) diff --git a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeallocateTnNssiTest.groovy b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeallocateTnNssiTest.groovy index eac79a9473..31bd3b56f5 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeallocateTnNssiTest.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeallocateTnNssiTest.groovy @@ -29,12 +29,15 @@ import org.mockito.Mockito import org.onap.aaiclient.client.aai.AAIObjectType 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.so.bpmn.common.scripts.MsoGroovyTest import static org.junit.Assert.assertNotNull import static org.mockito.ArgumentMatchers.eq import static org.mockito.Mockito.* + class DoDeallocateTnNssiTest extends MsoGroovyTest { @Before void init() throws IOException { @@ -124,7 +127,7 @@ class DoDeallocateTnNssiTest extends MsoGroovyTest { when(mockExecution.getVariable("globalSubscriberId")).thenReturn("5GCustomer") when(mockExecution.getVariable("subscriptionServiceType")).thenReturn("5G") - AAIResourceUri serviceInstanceUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, "5GCustomer", "5G", "5ad89cf9-0569-4a93-9306-d8324321e2be") + AAIResourceUri serviceInstanceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer("5GCustomer").serviceSubscription("5G").serviceInstance("5ad89cf9-0569-4a93-9306-d8324321e2be")) DoDeallocateTnNssi obj = spy(DoDeallocateTnNssi.class) when(obj.getAAIClient()).thenReturn(client) doNothing().when(client).delete(serviceInstanceUri) diff --git a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteNetworkInstanceTest.groovy b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteNetworkInstanceTest.groovy index 3b172f3015..85106111d0 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteNetworkInstanceTest.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteNetworkInstanceTest.groovy @@ -45,6 +45,8 @@ import org.onap.so.bpmn.core.WorkflowException import org.onap.aaiclient.client.aai.AAIObjectType 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.aaiclient.client.graphinventory.entities.uri.Depth import org.onap.so.constants.Defaults @@ -1609,7 +1611,7 @@ String sdncAdapterWorkflowFormattedResponse_404 = Relationship relationship = new Relationship(); relationship.setRelatedTo("vf-module") l3Network.getRelationshipList().getRelationship().add(relationship) - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.L3_NETWORK, networkId).depth(Depth.ALL) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().l3Network(networkId)).depth(Depth.ALL) when(client.get(L3Network.class,uri)).thenReturn(Optional.of(l3Network)) doDeleteNetworkInstance.callRESTQueryAAI(mockExecution) @@ -1643,7 +1645,7 @@ String sdncAdapterWorkflowFormattedResponse_404 = DoDeleteNetworkInstance doDeleteNetworkInstance = spy(DoDeleteNetworkInstance.class) when(doDeleteNetworkInstance.getAAIClient()).thenReturn(client) L3Network l3Network = getL3Network() - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.L3_NETWORK, networkId).depth(Depth.ALL) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().l3Network(networkId)).depth(Depth.ALL) when(client.get(L3Network.class,uri)).thenReturn(Optional.of(l3Network)) doDeleteNetworkInstance.callRESTQueryAAI(mockExecution) @@ -1681,7 +1683,7 @@ String sdncAdapterWorkflowFormattedResponse_404 = relationship.setRelatedLink("http://localhost:18080/cloud-regions/cloud-region/" + Defaults.CLOUD_OWNER.toString() + "/lcpCloudRegion/") relationshipList.getRelationship().add(relationship) l3Network.setRelationshipList(relationshipList) - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.L3_NETWORK, networkId).depth(Depth.ALL) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().l3Network(networkId)).depth(Depth.ALL) when(client.get(L3Network.class,uri)).thenReturn(Optional.of(l3Network)) doDeleteNetworkInstance.callRESTQueryAAI(mockExecution) diff --git a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteSliceServiceTest.groovy b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteSliceServiceTest.groovy index 9dbb6a5a56..7b65d169a2 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteSliceServiceTest.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteSliceServiceTest.groovy @@ -19,6 +19,14 @@ */ package org.onap.so.bpmn.infrastructure.scripts +import static org.junit.Assert.assertNotNull +import static org.junit.Assert.assertTrue +import static org.mockito.ArgumentMatchers.eq +import static org.mockito.Mockito.spy +import static org.mockito.Mockito.times +import static org.mockito.Mockito.verify +import static org.mockito.Mockito.when +import javax.ws.rs.NotFoundException import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity import org.junit.Before import org.junit.Test @@ -26,23 +34,13 @@ import org.mockito.ArgumentCaptor import org.mockito.Captor import org.mockito.Mockito import org.onap.aai.domain.yang.ServiceInstance -import org.onap.so.bpmn.common.scripts.MsoGroovyTest -import org.onap.aaiclient.client.aai.AAIObjectType 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.AAIUriFactory - -import javax.ws.rs.NotFoundException - -import static org.junit.Assert.assertEquals -import static org.junit.Assert.assertNotNull -import static org.junit.Assert.assertTrue -import static org.mockito.ArgumentMatchers.eq -import static org.mockito.Mockito.doNothing -import static org.mockito.Mockito.spy -import static org.mockito.Mockito.times -import static org.mockito.Mockito.verify -import static org.mockito.Mockito.when +import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder +import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder.Types +import org.onap.so.bpmn.common.scripts.MsoGroovyTest class DoDeleteSliceServiceTest extends MsoGroovyTest { @Before @@ -73,7 +71,7 @@ class DoDeleteSliceServiceTest extends MsoGroovyTest { when(mockExecution.getVariable("globalSubscriberId")).thenReturn("5GCustomer") when(mockExecution.getVariable("serviceType")).thenReturn("5G") - AAIResourceUri resourceUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, "5GCustomer", "5G", "5ad89cf9-0569-4a93-9306-d8324321e2be") + AAIResourceUri resourceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer("5GCustomer").serviceSubscription("5G").serviceInstance("5ad89cf9-0569-4a93-9306-d8324321e2be")) DoDeleteSliceService obj = spy(DoDeleteSliceService.class) AAIResultWrapper wrapper = new AAIResultWrapper(mockQuerySliceServiceReturn()) @@ -92,8 +90,9 @@ class DoDeleteSliceServiceTest extends MsoGroovyTest { when(mockExecution.getVariable("globalSubscriberId")).thenReturn("5GCustomer") when(mockExecution.getVariable("serviceType")).thenReturn("5G") - AAIResourceUri resourceUri = AAIUriFactory.createResourceUri(AAIObjectType.ALLOTTED_RESOURCE_ALL, "5GCustomer", "5G", "5ad89cf9-0569-4a93-9306-d8324321e2be") - DoDeleteSliceService obj = spy(DoDeleteSliceService.class) + AAIResourceUri resourceUri = AAIUriFactory.createResourceUri( + AAIFluentTypeBuilder.business().customer("5GCustomer").serviceSubscription("5G").serviceInstance("5ad89cf9-0569-4a93-9306-d8324321e2be").allottedResources()) + DoDeleteSliceService obj = spy(DoDeleteSliceService.class) AAIResultWrapper wrapper = new AAIResultWrapper(mockQueryAllottedResource()) when(obj.getAAIClient()).thenReturn(client) @@ -111,7 +110,7 @@ class DoDeleteSliceServiceTest extends MsoGroovyTest { when(mockExecution.getVariable("globalSubscriberId")).thenReturn("5GCustomer") when(mockExecution.getVariable("serviceType")).thenReturn("5G") - AAIResourceUri resourceUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, "5GCustomer", "5G", "5G-888") + AAIResourceUri resourceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer("5GCustomer").serviceSubscription("5G").serviceInstance("5G-888")) DoDeleteSliceService obj = spy(DoDeleteSliceService.class) AAIResultWrapper wrapper = new AAIResultWrapper(mockNSIReturn()) @@ -133,7 +132,7 @@ class DoDeleteSliceServiceTest extends MsoGroovyTest { when(mockExecution.getVariable("globalSubscriberId")).thenReturn("5GCustomer") when(mockExecution.getVariable("serviceType")).thenReturn("5G") - AAIResourceUri resourceUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, "5GCustomer", "5G", "5G-999") + AAIResourceUri resourceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer("5GCustomer").serviceSubscription("5G").serviceInstance("5G-999")) DoDeleteSliceService obj = spy(DoDeleteSliceService.class) AAIResultWrapper wrapper = new AAIResultWrapper(mockNSSIReturn()) @@ -181,7 +180,8 @@ class DoDeleteSliceServiceTest extends MsoGroovyTest { when(mockExecution.getVariable("serviceType")).thenReturn("5G") AAIResultWrapper wrapper = new AAIResultWrapper(mockSliceProfile()) - AAIResourceUri profileUri = AAIUriFactory.createResourceUri(AAIObjectType.SLICE_PROFILE_ALL, "5GCustomer", "5G", "5G-999") + AAIPluralResourceUri profileUri = AAIUriFactory.createResourceUri( + AAIFluentTypeBuilder.business().customer("5GCustomer").serviceSubscription("5G").serviceInstance("5G-999").sliceProfiles()) DoDeleteSliceService obj = spy(DoDeleteSliceService.class) when(obj.getAAIClient()).thenReturn(client) diff --git a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVFCNetworkServiceInstanceTest.groovy b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVFCNetworkServiceInstanceTest.groovy index 0251eab668..3780d42efb 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVFCNetworkServiceInstanceTest.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVFCNetworkServiceInstanceTest.groovy @@ -20,24 +20,17 @@ package org.onap.so.bpmn.infrastructure.scripts +import static org.mockito.ArgumentMatchers.isA +import static org.mockito.Mockito.doThrow +import static org.mockito.Mockito.spy +import static org.mockito.Mockito.when import org.camunda.bpm.engine.delegate.BpmnError import org.junit.Before import org.junit.Rule import org.junit.Test import org.junit.rules.ExpectedException -import org.onap.aai.domain.yang.VolumeGroup -import org.onap.aai.domain.yang.VolumeGroups -import org.onap.so.bpmn.common.scripts.MsoGroovyTest -import org.onap.aaiclient.client.aai.AAIObjectPlurals -import org.onap.aaiclient.client.aai.AAIObjectType import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri -import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory -import org.onap.so.constants.Defaults - -import static org.mockito.ArgumentMatchers.isA -import static org.mockito.Mockito.doThrow -import static org.mockito.Mockito.spy -import static org.mockito.Mockito.when +import org.onap.so.bpmn.common.scripts.MsoGroovyTest public class DoDeleteVFCNetworkServiceInstanceTest extends MsoGroovyTest { diff --git a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVfModuleFromVnfTest.groovy b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVfModuleFromVnfTest.groovy index daf005eabf..da68a213b0 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVfModuleFromVnfTest.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVfModuleFromVnfTest.groovy @@ -42,11 +42,12 @@ import org.onap.aai.domain.yang.NetworkPolicies import org.onap.aai.domain.yang.NetworkPolicy import org.onap.so.bpmn.common.scripts.MsoGroovyTest import org.onap.so.bpmn.core.WorkflowException -import org.onap.aaiclient.client.aai.AAIObjectPlurals import org.onap.aaiclient.client.aai.AAIObjectType 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.aaiclient.client.graphinventory.entities.uri.Depth import static com.github.tomakehurst.wiremock.client.WireMock.* @@ -106,7 +107,7 @@ class DoDeleteVfModuleFromVnfTest extends MsoGroovyTest { List fqdnList = new ArrayList() fqdnList.add("test") when(mockExecution.getVariable("DDVFMV_contrailNetworkPolicyFqdnList")).thenReturn(fqdnList) - AAIPluralResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectPlurals.NETWORK_POLICY) + AAIPluralResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().networkPolicies()) uri.queryParam("network-policy-fqdn", "test") NetworkPolicies networkPolicies = new NetworkPolicies(); NetworkPolicy networkPolicy = new NetworkPolicy(); @@ -114,7 +115,7 @@ class DoDeleteVfModuleFromVnfTest extends MsoGroovyTest { networkPolicies.getNetworkPolicy().add(networkPolicy) when(client.get(NetworkPolicies.class, uri)).thenReturn(Optional.of(networkPolicies)) - AAIResourceUri delUri = AAIUriFactory.createResourceUri(AAIObjectType.NETWORK_POLICY, networkPolicy.getNetworkPolicyId()) + AAIResourceUri delUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().networkPolicy(networkPolicy.getNetworkPolicyId())) doNothing().when(client).delete(delUri) deleteVfModuleFromVnf.deleteNetworkPoliciesFromAAI(mockExecution) @@ -128,7 +129,7 @@ class DoDeleteVfModuleFromVnfTest extends MsoGroovyTest { List fqdnList = new ArrayList() fqdnList.add("test") when(mockExecution.getVariable("DDVFMV_contrailNetworkPolicyFqdnList")).thenReturn(fqdnList) - AAIPluralResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectPlurals.NETWORK_POLICY) + AAIPluralResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().networkPolicies()) uri.queryParam("network-policy-fqdn", "test") when(client.get(NetworkPolicies.class, uri)).thenReturn(Optional.empty()) deleteVfModuleFromVnf.deleteNetworkPoliciesFromAAI(mockExecution) @@ -142,7 +143,7 @@ class DoDeleteVfModuleFromVnfTest extends MsoGroovyTest { void testQueryAAIForVfModule() { ExecutionEntity mockExecution = setupMock() when(mockExecution.getVariable("vnfId")).thenReturn("12345") - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, "12345").depth(Depth.ONE) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().genericVnf("12345")).depth(Depth.ONE) GenericVnf genericVnf = new GenericVnf() genericVnf.setVnfId("test1") when(client.get(GenericVnf.class, uri)).thenReturn(Optional.of(genericVnf)) @@ -156,7 +157,7 @@ class DoDeleteVfModuleFromVnfTest extends MsoGroovyTest { void testQueryAAIForVfModuleNotFound() { ExecutionEntity mockExecution = setupMock() when(mockExecution.getVariable("vnfId")).thenReturn("12345") - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, "12345").depth(Depth.ONE) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().genericVnf("12345")).depth(Depth.ONE) when(client.get(GenericVnf.class, uri)).thenReturn(Optional.empty()) deleteVfModuleFromVnf.queryAAIForVfModule(mockExecution) Mockito.verify(mockExecution, atLeastOnce()).setVariable("DDVMFV_getVnfResponseCode", 404) diff --git a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVfModuleTest.groovy b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVfModuleTest.groovy index 0e47958249..5882f73ce9 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVfModuleTest.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVfModuleTest.groovy @@ -20,15 +20,14 @@ package org.onap.so.bpmn.infrastructure.scripts -import com.github.tomakehurst.wiremock.junit.WireMockRule +import static com.github.tomakehurst.wiremock.client.WireMock.* +import static org.mockito.Mockito.* +import javax.ws.rs.NotFoundException import org.camunda.bpm.engine.ProcessEngineServices import org.camunda.bpm.engine.RepositoryService import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity import org.camunda.bpm.engine.repository.ProcessDefinition -import org.junit.Assert import org.junit.Before -import org.junit.Ignore -import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith import org.mockito.ArgumentCaptor @@ -40,21 +39,13 @@ import org.mockito.runners.MockitoJUnitRunner import org.onap.aai.domain.yang.NetworkPolicies import org.onap.aai.domain.yang.NetworkPolicy import org.onap.aai.domain.yang.VfModule -import org.onap.aai.domain.yang.VfModules -import org.onap.so.bpmn.common.scripts.MsoGroovyTest -import org.onap.so.bpmn.common.scripts.utils.XmlComparator -import org.onap.so.bpmn.core.WorkflowException -import org.onap.so.bpmn.mock.FileUtil -import org.onap.aaiclient.client.aai.AAIObjectPlurals -import org.onap.aaiclient.client.aai.AAIObjectType 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 javax.ws.rs.NotFoundException - -import static com.github.tomakehurst.wiremock.client.WireMock.* -import static org.mockito.Mockito.* +import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder +import org.onap.so.bpmn.common.scripts.MsoGroovyTest +import org.onap.so.bpmn.common.scripts.utils.XmlComparator +import org.onap.so.bpmn.mock.FileUtil @RunWith(MockitoJUnitRunner.class) class DoDeleteVfModuleTest extends MsoGroovyTest{ @@ -105,7 +96,7 @@ class DoDeleteVfModuleTest extends MsoGroovyTest{ NetworkPolicy networkPolicy = new NetworkPolicy() networkPolicy.setNetworkPolicyId("NP1") networkPolicies.getNetworkPolicy().add(networkPolicy) - AAIPluralResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectPlurals.NETWORK_POLICY) + AAIPluralResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().networkPolicies()) uri.queryParam("network-policy-fqdn", "test") when(client.get(NetworkPolicies.class, uri)).thenReturn(Optional.of(networkPolicies)) doDeleteVfModule.deleteNetworkPoliciesFromAAI(mockExecution) @@ -121,10 +112,10 @@ class DoDeleteVfModuleTest extends MsoGroovyTest{ NetworkPolicy networkPolicy = new NetworkPolicy() networkPolicy.setNetworkPolicyId("NP1") networkPolicies.getNetworkPolicy().add(networkPolicy) - AAIPluralResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectPlurals.NETWORK_POLICY) + AAIPluralResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().networkPolicies()) uri.queryParam("network-policy-fqdn", "test") when(client.get(NetworkPolicies.class, uri)).thenReturn(Optional.of(networkPolicies)) - AAIResourceUri delUri = AAIUriFactory.createResourceUri(AAIObjectType.NETWORK_POLICY, "NP1") + AAIResourceUri delUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().networkPolicy("NP1")) doThrow(new NotFoundException(("Not Found !"))).when(client).delete(delUri) doDeleteVfModule.deleteNetworkPoliciesFromAAI(mockExecution) Mockito.verify(client).delete(delUri) @@ -135,7 +126,7 @@ class DoDeleteVfModuleTest extends MsoGroovyTest{ when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true") when(mockExecution.getVariable("vnfId")).thenReturn("12345") when(mockExecution.getVariable("vfModuleId")).thenReturn("module-0") - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.VF_MODULE,"12345","module-0") + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().genericVnf("12345").vfModule("module-0")) VfModule vfModule = new VfModule() vfModule.setOrchestrationStatus("Created") when(client.get(VfModule.class, uri)).thenReturn(Optional.of(vfModule)) diff --git a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVfModuleVolumeV2Test.groovy b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVfModuleVolumeV2Test.groovy index dd8601fb43..84d88ffaf9 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVfModuleVolumeV2Test.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVfModuleVolumeV2Test.groovy @@ -53,6 +53,8 @@ import org.onap.aaiclient.client.aai.AAIObjectType 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 org.onap.aaiclient.client.graphinventory.exceptions.GraphInventoryUriComputationException import org.springframework.core.env.Environment import org.springframework.mock.env.MockEnvironment @@ -182,7 +184,7 @@ class DoDeleteVfModuleVolumeV2Test extends MsoGroovyTest{ when(mockExecution.getVariable("tenantId")).thenReturn("Tenant123") when(mockExecution.getVariable("volumeGroupId")).thenReturn("VolumeGroup123") when(mockExecution.getVariable("DDVMV_aicCloudRegion")).thenReturn("Region1") - AAIResourceUri resourceUri = AAIUriFactory.createResourceUri(AAIObjectType.VOLUME_GROUP,CLOUD_OWNER, "Region1","VolumeGroup123") + AAIResourceUri resourceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.cloudInfrastructure().cloudRegion(CLOUD_OWNER, "Region1").volumeGroup("VolumeGroup123")) Optional<VolumeGroup> volumeGroup = getAAIObjectFromJson(VolumeGroup.class,"__files/AAI/VolumeGroupWithTenant.json"); when(client.get(VolumeGroup.class,resourceUri)).thenReturn(volumeGroup) when(client.get(resourceUri)).thenReturn( @@ -197,7 +199,7 @@ class DoDeleteVfModuleVolumeV2Test extends MsoGroovyTest{ when(mockExecution.getVariable("tenantId")).thenReturn("Tenant123") when(mockExecution.getVariable("volumeGroupId")).thenReturn("VolumeGroup123") when(mockExecution.getVariable("DDVMV_aicCloudRegion")).thenReturn("Region1") - AAIResourceUri resourceUri = AAIUriFactory.createResourceUri(AAIObjectType.VOLUME_GROUP,CLOUD_OWNER, "Region1","VolumeGroup123") + AAIResourceUri resourceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.cloudInfrastructure().cloudRegion(CLOUD_OWNER, "Region1").volumeGroup("VolumeGroup123")) Optional<VolumeGroup> volumeGroup = getAAIObjectFromJson(VolumeGroup.class,"__files/aai/VolumeGroup.json"); when(client.get(VolumeGroup.class,resourceUri)).thenReturn(volumeGroup) try { @@ -212,7 +214,7 @@ class DoDeleteVfModuleVolumeV2Test extends MsoGroovyTest{ when(mockExecution.getVariable("tenantId")).thenReturn("Tenant12345") when(mockExecution.getVariable("volumeGroupId")).thenReturn("VolumeGroup123") when(mockExecution.getVariable("DDVMV_aicCloudRegion")).thenReturn("Region1") - AAIResourceUri resourceUri = AAIUriFactory.createResourceUri(AAIObjectType.VOLUME_GROUP,CLOUD_OWNER, "Region1","VolumeGroup123") + AAIResourceUri resourceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.cloudInfrastructure().cloudRegion(CLOUD_OWNER, "Region1").volumeGroup("VolumeGroup123")) Optional<VolumeGroup> volumeGroup = getAAIObjectFromJson(VolumeGroup.class,"__files/AAI/VolumeGroupWithTenant.json"); when(client.get(VolumeGroup.class,resourceUri)).thenReturn(volumeGroup) try { @@ -227,7 +229,7 @@ class DoDeleteVfModuleVolumeV2Test extends MsoGroovyTest{ when(mockExecution.getVariable("tenantId")).thenReturn("Tenant123") when(mockExecution.getVariable("volumeGroupId")).thenReturn("VolumeGroup123") when(mockExecution.getVariable("DDVMV_aicCloudRegion")).thenReturn("Region1") - AAIResourceUri resourceUri = AAIUriFactory.createResourceUri(AAIObjectType.VOLUME_GROUP,CLOUD_OWNER, "Region1","VolumeGroup123") + AAIResourceUri resourceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.cloudInfrastructure().cloudRegion(CLOUD_OWNER, "Region1").volumeGroup("VolumeGroup123")) when(client.get(VolumeGroup.class,resourceUri)).thenReturn(Optional.empty()) try { deleteVfModuleVolumeV2.callRESTQueryAAIForVolumeGroup(mockExecution, "true") @@ -241,7 +243,7 @@ class DoDeleteVfModuleVolumeV2Test extends MsoGroovyTest{ when(mockExecution.getVariable("tenantId")).thenReturn("Tenant123") when(mockExecution.getVariable("volumeGroupId")).thenReturn("VolumeGroup123") when(mockExecution.getVariable("DDVMV_aicCloudRegion")).thenReturn("Region1") - AAIResourceUri resourceUri = AAIUriFactory.createResourceUri(AAIObjectType.VOLUME_GROUP,CLOUD_OWNER, "Region1","VolumeGroup123") + AAIResourceUri resourceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.cloudInfrastructure().cloudRegion(CLOUD_OWNER, "Region1").volumeGroup("VolumeGroup123")) Optional<VolumeGroup> volumeGroup = getAAIObjectFromJson(VolumeGroup.class,"__files/aai/VolumeGroupWithVfModule.json"); when(client.get(VolumeGroup.class,resourceUri)).thenReturn(volumeGroup) try { @@ -256,7 +258,7 @@ class DoDeleteVfModuleVolumeV2Test extends MsoGroovyTest{ Optional<VolumeGroup> volumeGroup = getAAIObjectFromJson(VolumeGroup.class,"__files/aai/VolumeGroup.json"); when(mockExecution.getVariable("DDVMV_queryAAIVolGrpResponse")).thenReturn(volumeGroup.get()) when(mockExecution.getVariable("DDVMV_aicCloudRegion")).thenReturn("Region1") - AAIResourceUri resourceUri = AAIUriFactory.createResourceUri(AAIObjectType.VOLUME_GROUP,CLOUD_OWNER, "Region1","VolumeGroup123") + AAIResourceUri resourceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.cloudInfrastructure().cloudRegion(CLOUD_OWNER, "Region1").volumeGroup("VolumeGroup123")) doNothing().when(client).delete(resourceUri) deleteVfModuleVolumeV2.callRESTDeleteAAIVolumeGroup(mockExecution,"true") } @@ -266,7 +268,7 @@ class DoDeleteVfModuleVolumeV2Test extends MsoGroovyTest{ Optional<VolumeGroup> volumeGroup = getAAIObjectFromJson(VolumeGroup.class,"__files/aai/VolumeGroupWithVfModule.json"); when(mockExecution.getVariable("DDVMV_queryAAIVolGrpResponse")).thenReturn(volumeGroup.get()) when(mockExecution.getVariable("DDVMV_aicCloudRegion")).thenReturn("Region1") - AAIResourceUri resourceUri = AAIUriFactory.createResourceUri(AAIObjectType.VOLUME_GROUP,CLOUD_OWNER, "Region1",volumeGroup.get().getVolumeGroupId()) + AAIResourceUri resourceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.cloudInfrastructure().cloudRegion(CLOUD_OWNER, "Region1").volumeGroup(volumeGroup.get()).getVolumeGroupId()) doThrow(new GraphInventoryUriComputationException("Error")).when(client).delete(resourceUri) try { deleteVfModuleVolumeV2.callRESTDeleteAAIVolumeGroup(mockExecution, "true") @@ -280,7 +282,7 @@ class DoDeleteVfModuleVolumeV2Test extends MsoGroovyTest{ Optional<VolumeGroup> volumeGroup = getAAIObjectFromJson(VolumeGroup.class,"__files/aai/VolumeGroup.json"); when(mockExecution.getVariable("DDVMV_queryAAIVolGrpResponse")).thenReturn(volumeGroup.get()) when(mockExecution.getVariable("DDVMV_aicCloudRegion")).thenReturn("Region1") - AAIResourceUri resourceUri = AAIUriFactory.createResourceUri(AAIObjectType.VOLUME_GROUP,CLOUD_OWNER, "Region1","VolumeGroup123") + AAIResourceUri resourceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.cloudInfrastructure().cloudRegion(CLOUD_OWNER, "Region1").volumeGroup("VolumeGroup123")) doThrow(new NotFoundException("VolumeGroup Not found")).when(client).delete(resourceUri) try { deleteVfModuleVolumeV2.callRESTDeleteAAIVolumeGroup(mockExecution, "true") diff --git a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVnfAndModulesTest.groovy b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVnfAndModulesTest.groovy index 2da6eca84e..e85b81327f 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVnfAndModulesTest.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVnfAndModulesTest.groovy @@ -42,6 +42,8 @@ import org.onap.so.bpmn.core.WorkflowException import org.onap.aaiclient.client.aai.AAIObjectType 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.aaiclient.client.graphinventory.entities.uri.Depth import org.onap.aaiclient.client.graphinventory.exceptions.GraphInventoryUriComputationException import static com.github.tomakehurst.wiremock.client.WireMock.* @@ -99,7 +101,7 @@ public class DoDeleteVnfAndModulesTest extends MsoGroovyTest{ @Test public void testQueryAAIVfModuleNullEndPoint() { when(mockExecution.getVariable("vnfId")).thenReturn("12345") - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, "12345").depth(Depth.ONE) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().genericVnf("12345")).depth(Depth.ONE) doThrow(new GraphInventoryUriComputationException("Error in AAI")).when(client).get(GenericVnf.class,uri) try { doDeleteVnfAndModules.queryAAIVfModule(mockExecution) diff --git a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoModifyCoreNSSITest.groovy b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoModifyCoreNSSITest.groovy new file mode 100644 index 0000000000..bbc237f1f9 --- /dev/null +++ b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoModifyCoreNSSITest.groovy @@ -0,0 +1,244 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2020 Telecom Italia + * ================================================================================ + * 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.junit.Before +import org.junit.Test +import org.onap.aai.domain.yang.ServiceInstance +import org.onap.aai.domain.yang.SliceProfile +import org.onap.aai.domain.yang.SliceProfiles +import org.onap.aaiclient.client.aai.AAIObjectType +import org.onap.aaiclient.client.aai.entities.AAIEdgeLabel +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.so.bpmn.common.scripts.MsoGroovyTest + +import static org.junit.Assert.assertNotNull +import static org.junit.Assert.assertTrue +import static org.mockito.Mockito.* + +class DoModifyCoreNSSITest extends MsoGroovyTest { + + @Before + void init() throws IOException { + super.init("DoModifyCoreNSSITest") + } + + + @Test + void testGetNSSIAssociatedProfiles() { + def currentNSSI = [:] + when(mockExecution.getVariable("currentNSSI")).thenReturn(currentNSSI) + + ServiceInstance nssi = new ServiceInstance() + nssi.setServiceInstanceId("5G-999") + + SliceProfiles sliceProfiles = new SliceProfiles() + + List<SliceProfile> slProfiles = sliceProfiles.getSliceProfile() + slProfiles.add(new SliceProfile()) + slProfiles.add(new SliceProfile()) + + nssi.setSliceProfiles(sliceProfiles) + currentNSSI.put("nssi", nssi) + + DoModifyCoreNSSI obj = new DoModifyCoreNSSI() + obj.getNSSIAssociatedProfiles(mockExecution) + + List<SliceProfile> associatedProfiles = (List<SliceProfile>)currentNSSI.get("associatedProfiles") + assertTrue("Either associatedProfiles doesn't exist or size is incorrect", (associatedProfiles != null && associatedProfiles.size() == 2)) + } + + + @Test + void testCalculateSNSSAISliceProfileInstanceHasToBeDeleted() { + def currentNSSI = [:] + when(mockExecution.getVariable("currentNSSI")).thenReturn(currentNSSI) + + when(mockExecution.getVariable("isCreateSliceProfileInstance")).thenReturn("false") + + String theSNSSAI = "theS-NSSAI" + + currentNSSI.put("S-NSSAI", theSNSSAI) + + List<SliceProfile> associatedProfiles = new ArrayList<>() + SliceProfile sliceProfile1 = new SliceProfile() + sliceProfile1.setSNssai("snssai1") + + SliceProfile sliceProfile2 = new SliceProfile() + sliceProfile2.setSNssai(theSNSSAI) + + SliceProfile sliceProfile3 = new SliceProfile() + sliceProfile3.setSNssai("snssai2") + + associatedProfiles.add(sliceProfile1) + associatedProfiles.add(sliceProfile2) + associatedProfiles.add(sliceProfile3) + + int sizeBefore = associatedProfiles.size() + + currentNSSI.put("associatedProfiles", associatedProfiles) + + DoModifyCoreNSSI obj = new DoModifyCoreNSSI() + obj.calculateSNSSAI(mockExecution) + + List<SliceProfile> snssais = (List<SliceProfile>)currentNSSI.get("S-NSSAIs") + SliceProfile sliceProfileContainsSNSSAI = (SliceProfile)currentNSSI.get("sliceProfileS-NSSAI") + + assertTrue("Either snssais doesn't exist or size is incorrect", (snssais != null && snssais.size() == (sizeBefore - 1))) + assertNotNull("Slice Profile which contains given S-NSSAI not found", sliceProfileContainsSNSSAI) + assertTrue("Wrong Slice Profile", sliceProfileContainsSNSSAI.getSNssai().equals(theSNSSAI)) + } + + + @Test + void testCalculateSNSSAISliceProfileInstanceHasToBeCreated() { + def currentNSSI = [:] + when(mockExecution.getVariable("currentNSSI")).thenReturn(currentNSSI) + + when(mockExecution.getVariable("isCreateSliceProfileInstance")).thenReturn("true") + + String theSNSSAI = "theS-NSSAI" + + currentNSSI.put("S-NSSAI", theSNSSAI) + + List<SliceProfile> associatedProfiles = new ArrayList<>() + SliceProfile sliceProfile1 = new SliceProfile() + sliceProfile1.setSNssai("snssai1") + + SliceProfile sliceProfile2 = new SliceProfile() + sliceProfile2.setSNssai("snssai2") + + associatedProfiles.add(sliceProfile1) + associatedProfiles.add(sliceProfile2) + + int sizeBefore = associatedProfiles.size() + + currentNSSI.put("associatedProfiles", associatedProfiles) + + DoModifyCoreNSSI obj = new DoModifyCoreNSSI() + obj.calculateSNSSAI(mockExecution) + + List<SliceProfile> snssais = (List<SliceProfile>)currentNSSI.get("S-NSSAIs") + + assertTrue("Either snssais doesn't exist or size is incorrect", (snssais != null && snssais.size() == (sizeBefore + 1))) + + } + + + @Test + void testCreateSliceProfileInstance() { + def currentNSSI = [:] + + when(mockExecution.getVariable("currentNSSI")).thenReturn(currentNSSI) + + String sliceProfileId = "sliceProfileId" + + when(mockExecution.getVariable("sliceProfileID")).thenReturn(sliceProfileId) + + Map<String, Object> sliceProfileMap = new HashMap<>() + sliceProfileMap.put("expDataRateUL", "12") + sliceProfileMap.put("expDataRateDL", 5) + sliceProfileMap.put("activityFactor", 2) + sliceProfileMap.put("latency", 10) + + when(mockExecution.getVariable("sliceProfileCn")).thenReturn(sliceProfileMap) + + + Map<String, Object> serviceProfileMap = new HashMap<>() + when(mockExecution.getVariable("serviceProfile")).thenReturn(serviceProfileMap) + + + DoModifyCoreNSSI spy = spy(DoModifyCoreNSSI.class) + when(spy.getAAIClient()).thenReturn(client) + + String globalSubscriberId = "globalSubscriberId" + String serviceType = "serviceType" + String nssiId = "nssiId" + + currentNSSI.put("globalSubscriberId", globalSubscriberId) + currentNSSI.put("serviceType", serviceType) + currentNSSI.put("nssiId", nssiId) + currentNSSI.put("sliceProfileId", sliceProfileId) + + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(serviceType).serviceInstance(nssiId).sliceProfile(sliceProfileId)) + + SliceProfile sliceProfile = new SliceProfile() + sliceProfile.setProfileId(sliceProfileId) + + doNothing().when(client).create(uri, sliceProfile) + + spy.createSliceProfileInstance(mockExecution) + + assertNotNull("Slice Profile doesn't exist", currentNSSI.get("createdSliceProfile")) + assertTrue("Unexpected Slice Profile Id", ((SliceProfile)currentNSSI.get("createdSliceProfile")).getProfileId().equals(sliceProfile.getProfileId())) + } + + + @Test + void testAssociateSliceProfileInstanceWithNSSI() { + def currentNSSI = [:] + + when(mockExecution.getVariable("currentNSSI")).thenReturn(currentNSSI) + + DoModifyCoreNSSI spy = spy(DoModifyCoreNSSI.class) + when(spy.getAAIClient()).thenReturn(client) + + String sliceProfileId = "sliceProfileId" + + when(mockExecution.getVariable("sliceProfileID")).thenReturn(sliceProfileId) + + String nssiId = "5G-999" + currentNSSI.put("nssiId", nssiId) + + String globalSubscriberId = "globalSubscriberId" + String serviceType = "serviceType" + + AAIResourceUri nssiUri = AAIUriFactory.createResourceUri(Types.SERVICE_INSTANCE.getFragment(nssiId)) + AAIResourceUri sliceProfileUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(serviceType).serviceInstance(nssiId).sliceProfile(sliceProfileId)) + + currentNSSI.put("globalSubscriberId", globalSubscriberId) + currentNSSI.put("serviceType", serviceType) + currentNSSI.put("sliceProfileId", sliceProfileId) + + SliceProfile sliceProfile = new SliceProfile() + currentNSSI.put("createdSliceProfile", sliceProfile) + + ServiceInstance nssi = new ServiceInstance() + nssi.setServiceInstanceId(nssiId) + nssi.setSliceProfiles(new SliceProfiles()) + currentNSSI.put("nssi", nssi) + + int sizeBelore = nssi.getSliceProfiles().getSliceProfile().size() + + doNothing().when(client).update(nssiUri, nssi) + doNothing().when(client).connect(sliceProfileUri, nssiUri, AAIEdgeLabel.BELONGS_TO) + + spy.associateSliceProfileInstanceWithNSSI(mockExecution) + + assertTrue("Wrong number of associated slice profiles", ((ServiceInstance)currentNSSI.get("nssi")).getSliceProfiles().getSliceProfile().size() == (sizeBelore + 1)) + } + + +} diff --git a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoModifyTnNssiTest.groovy b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoModifyTnNssiTest.groovy index bbbec3bb46..ef106f8064 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoModifyTnNssiTest.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoModifyTnNssiTest.groovy @@ -29,12 +29,15 @@ import org.mockito.Mockito import org.onap.aaiclient.client.aai.AAIObjectType 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.so.bpmn.common.scripts.MsoGroovyTest import static org.junit.Assert.assertNotNull import static org.mockito.ArgumentMatchers.eq import static org.mockito.Mockito.* + class DoModifyTnNssiTest extends MsoGroovyTest { @Before void init() throws IOException { @@ -80,7 +83,7 @@ class DoModifyTnNssiTest extends MsoGroovyTest { when(mockExecution.getVariable("modelUuid")).thenReturn("36a3a8ea-49a6-4ac8-b06c-89a54544b9b6") when(mockExecution.getVariable("sliceProfile")).thenReturn(mockSliceProfile()) - AAIResourceUri serviceInstanceUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, "5GCustomer", "5G", "5ad89cf9-0569-4a93-9306-d8324321e2be") + AAIResourceUri serviceInstanceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer("5GCustomer").serviceSubscription("5G").serviceInstance("5ad89cf9-0569-4a93-9306-d8324321e2be")) DoModifyTnNssi obj = spy(DoModifyTnNssi.class) when(obj.getAAIClient()).thenReturn(client) diff --git a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVfModuleVolumeInfraV1Test.groovy b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVfModuleVolumeInfraV1Test.groovy index bf877bd725..e2010ce047 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVfModuleVolumeInfraV1Test.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVfModuleVolumeInfraV1Test.groovy @@ -23,6 +23,8 @@ package org.onap.so.bpmn.infrastructure.scripts +import static org.mockito.Mockito.* +import javax.ws.rs.core.UriBuilder import org.camunda.bpm.engine.delegate.BpmnError import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity import org.junit.Assert @@ -38,18 +40,16 @@ import org.mockito.junit.MockitoJUnitRunner import org.onap.aai.domain.yang.GenericVnf import org.onap.aai.domain.yang.VfModule import org.onap.aai.domain.yang.VolumeGroup -import org.onap.so.bpmn.common.scripts.MsoGroovyTest -import org.onap.so.bpmn.mock.FileUtil import org.onap.aaiclient.client.aai.AAIObjectType 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 org.onap.so.bpmn.common.scripts.MsoGroovyTest +import org.onap.so.bpmn.mock.FileUtil import org.onap.so.constants.Defaults -import javax.ws.rs.core.UriBuilder - -import static org.mockito.Mockito.* - @RunWith(MockitoJUnitRunner.Silent.class) class UpdateVfModuleVolumeInfraV1Test extends MsoGroovyTest{ @@ -79,7 +79,7 @@ class UpdateVfModuleVolumeInfraV1Test extends MsoGroovyTest{ UpdateVfModuleVolumeInfraV1 obj = spy(UpdateVfModuleVolumeInfraV1.class) when(obj.getAAIClient()).thenReturn(client) - AAIResourceUri uri = AAIUriFactory.createResourceFromExistingURI(AAIObjectType.VF_MODULE, UriBuilder.fromPath("/aai/v8/network/generic-vnfs/generic-vnf/12345/vf-modules/vf-module/12345").build()) + AAIResourceUri uri = AAIUriFactory.createResourceFromExistingURI(Types.VF_MODULE, UriBuilder.fromPath("/aai/v8/network/generic-vnfs/generic-vnf/12345/vf-modules/vf-module/12345").build()) VfModule vfModule = new VfModule(); vfModule.setVfModuleId("12345") vfModule.setModelInvariantId("ff5256d2-5a33-55df-13ab-12abad84e7ff") @@ -98,7 +98,7 @@ class UpdateVfModuleVolumeInfraV1Test extends MsoGroovyTest{ UpdateVfModuleVolumeInfraV1 obj = spy(UpdateVfModuleVolumeInfraV1.class) when(obj.getAAIClient()).thenReturn(client) - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.VOLUME_GROUP, Defaults.CLOUD_OWNER.toString(), aicCloudRegion, volumeGroupId) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.cloudInfrastructure().cloudRegion(Defaults.CLOUD_OWNER.toString(), aicCloudRegion).volumeGroup(volumeGroupId)) VolumeGroup volumeGroup = new VolumeGroup(); volumeGroup.setVolumeGroupId(volumeGroupId) @@ -116,7 +116,7 @@ class UpdateVfModuleVolumeInfraV1Test extends MsoGroovyTest{ UpdateVfModuleVolumeInfraV1 obj = spy(UpdateVfModuleVolumeInfraV1.class) when(obj.getAAIClient()).thenReturn(client) - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().genericVnf(vnfId)) GenericVnf genericVnf = new GenericVnf() genericVnf.setVnfId(vnfId) genericVnf.setVnfName("testvnfName") @@ -133,7 +133,7 @@ class UpdateVfModuleVolumeInfraV1Test extends MsoGroovyTest{ UpdateVfModuleVolumeInfraV1 obj = spy(UpdateVfModuleVolumeInfraV1.class) when(obj.getAAIClient()).thenReturn(client) - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().genericVnf(vnfId)) when(client.get(GenericVnf.class,uri)).thenReturn(Optional.empty()) thrown.expect(BpmnError.class) obj.queryAAIForGenericVnf(mockExecution, "true") diff --git a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVfModuleVolumeTest.groovy b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVfModuleVolumeTest.groovy index 6a8465e2b6..a505a7c8b8 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVfModuleVolumeTest.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVfModuleVolumeTest.groovy @@ -42,6 +42,8 @@ import org.onap.aaiclient.client.aai.AAIObjectType 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 org.onap.so.constants.Defaults import javax.ws.rs.core.UriBuilder @@ -75,7 +77,7 @@ class UpdateVfModuleVolumeTest extends MsoGroovyTest{ UpdateVfModuleVolume obj = spy(UpdateVfModuleVolume.class) when(obj.getAAIClient()).thenReturn(client) - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.VOLUME_GROUP, Defaults.CLOUD_OWNER.toString(), aicCloudRegion, volumeGroupId) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.cloudInfrastructure().cloudRegion(Defaults.CLOUD_OWNER.toString(), aicCloudRegion).volumeGroup(volumeGroupId)) VolumeGroup volumeGroup = new VolumeGroup(); volumeGroup.setVolumeGroupId(volumeGroupId) @@ -94,7 +96,7 @@ class UpdateVfModuleVolumeTest extends MsoGroovyTest{ UpdateVfModuleVolume obj = spy(UpdateVfModuleVolume.class) when(obj.getAAIClient()).thenReturn(client) - AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.VOLUME_GROUP, Defaults.CLOUD_OWNER.toString(), aicCloudRegion, volumeGroupId) + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.cloudInfrastructure().cloudRegion(Defaults.CLOUD_OWNER.toString(), aicCloudRegion).volumeGroup(volumeGroupId)) VolumeGroup volumeGroup = new VolumeGroup(); volumeGroup.setVolumeGroupId(volumeGroupId) diff --git a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/vcpe/scripts/DoCreateAllottedResourceBRGTest.groovy b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/vcpe/scripts/DoCreateAllottedResourceBRGTest.groovy index d7f7547459..a3851435c0 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/vcpe/scripts/DoCreateAllottedResourceBRGTest.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/vcpe/scripts/DoCreateAllottedResourceBRGTest.groovy @@ -22,27 +22,26 @@ package org.onap.so.bpmn.vcpe.scripts -import com.github.tomakehurst.wiremock.junit.WireMockRule +import static com.github.tomakehurst.wiremock.client.WireMock.aResponse +import static com.github.tomakehurst.wiremock.client.WireMock.put +import static com.github.tomakehurst.wiremock.client.WireMock.urlMatching +import static org.junit.Assert.* +import static org.mockito.Mockito.* +import static org.onap.so.bpmn.mock.StubResponseAAI.* +import javax.ws.rs.core.UriBuilder import org.camunda.bpm.engine.delegate.BpmnError import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity import org.junit.* import org.mockito.MockitoAnnotations +import org.onap.aaiclient.client.aai.AAIResourcesClient +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.so.bpmn.core.RollbackData import org.onap.so.bpmn.core.UrnPropertiesReader import org.onap.so.bpmn.core.WorkflowException import org.onap.so.bpmn.mock.FileUtil -import org.onap.aaiclient.client.aai.AAIObjectType -import org.onap.aaiclient.client.aai.AAIResourcesClient -import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory - -import javax.ws.rs.core.UriBuilder - -import static com.github.tomakehurst.wiremock.client.WireMock.aResponse -import static com.github.tomakehurst.wiremock.client.WireMock.put -import static com.github.tomakehurst.wiremock.client.WireMock.urlMatching -import static org.junit.Assert.* -import static org.mockito.Mockito.* -import static org.onap.so.bpmn.mock.StubResponseAAI.* +import com.github.tomakehurst.wiremock.junit.WireMockRule class DoCreateAllottedResourceBRGTest extends GroovyTestBase { @@ -157,7 +156,7 @@ class DoCreateAllottedResourceBRGTest extends GroovyTestBase { public void createAaiAR() { ExecutionEntity mockExecution = setupMock() AAIResourcesClient client = mock(AAIResourcesClient.class) - when(mockExecution.getVariable("PSI_resourceLink")).thenReturn(AAIUriFactory.createResourceFromExistingURI(AAIObjectType.SERVICE_INSTANCE, UriBuilder.fromPath("/aai/v9/business/customers/customer/" + CUST + "/service-subscriptions/service-subscription/" + SVC + "/service-instances/service-instance/" + INST).build())) + when(mockExecution.getVariable("PSI_resourceLink")).thenReturn(AAIUriFactory.createResourceFromExistingURI(Types.SERVICE_INSTANCE, UriBuilder.fromPath("/aai/v9/business/customers/customer/" + CUST + "/service-subscriptions/service-subscription/" + SVC + "/service-instances/service-instance/" + INST).build())) when(mockExecution.getVariable("CSI_resourceLink")).thenReturn("/aai/v9/business/customers/customer/" + CUST + "/service-subscriptions/service-subscription/" + SVC + "/service-instances/service-instance/" + INST) when(mockExecution.getVariable("allottedResourceModelInfo")).thenReturn("{\n" + " \"modelInvariantUuid\":\"modelInvariantUuid\",\n" + @@ -843,7 +842,7 @@ class DoCreateAllottedResourceBRGTest extends GroovyTestBase { when(mex.getVariable("allottedResourceId")).thenReturn(ARID) when(mex.getVariable("aai.endpoint")).thenReturn(aaiUriPfx) when(mex.getVariable("mso.workflow.global.default.aai.namespace")).thenReturn(UrnPropertiesReader.getVariable("mso.workflow.global.default.aai.namespace")) - when(mex.getVariable("PSI_resourceLink")).thenReturn(AAIUriFactory.createResourceFromExistingURI(AAIObjectType.SERVICE_INSTANCE, UriBuilder.fromPath("/business/customers/customer/" + CUST + "/service-subscriptions/service-subscription/" + SVC + "/service-instances/service-instance/" + INST).build())) + when(mex.getVariable("PSI_resourceLink")).thenReturn(AAIUriFactory.createResourceFromExistingURI(Types.SERVICE_INSTANCE, UriBuilder.fromPath("/business/customers/customer/" + CUST + "/service-subscriptions/service-subscription/" + SVC + "/service-instances/service-instance/" + INST).build())) when(mex.getVariable("allottedResourceType")).thenReturn("BRGt") when(mex.getVariable("allottedResourceRole")).thenReturn("BRGr") when(mex.getVariable("CSI_resourceLink")).thenReturn(aaiUriPfx + "/aai/v9/mycsi") diff --git a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/vcpe/scripts/DoCreateAllottedResourceTXCTest.groovy b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/vcpe/scripts/DoCreateAllottedResourceTXCTest.groovy index 2a6894785e..0e2c01a200 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/vcpe/scripts/DoCreateAllottedResourceTXCTest.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/vcpe/scripts/DoCreateAllottedResourceTXCTest.groovy @@ -22,28 +22,25 @@ package org.onap.so.bpmn.vcpe.scripts -import org.camunda.bpm.engine.delegate.BpmnError -import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity -import org.junit.* -import org.mockito.MockitoAnnotations -import org.onap.so.bpmn.core.UrnPropertiesReader -import org.onap.so.bpmn.core.WorkflowException -import org.onap.so.bpmn.mock.FileUtil -import org.onap.aaiclient.client.aai.AAIObjectType -import org.onap.aaiclient.client.aai.AAIResourcesClient -import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory - -import javax.ws.rs.core.UriBuilder - import static org.junit.Assert.* import static org.mockito.Mockito.* import static org.onap.so.bpmn.mock.StubResponseAAI.MockGetAllottedResource import static org.onap.so.bpmn.mock.StubResponseAAI.MockPatchAllottedResource import static org.onap.so.bpmn.mock.StubResponseAAI.MockPutAllottedResource import static org.onap.so.bpmn.mock.StubResponseAAI.MockPutAllottedResource_500 - +import javax.ws.rs.core.UriBuilder +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity +import org.junit.* +import org.mockito.MockitoAnnotations +import org.onap.aaiclient.client.aai.AAIResourcesClient +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.so.bpmn.core.RollbackData - +import org.onap.so.bpmn.core.UrnPropertiesReader +import org.onap.so.bpmn.core.WorkflowException +import org.onap.so.bpmn.mock.FileUtil import com.github.tomakehurst.wiremock.junit.WireMockRule class DoCreateAllottedResourceTXCTest extends GroovyTestBase { @@ -157,7 +154,7 @@ class DoCreateAllottedResourceTXCTest extends GroovyTestBase { public void createAaiAR() { ExecutionEntity mex = setupMock() initCreateAaiAr(mex) - when(mex.getVariable("PSI_resourceLink")).thenReturn(AAIUriFactory.createResourceFromExistingURI(AAIObjectType.SERVICE_INSTANCE, UriBuilder.fromPath("/aai/v9/business/customers/customer/" + CUST + "/service-subscriptions/service-subscription/" + SVC + "/service-instances/service-instance/" + INST).build())) + when(mex.getVariable("PSI_resourceLink")).thenReturn(AAIUriFactory.createResourceFromExistingURI(Types.SERVICE_INSTANCE, UriBuilder.fromPath("/aai/v9/business/customers/customer/" + CUST + "/service-subscriptions/service-subscription/" + SVC + "/service-instances/service-instance/" + INST).build())) when(mex.getVariable("CSI_resourceLink")).thenReturn("/aai/v9/business/customers/customer/" + CUST + "/service-subscriptions/service-subscription/" + SVC + "/service-instances/service-instance/" + INST) when(mex.getVariable("allottedResourceModelInfo")).thenReturn("{\n" + " \"modelInvariantUuid\":\"modelInvariantUuid\",\n" + @@ -788,7 +785,7 @@ class DoCreateAllottedResourceTXCTest extends GroovyTestBase { when(mex.getVariable("allottedResourceId")).thenReturn(ARID) when(mex.getVariable("aai.endpoint")).thenReturn(aaiUriPfx) when(mex.getVariable("mso.workflow.global.default.aai.namespace")).thenReturn(UrnPropertiesReader.getVariable("mso.workflow.global.default.aai.namespace")) - when(mex.getVariable("PSI_resourceLink")).thenReturn(AAIUriFactory.createResourceFromExistingURI(AAIObjectType.SERVICE_INSTANCE, UriBuilder.fromPath("/business/customers/customer/" + CUST + "/service-subscriptions/service-subscription/" + SVC + "/service-instances/service-instance/" + INST).build())) + when(mex.getVariable("PSI_resourceLink")).thenReturn(AAIUriFactory.createResourceFromExistingURI(Types.SERVICE_INSTANCE, UriBuilder.fromPath("/business/customers/customer/" + CUST + "/service-subscriptions/service-subscription/" + SVC + "/service-instances/service-instance/" + INST).build())) when(mex.getVariable("allottedResourceType")).thenReturn("TXCt") when(mex.getVariable("allottedResourceRole")).thenReturn("TXCr") when(mex.getVariable("CSI_resourceLink")).thenReturn(aaiUriPfx + "/aai/v9/mycsi") diff --git a/bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/aai/AAICreateResourcesTest.java b/bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/aai/AAICreateResourcesTest.java index 978814be7f..ddc30f8262 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/aai/AAICreateResourcesTest.java +++ b/bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/aai/AAICreateResourcesTest.java @@ -35,12 +35,12 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Spy; import org.mockito.junit.MockitoJUnitRunner; -import org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf; -import org.onap.aaiclient.client.aai.AAIObjectType; import org.onap.aaiclient.client.aai.AAIResourcesClient; 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.so.bpmn.servicedecomposition.bbobjects.GenericVnf; @RunWith(MockitoJUnitRunner.class) public class AAICreateResourcesTest { @@ -87,7 +87,8 @@ public class AAICreateResourcesTest { aaiCreateResources.createAAIProject(projectName, serviceInstanceId); - AAIResourceUri projectURI = AAIUriFactory.createResourceUri(AAIObjectType.PROJECT, projectName); + AAIResourceUri projectURI = + AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().project(projectName)); verify(aaiResourcesClient, times(1)).createIfNotExists(projectURI, Optional.empty()); verify(aaiResourcesClient, times(1)).connect(isA(AAIResourceUri.class), isA(AAIResourceUri.class)); @@ -103,7 +104,8 @@ public class AAICreateResourcesTest { HashMap<String, String> owningEntityMap = new HashMap<>(); owningEntityMap.put("owning-entity-name", owningEntityName); - AAIResourceUri owningEntityURI = AAIUriFactory.createResourceUri(AAIObjectType.OWNING_ENTITY, owningEntityId); + AAIResourceUri owningEntityURI = + AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().owningEntity(owningEntityId)); verify(aaiResourcesClient, times(1)).createIfNotExists(owningEntityURI, Optional.of(owningEntityMap)); verify(aaiResourcesClient, times(1)).connect(isA(AAIResourceUri.class), isA(AAIResourceUri.class)); @@ -115,7 +117,8 @@ public class AAICreateResourcesTest { boolean expectedBoolean = aaiCreateResources.existsOwningEntity(owningEntityId); - AAIResourceUri owningEntityURI = AAIUriFactory.createResourceUri(AAIObjectType.OWNING_ENTITY, owningEntityId); + AAIResourceUri owningEntityURI = + AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().owningEntity(owningEntityId)); verify(aaiResourcesClient, times(1)).exists(owningEntityURI); assertTrue(expectedBoolean); @@ -138,7 +141,8 @@ public class AAICreateResourcesTest { aaiCreateResources.createAAIPlatform(platformName, vnfId); - AAIResourceUri platformURI = AAIUriFactory.createResourceUri(AAIObjectType.PLATFORM, platformName); + AAIResourceUri platformURI = + AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().platform(platformName)); verify(aaiResourcesClient, times(1)).createIfNotExists(platformURI, Optional.empty()); verify(aaiResourcesClient, times(1)).connect(isA(AAIResourceUri.class), isA(AAIResourceUri.class)); @@ -153,7 +157,7 @@ public class AAICreateResourcesTest { aaiCreateResources.createAAILineOfBusiness(lineOfBusiness, vnfId); AAIResourceUri lineOfBusinessURI = - AAIUriFactory.createResourceUri(AAIObjectType.LINE_OF_BUSINESS, lineOfBusiness); + AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().lineOfBusiness(lineOfBusiness)); verify(aaiResourcesClient, times(1)).createIfNotExists(lineOfBusinessURI, Optional.empty()); verify(aaiResourcesClient, times(1)).connect(isA(AAIResourceUri.class), isA(AAIResourceUri.class)); @@ -166,8 +170,8 @@ public class AAICreateResourcesTest { aaiCreateResources.createAAIServiceInstance(globalCustomerId, serviceType, serviceInstanceId); - AAIResourceUri serviceInstanceURI = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, - globalCustomerId, serviceType, serviceInstanceId); + AAIResourceUri serviceInstanceURI = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business() + .customer(globalCustomerId).serviceSubscription(serviceType).serviceInstance(serviceInstanceId)); verify(aaiResourcesClient, times(1)).createIfNotExists(serviceInstanceURI, Optional.empty()); } @@ -180,7 +184,7 @@ public class AAICreateResourcesTest { Optional<GenericVnf> actualVnf = aaiCreateResources.getVnfInstance(vnfId); - AAIResourceUri vnfURI = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId); + AAIResourceUri vnfURI = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().genericVnf(vnfId)); verify(aaiResourcesClient, times(1)).get(vnfURI); assertEquals(actualVnf, aaiResultWrapper.asBean(GenericVnf.class)); @@ -192,7 +196,7 @@ public class AAICreateResourcesTest { Optional<GenericVnf> actualVnf = aaiCreateResources.getVnfInstance(vnfId); - AAIResourceUri vnfURI = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId); + AAIResourceUri vnfURI = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().genericVnf(vnfId)); verify(aaiResourcesClient, times(1)).get(vnfURI); assertEquals(actualVnf, Optional.empty()); |