Skip to content

Commit fedd155

Browse files
author
Joshua Hoblitt
committed
add syslog verbosity management
1 parent db481ed commit fedd155

File tree

6 files changed

+160
-6
lines changed

6 files changed

+160
-6
lines changed

README.md

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,20 @@ Usage
3030

3131
### Basic Example
3232

33-
This class does not need to be declared in the manfiest when using the
33+
This class does not need to be manually included in the manifest when using the
3434
`udev::rule` defined type.
3535

3636
```puppet
3737
include udev
3838
```
3939

40-
### Managing a `udev` rules
40+
### Managing `udev` syslog verbosity
41+
42+
```puppet
43+
class { 'udev': udev_log => 'debug' }
44+
```
45+
46+
### Managing `udev` rules
4147

4248
Note that either the `content` or `source` parameter must be specified unless
4349
`ensure` is `absent`and that these parameters are mutually exclusive; you can

manifests/init.pp

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,38 @@
55
# This class does not need to be declared in the manfiest when using the
66
# udev::rule defined type.
77
#
8+
#
9+
# === Parameters
10+
#
11+
# [*udev_log*]
12+
#
13+
# String. Possible values: 'err, 'info', 'debug'
14+
#
15+
# Default: 'err'
16+
#
17+
#
818
# === Examples
919
#
1020
# include udev
1121
#
12-
class udev inherits udev::params {
22+
class udev(
23+
$udev_log = 'err',
24+
) inherits udev::params {
25+
validate_re($udev_log, '^err$|^info$|^debug$')
1326

1427
package{ $udev::params::udev_package:
1528
ensure => present,
29+
} ->
30+
file { '/etc/udev/udev.conf':
31+
ensure => file,
32+
content => template("${module_name}/udev.conf.erb"),
33+
owner => 'root',
34+
group => 'root',
35+
mode => '0644',
36+
notify => Class['udev::udevadm::logpriority'],
1637
}
1738

1839
class { 'udev::udevadm': } ->
40+
class { 'udev::udevadm::logpriority': udev_log => $udev_log } ->
1941
Class['udev']
2042
}

manifests/udevadm/logpriority.pp

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# == Class: udev::udevadm::logpriority
2+
#
3+
# Set the udev daemon runtime log level.
4+
#
5+
# This class does nothing unless it receives a *notify* message.
6+
#
7+
# === Parameters
8+
#
9+
# [*udev_log*]
10+
#
11+
# String. Possible values: 'err, 'info', 'debug'
12+
#
13+
# Default: 'err'
14+
#
15+
#
16+
# === Examples
17+
#
18+
# class { 'udev::udevadm::logpriority': udev_log => 'debug' }
19+
#
20+
#
21+
class udev::udevadm::logpriority(
22+
$udev_log = 'err',
23+
) inherits udev::params {
24+
validate_re($udev_log, '^err$|^info$|^debug$')
25+
26+
exec { "udevadm control --log-priority=${udev_log}":
27+
refreshonly => true,
28+
path => [$udev::params::udevadm_path],
29+
}
30+
}

spec/classes/udev_spec.rb

Lines changed: 46 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,55 @@
22

33
describe 'udev', :type => :class do
44

5+
shared_examples 'udev_log_param' do |udev_log, params|
6+
let(:params) { params }
7+
8+
it do
9+
should include_class('udev')
10+
should contain_package('udev').with_ensure('present')
11+
should contain_file('/etc/udev/udev.conf').
12+
with({
13+
:ensure => 'file',
14+
:owner => 'root',
15+
:group => 'root',
16+
:mode => '0644',
17+
}).
18+
with_content(/udev_log="#{udev_log}"/)
19+
should contain_class('udev::udevadm')
20+
should contain_class('udev::udevadm::logpriority').
21+
with_udev_log(udev_log)
22+
end
23+
end
24+
525
describe 'for osfamily RedHat' do
626
let(:facts) {{ :osfamily => 'RedHat' }}
727

8-
it { should include_class('udev') }
9-
it { should contain_package('udev').with_ensure(:present) }
10-
it { should contain_class('udev::udevadm') }
28+
describe 'no params' do
29+
it_behaves_like('udev_log_param', 'err', {})
30+
end
31+
32+
describe 'udev_log => err' do
33+
it_behaves_like('udev_log_param', 'err', { :udev_log => 'err' })
34+
end
35+
36+
describe 'udev_log => info' do
37+
it_behaves_like('udev_log_param', 'info', { :udev_log => 'info' })
38+
end
39+
40+
describe 'udev_log => debug' do
41+
it_behaves_like('udev_log_param', 'debug', { :udev_log => 'debug' })
42+
end
43+
44+
describe 'udev_log => invalid' do
45+
let(:params) {{ :udev_log => 'invalid' }}
46+
47+
it 'should fail' do
48+
expect {
49+
should include_class('udev')
50+
}.to raise_error(Puppet::Error, /does not match/)
51+
end
52+
end
53+
1154
end
1255

1356
end
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
require 'spec_helper'
2+
3+
describe 'udev::udevadm::logpriority', :type => :class do
4+
5+
shared_examples 'udev_log_param' do |udev_log, params|
6+
let(:params) { params }
7+
8+
it do
9+
should contain_class('udev::udevadm::logpriority').
10+
with_udev_log(udev_log)
11+
should contain_exec("udevadm control --log-priority=#{udev_log}").with({
12+
:refreshonly => true,
13+
:path => '/sbin',
14+
})
15+
end
16+
end
17+
18+
describe 'for osfamily RedHat' do
19+
let(:facts) {{ :osfamily => 'RedHat' }}
20+
21+
describe 'no params' do
22+
it_behaves_like('udev_log_param', 'err', {})
23+
end
24+
25+
describe 'udev_log => err' do
26+
it_behaves_like('udev_log_param', 'err', { :udev_log => 'err' })
27+
end
28+
29+
describe 'udev_log => info' do
30+
it_behaves_like('udev_log_param', 'info', { :udev_log => 'info' })
31+
end
32+
33+
describe 'udev_log => debug' do
34+
it_behaves_like('udev_log_param', 'debug', { :udev_log => 'debug' })
35+
end
36+
37+
describe 'udev_log => invalid' do
38+
let(:params) {{ :udev_log => 'invalid' }}
39+
40+
it 'should fail' do
41+
expect {
42+
should include_class('udev::udevadm::logpriority')
43+
}.to raise_error(Puppet::Error, /does not match/)
44+
end
45+
end
46+
47+
end
48+
49+
end

templates/udev.conf.erb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# The initial syslog(3) priority: "err", "info", "debug" or its
2+
# numerical equivalent. For runtime debugging, the daemons internal
3+
# state can be changed with: "udevadm control --log-priority=<value>".
4+
udev_log="<%= udev_log %>"

0 commit comments

Comments
 (0)