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
@@ -26,20 +26,19 @@ module Puppet
26
26
  end
27
27
 
28
28
  # We want to print names, not numbers
29
- def is_to_s
30
- if @is.is_a? Integer
31
- id2name(@is) || @is
29
+ def is_to_s(currentvalue)
30
+ if currentvalue.is_a? Integer
31
+ id2name(currentvalue) || currentvalue
32
32
  else
33
- return @is.to_s
33
+ return currentvalue.to_s
34
34
  end
35
35
  end
36
36
 
37
- def should_to_s
38
- should = self.should
39
- if should.is_a? Integer
40
- id2name(should) || should
37
+ def should_to_s(newvalue = @should)
38
+ if newvalue.is_a? Integer
39
+ id2name(newvalue) || newalue
41
40
  else
42
- return should.to_s
41
+ return newvalue.to_s
43
42
  end
44
43
  end
45
44
 
@@ -57,20 +56,20 @@ module Puppet
57
56
  end
58
57
  end
59
58
  end
60
- stat = @parent.stat(false)
59
+ stat = @resource.stat(false)
61
60
 
62
61
  unless stat
63
- self.is = :absent
64
- return
62
+ return :absent
65
63
  end
66
64
 
67
65
  # Set our method appropriately, depending on links.
68
- if stat.ftype == "link" and @parent[:links] != :follow
66
+ if stat.ftype == "link" and @resource[:links] != :follow
69
67
  @method = :lchown
70
68
  else
71
69
  @method = :chown
72
70
  end
73
- self.is = stat.gid
71
+
72
+ return stat.gid
74
73
  end
75
74
 
76
75
  # Determine if the group is valid, and if so, return the GID
@@ -90,17 +89,13 @@ module Puppet
90
89
  # we'll just let it fail, but we should probably set things up so
91
90
  # that users get warned if they try to change to an unacceptable group.
92
91
  def sync
93
- if @is == :absent
94
- @parent.stat(true)
95
- self.retrieve
92
+ unless @resource.stat(false)
93
+ stat = @resource.stat(true)
94
+ currentvalue = self.retrieve
96
95
 
97
- if @is == :absent
96
+ unless stat
98
97
  self.debug "File '%s' does not exist; cannot chgrp" %
99
- @parent[:path]
100
- return nil
101
- end
102
-
103
- if self.insync?
98
+ @resource[:path]
104
99
  return nil
105
100
  end
106
101
  end
@@ -112,10 +107,10 @@ module Puppet
112
107
 
113
108
  begin
114
109
  # set owner to nil so it's ignored
115
- File.send(@method,nil,gid,@parent[:path])
110
+ File.send(@method,nil,gid,@resource[:path])
116
111
  rescue => detail
117
112
  error = Puppet::Error.new( "failed to chgrp %s to %s: %s" %
118
- [@parent[:path], self.should, detail.message])
113
+ [@resource[:path], self.should, detail.message])
119
114
  raise error
120
115
  end
121
116
  return :file_changed
@@ -123,4 +118,4 @@ module Puppet
123
118
  end
124
119
  end
125
120
 
126
- # $Id: group.rb 2169 2007-02-07 06:47:10Z luke $
121
+ # $Id: group.rb 2500 2007-05-09 22:05:32Z luke $
@@ -10,27 +10,27 @@ module Puppet
10
10
 
11
11
  # Our modes are octal, so make sure they print correctly. Other
12
12
  # valid values are symbols, basically
13
- def is_to_s
14
- case @is
13
+ def is_to_s(currentvalue)
14
+ case currentvalue
15
15
  when Integer
16
- return "%o" % @is
16
+ return "%o" % currentvalue
17
17
  when Symbol
18
- return @is
18
+ return currentvalue
19
19
  else
20
- raise Puppet::DevError, "Invalid 'is' value for mode: %s" %
21
- @is.inspect
20
+ raise Puppet::DevError, "Invalid current value for mode: %s" %
21
+ currentvalue.inspect
22
22
  end
23
23
  end
24
24
 
25
- def should_to_s
26
- case self.should
25
+ def should_to_s(newvalue = @should)
26
+ case newvalue
27
27
  when Integer
28
- return "%o" % self.should
28
+ return "%o" % newvalue
29
29
  when Symbol
30
- return self.should
30
+ return newvalue
31
31
  else
32
32
  raise Puppet::DevError, "Invalid 'should' value for mode: %s" %
33
- self.should.inspect
33
+ newvalue.inspect
34
34
  end
35
35
  end
36
36
 
@@ -62,7 +62,7 @@ module Puppet
62
62
  # If we're a directory, we need to be executable for all cases
63
63
  # that are readable. This should probably be selectable, but eh.
64
64
  def dirmask(value)
65
- if FileTest.directory?(@parent[:path])
65
+ if FileTest.directory?(@resource[:path])
66
66
  if value & 0400 != 0
67
67
  value |= 0100
68
68
  end
@@ -77,12 +77,12 @@ module Puppet
77
77
  return value
78
78
  end
79
79
 
80
- def insync?
81
- if stat = @parent.stat and stat.ftype == "link" and @parent[:links] != :follow
80
+ def insync?(currentvalue)
81
+ if stat = @resource.stat and stat.ftype == "link" and @resource[:links] != :follow
82
82
  self.debug "Not managing symlink mode"
83
83
  return true
84
84
  else
85
- return super
85
+ return super(currentvalue)
86
86
  end
87
87
  end
88
88
 
@@ -90,31 +90,24 @@ module Puppet
90
90
  # If we're not following links and we're a link, then we just turn
91
91
  # off mode management entirely.
92
92
 
93
- if stat = @parent.stat(false)
94
- self.is = stat.mode & 007777
93
+ if stat = @resource.stat(false)
95
94
  unless defined? @fixed
96
95
  if defined? @should and @should
97
96
  @should = @should.collect { |s| self.dirmask(s) }
98
97
  end
99
98
  end
99
+ return stat.mode & 007777
100
100
  else
101
- self.is = :absent
101
+ return :absent
102
102
  end
103
-
104
- #self.debug "chmod state is %o" % self.is
105
103
  end
106
104
 
107
105
  def sync
108
- if @is == :absent
109
- @parent.stat(true)
110
- self.retrieve
111
- if @is == :absent
112
- self.debug "File does not exist; cannot set mode"
113
- return nil
114
- end
106
+ unless @resource.stat(false)
107
+ stat = @resource.stat(true)
115
108
 
116
- if self.insync?
117
- # we're already in sync
109
+ unless stat
110
+ self.debug "File does not exist; cannot set mode"
118
111
  return nil
119
112
  end
120
113
  end
@@ -127,10 +120,10 @@ module Puppet
127
120
  end
128
121
 
129
122
  begin
130
- File.chmod(mode,@parent[:path])
123
+ File.chmod(mode, @resource[:path])
131
124
  rescue => detail
132
125
  error = Puppet::Error.new("failed to chmod %s: %s" %
133
- [@parent[:path], detail.message])
126
+ [@resource[:path], detail.message])
134
127
  error.set_backtrace detail.backtrace
135
128
  raise error
136
129
  end
@@ -139,4 +132,4 @@ module Puppet
139
132
  end
140
133
  end
141
134
 
142
- # $Id: mode.rb 2273 2007-03-08 17:35:18Z luke $
135
+ # $Id: mode.rb 2500 2007-05-09 22:05:32Z luke $
@@ -64,21 +64,21 @@ module Puppet
64
64
  end
65
65
 
66
66
  # We want to print names, not numbers
67
- def is_to_s
68
- id2name(@is) || @is
67
+ def is_to_s(currentvalue)
68
+ id2name(currentvalue) || currentvalue
69
69
  end
70
70
 
71
- def should_to_s
72
- case self.should
71
+ def should_to_s(newvalue = @should)
72
+ case newvalue
73
73
  when Symbol
74
- self.should.to_s
74
+ newvalue.to_s
75
75
  when Integer
76
- id2name(self.should) || self.should
76
+ id2name(newvalue) || newvalue
77
77
  when String
78
- self.should
78
+ newvalue
79
79
  else
80
80
  raise Puppet::DevError, "Invalid uid type %s(%s)" %
81
- [self.should.class, self.should]
81
+ [newvalue.class, newvalue]
82
82
  end
83
83
  end
84
84
 
@@ -97,34 +97,35 @@ module Puppet
97
97
  end
98
98
  end
99
99
 
100
- unless stat = @parent.stat(false)
101
- @is = :absent
102
- return
100
+ unless stat = @resource.stat(false)
101
+ return :absent
103
102
  end
104
103
 
105
104
  # Set our method appropriately, depending on links.
106
- if stat.ftype == "link" and @parent[:links] != :follow
105
+ if stat.ftype == "link" and @resource[:links] != :follow
107
106
  @method = :lchown
108
107
  else
109
108
  @method = :chown
110
109
  end
111
110
 
112
- self.is = stat.uid
113
-
111
+ currentvalue = stat.uid
112
+
114
113
  # On OS X, files that are owned by -2 get returned as really
115
114
  # large UIDs instead of negative ones. This isn't a Ruby bug,
116
115
  # it's an OS X bug, since it shows up in perl, too.
117
- if @is > 120000
118
- self.warning "current state is silly: %s" % @is
119
- @is = :silly
116
+ if currentvalue > 120000
117
+ self.warning "current state is silly: %s" % currentvalue
118
+ currentvalue = :silly
120
119
  end
120
+
121
+ return currentvalue
121
122
  end
122
123
 
123
124
  def sync
124
125
  unless Puppet::Util::SUIDManager.uid == 0
125
126
  unless defined? @@notifieduid
126
127
  self.notice "Cannot manage ownership unless running as root"
127
- #@parent.delete(self.name)
128
+ #@resource.delete(self.name)
128
129
  @@notifieduid = true
129
130
  end
130
131
  return nil
@@ -146,21 +147,16 @@ module Puppet
146
147
  return nil
147
148
  end
148
149
 
149
- if @is == :absent
150
- @parent.stat(true)
151
- self.retrieve
152
- if @is == :absent
150
+ unless @resource.stat(false)
151
+ unless @resource.stat(true)
153
152
  self.debug "File does not exist; cannot set owner"
154
153
  return nil
155
154
  end
156
- if self.insync?
157
- return nil
158
- end
159
155
  #self.debug "%s: after refresh, is '%s'" % [self.class.name,@is]
160
156
  end
161
157
 
162
158
  begin
163
- File.send(@method, user, nil, @parent[:path])
159
+ File.send(@method, user, nil, @resource[:path])
164
160
  rescue => detail
165
161
  raise Puppet::Error, "Failed to set owner to '%s': %s" %
166
162
  [user, detail]
@@ -171,4 +167,4 @@ module Puppet
171
167
  end
172
168
  end
173
169
 
174
- # $Id: owner.rb 2178 2007-02-07 23:56:59Z luke $
170
+ # $Id: owner.rb 2501 2007-05-09 23:08:42Z luke $
@@ -22,7 +22,16 @@ module Puppet
22
22
  source => \"puppet://server/module/sendmail.cf\"
23
23
  }
24
24
  }
25
-
25
+
26
+ Currently, only the ``puppet`` scheme is supported for source
27
+ URL's. Puppet will connect to the file server running on
28
+ ``server`` to retrieve the contents of the file. If the
29
+ ``server`` part is empty, the behavior of the command-line
30
+ interpreter (``puppet``) and the client demon (``puppetd``) differs
31
+ slightly: ``puppet`` will look such a file up on the module path
32
+ on the local host, whereas ``puppetd`` will connect to the
33
+ puppet server that it received the manifest from.
34
+
26
35
  See the `FileServingConfiguration fileserver configuration documentation`:trac: for information on how to configure
27
36
  and use file services within Puppet.
28
37
 
@@ -46,7 +55,7 @@ module Puppet
46
55
  uncheckable
47
56
 
48
57
  validate do |source|
49
- unless @parent.uri2obj(source)
58
+ unless @resource.uri2obj(source)
50
59
  raise Puppet::Error, "Invalid source %s" % source
51
60
  end
52
61
  end
@@ -60,9 +69,9 @@ module Puppet
60
69
  source.sub(/\/$/, '')
61
70
  end
62
71
 
63
- def change_to_s
64
- should = "{md5}" + @stats[:checksum]
65
- if @parent.is(:ensure) == :absent
72
+ def change_to_s(currentvalue, newvalue)
73
+ # newvalue = "{md5}" + @stats[:checksum]
74
+ if @resource.property(:ensure).retrieve == :absent
66
75
  return "creating from source %s with contents %s" % [@source, @stats[:checksum]]
67
76
  else
68
77
  return "replacing from source %s with contents %s" % [@source, @stats[:checksum]]
@@ -79,11 +88,11 @@ module Puppet
79
88
 
80
89
  # Ask the file server to describe our file.
81
90
  def describe(source)
82
- sourceobj, path = @parent.uri2obj(source)
91
+ sourceobj, path = @resource.uri2obj(source)
83
92
  server = sourceobj.server
84
93
 
85
94
  begin
86
- desc = server.describe(path, @parent[:links])
95
+ desc = server.describe(path, @resource[:links])
87
96
  rescue Puppet::Network::XMLRPCClientError => detail
88
97
  self.err "Could not describe %s: %s" %
89
98
  [path, detail]
@@ -107,7 +116,7 @@ module Puppet
107
116
  args.delete(:owner)
108
117
  end
109
118
 
110
- if args.empty? or (args[:type] == "link" and @parent[:links] == :ignore)
119
+ if args.empty? or (args[:type] == "link" and @resource[:links] == :ignore)
111
120
  return nil
112
121
  else
113
122
  return args
@@ -116,17 +125,17 @@ module Puppet
116
125
 
117
126
  # Have we successfully described the remote source?
118
127
  def described?
119
- ! @stats.nil? and ! @stats[:type].nil? and @is != :notdescribed
128
+ ! @stats.nil? and ! @stats[:type].nil? #and @is != :notdescribed
120
129
  end
121
130
 
122
131
  # Use the info we get from describe() to check if we're in sync.
123
- def insync?
132
+ def insync?(currentvalue)
124
133
  unless described?
125
134
  info "No specified sources exist"
126
135
  return true
127
136
  end
128
137
 
129
- if @is == :nocopy
138
+ if currentvalue == :nocopy
130
139
  return true
131
140
  end
132
141
 
@@ -136,11 +145,14 @@ module Puppet
136
145
  return true
137
146
  end
138
147
 
139
- if @parent.is(:ensure) != :absent and ! @parent.replace?
148
+ #FIXARB: Inefficient? Needed to call retrieve on parent's ensure and checksum
149
+ parentensure = @resource.property(:ensure).retrieve
150
+ if parentensure != :absent and ! @resource.replace?
140
151
  return true
141
152
  end
142
153
  # Now, we just check to see if the checksums are the same
143
- return @parent.is(:checksum) == @stats[:checksum]
154
+ parentchecksum = @resource.property(:checksum).retrieve
155
+ return (!parentchecksum.nil? and (parentchecksum == @stats[:checksum]))
144
156
  end
145
157
 
146
158
  def pinparams
@@ -169,21 +181,19 @@ module Puppet
169
181
  end
170
182
 
171
183
  if @stats.nil? or @stats[:type].nil?
172
- @is = :notdescribed
173
- return nil
184
+ return nil # :notdescribed
174
185
  end
175
186
 
176
187
  case @stats[:type]
177
188
  when "directory", "file":
178
- unless @parent.deleting?
179
- @parent[:ensure] = @stats[:type]
189
+ unless @resource.deleting?
190
+ @resource[:ensure] = @stats[:type]
180
191
  end
181
192
  else
182
193
  self.info @stats.inspect
183
194
  self.err "Cannot use files of type %s as sources" %
184
195
  @stats[:type]
185
- @is = :nocopy
186
- return
196
+ return :nocopy
187
197
  end
188
198
 
189
199
  # Take each of the stats and set them as states on the local file
@@ -194,13 +204,12 @@ module Puppet
194
204
 
195
205
  # was the stat already specified, or should the value
196
206
  # be inherited from the source?
197
- unless @parent.argument?(stat)
198
- @parent[stat] = value
199
- @parent.property(stat).retrieve
207
+ unless @resource.argument?(stat)
208
+ @resource[stat] = value
200
209
  end
201
210
  }
202
211
 
203
- @is = @stats[:checksum]
212
+ return @stats[:checksum]
204
213
  end
205
214
 
206
215
  def should
@@ -214,25 +223,25 @@ module Puppet
214
223
  checks = (pinparams + [:ensure])
215
224
  checks.delete(:checksum)
216
225
 
217
- @parent[:check] = checks
218
- unless @parent.property(:checksum)
219
- @parent[:checksum] = :md5
226
+ @resource[:check] = checks
227
+ unless @resource.property(:checksum)
228
+ @resource[:checksum] = :md5
220
229
  end
221
230
  end
222
231
 
223
232
  def sync
224
233
  unless @stats[:type] == "file"
225
234
  #if @stats[:type] == "directory"
226
- #[@parent.name, @is.inspect, @should.inspect]
235
+ #[@resource.name, @should.inspect]
227
236
  #end
228
237
  raise Puppet::DevError, "Got told to copy non-file %s" %
229
- @parent[:path]
238
+ @resource[:path]
230
239
  end
231
240
 
232
- sourceobj, path = @parent.uri2obj(@source)
241
+ sourceobj, path = @resource.uri2obj(@source)
233
242
 
234
243
  begin
235
- contents = sourceobj.server.retrieve(path, @parent[:links])
244
+ contents = sourceobj.server.retrieve(path, @resource[:links])
236
245
  rescue Puppet::Network::XMLRPCClientError => detail
237
246
  self.err "Could not retrieve %s: %s" %
238
247
  [path, detail]
@@ -249,9 +258,9 @@ module Puppet
249
258
  self.notice "Could not retrieve contents for %s" %
250
259
  @source
251
260
  end
252
- exists = File.exists?(@parent[:path])
261
+ exists = File.exists?(@resource[:path])
253
262
 
254
- @parent.write { |f| f.print contents }
263
+ @resource.write { |f| f.print contents }
255
264
 
256
265
  if exists
257
266
  return :file_changed
@@ -262,4 +271,4 @@ module Puppet
262
271
  end
263
272
  end
264
273
 
265
- # $Id: source.rb 2409 2007-04-24 06:20:21Z luke $
274
+ # $Id: source.rb 2610 2007-06-18 19:29:56Z lutter $