blob: 863fe24fa1dd95ee053d714b0db97429f528cc23 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
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_sym
raise(Puppet::DevError, "No nagios type for #{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 #{nagtype.name}"
end
# We deduplicate the parameters because it makes sense to allow Naginator to have dupes.
nagtype.parameters.uniq.each do |param|
next if param == nagtype.namevar
# We can't turn these parameter names into constants, so at least for now they aren't
# supported.
next if param.to_s =~ /^[0-9]/
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
target = "/etc/nagios/#{full_name.to_s}.cfg"
provider = type.provide(:naginator, :parent => Puppet::Provider::Naginator, :default_target => target) {}
provider.nagios_type
type.desc "The Nagios type #{name.to_s}. This resource type is autogenerated using the
model developed in Naginator, and all of the Nagios types are generated using the
same code and the same library.
This type generates Nagios configuration statements in Nagios-parseable configuration
files. By default, the statements will be added to `#{target}`, but
you can send them to a different file by setting their `target` attribute.
You can purge Nagios resources using the `resources` type, but *only*
in the default file locations. This is an architectural limitation.
"
end
end
|