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
@@ -11,16 +11,16 @@ Puppet::Type.type(:service).provide :base do
11
11
  # Get the process ID for a running process. Requires the 'pattern'
12
12
  # parameter.
13
13
  def getpid
14
- unless @model[:pattern]
15
- @model.fail "Either a stop command or a pattern must be specified"
14
+ unless @resource[:pattern]
15
+ @resource.fail "Either a stop command or a pattern must be specified"
16
16
  end
17
17
  ps = Facter["ps"].value
18
18
  unless ps and ps != ""
19
- @model.fail(
19
+ @resource.fail(
20
20
  "You must upgrade Facter to a version that includes 'ps'"
21
21
  )
22
22
  end
23
- regex = Regexp.new(@model[:pattern])
23
+ regex = Regexp.new(@resource[:pattern])
24
24
  self.debug "Executing '#{ps}'"
25
25
  IO.popen(ps) { |table|
26
26
  table.each { |line|
@@ -36,7 +36,7 @@ Puppet::Type.type(:service).provide :base do
36
36
 
37
37
  # How to restart the process.
38
38
  def restart
39
- if @model[:restart] or self.respond_to?(:restartcmd)
39
+ if @resource[:restart] or self.respond_to?(:restartcmd)
40
40
  ucommand(:restart)
41
41
  else
42
42
  self.stop
@@ -50,14 +50,12 @@ Puppet::Type.type(:service).provide :base do
50
50
  # happen if, for instance, it has an init script (and thus responds to
51
51
  # 'statuscmd') but does not have 'hasstatus' enabled.
52
52
  def status
53
- if @model[:status] or (
53
+ if @resource[:status] or (
54
54
  self.respond_to?(:statuscmd) and self.statuscmd
55
55
  )
56
56
  # Don't fail when the exit status is not 0.
57
57
  output = ucommand(:status, false)
58
58
 
59
- self.debug "%s status returned %s" %
60
- [self.name, output.inspect]
61
59
  if $? == 0
62
60
  return :running
63
61
  else
@@ -79,8 +77,8 @@ Puppet::Type.type(:service).provide :base do
79
77
  # The command used to start. Generated if the 'binary' argument
80
78
  # is passed.
81
79
  def startcmd
82
- if @model[:binary]
83
- return @model[:binary]
80
+ if @resource[:binary]
81
+ return @resource[:binary]
84
82
  else
85
83
  raise Puppet::Error,
86
84
  "Services must specify a start command or a binary"
@@ -93,7 +91,7 @@ Puppet::Type.type(:service).provide :base do
93
91
  # for the process in the process table.
94
92
  # This method will generally not be overridden by submodules.
95
93
  def stop
96
- if @model[:stop] or self.respond_to?(:stopcmd)
94
+ if @resource[:stop] or self.respond_to?(:stopcmd)
97
95
  ucommand(:stop)
98
96
  else
99
97
  pid = getpid
@@ -104,7 +102,7 @@ Puppet::Type.type(:service).provide :base do
104
102
  begin
105
103
  output = kill pid
106
104
  rescue Puppet::ExecutionFailure => detail
107
- @model.fail "Could not kill %s, PID %s: %s" %
105
+ @resource.fail "Could not kill %s, PID %s: %s" %
108
106
  [self.name, pid, output]
109
107
  end
110
108
  return true
@@ -117,14 +115,14 @@ Puppet::Type.type(:service).provide :base do
117
115
  # #565: Services generally produce no output, so squelch them.
118
116
  execute(command, :failonfail => fof, :squelch => true)
119
117
  rescue Puppet::ExecutionFailure => detail
120
- @model.fail "Could not %s %s: %s" % [type, @model.ref, detail]
118
+ @resource.fail "Could not %s %s: %s" % [type, @resource.ref, detail]
121
119
  end
122
120
  return nil
123
121
  end
124
122
 
125
123
  # Use either a specified command or the default for our provider.
126
124
  def ucommand(type, fof = true)
127
- if c = @model[type]
125
+ if c = @resource[type]
128
126
  cmd = [c]
129
127
  else
130
128
  cmd = self.send("%scmd" % type)
@@ -133,4 +131,4 @@ Puppet::Type.type(:service).provide :base do
133
131
  end
134
132
  end
135
133
 
136
- # $Id: base.rb 2385 2007-04-03 15:51:18Z mccune $
134
+ # $Id: base.rb 2589 2007-06-15 15:37:03Z luke $
@@ -9,11 +9,11 @@ Puppet::Type.type(:service).provide :debian, :parent => :init do
9
9
 
10
10
  # Remove the symlinks
11
11
  def disable
12
- update "-f", @model[:name], "remove"
12
+ update "-f", @resource[:name], "remove"
13
13
  end
14
14
 
15
15
  def enabled?
16
- output = update "-n", "-f", @model[:name], "remove"
16
+ output = update "-n", "-f", @resource[:name], "remove"
17
17
 
18
18
  # If it's enabled, then it will print output showing removal of
19
19
  # links.
@@ -25,8 +25,8 @@ Puppet::Type.type(:service).provide :debian, :parent => :init do
25
25
  end
26
26
 
27
27
  def enable
28
- update @model[:name], "defaults"
28
+ update @resource[:name], "defaults"
29
29
  end
30
30
  end
31
31
 
32
- # $Id: debian.rb 1979 2006-12-28 08:06:46Z luke $
32
+ # $Id: debian.rb 2501 2007-05-09 23:08:42Z luke $
@@ -10,7 +10,7 @@ Puppet::Type.type(:service).provide :gentoo, :parent => :init do
10
10
 
11
11
  def disable
12
12
  begin
13
- output = update :del, @model[:name], :default
13
+ output = update :del, @resource[:name], :default
14
14
  rescue Puppet::ExecutionFailure
15
15
  raise Puppet::Error, "Could not disable %s: %s" %
16
16
  [self.name, output]
@@ -24,12 +24,12 @@ Puppet::Type.type(:service).provide :gentoo, :parent => :init do
24
24
  return :false
25
25
  end
26
26
 
27
- line = output.split(/\n/).find { |l| l.include?(@model[:name]) }
27
+ line = output.split(/\n/).find { |l| l.include?(@resource[:name]) }
28
28
 
29
29
  return :false unless line
30
30
 
31
31
  # If it's enabled then it will print output showing service | runlevel
32
- if output =~ /#{@model[:name]}\s*|\s*default/
32
+ if output =~ /#{@resource[:name]}\s*|\s*default/
33
33
  return :true
34
34
  else
35
35
  return :false
@@ -38,7 +38,7 @@ Puppet::Type.type(:service).provide :gentoo, :parent => :init do
38
38
 
39
39
  def enable
40
40
  begin
41
- output = update :add, @model[:name], :default
41
+ output = update :add, @resource[:name], :default
42
42
  rescue Puppet::ExecutionFailure
43
43
  raise Puppet::Error, "Could not enable %s: %s" %
44
44
  [self.name, output]
@@ -29,7 +29,7 @@ Puppet::Type.type(:service).provide :init, :parent => :base do
29
29
  end
30
30
 
31
31
  # List all services of this type.
32
- def self.list(name)
32
+ def self.instances(name)
33
33
  # We need to find all paths specified for our type or any parent types
34
34
  paths = Puppet.type(:service).paths(name)
35
35
 
@@ -44,7 +44,7 @@ Puppet::Type.type(:service).provide :init, :parent => :base do
44
44
  end
45
45
  end
46
46
 
47
- paths.each do |path|
47
+ paths.collect do |path|
48
48
  unless FileTest.directory?(path)
49
49
  Puppet.notice "Service path %s does not exist" % path
50
50
  next
@@ -59,14 +59,8 @@ Puppet::Type.type(:service).provide :init, :parent => :base do
59
59
  Dir.entries(path).reject { |e|
60
60
  fullpath = File.join(path, e)
61
61
  e =~ /^\./ or ! FileTest.executable?(fullpath)
62
- }.each do |name|
63
- if obj = Puppet::Type.type(:service)[name]
64
- obj[:check] = check
65
- else
66
- Puppet::Type.type(:service).create(
67
- :name => name, :check => check, :path => path
68
- )
69
- end
62
+ }.collect do |name|
63
+ new(:name => name, :path => path)
70
64
  end
71
65
  end
72
66
  end
@@ -87,12 +81,12 @@ Puppet::Type.type(:service).provide :init, :parent => :base do
87
81
  if defined? @initscript
88
82
  return @initscript
89
83
  else
90
- @initscript = self.search(@model[:name])
84
+ @initscript = self.search(@resource[:name])
91
85
  end
92
86
  end
93
87
 
94
88
  def restart
95
- if @model[:hasrestart] == :true
89
+ if @resource[:hasrestart] == :true
96
90
  command = [self.initscript, :restart]
97
91
  texecute("restart", command)
98
92
  else
@@ -101,7 +95,7 @@ Puppet::Type.type(:service).provide :init, :parent => :base do
101
95
  end
102
96
 
103
97
  def search(name)
104
- @model[:path].each { |path|
98
+ @resource[:path].each { |path|
105
99
  fqname = File.join(path,name)
106
100
  begin
107
101
  stat = File.stat(fqname)
@@ -114,6 +108,19 @@ Puppet::Type.type(:service).provide :init, :parent => :base do
114
108
  # if we've gotten this far, we found a valid script
115
109
  return fqname
116
110
  }
111
+ @model[:path].each { |path|
112
+ fqname_sh = File.join(path,"#{name}.sh")
113
+ begin
114
+ stat = File.stat(fqname_sh)
115
+ rescue
116
+ # should probably rescue specific errors...
117
+ self.debug("Could not find %s.sh in %s" % [name,path])
118
+ next
119
+ end
120
+
121
+ # if we've gotten this far, we found a valid script
122
+ return fqname_sh
123
+ }
117
124
  raise Puppet::Error, "Could not find init script for '%s'" % name
118
125
  end
119
126
 
@@ -126,7 +133,7 @@ Puppet::Type.type(:service).provide :init, :parent => :base do
126
133
  # we just return that; otherwise, we return false, which causes it to
127
134
  # fallback to other mechanisms.
128
135
  def statuscmd
129
- if @model[:hasstatus]
136
+ if @resource[:hasstatus]
130
137
  return [self.initscript, :status]
131
138
  else
132
139
  return false
@@ -139,4 +146,4 @@ Puppet::Type.type(:service).provide :init, :parent => :base do
139
146
  end
140
147
  end
141
148
 
142
- # $Id: init.rb 1979 2006-12-28 08:06:46Z luke $
149
+ # $Id: init.rb 2619 2007-06-18 21:26:04Z luke $
@@ -19,8 +19,8 @@ Puppet::Type.type(:service).provide :redhat, :parent => :init do
19
19
  # Remove the symlinks
20
20
  def disable
21
21
  begin
22
- output = chkconfig(@model[:name], :off)
23
- output += chkconfig("--del", @model[:name])
22
+ output = chkconfig(@resource[:name], :off)
23
+ output += chkconfig("--del", @resource[:name])
24
24
  rescue Puppet::ExecutionFailure
25
25
  raise Puppet::Error, "Could not disable %s: %s" %
26
26
  [self.name, output]
@@ -29,7 +29,7 @@ Puppet::Type.type(:service).provide :redhat, :parent => :init do
29
29
 
30
30
  def enabled?
31
31
  begin
32
- output = chkconfig(@model[:name])
32
+ output = chkconfig(@resource[:name])
33
33
  rescue Puppet::ExecutionFailure
34
34
  return :false
35
35
  end
@@ -47,8 +47,8 @@ Puppet::Type.type(:service).provide :redhat, :parent => :init do
47
47
  # in the init scripts.
48
48
  def enable
49
49
  begin
50
- output = chkconfig("--add", @model[:name])
51
- output += chkconfig(@model[:name], :on)
50
+ output = chkconfig("--add", @resource[:name])
51
+ output += chkconfig(@resource[:name], :on)
52
52
  rescue Puppet::ExecutionFailure => detail
53
53
  raise Puppet::Error, "Could not enable %s: %s" %
54
54
  [self.name, detail]
@@ -56,4 +56,4 @@ Puppet::Type.type(:service).provide :redhat, :parent => :init do
56
56
  end
57
57
  end
58
58
 
59
- # $Id: redhat.rb 2330 2007-03-19 22:13:09Z luke $
59
+ # $Id: redhat.rb 2501 2007-05-09 23:08:42Z luke $
@@ -27,20 +27,20 @@ Puppet::Type.type(:service).provide :smf, :parent => :base do
27
27
  end
28
28
 
29
29
  def restartcmd
30
- [command(:adm), :restart, @model[:name]]
30
+ [command(:adm), :restart, @resource[:name]]
31
31
  end
32
32
 
33
33
  def startcmd
34
- [command(:adm), :enable, @model[:name]]
34
+ [command(:adm), :enable, @resource[:name]]
35
35
  end
36
36
 
37
37
  def status
38
- if @model[:status]
38
+ if @resource[:status]
39
39
  super
40
40
  return
41
41
  end
42
42
  begin
43
- output = svcs "-l", @model[:name]
43
+ output = svcs "-l", @resource[:name]
44
44
  rescue Puppet::ExecutionFailure
45
45
  warning "Could not get status on service %s" % self.name
46
46
  return :stopped
@@ -78,8 +78,8 @@ Puppet::Type.type(:service).provide :smf, :parent => :base do
78
78
  end
79
79
 
80
80
  def stopcmd
81
- [command(:adm), :disable, @model[:name]]
81
+ [command(:adm), :disable, @resource[:name]]
82
82
  end
83
83
  end
84
84
 
85
- # $Id: smf.rb 2284 2007-03-17 02:50:48Z luke $
85
+ # $Id: smf.rb 2501 2007-05-09 23:08:42Z luke $
@@ -19,7 +19,7 @@ Puppet::Type.type(:user).provide :netinfo, :parent => Puppet::Provider::NameServ
19
19
 
20
20
  autogen_defaults :home => "/var/empty", :shell => "/usr/bin/false", :password => '********'
21
21
 
22
- has_features :manages_passwords
22
+ has_feature :manages_passwords
23
23
 
24
24
  verify :gid, "GID must be an integer" do |value|
25
25
  value.is_a? Integer
@@ -30,7 +30,7 @@ Puppet::Type.type(:user).provide :netinfo, :parent => Puppet::Provider::NameServ
30
30
  end
31
31
 
32
32
  def autogen_comment
33
- return @model[:name].capitalize
33
+ return @resource[:name].capitalize
34
34
  end
35
35
 
36
36
  # The list of all groups the user is a member of. Different
@@ -38,7 +38,7 @@ Puppet::Type.type(:user).provide :netinfo, :parent => Puppet::Provider::NameServ
38
38
  def groups
39
39
  groups = []
40
40
 
41
- user = @model[:name]
41
+ user = @resource[:name]
42
42
  # Retrieve them all from netinfo
43
43
  open("| #{command(:nireport)} / /groups name users") do |file|
44
44
  file.each do |line|
@@ -84,7 +84,7 @@ Puppet::Type.type(:user).provide :netinfo, :parent => Puppet::Provider::NameServ
84
84
  end
85
85
  end
86
86
 
87
- user = @model[:name]
87
+ user = @resource[:name]
88
88
  data.each do |name, members|
89
89
  if members.include? user and groups.include? name
90
90
  # I'm in the group and should be
@@ -103,4 +103,4 @@ Puppet::Type.type(:user).provide :netinfo, :parent => Puppet::Provider::NameServ
103
103
  end
104
104
  end
105
105
 
106
- # $Id: netinfo.rb 2415 2007-04-25 21:44:22Z luke $
106
+ # $Id: netinfo.rb 2542 2007-05-30 20:36:29Z mpalmer $
@@ -4,6 +4,7 @@ Puppet::Type.type(:user).provide :pw, :parent => Puppet::Provider::NameService::
4
4
  desc "User management via ``pw`` on FreeBSD."
5
5
 
6
6
  commands :pw => "pw"
7
+ has_features :manages_homedir, :allows_duplicates
7
8
 
8
9
  defaultfor :operatingsystem => :freebsd
9
10
 
@@ -20,22 +21,26 @@ Puppet::Type.type(:user).provide :pw, :parent => Puppet::Provider::NameService::
20
21
  end
21
22
 
22
23
  def addcmd
23
- cmd = [command(:pw), "useradd", @model[:name]]
24
- @model.class.validproperties.each do |property|
24
+ cmd = [command(:pw), "useradd", @resource[:name]]
25
+ @resource.class.validproperties.each do |property|
25
26
  next if property == :ensure
26
27
  # the value needs to be quoted, mostly because -c might
27
28
  # have spaces in it
28
- if value = @model.should(property) and value != ""
29
+ if value = @resource.should(property) and value != ""
29
30
  cmd << flag(property) << value
30
31
  end
31
32
  end
32
33
 
33
- if @model[:allowdupe] == :true
34
+ if @resource.allowdupe?
34
35
  cmd << "-o"
35
36
  end
36
37
 
38
+ if @resource.managehome?
39
+ cmd << "-m"
40
+ end
41
+
37
42
  return cmd
38
43
  end
39
44
  end
40
45
 
41
- # $Id: pw.rb 2169 2007-02-07 06:47:10Z luke $
46
+ # $Id: pw.rb 2600 2007-06-18 06:42:07Z luke $
@@ -19,44 +19,39 @@ Puppet::Type.type(:user).provide :useradd, :parent => Puppet::Provider::NameServ
19
19
 
20
20
  has_features :manages_homedir, :allows_duplicates
21
21
 
22
- if Puppet.features.libshadow? and case Facter.value(:kernel)
23
- when "Linux": true
24
- else
25
- false
26
- end
27
-
28
- has_features :manages_passwords
22
+ if Puppet.features.libshadow? and (Facter.value(:kernel) == "Linux")
23
+ has_feature :manages_passwords
29
24
  end
30
25
 
31
26
  def addcmd
32
27
  cmd = [command(:add)]
33
- @model.class.validproperties.each do |property|
28
+ @resource.class.validproperties.each do |property|
34
29
  next if property == :ensure
35
30
  # the value needs to be quoted, mostly because -c might
36
31
  # have spaces in it
37
- if value = @model.should(property) and value != ""
32
+ if value = @resource.should(property) and value != ""
38
33
  cmd << flag(property) << value
39
34
  end
40
35
  end
41
36
 
42
- if @model.allowdupe?
37
+ if @resource.allowdupe?
43
38
  cmd << "-o"
44
39
  end
45
40
 
46
- if @model.managehome?
41
+ if @resource.managehome?
47
42
  cmd << "-m"
48
43
  elsif %w{Fedora RedHat}.include?(Facter.value("operatingsystem"))
49
44
  cmd << "-M"
50
45
  end
51
46
 
52
- cmd << @model[:name]
47
+ cmd << @resource[:name]
53
48
 
54
49
  cmd
55
50
  end
56
51
 
57
52
  # Retrieve the password using the Shadow Password library
58
53
  def password
59
- if ent = Shadow::Passwd.getspnam(@model.name)
54
+ if ent = Shadow::Passwd.getspnam(@resource.name)
60
55
  return ent.sp_pwdp
61
56
  else
62
57
  return :absent
@@ -64,4 +59,4 @@ Puppet::Type.type(:user).provide :useradd, :parent => Puppet::Provider::NameServ
64
59
  end
65
60
  end
66
61
 
67
- # $Id: useradd.rb 2414 2007-04-25 20:59:00Z luke $
62
+ # $Id: useradd.rb 2542 2007-05-30 20:36:29Z mpalmer $