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
@@ -1,5 +1,7 @@
1
+ require 'puppet/provider/package'
2
+
1
3
  # OS X Packaging sucks. We can install packages, but that's about it.
2
- Puppet::Type.type(:package).provide :apple do
4
+ Puppet::Type.type(:package).provide :apple, :parent => Puppet::Provider::Package do
3
5
  desc "Package management based on OS X's builtin packaging system. This is
4
6
  essentially the simplest and least functional package system in existence --
5
7
  it only supports installation; no deletion or upgrades. The provider will
@@ -11,7 +13,17 @@ Puppet::Type.type(:package).provide :apple do
11
13
 
12
14
  defaultfor :operatingsystem => :darwin
13
15
 
14
- def self.listbyname
16
+ def self.instances
17
+ instance_by_name.collect do |name|
18
+ self.new(
19
+ :name => name,
20
+ :provider => :apple,
21
+ :ensure => :installed
22
+ )
23
+ end
24
+ end
25
+
26
+ def self.instance_by_name
15
27
  Dir.entries("/Library/Receipts").find_all { |f|
16
28
  f =~ /\.pkg$/
17
29
  }.collect { |f|
@@ -22,19 +34,9 @@ Puppet::Type.type(:package).provide :apple do
22
34
  }
23
35
  end
24
36
 
25
- def self.list
26
- listbyname.collect do |name|
27
- Puppet.type(:package).installedpkg(
28
- :name => name,
29
- :provider => :apple,
30
- :ensure => :installed
31
- )
32
- end
33
- end
34
-
35
37
  def query
36
- if FileTest.exists?("/Library/Receipts/#{@model[:name]}.pkg")
37
- return {:name => @model[:name], :ensure => :present}
38
+ if FileTest.exists?("/Library/Receipts/#{@resource[:name]}.pkg")
39
+ return {:name => @resource[:name], :ensure => :present}
38
40
  else
39
41
  return nil
40
42
  end
@@ -42,7 +44,7 @@ Puppet::Type.type(:package).provide :apple do
42
44
 
43
45
  def install
44
46
  source = nil
45
- unless source = @model[:source]
47
+ unless source = @resource[:source]
46
48
  self.fail "Mac OS X packages must specify a package source"
47
49
  end
48
50
 
@@ -50,4 +52,4 @@ Puppet::Type.type(:package).provide :apple do
50
52
  end
51
53
  end
52
54
 
53
- # $Id: apple.rb 2399 2007-04-20 02:22:02Z luke $
55
+ # $Id: apple.rb 2555 2007-06-08 17:20:00Z luke $
@@ -1,9 +1,11 @@
1
- Puppet::Type.type(:package).provide :apt, :parent => :dpkg do
1
+ Puppet::Type.type(:package).provide :apt, :parent => :dpkg, :source => :dpkg do
2
2
  # Provide sorting functionality
3
3
  include Puppet::Util::Package
4
4
 
5
5
  desc "Package management via ``apt-get``."
6
6
 
7
+ has_feature :versionable
8
+
7
9
  commands :aptget => "/usr/bin/apt-get"
8
10
  commands :aptcache => "/usr/bin/apt-cache"
9
11
  commands :preseed => "/usr/bin/debconf-set-selections"
@@ -31,7 +33,7 @@ Puppet::Type.type(:package).provide :apt, :parent => :dpkg do
31
33
  end
32
34
  end
33
35
 
34
- if @@checkedforcdrom and @model[:allowcdrom] != :true
36
+ if @@checkedforcdrom and @resource[:allowcdrom] != :true
35
37
  raise Puppet::Error,
36
38
  "/etc/apt/sources.list contains a cdrom source; not installing. Use 'allowcdrom' to override this failure."
37
39
  end
@@ -40,14 +42,14 @@ Puppet::Type.type(:package).provide :apt, :parent => :dpkg do
40
42
  # Install a package using 'apt-get'. This function needs to support
41
43
  # installing a specific version.
42
44
  def install
43
- if @model[:responsefile]
45
+ if @resource[:responsefile]
44
46
  self.run_preseed
45
47
  end
46
- should = @model.should(:ensure)
48
+ should = @resource.should(:ensure)
47
49
 
48
50
  checkforcdrom()
49
51
 
50
- str = @model[:name]
52
+ str = @resource[:name]
51
53
  case should
52
54
  when true, false, Symbol
53
55
  # pass
@@ -58,7 +60,7 @@ Puppet::Type.type(:package).provide :apt, :parent => :dpkg do
58
60
  cmd = %w{-q -y}
59
61
 
60
62
  keep = ""
61
- if config = @model[:configfiles]
63
+ if config = @resource[:configfiles]
62
64
  case config
63
65
  when :keep
64
66
  cmd << "-o" << 'DPkg::Options::=--force-confold'
@@ -76,7 +78,7 @@ Puppet::Type.type(:package).provide :apt, :parent => :dpkg do
76
78
 
77
79
  # What's the latest package version available?
78
80
  def latest
79
- output = aptcache :policy, @model[:name]
81
+ output = aptcache :policy, @resource[:name]
80
82
 
81
83
  if output =~ /Candidate:\s+(\S+)\s/
82
84
  return $1
@@ -90,7 +92,7 @@ Puppet::Type.type(:package).provide :apt, :parent => :dpkg do
90
92
  # preseeds answers to dpkg-set-selection from the "responsefile"
91
93
  #
92
94
  def run_preseed
93
- if response = @model[:responsefile] and FileTest.exists?(response)
95
+ if response = @resource[:responsefile] and FileTest.exists?(response)
94
96
  self.info("Preseeding %s to debconf-set-selections" % response)
95
97
 
96
98
  preseed response
@@ -104,16 +106,12 @@ Puppet::Type.type(:package).provide :apt, :parent => :dpkg do
104
106
  end
105
107
 
106
108
  def uninstall
107
- aptget "-y", "-q", :remove, @model[:name]
109
+ aptget "-y", "-q", :remove, @resource[:name]
108
110
  end
109
111
 
110
112
  def purge
111
- aptget '-y', '-q', 'remove', '--purge', @model[:name]
112
- end
113
-
114
- def versionable?
115
- true
113
+ aptget '-y', '-q', 'remove', '--purge', @resource[:name]
116
114
  end
117
115
  end
118
116
 
119
- # $Id: apt.rb 2316 2007-03-19 16:42:41Z luke $
117
+ # $Id: apt.rb 2618 2007-06-18 21:18:48Z luke $
@@ -1,6 +1,8 @@
1
- Puppet::Type.type(:package).provide :aptitude, :parent => :apt do
1
+ Puppet::Type.type(:package).provide :aptitude, :parent => :apt, :source => :dpkg do
2
2
  desc "Package management via ``aptitude``."
3
3
 
4
+ has_feature :versionable
5
+
4
6
  commands :aptitude => "/usr/bin/aptitude"
5
7
  commands :aptcache => "/usr/bin/apt-cache"
6
8
 
@@ -23,8 +25,8 @@ Puppet::Type.type(:package).provide :aptitude, :parent => :apt do
23
25
  end
24
26
 
25
27
  def purge
26
- aptitude '-y', 'purge', @model[:name]
28
+ aptitude '-y', 'purge', @resource[:name]
27
29
  end
28
30
  end
29
31
 
30
- # $Id: aptitude.rb 2316 2007-03-19 16:42:41Z luke $
32
+ # $Id: aptitude.rb 2618 2007-06-18 21:18:48Z luke $
@@ -1,9 +1,11 @@
1
- Puppet::Type.type(:package).provide :aptrpm, :parent => :rpm do
1
+ Puppet::Type.type(:package).provide :aptrpm, :parent => :rpm, :source => :rpm do
2
2
  # Provide sorting functionality
3
3
  include Puppet::Util::Package
4
4
 
5
5
  desc "Package management via ``apt-get`` ported to ``rpm``."
6
6
 
7
+ has_feature :versionable
8
+
7
9
  commands :aptget => "/usr/bin/apt-get"
8
10
  commands :aptcache => "/usr/bin/apt-cache"
9
11
  commands :rpm => "/usr/bin/rpm"
@@ -11,9 +13,9 @@ Puppet::Type.type(:package).provide :aptrpm, :parent => :rpm do
11
13
  # Install a package using 'apt-get'. This function needs to support
12
14
  # installing a specific version.
13
15
  def install
14
- should = @model.should(:ensure)
16
+ should = @resource.should(:ensure)
15
17
 
16
- str = @model[:name]
18
+ str = @resource[:name]
17
19
  case should
18
20
  when true, false, Symbol
19
21
  # pass
@@ -30,7 +32,7 @@ Puppet::Type.type(:package).provide :aptrpm, :parent => :rpm do
30
32
 
31
33
  # What's the latest package version available?
32
34
  def latest
33
- output = aptcache :showpkg, @model[:name]
35
+ output = aptcache :showpkg, @resource[:name]
34
36
 
35
37
  if output =~ /Versions:\s*\n((\n|.)+)^$/
36
38
  versions = $1
@@ -64,16 +66,12 @@ Puppet::Type.type(:package).provide :aptrpm, :parent => :rpm do
64
66
  end
65
67
 
66
68
  def uninstall
67
- aptget "-y", "-q", 'remove', @model[:name]
69
+ aptget "-y", "-q", 'remove', @resource[:name]
68
70
  end
69
71
 
70
72
  def purge
71
- aptget '-y', '-q', 'remove', '--purge', @model[:name]
72
- end
73
-
74
- def versionable?
75
- true
73
+ aptget '-y', '-q', 'remove', '--purge', @resource[:name]
76
74
  end
77
75
  end
78
76
 
79
- # $Id: aptrpm.rb 2398 2007-04-19 19:54:37Z luke $
77
+ # $Id: aptrpm.rb 2618 2007-06-18 21:18:48Z luke $
@@ -1,5 +1,5 @@
1
1
  # Packaging using Blastwave's pkg-get program.
2
- Puppet::Type.type(:package).provide :blastwave, :parent => :sun do
2
+ Puppet::Type.type(:package).provide :blastwave, :parent => :sun, :source => :sun do
3
3
  desc "Package management using Blastwave.org's ``pkg-get`` command on Solaris."
4
4
  pkgget = "pkg-get"
5
5
  if FileTest.executable?("/opt/csw/bin/pkg-get")
@@ -23,10 +23,10 @@ Puppet::Type.type(:package).provide :blastwave, :parent => :sun do
23
23
  end
24
24
  end
25
25
 
26
- def self.list(hash = {})
26
+ def self.instances(hash = {})
27
27
  blastlist(hash).collect do |bhash|
28
28
  bhash.delete(:avail)
29
- Puppet::Type.type(:package).installedpkg(bhash)
29
+ new(bhash)
30
30
  end
31
31
  end
32
32
 
@@ -86,29 +86,29 @@ Puppet::Type.type(:package).provide :blastwave, :parent => :sun do
86
86
  end
87
87
 
88
88
  def install
89
- pkgget "-f", :install, @model[:name]
89
+ pkgget "-f", :install, @resource[:name]
90
90
  end
91
91
 
92
92
  # Retrieve the version from the current package file.
93
93
  def latest
94
- hash = self.class.blastlist(:justme => @model[:name])
94
+ hash = self.class.blastlist(:justme => @resource[:name])
95
95
  hash[:avail]
96
96
  end
97
97
 
98
98
  def query
99
- hash = self.class.blastlist(:justme => @model[:name])
99
+ hash = self.class.blastlist(:justme => @resource[:name])
100
100
 
101
101
  {:ensure => hash[:ensure]}
102
102
  end
103
103
 
104
104
  # Remove the old package, and install the new one
105
105
  def update
106
- pkgget "-f", :upgrade, @model[:name]
106
+ pkgget "-f", :upgrade, @resource[:name]
107
107
  end
108
108
 
109
109
  def uninstall
110
- pkgget "-f", :remove, @model[:name]
110
+ pkgget "-f", :remove, @resource[:name]
111
111
  end
112
112
  end
113
113
 
114
- # $Id: blastwave.rb 1980 2006-12-28 19:14:11Z luke $
114
+ # $Id: blastwave.rb 2555 2007-06-08 17:20:00Z luke $
@@ -1,4 +1,6 @@
1
- Puppet::Type.type(:package).provide :darwinport do
1
+ require 'puppet/provider/package'
2
+
3
+ Puppet::Type.type(:package).provide :darwinport, :parent => Puppet::Provider::Package do
2
4
  desc "Package management using DarwinPorts on OS X."
3
5
 
4
6
  commands :port => "/opt/local/bin/port"
@@ -31,31 +33,30 @@ Puppet::Type.type(:package).provide :darwinport do
31
33
  }
32
34
  end
33
35
 
34
- def self.list
36
+ def self.instances
35
37
  packages = []
36
38
 
37
39
  eachpkgashash do |hash|
38
- pkg = Puppet.type(:package).installedpkg(hash)
39
- packages << pkg
40
+ packages << new(hash)
40
41
  end
41
42
 
42
43
  return packages
43
44
  end
44
45
 
45
46
  def install
46
- should = @model.should(:ensure)
47
+ should = @resource.should(:ensure)
47
48
 
48
49
  # Seems like you can always say 'upgrade'
49
- output = port "upgrade", @model[:name]
50
+ output = port "upgrade", @resource[:name]
50
51
  if output =~ /^Error: No port/
51
- raise Puppet::ExecutionFailure, "Could not find package %s" % @model[:name]
52
+ raise Puppet::ExecutionFailure, "Could not find package %s" % @resource[:name]
52
53
  end
53
54
  end
54
55
 
55
56
  def query
56
57
  version = nil
57
58
  self.class.eachpkgashash do |hash|
58
- if hash[:name] == @model[:name]
59
+ if hash[:name] == @resource[:name]
59
60
  return hash
60
61
  end
61
62
  end
@@ -64,7 +65,7 @@ Puppet::Type.type(:package).provide :darwinport do
64
65
  end
65
66
 
66
67
  def latest
67
- info = port :search, "^#{@model[:name]}$"
68
+ info = port :search, "^#{@resource[:name]}$"
68
69
 
69
70
  if $? != 0 or info =~ /^Error/
70
71
  return nil
@@ -77,7 +78,7 @@ Puppet::Type.type(:package).provide :darwinport do
77
78
  end
78
79
 
79
80
  def uninstall
80
- port :uninstall, @model[:name]
81
+ port :uninstall, @resource[:name]
81
82
  end
82
83
 
83
84
  def update
@@ -85,4 +86,4 @@ Puppet::Type.type(:package).provide :darwinport do
85
86
  end
86
87
  end
87
88
 
88
- # $Id: darwinport.rb 2052 2007-01-05 17:09:04Z luke $
89
+ # $Id: darwinport.rb 2555 2007-06-08 17:20:00Z luke $
@@ -1,12 +1,15 @@
1
- Puppet::Type.type(:package).provide :dpkg do
1
+ require 'puppet/provider/package'
2
+
3
+ Puppet::Type.type(:package).provide :dpkg, :parent => Puppet::Provider::Package do
2
4
  desc "Package management via ``dpkg``. Because this only uses ``dpkg``
3
5
  and not ``apt``, you must specify the source of any packages you want
4
6
  to manage."
5
7
 
6
8
  commands :dpkg => "/usr/bin/dpkg"
9
+ commands :dpkg_deb => "/usr/bin/dpkg-deb"
7
10
  commands :dpkgquery => "/usr/bin/dpkg-query"
8
11
 
9
- def self.list
12
+ def self.instances
10
13
  packages = []
11
14
 
12
15
  # list out all of the packages
@@ -29,7 +32,7 @@ Puppet::Type.type(:package).provide :dpkg do
29
32
 
30
33
  hash[:provider] = self.name
31
34
 
32
- packages.push Puppet.type(:package).installedpkg(hash)
35
+ packages << new(hash)
33
36
  else
34
37
  Puppet.warning "Failed to match dpkg-query line %s" %
35
38
  line.inspect
@@ -41,12 +44,17 @@ Puppet::Type.type(:package).provide :dpkg do
41
44
  end
42
45
 
43
46
  def install
44
- unless file = @model[:source]
47
+ unless file = @resource[:source]
45
48
  raise ArgumentError, "You cannot install dpkg packages without a source"
46
49
  end
47
50
  dpkg "-i", file
48
51
  end
49
52
 
53
+ # Return the version from the package.
54
+ def latest
55
+ output = dpkg_deb "--show", @resource[:source]
56
+ end
57
+
50
58
  def query
51
59
  packages = []
52
60
 
@@ -57,12 +65,12 @@ Puppet::Type.type(:package).provide :dpkg do
57
65
  # list out our specific package
58
66
  begin
59
67
  output = dpkgquery("-W", "--showformat",
60
- '${Status} ${Package} ${Version}\\n', @model[:name]
68
+ '${Status} ${Package} ${Version}\\n', @resource[:name]
61
69
  )
62
70
  rescue Puppet::ExecutionFailure
63
71
  # dpkg-query exits 1 if the package is not found.
64
- return {:ensure => :absent, :status => 'missing',
65
- :name => @model[:name], :error => 'ok'}
72
+ return {:ensure => :purged, :status => 'missing',
73
+ :name => @resource[:name], :error => 'ok'}
66
74
 
67
75
  end
68
76
  # Our regex for matching dpkg-query output. We could probably just
@@ -79,7 +87,7 @@ Puppet::Type.type(:package).provide :dpkg do
79
87
  else
80
88
  notice "Failed to handle dpkg-query line %s" % line.inspect
81
89
  return {:ensure => :absent, :status => 'missing',
82
- :name => @model[:name], :error => 'ok'}
90
+ :name => @resource[:name], :error => 'ok'}
83
91
  end
84
92
 
85
93
  if hash[:error] != "ok"
@@ -98,12 +106,12 @@ Puppet::Type.type(:package).provide :dpkg do
98
106
  end
99
107
 
100
108
  def uninstall
101
- dpkg "-r", @model[:name]
109
+ dpkg "-r", @resource[:name]
102
110
  end
103
111
 
104
112
  def purge
105
- dpkg "--purge", @model[:name]
106
- end
113
+ dpkg "--purge", @resource[:name]
114
+ end
107
115
  end
108
116
 
109
- # $Id: dpkg.rb 2224 2007-02-26 01:17:48Z mpalmer $
117
+ # $Id: dpkg.rb 2615 2007-06-18 20:10:35Z luke $
@@ -0,0 +1,87 @@
1
+ Puppet::Type.type(:package).provide :fink, :parent => :dpkg, :source => :dpkg do
2
+ # Provide sorting functionality
3
+ include Puppet::Util::Package
4
+
5
+ desc "Package management via ``fink``."
6
+
7
+ commands :fink => "/sw/bin/fink"
8
+ commands :aptget => "/sw/bin/apt-get"
9
+ commands :aptcache => "/sw/bin/apt-cache"
10
+ commands :dpkgquery => "/sw/bin/dpkg-query"
11
+
12
+ defaultfor :operatingsystem => :darwin
13
+
14
+ has_feature :versionable
15
+
16
+ # A derivative of DPKG; this is how most people actually manage
17
+ # Debian boxes, and the only thing that differs is that it can
18
+ # install packages from remote sites.
19
+
20
+ def finkcmd(*args)
21
+ fink(*args)
22
+ end
23
+
24
+ # Install a package using 'apt-get'. This function needs to support
25
+ # installing a specific version.
26
+ def install
27
+ if @resource[:responsefile]
28
+ self.run_preseed
29
+ end
30
+ should = @resource.should(:ensure)
31
+
32
+ str = @resource[:name]
33
+ case should
34
+ when true, false, Symbol
35
+ # pass
36
+ else
37
+ # Add the package version
38
+ str += "=%s" % should
39
+ end
40
+ cmd = %w{-b -q -y}
41
+
42
+ keep = ""
43
+
44
+ cmd << :install << str
45
+
46
+ finkcmd(cmd)
47
+ end
48
+
49
+ # What's the latest package version available?
50
+ def latest
51
+ output = aptcache :policy, @resource[:name]
52
+
53
+ if output =~ /Candidate:\s+(\S+)\s/
54
+ return $1
55
+ else
56
+ self.err "Could not find latest version"
57
+ return nil
58
+ end
59
+ end
60
+
61
+ #
62
+ # preseeds answers to dpkg-set-selection from the "responsefile"
63
+ #
64
+ def run_preseed
65
+ if response = @resource[:responsefile] and FileTest.exists?(response)
66
+ self.info("Preseeding %s to debconf-set-selections" % response)
67
+
68
+ preseed response
69
+ else
70
+ self.info "No responsefile specified or non existant, not preseeding anything"
71
+ end
72
+ end
73
+
74
+ def update
75
+ self.install
76
+ end
77
+
78
+ def uninstall
79
+ finkcmd "-y", "-q", :remove, @model[:name]
80
+ end
81
+
82
+ def purge
83
+ aptget '-y', '-q', 'remove', '--purge', @resource[:name]
84
+ end
85
+ end
86
+
87
+ # $Id: fink.rb 2617 2007-06-18 21:07:01Z luke $