forked from redhat-openstack/openstack-puppet-modules
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
There is a range of extended logging options in Openstack services that use openstack.common.logger (Ceilometer, Cinder, Heat, Keystone, Nova). Adding keystone::logging to support them. This change is identical to <https://review.openstack.org/#/c/113560/> but it applies to puppet-keystone instead of puppet-ceilometer. No blueprint/spec, as discussed in the IRC meeting on 08-11-2014. Change-Id: I88fcf025b9467090d21d1a10a5af9b270f8ef11e
- Loading branch information
Showing
2 changed files
with
315 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,208 @@ | ||
# Class keystone::logging | ||
# | ||
# keystone extended logging configuration | ||
# | ||
# == parameters | ||
# | ||
# [*logging_context_format_string*] | ||
# (optional) Format string to use for log messages with context. | ||
# Defaults to undef. | ||
# Example: '%(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s\ | ||
# [%(request_id)s %(user_identity)s] %(instance)s%(message)s' | ||
# | ||
# [*logging_default_format_string*] | ||
# (optional) Format string to use for log messages without context. | ||
# Defaults to undef. | ||
# Example: '%(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s\ | ||
# [-] %(instance)s%(message)s' | ||
# | ||
# [*logging_debug_format_suffix*] | ||
# (optional) Formatted data to append to log format when level is DEBUG. | ||
# Defaults to undef. | ||
# Example: '%(funcName)s %(pathname)s:%(lineno)d' | ||
# | ||
# [*logging_exception_prefix*] | ||
# (optional) Prefix each line of exception output with this format. | ||
# Defaults to undef. | ||
# Example: '%(asctime)s.%(msecs)03d %(process)d TRACE %(name)s %(instance)s' | ||
# | ||
# [*log_config_append*] | ||
# The name of an additional logging configuration file. | ||
# Defaults to undef. | ||
# See https://docs.python.org/2/howto/logging.html | ||
# | ||
# [*default_log_levels*] | ||
# (optional) Hash of logger (keys) and level (values) pairs. | ||
# Defaults to undef. | ||
# Example: | ||
# { 'amqp' => 'WARN', 'amqplib' => 'WARN', 'boto' => 'WARN', | ||
# 'qpid' => 'WARN', 'sqlalchemy' => 'WARN', 'suds' => 'INFO', | ||
# 'iso8601' => 'WARN', | ||
# 'requests.packages.urllib3.connectionpool' => 'WARN' } | ||
# | ||
# [*publish_errors*] | ||
# (optional) Publish error events (boolean value). | ||
# Defaults to undef (false if unconfigured). | ||
# | ||
# [*fatal_deprecations*] | ||
# (optional) Make deprecations fatal (boolean value) | ||
# Defaults to undef (false if unconfigured). | ||
# | ||
# [*instance_format*] | ||
# (optional) If an instance is passed with the log message, format it | ||
# like this (string value). | ||
# Defaults to undef. | ||
# Example: '[instance: %(uuid)s] ' | ||
# | ||
# [*instance_uuid_format*] | ||
# (optional) If an instance UUID is passed with the log message, format | ||
# it like this (string value). | ||
# Defaults to undef. | ||
# Example: instance_uuid_format='[instance: %(uuid)s] ' | ||
|
||
# [*log_date_format*] | ||
# (optional) Format string for %%(asctime)s in log records. | ||
# Defaults to undef. | ||
# Example: 'Y-%m-%d %H:%M:%S' | ||
|
||
class keystone::logging( | ||
$logging_context_format_string = undef, | ||
$logging_default_format_string = undef, | ||
$logging_debug_format_suffix = undef, | ||
$logging_exception_prefix = undef, | ||
$log_config_append = undef, | ||
$default_log_levels = undef, | ||
$publish_errors = undef, | ||
$fatal_deprecations = undef, | ||
$instance_format = undef, | ||
$instance_uuid_format = undef, | ||
$log_date_format = undef, | ||
) { | ||
|
||
if $logging_context_format_string { | ||
keystone_config { | ||
'DEFAULT/logging_context_format_string' : | ||
value => $logging_context_format_string; | ||
} | ||
} | ||
else { | ||
keystone_config { | ||
'DEFAULT/logging_context_format_string' : ensure => absent; | ||
} | ||
} | ||
|
||
if $logging_default_format_string { | ||
keystone_config { | ||
'DEFAULT/logging_default_format_string' : | ||
value => $logging_default_format_string; | ||
} | ||
} | ||
else { | ||
keystone_config { | ||
'DEFAULT/logging_default_format_string' : ensure => absent; | ||
} | ||
} | ||
|
||
if $logging_debug_format_suffix { | ||
keystone_config { | ||
'DEFAULT/logging_debug_format_suffix' : | ||
value => $logging_debug_format_suffix; | ||
} | ||
} | ||
else { | ||
keystone_config { | ||
'DEFAULT/logging_debug_format_suffix' : ensure => absent; | ||
} | ||
} | ||
|
||
if $logging_exception_prefix { | ||
keystone_config { | ||
'DEFAULT/logging_exception_prefix' : value => $logging_exception_prefix; | ||
} | ||
} | ||
else { | ||
keystone_config { | ||
'DEFAULT/logging_exception_prefix' : ensure => absent; | ||
} | ||
} | ||
|
||
if $log_config_append { | ||
keystone_config { | ||
'DEFAULT/log_config_append' : value => $log_config_append; | ||
} | ||
} | ||
else { | ||
keystone_config { | ||
'DEFAULT/log_config_append' : ensure => absent; | ||
} | ||
} | ||
|
||
if $default_log_levels { | ||
keystone_config { | ||
'DEFAULT/default_log_levels' : | ||
value => join(sort(join_keys_to_values($default_log_levels, '=')), ','); | ||
} | ||
} | ||
else { | ||
keystone_config { | ||
'DEFAULT/default_log_levels' : ensure => absent; | ||
} | ||
} | ||
|
||
if $publish_errors { | ||
keystone_config { | ||
'DEFAULT/publish_errors' : value => $publish_errors; | ||
} | ||
} | ||
else { | ||
keystone_config { | ||
'DEFAULT/publish_errors' : ensure => absent; | ||
} | ||
} | ||
|
||
if $fatal_deprecations { | ||
keystone_config { | ||
'DEFAULT/fatal_deprecations' : value => $fatal_deprecations; | ||
} | ||
} | ||
else { | ||
keystone_config { | ||
'DEFAULT/fatal_deprecations' : ensure => absent; | ||
} | ||
} | ||
|
||
if $instance_format { | ||
keystone_config { | ||
'DEFAULT/instance_format' : value => $instance_format; | ||
} | ||
} | ||
else { | ||
keystone_config { | ||
'DEFAULT/instance_format' : ensure => absent; | ||
} | ||
} | ||
|
||
if $instance_uuid_format { | ||
keystone_config { | ||
'DEFAULT/instance_uuid_format' : value => $instance_uuid_format; | ||
} | ||
} | ||
else { | ||
keystone_config { | ||
'DEFAULT/instance_uuid_format' : ensure => absent; | ||
} | ||
} | ||
|
||
if $log_date_format { | ||
keystone_config { | ||
'DEFAULT/log_date_format' : value => $log_date_format; | ||
} | ||
} | ||
else { | ||
keystone_config { | ||
'DEFAULT/log_date_format' : ensure => absent; | ||
} | ||
} | ||
|
||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,107 @@ | ||
require 'spec_helper' | ||
|
||
describe 'keystone::logging' do | ||
|
||
let :params do | ||
{ | ||
} | ||
end | ||
|
||
let :log_params do | ||
{ | ||
:logging_context_format_string => '%(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [%(request_id)s %(user_identity)s] %(instance)s%(message)s', | ||
:logging_default_format_string => '%(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [-] %(instance)s%(message)s', | ||
:logging_debug_format_suffix => '%(funcName)s %(pathname)s:%(lineno)d', | ||
:logging_exception_prefix => '%(asctime)s.%(msecs)03d %(process)d TRACE %(name)s %(instance)s', | ||
:log_config_append => '/etc/keystone/logging.conf', | ||
:publish_errors => true, | ||
:default_log_levels => { | ||
'amqp' => 'WARN', 'amqplib' => 'WARN', 'boto' => 'WARN', | ||
'qpid' => 'WARN', 'sqlalchemy' => 'WARN', 'suds' => 'INFO', | ||
'iso8601' => 'WARN', | ||
'requests.packages.urllib3.connectionpool' => 'WARN' }, | ||
:fatal_deprecations => true, | ||
:instance_format => '[instance: %(uuid)s] ', | ||
:instance_uuid_format => '[instance: %(uuid)s] ', | ||
:log_date_format => '%Y-%m-%d %H:%M:%S', | ||
} | ||
end | ||
|
||
shared_examples_for 'keystone-logging' do | ||
|
||
context 'with extended logging options' do | ||
before { params.merge!( log_params ) } | ||
it_configures 'logging params set' | ||
end | ||
|
||
context 'without extended logging options' do | ||
it_configures 'logging params unset' | ||
end | ||
|
||
end | ||
|
||
shared_examples_for 'logging params set' do | ||
it 'enables logging params' do | ||
should contain_keystone_config('DEFAULT/logging_context_format_string').with_value( | ||
'%(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [%(request_id)s %(user_identity)s] %(instance)s%(message)s') | ||
|
||
should contain_keystone_config('DEFAULT/logging_default_format_string').with_value( | ||
'%(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [-] %(instance)s%(message)s') | ||
|
||
should contain_keystone_config('DEFAULT/logging_debug_format_suffix').with_value( | ||
'%(funcName)s %(pathname)s:%(lineno)d') | ||
|
||
should contain_keystone_config('DEFAULT/logging_exception_prefix').with_value( | ||
'%(asctime)s.%(msecs)03d %(process)d TRACE %(name)s %(instance)s') | ||
|
||
should contain_keystone_config('DEFAULT/log_config_append').with_value( | ||
'/etc/keystone/logging.conf') | ||
should contain_keystone_config('DEFAULT/publish_errors').with_value( | ||
true) | ||
|
||
should contain_keystone_config('DEFAULT/default_log_levels').with_value( | ||
'amqp=WARN,amqplib=WARN,boto=WARN,iso8601=WARN,qpid=WARN,requests.packages.urllib3.connectionpool=WARN,sqlalchemy=WARN,suds=INFO') | ||
|
||
should contain_keystone_config('DEFAULT/fatal_deprecations').with_value( | ||
true) | ||
|
||
should contain_keystone_config('DEFAULT/instance_format').with_value( | ||
'[instance: %(uuid)s] ') | ||
|
||
should contain_keystone_config('DEFAULT/instance_uuid_format').with_value( | ||
'[instance: %(uuid)s] ') | ||
|
||
should contain_keystone_config('DEFAULT/log_date_format').with_value( | ||
'%Y-%m-%d %H:%M:%S') | ||
end | ||
end | ||
|
||
|
||
shared_examples_for 'logging params unset' do | ||
[ :logging_context_format_string, :logging_default_format_string, | ||
:logging_debug_format_suffix, :logging_exception_prefix, | ||
:log_config_append, :publish_errors, | ||
:default_log_levels, :fatal_deprecations, | ||
:instance_format, :instance_uuid_format, | ||
:log_date_format, ].each { |param| | ||
it { should contain_keystone_config("DEFAULT/#{param}").with_ensure('absent') } | ||
} | ||
end | ||
|
||
context 'on Debian platforms' do | ||
let :facts do | ||
{ :osfamily => 'Debian' } | ||
end | ||
|
||
it_configures 'keystone-logging' | ||
end | ||
|
||
context 'on RedHat platforms' do | ||
let :facts do | ||
{ :osfamily => 'RedHat' } | ||
end | ||
|
||
it_configures 'keystone-logging' | ||
end | ||
|
||
end |