From 0753a8356806f40f77a7f1444b655efba1a654c9 Mon Sep 17 00:00:00 2001 From: Elaine_Han Date: Fri, 3 Aug 2018 20:04:55 +0800 Subject: Add SPPaterner resource procss Change-Id: Idaa55084f5ecb0dd3636c232cebc14fa70000001 Issue-ID: SO-683 Signed-off-by: Yulian Han --- .../org/onap/so/bpmn/common/scripts/AaiUtil.groovy | 6 + .../so/bpmn/common/scripts/ExternalAPIUtil.groovy | 234 +++++++++++++++++++++ .../onap/so/bpmn/common/recipe/ResourceInput.java | 20 ++ 3 files changed, 260 insertions(+) create mode 100644 bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/ExternalAPIUtil.groovy (limited to 'bpmn/MSOCommonBPMN/src') diff --git a/bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/AaiUtil.groovy b/bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/AaiUtil.groovy index 0bd54ffe64..81e2b40bb2 100644 --- a/bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/AaiUtil.groovy +++ b/bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/AaiUtil.groovy @@ -94,6 +94,12 @@ class AaiUtil { msoLogger.debug('AaiUtil.getBusinessCustomerUri() - AAI URI: ' + uri) return uri } + + public String getBusinessSPPartnerUri(DelegateExecution execution) { + def uri = getUri(execution, 'sp-partner') + msoLogger.debug('AaiUtil.getBusinessSPPartnerUri() - AAI URI: ' + uri) + return uri + } //public String getBusinessCustomerUriv7(DelegateExecution execution) { // // //def uri = getUri(execution, BUSINESS_CUSTOMERV7) diff --git a/bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/ExternalAPIUtil.groovy b/bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/ExternalAPIUtil.groovy new file mode 100644 index 0000000000..3646f26fb6 --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/ExternalAPIUtil.groovy @@ -0,0 +1,234 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2018 Huawei Technologies Co., Ltd. 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. + * ============LICENSE_END========================================================= + */ + +package org.onap.so.bpmn.common.scripts +import org.camunda.bpm.engine.delegate.BpmnError +import org.camunda.bpm.engine.delegate.DelegateExecution +import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor; +import org.onap.so.rest.APIResponse +import org.onap.so.rest.RESTClient +import org.onap.so.rest.RESTConfig +import org.apache.commons.lang3.StringEscapeUtils +import java.util.regex.Matcher +import java.util.regex.Pattern + +class ExternalAPIUtil { + + String Prefix="EXTAPI_" + + public MsoUtils utils = new MsoUtils() + + ExceptionUtil exceptionUtil = new ExceptionUtil() + + private AbstractServiceTaskProcessor taskProcessor + + public static final String PostServiceOrderRequestsTemplate = + "{\n" + + "\t\"externalId\": ,\n" + + "\t\"category\": ,\n" + + "\t\"description\": ,\n" + + "\t\"requestedStartDate\": ,\n" + + "\t\"requestedCompletionDate\": ,\n" + + "\t\"priority\": ,\n" + + "\t\"@type\": null,\n" + + "\t\"@baseType\": null,\n" + + "\t\"@schemaLocation\": null,\n" + + "\t\"relatedParty\": [{\n" + + "\t\t\"id\": , \n" + + "\t\t\"href\": null, \n" + + "\t\t\"role\": , \n" + + "\t\t\"name\": , \n" + + "\t\t\"@referredType\": \n" + + "}], \n" + + "\t\"orderItem\": [{\n" + + "\t\t\"id\": ,\n" + + "\t\t\"action\": ,\n" + + "\t\t\"service\": {\n" + + "\t\t\t\"serviceState\": ,\n" + + "\t\t\t\"name\": ,\n" + + "\t\t\t\"serviceSpecification\": { \n" + + "\t\t\t\t\"id\": \n" + + "\t\t\t},\n" + + "\t\t\t\"serviceCharacteristic\": [ \n" + + "<_requestInputs_> \n" + + "\t\t\t] \n" + + "\t\t}\n" + + "\t}]\n" + + "}" + + public static final String RequestInputsTemplate = + "{ \n" + + "\t\"name\": , \n" + + "\t\"value\": { \n" + + "\t\t\"serviceCharacteristicValue\": \n" + + "\t} \n" + + "}" + + public ExternalAPIUtil(AbstractServiceTaskProcessor taskProcessor) { + this.taskProcessor = taskProcessor + } + +// public String getUri(DelegateExecution execution, resourceName) { +// +// def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled') +// def uri = execution.getVariable("ExternalAPIURi") +// if(uri) { +// taskProcessor.logDebug("ExternalAPIUtil.getUri: " + uri, isDebugLogEnabled) +// return uri +// } +// +// exceptionUtil.buildAndThrowWorkflowException(execution, 9999, 'ExternalAPI URI not find') +// } + + public String setTemplate(String template, Map valueMap) { + taskProcessor.logDebug("ExternalAPIUtil setTemplate", true); + StringBuffer result = new StringBuffer(); + + String pattern = "<.*>"; + Pattern r = Pattern.compile(pattern); + Matcher m = r.matcher(template); + + taskProcessor.logDebug("ExternalAPIUtil template:" + template, true); + while (m.find()) { + String key = template.substring(m.start() + 1, m.end() - 1); + taskProcessor.logDebug("ExternalAPIUtil key:" + key + " contains key? " + valueMap.containsKey(key), true); + m.appendReplacement(result, valueMap.getOrDefault(key, "\"TBD\"")); + } + m.appendTail(result); + taskProcessor.logDebug("ExternalAPIUtil return:" + result.toString(), true); + return result.toString(); + } + + /** + * This reusable method can be used for making ExternalAPI Get Calls. The url should + * be passed as a parameter along with the execution. The method will + * return an APIResponse. + * + * @param execution + * @param url + * + * @return APIResponse + * + */ + public APIResponse executeExternalAPIGetCall(DelegateExecution execution, String url){ + def isDebugEnabled = execution.getVariable("isDebugLogEnabled") + taskProcessor.logDebug(" ======== STARTED Execute ExternalAPI Get Process ======== ", isDebugEnabled) + APIResponse apiResponse = null + try{ + String uuid = utils.getRequestID() + taskProcessor.logDebug( "Generated uuid is: " + uuid, isDebugEnabled) + taskProcessor.logDebug( "URL to be used is: " + url, isDebugEnabled) + + String basicAuthCred = utils.getBasicAuth(execution.getVariable("URN_externalapi_auth"),execution.getVariable("URN_mso_msoKey")) + + RESTConfig config = new RESTConfig(url); + RESTClient client = new RESTClient(config).addHeader("X-FromAppId", "MSO").addHeader("X-TransactionId", uuid).addHeader("Accept","application/json"); + + if (basicAuthCred != null && !"".equals(basicAuthCred)) { + client.addAuthorizationHeader(basicAuthCred) + } + apiResponse = client.get() + + taskProcessor.logDebug( "======== COMPLETED Execute ExternalAPI Get Process ======== ", isDebugEnabled) + }catch(Exception e){ + taskProcessor.logDebug("Exception occured while executing ExternalAPI Get Call. Exception is: \n" + e, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 9999, e.getMessage()) + } + return apiResponse + } + + /** + * This reusable method can be used for making ExternalAPI Post Calls. The url + * and payload should be passed as a parameters along with the execution. + * The method will return an APIResponse. + * + * @param execution + * @param url + * @param payload + * + * @return APIResponse + * + */ + public APIResponse executeExternalAPIPostCall(DelegateExecution execution, String url, String payload){ + def isDebugEnabled = execution.getVariable("isDebugLogEnabled") + taskProcessor.logDebug( " ======== Started Execute ExternalAPI Post Process ======== ", isDebugEnabled) + APIResponse apiResponse = null + try{ + String uuid = utils.getRequestID() + taskProcessor.logDebug( "Generated uuid is: " + uuid, isDebugEnabled) + taskProcessor.logDebug( "URL to be used is: " + url, isDebugEnabled) + + String basicAuthCred = utils.getBasicAuth(execution.getVariable("URN_externalapi_auth"),execution.getVariable("URN_mso_msoKey")) + RESTConfig config = new RESTConfig(url); + RESTClient client = new RESTClient(config).addHeader("X-FromAppId", "MSO").addHeader("X-TransactionId", uuid).addHeader("Content-Type", "application/json").addHeader("Accept","application/json"); + + if (basicAuthCred != null && !"".equals(basicAuthCred)) { + client.addAuthorizationHeader(basicAuthCred) + } + apiResponse = client.httpPost(payload) + + taskProcessor.logDebug( "======== Completed Execute ExternalAPI Post Process ======== ", isDebugEnabled) + }catch(Exception e){ + taskProcessor.utils.log("ERROR", "Exception occured while executing ExternalAPI Post Call. Exception is: \n" + e, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 9999, e.getMessage()) + } + return apiResponse + } + + /** + * This reusable method can be used for making ExternalAPI Post Calls. The url + * and payload should be passed as a parameters along with the execution. + * The method will return an APIResponse. + * + * @param execution + * @param url + * @param payload + * @param authenticationHeader - addAuthenticationHeader value + * @param headerName - name of header you want to add, i.e. addHeader(headerName, headerValue) + * @param headerValue - the header's value, i.e. addHeader(headerName, headerValue) + * + * @return APIResponse + * + */ + public APIResponse executeExternalAPIPostCall(DelegateExecution execution, String url, String payload, String authenticationHeaderValue, String headerName, String headerValue){ + def isDebugEnabled = execution.getVariable("isDebugLogEnabled") + taskProcessor.logDebug( " ======== Started Execute ExternalAPI Post Process ======== ", isDebugEnabled) + APIResponse apiResponse = null + try{ + taskProcessor.logDebug( "URL to be used is: " + url, isDebugEnabled) + + String basicAuthCred = utils.getBasicAuth(execution.getVariable("URN_externalapi_auth"),execution.getVariable("URN_mso_msoKey")) + + RESTConfig config = new RESTConfig(url); + RESTClient client = new RESTClient(config).addAuthorizationHeader(authenticationHeaderValue).addHeader(headerName, headerValue) + if (basicAuthCred != null && !"".equals(basicAuthCred)) { + client.addAuthorizationHeader(basicAuthCred) + } + apiResponse = client.httpPost(payload) + + taskProcessor.logDebug( "======== Completed Execute ExternalAPI Post Process ======== ", isDebugEnabled) + }catch(Exception e){ + taskProcessor.utils.log("ERROR", "Exception occured while executing ExternalAPI Post Call. Exception is: \n" + e, isDebugEnabled) + exceptionUtil.buildAndThrowWorkflowException(execution, 9999, e.getMessage()) + } + return apiResponse + } + +} \ No newline at end of file diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/common/recipe/ResourceInput.java b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/common/recipe/ResourceInput.java index 4c345babc8..f574288a67 100644 --- a/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/common/recipe/ResourceInput.java +++ b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/common/recipe/ResourceInput.java @@ -75,8 +75,28 @@ public class ResourceInput { @JsonProperty("resourceParameters") private String resourceParameters; + @JsonProperty("requestsInputs") + private String requestsInputs; + @JsonProperty("operationType") private String operationType; + + /** + * @return Returns the requestsInputs. + */ + @JsonProperty("requestsInputs") + public String getRequestsInputs() { + return requestsInputs; + } + + + /** + * @param requestsInputs The requestsInputs to set. + */ + @JsonProperty("requestsInputs") + public void setRequestsInputs(String requestsInputs) { + this.requestsInputs = requestsInputs; + } /** -- cgit 1.2.3-korg