From ac2b66be54faa91e6269e2ca4d2b5c08e8273feb Mon Sep 17 00:00:00 2001 From: Elena Kuleshov Date: Mon, 24 Jun 2019 14:05:26 -0400 Subject: [PATCH] Process workflow artifacts last Workflow artifacts need to be processed last, check for existence of VNF resource Issue-ID: SO-2045 Signed-off-by: Kuleshov, Elena Change-Id: Ia46a6ecaef905287ce837c04b389ab2a13d3f24e --- .../so/asdc/installer/bpmn/WorkflowResource.java | 36 ++++++++++++++++------ .../installer/heat/ToscaResourceInstaller.java | 3 +- 2 files changed, 28 insertions(+), 11 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 a769b6a2e4..b3c7776c9a 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 @@ -32,16 +32,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 @@ -59,21 +62,34 @@ public class WorkflowResource { @Autowired protected ActivitySpecRepository activityRepo; + @Autowired + protected VnfResourceRepository vnfResourceRepo; + @Autowired private BpmnInstaller bpmnInstaller; public void processWorkflows(VfResourceStructure vfResourceStructure) throws Exception { Map 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()); + } } } } 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 6f0d2d7180..ca5cdf4fde 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 @@ -442,7 +442,6 @@ public class ToscaResourceInstaller { vfCustomizationCategory); } - workflowResource.processWorkflows(vfResourceStructure); processResourceSequence(toscaResourceStruct, service); List allottedResourceList = toscaResourceStruct.getSdcCsarHelper().getAllottedResources(); processAllottedResources(toscaResourceStruct, service, allottedResourceList); @@ -456,6 +455,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()); -- 2.16.6