forked from puppetlabs/puppetlabs-inifile
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcreate_ini_settings.rb
More file actions
86 lines (73 loc) · 2.14 KB
/
create_ini_settings.rb
File metadata and controls
86 lines (73 loc) · 2.14 KB
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#
# create_ini_settings.rb
#
module Puppet::Parser::Functions
newfunction(:create_ini_settings, :type => :statement, :doc => <<-EOS
Uses create_resources to create a set of ini_setting resources from a hash:
$settings = { section1 => {
setting1 => val1
},
section2 => {
setting2 => val2,
setting3 => {
ensure => absent
}
}
}
$defaults = {
path => '/tmp/foo.ini'
}
create_ini_settings($settings,$defaults)
Will create the following resources
ini_setting{'[section1] setting1':
ensure => present,
section => 'section1',
setting => 'setting1',
value => 'val1',
path => '/tmp/foo.ini',
}
ini_setting{'[section2] setting2':
ensure => present,
section => 'section2',
setting => 'setting2',
value => 'val2',
path => '/tmp/foo.ini',
}
ini_setting{'[section2] setting3':
ensure => absent,
section => 'section2',
setting => 'setting3',
path => '/tmp/foo.ini',
}
EOS
) do |arguments|
raise(Puppet::ParseError, "create_ini_settings(): Wrong number of arguments " +
"given (#{arguments.size} for 1 or 2)") unless arguments.size.between?(1,2)
settings = arguments[0]
defaults = arguments[1] || {}
if [settings,defaults].any?{|i| !i.is_a?(Hash) }
raise(Puppet::ParseError,
'create_ini_settings(): Requires all arguments to be a Hash')
end
resources = settings.keys.inject({}) do |res, section|
raise(Puppet::ParseError,
"create_ini_settings(): Section #{section} must contain a Hash") \
unless settings[section].is_a?(Hash)
settings[section].each do |setting, value|
res["[#{section}] #{setting}"] = {
'ensure' => 'present',
'section' => section,
'setting' => setting,
}.merge(if value.is_a?(Hash)
value
else
{ 'value' => value, }
end)
end
res
end
Puppet::Parser::Functions.function('create_resources')
function_create_resources(['ini_setting',resources,defaults])
end
end
# vim: set ts=2 sw=2 et :