From 8ee912c7946410144b5ec79758f5d87ef656981b Mon Sep 17 00:00:00 2001 From: mharazin Date: Wed, 9 Sep 2020 08:24:33 +0200 Subject: Add userParams as inputs Issue-ID: SO-2646 Signed-off-by: Mateusz Harazin Change-Id: I16fce63cc123e63b6b8951eaebb7b0aa2947d564 --- .../client/cds/AbstractCDSProcessingBBUtils.java | 1 + .../client/cds/ConfigureInstanceParamsForPnf.java | 76 ++++++++++++++++++++++ 2 files changed, 77 insertions(+) create mode 100644 bpmn/MSOCommonBPMN/src/main/java/org/onap/so/client/cds/ConfigureInstanceParamsForPnf.java (limited to 'bpmn/MSOCommonBPMN') diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/client/cds/AbstractCDSProcessingBBUtils.java b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/client/cds/AbstractCDSProcessingBBUtils.java index 51b1a218c8..55d76819fc 100644 --- a/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/client/cds/AbstractCDSProcessingBBUtils.java +++ b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/client/cds/AbstractCDSProcessingBBUtils.java @@ -101,6 +101,7 @@ public class AbstractCDSProcessingBBUtils { ExecutionServiceInput executionServiceInput = prepareExecutionServiceInput(executionObject); execution.setVariable(EXEC_INPUT, executionServiceInput); + logger.debug("Input payload: " + executionServiceInput.getPayload()); } catch (Exception ex) { exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex); diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/client/cds/ConfigureInstanceParamsForPnf.java b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/client/cds/ConfigureInstanceParamsForPnf.java new file mode 100644 index 0000000000..0d79dbb375 --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/client/cds/ConfigureInstanceParamsForPnf.java @@ -0,0 +1,76 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2020 Nokia + * ================================================================================ + * 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. + * ============LICENSE_END========================================================= + */ + +package org.onap.so.client.cds; + +import com.google.gson.JsonObject; +import org.onap.so.client.exception.PayloadGenerationException; +import org.onap.so.serviceinstancebeans.Service; +import org.onap.so.serviceinstancebeans.Pnfs; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import java.util.List; +import java.util.Map; +import java.util.Optional; + +@Component +public class ConfigureInstanceParamsForPnf { + + private ExtractServiceFromUserParameters extractServiceFromUserParameters; + + @Autowired + public ConfigureInstanceParamsForPnf(ExtractServiceFromUserParameters extractServiceFromUserParameters) { + this.extractServiceFromUserParameters = extractServiceFromUserParameters; + } + + /** + * Read instance parameters for PNF and put into JsonObject. + * + * @param jsonObject - JsonObject which will hold the payload to send to CDS. + * @param userParamsFromRequest - User parameters. + * @param modelCustomizationUuid - Unique ID for Pnf. + * @throws PayloadGenerationException if it doesn't able to populate instance parameters from SO payload. + */ + public void populateInstanceParams(JsonObject jsonObject, List> userParamsFromRequest, + String modelCustomizationUuid) throws PayloadGenerationException { + try { + Service service = extractServiceFromUserParameters.getServiceFromRequestUserParams(userParamsFromRequest); + List> instanceParamsList = getInstanceParamForPnf(service, modelCustomizationUuid); + + instanceParamsList.stream().flatMap(instanceParamsMap -> instanceParamsMap.entrySet().stream()) + .forEachOrdered(entry -> jsonObject.addProperty(entry.getKey(), entry.getValue())); + } catch (Exception exception) { + throw new PayloadGenerationException("Couldn't able to resolve instance parameters", exception); + } + } + + private List> getInstanceParamForPnf(Service service, String genericPnfModelCustomizationUuid) + throws PayloadGenerationException { + Optional foundedPnfs = service.getResources().getPnfs().stream() + .filter(pnfs -> pnfs.getModelInfo().getModelCustomizationId().equals(genericPnfModelCustomizationUuid)) + .findFirst(); + if (foundedPnfs.isPresent()) { + return foundedPnfs.get().getInstanceParams(); + } else { + throw new PayloadGenerationException(String.format( + "Can not find pnf for genericPnfModelCustomizationUuid: %s", genericPnfModelCustomizationUuid)); + } + } +} -- cgit 1.2.3-korg