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 --- .../service/composition/CreateChildServiceBB.java | 95 ++++++++++++++++++++++ .../service/composition/DeleteChildServiceBB.java | 42 ++++++++++ .../composition/ServiceCompositionConstants.java | 32 ++++++++ 3 files changed, 169 insertions(+) create mode 100644 bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/service/composition/CreateChildServiceBB.java create mode 100644 bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/service/composition/DeleteChildServiceBB.java create mode 100644 bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/service/composition/ServiceCompositionConstants.java (limited to 'bpmn/so-bpmn-tasks/src/main/java') 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 new file mode 100644 index 0000000000..3672df4dba --- /dev/null +++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/service/composition/CreateChildServiceBB.java @@ -0,0 +1,95 @@ +/*- + * Copyright (C) 2021 Bell Canada. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.onap.so.bpmn.infrastructure.service.composition; + +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_PAYLOAD; +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_INSTANCE_ID; +import static org.onap.so.bpmn.infrastructure.service.composition.ServiceCompositionConstants.CHILD_SVC_REQ_CORRELATION_ID; +import java.util.Map; +import java.util.Objects; +import java.util.UUID; +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.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; + +@Component +public class CreateChildServiceBB { + + private final Logger log = LoggerFactory.getLogger(this.getClass()); + + @Autowired + protected ExceptionBuilder exceptionBuilder; + + @Autowired + private ApiHandlerClient apiHandlerClient; + + public void buildRequest(final BuildingBlockExecution buildingBlockExecution) { + try { + log.info("Building Create Service Request"); + Map lookupMap = buildingBlockExecution.getLookupMap(); + String childSvcInstanceName = lookupMap.get(ResourceKey.CHILD_SERVICE_INSTANCE_NAME); + Objects.requireNonNull(childSvcInstanceName, "Child service instance name is required"); + + ServiceInstancesRequest sir = ChildServiceRequestBuilder + .getInstance(buildingBlockExecution, childSvcInstanceName) + .setParentRequestId( + buildingBlockExecution.getGeneralBuildingBlock().getRequestContext().getMsoRequestId()) + .setCorrelationId(UUID.randomUUID().toString()).build(); + buildingBlockExecution.setVariable(CHILD_SVC_REQ_PAYLOAD, sir); + } catch (Exception e) { + exceptionBuilder.buildAndThrowWorkflowException(buildingBlockExecution, 10002, e.getMessage(), + ONAPComponents.SO); + } + } + + public void sendRequest(final BuildingBlockExecution buildingBlockExecution) throws Exception { + try { + buildingBlockExecution.getLookupMap(); + ServiceInstancesRequest sir = buildingBlockExecution.getVariable(CHILD_SVC_REQ_PAYLOAD); + 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()); + } catch (Exception e) { + exceptionBuilder.buildAndThrowWorkflowException(buildingBlockExecution, 10003, e.getMessage(), + ONAPComponents.SO); + } + } + + 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 creating child service %s %s", childSvcInstanceName, childErrorMessage); + exceptionBuilder.buildAndThrowWorkflowException(buildingBlockExecution, 10001, errorMessage, ONAPComponents.SO); + } + +} 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 new file mode 100644 index 0000000000..a3f70c8f5b --- /dev/null +++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/service/composition/DeleteChildServiceBB.java @@ -0,0 +1,42 @@ +/*- + * Copyright (C) 2021 Bell Canada. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.onap.so.bpmn.infrastructure.service.composition; + +import org.onap.so.bpmn.common.BuildingBlockExecution; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +@Component +public class DeleteChildServiceBB { + + private final Logger log = LoggerFactory.getLogger(this.getClass()); + + public void buildRequest(final BuildingBlockExecution buildingBlockExecution) { + log.info("Building Delete Service Request"); + } + + public void sendRequest(final BuildingBlockExecution buildingBlockExecution) { + log.info("Sending Delete Service Request"); + } + + public void handleFailure(final BuildingBlockExecution buildingBlockExecution, final String responsePayload) { + // log error + // build workflowException with proper message + } + +} diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/service/composition/ServiceCompositionConstants.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/service/composition/ServiceCompositionConstants.java new file mode 100644 index 0000000000..6b209bdcef --- /dev/null +++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/service/composition/ServiceCompositionConstants.java @@ -0,0 +1,32 @@ +/*- + * Copyright (C) 2021 Bell Canada. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.onap.so.bpmn.infrastructure.service.composition; + +public class ServiceCompositionConstants { + + public static final String CHILD_SVC_REQ_PAYLOAD = "childServiceRequestPayload"; + public static final String CHILD_SVC_REQ_ID = "childServiceRequestId"; + public static final String CHILD_SVC_INSTANCE_ID = "childServiceInstanceId"; + public static final String IS_CHILD_PROCESS = "isChildProcess"; + public static final String CHILD_SVC_REQ_CORRELATION_ID = "childServiceRequestCorrelationId"; + public static final String CHILD_SVC_REQ_TIMEOUT = "childServiceRequestTimeout"; + public static final String CHILD_SVC_REQ_STATUS = "CHILD_SVC_REQ_STATUS"; + public static final String CHILD_SVC_REQ_ERROR = "CHILD_SVC_REQ_ERROR"; + public static final String CHILD_SVC_REQ_MESSAGE_NAME = "ChildServiceRequest"; + public static final String PARENT_CORRELATION_ID = "parentCorrelationId"; + +} -- cgit 1.2.3-korg