diff options
author | Benjamin, Max (mb388a) <mb388a@us.att.com> | 2018-07-30 15:56:09 -0400 |
---|---|---|
committer | Benjamin, Max (mb388a) <mb388a@us.att.com> | 2018-07-31 11:09:25 -0400 |
commit | 5a6a6de6f1a26a1897e4917a0df613e25a24eb70 (patch) | |
tree | 59a968f27b4b603aacc9d5e7b51fb598aeec5321 /adapters/mso-workflow-message-adapter/src/main | |
parent | b6dc38501f3b746426b42d9de4cc883d894149e8 (diff) |
Containerization feature of SO
Change-Id: I95381232eeefcd247a66a5cec370a8ce1c288e18
Issue-ID: SO-670
Signed-off-by: Benjamin, Max (mb388a) <mb388a@us.att.com>
Diffstat (limited to 'adapters/mso-workflow-message-adapter/src/main')
5 files changed, 0 insertions, 486 deletions
diff --git a/adapters/mso-workflow-message-adapter/src/main/java/org/openecomp/mso/adapters/workflowmessage/BPRestCallback.java b/adapters/mso-workflow-message-adapter/src/main/java/org/openecomp/mso/adapters/workflowmessage/BPRestCallback.java deleted file mode 100644 index 20880c24a6..0000000000 --- a/adapters/mso-workflow-message-adapter/src/main/java/org/openecomp/mso/adapters/workflowmessage/BPRestCallback.java +++ /dev/null @@ -1,178 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP - SO - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * Copyright (C) 2017 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.openecomp.mso.adapters.workflowmessage; - -import javax.xml.bind.DatatypeConverter; - -import org.apache.http.HttpResponse; -import org.apache.http.client.HttpClient; -import org.apache.http.client.config.RequestConfig; -import org.apache.http.client.methods.HttpPost; -import org.apache.http.entity.ContentType; -import org.apache.http.entity.StringEntity; -import org.apache.http.impl.client.HttpClientBuilder; -import org.apache.http.util.EntityUtils; - -import org.openecomp.mso.logger.MessageEnum; -import org.openecomp.mso.logger.MsoAlarmLogger; -import org.openecomp.mso.logger.MsoLogger; - -/** - * Sends asynchronous messages to the BPMN WorkflowMessage service. - */ -public class BPRestCallback { - private static final MsoLogger LOGGER = MsoLogger.getMsoLogger(MsoLogger.Catalog.RA); - private static final MsoAlarmLogger ALARMLOGGER = new MsoAlarmLogger(); - - /** - * Sends a message to the BPMN workflow message service. The URL path is - * constructed using the specified message type and correlator. - * @param workflowMessageUrl the base BPMN WorkflowMessage URL - * @param messageType the message type - * @param correlator the message correlator - * @param contentType the value for the HTTP Content-Type header (possibly null) - * @param message the content (possibly null) - * @return true if the message was consumed successfully by the endpoint - */ - public boolean send(String workflowMessageUrl, String messageType, - String correlator, ContentType contentType, String message) { - LOGGER.debug(getClass().getSimpleName() + ".send(" - + "workflowMessageUrl=" + workflowMessageUrl - + " messageType=" + messageType - + " correlator=" + correlator - + " contentType=" + contentType - + " message=" + message - + ")"); - - while (workflowMessageUrl.endsWith("/")) { - workflowMessageUrl = workflowMessageUrl.substring(0, workflowMessageUrl.length()-1); - } - - String endpoint = workflowMessageUrl + "/" + WMAdapterUtils.encodeURLPathSegment(messageType) - + "/" + WMAdapterUtils.encodeURLPathSegment(correlator); - - return send(endpoint, contentType, message); - } - - /** - * Sends a message to the BPMN workflow message service. The specified URL - * must have the message type and correlator already embedded in it. - * @param url the endpoint URL - * @param message the content (possibly null) - * @param contentType the value for the HTTP Content-Type header (possibly null) - * @return true if the message was consumed successfully by the endpoint - */ - public boolean send(String url, ContentType contentType, String message) { - LOGGER.debug(getClass().getSimpleName() + ".send(" - + "url=" + url - + " contentType=" + contentType - + " message=" + message - + ")"); - - LOGGER.info(MessageEnum.RA_CALLBACK_BPEL, message == null ? "[no content]" : message, "Camunda", ""); - - HttpPost method = null; - HttpResponse httpResponse = null; - - try { - // TODO: configurable timeout? - int timeout = 60 * 1000; - - RequestConfig requestConfig = RequestConfig.custom() - .setSocketTimeout(timeout) - .setConnectTimeout(timeout) - .setConnectionRequestTimeout(timeout) - .build(); - - HttpClient client = HttpClientBuilder.create().build(); - method = new HttpPost(url); - method.setConfig(requestConfig); - - if (message != null) { - method.setEntity(new StringEntity(message, contentType)); - } - - boolean error = false; - - try { - // AAF Integration, disabled for now due to the constrains from other party - // String userCredentials = CredentialConstants.getDecryptedCredential(WMAdapterConstants.DEFAULT_BPEL_AUTH); - // Once AAF enabled, the credential shall be get by triggering the CredentialConstants.getDecryptedCredential -- remove line - String userCredentials = WMAdapterProperties.getEncryptedProperty(WMAdapterConstants.BPEL_AUTH_PROP, - WMAdapterConstants.DEFAULT_BPEL_AUTH, WMAdapterConstants.ENCRYPTION_KEY); - String authorization = "Basic " + DatatypeConverter.printBase64Binary(userCredentials.getBytes()); - method.setHeader("Authorization", authorization); - } catch (Exception e) { - LOGGER.error(MessageEnum.RA_SET_CALLBACK_AUTH_EXC, "Camunda", "", MsoLogger.ErrorCode.BusinessProcesssError, - "Unable to set authorization in callback request", e); - ALARMLOGGER.sendAlarm("MsoInternalError", MsoAlarmLogger.CRITICAL, - "Unable to set authorization in callback request: " + e.getMessage()); - error = true; - } - - if (!error) { - httpResponse = client.execute(method); - - @SuppressWarnings("unused") - String responseContent; - - if (httpResponse.getEntity() != null) { - responseContent = EntityUtils.toString(httpResponse.getEntity(), "UTF-8"); - } - - if (httpResponse.getStatusLine().getStatusCode() >= 300) { - String msg = "Received error response to callback request: " + httpResponse.getStatusLine(); - LOGGER.error(MessageEnum.RA_CALLBACK_BPEL_EXC, "Camunda", "", MsoLogger.ErrorCode.BusinessProcesssError, msg); - ALARMLOGGER.sendAlarm("MsoInternalError", MsoAlarmLogger.CRITICAL, msg); - } - - } - - return true; - } catch (Exception e) { - LOGGER.error(MessageEnum.RA_CALLBACK_BPEL_EXC, "Camunda", "", MsoLogger.ErrorCode.BusinessProcesssError, - "Error sending callback request", e); - ALARMLOGGER.sendAlarm("MsoInternalError", MsoAlarmLogger.CRITICAL, - "Error sending callback request: " + e.getMessage()); - return false; - } finally { - if (httpResponse != null) { - try { - EntityUtils.consume(httpResponse.getEntity()); - httpResponse = null; - } catch (Exception e) { - LOGGER.debug("Exception :",e); - } - } - - if (method != null) { - try { - method.reset(); - method = null; - } catch (Exception e) { - LOGGER.debug("Exception :",e); - } - } - - LOGGER.info(MessageEnum.RA_CALLBACK_BPEL_COMPLETE, "Camunda", ""); - } - } -} diff --git a/adapters/mso-workflow-message-adapter/src/main/java/org/openecomp/mso/adapters/workflowmessage/WMAdapterConstants.java b/adapters/mso-workflow-message-adapter/src/main/java/org/openecomp/mso/adapters/workflowmessage/WMAdapterConstants.java deleted file mode 100644 index 8b0877ff8b..0000000000 --- a/adapters/mso-workflow-message-adapter/src/main/java/org/openecomp/mso/adapters/workflowmessage/WMAdapterConstants.java +++ /dev/null @@ -1,30 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP - SO - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. 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.openecomp.mso.adapters.workflowmessage; - -public interface WMAdapterConstants { - public static final String MSO_PROPERTIES_ID = "MSO_PROP_WORKFLOW_MESSAGE_ADAPTER"; - public static final String BPEL_URL_PROP = "org.openecomp.mso.adapters.workflow.message.bpelurl"; - - // Once AAF enabled, the credential shall be get by triggering the CredentialConstants.getEncryptedPropValue - public static final String BPEL_AUTH_PROP = "org.openecomp.mso.adapters.workflow.message.bpelauth"; - public static final String DEFAULT_BPEL_AUTH = "05FDA034C27D1CA51AAB8FAE512EDE45241E16FC8C137D292AA3A964431C82DB"; - public static final String ENCRYPTION_KEY = "aa3871669d893c7fb8abbcda31b88b4f"; -}
\ No newline at end of file diff --git a/adapters/mso-workflow-message-adapter/src/main/java/org/openecomp/mso/adapters/workflowmessage/WMAdapterProperties.java b/adapters/mso-workflow-message-adapter/src/main/java/org/openecomp/mso/adapters/workflowmessage/WMAdapterProperties.java deleted file mode 100644 index 9d57d2c001..0000000000 --- a/adapters/mso-workflow-message-adapter/src/main/java/org/openecomp/mso/adapters/workflowmessage/WMAdapterProperties.java +++ /dev/null @@ -1,89 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP - SO - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. 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.openecomp.mso.adapters.workflowmessage; - -import org.openecomp.mso.logger.MessageEnum; -import org.openecomp.mso.logger.MsoLogger; -import org.openecomp.mso.properties.MsoJavaProperties; -import org.openecomp.mso.properties.MsoPropertiesException; -import org.openecomp.mso.properties.MsoPropertiesFactory; - -/** - * Static methods to access Workflow Message Adapter properties. - */ -public final class WMAdapterProperties { - private static final MsoPropertiesFactory MSO_PROPERTIES_FACTORY = new MsoPropertiesFactory(); - private static final MsoLogger LOGGER = MsoLogger.getMsoLogger(MsoLogger.Catalog.RA); - - /** - * Gets the value of a Workflow Message Adapter property. - * @param key the property key - * @param defaultValue the default value to use if the property does not - * exist or if an error occurs - */ - public static String getProperty(String key, String defaultValue) { - MsoJavaProperties properties; - - try { - properties = MSO_PROPERTIES_FACTORY.getMsoJavaProperties(WMAdapterConstants.MSO_PROPERTIES_ID); - } catch (MsoPropertiesException e) { - LOGGER.error (MessageEnum.NO_PROPERTIES, - "Unknown. MSO Properties ID not found in cache: " + WMAdapterConstants.MSO_PROPERTIES_ID, - "WorkflowMessageAdatper", "", MsoLogger.ErrorCode.DataError, - "Exception - MSO Properties ID not found in cache", e); - return defaultValue; - } - - String value = properties.getProperty(key, defaultValue); - LOGGER.debug("Config read for " + WMAdapterConstants.MSO_PROPERTIES_ID - + " - key:" + key + " value:" + value); - return value; - } - - /** - * Gets the value of an Workflow Message Adapter property. - * @param key the property key - * @param defaultValue the default value to use if the property does not - * exist or if an error occurs - */ - public static String getEncryptedProperty(String key, String defaultValue, String encryptionKey) { - MsoJavaProperties properties; - - try { - properties = MSO_PROPERTIES_FACTORY.getMsoJavaProperties(WMAdapterConstants.MSO_PROPERTIES_ID); - } catch (MsoPropertiesException e) { - LOGGER.error (MessageEnum.NO_PROPERTIES, - "Unknown. MSO Properties ID not found in cache: " + WMAdapterConstants.MSO_PROPERTIES_ID, - "WorkflowMessageAdatper", "", MsoLogger.ErrorCode.DataError, - "Exception - MSO Properties ID not found in cache", e); - return defaultValue; - } - - String value = properties.getEncryptedProperty(key, defaultValue, encryptionKey); - LOGGER.debug("Config read for " + WMAdapterConstants.MSO_PROPERTIES_ID + " - key:" + key); - return value; - } - - /** - * Instantiation is not allowed. - */ - private WMAdapterProperties() { - } -}
\ No newline at end of file diff --git a/adapters/mso-workflow-message-adapter/src/main/java/org/openecomp/mso/adapters/workflowmessage/WMAdapterRest.java b/adapters/mso-workflow-message-adapter/src/main/java/org/openecomp/mso/adapters/workflowmessage/WMAdapterRest.java deleted file mode 100644 index 4be6b93d5c..0000000000 --- a/adapters/mso-workflow-message-adapter/src/main/java/org/openecomp/mso/adapters/workflowmessage/WMAdapterRest.java +++ /dev/null @@ -1,140 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP - SO - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * Copyright (C) 2017 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.openecomp.mso.adapters.workflowmessage; - -import javax.servlet.http.HttpServletResponse; -import javax.ws.rs.Consumes; -import javax.ws.rs.GET; -import javax.ws.rs.HEAD; -import javax.ws.rs.POST; -import javax.ws.rs.Path; -import javax.ws.rs.HeaderParam; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.QueryParam; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; - -import org.apache.http.entity.ContentType; - -import org.openecomp.mso.HealthCheckUtils; -import org.openecomp.mso.logger.MessageEnum; -import org.openecomp.mso.logger.MsoAlarmLogger; -import org.openecomp.mso.logger.MsoLogger; -import org.openecomp.mso.utils.UUIDChecker; - -/** - * Workflow Message Adapter interface added in 1707. Supports delivery of - * callbacks from external systems to waiting BPMN workflows. - */ -@Path("/") -public class WMAdapterRest { - private static final MsoLogger LOGGER = MsoLogger.getMsoLogger(MsoLogger.Catalog.RA); - private static final MsoAlarmLogger ALARMLOGGER = new MsoAlarmLogger(); - - @HEAD - @GET - @Path("/healthcheck") - @Produces(MediaType.TEXT_HTML) - public Response healthcheck(@QueryParam("requestId") String requestId) { - long startTime = System.currentTimeMillis(); - MsoLogger.setServiceName("Healthcheck"); - UUIDChecker.verifyOldUUID(requestId, LOGGER); - HealthCheckUtils healthCheck = new HealthCheckUtils(); - - if (!healthCheck.siteStatusCheck(LOGGER)) { - return HealthCheckUtils.HEALTH_CHECK_NOK_RESPONSE; - } - - if (!healthCheck.configFileCheck(LOGGER, startTime, WMAdapterConstants.MSO_PROPERTIES_ID)) { - return HealthCheckUtils.NOT_STARTED_RESPONSE; - } - - LOGGER.debug("healthcheck - Successful"); - return HealthCheckUtils.HEALTH_CHECK_RESPONSE; - } - - /** - * Receives a message from a remote system. - * @param content the message content - */ - @POST - @Path("/message/{messageType}/{correlator}") - @Consumes("*/*") - @Produces({MediaType.TEXT_PLAIN}) - public Response receiveWorkflowMessage( - @HeaderParam("Content-Type") String contentTypeHeader, - @PathParam("messageType") String messageType, - @PathParam("correlator") String correlator, - String content) { - - String path= "workflow/" + messageType + "/" + correlator; - LOGGER.info(MessageEnum.RA_RECEIVE_WORKFLOW_MESSAGE, content, "WorkflowMessageAdapter", path); - - long startTime = System.currentTimeMillis(); - - ContentType contentType = null; - - if (contentTypeHeader != null) { - try { - contentType = ContentType.parse(contentTypeHeader); - } catch (Exception e) { - // If we don't get a valid one, we handle it below. - LOGGER.debug("Exception :",e); - } - } - - if (contentType == null && content != null) { - String error = "Missing or Invalid Content-Type"; - LOGGER.error(MessageEnum.RA_PARSING_REQUEST_ERROR, error, "WorkflowMessageAdapter", path, - MsoLogger.ErrorCode.DataError, "Bad Request"); - ALARMLOGGER.sendAlarm("MsoInternalError", MsoAlarmLogger.CRITICAL, error); - return Response.status(HttpServletResponse.SC_UNSUPPORTED_MEDIA_TYPE).entity(error).build(); - } - - String bpUrl = WMAdapterProperties.getProperty(WMAdapterConstants.BPEL_URL_PROP, null); - - if (bpUrl == null) { - String error = "Missing configuration for: " + WMAdapterConstants.BPEL_URL_PROP; - LOGGER.error(MessageEnum.RA_CONFIG_EXC, error, "WorkflowMessageAdapter", path, - MsoLogger.ErrorCode.DataError, "Configuration Error"); - ALARMLOGGER.sendAlarm("MsoInternalError", MsoAlarmLogger.CRITICAL, error); - return Response.status(HttpServletResponse.SC_INTERNAL_SERVER_ERROR).entity(error).build(); - } - - long bpStartTime = System.currentTimeMillis(); - BPRestCallback callback = new BPRestCallback(); - boolean callbackSuccess = callback.send(bpUrl, messageType, correlator, contentType, content); - - if (callbackSuccess) { - LOGGER.recordMetricEvent(bpStartTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc, - "Sent notification", "BPMN", bpUrl, null); - LOGGER.recordAuditEvent(startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc, "Successful"); - } else { - LOGGER.recordMetricEvent(bpStartTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.CommunicationError, - "Failed to send notification", "BPMN", bpUrl, null); - LOGGER.recordAuditEvent(startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.CommunicationError, - "Failed to send notification"); - } - - return Response.status(204).build(); - } -} diff --git a/adapters/mso-workflow-message-adapter/src/main/java/org/openecomp/mso/adapters/workflowmessage/WMAdapterUtils.java b/adapters/mso-workflow-message-adapter/src/main/java/org/openecomp/mso/adapters/workflowmessage/WMAdapterUtils.java deleted file mode 100644 index f152931ae5..0000000000 --- a/adapters/mso-workflow-message-adapter/src/main/java/org/openecomp/mso/adapters/workflowmessage/WMAdapterUtils.java +++ /dev/null @@ -1,49 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP - SO - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * Copyright (C) 2017 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.openecomp.mso.adapters.workflowmessage; - -import java.io.UnsupportedEncodingException; - -import org.springframework.web.util.UriUtils; - -/** - * Utility methods used by WMAdapterRest. - */ -public final class WMAdapterUtils { - /** - * Encodes a URL path segment according to RFC 3986 Section 2. - * @param pathSegment the path segment to encode - * @return the encoded path segment - */ - public static String encodeURLPathSegment(String pathSegment) { - try { - return UriUtils.encodePathSegment(pathSegment, "UTF-8"); - } catch (UnsupportedEncodingException e) { - throw new RuntimeException("UTF-8 encoding is not supported",e); - } - } - - /** - * Instantiation is not allowed. - */ - private WMAdapterUtils() { - } -}
\ No newline at end of file |