puppet 0.18.4 → 0.22.4

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 (673) hide show
  1. data/CHANGELOG +288 -0
  2. data/README +2 -2
  3. data/Rakefile +78 -5
  4. data/bin/puppet +28 -36
  5. data/bin/puppetca +81 -38
  6. data/bin/puppetd +65 -62
  7. data/bin/puppetdoc +409 -140
  8. data/bin/puppetmasterd +59 -47
  9. data/bin/puppetrun +38 -23
  10. data/conf/freebsd/puppetd +26 -0
  11. data/conf/freebsd/puppetmasterd +26 -0
  12. data/conf/gentoo/conf.d/puppet +5 -0
  13. data/conf/gentoo/conf.d/puppetmaster +12 -0
  14. data/conf/gentoo/init.d/puppet +38 -0
  15. data/conf/gentoo/init.d/puppetmaster +50 -0
  16. data/conf/gentoo/puppet/fileserver.conf +12 -0
  17. data/conf/gentoo/puppet/puppetca.conf +29 -0
  18. data/conf/gentoo/puppet/puppetd.conf +29 -0
  19. data/conf/gentoo/puppet/puppetmasterd.conf +29 -0
  20. data/conf/redhat/client.init +10 -5
  21. data/conf/redhat/client.sysconfig +1 -1
  22. data/conf/redhat/fileserver.conf +2 -2
  23. data/conf/redhat/logrotate +1 -1
  24. data/conf/redhat/no-lockdir.patch +13 -0
  25. data/conf/redhat/puppet.spec +65 -8
  26. data/conf/redhat/puppetd.conf +0 -4
  27. data/conf/redhat/server.init +3 -6
  28. data/conf/solaris/pkginfo +1 -1
  29. data/conf/solaris/smf/svc-puppetd +2 -2
  30. data/conf/suse/client.init +142 -0
  31. data/conf/suse/puppet.spec +221 -0
  32. data/conf/suse/server.init +162 -0
  33. data/examples/code/mac_automount.pp +16 -0
  34. data/examples/root/bin/sleeper +3 -5
  35. data/examples/root/etc/init.d/sleeper +8 -2
  36. data/examples/root/etc/puppet/fileserver.conf +12 -2
  37. data/examples/root/etc/puppet/namespaceauth.conf +20 -0
  38. data/examples/root/etc/puppet/puppetd.conf +4 -0
  39. data/examples/root/etc/puppet/puppetmasterd.conf +6 -9
  40. data/examples/root/etc/puppet/tagmail.conf +1 -0
  41. data/ext/emacs/puppet-mode.el +46 -1
  42. data/ext/logcheck/puppet +15 -0
  43. data/ext/module_puppet +15 -23
  44. data/ext/vim/puppet.vim +4 -2
  45. data/install.rb +2 -1
  46. data/lib/puppet.rb +76 -207
  47. data/lib/puppet/configuration.rb +331 -0
  48. data/lib/puppet/daemon.rb +63 -246
  49. data/lib/puppet/dsl.rb +371 -0
  50. data/lib/puppet/element.rb +8 -26
  51. data/lib/puppet/error.rb +54 -0
  52. data/lib/puppet/event.rb +8 -243
  53. data/lib/puppet/{base64.rb → external/base64.rb} +0 -0
  54. data/lib/puppet/external/event-loop.rb +1 -0
  55. data/lib/puppet/{event-loop → external/event-loop}/better-definers.rb +0 -0
  56. data/lib/puppet/{event-loop → external/event-loop}/event-loop.rb +2 -2
  57. data/lib/puppet/{event-loop → external/event-loop}/signal-system.rb +1 -1
  58. data/lib/puppet/external/gratr.rb +33 -0
  59. data/lib/puppet/external/gratr/adjacency_graph.rb +257 -0
  60. data/lib/puppet/external/gratr/base.rb +34 -0
  61. data/lib/puppet/external/gratr/biconnected.rb +116 -0
  62. data/lib/puppet/external/gratr/chinese_postman.rb +123 -0
  63. data/lib/puppet/external/gratr/common.rb +73 -0
  64. data/lib/puppet/external/gratr/comparability.rb +92 -0
  65. data/lib/puppet/external/gratr/digraph.rb +116 -0
  66. data/lib/puppet/external/gratr/digraph_distance.rb +185 -0
  67. data/lib/puppet/external/gratr/dot.rb +90 -0
  68. data/lib/puppet/external/gratr/edge.rb +145 -0
  69. data/lib/puppet/external/gratr/graph.rb +303 -0
  70. data/lib/puppet/external/gratr/graph_api.rb +83 -0
  71. data/lib/puppet/external/gratr/import.rb +44 -0
  72. data/lib/puppet/external/gratr/labels.rb +90 -0
  73. data/lib/puppet/external/gratr/maximum_flow.rb +64 -0
  74. data/lib/puppet/external/gratr/rdot.rb +327 -0
  75. data/lib/puppet/external/gratr/search.rb +409 -0
  76. data/lib/puppet/external/gratr/strong_components.rb +127 -0
  77. data/lib/puppet/external/gratr/undirected_graph.rb +153 -0
  78. data/lib/puppet/{lock.rb → external/lock.rb} +1 -1
  79. data/lib/puppet/feature/base.rb +20 -0
  80. data/lib/puppet/feature/rails.rb +52 -0
  81. data/lib/puppet/metatype/attributes.rb +719 -0
  82. data/lib/puppet/metatype/closure.rb +111 -0
  83. data/lib/puppet/metatype/container.rb +94 -0
  84. data/lib/puppet/metatype/evaluation.rb +118 -0
  85. data/lib/puppet/metatype/instances.rb +261 -0
  86. data/lib/puppet/metatype/manager.rb +169 -0
  87. data/lib/puppet/metatype/metaparams.rb +409 -0
  88. data/lib/puppet/metatype/providers.rb +260 -0
  89. data/lib/puppet/metatype/relationships.rb +116 -0
  90. data/lib/puppet/metatype/schedules.rb +39 -0
  91. data/lib/puppet/metatype/tags.rb +39 -0
  92. data/lib/puppet/modules.rb +113 -0
  93. data/lib/puppet/network/authconfig.rb +168 -0
  94. data/lib/puppet/network/authorization.rb +84 -0
  95. data/lib/puppet/network/authstore.rb +293 -0
  96. data/lib/puppet/network/client.rb +187 -0
  97. data/lib/puppet/network/client/ca.rb +56 -0
  98. data/lib/puppet/network/client/dipper.rb +81 -0
  99. data/lib/puppet/network/client/file.rb +7 -0
  100. data/lib/puppet/network/client/logger.rb +6 -0
  101. data/lib/puppet/network/client/master.rb +644 -0
  102. data/lib/puppet/{client → network/client}/proxy.rb +3 -3
  103. data/lib/puppet/{client/reporter.rb → network/client/report.rb} +4 -7
  104. data/lib/puppet/{client/pelement.rb → network/client/resource.rb} +6 -19
  105. data/lib/puppet/network/client/runner.rb +13 -0
  106. data/lib/puppet/network/client/status.rb +5 -0
  107. data/lib/puppet/network/client_request.rb +32 -0
  108. data/lib/puppet/network/handler.rb +33 -0
  109. data/lib/puppet/{server → network/handler}/ca.rb +5 -6
  110. data/lib/puppet/network/handler/filebucket.rb +180 -0
  111. data/lib/puppet/{server → network/handler}/fileserver.rb +277 -219
  112. data/lib/puppet/{server → network/handler}/logger.rb +3 -5
  113. data/lib/puppet/{server → network/handler}/master.rb +42 -8
  114. data/lib/puppet/network/handler/report.rb +158 -0
  115. data/lib/puppet/network/handler/resource.rb +190 -0
  116. data/lib/puppet/{server → network/handler}/runner.rb +17 -18
  117. data/lib/puppet/network/handler/status.rb +13 -0
  118. data/lib/puppet/network/rights.rb +74 -0
  119. data/lib/puppet/network/server.rb +5 -0
  120. data/lib/puppet/network/server/mongrel.rb +138 -0
  121. data/lib/puppet/network/server/webrick.rb +153 -0
  122. data/lib/puppet/network/xmlrpc/client.rb +129 -0
  123. data/lib/puppet/network/xmlrpc/processor.rb +91 -0
  124. data/lib/puppet/network/xmlrpc/server.rb +20 -0
  125. data/lib/puppet/network/xmlrpc/webrick_servlet.rb +121 -0
  126. data/lib/puppet/parameter.rb +390 -346
  127. data/lib/puppet/parser/ast.rb +116 -147
  128. data/lib/puppet/parser/ast/astarray.rb +17 -33
  129. data/lib/puppet/parser/ast/branch.rb +2 -0
  130. data/lib/puppet/parser/ast/caseopt.rb +7 -12
  131. data/lib/puppet/parser/ast/casestatement.rb +23 -32
  132. data/lib/puppet/parser/ast/collection.rb +19 -80
  133. data/lib/puppet/parser/ast/collexpr.rb +81 -0
  134. data/lib/puppet/parser/ast/component.rb +160 -89
  135. data/lib/puppet/parser/ast/else.rb +30 -0
  136. data/lib/puppet/parser/ast/function.rb +9 -2
  137. data/lib/puppet/parser/ast/hostclass.rb +47 -131
  138. data/lib/puppet/parser/ast/ifstatement.rb +43 -0
  139. data/lib/puppet/parser/ast/leaf.rb +10 -21
  140. data/lib/puppet/parser/ast/node.rb +32 -79
  141. data/lib/puppet/parser/ast/resourcedef.rb +222 -0
  142. data/lib/puppet/parser/ast/{typedefaults.rb → resourcedefaults.rb} +10 -16
  143. data/lib/puppet/parser/ast/resourceoverride.rb +62 -0
  144. data/lib/puppet/parser/ast/{objectparam.rb → resourceparam.rb} +12 -6
  145. data/lib/puppet/parser/ast/resourceref.rb +44 -0
  146. data/lib/puppet/parser/ast/selector.rb +16 -8
  147. data/lib/puppet/parser/ast/tag.rb +3 -1
  148. data/lib/puppet/parser/ast/vardef.rb +8 -12
  149. data/lib/puppet/parser/collector.rb +181 -0
  150. data/lib/puppet/parser/functions.rb +191 -36
  151. data/lib/puppet/parser/interpreter.rb +802 -380
  152. data/lib/puppet/parser/lexer.rb +86 -19
  153. data/lib/puppet/parser/parser.rb +1123 -960
  154. data/lib/puppet/parser/resource.rb +353 -0
  155. data/lib/puppet/parser/resource/param.rb +57 -0
  156. data/lib/puppet/parser/resource/reference.rb +71 -0
  157. data/lib/puppet/parser/scope.rb +573 -1000
  158. data/lib/puppet/parser/templatewrapper.rb +54 -0
  159. data/lib/puppet/pgraph.rb +208 -0
  160. data/lib/puppet/propertychange.rb +143 -0
  161. data/lib/puppet/provider.rb +302 -0
  162. data/lib/puppet/provider/cron/crontab.rb +187 -0
  163. data/lib/puppet/provider/group/groupadd.rb +29 -0
  164. data/lib/puppet/provider/group/netinfo.rb +12 -0
  165. data/lib/puppet/provider/group/pw.rb +31 -0
  166. data/lib/puppet/provider/host/netinfo.rb +18 -0
  167. data/lib/puppet/provider/host/parsed.rb +73 -0
  168. data/lib/puppet/provider/mount.rb +57 -0
  169. data/lib/puppet/provider/mount/netinfo.rb +38 -0
  170. data/lib/puppet/provider/mount/parsed.rb +37 -0
  171. data/lib/puppet/provider/nameservice.rb +344 -0
  172. data/lib/puppet/provider/nameservice/netinfo.rb +210 -0
  173. data/lib/puppet/provider/nameservice/objectadd.rb +45 -0
  174. data/lib/puppet/provider/nameservice/pw.rb +22 -0
  175. data/lib/puppet/provider/package/apple.rb +53 -0
  176. data/lib/puppet/provider/package/apt.rb +119 -0
  177. data/lib/puppet/provider/package/aptitude.rb +30 -0
  178. data/lib/puppet/provider/package/aptrpm.rb +79 -0
  179. data/lib/puppet/provider/package/blastwave.rb +114 -0
  180. data/lib/puppet/provider/package/darwinport.rb +88 -0
  181. data/lib/puppet/provider/package/dpkg.rb +109 -0
  182. data/lib/puppet/provider/package/freebsd.rb +43 -0
  183. data/lib/puppet/provider/package/gem.rb +104 -0
  184. data/lib/puppet/provider/package/openbsd.rb +93 -0
  185. data/lib/puppet/provider/package/pkgdmg.rb +119 -0
  186. data/lib/puppet/provider/package/portage.rb +112 -0
  187. data/lib/puppet/provider/package/ports.rb +94 -0
  188. data/lib/puppet/provider/package/rpm.rb +125 -0
  189. data/lib/puppet/provider/package/rug.rb +53 -0
  190. data/lib/puppet/provider/package/sun.rb +168 -0
  191. data/lib/puppet/provider/package/sunfreeware.rb +9 -0
  192. data/lib/puppet/provider/package/up2date.rb +45 -0
  193. data/lib/puppet/provider/package/yum.rb +54 -0
  194. data/lib/puppet/provider/parsedfile.rb +342 -0
  195. data/lib/puppet/provider/port/parsed.rb +174 -0
  196. data/lib/puppet/provider/service/base.rb +136 -0
  197. data/lib/puppet/provider/service/debian.rb +32 -0
  198. data/lib/puppet/provider/service/gentoo.rb +49 -0
  199. data/lib/puppet/{type → provider}/service/init.rb +42 -40
  200. data/lib/puppet/provider/service/redhat.rb +59 -0
  201. data/lib/puppet/{type → provider}/service/smf.rb +24 -13
  202. data/lib/puppet/provider/sshkey/parsed.rb +36 -0
  203. data/lib/puppet/provider/user/netinfo.rb +106 -0
  204. data/lib/puppet/provider/user/pw.rb +41 -0
  205. data/lib/puppet/provider/user/useradd.rb +67 -0
  206. data/lib/puppet/provider/zone/solaris.rb +208 -0
  207. data/lib/puppet/rails.rb +102 -66
  208. data/lib/puppet/rails/database/001_add_indexes.rb +38 -0
  209. data/lib/puppet/rails/database/schema.rb +89 -0
  210. data/lib/puppet/rails/external/tagging/acts_as_taggable.rb +62 -0
  211. data/lib/puppet/rails/external/tagging/init.rb +5 -0
  212. data/lib/puppet/rails/external/tagging/tag.rb +50 -0
  213. data/lib/puppet/rails/external/tagging/tagging.rb +12 -0
  214. data/lib/puppet/rails/fact_name.rb +7 -0
  215. data/lib/puppet/rails/fact_value.rb +5 -0
  216. data/lib/puppet/rails/host.rb +95 -46
  217. data/lib/puppet/rails/param_name.rb +28 -0
  218. data/lib/puppet/rails/param_value.rb +5 -0
  219. data/lib/puppet/rails/puppet_class.rb +9 -0
  220. data/lib/puppet/rails/resource.rb +95 -0
  221. data/lib/puppet/rails/source_file.rb +5 -0
  222. data/lib/puppet/relationship.rb +63 -0
  223. data/lib/puppet/reports/log.rb +14 -0
  224. data/lib/puppet/reports/rrdgraph.rb +114 -10
  225. data/lib/puppet/reports/store.rb +64 -0
  226. data/lib/puppet/reports/tagmail.rb +144 -71
  227. data/lib/puppet/sslcertificates.rb +38 -5
  228. data/lib/puppet/sslcertificates/ca.rb +142 -37
  229. data/lib/puppet/sslcertificates/certificate.rb +3 -3
  230. data/lib/puppet/sslcertificates/inventory.rb +53 -0
  231. data/lib/puppet/sslcertificates/support.rb +128 -0
  232. data/lib/puppet/transaction.rb +568 -189
  233. data/lib/puppet/transaction/report.rb +14 -3
  234. data/lib/puppet/transportable.rb +18 -10
  235. data/lib/puppet/type.rb +279 -2299
  236. data/lib/puppet/type/component.rb +63 -63
  237. data/lib/puppet/type/cron.rb +294 -710
  238. data/lib/puppet/type/exec.rb +185 -129
  239. data/lib/puppet/type/group.rb +38 -89
  240. data/lib/puppet/type/host.rb +110 -0
  241. data/lib/puppet/type/mount.rb +189 -0
  242. data/lib/puppet/type/notify.rb +47 -0
  243. data/lib/puppet/type/package.rb +129 -257
  244. data/lib/puppet/type/parsedtype.rb +172 -297
  245. data/lib/puppet/type/pfile.rb +540 -319
  246. data/lib/puppet/type/pfile/checksum.rb +103 -76
  247. data/lib/puppet/type/pfile/content.rb +16 -10
  248. data/lib/puppet/type/pfile/ensure.rb +52 -34
  249. data/lib/puppet/type/pfile/group.rb +25 -18
  250. data/lib/puppet/type/pfile/mode.rb +7 -4
  251. data/lib/puppet/type/pfile/{uid.rb → owner.rb} +21 -17
  252. data/lib/puppet/type/pfile/source.rb +119 -124
  253. data/lib/puppet/type/pfile/target.rb +29 -45
  254. data/lib/puppet/type/pfile/type.rb +2 -2
  255. data/lib/puppet/type/pfilebucket.rb +18 -14
  256. data/lib/puppet/type/port.rb +121 -0
  257. data/lib/puppet/type/property.rb +530 -0
  258. data/lib/puppet/type/resources.rb +150 -0
  259. data/lib/puppet/type/schedule.rb +38 -22
  260. data/lib/puppet/type/service.rb +70 -326
  261. data/lib/puppet/type/sshkey.rb +76 -0
  262. data/lib/puppet/type/tidy.rb +197 -97
  263. data/lib/puppet/type/user.rb +107 -183
  264. data/lib/puppet/type/yumrepo.rb +53 -34
  265. data/lib/puppet/type/zone.rb +55 -208
  266. data/lib/puppet/util.rb +239 -201
  267. data/lib/puppet/util/autoload.rb +107 -0
  268. data/lib/puppet/util/classgen.rb +208 -0
  269. data/lib/puppet/{config.rb → util/config.rb} +102 -54
  270. data/lib/puppet/util/docs.rb +104 -0
  271. data/lib/puppet/util/errors.rb +55 -0
  272. data/lib/puppet/util/execution.rb +22 -0
  273. data/lib/puppet/util/feature.rb +76 -0
  274. data/lib/puppet/util/fileparsing.rb +380 -0
  275. data/lib/puppet/util/filetype.rb +300 -0
  276. data/lib/puppet/util/graph.rb +39 -0
  277. data/lib/puppet/util/inifile.rb +209 -0
  278. data/lib/puppet/util/loadedfile.rb +71 -0
  279. data/lib/puppet/util/log.rb +549 -0
  280. data/lib/puppet/util/logging.rb +20 -0
  281. data/lib/puppet/util/metaid.rb +22 -0
  282. data/lib/puppet/util/methodhelper.rb +37 -0
  283. data/lib/puppet/util/metric.rb +160 -0
  284. data/lib/puppet/util/package.rb +31 -0
  285. data/lib/puppet/util/pidlock.rb +68 -0
  286. data/lib/puppet/util/plist.rb +24 -0
  287. data/lib/puppet/util/plist/generator.rb +226 -0
  288. data/lib/puppet/util/plist/parser.rb +227 -0
  289. data/lib/puppet/util/posix.rb +87 -0
  290. data/lib/puppet/util/provider_features.rb +170 -0
  291. data/lib/puppet/util/rails/collection_merger.rb +42 -0
  292. data/lib/puppet/util/storage.rb +103 -0
  293. data/lib/puppet/util/subclass_loader.rb +83 -0
  294. data/lib/puppet/util/suidmanager.rb +86 -0
  295. data/lib/puppet/util/variables.rb +39 -0
  296. data/lib/puppet/util/warnings.rb +15 -0
  297. data/test/Rakefile +97 -0
  298. data/test/certmgr/ca.rb +81 -0
  299. data/test/certmgr/certmgr.rb +77 -50
  300. data/test/certmgr/inventory.rb +79 -0
  301. data/test/certmgr/support.rb +81 -0
  302. data/test/executables/filebucket.rb +49 -0
  303. data/test/executables/puppetbin.rb +28 -12
  304. data/test/executables/puppetca.rb +75 -54
  305. data/test/executables/puppetd.rb +10 -13
  306. data/test/executables/puppetmasterd.rb +12 -17
  307. data/test/executables/puppetmodule.rb +18 -17
  308. data/test/language/ast.rb +242 -798
  309. data/test/language/ast/casestatement.rb +104 -0
  310. data/test/language/ast/component.rb +133 -0
  311. data/test/language/ast/hostclass.rb +162 -0
  312. data/test/language/ast/selector.rb +62 -0
  313. data/test/language/ast/variable.rb +31 -0
  314. data/test/language/collector.rb +369 -0
  315. data/test/language/functions.rb +305 -18
  316. data/test/language/interpreter.rb +894 -125
  317. data/test/language/lexer.rb +98 -12
  318. data/test/language/node.rb +37 -53
  319. data/test/language/parser.rb +455 -148
  320. data/test/language/resource.rb +535 -0
  321. data/test/language/scope.rb +451 -561
  322. data/test/language/snippets.rb +101 -111
  323. data/test/language/transportable.rb +6 -8
  324. data/test/lib/mocha.rb +19 -0
  325. data/test/lib/mocha/any_instance_method.rb +35 -0
  326. data/test/lib/mocha/auto_verify.rb +113 -0
  327. data/test/lib/mocha/central.rb +35 -0
  328. data/test/lib/mocha/class_method.rb +62 -0
  329. data/test/lib/mocha/expectation.rb +295 -0
  330. data/test/lib/mocha/expectation_error.rb +6 -0
  331. data/test/lib/mocha/infinite_range.rb +27 -0
  332. data/test/lib/mocha/inspect.rb +37 -0
  333. data/test/lib/mocha/instance_method.rb +8 -0
  334. data/test/lib/mocha/metaclass.rb +7 -0
  335. data/test/lib/mocha/mock.rb +20 -0
  336. data/test/lib/mocha/mock_methods.rb +122 -0
  337. data/test/lib/mocha/object.rb +100 -0
  338. data/test/lib/mocha/pretty_parameters.rb +28 -0
  339. data/test/lib/mocha/setup_and_teardown.rb +23 -0
  340. data/test/lib/mocha/standalone.rb +30 -0
  341. data/test/lib/mocha/test_case_adapter.rb +49 -0
  342. data/test/lib/mocha_standalone.rb +2 -0
  343. data/test/lib/puppettest.rb +294 -0
  344. data/test/lib/puppettest/certificates.rb +61 -0
  345. data/test/lib/puppettest/exetest.rb +123 -0
  346. data/test/lib/puppettest/fakes.rb +194 -0
  347. data/test/lib/puppettest/fileparsing.rb +33 -0
  348. data/test/lib/puppettest/filetesting.rb +231 -0
  349. data/test/lib/puppettest/graph.rb +41 -0
  350. data/test/lib/puppettest/parsertesting.rb +392 -0
  351. data/test/lib/puppettest/railstesting.rb +56 -0
  352. data/test/lib/puppettest/reporttesting.rb +19 -0
  353. data/test/lib/puppettest/resourcetesting.rb +73 -0
  354. data/test/lib/puppettest/servertest.rb +72 -0
  355. data/test/lib/puppettest/support.rb +8 -0
  356. data/test/lib/puppettest/support/assertions.rb +101 -0
  357. data/test/lib/puppettest/support/helpers.rb +23 -0
  358. data/test/lib/puppettest/support/resources.rb +37 -0
  359. data/test/lib/puppettest/support/utils.rb +160 -0
  360. data/test/lib/puppettest/testcase.rb +48 -0
  361. data/test/lib/rake/puppet_test_loader.rb +17 -0
  362. data/test/lib/rake/puppet_testtask.rb +17 -0
  363. data/test/lib/spec.rb +8 -0
  364. data/test/lib/spec/callback.rb +11 -0
  365. data/test/lib/spec/callback/callback_container.rb +60 -0
  366. data/test/lib/spec/callback/extensions/module.rb +24 -0
  367. data/test/lib/spec/callback/extensions/object.rb +37 -0
  368. data/test/lib/spec/deprecated.rb +3 -0
  369. data/test/lib/spec/expectations.rb +59 -0
  370. data/test/lib/spec/expectations/differs/default.rb +62 -0
  371. data/test/lib/spec/expectations/errors.rb +6 -0
  372. data/test/lib/spec/expectations/extensions.rb +3 -0
  373. data/test/lib/spec/expectations/extensions/object.rb +109 -0
  374. data/test/lib/spec/expectations/extensions/proc.rb +57 -0
  375. data/test/lib/spec/expectations/extensions/string_and_symbol.rb +17 -0
  376. data/test/lib/spec/expectations/handler.rb +47 -0
  377. data/test/lib/spec/expectations/should.rb +5 -0
  378. data/test/lib/spec/expectations/should/base.rb +64 -0
  379. data/test/lib/spec/expectations/should/change.rb +69 -0
  380. data/test/lib/spec/expectations/should/have.rb +128 -0
  381. data/test/lib/spec/expectations/should/not.rb +74 -0
  382. data/test/lib/spec/expectations/should/should.rb +81 -0
  383. data/test/lib/spec/expectations/sugar.rb +47 -0
  384. data/test/lib/spec/matchers.rb +160 -0
  385. data/test/lib/spec/matchers/be.rb +161 -0
  386. data/test/lib/spec/matchers/be_close.rb +37 -0
  387. data/test/lib/spec/matchers/change.rb +120 -0
  388. data/test/lib/spec/matchers/eql.rb +43 -0
  389. data/test/lib/spec/matchers/equal.rb +43 -0
  390. data/test/lib/spec/matchers/has.rb +44 -0
  391. data/test/lib/spec/matchers/have.rb +140 -0
  392. data/test/lib/spec/matchers/include.rb +50 -0
  393. data/test/lib/spec/matchers/match.rb +41 -0
  394. data/test/lib/spec/matchers/raise_error.rb +100 -0
  395. data/test/lib/spec/matchers/respond_to.rb +35 -0
  396. data/test/lib/spec/matchers/satisfy.rb +47 -0
  397. data/test/lib/spec/matchers/throw_symbol.rb +75 -0
  398. data/test/lib/spec/mocks.rb +232 -0
  399. data/test/lib/spec/mocks/argument_expectation.rb +132 -0
  400. data/test/lib/spec/mocks/error_generator.rb +85 -0
  401. data/test/lib/spec/mocks/errors.rb +10 -0
  402. data/test/lib/spec/mocks/extensions/object.rb +3 -0
  403. data/test/lib/spec/mocks/message_expectation.rb +231 -0
  404. data/test/lib/spec/mocks/methods.rb +40 -0
  405. data/test/lib/spec/mocks/mock.rb +26 -0
  406. data/test/lib/spec/mocks/mock_handler.rb +166 -0
  407. data/test/lib/spec/mocks/order_group.rb +29 -0
  408. data/test/lib/spec/rake/spectask.rb +173 -0
  409. data/test/lib/spec/rake/verify_rcov.rb +47 -0
  410. data/test/lib/spec/runner.rb +132 -0
  411. data/test/lib/spec/runner/backtrace_tweaker.rb +55 -0
  412. data/test/lib/spec/runner/command_line.rb +34 -0
  413. data/test/lib/spec/runner/context.rb +154 -0
  414. data/test/lib/spec/runner/context_eval.rb +142 -0
  415. data/test/lib/spec/runner/context_runner.rb +55 -0
  416. data/test/lib/spec/runner/drb_command_line.rb +21 -0
  417. data/test/lib/spec/runner/execution_context.rb +17 -0
  418. data/test/lib/spec/runner/extensions/kernel.rb +17 -0
  419. data/test/lib/spec/runner/extensions/object.rb +32 -0
  420. data/test/lib/spec/runner/formatter.rb +5 -0
  421. data/test/lib/spec/runner/formatter/base_text_formatter.rb +118 -0
  422. data/test/lib/spec/runner/formatter/html_formatter.rb +219 -0
  423. data/test/lib/spec/runner/formatter/progress_bar_formatter.rb +27 -0
  424. data/test/lib/spec/runner/formatter/rdoc_formatter.rb +22 -0
  425. data/test/lib/spec/runner/formatter/specdoc_formatter.rb +23 -0
  426. data/test/lib/spec/runner/heckle_runner.rb +71 -0
  427. data/test/lib/spec/runner/heckle_runner_win.rb +10 -0
  428. data/test/lib/spec/runner/option_parser.rb +224 -0
  429. data/test/lib/spec/runner/reporter.rb +105 -0
  430. data/test/lib/spec/runner/spec_matcher.rb +25 -0
  431. data/test/lib/spec/runner/spec_parser.rb +41 -0
  432. data/test/lib/spec/runner/spec_should_raise_handler.rb +74 -0
  433. data/test/lib/spec/runner/specification.rb +114 -0
  434. data/test/lib/spec/translator.rb +87 -0
  435. data/test/lib/spec/version.rb +30 -0
  436. data/test/lib/stubba.rb +2 -0
  437. data/test/network/authconfig.rb +72 -0
  438. data/test/network/authorization.rb +138 -0
  439. data/test/network/authstore.rb +450 -0
  440. data/test/network/client/ca.rb +38 -0
  441. data/test/{client → network/client}/client.rb +107 -24
  442. data/test/network/client/dipper.rb +35 -0
  443. data/test/network/client/master.rb +627 -0
  444. data/test/{client/pelement.rb → network/client/resource.rb} +13 -29
  445. data/test/network/client_request.rb +39 -0
  446. data/test/network/daemon.rb +71 -0
  447. data/test/{server → network/handler}/bucket.rb +103 -27
  448. data/test/{server → network/handler}/ca.rb +14 -19
  449. data/test/{server → network/handler}/fileserver.rb +443 -68
  450. data/test/network/handler/handler.rb +64 -0
  451. data/test/{server → network/handler}/logger.rb +26 -26
  452. data/test/network/handler/master.rb +352 -0
  453. data/test/network/handler/report.rb +185 -0
  454. data/test/{server/pelement.rb → network/handler/resource.rb} +25 -38
  455. data/test/{server → network/handler}/runner.rb +17 -16
  456. data/test/network/rights.rb +38 -0
  457. data/test/network/server/webrick.rb +140 -0
  458. data/test/network/xmlrpc/client.rb +68 -0
  459. data/test/network/xmlrpc/processor.rb +80 -0
  460. data/test/network/xmlrpc/server.rb +28 -0
  461. data/test/network/xmlrpc/webrick_servlet.rb +26 -0
  462. data/test/other/dsl.rb +218 -0
  463. data/test/other/events.rb +22 -15
  464. data/test/other/overrides.rb +9 -14
  465. data/test/other/pgraph.rb +289 -0
  466. data/test/other/propertychange.rb +142 -0
  467. data/test/other/provider.rb +162 -0
  468. data/test/other/puppet.rb +63 -10
  469. data/test/other/relationship.rb +74 -0
  470. data/test/other/relationships.rb +199 -123
  471. data/test/other/report.rb +152 -23
  472. data/test/other/transactions.rb +824 -78
  473. data/test/puppet/conffiles.rb +16 -11
  474. data/test/puppet/defaults.rb +7 -10
  475. data/test/puppet/{error.rb → errortest.rb} +5 -8
  476. data/test/puppet/modules.rb +58 -0
  477. data/test/puppet/tc_suidmanager.rb +107 -0
  478. data/test/rails/host.rb +177 -0
  479. data/test/rails/rails.rb +27 -0
  480. data/test/rails/railsparameter.rb +62 -0
  481. data/test/rails/railsresource.rb +100 -0
  482. data/test/ral/manager/attributes.rb +296 -0
  483. data/test/ral/manager/manager.rb +55 -0
  484. data/test/ral/manager/provider.rb +54 -0
  485. data/test/ral/manager/type.rb +837 -0
  486. data/test/ral/providers/cron/crontab.rb +346 -0
  487. data/test/ral/providers/group.rb +252 -0
  488. data/test/ral/providers/host/netinfo.rb +58 -0
  489. data/test/ral/providers/host/parsed.rb +226 -0
  490. data/test/ral/providers/mount/netinfo.rb +80 -0
  491. data/test/ral/providers/mount/parsed.rb +223 -0
  492. data/test/ral/providers/nameservice.rb +33 -0
  493. data/test/ral/providers/package.rb +253 -0
  494. data/test/ral/providers/package/apt.rb +89 -0
  495. data/test/ral/providers/package/aptitude.rb +69 -0
  496. data/test/ral/providers/package/aptrpm.rb +89 -0
  497. data/test/ral/providers/package/dpkg.rb +64 -0
  498. data/test/ral/providers/parsedfile.rb +668 -0
  499. data/test/ral/providers/parsedport.rb +233 -0
  500. data/test/ral/providers/provider.rb +423 -0
  501. data/test/{types → ral/providers}/service.rb +20 -121
  502. data/test/ral/providers/service/base.rb +75 -0
  503. data/test/ral/providers/sshkey/parsed.rb +111 -0
  504. data/test/ral/providers/user.rb +567 -0
  505. data/test/ral/providers/user/useradd.rb +250 -0
  506. data/test/ral/types/basic.rb +90 -0
  507. data/test/ral/types/component.rb +113 -0
  508. data/test/ral/types/cron.rb +480 -0
  509. data/test/{types → ral/types}/exec.rb +278 -82
  510. data/test/ral/types/file.rb +1799 -0
  511. data/test/ral/types/file/target.rb +363 -0
  512. data/test/{types → ral/types}/filebucket.rb +15 -17
  513. data/test/{types → ral/types}/fileignoresource.rb +9 -15
  514. data/test/ral/types/filesources.rb +1046 -0
  515. data/test/ral/types/group.rb +169 -0
  516. data/test/ral/types/host.rb +155 -0
  517. data/test/ral/types/mount.rb +312 -0
  518. data/test/ral/types/package.rb +85 -0
  519. data/test/ral/types/parameter.rb +172 -0
  520. data/test/ral/types/port.rb +148 -0
  521. data/test/ral/types/property.rb +343 -0
  522. data/test/ral/types/resources.rb +221 -0
  523. data/test/{types → ral/types}/schedule.rb +34 -12
  524. data/test/ral/types/service.rb +37 -0
  525. data/test/{types → ral/types}/sshkey.rb +75 -65
  526. data/test/ral/types/tidy.rb +240 -0
  527. data/test/ral/types/user.rb +493 -0
  528. data/test/{types → ral/types}/yumrepo.rb +7 -11
  529. data/test/{types → ral/types}/zone.rb +45 -45
  530. data/test/tagging/tagging.rb +17 -26
  531. data/test/util/autoload.rb +130 -0
  532. data/test/util/classgen.rb +227 -0
  533. data/test/{other → util}/config.rb +373 -113
  534. data/test/util/execution.rb +34 -0
  535. data/test/util/features.rb +94 -0
  536. data/test/util/fileparsing.rb +677 -0
  537. data/test/{other → util}/filetype.rb +9 -12
  538. data/test/util/graph.rb +108 -0
  539. data/test/{other → util}/inifile.rb +24 -11
  540. data/test/util/loadedfile.rb +106 -0
  541. data/test/{other → util}/log.rb +96 -50
  542. data/test/{other → util}/metrics.rb +7 -17
  543. data/test/util/package.rb +27 -0
  544. data/test/util/pidlock.rb +126 -0
  545. data/test/util/posixtest.rb +173 -0
  546. data/test/util/storage.rb +123 -0
  547. data/test/util/subclass_loader.rb +100 -0
  548. data/test/util/utiltest.rb +368 -0
  549. metadata +449 -169
  550. data/examples/code/classing +0 -35
  551. data/examples/code/failers/badclassnoparam +0 -10
  552. data/examples/code/failers/badclassparam +0 -10
  553. data/examples/code/failers/badcompnoparam +0 -9
  554. data/examples/code/failers/badcompparam +0 -9
  555. data/examples/code/failers/badtypeparam +0 -3
  556. data/examples/code/failers/noobjectrvalue +0 -1
  557. data/examples/code/snippets/aliastest.pp +0 -16
  558. data/examples/code/snippets/argumentdefaults +0 -14
  559. data/examples/code/snippets/casestatement.pp +0 -58
  560. data/examples/code/snippets/classheirarchy.pp +0 -15
  561. data/examples/code/snippets/classincludes.pp +0 -17
  562. data/examples/code/snippets/classpathtest +0 -11
  563. data/examples/code/snippets/componentmetaparams.pp +0 -11
  564. data/examples/code/snippets/deepclassheirarchy.pp +0 -23
  565. data/examples/code/snippets/defineoverrides.pp +0 -17
  566. data/examples/code/snippets/dirchmod +0 -19
  567. data/examples/code/snippets/emptyclass.pp +0 -9
  568. data/examples/code/snippets/emptyexec.pp +0 -3
  569. data/examples/code/snippets/failmissingexecpath.pp +0 -13
  570. data/examples/code/snippets/falsevalues.pp +0 -3
  571. data/examples/code/snippets/filecreate +0 -11
  572. data/examples/code/snippets/implicititeration +0 -15
  573. data/examples/code/snippets/multipleinstances +0 -7
  574. data/examples/code/snippets/namevartest +0 -9
  575. data/examples/code/snippets/scopetest +0 -13
  576. data/examples/code/snippets/selectorvalues.pp +0 -42
  577. data/examples/code/snippets/simpledefaults +0 -5
  578. data/examples/code/snippets/simpleselector +0 -38
  579. data/examples/code/snippets/singleary.pp +0 -19
  580. data/examples/code/snippets/singlequote.pp +0 -11
  581. data/examples/code/snippets/singleselector.pp +0 -22
  582. data/examples/code/snippets/tag.pp +0 -9
  583. data/examples/code/snippets/tagged.pp +0 -35
  584. data/lib/puppet/client.rb +0 -177
  585. data/lib/puppet/client/ca.rb +0 -21
  586. data/lib/puppet/client/dipper.rb +0 -76
  587. data/lib/puppet/client/file.rb +0 -20
  588. data/lib/puppet/client/log.rb +0 -17
  589. data/lib/puppet/client/master.rb +0 -531
  590. data/lib/puppet/client/runner.rb +0 -17
  591. data/lib/puppet/client/status.rb +0 -7
  592. data/lib/puppet/event-loop.rb +0 -1
  593. data/lib/puppet/filetype.rb +0 -308
  594. data/lib/puppet/inifile.rb +0 -201
  595. data/lib/puppet/log.rb +0 -524
  596. data/lib/puppet/metric.rb +0 -132
  597. data/lib/puppet/networkclient.rb +0 -175
  598. data/lib/puppet/parsedfile.rb +0 -58
  599. data/lib/puppet/parser/ast/classdef.rb +0 -79
  600. data/lib/puppet/parser/ast/compdef.rb +0 -75
  601. data/lib/puppet/parser/ast/nodedef.rb +0 -73
  602. data/lib/puppet/parser/ast/objectdef.rb +0 -284
  603. data/lib/puppet/parser/ast/objectref.rb +0 -77
  604. data/lib/puppet/rails/database.rb +0 -40
  605. data/lib/puppet/rails/rails_object.rb +0 -42
  606. data/lib/puppet/rails/rails_parameter.rb +0 -5
  607. data/lib/puppet/server.rb +0 -196
  608. data/lib/puppet/server/authconfig.rb +0 -177
  609. data/lib/puppet/server/authstore.rb +0 -226
  610. data/lib/puppet/server/filebucket.rb +0 -155
  611. data/lib/puppet/server/pelement.rb +0 -188
  612. data/lib/puppet/server/report.rb +0 -184
  613. data/lib/puppet/server/rights.rb +0 -78
  614. data/lib/puppet/server/servlet.rb +0 -274
  615. data/lib/puppet/statechange.rb +0 -129
  616. data/lib/puppet/storage.rb +0 -98
  617. data/lib/puppet/type/nameservice.rb +0 -264
  618. data/lib/puppet/type/nameservice/netinfo.rb +0 -232
  619. data/lib/puppet/type/nameservice/objectadd.rb +0 -146
  620. data/lib/puppet/type/nameservice/posix.rb +0 -12
  621. data/lib/puppet/type/nameservice/pw.rb +0 -107
  622. data/lib/puppet/type/package/apple.rb +0 -41
  623. data/lib/puppet/type/package/apt.rb +0 -107
  624. data/lib/puppet/type/package/blastwave.rb +0 -136
  625. data/lib/puppet/type/package/darwinport.rb +0 -97
  626. data/lib/puppet/type/package/dpkg.rb +0 -113
  627. data/lib/puppet/type/package/freebsd.rb +0 -19
  628. data/lib/puppet/type/package/gem.rb +0 -119
  629. data/lib/puppet/type/package/openbsd.rb +0 -112
  630. data/lib/puppet/type/package/ports.rb +0 -103
  631. data/lib/puppet/type/package/rpm.rb +0 -121
  632. data/lib/puppet/type/package/sun.rb +0 -174
  633. data/lib/puppet/type/package/sunfreeware.rb +0 -7
  634. data/lib/puppet/type/package/yum.rb +0 -52
  635. data/lib/puppet/type/parsedtype/host.rb +0 -144
  636. data/lib/puppet/type/parsedtype/mount.rb +0 -271
  637. data/lib/puppet/type/parsedtype/port.rb +0 -261
  638. data/lib/puppet/type/parsedtype/sshkey.rb +0 -123
  639. data/lib/puppet/type/service/base.rb +0 -12
  640. data/lib/puppet/type/service/debian.rb +0 -46
  641. data/lib/puppet/type/service/redhat.rb +0 -38
  642. data/lib/puppet/type/state.rb +0 -393
  643. data/lib/puppet/type/symlink.rb +0 -186
  644. data/test/client/master.rb +0 -207
  645. data/test/language/rails.rb +0 -105
  646. data/test/other/parsedfile.rb +0 -58
  647. data/test/other/storage.rb +0 -100
  648. data/test/puppet/utiltest.rb +0 -299
  649. data/test/puppettest.rb +0 -1170
  650. data/test/server/authconfig.rb +0 -56
  651. data/test/server/authstore.rb +0 -218
  652. data/test/server/master.rb +0 -201
  653. data/test/server/report.rb +0 -93
  654. data/test/server/rights.rb +0 -41
  655. data/test/server/server.rb +0 -152
  656. data/test/test +0 -61
  657. data/test/types/basic.rb +0 -117
  658. data/test/types/component.rb +0 -298
  659. data/test/types/cron.rb +0 -718
  660. data/test/types/file.rb +0 -1314
  661. data/test/types/filesources.rb +0 -590
  662. data/test/types/group.rb +0 -323
  663. data/test/types/host.rb +0 -186
  664. data/test/types/mount.rb +0 -294
  665. data/test/types/package.rb +0 -538
  666. data/test/types/parameter.rb +0 -107
  667. data/test/types/port.rb +0 -201
  668. data/test/types/query.rb +0 -101
  669. data/test/types/state.rb +0 -92
  670. data/test/types/symlink.rb +0 -120
  671. data/test/types/tidy.rb +0 -102
  672. data/test/types/type.rb +0 -469
  673. data/test/types/user.rb +0 -563
@@ -0,0 +1,47 @@
1
+ #
2
+ # Simple module for logging messages on the client-side
3
+ #
4
+
5
+ module Puppet
6
+ newtype(:notify) do
7
+ @doc = "Sends an arbitrary message to the puppetd run-time log."
8
+
9
+ newproperty(:message) do
10
+ desc "The message to be sent to the log."
11
+ def sync
12
+ case @parent["withpath"]
13
+ when :true:
14
+ log(self.should)
15
+ else
16
+ Puppet.send(@parent[:loglevel], self.should)
17
+ end
18
+ return
19
+ end
20
+
21
+ def retrieve
22
+ return
23
+ end
24
+
25
+ def insync?
26
+ false
27
+ end
28
+
29
+ defaultto { @parent[:name] }
30
+ end
31
+
32
+ newparam(:withpath) do
33
+ desc "Whether to not to show the full object path. Sends the
34
+ message at the current loglevel."
35
+ defaultto :false
36
+
37
+ newvalues(:true, :false)
38
+ end
39
+
40
+ newparam(:name) do
41
+ desc "An arbitrary tag for your own reference; the name of the message."
42
+ isnamevar
43
+ end
44
+ end
45
+ end
46
+
47
+ # $Id: notify.rb 2317 2007-03-19 17:42:17Z luke $
@@ -3,7 +3,7 @@
3
3
  # This allows packages to exist on the same machine using different packaging
4
4
  # systems.
5
5
 
6
- require 'puppet/type/state'
6
+ require 'puppet/type/property'
7
7
 
8
8
  module Puppet
9
9
  class PackageError < Puppet::Error; end
@@ -17,124 +17,62 @@ module Puppet
17
17
 
18
18
  Puppet will automatically guess the packaging format that you are
19
19
  using based on the platform you are on, but you can override it
20
- using the ``type`` parameter; obviously, if you specify that you
21
- want to use ``rpm`` then the ``rpm`` tools must be available."
22
-
23
- # Create a new packaging type
24
- def self.newpkgtype(name, parent = nil, &block)
25
- @pkgtypes ||= {}
26
-
27
- if @pkgtypes.include?(name)
28
- raise Puppet::DevError, "Package type %s already defined" % name
29
- end
30
-
31
- mod = Module.new
32
- const_set("PkgType" + name.to_s.capitalize,mod)
33
-
34
- # Add our parent, if it exists
35
- if parent
36
- unless parenttype = pkgtype(parent)
37
- raise Puppet::DevError,
38
- "No parent type %s for package type %s" %
39
- [parent, name]
40
- end
41
- mod.send(:include, parenttype)
42
- end
43
-
44
- # And now define the support methods
45
- code = %{
46
- def self.name
47
- "#{name}"
48
- end
49
-
50
- def self.to_s
51
- "PkgType(#{name})"
52
- end
53
-
54
- def pkgtype
55
- "#{name}"
56
- end
57
- }
58
-
59
- mod.module_eval(code)
60
-
61
- mod.module_eval(&block)
62
-
63
- class << mod
64
- include Puppet::Util
65
- end
66
-
67
- # It's at least conceivable that a module would not define this method
68
- # "module_function" makes the :list method private, so if the parent
69
- # method also called module_function, then it's already private
70
- if mod.public_method_defined? :list or mod.private_method_defined? :list
71
- mod.send(:module_function, :list)
72
- end
73
-
74
- # Add it to our list
75
- @pkgtypes[name] = mod
76
-
77
- # And mark it as a valid type
78
- unless defined? @typeparam
79
- @typeparam = @parameters.find { |p| p.name == :type }
80
-
81
- unless @typeparam
82
- Puppet.warning @parameters.inspect
83
- raise Puppet::DevError, "Could not package type parameter"
84
- end
85
- end
86
- @typeparam.newvalues(name)
87
- end
88
-
89
- # Autoload the package types, if they're not already defined.
90
- def self.pkgtype(name)
91
- #name = name[0] if name.is_a? Array
92
- name = name.intern if name.is_a? String
93
- @pkgtypes ||= {}
94
- unless @pkgtypes.include? name
95
- begin
96
- require "puppet/type/package/#{name}"
97
-
98
- unless @pkgtypes.include? name
99
- Puppet.warning @pkgtypes.keys
100
- raise Puppet::DevError,
101
- "Loaded %s but pkgtype was not created" % name.inspect
102
- end
103
- rescue LoadError
104
- raise Puppet::Error, "Could not load package type %s" % name
105
- end
106
- end
107
- @pkgtypes[name]
108
- end
109
-
110
- def self.pkgtypes
111
- @pkgtypes.keys
112
- end
20
+ using the ``provider`` parameter; each provider defines what it
21
+ requires in order to function, and you must meet those requirements
22
+ to use a given provider."
23
+
24
+ feature :installable, "The provider can install packages.",
25
+ :methods => [:install]
26
+ feature :uninstallable, "The provider can uninstall packages.",
27
+ :methods => [:uninstall]
28
+ feature :upgradeable, "The provider can upgrade to the latest version of a
29
+ package. This feature is used by specifying ``latest`` as the
30
+ desired value for the package.",
31
+ :methods => [:update, :latest]
32
+ feature :purgeable, "The provider can purge packages. This generally means
33
+ that all traces of the package are removed, including
34
+ existing configuration files. This feature is thus destructive
35
+ and should be used with the utmost care.",
36
+ :methods => [:purge]
113
37
 
114
38
  ensurable do
115
39
  desc "What state the package should be in.
116
40
  *latest* only makes sense for those packaging formats that can
117
41
  retrieve new packages on their own and will throw an error on
118
- those that cannot."
42
+ those that cannot. For those packaging systems that allow you
43
+ to specify package versions, specify them here. Similarly,
44
+ *purged* is only useful for packaging systems that support
45
+ the notion of managing configuration files separately from
46
+ 'normal' system files."
119
47
 
120
48
  attr_accessor :latest
121
49
 
122
- newvalue(:present) do
123
- @parent.install
50
+ newvalue(:present, :event => :package_installed) do
51
+ provider.install
124
52
  end
125
53
 
126
- newvalue(:absent) do
127
- @parent.uninstall
54
+ newvalue(:absent, :event => :package_removed) do
55
+ provider.uninstall
56
+ end
57
+
58
+ newvalue(:purged, :event => :package_purged) do
59
+ unless provider.purgeable?
60
+ self.fail(
61
+ "Package provider %s does not purging" %
62
+ @parent[:provider]
63
+ )
64
+ end
65
+ provider.purge
128
66
  end
129
67
 
130
68
  # Alias the 'present' value.
131
69
  aliasvalue(:installed, :present)
132
70
 
133
71
  newvalue(:latest) do
134
- unless @parent.respond_to?(:latest)
72
+ unless provider.upgradeable?
135
73
  self.fail(
136
- "Package type %s does not support specifying 'latest'" %
137
- @parent[:type]
74
+ "Package provider %s does not support specifying 'latest'" %
75
+ @parent[:provider]
138
76
  )
139
77
  end
140
78
 
@@ -143,18 +81,39 @@ module Puppet
143
81
  # to compare against later.
144
82
  current = self.is
145
83
  begin
146
- @parent.update
84
+ provider.update
147
85
  rescue => detail
148
86
  self.fail "Could not update: %s" % detail
149
87
  end
150
88
 
151
89
  if current == :absent
152
- return :package_created
90
+ :package_installed
153
91
  else
154
- return :package_changed
92
+ :package_changed
155
93
  end
156
94
  end
157
95
 
96
+ newvalue(/./) do
97
+ unless provider.versionable?
98
+ self.fail(
99
+ "Package provider %s does not support specifying versions" %
100
+ @parent[:provider]
101
+ )
102
+ end
103
+ begin
104
+ provider.install
105
+ rescue => detail
106
+ self.fail "Could not update: %s" % detail
107
+ end
108
+
109
+ if self.is == :absent
110
+ :package_installed
111
+ else
112
+ :package_changed
113
+ end
114
+ end
115
+
116
+
158
117
  defaultto :installed
159
118
 
160
119
  # Override the parent method, because we've got all kinds of
@@ -178,10 +137,10 @@ module Puppet
178
137
  return false
179
138
  end
180
139
 
181
- unless @parent.respond_to?(:latest)
140
+ unless provider.respond_to?(:latest)
182
141
  self.fail(
183
142
  "Package type %s does not support specifying 'latest'" %
184
- @parent[:type]
143
+ @parent[:provider]
185
144
  )
186
145
  end
187
146
 
@@ -190,25 +149,23 @@ module Puppet
190
149
  #self.debug "Skipping latest check"
191
150
  else
192
151
  begin
193
- @latest = @parent.latest
152
+ @latest = provider.latest
194
153
  @lateststamp = Time.now.to_i
195
154
  rescue => detail
196
155
  self.fail "Could not get latest version: %s" % detail
197
156
  end
198
157
  end
158
+
199
159
  case @is
200
160
  when @latest:
201
161
  return true
202
162
  when :present:
203
- if @parent[:version] == @latest
204
- return true
205
- else
206
- self.debug "our version is %s and latest is %s" %
207
- [@parent[:version], @latest]
208
- end
163
+ # This will only happen on retarded packaging systems
164
+ # that can't query versions.
165
+ return true
209
166
  else
210
167
  self.debug "@is is %s, latest %s is %s" %
211
- [@is, @parent.name, @latest]
168
+ [@is.inspect, @parent.name, @latest.inspect]
212
169
  end
213
170
  when :absent
214
171
  if @is == :absent
@@ -222,37 +179,27 @@ module Puppet
222
179
  return false
223
180
  end
224
181
 
225
- # This retrieves the current state
182
+ # This retrieves the current state. LAK: I think this method is unused.
226
183
  def retrieve
227
- @parent.retrieve
184
+ @is = @parent.retrieve
228
185
  end
229
186
 
230
- def sync
231
- value = self.should
232
- unless value.is_a?(Symbol)
233
- value = value.intern
234
- end
235
- # If we're a normal value, then just pass to the parent method
236
- if self.class.values.include?(value)
237
- #self.info "setting %s" % value
238
- super
187
+ # Provide a bit more information when logging upgrades.
188
+ def should_to_s
189
+ if @latest
190
+ @latest.to_s
239
191
  else
240
- #self.info "updating from %s" % value
241
- @parent.update
192
+ super
242
193
  end
243
194
  end
244
195
  end
245
196
 
246
- # Packages are complicated because each package format has completely
247
- # different commands.
248
- attr_reader :pkgtype
249
-
250
197
  newparam(:name) do
251
198
  desc "The package name. This is the name that the packaging
252
199
  system uses internally, which is sometimes (especially on Solaris)
253
200
  a name that is basically useless to humans. If you want to
254
201
  abstract package installation, then you can use aliases to provide
255
- a common name to packages:
202
+ a common name to packages::
256
203
 
257
204
  # In the 'openssl' class
258
205
  $ssl = $operationgsystem ? {
@@ -286,34 +233,10 @@ module Puppet
286
233
  isnamevar
287
234
  end
288
235
 
289
- newparam(:type) do
290
- desc "The package format. You will seldom need to specify this --
291
- Puppet will discover the appropriate format for your platform."
292
-
293
- defaultto { @parent.class.default }
294
-
295
-
296
- validate do |value|
297
- value = value[0] if value.is_a? Array
298
- unless @parent.class.pkgtype(value)
299
- raise ArgumentError, "Invalid package type '%s'" % value
300
- end
301
- end
302
-
303
-
304
- munge do |type|
305
- type = type[0] if type.is_a? Array
306
- if type.is_a? String
307
- type = type.intern
308
- end
309
- @parent.type2module(type)
310
- type
311
- end
312
-
313
- end
314
-
315
236
  newparam(:source) do
316
- desc "From where to retrieve the package."
237
+ desc "Where to find the actual package. This must be a local file
238
+ (or on a network file system) or a URL that your specific
239
+ packaging type understands; Puppet will not retrieve files for you."
317
240
 
318
241
  validate do |value|
319
242
  unless value =~ /^#{File::SEPARATOR}/ or value =~ /\w+:\/\//
@@ -330,6 +253,17 @@ module Puppet
330
253
  desc "A read-only parameter set by the package."
331
254
  end
332
255
 
256
+ newparam(:type) do
257
+ desc "Deprecated form of ``provider``."
258
+
259
+ munge do |value|
260
+ warning "'type' is deprecated; use 'provider' instead"
261
+ @parent[:provider] = value
262
+
263
+ @parent[:provider]
264
+ end
265
+ end
266
+
333
267
  newparam(:adminfile) do
334
268
  desc "A file containing package defaults for installing packages.
335
269
  This is currently only used on Solaris. The value will be
@@ -345,24 +279,15 @@ module Puppet
345
279
  generally be a fully qualified path."
346
280
  end
347
281
 
348
- # FIXME Version is screwy -- most package systems can't specify a
349
- # version, but people will definitely want to query versions, so
350
- # it almost seems like versions should be a read-only state,
351
- # supporting syncing only in certain cases.
352
- newparam(:version) do
353
- desc "For some platforms this is a read-only parameter set by the
354
- package, but for others, setting this parameter will cause
355
- the package of that version to be installed. It just depends
356
- on the features of the packaging system."
357
-
358
- # validate do |value|
359
- # unless @parent.respond_to?(:versionable?) and @parent.versionable?
360
- # raise Puppet::Error,
361
- # "Package type %s does not support specifying versions." %
362
- # @parent.pkgtype
363
- # end
364
- # end
282
+ newparam(:configfiles) do
283
+ desc "Whether configfiles should be kept or replaced. Most packages
284
+ types do not support this parameter."
285
+
286
+ defaultto :keep
287
+
288
+ newvalues(:keep, :replace)
365
289
  end
290
+
366
291
  newparam(:category) do
367
292
  desc "A read-only parameter set by the package."
368
293
  end
@@ -406,9 +331,6 @@ module Puppet
406
331
 
407
332
  @allowedmethods = [:types]
408
333
 
409
- @default = nil
410
- @platform = nil
411
-
412
334
  class << self
413
335
  attr_reader :listed
414
336
  end
@@ -418,53 +340,10 @@ module Puppet
418
340
  super
419
341
  end
420
342
 
421
- # Cache and return the default package type for our current
422
- # platform.
423
- def self.default
424
- if @default.nil?
425
- self.init
426
- end
427
-
428
- return @default
429
- end
430
-
431
- # Figure out what the default package type is for the platform
432
- # on which we're running.
433
- def self.init
434
- unless @platform = Facter["operatingsystem"].value.downcase
435
- raise Puppet::DevError.new(
436
- "Must know platform for package management"
437
- )
438
- end
439
- case @platform
440
- when "solaris": @default = :sun
441
- when "gentoo":
442
- Puppet.notice "No support for gentoo yet"
443
- @default = nil
444
- when "debian": @default = :apt
445
- when "centos": @default = :rpm
446
- when "fedora": @default = :yum
447
- when "redhat": @default = :rpm
448
- when "freebsd": @default = :ports
449
- when "openbsd": @default = :openbsd
450
- when "darwin": @default = :apple
451
- else
452
- if Facter["kernel"] == "Linux"
453
- Puppet.warning "Defaulting to RPM for %s" %
454
- Facter["operatingsystem"].value
455
- @default = :rpm
456
- else
457
- Puppet.warning "No default package system for %s" %
458
- Facter["operatingsystem"].value
459
- @default = nil
460
- end
461
- end
462
- end
463
-
464
343
  # Create a new package object from listed information
465
344
  def self.installedpkg(hash)
466
- unless hash.include? :type
467
- raise Puppet::DevError, "Got installed package with no type"
345
+ unless hash.include? :provider
346
+ raise Puppet::DevError, "Got installed package with no provider"
468
347
  end
469
348
  # this is from code, so we don't have to do as much checking
470
349
  name = hash[:name]
@@ -478,7 +357,15 @@ module Puppet
478
357
 
479
358
  # List all package instances
480
359
  def self.list
481
- pkgtype(default).list()
360
+ # XXX For now, just list the default provider, but we should list
361
+ # all suitables or something, but we need to not list a parent
362
+ # type if a child type gets listed.
363
+ #suitableprovider.each do |provider|
364
+ # p provider.name
365
+ # provider.list
366
+ #end
367
+
368
+ defaultprovider.list
482
369
 
483
370
  self.collect do |pkg|
484
371
  pkg
@@ -490,7 +377,7 @@ module Puppet
490
377
  def self.markabsent(pkgtype, packages)
491
378
  # Mark any packages we didn't find as absent
492
379
  self.each do |pkg|
493
- next unless packages[:type] == pkgtype
380
+ next unless packages[:provider] == pkgtype
494
381
  unless packages.include? pkg
495
382
  pkg.is = [:ensure, :absent]
496
383
  end
@@ -499,13 +386,15 @@ module Puppet
499
386
 
500
387
  # This only exists for testing.
501
388
  def clear
502
- @states[:ensure].latest = nil
389
+ if obj = @parameters[:ensure]
390
+ obj.latest = nil
391
+ end
503
392
  end
504
393
 
505
394
  # The 'query' method returns a hash of info if the package
506
395
  # exists and returns nil if it does not.
507
396
  def exists?
508
- self.query
397
+ @provider.query
509
398
  end
510
399
 
511
400
  # okay, there are two ways that a package could be created...
@@ -515,35 +404,29 @@ module Puppet
515
404
  def initialize(hash)
516
405
  self.initvars
517
406
  type = nil
518
- [:type, "type"].each { |label|
407
+ [:provider, "use"].each { |label|
519
408
  if hash.include?(label)
520
409
  type = hash[label]
521
410
  hash.delete(label)
522
411
  end
523
412
  }
524
413
  if type
525
- self[:type] = type
414
+ self[:provider] = type
526
415
  else
527
- self.setdefaults(:type)
416
+ self.setdefaults(:provider)
528
417
  end
529
418
 
530
419
  super
531
420
 
532
- #unless @states.include?(:ensure)
533
- # self.debug "Defaulting to installing a package"
534
- # self[:ensure] = true
535
- #end
536
-
537
- unless @parameters.include?(:type)
538
- self[:type] = self.class.default
421
+ unless @parameters.include?(:provider)
422
+ raise Puppet::DevError, "No package type set"
539
423
  end
540
424
  end
541
425
 
542
426
  def retrieve
543
427
  # If the package is installed, then retrieve all of the information
544
428
  # about it and set it appropriately.
545
- #@states[:ensure].retrieve
546
- if hash = self.query
429
+ if hash = @provider.query
547
430
  if hash == :listed # Mmmm, hackalicious
548
431
  return
549
432
  end
@@ -555,37 +438,26 @@ module Puppet
555
438
 
556
439
  setparams(hash)
557
440
  else
558
- # Else just mark all of the states absent.
559
- self.class.validstates.each { |name|
441
+ # Else just mark all of the properties absent.
442
+ self.class.validproperties.each { |name|
560
443
  self.is = [name, :absent]
561
444
  }
562
445
  end
563
446
  end
564
447
 
565
448
  # Set all of the params' "is" value. Most are parameters, but some
566
- # are states.
449
+ # are properties.
567
450
  def setparams(hash)
568
451
  # Everything on packages is a parameter except :ensure
569
452
  hash.each { |param, value|
570
- if self.class.attrtype(param) == :state
453
+ if self.class.attrtype(param) == :property
571
454
  self.is = [param, value]
572
455
  else
573
456
  self[param] = value
574
457
  end
575
458
  }
576
459
  end
577
-
578
- # Extend the package with the appropriate package type.
579
- def type2module(typename)
580
- if type = self.class.pkgtype(typename)
581
- self.extend(type)
582
-
583
- return type
584
- else
585
- self.fail "Invalid package type %s" % typename
586
- end
587
- end
588
460
  end # Puppet.type(:package)
589
461
  end
590
462
 
591
- # $Id: package.rb 1417 2006-07-21 19:33:36Z luke $
463
+ # $Id: package.rb 2430 2007-04-30 15:19:23Z luke $