diff options
Diffstat (limited to 'appc-event-listener/appc-event-listener-bundle/src/main/java/org/openecomp/appc/listener/CL')
8 files changed, 0 insertions, 1103 deletions
diff --git a/appc-event-listener/appc-event-listener-bundle/src/main/java/org/openecomp/appc/listener/CL/impl/ListenerImpl.java b/appc-event-listener/appc-event-listener-bundle/src/main/java/org/openecomp/appc/listener/CL/impl/ListenerImpl.java deleted file mode 100644 index 3f0f8a112..000000000 --- a/appc-event-listener/appc-event-listener-bundle/src/main/java/org/openecomp/appc/listener/CL/impl/ListenerImpl.java +++ /dev/null @@ -1,128 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : APP-C - * ================================================================================ - * 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.appc.listener.CL.impl; - -import java.text.DateFormat; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.List; -import java.util.TimeZone; -import java.util.concurrent.RejectedExecutionException; - -import org.openecomp.appc.listener.AbstractListener; -import org.openecomp.appc.listener.ListenerProperties; -import org.openecomp.appc.listener.CL.model.IncomingMessage; -import org.openecomp.appc.listener.CL.model.Status; - -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; -import com.att.eelf.i18n.EELFResourceManager; - -public class ListenerImpl extends AbstractListener { - - private final EELFLogger LOG = EELFManager.getInstance().getLogger(ListenerImpl.class); - - private long startTime = 0; - - public ListenerImpl(ListenerProperties props) { - super(props); - String url = props.getProperty("provider.url"); - LOG.info("DMaaP Provider Endpoint: " + url); - ProviderOperations.setUrl(url); - - // Set Basic Auth - String user = props.getProperty("provider.user"); - String pass = props.getProperty("provider.pass"); - ProviderOperations.setAuthentication(user, pass); - } - - @Override - public void run() { - // Some vars for benchmarking - startTime = System.currentTimeMillis(); - - LOG.info("Running DMaaP Listener"); - - while (run.get()) { - // Only update if the queue is low. otherwise we read in more - // messages than we need - try { - if (executor.getQueue().size() <= QUEUED_MIN) { - LOG.debug("DMaaP queue running low. Querying for more jobs"); - List<IncomingMessage> messages = dmaap.getIncomingEvents(IncomingMessage.class, QUEUED_MAX); - LOG.debug(String.format("Read %d messages from dmaap", messages.size())); - for (IncomingMessage incoming : messages) { - // Acknowledge that we read the event - LOG.info("Acknowledging Message: " + incoming.getId()); - dmaap.postStatus(incoming.toOutgoing(Status.PENDING, null).toString()); - } - for (IncomingMessage incoming : messages) { - // Add to pool if still running - if (run.get()) { - LOG.info(String.format("Adding DMaaP message to pool queue [%s]", incoming.getId())); - if (incoming.isValid()) { - try { - executor.execute(new WorkerImpl(incoming, dmaap)); - } catch (RejectedExecutionException rejectEx) { - LOG.error("Task Rejected: ", rejectEx); - } - } else { - // Badly formed message - LOG.error("Message was not valid. Rejecting"); - } - } else { - LOG.info("Run stopped. Orphaning Message: " + incoming.getId()); - } - } - } - } catch (Exception e) { - LOG.error("Exception " + e.getClass().getSimpleName() + " caught in DMaaP listener"); - LOG.error(EELFResourceManager.format(e)); - LOG.error("DMaaP Listener logging and ignoring the exception, continue..."); - } - } - - LOG.info("Stopping DMaaP Listener thread"); - - // We've told the listener to stop - // TODO - Should we: - // 1) Put a message back on the queue indicating that APP-C never got to - // the message - // or - // 2) Let downstream figure it out after timeout between PENDING and - // ACTIVE messages - } - - @Override - public String getBenchmark() { - long time = System.currentTimeMillis(); - DateFormat df = new SimpleDateFormat("HH:mm:ss"); - df.setTimeZone(TimeZone.getTimeZone("UTC")); - String runningTime = df.format(new Date(time - startTime)); - - String out = String.format("Running for %s and completed %d jobs using %d threads.", runningTime, - executor.getCompletedTaskCount(), executor.getPoolSize()); - LOG.info("***BENCHMARK*** " + out); - return out; - } - -} diff --git a/appc-event-listener/appc-event-listener-bundle/src/main/java/org/openecomp/appc/listener/CL/impl/ProviderOperations.java b/appc-event-listener/appc-event-listener-bundle/src/main/java/org/openecomp/appc/listener/CL/impl/ProviderOperations.java deleted file mode 100644 index 7a53bcdd9..000000000 --- a/appc-event-listener/appc-event-listener-bundle/src/main/java/org/openecomp/appc/listener/CL/impl/ProviderOperations.java +++ /dev/null @@ -1,296 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : APP-C - * ================================================================================ - * 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.appc.listener.CL.impl; - -import java.io.IOException; -import java.io.UnsupportedEncodingException; -import java.net.MalformedURLException; -import java.net.Socket; -import java.net.URL; -import java.net.UnknownHostException; -import java.security.KeyManagementException; -import java.security.KeyStore; -import java.security.KeyStoreException; -import java.security.NoSuchAlgorithmException; -import java.security.UnrecoverableKeyException; -import java.security.cert.CertificateException; -import java.security.cert.X509Certificate; - -import javax.net.ssl.SSLContext; -import javax.net.ssl.TrustManager; -import javax.net.ssl.X509TrustManager; - -import org.apache.commons.codec.binary.Base64; -import org.apache.commons.io.IOUtils; -import org.apache.http.HttpResponse; -import org.apache.http.HttpVersion; -import org.apache.http.client.HttpClient; -import org.apache.http.client.methods.HttpPost; -import org.apache.http.conn.ClientConnectionManager; -import org.apache.http.conn.scheme.PlainSocketFactory; -import org.apache.http.conn.scheme.Scheme; -import org.apache.http.conn.scheme.SchemeRegistry; -import org.apache.http.conn.ssl.SSLSocketFactory; -import org.apache.http.entity.StringEntity; -import org.apache.http.impl.client.DefaultHttpClient; -import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager; -import org.apache.http.params.BasicHttpParams; -import org.apache.http.params.HttpParams; -import org.apache.http.params.HttpProtocolParams; -import org.apache.http.protocol.HTTP; -import org.json.JSONObject; -import org.openecomp.appc.exceptions.APPCException; -import org.openecomp.appc.listener.CL.model.IncomingMessage; -import org.openecomp.appc.listener.util.Mapper; - -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; - -public class ProviderOperations { - - private static final EELFLogger LOG = EELFManager.getInstance().getLogger(ProviderOperations.class); - - private static URL url; - - private static String basic_auth; - - //@formatter:off - @SuppressWarnings("nls") - private final static String TEMPLATE = "{\"input\": {\"common-request-header\": {\"service-request-id\": \"%s\"},\"vnf-resource\": {\"vm-id\": \"%s\"%s}}}"; - //@formatter:on - - /** - * Calls the AppcProvider to run a topology directed graph - * - * @param msg - * The incoming message to be run - * @return True if the result is success. Never returns false and throws an exception instead. - * @throws UnsupportedEncodingException - * @throws Exception - * if there was a failure processing the request. The exception message is the failure reason. - */ - @SuppressWarnings("nls") - public static boolean topologyDG(IncomingMessage msg) throws APPCException { - if (msg == null) { - throw new APPCException("Provided message was null"); - } - - HttpPost post = null; - try { - // Concatenate the "action" on the end of the URL - String path = url.getPath() + ":" + msg.getAction().getValue().toLowerCase(); - URL serviceUrl = new URL(url.getProtocol(), url.getHost(), url.getPort(), path); - - post = new HttpPost(serviceUrl.toExternalForm()); - post.setHeader("Content-Type", "application/json"); - post.setHeader("Accept", "application/json"); - - // Set Auth - if (basic_auth != null) { - post.setHeader("Authorization", "Basic " + basic_auth); - } - - String body = buildReqest(msg.getId(), msg.getUrl(), msg.getIdentityUrl()); - - - LOG.info(String.format("DMaaP ACTION PATH : %s", path)); - LOG.info(String.format("DMaaP ACTION BODY : %s", body)); - - StringEntity entity = new StringEntity(body); - entity.setContentType("application/json"); - post.setEntity(new StringEntity(body)); - } catch (UnsupportedEncodingException | MalformedURLException e) { - throw new APPCException(e); - } - - HttpClient client = getHttpClient(); - - int httpCode = 0; - String respBody = null; - try { - HttpResponse response = client.execute(post); - httpCode = response.getStatusLine().getStatusCode(); - respBody = IOUtils.toString(response.getEntity().getContent()); - } catch (IOException e) { - throw new APPCException(e); - } - - if (httpCode >= 200 && httpCode < 300 && respBody != null) { - JSONObject json; - try { - json = Mapper.toJsonObject(respBody); - } catch (Exception e) { - LOG.error("Error processing response from provider. Could not map response to json", e); - throw new APPCException("APPC has an unknown RPC error"); - } - boolean success; - String reason; - try { - JSONObject header = json.getJSONObject("output").getJSONObject("common-response-header"); - success = header.getBoolean("success"); - reason = header.getString("reason"); - } catch (Exception e) { - LOG.error("Unknown error prcoessing failed response from provider. Json not in expected format", e); - throw new APPCException("APPC has an unknown RPC error"); - } - if (success) { - return true; - } - String reasonStr = reason == null ? "Unknown" : reason; - LOG.warn(String.format("Topology Operation [%s] failed. Reason: %s", msg.getId(), reasonStr)); - throw new APPCException(reasonStr); - - } - throw new APPCException(String.format("Unexpected response from endpoint: [%d] - %s ", httpCode, respBody)); - } - - /** - * Updates the static var URL and returns the value; - * - * @return The new value of URL - */ - public static String getUrl() { - return url.toExternalForm(); - } - - public static void setUrl(String newUrl) { - try { - url = new URL(newUrl); - } catch (MalformedURLException e) { - e.printStackTrace(); - } - } - - /** - * Sets the basic authentication header for the given user and password. If either entry is null then set basic auth - * to null - * - * @param user - * The user with optional domain name - * @param password - * The password for the user - * @return The new value of the basic auth string that will be used in the request headers - */ - public static String setAuthentication(String user, String password) { - if (user != null && password != null) { - String authStr = user + ":" + password; - basic_auth = new String(Base64.encodeBase64(authStr.getBytes())); - } else { - basic_auth = null; - } - return basic_auth; - } - - /** - * Builds the request body for a topology operation - * - * @param id - * The request id - * @param action - * The action in lowercase - * @param url - * The vm's url - * @return A String containing the request body - */ - private static String buildReqest(String id, String url, String ident) { - String extraVmResource = ""; - if (ident != null) { - extraVmResource = String.format(", \"identity-url\": \"%s\"", ident); - } - return String.format(TEMPLATE, id, url, extraVmResource); - } - - @SuppressWarnings("deprecation") - private static HttpClient getHttpClient() throws APPCException { - HttpClient client; - if (url.getProtocol().equals("https")) { - try { - KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType()); - trustStore.load(null, null); - MySSLSocketFactory sf = new MySSLSocketFactory(trustStore); - sf.setHostnameVerifier(MySSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); - - HttpParams params = new BasicHttpParams(); - HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1); - HttpProtocolParams.setContentCharset(params, HTTP.UTF_8); - - SchemeRegistry registry = new SchemeRegistry(); - registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80)); - registry.register(new Scheme("https", sf, 443)); - registry.register(new Scheme("https", sf, 8443)); - registry.register(new Scheme("http", sf, 8181)); - - ClientConnectionManager ccm = new ThreadSafeClientConnManager(params, registry); - client = new DefaultHttpClient(ccm, params); - } catch (Exception e) { - client = new DefaultHttpClient(); - } - } else if (url.getProtocol().equals("http")) { - client = new DefaultHttpClient(); - } else { - throw new APPCException( - "The provider.topology.url property is invalid. The url did not start with http[s]"); - } - return client; - } - - @SuppressWarnings("deprecation") - public static class MySSLSocketFactory extends SSLSocketFactory { - private SSLContext sslContext = SSLContext.getInstance("TLS"); - - public MySSLSocketFactory(KeyStore truststore) throws NoSuchAlgorithmException, KeyManagementException, - KeyStoreException, UnrecoverableKeyException { - super(truststore); - - TrustManager tm = new X509TrustManager() { - @Override - public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException { - } - - @Override - public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException { - } - - @Override - public X509Certificate[] getAcceptedIssuers() { - return null; - } - }; - - sslContext.init(null, new TrustManager[] { - tm - }, null); - } - - @Override - public Socket createSocket(Socket socket, String host, int port, boolean autoClose) - throws IOException, UnknownHostException { - return sslContext.getSocketFactory().createSocket(socket, host, port, autoClose); - } - - @Override - public Socket createSocket() throws IOException { - return sslContext.getSocketFactory().createSocket(); - } - } - -} diff --git a/appc-event-listener/appc-event-listener-bundle/src/main/java/org/openecomp/appc/listener/CL/impl/WorkerImpl.java b/appc-event-listener/appc-event-listener-bundle/src/main/java/org/openecomp/appc/listener/CL/impl/WorkerImpl.java deleted file mode 100644 index 1eb13f736..000000000 --- a/appc-event-listener/appc-event-listener-bundle/src/main/java/org/openecomp/appc/listener/CL/impl/WorkerImpl.java +++ /dev/null @@ -1,79 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : APP-C - * ================================================================================ - * 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.appc.listener.CL.impl; - -import org.openecomp.appc.exceptions.APPCException; -import org.openecomp.appc.listener.EventHandler; -import org.openecomp.appc.listener.CL.model.IncomingMessage; -import org.openecomp.appc.listener.CL.model.Status; - -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; - -public class WorkerImpl implements Runnable { - - private final EELFLogger LOG = EELFManager.getInstance().getLogger(WorkerImpl.class); - - // Should have all of the data we need for processing - private IncomingMessage event; - - // So we can post messages from inside the worker. - private EventHandler dmaap; - - public WorkerImpl(IncomingMessage message, EventHandler dmaap) { - this.event = message; - this.dmaap = dmaap; - } - - @Override - public void run() { - LOG.debug(String.format("Started working on %s", event.getId())); - dmaap.postStatus(event.toOutgoing(Status.ACTIVE, null)); - // Run the dg in a try catch to handle all exceptions and update the - // message at the end - try { - if (doDG(event)) { - dmaap.postStatus(event.toOutgoing(Status.SUCCESS, null)); - LOG.debug(String.format("Event %s finished successfully", event.getId())); - } else { - // Should never happen. Exception with message should be thrown instead. - LOG.error(String.format( - "We somehow returned false from doDG() instead of throwing exception. Incoming event [%s]", - event.toJson().toString())); - dmaap.postStatus(event.toOutgoing(Status.FAILURE)); - } - - } catch (Exception e) { - // Unknown exception from DG method. Fail and pass the exception - // along - String msg = "Exception: " + e.getMessage(); - LOG.warn(String.format("Event %s finished with failure. %s", event.getId(), msg)); - dmaap.postStatus(event.toOutgoing(Status.FAILURE, msg)); - } - - LOG.debug("Done working on " + event.getId()); - } - - private boolean doDG(IncomingMessage msg) throws APPCException { - return ProviderOperations.topologyDG(msg); - } -} diff --git a/appc-event-listener/appc-event-listener-bundle/src/main/java/org/openecomp/appc/listener/CL/model/Action.java b/appc-event-listener/appc-event-listener-bundle/src/main/java/org/openecomp/appc/listener/CL/model/Action.java deleted file mode 100644 index a8fe8035b..000000000 --- a/appc-event-listener/appc-event-listener-bundle/src/main/java/org/openecomp/appc/listener/CL/model/Action.java +++ /dev/null @@ -1,55 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : APP-C - * ================================================================================ - * 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.appc.listener.CL.model; - -public enum Action { - Restart("Restart"), Rebuild("Rebuild"), Migrate("Migrate"), Evacuate("Evacuate"); - - /** - * Converts the string to an Action - * - * @param value - * The string to try and convert. Is case insensitive - * @return The action matching the string or null if no match was found. - */ - public static Action toAction(String value) { - if (value != null) { - for (Action e : values()) { - if (e.getValue().toUpperCase().equals(value.toUpperCase())) { - return e; - } - } - } - - return null; - } - - private String value; - - private Action(String valueToUse) { - value = valueToUse; - } - - public final String getValue() { - return value; - } -} diff --git a/appc-event-listener/appc-event-listener-bundle/src/main/java/org/openecomp/appc/listener/CL/model/CommonMessage.java b/appc-event-listener/appc-event-listener-bundle/src/main/java/org/openecomp/appc/listener/CL/model/CommonMessage.java deleted file mode 100644 index 76a112618..000000000 --- a/appc-event-listener/appc-event-listener-bundle/src/main/java/org/openecomp/appc/listener/CL/model/CommonMessage.java +++ /dev/null @@ -1,181 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : APP-C - * ================================================================================ - * 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.appc.listener.CL.model; - -import java.io.Serializable; - -import org.json.JSONObject; -import org.openecomp.appc.listener.util.Mapper; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.annotation.JsonSerialize.Inclusion; - -/** - * This class holds attributes that are common to DMaaP messages both coming in from DCAE and being sent out by APPC - * - */ -@JsonSerialize(include = Inclusion.NON_NULL) -@JsonIgnoreProperties(ignoreUnknown = true) -public class CommonMessage implements Serializable { - - private static final long serialVersionUID = 1L; - - /* - * The unique id of the event as of 1602 - */ - @JsonProperty("eventID") - private String id; - - /* - * The time that the request was sent out. - */ - @JsonProperty("requestTime") - private String requestTime; - - /* - * The originator of the event - */ - @JsonProperty("requestClient") - private String requestClient; - - /* - * The system that sent the message - */ - @JsonProperty("from") - private String fromSystem; - - /* - * The actual trap message - */ - @JsonProperty("message") - private String message; - - /* - * The vm name associated with the event - */ - @JsonProperty("VMName") - private String vmName; - - /* - * The policy name on the incoming event - */ - @JsonProperty("policyName") - private String policyName; - - /* - * The policy version on the incoming event - */ - @JsonProperty("policyVersion") - private String policyVersion; - - @JsonIgnore - private long startTime = System.currentTimeMillis(); - - /* - * Getters and Setters - */ - - public String getId() { - return id; - } - - public String getRequestTime() { - return requestTime; - } - - public String getRequestClient() { - return requestClient; - } - - public String getFromSystem() { - return fromSystem; - } - - public String getMessage() { - return message; - } - - public String getPolicyName() { - return policyName; - } - - public String getPolicyVersion() { - return policyVersion; - } - - public String getVmName() { - return vmName; - } - - public long getStartTime() { - return startTime; - } - - public void setId(String eventId) { - id = eventId; - } - - public void setRequestTime(String requestTime) { - this.requestTime = requestTime; - } - - public void setRequestClient(String requestClient) { - this.requestClient = requestClient; - } - - public void setFromSystem(String fromSystem) { - this.fromSystem = fromSystem; - } - - public void setMessage(String message) { - this.message = message; - } - - public void setPolicyName(String name) { - policyName = name; - } - - public void setPolicyVersion(String version) { - policyVersion = version; - } - - public void setVmName(String vmName) { - this.vmName = vmName; - } - - public void setStartTime(long startTime) { - this.startTime = startTime; - } - - /** - * Convenience method to return a json representation of this object. - * - * @return The json representation of this object - */ - public JSONObject toJson() { - return Mapper.toJsonObject(this); - } - -} diff --git a/appc-event-listener/appc-event-listener-bundle/src/main/java/org/openecomp/appc/listener/CL/model/IncomingMessage.java b/appc-event-listener/appc-event-listener-bundle/src/main/java/org/openecomp/appc/listener/CL/model/IncomingMessage.java deleted file mode 100644 index 60d1d004b..000000000 --- a/appc-event-listener/appc-event-listener-bundle/src/main/java/org/openecomp/appc/listener/CL/model/IncomingMessage.java +++ /dev/null @@ -1,140 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : APP-C - * ================================================================================ - * 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.appc.listener.CL.model; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.annotation.JsonSerialize.Inclusion; - -/** - * This class reperesnts a message coming in from DCAE. - * - */ -@JsonSerialize(include = Inclusion.NON_NULL) -@JsonIgnoreProperties(ignoreUnknown = true) -public class IncomingMessage extends CommonMessage { - - private static final long serialVersionUID = 1L; - - /* - * The action being requested. Its presence signals that it is an incoming message and it is not present on outgoing - * messages - */ - @JsonProperty("request") - private String request; - - /* - * The url for the server used for auth. http://<compute>:<port>/<tenentId>/server/<serverID> - */ - @JsonProperty("VServerSelfLink") - private String Url; - - /* - * The tenant Id in OpenStack that the server belongs to - */ - @JsonProperty("TenantID") - private String TenantId; - - /* - * The VM's UUID in - */ - @JsonProperty("VMID") - private String VmId; - - @JsonProperty("Identity") - private String identityUrl; - - public String getRequest() { - return request; - } - - @JsonIgnore - public Action getAction() { - return Action.toAction(request); - } - - public String getUrl() { - return Url; - } - - public String getTenantId() { - return TenantId; - } - - public String getVmId() { - return VmId; - } - - public String getIdentityUrl() { - return identityUrl; - } - - public void setUrl(String Url) { - this.Url = Url; - } - - public void setTenantId(String TenantId) { - this.TenantId = TenantId; - } - - public void setVmId(String VmId) { - this.VmId = VmId; - } - - public void setRequest(String request) { - this.request = request; - } - - public void setIdentityUrl(String identityUrl) { - this.identityUrl = identityUrl; - } - - @Override - public String toString() { - String time = getRequestTime() != null ? getRequestTime() : "N/A"; - // String req = request != null ? request : "N/A"; - return String.format("[%s - %s]", time, getId()); - } - - public String toOutgoing(Status status) { - return toOutgoing(status, getMessage()); - } - - public String toOutgoing(Status status, String msg) { - OutgoingMessage out = new OutgoingMessage(this); - out.setResponse(status); - out.setMessage(msg); - return out.toResponse().toString(); - } - - /** - * Determines if this message should be parsed parsed. Will eventually check that the message is well formed, has - * all required fields, and had not exceeded any timing restrictions. - * - * @return True if the message should be parsed. False otherwise - */ - public boolean isValid() { - return true; - } -} diff --git a/appc-event-listener/appc-event-listener-bundle/src/main/java/org/openecomp/appc/listener/CL/model/OutgoingMessage.java b/appc-event-listener/appc-event-listener-bundle/src/main/java/org/openecomp/appc/listener/CL/model/OutgoingMessage.java deleted file mode 100644 index fa8560ed2..000000000 --- a/appc-event-listener/appc-event-listener-bundle/src/main/java/org/openecomp/appc/listener/CL/model/OutgoingMessage.java +++ /dev/null @@ -1,150 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : APP-C - * ================================================================================ - * 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.appc.listener.CL.model; - -import java.net.InetAddress; -import java.security.SecureRandom; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.TimeZone; - -import org.json.JSONObject; -import org.openecomp.appc.listener.util.Mapper; -import org.openecomp.appc.util.Time; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.annotation.JsonSerialize.Inclusion; - -/** - * This class represents a message being sent out to DMaaP by APPC to update listeners on the status of a request - * - */ -@JsonSerialize(include = Inclusion.NON_NULL) -@JsonIgnoreProperties(ignoreUnknown = true) -public class OutgoingMessage extends CommonMessage { - - private static final long serialVersionUID = -5447940920271469613L; - - @JsonProperty("response") - private Status response; - - @JsonProperty("responseTime") - private String responseTime; - - @JsonProperty("originalRequest") - private String originalRequest; - - public OutgoingMessage() { - - } - - public OutgoingMessage(IncomingMessage msg) { - setId(msg.getId()); - setOriginalRequest(msg.getRequest()); - setRequestClient(msg.getRequestClient()); - setRequestTime(msg.getRequestTime()); - setVmName(msg.getVmName()); - setFromSystem(generateFrom()); - setResponse(Status.PENDING); - setPolicyName(msg.getPolicyName()); - setPolicyVersion(msg.getPolicyVersion()); - setStartTime(msg.getStartTime()); - } - - @JsonProperty("duration") - public long getDuration() { - return System.currentTimeMillis() - getStartTime(); - } - - public Status getResponse() { - return response; - } - - public String getResponseTime() { - return responseTime; - } - - public String getOriginalRequest() { - return originalRequest; - } - - @JsonIgnore - public void setResponse(Status response) { - this.response = response; - } - - public void setResponse(String responseString) { - this.response = Status.valueOf(responseString); - } - - public void setResponseTime(String responseTime) { - this.responseTime = responseTime; - } - - public void setOriginalRequest(String originalRequest) { - this.originalRequest = originalRequest; - } - - public void updateResponseTime() { - SecureRandom rand = new SecureRandom(); - SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss.SSS"); - df.setTimeZone(TimeZone.getTimeZone("UTC")); - String date = df.format(new Date(Time.utcTime())); - this.responseTime = String.format("%s%03d", date, rand.nextInt(1000)); - } - - public String generateFrom() { - String name; - try { - InetAddress iAddress = InetAddress.getLocalHost(); - name = iAddress.getCanonicalHostName(); - } catch (Exception e) { - // Could not get anything from the InetAddress - name = "UnknownHost"; - } - return "appc@" + name; - } - - public JSONObject toResponse() { - updateResponseTime(); - JSONObject json = Mapper.toJsonObject(this); - - if (!json.has("message")) { - // If there is no message, parrot the status (response field) - // TODO - Can this be removed for 1602 making message truely optional? - json.put("message", this.getResponse().toString()); - } - - // Removed duplication of status from message for 1602 - // json.put("message", String.format("%s: %s", request, json.get("message"))); - - return json; - } - - @Override - public String toString() { - return String.format("%s - %s", getId(), getResponse()); - } -} diff --git a/appc-event-listener/appc-event-listener-bundle/src/main/java/org/openecomp/appc/listener/CL/model/Status.java b/appc-event-listener/appc-event-listener-bundle/src/main/java/org/openecomp/appc/listener/CL/model/Status.java deleted file mode 100644 index d8e8b5c64..000000000 --- a/appc-event-listener/appc-event-listener-bundle/src/main/java/org/openecomp/appc/listener/CL/model/Status.java +++ /dev/null @@ -1,74 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * openECOMP : APP-C - * ================================================================================ - * 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.appc.listener.CL.model; - -public enum Status { - /* - * APP-C acknowledges that it has read the event off of the wire. This is the initial status of an OutgoingEvent - */ - PENDING("PENDING"), - - /* - * APP-C has started processing the event - */ - ACTIVE("ACTIVE"), - - /* - * APP-C has finished processing the event without errors - */ - SUCCESS("SUCCESS"), - - /* - * APP-C has finished processing the event with errors - */ - FAILURE("FAILURE"); - - /** - * Converts the string to an Status - * - * @param value - * The string to try and convert. Is case insensitive - * @return The status matching the string or null if no match was found. - */ - public static Status toStatus(String value) { - if (value != null) { - for (Status e : values()) { - if (e.getValue().toUpperCase().equals(value.toUpperCase())) { - return e; - } - } - } - - return null; - } - - private String value; - - private Status(String valueToUse) { - value = valueToUse; - } - - public final String getValue() { - return value; - } - -} |