From 18cc4f0fb16e1f03072222268eb2c5661d29bc23 Mon Sep 17 00:00:00 2001 From: Jozsef Csongvai Date: Fri, 26 Nov 2021 16:28:01 -0500 Subject: Add service composition building blocks Issue-ID: SO-3811 Signed-off-by: Jozsef Csongvai Change-Id: I1f3eb0b6ae0e6ac1ce90dbd10d3737bb195c673b --- .../BuildingBlock/CreateChildServiceBB.bpmn | 135 +++++++++++++++++++++ .../BuildingBlock/DeleteChildServiceBB.bpmn | 135 +++++++++++++++++++++ 2 files changed, 270 insertions(+) create mode 100644 bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/CreateChildServiceBB.bpmn create mode 100644 bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/DeleteChildServiceBB.bpmn (limited to 'bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock') diff --git a/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/CreateChildServiceBB.bpmn b/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/CreateChildServiceBB.bpmn new file mode 100644 index 0000000000..b681b999b1 --- /dev/null +++ b/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/CreateChildServiceBB.bpmn @@ -0,0 +1,135 @@ + + + + + SequenceFlow_14q7e7i + + + SequenceFlow_143mdyp + + + + + + + + SequenceFlow_0x6xxb8 + SequenceFlow_0jahgui + + + SequenceFlow_0hmy1qr + + PT5H + + + + SequenceFlow_0hmy1qr + + + + + SequenceFlow_0jahgui + SequenceFlow_0zfixj7 + SequenceFlow_052tga4 + + + ${execution.getVariable("CHILD_SVC_REQ_STATUS")=="COMPLETED"} + + + + SequenceFlow_14q7e7i + SequenceFlow_0n5pwwk + + + SequenceFlow_0n5pwwk + SequenceFlow_0x6xxb8 + + + SequenceFlow_052tga4 + + + SequenceFlow_0zfixj7 + SequenceFlow_143mdyp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/DeleteChildServiceBB.bpmn b/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/DeleteChildServiceBB.bpmn new file mode 100644 index 0000000000..cfa55d2101 --- /dev/null +++ b/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/DeleteChildServiceBB.bpmn @@ -0,0 +1,135 @@ + + + + + SequenceFlow_01wirq3 + + + SequenceFlow_14d89qf + SequenceFlow_1ufwh0a + + + SequenceFlow_0o2ukb9 + + + + SequenceFlow_0o2ukb9 + + PT5H + + + + + + + + SequenceFlow_1ufwh0a + SequenceFlow_0v4loyx + SequenceFlow_12rysg7 + + + SequenceFlow_0v4loyx + SequenceFlow_096kfnj + + + SequenceFlow_096kfnj + + + ${execution.getVariable("CHILD_SVC_REQ_STATUS")=="COMPLETED"} + + + + + + SequenceFlow_01wirq3 + SequenceFlow_0q6aqsk + + + SequenceFlow_0q6aqsk + SequenceFlow_14d89qf + + + SequenceFlow_12rysg7 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -- cgit 1.2.3-korg From f2f6144f8600f87b8dce092574c0541eb17389b8 Mon Sep 17 00:00:00 2001 From: sanket12345 Date: Wed, 9 Mar 2022 21:37:49 +0530 Subject: AAI Relationship for Parent - Child Services with Composed Resource Node -Code to add Relation between Parent & it's Child Services -Node used to connect parent and child in AAI is ComposedResource -Parent Service can be related with multiple Child Services via composedResource Node. Issue-ID: SO-3832 Change-ID: I73f97f986a817d423f92f8d922dcd9647b8a6adc Signed-off-by: sanket12345 Signed-off-by: Lukasz Rajewski --- .../tasks/BBInputSetupTest.java | 6 ++++ .../src/test/resources/application-test.yaml | 3 ++ .../BuildingBlock/CreateChildServiceBB.bpmn | 12 +++---- .../src/test/resources/application-test.yaml | 4 ++- .../service/composition/CreateChildServiceBB.java | 41 +++++++++++++++++++++- .../tasks/WorkflowActionBBFailureTest.java | 4 +-- .../src/test/resources/application-test.yaml | 4 ++- 7 files changed, 62 insertions(+), 12 deletions(-) (limited to 'bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock') diff --git a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/servicedecomposition/tasks/BBInputSetupTest.java b/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/servicedecomposition/tasks/BBInputSetupTest.java index b561055468..61a920ead8 100644 --- a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/servicedecomposition/tasks/BBInputSetupTest.java +++ b/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/servicedecomposition/tasks/BBInputSetupTest.java @@ -2121,6 +2121,8 @@ public class BBInputSetupTest { String instanceGroupId = "instancegroupId"; String vnfInstanceName = "vnfInstanceName"; String vfModuleInstanceName = "vfModuleInstanceName"; + String childServiceInstanceId = "childServiceInstanceId"; + String childServiceInstanceName = "childServiceInstanceName"; expected.put(ResourceKey.SERVICE_INSTANCE_ID, serviceInstanceId); expected.put(ResourceKey.NETWORK_ID, networkId); @@ -2132,6 +2134,8 @@ public class BBInputSetupTest { expected.put(ResourceKey.INSTANCE_GROUP_ID, instanceGroupId); expected.put(ResourceKey.VNF_INSTANCE_NAME, vnfInstanceName); expected.put(ResourceKey.VF_MODULE_INSTANCE_NAME, vfModuleInstanceName); + expected.put(ResourceKey.CHILD_SERVICE_INSTANCE_ID, childServiceInstanceId); + expected.put(ResourceKey.CHILD_SERVICE_INSTANCE_NAME, childServiceInstanceName); WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds(); workflowResourceIds.setServiceInstanceId(serviceInstanceId); @@ -2144,6 +2148,8 @@ public class BBInputSetupTest { workflowResourceIds.setInstanceGroupId(instanceGroupId); workflowResourceIds.setVnfInstanceName(vnfInstanceName); workflowResourceIds.setVfModuleInstanceName(vfModuleInstanceName); + workflowResourceIds.setChildServiceInstanceId(childServiceInstanceId); + workflowResourceIds.setChildServiceInstanceName(childServiceInstanceName); SPY_bbInputSetup.populateLookupKeyMapWithIds(workflowResourceIds, actual); diff --git a/bpmn/mso-infrastructure-bpmn/src/test/resources/application-test.yaml b/bpmn/mso-infrastructure-bpmn/src/test/resources/application-test.yaml index 56a92cbd01..07c90bf529 100644 --- a/bpmn/mso-infrastructure-bpmn/src/test/resources/application-test.yaml +++ b/bpmn/mso-infrastructure-bpmn/src/test/resources/application-test.yaml @@ -59,6 +59,9 @@ mso: requestDb: auth: Basic YnBlbDptc28tZGItMTUwNyE= endpoint: http://localhost:8081 + apihandler: + endpoint: http://localhost:8080 + auth: Basic dGVzdDp0ZXN0Cg== async: core-pool-size: 50 max-pool-size: 50 diff --git a/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/CreateChildServiceBB.bpmn b/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/CreateChildServiceBB.bpmn index b681b999b1..9d361bf101 100644 --- a/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/CreateChildServiceBB.bpmn +++ b/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/CreateChildServiceBB.bpmn @@ -1,5 +1,5 @@ - + SequenceFlow_14q7e7i @@ -47,10 +47,10 @@ SequenceFlow_052tga4 - + SequenceFlow_0zfixj7 SequenceFlow_143mdyp - + @@ -121,15 +121,15 @@ + + + - - - diff --git a/bpmn/so-bpmn-infrastructure-flows/src/test/resources/application-test.yaml b/bpmn/so-bpmn-infrastructure-flows/src/test/resources/application-test.yaml index fa753396cf..7a9c4ba914 100644 --- a/bpmn/so-bpmn-infrastructure-flows/src/test/resources/application-test.yaml +++ b/bpmn/so-bpmn-infrastructure-flows/src/test/resources/application-test.yaml @@ -64,7 +64,9 @@ mso: #${mso.adapters.requestDb.auth}: BBInputSetup auth: Basic YnBlbDptc28tZGItMTUwNyE= endpoint: http://localhost:${wiremock.server.port} - + apihandler: + endpoint: http://localhost:8080 + auth: Basic dGVzdDp0ZXN0Cg== async: core-pool-size: 50 max-pool-size: 50 diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/service/composition/CreateChildServiceBB.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/service/composition/CreateChildServiceBB.java index 3672df4dba..0486c529c6 100644 --- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/service/composition/CreateChildServiceBB.java +++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/service/composition/CreateChildServiceBB.java @@ -35,6 +35,14 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import org.onap.aai.domain.yang.ComposedResource; +import org.onap.aai.domain.yang.Relationship; +import org.onap.aaiclient.client.aai.AAIResourcesClient; +import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri; +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; + @Component public class CreateChildServiceBB { @@ -73,7 +81,6 @@ public class CreateChildServiceBB { log.info("Sending Create Service Request: \n{}", sir.toString()); buildingBlockExecution.setVariable(CHILD_SVC_REQ_CORRELATION_ID, sir.getRequestDetails().getRequestInfo().getCorrelator()); - ServiceInstancesResponse response = apiHandlerClient.createServiceInstance(sir); buildingBlockExecution.setVariable(CHILD_SVC_REQ_ID, response.getRequestReferences().getRequestId()); buildingBlockExecution.setVariable(CHILD_SVC_INSTANCE_ID, response.getRequestReferences().getInstanceId()); @@ -83,6 +90,38 @@ public class CreateChildServiceBB { } } + /* + * This method is to create Relation between Parent & Child Services with Node as Composed Resource. + * + */ + + public void updateRelations(BuildingBlockExecution buildingBlockExecution) throws Exception { + + Map lookupMap = buildingBlockExecution.getLookupMap(); + + String childSvcInstanceId = buildingBlockExecution.getVariable(CHILD_SVC_INSTANCE_ID); + String parentSvcInstanceId = lookupMap.get(ResourceKey.SERVICE_INSTANCE_ID); + + ComposedResource composedResource = new ComposedResource(); + composedResource.setId(UUID.randomUUID().toString()); + + AAIResourcesClient client = new AAIResourcesClient(); + + AAIResourceUri composedResourceURI = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business() + .customer(buildingBlockExecution.getGeneralBuildingBlock().getCustomer().getGlobalCustomerId()) + .serviceSubscription(buildingBlockExecution.getGeneralBuildingBlock().getRequestContext() + .getSubscriptionServiceType()) + .serviceInstance(parentSvcInstanceId).composedResource(composedResource.getId())); + + client.create(composedResourceURI, composedResource); + + AAIResourceUri childURI = + AAIUriFactory.createResourceUri(Types.SERVICE_INSTANCE.getFragment(childSvcInstanceId)); + + client.connect(composedResourceURI, childURI); + + } + public void handleFailure(final BuildingBlockExecution buildingBlockExecution) { Map lookupMap = buildingBlockExecution.getLookupMap(); String childSvcInstanceName = lookupMap.get(ResourceKey.CHILD_SERVICE_INSTANCE_NAME); diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionBBFailureTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionBBFailureTest.java index cedaef0bfd..aeef976fb4 100644 --- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionBBFailureTest.java +++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionBBFailureTest.java @@ -34,7 +34,6 @@ import static org.onap.so.bpmn.infrastructure.service.composition.ServiceComposi import static org.onap.so.bpmn.infrastructure.service.composition.ServiceCompositionConstants.CHILD_SVC_REQ_STATUS; import static org.onap.so.bpmn.infrastructure.service.composition.ServiceCompositionConstants.IS_CHILD_PROCESS; import static org.onap.so.bpmn.infrastructure.service.composition.ServiceCompositionConstants.PARENT_CORRELATION_ID; - import java.sql.Timestamp; import org.camunda.bpm.engine.ProcessEngineServices; import org.camunda.bpm.engine.RuntimeService; @@ -315,8 +314,7 @@ public class WorkflowActionBBFailureTest extends BaseTaskTest { workflowActionBBFailure.updateRequestStatusToFailed(mockExecution); verify(messageCorrelationBuilder).setVariable(CHILD_SVC_REQ_STATUS, "FAILED"); - verify(messageCorrelationBuilder).setVariable(CHILD_SVC_REQ_ERROR, - "Rollback has been completed successfully."); + verify(messageCorrelationBuilder).setVariable(CHILD_SVC_REQ_ERROR, "Rollback has been completed successfully."); verify(messageCorrelationBuilder).processInstanceVariableEquals(CHILD_SVC_REQ_CORRELATION_ID, parentCorrelationId); } diff --git a/bpmn/so-bpmn-tasks/src/test/resources/application-test.yaml b/bpmn/so-bpmn-tasks/src/test/resources/application-test.yaml index b64fc3318b..d3f5696c16 100644 --- a/bpmn/so-bpmn-tasks/src/test/resources/application-test.yaml +++ b/bpmn/so-bpmn-tasks/src/test/resources/application-test.yaml @@ -84,7 +84,9 @@ mso: workflow: message: endpoint: http://localhost:${wiremock.server.port}/workflows/messages/message - + apihandler: + endpoint: http://localhost:8080 + auth: Basic dGVzdDp0ZXN0Cg== async: core-pool-size: 50 max-pool-size: 50 -- cgit 1.2.3-korg From 7afa4fdaecb5df4e6e67f94a46825ebbe6050110 Mon Sep 17 00:00:00 2001 From: "mamed.mamedov" Date: Mon, 30 May 2022 17:37:24 +0300 Subject: Enable DeleteChildService functionality Issue-ID: SO-3830 Change-Id: I5cf8b1a998839813fd59576eb70eb79c72f2c2fe Signed-off-by: mamed.mamedov --- .../main/resources/db/migration/R__MacroData.sql | 34 ++++---- .../BuildingBlock/DeleteChildServiceBB.bpmn | 98 ++++++++++------------ .../composition/ChildServiceRequestBuilder.java | 43 ++++++++-- .../service/composition/DeleteChildServiceBB.java | 95 ++++++++++++++++++++- .../workflow/tasks/WorkflowAction.java | 13 +-- .../tasks/ebb/loader/ServiceEBBLoader.java | 53 ++++++++++++ .../ChildServiceRequestBuilderTest.java | 23 ++++- .../tasks/ebb/loader/ServiceEBBLoaderTest.java | 56 +++++++++++++ 8 files changed, 326 insertions(+), 89 deletions(-) (limited to 'bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock') diff --git a/adapters/mso-catalog-db-adapter/src/main/resources/db/migration/R__MacroData.sql b/adapters/mso-catalog-db-adapter/src/main/resources/db/migration/R__MacroData.sql index 6b552b3fdd..9b21dcd2d2 100644 --- a/adapters/mso-catalog-db-adapter/src/main/resources/db/migration/R__MacroData.sql +++ b/adapters/mso-catalog-db-adapter/src/main/resources/db/migration/R__MacroData.sql @@ -91,21 +91,22 @@ INSERT INTO orchestration_flow_reference(COMPOSITE_ACTION, SEQ_NO, FLOW_NAME, SC ('Service-Macro-Create', '21', 'ActivateVnfBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Create' and CLOUD_OWNER = 'DEFAULT')), ('Service-Macro-Create', '22', 'ActivateNetworkCollectionBB', NULL, NULL,1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Create' and CLOUD_OWNER = 'DEFAULT')), ('Service-Macro-Create', '23', 'ActivateServiceInstanceBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Create' and CLOUD_OWNER = 'DEFAULT')), -('Service-Macro-Delete', '1', 'DeactivateVfModuleBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Delete' and CLOUD_OWNER = 'DEFAULT')), -('Service-Macro-Delete', '2', 'DeleteVfModuleBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Delete' and CLOUD_OWNER = 'DEFAULT')), -('Service-Macro-Delete', '3', 'DeactivateVolumeGroupBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Delete' and CLOUD_OWNER = 'DEFAULT')), -('Service-Macro-Delete', '4', 'DeleteVolumeGroupBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Delete' and CLOUD_OWNER = 'DEFAULT')), -('Service-Macro-Delete', '5', 'DeactivateVnfBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Delete' and CLOUD_OWNER = 'DEFAULT')), -('Service-Macro-Delete', '6', 'DeactivatePnfBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Delete' and CLOUD_OWNER = 'DEFAULT')), -('Service-Macro-Delete', '7', 'DeactivateNetworkBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Delete' and CLOUD_OWNER = 'DEFAULT')), -('Service-Macro-Delete', '8', 'DeleteNetworkBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Delete' and CLOUD_OWNER = 'DEFAULT')), -('Service-Macro-Delete', '9', 'DeleteNetworkCollectionBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Delete' and CLOUD_OWNER = 'DEFAULT')), -('Service-Macro-Delete', '10', 'DeactivateServiceInstanceBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Delete' and CLOUD_OWNER = 'DEFAULT')), -('Service-Macro-Delete', '11', 'UnassignVfModuleBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Delete' and CLOUD_OWNER = 'DEFAULT')), -('Service-Macro-Delete', '12', 'UnassignVolumeGroupBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Delete' and CLOUD_OWNER = 'DEFAULT')), -('Service-Macro-Delete', '13', 'UnassignVnfBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Delete' and CLOUD_OWNER = 'DEFAULT')), -('Service-Macro-Delete', '14', 'UnassignNetworkBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Delete' and CLOUD_OWNER = 'DEFAULT')), -('Service-Macro-Delete', '15', 'UnassignServiceInstanceBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Delete' and CLOUD_OWNER = 'DEFAULT')), +('Service-Macro-Delete', '1', 'DeleteChildServiceBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Delete' and CLOUD_OWNER = 'DEFAULT')), +('Service-Macro-Delete', '2', 'DeactivateVfModuleBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Delete' and CLOUD_OWNER = 'DEFAULT')), +('Service-Macro-Delete', '3', 'DeleteVfModuleBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Delete' and CLOUD_OWNER = 'DEFAULT')), +('Service-Macro-Delete', '4', 'DeactivateVolumeGroupBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Delete' and CLOUD_OWNER = 'DEFAULT')), +('Service-Macro-Delete', '5', 'DeleteVolumeGroupBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Delete' and CLOUD_OWNER = 'DEFAULT')), +('Service-Macro-Delete', '6', 'DeactivateVnfBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Delete' and CLOUD_OWNER = 'DEFAULT')), +('Service-Macro-Delete', '7', 'DeactivatePnfBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Delete' and CLOUD_OWNER = 'DEFAULT')), +('Service-Macro-Delete', '8', 'DeactivateNetworkBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Delete' and CLOUD_OWNER = 'DEFAULT')), +('Service-Macro-Delete', '9', 'DeleteNetworkBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Delete' and CLOUD_OWNER = 'DEFAULT')), +('Service-Macro-Delete', '10', 'DeleteNetworkCollectionBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Delete' and CLOUD_OWNER = 'DEFAULT')), +('Service-Macro-Delete', '11', 'DeactivateServiceInstanceBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Delete' and CLOUD_OWNER = 'DEFAULT')), +('Service-Macro-Delete', '12', 'UnassignVfModuleBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Delete' and CLOUD_OWNER = 'DEFAULT')), +('Service-Macro-Delete', '13', 'UnassignVolumeGroupBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Delete' and CLOUD_OWNER = 'DEFAULT')), +('Service-Macro-Delete', '14', 'UnassignVnfBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Delete' and CLOUD_OWNER = 'DEFAULT')), +('Service-Macro-Delete', '15', 'UnassignNetworkBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Delete' and CLOUD_OWNER = 'DEFAULT')), +('Service-Macro-Delete', '16', 'UnassignServiceInstanceBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Delete' and CLOUD_OWNER = 'DEFAULT')), ('Service-Macro-Upgrade', '1', 'ChangeModelServiceInstanceBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Service-Macro-Upgrade' and CLOUD_OWNER = 'DEFAULT')), ('Network-Create', '1', 'AssignNetworkBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Network-Create' and CLOUD_OWNER = 'DEFAULT')), ('Network-Create', '2', 'CreateNetworkBB', NULL, NULL, 1.0,(SELECT id from northbound_request_ref_lookup WHERE MACRO_ACTION = 'Network-Create' and CLOUD_OWNER = 'DEFAULT')), @@ -322,6 +323,7 @@ VALUES ('VNFConfigModifyActivity','*','*','*','*','Manual','Abort','*', '*'), ('VNFUnsetInMaintFlagActivity','*','*','*','*','Manual','Abort','*', '*'), ('VNFUnsetClosedLoopDisabledActivity','*','*','*','*','Manual','Abort','*', '*'), +('DeleteChildServiceBB', '*', '*', '*', '*', 'Rollback', 'Abort', '*', '*'), ('CreateChildServiceBB', '*', '*', '*', '*', 'Rollback', 'Abort', '*', '*'); INSERT INTO building_block_detail (building_block_name, resource_type, target_action) @@ -364,12 +366,12 @@ VALUES ('CreateNetworkBB', 'NETWORK', 'CREATE'), ('CreateNetworkCollectionBB', 'NETWORK_COLLECTION', 'CREATE'), ('CreateChildServiceBB', 'NO_VALIDATE', 'CUSTOM'), -('DeleteChildServiceBB', 'NO_VALIDATE', 'CUSTOM'), ('DeleteVolumeGroupBB', 'VOLUME_GROUP', 'DELETE'), ('DeleteVfModuleBB', 'VF_MODULE', 'DELETE'), ('DeleteNetworkBB', 'NETWORK', 'DELETE'), ('DeleteNetworkCollectionBB', 'NETWORK_COLLECTION', 'DELETE'), +('DeleteChildServiceBB', 'NO_VALIDATE', 'CUSTOM'), ('ConfigurationScaleOutBB', 'NO_VALIDATE', 'CUSTOM'), ('GenericVnfHealthCheckBB', 'NO_VALIDATE', 'CUSTOM'), diff --git a/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/DeleteChildServiceBB.bpmn b/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/DeleteChildServiceBB.bpmn index cfa55d2101..3be6d32792 100644 --- a/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/DeleteChildServiceBB.bpmn +++ b/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/DeleteChildServiceBB.bpmn @@ -1,5 +1,5 @@ - + SequenceFlow_01wirq3 @@ -27,18 +27,13 @@ SequenceFlow_0v4loyx SequenceFlow_12rysg7 - - SequenceFlow_0v4loyx - SequenceFlow_096kfnj - - SequenceFlow_096kfnj + SequenceFlow_0v4loyx - + ${execution.getVariable("CHILD_SVC_REQ_STATUS")=="COMPLETED"} - SequenceFlow_01wirq3 @@ -56,71 +51,58 @@ - - - - - - - - - - - + + + + + + + - + - - - - - - - + + + + + + + + + + - - - + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - @@ -130,6 +112,12 @@ + + + + + + diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/service/composition/ChildServiceRequestBuilder.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/service/composition/ChildServiceRequestBuilder.java index 135b3d6ec4..2a008e3573 100644 --- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/service/composition/ChildServiceRequestBuilder.java +++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/service/composition/ChildServiceRequestBuilder.java @@ -13,15 +13,14 @@ import org.onap.so.serviceinstancebeans.RelatedInstance; import org.onap.so.serviceinstancebeans.RelatedInstanceList; import org.onap.so.serviceinstancebeans.RequestDetails; import org.onap.so.serviceinstancebeans.RequestInfo; +import org.onap.so.serviceinstancebeans.RequestParameters; import org.onap.so.serviceinstancebeans.Service; import org.onap.so.serviceinstancebeans.ServiceInstancesRequest; -import org.onap.so.serviceinstancebeans.RequestParameters; import org.onap.so.serviceinstancebeans.SubscriberInfo; import java.io.IOException; import java.util.Map; public class ChildServiceRequestBuilder { - private final BuildingBlockExecution buildingBlockExecution; private Service parent; private Service child; @@ -66,6 +65,17 @@ public class ChildServiceRequestBuilder { return new ChildServiceRequestBuilder(buildingBlockExecution, parent, child); } + public static ChildServiceRequestBuilder getInstance(final BuildingBlockExecution buildingBlockExecution, + Service parentInstance, Service childInstance) { + Service child = null; + Service parent = null; + if (childInstance != null) { + parent = parentInstance; + child = childInstance; + } + return new ChildServiceRequestBuilder(buildingBlockExecution, parent, child); + } + public ChildServiceRequestBuilder setParentRequestId(String parentRequestId) { sir.getRequestDetails().getRequestInfo().setRequestorId(parentRequestId); return this; @@ -83,10 +93,28 @@ public class ChildServiceRequestBuilder { public ServiceInstancesRequest build() { RequestContext context = buildingBlockExecution.getGeneralBuildingBlock().getRequestContext(); - sir.setRequestDetails(createRequestDetails(context)); + + if (context.getAction().equals("deleteInstance")) { + sir.setRequestDetails(createRequestDetailsDeleteChild(context)); + } else { + sir.setRequestDetails(createRequestDetails(context)); + } return sir; } + private RequestDetails createRequestDetailsDeleteChild(RequestContext context) { + RequestDetails details = sir.getRequestDetails(); + + details.setRequestParameters(createRequestParameters(context, child)); + details.setRequestInfo(createRequestInfo(context)); + details.setCloudConfiguration(createCloudConfiguration()); + details.setModelInfo(child.getModelInfo()); + details.setSubscriberInfo(createSubscriberInfo()); + details.setRelatedInstanceList(createRelatedInstanceList()); + + return details; + } + private RequestDetails createRequestDetails(RequestContext context) { RequestDetails details = sir.getRequestDetails(); @@ -104,8 +132,13 @@ public class ChildServiceRequestBuilder { private RequestParameters createRequestParameters(RequestContext context, Service childService) { RequestParameters requestParameters = new RequestParameters(); - requestParameters.getUserParams().add(context.getRequestParameters().getUserParams().get(0)); - requestParameters.getUserParams().add(Map.of("service", childService)); + + if (!context.getRequestParameters().getUserParams().isEmpty()) { + requestParameters.getUserParams().add(context.getRequestParameters().getUserParams().get(0)); + if (context.getAction().equals("createInstance")) { + requestParameters.getUserParams().add(Map.of("service", childService)); + } + } requestParameters.setSubscriptionServiceType(context.getRequestParameters().getSubscriptionServiceType()); requestParameters.setaLaCarte(context.getRequestParameters().getALaCarte()); requestParameters.setPayload(context.getRequestParameters().getPayload()); diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/service/composition/DeleteChildServiceBB.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/service/composition/DeleteChildServiceBB.java index a3f70c8f5b..52d1b68ccd 100644 --- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/service/composition/DeleteChildServiceBB.java +++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/service/composition/DeleteChildServiceBB.java @@ -16,27 +16,114 @@ package org.onap.so.bpmn.infrastructure.service.composition; +import org.onap.aai.domain.yang.ServiceInstance; +import org.onap.aaiclient.client.aai.AAIResourcesClient; +import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory; +import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder; +import org.onap.aaiclient.client.graphinventory.entities.uri.Depth; +import org.onap.logging.filter.base.ONAPComponents; import org.onap.so.bpmn.common.BuildingBlockExecution; +import org.onap.so.bpmn.servicedecomposition.entities.ResourceKey; +import org.onap.so.client.exception.ExceptionBuilder; +import org.onap.so.client.orchestration.ApiHandlerClient; +import org.onap.so.serviceinstancebeans.ModelInfo; +import org.onap.so.serviceinstancebeans.ModelType; +import org.onap.so.serviceinstancebeans.Service; +import org.onap.so.serviceinstancebeans.ServiceInstancesRequest; +import org.onap.so.serviceinstancebeans.ServiceInstancesResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import java.util.Map; +import java.util.UUID; +import static org.onap.so.bpmn.infrastructure.service.composition.ServiceCompositionConstants.CHILD_SVC_INSTANCE_ID; +import static org.onap.so.bpmn.infrastructure.service.composition.ServiceCompositionConstants.CHILD_SVC_REQ_CORRELATION_ID; +import static org.onap.so.bpmn.infrastructure.service.composition.ServiceCompositionConstants.CHILD_SVC_REQ_ERROR; +import static org.onap.so.bpmn.infrastructure.service.composition.ServiceCompositionConstants.CHILD_SVC_REQ_ID; +import static org.onap.so.bpmn.infrastructure.service.composition.ServiceCompositionConstants.CHILD_SVC_REQ_PAYLOAD; + @Component public class DeleteChildServiceBB { + @Autowired + protected ExceptionBuilder exceptionBuilder; + + @Autowired + private ApiHandlerClient apiHandlerClient; + + private AAIResourcesClient aaiResourcesClient = new AAIResourcesClient(); + private final Logger log = LoggerFactory.getLogger(this.getClass()); public void buildRequest(final BuildingBlockExecution buildingBlockExecution) { log.info("Building Delete Service Request"); + Map lookupMap = buildingBlockExecution.getLookupMap(); + String childSvcInstanceId = lookupMap.get(ResourceKey.CHILD_SERVICE_INSTANCE_ID); + String childServiceInstanceId = + buildingBlockExecution.getLookupMap().get(ResourceKey.CHILD_SERVICE_INSTANCE_ID); + String parentServiceInstanceId = buildingBlockExecution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID); + ServiceInstance childInstanceAAI = aaiResourcesClient.get(ServiceInstance.class, + AAIUriFactory + .createResourceUri( + AAIFluentTypeBuilder.Types.SERVICE_INSTANCE.getFragment(childServiceInstanceId)) + .depth(Depth.TWO)) + .orElse(null); + ServiceInstance parentInstanceAAI = + aaiResourcesClient.get(ServiceInstance.class, + AAIUriFactory.createResourceUri( + AAIFluentTypeBuilder.Types.SERVICE_INSTANCE.getFragment(parentServiceInstanceId)) + .depth(Depth.TWO)) + .orElse(null); + if (childInstanceAAI == null || parentInstanceAAI == null) { + exceptionBuilder.buildAndThrowWorkflowException(buildingBlockExecution, 10004, "Service AAI request failed", + ONAPComponents.SO); + } + Service parentInstance = serviceInstanceToServiceBeanMapper(parentInstanceAAI); + Service childInstance = serviceInstanceToServiceBeanMapper(childInstanceAAI); + ServiceInstancesRequest sir = ChildServiceRequestBuilder + .getInstance(buildingBlockExecution, parentInstance, childInstance) + .setParentRequestId( + buildingBlockExecution.getGeneralBuildingBlock().getRequestContext().getMsoRequestId()) + .setChildSvcInstanceId(childSvcInstanceId).setCorrelationId(UUID.randomUUID().toString()).build(); + buildingBlockExecution.setVariable(CHILD_SVC_REQ_PAYLOAD, sir); } public void sendRequest(final BuildingBlockExecution buildingBlockExecution) { - log.info("Sending Delete Service Request"); + try { + ServiceInstancesRequest sir = buildingBlockExecution.getVariable(CHILD_SVC_REQ_PAYLOAD); + log.info("Sending Delete Service Request: \n{}", sir.toString()); + buildingBlockExecution.setVariable(CHILD_SVC_REQ_CORRELATION_ID, + sir.getRequestDetails().getRequestInfo().getCorrelator()); + ServiceInstancesResponse response = apiHandlerClient.deleteServiceInstance(sir); + buildingBlockExecution.setVariable(CHILD_SVC_REQ_ID, response.getRequestReferences().getRequestId()); + buildingBlockExecution.setVariable(CHILD_SVC_INSTANCE_ID, response.getRequestReferences().getInstanceId()); + } catch (Exception e) { + exceptionBuilder.buildAndThrowWorkflowException(buildingBlockExecution, 10003, e.getMessage(), + ONAPComponents.SO); + } } - public void handleFailure(final BuildingBlockExecution buildingBlockExecution, final String responsePayload) { - // log error - // build workflowException with proper message + public void handleFailure(final BuildingBlockExecution buildingBlockExecution) { + Map lookupMap = buildingBlockExecution.getLookupMap(); + String childSvcInstanceName = lookupMap.get(ResourceKey.CHILD_SERVICE_INSTANCE_NAME); + String childErrorMessage = buildingBlockExecution.getVariable(CHILD_SVC_REQ_ERROR); + String errorMessage = + String.format("Failed deleting child service %:qqs %s", childSvcInstanceName, childErrorMessage); + exceptionBuilder.buildAndThrowWorkflowException(buildingBlockExecution, 10001, errorMessage, ONAPComponents.SO); } + private static Service serviceInstanceToServiceBeanMapper(ServiceInstance serviceInstance) { + Service service = new Service(); + service.setInstanceName(service.getInstanceName()); + ModelInfo modelInfo = new ModelInfo(); + modelInfo.setModelId(serviceInstance.getModelVersionId()); + modelInfo.setModelType(ModelType.service); + modelInfo.setModelVersionId(serviceInstance.getModelVersionId()); + modelInfo.setModelInstanceName(serviceInstance.getServiceInstanceName()); + modelInfo.setModelInvariantId(serviceInstance.getModelInvariantId()); + service.setModelInfo(modelInfo); + return service; + } } 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 ef0fbc850e..31a7caacda 100755 --- 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 @@ -692,11 +692,11 @@ public class WorkflowAction { logger.debug("{}, {}", pair.getValue0(), pair.getValue1()); } Map resourceInstanceIds = new HashMap<>(); - Arrays.stream(WorkflowType.values()).filter(type -> !type.equals(WorkflowType.SERVICE)) - .forEach(type -> resourceList.stream().filter(resource -> type.equals(resource.getResourceType())) - .forEach(resource -> updateWorkflowResourceIds(flowsToExecute, type, resource, - retrieveAAIResourceId(aaiResourceIds, type), null, serviceInstanceId, - resourceInstanceIds))); + Arrays.stream(WorkflowType.values()).forEach(type -> resourceList.stream() + .filter(resource -> type.equals(resource.getResourceType()) + && !(WorkflowType.SERVICE.equals(type) && !resource.hasParent())) + .forEach(resource -> updateWorkflowResourceIds(flowsToExecute, type, resource, + retrieveAAIResourceId(aaiResourceIds, type), null, serviceInstanceId, resourceInstanceIds))); } private String retrieveAAIResourceId(List> aaiResourceIds, WorkflowType resource) { @@ -750,7 +750,8 @@ public class WorkflowAction { } if (resource.hasParent() && WorkflowType.SERVICE.equals(resourceType) && WorkflowType.SERVICE.equals(parent.getResourceType())) { - workflowResourceIds.setChildServiceInstanceId(resourceId); + String childServiceInstanceId = resource.isGenerated() ? resourceId : resource.getResourceId(); + workflowResourceIds.setChildServiceInstanceId(childServiceInstanceId); workflowResourceIds.setChildServiceInstanceName(resource.getInstanceName()); } else { WorkflowResourceIdsUtils.setInstanceNameByWorkflowType(workflowResourceIds, resourceType, diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/ServiceEBBLoader.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/ServiceEBBLoader.java index 79e801b740..f16365b742 100644 --- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/ServiceEBBLoader.java +++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/ServiceEBBLoader.java @@ -25,8 +25,12 @@ package org.onap.so.bpmn.infrastructure.workflow.tasks.ebb.loader; import com.fasterxml.jackson.core.JsonProcessingException; import org.camunda.bpm.engine.delegate.DelegateExecution; import org.javatuples.Pair; +import org.onap.aai.domain.yang.ComposedResource; +import org.onap.aai.domain.yang.ComposedResources; import org.onap.aai.domain.yang.GenericVnf; import org.onap.aai.domain.yang.Relationship; +import org.onap.aai.domain.yang.RelationshipData; +import org.onap.aai.domain.yang.RelationshipList; import org.onap.aai.domain.yang.ServiceInstance; import org.onap.aai.domain.yang.VpnBinding; import org.onap.aaiclient.client.aai.AAICommonObjectMapperProvider; @@ -204,6 +208,7 @@ public class ServiceEBBLoader { new Resource(WorkflowType.SERVICE, serviceInstanceMSO.getServiceInstanceId(), false, null); serviceResource.setModelInvariantId(serviceInstanceAAI.getModelInvariantId()); resourceList.add(serviceResource); + traverseServiceInstanceChildService(resourceList, serviceResource, serviceInstanceAAI); traverseServiceInstanceMSOVnfs(resourceList, serviceResource, aaiResourceIds, serviceInstanceMSO); traverseServiceInstanceMSOPnfs(resourceList, serviceResource, aaiResourceIds, serviceInstanceMSO); if (serviceInstanceMSO.getNetworks() != null) { @@ -280,6 +285,54 @@ public class ServiceEBBLoader { } } + public void traverseServiceInstanceChildService(List resourceList, Resource serviceResource, + ServiceInstance serviceInstanceAAI) { + + ComposedResources composedResources = serviceInstanceAAI.getComposedResources(); + if (composedResources == null) { + return; + } + + List listOfComposedResource = composedResources.getComposedResource(); + + listOfComposedResource.forEach(composedResource -> { + // Get ServiceInstance from composedResource relationship List + RelationshipList relationshipList = composedResource.getRelationshipList(); + if (relationshipList == null) { + return; + } + List composedResourceRelationshipList = relationshipList.getRelationship(); + ServiceInstance childService = new ServiceInstance(); + composedResourceRelationshipList.forEach(composedRelation -> { + if ("service-instance".equalsIgnoreCase(composedRelation.getRelatedTo())) { + List rData = composedRelation.getRelationshipData(); + rData.forEach(data -> { + if ("service-instance.service-instance-id".equalsIgnoreCase(data.getRelationshipKey())) { + childService.setServiceInstanceId(data.getRelationshipValue()); + } + }); + composedRelation.getRelatedToProperty().forEach(relatedToProperty -> { + if ("service-instance.service-instance-name" + .equalsIgnoreCase(relatedToProperty.getPropertyKey())) { + childService.setServiceInstanceName(relatedToProperty.getPropertyValue()); + } + }); + } + }); + + if (childService.getServiceInstanceId() == null) { + return; + } + + Resource childServiceResource = + new Resource(WorkflowType.SERVICE, childService.getServiceInstanceId(), false, serviceResource); + + childServiceResource.setInstanceName(childService.getServiceInstanceName()); + resourceList.add(childServiceResource); + }); + + } + protected void traverseVrfConfiguration(List> aaiResourceIds, List resourceList, Resource serviceResource, org.onap.so.db.catalog.beans.Service service, RelatedInstance relatedVpnBinding, RelatedInstance relatedLocalNetwork) diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/service/composition/ChildServiceRequestBuilderTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/service/composition/ChildServiceRequestBuilderTest.java index d1db3aadcd..e57232ebb7 100644 --- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/service/composition/ChildServiceRequestBuilderTest.java +++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/service/composition/ChildServiceRequestBuilderTest.java @@ -53,6 +53,7 @@ public class ChildServiceRequestBuilderTest { context.setProductFamilyId("FamilyId"); context.setSource("source"); context.setRequestorId("RequestOrId"); + context.setAction("createInstance"); CloudRegion cloudRegion = new CloudRegion(); cloudRegion.setCloudOwner("CloudOwner"); @@ -82,10 +83,26 @@ public class ChildServiceRequestBuilderTest { gbb.setServiceInstance(serviceInstance); mockExecution = mock(BuildingBlockExecution.class); doReturn(gbb).when(mockExecution).getGeneralBuildingBlock(); + doReturn("CreateChildServiceBB").when(mockExecution).getFlowToBeCalled(); } @Test - public void childServiceRequestBuilderTest() { + public void deleteChildServiceRequestBuilderTest() { + Service parent = new Service(); + Service child = new Service(); + + ChildServiceRequestBuilder builder = ChildServiceRequestBuilder.getInstance(mockExecution, parent, child); + ServiceInstancesRequest sir = builder + .setParentRequestId(mockExecution.getGeneralBuildingBlock().getRequestContext().getMsoRequestId()) + .setCorrelationId(UUID.randomUUID().toString()).setChildSvcInstanceId("childInstanceId").build(); + + Assert.assertEquals("childInstanceId", sir.getServiceInstanceId()); + Assert.assertEquals("serviceInstanceId", + sir.getRequestDetails().getRelatedInstanceList()[0].getRelatedInstance().getInstanceId()); + } + + @Test + public void createChildServiceRequestBuilderTest() { ServiceInstancesRequest sir = ChildServiceRequestBuilder.getInstance(mockExecution, "service1-instanceName") .setParentRequestId(mockExecution.getGeneralBuildingBlock().getRequestContext().getMsoRequestId()) @@ -180,6 +197,7 @@ public class ChildServiceRequestBuilderTest { context.setProductFamilyId("FamilyId"); context.setSource("source"); context.setRequestorId("RequestOrId"); + context.setAction("createInstance"); CloudRegion cloudRegion = new CloudRegion(); cloudRegion.setCloudOwner("CloudOwner"); @@ -198,6 +216,7 @@ public class ChildServiceRequestBuilderTest { gbb.setServiceInstance(serviceInstance); mockExecution = mock(BuildingBlockExecution.class); doReturn(gbb).when(mockExecution).getGeneralBuildingBlock(); + doReturn("CreateChildServiceBB").when(mockExecution).getFlowToBeCalled(); ServiceInstancesRequest sir = ChildServiceRequestBuilder .getInstance(mockExecution, "service1-instanceName-child") @@ -231,6 +250,4 @@ public class ChildServiceRequestBuilderTest { } return null; } - - } diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/ServiceEBBLoaderTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/ServiceEBBLoaderTest.java index 2725626c1a..9377daea5e 100644 --- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/ServiceEBBLoaderTest.java +++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/ServiceEBBLoaderTest.java @@ -32,7 +32,11 @@ import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; import org.mockito.Mock; +import org.onap.aai.domain.yang.ComposedResource; +import org.onap.aai.domain.yang.ComposedResources; +import org.onap.aai.domain.yang.RelatedToProperty; import org.onap.aai.domain.yang.Relationship; +import org.onap.aai.domain.yang.RelationshipData; import org.onap.aai.domain.yang.RelationshipList; import org.onap.aai.domain.yang.ServiceInstance; import org.onap.aaiclient.client.aai.entities.Relationships; @@ -364,4 +368,56 @@ public class ServiceEBBLoaderTest extends BaseTaskTest { resourceList.add(new Resource(WorkflowType.VFMODULE, "72d9d1cd-f46d-447a-abdb-451d6fb05fa8", false, r2)); return resourceList; } + + @Test + public void traverseServiceInstanceChildServiceTest() { + List resourceList = new ArrayList<>(); + Resource parentResource = new Resource(WorkflowType.SERVICE, "parentId", false, null); + String resourceId = "siP"; + ServiceInstance serviceInstanceAAI = new ServiceInstance(); + serviceInstanceAAI.setServiceInstanceId(resourceId); + + RelationshipData relationshipData = new RelationshipData(); + relationshipData.setRelationshipKey("service-instance.service-instance-id"); + relationshipData.setRelationshipValue("80ced9d5-666e-406b-88f0-a05d31328b70"); + RelatedToProperty relatedToProperty = new RelatedToProperty(); + relatedToProperty.setPropertyKey("service-instance.service-instance-name"); + relatedToProperty.setPropertyValue("child_euler_002"); + + RelationshipData relationshipData1 = new RelationshipData(); + relationshipData1.setRelationshipKey("service-instance.service-instance-id"); + relationshipData1.setRelationshipValue("fa5640af-c827-4372-baae-7f1c50fdb5ed"); + RelatedToProperty relatedToProperty1 = new RelatedToProperty(); + relatedToProperty1.setPropertyKey("service-instance.service-instance-name"); + relatedToProperty.setPropertyValue("child_euler_001"); + + + Relationship relationship = new Relationship(); + Relationship relationship1 = new Relationship(); + relationship.setRelatedTo("service-instance"); + relationship1.setRelatedTo("service-instance"); + relationship.getRelationshipData().add(relationshipData); + relationship.getRelatedToProperty().add(relatedToProperty); + relationship1.getRelationshipData().add(relationshipData1); + relationship1.getRelatedToProperty().add(relatedToProperty1); + + RelationshipList relationshipList = new RelationshipList(); + RelationshipList relationshipList1 = new RelationshipList(); + relationshipList.getRelationship().add(relationship); + relationshipList1.getRelationship().add(relationship1); + + ComposedResource composedResource = new ComposedResource(); + composedResource.setRelationshipList(relationshipList); + ComposedResource composedResource1 = new ComposedResource(); + composedResource1.setRelationshipList(relationshipList); + + ComposedResources composedResources = new ComposedResources(); + composedResources.getComposedResource().add(composedResource); + composedResources.getComposedResource().add(composedResource1); + + serviceInstanceAAI.setComposedResources(composedResources); + + serviceEBBLoader.traverseServiceInstanceChildService(resourceList, parentResource, serviceInstanceAAI); + assertEquals(2, resourceList.size()); + } } -- cgit 1.2.3-korg