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
@@ -49,7 +49,7 @@ module Puppet
49
49
  cache(type, sum)
50
50
  return type
51
51
  else
52
- if FileTest.directory?(@parent[:path])
52
+ if FileTest.directory?(@resource[:path])
53
53
  return :time
54
54
  else
55
55
  return symbolize(value)
@@ -64,10 +64,10 @@ module Puppet
64
64
  raise ArgumentError, "A type must be specified to cache a checksum"
65
65
  end
66
66
  type = symbolize(type)
67
- unless state = @parent.cached(:checksums)
67
+ unless state = @resource.cached(:checksums)
68
68
  self.debug "Initializing checksum hash"
69
69
  state = {}
70
- @parent.cache(:checksums, state)
70
+ @resource.cache(:checksums, state)
71
71
  end
72
72
 
73
73
  if sum
@@ -83,9 +83,8 @@ module Puppet
83
83
  # Because source and content and whomever else need to set the checksum
84
84
  # and do the updating, we provide a simple mechanism for doing so.
85
85
  def checksum=(value)
86
- @is = value
87
86
  munge(@should)
88
- self.updatesum
87
+ self.updatesum(value)
89
88
  end
90
89
 
91
90
  def checktype
@@ -93,21 +92,21 @@ module Puppet
93
92
  end
94
93
 
95
94
  # Checksums need to invert how changes are printed.
96
- def change_to_s
95
+ def change_to_s(currentvalue, newvalue)
97
96
  begin
98
- if @is == :absent
97
+ if currentvalue == :absent
99
98
  return "defined '%s' as '%s'" %
100
99
  [self.name, self.currentsum]
101
- elsif self.should == :absent
100
+ elsif newvalue == :absent
102
101
  return "undefined %s from '%s'" %
103
- [self.name, self.is_to_s]
102
+ [self.name, self.is_to_s(currentvalue)]
104
103
  else
105
104
  if defined? @cached and @cached
106
105
  return "%s changed '%s' to '%s'" %
107
- [self.name, @cached, self.is_to_s]
106
+ [self.name, @cached, self.is_to_s(currentvalue)]
108
107
  else
109
108
  return "%s changed '%s' to '%s'" %
110
- [self.name, self.currentsum, self.is_to_s]
109
+ [self.name, self.currentsum, self.is_to_s(currentvalue)]
111
110
  end
112
111
  end
113
112
  rescue Puppet::Error, Puppet::DevError
@@ -126,16 +125,16 @@ module Puppet
126
125
  # Retrieve the cached sum
127
126
  def getcachedsum
128
127
  hash = nil
129
- unless hash = @parent.cached(:checksums)
128
+ unless hash = @resource.cached(:checksums)
130
129
  hash = {}
131
- @parent.cache(:checksums, hash)
130
+ @resource.cache(:checksums, hash)
132
131
  end
133
132
 
134
133
  sumtype = self.should
135
134
 
136
135
  if hash.include?(sumtype)
137
136
  #self.notice "Found checksum %s for %s" %
138
- # [hash[sumtype] ,@parent[:path]]
137
+ # [hash[sumtype] ,@resource[:path]]
139
138
  sum = hash[sumtype]
140
139
 
141
140
  unless sum =~ /^\{\w+\}/
@@ -147,7 +146,7 @@ module Puppet
147
146
  return :nosum
148
147
  else
149
148
  #self.notice "Found checksum for %s but not of type %s" %
150
- # [@parent[:path],sumtype]
149
+ # [@resource[:path],sumtype]
151
150
  return :nosum
152
151
  end
153
152
  end
@@ -159,45 +158,39 @@ module Puppet
159
158
  checktype = checktype.intern if checktype.is_a? String
160
159
  case checktype
161
160
  when :md5, :md5lite:
162
- if ! FileTest.file?(@parent[:path])
163
- @parent.debug "Cannot MD5 sum %s; using mtime" %
164
- [@parent.stat.ftype]
165
- sum = @parent.stat.mtime.to_s
161
+ if ! FileTest.file?(@resource[:path])
162
+ @resource.debug "Cannot MD5 sum %s; using mtime" %
163
+ [@resource.stat.ftype]
164
+ sum = @resource.stat.mtime.to_s
166
165
  else
167
166
  begin
168
- File.open(@parent[:path]) { |file|
169
- text = nil
170
- case checktype
171
- when :md5
172
- text = file.read
173
- when :md5lite
174
- text = file.read(512)
175
- end
176
-
177
- if text.nil?
178
- self.debug "Not checksumming empty file %s" %
179
- @parent[:path]
180
- sum = 0
181
- else
182
- sum = Digest::MD5.hexdigest(text)
183
- end
167
+ File.open(@resource[:path]) { |file|
168
+ hashfunc = Digest::MD5.new
169
+ while (!file.eof)
170
+ readBuf = file.read(512)
171
+ hashfunc.update(readBuf)
172
+ if checktype == :md5lite then
173
+ break
174
+ end
175
+ end
176
+ sum = hashfunc.hexdigest
184
177
  }
185
178
  rescue Errno::EACCES => detail
186
179
  self.notice "Cannot checksum %s: permission denied" %
187
- @parent[:path]
188
- @parent.delete(self.class.name)
180
+ @resource[:path]
181
+ @resource.delete(self.class.name)
189
182
  rescue => detail
190
183
  self.notice "Cannot checksum: %s" %
191
184
  detail
192
- @parent.delete(self.class.name)
185
+ @resource.delete(self.class.name)
193
186
  end
194
187
  end
195
188
  when :timestamp, :mtime:
196
- sum = @parent.stat.mtime.to_s
197
- #sum = File.stat(@parent[:path]).mtime.to_s
189
+ sum = @resource.stat.mtime.to_s
190
+ #sum = File.stat(@resource[:path]).mtime.to_s
198
191
  when :time:
199
- sum = @parent.stat.ctime.to_s
200
- #sum = File.stat(@parent[:path]).ctime.to_s
192
+ sum = @resource.stat.ctime.to_s
193
+ #sum = File.stat(@resource[:path]).ctime.to_s
201
194
  else
202
195
  raise Puppet::Error, "Invalid sum type %s" % checktype
203
196
  end
@@ -209,80 +202,75 @@ module Puppet
209
202
  # the stored state to reflect the current state, and then kick
210
203
  # off an event to mark any changes.
211
204
  def handlesum
212
- if @is.nil?
205
+ currentvalue = self.retrieve
206
+ if currentvalue.nil?
213
207
  raise Puppet::Error, "Checksum state for %s is somehow nil" %
214
- @parent.title
208
+ @resource.title
215
209
  end
216
210
 
217
- if @is == :absent
218
- self.retrieve
219
-
220
- if self.insync?
221
- self.debug "Checksum is already in sync"
222
- return nil
223
- end
224
- #@parent.debug "%s(%s): after refresh, is '%s'" %
225
- # [self.class.name,@parent.name,@is]
211
+ if self.insync?(currentvalue)
212
+ self.debug "Checksum is already in sync"
213
+ return nil
214
+ end
215
+ # @resource.debug "%s(%s): after refresh, is '%s'" %
216
+ # [self.class.name,@resource.name,@is]
226
217
 
227
218
  # If we still can't retrieve a checksum, it means that
228
219
  # the file still doesn't exist
229
- if @is == :absent
230
- # if they're copying, then we won't worry about the file
231
- # not existing yet
232
- unless @parent.property(:source)
233
- self.warning(
234
- "File %s does not exist -- cannot checksum" %
235
- @parent[:path]
236
- )
237
- end
238
- return nil
220
+ if currentvalue == :absent
221
+ # if they're copying, then we won't worry about the file
222
+ # not existing yet
223
+ unless @resource.property(:source)
224
+ self.warning("File %s does not exist -- cannot checksum" %
225
+ @resource[:path]
226
+ )
239
227
  end
228
+ return nil
240
229
  end
241
-
230
+
242
231
  # If the sums are different, then return an event.
243
- if self.updatesum
232
+ if self.updatesum(currentvalue)
244
233
  return :file_changed
245
234
  else
246
235
  return nil
247
236
  end
248
237
  end
249
238
 
250
- def insync?
251
- @should = [checktype]
239
+ def insync?(currentvalue)
240
+ @should = [checktype()]
252
241
  if cache(checktype())
253
- return @is == currentsum()
242
+ return currentvalue == currentsum()
254
243
  else
255
244
  # If there's no cached sum, then we don't want to generate
256
245
  # an event.
257
246
  return true
258
247
  end
259
248
  end
260
-
249
+
261
250
  # Even though they can specify multiple checksums, the insync?
262
251
  # mechanism can really only test against one, so we'll just retrieve
263
252
  # the first specified sum type.
264
253
  def retrieve(usecache = false)
265
254
  # When the 'source' is retrieving, it passes "true" here so
266
255
  # that we aren't reading the file twice in quick succession, yo.
267
- if usecache and @is
268
- return @is
256
+ currentvalue = currentsum()
257
+ if usecache and currentvalue
258
+ return currentvalue
269
259
  end
270
260
 
271
261
  stat = nil
272
- unless stat = @parent.stat
273
- self.is = :absent
274
- return
262
+ unless stat = @resource.stat
263
+ return :absent
275
264
  end
276
265
 
277
- if stat.ftype == "link" and @parent[:links] != :follow
266
+ if stat.ftype == "link" and @resource[:links] != :follow
278
267
  self.debug "Not checksumming symlink"
279
- #@parent.delete(:checksum)
280
- self.is = self.currentsum
281
- return
268
+ # @resource.delete(:checksum)
269
+ return currentvalue
282
270
  end
283
271
 
284
272
  # Just use the first allowed check type
285
- @is = getsum(checktype())
273
+ currentvalue = getsum(checktype())
286
274
 
287
275
  # If there is no sum defined, then store the current value
288
276
  # into the cache, so that we're not marked as being
@@ -290,18 +278,19 @@ module Puppet
290
278
  # time we get a sum.
291
279
  unless cache(checktype())
292
280
  # FIXME we should support an updatechecksums-like mechanism
293
- self.updatesum
281
+ self.updatesum(currentvalue)
294
282
  end
295
-
296
- #@parent.debug "checksum state is %s" % self.is
283
+
284
+ # @resource.debug "checksum state is %s" % self.is
285
+ return currentvalue
297
286
  end
298
287
 
299
288
  # Store the new sum to the state db.
300
- def updatesum
289
+ def updatesum(newvalue)
301
290
  result = false
302
291
 
303
- if @is.is_a?(Symbol)
304
- raise Puppet::Error, "%s has invalid checksum" % @parent.title
292
+ if newvalue.is_a?(Symbol)
293
+ raise Puppet::Error, "%s has invalid checksum" % @resource.title
305
294
  end
306
295
 
307
296
  # if we're replacing, vs. updating
@@ -309,32 +298,30 @@ module Puppet
309
298
  # unless defined? @should
310
299
  # raise Puppet::Error.new(
311
300
  # ("@should is not initialized for %s, even though we " +
312
- # "found a checksum") % @parent[:path]
301
+ # "found a checksum") % @resource[:path]
313
302
  # )
314
303
  # end
315
304
 
316
- if @is == sum
305
+ if newvalue == sum
317
306
  return false
318
307
  end
319
308
 
320
- #if cache(self.should) == @is
321
- # raise Puppet::Error, "Got told to update same sum twice"
322
- #end
323
309
  self.debug "Replacing %s checksum %s with %s" %
324
- [@parent.title, sum, @is]
325
- #@parent.debug "@is: %s; @should: %s" % [@is,@should]
310
+ [@resource.title, sum, newvalue]
311
+ # @resource.debug "currentvalue: %s; @should: %s" %
312
+ # [newvalue,@should]
326
313
  result = true
327
314
  else
328
- @parent.debug "Creating checksum %s" % @is
315
+ @resource.debug "Creating checksum %s" % newvalue
329
316
  result = false
330
317
  end
331
318
 
332
319
  # Cache the sum so the log message can be right if possible.
333
320
  @cached = sum
334
- cache(checktype(), @is)
321
+ cache(checktype(), newvalue)
335
322
  return result
336
323
  end
337
324
  end
338
325
  end
339
326
 
340
- # $Id: checksum.rb 2169 2007-02-07 06:47:10Z luke $
327
+ # $Id: checksum.rb 2629 2007-06-19 22:18:55Z luke $
@@ -20,13 +20,13 @@ module Puppet
20
20
  This attribute is especially useful when used with
21
21
  `PuppetTemplating templating`:trac:."
22
22
 
23
- def change_to_s
24
- should = "{md5}" + Digest::MD5.hexdigest(self.should)
25
- if @is == :absent
26
- return "created file with contents %s" % should
23
+ def change_to_s(currentvalue, newvalue)
24
+ newvalue = "{md5}" + Digest::MD5.hexdigest(newvalue)
25
+ if currentvalue == :absent
26
+ return "created file with contents %s" % newvalue
27
27
  else
28
- is = "{md5}" + Digest::MD5.hexdigest(@is)
29
- return "changed file contents from %s to %s" % [is, should]
28
+ currentvalue = "{md5}" + Digest::MD5.hexdigest(currentvalue)
29
+ return "changed file contents from %s to %s" % [currentvalue, newvalue]
30
30
  end
31
31
  end
32
32
 
@@ -34,43 +34,39 @@ module Puppet
34
34
  # but I really don't feel like dealing with the complexity right now.
35
35
  def retrieve
36
36
  stat = nil
37
- unless stat = @parent.stat
38
- @is = :absent
39
- return
37
+ unless stat = @resource.stat
38
+ return :absent
40
39
  end
41
40
 
42
- if stat.ftype == "link" and @parent[:links] == :ignore
43
- self.is = self.should
44
- return
41
+ if stat.ftype == "link" and @resource[:links] == :ignore
42
+ return self.should
45
43
  end
46
44
 
47
45
  # Don't even try to manage the content on directories
48
- if stat.ftype == "directory" and @parent[:links] == :ignore
49
- @parent.delete(:content)
50
- return
46
+ if stat.ftype == "directory" and @resource[:links] == :ignore
47
+ @resource.delete(:content)
48
+ return nil
51
49
  end
52
50
 
53
51
  begin
54
- @is = File.read(@parent[:path])
52
+ currentvalue = File.read(@resource[:path])
53
+ return currentvalue
55
54
  rescue => detail
56
- @is = nil
57
55
  raise Puppet::Error, "Could not read %s: %s" %
58
- [@parent.title, detail]
56
+ [@resource.title, detail]
59
57
  end
60
58
  end
61
59
 
62
60
 
63
61
  # Just write our content out to disk.
64
62
  def sync
65
- @parent.write { |f| f.print self.should }
63
+ return_event = @resource.stat ? :file_changed : :file_created
64
+
65
+ @resource.write { |f| f.print self.should }
66
66
 
67
- if @is == :absent
68
- return :file_created
69
- else
70
- return :file_changed
71
- end
67
+ return return_event
72
68
  end
73
69
  end
74
70
  end
75
71
 
76
- # $Id: content.rb 2408 2007-04-24 02:41:16Z luke $
72
+ # $Id: content.rb 2500 2007-05-09 22:05:32Z luke $
@@ -36,18 +36,18 @@ module Puppet
36
36
  nodefault
37
37
 
38
38
  newvalue(:absent) do
39
- File.unlink(@parent[:path])
39
+ File.unlink(@resource[:path])
40
40
  end
41
41
 
42
42
  aliasvalue(:false, :absent)
43
43
 
44
44
  newvalue(:file) do
45
45
  # Make sure we're not managing the content some other way
46
- if property = (@parent.property(:content) || @parent.property(:source))
46
+ if property = (@resource.property(:content) || @resource.property(:source))
47
47
  property.sync
48
48
  else
49
- @parent.write(false) { |f| f.flush }
50
- mode = @parent.should(:mode)
49
+ @resource.write(false) { |f| f.flush }
50
+ mode = @resource.should(:mode)
51
51
  end
52
52
  return :file_created
53
53
  end
@@ -60,30 +60,30 @@ module Puppet
60
60
  end
61
61
 
62
62
  newvalue(:directory) do
63
- mode = @parent.should(:mode)
64
- parent = File.dirname(@parent[:path])
63
+ mode = @resource.should(:mode)
64
+ parent = File.dirname(@resource[:path])
65
65
  unless FileTest.exists? parent
66
66
  raise Puppet::Error,
67
67
  "Cannot create %s; parent directory %s does not exist" %
68
- [@parent[:path], parent]
68
+ [@resource[:path], parent]
69
69
  end
70
- @parent.write_if_writable(parent) do
70
+ @resource.write_if_writable(parent) do
71
71
  if mode
72
72
  Puppet::Util.withumask(000) do
73
- Dir.mkdir(@parent[:path],mode)
73
+ Dir.mkdir(@resource[:path],mode)
74
74
  end
75
75
  else
76
- Dir.mkdir(@parent[:path])
76
+ Dir.mkdir(@resource[:path])
77
77
  end
78
78
  end
79
- @parent.send(:property_fix)
80
- @parent.setchecksum
79
+ @resource.send(:property_fix)
80
+ @resource.setchecksum
81
81
  return :directory_created
82
82
  end
83
83
 
84
84
 
85
85
  newvalue(:link) do
86
- if property = @parent.property(:target)
86
+ if property = @resource.property(:target)
87
87
  property.retrieve
88
88
 
89
89
  return property.mklink
@@ -103,62 +103,64 @@ module Puppet
103
103
 
104
104
  return value if value.is_a? Symbol
105
105
 
106
- @parent[:target] = value
106
+ @resource[:target] = value
107
107
 
108
108
  return :link
109
109
  end
110
110
 
111
- def change_to_s
112
- if property = (@parent.property(:content) || @parent.property(:source)) and ! property.insync?
113
- return property.change_to_s
111
+ def change_to_s(currentvalue, newvalue)
112
+ if property = (@resource.property(:content) || @resource.property(:source)) and ! property.insync?(currentvalue)
113
+ currentvalue = property.retrieve
114
+
115
+ return property.change_to_s(property.retrieve, property.should)
114
116
  else
115
- super
117
+ super(currentvalue, newvalue)
116
118
  end
117
119
  end
118
120
 
119
121
  # Check that we can actually create anything
120
122
  def check
121
- basedir = File.dirname(@parent[:path])
123
+ basedir = File.dirname(@resource[:path])
122
124
 
123
125
  if ! FileTest.exists?(basedir)
124
126
  raise Puppet::Error,
125
127
  "Can not create %s; parent directory does not exist" %
126
- @parent.title
128
+ @resource.title
127
129
  elsif ! FileTest.directory?(basedir)
128
130
  raise Puppet::Error,
129
131
  "Can not create %s; %s is not a directory" %
130
- [@parent.title, dirname]
132
+ [@resource.title, dirname]
131
133
  end
132
134
  end
133
135
 
134
136
  # We have to treat :present specially, because it works with any
135
137
  # type of file.
136
- def insync?
138
+ def insync?(currentvalue)
137
139
  if self.should == :present
138
- if @is.nil? or @is == :absent
140
+ if currentvalue.nil? or currentvalue == :absent
139
141
  return false
140
142
  else
141
143
  return true
142
144
  end
143
145
  else
144
- return super
146
+ return super(currentvalue)
145
147
  end
146
148
  end
147
149
 
148
150
  def retrieve
149
- if stat = @parent.stat(false)
150
- @is = stat.ftype.intern
151
+ if stat = @resource.stat(false)
152
+ return stat.ftype.intern
151
153
  else
152
154
  if self.should == :false
153
- @is = :false
155
+ return :false
154
156
  else
155
- @is = :absent
157
+ return :absent
156
158
  end
157
159
  end
158
160
  end
159
161
 
160
162
  def sync
161
- @parent.remove_existing(self.should)
163
+ @resource.remove_existing(self.should)
162
164
  if self.should == :absent
163
165
  return :file_removed
164
166
  end
@@ -170,4 +172,4 @@ module Puppet
170
172
  end
171
173
  end
172
174
 
173
- # $Id: ensure.rb 2408 2007-04-24 02:41:16Z luke $
175
+ # $Id: ensure.rb 2500 2007-05-09 22:05:32Z luke $