puppet 0.18.4 → 0.22.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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,331 @@
1
+ # The majority of the system configuration parameters are set in this file.
2
+ module Puppet
3
+ # If we're running the standalone puppet process as a non-root user,
4
+ # use basedirs that are in the user's home directory.
5
+ conf = nil
6
+ var = nil
7
+ name = $0.gsub(/.+#{File::SEPARATOR}/,'').sub(/\.rb$/, '')
8
+ if name != "puppetmasterd" and Puppet::Util::SUIDManager.uid != 0
9
+ conf = File.expand_path("~/.puppet")
10
+ var = File.expand_path("~/.puppet/var")
11
+ else
12
+ # Else, use system-wide directories.
13
+ conf = "/etc/puppet"
14
+ var = "/var/puppet"
15
+ end
16
+
17
+ self.setdefaults(:puppet,
18
+ :confdir => [conf, "The main Puppet configuration directory. The default for this parameter is calculated based on the user. If the process
19
+ is runnig as root or the user that ``puppetmasterd`` is supposed to run as, it defaults to a system directory, but if it's running as any other user,
20
+ it defaults to being in ``~``."],
21
+ :vardir => [var, "Where Puppet stores dynamic and growing data. The default for this parameter is calculated specially, like `confdir`_."],
22
+ :name => [name, "The name of the service, if we are running as one. The
23
+ default is essentially $0 without the path or ``.rb``."]
24
+ )
25
+
26
+ if name == "puppetmasterd"
27
+ logopts = {:default => "$vardir/log",
28
+ :mode => 0750,
29
+ :owner => "$user",
30
+ :group => "$group",
31
+ :desc => "The Puppet log directory."
32
+ }
33
+ else
34
+ logopts = ["$vardir/log", "The Puppet log directory."]
35
+ end
36
+ setdefaults(:puppet, :logdir => logopts)
37
+
38
+ # This name hackery is necessary so that the rundir is set reasonably during
39
+ # unit tests.
40
+ if Process.uid == 0 and %w{puppetd puppetmasterd}.include?(self.name)
41
+ rundir = "/var/run/puppet"
42
+ else
43
+ rundir = "$vardir/run"
44
+ end
45
+
46
+ self.setdefaults(:puppet,
47
+ :trace => [false, "Whether to print stack traces on some errors"],
48
+ :autoflush => [false, "Whether log files should always flush to disk."],
49
+ :syslogfacility => ["daemon", "What syslog facility to use when logging to
50
+ syslog. Syslog has a fixed list of valid facilities, and you must
51
+ choose one of those; you cannot just make one up."],
52
+ :statedir => { :default => "$vardir/state",
53
+ :mode => 01777,
54
+ :desc => "The directory where Puppet state is stored. Generally,
55
+ this directory can be removed without causing harm (although it
56
+ might result in spurious service restarts)."
57
+ },
58
+ :statefile => { :default => "$statedir/state.yaml",
59
+ :mode => 0660,
60
+ :desc => "Where puppetd and puppetmasterd store state associated
61
+ with the running configuration. In the case of puppetmasterd,
62
+ this file reflects the state discovered through interacting
63
+ with clients."
64
+ },
65
+ :ssldir => {
66
+ :default => "$confdir/ssl",
67
+ :mode => 0771,
68
+ :owner => "root",
69
+ :desc => "Where SSL certificates are kept."
70
+ },
71
+ :rundir => { :default => rundir,
72
+ :mode => 01777,
73
+ :desc => "Where Puppet PID files are kept."
74
+ },
75
+ :genconfig => [false,
76
+ "Whether to just print a configuration to stdout and exit. Only makes
77
+ sense when used interactively. Takes into account arguments specified
78
+ on the CLI."],
79
+ :genmanifest => [false,
80
+ "Whether to just print a manifest to stdout and exit. Only makes
81
+ sense when used interactively. Takes into account arguments specified
82
+ on the CLI."],
83
+ :configprint => ["",
84
+ "Print the value of a specific configuration parameter. If a
85
+ parameter is provided for this, then the value is printed and puppet
86
+ exits. Comma-separate multiple values. For a list of all values,
87
+ specify 'all'. This feature is only available in Puppet versions
88
+ higher than 0.18.4."],
89
+ :color => ["ansi", "Whether to use colors when logging to the console.
90
+ Valid values are ``ansi`` (equivalent to ``true``), ``html`` (mostly
91
+ used during testing with TextMate), and ``false``, which produces
92
+ no color."],
93
+ :mkusers => [false,
94
+ "Whether to create the necessary user and group that puppetd will
95
+ run as."],
96
+ :path => {:default => "none",
97
+ :desc => "The shell search path. Defaults to whatever is inherited
98
+ from the parent process.",
99
+ :hook => proc do |value|
100
+ ENV["PATH"] = value unless value == "none"
101
+ end
102
+ },
103
+ :libdir => {:default => "$vardir/lib",
104
+ :desc => "An extra search path for Puppet. This is only useful
105
+ for those files that Puppet will load on demand, and is only
106
+ guaranteed to work for those cases. In fact, the autoload
107
+ mechanism is responsible for making sure this directory
108
+ is in Ruby's search path",
109
+ :hook => proc do |value|
110
+ if defined? @oldlibdir and $:.include?(@oldlibdir)
111
+ $:.delete(@oldlibdir)
112
+ end
113
+ @oldlibdir = value
114
+ $: << value
115
+ end
116
+ },
117
+ :ignoreimport => [false, "A parameter that can be used in commit
118
+ hooks, since it enables you to parse-check a single file rather
119
+ than requiring that all files exist."],
120
+ :authconfig => [ "$confdir/namespaceauth.conf",
121
+ "The configuration file that defines the rights to the different
122
+ namespaces and methods. This can be used as a coarse-grained
123
+ authorization system for both ``puppetd`` and ``puppetmasterd``."
124
+ ]
125
+ )
126
+
127
+ # Define the config default.
128
+ self.setdefaults(self.name,
129
+ :config => ["$confdir/#{Puppet[:name]}.conf",
130
+ "The configuration file for #{Puppet[:name]}."],
131
+ :pidfile => ["", "The pid file"],
132
+ :bindaddress => ["", "The address to bind to. Mongrel servers
133
+ default to 127.0.0.1 and WEBrick defaults to 0.0.0.0."],
134
+ :servertype => ["webrick", "The type of server to use. Currently supported
135
+ options are webrick and mongrel. If you use mongrel, you will need
136
+ a proxy in front of the process or processes, since Mongrel cannot
137
+ speak SSL."]
138
+ )
139
+
140
+ self.setdefaults("puppetmasterd",
141
+ :user => ["puppet", "The user puppetmasterd should run as."],
142
+ :group => ["puppet", "The group puppetmasterd should run as."],
143
+ :manifestdir => ["$confdir/manifests",
144
+ "Where puppetmasterd looks for its manifests."],
145
+ :manifest => ["$manifestdir/site.pp",
146
+ "The entry-point manifest for puppetmasterd."],
147
+ :masterlog => { :default => "$logdir/puppetmaster.log",
148
+ :owner => "$user",
149
+ :group => "$group",
150
+ :mode => 0660,
151
+ :desc => "Where puppetmasterd logs. This is generally not used,
152
+ since syslog is the default log destination."
153
+ },
154
+ :masterhttplog => { :default => "$logdir/masterhttp.log",
155
+ :owner => "$user",
156
+ :group => "$group",
157
+ :mode => 0660,
158
+ :create => true,
159
+ :desc => "Where the puppetmasterd web server logs."
160
+ },
161
+ :masterport => [8140, "Which port puppetmasterd listens on."],
162
+ :parseonly => [false, "Just check the syntax of the manifests."],
163
+ :node_name => ["cert", "How the puppetmaster determines the client's identity
164
+ and sets the 'hostname' fact for use in the manifest, in particular
165
+ for determining which 'node' statement applies to the client.
166
+ Possible values are 'cert' (use the subject's CN in the client's
167
+ certificate) and 'facter' (use the hostname that the client
168
+ reported in its facts)"],
169
+ :bucketdir => {
170
+ :default => "$vardir/bucket",
171
+ :mode => 0750,
172
+ :owner => "$user",
173
+ :group => "$group",
174
+ :desc => "Where FileBucket files are stored."
175
+ },
176
+ :ca => [true, "Wether the master should function as a certificate authority."],
177
+ :modulepath => [ "$confdir/modules:/usr/share/puppet/modules",
178
+ "The search path for modules as a colon-separated list of
179
+ directories." ]
180
+ )
181
+
182
+ self.setdefaults("puppetd",
183
+ :localconfig => { :default => "$statedir/localconfig",
184
+ :owner => "root",
185
+ :mode => 0660,
186
+ :desc => "Where puppetd caches the local configuration. An
187
+ extension indicating the cache format is added automatically."},
188
+ :classfile => { :default => "$confdir/classes.txt",
189
+ :owner => "root",
190
+ :mode => 0644,
191
+ :desc => "The file in which puppetd stores a list of the classes
192
+ associated with the retrieved configuratiion. Can be loaded in
193
+ the separate ``puppet`` executable using the ``--loadclasses``
194
+ option."},
195
+ :puppetdlog => { :default => "$logdir/puppetd.log",
196
+ :owner => "root",
197
+ :mode => 0640,
198
+ :desc => "The log file for puppetd. This is generally not used."
199
+ },
200
+ :httplog => { :default => "$logdir/http.log",
201
+ :owner => "root",
202
+ :mode => 0640,
203
+ :desc => "Where the puppetd web server logs."
204
+ },
205
+ :server => ["puppet",
206
+ "The server to which server puppetd should connect"],
207
+ :ignoreschedules => [false,
208
+ "Boolean; whether puppetd should ignore schedules. This is useful
209
+ for initial puppetd runs."],
210
+ :puppetport => [8139, "Which port puppetd listens on."],
211
+ :noop => [false, "Whether puppetd should be run in noop mode."],
212
+ :runinterval => [1800, # 30 minutes
213
+ "How often puppetd applies the client configuration; in seconds."],
214
+ :listen => [false, "Whether puppetd should listen for
215
+ connections. If this is true, then by default only the
216
+ ``runner`` server is started, which allows remote authorized
217
+ and authenticated nodes to connect and trigger ``puppetd``
218
+ runs."],
219
+ :ca_server => ["$server", "The server to use for certificate
220
+ authority requests. It's a separate server because it cannot
221
+ and does not need to horizontally scale."],
222
+ :ca_port => ["$masterport", "The port to use for the certificate authority."]
223
+ )
224
+
225
+ self.setdefaults("filebucket",
226
+ :clientbucketdir => {
227
+ :default => "$vardir/clientbucket",
228
+ :mode => 0750,
229
+ :desc => "Where FileBucket files are stored locally."
230
+ }
231
+ )
232
+ self.setdefaults("fileserver",
233
+ :fileserverconfig => ["$confdir/fileserver.conf",
234
+ "Where the fileserver configuration is stored."]
235
+ )
236
+ self.setdefaults(:reporting,
237
+ :reports => ["store",
238
+ "The list of reports to generate. All reports are looked for
239
+ in puppet/reports/<name>.rb, and multiple report names should be
240
+ comma-separated (whitespace is okay)."
241
+ ],
242
+ :reportdir => {:default => "$vardir/reports",
243
+ :mode => 0750,
244
+ :owner => "$user",
245
+ :group => "$group",
246
+ :desc => "The directory in which to store reports
247
+ received from the client. Each client gets a separate
248
+ subdirectory."}
249
+ )
250
+ self.setdefaults("puppetd",
251
+ :puppetdlockfile => [ "$statedir/puppetdlock",
252
+ "A lock file to temporarily stop puppetd from doing anything."],
253
+ :usecacheonfailure => [true,
254
+ "Whether to use the cached configuration when the remote
255
+ configuration will not compile. This option is useful for testing
256
+ new configurations, where you want to fix the broken configuration
257
+ rather than reverting to a known-good one."
258
+ ],
259
+ :ignorecache => [false,
260
+ "Ignore cache and always recompile the configuration. This is
261
+ useful for testing new configurations, where the local cache may in
262
+ fact be stale even if the timestamps are up to date - if the facts
263
+ change or if the server changes."
264
+ ],
265
+ :downcasefacts => [false,
266
+ "Whether facts should be made all lowercase when sent to the server."]
267
+ )
268
+
269
+ self.setdefaults(:puppetd,
270
+ :configtimeout => [120,
271
+ "How long the client should wait for the configuration to be retrieved
272
+ before considering it a failure. This can help reduce flapping if too
273
+ many clients contact the server at one time."
274
+ ],
275
+ :reportserver => ["$server",
276
+ "The server to which to send transaction reports."
277
+ ],
278
+ :report => [false,
279
+ "Whether to send reports after every transaction."
280
+ ]
281
+ )
282
+
283
+ # Plugin information.
284
+ self.setdefaults("puppet",
285
+ :pluginpath => ["$vardir/plugins",
286
+ "Where Puppet should look for plugins. Multiple directories should
287
+ be colon-separated, like normal PATH variables."],
288
+ :plugindest => ["$vardir/plugins",
289
+ "Where Puppet should store plugins that it pulls down from the central
290
+ server."],
291
+ :pluginsource => ["puppet://$server/plugins",
292
+ "From where to retrieve plugins. The standard Puppet ``file`` type
293
+ is used for retrieval, so anything that is a valid file source can
294
+ be used here."],
295
+ :pluginsync => [false,
296
+ "Whether plugins should be synced with the central server."],
297
+ :pluginsignore => [".svn CVS",
298
+ "What files to ignore when pulling down plugins."]
299
+ )
300
+
301
+ # Central fact information.
302
+ self.setdefaults("puppet",
303
+ :factpath => ["$vardir/facts",
304
+ "Where Puppet should look for facts. Multiple directories should
305
+ be colon-separated, like normal PATH variables."],
306
+ :factdest => ["$vardir/facts",
307
+ "Where Puppet should store facts that it pulls down from the central
308
+ server."],
309
+ :factsource => ["puppet://$server/facts",
310
+ "From where to retrieve facts. The standard Puppet ``file`` type
311
+ is used for retrieval, so anything that is a valid file source can
312
+ be used here."],
313
+ :factsync => [false,
314
+ "Whether facts should be synced with the central server."],
315
+ :factsignore => [".svn CVS",
316
+ "What files to ignore when pulling down facts."]
317
+ )
318
+
319
+ self.setdefaults(:reporting,
320
+ :tagmap => ["$confdir/tagmail.conf",
321
+ "The mapping between reporting tags and email addresses."],
322
+ :sendmail => [%x{which sendmail 2>/dev/null}.chomp,
323
+ "Where to find the sendmail binary with which to send email."],
324
+ :reportfrom => ["report@" + [Facter["hostname"].value, Facter["domain"].value].join("."),
325
+ "The 'from' email address for the reports."],
326
+ :smtpserver => ["none",
327
+ "The server through which to send email reports."]
328
+ )
329
+ end
330
+
331
+ # $Id: configuration.rb 2411 2007-04-24 18:59:20Z luke $
@@ -1,267 +1,84 @@
1
- # helper functions for daemons
2
-
3
1
  require 'puppet'
2
+ require 'puppet/util/pidlock'
4
3
 
5
- module Puppet
6
- # A module that handles operations common to all daemons. This is included
7
- # into the Server and Client base classes.
8
- module Daemon
9
- include Puppet::Util
10
-
11
- Puppet.config.setdefaults(:puppet, :setpidfile => [true,
12
- "Whether to store a PID file for the daemon."])
13
- def daemonname
14
- #$0.sub(/.+#{File::SEPARATOR}/,'')
15
- Puppet.name
16
- end
17
-
18
- # The path to the pid file for this server
19
- def pidfile
20
- File.join(Puppet[:rundir], daemonname() + ".pid")
21
- end
22
-
23
- # Put the daemon into the background.
24
- def daemonize
25
- if pid = fork()
26
- Process.detach(pid)
27
- exit(0)
28
- end
29
-
30
- # Get rid of console logging
31
- Puppet::Log.close(:console)
32
-
33
- Process.setsid
34
- Dir.chdir("/")
35
- begin
36
- $stdin.reopen "/dev/null"
37
- $stdout.reopen "/dev/null", "a"
38
- $stderr.reopen $stdout
39
- Puppet::Log.reopen
40
- rescue => detail
41
- File.open("/tmp/daemonout", "w") { |f|
42
- f.puts "Could not start %s: %s" % [Puppet.name, detail]
43
- }
44
- Puppet.err "Could not start %s: %s" % [Puppet.name, detail]
45
- exit(12)
46
- end
47
- end
48
-
49
- def fqdn
50
- unless defined? @fqdn and @fqdn
51
- hostname = Facter["hostname"].value
52
- domain = Facter["domain"].value
53
- @fqdn = [hostname, domain].join(".")
54
- end
55
- return @fqdn
56
- end
57
-
58
- def httplog
59
- args = []
60
-
61
- # yuck; separate http logs
62
- file = nil
63
- Puppet.config.use(:puppet, :certificates, Puppet.name)
64
- if Puppet.name == "puppetmasterd"
65
- file = Puppet[:masterhttplog]
66
- else
67
- file = Puppet[:httplog]
68
- end
69
- #
70
- # unless FileTest.exists?(File.dirname(file))
71
- # Puppet.recmkdir(File.dirname(file))
72
- # end
73
-
74
- args << file
75
- if Puppet[:debug]
76
- args << WEBrick::Log::DEBUG
77
- end
78
-
79
- log = WEBrick::Log.new(*args)
4
+ # A module that handles operations common to all daemons. This is included
5
+ # into the Server and Client base classes.
6
+ module Puppet::Daemon
7
+ include Puppet::Util
80
8
 
9
+ def daemonname
10
+ Puppet[:name]
11
+ end
81
12
 
82
- return log
13
+ # Put the daemon into the background.
14
+ def daemonize
15
+ if pid = fork()
16
+ Process.detach(pid)
17
+ exit(0)
83
18
  end
84
-
85
- # Read in an existing certificate.
86
- def readcert
87
- return unless @secureinit
88
- Puppet.config.use(:puppet, :certificates)
89
- # verify we've got all of the certs set up and such
90
-
91
- if defined? @cert and defined? @key and @cert and @key
92
- return true
93
- end
94
-
95
- unless defined? @fqdn
96
- self.fqdn
97
- end
98
-
99
- # we are not going to encrypt our key, but we need at a minimum
100
- # a keyfile and a certfile
101
- @certfile = File.join(Puppet[:certdir], [@fqdn, "pem"].join("."))
102
- @cacertfile = File.join(Puppet[:certdir], ["ca", "pem"].join("."))
103
- @keyfile = File.join(Puppet[:privatekeydir], [@fqdn, "pem"].join("."))
104
- @publickeyfile = File.join(Puppet[:publickeydir], [@fqdn, "pem"].join("."))
105
-
106
- if File.exists?(@keyfile)
107
- # load the key
108
- @key = OpenSSL::PKey::RSA.new(File.read(@keyfile))
109
- else
110
- return false
111
- end
112
-
113
- if File.exists?(@certfile)
114
- if File.exists?(@cacertfile)
115
- @cacert = OpenSSL::X509::Certificate.new(File.read(@cacertfile))
116
- else
117
- raise Puppet::Error, "Found cert file with no ca cert file"
118
- end
119
- @cert = OpenSSL::X509::Certificate.new(File.read(@certfile))
120
- else
121
- return false
122
- end
123
- return true
19
+
20
+ setpidfile()
21
+
22
+ # Get rid of console logging
23
+ Puppet::Util::Log.close(:console)
24
+
25
+ Process.setsid
26
+ Dir.chdir("/")
27
+ begin
28
+ $stdin.reopen "/dev/null"
29
+ $stdout.reopen "/dev/null", "a"
30
+ $stderr.reopen $stdout
31
+ Puppet::Util::Log.reopen
32
+ rescue => detail
33
+ File.open("/tmp/daemonout", "w") { |f|
34
+ f.puts "Could not start %s: %s" % [Puppet[:name], detail]
35
+ }
36
+ Puppet.err "Could not start %s: %s" % [Puppet[:name], detail]
37
+ exit(12)
124
38
  end
39
+ end
125
40
 
126
- # Request a certificate from the remote system. This does all of the work
127
- # of creating the cert request, contacting the remote system, and
128
- # storing the cert locally.
129
- def requestcert
130
- unless @secureinit
131
- raise Puppet::DevError,
132
- "Tried to request cert without initialized security"
133
- end
134
- retrieved = false
135
- Puppet.config.use(:puppet, :certificates)
136
- # create the directories involved
137
- # FIXME it's a stupid hack that i have to do this
138
- # [Puppet[:certdir], Puppet[:privatekeydir], Puppet[:csrdir],
139
- # Puppet[:publickeydir]].each { |dir|
140
- # unless FileTest.exists?(dir)
141
- # Puppet.recmkdir(dir, 0770)
142
- # end
143
- # }
144
-
145
- if self.readcert
146
- Puppet.info "Certificate already exists; not requesting"
147
- return true
148
- end
149
-
150
- unless defined? @key and @key
151
- # create a new one and store it
152
- Puppet.info "Creating a new SSL key at %s" % @keyfile
153
- @key = OpenSSL::PKey::RSA.new(Puppet[:keylength])
154
- File.open(@keyfile, "w", 0660) { |f| f.print @key.to_pem }
155
- File.open(@publickeyfile, "w", 0660) { |f|
156
- f.print @key.public_key.to_pem
157
- }
158
- end
159
-
160
- unless defined? @driver
161
- Puppet.err "Cannot request a certificate without a defined target"
162
- return false
163
- end
164
-
165
- Puppet.info "Creating a new certificate request for %s" % @fqdn
166
- name = OpenSSL::X509::Name.new([["CN", @fqdn]])
167
-
168
- @csr = OpenSSL::X509::Request.new
169
- @csr.version = 0
170
- @csr.subject = name
171
- @csr.public_key = @key.public_key
172
- @csr.sign(@key, OpenSSL::Digest::MD5.new)
173
-
174
- Puppet.info "Requesting certificate"
175
-
176
- begin
177
- cert, cacert = @driver.getcert(@csr.to_pem)
178
- rescue => detail
179
- if Puppet[:debug]
180
- puts detail.backtrace
181
- end
182
- raise Puppet::Error.new("Certificate retrieval failed: %s" %
183
- detail)
184
- end
185
-
186
- if cert.nil? or cert == ""
187
- return nil
188
- end
189
- File.open(@certfile, "w", 0660) { |f| f.print cert }
190
- File.open(@cacertfile, "w", 0660) { |f| f.print cacert }
191
- begin
192
- @cert = OpenSSL::X509::Certificate.new(cert)
193
- @cacert = OpenSSL::X509::Certificate.new(cacert)
194
- retrieved = true
195
- rescue => detail
196
- raise Puppet::Error.new(
197
- "Invalid certificate: %s" % detail
198
- )
199
- end
200
-
201
- unless @cert.check_private_key(@key)
202
- raise Puppet::DevError, "Received invalid certificate"
203
- end
204
- return retrieved
41
+ # The path to the pid file for this server
42
+ def pidfile
43
+ if Puppet[:pidfile] != ""
44
+ Puppet[:pidfile]
45
+ else
46
+ File.join(Puppet[:rundir], daemonname() + ".pid")
205
47
  end
48
+ end
206
49
 
207
- # Remove the pid file
208
- def rmpidfile
209
- threadlock(:pidfile) do
210
- if defined? @pidfile and @pidfile and FileTest.exists?(@pidfile)
211
- begin
212
- File.unlink(@pidfile)
213
- rescue => detail
214
- Puppet.err "Could not remove PID file %s: %s" %
215
- [@pidfile, detail]
216
- end
217
- end
50
+ # Remove the pid file
51
+ def rmpidfile
52
+ threadlock(:pidfile) do
53
+ locker = Puppet::Util::Pidlock.new(pidfile)
54
+ if locker.locked?
55
+ locker.unlock or Puppet.err "Could not remove PID file %s" % [pidfile]
218
56
  end
219
57
  end
58
+ end
220
59
 
221
- # Create the pid file.
222
- def setpidfile
223
- return unless Puppet[:setpidfile]
224
- threadlock(:pidfile) do
225
- Puppet.config.use(:puppet)
226
- @pidfile = self.pidfile
227
- if FileTest.exists?(@pidfile)
228
- if defined? $setpidfile
229
- return
230
- else
231
- raise Puppet::Error, "A PID file already exists for #{Puppet.name}
232
- at #{@pidfile}. Not starting."
233
- end
234
- end
235
-
236
- Puppet.info "Creating PID file to %s" % @pidfile
237
- begin
238
- File.open(@pidfile, "w") { |f| f.puts $$ }
239
- rescue => detail
240
- Puppet.err "Could not create PID file: %s" % detail
241
- exit(74)
242
- end
243
- $setpidfile = true
60
+ # Create the pid file.
61
+ def setpidfile
62
+ threadlock(:pidfile) do
63
+ unless Puppet::Util::Pidlock.new(pidfile).lock
64
+ Puppet.err("Could not create PID file: %s" % [pidfile])
65
+ exit(74)
244
66
  end
245
67
  end
68
+ end
246
69
 
247
- # Shut down our server
248
- def shutdown
249
- # Remove our pid file
250
- rmpidfile()
251
-
252
- # And close all logs except the console.
253
- Puppet::Log.destinations.reject { |d| d == :console }.each do |dest|
254
- Puppet::Log.close(dest)
255
- end
70
+ # Shut down our server
71
+ def shutdown
72
+ # Remove our pid file
73
+ rmpidfile()
256
74
 
257
- super
75
+ # And close all logs except the console.
76
+ Puppet::Util::Log.destinations.reject { |d| d == :console }.each do |dest|
77
+ Puppet::Util::Log.close(dest)
258
78
  end
259
79
 
260
- def start
261
- setpidfile()
262
- super
263
- end
80
+ super
264
81
  end
265
82
  end
266
83
 
267
- # $Id: daemon.rb 1315 2006-06-27 05:15:51Z luke $
84
+ # $Id: daemon.rb 2259 2007-03-06 19:03:05Z luke $