Merge of new rebased code

Change-Id: I9b8d1f69eb3e0af1935ed8304fea4bf54c1aac47
Signed-off-by: Patrick Brady <pb071s@att.com>
diff --git a/appc-oam/appc-oam-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/appc-oam/appc-oam-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml
new file mode 100644
index 0000000..6073488
--- /dev/null
+++ b/appc-oam/appc-oam-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ============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=========================================================
+  -->
+
+<!--
+    Starter Blueprint Camel Definition appc-aai-adapter-blueprint
+-->
+<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
+                       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+                       xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd">
+
+</blueprint>
diff --git a/appc-oam/appc-oam-bundle/src/main/resources/initial/appc-oam.xml b/appc-oam/appc-oam-bundle/src/main/resources/initial/appc-oam.xml
new file mode 100644
index 0000000..6b4cd3c
--- /dev/null
+++ b/appc-oam/appc-oam-bundle/src/main/resources/initial/appc-oam.xml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ============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=========================================================
+  -->
+
+<!-- vi: set et smarttab sw=4 tabstop=4: -->
+<snapshot>
+	<configuration>
+		<data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
+			<modules xmlns="urn:opendaylight:params:xml:ns:yang:controller:config">
+				<module>
+
+					<!-- This xmlns:prefix should match the namespace in the *-oam-impl.yang
+						file The prefix: inside type should match the prefix of the yang file. -->
+					<type xmlns:prefix="org:openecomp:appc:oam:impl">
+						prefix:appc-oam-impl
+					</type>
+					<name>appc-oam-impl</name>
+
+					<!-- The following sections contain bindings to services defined in 
+						the *-oam-impl yang file. For example the rpc-registry is required because
+						we have a dependency (or augmentation) named "rpc-registry" and which binds 
+						to the md-sa-binding-registry. If you remove those dependencies from the 
+						yang file then you can remove them from here. -->
+					<rpc-registry>
+						<type
+							xmlns:binding="urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding">binding:binding-rpc-registry</type>
+						<name>binding-rpc-broker</name>
+					</rpc-registry>
+
+					<data-broker>
+						<type
+							xmlns:binding="urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding">binding:binding-async-data-broker</type>
+						<name>binding-data-broker</name>
+					</data-broker>
+
+					<notification-service>
+						<type
+							xmlns:binding="urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding">
+							binding:binding-notification-service
+						</type>
+						<name>binding-notification-broker</name>
+					</notification-service>
+				</module>
+
+			</modules>
+		</data>
+
+	</configuration>
+
+	<!-- Required capabilities are basically a listing of all modules that need 
+		to be imported before our service can be resolved. Capabilities for dependencies 
+		defined above are implied which is why we do not have define a required capability 
+		for the data broker, for example. -->
+	<required-capabilities>
+		<capability>org:openecomp:appc:oam:impl?module=appc-oam-impl&amp;revision=2017-03-03
+		</capability>
+	</required-capabilities>
+
+</snapshot>
diff --git a/appc-oam/appc-oam-bundle/src/main/resources/org/openecomp/appc/default.properties b/appc-oam/appc-oam-bundle/src/main/resources/org/openecomp/appc/default.properties
new file mode 100644
index 0000000..b22ced0
--- /dev/null
+++ b/appc-oam/appc-oam-bundle/src/main/resources/org/openecomp/appc/default.properties
@@ -0,0 +1,49 @@
+###
+# ============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=========================================================
+###
+
+#
+# This property file supplies the configuration defaults for the APP-C controller
+#
+# Default values are supplied so that all defined properties have well-known values and are 
+# valid even if a configuration file is not supplied.  This is done to ensure that a runnable,
+# stable, and defined configuration exists at all times.  The reason the defaults are supplied
+# via this property file and not in the code is so that the properties can be changed 
+# easily if needed in the future.  Use of the "getProperty(name, default)" method is 
+# discouraged because if the default value needs to be changed, everywhere in the code it 
+# is used would have to be changed.  By loading the defaults in this property file, all 
+# values can be defined in one place and support is easier.  This does mean that all 
+# properties that are defined must have a default value supplied here.  Which also means
+# this file documents all defined properties (not a bad thing either).
+#
+#--------------------------------------------------------------------------------------------
+# The path and file used to load user-supplied configuration settings, if any 
+org.openecomp.appc.bootstrap.path=/opt/openecomp/appc/data/properties,${user.home},.
+org.openecomp.appc.bootstrap.file=appc.properties
+
+appc.application.name=APPC
+
+#
+# The path to search for logging configuration document, and the name of the document 
+#
+org.openecomp.appc.logging.path=${user.home},etc,../etc,.
+org.openecomp.appc.logging.file=logback.xml
+
+
diff --git a/appc-oam/appc-oam-bundle/src/main/resources/org/openecomp/appc/logback.xml b/appc-oam/appc-oam-bundle/src/main/resources/org/openecomp/appc/logback.xml
new file mode 100644
index 0000000..8d47c6c
--- /dev/null
+++ b/appc-oam/appc-oam-bundle/src/main/resources/org/openecomp/appc/logback.xml
@@ -0,0 +1,284 @@
+<!--
+  ============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=========================================================
+  -->
+
+<configuration scan="true" scanPeriod="3 seconds" debug="true">
+  <!--<jmxConfigurator /> -->
+  <property name="logDirectory" value="logs" />
+  <property name="debugLogDirectory" value="debug-logs" />
+  <!-- Example evaluator filter applied against console appender -->
+  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+    <encoder>
+      <pattern>%d{MM/dd-HH:mm:ss.SSS} [%-16thread] %.-5level
+        %-36.36logger - %msg%n</pattern>
+    </encoder>
+  </appender>
+
+  <!-- ============================================================================ -->
+  <!-- CDP Appenders -->
+  <!-- ============================================================================ -->
+
+  <!-- The CDPAppender is used to record events to the general CDP application 
+    log. This is the log file used by default as the application root log, if 
+    no other log is defined or the application creates specialized loggers of 
+    the form com.att.cdp.x.y.z where the name occupied by the "x" is NOT security, 
+    perf, server, coordinator, gui, or policy. These are defined as specialization 
+    loggers for various business purposes. -->
+  <appender name="CDP"
+    class="ch.qos.logback.core.rolling.RollingFileAppender">
+    <file>${logDirectory}/cdp.log</file>
+    <rollingPolicy
+      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+      <fileNamePattern>${logDirectory}/cdp.%i.log.zip
+      </fileNamePattern>
+      <minIndex>1</minIndex>
+      <maxIndex>9</maxIndex>
+    </rollingPolicy>
+    <triggeringPolicy
+      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+      <maxFileSize>5MB</maxFileSize>
+    </triggeringPolicy>
+    <encoder>
+      <!-- <pattern>"%d{HH:mm:ss.SSS} [%thread] %-5level %logger{1024} - 
+        %msg%n"</pattern> -->
+      <pattern>%d{MM/dd-HH:mm:ss.SSS} [%-16thread] %.-5level
+        %-36.36logger [%X{User} %X{RemoteHost} %X{RequestId} %X{Method}
+        %X{Path}] - %msg%n</pattern>
+    </encoder>
+  </appender>
+  <appender name="asyncCDP" class="ch.qos.logback.classic.AsyncAppender">
+    <queueSize>256</queueSize>
+    <appender-ref ref="CDP" />
+  </appender>
+
+  <!-- CDP Security Appender. This appender is used to record security events 
+    to the security log file. Security events are separate from other loggers 
+    in CDP so that security log records can be captured and managed in a secure 
+    way separate from the other logs. This appender is set to never discard any 
+    events. -->
+  <appender name="CDPSecurity"
+    class="ch.qos.logback.core.rolling.RollingFileAppender">
+    <file>${logDirectory}/cdp-security.log</file>
+    <rollingPolicy
+      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+      <fileNamePattern>${logDirectory}/cdp-security.%i.log.zip
+      </fileNamePattern>
+      <minIndex>1</minIndex>
+      <maxIndex>9</maxIndex>
+    </rollingPolicy>
+    <triggeringPolicy
+      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+      <maxFileSize>5MB</maxFileSize>
+    </triggeringPolicy>
+    <encoder>
+      <!-- <pattern>"%d{HH:mm:ss.SSS} [%thread] %-5level %logger{1024} - 
+        %msg%n"</pattern> -->
+      <pattern>%d{MM/dd-HH:mm:ss.SSS} [%-16thread] %.-5level
+        %-36.36logger [%X{User} %X{RemoteHost} %X{RequestId} %X{Method}
+        %X{Path}] - %msg%n</pattern>
+    </encoder>
+  </appender>
+  <appender name="asyncCDPSecurity" class="ch.qos.logback.classic.AsyncAppender">
+    <queueSize>256</queueSize>
+    <discardingThreshold>0</discardingThreshold>
+    <appender-ref ref="CDPSecurity" />
+  </appender>
+
+  <!-- CDP Performance Appender. This appender is used to record performance 
+    records. -->
+  <appender name="CDPPerformance"
+    class="ch.qos.logback.core.rolling.RollingFileAppender">
+    <file>${logDirectory}/cdp-performance.log</file>
+    <rollingPolicy
+      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+      <fileNamePattern>${logDirectory}/cdp-performance.%i.log.zip
+      </fileNamePattern>
+      <minIndex>1</minIndex>
+      <maxIndex>9</maxIndex>
+    </rollingPolicy>
+    <triggeringPolicy
+      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+      <maxFileSize>5MB</maxFileSize>
+    </triggeringPolicy>
+    <encoder>
+      <outputPatternAsHeader>true</outputPatternAsHeader>
+      <pattern>%d{MM/dd-HH:mm:ss.SSS} [%-16thread] %.-5level
+        %-36.36logger [%X{User} %X{RemoteHost} %X{RequestId} %X{Method}
+        %X{Path}] - %msg%n</pattern>
+    </encoder>
+  </appender>
+  <appender name="asyncCDPPerformance" class="ch.qos.logback.classic.AsyncAppender">
+    <queueSize>256</queueSize>
+    <appender-ref ref="CDPPerformance" />
+  </appender>
+
+  <!-- CDP Server Appender. This appender is used to record Server related 
+    logging events. The Server logger and appender are specializations of the 
+    CDP application root logger and appender. This can be used to segregate Server 
+    events from other components, or it can be eliminated to record these events 
+    as part of the application root log. -->
+  <appender name="CDPServer"
+    class="ch.qos.logback.core.rolling.RollingFileAppender">
+    <file>${logDirectory}/cdp-server.log</file>
+    <rollingPolicy
+      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+      <fileNamePattern>${logDirectory}/cdp-server.%i.log.zip
+      </fileNamePattern>
+      <minIndex>1</minIndex>
+      <maxIndex>9</maxIndex>
+    </rollingPolicy>
+    <triggeringPolicy
+      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+      <maxFileSize>5MB</maxFileSize>
+    </triggeringPolicy>
+    <encoder>
+      <!-- <pattern>"%d{HH:mm:ss.SSS} [%thread] %-5level %logger{1024} - 
+        %msg%n"</pattern> -->
+      <pattern>%d{MM/dd-HH:mm:ss.SSS} [%-16thread] %.-5level
+        %-36.36logger [%X{User} %X{RemoteHost} %X{RequestId} %X{Method}
+        %X{Path}] - %msg%n</pattern>
+    </encoder>
+  </appender>
+  <appender name="asyncCDPServer" class="ch.qos.logback.classic.AsyncAppender">
+    <queueSize>256</queueSize>
+    <appender-ref ref="CDPServer" />
+  </appender>
+
+  <!-- CDP Coordinator Appender. This appender is used to record Coordinator 
+    related logging events. The Coordinator logger and appender are specializations 
+    of the CDP application root logger and appender. This can be used to segregate 
+    Coordinator events from other components, or it can be eliminated to record 
+    these events as part of the application root log. -->
+  <appender name="CDPCoordinator"
+    class="ch.qos.logback.core.rolling.RollingFileAppender">
+    <file>${logDirectory}/cdp-coordinator.log</file>
+    <rollingPolicy
+      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+      <fileNamePattern>${logDirectory}/cdp-coordinator.%i.log.zip
+      </fileNamePattern>
+      <minIndex>1</minIndex>
+      <maxIndex>9</maxIndex>
+    </rollingPolicy>
+    <triggeringPolicy
+      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+      <maxFileSize>5MB</maxFileSize>
+    </triggeringPolicy>
+    <encoder>
+      <!-- <pattern>"%d{HH:mm:ss.SSS} [%thread] %-5level %logger{1024} - 
+        %msg%n"</pattern> -->
+      <pattern>%d{MM/dd-HH:mm:ss.SSS} [%-16thread] %.-5level
+        %-36.36logger - %msg%n</pattern>
+    </encoder>
+  </appender>
+  <appender name="asyncCDPCoordinator" class="ch.qos.logback.classic.AsyncAppender">
+    <queueSize>256</queueSize>
+    <appender-ref ref="CDPCoordinator" />
+  </appender>
+
+  <!-- CDP Policy Appender. This appender is used to record Policy engine 
+    related logging events. The Policy logger and appender are specializations 
+    of the CDP application root logger and appender. This can be used to segregate 
+    Policy engine events from other components, or it can be eliminated to record 
+    these events as part of the application root log. -->
+  <appender name="CDPPolicy"
+    class="ch.qos.logback.core.rolling.RollingFileAppender">
+    <file>${logDirectory}/cdp-policy.log</file>
+    <rollingPolicy
+      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+      <fileNamePattern>${logDirectory}/cdp-policy.%i.log.zip
+      </fileNamePattern>
+      <minIndex>1</minIndex>
+      <maxIndex>9</maxIndex>
+    </rollingPolicy>
+    <triggeringPolicy
+      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+      <maxFileSize>5MB</maxFileSize>
+    </triggeringPolicy>
+    <encoder>
+      <!-- <pattern>"%d{HH:mm:ss.SSS} [%thread] %-5level %logger{1024} - 
+        %msg%n"</pattern> -->
+      <pattern>%d{MM/dd-HH:mm:ss.SSS} [%-16thread] %.-5level
+        %-36.36logger - %msg%n</pattern>
+    </encoder>
+  </appender>
+  <appender name="asyncCDPPolicy" class="ch.qos.logback.classic.AsyncAppender">
+    <queueSize>256</queueSize>
+    <appender-ref ref="CDPPolicy" />
+  </appender>
+  <appender name="CommandExecutor"
+            class="ch.qos.logback.core.rolling.RollingFileAppender">
+    <file>${debugLogDirectory}/appc-debug.log</file>
+    <rollingPolicy
+            class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+      <fileNamePattern>${logDirectory}/command-executor.%i.log.zip
+      </fileNamePattern>
+      <minIndex>1</minIndex>
+      <maxIndex>9</maxIndex>
+    </rollingPolicy>
+    <triggeringPolicy
+            class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+      <maxFileSize>5MB</maxFileSize>
+    </triggeringPolicy>
+    <encoder>
+      <!--<Pattern>
+        %d{yyyy-MM-dd'T'HH:mm:ss.SSSZ}|%X{RequestID}|%X{ServiceInstanceID}|%thread|%X{ServerName}|%X{ServiceName}|%X{UUID}|%-5.5p|%X{Severity}|%X{ServerIPAddress}|%X{Server}|%X{IPAddress}|[%c{3}]|%X{Timer}| - %msg%n
+      </Pattern>-->
+      <Pattern>
+        %d{MM/dd-HH:mm:ss.SSS}|%X{RequestId}|%X{ServiceInstanceId}|%t|%X{ServiceName} - %X{bundle.id} - %X{bundle.name} - %X{bundle.version}|%X{InstanceUUID}|%-5.5p|%X{AlertSeverity}|%X{ServerIPAddress}|%X{ServerFQDN}|%X{RemoteHost}|%X{Timer}|[%c{3}]|%m%n
+      </Pattern>
+    </encoder>
+  </appender>
+
+  <logger name="org.openecomp.appc" level="DEBUG" additivity="false">
+    <appender-ref ref="CommandExecutor" />
+  </logger>
+
+  <!-- ============================================================================ -->
+  <!-- CDP loggers -->
+  <!-- ============================================================================ -->
+  <logger name="com.att.cdp" level="info" additivity="false">
+    <appender-ref ref="asyncCDP" />
+  </logger>
+  <logger name="com.att.cdp.security" level="info" additivity="false">
+    <appender-ref ref="asyncCDPSecurity" />
+  </logger>
+  <logger name="com.att.cdp.perf" level="info" additivity="false">
+    <appender-ref ref="asyncCDPPerformance" />
+  </logger>
+  <logger name="com.att.cdp.server" level="debug" additivity="false">
+    <appender-ref ref="asyncCDPServer" />
+  </logger>
+  <logger name="com.att.cdp.coordinator" level="info" additivity="false">
+    <appender-ref ref="asyncCDPCoordinator" />
+  </logger>
+  <logger name="com.att.cdp.policy" level="info" additivity="false">
+    <appender-ref ref="asyncCDPPolicy" />
+  </logger>
+
+  <!-- The OpenStack connector logger -->
+  <logger name="os" level="debug" additivity="false">
+    <appender-ref ref="asyncCDPServer" />
+  </logger>
+
+  <root level="WARN">
+    <appender-ref ref="STDOUT" />
+  </root>
+
+</configuration>
diff --git a/appc-oam/appc-oam-bundle/src/main/resources/org/openecomp/appc/org.ops4j.pax.logging.cfg b/appc-oam/appc-oam-bundle/src/main/resources/org/openecomp/appc/org.ops4j.pax.logging.cfg
new file mode 100644
index 0000000..be58632
--- /dev/null
+++ b/appc-oam/appc-oam-bundle/src/main/resources/org/openecomp/appc/org.ops4j.pax.logging.cfg
@@ -0,0 +1,144 @@
+    ################################################################################
+    #
+    #    Licensed to the Apache Software Foundation (ASF) under one or more
+    #    contributor license agreements.  See the NOTICE file distributed with
+    #    this work for additional information regarding copyright ownership.
+    #    The ASF licenses this file to You 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,
+    #    WITH WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    #    See the License for the specific language governing permissions and
+    #    limitations under the License.
+    #
+    ################################################################################
+
+    # Root
+    #log4j.rootLogger=TRACE, osgi:VmLogAppender
+    log4j.rootLogger=TRACE, out, sift, osgi:*
+    log4j.throwableRenderer=org.apache.log4j.OsgiThrowableRenderer
+
+    # CONSOLE appender not used by default
+    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+    log4j.appender.stdout.layout.ConversionPattern=%d{ISO8601} | %-5.5p | %-16.16t | %-32.32c{1} | %X{bundle.id} - %X{bundle.name} - %X{bundle.version} | %m%n
+
+    # Async appender forwarding to file appender
+    log4j.appender.async=org.apache.log4j.AsyncAppender
+    log4j.appender.async.appenders=out
+
+    # Karaf appenders
+    # File appender
+    log4j.appender.out=org.apache.log4j.RollingFileAppender
+    log4j.appender.out.layout=org.apache.log4j.PatternLayout
+    log4j.appender.out.layout.ConversionPattern=%d{ISO8601} | %-5.5p | %-16.16t | %-32.32c{1} | %X{bundle.id} - %X{bundle.name} - %X{bundle.version} | %m%n
+    log4j.appender.out.file=${karaf.data}/log/karaf.log
+    log4j.appender.out.append=true
+    log4j.appender.out.maxFileSize=10MB
+    log4j.appender.out.maxBackupIndex=100
+
+
+    # Sift appender
+    log4j.appender.sift=org.apache.log4j.sift.MDCSiftingAppender
+    log4j.appender.sift.key=bundle.name
+    log4j.appender.sift.default=karaf
+    log4j.appender.sift.appender=org.apache.log4j.RollingFileAppender
+    log4j.appender.sift.appender.layout=org.apache.log4j.PatternLayout
+    log4j.appender.sift.appender.layout.ConversionPattern=%d{MM/dd-HH:mm:ss.SSS}|%X{RequestId}|%X{ServiceInstanceId}|%t|%X{ServiceName} - %X{bundle.id} - %X{bundle.name} - %X{bundle.version}|%-5.5p|%X{AlertSeverity}|%X{ServerFQDN}|%X{ServerIPAddress}|[%c{3}]|%m%n
+    log4j.appender.sift.appender.file=${karaf.data}/log/eelf/karaf.log
+    log4j.appender.sift.appender.append=true
+
+    log4j.category.org.opendaylight.controller.netconf.persist.impl.osgi.ConfigPusherImpl=DEBUG
+    log4j.category.org.opendaylight.controller.netconf.persist.impl.osgi.ConfigPersisterActivator=DEBUG
+
+
+    #ECOMP Debug appender
+    log4j.appender.debug=org.apache.log4j.RollingFileAppender
+    log4j.appender.debug.key=bundle.name
+    log4j.appender.debug.default=karaf
+
+    log4j.appender.debug.appName=EELFDebug
+    log4j.appender.debug.layout=org.apache.log4j.PatternLayout
+    log4j.appender.debug.layout.ConversionPattern=%d{yyyy-MM-dd'T'hh:mm:ss.SSSXXX}|%X{RequestId}|%m%n
+    #log4j.appender.debug.filter.f1=org.apache.log4j.varia.LevelRangeFilter
+    #log4j.appender.debug.filter.f1.LevelMax=WARN
+    #log4j.appender.debug.filter.f1.LevelMin=TRACE
+
+    
+    log4j.appender.debug.file=${karaf.data}/log/APPC/appc-debug.log
+    log4j.appender.debug.append=true
+    log4j.appender.debug.maxFileSize=100MB
+    log4j.appender.debug.maxBackupIndex=10
+
+
+    #Error appender
+    log4j.appender.error=org.apache.log4j.RollingFileAppender
+    log4j.appender.error.appName=EELFError
+    log4j.appender.error.File=${karaf.data}/log/APPC/appc-error.log
+    log4j.appender.error.Threshold=ERROR
+    log4j.appender.error.MaxBackupIndex=1
+    log4j.appender.error.MaxFileSize=100MB
+    log4j.appender.error.layout=org.apache.log4j.PatternLayout
+    log4j.appender.error.layout.ConversionPattern=%d{yyyy-MM-dd'T'hh:mm:ss.SSSXXX}|%X{RequestId}|%t|%X{ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%-5.5p|%X{ErrorCode}|%X{ErrorDescription}|%m%n
+
+    #Metrics appender
+    log4j.appender.metric=org.apache.log4j.RollingFileAppender
+    log4j.appender.metric.appName=EELFMetrics
+    log4j.appender.metric.File=${karaf.data}/log/APPC/appc-metric.log
+    log4j.appender.metric.MaxBackupIndex=1
+    log4j.appender.metric.MaxFileSize=100MB
+    log4j.appender.metric.layout=org.apache.log4j.PatternLayout
+    log4j.appender.metric.layout.ConversionPattern=%X{BeginTimestamp}|%X{EndTimestamp}|%X{RequestId}|%X{ServiceInstanceId}|%t|%X{ServerName}|%X{ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDescription}|%X{InstanceUUID}|%-5.5p|%X{Severity}|%X{ServerIPAddress}|%X{ElapsedTime}|%X{ServerFQDN}|%X{ClientIPAddress}|%X{ClassName}||%X{ProcessKey}|%X{TargetVirtualEntity}|%X{CustomField1}|%X{CustomField2}|%X{CustomField3}|%X{CustomField4}|%m%n
+
+    #Audit appender
+    log4j.appender.audit=org.apache.log4j.RollingFileAppender
+    log4j.appender.audit.appName=EELFAudit
+    log4j.appender.audit.File=${karaf.data}/log/APPC/appc-audit.log
+    log4j.appender.audit.MaxBackupIndex=1
+    log4j.appender.audit.MaxFileSize=100MB
+    log4j.appender.audit.layout=org.apache.log4j.PatternLayout
+    log4j.appender.audit.layout.ConversionPattern=%X{BeginTimestamp}|%X{EndTimestamp}|%X{RequestId}|%X{ServiceInstanceId}|%t|%X{ServerName}|%X{ServiceName}|%X{PartnerName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDescription}|%X{InstanceUUID}|%-5.5p|%X{Severity}|%X{ServerIPAddress}|%X{ElapsedTime}|%X{ServerFQDN}|%X{ClientIPAddress}|%X{ClassName}||%X{ProcessKey}|%X{CustomField1}|%X{CustomField2}|%X{CustomField3}|%X{CustomField4}|%m%n
+
+    #Loggers
+    #Routing of all messages from root logger
+    log4j.logger.com.att=TRACE, debug, error
+    #Store to the same log file messages from upper level appender or not
+    log4j.additivity.com.att=false
+
+    #EELFManager loggers
+    #EELF parent logger
+    log4j.logger.com.att.eelf=TRACE, debug
+    log4j.additivity.com.att.eelf=false
+ 
+    #Audit logger routing
+    log4j.logger.com.att.eelf.audit=DEBUG, audit
+    log4j.additivity.com.att.eelf.audit=false     
+    
+    #Metric logger routing
+    log4j.logger.com.att.eelf.metrics=DEBUG, metric
+    log4j.additivity.com.att.eelf.metrics=false
+
+    #Performance logger routing
+    log4j.logger.com.att.eelf.perf=DEBUG, metric
+    log4j.additivity.com.att.eelf.perf=false 
+
+    #Server logger routing
+    log4j.logger.com.att.eelf.server=DEBUG, debug
+    log4j.additivity.com.att.eelf.server=false 
+
+    #Policy logger routing
+    log4j.logger.com.att.eelf.policy=DEBUG, debug
+    log4j.additivity.com.att.eelf.policy=false 
+ 
+    #Error logger routing
+    log4j.logger.com.att.eelf.error=DEBUG, error
+    log4j.additivity.com.att.eelf.error=false 
+
+    #Debug logger routing
+    log4j.logger.com.att.eelf.debug=DEBUG, debug
+    log4j.additivity.com.att.eelf.debug=false 
+