From ae4a935b835c0dc588c7a53aef846dd6506b732f Mon Sep 17 00:00:00 2001 From: Jorge Hernandez Date: Tue, 18 Jul 2017 01:06:39 -0500 Subject: [POLICY-66] self-contained features support installation/enable/disable of self contained package features: Feature 3rd party dependencies, configuration files, and custom installation scripts do not need to be packaged within the policy core base to be used. Change-Id: I35a472e63bd0f9f7aa6cd0c112d41d2b4604a892 Signed-off-by: Jorge Hernandez --- feature-eelf/src/assembly/assemble_zip.xml | 29 ++-- .../src/main/feature/config/logback-eelf.xml | 186 +++++++++++++++++++++ feature-eelf/src/main/feature/install/disable | 33 ++++ feature-eelf/src/main/feature/install/enable | 35 ++++ feature-eelf/src/main/install/config/logback.xml | 185 -------------------- .../main/install/config/policyLogger.properties | 49 ------ .../openecomp/policy/drools/eelf/EelfFeature.java | 51 ++---- .../policy/drools/eelf/test/EElfTest.java | 32 ++-- 8 files changed, 310 insertions(+), 290 deletions(-) create mode 100644 feature-eelf/src/main/feature/config/logback-eelf.xml create mode 100644 feature-eelf/src/main/feature/install/disable create mode 100644 feature-eelf/src/main/feature/install/enable delete mode 100644 feature-eelf/src/main/install/config/logback.xml delete mode 100644 feature-eelf/src/main/install/config/policyLogger.properties (limited to 'feature-eelf') diff --git a/feature-eelf/src/assembly/assemble_zip.xml b/feature-eelf/src/assembly/assemble_zip.xml index 001d3c66..005d0389 100644 --- a/feature-eelf/src/assembly/assemble_zip.xml +++ b/feature-eelf/src/assembly/assemble_zip.xml @@ -35,33 +35,42 @@ target - lib/opt + lib/feature feature-eelf-${project.version}.jar - target/assembly/ - . - - - - . - lib + target/assembly/lib + lib/dependencies *.jar - src/main/install/config + src/main/feature/config config + 0644 + - src/main/install/bin + src/main/feature/bin bin 0744 + + src/main/feature/db + db + 0744 + + + + src/main/feature/install + install + 0744 + + diff --git a/feature-eelf/src/main/feature/config/logback-eelf.xml b/feature-eelf/src/main/feature/config/logback-eelf.xml new file mode 100644 index 00000000..7c2725d8 --- /dev/null +++ b/feature-eelf/src/main/feature/config/logback-eelf.xml @@ -0,0 +1,186 @@ + + + + + + + + + + + + + + + + + + + + + + + + ${defaultPattern} + + + + + ${logDirectory}/${auditLogName}.log + + ${logDirectory}/${auditLogName}.%i.log.zip + + 1 + 5 + + + 10MB + + + ${defaultAuditPattern} + + + + + + + + + ${logDirectory}/${metricsLogName}.log + + ${logDirectory}/${metricsLogName}.%i.log.zip + + 1 + 5 + + + 15MB + + + ${defaultMetricPattern} + + + + + + + + + + ${logDirectory}/${errorLogName}.log + + ${logDirectory}/${errorLogName}.%i.log.zip + + 1 + 5 + + + ERROR + + + 20MB + + + ${defaultErrorPattern} + + + + + + + + + ${debugLogDirectory}/${debugLogName}.log + + ${debugLogDirectory}/${debugLogName}.%i.log.zip + + 1 + 5 + + + 20MB + + + ${debugPattern} + + + + + + + + + ${logDirectory}/${networkLogName}.log + + logs/network.log.%i.zip + 1 + 5 + + + 15MB + + + ${networkPattern} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/feature-eelf/src/main/feature/install/disable b/feature-eelf/src/main/feature/install/disable new file mode 100644 index 00000000..1eeb090e --- /dev/null +++ b/feature-eelf/src/main/feature/install/disable @@ -0,0 +1,33 @@ +#! /bin/bash + +### +# ============LICENSE_START======================================================= +# ONAP POLICY +# ================================================================================ +# 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========================================================= +## + +if [[ "${DEBUG}" == "y" ]]; then + set -x +fi + +SYSTEM_PROPS="${POLICY_HOME}"/config/system.properties + +if [[ -f ${SYSTEM_PROPS} && -r ${SYSTEM_PROPS} ]]; then + if grep -q "^logback.configurationFile=.*$" "${SYSTEM_PROPS}"; then + sed -i -e "s|^logback.configurationFile=.*$|logback.configurationFile=config/logback.xml|" "${SYSTEM_PROPS}" + fi +fi \ No newline at end of file diff --git a/feature-eelf/src/main/feature/install/enable b/feature-eelf/src/main/feature/install/enable new file mode 100644 index 00000000..55a2b99a --- /dev/null +++ b/feature-eelf/src/main/feature/install/enable @@ -0,0 +1,35 @@ +#! /bin/bash + +### +# ============LICENSE_START======================================================= +# ONAP POLICY +# ================================================================================ +# 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========================================================= +## + +if [[ "${DEBUG}" == "y" ]]; then + set -x +fi + +SYSTEM_PROPS="${POLICY_HOME}"/config/system.properties + +if [[ -f ${SYSTEM_PROPS} && -r ${SYSTEM_PROPS} ]]; then + if grep -q "^logback.configurationFile=.*$" "${SYSTEM_PROPS}"; then + sed -i -e "s|^logback.configurationFile=.*$|logback.configurationFile=config/logback-eelf.xml|" "${SYSTEM_PROPS}" + else + echo "logback.configurationFile=config/logback-eelf.xml" >> "${SYSTEM_PROPS}" + fi +fi \ No newline at end of file diff --git a/feature-eelf/src/main/install/config/logback.xml b/feature-eelf/src/main/install/config/logback.xml deleted file mode 100644 index f4295628..00000000 --- a/feature-eelf/src/main/install/config/logback.xml +++ /dev/null @@ -1,185 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - ${defaultPattern} - - - - - ${logDirectory}/${auditLogName}.log - - ${logDirectory}/${auditLogName}.%i.log.zip - - 1 - 5 - - - 10MB - - - ${defaultAuditPattern} - - - - - - - - - ${logDirectory}/${metricsLogName}.log - - ${logDirectory}/${metricsLogName}.%i.log.zip - - 1 - 5 - - - 15MB - - - ${defaultMetricPattern} - - - - - - - - - - ${logDirectory}/${errorLogName}.log - - ${logDirectory}/${errorLogName}.%i.log.zip - - 1 - 5 - - - ERROR - - - 20MB - - - ${defaultErrorPattern} - - - - - - - - - ${debugLogDirectory}/${debugLogName}.log - - ${debugLogDirectory}/${debugLogName}.%i.log.zip - - 1 - 5 - - - 20MB - - - ${debugPattern} - - - - - - - - - ${logDirectory}/${networkLogName}.log - - logs/network.log.%i.zip - 1 - 5 - - - 15MB - - - ${networkPattern} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/feature-eelf/src/main/install/config/policyLogger.properties b/feature-eelf/src/main/install/config/policyLogger.properties deleted file mode 100644 index d8987252..00000000 --- a/feature-eelf/src/main/install/config/policyLogger.properties +++ /dev/null @@ -1,49 +0,0 @@ -### -# ============LICENSE_START======================================================= -# feature-eelf -# ================================================================================ -# 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========================================================= -### - -################################### Set concurrentHashMap and timer info ####################### -#Timer initial delay and the delay between in milliseconds before task is to be execute. -timer.delay.time=1000 -#Timer scheduleAtFixedRate period - time in milliseconds between successive task executions. -check.interval= 30000 -#Longest time an event info can be stored in the concurrentHashMap for logging - in seconds. -event.expired.time=86400 -#Size of the concurrentHashMap which stores the event starting time, etc - when its size reaches this limit, the Timer gets executed -#to remove all expired records from this concurrentHashMap. -concurrentHashMap.limit=5000 -#Size of the concurrentHashMap - when its size drops to this point, stop the Timer -stop.check.point=2500 -################################### Set logging format ############################################# -# set EELF for EELF logging format, set LOG4J for using log4j, set SYSTEMOUT for using system.out.println -logger.type=EELF -#################################### Set level for EELF or SYSTEMOUT logging ################################## -# Set level for debug file. Set DEBUG to enable .info, .warn and .debug; set INFO for enable .info and .warn; set OFF to disable all -# Set override flag. Set TRUE for override the level setups in logback.xml. Set FALSE for using the level setups of logback.xml -override.logback.level.setup=FALSE -debugLogger.level=INFO -# Set level for metrics file. Set OFF to disable; set ON to enable -metricsLogger.level=ON -# Set level for error file. Set OFF to disable; set ON to enable -error.level=ON -# Set level for audit file. Set OFF to disable; set ON to enable -audit.level=ON -#################################### Set Policy Component ################################## -# Set DROOLS for drools PDP. Set XACML to xacml PDP -policy.component=DROOLS diff --git a/feature-eelf/src/main/java/org/openecomp/policy/drools/eelf/EelfFeature.java b/feature-eelf/src/main/java/org/openecomp/policy/drools/eelf/EelfFeature.java index de39f3a3..83e7a4be 100644 --- a/feature-eelf/src/main/java/org/openecomp/policy/drools/eelf/EelfFeature.java +++ b/feature-eelf/src/main/java/org/openecomp/policy/drools/eelf/EelfFeature.java @@ -23,63 +23,46 @@ package org.openecomp.policy.drools.eelf; import java.nio.file.Path; import java.nio.file.Paths; +import org.openecomp.policy.common.logging.eelf.Configuration; import org.openecomp.policy.common.logging.flexlogger.FlexLogger; import org.openecomp.policy.common.logging.flexlogger.Logger; import org.openecomp.policy.drools.features.PolicyEngineFeatureAPI; import org.openecomp.policy.drools.system.Main; import org.openecomp.policy.drools.system.PolicyEngine; +/** + * Feature EELF : Enables EELF Logging Libraries + */ public class EelfFeature implements PolicyEngineFeatureAPI { - - /** - * EELF logback configuration path system property - */ - public static final String EELF_LOGBACK_PATH_SYSTEM_PROPERTY = "com.att.eelf.logging.file"; - - /** - * EELF logback configuration path value - */ - public static final String EELF_LOGBACK_PATH_DEFAULT = "config"; - - /** - * EELF logback configuration file system property - */ - public static final String EELF_LOGBACK_FILE_SYSTEM_PROPERTY = "com.att.eelf.logging.path"; - - /** - * EELF logback configuration file default value - */ - public static final String EELF_LOGBACK_FILE_DEFAULT = "logback.xml"; @Override public boolean beforeBoot(PolicyEngine engine, String cliArgs[]) { String logback = System.getProperty(Main.LOGBACK_CONFIGURATION_FILE_SYSTEM_PROPERTY, - Main.LOGBACK_CONFIGURATION_FILE_DEFAULT); - + Main.LOGBACK_CONFIGURATION_FILE_DEFAULT); Path logbackPath = Paths.get(logback); - if (System.getProperty(EELF_LOGBACK_PATH_SYSTEM_PROPERTY) == null) - System.setProperty(EELF_LOGBACK_PATH_SYSTEM_PROPERTY, logbackPath.getFileName().toString()); - - if (System.getProperty(EELF_LOGBACK_FILE_SYSTEM_PROPERTY) == null) - System.setProperty(EELF_LOGBACK_FILE_SYSTEM_PROPERTY, + if (System.getProperty(Configuration.PROPERTY_LOGGING_FILE_PATH) == null) + System.setProperty(Configuration.PROPERTY_LOGGING_FILE_PATH, logbackPath.toAbsolutePath().getParent().toString()); + if (System.getProperty(Configuration.PROPERTY_LOGGING_FILE_NAME) == null) + System.setProperty(Configuration.PROPERTY_LOGGING_FILE_NAME, + logbackPath.getFileName().toString()); + Logger logger = FlexLogger.getLogger(this.getClass(), true); - logger.warn("EELF/Common Frameworks Logging Enabled"); if (logger.isInfoEnabled()) { - logger.info("EELFFeature: Property " + Main.LOGBACK_CONFIGURATION_FILE_SYSTEM_PROPERTY + "=" + + logger.info("eelf-feature: Property " + Main.LOGBACK_CONFIGURATION_FILE_SYSTEM_PROPERTY + "=" + System.getProperty(Main.LOGBACK_CONFIGURATION_FILE_SYSTEM_PROPERTY)); - logger.info("EELFFeature: Property " + EELF_LOGBACK_PATH_SYSTEM_PROPERTY + "=" + - System.getProperty(EELF_LOGBACK_PATH_SYSTEM_PROPERTY)); - logger.info("EELFFeature: Property " + EELF_LOGBACK_FILE_SYSTEM_PROPERTY + "=" + - System.getProperty(EELF_LOGBACK_FILE_SYSTEM_PROPERTY)); + logger.info("eelf-feature: Property " + Configuration.PROPERTY_LOGGING_FILE_PATH + "=" + + System.getProperty(Configuration.PROPERTY_LOGGING_FILE_PATH)); + logger.info("eelf-feature: Property " + Configuration.PROPERTY_LOGGING_FILE_NAME + "=" + + System.getProperty(Configuration.PROPERTY_LOGGING_FILE_NAME)); } return false; - }; + } @Override public int getSequenceNumber() { diff --git a/feature-eelf/src/test/java/org/openecomp/policy/drools/eelf/test/EElfTest.java b/feature-eelf/src/test/java/org/openecomp/policy/drools/eelf/test/EElfTest.java index 2ded0d0d..6023622d 100644 --- a/feature-eelf/src/test/java/org/openecomp/policy/drools/eelf/test/EElfTest.java +++ b/feature-eelf/src/test/java/org/openecomp/policy/drools/eelf/test/EElfTest.java @@ -48,7 +48,7 @@ public class EElfTest { /** * logback configuration location */ - public final static String LOGBACK_CONFIGURATION_FILE_DEFAULT = "src/main/install/config/logback.xml"; + public final static String LOGBACK_CONFIGURATION_FILE_DEFAULT = "src/main/feature/config/logback-eelf.xml"; /** * SLF4J Logger @@ -73,15 +73,15 @@ public class EElfTest { /** * Assert Log Levels are the same between an EELF Logger and an SLF4J Logger * - * @param eelfAuditLogger - * @param slf4jAuditLogger + * @param eelfLogger EELF Logger + * @param slf4jLogger SLF4J Logger */ - protected void assertLogLevels(EELFLogger eelfAuditLogger, Logger slf4jAuditLogger) { - assertTrue(slf4jAuditLogger.isDebugEnabled() == eelfAuditLogger.isDebugEnabled()); - assertTrue(slf4jAuditLogger.isInfoEnabled() == eelfAuditLogger.isInfoEnabled()); - assertTrue(slf4jAuditLogger.isErrorEnabled() == eelfAuditLogger.isErrorEnabled()); - assertTrue(slf4jAuditLogger.isWarnEnabled() == eelfAuditLogger.isWarnEnabled()); - assertTrue(slf4jAuditLogger.isTraceEnabled() == eelfAuditLogger.isTraceEnabled()); + protected void assertLogLevels(EELFLogger eelfLogger, Logger slf4jLogger) { + assertTrue(slf4jLogger.isDebugEnabled() == eelfLogger.isDebugEnabled()); + assertTrue(slf4jLogger.isInfoEnabled() == eelfLogger.isInfoEnabled()); + assertTrue(slf4jLogger.isErrorEnabled() == eelfLogger.isErrorEnabled()); + assertTrue(slf4jLogger.isWarnEnabled() == eelfLogger.isWarnEnabled()); + assertTrue(slf4jLogger.isTraceEnabled() == eelfLogger.isTraceEnabled()); } @Test @@ -117,14 +117,22 @@ public class EElfTest { EELFLogger eelfAuditLogger = EELFManager.getInstance().getAuditLogger(); Logger slf4jAuditLogger = org.slf4j.LoggerFactory.getLogger(Configuration.AUDIT_LOGGER_NAME); org.openecomp.policy.common.logging.flexlogger.Logger flexLogger = - FlexLogger.getLogger(EElfTest.class); + FlexLogger.getLogger(EElfTest.class, true); - /* generate an audit entry through both logs */ + /* generate an error entry */ + + Exception testException = new IllegalStateException("exception test"); + flexLogger.error("flex-logger exception", testException); + EELFManager.getInstance().getErrorLogger().error("eelf-logger exception", testException); + org.slf4j.LoggerFactory.getLogger(Configuration.ERROR_LOGGER_NAME).error("slf4j-logger", testException); + + + /* generate an audit entry through all logs */ flexLogger.audit("flexlogger audit"); eelfAuditLogger.info("eelf audit"); slf4jAuditLogger.info("slf4j audit"); - + /* check log levels in eelf and standard slf4j change in both directions */ /* eelf initiated */ -- cgit 1.2.3-korg