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
@@ -42,19 +42,14 @@ class TestTypeAttributes < Test::Unit::TestCase
42
42
 
43
43
  if param == :property
44
44
  assert(inst.property(param), "did not get obj for %s" % param)
45
- end
46
-
47
- if param == :property
48
45
  assert_equal(true, inst.should(param),
49
46
  "should value did not get set")
50
- inst.is = [:property, true]
47
+ else
48
+ assert_equal(true, inst[param],
49
+ "did not get correct value for %s from symbol" % param)
50
+ assert_equal(true, inst[param.to_s],
51
+ "did not get correct value for %s from string" % param)
51
52
  end
52
-
53
- # Now make sure we can get it back
54
- assert_equal(true, inst[param],
55
- "did not get correct value for %s from symbol" % param)
56
- assert_equal(true, inst[param.to_s],
57
- "did not get correct value for %s from string" % param)
58
53
  end
59
54
  end
60
55
 
@@ -232,7 +227,6 @@ class TestTypeAttributes < Test::Unit::TestCase
232
227
  type.provide(:testing) {}
233
228
  provider = type.attrclass(:provider)
234
229
  should = [[name, :param], [provider, :param], [two, :property], [one, :param]]
235
-
236
230
  assert_nothing_raised do
237
231
  result = nil
238
232
  type.eachattr do |obj, name|
@@ -260,7 +254,7 @@ class TestTypeAttributes < Test::Unit::TestCase
260
254
 
261
255
  # Now make similar providers
262
256
  nope = type.provide(:nope) {}
263
- maybe = type.provide(:maybe) { has_features :fone}
257
+ maybe = type.provide(:maybe) { has_feature :fone}
264
258
  yep = type.provide(:yep) { has_features :fone, :ftwo}
265
259
 
266
260
  attrs = [:none, :one, :two]
@@ -291,6 +285,36 @@ class TestTypeAttributes < Test::Unit::TestCase
291
285
  @logs.clear
292
286
  end
293
287
  end
288
+
289
+ # Make sure the 'check' metaparam just ignores non-properties, rather than failing.
290
+ def test_check_allows_parameters
291
+ file = Puppet::Type.type(:file)
292
+ klass = file.attrclass(:check)
293
+
294
+ resource = file.create(:path => tempfile)
295
+ inst = klass.new(:resource => resource)
296
+
297
+ {:property => [:owner, :group], :parameter => [:ignore, :recurse], :metaparam => [:require, :subscribe]}.each do |attrtype, attrs|
298
+ assert_nothing_raised("Could not set check to a single %s value" % attrtype) do
299
+ inst.value = attrs[0]
300
+ end
301
+
302
+ if attrtype == :property
303
+ assert(resource.property(attrs[0]), "Check did not create property instance during single check")
304
+ end
305
+ assert_nothing_raised("Could not set check to multiple %s values" % attrtype) do
306
+ inst.value = attrs
307
+ end
308
+ if attrtype == :property
309
+ assert(resource.property(attrs[1]), "Check did not create property instance during multiple check")
310
+ end
311
+ end
312
+
313
+ # But make sure actually invalid attributes fail
314
+ assert_raise(Puppet::Error, ":check did not fail on invalid attribute") do
315
+ inst.value = :nosuchattr
316
+ end
317
+ end
294
318
  end
295
319
 
296
- # $Id: attributes.rb 2414 2007-04-25 20:59:00Z luke $
320
+ # $Id: attributes.rb 2591 2007-06-15 19:49:26Z luke $
@@ -0,0 +1,82 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # Created by Luke A. Kanies on 2007-06-10.
4
+ # Copyright (c) 2007. All rights reserved.
5
+
6
+ $:.unshift("../../lib") if __FILE__ =~ /\.rb$/
7
+
8
+ require 'puppettest'
9
+
10
+ class TestTypeInstances < Test::Unit::TestCase
11
+ include PuppetTest
12
+
13
+ def setup
14
+ super
15
+ @type = Puppet::Type.newtype(:instance_test) do
16
+ newparam(:name) {}
17
+ ensurable
18
+ end
19
+ cleanup { Puppet::Type.rmtype(:instance_test) }
20
+ end
21
+
22
+ # Make sure the instances class method works as expected.
23
+ def test_instances
24
+ # First make sure it throws an error when there are no providers
25
+ assert_raise(Puppet::DevError, "Did not fail when no providers are present") do
26
+ @type.instances
27
+ end
28
+
29
+ # Now add a couple of providers
30
+
31
+ # The default
32
+ @type.provide(:default) do
33
+ defaultfor :operatingsystem => Facter.value(:operatingsystem)
34
+ mk_resource_methods
35
+ class << self
36
+ attr_accessor :names
37
+ end
38
+ def self.instance(name)
39
+ new(:name => name, :ensure => :present)
40
+ end
41
+ def self.instances
42
+ @instances ||= names.collect { |name| instance(name) }
43
+ @instances
44
+ end
45
+
46
+ @names = [:one]
47
+ end
48
+
49
+ # A provider with the same source
50
+ @type.provide(:sub, :source => :default, :parent => :default) do
51
+ @names = [:two]
52
+ end
53
+
54
+ # An unsuitable provider
55
+ @type.provide(:nope, :parent => :default) do
56
+ confine :exists => "/no/such/file"
57
+ @names = [:three]
58
+ end
59
+
60
+ # Another suitable, non-default provider
61
+ @type.provide(:yep, :parent => :default) do
62
+ @names = [:four]
63
+ end
64
+
65
+ result = nil
66
+ assert_nothing_raised("Could not get instance list") do
67
+ result = @type.instances
68
+ end
69
+
70
+ assert_equal(:one, result[0].name, "Did not get default instances first")
71
+ assert_equal(@type.provider(:default).instances[0], result[0].provider, "Provider instances were not maintained")
72
+
73
+ resources = result.inject({}) { |hash, res| hash[res.name] = res; hash }
74
+ assert(resources.include?(:four), "Did not get resources from other suitable providers")
75
+ assert(! resources.include?(:three), "Got resources from unsuitable providers")
76
+
77
+ # Now make sure the resources have an 'ensure' property to go with the value in the provider
78
+ assert(resources[:one].send(:instance_variable_get, "@parameters").include?(:ensure), "Did not create ensure property")
79
+ end
80
+ end
81
+
82
+ # $Id: instances.rb 2551 2007-06-04 20:37:14Z luke $
@@ -8,47 +8,85 @@ require 'mocha'
8
8
  class TestTypeProviders < Test::Unit::TestCase
9
9
  include PuppetTest
10
10
 
11
- # Make sure default providers behave correctly
12
- def test_defaultproviders
13
- # Make a fake type
14
- type = Puppet::Type.newtype(:defaultprovidertest) do
15
- newparam(:name) do end
11
+ def setup
12
+ super
13
+ @type = Puppet::Type.newtype(:provider_test) do
14
+ newparam(:name) {}
15
+ ensurable
16
16
  end
17
+ cleanup { Puppet::Type.rmtype(:provider_test) }
18
+ end
17
19
 
18
- cleanup { Puppet::Type.rmtype(:defaultprovidertest) }
19
-
20
- basic = type.provide(:basic) do
20
+ # Make sure default providers behave correctly
21
+ def test_defaultproviders
22
+ basic = @type.provide(:basic) do
21
23
  defaultfor :operatingsystem => :somethingelse,
22
24
  :operatingsystemrelease => :yayness
23
25
  end
24
26
 
25
- assert_equal(basic, type.defaultprovider)
26
- type.defaultprovider = nil
27
+ assert_equal(basic, @type.defaultprovider)
28
+ @type.defaultprovider = nil
27
29
 
28
- greater = type.provide(:greater) do
30
+ greater = @type.provide(:greater) do
29
31
  defaultfor :operatingsystem => Facter.value("operatingsystem")
30
32
  end
31
33
 
32
- assert_equal(greater, type.defaultprovider)
34
+ assert_equal(greater, @type.defaultprovider)
33
35
  end
34
36
 
35
37
  # Make sure the provider is always the first parameter created.
36
38
  def test_provider_sorting
37
- type = Puppet::Type.newtype(:sorttest) do
38
- newparam(:name) {}
39
- ensurable
40
- end
41
- cleanup { Puppet::Type.rmtype(:sorttest) }
42
-
43
39
  should = [:name, :ensure]
44
- assert_equal(should, type.allattrs.reject { |p| ! should.include?(p) },
40
+ assert_equal(should, @type.allattrs.reject { |p| ! should.include?(p) },
45
41
  "Got wrong order of parameters")
46
42
 
47
- type.provide(:yay) { }
43
+ @type.provide(:yay) { }
48
44
  should = [:name, :provider, :ensure]
49
- assert_equal(should, type.allattrs.reject { |p| ! should.include?(p) },
45
+ assert_equal(should, @type.allattrs.reject { |p| ! should.include?(p) },
50
46
  "Providify did not reorder parameters")
51
47
  end
48
+
49
+ # Make sure that provider instances can be passed in directly.
50
+ def test_name_or_provider
51
+ provider = @type.provide(:testing) do
52
+ end
53
+
54
+ # first make sure we can pass the name in
55
+ resource = nil
56
+ assert_nothing_raised("Could not create provider instance by name") do
57
+ resource = @type.create :name => "yay", :provider => :testing
58
+ end
59
+
60
+ assert_instance_of(provider, resource.provider, "Did not create provider instance")
61
+
62
+ # Now make sure we can pass in an instance
63
+ provinst = provider.new(:name => "foo")
64
+ assert_nothing_raised("Could not pass in provider instance") do
65
+ resource = @type.create :name => "foo", :provider => provinst
66
+ end
67
+
68
+ assert_equal(provinst, resource.provider, "Did not retain provider instance")
69
+ assert_equal(provider.name, resource[:provider], "Provider value was set to the provider instead of its name")
70
+
71
+ # Now make sure unsuitable provider instances still throw errors
72
+ provider = @type.provide(:badprov) do
73
+ confine :exists => "/no/such/file"
74
+ end
75
+
76
+ inst = provider.new(:name => "bar")
77
+ assert_raise(Puppet::Error, "Did not fail on unsuitable provider instance") do
78
+ resource = @type.create :name => "bar", :provider => inst
79
+ end
80
+
81
+ # And make sure the provider must be a valid provider type for this resource
82
+ pkgprov = Puppet::Type.type(:package).create(:name => "yayness").provider
83
+ assert(provider, "did not get package provider")
84
+
85
+ assert_raise(Puppet::Error, "Did not fail on invalid provider instance") do
86
+ resource = @type.create :name => "bar", :provider => pkgprov
87
+ end
88
+
89
+ end
52
90
  end
53
91
 
54
- # $Id: provider.rb 2428 2007-04-28 01:18:23Z luke $
92
+ # $Id: provider.rb 2552 2007-06-05 01:17:00Z luke $
@@ -285,7 +285,7 @@ class TestType < Test::Unit::TestCase
285
285
  def test_object_recursion
286
286
  comp = Puppet.type(:component).create(:name => "top")
287
287
 
288
- file = Puppet.type(:file).create(:path => tempfile, :ensure => :file)
288
+ file = Puppet.type(:component).create(:name => "middle")
289
289
 
290
290
  assert_raise(Puppet::DevError) do
291
291
  comp.push(comp)
@@ -414,6 +414,9 @@ end
414
414
  def test_newproperty_options
415
415
  # Create a type with a fake provider
416
416
  providerclass = Class.new do
417
+ def self.supports_parameter?(prop)
418
+ return true
419
+ end
417
420
  def method_missing(method, *args)
418
421
  return method
419
422
  end
@@ -441,7 +444,7 @@ end
441
444
  # Now create an instance
442
445
  obj = type.create(:name => :myobj)
443
446
 
444
- inst = property.new(:parent => obj)
447
+ inst = property.new(:resource => obj)
445
448
 
446
449
  # And make sure it's correctly setting @is
447
450
  ret = nil
@@ -449,7 +452,7 @@ end
449
452
  ret = inst.retrieve
450
453
  }
451
454
 
452
- assert_equal(:noopts, inst.is)
455
+ assert_equal(:noopts, inst.retrieve)
453
456
 
454
457
  # Now create a property with a different way of doing it
455
458
  property = nil
@@ -457,7 +460,7 @@ end
457
460
  property = type.newproperty(:setretrieve, :retrieve => :yayness)
458
461
  end
459
462
 
460
- inst = property.new(:parent => obj)
463
+ inst = property.new(:resource => obj)
461
464
 
462
465
  # And make sure it's correctly setting @is
463
466
  ret = nil
@@ -465,7 +468,7 @@ end
465
468
  ret = inst.retrieve
466
469
  }
467
470
 
468
- assert_equal(:yayness, inst.is)
471
+ assert_equal(:yayness, ret)
469
472
  end
470
473
 
471
474
  def test_name_vs_title
@@ -834,4 +837,4 @@ end
834
837
  end
835
838
  end
836
839
 
837
- # $Id: type.rb 2275 2007-03-08 21:18:43Z luke $
840
+ # $Id: type.rb 2500 2007-05-09 22:05:32Z luke $
@@ -58,6 +58,7 @@ class TestCronParsedProvider < Test::Unit::TestCase
58
58
  files = Dir.glob("%s/crontab.*" % crondir)
59
59
 
60
60
  setme
61
+ @provider.default_target = @me
61
62
  target = @provider.target_object(@me)
62
63
  files.each do |file|
63
64
  str = args = nil
@@ -82,7 +83,7 @@ class TestCronParsedProvider < Test::Unit::TestCase
82
83
  end
83
84
  target.write(str)
84
85
  assert_nothing_raised("could not parse %s" % file) do
85
- @provider.prefetch_target(@me)
86
+ @provider.prefetch
86
87
  end
87
88
  records = @provider.send(:instance_variable_get, "@records")
88
89
 
@@ -90,6 +91,7 @@ class TestCronParsedProvider < Test::Unit::TestCase
90
91
  # Make the values a bit more equal.
91
92
  should[:target] = @me
92
93
  should[:ensure] = :present
94
+ #should[:environment] ||= []
93
95
  should[:on_disk] = true
94
96
  is = sis.dup
95
97
  sis.dup.each do |p,v|
@@ -150,7 +152,7 @@ class TestCronParsedProvider < Test::Unit::TestCase
150
152
  target = @provider.target_object(user)
151
153
  target.write(str)
152
154
  assert_nothing_raised {
153
- @provider.prefetch_target(user)
155
+ @provider.prefetch
154
156
  }
155
157
 
156
158
  assert_nothing_raised {
@@ -236,7 +238,7 @@ class TestCronParsedProvider < Test::Unit::TestCase
236
238
  assert_equal(str, target.read,
237
239
  "Did not write correctly")
238
240
  assert_nothing_raised("Could not prefetch with %s" % str.inspect) do
239
- @provider.prefetch_target(@me)
241
+ @provider.prefetch
240
242
  end
241
243
  assert_nothing_raised("Could not flush with %s" % str.inspect) do
242
244
  @provider.flush_target(@me)
@@ -269,7 +271,7 @@ class TestCronParsedProvider < Test::Unit::TestCase
269
271
  hash = @provider.parse_line(str)
270
272
  hash[:user] = @me
271
273
 
272
- instance = @provider.match(hash)
274
+ instance = @provider.match(hash, "yaycron" => cron)
273
275
  assert(instance, "did not match cron")
274
276
  assert_equal(cron, instance,
275
277
  "Did not match cron job")
@@ -284,7 +286,7 @@ class TestCronParsedProvider < Test::Unit::TestCase
284
286
  target.write(text)
285
287
 
286
288
  assert_nothing_raised("Could not parse %s" % file) do
287
- @provider.prefetch_target(@me)
289
+ @provider.prefetch
288
290
  end
289
291
  # mark the provider modified
290
292
  @provider.modified(@me)
@@ -324,7 +326,7 @@ class TestCronParsedProvider < Test::Unit::TestCase
324
326
  assert_equal(str, target.read,
325
327
  "Did not write correctly")
326
328
  assert_nothing_raised("Could not prefetch with %s" % str.inspect) do
327
- @provider.prefetch_target(@me)
329
+ @provider.prefetch
328
330
  end
329
331
  records = @provider.send(:instance_variable_get, "@records")
330
332
  records.each do |r|
@@ -341,6 +343,56 @@ class TestCronParsedProvider < Test::Unit::TestCase
341
343
  @provider.clear
342
344
  end
343
345
  end
346
+
347
+ def test_prefetch
348
+ cron = @type.create :command => "/bin/echo yay", :name => "test", :hour => 4
349
+
350
+ assert_nothing_raised("Could not prefetch cron") do
351
+ cron.provider.class.prefetch("test" => cron)
352
+ end
353
+ end
354
+
355
+ # Testing #669.
356
+ def test_environment_settings
357
+ @provider.filetype = :ram
358
+ setme
359
+
360
+ target = @provider.target_object(@me)
361
+
362
+ # First with no env settings
363
+ cron = @type.create :command => "/bin/echo yay", :name => "test", :hour => 4
364
+
365
+ assert_apply(cron)
366
+
367
+ props = cron.retrieve.inject({}) { |hash, ary| hash[ary[0]] = ary[1]; hash }
368
+
369
+ # Now set the env
370
+ cron[:environment] = "TEST=foo"
371
+ assert_apply(cron)
372
+
373
+ props = cron.retrieve.inject({}) { |hash, ary| hash[ary[0]] = ary[1]; hash }
374
+ assert(target.read.include?("TEST=foo"), "Did not get environment setting")
375
+ #assert_equal(["TEST=foo"], props[:environment], "Did not get environment setting")
376
+
377
+ # Modify it
378
+ cron[:environment] = ["TEST=foo", "BLAH=yay"]
379
+ assert_apply(cron)
380
+
381
+ props = cron.retrieve.inject({}) { |hash, ary| hash[ary[0]] = ary[1]; hash }
382
+ assert(target.read.include?("TEST=foo"), "Did not keep environment setting")
383
+ assert(target.read.include?("BLAH=yay"), "Did not get second environment setting")
384
+ #assert_equal(["TEST=foo", "BLAH=yay"], props[:environment], "Did not modify environment setting")
385
+
386
+ # And remove it
387
+ cron[:environment] = :absent
388
+ assert_apply(cron)
389
+
390
+ props = cron.retrieve.inject({}) { |hash, ary| hash[ary[0]] = ary[1]; hash }
391
+ assert(! target.read.include?("TEST=foo"), "Did not remove environment setting")
392
+ assert(! target.read.include?("BLAH=yay"), "Did not remove second environment setting")
393
+ #assert_nil(props[:environment], "Did not modify environment setting")
394
+
395
+ end
344
396
  end
345
397
 
346
- # $Id: crontab.rb 2334 2007-03-19 23:04:32Z luke $
398
+ # $Id: crontab.rb 2624 2007-06-19 01:49:19Z luke $