From 97e4579cb8c1eb4aa8d2a01a37754f0f4d6ca607 Mon Sep 17 00:00:00 2001 From: Francois Deppierraz Date: Wed, 4 Sep 2013 15:35:58 +0200 Subject: [PATCH] Add syslog support to the openstack module This change depends on the syslog implementation in all other dependent modules. Change-Id: Id500009a5308100775f1a35e20f7c089ff5a319b --- manifests/cinder/all.pp | 4 + manifests/cinder/controller.pp | 4 + manifests/controller.pp | 23 +++ manifests/glance.pp | 8 ++ manifests/keystone.pp | 14 +- manifests/neutron.pp | 12 ++ manifests/nova/controller.pp | 13 ++ spec/classes/openstack_cinder_all_spec.rb | 15 ++ .../openstack_cinder_controller_spec.rb | 18 +++ spec/classes/openstack_controller_spec.rb | 131 +++++++++++++++++- spec/classes/openstack_glance_spec.rb | 24 ++++ spec/classes/openstack_keystone_spec.rb | 19 ++- spec/classes/openstack_neutron_spec.rb | 15 ++ .../classes/openstack_nova_controller_spec.rb | 20 ++- 14 files changed, 312 insertions(+), 8 deletions(-) diff --git a/manifests/cinder/all.pp b/manifests/cinder/all.pp index 8e60ade..c31a7e1 100644 --- a/manifests/cinder/all.pp +++ b/manifests/cinder/all.pp @@ -34,6 +34,8 @@ class openstack::cinder::all( $rbd_secret_uuid = false, $setup_test_volume = false, $manage_volumes = true, + $use_syslog = false, + $log_facility = 'LOG_USER', $debug = false, $verbose = false ) { @@ -58,6 +60,8 @@ class openstack::cinder::all( rabbit_virtual_host => $rabbit_virtual_host, package_ensure => $package_ensure, api_paste_config => $api_paste_config, + use_syslog => $use_syslog, + log_facility => $log_facility, debug => $debug, verbose => $verbose, } diff --git a/manifests/cinder/controller.pp b/manifests/cinder/controller.pp index 38b5b20..856142f 100644 --- a/manifests/cinder/controller.pp +++ b/manifests/cinder/controller.pp @@ -29,6 +29,8 @@ class openstack::cinder::controller( $scheduler_driver = 'cinder.scheduler.simple.SimpleScheduler', $api_enabled = true, $scheduler_enabled = true, + $use_syslog = false, + $log_facility = 'LOG_USER', $debug = false, $verbose = false ) { @@ -53,6 +55,8 @@ class openstack::cinder::controller( rabbit_virtual_host => $rabbit_virtual_host, package_ensure => $package_ensure, api_paste_config => $api_paste_config, + use_syslog => $use_syslog, + log_facility => $log_facility, debug => $debug, verbose => $verbose, } diff --git a/manifests/controller.pp b/manifests/controller.pp index d01c1d5..f73fd98 100644 --- a/manifests/controller.pp +++ b/manifests/controller.pp @@ -125,6 +125,14 @@ # The swift admin endpoint address used to populate the keystone service catalog. # (optional). Defaults to false. # +# [use_syslog] +# Use syslog for logging. +# (Optional) Defaults to false. +# +# [log_facility] +# Syslog facility to receive log lines. +# (Optional) Defaults to LOG_USER. +# # === Examples # # class { 'openstack::controller': @@ -274,6 +282,9 @@ class openstack::controller ( $swift_public_address = false, $swift_internal_address = false, $swift_admin_address = false, + # Syslog + $use_syslog = false, + $log_facility = 'LOG_USER', $enabled = true ) { @@ -386,6 +397,8 @@ class openstack::controller ( swift_admin_address => $swift_admin_address, enabled => $enabled, bind_host => $keystone_bind_address, + use_syslog => $use_syslog, + log_facility => $log_facility, } @@ -409,6 +422,8 @@ class openstack::controller ( swift_store_key => $swift_store_key, rbd_store_user => $glance_rbd_store_user, rbd_store_pool => $glance_rbd_store_pool, + use_syslog => $use_syslog, + log_facility => $log_facility, enabled => $enabled, } @@ -469,6 +484,9 @@ class openstack::controller ( # VNC vnc_enabled => $vnc_enabled, vncproxy_host => $vncproxy_host_real, + # Syslog + use_syslog => $use_syslog, + log_facility => $log_facility, # General debug => $debug, verbose => $verbose, @@ -537,6 +555,9 @@ class openstack::controller ( shared_secret => $metadata_shared_secret, # Keystone keystone_host => $keystone_host, + # Syslog + use_syslog => $use_syslog, + log_facility => $log_facility, # General enabled => $enabled, enable_server => $enable_neutron_server, @@ -574,6 +595,8 @@ class openstack::controller ( volume_group => $volume_group, setup_test_volume => $setup_test_volume, iscsi_ip_address => $iscsi_ip_address, + use_syslog => $use_syslog, + log_facility => $log_facility, enabled => $enabled, debug => $debug, verbose => $verbose diff --git a/manifests/glance.pp b/manifests/glance.pp index 8fb5962..3aee134 100644 --- a/manifests/glance.pp +++ b/manifests/glance.pp @@ -30,6 +30,8 @@ # [swift_store_auth_addres] The URL where the Swift auth service lives. Defaults to "http://${keystone_host}:5000/v2.0/" # [verbose] Log verbosely. Optional. Defaults to false. # [debug] Log at a debug-level. Optional. Defaults to false. +# [use_syslog] Use syslog for logging. Optional. Defaults to false. +# [syslog_facility] Syslog facility to receive log lines. Optional. Defaults to LOG_USER. # [enabled] Used to indicate if the service should be active (true) or passive (false). # Optional. Defaults to true # @@ -62,6 +64,8 @@ class openstack::glance ( $rbd_store_pool = 'images', $verbose = false, $debug = false, + $use_syslog = false, + $log_facility = 'LOG_USER', $enabled = true ) { @@ -93,6 +97,8 @@ class openstack::glance ( keystone_password => $user_password, sql_connection => $sql_connection, sql_idle_timeout => $sql_idle_timeout, + use_syslog => $use_syslog, + log_facility => $log_facility, enabled => $enabled, } @@ -109,6 +115,8 @@ class openstack::glance ( keystone_password => $user_password, sql_connection => $sql_connection, sql_idle_timeout => $sql_idle_timeout, + use_syslog => $use_syslog, + log_facility => $log_facility, enabled => $enabled, } diff --git a/manifests/keystone.pp b/manifests/keystone.pp index 1cca446..e54111b 100644 --- a/manifests/keystone.pp +++ b/manifests/keystone.pp @@ -36,6 +36,8 @@ # [swift_user_password] # Auth password for swift. # (Optional) Defaults to false. +# [use_syslog] Use syslog for logging. Defaults to false. +# [log_facility] Syslog facility to receive log lines. Defaults to LOG_USER. # [enabled] If the service is active (true) or passive (false). # Optional. Defaults to true # @@ -126,7 +128,15 @@ class openstack::keystone ( $heat_cfn_public_address = false, $heat_cfn_internal_address = false, $heat_cfn_admin_address = false, - + $glance = true, + $nova = true, + $cinder = true, + $neutron = true, + $ceilometer = false, + $swift = false, + $use_syslog = false, + $log_facility = 'LOG_USER', + $enabled = true ) { # Install and configure Keystone @@ -286,6 +296,8 @@ class openstack::keystone ( token_format => $token_format, enabled => $enabled, sql_connection => $sql_conn, + use_syslog => $use_syslog, + log_facility => $log_facility, } if ($enabled) { diff --git a/manifests/neutron.pp b/manifests/neutron.pp index 51d7bce..52cae5c 100644 --- a/manifests/neutron.pp +++ b/manifests/neutron.pp @@ -133,6 +133,14 @@ # Host running keystone. # (optional) Defaults to 127.0.0.1. # +# [use_syslog] +# Use syslog for logging. +# (optional) Default to false. +# +# [log_facility] +# Syslog facility to receive log lines. +# (optional) Default to LOG_USER. +# # [verbose] # Enables verbose for neutron services. # (optional) Defaults to false. @@ -199,6 +207,8 @@ class openstack::neutron ( # General $bind_address = '0.0.0.0', $keystone_host = '127.0.0.1', + $use_syslog = false, + $log_facility = 'LOG_USER', $verbose = false, $debug = false, ) { @@ -213,6 +223,8 @@ class openstack::neutron ( rabbit_virtual_host => $rabbit_virtual_host, rabbit_user => $rabbit_user, rabbit_password => $rabbit_password, + use_syslog => $use_syslog, + log_facility => $log_facility, verbose => $verbose, debug => $debug, } diff --git a/manifests/nova/controller.pp b/manifests/nova/controller.pp index 491dfdf..52b542d 100644 --- a/manifests/nova/controller.pp +++ b/manifests/nova/controller.pp @@ -36,6 +36,14 @@ # Timeout for sql to reap connections. # (Optional) Defaults to '3600'. # +# [use_syslog] +# Use syslog for logging. +# (Optional) Defaults to false. +# +# [log_facility] +# Syslog facility to receive log lines. +# (Optional) Defaults to LOG_USER. +# # === Examples # # class { 'openstack::nova::controller': @@ -100,6 +108,9 @@ class openstack::nova::controller ( $vncproxy_host = undef, # Keystone $keystone_host = '127.0.0.1', + # Syslog + $use_syslog = false, + $log_facility = 'LOG_USER', # General $debug = false, $verbose = false, @@ -158,6 +169,8 @@ class openstack::nova::controller ( verbose => $verbose, rabbit_host => $rabbit_connection, rabbit_hosts => $rabbit_hosts, + use_syslog => $use_syslog, + log_facility => $log_facility, } # Configure nova-api diff --git a/spec/classes/openstack_cinder_all_spec.rb b/spec/classes/openstack_cinder_all_spec.rb index cbb0580..4613c6f 100644 --- a/spec/classes/openstack_cinder_all_spec.rb +++ b/spec/classes/openstack_cinder_all_spec.rb @@ -27,6 +27,8 @@ describe 'openstack::cinder::all' do :rabbit_virtual_host => '/', :package_ensure => 'present', :api_paste_config => '/etc/cinder/api-paste.ini', + :use_syslog => false, + :log_facility => 'LOG_USER', :debug => false, :verbose => false ) @@ -113,6 +115,19 @@ describe 'openstack::cinder::all' do end end + describe 'with custom syslog settings' do + before do + params.merge!( + :use_syslog => true, + :log_facility => 'LOG_LOCAL0' + ) + end + it { should contain_class('cinder').with( + :use_syslog => true, + :log_facility => 'LOG_LOCAL0' + )} + end + context 'with unsupported db type' do before do diff --git a/spec/classes/openstack_cinder_controller_spec.rb b/spec/classes/openstack_cinder_controller_spec.rb index 8d922f7..518e081 100644 --- a/spec/classes/openstack_cinder_controller_spec.rb +++ b/spec/classes/openstack_cinder_controller_spec.rb @@ -27,6 +27,8 @@ describe 'openstack::cinder::controller' do :rabbit_virtual_host => '/', :package_ensure => 'present', :api_paste_config => '/etc/cinder/api-paste.ini', + :use_syslog => false, + :log_facility => 'LOG_USER', :debug => false, :verbose => false ) @@ -49,6 +51,22 @@ describe 'openstack::cinder::controller' do ) end + describe 'with custom syslog settings' do + before do + params.merge!({ + :use_syslog => true, + :log_facility => 'LOG_LOCAL0' + }) + end + + it do + should contain_class('cinder').with( + :use_syslog => true, + :log_facility => 'LOG_LOCAL0' + ) + end + end + context 'with unsupported db type' do before do diff --git a/spec/classes/openstack_controller_spec.rb b/spec/classes/openstack_controller_spec.rb index 954f0a9..8c53a22 100644 --- a/spec/classes/openstack_controller_spec.rb +++ b/spec/classes/openstack_controller_spec.rb @@ -219,7 +219,9 @@ describe 'openstack::controller' do :swift_user_password => false, :swift_public_address => false, :swift_internal_address => false, - :swift_admin_address => false + :swift_admin_address => false, + :use_syslog => false, + :log_facility => 'LOG_USER' ) should contain_class('keystone').with( @@ -369,6 +371,15 @@ describe 'openstack::controller' do context 'when enabled' do it 'should contain enabled glance with defaults' do + should contain_class('openstack::glance').with( + :verbose => false, + :debug => false, + :registry_host => '0.0.0.0', + :enabled => true, + :use_syslog => false, + :log_facility => 'LOG_USER' + ) + should contain_class('glance::api').with( :verbose => false, :debug => false, @@ -431,11 +442,22 @@ describe 'openstack::controller' do :glance_backend => 'rbd', :glance_rbd_store_user => 'myuser', :glance_rbd_store_pool => 'mypool', - :db_host => '127.0.0.2' + :db_host => '127.0.0.2', + :use_syslog => true, + :log_facility => 'LOG_LOCAL0' ) end it 'should override params for glance' do + should contain_class('openstack::glance').with( + :verbose => false, + :debug => false, + :registry_host => '127.0.0.2', + :enabled => true, + :use_syslog => true, + :log_facility => 'LOG_LOCAL0' + ) + should contain_class('glance::api').with( :verbose => false, :debug => false, @@ -515,6 +537,49 @@ describe 'openstack::controller' do context 'with default params' do it 'should contain enabled nova services' do + should contain_class('openstack::nova::controller').with( + :db_host => '127.0.0.1', + :sql_idle_timeout => '3600', + :network_manager => 'nova.network.manager.FlatDHCPManager', + :network_config => {}, + :floating_range => false, + :fixed_range => '10.0.0.0/24', + :public_address => '10.0.0.1', + :admin_address => false, + :internal_address => '127.0.0.1', + :auto_assign_floating_ip => false, + :create_networks => true, + :num_networks => 1, + :multi_host => false, + :public_interface => 'eth1', + :private_interface => 'eth0', + :neutron => false, + :neutron_user_password => false, + :metadata_shared_secret => false, + :security_group_api => 'neutron', + :nova_admin_tenant_name => 'services', + :nova_admin_user => 'nova', + :nova_user_password => 'nova_pass', + :nova_db_password => 'nova_pass', + :nova_db_user => 'nova', + :nova_db_dbname => 'nova', + :enabled_apis => 'ec2,osapi_compute,metadata', + :api_bind_address => '0.0.0.0', + :rabbit_user => 'openstack', + :rabbit_password => 'rabbit_pw', + :rabbit_hosts => false, + :rabbit_cluster_nodes => false, + :rabbit_virtual_host => '/', + :glance_api_servers => '', + :vnc_enabled => true, + :vncproxy_host => '10.0.0.1', + :use_syslog => false, + :log_facility => 'LOG_USER', + :debug => false, + :verbose => false, + :enabled => true + ) + should_not contain_resources('nova_config').with_purge(true) should contain_class('nova::rabbitmq').with( :userid => 'openstack', @@ -580,10 +645,18 @@ describe 'openstack::controller' do context 'when params are overridden' do let :params do default_params.merge( - :sql_idle_timeout => '30' + :sql_idle_timeout => '30', + :use_syslog => true, + :log_facility => 'LOG_LOCAL0' ) end it 'should override params for nova' do + should contain_class('openstack::nova::controller').with( + :sql_idle_timeout => '30', + :use_syslog => true, + :log_facility => 'LOG_LOCAL0' + ) + should contain_class('nova').with( :sql_idle_timeout => '30' ) @@ -619,6 +692,7 @@ describe 'openstack::controller' do default_params.merge(:cinder => false) end it 'should not contain cinder classes' do + should_not contain_class('openstack::cinder::all') should_not contain_class('cinder') should_not contain_class('cinder::api') should_not contain_class('cinder::scheduler') @@ -631,6 +705,30 @@ describe 'openstack::controller' do default_params end it 'should configure cinder using defaults' do + should contain_class('openstack::cinder::all').with( + :bind_host => '0.0.0.0', + :sql_idle_timeout => '3600', + :keystone_password => 'cinder_pass', + :rabbit_userid => 'openstack', + :rabbit_password => 'rabbit_pw', + :rabbit_host => '127.0.0.1', + :rabbit_hosts => false, + :db_password => 'cinder_pass', + :db_dbname => 'cinder', + :db_user => 'cinder', + :db_type => 'mysql', + :db_host => '127.0.0.1', + :manage_volumes => false, + :volume_group => 'cinder-volumes', + :setup_test_volume => false, + :iscsi_ip_address => '127.0.0.1', + :use_syslog => false, + :log_facility => 'LOG_USER', + :enabled => true, + :debug => false, + :verbose => false + ) + should contain_class('cinder').with( :debug => false, :verbose => false, @@ -656,10 +754,31 @@ describe 'openstack::controller' do :cinder_db_user => 'baz', :cinder_db_dbname => 'blah', :sql_idle_timeout => '30', - :db_host => '127.0.0.2' + :db_host => '127.0.0.2', + :use_syslog => true, + :log_facility => 'LOG_LOCAL0' ) end - it 'should configure cinder using defaults' do + it 'should configure cinder using custom parameters' do + should contain_class('openstack::cinder::all').with( + :sql_idle_timeout => '30', + :keystone_password => 'foo', + :rabbit_userid => 'rabbituser', + :rabbit_password => 'rabbit_pw2', + :rabbit_host => '127.0.0.1', + :rabbit_hosts => false, + :db_password => 'bar', + :db_dbname => 'blah', + :db_user => 'baz', + :db_type => 'mysql', + :db_host => '127.0.0.2', + :use_syslog => true, + :log_facility => 'LOG_LOCAL0', + :debug => true, + :verbose => true + ) + + should contain_class('cinder').with( :debug => true, :verbose => true, @@ -729,6 +848,8 @@ describe 'openstack::controller' do :keystone_host => '127.0.0.1', :enabled => true, :enable_server => true, + :use_syslog => false, + :log_facility => 'LOG_USER', :debug => true, :verbose => true ) diff --git a/spec/classes/openstack_glance_spec.rb b/spec/classes/openstack_glance_spec.rb index 4197276..d09d374 100644 --- a/spec/classes/openstack_glance_spec.rb +++ b/spec/classes/openstack_glance_spec.rb @@ -32,6 +32,8 @@ describe 'openstack::glance' do :keystone_password => 'glance_user_pass', :sql_connection => 'mysql://glance:glance_db_pass@127.0.0.1/glance', :sql_idle_timeout => '3600', + :use_syslog => false, + :log_facility => 'LOG_USER', :enabled => true ) should contain_class('glance::registry').with( @@ -46,6 +48,8 @@ describe 'openstack::glance' do :keystone_password => 'glance_user_pass', :sql_connection => 'mysql://glance:glance_db_pass@127.0.0.1/glance', :sql_idle_timeout => '3600', + :use_syslog => false, + :log_facility => 'LOG_USER', :enabled => true ) should contain_class('glance::backend::file') @@ -150,4 +154,24 @@ describe 'openstack::glance' do end end + describe 'with custom syslog settings' do + before do + params.merge!({ + :use_syslog => true, + :log_facility => 'LOG_LOCAL0' + }) + end + + it 'should set parameters in included classes' do + should contain_class('glance::api').with( + :use_syslog => true, + :log_facility => 'LOG_LOCAL0' + ) + + should contain_class('glance::registry').with( + :use_syslog => true, + :log_facility => 'LOG_LOCAL0' + ) + end + end end diff --git a/spec/classes/openstack_keystone_spec.rb b/spec/classes/openstack_keystone_spec.rb index 417a67b..05b6443 100644 --- a/spec/classes/openstack_keystone_spec.rb +++ b/spec/classes/openstack_keystone_spec.rb @@ -40,7 +40,9 @@ describe 'openstack::keystone' do :token_format => 'PKI', :enabled => true, :token_driver => 'keystone.token.backends.sql.Token', - :sql_connection => 'mysql://keystone:pass@127.0.0.1/keystone' + :sql_connection => 'mysql://keystone:pass@127.0.0.1/keystone', + :use_syslog => false, + :log_facility => 'LOG_USER' ) [ 'glance', 'cinder', 'neutron' ].each do |type| should contain_class("#{type}::keystone::auth").with( @@ -173,4 +175,19 @@ describe 'openstack::keystone' do end end + describe 'with custom syslog settings' do + let :params do + required_params.merge( + :use_syslog => true, + :log_facility => 'LOG_LOCAL0' + ) + end + + it 'should set parameters in included classes' do + should contain_class('keystone').with( + :use_syslog => true, + :log_facility => 'LOG_LOCAL0' + ) + end + end end diff --git a/spec/classes/openstack_neutron_spec.rb b/spec/classes/openstack_neutron_spec.rb index ce59901..3723a3c 100644 --- a/spec/classes/openstack_neutron_spec.rb +++ b/spec/classes/openstack_neutron_spec.rb @@ -34,6 +34,8 @@ describe 'openstack::neutron' do :rabbit_virtual_host => '/', :rabbit_user => 'rabbit_user', :rabbit_password => 'rabbit_pass', + :use_syslog => false, + :log_facility => 'LOG_USER', :allow_overlapping_ips => false, :verbose => false, :debug => false @@ -124,6 +126,19 @@ describe 'openstack::neutron' do end end + context 'with custom syslog settings' do + before do + params.merge!( + :use_syslog => true, + :log_facility => 'LOG_LOCAL0' + ) + end + it { should contain_class('neutron').with( + :use_syslog => true, + :log_facility => 'LOG_LOCAL0' + ) } + end + context 'with invalid db_type' do before do params.merge!(:db_type => 'foo', :db_password => 'bar') diff --git a/spec/classes/openstack_nova_controller_spec.rb b/spec/classes/openstack_nova_controller_spec.rb index 9983aec..8647449 100644 --- a/spec/classes/openstack_nova_controller_spec.rb +++ b/spec/classes/openstack_nova_controller_spec.rb @@ -49,7 +49,9 @@ describe 'openstack::nova::controller' do :verbose => false, :rabbit_hosts => false, :rabbit_host => '127.0.0.1', - :memcached_servers => false + :memcached_servers => false, + :use_syslog => false, + :log_facility => 'LOG_USER' ) should contain_class('nova::api').with( @@ -110,4 +112,20 @@ describe 'openstack::nova::controller' do ) end end + + context 'with custom syslog settings' do + let :params do + default_params.merge( + :use_syslog => true, + :log_facility => 'LOG_LOCAL0' + ) + end + it do + should contain_class('nova').with( + :use_syslog => true, + :log_facility => 'LOG_LOCAL0' + ) + end + end + end