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
@@ -8,7 +8,7 @@
8
8
  #
9
9
  # = Usage
10
10
  #
11
- # puppetdoc [-h|--help] [-a|--arguments] [-t|--types]
11
+ # puppetdoc [-a|--all] [-h|--help] [-m|--mode <text|pdf|trac> [-s|--section <[type]|configuration|report|function>]
12
12
  #
13
13
  # = Description
14
14
  #
@@ -19,18 +19,21 @@
19
19
  #
20
20
  # = Options
21
21
  #
22
- # arguments::
23
- # Print the documentation for arguments.
22
+ # all::
23
+ # Output the docs for all of the reference types.
24
24
  #
25
25
  # help::
26
26
  # Print this help message
27
27
  #
28
- # types::
29
- # Print the argumenst for Puppet types. This is the default.
28
+ # mode::
29
+ # Determine the output mode. Valid modes are 'text', 'trac', and 'pdf'. Note that 'trac' mode only works on Reductive Labs servers. The default mode is 'text'.
30
+ #
31
+ # section::
32
+ # Handle a particular section. Available sections are 'type', 'configuration', 'report', and 'function'. The default section is 'type'.
30
33
  #
31
34
  # = Example
32
35
  #
33
- # $ puppetdoc > /tmp/reference.rst
36
+ # $ puppetdoc > /tmp/type_reference.rst
34
37
  #
35
38
  # = Author
36
39
  #
@@ -38,41 +41,197 @@
38
41
  #
39
42
  # = Copyright
40
43
  #
41
- # Copyright (c) 2005 Reductive Labs, LLC
44
+ # Copyright (c) 2005-2007 Reductive Labs, LLC
42
45
  # Licensed under the GNU Public License
43
46
 
44
47
  require 'puppet'
45
- require 'getoptlong'
46
48
 
47
- $haveusage = true
49
+ class PuppetDoc
50
+ include Puppet::Util::Docs
51
+ @@sections = {}
52
+
53
+ attr_accessor :page, :depth, :header, :title
54
+
55
+ def self.[](name)
56
+ @@sections[name]
57
+ end
58
+
59
+ def self.each
60
+ @@sections.sort { |a, b| a[0].to_s <=> b[0].to_s }.each { |name, instance| yield instance }
61
+ end
62
+
63
+ def self.footer
64
+ "\n\n----------------\n\n*This page autogenerated on %s*\n" % Time.now
65
+ end
66
+
67
+ def self.page(*sections)
68
+ depth = 4
69
+ # Use the minimum depth
70
+ sections.each do |name|
71
+ section = @@sections[name] or raise "Could not find section %s" % name
72
+ depth = section.depth if section.depth < depth
73
+ end
74
+ text = ".. contents:: :depth: 2\n\n"
75
+ end
76
+
77
+ def self.pdf(text)
78
+ puts "creating pdf"
79
+ File.open("/tmp/puppetdoc.txt", "w") do |f|
80
+ f.puts text
81
+ end
82
+ rst2latex = %x{which rst2latex}
83
+ if $? != 0 or rst2latex =~ /no /
84
+ rst2latex = %x{which rst2latex.py}
85
+ end
86
+ if $? != 0 or rst2latex =~ /no /
87
+ raise "Could not find rst2latex"
88
+ end
89
+ rst2latex.chomp!
90
+ cmd = %{#{rst2latex} /tmp/puppetdoc.txt > /tmp/puppetdoc.tex}
91
+ output = %x{#{cmd}}
92
+ unless $? == 0
93
+ $stderr.puts "rst2latex failed"
94
+ $stderr.puts output
95
+ exit(1)
96
+ end
97
+ $stderr.puts output
98
+
99
+ # Now convert to pdf
100
+ puts "handling pdf"
101
+ Dir.chdir("/tmp") do
102
+ %x{texi2pdf puppetdoc.tex >/dev/null 2>/dev/null}
103
+ end
104
+
105
+ #if FileTest.exists?("/tmp/puppetdoc.pdf")
106
+ # FileUtils.mv("/tmp/puppetdoc.pdf", "/export/apache/docroots/reductivelabs.com/htdocs/downloads/puppet/reference.pdf")
107
+ #end
108
+ end
109
+
110
+ def self.sections
111
+ @@sections.keys.sort { |a,b| a.to_s <=> b.to_s }
112
+ end
113
+
114
+ HEADER_LEVELS = [nil, "=", "-", "+", "'", "~"]
115
+
116
+ def h(name, level)
117
+ return "%s\n%s\n" % [name, HEADER_LEVELS[level] * name.to_s.length]
118
+ end
119
+
120
+ def initialize(name, options = {}, &block)
121
+ @name = name
122
+ options.each do |option, value|
123
+ send(option.to_s + "=", value)
124
+ end
125
+
126
+ meta_def(:generate, &block)
127
+
128
+ @@sections[name] = self
129
+
130
+ # Now handle the defaults
131
+ @title ||= "%s Reference" % @name.to_s.capitalize
132
+ @page ||= @title.gsub(/\s+/, '')
133
+ @depth ||= 2
134
+ @header ||= ""
135
+ end
136
+
137
+ # Indent every line in the chunk except those which begin with '..'.
138
+ def indent(text, tab)
139
+ return text.gsub(/(^|\A)/, tab).gsub(/^ +\.\./, "..")
140
+ end
141
+
142
+ def paramwrap(name, text, options = {})
143
+ options[:level] ||= 5
144
+ #str = "%s : " % name
145
+ str = h(name, options[:level])
146
+ if options[:namevar]
147
+ str += "- **namevar**\n\n"
148
+ end
149
+ str += text
150
+ #str += text.gsub(/\n/, "\n ")
151
+
152
+ str += "\n\n"
153
+ return str
154
+ end
155
+
156
+ def output(withcontents = true)
157
+ # First the header
158
+ text = h(@title, 1)
159
+ text += "\n\n*This page is autogenerated; any changes will get overwritten*\n\n"
160
+ if withcontents
161
+ text += ".. contents:: :depth: %s\n\n" % @depth
162
+ end
163
+
164
+ text += @header
165
+
166
+ text += generate()
167
+
168
+ if withcontents
169
+ text += self.class.footer
170
+ end
171
+
172
+ return text
173
+ end
174
+
175
+ def text
176
+ puts output
177
+ end
178
+
179
+ def trac
180
+ File.open("/tmp/puppetdoc.txt", "w") do |f|
181
+
182
+ f.puts "{{{
183
+ #!rst\n
184
+ #{self.output}
185
+ }}}"
186
+ end
187
+
188
+ puts "Writing %s reference to trac as %s" % [@name, @page]
189
+ cmd = %{sudo trac-admin /export/svn/trac/puppet wiki import %s /tmp/puppetdoc.txt} % self.page
190
+ output = %x{#{cmd}}
191
+ unless $? == 0
192
+ $stderr.puts "trac-admin failed"
193
+ $stderr.puts output
194
+ exit(1)
195
+ end
196
+ unless output =~ /^\s+/
197
+ $stderr.puts output
198
+ end
199
+ end
48
200
 
49
- begin
50
- require 'rdoc/usage'
51
- rescue LoadError
52
- $haveusage = false
53
201
  end
54
202
 
203
+ require 'puppet'
204
+ require 'puppet/network/handler'
205
+ require 'getoptlong'
206
+
55
207
  result = GetoptLong.new(
56
- [ "--arguments", "-a", GetoptLong::NO_ARGUMENT ],
57
- [ "--types", "-t", GetoptLong::NO_ARGUMENT ],
208
+ [ "--all", "-a", GetoptLong::NO_ARGUMENT ],
209
+ [ "--mode", "-m", GetoptLong::REQUIRED_ARGUMENT ],
210
+ [ "--section", "-s", GetoptLong::REQUIRED_ARGUMENT ],
58
211
  [ "--help", "-h", GetoptLong::NO_ARGUMENT ]
59
212
  )
60
213
 
61
214
  debug = false
62
215
 
63
216
  $tab = " "
64
-
65
- mode = :types
217
+ options = {:sections => [], :mode => :text}
66
218
 
67
219
  begin
68
220
  result.each { |opt,arg|
69
221
  case opt
70
- when "--arguments"
71
- mode = :arguments
72
- when "--types"
73
- mode = :types
222
+ when "--all"
223
+ options[:all] = true
224
+ when "--mode"
225
+ case arg
226
+ when "text", "pdf", "trac":
227
+ options[:mode] = arg.intern
228
+ else
229
+ raise "Invalid output mode %s" % arg
230
+ end
231
+ when "--section"
232
+ options[:sections] << arg.intern
74
233
  when "--help"
75
- if $haveusage
234
+ if Puppet.features.usage?
76
235
  RDoc::usage && exit
77
236
  else
78
237
  puts "No help available unless you have RDoc::usage installed"
@@ -82,61 +241,60 @@ begin
82
241
  }
83
242
  rescue GetoptLong::InvalidOption => detail
84
243
  $stderr.puts "Try '#{$0} --help'"
85
- #if $haveusage
86
- # RDoc::usage_no_exit('usage')
87
- #end
88
244
  exit(1)
89
245
  end
90
246
 
91
- def scrub(text)
92
- # For text with no carriage returns, there's nothing to do.
93
- if text !~ /\n/
94
- return text
247
+ if options[:sections].empty?
248
+ options[:sections] << :type
249
+ end
250
+
251
+ config = PuppetDoc.new :configuration, :depth => 1 do
252
+ docs = {}
253
+ Puppet.config.each do |name, object|
254
+ docs[name] = object
95
255
  end
96
- indent = nil
97
256
 
98
- # If we can match an indentation, then just remove that same level of
99
- # indent from every line.
100
- if text =~ /^(\s+)/
101
- indent = $1
257
+ str = ""
258
+ docs.sort { |a, b|
259
+ a[0].to_s <=> b[0].to_s
260
+ }.each do |name, object|
261
+ # Make each name an anchor
262
+ header = name.to_s
263
+ str += h(header, 3)
264
+
265
+ # Print the doc string itself
102
266
  begin
103
- return text.gsub(/^#{indent}/,'')
267
+ str += object.desc.gsub(/\n/, " ")
104
268
  rescue => detail
105
269
  puts detail.backtrace
106
270
  puts detail
107
271
  end
108
- else
109
- return text
110
- end
111
-
112
- end
113
-
114
- # Indent every line in the chunk except those which begin with '..'.
115
- def indent(text, tab)
116
- return text.gsub(/(^|\A)/, tab).gsub(/^ +\.\./, "..")
117
- end
118
-
119
- def paramwrap(name, text, namevar = false)
120
- if namevar
121
- name = name.to_s + " (*namevar*)"
272
+ str += "\n\n"
273
+
274
+ # Now print the data about the item.
275
+ str += ""
276
+ val = object.default
277
+ if name.to_s == "vardir"
278
+ val = "/var/puppet"
279
+ elsif name.to_s == "confdir"
280
+ val = "/etc/puppet"
281
+ end
282
+ str += "- **Section**: %s\n" % object.section
283
+ unless val == ""
284
+ str += "- **Default**: %s\n" % val
285
+ end
286
+ str += "\n"
122
287
  end
123
288
 
124
- puts "#### %s" % name
125
- puts text
126
-
127
- puts ""
289
+ return str
128
290
  end
129
291
 
130
- # Print the docs for arguments
131
- def self.arguments
132
- puts %{---
133
- inMenu: true
134
- title: Configuration Reference
135
- ---
136
- # Puppet Configuration Reference
292
+ config.header = "
293
+ Specifying Configuration Parameters
294
+ -----------------------------------
137
295
 
138
296
  Every Puppet executable (with the exception of ``puppetdoc``) accepts all of
139
- these arguments, but not all of the arguments make sense for every executable.
297
+ the arguments below, but not all of the arguments make sense for every executable.
140
298
  Each argument has a section listed with it in parentheses; often, that section
141
299
  will map to an executable (e.g., ``puppetd``), in which case it probably only
142
300
  makes sense for that one executable. If ``puppet`` is listed as the section,
@@ -144,73 +302,138 @@ it is most likely an option that is valid for everyone.
144
302
 
145
303
  This will not always be the case. I have tried to be as thorough as possible
146
304
  in the descriptions of the arguments, so it should be obvious whether an
147
- argument is approprite or not.
305
+ argument is appropriate or not.
148
306
 
149
- Any default values are in ``block type`` at the end of the description.
307
+ These arguments can be supplied to the executables either as command-line
308
+ arugments or in the configuration file for the appropriate executable. For
309
+ instance, the command-line invocation below would set the configuration directory
310
+ to ``/private/puppet``::
311
+
312
+ $ puppetd --confdir=/private/puppet
313
+
314
+ Note that boolean options are turned on and off with a slightly different syntax
315
+ on the command line::
316
+
317
+ $ puppetd --storeconfigs
318
+
319
+ $ puppetd --no-storeconfigs
320
+
321
+ The invocations above will enable and disable, respectively, the storage of
322
+ the client configuration.
323
+
324
+ As mentioned above, the configuration parameters can also be stored in a
325
+ configuration file located in the configuration directory (`/etc/puppet`
326
+ by default). The file is named for the executable it is intended for, for
327
+ example `/etc/puppetd.conf` is the configuration file for `puppetd`.
328
+
329
+ The file, which follows INI-style formatting, should contain a bracketed
330
+ heading named for the executable, followed by pairs of parameters with their
331
+ values. Here is an example of a very simple ``puppetd.conf`` file::
332
+
333
+ [puppetd]
334
+ confdir = /private/puppet
335
+ storeconfigs = true
336
+
337
+ Note that boolean parameters must be explicitly specified as `true` or
338
+ `false` as seen above.
339
+
340
+ If you're starting out with a fresh configuration, you may wish to let
341
+ the executable generate a template configuration file for you by invoking
342
+ the executable in question with the `--genconfig` command. The executable
343
+ will print a template configuration to standard output, which can be
344
+ redirected to a file like so::
345
+
346
+ $ puppetd --genconfig > /etc/puppet/puppetd.conf
347
+
348
+ Note that this invocation will \"clobber\" (throw away) the contents of any
349
+ pre-existing `puppetd.conf` file, so make a backup of your present config
350
+ if it contains valuable information.
351
+
352
+ Like the `--genconfig` argument, the executables also accept a `--genmanifest`
353
+ argument, which will generate a manifest that can be used to manage all of
354
+ Puppet's directories and files and prints it to standard output. This can
355
+ likewise be redirected to a file::
150
356
 
151
- }
357
+ $ puppetd --genmanifest > /etc/puppet/manifests/site.pp
152
358
 
153
- docs = {}
154
- Puppet.config.each do |name, object|
155
- docs[name] = object
156
- end
359
+ Puppet can also create user and group accounts for itself (one `puppet` group
360
+ and one `puppet` user) if it is invoked as `root` with the `--mkusers` argument::
157
361
 
158
- docs.sort { |a, b|
159
- a[0].to_s <=> b[0].to_s
160
- }.each do |name, object|
161
- # Make each name an anchor
162
- puts %{#### <a name="#{name.to_s}">#{name.to_s}</a> (<em>#{object.section.to_s}</em>)}
362
+ $ puppetd --mkusers
363
+
364
+ Signals
365
+ -------
366
+ The ``puppetd`` and ``puppetmasterd`` executables catch some signals for special
367
+ handling. Both daemons catch (``SIGHUP``), which forces the server to restart
368
+ tself. Predictably, interrupt and terminate (``SIGINT`` and ``SIGHUP``) will shut
369
+ down the server, whether it be an instance of ``puppetd`` or ``puppetmasterd``.
370
+
371
+ Sending the ``SIGUSR1`` signal to an instance of ``puppetd`` will cause it to
372
+ immediately begin a new configuration transaction with the server. This
373
+ signal has no effect on ``puppetmasterd``.
374
+
375
+ Configuration Parameter Reference
376
+ ---------------------------------
377
+ Below is a list of all documented parameters. Not all of them are valid with all
378
+ Puppet executables, but the executables will ignore any inappropriate values.
163
379
 
164
- puts ""
165
- default = ""
166
- if val = object.value and val != ""
167
- default = " ``%s``" % val
168
- end
169
- begin
170
- puts object.desc.gsub(/\n/, " ") + default
171
- rescue => detail
172
- puts detail.backtrace
173
- puts detail
174
- end
175
- puts ""
176
- end
380
+ "
177
381
 
382
+ report = PuppetDoc.new :report do
383
+ Puppet::Network::Handler.report.reportdocs
178
384
  end
385
+ report.header = "
386
+ Puppet clients can report back to the server after each transaction. This
387
+ transaction report is sent as a YAML dump of the
388
+ ``Puppet::Transaction::Report`` class and includes every log message that was
389
+ generated during the transaction along with as many metrics as Puppet knows how
390
+ to collect. See `ReportsAndReporting Reports and Reporting`:trac:
391
+ for more information on how to use reports.
392
+
393
+ Currently, clients default to not sending in reports; you can enable reporting
394
+ by setting the ``report`` parameter to true.
395
+
396
+ To use a report, set the ``reports`` parameter on the server; multiple
397
+ reports must be comma-separated. You can also specify ``none`` to disable
398
+ reports entirely.
399
+
400
+ Puppet provides multiple report handlers that will process client reports:
401
+ "
179
402
 
180
- # Print the docs for types
181
- def self.types
182
- puts %{---
183
- inMenu: true
184
- title: Type Reference
185
- ---
186
- # Type Reference
187
-
188
-
189
- }
403
+ function = PuppetDoc.new :function do
404
+ Puppet::Parser::Functions.functiondocs
405
+ end
406
+ function.header = "
407
+ There are two types of functions in Puppet: Statements and rvalues.
408
+ Statements stand on their own and do not return arguments; they are used for
409
+ performing stand-alone work like importing. Rvalues return values and can
410
+ only be used in a statement requiring a value, such as an assignment or a case
411
+ statement.
412
+
413
+ Here are the functions available in Puppet:
414
+ "
190
415
 
416
+ type = PuppetDoc.new :type do
191
417
  types = {}
418
+ Puppet::Type.loadall
419
+
192
420
  Puppet::Type.eachtype { |type|
193
421
  next if type.name == :puppet
194
422
  next if type.name == :component
195
423
  types[type.name] = type
196
424
  }
197
425
 
198
- # Build a simple TOC
199
- puts "## Table of Contents"
200
- puts "1. <a href='#meta-parameters'>Meta-Parameters</a>"
201
- types.sort { |a, b| a[0].to_s <=> b[0].to_s }.each do |name, type|
202
- puts "1. <a href='#%s'>%s</a>" % [type.name, type.name.to_s.capitalize]
203
- end
204
-
205
- puts %{
206
- <h2><a name="meta-parameters">Meta-Parameters</a></h2>
207
-
426
+ str = %{
427
+ Metaparameters
428
+ --------------
208
429
  Metaparameters are parameters that work with any element; they are part of the
209
430
  Puppet framework itself rather than being part of the implementation of any
210
431
  given instance. Thus, any defined metaparameter can be used with any instance
211
432
  in your manifest, including defined components.
212
433
 
213
- }
434
+ Available Metaparameters
435
+ ++++++++++++++++++++++++
436
+ }
214
437
  begin
215
438
  params = []
216
439
  Puppet::Type.eachmetaparam { |param|
@@ -220,7 +443,7 @@ in your manifest, including defined components.
220
443
  params.sort { |a,b|
221
444
  a.to_s <=> b.to_s
222
445
  }.each { |param|
223
- paramwrap(param.to_s, scrub(Puppet::Type.metaparamdoc(param)))
446
+ str += paramwrap(param.to_s, scrub(Puppet::Type.metaparamdoc(param)), :level => 4)
224
447
  #puts "<dt>" + param.to_s + "</dt>"
225
448
  #puts tab(1) + Puppet::Type.metaparamdoc(param).scrub.indent($tab)gsub(/\n\s*/,' ')
226
449
  #puts "<dd>"
@@ -236,15 +459,17 @@ in your manifest, including defined components.
236
459
  exit(1)
237
460
  end
238
461
 
239
- puts %{
240
- ## Types
462
+ str += %{
463
+
464
+ Resource Types
465
+ --------------
241
466
 
242
- - *namevar* is the parameter used to uniquely identify a type instance.
467
+ - The *namevar* is the parameter used to uniquely identify a type instance.
243
468
  This is the parameter that gets assigned when a string is provided before
244
469
  the colon in a type declaration. In general, only developers will need to
245
470
  worry about which parameter is the ``namevar``.
246
471
 
247
- In the following code:
472
+ In the following code::
248
473
 
249
474
  file { "/etc/passwd":
250
475
  owner => root,
@@ -252,59 +477,76 @@ in your manifest, including defined components.
252
477
  mode => 644
253
478
  }
254
479
 
255
- "/etc/passwd" is considered the name of the file object (used for things like
480
+ ``/etc/passwd`` is considered the title of the file object (used for things like
256
481
  dependency handling), and because ``path`` is the namevar for ``file``, that
257
482
  string is assigned to the ``path`` parameter.
258
483
 
259
- - *parameters* determine the specific configuration of the instance. They either
260
- directly modify the system (internally, these are called states) or they affect
484
+ - *Features* are abilities that some providers might not support. You can use the list
485
+ of supported features to determine how a given provider can be used.
486
+
487
+ - *Parameters* determine the specific configuration of the instance. They either
488
+ directly modify the system (internally, these are called properties) or they affect
261
489
  how the instance behaves (e.g., adding a search path for ``exec`` instances
262
490
  or determining recursion on ``file`` instances).
263
491
 
492
+ - *Providers* provide low-level functionality for a given resource type. This is
493
+ usually in the form of calling out to external commands.
494
+
495
+ When required binaries are specified for providers, fully qualifed paths
496
+ indicate that the binary must exist at that specific path and unqualified
497
+ binaries indicate that Puppet will search for the binary using the shell
498
+ path.
499
+
500
+ Resource types define features they can use, and providers can be tested to see
501
+ which features they provide.
502
+
264
503
  }
265
504
 
266
505
  types.sort { |a,b|
267
506
  a.to_s <=> b.to_s
268
507
  }.each { |name,type|
269
508
 
270
- puts "
509
+ str += "
271
510
 
272
511
  ----------------
273
512
 
274
513
  "
275
514
 
276
- puts "
277
- <h2><a name='%s'>%s</a></h2>" % [name, name]
278
- puts scrub(type.doc) + "\n\n"
515
+ str += h(name, 3)
516
+ str += scrub(type.doc) + "\n\n"
517
+
518
+ # Handle the feature docs.
519
+ if featuredocs = type.featuredocs
520
+ str += h("Features", 4)
521
+ str += featuredocs
522
+ end
279
523
 
280
524
  docs = {}
281
- type.validstates.sort { |a,b|
525
+ type.validproperties.sort { |a,b|
282
526
  a.to_s <=> b.to_s
283
527
  }.reject { |sname|
284
- state = type.statebyname(sname)
285
- state.nodoc
528
+ property = type.propertybyname(sname)
529
+ property.nodoc
286
530
  }.each { |sname|
287
- state = type.statebyname(sname)
531
+ property = type.propertybyname(sname)
288
532
 
289
- unless state
290
- raise "Could not retrieve state %s on type %s" % [sname, type.name]
533
+ unless property
534
+ raise "Could not retrieve property %s on type %s" % [sname, type.name]
291
535
  end
292
536
 
293
537
  doc = nil
294
- str = nil
295
- unless doc = state.doc
538
+ unless doc = property.doc
296
539
  $stderr.puts "No docs for %s[%s]" % [type, sname]
297
540
  next
298
541
  end
299
542
  doc = doc.dup
300
- str = doc
301
- str = scrub(str)
543
+ tmp = doc
544
+ tmp = scrub(tmp)
302
545
 
303
- #str = indent(str, $tab)
304
- docs[sname] = str
546
+ docs[sname] = tmp
305
547
  }
306
548
 
307
- puts "\n### %s Parameters\n" % name.to_s.capitalize
549
+ str += h("Parameters", 4) + "\n"
308
550
  type.parameters.sort { |a,b|
309
551
  a.to_s <=> b.to_s
310
552
  }.each { |name,param|
@@ -316,19 +558,46 @@ in your manifest, including defined components.
316
558
  a[0].to_s <=> b[0].to_s
317
559
  }.each { |name, doc|
318
560
  namevar = type.namevar == name and name != :name
319
- paramwrap(name, doc, namevar)
561
+ str += paramwrap(name, doc, :namevar => namevar)
320
562
  }
321
- puts "\n"
563
+ str += "\n"
322
564
  }
565
+
566
+ str
323
567
  end
324
568
 
325
- send(mode)
569
+ if options[:all]
570
+ options[:sections] = PuppetDoc.sections
571
+ end
326
572
 
327
- puts "
573
+ case options[:mode]
574
+ when :trac
575
+ options[:sections].each do |name|
576
+ section = PuppetDoc[name] or raise "Could not find section %s" % name
577
+ unless options[:mode] == :pdf
578
+ section.trac
579
+ end
580
+ end
581
+ else
582
+ text = ".. contents:: :depth: 1\n\n"
583
+ options[:sections].sort { |a,b| a.to_s <=> b.to_s }.each do |name|
584
+ section = PuppetDoc[name]
328
585
 
329
- ----------------
586
+ # Add the per-section text, but with no ToC
587
+ text += section.output(false)
588
+ end
589
+
590
+ text += PuppetDoc.footer
591
+
592
+ # Replace the trac links, since they're invalid everywhere else
593
+ text.gsub!(/`\w+\s+([^`]+)`:trac:/) { |m| $1 }
594
+
595
+ if options[:mode] == :pdf
596
+ PuppetDoc.pdf(text)
597
+ else
598
+ puts text
599
+ end
600
+ end
330
601
 
331
- "
332
- puts "\n*This page autogenerated on %s*" % Time.now
333
602
 
334
- # $Id: puppetdoc 1410 2006-07-21 15:10:11Z luke $
603
+ # $Id: puppetdoc 2412 2007-04-24 20:47:08Z luke $