summaryrefslogtreecommitdiffstats
path: root/bpmn/so-bpmn-tasks/src
diff options
context:
space:
mode:
authorBoslet, Cory <cory.boslet@att.com>2020-04-02 15:17:22 -0400
committerBenjamin, Max (mb388a) <mb388a@att.com>2020-04-04 14:28:18 -0400
commit3db9a38fdae095122f716189900942e0f2b53f03 (patch)
treef0c383a1390a469781d0fed46a6ceb93c0220398 /bpmn/so-bpmn-tasks/src
parent3534e7089c955406866bd8e796a8f5e40b08100b (diff)
Added logic to update the requests DB when a
Added logic to update the requests DB when a Create or Delete BB is silent success and updated enum Updated regrex and add junit test for orch validator and formatted files Formatted pom files that were not formatted correctly. Removed use of ternary operator if statement and moved enum to static final. Updated equals method to include resource status message for mockito verify Removed resourceStatusMessage from equals and used argument capture instead Issue-ID: SO-2782 Signed-off-by: Benjamin, Max (mb388a) <mb388a@att.com> Change-Id: I3a292f57d2771200ce85a99e845e776e2f3bd600
Diffstat (limited to 'bpmn/so-bpmn-tasks/src')
-rw-r--r--bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/OrchestrationStatusValidator.java52
-rw-r--r--bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/OrchestrationStatusValidatorTest.java138
2 files changed, 188 insertions, 2 deletions
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/OrchestrationStatusValidator.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/OrchestrationStatusValidator.java
index 1cde9fb8f6..e2dd73f9ec 100644
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/OrchestrationStatusValidator.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/OrchestrationStatusValidator.java
@@ -24,6 +24,8 @@
package org.onap.so.bpmn.infrastructure.workflow.tasks;
+import java.util.EnumSet;
+import java.util.Set;
import org.onap.so.bpmn.common.BuildingBlockExecution;
import org.onap.so.bpmn.servicedecomposition.entities.ResourceKey;
import org.onap.so.bpmn.servicedecomposition.tasks.ExtractPojosForBB;
@@ -34,11 +36,15 @@ import org.onap.so.db.catalog.beans.BuildingBlockDetail;
import org.onap.so.db.catalog.beans.OrchestrationStatus;
import org.onap.so.db.catalog.beans.OrchestrationStatusStateTransitionDirective;
import org.onap.so.db.catalog.beans.OrchestrationStatusValidationDirective;
+import org.onap.so.db.catalog.beans.ResourceType;
import org.onap.so.db.catalog.client.CatalogDbClient;
+import org.onap.so.db.request.beans.InfraActiveRequests;
+import org.onap.so.db.request.client.RequestsDbClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
+import org.springframework.web.client.HttpClientErrorException;
@Component
public class OrchestrationStatusValidator {
@@ -52,6 +58,14 @@ public class OrchestrationStatusValidator {
"Orchestration Status Validation failed. ResourceType=(%s), TargetAction=(%s), OrchestrationStatus=(%s)";
private static final String ORCHESTRATION_STATUS_VALIDATION_RESULT = "orchestrationStatusValidationResult";
private static final String ALACARTE = "aLaCarte";
+ private static final String MULTI_STAGE_DESIGN_OFF = "false";
+ private static final String MULTI_STAGE_DESIGN_ON = "true";
+ private static final String RESOURCE_EXIST_STATUS_MESSAGE =
+ "The %s was found to already exist, thus no new %s was created in the cloud via this request";
+ private static final String RESOURCE_NOT_EXIST_STATUS_MESSAGE =
+ "The %s was not found, thus no %s was deleted in the cloud via this request";
+ private static final Set<ResourceType> cloudResources =
+ EnumSet.of(ResourceType.VF_MODULE, ResourceType.VOLUME_GROUP, ResourceType.NETWORK);
@Autowired
private ExtractPojosForBB extractPojosForBB;
@@ -59,6 +73,8 @@ public class OrchestrationStatusValidator {
private ExceptionBuilder exceptionBuilder;
@Autowired
private CatalogDbClient catalogDbClient;
+ @Autowired
+ RequestsDbClient requestDBClient;
/**
@@ -160,6 +176,13 @@ public class OrchestrationStatusValidator {
execution.setVariable(ORCHESTRATION_STATUS_VALIDATION_RESULT,
orchestrationStatusStateTransitionDirective.getFlowDirective());
+
+ if (buildingBlockFlowName.matches("Create(.*)|Delete(.*)") && orchestrationStatusStateTransitionDirective
+ .getFlowDirective() == OrchestrationStatusValidationDirective.SILENT_SUCCESS) {
+
+ updatedResourceStatus(execution, buildingBlockDetail);
+ }
+
} catch (BBObjectNotFoundException ex) {
logger.error(
"Error occurred for bb object notfound in OrchestrationStatusValidator validateOrchestrationStatus ",
@@ -175,4 +198,33 @@ public class OrchestrationStatusValidator {
exceptionBuilder.buildAndThrowWorkflowException(execution, 7000, e);
}
}
+
+ private void updatedResourceStatus(BuildingBlockExecution execution, BuildingBlockDetail buildingBlockDetail) {
+
+ if (cloudResources.contains(buildingBlockDetail.getResourceType())) {
+ String resource = buildingBlockDetail.getResourceType().toString();
+
+ String resourceId = execution.getLookupMap()
+ .get(ResourceKey.valueOf(buildingBlockDetail.getResourceType().getResourceKey()));
+
+ String resourceStatusMessage = RESOURCE_NOT_EXIST_STATUS_MESSAGE;
+ if (execution.getFlowToBeCalled().matches("Create(.*)")) {
+ resourceStatusMessage = RESOURCE_EXIST_STATUS_MESSAGE;
+ }
+
+ updateRequestsDb(resourceId, String.format(resourceStatusMessage, resource, resource));
+ }
+
+ }
+
+ private void updateRequestsDb(String requestId, String resourceStatusMessage) {
+ InfraActiveRequests request = new InfraActiveRequests();
+ request.setRequestId(requestId);
+ request.setResourceStatusMessage(resourceStatusMessage);
+ try {
+ requestDBClient.patchInfraActiveRequests(request);
+ } catch (HttpClientErrorException e) {
+ logger.warn("Unable to update active request resource status");
+ }
+ }
}
diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/OrchestrationStatusValidatorTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/OrchestrationStatusValidatorTest.java
index ffe48876c4..b9feeedc14 100644
--- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/OrchestrationStatusValidatorTest.java
+++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/OrchestrationStatusValidatorTest.java
@@ -34,8 +34,10 @@ import org.camunda.bpm.engine.delegate.BpmnError;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
+import org.mockito.ArgumentCaptor;
import org.mockito.ArgumentMatchers;
import org.mockito.InjectMocks;
+import org.mockito.Mockito;
import org.onap.so.bpmn.BaseTaskTest;
import org.onap.so.bpmn.common.BuildingBlockExecution;
import org.onap.so.bpmn.servicedecomposition.bbobjects.Configuration;
@@ -49,13 +51,19 @@ import org.onap.so.db.catalog.beans.OrchestrationStatus;
import org.onap.so.db.catalog.beans.OrchestrationStatusStateTransitionDirective;
import org.onap.so.db.catalog.beans.OrchestrationStatusValidationDirective;
import org.onap.so.db.catalog.beans.ResourceType;
+import org.onap.so.db.request.beans.InfraActiveRequests;
import org.springframework.beans.factory.annotation.Autowired;
public class OrchestrationStatusValidatorTest extends BaseTaskTest {
- @InjectMocks
- protected OrchestrationStatusValidator orchestrationStatusValidator = new OrchestrationStatusValidator();
+ private static final String vfModuleExistExpectedMessage =
+ "The VfModule was found to already exist, thus no new VfModule was created in the cloud via this request";
+
+ private static final String vfModuleNotExistExpectedMessage =
+ "The VfModule was not found, thus no VfModule was deleted in the cloud via this request";
+ @InjectMocks
+ protected OrchestrationStatusValidator orchestrationStatusValidator = new OrchestrationStatusValidator();
@Test
public void test_validateOrchestrationStatus() throws Exception {
@@ -95,6 +103,8 @@ public class OrchestrationStatusValidatorTest extends BaseTaskTest {
assertEquals(OrchestrationStatusValidationDirective.CONTINUE,
execution.getVariable("orchestrationStatusValidationResult"));
+
+ Mockito.verifyZeroInteractions(requestsDbClient);
}
@Test
@@ -146,6 +156,8 @@ public class OrchestrationStatusValidatorTest extends BaseTaskTest {
assertEquals(OrchestrationStatusValidationDirective.SILENT_SUCCESS,
execution.getVariable("orchestrationStatusValidationResult"));
+
+ Mockito.verifyZeroInteractions(requestsDbClient);
}
@Ignore
@@ -192,6 +204,8 @@ public class OrchestrationStatusValidatorTest extends BaseTaskTest {
OrchestrationAction.ASSIGN);
orchestrationStatusValidator.validateOrchestrationStatus(execution);
+
+ Mockito.verifyZeroInteractions(requestsDbClient);
}
@Ignore
@@ -224,6 +238,8 @@ public class OrchestrationStatusValidatorTest extends BaseTaskTest {
OrchestrationAction.ASSIGN);
orchestrationStatusValidator.validateOrchestrationStatus(execution);
+
+ Mockito.verifyZeroInteractions(requestsDbClient);
}
@Test
@@ -293,6 +309,8 @@ public class OrchestrationStatusValidatorTest extends BaseTaskTest {
assertEquals(OrchestrationStatusValidationDirective.CONTINUE,
execution.getVariable("orchestrationStatusValidationResult"));
+
+ Mockito.verifyZeroInteractions(requestsDbClient);
}
@@ -337,10 +355,21 @@ public class OrchestrationStatusValidatorTest extends BaseTaskTest {
.getOrchestrationStatusStateTransitionDirective(ResourceType.VF_MODULE,
OrchestrationStatus.PENDING_ACTIVATION, OrchestrationAction.CREATE);
+ InfraActiveRequests request = new InfraActiveRequests();
+ request.setRequestId("testVfModuleId1");
+ request.setResourceStatusMessage(vfModuleExistExpectedMessage);
+
+ Mockito.doNothing().when(requestsDbClient).patchInfraActiveRequests(request);
+
orchestrationStatusValidator.validateOrchestrationStatus(execution);
assertEquals(OrchestrationStatusValidationDirective.SILENT_SUCCESS,
execution.getVariable("orchestrationStatusValidationResult"));
+
+ ArgumentCaptor<InfraActiveRequests> argument = ArgumentCaptor.forClass(InfraActiveRequests.class);
+ Mockito.verify(requestsDbClient).patchInfraActiveRequests(argument.capture());
+
+ assertEquals(vfModuleExistExpectedMessage, argument.getValue().getResourceStatusMessage());
}
@Test
@@ -385,10 +414,21 @@ public class OrchestrationStatusValidatorTest extends BaseTaskTest {
.getOrchestrationStatusStateTransitionDirective(ResourceType.VF_MODULE,
OrchestrationStatus.PENDING_ACTIVATION, OrchestrationAction.CREATE);
+ InfraActiveRequests request = new InfraActiveRequests();
+ request.setRequestId("testVfModuleId1");
+ request.setResourceStatusMessage(vfModuleExistExpectedMessage);
+
+ Mockito.doNothing().when(requestsDbClient).patchInfraActiveRequests(request);
+
orchestrationStatusValidator.validateOrchestrationStatus(execution);
assertEquals(OrchestrationStatusValidationDirective.SILENT_SUCCESS,
execution.getVariable("orchestrationStatusValidationResult"));
+
+ ArgumentCaptor<InfraActiveRequests> argument = ArgumentCaptor.forClass(InfraActiveRequests.class);
+ Mockito.verify(requestsDbClient).patchInfraActiveRequests(argument.capture());
+
+ assertEquals(vfModuleExistExpectedMessage, argument.getValue().getResourceStatusMessage());
}
@Test
@@ -433,10 +473,21 @@ public class OrchestrationStatusValidatorTest extends BaseTaskTest {
.getOrchestrationStatusStateTransitionDirective(ResourceType.VF_MODULE, OrchestrationStatus.ASSIGNED,
OrchestrationAction.CREATE);
+ InfraActiveRequests request = new InfraActiveRequests();
+ request.setRequestId("testVfModuleId1");
+ request.setResourceStatusMessage(vfModuleExistExpectedMessage);
+
+ Mockito.doNothing().when(requestsDbClient).patchInfraActiveRequests(request);
+
orchestrationStatusValidator.validateOrchestrationStatus(execution);
assertEquals(OrchestrationStatusValidationDirective.SILENT_SUCCESS,
execution.getVariable("orchestrationStatusValidationResult"));
+
+ ArgumentCaptor<InfraActiveRequests> argument = ArgumentCaptor.forClass(InfraActiveRequests.class);
+ Mockito.verify(requestsDbClient).patchInfraActiveRequests(argument.capture());
+
+ assertEquals(vfModuleExistExpectedMessage, argument.getValue().getResourceStatusMessage());
}
@Test
@@ -481,10 +532,21 @@ public class OrchestrationStatusValidatorTest extends BaseTaskTest {
.getOrchestrationStatusStateTransitionDirective(ResourceType.VF_MODULE,
OrchestrationStatus.PENDING_ACTIVATION, OrchestrationAction.ACTIVATE);
+ InfraActiveRequests request = new InfraActiveRequests();
+ request.setRequestId("testVfModuleId1");
+ request.setResourceStatusMessage(vfModuleExistExpectedMessage);
+
+ Mockito.doNothing().when(requestsDbClient).patchInfraActiveRequests(request);
+
orchestrationStatusValidator.validateOrchestrationStatus(execution);
assertEquals(OrchestrationStatusValidationDirective.SILENT_SUCCESS,
execution.getVariable("orchestrationStatusValidationResult"));
+
+ ArgumentCaptor<InfraActiveRequests> argument = ArgumentCaptor.forClass(InfraActiveRequests.class);
+ Mockito.verify(requestsDbClient).patchInfraActiveRequests(argument.capture());
+
+ assertEquals(vfModuleExistExpectedMessage, argument.getValue().getResourceStatusMessage());
}
@Test
@@ -529,10 +591,21 @@ public class OrchestrationStatusValidatorTest extends BaseTaskTest {
.getOrchestrationStatusStateTransitionDirective(ResourceType.VF_MODULE,
OrchestrationStatus.PENDING_ACTIVATION, OrchestrationAction.CREATE);
+ InfraActiveRequests request = new InfraActiveRequests();
+ request.setRequestId("testVfModuleId1");
+ request.setResourceStatusMessage(vfModuleExistExpectedMessage);
+
+ Mockito.doNothing().when(requestsDbClient).patchInfraActiveRequests(request);
+
orchestrationStatusValidator.validateOrchestrationStatus(execution);
assertEquals(OrchestrationStatusValidationDirective.SILENT_SUCCESS,
execution.getVariable("orchestrationStatusValidationResult"));
+
+ ArgumentCaptor<InfraActiveRequests> argument = ArgumentCaptor.forClass(InfraActiveRequests.class);
+ Mockito.verify(requestsDbClient).patchInfraActiveRequests(argument.capture());
+
+ assertEquals(vfModuleExistExpectedMessage, argument.getValue().getResourceStatusMessage());
}
@Test
@@ -568,5 +641,66 @@ public class OrchestrationStatusValidatorTest extends BaseTaskTest {
assertEquals(OrchestrationStatusValidationDirective.CONTINUE,
execution.getVariable("orchestrationStatusValidationResult"));
+
+ Mockito.verifyZeroInteractions(requestsDbClient);
+ }
+
+ @Test
+ public void test_validateOrchestrationStatusDeleteVfModuleSilentSuccess() throws Exception {
+ String flowToBeCalled = "DeleteVfModuleBB";
+
+ execution.setVariable("orchestrationStatusValidationResult",
+ OrchestrationStatusValidationDirective.SILENT_SUCCESS);
+ execution.setVariable("aLaCarte", true);
+ execution.setVariable("flowToBeCalled", flowToBeCalled);
+
+ GenericVnf genericVnf = buildGenericVnf();
+ ModelInfoGenericVnf modelInfoGenericVnf = genericVnf.getModelInfoGenericVnf();
+ modelInfoGenericVnf.setMultiStageDesign("true");
+ setGenericVnf().setModelInfoGenericVnf(modelInfoGenericVnf);
+ setVfModule().setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
+
+ org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
+ new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
+ vfModule.setVfModuleId("vfModuleId");
+ vfModule.setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
+ when(extractPojosForBB.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID))).thenReturn(vfModule);
+
+ BuildingBlockDetail buildingBlockDetail = new BuildingBlockDetail();
+ buildingBlockDetail.setBuildingBlockName("DeleteVfModuleBB");
+ buildingBlockDetail.setId(1);
+ buildingBlockDetail.setResourceType(ResourceType.VF_MODULE);
+ buildingBlockDetail.setTargetAction(OrchestrationAction.CREATE);
+
+ doReturn(buildingBlockDetail).when(catalogDbClient).getBuildingBlockDetail(flowToBeCalled);
+
+ OrchestrationStatusStateTransitionDirective orchestrationStatusStateTransitionDirective =
+ new OrchestrationStatusStateTransitionDirective();
+ orchestrationStatusStateTransitionDirective
+ .setFlowDirective(OrchestrationStatusValidationDirective.SILENT_SUCCESS);
+ orchestrationStatusStateTransitionDirective.setId(1);
+ orchestrationStatusStateTransitionDirective.setOrchestrationStatus(OrchestrationStatus.PENDING_ACTIVATION);
+ orchestrationStatusStateTransitionDirective.setResourceType(ResourceType.VF_MODULE);
+ orchestrationStatusStateTransitionDirective.setTargetAction(OrchestrationAction.CREATE);
+
+ doReturn(orchestrationStatusStateTransitionDirective).when(catalogDbClient)
+ .getOrchestrationStatusStateTransitionDirective(ResourceType.VF_MODULE,
+ OrchestrationStatus.PENDING_ACTIVATION, OrchestrationAction.CREATE);
+
+ InfraActiveRequests request = new InfraActiveRequests();
+ request.setRequestId("testVfModuleId1");
+ request.setResourceStatusMessage(vfModuleNotExistExpectedMessage);
+
+ Mockito.doNothing().when(requestsDbClient).patchInfraActiveRequests(request);
+
+ orchestrationStatusValidator.validateOrchestrationStatus(execution);
+
+ assertEquals(OrchestrationStatusValidationDirective.SILENT_SUCCESS,
+ execution.getVariable("orchestrationStatusValidationResult"));
+
+ ArgumentCaptor<InfraActiveRequests> argument = ArgumentCaptor.forClass(InfraActiveRequests.class);
+ Mockito.verify(requestsDbClient).patchInfraActiveRequests(argument.capture());
+
+ assertEquals(vfModuleNotExistExpectedMessage, argument.getValue().getResourceStatusMessage());
}
}