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.

Files changed (266) hide show
  1. data/CHANGELOG +156 -0
  2. data/README +2 -2
  3. data/Rakefile +6 -6
  4. data/bin/filebucket +212 -0
  5. data/bin/puppet +2 -0
  6. data/bin/puppetca +2 -4
  7. data/bin/puppetd +16 -15
  8. data/bin/puppetdoc +46 -496
  9. data/bin/puppetmasterd +3 -5
  10. data/bin/puppetrun +8 -3
  11. data/bin/ralsh +271 -0
  12. data/conf/redhat/client.init +1 -1
  13. data/conf/redhat/puppet.spec +13 -2
  14. data/conf/solaris/pkginfo +1 -1
  15. data/ext/puppet-test +374 -0
  16. data/install.rb +40 -31
  17. data/lib/puppet.rb +39 -4
  18. data/lib/puppet/config_stores/rest.rb +60 -0
  19. data/lib/puppet/configuration.rb +312 -17
  20. data/lib/puppet/external/event-loop/event-loop.rb +4 -0
  21. data/lib/puppet/external/gratr/rdot.rb +1 -1
  22. data/lib/puppet/fact_stores/yaml.rb +42 -0
  23. data/lib/puppet/feature/base.rb +4 -1
  24. data/lib/puppet/metatype/attributes.rb +20 -43
  25. data/lib/puppet/metatype/container.rb +1 -36
  26. data/lib/puppet/metatype/evaluation.rb +48 -19
  27. data/lib/puppet/metatype/instances.rb +35 -1
  28. data/lib/puppet/metatype/metaparams.rb +23 -19
  29. data/lib/puppet/metatype/providers.rb +25 -38
  30. data/lib/puppet/network/client/ca.rb +8 -5
  31. data/lib/puppet/network/client/master.rb +59 -17
  32. data/lib/puppet/network/handler.rb +18 -1
  33. data/lib/puppet/network/handler/ca.rb +9 -3
  34. data/lib/puppet/network/handler/facts.rb +70 -0
  35. data/lib/puppet/network/handler/filebucket.rb +4 -1
  36. data/lib/puppet/network/handler/fileserver.rb +65 -21
  37. data/lib/puppet/network/handler/master.rb +6 -3
  38. data/lib/puppet/network/handler/report.rb +12 -26
  39. data/lib/puppet/network/handler/resource.rb +14 -2
  40. data/lib/puppet/network/handler/runner.rb +5 -1
  41. data/lib/puppet/network/handler/status.rb +5 -1
  42. data/lib/puppet/network/server/mongrel.rb +4 -4
  43. data/lib/puppet/network/server/webrick.rb +14 -3
  44. data/lib/puppet/parameter.rb +30 -25
  45. data/lib/puppet/parser/ast.rb +1 -6
  46. data/lib/puppet/parser/ast/component.rb +23 -20
  47. data/lib/puppet/parser/ast/hostclass.rb +7 -11
  48. data/lib/puppet/parser/ast/leaf.rb +4 -1
  49. data/lib/puppet/parser/ast/node.rb +6 -8
  50. data/lib/puppet/parser/functions.rb +7 -4
  51. data/lib/puppet/parser/interpreter.rb +155 -205
  52. data/lib/puppet/parser/lexer.rb +35 -2
  53. data/lib/puppet/parser/parser.rb +705 -612
  54. data/lib/puppet/parser/resource.rb +91 -48
  55. data/lib/puppet/parser/resource/param.rb +52 -29
  56. data/lib/puppet/parser/scope.rb +28 -23
  57. data/lib/puppet/pgraph.rb +26 -21
  58. data/lib/puppet/propertychange.rb +12 -12
  59. data/lib/puppet/provider.rb +102 -31
  60. data/lib/puppet/provider/cron/crontab.rb +7 -8
  61. data/lib/puppet/provider/group/groupadd.rb +4 -4
  62. data/lib/puppet/provider/group/pw.rb +3 -3
  63. data/lib/puppet/provider/mount.rb +8 -8
  64. data/lib/puppet/provider/mount/netinfo.rb +5 -5
  65. data/lib/puppet/provider/mount/parsed.rb +2 -2
  66. data/lib/puppet/provider/nameservice.rb +19 -31
  67. data/lib/puppet/provider/nameservice/netinfo.rb +14 -14
  68. data/lib/puppet/provider/nameservice/objectadd.rb +4 -4
  69. data/lib/puppet/provider/nameservice/pw.rb +4 -4
  70. data/lib/puppet/provider/package.rb +31 -0
  71. data/lib/puppet/provider/package/appdmg.rb +118 -0
  72. data/lib/puppet/provider/package/apple.rb +18 -16
  73. data/lib/puppet/provider/package/apt.rb +13 -15
  74. data/lib/puppet/provider/package/aptitude.rb +5 -3
  75. data/lib/puppet/provider/package/aptrpm.rb +9 -11
  76. data/lib/puppet/provider/package/blastwave.rb +9 -9
  77. data/lib/puppet/provider/package/darwinport.rb +12 -11
  78. data/lib/puppet/provider/package/dpkg.rb +20 -12
  79. data/lib/puppet/provider/package/fink.rb +87 -0
  80. data/lib/puppet/provider/package/freebsd.rb +10 -11
  81. data/lib/puppet/provider/package/gem.rb +15 -15
  82. data/lib/puppet/provider/package/openbsd.rb +12 -17
  83. data/lib/puppet/provider/package/pkgdmg.rb +90 -16
  84. data/lib/puppet/provider/package/portage.rb +20 -14
  85. data/lib/puppet/provider/package/ports.rb +15 -13
  86. data/lib/puppet/provider/package/rpm.rb +20 -23
  87. data/lib/puppet/provider/package/rug.rb +6 -8
  88. data/lib/puppet/provider/package/sun.rb +20 -18
  89. data/lib/puppet/provider/package/sunfreeware.rb +2 -2
  90. data/lib/puppet/provider/package/up2date.rb +6 -10
  91. data/lib/puppet/provider/package/urpmi.rb +51 -0
  92. data/lib/puppet/provider/package/yum.rb +15 -13
  93. data/lib/puppet/provider/parsedfile.rb +53 -63
  94. data/lib/puppet/provider/service/base.rb +13 -15
  95. data/lib/puppet/provider/service/debian.rb +4 -4
  96. data/lib/puppet/provider/service/gentoo.rb +4 -4
  97. data/lib/puppet/provider/service/init.rb +22 -15
  98. data/lib/puppet/provider/service/redhat.rb +6 -6
  99. data/lib/puppet/provider/service/smf.rb +6 -6
  100. data/lib/puppet/provider/user/netinfo.rb +5 -5
  101. data/lib/puppet/provider/user/pw.rb +10 -5
  102. data/lib/puppet/provider/user/useradd.rb +9 -14
  103. data/lib/puppet/provider/zone/solaris.rb +80 -45
  104. data/lib/puppet/rails.rb +3 -34
  105. data/lib/puppet/rails/database/schema.rb +45 -24
  106. data/lib/puppet/rails/fact_value.rb +1 -0
  107. data/lib/puppet/rails/host.rb +69 -40
  108. data/lib/puppet/rails/param_name.rb +3 -8
  109. data/lib/puppet/rails/param_value.rb +2 -1
  110. data/lib/puppet/rails/puppet_class.rb +0 -2
  111. data/lib/puppet/rails/puppet_tag.rb +5 -0
  112. data/lib/puppet/rails/resource.rb +41 -17
  113. data/lib/puppet/rails/resource_tag.rb +4 -0
  114. data/lib/puppet/reference/configuration.rb +149 -0
  115. data/lib/puppet/reference/function.rb +13 -0
  116. data/lib/puppet/reference/network.rb +37 -0
  117. data/lib/puppet/reference/providers.rb +118 -0
  118. data/lib/puppet/reference/report.rb +21 -0
  119. data/lib/puppet/reference/type.rb +152 -0
  120. data/lib/puppet/reports/rrdgraph.rb +21 -7
  121. data/lib/puppet/reports/tagmail.rb +4 -1
  122. data/lib/puppet/sslcertificates.rb +1 -49
  123. data/lib/puppet/sslcertificates/ca.rb +2 -79
  124. data/lib/puppet/sslcertificates/inventory.rb +0 -10
  125. data/lib/puppet/transaction.rb +24 -41
  126. data/lib/puppet/transaction/report.rb +27 -1
  127. data/lib/puppet/type.rb +7 -43
  128. data/lib/puppet/type/component.rb +198 -124
  129. data/lib/puppet/type/cron.rb +51 -42
  130. data/lib/puppet/type/exec.rb +20 -19
  131. data/lib/puppet/type/group.rb +6 -55
  132. data/lib/puppet/type/host.rb +16 -37
  133. data/lib/puppet/type/mount.rb +30 -17
  134. data/lib/puppet/type/notify.rb +7 -8
  135. data/lib/puppet/type/package.rb +44 -80
  136. data/lib/puppet/type/pfile.rb +50 -41
  137. data/lib/puppet/type/pfile/checksum.rb +82 -95
  138. data/lib/puppet/type/pfile/content.rb +21 -25
  139. data/lib/puppet/type/pfile/ensure.rb +32 -30
  140. data/lib/puppet/type/pfile/group.rb +21 -26
  141. data/lib/puppet/type/pfile/mode.rb +25 -32
  142. data/lib/puppet/type/pfile/owner.rb +23 -27
  143. data/lib/puppet/type/pfile/source.rb +42 -33
  144. data/lib/puppet/type/pfile/target.rb +20 -18
  145. data/lib/puppet/type/pfile/type.rb +6 -7
  146. data/lib/puppet/type/pfilebucket.rb +3 -3
  147. data/lib/puppet/type/port.rb +5 -7
  148. data/lib/puppet/type/property.rb +58 -61
  149. data/lib/puppet/type/resources.rb +12 -8
  150. data/lib/puppet/type/schedule.rb +8 -8
  151. data/lib/puppet/type/service.rb +26 -33
  152. data/lib/puppet/type/sshkey.rb +6 -7
  153. data/lib/puppet/type/tidy.rb +41 -35
  154. data/lib/puppet/type/user.rb +34 -67
  155. data/lib/puppet/type/yumrepo.rb +27 -12
  156. data/lib/puppet/type/zone.rb +71 -110
  157. data/lib/puppet/util.rb +46 -61
  158. data/lib/puppet/util/autoload.rb +59 -47
  159. data/lib/puppet/util/config.rb +160 -18
  160. data/lib/puppet/util/config_store.rb +61 -0
  161. data/lib/puppet/util/fact_store.rb +60 -0
  162. data/lib/puppet/util/instance_loader.rb +74 -0
  163. data/lib/puppet/util/loadedfile.rb +5 -8
  164. data/lib/puppet/util/metric.rb +17 -25
  165. data/lib/puppet/util/posix.rb +39 -7
  166. data/lib/puppet/util/provider_features.rb +9 -1
  167. data/lib/puppet/util/rails/collection_merger.rb +16 -1
  168. data/lib/puppet/util/reference.rb +189 -0
  169. data/lib/puppet/util/storage.rb +2 -2
  170. data/lib/puppet/util/subclass_loader.rb +9 -2
  171. data/test/language/ast.rb +4 -148
  172. data/test/language/ast/component.rb +10 -1
  173. data/test/language/collector.rb +1 -191
  174. data/test/language/interpreter.rb +284 -327
  175. data/test/language/lexer.rb +13 -1
  176. data/test/language/node.rb +1 -1
  177. data/test/language/parser.rb +17 -4
  178. data/test/language/resource.rb +67 -101
  179. data/test/language/scope.rb +18 -3
  180. data/test/language/snippets.rb +114 -151
  181. data/test/lib/puppettest.rb +13 -0
  182. data/test/lib/puppettest/exetest.rb +7 -0
  183. data/test/lib/puppettest/fakes.rb +39 -28
  184. data/test/lib/puppettest/railstesting.rb +1 -1
  185. data/test/lib/puppettest/support/assertions.rb +2 -2
  186. data/test/lib/puppettest/support/collection.rb +30 -0
  187. data/test/network/client/ca.rb +27 -1
  188. data/test/network/client/client.rb +3 -3
  189. data/test/network/client/master.rb +102 -1
  190. data/test/network/handler/ca.rb +35 -1
  191. data/test/network/handler/facts.rb +112 -0
  192. data/test/network/handler/fileserver.rb +25 -1
  193. data/test/network/handler/handler.rb +2 -2
  194. data/test/network/handler/master.rb +2 -49
  195. data/test/network/handler/resource.rb +5 -6
  196. data/test/network/server/mongrel_test.rb +65 -0
  197. data/test/network/server/webrick.rb +2 -2
  198. data/test/network/xmlrpc/client.rb +2 -1
  199. data/test/network/xmlrpc/processor.rb +2 -1
  200. data/test/other/pgraph.rb +6 -5
  201. data/test/other/propertychange.rb +11 -12
  202. data/test/other/report.rb +44 -27
  203. data/test/other/transactions.rb +17 -16
  204. data/test/puppet/tc_suidmanager.rb +2 -2
  205. data/test/rails/ast.rb +74 -0
  206. data/test/rails/collection.rb +214 -0
  207. data/test/rails/host.rb +49 -24
  208. data/test/rails/interpreter.rb +91 -0
  209. data/test/rails/railsparameter.rb +22 -11
  210. data/test/rails/railsresource.rb +140 -7
  211. data/test/ral/manager/attributes.rb +37 -13
  212. data/test/ral/manager/instances.rb +82 -0
  213. data/test/ral/manager/provider.rb +60 -22
  214. data/test/ral/manager/type.rb +9 -6
  215. data/test/ral/providers/cron/crontab.rb +59 -7
  216. data/test/ral/providers/group.rb +7 -7
  217. data/test/ral/providers/host/netinfo.rb +5 -6
  218. data/test/ral/providers/host/parsed.rb +4 -4
  219. data/test/ral/providers/mount/parsed.rb +11 -6
  220. data/test/ral/providers/nameservice.rb +2 -2
  221. data/test/ral/providers/package.rb +39 -14
  222. data/test/ral/providers/package/apt.rb +72 -3
  223. data/test/ral/providers/package/aptitude.rb +15 -12
  224. data/test/ral/providers/package/aptrpm.rb +3 -3
  225. data/test/ral/providers/package/dpkg.rb +2 -2
  226. data/test/ral/providers/parsedfile.rb +114 -88
  227. data/test/ral/providers/{parsedport.rb → port/parsed.rb} +1 -1
  228. data/test/ral/providers/provider.rb +93 -13
  229. data/test/ral/providers/service.rb +52 -26
  230. data/test/ral/providers/sshkey/parsed.rb +3 -3
  231. data/test/ral/providers/user.rb +19 -20
  232. data/test/ral/providers/user/useradd.rb +1 -5
  233. data/test/ral/types/cron.rb +49 -36
  234. data/test/ral/types/file.rb +38 -35
  235. data/test/ral/types/file/target.rb +4 -4
  236. data/test/ral/types/filesources.rb +24 -22
  237. data/test/ral/types/group.rb +4 -2
  238. data/test/ral/types/host.rb +17 -10
  239. data/test/ral/types/mount.rb +40 -23
  240. data/test/ral/types/package.rb +62 -5
  241. data/test/ral/types/parameter.rb +2 -2
  242. data/test/ral/types/property.rb +27 -20
  243. data/test/ral/types/resources.rb +4 -16
  244. data/test/ral/types/schedule.rb +2 -2
  245. data/test/ral/types/service.rb +2 -3
  246. data/test/ral/types/sshkey.rb +3 -3
  247. data/test/ral/types/tidy.rb +6 -15
  248. data/test/ral/types/user.rb +17 -17
  249. data/test/ral/types/yumrepo.rb +2 -2
  250. data/test/ral/types/zone.rb +71 -87
  251. data/test/util/autoload.rb +6 -21
  252. data/test/util/config.rb +201 -101
  253. data/test/util/fact_store.rb +67 -0
  254. data/test/util/features.rb +9 -6
  255. data/test/util/instance_loader.rb +53 -0
  256. data/test/util/loadedfile.rb +17 -1
  257. data/test/util/metrics.rb +54 -57
  258. data/test/util/posixtest.rb +8 -11
  259. data/test/util/utiltest.rb +31 -2
  260. metadata +520 -492
  261. data/TODO +0 -4
  262. data/lib/puppet/network/client/logger.rb +0 -6
  263. data/lib/puppet/network/handler/logger.rb +0 -52
  264. data/lib/puppet/rails/database/001_add_indexes.rb +0 -38
  265. data/lib/puppet/type/parsedtype.rb +0 -219
  266. 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(model)
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 = @model.should(:options)
29
+ # if opts = @resource.should(:options)
30
30
  # cmd << opts
31
31
  # end
32
- # cmd << @model.should(:device)
33
- # cmd << @model[:name]
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 2171 2007-02-07 17:29:19Z luke $
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 1860 2006-11-12 21:25:13Z luke $
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 list
28
+ def instances
29
29
  objects = []
30
30
  listbyname do |name|
31
- obj = nil
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 model.validattr?(name)
47
+ unless resource_type.validattr?(name)
60
48
  raise Puppet::DevError, "%s is not a valid attribute for %s" %
61
- [name, model.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 model=(model)
80
+ def resource_type=(resource_type)
93
81
  super
94
- @model.validproperties.each do |prop|
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? @model
96
+ unless defined? @resource_type
109
97
  raise Puppet::DevError,
110
- "Cannot determine Etc section without a model"
98
+ "Cannot determine Etc section without a resource type"
111
99
 
112
100
  end
113
101
 
114
- if @model.name == :group
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[@model.class.name] == field
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 @model.class.name
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 model name %s" % model
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, @model.class.name, @model.name, detail]
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, @model[:name])
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 = @model[:name]
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.model.validproperties.each do |param|
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(model)
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, @model.class.name, @model.name, detail]
327
+ [param, @resource.class.name, @resource.name, detail]
340
328
  end
341
329
  end
342
330
  end
343
331
 
344
- # $Id: nameservice.rb 2359 2007-03-28 06:06:54Z luke $
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 @model.name.to_s + "s"
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(), @model[:name]]
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
- @model.class.validproperties.each do |name|
139
+ @resource.class.validproperties.each do |name|
140
140
  next if name == :ensure
141
- next unless val = @model.should(name) || autogen(name)
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.model.validproperties
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, @model[:name]]
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] == @model[:name] end
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 2169 2007-02-07 06:47:10Z luke $
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), @model[:name]]
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 @model[:allowdupe] == :true
28
+ if @resource[:allowdupe] == :true
29
29
  cmd << "-o"
30
30
  end
31
- cmd << @model[:name]
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 1979 2006-12-28 08:06:46Z luke $
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), "#{@model.class.name.to_s}del", @model[:name]]
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
- "#{@model.class.name.to_s}mod",
13
- @model[:name],
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 1979 2006-12-28 08:06:46Z luke $
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 $