Skip to content

Commit

Permalink
Use concat to define the process plugin config.
Browse files Browse the repository at this point in the history
Adding a parser function to keep it compatible with the old way
to define process matches.
  • Loading branch information
bzed committed Jun 19, 2015
1 parent a6c102b commit 6c101d5
Show file tree
Hide file tree
Showing 5 changed files with 101 additions and 24 deletions.
32 changes: 32 additions & 0 deletions lib/puppet/parser/functions/collectd_convert_processmatch.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
module Puppet::Parser::Functions

newfunction(:collectd_convert_processmatch, :type => :rvalue, :arity => 1, :doc => <<-ENDDOC
Converts the array from the old style to define process matches in the
processes plugin into a create_resources compatible hash which
can be used with the new style define.
Example:
[ { 'name' => 'foo', 'regex' => '.*' } , { 'name' => 'bar', 'regex' => '[0-9]+' } ]
will be converted to
{ 'foo' => { 'regex' => '.*' } , 'bar' => { 'regex' => '[0-9]+' } }
ENDDOC
) do |args|
if args.size != 1 then
raise(Puppet::ParseError, "convert_process_match_array(): Needs exactly one argument")
end

parray = args[0]
unless parray.is_a?(Array)
raise(Puppet::ParseError, "convert_process_match_array(): Needs an array as argument")
end

phash = Hash.new

parray.each do |p|
phash[p['name']] = { 'regex' => p['regex'] }
end

return phash
end
end

38 changes: 36 additions & 2 deletions manifests/plugin/processes.pp
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,41 @@

collectd::plugin {'processes':
ensure => $ensure,
content => template('collectd/plugin/processes.conf.erb'),
interval => $interval,
}

concat{"${collectd::params::plugin_conf_dir}/processes-config.conf":
ensure => $ensure,
mode => '0640',
owner => 'root',
group => $collectd::params::root_group,
notify => Service['collectd'],
ensure_newline => true,
}
concat::fragment{'collectd_plugin_processes_conf_header':
ensure => $ensure,
order => '00',
content => '<Plugin processes>',
target => "${collectd::params::plugin_conf_dir}/processes-config.conf",
}
concat::fragment{'collectd_plugin_processes_conf_footer':
ensure => $ensure,
order => '99',
content => '</Plugin>',
target => "${collectd::params::plugin_conf_dir}/processes-config.conf",
}


if $processes {
collectd::plugin::processes::process { $processes : }
}
if $process_matches {
$process_matches_resources = collectd_convert_processmatch($process_matches)
$defaults = { 'ensure' => $ensure }
create_resources(
collectd::plugin::processes::processmatch,
$process_matches_resources,
$defaults
)
}

}
16 changes: 16 additions & 0 deletions manifests/plugin/processes/process.pp
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
define collectd::plugin::processes::process (
$process = $name,
$ensure = 'present'
){

include collectd::plugin::processes
include collectd::params

concat::fragment{"collectd_plugin_processes_conf_process_${process}":
ensure => $ensure,
order => '50',
content => "Process \"${process}\"\n",
target => "${collectd::params::plugin_conf_dir}/processes-config.conf"
}

}
17 changes: 17 additions & 0 deletions manifests/plugin/processes/processmatch.pp
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
define collectd::plugin::processes::processmatch (
$regex,
$ensure = 'present',
$matchname = $name
){

include collectd::plugin::processes
include collectd::params

concat::fragment{"collectd_plugin_processes_conf_processmatch_${matchname}":
ensure => $ensure,
order => '51',
content => "ProcessMatch \"${matchname}\" \"${regex}\"\n",
target => "${collectd::params::plugin_conf_dir}/processes-config.conf"
}

}
22 changes: 0 additions & 22 deletions templates/plugin/processes.conf.erb

This file was deleted.

0 comments on commit 6c101d5

Please sign in to comment.