Fixes idempotency and maintence with logging 17/59417/3
authorTim Rozet <trozet@redhat.com>
Thu, 22 Jun 2017 16:54:05 +0000 (12:54 -0400)
committerDaniel Farrell <dfarrell@redhat.com>
Fri, 23 Jun 2017 19:27:20 +0000 (19:27 +0000)
ODL will modify the loggin file at run time to add qos and other
configs.  This causes a problem where when puppet runs again it uses a
template so it overrides the file and restarts ODL.  This change
abandons using a template and instead just makes sure each logger is set
in the file using file_line.

Change-Id: Idd7d565be61a73985203b64c200281c9242c87bb
Signed-off-by: Tim Rozet <trozet@redhat.com>
manifests/config.pp
spec/spec_helper.rb
spec/spec_helper_acceptance.rb
templates/org.ops4j.pax.logging.cfg.erb [deleted file]

index b99a2f02380c5459ba7d9dfc634f836cc55af6b9..97e182c984369b2c71b778ee1d8f2075be4b14dd 100644 (file)
@@ -31,14 +31,12 @@ class opendaylight::config {
   }
 
   # Set any custom log levels
-  file { 'org.ops4j.pax.logging.cfg':
-    ensure  => file,
-    path    => '/opt/opendaylight/etc/org.ops4j.pax.logging.cfg',
-    # Set user:group owners
-    owner   => 'odl',
-    group   => 'odl',
-    # Use a template to populate the content
-    content => template('opendaylight/org.ops4j.pax.logging.cfg.erb'),
+  $opendaylight::log_levels.each |$log_name, $logging_level| {
+    file_line {"logger-${log_name}":
+      ensure => present,
+      path   => '/opt/opendaylight/etc/org.ops4j.pax.logging.cfg',
+      line   => "log4j.logger.${log_name}=${logging_level}"
+    }
   }
 
   # Configure ODL HA if enabled
index 253f93f343e0fc3f2eb0e71ee304b0aa6c42a2a3..af6e87478cac45ffd3397629b53bae1f1ae24246 100644 (file)
@@ -147,52 +147,16 @@ def log_level_tests(options = {})
   if log_levels.empty?
     # Should contain log level config file
     it {
-      should contain_file('org.ops4j.pax.logging.cfg').with(
-        'ensure'      => 'file',
-        'path'        => '/opt/opendaylight/etc/org.ops4j.pax.logging.cfg',
-        'owner'   => 'odl',
-        'group'   => 'odl',
-      )
-    }
-    # Should not contain custom log level config
-    it {
-      should_not contain_file('org.ops4j.pax.logging.cfg').with(
-        'ensure'      => 'file',
-        'path'        => '/opt/opendaylight/etc/org.ops4j.pax.logging.cfg',
-        'owner'   => 'odl',
-        'group'   => 'odl',
-        'content'     => /# Log level config added by puppet-opendaylight/
-      )
+      should_not contain_file_line('logger-org.opendaylight.ovsdb')
     }
   else
-    # Should contain log level config file
-    it {
-      should contain_file('org.ops4j.pax.logging.cfg').with(
-        'ensure'      => 'file',
-        'path'        => '/opt/opendaylight/etc/org.ops4j.pax.logging.cfg',
-        'owner'   => 'odl',
-        'group'   => 'odl',
-      )
-    }
-    # Should contain custom log level config
-    it {
-      should contain_file('org.ops4j.pax.logging.cfg').with(
-        'ensure'      => 'file',
-        'path'        => '/opt/opendaylight/etc/org.ops4j.pax.logging.cfg',
-        'owner'   => 'odl',
-        'group'   => 'odl',
-        'content'     => /# Log level config added by puppet-opendaylight/
-      )
-    }
     # Verify each custom log level config entry
     log_levels.each_pair do |logger, level|
       it {
-        should contain_file('org.ops4j.pax.logging.cfg').with(
-          'ensure'      => 'file',
-          'path'        => '/opt/opendaylight/etc/org.ops4j.pax.logging.cfg',
-          'owner'   => 'odl',
-          'group'   => 'odl',
-          'content'     => /^log4j.logger.#{logger} = #{level}/
+        should contain_file_line("logger-#{logger}").with(
+          'ensure' => 'present',
+          'path' => '/opt/opendaylight/etc/org.ops4j.pax.logging.cfg',
+          'line' => "log4j.logger.#{logger}=#{level}",
         )
       }
     end
index 9abd6e58b77d0f72c4937d2f8e9457b09a0e7fe7..08b8060218d1b7b88a740551ce3474d7641991db 100644 (file)
@@ -250,13 +250,6 @@ def log_level_validations(options = {})
       it { should be_owned_by 'odl' }
       it { should be_grouped_into 'odl' }
     end
-    # Should not contain custom log level config
-    describe file('/opt/opendaylight/etc/org.ops4j.pax.logging.cfg') do
-      it { should be_file }
-      it { should be_owned_by 'odl' }
-      it { should be_grouped_into 'odl' }
-      its(:content) { should_not match /# Log level config added by puppet-opendaylight/ }
-    end
   else
     # Should contain log level config file
     describe file('/opt/opendaylight/etc/org.ops4j.pax.logging.cfg') do
@@ -264,20 +257,13 @@ def log_level_validations(options = {})
       it { should be_owned_by 'odl' }
       it { should be_grouped_into 'odl' }
     end
-    # Should not contain custom log level config
-    describe file('/opt/opendaylight/etc/org.ops4j.pax.logging.cfg') do
-      it { should be_file }
-      it { should be_owned_by 'odl' }
-      it { should be_grouped_into 'odl' }
-      its(:content) { should match /# Log level config added by puppet-opendaylight/ }
-    end
     # Verify each custom log level config entry
     log_levels.each_pair do |logger, level|
       describe file('/opt/opendaylight/etc/org.ops4j.pax.logging.cfg') do
         it { should be_file }
         it { should be_owned_by 'odl' }
         it { should be_grouped_into 'odl' }
-        its(:content) { should match /^log4j.logger.#{logger} = #{level}/ }
+        its(:content) { should match /^log4j.logger.#{logger}=#{level}/ }
       end
     end
   end
diff --git a/templates/org.ops4j.pax.logging.cfg.erb b/templates/org.ops4j.pax.logging.cfg.erb
deleted file mode 100644 (file)
index f46f995..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-################################################################################
-#
-#    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,
-#    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.
-#
-################################################################################
-
-# Root logger
-log4j.rootLogger=INFO, async, 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
-
-# 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=1MB
-log4j.appender.out.maxBackupIndex=10
-
-# 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.FileAppender
-log4j.appender.sift.appender.layout=org.apache.log4j.PatternLayout
-log4j.appender.sift.appender.layout.ConversionPattern=%d{ISO8601} | %-5.5p | %-16.16t | %-32.32c{1} | %m%n
-log4j.appender.sift.appender.file=${karaf.data}/log/$\\{bundle.name\\}.log
-log4j.appender.sift.appender.append=true
-<% scope.lookupvar('opendaylight::log_levels').each_pair do |logger, level| -%>
-
-# Log level config added by puppet-opendaylight
-log4j.logger.<%= logger %> = <%= level %>
-<% end -%>