diff options
author | lj1412 <lji@research.att.com> | 2017-02-15 12:45:23 +0000 |
---|---|---|
committer | lj1412 <lji@research.att.com> | 2017-02-15 12:45:25 +0000 |
commit | 4a69ee4417940dde4311e8dc43474f38d6c9412e (patch) | |
tree | 455250b4c17706791cc66aa91388308b61596a9c /operation-utils/src | |
parent | ce343cc80095bf4d4684616580546eeaac1d4259 (diff) |
Init dcae.operation.utils
Change-Id: I8c5d28aefa33396707d27168254d857cd321a4d1
Signed-off-by: lj1412 <lji@research.att.com>
Diffstat (limited to 'operation-utils/src')
16 files changed, 1036 insertions, 0 deletions
diff --git a/operation-utils/src/main/java/org/openecomp/entity/EcompComponent.java b/operation-utils/src/main/java/org/openecomp/entity/EcompComponent.java new file mode 100644 index 0000000..b52e9ee --- /dev/null +++ b/operation-utils/src/main/java/org/openecomp/entity/EcompComponent.java @@ -0,0 +1,31 @@ + +/*- + * ============LICENSE_START========================================== + * OPENECOMP - DCAE + * =================================================================== + * 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.entity; + +public class EcompComponent { + + public static void initialize(String string) { + // TODO Auto-generated method stub + + } + +} diff --git a/operation-utils/src/main/java/org/openecomp/entity/EcompOperation.java b/operation-utils/src/main/java/org/openecomp/entity/EcompOperation.java new file mode 100644 index 0000000..367a342 --- /dev/null +++ b/operation-utils/src/main/java/org/openecomp/entity/EcompOperation.java @@ -0,0 +1,44 @@ + +/*- + * ============LICENSE_START========================================== + * OPENECOMP - DCAE + * =================================================================== + * 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.entity; + +public class EcompOperation { + private String requestId; + private String serviceInstanceId; + + public String getRequestId() { + return requestId; + } + + public void setRequestId(String requestId) { + this.requestId = requestId; + } + + public String getServiceInstanceId() { + return serviceInstanceId; + } + + public void setServiceInstanceId(String serviceInstanceId) { + this.serviceInstanceId = serviceInstanceId; + } + +} diff --git a/operation-utils/src/main/java/org/openecomp/entity/EcompOperationEnum.java b/operation-utils/src/main/java/org/openecomp/entity/EcompOperationEnum.java new file mode 100644 index 0000000..94be8ee --- /dev/null +++ b/operation-utils/src/main/java/org/openecomp/entity/EcompOperationEnum.java @@ -0,0 +1,27 @@ + +/*- + * ============LICENSE_START========================================== + * OPENECOMP - DCAE + * =================================================================== + * 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.entity; + + +public interface EcompOperationEnum { + +} diff --git a/operation-utils/src/main/java/org/openecomp/entity/EcompSubComponent.java b/operation-utils/src/main/java/org/openecomp/entity/EcompSubComponent.java new file mode 100644 index 0000000..85dacb1 --- /dev/null +++ b/operation-utils/src/main/java/org/openecomp/entity/EcompSubComponent.java @@ -0,0 +1,33 @@ + +/*- + * ============LICENSE_START========================================== + * OPENECOMP - DCAE + * =================================================================== + * 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.entity; + +public class EcompSubComponent { + + static String name = "NON-SET"; + + public static void initialize(String name1) { + name = name1; + EcompSubComponentInstance.initialize(); + } + +} diff --git a/operation-utils/src/main/java/org/openecomp/entity/EcompSubComponentInstance.java b/operation-utils/src/main/java/org/openecomp/entity/EcompSubComponentInstance.java new file mode 100644 index 0000000..9b54bdd --- /dev/null +++ b/operation-utils/src/main/java/org/openecomp/entity/EcompSubComponentInstance.java @@ -0,0 +1,63 @@ + +/*- + * ============LICENSE_START========================================== + * OPENECOMP - DCAE + * =================================================================== + * 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.entity; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.UUID; +import java.util.logging.Level; +import java.util.logging.Logger; + +public class EcompSubComponentInstance { + private static final Logger logger = Logger.getLogger(EcompSubComponentInstance.class.getName()); + + static String uuid = "???"; + public static String getServerIP() { + initialize(); + return serverIP; + } + + public static String getServerName() { + initialize(); + return serverName; + } + + private static String serverIP, serverName; + + public static String getUuid() { + return uuid; + } + + public static void initialize() { + if (serverIP == null || serverName == null || ("").equals(serverIP) || ("").equals(serverName)) { + try { + InetAddress server = InetAddress.getLocalHost(); + serverIP = server.getHostAddress(); + serverName = server.getCanonicalHostName(); + } catch (UnknownHostException e) { + logger.log(Level.SEVERE, "Could not get local hostname", e); + serverIP = ""; + serverName = ""; + } + } + } +} diff --git a/operation-utils/src/main/java/org/openecomp/logger/Catalog.java b/operation-utils/src/main/java/org/openecomp/logger/Catalog.java new file mode 100644 index 0000000..f512a3c --- /dev/null +++ b/operation-utils/src/main/java/org/openecomp/logger/Catalog.java @@ -0,0 +1,28 @@ + +/*- + * ============LICENSE_START========================================== + * OPENECOMP - DCAE + * =================================================================== + * 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.logger; + +public class Catalog { + + + +} diff --git a/operation-utils/src/main/java/org/openecomp/logger/EcompLogger.java b/operation-utils/src/main/java/org/openecomp/logger/EcompLogger.java new file mode 100644 index 0000000..254b06e --- /dev/null +++ b/operation-utils/src/main/java/org/openecomp/logger/EcompLogger.java @@ -0,0 +1,406 @@ + +/*- + * ============LICENSE_START========================================== + * OPENECOMP - DCAE + * =================================================================== + * 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.logger; + + + +import java.io.PrintWriter; +import java.io.StringWriter; +import java.util.Date; +import java.util.UUID; +import java.util.logging.Logger; + +import org.slf4j.MDC; + +import org.openecomp.entity.EcompOperation; +import org.openecomp.entity.EcompOperationEnum; +import org.openecomp.entity.EcompSubComponentInstance; +import com.att.eelf.configuration.EELFLogger; +import com.att.eelf.configuration.EELFManager; +import com.att.eelf.configuration.SLF4jWrapper; + +/** + * Simple wrapper around the EELF Logger class for MSO usage. + * This class supports all of the normal logging functions (debug, info, etc.), + * prepending a string of format "[<requestId>|<serviceId]" to each message. + * + * MSO code should initialize with these IDs when available, so that individual + * requests and/or services can be tracked throughout the various MSO component + * logs (API Handler, BPEL, and Adapters). + * + */ +public class EcompLogger { + // MDC parameters + public static final String REQUEST_ID = "RequestId"; + public static final String SERVICE_INSTANCE_ID = "ServiceInstanceId"; + public static final String SERVICE_NAME = "ServiceName"; + public static final String INSTANCE_UUID = "InstanceUUID"; + public static final String SERVER_IP = "ServerIPAddress"; + public static final String FQDN = "ServerFQDN"; + public static final String REMOTE_HOST = "RemoteHost"; + public static final String ALERT_SEVERITY = "AlertSeverity"; + public static final String TIMER = "Timer"; + public static final String USER = "User"; + public static final String CATALOG = "Catalog"; + public static final String DUMMY_REQUEST_VALUE = "?"; + public static final String DUMMY_SERVICE_INSTANCE_VALUE = "??"; + + private static final String FATAL_LEVEL = "FATAL"; + private static final String ERROR_LEVEL = "ERROR"; + private static final String WARN_LEVEL = "WARN"; + private static final String INFO_LEVEL = "INFO"; + private static final String DEBUG_LEVEL = "DEBUG"; + + private EELFLogger errorLogger, auditLogger, metricsLogger, debugLogger; + + + // For internal logging of the initialization of MSO logs + private static final Logger LOGGER = Logger.getLogger (EcompLogger.class.getName ()); + private static final String ERROR_LOGGER_NAME = "org.openecomp.error"; + private static final String AUDIT_LOGGER_NAME = "org.openecomp.audit"; + private static final String METRICS_LOGGER_NAME = "org.openecomp.metrics"; + private static final String DEBUG_LOGGER_NAME = "org.openecomp.debug"; + + + private EcompLogger () { + this.errorLogger = new SLF4jWrapper(ERROR_LOGGER_NAME); + this.auditLogger = new SLF4jWrapper(AUDIT_LOGGER_NAME);; + this.metricsLogger = new SLF4jWrapper(METRICS_LOGGER_NAME); + this.debugLogger = new SLF4jWrapper(DEBUG_LOGGER_NAME); + } + + + public static synchronized EcompLogger getEcompLogger () { + return new EcompLogger (); + } + + /** + * Record the Audit start event + * + */ + public void recordAuditEventStart (EcompMessageEnum msg, String... args) { + prepareMsg (INFO_LEVEL); + setStart(); + auditLogger.info (msg, args); + } + /** + * Record the Audit start event + * + */ + public void recordAuditEventStart () { + recordAuditEventStart(GenericMessageEnum.AUDIT_BEGIN); + } + + /** + * Record the Audit end event with log message to put + * + * @param arg0 The log message to put + */ + public void recordAuditEventEnd (EcompMessageEnum msg, String... args) { + setTimer(); + prepareMsg (INFO_LEVEL); + auditLogger.info (msg, normalizeArray(args)); + } + + /** + * Record the Audit end event with log message to put + * + * @param arg0 The log message to put + */ + public void recordAuditEventEnd () { + auditLogger.info (GenericMessageEnum.AUDIT_END); + } + /** + * Record the Metric start event without log message + * + */ + public void recordMetricEventStart (EcompMessageEnum msg, String... args) { + prepareMsg (INFO_LEVEL); + setStart(); + metricsLogger.info (msg, args); + } + + /** + * Record the Metric end event with log message to put + * + * @param arg0 The log message to put + */ + public void recordMetricEventEnd (EcompMessageEnum msg, String... args) { + prepareMsg (INFO_LEVEL); + setTimer(); + metricsLogger.info (msg, normalizeArray(args)); + } + /** + * Record the Metric start event without log message + * + */ + public void recordMetricEventStart () { + recordMetricEventStart(GenericMessageEnum.METRICS_BEGIN); + } + + /** + * Record the Metric end event with log message to put + * + * @param arg0 The log message to put + */ + public void recordMetricEventEnd () { + recordMetricEventEnd (GenericMessageEnum.METRICS_END); + } + + // Debug methods + /** + * Record the Debug event + * + * @param msg The log message to put + */ + public void debug (String msg) { + prepareMsg (DEBUG_LEVEL); + errorLogger.debug (msg); + } + + /** + * Record the Debug event + * + * @param msg The log message to put + * @param t The exception to put + */ + public void debug (String msg, Throwable t) { + prepareMsg (DEBUG_LEVEL); + errorLogger.debug (msg); + } + + // Info methods + /** + * Record the Info event + * + * @param msg The log message to put + */ + public void info (EcompMessageEnum msg, String... args) { + prepareMsg (INFO_LEVEL); + errorLogger.info (msg,normalizeArray(args)); + } + + /** + * Record the Info event + * + * @param msg The log message to put + * @param t The exception info + */ + public void info (EcompMessageEnum msg, Throwable t, String... args) { + prepareMsg (WARN_LEVEL); + errorLogger.info (msg,normalizeArray(args)); + errorLogger.info ("Exception raised: " + getNormalizedStackTrace (t)); + errorLogger.debug ("Exception raised", t); + } + + // Warning methods + /** + * Record the Warning event + * + * @param msg The log message to put + */ + public void warn (EcompMessageEnum msg, String... args) { + prepareMsg (WARN_LEVEL); + errorLogger.warn (msg,normalizeArray(args)); + } + + + + /** + * Record the Warning event + * + * @param msg The log message to put + * @param t The exception info + */ + public void warn (EcompMessageEnum msg, Throwable t, String... args) { + prepareMsg (WARN_LEVEL); + errorLogger.warn (msg,normalizeArray(args)); + errorLogger.warn ("Exception raised: " + getNormalizedStackTrace (t)); + errorLogger.debug ("Exception raised", t); + } + + // Error methods + /** + * Record the Error event + * + * @param msg The log message to put + */ + public void error (EcompMessageEnum msg, String... args) { + prepareMsg (ERROR_LEVEL); + errorLogger.error (msg, normalizeArray(args)); + } + + /** + * Record the Error event + * + * @param msg The log message to put + * @param t The exception info + */ + public void error (EcompMessageEnum msg, Throwable t, String... args) { + prepareMsg (ERROR_LEVEL); + errorLogger.error (msg, normalizeArray(args)); + errorLogger.error (GenericMessageEnum.GENERAL_EXCEPTION, getNormalizedStackTrace (t)); + errorLogger.debug ("Exception raised", t); + } + + public boolean isDebugEnabled () { + return errorLogger.isDebugEnabled(); + } + + private void setStart() { + MDC.put("startTime", Long.toString(new Date().getTime())); + } + + + private void setTimer() { + Date d = new Date(Long.parseLong(MDC.get("startTime"))); + MDC.put(TIMER, Long.toString(new Date().getTime()-d.getTime())); + } + + + private void prepareMsg (String loggingLevel) { + prepareMsg (loggingLevel, null, null); + } + + private void prepareMsg (String loggingLevel, String serviceNamep, String timer) { + String reqId = MDC.get (REQUEST_ID); + String svcId = MDC.get (SERVICE_INSTANCE_ID); + + if (reqId == null || reqId.isEmpty()) { + MDC.put (REQUEST_ID, DUMMY_REQUEST_VALUE); + } + + if (svcId == null || svcId.isEmpty()) { + MDC.put (SERVICE_INSTANCE_ID, DUMMY_SERVICE_INSTANCE_VALUE); + } + + if (timer != null) { + MDC.put (TIMER, timer); + } else { + MDC.remove(TIMER); + } + + MDC.put (ALERT_SEVERITY, getSeverityLevel (loggingLevel)); +// MDC.put (INSTANCE_UUID, EcompSubComponentInstance.getUuid()); + MDC.put (SERVER_IP, EcompSubComponentInstance.getServerIP()); + MDC.put (FQDN, EcompSubComponentInstance.getServerName()); + } + + private String getSeverityLevel (String loggingLevel) { + String severity; + // According to the Nagios alerting: 0=OK; 1=WARNING; 2=UNKOWN; 3=CRITICAL + switch (loggingLevel) { + case ERROR_LEVEL: + severity = "2"; + break; + case FATAL_LEVEL: + severity = "3"; + break; + case WARN_LEVEL: + severity = "1"; + break; + default: + severity = "0"; + break; + } + return severity; + } + + + public static void setLogContext (String reqId, String svcId) { + MDC.put (REQUEST_ID, reqId); + MDC.put (SERVICE_INSTANCE_ID, svcId); + } + + public static void setLoggerParameters (String remoteIpp, String userp) { + MDC.put (REMOTE_HOST, remoteIpp); + MDC.put (USER, userp); + } + + public static void setServiceName (String serviceNamep) { + MDC.put (SERVICE_NAME, serviceNamep); + } + + public static void resetServiceName () { + MDC.remove (SERVICE_NAME); + } + + public static void setLogContext (EcompOperation operation) { + if (operation != null) { + MDC.put (REQUEST_ID, operation.getRequestId()); + MDC.put (SERVICE_INSTANCE_ID, operation.getServiceInstanceId()); + } + else { + MDC.put (REQUEST_ID, DUMMY_REQUEST_VALUE); + MDC.put (SERVICE_INSTANCE_ID, DUMMY_SERVICE_INSTANCE_VALUE); + } + } + + private String normalize (String input) { + if (input == null) { + return null; + } + String result = input.replace ('|', '!'); + result = result.replace ("\n", " - "); + return result; + } + + + private String[] normalizeArray(String[] args) { + for (int i = 0; i< args.length; i++) { + args[i] = normalize(args[i]); + } + return args; + } + + private String getNormalizedStackTrace (Throwable t) { + StringWriter sw = new StringWriter(); + PrintWriter pw = new PrintWriter(sw); + t.printStackTrace(pw); + return sw.toString().replace ('|', '!').replace ("\n", " - "); + } + + + public void setOperation(EcompOperationEnum op) { + MDC.put (SERVICE_NAME, op.toString()); + } + + public void newRequestId() { + String uuid = UUID.randomUUID().toString(); + MDC.put (REQUEST_ID, uuid); + } + + + public void setRequestId(String requestId) { + MDC.put (REQUEST_ID, requestId); + } + + public void setRemoteHost(String remote) { + MDC.put (REMOTE_HOST, remote); + } + + public void setInstanceId(String instance) { + MDC.put (INSTANCE_UUID, instance); + } + +} diff --git a/operation-utils/src/main/java/org/openecomp/logger/EcompMessageEnum.java b/operation-utils/src/main/java/org/openecomp/logger/EcompMessageEnum.java new file mode 100644 index 0000000..903d5e0 --- /dev/null +++ b/operation-utils/src/main/java/org/openecomp/logger/EcompMessageEnum.java @@ -0,0 +1,28 @@ + +/*- + * ============LICENSE_START========================================== + * OPENECOMP - DCAE + * =================================================================== + * 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.logger; + +import com.att.eelf.i18n.EELFResolvableErrorEnum; + +public interface EcompMessageEnum extends EELFResolvableErrorEnum { + +} diff --git a/operation-utils/src/main/java/org/openecomp/logger/GenericMessageEnum.java b/operation-utils/src/main/java/org/openecomp/logger/GenericMessageEnum.java new file mode 100644 index 0000000..deed808 --- /dev/null +++ b/operation-utils/src/main/java/org/openecomp/logger/GenericMessageEnum.java @@ -0,0 +1,38 @@ + +/*- + * ============LICENSE_START========================================== + * OPENECOMP - DCAE + * =================================================================== + * 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.logger; + +import com.att.eelf.i18n.EELFResourceManager; + +public enum GenericMessageEnum implements EcompMessageEnum { + GENERAL_INFO, + GENERAL_WARNING, + GENERAL_ERROR, + GENERAL_EXCEPTION, + AUDIT_BEGIN, + AUDIT_END, + METRICS_BEGIN, + METRICS_END; + static { + EELFResourceManager.loadMessageBundle("GenericMessages"); + } +} diff --git a/operation-utils/src/main/java/org/openecomp/utils/ConvertMessagePropertiesToYaml.java b/operation-utils/src/main/java/org/openecomp/utils/ConvertMessagePropertiesToYaml.java new file mode 100644 index 0000000..28026d6 --- /dev/null +++ b/operation-utils/src/main/java/org/openecomp/utils/ConvertMessagePropertiesToYaml.java @@ -0,0 +1,63 @@ + +/*- + * ============LICENSE_START========================================== + * OPENECOMP - DCAE + * =================================================================== + * 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.utils; + +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStreamWriter; +import java.util.Properties; + +import org.json.JSONObject; +import org.yaml.snakeyaml.DumperOptions; +import org.yaml.snakeyaml.Yaml; + +import org.openecomp.ncomp.webservice.utils.FileUtils; + +public class ConvertMessagePropertiesToYaml { + + public static void main(String[] args) throws IOException { + + Properties props = new Properties(); + String pname = "GenericMessages.properties"; + String fname = "src/main/resources/GenericMessages.yaml"; + props.load(ConvertMessagePropertiesToYaml.class.getClassLoader().getResourceAsStream(pname)); + DumperOptions options = new DumperOptions(); + options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); + Yaml y = new Yaml(options); + JSONObject j = new JSONObject(); + for (Object k : props.keySet()) { + String a[] = props.getProperty((String) k).split("\\|"); + JSONObject j1 = new JSONObject(); + j.put((String) k, j1); + j1.put("errorCode", a[0]); + j1.put("messageFormat", a[1]); + j1.put("resolution", a[2]); + j1.put("description", a[3].trim()); + } + + Object data = y.load(j.toString()); + OutputStreamWriter w = FileUtils.filename2writer(fname); + w.append(y.dump(data) + "\n"); + w.close(); + } +} diff --git a/operation-utils/src/main/java/org/openecomp/utils/YamlToJava.java b/operation-utils/src/main/java/org/openecomp/utils/YamlToJava.java new file mode 100644 index 0000000..4577e06 --- /dev/null +++ b/operation-utils/src/main/java/org/openecomp/utils/YamlToJava.java @@ -0,0 +1,134 @@ + +/*- + * ============LICENSE_START========================================== + * OPENECOMP - DCAE + * =================================================================== + * 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.utils; + +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStreamWriter; +import java.io.Reader; +import java.util.ArrayList; +import java.util.Map; +import java.util.Properties; + +import org.json.JSONObject; +import org.yaml.snakeyaml.DumperOptions; +import org.yaml.snakeyaml.Yaml; + +import groovy.lang.Writable; +import groovy.text.SimpleTemplateEngine; + +import org.openecomp.ncomp.utils.PropertyUtil; +import org.openecomp.ncomp.webservice.utils.FileUtils; + +public class YamlToJava { + +// package org.openecomp.operation.logging.usecases; +// +// import org.openecomp.logger.EcompMessageEnum; +// import com.att.eelf.i18n.EELFResourceManager; +// +// public enum MyMessageEnum implements EcompMessageEnum { +// // Api Handler Messages +// FOOBAR; +// +// static { +// EELFResourceManager.loadMessageBundle("foobar"); +// } +// } + + @SuppressWarnings("unchecked") + static public void convert(String yamlFileName, String outputSourceRootDir, String packageName) { + try { + if (! (new File(yamlFileName).exists())) { + System.err.println(yamlFileName + " does not exists"); + return; + } + DumperOptions options = new DumperOptions(); + options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); + Yaml y = new Yaml(options); + Map<String,Object> m = (Map<String, Object>) y.load(FileUtils.filename2stream(yamlFileName, null)); + File f = new File(yamlFileName); + String name = f.getName().replace(".yaml", ""); + m.put("name", name); + m.put("packageName", packageName); + String ofile1 = outputSourceRootDir + "/" + name + ".properties"; + OutputStreamWriter w; + SimpleTemplateEngine engine = new SimpleTemplateEngine(); + if (m.containsKey("messages")) { + w = FileUtils.filename2writer(ofile1); + w.append(engine.createTemplate(getTemplate("properties_template")).make(m).toString()); + w.close(); + String ofile2 = outputSourceRootDir + "/" + name + "MessageEnum.java"; + w = FileUtils.filename2writer(ofile2); + w.append(engine.createTemplate(getTemplate("messageEnum.java_template")).make(m).toString()); + w.close(); + } + if (m.containsKey("operations")) { + String ofile3 = outputSourceRootDir + "/" + name + "OperationEnum.java"; + w = FileUtils.filename2writer(ofile3); + w.append(engine.createTemplate(getTemplate("operationEnum.java_template")).make(m).toString()); + w.close(); + } + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + private static String getTemplate(String res) throws IOException { + InputStream in = YamlToJava.class.getClassLoader().getResourceAsStream(res); + if (in == null) { + throw new RuntimeException("Unable to find resource: " + res); + } + ByteArrayOutputStream o = new ByteArrayOutputStream(); + FileUtils.copyStream(in, o); + return o.toString(); +} + + public static void main(String[] args) throws IOException { + + Properties props = new Properties(); + String pname = "GenericMessages.properties"; + String fname = "src/main/resources/GenericMessages.yaml"; + props.load(YamlToJava.class.getClassLoader().getResourceAsStream(pname)); + DumperOptions options = new DumperOptions(); + options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); + Yaml y = new Yaml(options); + JSONObject j = new JSONObject(); + for (Object k : props.keySet()) { + String a[] = props.getProperty((String) k).split("\\|"); + JSONObject j1 = new JSONObject(); + j.put((String) k, j1); + j1.put("errorCode", a[0]); + j1.put("messageFormat", a[1]); + j1.put("resolution", a[2]); + j1.put("description", a[3].trim()); + } + + Object data = y.load(j.toString()); + OutputStreamWriter w = FileUtils.filename2writer(fname); + w.append(y.dump(data) + "\n"); + w.close(); + } +} diff --git a/operation-utils/src/main/resources/GenericMessages.properties b/operation-utils/src/main/resources/GenericMessages.properties new file mode 100644 index 0000000..b7322f8 --- /dev/null +++ b/operation-utils/src/main/resources/GenericMessages.properties @@ -0,0 +1,65 @@ +######################################################################## +#Resource key=Error Code|Message text|Resolution text |Description text +####### +# {component}-{subcomponent}-{4-digit code}{classification} +#Newlines can be utilized to add some clarity ensuring continuing line +#has atleast one leading space +#ResourceKey=\ +# ERR0000E\ +# Sample error msg txt\ +# Sample resolution msg\ +# Sample description txt +# +####### +#Error code classification category for other components +#1400-1499 Security/Permission Related +#2400-2499 Availability/Timeout Related +#3400-3499 Data Access/Integrity Related +#4400-4499 Schema Interface Type/Validation +#5400-5499 Business/Flow Processing Related +#6400-6499 Reserved \u2013 do not use +#9400-9499 Unknown Errors +# +###### +#{classification} description +# I = Information +# W = Warning +# E = Error +# F = Fatal +######################################################################## +GENERAL_INFO=\ + ECOMP-GENERAL-INFO-5401|\ + {0}|\ + Please check other logs for more detailed info|\ + General info +GENERAL_WARNING=\ + ECOMP-GENERAL-WARNING-5402|\ + {0}|\ + Please check other logs for more detailed info|\ + General warning +GENERAL_ERROR=\ + ECOMP-GENERAL-ERROR-5403|\ + {0}|\ + Please check other logs for more detailed info|\ + General error +AUDIT_BEGIN=\ + ECOMP-GENERAL-5403|\ + Entering method|\ + No resolution needed|\ + Entering method +AUDIT_END=\ + ECOMP-GENERAL-5404|\ + Exiting method|\ + No resolution needed|\ + Exiting method +METRICS_BEGIN=\ + ECOMP-GENERAL-5403|\ + Entering method|\ + No resolution needed|\ + Entering method +METRICS_END=\ + ECOMP-GENERAL-5404|\ + Exiting method|\ + No resolution needed|\ + Exiting method + diff --git a/operation-utils/src/main/resources/GenericMessages.yaml b/operation-utils/src/main/resources/GenericMessages.yaml new file mode 100644 index 0000000..df592e2 --- /dev/null +++ b/operation-utils/src/main/resources/GenericMessages.yaml @@ -0,0 +1,36 @@ +GENERAL_ERROR: + errorCode: ECOMP-GENERAL-ERROR-5403 + messageFormat: '{0}' + resolution: Please check other logs for more detailed info + description: General error +GENERAL_INFO: + errorCode: ECOMP-GENERAL-INFO-5401 + messageFormat: '{0}' + resolution: Please check other logs for more detailed info + description: General info +GENERAL_WARNING: + errorCode: ECOMP-GENERAL-WARNING-5402 + messageFormat: '{0}' + resolution: Please check other logs for more detailed info + description: General warning +METRICS_END: + errorCode: ECOMP-GENERAL-5404 + messageFormat: Exiting method + resolution: No resolution needed + description: Exiting method +AUDIT_END: + errorCode: ECOMP-GENERAL-5404 + messageFormat: Exiting method + resolution: No resolution needed + description: Exiting method +AUDIT_BEGIN: + errorCode: ECOMP-GENERAL-5403 + messageFormat: Entering method + resolution: No resolution needed + description: Entering method +METRICS_BEGIN: + errorCode: ECOMP-GENERAL-5403 + messageFormat: Entering method + resolution: No resolution needed + description: Entering method + diff --git a/operation-utils/src/main/resources/messageEnum.java_template b/operation-utils/src/main/resources/messageEnum.java_template new file mode 100644 index 0000000..e0b3c12 --- /dev/null +++ b/operation-utils/src/main/resources/messageEnum.java_template @@ -0,0 +1,18 @@ + +package $packageName; + +import com.att.eelf.i18n.EELFResourceManager; +import org.openecomp.logger.EcompMessageEnum; + +public enum ${name}MessageEnum implements EcompMessageEnum { +<% +def last +messages.each { n, v -> last = n } +messages.each { n, v -> %> + $n${n==last ? ";" : ","}\ +<% } %> + + static { + EELFResourceManager.loadMessageBundle("${packageName}.$name"); + } +} diff --git a/operation-utils/src/main/resources/operationEnum.java_template b/operation-utils/src/main/resources/operationEnum.java_template new file mode 100644 index 0000000..9ec9d3d --- /dev/null +++ b/operation-utils/src/main/resources/operationEnum.java_template @@ -0,0 +1,13 @@ + +package $packageName; + +import org.openecomp.entity.EcompOperationEnum; + +public enum ${name}OperationEnum implements EcompOperationEnum { +<% +def last +operations.each { n, v -> last = n } +operations.each { n, v -> %> + $n${n==last ? ";" : ","}\ +<% } %> +} diff --git a/operation-utils/src/main/resources/properties_template b/operation-utils/src/main/resources/properties_template new file mode 100644 index 0000000..76b2b48 --- /dev/null +++ b/operation-utils/src/main/resources/properties_template @@ -0,0 +1,9 @@ +<% + messages.each { n, v -> +%> +$n=\\ + $v.errorCode|\\ + $v.messageFormat|\\ + $v.resolution|\\ + $v.description +<% } %>
\ No newline at end of file |