aboutsummaryrefslogtreecommitdiffstats
path: root/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowAction.java
diff options
context:
space:
mode:
Diffstat (limited to 'bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowAction.java')
-rw-r--r--bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowAction.java431
1 files changed, 8 insertions, 423 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 bc8f8cc822..29206a6aa9 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
@@ -30,11 +30,9 @@ import static org.onap.so.bpmn.infrastructure.workflow.tasks.WorkflowActionConst
import static org.onap.so.bpmn.infrastructure.workflow.tasks.WorkflowActionConstants.CONTROLLER;
import static org.onap.so.bpmn.infrastructure.workflow.tasks.WorkflowActionConstants.CREATE_INSTANCE;
import static org.onap.so.bpmn.infrastructure.workflow.tasks.WorkflowActionConstants.FABRIC_CONFIGURATION;
-import static org.onap.so.bpmn.infrastructure.workflow.tasks.WorkflowActionConstants.NETWORKCOLLECTION;
import static org.onap.so.bpmn.infrastructure.workflow.tasks.WorkflowActionConstants.REPLACEINSTANCE;
import static org.onap.so.bpmn.infrastructure.workflow.tasks.WorkflowActionConstants.REPLACEINSTANCERETAINASSIGNMENTS;
import static org.onap.so.bpmn.infrastructure.workflow.tasks.WorkflowActionConstants.SERVICE;
-import static org.onap.so.bpmn.infrastructure.workflow.tasks.WorkflowActionConstants.USER_PARAM_SERVICE;
import static org.onap.so.bpmn.infrastructure.workflow.tasks.WorkflowActionConstants.WORKFLOW_ACTION_ERROR_MESSAGE;
import java.io.IOException;
import java.util.ArrayList;
@@ -50,12 +48,8 @@ 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.Relationship;
-import org.onap.aai.domain.yang.ServiceInstance;
import org.onap.aai.domain.yang.Vnfc;
import org.onap.aai.domain.yang.VolumeGroup;
-import org.onap.aai.domain.yang.VpnBinding;
-import org.onap.aaiclient.client.aai.AAICommonObjectMapperProvider;
import org.onap.aaiclient.client.aai.AAIObjectName;
import org.onap.aaiclient.client.aai.entities.AAIResultWrapper;
import org.onap.aaiclient.client.aai.entities.Relationships;
@@ -64,22 +58,16 @@ import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory;
import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder;
import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder.Types;
import org.onap.so.bpmn.common.BBConstants;
+import org.onap.so.bpmn.infrastructure.workflow.tasks.ebb.loader.ServiceEBBLoader;
import org.onap.so.bpmn.infrastructure.workflow.tasks.ebb.loader.VnfEBBLoader;
import org.onap.so.bpmn.infrastructure.workflow.tasks.excpetion.VnfcMultipleRelationshipException;
import org.onap.so.bpmn.infrastructure.workflow.tasks.utils.WorkflowResourceIdsUtils;
-import org.onap.so.bpmn.servicedecomposition.bbobjects.Configuration;
-import org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule;
import org.onap.so.bpmn.servicedecomposition.entities.ExecuteBuildingBlock;
import org.onap.so.bpmn.servicedecomposition.entities.WorkflowResourceIds;
import org.onap.so.bpmn.servicedecomposition.tasks.BBInputSetup;
import org.onap.so.bpmn.servicedecomposition.tasks.BBInputSetupUtils;
import org.onap.so.client.exception.ExceptionBuilder;
-import org.onap.so.client.orchestration.AAIConfigurationResources;
import org.onap.so.client.orchestration.AAIEntityNotFoundException;
-import org.onap.so.db.catalog.beans.CollectionNetworkResourceCustomization;
-import org.onap.so.db.catalog.beans.CollectionResourceCustomization;
-import org.onap.so.db.catalog.beans.CollectionResourceInstanceGroupCustomization;
-import org.onap.so.db.catalog.beans.InstanceGroup;
import org.onap.so.db.catalog.beans.VfModuleCustomization;
import org.onap.so.db.catalog.beans.macro.NorthBoundRequest;
import org.onap.so.db.catalog.beans.macro.OrchestrationFlow;
@@ -97,7 +85,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
-import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
@Component
@@ -131,21 +118,15 @@ public class WorkflowAction {
@Autowired
private CatalogDbClient catalogDbClient;
@Autowired
- private AAIConfigurationResources aaiConfigurationResources;
- @Autowired
- private WorkflowActionExtractResourcesAAI workflowActionUtils;
- @Autowired
- private VrfValidation vrfValidation;
- @Autowired
private Environment environment;
@Autowired
- private UserParamsServiceTraversal userParamsServiceTraversal;
- @Autowired
private AaiResourceIdValidator aaiResourceIdValidator;
@Autowired
private ExecuteBuildingBlockBuilder executeBuildingBlockBuilder;
@Autowired
private VnfEBBLoader vnfEBBLoader;
+ @Autowired
+ private ServiceEBBLoader serviceEBBLoader;
public void setBbInputSetupUtils(BBInputSetupUtils bbInputSetupUtils) {
this.bbInputSetupUtils = bbInputSetupUtils;
@@ -295,52 +276,12 @@ public class WorkflowAction {
String cloudOwner, String serviceType, String requestId, String apiVersion, String vnfType,
RequestDetails requestDetails) throws IOException, VrfBondingServiceException {
List<ExecuteBuildingBlock> flowsToExecute;
- boolean containsService = false;
List<Resource> resourceList = new ArrayList<>();
List<Pair<WorkflowType, String>> aaiResourceIds = new ArrayList<>();
- List<Map<String, Object>> userParams = sIRequest.getRequestDetails().getRequestParameters().getUserParams();
- if (resourceType == WorkflowType.SERVICE && requestAction.equalsIgnoreCase(ASSIGNINSTANCE)) {
- // SERVICE-MACRO-ASSIGN will always get user params with a
- // service.
-
- if (userParams != null) {
- containsService = isContainsService(sIRequest);
- if (containsService) {
- resourceList = userParamsServiceTraversal.getResourceListFromUserParams(execution, userParams,
- serviceInstanceId, requestAction);
- }
- } else {
- buildAndThrowException(execution,
- "Service-Macro-Assign request details must contain user params with a service");
- }
- } else if (resourceType == WorkflowType.SERVICE && requestAction.equalsIgnoreCase(CREATE_INSTANCE)) {
- // SERVICE-MACRO-CREATE will get user params with a service,
- // a service with a network, a service with a
- // network collection, OR an empty service.
- // If user params is just a service or null and macro
- // queries the SI and finds a VNF, macro fails.
-
- if (userParams != null) {
- containsService = isContainsService(sIRequest);
- }
- if (containsService) {
- resourceList = userParamsServiceTraversal.getResourceListFromUserParams(execution, userParams,
- serviceInstanceId, requestAction);
- }
- if (!foundRelated(resourceList)) {
- traverseCatalogDbService(execution, sIRequest, resourceList, aaiResourceIds);
- }
- } else if (resourceType == WorkflowType.SERVICE && ("activateInstance".equalsIgnoreCase(requestAction)
- || "unassignInstance".equalsIgnoreCase(requestAction)
- || "deleteInstance".equalsIgnoreCase(requestAction)
- || requestAction.equalsIgnoreCase("activate" + FABRIC_CONFIGURATION))) {
- // SERVICE-MACRO-ACTIVATE, SERVICE-MACRO-UNASSIGN, and
- // SERVICE-MACRO-DELETE
- // Will never get user params with service, macro will have
- // to query the SI in AAI to find related instances.
- traverseAAIService(execution, resourceList, resourceId, aaiResourceIds);
- } else if (resourceType == WorkflowType.SERVICE && "deactivateInstance".equalsIgnoreCase(requestAction)) {
- resourceList.add(new Resource(WorkflowType.SERVICE, "", false));
+
+ if (resourceType == WorkflowType.SERVICE) {
+ resourceList = serviceEBBLoader.getResourceListForService(sIRequest, requestAction, execution,
+ serviceInstanceId, resourceId, aaiResourceIds);
} else if (resourceType == WorkflowType.VNF && (REPLACEINSTANCE.equalsIgnoreCase(requestAction)
|| ("recreateInstance".equalsIgnoreCase(requestAction)))) {
vnfEBBLoader.traverseAAIVnf(execution, resourceList, workflowResourceIds.getServiceInstanceId(),
@@ -370,7 +311,7 @@ public class WorkflowAction {
}
flowsToExecute = executeBuildingBlockBuilder.buildExecuteBuildingBlockList(orchFlows, resourceList, requestId,
apiVersion, resourceId, requestAction, vnfType, workflowResourceIds, requestDetails, vnfReplace);
- if (isNetworkCollectionInTheResourceList(resourceList)) {
+ if (serviceEBBLoader.isNetworkCollectionInTheResourceList(resourceList)) {
logger.info("Sorting for Vlan Tagging");
flowsToExecute = sortExecutionPathByObjectForVlanTagging(flowsToExecute, requestAction);
}
@@ -400,13 +341,6 @@ public class WorkflowAction {
execution.setVariable("isRollbackComplete", false);
}
- private boolean isContainsService(ServiceInstancesRequest sIRequest) {
- boolean containsService;
- List<Map<String, Object>> userParams = sIRequest.getRequestDetails().getRequestParameters().getUserParams();
- containsService = userParams.stream().anyMatch(param -> param.containsKey(USER_PARAM_SERVICE));
- return containsService;
- }
-
private List<ExecuteBuildingBlock> loadExecuteBuildingBlocks(DelegateExecution execution, String requestId,
String errorMessage) {
List<ExecuteBuildingBlock> flowsToExecute;
@@ -699,8 +633,6 @@ public class WorkflowAction {
return orchFlows;
}
-
-
private void updateResourceIdsFromAAITraversal(List<ExecuteBuildingBlock> flowsToExecute,
List<Resource> resourceList, List<Pair<WorkflowType, String>> aaiResourceIds, String serviceInstanceId) {
for (Pair<WorkflowType, String> pair : aaiResourceIds) {
@@ -759,342 +691,6 @@ public class WorkflowAction {
}
}
- protected CollectionResourceCustomization findCatalogNetworkCollection(DelegateExecution execution,
- org.onap.so.db.catalog.beans.Service service) {
- CollectionResourceCustomization networkCollection = null;
- int count = 0;
- for (CollectionResourceCustomization collectionCust : service.getCollectionResourceCustomizations()) {
- if (catalogDbClient.getNetworkCollectionResourceCustomizationByID(
- collectionCust.getModelCustomizationUUID()) != null) {
- networkCollection = collectionCust;
- count++;
- }
- }
- if (count == 0) {
- return null;
- } else if (count > 1) {
- buildAndThrowException(execution,
- "Found multiple Network Collections in the Service model, only one per Service is supported.");
- }
- return networkCollection;
- }
-
- protected void traverseCatalogDbService(DelegateExecution execution, ServiceInstancesRequest sIRequest,
- List<Resource> resourceList, List<Pair<WorkflowType, String>> aaiResourceIds)
- throws JsonProcessingException, VrfBondingServiceException {
- String modelUUID = sIRequest.getRequestDetails().getModelInfo().getModelVersionId();
- org.onap.so.db.catalog.beans.Service service = catalogDbClient.getServiceByID(modelUUID);
-
- if (service == null) {
- buildAndThrowException(execution, "Could not find the service model in catalog db.");
- } else {
- resourceList.add(new Resource(WorkflowType.SERVICE, service.getModelUUID(), false));
- RelatedInstance relatedVpnBinding =
- bbInputSetupUtils.getRelatedInstanceByType(sIRequest.getRequestDetails(), ModelType.vpnBinding);
- RelatedInstance relatedLocalNetwork =
- bbInputSetupUtils.getRelatedInstanceByType(sIRequest.getRequestDetails(), ModelType.network);
-
- if (relatedVpnBinding != null && relatedLocalNetwork != null) {
- traverseVrfConfiguration(aaiResourceIds, resourceList, service, relatedVpnBinding, relatedLocalNetwork);
- } else {
- traverseNetworkCollection(execution, resourceList, service);
- }
- }
- }
-
- protected void traverseVrfConfiguration(List<Pair<WorkflowType, String>> aaiResourceIds,
- List<Resource> resourceList, org.onap.so.db.catalog.beans.Service service,
- RelatedInstance relatedVpnBinding, RelatedInstance relatedLocalNetwork)
- throws VrfBondingServiceException, JsonProcessingException {
- org.onap.aai.domain.yang.L3Network aaiLocalNetwork =
- bbInputSetupUtils.getAAIL3Network(relatedLocalNetwork.getInstanceId());
- vrfValidation.vrfServiceValidation(service);
- vrfValidation.vrfCatalogDbChecks(service);
- vrfValidation.aaiVpnBindingValidation(relatedVpnBinding.getInstanceId(),
- bbInputSetupUtils.getAAIVpnBinding(relatedVpnBinding.getInstanceId()));
- vrfValidation.aaiNetworkValidation(relatedLocalNetwork.getInstanceId(), aaiLocalNetwork);
- vrfValidation.aaiSubnetValidation(aaiLocalNetwork);
- vrfValidation.aaiAggregateRouteValidation(aaiLocalNetwork);
- vrfValidation.aaiRouteTargetValidation(aaiLocalNetwork);
- String existingAAIVrfConfiguration = getExistingAAIVrfConfiguration(relatedVpnBinding, aaiLocalNetwork);
- if (existingAAIVrfConfiguration != null) {
- aaiResourceIds.add(new Pair<>(WorkflowType.CONFIGURATION, existingAAIVrfConfiguration));
- }
- resourceList.add(new Resource(WorkflowType.CONFIGURATION,
- service.getConfigurationCustomizations().get(0).getModelCustomizationUUID(), false));
-
- }
-
- protected String getExistingAAIVrfConfiguration(RelatedInstance relatedVpnBinding,
- org.onap.aai.domain.yang.L3Network aaiLocalNetwork)
- throws JsonProcessingException, VrfBondingServiceException {
- Optional<Relationships> relationshipsOp = new AAIResultWrapper(
- new AAICommonObjectMapperProvider().getMapper().writeValueAsString(aaiLocalNetwork)).getRelationships();
- if (relationshipsOp.isPresent()) {
- List<AAIResultWrapper> configurationsRelatedToLocalNetwork =
- relationshipsOp.get().getByType(Types.CONFIGURATION);
- if (configurationsRelatedToLocalNetwork.size() > 1) {
- throw new VrfBondingServiceException(
- "Network: " + aaiLocalNetwork.getNetworkId() + " has more than 1 configuration related to it");
- }
- if (configurationsRelatedToLocalNetwork.size() == 1) {
- AAIResultWrapper configWrapper = configurationsRelatedToLocalNetwork.get(0);
- Optional<Configuration> relatedConfiguration = configWrapper.asBean(Configuration.class);
- if (relatedConfiguration.isPresent() && vrfConfigurationAlreadyExists(relatedVpnBinding,
- relatedConfiguration.get(), configWrapper)) {
- return relatedConfiguration.get().getConfigurationId();
- }
- }
- }
- return null;
- }
-
- protected boolean vrfConfigurationAlreadyExists(RelatedInstance relatedVpnBinding, Configuration vrfConfiguration,
- AAIResultWrapper configWrapper) throws VrfBondingServiceException {
- if ("VRF-ENTRY".equalsIgnoreCase(vrfConfiguration.getConfigurationType())) {
- Optional<Relationships> relationshipsConfigOp = configWrapper.getRelationships();
- if (relationshipsConfigOp.isPresent()) {
- Optional<VpnBinding> relatedInfraVpnBindingOp =
- workflowActionUtils.extractRelationshipsVpnBinding(relationshipsConfigOp.get());
- if (relatedInfraVpnBindingOp.isPresent()) {
- VpnBinding relatedInfraVpnBinding = relatedInfraVpnBindingOp.get();
- if (!relatedInfraVpnBinding.getVpnId().equalsIgnoreCase(relatedVpnBinding.getInstanceId())) {
- throw new VrfBondingServiceException("Configuration: " + vrfConfiguration.getConfigurationId()
- + " is not connected to the same vpn binding id provided in request: "
- + relatedVpnBinding.getInstanceId());
- } else {
- return true;
- }
- }
- }
- }
- return false;
- }
-
- protected void traverseNetworkCollection(DelegateExecution execution, List<Resource> resourceList,
- org.onap.so.db.catalog.beans.Service service) {
- if (isVnfCustomizationsInTheService(service)) {
- buildAndThrowException(execution,
- "Cannot orchestrate Service-Macro-Create without user params with a vnf. Please update ASDC model for new macro orchestration support or add service_recipe records to route to old macro flows");
- }
- if (isPnfCustomizationsInTheService(service)) {
- buildAndThrowException(execution,
- "Cannot orchestrate Service-Macro-Create without user params with a pnf. Please update ASDC model for new macro orchestration support or add service_recipe records to route to old macro flows");
- }
- List<CollectionResourceCustomization> customizations = service.getCollectionResourceCustomizations();
- if (customizations.isEmpty()) {
- logger.debug("No Collections found. CollectionResourceCustomization list is empty.");
- } else {
- CollectionResourceCustomization collectionResourceCustomization =
- findCatalogNetworkCollection(execution, service);
- traverseNetworkCollectionResourceCustomization(resourceList, collectionResourceCustomization);
- }
- traverseNetworkCollectionCustomization(resourceList, service);
- }
-
- private void traverseNetworkCollectionResourceCustomization(List<Resource> resourceList,
- CollectionResourceCustomization collectionResourceCustomization) {
- if (collectionResourceCustomizationShouldNotBeProcessed(resourceList, collectionResourceCustomization))
- return;
- int minNetworks = 0;
- org.onap.so.db.catalog.beans.InstanceGroup instanceGroup =
- collectionResourceCustomization.getCollectionResource().getInstanceGroup();
- CollectionResourceInstanceGroupCustomization collectionInstCust = null;
- if (!instanceGroup.getCollectionInstanceGroupCustomizations().isEmpty()) {
- for (CollectionResourceInstanceGroupCustomization collectionInstanceGroupTemp : instanceGroup
- .getCollectionInstanceGroupCustomizations()) {
- if (collectionInstanceGroupTemp.getModelCustomizationUUID()
- .equalsIgnoreCase(collectionResourceCustomization.getModelCustomizationUUID())) {
- collectionInstCust = collectionInstanceGroupTemp;
- break;
- }
- }
- if (interfaceNetworkQuantityIsAvailableInCollection(collectionInstCust)) {
- minNetworks = collectionInstCust.getSubInterfaceNetworkQuantity();
- }
- }
- logger.debug("minNetworks: {}", minNetworks);
- CollectionNetworkResourceCustomization collectionNetworkResourceCust =
- getCollectionNetworkResourceCustomization(collectionResourceCustomization, instanceGroup);
- for (int i = 0; i < minNetworks; i++) {
- if (collectionNetworkResourceCust != null) {
- Resource resource = new Resource(WorkflowType.VIRTUAL_LINK,
- collectionNetworkResourceCust.getModelCustomizationUUID(), false);
- resource.setVirtualLinkKey(Integer.toString(i));
- resourceList.add(resource);
- }
- }
- }
-
- private CollectionNetworkResourceCustomization getCollectionNetworkResourceCustomization(
- CollectionResourceCustomization collectionResourceCustomization, InstanceGroup instanceGroup) {
- CollectionNetworkResourceCustomization collectionNetworkResourceCust = null;
- for (CollectionNetworkResourceCustomization collectionNetworkTemp : instanceGroup
- .getCollectionNetworkResourceCustomizations()) {
- if (collectionNetworkTemp.getNetworkResourceCustomization().getModelCustomizationUUID()
- .equalsIgnoreCase(collectionResourceCustomization.getModelCustomizationUUID())) {
- collectionNetworkResourceCust = collectionNetworkTemp;
- break;
- }
- }
- return collectionNetworkResourceCust;
- }
-
- private boolean collectionResourceCustomizationShouldNotBeProcessed(List<Resource> resourceList,
- CollectionResourceCustomization collectionResourceCustomization) {
- if (collectionResourceCustomization == null) {
- logger.debug("No Network Collection Customization found");
- return true;
- }
- resourceList.add(new Resource(WorkflowType.NETWORKCOLLECTION,
- collectionResourceCustomization.getModelCustomizationUUID(), false));
- logger.debug("Found a network collection");
- if (collectionResourceCustomization.getCollectionResource() == null) {
- logger.debug("No Network Collection found. collectionResource is null");
- return true;
- }
- if (collectionResourceCustomization.getCollectionResource().getInstanceGroup() == null) {
- logger.debug("No Instance Group found for network collection.");
- return true;
- }
- String toscaNodeType =
- collectionResourceCustomization.getCollectionResource().getInstanceGroup().getToscaNodeType();
- if (!toscaNodeTypeHasNetworkCollection(toscaNodeType)) {
- logger.debug("Instance Group tosca node type does not contain NetworkCollection: {}", toscaNodeType);
- return true;
- }
- return false;
- }
-
- private boolean interfaceNetworkQuantityIsAvailableInCollection(
- CollectionResourceInstanceGroupCustomization collectionInstCust) {
- return collectionInstCust != null && collectionInstCust.getSubInterfaceNetworkQuantity() != null;
- }
-
- private boolean toscaNodeTypeHasNetworkCollection(String toscaNodeType) {
- return toscaNodeType != null && toscaNodeType.contains(NETWORKCOLLECTION);
- }
-
- private void traverseNetworkCollectionCustomization(List<Resource> resourceList,
- org.onap.so.db.catalog.beans.Service service) {
- if (isNetworkCollectionInTheResourceList(resourceList)) {
- return;
- }
- if (service.getNetworkCustomizations() == null) {
- logger.debug("No networks were found on this service model");
- return;
- }
- for (int i = 0; i < service.getNetworkCustomizations().size(); i++) {
- resourceList.add(new Resource(WorkflowType.NETWORK,
- service.getNetworkCustomizations().get(i).getModelCustomizationUUID(), false));
- }
- }
-
- private boolean isNetworkCollectionInTheResourceList(List<Resource> resourceList) {
- return resourceList.stream().anyMatch(x -> WorkflowType.NETWORKCOLLECTION == x.getResourceType());
- }
-
- private boolean isVnfCustomizationsInTheService(org.onap.so.db.catalog.beans.Service service) {
- return !(service.getVnfCustomizations() == null || service.getVnfCustomizations().isEmpty());
- }
-
- private boolean isPnfCustomizationsInTheService(org.onap.so.db.catalog.beans.Service service) {
- return !(service.getPnfCustomizations() == null || service.getPnfCustomizations().isEmpty());
- }
-
- protected void traverseAAIService(DelegateExecution execution, List<Resource> resourceList, String resourceId,
- List<Pair<WorkflowType, String>> aaiResourceIds) {
- try {
- ServiceInstance serviceInstanceAAI = bbInputSetupUtils.getAAIServiceInstanceById(resourceId);
- org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
- bbInputSetup.getExistingServiceInstance(serviceInstanceAAI);
- resourceList.add(new Resource(WorkflowType.SERVICE, serviceInstanceMSO.getServiceInstanceId(), false));
- traverseServiceInstanceMSOVnfs(resourceList, aaiResourceIds, serviceInstanceMSO);
- traverseServiceInstanceMSOPnfs(resourceList, aaiResourceIds, serviceInstanceMSO);
- if (serviceInstanceMSO.getNetworks() != null) {
- for (org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network : serviceInstanceMSO
- .getNetworks()) {
- aaiResourceIds.add(new Pair<>(WorkflowType.NETWORK, network.getNetworkId()));
- resourceList.add(new Resource(WorkflowType.NETWORK, network.getNetworkId(), false));
- }
- }
- if (serviceInstanceMSO.getCollection() != null) {
- logger.debug("found networkcollection");
- aaiResourceIds
- .add(new Pair<>(WorkflowType.NETWORKCOLLECTION, serviceInstanceMSO.getCollection().getId()));
- resourceList.add(new Resource(WorkflowType.NETWORKCOLLECTION,
- serviceInstanceMSO.getCollection().getId(), false));
- }
- if (serviceInstanceMSO.getConfigurations() != null) {
- for (Configuration config : serviceInstanceMSO.getConfigurations()) {
- Optional<org.onap.aai.domain.yang.Configuration> aaiConfig =
- aaiConfigurationResources.getConfiguration(config.getConfigurationId());
- if (aaiConfig.isPresent() && aaiConfig.get().getRelationshipList() != null) {
- for (Relationship relationship : aaiConfig.get().getRelationshipList().getRelationship()) {
- if (relationship.getRelatedTo().contains("vnfc")
- || relationship.getRelatedTo().contains("vpn-binding")) {
- aaiResourceIds.add(new Pair<>(WorkflowType.CONFIGURATION, config.getConfigurationId()));
- resourceList.add(
- new Resource(WorkflowType.CONFIGURATION, config.getConfigurationId(), false));
- break;
- }
- }
- }
- }
- }
- } catch (Exception ex) {
- logger.error("Exception in traverseAAIService", ex);
- buildAndThrowException(execution,
- "Could not find existing Service Instance or related Instances to execute the request on.");
- }
- }
-
- private void traverseServiceInstanceMSOVnfs(List<Resource> resourceList,
- List<Pair<WorkflowType, String>> aaiResourceIds,
- org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO) {
- if (serviceInstanceMSO.getVnfs() == null) {
- return;
- }
- for (org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf : serviceInstanceMSO.getVnfs()) {
- aaiResourceIds.add(new Pair<>(WorkflowType.VNF, vnf.getVnfId()));
- resourceList.add(new Resource(WorkflowType.VNF, vnf.getVnfId(), false));
- traverseVnfModules(resourceList, aaiResourceIds, vnf);
- if (vnf.getVolumeGroups() != null) {
- for (org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup : vnf.getVolumeGroups()) {
- aaiResourceIds.add(new Pair<>(WorkflowType.VOLUMEGROUP, volumeGroup.getVolumeGroupId()));
- resourceList.add(new Resource(WorkflowType.VOLUMEGROUP, volumeGroup.getVolumeGroupId(), false));
- }
- }
- }
- }
-
- private void traverseServiceInstanceMSOPnfs(List<Resource> resourceList,
- List<Pair<WorkflowType, String>> aaiResourceIds,
- org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO) {
- if (serviceInstanceMSO.getPnfs() == null) {
- return;
- }
- for (org.onap.so.bpmn.servicedecomposition.bbobjects.Pnf pnf : serviceInstanceMSO.getPnfs()) {
- aaiResourceIds.add(new Pair<>(WorkflowType.PNF, pnf.getPnfId()));
- resourceList.add(new Resource(WorkflowType.PNF, pnf.getPnfId(), false));
- }
- }
-
- private void traverseVnfModules(List<Resource> resourceList, List<Pair<WorkflowType, String>> aaiResourceIds,
- org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf) {
- if (vnf.getVfModules() == null) {
- return;
- }
- for (VfModule vfModule : vnf.getVfModules()) {
- aaiResourceIds.add(new Pair<>(WorkflowType.VFMODULE, vfModule.getVfModuleId()));
- Resource resource = new Resource(WorkflowType.VFMODULE, vfModule.getVfModuleId(), false);
- resource.setBaseVfModule(vfModule.getModelInfoVfModule().getIsBaseBoolean());
- resourceList.add(resource);
- }
- }
-
-
-
protected WorkflowResourceIds populateResourceIdsFromApiHandler(DelegateExecution execution) {
return WorkflowResourceIdsUtils.getWorkflowResourceIdsFromExecution(execution);
}
@@ -1296,17 +892,6 @@ public class WorkflowAction {
&& (bbInputSetupUtils.getAAIServiceInstanceById(serviceInstanceId) != null));
}
- protected boolean foundRelated(List<Resource> resourceList) {
- return (containsWorkflowType(resourceList, WorkflowType.VNF)
- || containsWorkflowType(resourceList, WorkflowType.PNF)
- || containsWorkflowType(resourceList, WorkflowType.NETWORK)
- || containsWorkflowType(resourceList, WorkflowType.NETWORKCOLLECTION));
- }
-
- protected boolean containsWorkflowType(List<Resource> resourceList, WorkflowType workflowType) {
- return resourceList.stream().anyMatch(resource -> resource.getResourceType().equals(workflowType));
- }
-
private void fillExecutionDefault(DelegateExecution execution) {
execution.setVariable("sentSyncResponse", false);
execution.setVariable(HOMING, false);