puppet 0.22.4 → 0.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
@@ -10,12 +10,13 @@ module Puppet
10
10
 
11
11
  # Anything else, basically
12
12
  newvalue(/./) do
13
- if ! @parent.should(:ensure)
14
- @parent[:ensure] = :link
13
+ if ! @resource.should(:ensure)
14
+ @resource[:ensure] = :link
15
15
  end
16
16
 
17
17
  # Only call mklink if ensure() didn't call us in the first place.
18
- if @parent.property(:ensure).insync?
18
+ currentensure = @resource.property(:ensure).retrieve
19
+ if @resource.property(:ensure).insync?(currentensure)
19
20
  mklink()
20
21
  end
21
22
  end
@@ -26,21 +27,21 @@ module Puppet
26
27
 
27
28
  # Clean up any existing objects. The argument is just for logging,
28
29
  # it doesn't determine what's removed.
29
- @parent.remove_existing(target)
30
+ @resource.remove_existing(target)
30
31
 
31
- if FileTest.exists?(@parent[:path])
32
+ if FileTest.exists?(@resource[:path])
32
33
  raise Puppet::Error, "Could not remove existing file"
33
34
  end
34
35
 
35
- Dir.chdir(File.dirname(@parent[:path])) do
36
- Puppet::Util::SUIDManager.asuser(@parent.asuser()) do
37
- mode = @parent.should(:mode)
36
+ Dir.chdir(File.dirname(@resource[:path])) do
37
+ Puppet::Util::SUIDManager.asuser(@resource.asuser()) do
38
+ mode = @resource.should(:mode)
38
39
  if mode
39
40
  Puppet::Util.withumask(000) do
40
- File.symlink(target, @parent[:path])
41
+ File.symlink(target, @resource[:path])
41
42
  end
42
43
  else
43
- File.symlink(target, @parent[:path])
44
+ File.symlink(target, @resource[:path])
44
45
  end
45
46
  end
46
47
 
@@ -48,26 +49,27 @@ module Puppet
48
49
  end
49
50
  end
50
51
 
51
- def insync?
52
- if [:nochange, :notlink].include?(self.should) or @parent.recurse?
52
+ def insync?(currentvalue)
53
+ if [:nochange, :notlink].include?(self.should) or @resource.recurse?
53
54
  return true
54
55
  else
55
- return super
56
+ return super(currentvalue)
56
57
  end
57
58
  end
58
59
 
60
+
59
61
  def retrieve
60
- if stat = @parent.stat
62
+ if stat = @resource.stat
61
63
  if stat.ftype == "link"
62
- @is = File.readlink(@parent[:path])
64
+ return File.readlink(@resource[:path])
63
65
  else
64
- @is = :notlink
66
+ return :notlink
65
67
  end
66
68
  else
67
- @is = :absent
69
+ return :absent
68
70
  end
69
71
  end
70
72
  end
71
73
  end
72
74
 
73
- # $Id: target.rb 2269 2007-03-08 07:36:46Z luke $
75
+ # $Id: target.rb 2500 2007-05-09 22:05:32Z luke $
@@ -8,14 +8,13 @@ module Puppet
8
8
  #end
9
9
 
10
10
  def retrieve
11
- if stat = @parent.stat(false)
12
- @is = stat.ftype
13
- else
14
- @is = :absent
11
+ currentvalue = :absent
12
+ if stat = @resource.stat(false)
13
+ currentvalue = stat.ftype
15
14
  end
16
-
17
15
  # so this state is never marked out of sync
18
- @should = [@is]
16
+ @should = [currentvalue]
17
+ return currentvalue
19
18
  end
20
19
 
21
20
 
@@ -25,4 +24,4 @@ module Puppet
25
24
  end
26
25
  end
27
26
 
28
- # $Id: type.rb 2169 2007-02-07 06:47:10Z luke $
27
+ # $Id: type.rb 2500 2007-05-09 22:05:32Z luke $
@@ -70,8 +70,8 @@ module Puppet
70
70
  end
71
71
  end
72
72
 
73
- def self.list
74
- self.collect do |obj| obj.name end
73
+ def self.instances
74
+ []
75
75
  end
76
76
 
77
77
  def bucket
@@ -114,4 +114,4 @@ module Puppet
114
114
  end
115
115
  end
116
116
 
117
- # $Id: pfilebucket.rb 2408 2007-04-24 02:41:16Z luke $
117
+ # $Id: pfilebucket.rb 2551 2007-06-04 20:37:14Z luke $
@@ -1,5 +1,3 @@
1
- require 'puppet/type/parsedtype'
2
-
3
1
  #module Puppet
4
2
  # newtype(:port) do
5
3
  # @doc = "Installs and manages port entries. For most systems, these
@@ -90,8 +88,8 @@ require 'puppet/type/parsedtype'
90
88
  # munge do |value|
91
89
  # unless value == "absent" or value == :absent
92
90
  # # Add the :alias metaparam in addition to the property
93
- # @parent.newmetaparam(
94
- # @parent.class.metaparamclass(:alias), value
91
+ # @resource.newmetaparam(
92
+ # @resource.class.metaparamclass(:alias), value
95
93
  # )
96
94
  # end
97
95
  # value
@@ -102,8 +100,8 @@ require 'puppet/type/parsedtype'
102
100
  # desc "The file in which to store service information. Only used by
103
101
  # those providers that write to disk (i.e., not NetInfo)."
104
102
  #
105
- # defaultto { if @parent.class.defaultprovider.ancestors.include?(Puppet::Provider::ParsedFile)
106
- # @parent.class.defaultprovider.default_target
103
+ # defaultto { if @resource.class.defaultprovider.ancestors.include?(Puppet::Provider::ParsedFile)
104
+ # @resource.class.defaultprovider.default_target
107
105
  # else
108
106
  # nil
109
107
  # end
@@ -118,4 +116,4 @@ require 'puppet/type/parsedtype'
118
116
  # end
119
117
  #end
120
118
 
121
- # $Id: port.rb 2169 2007-02-07 06:47:10Z luke $
119
+ # $Id: port.rb 2517 2007-05-15 19:22:36Z luke $
@@ -1,4 +1,4 @@
1
- # The virtual base class for properties, which are the self-contained building
1
+ # The virtual base class for properties, which are the self-contained building
2
2
  # blocks for actually doing work on the system.
3
3
 
4
4
  require 'puppet'
@@ -8,7 +8,6 @@ require 'puppet/parameter'
8
8
 
9
9
  module Puppet
10
10
  class Property < Puppet::Parameter
11
- attr_accessor :is
12
11
 
13
12
  # Because 'should' uses an array, we have a special method for handling
14
13
  # it. We also want to keep copies of the original values, so that
@@ -143,7 +142,7 @@ class Property < Puppet::Parameter
143
142
  def call_valuemethod(name, value)
144
143
  event = nil
145
144
  if method = self.class.value_option(name, :method) and self.respond_to?(method)
146
- self.debug "setting %s (currently %s)" % [value, self.is]
145
+ self.debug "setting %s (currently %s)" % [value, self.retrieve]
147
146
 
148
147
  begin
149
148
  event = self.send(method)
@@ -154,7 +153,7 @@ class Property < Puppet::Parameter
154
153
  puts detail.backtrace
155
154
  end
156
155
  error = Puppet::Error.new("Could not set %s on %s: %s" %
157
- [value, self.class.name, detail], @parent.line, @parent.file)
156
+ [value, self.class.name, detail], @resource.line, @resource.file)
158
157
  error.set_backtrace detail.backtrace
159
158
  raise error
160
159
  end
@@ -169,17 +168,17 @@ class Property < Puppet::Parameter
169
168
  end
170
169
 
171
170
  # How should a property change be printed as a string?
172
- def change_to_s
171
+ def change_to_s(currentvalue, newvalue)
173
172
  begin
174
- if @is == :absent
173
+ if currentvalue == :absent
175
174
  return "defined '%s' as '%s'" %
176
- [self.name, self.should_to_s]
177
- elsif self.should == :absent or self.should == [:absent]
175
+ [self.name, self.should_to_s(newvalue)]
176
+ elsif newvalue == :absent or newvalue == [:absent]
178
177
  return "undefined %s from '%s'" %
179
- [self.name, self.is_to_s]
178
+ [self.name, self.is_to_s(currentvalue)]
180
179
  else
181
180
  return "%s changed '%s' to '%s'" %
182
- [self.name, self.is_to_s, self.should_to_s]
181
+ [self.name, self.is_to_s(currentvalue), self.should_to_s(newvalue)]
183
182
  end
184
183
  rescue Puppet::Error, Puppet::DevError
185
184
  raise
@@ -203,13 +202,13 @@ class Property < Puppet::Parameter
203
202
  else
204
203
  if self.class.name == :ensure
205
204
  event = case self.should
206
- when :present: (@parent.class.name.to_s + "_created").intern
207
- when :absent: (@parent.class.name.to_s + "_removed").intern
205
+ when :present: (@resource.class.name.to_s + "_created").intern
206
+ when :absent: (@resource.class.name.to_s + "_removed").intern
208
207
  else
209
- (@parent.class.name.to_s + "_changed").intern
208
+ (@resource.class.name.to_s + "_changed").intern
210
209
  end
211
210
  else
212
- event = (@parent.class.name.to_s + "_changed").intern
211
+ event = (@resource.class.name.to_s + "_changed").intern
213
212
  end
214
213
  end
215
214
  end
@@ -219,17 +218,11 @@ class Property < Puppet::Parameter
219
218
 
220
219
  # initialize our property
221
220
  def initialize(hash = {})
222
- @is = nil
223
221
  super
224
222
  end
225
223
 
226
224
  def inspect
227
225
  str = "Property('%s', " % self.name
228
- if self.is
229
- str += "@is = '%s', " % [self.is]
230
- else
231
- str += "@is = nil, "
232
- end
233
226
 
234
227
  if defined? @should and @should
235
228
  str += "@should = '%s')" % @should.join(", ")
@@ -244,7 +237,7 @@ class Property < Puppet::Parameter
244
237
  # since we cannot fix it. Otherwise, we expect our should value
245
238
  # to be an array, and if @is matches any of those values, then
246
239
  # we consider it to be in-sync.
247
- def insync?
240
+ def insync?(is)
248
241
  #debug "%s value is '%s', should be '%s'" %
249
242
  # [self,self.is.inspect,self.should.inspect]
250
243
  unless defined? @should and @should
@@ -262,7 +255,7 @@ class Property < Puppet::Parameter
262
255
 
263
256
  # Look for a matching value
264
257
  @should.each { |val|
265
- if @is == val or @is == val.to_s
258
+ if is == val or is == val.to_s
266
259
  return true
267
260
  end
268
261
  }
@@ -275,18 +268,18 @@ class Property < Puppet::Parameter
275
268
  # we need to set up a mechanism for pretty printing of the values
276
269
  # default to just the values, but this way individual properties can
277
270
  # override these methods
278
- def is_to_s
279
- @is
271
+ def is_to_s(currentvalue)
272
+ currentvalue
280
273
  end
281
274
 
282
275
  # Send a log message.
283
276
  def log(msg)
284
- unless @parent[:loglevel]
277
+ unless @resource[:loglevel]
285
278
  self.devfail "Parent %s has no loglevel" %
286
- @parent.name
279
+ @resource.name
287
280
  end
288
281
  Puppet::Util::Log.create(
289
- :level => @parent[:loglevel],
282
+ :level => @resource[:loglevel],
290
283
  :message => msg,
291
284
  :source => self
292
285
  )
@@ -305,8 +298,8 @@ class Property < Puppet::Parameter
305
298
  unless defined? @noop
306
299
  @noop = false
307
300
  end
308
- if self.parent.respond_to?(:noop)
309
- tmp = @noop || self.parent.noop || Puppet[:noop] || false
301
+ if self.resource.respond_to?(:noop)
302
+ tmp = @noop || self.resource.noop || Puppet[:noop] || false
310
303
  else
311
304
  tmp = @noop || Puppet[:noop] || false
312
305
  end
@@ -317,7 +310,10 @@ class Property < Puppet::Parameter
317
310
  # provider. In other words, if the property name is 'gid', we'll call
318
311
  # 'provider.gid' to retrieve the current value.
319
312
  def retrieve
320
- @is = provider.send(self.class.name)
313
+ is = provider.send(self.class.name)
314
+ # puts "IS is: " + is.to_s
315
+ # puts "and its an array!!!" if is.is_a? Array
316
+ return is
321
317
  end
322
318
 
323
319
  # Set our value, using the provider, an associated block, or both.
@@ -332,7 +328,7 @@ class Property < Puppet::Parameter
332
328
  event, tmp = call_valuemethod(name, value)
333
329
  end
334
330
  unless call == :instead
335
- if @parent.provider
331
+ if @resource.provider
336
332
  call_provider(value)
337
333
  else
338
334
  # They haven't provided a block, and our parent does not have
@@ -353,7 +349,7 @@ class Property < Puppet::Parameter
353
349
  if defined? @should
354
350
  unless @should.is_a?(Array)
355
351
  self.devfail "should for %s on %s is not an array" %
356
- [self.class.name, @parent.name]
352
+ [self.class.name, @resource.name]
357
353
  end
358
354
  return @should[0]
359
355
  else
@@ -383,9 +379,10 @@ class Property < Puppet::Parameter
383
379
  end
384
380
  end
385
381
 
386
- def should_to_s
387
- if defined? @should
388
- @should.join(" ")
382
+ def should_to_s(newvalue)
383
+ newvalue = [newvalue] unless newvalue.is_a? Array
384
+ if defined? newvalue
385
+ newvalue.join(" ")
389
386
  else
390
387
  return nil
391
388
  end
@@ -394,10 +391,10 @@ class Property < Puppet::Parameter
394
391
  # The default 'sync' method only selects among a list of registered
395
392
  # values.
396
393
  def sync
397
- if self.insync?
398
- self.info "already in sync"
399
- return nil
400
- end
394
+ # if self.insync?
395
+ # self.info "already in sync"
396
+ # return nil
397
+ # end
401
398
  unless self.class.values
402
399
  self.devfail "No values defined for %s" %
403
400
  self.class.name
@@ -415,8 +412,8 @@ class Property < Puppet::Parameter
415
412
  unless defined? @tags
416
413
  @tags = []
417
414
  # This might not be true in testing
418
- if @parent.respond_to? :tags
419
- @tags = @parent.tags
415
+ if @resource.respond_to? :tags
416
+ @tags = @resource.tags
420
417
  end
421
418
  @tags << self.name
422
419
  end
@@ -424,7 +421,7 @@ class Property < Puppet::Parameter
424
421
  end
425
422
 
426
423
  def to_s
427
- return "%s(%s)" % [@parent.name,self.name]
424
+ return "%s(%s)" % [@resource.name,self.name]
428
425
  end
429
426
 
430
427
  # Provide a common hook for setting @should, just like params.
@@ -439,25 +436,25 @@ class Property < Puppet::Parameter
439
436
 
440
437
  def self.defaultvalues
441
438
  newvalue(:present) do
442
- if @parent.provider and @parent.provider.respond_to?(:create)
443
- @parent.provider.create
439
+ if @resource.provider and @resource.provider.respond_to?(:create)
440
+ @resource.provider.create
444
441
  else
445
- @parent.create
442
+ @resource.create
446
443
  end
447
444
  nil # return nil so the event is autogenerated
448
445
  end
449
446
 
450
447
  newvalue(:absent) do
451
- if @parent.provider and @parent.provider.respond_to?(:destroy)
452
- @parent.provider.destroy
448
+ if @resource.provider and @resource.provider.respond_to?(:destroy)
449
+ @resource.provider.destroy
453
450
  else
454
- @parent.destroy
451
+ @resource.destroy
455
452
  end
456
453
  nil # return nil so the event is autogenerated
457
454
  end
458
455
 
459
456
  defaultto do
460
- if @parent.managed?
457
+ if @resource.managed?
461
458
  :present
462
459
  else
463
460
  nil
@@ -474,15 +471,15 @@ class Property < Puppet::Parameter
474
471
  end
475
472
  end
476
473
 
477
- def change_to_s
474
+ def change_to_s(currentvalue, newvalue)
478
475
  begin
479
- if @is == :absent or @is.nil?
476
+ if currentvalue == :absent or currentvalue.nil?
480
477
  return "created"
481
- elsif self.should == :absent
478
+ elsif newvalue == :absent
482
479
  return "removed"
483
480
  else
484
481
  return "%s changed '%s' to '%s'" %
485
- [self.name, self.is_to_s, self.should_to_s]
482
+ [self.name, self.is_to_s(currentvalue), self.should_to_s(newvalue)]
486
483
  end
487
484
  rescue Puppet::Error, Puppet::DevError
488
485
  raise
@@ -498,18 +495,18 @@ class Property < Puppet::Parameter
498
495
  # to get checked, which means that those other properties do not have
499
496
  # @is values set. This seems to be the source of quite a few bugs,
500
497
  # although they're mostly logging bugs, not functional ones.
501
- if prov = @parent.provider and prov.respond_to?(:exists?)
498
+ if prov = @resource.provider and prov.respond_to?(:exists?)
502
499
  result = prov.exists?
503
- elsif @parent.respond_to?(:exists?)
504
- result = @parent.exists?
500
+ elsif @resource.respond_to?(:exists?)
501
+ result = @resource.exists?
505
502
  else
506
503
  raise Puppet::DevError, "No ability to determine if %s exists" %
507
- @parent.class.name
504
+ @resource.class.name
508
505
  end
509
506
  if result
510
- @is = :present
507
+ return :present
511
508
  else
512
- @is = :absent
509
+ return :absent
513
510
  end
514
511
  end
515
512
 
@@ -517,7 +514,7 @@ class Property < Puppet::Parameter
517
514
  # say it should exist.
518
515
  #defaultto :present
519
516
  defaultto do
520
- if @parent.managed?
517
+ if @resource.managed?
521
518
  :present
522
519
  else
523
520
  nil
@@ -527,4 +524,4 @@ class Property < Puppet::Parameter
527
524
  end
528
525
  end
529
526
 
530
- # $Id: property.rb 2328 2007-03-19 21:29:08Z luke $
527
+ # $Id: property.rb 2500 2007-05-09 22:05:32Z luke $