puppet 0.22.4 → 0.23.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- data/CHANGELOG +156 -0
- data/README +2 -2
- data/Rakefile +6 -6
- data/bin/filebucket +212 -0
- data/bin/puppet +2 -0
- data/bin/puppetca +2 -4
- data/bin/puppetd +16 -15
- data/bin/puppetdoc +46 -496
- data/bin/puppetmasterd +3 -5
- data/bin/puppetrun +8 -3
- data/bin/ralsh +271 -0
- data/conf/redhat/client.init +1 -1
- data/conf/redhat/puppet.spec +13 -2
- data/conf/solaris/pkginfo +1 -1
- data/ext/puppet-test +374 -0
- data/install.rb +40 -31
- data/lib/puppet.rb +39 -4
- data/lib/puppet/config_stores/rest.rb +60 -0
- data/lib/puppet/configuration.rb +312 -17
- data/lib/puppet/external/event-loop/event-loop.rb +4 -0
- data/lib/puppet/external/gratr/rdot.rb +1 -1
- data/lib/puppet/fact_stores/yaml.rb +42 -0
- data/lib/puppet/feature/base.rb +4 -1
- data/lib/puppet/metatype/attributes.rb +20 -43
- data/lib/puppet/metatype/container.rb +1 -36
- data/lib/puppet/metatype/evaluation.rb +48 -19
- data/lib/puppet/metatype/instances.rb +35 -1
- data/lib/puppet/metatype/metaparams.rb +23 -19
- data/lib/puppet/metatype/providers.rb +25 -38
- data/lib/puppet/network/client/ca.rb +8 -5
- data/lib/puppet/network/client/master.rb +59 -17
- data/lib/puppet/network/handler.rb +18 -1
- data/lib/puppet/network/handler/ca.rb +9 -3
- data/lib/puppet/network/handler/facts.rb +70 -0
- data/lib/puppet/network/handler/filebucket.rb +4 -1
- data/lib/puppet/network/handler/fileserver.rb +65 -21
- data/lib/puppet/network/handler/master.rb +6 -3
- data/lib/puppet/network/handler/report.rb +12 -26
- data/lib/puppet/network/handler/resource.rb +14 -2
- data/lib/puppet/network/handler/runner.rb +5 -1
- data/lib/puppet/network/handler/status.rb +5 -1
- data/lib/puppet/network/server/mongrel.rb +4 -4
- data/lib/puppet/network/server/webrick.rb +14 -3
- data/lib/puppet/parameter.rb +30 -25
- data/lib/puppet/parser/ast.rb +1 -6
- data/lib/puppet/parser/ast/component.rb +23 -20
- data/lib/puppet/parser/ast/hostclass.rb +7 -11
- data/lib/puppet/parser/ast/leaf.rb +4 -1
- data/lib/puppet/parser/ast/node.rb +6 -8
- data/lib/puppet/parser/functions.rb +7 -4
- data/lib/puppet/parser/interpreter.rb +155 -205
- data/lib/puppet/parser/lexer.rb +35 -2
- data/lib/puppet/parser/parser.rb +705 -612
- data/lib/puppet/parser/resource.rb +91 -48
- data/lib/puppet/parser/resource/param.rb +52 -29
- data/lib/puppet/parser/scope.rb +28 -23
- data/lib/puppet/pgraph.rb +26 -21
- data/lib/puppet/propertychange.rb +12 -12
- data/lib/puppet/provider.rb +102 -31
- data/lib/puppet/provider/cron/crontab.rb +7 -8
- data/lib/puppet/provider/group/groupadd.rb +4 -4
- data/lib/puppet/provider/group/pw.rb +3 -3
- data/lib/puppet/provider/mount.rb +8 -8
- data/lib/puppet/provider/mount/netinfo.rb +5 -5
- data/lib/puppet/provider/mount/parsed.rb +2 -2
- data/lib/puppet/provider/nameservice.rb +19 -31
- data/lib/puppet/provider/nameservice/netinfo.rb +14 -14
- data/lib/puppet/provider/nameservice/objectadd.rb +4 -4
- data/lib/puppet/provider/nameservice/pw.rb +4 -4
- data/lib/puppet/provider/package.rb +31 -0
- data/lib/puppet/provider/package/appdmg.rb +118 -0
- data/lib/puppet/provider/package/apple.rb +18 -16
- data/lib/puppet/provider/package/apt.rb +13 -15
- data/lib/puppet/provider/package/aptitude.rb +5 -3
- data/lib/puppet/provider/package/aptrpm.rb +9 -11
- data/lib/puppet/provider/package/blastwave.rb +9 -9
- data/lib/puppet/provider/package/darwinport.rb +12 -11
- data/lib/puppet/provider/package/dpkg.rb +20 -12
- data/lib/puppet/provider/package/fink.rb +87 -0
- data/lib/puppet/provider/package/freebsd.rb +10 -11
- data/lib/puppet/provider/package/gem.rb +15 -15
- data/lib/puppet/provider/package/openbsd.rb +12 -17
- data/lib/puppet/provider/package/pkgdmg.rb +90 -16
- data/lib/puppet/provider/package/portage.rb +20 -14
- data/lib/puppet/provider/package/ports.rb +15 -13
- data/lib/puppet/provider/package/rpm.rb +20 -23
- data/lib/puppet/provider/package/rug.rb +6 -8
- data/lib/puppet/provider/package/sun.rb +20 -18
- data/lib/puppet/provider/package/sunfreeware.rb +2 -2
- data/lib/puppet/provider/package/up2date.rb +6 -10
- data/lib/puppet/provider/package/urpmi.rb +51 -0
- data/lib/puppet/provider/package/yum.rb +15 -13
- data/lib/puppet/provider/parsedfile.rb +53 -63
- data/lib/puppet/provider/service/base.rb +13 -15
- data/lib/puppet/provider/service/debian.rb +4 -4
- data/lib/puppet/provider/service/gentoo.rb +4 -4
- data/lib/puppet/provider/service/init.rb +22 -15
- data/lib/puppet/provider/service/redhat.rb +6 -6
- data/lib/puppet/provider/service/smf.rb +6 -6
- data/lib/puppet/provider/user/netinfo.rb +5 -5
- data/lib/puppet/provider/user/pw.rb +10 -5
- data/lib/puppet/provider/user/useradd.rb +9 -14
- data/lib/puppet/provider/zone/solaris.rb +80 -45
- data/lib/puppet/rails.rb +3 -34
- data/lib/puppet/rails/database/schema.rb +45 -24
- data/lib/puppet/rails/fact_value.rb +1 -0
- data/lib/puppet/rails/host.rb +69 -40
- data/lib/puppet/rails/param_name.rb +3 -8
- data/lib/puppet/rails/param_value.rb +2 -1
- data/lib/puppet/rails/puppet_class.rb +0 -2
- data/lib/puppet/rails/puppet_tag.rb +5 -0
- data/lib/puppet/rails/resource.rb +41 -17
- data/lib/puppet/rails/resource_tag.rb +4 -0
- data/lib/puppet/reference/configuration.rb +149 -0
- data/lib/puppet/reference/function.rb +13 -0
- data/lib/puppet/reference/network.rb +37 -0
- data/lib/puppet/reference/providers.rb +118 -0
- data/lib/puppet/reference/report.rb +21 -0
- data/lib/puppet/reference/type.rb +152 -0
- data/lib/puppet/reports/rrdgraph.rb +21 -7
- data/lib/puppet/reports/tagmail.rb +4 -1
- data/lib/puppet/sslcertificates.rb +1 -49
- data/lib/puppet/sslcertificates/ca.rb +2 -79
- data/lib/puppet/sslcertificates/inventory.rb +0 -10
- data/lib/puppet/transaction.rb +24 -41
- data/lib/puppet/transaction/report.rb +27 -1
- data/lib/puppet/type.rb +7 -43
- data/lib/puppet/type/component.rb +198 -124
- data/lib/puppet/type/cron.rb +51 -42
- data/lib/puppet/type/exec.rb +20 -19
- data/lib/puppet/type/group.rb +6 -55
- data/lib/puppet/type/host.rb +16 -37
- data/lib/puppet/type/mount.rb +30 -17
- data/lib/puppet/type/notify.rb +7 -8
- data/lib/puppet/type/package.rb +44 -80
- data/lib/puppet/type/pfile.rb +50 -41
- data/lib/puppet/type/pfile/checksum.rb +82 -95
- data/lib/puppet/type/pfile/content.rb +21 -25
- data/lib/puppet/type/pfile/ensure.rb +32 -30
- data/lib/puppet/type/pfile/group.rb +21 -26
- data/lib/puppet/type/pfile/mode.rb +25 -32
- data/lib/puppet/type/pfile/owner.rb +23 -27
- data/lib/puppet/type/pfile/source.rb +42 -33
- data/lib/puppet/type/pfile/target.rb +20 -18
- data/lib/puppet/type/pfile/type.rb +6 -7
- data/lib/puppet/type/pfilebucket.rb +3 -3
- data/lib/puppet/type/port.rb +5 -7
- data/lib/puppet/type/property.rb +58 -61
- data/lib/puppet/type/resources.rb +12 -8
- data/lib/puppet/type/schedule.rb +8 -8
- data/lib/puppet/type/service.rb +26 -33
- data/lib/puppet/type/sshkey.rb +6 -7
- data/lib/puppet/type/tidy.rb +41 -35
- data/lib/puppet/type/user.rb +34 -67
- data/lib/puppet/type/yumrepo.rb +27 -12
- data/lib/puppet/type/zone.rb +71 -110
- data/lib/puppet/util.rb +46 -61
- data/lib/puppet/util/autoload.rb +59 -47
- data/lib/puppet/util/config.rb +160 -18
- data/lib/puppet/util/config_store.rb +61 -0
- data/lib/puppet/util/fact_store.rb +60 -0
- data/lib/puppet/util/instance_loader.rb +74 -0
- data/lib/puppet/util/loadedfile.rb +5 -8
- data/lib/puppet/util/metric.rb +17 -25
- data/lib/puppet/util/posix.rb +39 -7
- data/lib/puppet/util/provider_features.rb +9 -1
- data/lib/puppet/util/rails/collection_merger.rb +16 -1
- data/lib/puppet/util/reference.rb +189 -0
- data/lib/puppet/util/storage.rb +2 -2
- data/lib/puppet/util/subclass_loader.rb +9 -2
- data/test/language/ast.rb +4 -148
- data/test/language/ast/component.rb +10 -1
- data/test/language/collector.rb +1 -191
- data/test/language/interpreter.rb +284 -327
- data/test/language/lexer.rb +13 -1
- data/test/language/node.rb +1 -1
- data/test/language/parser.rb +17 -4
- data/test/language/resource.rb +67 -101
- data/test/language/scope.rb +18 -3
- data/test/language/snippets.rb +114 -151
- data/test/lib/puppettest.rb +13 -0
- data/test/lib/puppettest/exetest.rb +7 -0
- data/test/lib/puppettest/fakes.rb +39 -28
- data/test/lib/puppettest/railstesting.rb +1 -1
- data/test/lib/puppettest/support/assertions.rb +2 -2
- data/test/lib/puppettest/support/collection.rb +30 -0
- data/test/network/client/ca.rb +27 -1
- data/test/network/client/client.rb +3 -3
- data/test/network/client/master.rb +102 -1
- data/test/network/handler/ca.rb +35 -1
- data/test/network/handler/facts.rb +112 -0
- data/test/network/handler/fileserver.rb +25 -1
- data/test/network/handler/handler.rb +2 -2
- data/test/network/handler/master.rb +2 -49
- data/test/network/handler/resource.rb +5 -6
- data/test/network/server/mongrel_test.rb +65 -0
- data/test/network/server/webrick.rb +2 -2
- data/test/network/xmlrpc/client.rb +2 -1
- data/test/network/xmlrpc/processor.rb +2 -1
- data/test/other/pgraph.rb +6 -5
- data/test/other/propertychange.rb +11 -12
- data/test/other/report.rb +44 -27
- data/test/other/transactions.rb +17 -16
- data/test/puppet/tc_suidmanager.rb +2 -2
- data/test/rails/ast.rb +74 -0
- data/test/rails/collection.rb +214 -0
- data/test/rails/host.rb +49 -24
- data/test/rails/interpreter.rb +91 -0
- data/test/rails/railsparameter.rb +22 -11
- data/test/rails/railsresource.rb +140 -7
- data/test/ral/manager/attributes.rb +37 -13
- data/test/ral/manager/instances.rb +82 -0
- data/test/ral/manager/provider.rb +60 -22
- data/test/ral/manager/type.rb +9 -6
- data/test/ral/providers/cron/crontab.rb +59 -7
- data/test/ral/providers/group.rb +7 -7
- data/test/ral/providers/host/netinfo.rb +5 -6
- data/test/ral/providers/host/parsed.rb +4 -4
- data/test/ral/providers/mount/parsed.rb +11 -6
- data/test/ral/providers/nameservice.rb +2 -2
- data/test/ral/providers/package.rb +39 -14
- data/test/ral/providers/package/apt.rb +72 -3
- data/test/ral/providers/package/aptitude.rb +15 -12
- data/test/ral/providers/package/aptrpm.rb +3 -3
- data/test/ral/providers/package/dpkg.rb +2 -2
- data/test/ral/providers/parsedfile.rb +114 -88
- data/test/ral/providers/{parsedport.rb → port/parsed.rb} +1 -1
- data/test/ral/providers/provider.rb +93 -13
- data/test/ral/providers/service.rb +52 -26
- data/test/ral/providers/sshkey/parsed.rb +3 -3
- data/test/ral/providers/user.rb +19 -20
- data/test/ral/providers/user/useradd.rb +1 -5
- data/test/ral/types/cron.rb +49 -36
- data/test/ral/types/file.rb +38 -35
- data/test/ral/types/file/target.rb +4 -4
- data/test/ral/types/filesources.rb +24 -22
- data/test/ral/types/group.rb +4 -2
- data/test/ral/types/host.rb +17 -10
- data/test/ral/types/mount.rb +40 -23
- data/test/ral/types/package.rb +62 -5
- data/test/ral/types/parameter.rb +2 -2
- data/test/ral/types/property.rb +27 -20
- data/test/ral/types/resources.rb +4 -16
- data/test/ral/types/schedule.rb +2 -2
- data/test/ral/types/service.rb +2 -3
- data/test/ral/types/sshkey.rb +3 -3
- data/test/ral/types/tidy.rb +6 -15
- data/test/ral/types/user.rb +17 -17
- data/test/ral/types/yumrepo.rb +2 -2
- data/test/ral/types/zone.rb +71 -87
- data/test/util/autoload.rb +6 -21
- data/test/util/config.rb +201 -101
- data/test/util/fact_store.rb +67 -0
- data/test/util/features.rb +9 -6
- data/test/util/instance_loader.rb +53 -0
- data/test/util/loadedfile.rb +17 -1
- data/test/util/metrics.rb +54 -57
- data/test/util/posixtest.rb +8 -11
- data/test/util/utiltest.rb +31 -2
- metadata +520 -492
- data/TODO +0 -4
- data/lib/puppet/network/client/logger.rb +0 -6
- data/lib/puppet/network/handler/logger.rb +0 -52
- data/lib/puppet/rails/database/001_add_indexes.rb +0 -38
- data/lib/puppet/type/parsedtype.rb +0 -219
- data/test/network/handler/logger.rb +0 -183
@@ -19,20 +19,20 @@ require 'puppet/provider/mount'
|
|
19
19
|
#
|
20
20
|
# defaultfor :operatingsystem => :darwin
|
21
21
|
#
|
22
|
-
# def initialize(
|
22
|
+
# def initialize(resource)
|
23
23
|
# warning "The NetInfo mount provider is highly experimental. Use at your own risk."
|
24
24
|
# super
|
25
25
|
# end
|
26
26
|
#
|
27
27
|
# def mount
|
28
28
|
# cmd = []
|
29
|
-
# if opts = @
|
29
|
+
# if opts = @resource.should(:options)
|
30
30
|
# cmd << opts
|
31
31
|
# end
|
32
|
-
# cmd << @
|
33
|
-
# cmd << @
|
32
|
+
# cmd << @resource.should(:device)
|
33
|
+
# cmd << @resource[:name]
|
34
34
|
# mountcmd cmd
|
35
35
|
# end
|
36
36
|
# end
|
37
37
|
|
38
|
-
# $Id: netinfo.rb
|
38
|
+
# $Id: netinfo.rb 2501 2007-05-09 23:08:42Z luke $
|
@@ -31,7 +31,7 @@ Puppet::Type.type(:mount).provide(:parsed,
|
|
31
31
|
text_line :comment, :match => /^\s*#/
|
32
32
|
text_line :blank, :match => /^\s*$/
|
33
33
|
|
34
|
-
record_line self.name, :fields => @fields, :separator => /\s+/, :joiner => "\t"
|
34
|
+
record_line self.name, :fields => @fields, :separator => /\s+/, :joiner => "\t", :optional => [:pass, :dump]
|
35
35
|
end
|
36
36
|
|
37
|
-
# $Id: parsed.rb
|
37
|
+
# $Id: parsed.rb 2564 2007-06-11 22:49:06Z luke $
|
@@ -25,22 +25,10 @@ class Puppet::Provider::NameService < Puppet::Provider
|
|
25
25
|
super
|
26
26
|
end
|
27
27
|
|
28
|
-
def
|
28
|
+
def instances
|
29
29
|
objects = []
|
30
30
|
listbyname do |name|
|
31
|
-
|
32
|
-
check = model.validproperties
|
33
|
-
if obj = model[name]
|
34
|
-
obj[:check] = check
|
35
|
-
else
|
36
|
-
# unless it exists, create it as an unmanaged object
|
37
|
-
obj = model.create(:name => name, :check => check)
|
38
|
-
end
|
39
|
-
|
40
|
-
next unless obj # In case there was an error somewhere
|
41
|
-
|
42
|
-
objects << obj
|
43
|
-
yield obj if block_given?
|
31
|
+
objects << new(:name => name, :ensure => :present)
|
44
32
|
end
|
45
33
|
|
46
34
|
objects
|
@@ -56,9 +44,9 @@ class Puppet::Provider::NameService < Puppet::Provider
|
|
56
44
|
end
|
57
45
|
|
58
46
|
def options(name, hash)
|
59
|
-
unless
|
47
|
+
unless resource_type.validattr?(name)
|
60
48
|
raise Puppet::DevError, "%s is not a valid attribute for %s" %
|
61
|
-
[name,
|
49
|
+
[name, resource_type.name]
|
62
50
|
end
|
63
51
|
@options ||= {}
|
64
52
|
@options[name] ||= {}
|
@@ -89,9 +77,9 @@ class Puppet::Provider::NameService < Puppet::Provider
|
|
89
77
|
return names
|
90
78
|
end
|
91
79
|
|
92
|
-
def
|
80
|
+
def resource_type=(resource_type)
|
93
81
|
super
|
94
|
-
@
|
82
|
+
@resource_type.validproperties.each do |prop|
|
95
83
|
next if prop == :ensure
|
96
84
|
unless public_method_defined?(prop)
|
97
85
|
define_method(prop) { get(prop) || :absent}
|
@@ -105,13 +93,13 @@ class Puppet::Provider::NameService < Puppet::Provider
|
|
105
93
|
# This is annoying, but there really aren't that many options,
|
106
94
|
# and this *is* built into Ruby.
|
107
95
|
def section
|
108
|
-
unless defined? @
|
96
|
+
unless defined? @resource_type
|
109
97
|
raise Puppet::DevError,
|
110
|
-
"Cannot determine Etc section without a
|
98
|
+
"Cannot determine Etc section without a resource type"
|
111
99
|
|
112
100
|
end
|
113
101
|
|
114
|
-
if @
|
102
|
+
if @resource_type.name == :group
|
115
103
|
"gr"
|
116
104
|
else
|
117
105
|
"pw"
|
@@ -146,7 +134,7 @@ class Puppet::Provider::NameService < Puppet::Provider
|
|
146
134
|
def autogen(field)
|
147
135
|
field = symbolize(field)
|
148
136
|
id_generators = {:user => :uid, :group => :gid}
|
149
|
-
if id_generators[@
|
137
|
+
if id_generators[@resource.class.name] == field
|
150
138
|
return autogen_id(field)
|
151
139
|
else
|
152
140
|
if value = self.class.autogen_default(field)
|
@@ -165,11 +153,11 @@ class Puppet::Provider::NameService < Puppet::Provider
|
|
165
153
|
highest = 0
|
166
154
|
|
167
155
|
group = method = nil
|
168
|
-
case @
|
156
|
+
case @resource.class.name
|
169
157
|
when :user: group = :passwd; method = :uid
|
170
158
|
when :group: group = :group; method = :gid
|
171
159
|
else
|
172
|
-
raise Puppet::DevError, "Invalid
|
160
|
+
raise Puppet::DevError, "Invalid resource name %s" % resource
|
173
161
|
end
|
174
162
|
|
175
163
|
# Make sure we don't use the same value multiple times
|
@@ -239,7 +227,7 @@ class Puppet::Provider::NameService < Puppet::Provider
|
|
239
227
|
execute(cmd)
|
240
228
|
rescue Puppet::ExecutionFailure => detail
|
241
229
|
raise Puppet::Error, "Could not %s %s %s: %s" %
|
242
|
-
[type, @
|
230
|
+
[type, @resource.class.name, @resource.name, detail]
|
243
231
|
end
|
244
232
|
end
|
245
233
|
|
@@ -266,7 +254,7 @@ class Puppet::Provider::NameService < Puppet::Provider
|
|
266
254
|
if @objectinfo.nil? or refresh == true
|
267
255
|
@etcmethod ||= ("get" + self.class.section().to_s + "nam").intern
|
268
256
|
begin
|
269
|
-
@objectinfo = Etc.send(@etcmethod, @
|
257
|
+
@objectinfo = Etc.send(@etcmethod, @resource[:name])
|
270
258
|
rescue ArgumentError => detail
|
271
259
|
@objectinfo = nil
|
272
260
|
end
|
@@ -288,7 +276,7 @@ class Puppet::Provider::NameService < Puppet::Provider
|
|
288
276
|
# Reset our group list
|
289
277
|
Etc.setgrent
|
290
278
|
|
291
|
-
user = @
|
279
|
+
user = @resource[:name]
|
292
280
|
|
293
281
|
# Now iterate across all of the groups, adding each one our
|
294
282
|
# user is a member of
|
@@ -310,7 +298,7 @@ class Puppet::Provider::NameService < Puppet::Provider
|
|
310
298
|
# Convert the Etc struct into a hash.
|
311
299
|
def info2hash(info)
|
312
300
|
hash = {}
|
313
|
-
self.class.
|
301
|
+
self.class.resource_type.validproperties.each do |param|
|
314
302
|
method = posixmethod(param)
|
315
303
|
if info.respond_to? method
|
316
304
|
hash[param] = info.send(posixmethod(param))
|
@@ -320,7 +308,7 @@ class Puppet::Provider::NameService < Puppet::Provider
|
|
320
308
|
return hash
|
321
309
|
end
|
322
310
|
|
323
|
-
def initialize(
|
311
|
+
def initialize(resource)
|
324
312
|
super
|
325
313
|
|
326
314
|
@objectinfo = nil
|
@@ -336,9 +324,9 @@ class Puppet::Provider::NameService < Puppet::Provider
|
|
336
324
|
execute(cmd)
|
337
325
|
rescue Puppet::ExecutionFailure => detail
|
338
326
|
raise Puppet::Error, "Could not set %s on %s[%s]: %s" %
|
339
|
-
[param, @
|
327
|
+
[param, @resource.class.name, @resource.name, detail]
|
340
328
|
end
|
341
329
|
end
|
342
330
|
end
|
343
331
|
|
344
|
-
# $Id: nameservice.rb
|
332
|
+
# $Id: nameservice.rb 2555 2007-06-08 17:20:00Z luke $
|
@@ -32,7 +32,7 @@ class NetInfo < Puppet::Provider::NameService
|
|
32
32
|
if defined? @netinfodir
|
33
33
|
return @netinfodir
|
34
34
|
else
|
35
|
-
return @
|
35
|
+
return @resource_type.name.to_s + "s"
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
@@ -45,6 +45,12 @@ class NetInfo < Puppet::Provider::NameService
|
|
45
45
|
end
|
46
46
|
end
|
47
47
|
|
48
|
+
def self.instances
|
49
|
+
report(@resource_type.validproperties).collect do |hash|
|
50
|
+
self.new(hash)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
48
54
|
# Convert a NetInfo line into a hash of data.
|
49
55
|
def self.line2hash(line, params)
|
50
56
|
values = line.split(/\t/)
|
@@ -61,12 +67,6 @@ class NetInfo < Puppet::Provider::NameService
|
|
61
67
|
hash
|
62
68
|
end
|
63
69
|
|
64
|
-
def self.list
|
65
|
-
report(@model.validproperties).collect do |hash|
|
66
|
-
@model.hash2obj(hash)
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
70
|
# What field the value is stored under.
|
71
71
|
def self.netinfokey(name)
|
72
72
|
name = symbolize(name)
|
@@ -118,7 +118,7 @@ class NetInfo < Puppet::Provider::NameService
|
|
118
118
|
cmd = [command(:niutil)]
|
119
119
|
cmd << arg
|
120
120
|
|
121
|
-
cmd << "/" << "/%s/%s" % [self.class.netinfodir(), @
|
121
|
+
cmd << "/" << "/%s/%s" % [self.class.netinfodir(), @resource[:name]]
|
122
122
|
return cmd
|
123
123
|
end
|
124
124
|
|
@@ -136,9 +136,9 @@ class NetInfo < Puppet::Provider::NameService
|
|
136
136
|
# Because our stupid type can't create the whole thing at once,
|
137
137
|
# we have to do this hackishness. Yay.
|
138
138
|
if arg == :present
|
139
|
-
@
|
139
|
+
@resource.class.validproperties.each do |name|
|
140
140
|
next if name == :ensure
|
141
|
-
next unless val = @
|
141
|
+
next unless val = @resource.should(name) || autogen(name)
|
142
142
|
self.send(name.to_s + "=", val)
|
143
143
|
end
|
144
144
|
end
|
@@ -157,7 +157,7 @@ class NetInfo < Puppet::Provider::NameService
|
|
157
157
|
# Retrieve everything about this object at once, instead of separately.
|
158
158
|
def getinfo(refresh = false)
|
159
159
|
if refresh or (! defined? @infohash or ! @infohash)
|
160
|
-
properties = [:name] + self.class.
|
160
|
+
properties = [:name] + self.class.resource_type.validproperties
|
161
161
|
properties.delete(:ensure) if properties.include? :ensure
|
162
162
|
@infohash = single_report(*properties)
|
163
163
|
end
|
@@ -171,7 +171,7 @@ class NetInfo < Puppet::Provider::NameService
|
|
171
171
|
# warning "Netinfo providers cannot currently handle multiple values"
|
172
172
|
# end
|
173
173
|
|
174
|
-
cmd << "-createprop" << "/" << "/%s/%s" % [self.class.netinfodir, @
|
174
|
+
cmd << "-createprop" << "/" << "/%s/%s" % [self.class.netinfodir, @resource[:name]]
|
175
175
|
|
176
176
|
value = [value] unless value.is_a?(Array)
|
177
177
|
if key = netinfokey(param)
|
@@ -192,7 +192,7 @@ class NetInfo < Puppet::Provider::NameService
|
|
192
192
|
|
193
193
|
# Get a report for a single resource, not the whole table
|
194
194
|
def single_report(*properties)
|
195
|
-
self.class.report(*properties).find do |hash| hash[:name] ==
|
195
|
+
self.class.report(*properties).find do |hash| hash[:name] == self.name end
|
196
196
|
end
|
197
197
|
|
198
198
|
def setuserlist(group, list)
|
@@ -207,4 +207,4 @@ class NetInfo < Puppet::Provider::NameService
|
|
207
207
|
end
|
208
208
|
end
|
209
209
|
|
210
|
-
# $Id: netinfo.rb
|
210
|
+
# $Id: netinfo.rb 2552 2007-06-05 01:17:00Z luke $
|
@@ -12,7 +12,7 @@ class ObjectAdd < Puppet::Provider::NameService
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def deletecmd
|
15
|
-
[command(:delete), @
|
15
|
+
[command(:delete), @resource[:name]]
|
16
16
|
end
|
17
17
|
|
18
18
|
# Determine the flag to pass to our command.
|
@@ -25,10 +25,10 @@ class ObjectAdd < Puppet::Provider::NameService
|
|
25
25
|
cmd = [command(:modify),
|
26
26
|
flag(param),
|
27
27
|
value]
|
28
|
-
if @
|
28
|
+
if @resource[:allowdupe] == :true
|
29
29
|
cmd << "-o"
|
30
30
|
end
|
31
|
-
cmd << @
|
31
|
+
cmd << @resource[:name]
|
32
32
|
|
33
33
|
return cmd
|
34
34
|
end
|
@@ -42,4 +42,4 @@ class ObjectAdd < Puppet::Provider::NameService
|
|
42
42
|
end
|
43
43
|
end
|
44
44
|
|
45
|
-
# $Id: objectadd.rb
|
45
|
+
# $Id: objectadd.rb 2501 2007-05-09 23:08:42Z luke $
|
@@ -3,14 +3,14 @@ require 'puppet/provider/nameservice/objectadd'
|
|
3
3
|
class Puppet::Provider::NameService
|
4
4
|
class PW < ObjectAdd
|
5
5
|
def deletecmd
|
6
|
-
[command(:pw), "#{@
|
6
|
+
[command(:pw), "#{@resource.class.name.to_s}del", @resource[:name]]
|
7
7
|
end
|
8
8
|
|
9
9
|
def modifycmd(param, value)
|
10
10
|
cmd = [
|
11
11
|
command(:pw),
|
12
|
-
"#{@
|
13
|
-
@
|
12
|
+
"#{@resource.class.name.to_s}mod",
|
13
|
+
@resource[:name],
|
14
14
|
flag(param),
|
15
15
|
value
|
16
16
|
]
|
@@ -19,4 +19,4 @@ class PW < ObjectAdd
|
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
22
|
-
# $Id: pw.rb
|
22
|
+
# $Id: pw.rb 2501 2007-05-09 23:08:42Z luke $
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# Created by Luke A. Kanies on 2007-06-05.
|
2
|
+
# Copyright (c) 2007. All rights reserved.
|
3
|
+
|
4
|
+
class Puppet::Provider::Package < Puppet::Provider
|
5
|
+
# Prefetch our package list, yo.
|
6
|
+
def self.prefetch(packages)
|
7
|
+
instances.each do |prov|
|
8
|
+
if pkg = packages[prov.name]
|
9
|
+
pkg.provider = prov
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
# Clear out the cached values.
|
15
|
+
def flush
|
16
|
+
@property_hash.clear
|
17
|
+
end
|
18
|
+
|
19
|
+
# Look up the current status.
|
20
|
+
def properties
|
21
|
+
if @property_hash.empty?
|
22
|
+
@property_hash = query || {:ensure => :absent}
|
23
|
+
if @property_hash.empty?
|
24
|
+
@property_hash[:ensure] = :absent
|
25
|
+
end
|
26
|
+
end
|
27
|
+
@property_hash.dup
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
# $Id: package.rb 2559 2007-06-11 20:48:06Z luke $
|
@@ -0,0 +1,118 @@
|
|
1
|
+
# Jeff McCune <mccune.jeff@gmail.com>
|
2
|
+
# Changed to app.dmg by: Udo Waechter <root@zoide.net>
|
3
|
+
# Mac OS X Package Installer which handles application (.app)
|
4
|
+
# bundles inside an Apple Disk Image.
|
5
|
+
#
|
6
|
+
# Motivation: DMG files provide a true HFS file system
|
7
|
+
# and are easier to manage.
|
8
|
+
#
|
9
|
+
# Note: the 'apple' Provider checks for the package name
|
10
|
+
# in /L/Receipts. Since we possibly install multiple apps's from
|
11
|
+
# a single source, we treat the source .app.dmg file as the package name.
|
12
|
+
# As a result, we store installed .app.dmg file names
|
13
|
+
# in /var/db/.puppet_appdmg_installed_<name>
|
14
|
+
|
15
|
+
# require 'ruby-debug'
|
16
|
+
# Debugger.start
|
17
|
+
|
18
|
+
require 'puppet/provider/package'
|
19
|
+
Puppet::Type.type(:package).provide(:appdmg, :parent => Puppet::Provider::Package) do
|
20
|
+
desc "Package management which copies application bundles to a target."
|
21
|
+
|
22
|
+
defaultfor :operatingsystem => :darwin
|
23
|
+
confine :exists => "/Library/Receipts"
|
24
|
+
commands :hdiutil => "/usr/bin/hdiutil"
|
25
|
+
commands :curl => "/usr/bin/curl"
|
26
|
+
commands :ditto => "/usr/bin/ditto"
|
27
|
+
|
28
|
+
# JJM We store a cookie for each installed .app.dmg in /var/db
|
29
|
+
def self.instances_by_name
|
30
|
+
Dir.entries("/var/db").find_all { |f|
|
31
|
+
f =~ /^\.puppet_appdmg_installed_/
|
32
|
+
}.collect do |f|
|
33
|
+
name = f.sub(/^\.puppet_appdmg_installed_/, '')
|
34
|
+
yield name if block_given?
|
35
|
+
name
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def self.instances
|
40
|
+
instances_by_name.collect do |name|
|
41
|
+
new(:name => name, :provider => :appdmg, :ensure => :installed)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def self.installapp(source, name, orig_source)
|
46
|
+
appname = File.basename(source);
|
47
|
+
ditto "--rsrc", source, "/Applications/#{appname}"
|
48
|
+
File.open("/var/db/.puppet_appdmg_installed_#{name}", "w") do |t|
|
49
|
+
t.print "name: '#{name}'\n"
|
50
|
+
t.print "source: '#{orig_source}'\n"
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def self.installpkgdmg(source, name)
|
55
|
+
unless source =~ /\.dmg$/i
|
56
|
+
self.fail "Mac OS X PKG DMG's must specificy a source string ending in .dmg"
|
57
|
+
end
|
58
|
+
require 'open-uri'
|
59
|
+
require 'puppet/util/plist'
|
60
|
+
cached_source = source
|
61
|
+
if %r{\A[A-Za-z][A-Za-z0-9+\-\.]*://} =~ cached_source
|
62
|
+
cached_source = "/tmp/#{name}"
|
63
|
+
begin
|
64
|
+
curl "-o", cached_source, "-C", "-", "-k", "-s", "--url", source
|
65
|
+
Puppet.debug "Success: curl transfered [#{name}]"
|
66
|
+
rescue Puppet::ExecutionFailure
|
67
|
+
Puppet.debug "curl did not transfer [#{name}]. Falling back to slower open-uri transfer methods."
|
68
|
+
cached_source = source
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
begin
|
73
|
+
open(cached_source) do |dmg|
|
74
|
+
xml_str = hdiutil "mount", "-plist", "-nobrowse", "-readonly", "-mountrandom", "/tmp", dmg.path
|
75
|
+
ptable = Plist::parse_xml xml_str
|
76
|
+
# JJM Filter out all mount-paths into a single array, discard the rest.
|
77
|
+
mounts = ptable['system-entities'].collect { |entity|
|
78
|
+
entity['mount-point']
|
79
|
+
}.select { |mountloc|; mountloc }
|
80
|
+
begin
|
81
|
+
mounts.each do |fspath|
|
82
|
+
Dir.entries(fspath).select { |f|
|
83
|
+
f =~ /\.app$/i
|
84
|
+
}.each do |pkg|
|
85
|
+
installapp("#{fspath}/#{pkg}", name, source)
|
86
|
+
end
|
87
|
+
end # mounts.each do
|
88
|
+
ensure
|
89
|
+
hdiutil "eject", mounts[0]
|
90
|
+
end # begin
|
91
|
+
end # open() do
|
92
|
+
ensure
|
93
|
+
# JJM Remove the file if open-uri didn't already do so.
|
94
|
+
File.unlink(cached_source) if File.exist?(cached_source)
|
95
|
+
end # begin
|
96
|
+
end # def self.installpkgdmg
|
97
|
+
|
98
|
+
def query
|
99
|
+
if FileTest.exists?("/var/db/.puppet_appdmg_installed_#{@resource[:name]}")
|
100
|
+
return {:name => @resource[:name], :ensure => :present}
|
101
|
+
else
|
102
|
+
return nil
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
def install
|
107
|
+
source = nil
|
108
|
+
unless source = @resource[:source]
|
109
|
+
self.fail "Mac OS X PKG DMG's must specify a package source."
|
110
|
+
end
|
111
|
+
unless name = @resource[:name]
|
112
|
+
self.fail "Mac OS X PKG DMG's must specify a package name."
|
113
|
+
end
|
114
|
+
self.class.installpkgdmg(source,name)
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
# $Id: appdmg.rb 2609 2007-06-18 18:46:00Z luke $
|