Process workflow artifacts last 06/90406/1
authorElena Kuleshov <evn@att.com>
Mon, 24 Jun 2019 18:05:26 +0000 (14:05 -0400)
committerElena Kuleshov <evn@att.com>
Mon, 24 Jun 2019 18:06:56 +0000 (14:06 -0400)
Workflow artifacts need to be processed last, check for existence of VNF resource

Issue-ID: SO-2045
Signed-off-by: Kuleshov, Elena <evn@att.com>
Change-Id: Ia46a6ecaef905287ce837c04b389ab2a13d3f24e

asdc-controller/src/main/java/org/onap/so/asdc/installer/bpmn/WorkflowResource.java
asdc-controller/src/main/java/org/onap/so/asdc/installer/heat/ToscaResourceInstaller.java

index a769b6a..b3c7776 100644 (file)
@@ -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<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());
+                }
             }
         }
     }
index 6f0d2d7..ca5cdf4 100644 (file)
@@ -442,7 +442,6 @@ public class ToscaResourceInstaller {
                         vfCustomizationCategory);
             }
 
-            workflowResource.processWorkflows(vfResourceStructure);
             processResourceSequence(toscaResourceStruct, service);
             List<NodeTemplate> 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());