diff options
Diffstat (limited to 'bpmn')
10 files changed, 218 insertions, 44 deletions
diff --git a/bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/RequestDBUtil.groovy b/bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/RequestDBUtil.groovy index 23dfdce753..4e8be5d6e5 100644 --- a/bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/RequestDBUtil.groovy +++ b/bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/RequestDBUtil.groovy @@ -144,7 +144,7 @@ class RequestDBUtil { <ns:initResourceOperationStatus xmlns:ns="http://org.onap.so/requestsdb"> <serviceId>${MsoUtils.xmlEscape(serviceId)}</serviceId> <operationId>${MsoUtils.xmlEscape(operationId)}</operationId> - <operationType>${MsoUtils.xmlEscape(operType)}</operationType> + <operType>${MsoUtils.xmlEscape(operType)}</operType> <resourceTemplateUUIDs>${MsoUtils.xmlEscape(resourceTemplateUUID)}</resourceTemplateUUIDs> </ns:initResourceOperationStatus> </soapenv:Body> @@ -192,8 +192,9 @@ class RequestDBUtil { <ns:updateResourceOperationStatus xmlns:ns="http://org.onap.so/requestsdb"> <serviceId>${MsoUtils.xmlEscape(serviceId)}</serviceId> <operationId>${MsoUtils.xmlEscape(operationId)}</operationId> - <resourceTemplateUUIDs>${MsoUtils.xmlEscape(resourceTemplateUUID)}</resourceTemplateUUIDs> - <operationType>${MsoUtils.xmlEscape(operType)}</operationType> + <resourceTemplateUUID>${MsoUtils.xmlEscape(resourceTemplateUUID)}</resourceTemplateUUID> + <operType>${MsoUtils.xmlEscape(operType)}</operType> + <resourceInstanceID>${MsoUtils.xmlEscape(resourceInstanceID)}</resourceInstanceID> <jobId>${MsoUtils.xmlEscape(jobId)}</jobId> <status>${MsoUtils.xmlEscape(status)}</status> <progress>${MsoUtils.xmlEscape(progress)}</progress> diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/tasks/BBInputSetupUtils.java b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/tasks/BBInputSetupUtils.java index afd7f6433c..24f1e055e2 100644 --- a/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/tasks/BBInputSetupUtils.java +++ b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/tasks/BBInputSetupUtils.java @@ -269,10 +269,10 @@ public class BBInputSetupUtils { String cloudRegionId = cloudConfiguration.getLcpCloudRegionId(); String cloudOwner = cloudConfiguration.getCloudOwner(); if (cloudRegionId != null && cloudOwner != null && !cloudRegionId.isEmpty() && !cloudOwner.isEmpty()) { - return injectionHelper.getAaiClient() - .get(CloudRegion.class, AAIUriFactory.createResourceUri( + return injectionHelper.getAaiClient().get(CloudRegion.class, + AAIUriFactory.createResourceUri( AAIFluentTypeBuilder.cloudInfrastructure().cloudRegion(cloudOwner, cloudRegionId)) - .depth(Depth.TWO)) + .depth(Depth.ONE).nodesOnly(true)) .orElse(null); } else { diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/client/restproperties/AAIPropertiesImpl.java b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/client/restproperties/AAIPropertiesImpl.java index f67af20ef1..98a14fc0e5 100644 --- a/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/client/restproperties/AAIPropertiesImpl.java +++ b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/client/restproperties/AAIPropertiesImpl.java @@ -25,6 +25,7 @@ import java.net.URL; import org.onap.aaiclient.client.aai.AAIProperties; import org.onap.aaiclient.client.aai.AAIVersion; import org.onap.so.bpmn.core.UrnPropertiesReader; +import org.onap.so.client.CacheProperties; import org.springframework.stereotype.Component; @Component @@ -34,6 +35,9 @@ public class AAIPropertiesImpl implements AAIProperties { public static final String AAI_AUTH = "aai.auth"; public static final String AAI_ENDPOINT = "aai.endpoint"; public static final String AAI_READ_TIMEOUT = "aai.readTimeout"; + public static final String AAI_ENABLE_CACHING = "aai.caching.enable"; + public static final String AAI_CACHE_MAX_AGE = "aai.caching.maxAge"; + private UrnPropertiesReader reader; @Override @@ -66,4 +70,19 @@ public class AAIPropertiesImpl implements AAIProperties { return Long.valueOf(reader.getVariable(AAI_READ_TIMEOUT, "60000")); } + @Override + public boolean isCachingEnabled() { + return Boolean.parseBoolean(reader.getVariable(AAI_ENABLE_CACHING, "false")); + } + + @Override + public CacheProperties getCacheProperties() { + return new AAICacheProperties() { + @Override + public Long getMaxAge() { + return Long.valueOf(reader.getVariable(AAI_CACHE_MAX_AGE, "60000")); + } + }; + } + } diff --git a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/servicedecomposition/tasks/BBInputSetupUtilsTest.java b/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/servicedecomposition/tasks/BBInputSetupUtilsTest.java index 85774ec23c..188f853a14 100644 --- a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/servicedecomposition/tasks/BBInputSetupUtilsTest.java +++ b/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/servicedecomposition/tasks/BBInputSetupUtilsTest.java @@ -184,7 +184,7 @@ public class BBInputSetupUtilsTest { AAIUriFactory .createResourceUri(AAIFluentTypeBuilder.cloudInfrastructure() .cloudRegion(cloudConfig.getCloudOwner(), cloudConfig.getLcpCloudRegionId())) - .depth(Depth.TWO)); + .depth(Depth.ONE).nodesOnly(true)); assertThat(bbInputSetupUtils.getCloudRegion(cloudConfig), sameBeanAs(expected.get())); } diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/AllocateSliceSubnet.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/AllocateSliceSubnet.groovy index 9100f2773b..e2d9c16328 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/AllocateSliceSubnet.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/AllocateSliceSubnet.groovy @@ -149,16 +149,17 @@ class AllocateSliceSubnet extends AbstractServiceTaskProcessor { def prepareInitOperationStatus = { DelegateExecution execution -> logger.debug(Prefix + "prepareInitOperationStatus Start") - String serviceId = execution.getVariable("dummyServiceId") + String modelUuid = execution.getVariable("modelUuid") String jobId = execution.getVariable("jobId") String nsiId = execution.getVariable("nsiId") - logger.debug("Generated new job for Service Instance serviceId:" + serviceId + " jobId:" + jobId) + logger.debug("Generated new job for Service Instance serviceId:" + modelUuid + " jobId:" + jobId) ResourceOperationStatus initStatus = new ResourceOperationStatus() - initStatus.setServiceId(serviceId) - initStatus.setOperationId(jobId) - initStatus.setResourceTemplateUUID(nsiId) - initStatus.setOperType("Allocate") + initStatus.setServiceId(nsiId) // set nsiId to this field + initStatus.setOperationId(jobId) // set jobId to this field + initStatus.setResourceTemplateUUID(modelUuid) // set modelUuid to this field + initStatus.setOperType("ALLOCATE") + //initStatus.setResourceInstanceID() // set nssiId to this field requestDBUtil.prepareInitResourceOperationStatus(execution, initStatus) logger.debug(Prefix + "prepareInitOperationStatus Exit") 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 fac8871b52..1f3cf6ed52 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 @@ -20,8 +20,11 @@ package org.onap.so.bpmn.infrastructure.scripts +import org.onap.so.beans.nsmf.ConnectionLink +import org.onap.so.beans.nsmf.EndPoint import org.onap.so.beans.nsmf.NsiInfo import org.onap.so.beans.nsmf.SliceProfileAdapter +import org.onap.so.beans.nsmf.TransportSliceNetwork import org.onap.so.beans.nsmf.oof.SubnetType import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor import javax.ws.rs.NotFoundException @@ -328,6 +331,12 @@ class DoAllocateNSIandNSSI extends AbstractServiceTaskProcessor{ NsiInfo nsiInfo = new NsiInfo() nsiInfo.nsiId = sliceParams.suggestNsiId allocateAnNssi.nsiInfo = nsiInfo + //endPoint + EndPoint endPoint = new EndPoint() + endPoint.setIpAddress(sliceTaskInfo.sliceProfile.ipAddress) + endPoint.setLogicInterfaceId(sliceTaskInfo.sliceProfile.logicInterfaceId) + endPoint.setNextHopInfo(sliceTaskInfo.sliceProfile.nextHopInfo) + allocateAnNssi.setEndPoint(endPoint) EsrInfo esrInfo = new EsrInfo() //todo: vendor and network @@ -442,6 +451,12 @@ class DoAllocateNSIandNSSI extends AbstractServiceTaskProcessor{ NsiInfo nsiInfo = new NsiInfo() nsiInfo.nsiId = sliceParams.suggestNsiId allocateCnNssi.nsiInfo = nsiInfo + // endPoint + EndPoint endPoint = new EndPoint() + endPoint.setIpAddress(sliceTaskInfo.sliceProfile.ipAddress) + endPoint.setLogicInterfaceId(sliceTaskInfo.sliceProfile.logicInterfaceId) + endPoint.setNextHopInfo(sliceTaskInfo.sliceProfile.nextHopInfo) + allocateCnNssi.setEndPoint(endPoint) EsrInfo esrInfo = new EsrInfo() //todo: vendor and network @@ -552,8 +567,18 @@ class DoAllocateNSIandNSSI extends AbstractServiceTaskProcessor{ AllocateTnNssi allocateTnNssi = new AllocateTnNssi() //todo: AllocateTnNssi - //todo: endpointId -> set into tn - allocateTnNssi.setTransportSliceNetworks() + //todo: endPointId -> set into tn + List<TransportSliceNetwork> transportSliceNetworks = new ArrayList<>() + TransportSliceNetwork transportSliceNetwork = new TransportSliceNetwork() + List<ConnectionLink> connectionLinks = new ArrayList<>() + ConnectionLink connectionLink = new ConnectionLink() + connectionLink.setTransportEndpointA(sliceParams.anSliceTaskInfo.endPointId) + connectionLink.setTransportEndpointB(sliceParams.cnSliceTaskInfo.endPointId) + connectionLinks.add(connectionLink) + transportSliceNetwork.setConnectionLinks(connectionLinks) + transportSliceNetworks.add(transportSliceNetwork) + allocateTnNssi.setTransportSliceNetworks(transportSliceNetworks) + allocateTnNssi.setNetworkSliceInfos() allocateTnNssi.setSliceProfile(sliceTaskInfo.sliceProfile.trans2TnProfile()) NsiInfo nsiInfo = new NsiInfo() @@ -607,7 +632,7 @@ class DoAllocateNSIandNSSI extends AbstractServiceTaskProcessor{ String sliceProfileInstanceId = sliceParams.anSliceTaskInfo.sliceInstanceId String serviceProfileInstanceId = sliceParams.serviceId //nsi id - //todo: aai -> nssi -> relationship -> endpointId -> set into tn + //todo: aai -> nssi -> relationship -> endPointId -> set into tn String endPointId = getEndpointIdFromAAI(execution, nssiId) execution.setVariable("endPointIdAn", endPointId) @@ -641,7 +666,7 @@ class DoAllocateNSIandNSSI extends AbstractServiceTaskProcessor{ String sliceProfileInstanceId = sliceParams.cnSliceTaskInfo.sliceInstanceId String serviceProfileInstanceId = sliceParams.serviceId //nsi id - //todo: aai -> nssi -> relationship -> endpointId -> set into tn + //todo: aai -> nssi -> relationship -> endPointId -> set into tn String endPointId = getEndpointIdFromAAI(execution, nssiId) execution.setVariable("endPointIdCn", endPointId) @@ -685,7 +710,7 @@ class DoAllocateNSIandNSSI extends AbstractServiceTaskProcessor{ exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) } else { ServiceInstance nssiInstance = si.get() - //todo: handle relationship and return endpointId + //todo: handle relationship and return endPointId if (nssiInstance.relationshipList == null) { String msg = "relationshipList of " + nssiId + " is null" logger.debug(msg) 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 896d7ff4b1..e5c1b56d55 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 @@ -99,8 +99,12 @@ class DoAllocateNSSI extends AbstractServiceTaskProcessor { if (response != null) { JobStatusResponse jobStatusResponse = objectMapper.readValue(response, JobStatusResponse.class) - execution.setVariable("nssiAllocateStatus", jobStatusResponse) + if (StringUtils.isBlank(nssiId)) { + nssiAllocateResult.setNssiId(jobStatusResponse.getResponseDescriptor().getNssiId()) + execution.setVariable("nssiAllocateResult", nssiAllocateResult) + } + execution.setVariable("nssiAllocateStatus", jobStatusResponse) if (jobStatusResponse.getResponseDescriptor().getProgress() == 100) { execution.setVariable("jobFinished", true) } @@ -119,8 +123,9 @@ class DoAllocateNSSI extends AbstractServiceTaskProcessor { SliceTaskInfo sliceTaskInfo = execution.getVariable("sliceTaskInfo") as SliceTaskInfo sliceTaskInfo.progress = response.getProgress() - sliceTaskInfo.status = response.getStatus() + sliceTaskInfo.status = response.getStatus().toLowerCase() sliceTaskInfo.statusDescription = response.getStatusDescription() + sliceTaskInfo.endPointId = response.getEndPointId() updateNssiResult(sliceParams, subnetType, sliceTaskInfo) String paramJson = sliceParams.convertToJson() 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 8a276ed330..88db2161f7 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 @@ -321,17 +321,17 @@ class TnAllocateNssi extends AbstractServiceTaskProcessor { String status, String progress, String statusDescription) { - String serviceId = execution.getVariable("dummyServiceId") + String modelUuid = execution.getVariable("modelUuid") String ssInstanceId = execution.getVariable("sliceServiceInstanceId") String jobId = execution.getVariable("jobId") String nsiId = execution.getVariable("nsiId") ResourceOperationStatus roStatus = new ResourceOperationStatus() - roStatus.setServiceId(serviceId) + roStatus.setServiceId(nsiId) roStatus.setOperationId(jobId) - roStatus.setResourceTemplateUUID(nsiId) + roStatus.setResourceTemplateUUID(modelUuid) roStatus.setResourceInstanceID(ssInstanceId) - roStatus.setOperType("Allocate") + roStatus.setOperType("ALLOCATE") roStatus.setProgress(progress) roStatus.setStatus(status) roStatus.setStatusDescription(statusDescription) diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionBBTasks.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionBBTasks.java index 5e281cff87..554385d043 100644 --- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionBBTasks.java +++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionBBTasks.java @@ -450,14 +450,18 @@ public class WorkflowActionBBTasks { if (requestAction.equalsIgnoreCase("replaceInstance") || requestAction.equalsIgnoreCase("replaceInstanceRetainAssignments")) { List<ExecuteBuildingBlock> configBBs = flowsToExecute.stream() - .filter(item -> !item.getBuildingBlock().getBpmnFlowName().matches(CONFIGURATION_PATTERN)) + .filter(item -> item.getBuildingBlock().getBpmnFlowName().matches(CONFIGURATION_PATTERN)) .collect(Collectors.toList()); - for (ExecuteBuildingBlock bb : configBBs) { - bb.getConfigurationResourceKeys().setCvnfcCustomizationUUID(modelCustomizationId); - bb.getConfigurationResourceKeys().setVnfcName(vnfc.getVnfcName()); + if (configBBs != null && configBBs.size() > 0) { + for (ExecuteBuildingBlock bb : configBBs) { + if (bb.getConfigurationResourceKeys() != null) { + bb.getConfigurationResourceKeys().setCvnfcCustomizationUUID(modelCustomizationId); + bb.getConfigurationResourceKeys().setVnfcName(vnfc.getVnfcName()); + } + } + execution.setVariable("flowsToExecute", flowsToExecute); + execution.setVariable(COMPLETED, false); } - execution.setVariable("flowsToExecute", flowsToExecute); - execution.setVariable(COMPLETED, false); } else { CvnfcConfigurationCustomization fabricConfig = catalogDbClient.getCvnfcCustomization( serviceModelUUID, vnfCustomizationUUID, vfModuleCustomizationUUID, modelCustomizationId); diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionBBTasksTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionBBTasksTest.java index 0384a28cdc..b7529bdeb8 100644 --- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionBBTasksTest.java +++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionBBTasksTest.java @@ -613,7 +613,73 @@ public class WorkflowActionBBTasksTest extends BaseTaskTest { } @Test - public void postProcessingExecuteBBActivateVfModuleTest() throws CloneNotSupportedException { + public void postProcessingExecuteBBActivateVfModuleNotReplaceInstanceTest() throws CloneNotSupportedException { + WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds(); + workflowResourceIds.setServiceInstanceId("1"); + workflowResourceIds.setVnfId("1"); + + BuildingBlock bbActivateVfModule = new BuildingBlock().setBpmnFlowName("ActivateVfModuleBB"); + ExecuteBuildingBlock ebbActivateVfModule = new ExecuteBuildingBlock().setBuildingBlock(bbActivateVfModule); + ebbActivateVfModule.setWorkflowResourceIds(workflowResourceIds); + ebbActivateVfModule.setResourceId("1"); + + ServiceInstance service = new ServiceInstance(); + service.setServiceInstanceName("name"); + service.setModelVersionId("1"); + doReturn(service).when(bbSetupUtils).getAAIServiceInstanceById("1"); + + GenericVnf vnf = new GenericVnf(); + vnf.setVnfName("name"); + vnf.setModelCustomizationId("1"); + doReturn(vnf).when(bbSetupUtils).getAAIGenericVnf("1"); + + VfModule vfModule = new VfModule(); + vfModule.setVfModuleName("name"); + vfModule.setModelCustomizationId("1"); + doReturn(vfModule).when(bbSetupUtils).getAAIVfModule("1", "1"); + + List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>(); + org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc(); + vnfc.setModelInvariantId("1"); + vnfc.setVnfcName("name"); + vnfc.setModelCustomizationId("2"); + vnfcs.add(vnfc); + doReturn(vnfcs).when(workflowAction).getRelatedResourcesInVfModule(any(), any(), any(), any()); + + CvnfcConfigurationCustomization vfModuleCustomization = new CvnfcConfigurationCustomization(); + ConfigurationResource configuration = new ConfigurationResource(); + configuration.setToscaNodeType("FabricConfiguration"); + configuration.setModelUUID("1"); + vfModuleCustomization.setConfigurationResource(configuration); + + doReturn(vfModuleCustomization).when(catalogDbClient).getCvnfcCustomization("1", "1", "1", "2"); + + prepareDelegateExecution(); + List<ExecuteBuildingBlock> flowsToExecute = new ArrayList<>(); + flowsToExecute.add(ebbActivateVfModule); + + execution.setVariable("requestAction", "createInstance"); + execution.setVariable("completed", true); + + ArgumentCaptor<DelegateExecution> executionCaptor = ArgumentCaptor.forClass(DelegateExecution.class); + ArgumentCaptor<ExecuteBuildingBlock> bbCaptor = ArgumentCaptor.forClass(ExecuteBuildingBlock.class); + ArgumentCaptor<List> listCaptor = ArgumentCaptor.forClass(List.class); + workflowActionBBTasks.postProcessingExecuteBBActivateVfModule(execution, ebbActivateVfModule, flowsToExecute); + verify(workflowActionBBTasks, times(1)).postProcessingExecuteBBActivateVfModule(executionCaptor.capture(), + bbCaptor.capture(), listCaptor.capture()); + assertEquals(false, executionCaptor.getAllValues().get(0).getVariable("completed")); + assertEquals(2, ((ArrayList) executionCaptor.getAllValues().get(0).getVariable("flowsToExecute")).size()); + assertEquals("2", + ((ExecuteBuildingBlock) ((ArrayList) executionCaptor.getAllValues().get(0) + .getVariable("flowsToExecute")).get(1)).getConfigurationResourceKeys() + .getCvnfcCustomizationUUID()); + assertEquals("AddFabricConfigurationBB", ((ExecuteBuildingBlock) ((ArrayList) executionCaptor.getAllValues() + .get(0).getVariable("flowsToExecute")).get(1)).getBuildingBlock().getBpmnFlowName()); + } + + @Test + public void postProcessingExecuteBBActivateVfModuleReplaceInstanceHasConfigurationTest() + throws CloneNotSupportedException { BuildingBlock bbAddFabric = new BuildingBlock().setBpmnFlowName("AddFabricConfigurationBB"); ExecuteBuildingBlock ebbAddFabric = new ExecuteBuildingBlock().setBuildingBlock(bbAddFabric); @@ -628,7 +694,7 @@ public class WorkflowActionBBTasksTest extends BaseTaskTest { ebbActivateVfModule.setWorkflowResourceIds(workflowResourceIds); ebbActivateVfModule.setResourceId("1"); ConfigurationResourceKeys configurationResourceKeys = new ConfigurationResourceKeys(); - ebbActivateVfModule.setConfigurationResourceKeys(configurationResourceKeys); + ebbAddFabric.setConfigurationResourceKeys(configurationResourceKeys); ServiceInstance service = new ServiceInstance(); service.setServiceInstanceName("name"); @@ -664,35 +730,88 @@ public class WorkflowActionBBTasksTest extends BaseTaskTest { prepareDelegateExecution(); List<ExecuteBuildingBlock> flowsToExecute = new ArrayList<>(); flowsToExecute.add(ebbActivateVfModule); + flowsToExecute.add(ebbAddFabric); ArgumentCaptor<DelegateExecution> executionCaptor = ArgumentCaptor.forClass(DelegateExecution.class); ArgumentCaptor<ExecuteBuildingBlock> bbCaptor = ArgumentCaptor.forClass(ExecuteBuildingBlock.class); ArgumentCaptor<List> listCaptor = ArgumentCaptor.forClass(List.class); - workflowActionBBTasks.postProcessingExecuteBBActivateVfModule(execution, ebbAddFabric, flowsToExecute); + + execution.setVariable("requestAction", "replaceInstance"); + execution.setVariable("completed", true); + workflowActionBBTasks.postProcessingExecuteBBActivateVfModule(execution, ebbActivateVfModule, flowsToExecute); verify(workflowActionBBTasks, times(1)).postProcessingExecuteBBActivateVfModule(executionCaptor.capture(), bbCaptor.capture(), listCaptor.capture()); assertEquals(false, executionCaptor.getAllValues().get(0).getVariable("completed")); assertEquals(2, ((ArrayList) executionCaptor.getAllValues().get(0).getVariable("flowsToExecute")).size()); - assertEquals(null, + assertEquals("2", ((ExecuteBuildingBlock) ((ArrayList) executionCaptor.getAllValues().get(0) - .getVariable("flowsToExecute")).get(0)).getConfigurationResourceKeys() + .getVariable("flowsToExecute")).get(1)).getConfigurationResourceKeys() .getCvnfcCustomizationUUID()); + } + @Test + public void postProcessingExecuteBBActivateVfModuleReplaceInstanceHasNoConfigurationTest() + throws CloneNotSupportedException { - execution.setVariable("requestAction", "replaceInstance"); - flowsToExecute = new ArrayList<>(); + WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds(); + workflowResourceIds.setServiceInstanceId("1"); + workflowResourceIds.setVnfId("1"); + + BuildingBlock bbActivateVfModule = new BuildingBlock().setBpmnFlowName("ActivateVfModuleBB"); + ExecuteBuildingBlock ebbActivateVfModule = new ExecuteBuildingBlock().setBuildingBlock(bbActivateVfModule); + ebbActivateVfModule.setWorkflowResourceIds(workflowResourceIds); + ebbActivateVfModule.setResourceId("1"); + + ServiceInstance service = new ServiceInstance(); + service.setServiceInstanceName("name"); + service.setModelVersionId("1"); + doReturn(service).when(bbSetupUtils).getAAIServiceInstanceById("1"); + + GenericVnf vnf = new GenericVnf(); + vnf.setVnfName("name"); + vnf.setModelCustomizationId("1"); + doReturn(vnf).when(bbSetupUtils).getAAIGenericVnf("1"); + + VfModule vfModule = new VfModule(); + vfModule.setVfModuleName("name"); + vfModule.setModelCustomizationId("1"); + doReturn(vfModule).when(bbSetupUtils).getAAIVfModule("1", "1"); + + List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>(); + org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc(); + vnfc.setModelInvariantId("1"); + vnfc.setVnfcName("name"); + vnfc.setModelCustomizationId("2"); + vnfcs.add(vnfc); + doReturn(vnfcs).when(workflowAction).getRelatedResourcesInVfModule(any(), any(), any(), any()); + + CvnfcConfigurationCustomization vfModuleCustomization = new CvnfcConfigurationCustomization(); + ConfigurationResource configuration = new ConfigurationResource(); + configuration.setToscaNodeType("FabricConfiguration"); + configuration.setModelUUID("1"); + vfModuleCustomization.setConfigurationResource(configuration); + + doReturn(vfModuleCustomization).when(catalogDbClient).getCvnfcCustomization("1", "1", "1", "2"); + + prepareDelegateExecution(); + List<ExecuteBuildingBlock> flowsToExecute = new ArrayList<>(); flowsToExecute.add(ebbActivateVfModule); + + ArgumentCaptor<DelegateExecution> executionCaptor = ArgumentCaptor.forClass(DelegateExecution.class); + ArgumentCaptor<ExecuteBuildingBlock> bbCaptor = ArgumentCaptor.forClass(ExecuteBuildingBlock.class); + ArgumentCaptor<List> listCaptor = ArgumentCaptor.forClass(List.class); + + execution.setVariable("requestAction", "replaceInstance"); + execution.setVariable("completed", true); + workflowActionBBTasks.postProcessingExecuteBBActivateVfModule(execution, ebbActivateVfModule, flowsToExecute); - verify(workflowActionBBTasks, times(2)).postProcessingExecuteBBActivateVfModule(executionCaptor.capture(), + verify(workflowActionBBTasks, times(1)).postProcessingExecuteBBActivateVfModule(executionCaptor.capture(), bbCaptor.capture(), listCaptor.capture()); - assertEquals(false, executionCaptor.getAllValues().get(0).getVariable("completed")); - assertEquals(1, ((ArrayList) executionCaptor.getAllValues().get(0).getVariable("flowsToExecute")).size()); - assertEquals("2", - ((ExecuteBuildingBlock) ((ArrayList) executionCaptor.getAllValues().get(0) - .getVariable("flowsToExecute")).get(0)).getConfigurationResourceKeys() - .getCvnfcCustomizationUUID()); + assertEquals(true, executionCaptor.getAllValues().get(0).getVariable("completed")); } + + @Test public void getExecuteBBForConfigTest() throws CloneNotSupportedException { BuildingBlock bbActivateVfModule = new BuildingBlock().setBpmnFlowName("ActivateVfModuleBB"); |