diff options
Diffstat (limited to 'asdc-controller')
4 files changed, 88 insertions, 45 deletions
diff --git a/asdc-controller/src/main/java/org/onap/so/asdc/installer/bpmn/WorkflowResource.java b/asdc-controller/src/main/java/org/onap/so/asdc/installer/bpmn/WorkflowResource.java index b634c26cf0..46c440db0d 100644 --- a/asdc-controller/src/main/java/org/onap/so/asdc/installer/bpmn/WorkflowResource.java +++ b/asdc-controller/src/main/java/org/onap/so/asdc/installer/bpmn/WorkflowResource.java @@ -33,16 +33,19 @@ import org.onap.sdc.api.notification.IArtifactInfo; import org.onap.so.asdc.installer.VfResourceStructure; import org.onap.so.asdc.installer.WorkflowArtifact; import org.onap.so.db.catalog.beans.ActivitySpec; +import org.onap.so.db.catalog.beans.VnfResource; import org.onap.so.db.catalog.beans.VnfResourceWorkflow; import org.onap.so.db.catalog.beans.Workflow; import org.onap.so.db.catalog.beans.WorkflowActivitySpecSequence; import org.onap.so.db.catalog.data.repository.ActivitySpecRepository; +import org.onap.so.db.catalog.data.repository.VnfResourceRepository; import org.onap.so.db.catalog.data.repository.WorkflowRepository; import org.onap.so.logger.ErrorCode; import org.onap.so.logger.MessageEnum; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; import org.springframework.stereotype.Component; @Component @@ -61,20 +64,33 @@ public class WorkflowResource { protected ActivitySpecRepository activityRepo; @Autowired + protected VnfResourceRepository vnfResourceRepo; + + @Autowired private BpmnInstaller bpmnInstaller; public void processWorkflows(VfResourceStructure vfResourceStructure) throws Exception { Map<String, WorkflowArtifact> artifactsMapByUUID = vfResourceStructure.getWorkflowArtifactsMapByUUID(); - String vfResourceModelUuid = vfResourceStructure.getResourceInstance().getResourceUUID(); - for (String uuid : artifactsMapByUUID.keySet()) { - WorkflowArtifact artifactToInstall = artifactsMapByUUID.get(uuid); - if (isLatestVersionAvailable(artifactsMapByUUID, artifactToInstall)) { - logger.debug("Installing the BPMN: " + artifactToInstall.getArtifactInfo().getArtifactName()); - deployWorkflowResourceToCamunda(artifactToInstall); - installWorkflowResource(artifactToInstall, vfResourceModelUuid); - } else { - logger.debug("Skipping installing - not the latest version: " - + artifactToInstall.getArtifactInfo().getArtifactName()); + if (artifactsMapByUUID != null && !artifactsMapByUUID.isEmpty()) { + String vfResourceModelUuid = vfResourceStructure.getResourceInstance().getResourceUUID(); + VnfResource vnfResource = vnfResourceRepo.findResourceByModelUUID(vfResourceModelUuid); + if (vnfResource == null) { + logger.debug("Failed deploying BPMN for vfResourceModelUUID {}", vfResourceModelUuid); + logger.error("{} {} {} {} {} {}", MessageEnum.ASDC_ARTIFACT_NOT_DEPLOYED_DETAIL.toString(), + vfResourceModelUuid, vfResourceModelUuid, HttpStatus.NOT_FOUND, ErrorCode.DataError.getValue(), + "ASDC BPMN deploy failed"); + throw (new Exception("VF Resource not present in Catalog DB: " + vfResourceModelUuid)); + } + for (String uuid : artifactsMapByUUID.keySet()) { + WorkflowArtifact artifactToInstall = artifactsMapByUUID.get(uuid); + if (isLatestVersionAvailable(artifactsMapByUUID, artifactToInstall)) { + logger.debug("Installing the BPMN: " + artifactToInstall.getArtifactInfo().getArtifactName()); + deployWorkflowResourceToCamunda(artifactToInstall); + installWorkflowResource(artifactToInstall, vfResourceModelUuid); + } else { + logger.debug("Skipping installing - not the latest version: " + + artifactToInstall.getArtifactInfo().getArtifactName()); + } } } } @@ -123,13 +139,14 @@ public class WorkflowResource { VnfResourceWorkflow vnfResourceWorkflow = new VnfResourceWorkflow(); vnfResourceWorkflow.setVnfResourceModelUUID(vfResourceModelUuid); + vnfResourceWorkflow.setWorkflow(workflow); List<VnfResourceWorkflow> vnfResourceWorkflows = new ArrayList<VnfResourceWorkflow>(); vnfResourceWorkflows.add(vnfResourceWorkflow); workflow.setVnfResourceWorkflow(vnfResourceWorkflows); List<String> activityNames = getActivityNameList(artifact.getResult()); - List<WorkflowActivitySpecSequence> wfss = getWorkflowActivitySpecSequence(activityNames); + List<WorkflowActivitySpecSequence> wfss = getWorkflowActivitySpecSequence(activityNames, workflow); workflow.setWorkflowActivitySpecSequence(wfss); workflowRepo.save(workflow); @@ -167,17 +184,21 @@ public class WorkflowResource { return activityNameList; } - protected List<WorkflowActivitySpecSequence> getWorkflowActivitySpecSequence(List<String> activityNames) - throws Exception { + protected List<WorkflowActivitySpecSequence> getWorkflowActivitySpecSequence(List<String> activityNames, + Workflow workflow) throws Exception { if (activityNames == null || activityNames.size() == 0) { return null; } List<WorkflowActivitySpecSequence> workflowActivitySpecs = new ArrayList<WorkflowActivitySpecSequence>(); + int seqNo = 1; for (String activityName : activityNames) { ActivitySpec activitySpec = activityRepo.findByName(activityName); if (activitySpec != null) { WorkflowActivitySpecSequence workflowActivitySpec = new WorkflowActivitySpecSequence(); workflowActivitySpec.setActivitySpec(activitySpec); + workflowActivitySpec.setWorkflow(workflow); + workflowActivitySpec.setSeqNo(seqNo); + seqNo++; workflowActivitySpecs.add(workflowActivitySpec); } } diff --git a/asdc-controller/src/main/java/org/onap/so/asdc/installer/heat/ToscaResourceInstaller.java b/asdc-controller/src/main/java/org/onap/so/asdc/installer/heat/ToscaResourceInstaller.java index d250021d19..30196379a3 100644 --- a/asdc-controller/src/main/java/org/onap/so/asdc/installer/heat/ToscaResourceInstaller.java +++ b/asdc-controller/src/main/java/org/onap/so/asdc/installer/heat/ToscaResourceInstaller.java @@ -439,7 +439,6 @@ public class ToscaResourceInstaller { vfCustomizationCategory); } - workflowResource.processWorkflows(vfResourceStructure); processResourceSequence(toscaResourceStruct, service); List<NodeTemplate> allottedResourceList = toscaResourceStruct.getSdcCsarHelper().getAllottedResources(); processAllottedResources(toscaResourceStruct, service, allottedResourceList); @@ -453,6 +452,8 @@ public class ToscaResourceInstaller { service = serviceRepo.save(service); correlateConfigCustomResources(service); + workflowResource.processWorkflows(vfResourceStructure); + WatchdogComponentDistributionStatus status = new WatchdogComponentDistributionStatus( vfResourceStruct.getNotification().getDistributionID(), MSO); status.setComponentDistributionStatus(DistributionStatusEnum.COMPONENT_DONE_OK.name()); diff --git a/asdc-controller/src/test/java/org/onap/so/asdc/installer/bpmn/WorkflowResourceTest.java b/asdc-controller/src/test/java/org/onap/so/asdc/installer/bpmn/WorkflowResourceTest.java index e655245c31..5a736217b7 100644 --- a/asdc-controller/src/test/java/org/onap/so/asdc/installer/bpmn/WorkflowResourceTest.java +++ b/asdc-controller/src/test/java/org/onap/so/asdc/installer/bpmn/WorkflowResourceTest.java @@ -22,45 +22,27 @@ package org.onap.so.asdc.installer.bpmn; -import static org.assertj.core.api.Assertions.assertThat; import static org.junit.Assert.*; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.anyString; -import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.spy; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; -import java.io.File; -import java.io.FileInputStream; -import java.io.InputStream; import java.nio.file.Files; -import java.nio.file.Path; import java.nio.file.Paths; +import java.util.ArrayList; import java.util.List; import javax.transaction.Transactional; -import org.apache.commons.io.IOUtils; -import org.apache.http.HttpEntity; -import org.apache.http.HttpResponse; -import org.apache.http.ProtocolVersion; -import org.apache.http.client.HttpClient; -import org.apache.http.client.methods.HttpPost; -import org.apache.http.message.BasicHttpResponse; -import org.apache.http.message.BasicStatusLine; -import org.junit.AfterClass; -import org.junit.Before; -import org.junit.Rule; import org.junit.Test; -import org.junit.rules.TemporaryFolder; -import org.onap.sdc.api.notification.IArtifactInfo; +import org.onap.so.asdc.BaseTest; +import org.onap.so.db.catalog.beans.VnfResourceWorkflow; +import org.onap.so.db.catalog.beans.Workflow; +import org.onap.so.db.catalog.beans.WorkflowActivitySpecSequence; +import org.onap.so.db.catalog.data.repository.WorkflowRepository; +import org.springframework.beans.factory.annotation.Autowired; -@Transactional -public class WorkflowResourceTest { +public class WorkflowResourceTest extends BaseTest { - private WorkflowResource workflowResource = new WorkflowResource(); + @Autowired + private WorkflowResource workflowResource; - private static final String TEST_CSAR = "src/test/resources/resource-examples/WorkflowBpmn/service-CxSvc-csar.csar"; - private Path tempDirectoryPath; + @Autowired + private WorkflowRepository workflowRepo; @Test public void getActivityNameList_Test() throws Exception { @@ -106,4 +88,43 @@ public class WorkflowResourceTest { assertTrue(workflowVersion == 1.0); } + @Transactional + @Test + public void installWorkflowResource_Test() throws Exception { + Workflow workflow = new Workflow(); + + workflow.setArtifactChecksum("12345"); + workflow.setArtifactName("myTestWorkflow1"); + workflow.setArtifactUUID("a5c59864-8407-4175-8060-de8ff95eab41"); + workflow.setBody("my body"); + workflow.setDescription("testing workflow"); + workflow.setName("myTestWorkflow1"); + workflow.setResourceTarget("vnf"); + workflow.setSource("sdc"); + workflow.setTimeoutMinutes(5000); + workflow.setOperationName("myTestWorkflow"); + workflow.setVersion(1.0); + + VnfResourceWorkflow vnfResourceWorkflow = new VnfResourceWorkflow(); + vnfResourceWorkflow.setVnfResourceModelUUID("ff2ae348-214a-11e7-93ae-92361f002671"); + + vnfResourceWorkflow.setWorkflow(workflow); + List<VnfResourceWorkflow> vnfResourceWorkflows = new ArrayList<VnfResourceWorkflow>(); + vnfResourceWorkflows.add(vnfResourceWorkflow); + + workflow.setVnfResourceWorkflow(vnfResourceWorkflows); + + WorkflowActivitySpecSequence wfss1 = new WorkflowActivitySpecSequence(); + wfss1.setActivitySpecId(1); + wfss1.setWorkflow(workflow); + wfss1.setSeqNo(1); + + List<WorkflowActivitySpecSequence> wfss = new ArrayList<WorkflowActivitySpecSequence>(); + wfss.add(wfss1); + workflow.setWorkflowActivitySpecSequence(wfss); + + workflowRepo.save(workflow); + + } + } diff --git a/asdc-controller/src/test/resources/resource-examples/WorkflowBpmn/workflow-distribution.json b/asdc-controller/src/test/resources/resource-examples/WorkflowBpmn/workflow-distribution.json index 9f49be5bbb..85a73aa239 100644 --- a/asdc-controller/src/test/resources/resource-examples/WorkflowBpmn/workflow-distribution.json +++ b/asdc-controller/src/test/resources/resource-examples/WorkflowBpmn/workflow-distribution.json @@ -11,7 +11,7 @@ "resourceName": "TestVF", "resourceVersion": "1.0", "resoucreType": "VF", - "resourceUUID": "5185253e-4bef-4eb4-bbf9-8c328c787ebd", + "resourceUUID": "ff2ae348-214a-11e7-93ae-92361f002671", "resourceInvariantUUID": "ea8264db-3e24-4324-87cc-12c6903ed43d", "resourceCustomizationUUID": "a959a3cb-4988-435c-9cb7-5a40ef2ef2ac", "category": "Allotted Resource", |