summaryrefslogtreecommitdiffstats
path: root/lib/puppet
diff options
context:
space:
mode:
authorLuke Kanies <luke@madstop.com>2007-12-31 13:51:09 -0600
committerLuke Kanies <luke@madstop.com>2007-12-31 13:51:09 -0600
commit348f257e3626848dd6a32b6f9eae17a5f30c21dd (patch)
tree87feaf36475a4aac5557bc2f20a54848f624f53f /lib/puppet
parent9b1d0366cbd92e3982e6db247786b5d5a0348eae (diff)
downloadpuppet-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.rb40
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