Skip to content

Commit cc315de

Browse files
committed
Merge pull request redhat-openstack#217 from bogus-py/filecount
filecount: support all options
2 parents 68ca262 + 5c3779e commit cc315de

File tree

7 files changed

+185
-1
lines changed

7 files changed

+185
-1
lines changed

README.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -268,6 +268,31 @@ collectd::plugin::exec {
268268

269269
####Class: `collectd::plugin::filecount`
270270

271+
```puppet
272+
collectd::plugin::filecount::directory {'foodir':
273+
path => '/path/to/dir',
274+
pattern => '*.conf',
275+
mtime => '-5m',
276+
recursive => true,
277+
includehidden => false
278+
}
279+
280+
```
281+
You can also configure this plugin with a parameterized class:
282+
```puppet
283+
class { 'collectd::plugin::filecount':
284+
directories => {
285+
'foodir' => {
286+
'path' => '/path/to/dir',
287+
'pattern' => '*.conf',
288+
'mtime' => '-5m',
289+
'recursive' => true,
290+
'includehidden' => false
291+
},
292+
},
293+
}
294+
```
295+
For backwards compatibility:
271296
```puppet
272297
class { 'collectd::plugin::filecount':
273298
directories => {

manifests/plugin/filecount.pp

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,22 @@
44
$directories = {},
55
$interval = undef,
66
) {
7+
validate_hash($directories)
8+
9+
# We support two formats for directories:
10+
# - new: hash for create_resources collectd::plugin::filecount::directory
11+
# - old: backward compatibility, simple instance => path hash
12+
$values = values($directories)
13+
if size($values) > 0 and is_hash($values[0]) {
14+
$content = undef
15+
create_resources(collectd::plugin::filecount::directory, $directories, {ensure => $ensure})
16+
} else {
17+
$content = template('collectd/plugin/filecount.conf.erb')
18+
}
19+
720
collectd::plugin {'filecount':
821
ensure => $ensure,
9-
content => template('collectd/plugin/filecount.conf.erb'),
22+
content => $content,
1023
interval => $interval,
1124
}
1225
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# https://collectd.org/wiki/index.php/Plugin:FileCount
2+
define collectd::plugin::filecount::directory (
3+
$ensure = present,
4+
$instance = $name,
5+
$path = undef,
6+
$pattern = undef,
7+
$mtime = undef,
8+
$size = undef,
9+
$recursive = undef,
10+
$includehidden = undef
11+
) {
12+
include collectd::params
13+
include collectd::plugin::filecount
14+
15+
$conf_dir = $collectd::params::plugin_conf_dir
16+
17+
validate_string($path)
18+
19+
file { "${conf_dir}/15-filecount-${name}.conf":
20+
ensure => $ensure,
21+
mode => '0640',
22+
owner => 'root',
23+
group => $collectd::params::root_group,
24+
content => template('collectd/plugin/filecount-directory.conf.erb'),
25+
notify => Service['collectd'],
26+
}
27+
}

spec/classes/collectd_plugin_filecount_spec.rb

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,28 @@
1818
end
1919
end
2020

21+
context 'new :directories format' do
22+
let :params do
23+
{:directories => { 'foodir' => {
24+
'path' => '/path/to/dir',
25+
'pattern' => '*.conf',
26+
'mtime' => '-5m',
27+
'recursive' => true,
28+
'includehidden' => false,
29+
}}}
30+
end
31+
it 'Will create foodir collectd::plugin::filecount::directory resource' do
32+
should contain_collectd__plugin__filecount__directory('foodir').with({
33+
:ensure => 'present',
34+
:path => '/path/to/dir',
35+
:pattern => '*.conf',
36+
:mtime => '-5m',
37+
:recursive => true,
38+
:includehidden => false,
39+
})
40+
end
41+
end
42+
2143
context ':ensure => absent' do
2244
let :params do
2345
{:directories => { 'active' => '/var/spool/postfix/active' }, :ensure => 'absent'}
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
require 'spec_helper'
2+
3+
describe 'collectd::plugin::filecount::directory', :type => :define do
4+
let :facts do
5+
{:osfamily => 'Debian'}
6+
end
7+
8+
context 'simple case' do
9+
let(:title) { 'test' }
10+
let :params do
11+
{
12+
:path => '/var/tmp/test',
13+
}
14+
end
15+
it 'Will create /etc/collectd/conf.d/15-filecount-test.conf' do
16+
should contain_file('/etc/collectd/conf.d/15-filecount-test.conf').with_content("<Plugin \"filecount\">\n <Directory \"/var/tmp/test\">\n Instance \"test\"\n </Directory>\n</Plugin>\n")
17+
end
18+
end
19+
20+
context 'advanced case' do
21+
let(:title) { 'test' }
22+
let :params do
23+
{
24+
:path => '/path/to/dir',
25+
:pattern => '*.conf',
26+
:mtime => '-5m',
27+
:recursive => true,
28+
:includehidden => false,
29+
}
30+
end
31+
it 'Will create /etc/collectd/conf.d/15-filecount-test.conf' do
32+
should contain_file('/etc/collectd/conf.d/15-filecount-test.conf').with_content("<Plugin \"filecount\">\n <Directory \"/path/to/dir\">\n Instance \"test\"\n Name \"*.conf\"\n MTime \"-5m\"\n Recursive true\n IncludeHidden false\n </Directory>\n</Plugin>\n")
33+
end
34+
end
35+
36+
context 'recursive and includehidden false' do
37+
let(:title) { 'test' }
38+
let :params do
39+
{
40+
:path => '/var/tmp/test',
41+
:recursive => false,
42+
:includehidden => false,
43+
}
44+
end
45+
it 'Will create /etc/collectd/conf.d/15-filecount-test.conf' do
46+
should contain_file('/etc/collectd/conf.d/15-filecount-test.conf').with_content("<Plugin \"filecount\">\n <Directory \"/var/tmp/test\">\n Instance \"test\"\n Recursive false\n IncludeHidden false\n </Directory>\n</Plugin>\n")
47+
end
48+
end
49+
50+
context 'ensure => absent' do
51+
let(:title) { 'test' }
52+
let :params do
53+
{
54+
:ensure => 'absent',
55+
:path => '/var/tmp/test',
56+
}
57+
end
58+
it 'Will create /etc/collectd/conf.d/15-filecount-test.conf' do
59+
should contain_file('/etc/collectd/conf.d/15-filecount-test.conf').with({
60+
:ensure => 'absent',
61+
:path => '/etc/collectd/conf.d/15-filecount-test.conf',
62+
})
63+
end
64+
end
65+
end
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<Plugin "filecount">
2+
<Directory "<%= @path -%>">
3+
Instance "<%= @instance %>"
4+
<% if @pattern -%>
5+
Name "<%= @pattern %>"
6+
<% end -%>
7+
<% if @mtime -%>
8+
MTime "<%= @mtime %>"
9+
<% end -%>
10+
<% if @size -%>
11+
Size "<%= @size %>"
12+
<% end -%>
13+
<% unless @recursive.nil? -%>
14+
Recursive <%= @recursive %>
15+
<% end -%>
16+
<% unless @includehidden.nil? -%>
17+
IncludeHidden <%= @includehidden %>
18+
<% end -%>
19+
</Directory>
20+
</Plugin>

tests/plugins/filecount.pp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,15 @@
66
'incoming' => '/var/spool/postfix/incoming'
77
},
88
}
9+
10+
collectd::plugin::filecount::directory {'foodir':
11+
path => '/path/to/dir'
12+
}
13+
14+
collectd::plugin::filecount::directory {'aborted-uploads':
15+
path => '/var/spool/foo/upload',
16+
pattern => '.part.*',
17+
mtime => '5m',
18+
recursive => true,
19+
includehidden => true
20+
}

0 commit comments

Comments
 (0)