diff options
author | Luke Kanies <luke@madstop.com> | 2007-12-31 13:51:09 -0600 |
---|---|---|
committer | Luke Kanies <luke@madstop.com> | 2007-12-31 13:51:09 -0600 |
commit | 348f257e3626848dd6a32b6f9eae17a5f30c21dd (patch) | |
tree | 87feaf36475a4aac5557bc2f20a54848f624f53f /lib/puppet | |
parent | 9b1d0366cbd92e3982e6db247786b5d5a0348eae (diff) | |
download | puppet-348f257e3626848dd6a32b6f9eae17a5f30c21dd.tar.gz puppet-348f257e3626848dd6a32b6f9eae17a5f30c21dd.tar.xz puppet-348f257e3626848dd6a32b6f9eae17a5f30c21dd.zip |
Adding the metaprogramming to create the Nagios types
and Naginator providers. This is basically all of
the code that's necessary to create all of the needed
Nagios types.
Diffstat (limited to 'lib/puppet')
-rw-r--r-- | lib/puppet/util/nagios_maker.rb | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/lib/puppet/util/nagios_maker.rb b/lib/puppet/util/nagios_maker.rb new file mode 100644 index 000000000..7c019f55e --- /dev/null +++ b/lib/puppet/util/nagios_maker.rb @@ -0,0 +1,40 @@ +require 'puppet/external/nagios' +require 'puppet/external/nagios/base' +require 'puppet/provider/naginator' + +module Puppet::Util::NagiosMaker + # Create a new nagios type, using all of the parameters + # from the parser. + def self.create_nagios_type(name) + name = name.to_sym + full_name = ("nagios_" + name.to_s).to_sym + + raise(Puppet::DevError, "No nagios type for %s" % name) unless nagtype = Nagios::Base.type(name) + + type = Puppet::Type.newtype(full_name) {} + + type.ensurable + + type.newparam(nagtype.namevar, :namevar => true) do + desc "The name parameter for Nagios type %s" % nagtype.name + end + + nagtype.parameters.each do |param| + next if param == nagtype.namevar + + type.newproperty(param) do + desc "Nagios configuration file parameter." + end + end + + type.newproperty(:target) do + desc 'target' + + defaultto do + resource.class.defaultprovider.default_target + end + end + + type.provide(:naginator, :parent => Puppet::Provider::Naginator, :default_target => "/etc/nagios/#{full_name.to_s}.cfg") {} + end +end |