diff options
author | Boslet, Cory <cory.boslet@att.com> | 2020-07-24 14:10:11 -0400 |
---|---|---|
committer | Benjamin, Max (mb388a) <mb388a@att.com> | 2020-07-24 14:10:12 -0400 |
commit | f91d16b1e729c139f281919015e6566705582bc4 (patch) | |
tree | 14242f7768553f17351a479cd2d1a7adc3f78030 /bpmn/so-bpmn-tasks/src/main/java/org/onap | |
parent | 711d7b7f30d76a0f18f2e9d2762df2de5171180a (diff) |
Execute building block uses wrong config id
Fixed issue where execute building block has the wrong config id
Add and updated unit test and made improvements to WorkflowAction
Removed method that is no longer used by wfa
Fixed compilatoon error for build failure, exception being thrown
Need to check if list is empty and return null if it is
Issue-ID: SO-3098
Signed-off-by: Benjamin, Max (mb388a) <mb388a@att.com>
Change-Id: I0cf811a1070237bcb463f2f3949f56eebbe41b6b
Diffstat (limited to 'bpmn/so-bpmn-tasks/src/main/java/org/onap')
2 files changed, 35 insertions, 53 deletions
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowAction.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowAction.java index 1a49e3af7f..6f11882281 100644 --- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowAction.java +++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowAction.java @@ -37,6 +37,7 @@ import java.util.UUID; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.stream.Collectors; +import org.apache.commons.lang3.SerializationUtils; import org.camunda.bpm.engine.delegate.DelegateExecution; import org.javatuples.Pair; import org.onap.aai.domain.yang.GenericVnf; @@ -460,9 +461,8 @@ public class WorkflowAction { return vnfcs; } - protected <T> List<T> getRelatedResourcesInVnfc(Vnfc vnfc, Class<T> resultClass, AAIObjectType type) { - - List<T> configurations = new ArrayList<>(); + protected <T> T getRelatedResourcesInVnfc(Vnfc vnfc, Class<T> resultClass, AAIObjectType type) throws Exception { + T configuration = null; AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.VNFC, vnfc.getVnfcName()); AAIResultWrapper vnfcResultsWrapper = bbInputSetupUtils.getAAIResourceDepthOne(uri); Optional<Relationships> relationshipsOp = vnfcResultsWrapper.getRelationships(); @@ -472,12 +472,19 @@ public class WorkflowAction { Relationships relationships = relationshipsOp.get(); List<AAIResultWrapper> configurationResultWrappers = this.getResultWrappersFromRelationships(relationships, type); - for (AAIResultWrapper configurationResultWrapper : configurationResultWrappers) { - Optional<T> configurationOp = configurationResultWrapper.asBean(resultClass); - configurationOp.ifPresent(configurations::add); + if (configurationResultWrappers.size() > 1) { + String multipleRelationshipsError = + "Multiple relationships exist from VNFC " + vnfc.getVnfcName() + " to Configurations"; + throw new Exception(multipleRelationshipsError); + } + if (!configurationResultWrappers.isEmpty()) { + Optional<T> configurationOp = configurationResultWrappers.get(0).asBean(resultClass); + if (configurationOp.isPresent()) { + configuration = configurationOp.get(); + } } } - return configurations; + return configuration; } protected List<AAIResultWrapper> getResultWrappersFromRelationships(Relationships relationships, @@ -519,33 +526,26 @@ public class WorkflowAction { List<org.onap.aai.domain.yang.Vnfc> vnfcs = getRelatedResourcesInVfModule(vnfId, vfModuleId, org.onap.aai.domain.yang.Vnfc.class, AAIObjectType.VNFC); for (org.onap.aai.domain.yang.Vnfc vnfc : vnfcs) { - List<org.onap.aai.domain.yang.Configuration> configurations = getRelatedResourcesInVnfc(vnfc, + WorkflowResourceIds workflowIdsCopy = SerializationUtils.clone(dataObj.getWorkflowResourceIds()); + org.onap.aai.domain.yang.Configuration configuration = getRelatedResourcesInVnfc(vnfc, org.onap.aai.domain.yang.Configuration.class, AAIObjectType.CONFIGURATION); - if (configurations.size() > 1) { - String multipleRelationshipsError = - "Multiple relationships exist from VNFC " + vnfc.getVnfcName() + " to Configurations"; - buildAndThrowException(dataObj.getExecution(), "Exception in getConfigBuildingBlock: ", - new Exception(multipleRelationshipsError)); - } - for (org.onap.aai.domain.yang.Configuration configuration : configurations) { - dataObj.getWorkflowResourceIds().setConfigurationId(configuration.getConfigurationId()); - for (OrchestrationFlow orchFlow : result) { - dataObj.getResourceKey().setVfModuleCustomizationId(vfModuleCustomizationUUID); - dataObj.getResourceKey().setCvnfModuleCustomizationId(vnfc.getModelCustomizationId()); - dataObj.getResourceKey().setVnfCustomizationId(vnfCustomizationUUID); - String vnfcName = getVnfcNameForConfiguration(configuration); - if (vnfcName == null || vnfcName.isEmpty()) { - buildAndThrowException(dataObj.getExecution(), "Exception in create execution list " - + ": VnfcName does not exist or is null while there is a configuration for the vfModule", - new Exception("Vnfc and Configuration do not match")); - } - ExecuteBuildingBlock ebb = - buildExecuteBuildingBlock(orchFlow, dataObj.getRequestId(), dataObj.getResourceKey(), - dataObj.getApiVersion(), dataObj.getResourceId(), dataObj.getRequestAction(), - dataObj.isaLaCarte(), dataObj.getVnfType(), dataObj.getWorkflowResourceIds(), - dataObj.getRequestDetails(), false, null, vnfcName, true, null); - flowsToExecuteConfigs.add(ebb); + workflowIdsCopy.setConfigurationId(configuration.getConfigurationId()); + for (OrchestrationFlow orchFlow : result) { + dataObj.getResourceKey().setVfModuleCustomizationId(vfModuleCustomizationUUID); + dataObj.getResourceKey().setCvnfModuleCustomizationId(vnfc.getModelCustomizationId()); + dataObj.getResourceKey().setVnfCustomizationId(vnfCustomizationUUID); + String vnfcName = vnfc.getVnfcName(); + if (vnfcName == null || vnfcName.isEmpty()) { + buildAndThrowException(dataObj.getExecution(), "Exception in create execution list " + + ": VnfcName does not exist or is null while there is a configuration for the vfModule", + new Exception("Vnfc and Configuration do not match")); } + ExecuteBuildingBlock ebb = buildExecuteBuildingBlock(orchFlow, dataObj.getRequestId(), + dataObj.getResourceKey(), dataObj.getApiVersion(), dataObj.getResourceId(), + dataObj.getRequestAction(), dataObj.isaLaCarte(), dataObj.getVnfType(), workflowIdsCopy, + dataObj.getRequestDetails(), false, null, vnfcName, true, null); + flowsToExecuteConfigs.add(ebb); + } } return flowsToExecuteConfigs; @@ -613,23 +613,6 @@ public class WorkflowAction { return orchFlows; } - protected String getVnfcNameForConfiguration(org.onap.aai.domain.yang.Configuration configuration) { - AAIResultWrapper wrapper = new AAIResultWrapper(configuration); - Optional<Relationships> relationshipsOp = wrapper.getRelationships(); - if (!relationshipsOp.isPresent()) { - logger.debug("No relationships were found for Configuration in AAI"); - return null; - } - Relationships relationships = relationshipsOp.get(); - List<AAIResultWrapper> vnfcResultWrappers = relationships.getByType(AAIObjectType.VNFC); - if (vnfcResultWrappers.size() != 1) { - logger.debug("Too many vnfcs or no vnfc found that are related to configuration"); - } - Optional<Vnfc> vnfcOp = vnfcResultWrappers.get(0).asBean(Vnfc.class); - return vnfcOp.map(Vnfc::getVnfcName).orElse(null); - - } - protected List<Resource> sortVfModulesByBaseFirst(List<Resource> vfModuleResources) { int count = 0; for (Resource resource : vfModuleResources) { 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 155011ece0..7420df144a 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 @@ -459,11 +459,10 @@ public class WorkflowActionBBTasks { } } - protected String getConfigurationId(Vnfc vnfc) { - List<Configuration> configurations = + protected String getConfigurationId(Vnfc vnfc) throws Exception { + Configuration configuration = workflowAction.getRelatedResourcesInVnfc(vnfc, Configuration.class, AAIObjectType.CONFIGURATION); - if (!configurations.isEmpty()) { - Configuration configuration = configurations.get(0); + if (configuration != null) { return configuration.getConfigurationId(); } else { return UUID.randomUUID().toString(); |