puppet 0.24.9 → 0.25.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of puppet might be problematic. Click here for more details.

Files changed (910) hide show
  1. data/CHANGELOG +18680 -1241
  2. data/CHANGELOG.old +1705 -0
  3. data/LICENSE +2 -2
  4. data/README +1 -1
  5. data/README.queueing +126 -0
  6. data/README.rst +4 -4
  7. data/Rakefile +62 -216
  8. data/bin/filebucket +6 -117
  9. data/bin/pi +50 -0
  10. data/bin/puppet +7 -188
  11. data/bin/puppetdoc +7 -198
  12. data/bin/ralsh +4 -191
  13. data/conf/auth.conf +94 -0
  14. data/conf/gentoo/init.d/puppetmaster +30 -30
  15. data/conf/osx/PackageInfo.plist +30 -30
  16. data/conf/osx/createpackage.sh +23 -18
  17. data/conf/osx/preflight +8 -0
  18. data/conf/puppet-queue.conf +10 -0
  19. data/conf/redhat/client.init +52 -41
  20. data/conf/redhat/logrotate +1 -0
  21. data/conf/redhat/puppet.spec +74 -36
  22. data/conf/redhat/rundir-perms.patch +28 -0
  23. data/conf/redhat/server.init +48 -43
  24. data/conf/redhat/server.sysconfig +4 -4
  25. data/conf/solaris/smf/puppetd.xml +53 -53
  26. data/conf/solaris/smf/puppetmasterd.xml +53 -53
  27. data/conf/solaris/smf/svc-puppetd +4 -4
  28. data/conf/solaris/smf/svc-puppetmasterd +3 -3
  29. data/conf/suse/client.init +4 -4
  30. data/conf/suse/puppet.spec +14 -14
  31. data/conf/suse/server.init +17 -17
  32. data/examples/etc/init.d/sleeper +8 -8
  33. data/examples/mac_dscl.pp +2 -2
  34. data/examples/mac_dscl_revert.pp +1 -1
  35. data/examples/mcx_dock_default.pp +108 -108
  36. data/examples/mcx_dock_full.pp +108 -108
  37. data/examples/mcx_nogroup.pp +108 -108
  38. data/examples/modules/sample-module/lib/puppet/parser/functions/hostname_to_dn.rb +5 -5
  39. data/examples/modules/sample-module/manifests/init.pp +2 -2
  40. data/examples/relationships +1 -1
  41. data/ext/autotest/config +6 -6
  42. data/ext/bin/sleeper +12 -12
  43. data/ext/dbfix.sql +21 -21
  44. data/ext/emacs/puppet-mode.el +42 -41
  45. data/ext/extlookup.rb +183 -0
  46. data/ext/ldap/puppet.schema +2 -1
  47. data/ext/logcheck/puppet +1 -1
  48. data/ext/module_puppet +7 -7
  49. data/ext/nagios/check_puppet.rb +83 -83
  50. data/ext/nagios/naggen +302 -0
  51. data/ext/puppet-test +61 -18
  52. data/ext/puppetlisten/puppetlisten.rb +76 -0
  53. data/ext/puppetlisten/puppetrun.rb +39 -0
  54. data/ext/puppetstoredconfigclean.rb +29 -29
  55. data/ext/rack/README +73 -0
  56. data/ext/rack/files/apache2.conf +38 -0
  57. data/ext/rack/files/config.ru +18 -0
  58. data/ext/rack/manifest.pp +59 -0
  59. data/ext/vim/syntax/puppet.vim +54 -35
  60. data/install.rb +37 -26
  61. data/lib/puppet.rb +15 -227
  62. data/lib/puppet/agent.rb +134 -0
  63. data/lib/puppet/agent/locker.rb +42 -0
  64. data/lib/puppet/agent/runner.rb +65 -0
  65. data/lib/puppet/application.rb +313 -0
  66. data/lib/puppet/application/filebucket.rb +87 -0
  67. data/lib/puppet/application/pi.rb +214 -0
  68. data/lib/puppet/application/puppet.rb +177 -0
  69. data/lib/puppet/application/puppetca.rb +71 -0
  70. data/lib/puppet/application/puppetd.rb +256 -0
  71. data/lib/puppet/application/puppetdoc.rb +222 -0
  72. data/lib/puppet/application/puppetmasterd.rb +168 -0
  73. data/lib/puppet/application/puppetqd.rb +96 -0
  74. data/lib/puppet/application/puppetrun.rb +219 -0
  75. data/lib/puppet/application/ralsh.rb +168 -0
  76. data/lib/puppet/configurer.rb +177 -0
  77. data/lib/puppet/configurer/downloader.rb +79 -0
  78. data/lib/puppet/configurer/fact_handler.rb +68 -0
  79. data/lib/puppet/configurer/plugin_handler.rb +26 -0
  80. data/lib/puppet/daemon.rb +78 -28
  81. data/lib/puppet/defaults.rb +239 -166
  82. data/lib/puppet/dsl.rb +7 -7
  83. data/lib/puppet/external/dot.rb +271 -271
  84. data/lib/puppet/external/event-loop/better-definers.rb +298 -298
  85. data/lib/puppet/external/event-loop/event-loop.rb +274 -274
  86. data/lib/puppet/external/event-loop/signal-system.rb +163 -163
  87. data/lib/puppet/external/lock.rb +1 -1
  88. data/lib/puppet/external/nagios.rb +20 -20
  89. data/lib/puppet/external/nagios/base.rb +3 -3
  90. data/lib/puppet/external/nagios/grammar.ry +185 -0
  91. data/lib/puppet/external/nagios/makefile +9 -0
  92. data/lib/puppet/external/nagios/parser.rb +1 -1
  93. data/lib/puppet/feature/json.rb +2 -0
  94. data/lib/puppet/feature/rack.rb +24 -0
  95. data/lib/puppet/feature/rails.rb +23 -33
  96. data/lib/puppet/feature/rubygems.rb +6 -0
  97. data/lib/puppet/feature/stomp.rb +6 -0
  98. data/lib/puppet/file_serving/{file_base.rb → base.rb} +10 -9
  99. data/lib/puppet/file_serving/configuration.rb +61 -61
  100. data/lib/puppet/file_serving/configuration/parser.rb +24 -29
  101. data/lib/puppet/file_serving/content.rb +26 -11
  102. data/lib/puppet/file_serving/fileset.rb +54 -19
  103. data/lib/puppet/file_serving/indirection_hooks.rb +12 -24
  104. data/lib/puppet/file_serving/metadata.rb +8 -8
  105. data/lib/puppet/file_serving/mount.rb +9 -151
  106. data/lib/puppet/file_serving/mount/file.rb +126 -0
  107. data/lib/puppet/file_serving/mount/modules.rb +25 -0
  108. data/lib/puppet/file_serving/mount/plugins.rb +27 -0
  109. data/lib/puppet/file_serving/terminus_helper.rb +9 -4
  110. data/lib/puppet/indirector.rb +6 -4
  111. data/lib/puppet/indirector/active_record.rb +28 -0
  112. data/lib/puppet/indirector/catalog/active_record.rb +36 -0
  113. data/lib/puppet/indirector/catalog/compiler.rb +50 -24
  114. data/lib/puppet/indirector/catalog/queue.rb +5 -0
  115. data/lib/puppet/indirector/catalog/rest.rb +6 -0
  116. data/lib/puppet/indirector/catalog/yaml.rb +2 -4
  117. data/lib/puppet/indirector/certificate/ca.rb +9 -0
  118. data/lib/puppet/indirector/certificate/file.rb +9 -0
  119. data/lib/puppet/indirector/certificate/rest.rb +9 -0
  120. data/lib/puppet/indirector/certificate_request/ca.rb +14 -0
  121. data/lib/puppet/indirector/certificate_request/file.rb +8 -0
  122. data/lib/puppet/indirector/certificate_request/rest.rb +9 -0
  123. data/lib/puppet/indirector/certificate_revocation_list/ca.rb +8 -0
  124. data/lib/puppet/indirector/certificate_revocation_list/file.rb +8 -0
  125. data/lib/puppet/indirector/certificate_revocation_list/rest.rb +9 -0
  126. data/lib/puppet/indirector/direct_file_server.rb +4 -8
  127. data/lib/puppet/indirector/exec.rb +2 -6
  128. data/lib/puppet/indirector/facts/active_record.rb +36 -0
  129. data/lib/puppet/indirector/facts/facter.rb +30 -22
  130. data/lib/puppet/indirector/facts/rest.rb +6 -0
  131. data/lib/puppet/indirector/file.rb +1 -0
  132. data/lib/puppet/indirector/file_content/rest.rb +0 -1
  133. data/lib/puppet/indirector/file_metadata/file.rb +2 -2
  134. data/lib/puppet/indirector/file_metadata/rest.rb +0 -1
  135. data/lib/puppet/indirector/file_server.rb +31 -18
  136. data/lib/puppet/indirector/indirection.rb +46 -33
  137. data/lib/puppet/indirector/key/ca.rb +12 -0
  138. data/lib/puppet/indirector/key/file.rb +42 -0
  139. data/lib/puppet/indirector/node/active_record.rb +13 -0
  140. data/lib/puppet/indirector/node/ldap.rb +1 -1
  141. data/lib/puppet/indirector/queue.rb +83 -0
  142. data/lib/puppet/indirector/report/processor.rb +1 -1
  143. data/lib/puppet/indirector/report/rest.rb +7 -0
  144. data/lib/puppet/indirector/request.rb +158 -15
  145. data/lib/puppet/indirector/rest.rb +74 -36
  146. data/lib/puppet/indirector/runner/rest.rb +7 -0
  147. data/lib/puppet/indirector/ssl_file.rb +174 -0
  148. data/lib/puppet/indirector/terminus.rb +4 -4
  149. data/lib/puppet/indirector/yaml.rb +1 -1
  150. data/lib/puppet/metatype/manager.rb +3 -3
  151. data/lib/puppet/module.rb +99 -124
  152. data/lib/puppet/network/authconfig.rb +57 -42
  153. data/lib/puppet/network/authstore.rb +58 -10
  154. data/lib/puppet/network/client.rb +0 -2
  155. data/lib/puppet/network/client/ca.rb +1 -1
  156. data/lib/puppet/network/client/dipper.rb +7 -2
  157. data/lib/puppet/network/format.rb +123 -0
  158. data/lib/puppet/network/format_handler.rb +156 -0
  159. data/lib/puppet/network/formats.rb +123 -0
  160. data/lib/puppet/network/handler/filebucket.rb +1 -1
  161. data/lib/puppet/network/handler/fileserver.rb +43 -35
  162. data/lib/puppet/network/handler/master.rb +4 -4
  163. data/lib/puppet/network/handler/report.rb +1 -1
  164. data/lib/puppet/network/handler/resource.rb +16 -20
  165. data/lib/puppet/network/handler/runner.rb +9 -42
  166. data/lib/puppet/network/http.rb +4 -4
  167. data/lib/puppet/network/http/api.rb +4 -0
  168. data/lib/puppet/network/http/api/v1.rb +65 -0
  169. data/lib/puppet/network/http/handler.rb +163 -56
  170. data/lib/puppet/network/http/mongrel.rb +19 -15
  171. data/lib/puppet/network/http/mongrel/rest.rb +35 -17
  172. data/lib/puppet/network/http/rack.rb +62 -0
  173. data/lib/puppet/network/http/rack/httphandler.rb +34 -0
  174. data/lib/puppet/network/http/rack/rest.rb +79 -0
  175. data/lib/puppet/network/http/rack/xmlrpc.rb +65 -0
  176. data/lib/puppet/network/http/webrick.rb +89 -16
  177. data/lib/puppet/network/http/webrick/rest.rb +24 -11
  178. data/lib/puppet/network/http_pool.rb +28 -29
  179. data/lib/puppet/network/http_server/mongrel.rb +8 -10
  180. data/lib/puppet/network/http_server/webrick.rb +1 -3
  181. data/lib/puppet/network/rest_authconfig.rb +89 -0
  182. data/lib/puppet/network/rest_authorization.rb +25 -0
  183. data/lib/puppet/network/rights.rb +230 -27
  184. data/lib/puppet/network/server.rb +133 -31
  185. data/lib/puppet/network/xmlrpc/client.rb +5 -5
  186. data/lib/puppet/network/xmlrpc/webrick_servlet.rb +6 -6
  187. data/lib/puppet/node.rb +28 -21
  188. data/lib/puppet/node/environment.rb +48 -0
  189. data/lib/puppet/node/facts.rb +21 -0
  190. data/lib/puppet/parameter.rb +291 -219
  191. data/lib/puppet/parser/ast.rb +1 -0
  192. data/lib/puppet/parser/ast/astarray.rb +5 -1
  193. data/lib/puppet/parser/ast/boolean_operator.rb +3 -3
  194. data/lib/puppet/parser/ast/caseopt.rb +10 -0
  195. data/lib/puppet/parser/ast/casestatement.rb +12 -27
  196. data/lib/puppet/parser/ast/collection.rb +31 -0
  197. data/lib/puppet/parser/ast/collexpr.rb +18 -11
  198. data/lib/puppet/parser/ast/comparison_operator.rb +1 -1
  199. data/lib/puppet/parser/ast/definition.rb +6 -2
  200. data/lib/puppet/parser/ast/function.rb +7 -2
  201. data/lib/puppet/parser/ast/ifstatement.rb +11 -6
  202. data/lib/puppet/parser/ast/leaf.rb +106 -3
  203. data/lib/puppet/parser/ast/match_operator.rb +31 -0
  204. data/lib/puppet/parser/ast/node.rb +10 -6
  205. data/lib/puppet/parser/ast/resource_defaults.rb +2 -2
  206. data/lib/puppet/parser/ast/resource_override.rb +1 -1
  207. data/lib/puppet/parser/ast/resource_reference.rb +11 -3
  208. data/lib/puppet/parser/ast/selector.rb +14 -32
  209. data/lib/puppet/parser/ast/vardef.rb +1 -1
  210. data/lib/puppet/parser/collector.rb +67 -15
  211. data/lib/puppet/parser/compiler.rb +21 -53
  212. data/lib/puppet/parser/files.rb +92 -0
  213. data/lib/puppet/parser/functions.rb +3 -3
  214. data/lib/puppet/parser/functions/defined.rb +3 -3
  215. data/lib/puppet/parser/functions/fqdn_rand.rb +3 -3
  216. data/lib/puppet/parser/functions/inline_template.rb +4 -4
  217. data/lib/puppet/parser/functions/regsubst.rb +37 -35
  218. data/lib/puppet/parser/functions/require.rb +34 -0
  219. data/lib/puppet/parser/functions/shellquote.rb +41 -0
  220. data/lib/puppet/parser/functions/split.rb +29 -0
  221. data/lib/puppet/parser/functions/sprintf.rb +6 -6
  222. data/lib/puppet/parser/functions/template.rb +4 -4
  223. data/lib/puppet/parser/functions/versioncmp.rb +22 -1
  224. data/lib/puppet/parser/grammar.ra +812 -0
  225. data/lib/puppet/parser/interpreter.rb +4 -4
  226. data/lib/puppet/parser/lexer.rb +44 -15
  227. data/lib/puppet/parser/loaded_code.rb +115 -0
  228. data/lib/puppet/parser/makefile +8 -0
  229. data/lib/puppet/parser/parser.rb +1080 -928
  230. data/lib/puppet/parser/parser_support.rb +118 -96
  231. data/lib/puppet/parser/resource.rb +56 -126
  232. data/lib/puppet/parser/resource/param.rb +2 -76
  233. data/lib/puppet/parser/resource/reference.rb +15 -8
  234. data/lib/puppet/parser/scope.rb +68 -35
  235. data/lib/puppet/parser/templatewrapper.rb +8 -8
  236. data/lib/puppet/parser/yaml_trimmer.rb +11 -0
  237. data/lib/puppet/property.rb +69 -124
  238. data/lib/puppet/property/list.rb +3 -3
  239. data/lib/puppet/provider.rb +5 -5
  240. data/lib/puppet/provider/augeas/augeas.rb +119 -118
  241. data/lib/puppet/provider/computer/computer.rb +3 -3
  242. data/lib/puppet/provider/confine/variable.rb +1 -1
  243. data/lib/puppet/provider/cron/crontab.rb +8 -7
  244. data/lib/puppet/provider/group/directoryservice.rb +2 -2
  245. data/lib/puppet/provider/group/groupadd.rb +1 -1
  246. data/lib/puppet/provider/group/ldap.rb +3 -3
  247. data/lib/puppet/provider/group/pw.rb +1 -1
  248. data/lib/puppet/provider/host/parsed.rb +3 -3
  249. data/lib/puppet/provider/ldap.rb +1 -3
  250. data/lib/puppet/provider/macauthorization/macauthorization.rb +62 -55
  251. data/lib/puppet/provider/mailalias/aliases.rb +9 -1
  252. data/lib/puppet/provider/maillist/mailman.rb +8 -4
  253. data/lib/puppet/provider/mcx/mcxcontent.rb +11 -11
  254. data/lib/puppet/provider/mount/parsed.rb +2 -2
  255. data/lib/puppet/provider/nameservice.rb +6 -6
  256. data/lib/puppet/provider/nameservice/directoryservice.rb +83 -87
  257. data/lib/puppet/provider/package/appdmg.rb +10 -9
  258. data/lib/puppet/provider/package/apple.rb +1 -3
  259. data/lib/puppet/provider/package/apt.rb +5 -5
  260. data/lib/puppet/provider/package/aptitude.rb +1 -1
  261. data/lib/puppet/provider/package/aptrpm.rb +1 -1
  262. data/lib/puppet/provider/package/darwinport.rb +1 -1
  263. data/lib/puppet/provider/package/dpkg.rb +2 -2
  264. data/lib/puppet/provider/package/fink.rb +6 -6
  265. data/lib/puppet/provider/package/freebsd.rb +1 -1
  266. data/lib/puppet/provider/package/gem.rb +2 -2
  267. data/lib/puppet/provider/package/hpux.rb +5 -5
  268. data/lib/puppet/provider/package/pkgdmg.rb +30 -22
  269. data/lib/puppet/provider/package/portage.rb +1 -1
  270. data/lib/puppet/provider/package/ports.rb +1 -1
  271. data/lib/puppet/provider/package/rpm.rb +5 -5
  272. data/lib/puppet/provider/package/rug.rb +1 -1
  273. data/lib/puppet/provider/package/sun.rb +7 -7
  274. data/lib/puppet/provider/package/up2date.rb +1 -1
  275. data/lib/puppet/provider/package/yum.rb +2 -2
  276. data/lib/puppet/provider/package/yumhelper.py +2 -2
  277. data/lib/puppet/provider/port/parsed.rb +1 -1
  278. data/lib/puppet/provider/selmodule/semodule.rb +3 -3
  279. data/lib/puppet/provider/service/base.rb +21 -12
  280. data/lib/puppet/provider/service/daemontools.rb +86 -49
  281. data/lib/puppet/provider/service/debian.rb +20 -12
  282. data/lib/puppet/provider/service/freebsd.rb +5 -5
  283. data/lib/puppet/provider/service/gentoo.rb +2 -2
  284. data/lib/puppet/provider/service/init.rb +21 -33
  285. data/lib/puppet/provider/service/launchd.rb +120 -48
  286. data/lib/puppet/provider/service/redhat.rb +12 -21
  287. data/lib/puppet/provider/service/runit.rb +19 -9
  288. data/lib/puppet/provider/service/smf.rb +49 -34
  289. data/lib/puppet/provider/ssh_authorized_key/parsed.rb +34 -0
  290. data/lib/puppet/provider/sshkey/parsed.rb +2 -2
  291. data/lib/puppet/provider/user/directoryservice.rb +12 -29
  292. data/lib/puppet/provider/user/hpux.rb +3 -3
  293. data/lib/puppet/provider/user/ldap.rb +2 -2
  294. data/lib/puppet/provider/zfs/solaris.rb +1 -1
  295. data/lib/puppet/provider/zone/solaris.rb +4 -4
  296. data/lib/puppet/provider/zpool/solaris.rb +3 -3
  297. data/lib/puppet/rails.rb +9 -9
  298. data/lib/puppet/rails/benchmark.rb +69 -0
  299. data/lib/puppet/rails/database/001_add_created_at_to_all_tables.rb +5 -5
  300. data/lib/puppet/rails/database/002_remove_duplicated_index_on_all_tables.rb +2 -2
  301. data/lib/puppet/rails/database/003_add_environment_to_host.rb +1 -1
  302. data/lib/puppet/rails/database/schema.rb +8 -8
  303. data/lib/puppet/rails/fact_value.rb +1 -1
  304. data/lib/puppet/rails/host.rb +211 -93
  305. data/lib/puppet/rails/param_name.rb +5 -1
  306. data/lib/puppet/rails/param_value.rb +29 -2
  307. data/lib/puppet/rails/puppet_tag.rb +5 -0
  308. data/lib/puppet/rails/resource.rb +120 -20
  309. data/lib/puppet/rails/resource_tag.rb +1 -1
  310. data/lib/puppet/rails/source_file.rb +1 -1
  311. data/lib/puppet/reference/configuration.rb +14 -14
  312. data/lib/puppet/reference/function.rb +1 -1
  313. data/lib/puppet/reference/metaparameter.rb +48 -0
  314. data/lib/puppet/reference/providers.rb +6 -6
  315. data/lib/puppet/reference/type.rb +1 -37
  316. data/lib/puppet/relationship.rb +57 -30
  317. data/lib/puppet/reports/rrdgraph.rb +4 -4
  318. data/lib/puppet/reports/store.rb +3 -3
  319. data/lib/puppet/reports/tagmail.rb +15 -15
  320. data/lib/puppet/resource.rb +265 -0
  321. data/lib/puppet/{node → resource}/catalog.rb +188 -112
  322. data/lib/puppet/{resource_reference.rb → resource/reference.rb} +46 -24
  323. data/lib/puppet/simple_graph.rb +165 -27
  324. data/lib/puppet/ssl.rb +7 -0
  325. data/lib/puppet/ssl/base.rb +62 -0
  326. data/lib/puppet/ssl/certificate.rb +34 -0
  327. data/lib/puppet/ssl/certificate_authority.rb +298 -0
  328. data/lib/puppet/ssl/certificate_authority/interface.rb +118 -0
  329. data/lib/puppet/ssl/certificate_factory.rb +145 -0
  330. data/lib/puppet/ssl/certificate_request.rb +51 -0
  331. data/lib/puppet/ssl/certificate_revocation_list.rb +86 -0
  332. data/lib/puppet/ssl/host.rb +271 -0
  333. data/lib/puppet/ssl/inventory.rb +52 -0
  334. data/lib/puppet/ssl/key.rb +56 -0
  335. data/lib/puppet/sslcertificates.rb +6 -6
  336. data/lib/puppet/sslcertificates/ca.rb +15 -15
  337. data/lib/puppet/sslcertificates/certificate.rb +4 -4
  338. data/lib/puppet/sslcertificates/inventory.rb +3 -3
  339. data/lib/puppet/transaction.rb +113 -139
  340. data/lib/puppet/transaction/change.rb +6 -6
  341. data/lib/puppet/transaction/event.rb +1 -1
  342. data/lib/puppet/transaction/report.rb +7 -1
  343. data/lib/puppet/transportable.rb +28 -28
  344. data/lib/puppet/type.rb +263 -688
  345. data/lib/puppet/type/augeas.rb +3 -2
  346. data/lib/puppet/type/component.rb +28 -95
  347. data/lib/puppet/type/computer.rb +10 -10
  348. data/lib/puppet/type/cron.rb +19 -14
  349. data/lib/puppet/type/exec.rb +21 -20
  350. data/lib/puppet/type/file.rb +306 -633
  351. data/lib/puppet/type/file/checksum.rb +10 -11
  352. data/lib/puppet/type/file/content.rb +83 -22
  353. data/lib/puppet/type/file/ensure.rb +15 -9
  354. data/lib/puppet/type/file/group.rb +7 -1
  355. data/lib/puppet/type/file/mode.rb +1 -1
  356. data/lib/puppet/type/file/owner.rb +9 -3
  357. data/lib/puppet/type/file/selcontext.rb +4 -4
  358. data/lib/puppet/type/file/source.rb +78 -179
  359. data/lib/puppet/type/file/target.rb +3 -3
  360. data/lib/puppet/type/file/type.rb +2 -2
  361. data/lib/puppet/type/filebucket.rb +33 -54
  362. data/lib/puppet/type/group.rb +8 -8
  363. data/lib/puppet/type/host.rb +7 -7
  364. data/lib/puppet/type/k5login.rb +2 -2
  365. data/lib/puppet/type/macauthorization.rb +77 -52
  366. data/lib/puppet/type/mailalias.rb +2 -2
  367. data/lib/puppet/type/maillist.rb +2 -2
  368. data/lib/puppet/type/mcx.rb +3 -3
  369. data/lib/puppet/type/mount.rb +16 -11
  370. data/lib/puppet/type/notify.rb +4 -4
  371. data/lib/puppet/type/package.rb +6 -28
  372. data/lib/puppet/type/port.rb +1 -1
  373. data/lib/puppet/type/resources.rb +19 -19
  374. data/lib/puppet/type/schedule.rb +18 -20
  375. data/lib/puppet/type/selmodule.rb +1 -1
  376. data/lib/puppet/type/service.rb +11 -7
  377. data/lib/puppet/type/ssh_authorized_key.rb +26 -9
  378. data/lib/puppet/type/sshkey.rb +2 -2
  379. data/lib/puppet/type/tidy.rb +285 -289
  380. data/lib/puppet/type/user.rb +9 -7
  381. data/lib/puppet/type/yumrepo.rb +17 -16
  382. data/lib/puppet/type/zone.rb +8 -7
  383. data/lib/puppet/util.rb +11 -36
  384. data/lib/puppet/util/autoload.rb +31 -19
  385. data/lib/puppet/util/autoload/file_cache.rb +115 -0
  386. data/lib/puppet/util/backups.rb +86 -0
  387. data/lib/puppet/util/cacher.rb +135 -0
  388. data/lib/puppet/util/checksums.rb +11 -1
  389. data/lib/puppet/util/classgen.rb +1 -1
  390. data/lib/puppet/util/config_store.rb +2 -2
  391. data/lib/puppet/util/constant_inflector.rb +1 -1
  392. data/lib/puppet/util/diff.rb +2 -2
  393. data/lib/puppet/util/docs.rb +9 -3
  394. data/lib/puppet/util/execution.rb +1 -1
  395. data/lib/puppet/util/feature.rb +27 -20
  396. data/lib/puppet/util/fileparsing.rb +3 -3
  397. data/lib/puppet/util/filetype.rb +8 -6
  398. data/lib/puppet/util/graph.rb +5 -5
  399. data/lib/puppet/util/inifile.rb +5 -5
  400. data/lib/puppet/util/json.rb +13 -0
  401. data/lib/puppet/util/ldap/connection.rb +2 -2
  402. data/lib/puppet/util/log.rb +48 -31
  403. data/lib/puppet/util/metric.rb +4 -4
  404. data/lib/puppet/util/monkey_patches.rb +43 -0
  405. data/lib/puppet/util/nagios_maker.rb +1 -1
  406. data/lib/puppet/util/package.rb +4 -4
  407. data/lib/puppet/util/pidlock.rb +59 -59
  408. data/lib/puppet/util/posix.rb +13 -52
  409. data/lib/puppet/util/provider_features.rb +3 -3
  410. data/lib/puppet/util/queue.rb +96 -0
  411. data/lib/puppet/util/queue/stomp.rb +47 -0
  412. data/lib/puppet/util/rails/cache_accumulator.rb +65 -0
  413. data/lib/puppet/util/rails/collection_merger.rb +0 -39
  414. data/lib/puppet/util/rails/reference_serializer.rb +17 -3
  415. data/lib/puppet/util/rdoc.rb +1 -0
  416. data/lib/puppet/util/rdoc/code_objects.rb +5 -1
  417. data/lib/puppet/util/rdoc/generators/puppet_generator.rb +5 -5
  418. data/lib/puppet/util/rdoc/generators/template/puppet/puppet.rb +13 -13
  419. data/lib/puppet/util/rdoc/parser.rb +28 -32
  420. data/lib/puppet/util/reference.rb +29 -8
  421. data/lib/puppet/util/resource_template.rb +1 -1
  422. data/lib/puppet/util/selinux.rb +12 -6
  423. data/lib/puppet/util/settings.rb +203 -578
  424. data/lib/puppet/util/settings/boolean_setting.rb +33 -0
  425. data/lib/puppet/util/settings/file_setting.rb +119 -0
  426. data/lib/puppet/util/settings/setting.rb +110 -0
  427. data/lib/puppet/util/subclass_loader.rb +1 -1
  428. data/lib/puppet/util/suidmanager.rb +2 -2
  429. data/lib/puppet/util/tagging.rb +1 -1
  430. data/lib/puppet/util/warnings.rb +17 -9
  431. data/man/man8/filebucket.8 +2 -2
  432. data/man/man8/pi.8 +2 -2
  433. data/man/man8/puppet.8 +3 -4
  434. data/man/man8/puppet.conf.8 +63 -63
  435. data/man/man8/puppetca.8 +2 -2
  436. data/man/man8/puppetd.8 +2 -2
  437. data/man/man8/puppetdoc.8 +2 -2
  438. data/man/man8/puppetmasterd.8 +2 -2
  439. data/man/man8/puppetrun.8 +2 -2
  440. data/man/man8/ralsh.8 +3 -3
  441. data/sbin/puppetca +102 -0
  442. data/sbin/puppetd +159 -0
  443. data/sbin/puppetmasterd +66 -0
  444. data/sbin/puppetqd +53 -0
  445. data/sbin/puppetrun +130 -0
  446. data/spec/Rakefile +2 -2
  447. data/spec/integration/application/puppet.rb +33 -0
  448. data/spec/integration/bin/puppetmasterd.rb +110 -0
  449. data/spec/integration/configurer.rb +18 -0
  450. data/spec/integration/defaults.rb +158 -7
  451. data/spec/integration/file_serving/content.rb +2 -0
  452. data/spec/integration/file_serving/fileset.rb +14 -0
  453. data/spec/integration/file_serving/metadata.rb +2 -0
  454. data/spec/integration/file_serving/terminus_helper.rb +22 -0
  455. data/spec/integration/indirector/catalog/compiler.rb +67 -0
  456. data/spec/integration/indirector/catalog/queue.rb +61 -0
  457. data/spec/integration/indirector/certificate/rest.rb +69 -0
  458. data/spec/integration/indirector/certificate_request/rest.rb +89 -0
  459. data/spec/integration/indirector/certificate_revocation_list/rest.rb +77 -0
  460. data/spec/integration/indirector/direct_file_server.rb +16 -23
  461. data/spec/integration/indirector/file_content/file_server.rb +75 -0
  462. data/spec/integration/indirector/report/rest.rb +95 -0
  463. data/spec/integration/indirector/rest.rb +207 -147
  464. data/spec/integration/network/client.rb +19 -0
  465. data/spec/integration/network/formats.rb +110 -0
  466. data/spec/integration/network/handler.rb +25 -0
  467. data/spec/integration/network/server/mongrel.rb +26 -8
  468. data/spec/integration/network/server/webrick.rb +49 -11
  469. data/spec/integration/node/environment.rb +58 -0
  470. data/spec/integration/node/facts.rb +4 -2
  471. data/spec/integration/parser/compiler.rb +29 -0
  472. data/spec/integration/parser/functions/require.rb +67 -0
  473. data/spec/integration/provider/mailalias/aliases.rb +25 -0
  474. data/spec/integration/{node → resource}/catalog.rb +17 -10
  475. data/spec/integration/ssl/certificate_authority.rb +135 -0
  476. data/spec/integration/ssl/certificate_request.rb +59 -0
  477. data/spec/integration/ssl/certificate_revocation_list.rb +42 -0
  478. data/spec/integration/ssl/host.rb +90 -0
  479. data/spec/integration/transaction.rb +66 -0
  480. data/spec/integration/transaction/report.rb +2 -5
  481. data/spec/integration/type.rb +22 -0
  482. data/spec/integration/type/file.rb +458 -0
  483. data/spec/integration/type/package.rb +1 -1
  484. data/spec/integration/type/tidy.rb +27 -0
  485. data/spec/integration/util/autoload.rb +114 -0
  486. data/spec/integration/util/feature.rb +54 -0
  487. data/spec/integration/util/file_locking.rb +2 -1
  488. data/spec/integration/util/settings.rb +27 -0
  489. data/spec/lib/puppet_spec/files.rb +9 -0
  490. data/spec/monkey_patches/add_confine_and_runnable_to_rspec_dsl.rb +1 -0
  491. data/spec/monkey_patches/alias_should_to_must.rb +1 -0
  492. data/spec/shared_behaviours/file_server_terminus.rb +14 -11
  493. data/spec/shared_behaviours/file_serving.rb +13 -17
  494. data/spec/spec_helper.rb +22 -5
  495. data/spec/unit/agent.rb +259 -0
  496. data/spec/unit/agent/locker.rb +100 -0
  497. data/spec/unit/agent/runner.rb +118 -0
  498. data/spec/unit/application.rb +420 -0
  499. data/spec/unit/application/filebucket.rb +220 -0
  500. data/spec/unit/application/pi.rb +84 -0
  501. data/spec/unit/application/puppet.rb +404 -0
  502. data/spec/unit/application/puppetca.rb +142 -0
  503. data/spec/unit/application/puppetd.rb +502 -0
  504. data/spec/unit/application/puppetdoc.rb +345 -0
  505. data/spec/unit/application/puppetmasterd.rb +456 -0
  506. data/spec/unit/application/puppetqd.rb +186 -0
  507. data/spec/unit/application/puppetrun.rb +279 -0
  508. data/spec/unit/application/ralsh.rb +237 -0
  509. data/spec/unit/configurer.rb +232 -0
  510. data/spec/unit/configurer/downloader.rb +188 -0
  511. data/spec/unit/configurer/fact_handler.rb +150 -0
  512. data/spec/unit/configurer/plugin_handler.rb +112 -0
  513. data/spec/unit/daemon.rb +287 -0
  514. data/spec/unit/file_serving/{file_base.rb → base.rb} +39 -31
  515. data/spec/unit/file_serving/configuration.rb +104 -93
  516. data/spec/unit/file_serving/configuration/parser.rb +64 -18
  517. data/spec/unit/file_serving/content.rb +65 -26
  518. data/spec/unit/file_serving/fileset.rb +116 -14
  519. data/spec/unit/file_serving/indirection_hooks.rb +34 -95
  520. data/spec/unit/file_serving/metadata.rb +27 -40
  521. data/spec/unit/file_serving/mount.rb +7 -118
  522. data/spec/unit/file_serving/mount/file.rb +188 -0
  523. data/spec/unit/file_serving/mount/modules.rb +63 -0
  524. data/spec/unit/file_serving/mount/plugins.rb +61 -0
  525. data/spec/unit/file_serving/terminus_helper.rb +39 -27
  526. data/spec/unit/indirector.rb +6 -1
  527. data/spec/unit/indirector/active_record.rb +76 -0
  528. data/spec/unit/indirector/catalog/active_record.rb +122 -0
  529. data/spec/unit/indirector/catalog/compiler.rb +222 -118
  530. data/spec/unit/indirector/catalog/queue.rb +20 -0
  531. data/spec/unit/indirector/catalog/rest.rb +11 -0
  532. data/spec/unit/indirector/catalog/yaml.rb +6 -6
  533. data/spec/unit/indirector/certificate/ca.rb +28 -0
  534. data/spec/unit/indirector/certificate/file.rb +28 -0
  535. data/spec/unit/indirector/certificate/rest.rb +23 -0
  536. data/spec/unit/indirector/certificate_request/ca.rb +19 -0
  537. data/spec/unit/indirector/certificate_request/file.rb +19 -0
  538. data/spec/unit/indirector/certificate_request/rest.rb +23 -0
  539. data/spec/unit/indirector/certificate_revocation_list/ca.rb +21 -0
  540. data/spec/unit/indirector/certificate_revocation_list/file.rb +20 -0
  541. data/spec/unit/indirector/certificate_revocation_list/rest.rb +23 -0
  542. data/spec/unit/indirector/direct_file_server.rb +3 -8
  543. data/spec/unit/indirector/exec.rb +6 -1
  544. data/spec/unit/indirector/facts/active_record.rb +104 -0
  545. data/spec/unit/indirector/facts/facter.rb +53 -12
  546. data/spec/unit/indirector/facts/rest.rb +11 -0
  547. data/spec/unit/indirector/file.rb +8 -1
  548. data/spec/unit/indirector/file_metadata/file.rb +5 -5
  549. data/spec/unit/indirector/file_server.rb +181 -98
  550. data/spec/unit/indirector/indirection.rb +102 -38
  551. data/spec/unit/indirector/key/ca.rb +28 -0
  552. data/spec/unit/indirector/key/file.rb +104 -0
  553. data/spec/unit/indirector/node/active_record.rb +34 -0
  554. data/spec/unit/indirector/node/ldap.rb +1 -1
  555. data/spec/unit/indirector/node/rest.rb +2 -2
  556. data/spec/unit/indirector/queue.rb +123 -0
  557. data/spec/unit/indirector/report/rest.rb +28 -0
  558. data/spec/unit/indirector/request.rb +221 -0
  559. data/spec/unit/indirector/rest.rb +343 -334
  560. data/spec/unit/indirector/runner/rest.rb +11 -0
  561. data/spec/unit/indirector/ssl_file.rb +280 -0
  562. data/spec/unit/module.rb +180 -180
  563. data/spec/unit/network/authconfig.rb +292 -0
  564. data/spec/unit/network/authstore.rb +94 -0
  565. data/spec/unit/network/client.rb +2 -2
  566. data/spec/unit/network/client/dipper.rb +16 -0
  567. data/spec/unit/network/format.rb +191 -0
  568. data/spec/unit/network/format_handler.rb +306 -0
  569. data/spec/unit/network/formats.rb +249 -0
  570. data/spec/unit/network/handler/fileserver.rb +2 -5
  571. data/spec/unit/network/http.rb +3 -3
  572. data/spec/unit/network/http/api/v1.rb +122 -0
  573. data/spec/unit/network/http/handler.rb +448 -0
  574. data/spec/unit/network/http/mongrel.rb +46 -32
  575. data/spec/unit/network/http/mongrel/rest.rb +174 -319
  576. data/spec/unit/network/http/rack.rb +102 -0
  577. data/spec/unit/network/http/rack/rest.rb +199 -0
  578. data/spec/unit/network/http/rack/xmlrpc.rb +157 -0
  579. data/spec/unit/network/http/webrick.rb +249 -37
  580. data/spec/unit/network/http/webrick/rest.rb +113 -279
  581. data/spec/unit/network/http_pool.rb +86 -110
  582. data/spec/unit/network/rest_authconfig.rb +146 -0
  583. data/spec/unit/network/rest_authorization.rb +43 -0
  584. data/spec/unit/network/rights.rb +519 -0
  585. data/spec/unit/network/server.rb +475 -257
  586. data/spec/unit/node.rb +43 -10
  587. data/spec/unit/node/environment.rb +143 -9
  588. data/spec/unit/node/facts.rb +77 -24
  589. data/spec/unit/other/selinux.rb +85 -0
  590. data/spec/unit/other/transbucket.rb +29 -13
  591. data/spec/unit/other/transobject.rb +35 -15
  592. data/spec/unit/parameter.rb +378 -5
  593. data/spec/unit/parser/ast.rb +1 -1
  594. data/spec/unit/parser/ast/arithmetic_operator.rb +17 -17
  595. data/spec/unit/parser/ast/astarray.rb +16 -10
  596. data/spec/unit/parser/ast/boolean_operator.rb +2 -2
  597. data/spec/unit/parser/ast/casestatement.rb +143 -0
  598. data/spec/unit/parser/ast/collection.rb +63 -0
  599. data/spec/unit/parser/ast/collexpr.rb +31 -8
  600. data/spec/unit/parser/ast/comparison_operator.rb +9 -9
  601. data/spec/unit/parser/ast/definition.rb +18 -0
  602. data/spec/unit/parser/ast/function.rb +6 -0
  603. data/spec/unit/parser/ast/ifstatement.rb +75 -0
  604. data/spec/unit/parser/ast/leaf.rb +261 -0
  605. data/spec/unit/parser/ast/match_operator.rb +50 -0
  606. data/spec/unit/parser/ast/minus.rb +1 -1
  607. data/spec/unit/parser/ast/node.rb +20 -0
  608. data/spec/unit/parser/ast/not.rb +1 -1
  609. data/spec/unit/parser/ast/resource_override.rb +5 -5
  610. data/spec/unit/parser/ast/resource_reference.rb +11 -5
  611. data/spec/unit/parser/ast/selector.rb +156 -0
  612. data/spec/unit/parser/ast/vardef.rb +11 -11
  613. data/spec/unit/parser/collector.rb +167 -48
  614. data/spec/unit/parser/compiler.rb +128 -104
  615. data/spec/unit/parser/files.rb +190 -0
  616. data/spec/unit/parser/functions/inline_template.rb +0 -0
  617. data/spec/unit/parser/functions/regsubst.rb +42 -42
  618. data/spec/unit/parser/functions/require.rb +36 -0
  619. data/spec/unit/parser/functions/shellquote.rb +92 -0
  620. data/spec/unit/parser/functions/split.rb +51 -0
  621. data/spec/unit/parser/functions/sprintf.rb +11 -11
  622. data/spec/unit/parser/functions/template.rb +0 -0
  623. data/spec/unit/parser/functions/versioncmp.rb +2 -2
  624. data/spec/unit/parser/interpreter.rb +16 -7
  625. data/spec/unit/parser/lexer.rb +72 -12
  626. data/spec/unit/parser/loaded_code.rb +198 -0
  627. data/spec/unit/parser/parser.rb +215 -28
  628. data/spec/unit/parser/resource.rb +131 -22
  629. data/spec/unit/parser/scope.rb +207 -12
  630. data/spec/unit/parser/templatewrapper.rb +8 -3
  631. data/spec/unit/property.rb +270 -16
  632. data/spec/unit/property/list.rb +12 -6
  633. data/spec/unit/provider.rb +31 -0
  634. data/spec/unit/provider/augeas/augeas.rb +61 -33
  635. data/spec/unit/provider/macauthorization.rb +29 -29
  636. data/spec/unit/provider/mcx/mcxcontent.rb +4 -4
  637. data/spec/unit/provider/mount/parsed.rb +5 -8
  638. data/spec/unit/provider/naginator.rb +0 -0
  639. data/spec/unit/provider/package/apt.rb +6 -6
  640. data/spec/unit/provider/package/pkgdmg.rb +73 -0
  641. data/spec/unit/provider/selboolean.rb +1 -1
  642. data/spec/unit/provider/selmodule.rb +2 -2
  643. data/spec/unit/provider/service/daemontools.rb +40 -15
  644. data/spec/unit/provider/service/debian.rb +89 -0
  645. data/spec/unit/provider/service/init.rb +106 -0
  646. data/spec/unit/provider/service/launchd.rb +71 -13
  647. data/spec/unit/provider/service/redhat.rb +94 -0
  648. data/spec/unit/provider/service/runit.rb +14 -2
  649. data/spec/unit/provider/ssh_authorized_key/parsed.rb +66 -2
  650. data/spec/unit/provider/user/ldap.rb +1 -1
  651. data/spec/unit/provider/user/user_role_add.rb +1 -1
  652. data/spec/unit/provider/zfs/solaris.rb +18 -6
  653. data/spec/unit/provider/zone/solaris.rb +1 -1
  654. data/spec/unit/rails.rb +16 -22
  655. data/spec/unit/rails/host.rb +163 -0
  656. data/spec/unit/rails/param_value.rb +49 -0
  657. data/spec/unit/rails/resource.rb +87 -0
  658. data/spec/unit/relationship.rb +141 -29
  659. data/spec/unit/resource.rb +504 -0
  660. data/spec/unit/resource/catalog.rb +1061 -0
  661. data/spec/unit/resource/reference.rb +111 -0
  662. data/spec/unit/simple_graph.rb +448 -191
  663. data/spec/unit/ssl/certificate.rb +124 -0
  664. data/spec/unit/ssl/certificate_authority.rb +741 -0
  665. data/spec/unit/ssl/certificate_authority/interface.rb +269 -0
  666. data/spec/unit/ssl/certificate_factory.rb +107 -0
  667. data/spec/unit/ssl/certificate_request.rb +193 -0
  668. data/spec/unit/ssl/certificate_revocation_list.rb +180 -0
  669. data/spec/unit/ssl/host.rb +704 -0
  670. data/spec/unit/ssl/inventory.rb +180 -0
  671. data/spec/unit/ssl/key.rb +198 -0
  672. data/spec/unit/transaction.rb +65 -2
  673. data/spec/unit/transaction/change.rb +1 -1
  674. data/spec/unit/transaction/report.rb +1 -1
  675. data/spec/unit/type.rb +361 -8
  676. data/spec/unit/type/augeas.rb +30 -37
  677. data/spec/unit/type/component.rb +63 -0
  678. data/spec/unit/type/computer.rb +17 -21
  679. data/spec/unit/type/exec.rb +27 -2
  680. data/spec/unit/type/file.rb +704 -83
  681. data/spec/unit/type/file/content.rb +253 -15
  682. data/spec/unit/type/file/ensure.rb +65 -2
  683. data/spec/unit/type/file/group.rb +5 -0
  684. data/spec/unit/type/file/owner.rb +5 -0
  685. data/spec/unit/type/file/selinux.rb +12 -16
  686. data/spec/unit/type/file/source.rb +264 -0
  687. data/spec/unit/type/filebucket.rb +74 -0
  688. data/spec/unit/type/group.rb +1 -5
  689. data/spec/unit/type/macauthorization.rb +59 -26
  690. data/spec/unit/type/mcx.rb +8 -16
  691. data/spec/unit/type/mount.rb +8 -16
  692. data/spec/unit/type/noop_metaparam.rb +0 -2
  693. data/spec/unit/type/package.rb +13 -23
  694. data/spec/unit/type/resources.rb +4 -7
  695. data/spec/unit/type/schedule.rb +1 -7
  696. data/spec/unit/type/selboolean.rb +4 -6
  697. data/spec/unit/type/service.rb +23 -33
  698. data/spec/unit/type/ssh_authorized_key.rb +25 -14
  699. data/spec/unit/type/tidy.rb +329 -21
  700. data/spec/unit/type/user.rb +18 -10
  701. data/spec/unit/type/zfs.rb +6 -6
  702. data/spec/unit/util/autoload.rb +94 -3
  703. data/spec/unit/util/autoload/file_cache.rb +183 -0
  704. data/spec/unit/util/backups.rb +159 -0
  705. data/spec/unit/util/cache_accumulator.rb +69 -0
  706. data/spec/unit/util/cacher.rb +185 -0
  707. data/spec/unit/util/checksums.rb +9 -1
  708. data/spec/unit/util/feature.rb +72 -0
  709. data/spec/unit/util/filetype.rb +1 -11
  710. data/spec/unit/util/json.rb +21 -0
  711. data/spec/unit/util/log.rb +45 -0
  712. data/spec/unit/util/package.rb +2 -2
  713. data/spec/unit/util/queue.rb +88 -0
  714. data/spec/unit/util/queue/stomp.rb +140 -0
  715. data/spec/unit/util/reference_serializer.rb +52 -0
  716. data/spec/unit/util/selinux.rb +5 -3
  717. data/spec/unit/util/settings.rb +413 -264
  718. data/spec/unit/util/settings/file_setting.rb +223 -0
  719. data/spec/unit/util/storage.rb +11 -11
  720. data/spec/unit/util/warnings.rb +21 -17
  721. data/test/Rakefile +6 -5
  722. data/test/certmgr/ca.rb +5 -5
  723. data/test/certmgr/certmgr.rb +4 -4
  724. data/test/data/providers/cron/crontab.allthree +2 -2
  725. data/test/data/providers/cron/crontab.envNcomment +1 -1
  726. data/test/data/providers/cron/crontab.envNname +1 -1
  727. data/test/data/providers/cron/crontab.multirecords +1 -1
  728. data/test/data/providers/cron/crontab_collections.yaml +14 -14
  729. data/test/data/providers/cron/crontab_multiple_with_env.yaml +6 -6
  730. data/test/data/providers/cron/crontab_sample_records.yaml +102 -102
  731. data/test/data/providers/mailalias/aliases/test1 +28 -0
  732. data/test/data/providers/package/testpackages.yaml +6 -6
  733. data/test/data/reports/1.yaml +17 -17
  734. data/test/data/reports/tagmail_passers.conf +2 -2
  735. data/test/data/snippets/append.pp +5 -5
  736. data/test/data/snippets/casestatement.pp +9 -2
  737. data/test/data/snippets/classincludes.pp +1 -1
  738. data/test/data/snippets/collection_override.pp +8 -0
  739. data/test/data/snippets/fqparents.pp +2 -2
  740. data/test/data/snippets/ifexpression.pp +12 -0
  741. data/test/data/snippets/multilinecomments.pp +5 -1
  742. data/test/data/snippets/selectorvalues.pp +7 -0
  743. data/test/data/types/hosts/1 +1 -1
  744. data/test/data/types/hosts/2 +3 -3
  745. data/test/data/types/hosts/solaris +2 -2
  746. data/test/data/types/mount/freebsd.fstab +7 -7
  747. data/test/data/types/mount/solaris.fstab +10 -10
  748. data/test/data/types/port/1 +472 -472
  749. data/test/data/types/port/darwin +4347 -4347
  750. data/test/language/ast.rb +3 -2
  751. data/test/language/ast/casestatement.rb +12 -12
  752. data/test/language/ast/resource.rb +4 -4
  753. data/test/language/ast/resource_reference.rb +5 -5
  754. data/test/language/ast/selector.rb +11 -11
  755. data/test/language/ast/variable.rb +4 -4
  756. data/test/language/functions.rb +16 -16
  757. data/test/language/parser.rb +89 -111
  758. data/test/language/resource.rb +3 -88
  759. data/test/language/scope.rb +14 -55
  760. data/test/language/snippets.rb +31 -31
  761. data/test/lib/puppettest.rb +12 -12
  762. data/test/lib/puppettest/certificates.rb +2 -2
  763. data/test/lib/puppettest/exetest.rb +0 -1
  764. data/test/lib/puppettest/fakes.rb +1 -1
  765. data/test/lib/puppettest/parsertesting.rb +9 -4
  766. data/test/lib/puppettest/railstesting.rb +3 -3
  767. data/test/lib/puppettest/servertest.rb +1 -1
  768. data/test/lib/puppettest/support/assertions.rb +2 -2
  769. data/test/lib/puppettest/support/collection.rb +1 -1
  770. data/test/lib/puppettest/support/resources.rb +7 -7
  771. data/test/lib/puppettest/support/utils.rb +10 -16
  772. data/test/lib/puppettest/testcase.rb +2 -1
  773. data/test/network/authconfig.rb +1 -1
  774. data/test/network/authorization.rb +1 -1
  775. data/test/network/authstore.rb +57 -14
  776. data/test/network/client/ca.rb +1 -0
  777. data/test/network/client/resource.rb +12 -50
  778. data/test/network/client_request.rb +1 -1
  779. data/test/network/handler/bucket.rb +2 -2
  780. data/test/network/handler/fileserver.rb +17 -21
  781. data/test/network/handler/master.rb +5 -5
  782. data/test/network/handler/report.rb +3 -3
  783. data/test/network/handler/resource.rb +29 -75
  784. data/test/network/handler/runner.rb +8 -58
  785. data/test/network/rights.rb +1 -1
  786. data/test/network/server/mongrel_test.rb +15 -1
  787. data/test/network/server/webrick.rb +0 -36
  788. data/test/network/xmlrpc/webrick_servlet.rb +5 -5
  789. data/test/other/dsl.rb +3 -3
  790. data/test/other/events.rb +15 -15
  791. data/test/other/puppet.rb +2 -32
  792. data/test/other/relationships.rb +21 -148
  793. data/test/other/report.rb +20 -23
  794. data/test/other/transactions.rb +110 -298
  795. data/test/puppet/defaults.rb +1 -1
  796. data/test/puppet/tc_suidmanager.rb +1 -1
  797. data/test/rails/railsparameter.rb +4 -4
  798. data/test/ral/manager/attributes.rb +12 -68
  799. data/test/ral/manager/instances.rb +3 -19
  800. data/test/ral/manager/manager.rb +7 -7
  801. data/test/ral/manager/provider.rb +7 -7
  802. data/test/ral/manager/type.rb +54 -349
  803. data/test/ral/providers/cron/crontab.rb +14 -14
  804. data/test/ral/providers/group.rb +5 -6
  805. data/test/ral/providers/host/parsed.rb +3 -3
  806. data/test/ral/providers/mailalias/aliases.rb +4 -4
  807. data/test/ral/providers/package.rb +3 -3
  808. data/test/ral/providers/package/aptitude.rb +55 -55
  809. data/test/ral/providers/package/aptrpm.rb +7 -7
  810. data/test/ral/providers/parsedfile.rb +10 -14
  811. data/test/ral/providers/port/parsed.rb +6 -6
  812. data/test/ral/providers/provider.rb +10 -10
  813. data/test/ral/providers/service/base.rb +32 -32
  814. data/test/ral/providers/sshkey/parsed.rb +14 -14
  815. data/test/ral/providers/user.rb +16 -17
  816. data/test/ral/providers/user/useradd.rb +19 -22
  817. data/test/ral/type/cron.rb +21 -28
  818. data/test/ral/type/exec.rb +57 -60
  819. data/test/ral/type/file.rb +88 -862
  820. data/test/ral/type/file/target.rb +21 -70
  821. data/test/ral/type/fileignoresource.rb +37 -44
  822. data/test/ral/type/filesources.rb +43 -473
  823. data/test/ral/type/group.rb +6 -7
  824. data/test/ral/type/host.rb +14 -30
  825. data/test/ral/type/mailalias.rb +3 -3
  826. data/test/ral/type/port.rb +5 -5
  827. data/test/ral/type/resources.rb +37 -37
  828. data/test/ral/type/service.rb +3 -3
  829. data/test/ral/type/sshkey.rb +34 -39
  830. data/test/ral/type/user.rb +15 -14
  831. data/test/ral/type/yumrepo.rb +18 -17
  832. data/test/ral/type/zone.rb +4 -6
  833. data/test/test +9 -9
  834. data/test/util/fileparsing.rb +10 -10
  835. data/test/util/inifile.rb +6 -6
  836. data/test/util/instance_loader.rb +1 -1
  837. data/test/util/log.rb +2 -2
  838. data/test/util/metrics.rb +1 -6
  839. data/test/util/package.rb +1 -1
  840. data/test/util/pidlock.rb +116 -116
  841. data/test/util/settings.rb +40 -429
  842. data/test/util/storage.rb +5 -5
  843. data/test/util/subclass_loader.rb +0 -7
  844. data/test/util/utiltest.rb +10 -29
  845. metadata +1369 -941
  846. data/bin/puppetca +0 -363
  847. data/bin/puppetd +0 -439
  848. data/bin/puppetmasterd +0 -289
  849. data/bin/puppetrun +0 -369
  850. data/conf/redhat/lsb-config.patch +0 -51
  851. data/conf/redhat/no-chuser-0.15.1.patch +0 -38
  852. data/conf/redhat/no-lockdir.patch +0 -13
  853. data/examples/mac_netinfo.pp +0 -5
  854. data/ext/passenger/README +0 -63
  855. data/ext/passenger/apache2.conf +0 -29
  856. data/ext/passenger/config.ru +0 -40
  857. data/lib/puppet/config_stores/rest.rb +0 -60
  858. data/lib/puppet/executables/client/certhandler.rb +0 -82
  859. data/lib/puppet/indirector/file_content/modules.rb +0 -11
  860. data/lib/puppet/indirector/file_metadata/modules.rb +0 -17
  861. data/lib/puppet/indirector/module_files.rb +0 -82
  862. data/lib/puppet/indirector/ssl_rsa.rb +0 -5
  863. data/lib/puppet/indirector/ssl_rsa/file.rb +0 -33
  864. data/lib/puppet/network/client/master.rb +0 -524
  865. data/lib/puppet/network/http_server/rack.rb +0 -148
  866. data/lib/puppet/pgraph.rb +0 -121
  867. data/lib/puppet/provider/group/netinfo.rb +0 -15
  868. data/lib/puppet/provider/host/netinfo.rb +0 -19
  869. data/lib/puppet/provider/mount/netinfo.rb +0 -37
  870. data/lib/puppet/provider/nameservice/netinfo.rb +0 -224
  871. data/lib/puppet/provider/user/netinfo.rb +0 -111
  872. data/lib/puppet/util/fact_store.rb +0 -59
  873. data/lib/puppet/util/uri_helper.rb +0 -22
  874. data/spec/integration/file_serving/configuration.rb +0 -43
  875. data/spec/integration/indirector/module_files.rb +0 -57
  876. data/spec/unit/executables/client/certhandler.rb +0 -135
  877. data/spec/unit/indirector/file_content/modules.rb +0 -18
  878. data/spec/unit/indirector/file_metadata/modules.rb +0 -42
  879. data/spec/unit/indirector/module_files.rb +0 -259
  880. data/spec/unit/indirector/ssl_rsa/file.rb +0 -121
  881. data/spec/unit/network/client/master.rb +0 -442
  882. data/spec/unit/node/catalog.rb +0 -865
  883. data/spec/unit/other/pgraph.rb +0 -210
  884. data/spec/unit/resource_reference.rb +0 -73
  885. data/spec/unit/util/uri_helper.rb +0 -41
  886. data/test/data/snippets/ifexpression.rb +0 -6
  887. data/test/executables/filebucket.rb +0 -51
  888. data/test/executables/puppetbin.rb +0 -104
  889. data/test/executables/puppetca.rb +0 -115
  890. data/test/executables/puppetd.rb +0 -55
  891. data/test/executables/puppetmasterd.rb +0 -147
  892. data/test/network/client/client.rb +0 -195
  893. data/test/network/client/master.rb +0 -490
  894. data/test/network/daemon.rb +0 -70
  895. data/test/network/handler/handler.rb +0 -63
  896. data/test/other/overrides.rb +0 -107
  897. data/test/puppet/conffiles.rb +0 -107
  898. data/test/rails/ast.rb +0 -73
  899. data/test/rails/configuration.rb +0 -71
  900. data/test/rails/host.rb +0 -154
  901. data/test/rails/railsresource.rb +0 -251
  902. data/test/ral/providers/host/netinfo.rb +0 -56
  903. data/test/ral/providers/mount/netinfo.rb +0 -79
  904. data/test/ral/type/basic.rb +0 -85
  905. data/test/ral/type/filebucket.rb +0 -157
  906. data/test/ral/type/parameter.rb +0 -174
  907. data/test/ral/type/property.rb +0 -388
  908. data/test/ral/type/tidy.rb +0 -291
  909. data/test/util/autoload.rb +0 -145
  910. data/test/util/features.rb +0 -95
@@ -0,0 +1,26 @@
1
+ # Break out the code related to plugins. This module is
2
+ # just included into the agent, but having it here makes it
3
+ # easier to test.
4
+ module Puppet::Configurer::PluginHandler
5
+ def download_plugins?
6
+ Puppet[:pluginsync]
7
+ end
8
+
9
+ # Retrieve facts from the central server.
10
+ def download_plugins
11
+ return nil unless download_plugins?
12
+ Puppet::Configurer::Downloader.new("plugin", Puppet[:plugindest], Puppet[:pluginsource], Puppet[:pluginsignore]).evaluate.each { |file| load_plugin(file) }
13
+ end
14
+
15
+ def load_plugin(file)
16
+ return unless FileTest.exist?(file)
17
+ return if FileTest.directory?(file)
18
+
19
+ begin
20
+ Puppet.info "Loading downloaded plugin %s" % file
21
+ load file
22
+ rescue Exception => detail
23
+ Puppet.err "Could not load downloaded file %s: %s" % [file, detail]
24
+ end
25
+ end
26
+ end
@@ -1,10 +1,11 @@
1
1
  require 'puppet'
2
2
  require 'puppet/util/pidlock'
3
+ require 'puppet/external/event-loop'
3
4
 
4
5
  # A module that handles operations common to all daemons. This is included
5
6
  # into the Server and Client base classes.
6
- module Puppet::Daemon
7
- include Puppet::Util
7
+ class Puppet::Daemon
8
+ attr_accessor :agent, :server, :argv
8
9
 
9
10
  def daemonname
10
11
  Puppet[:name]
@@ -16,8 +17,8 @@ module Puppet::Daemon
16
17
  Process.detach(pid)
17
18
  exit(0)
18
19
  end
19
-
20
- setpidfile()
20
+
21
+ create_pidfile()
21
22
 
22
23
  # Get rid of console logging
23
24
  Puppet::Util::Log.close(:console)
@@ -30,7 +31,7 @@ module Puppet::Daemon
30
31
  $stderr.reopen $stdout
31
32
  Puppet::Util::Log.reopen
32
33
  rescue => detail
33
- Puppet::Util.secure_open("/tmp/daemonout", "w") { |f|
34
+ File.open("/tmp/daemonout", "w") { |f|
34
35
  f.puts "Could not start %s: %s" % [Puppet[:name], detail]
35
36
  }
36
37
  Puppet.err "Could not start %s: %s" % [Puppet[:name], detail]
@@ -38,18 +39,42 @@ module Puppet::Daemon
38
39
  end
39
40
  end
40
41
 
41
- # The path to the pid file for this server
42
+ # Create a pidfile for our daemon, so we can be stopped and others
43
+ # don't try to start.
44
+ def create_pidfile
45
+ Puppet::Util.sync(Puppet[:name]).synchronize(Sync::EX) do
46
+ unless Puppet::Util::Pidlock.new(pidfile).lock
47
+ raise "Could not create PID file: %s" % [pidfile]
48
+ end
49
+ end
50
+ end
51
+
52
+ # Provide the path to our pidfile.
42
53
  def pidfile
43
- if Puppet[:pidfile] != ""
44
- Puppet[:pidfile]
45
- else
46
- File.join(Puppet[:rundir], daemonname() + ".pid")
54
+ Puppet[:pidfile]
55
+ end
56
+
57
+ def reexec
58
+ raise Puppet::DevError, "Cannot reexec unless ARGV arguments are set" unless argv
59
+ command = $0 + " " + argv.join(" ")
60
+ Puppet.notice "Restarting with '%s'" % command
61
+ stop(:exit => false)
62
+ exec(command)
63
+ end
64
+
65
+ def reload
66
+ return unless agent
67
+ if agent.running?
68
+ Puppet.notice "Not triggering already-running agent"
69
+ return
47
70
  end
71
+
72
+ agent.run
48
73
  end
49
74
 
50
- # Remove the pid file
51
- def rmpidfile
52
- threadlock(:pidfile) do
75
+ # Remove the pid file for our daemon.
76
+ def remove_pidfile
77
+ Puppet::Util.sync(Puppet[:name]).synchronize(Sync::EX) do
53
78
  locker = Puppet::Util::Pidlock.new(pidfile)
54
79
  if locker.locked?
55
80
  locker.unlock or Puppet.err "Could not remove PID file %s" % [pidfile]
@@ -57,27 +82,52 @@ module Puppet::Daemon
57
82
  end
58
83
  end
59
84
 
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)
66
- end
85
+ def restart
86
+ if agent and agent.running?
87
+ agent.configure_delayed_restart
88
+ else
89
+ reexec
67
90
  end
68
91
  end
69
92
 
70
- # Shut down our server
71
- def shutdown
72
- # Remove our pid file
73
- rmpidfile()
93
+ def reopen_logs
94
+ Puppet::Util::Log.reopen
95
+ end
74
96
 
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)
97
+ # Trap a couple of the main signals. This should probably be handled
98
+ # in a way that anyone else can register callbacks for traps, but, eh.
99
+ def set_signal_traps
100
+ {:INT => :stop, :TERM => :stop, :HUP => :restart, :USR1 => :reload, :USR2 => :reopen_logs}.each do |signal, method|
101
+ trap(signal) do
102
+ Puppet.notice "Caught #{signal}; calling #{method}"
103
+ send(method)
104
+ end
78
105
  end
106
+ end
107
+
108
+ # Stop everything
109
+ def stop(args = {:exit => true})
110
+ server.stop if server
111
+
112
+ agent.stop if agent
113
+
114
+ remove_pidfile()
115
+
116
+ Puppet::Util::Log.close_all
117
+
118
+ exit if args[:exit]
119
+ end
120
+
121
+ def start
122
+ set_signal_traps
123
+
124
+ create_pidfile
125
+
126
+ raise Puppet::DevError, "Daemons must have an agent, server, or both" unless agent or server
127
+ agent.start if agent
128
+ server.start if server
79
129
 
80
- super
130
+ EventLoop.current.run
81
131
  end
82
132
  end
83
133
 
@@ -31,15 +31,15 @@ module Puppet
31
31
  if name == "puppetmasterd"
32
32
  logopts = {:default => "$vardir/log",
33
33
  :mode => 0750,
34
- :owner => "$user",
35
- :group => "$group",
34
+ :owner => "service",
35
+ :group => "service",
36
36
  :desc => "The Puppet log directory."
37
37
  }
38
38
  else
39
39
  logopts = ["$vardir/log", "The Puppet log directory."]
40
40
  end
41
41
  setdefaults(:main, :logdir => logopts)
42
-
42
+
43
43
  # This name hackery is necessary so that the rundir is set reasonably during
44
44
  # unit tests.
45
45
  if Process.uid == 0 and %w{puppetd puppetmasterd}.include?(self.name)
@@ -60,13 +60,7 @@ module Puppet
60
60
  this directory can be removed without causing harm (although it
61
61
  might result in spurious service restarts)."
62
62
  },
63
- :ssldir => {
64
- :default => "$confdir/ssl",
65
- :mode => 0771,
66
- :owner => "root",
67
- :desc => "Where SSL certificates are kept."
68
- },
69
- :rundir => {
63
+ :rundir => {
70
64
  :default => rundir,
71
65
  :mode => 01777,
72
66
  :desc => "Where Puppet PID files are kept."
@@ -97,8 +91,8 @@ module Puppet
97
91
  from the parent process.",
98
92
  :call_on_define => true, # Call our hook with the default value, so we always get the libdir set.
99
93
  :hook => proc do |value|
94
+ ENV["PATH"] = "" if ENV["PATH"].nil?
100
95
  ENV["PATH"] = value unless value == "none"
101
-
102
96
  paths = ENV["PATH"].split(File::PATH_SEPARATOR)
103
97
  %w{/usr/sbin /sbin}.each do |path|
104
98
  unless paths.include?(path)
@@ -137,7 +131,7 @@ module Puppet
137
131
  ``puppetmasterd``) this provides the default environment for nodes
138
132
  we know nothing about."
139
133
  },
140
- :diff_args => ["", "Which arguments to pass to the diff command when printing differences between files."],
134
+ :diff_args => ["-u", "Which arguments to pass to the diff command when printing differences between files."],
141
135
  :diff => ["diff", "Which diff command to use when printing differences between files."],
142
136
  :show_diff => [false, "Whether to print a contextual diff when files are being replaced. The diff
143
137
  is printed on stdout, so this option is meaningless unless you are running Puppet interactively.
@@ -150,7 +144,55 @@ module Puppet
150
144
  but then ship with tools that do not know how to handle signed ints, so the UIDs show up as
151
145
  huge numbers that can then not be fed back into the system. This is a hackish way to fail in a
152
146
  slightly more useful way when that happens."],
153
- :node_terminus => ["plain", "Where to find information about nodes."]
147
+ :node_terminus => ["plain", "Where to find information about nodes."],
148
+ :httplog => { :default => "$logdir/http.log",
149
+ :owner => "root",
150
+ :mode => 0640,
151
+ :desc => "Where the puppetd web server logs."
152
+ },
153
+ :http_proxy_host => ["none",
154
+ "The HTTP proxy host to use for outgoing connections. Note: You
155
+ may need to use a FQDN for the server hostname when using a proxy."],
156
+ :http_proxy_port => [3128,
157
+ "The HTTP proxy port to use for outgoing connections"],
158
+ :http_enable_post_connection_check => [true,
159
+ "Boolean; wheter or not puppetd should validate the server
160
+ SSL certificate against the request hostname."],
161
+ :filetimeout => [ 15,
162
+ "The minimum time to wait (in seconds) between checking for updates in
163
+ configuration files. This timeout determines how quickly Puppet checks whether
164
+ a file (such as manifests or templates) has changed on disk."
165
+ ],
166
+ :queue_type => ["stomp", "Which type of queue to use for asynchronous processing."],
167
+ :queue_type => ["stomp", "Which type of queue to use for asynchronous processing."],
168
+ :queue_source => ["stomp://localhost:61613/", "Which type of queue to use for asynchronous processing. If your stomp server requires
169
+ authentication, you can include it in the URI as long as your stomp client library is at least 1.1.1"],
170
+ :async_storeconfigs => {:default => false, :desc => "Whether to use a queueing system to provide asynchronous database integration.
171
+ Requires that ``puppetqd`` be running and that 'JSON' support for ruby be installed.",
172
+ :hook => proc do |value|
173
+ if value
174
+ # This reconfigures the terminii for Node, Facts, and Catalog
175
+ Puppet.settings[:storeconfigs] = true
176
+
177
+ # But then we modify the configuration
178
+ Puppet::Resource::Catalog.cache_class = :queue
179
+ else
180
+ raise "Cannot disable asynchronous storeconfigs in a running process"
181
+ end
182
+ end
183
+ },
184
+ :thin_storeconfigs => {:default => false, :desc =>
185
+ "Boolean; wether storeconfigs store in the database only the facts and exported resources.
186
+ If true, then storeconfigs performance will be higher and still allow exported/collected
187
+ resources, but other usage external to Puppet might not work",
188
+ :hook => proc do |value|
189
+ Puppet.settings[:storeconfigs] = true if value
190
+ end
191
+ },
192
+ :config_version => ["", "How to determine the configuration version. By default, it will be the
193
+ time that the configuration is parsed, but you can provide a shell script to override how the
194
+ version is determined. The output of this script will be added to every log message in the
195
+ reports, allowing you to correlate changes on your hosts to the source version on the server."]
154
196
  )
155
197
 
156
198
  hostname = Facter["hostname"].value
@@ -161,8 +203,8 @@ module Puppet
161
203
  fqdn = hostname
162
204
  end
163
205
 
164
- Puppet.setdefaults(:ssl,
165
- # We have to downcase the fqdn, because the current ssl stuff (as oppsed to in master) doesn't have good facilities for
206
+ Puppet.setdefaults(:main,
207
+ # We have to downcase the fqdn, because the current ssl stuff (as oppsed to in master) doesn't have good facilities for
166
208
  # manipulating naming.
167
209
  :certname => {:default => fqdn.downcase, :desc => "The name to use when handling certificates. Defaults
168
210
  to the fully qualified domain name.",
@@ -171,100 +213,138 @@ module Puppet
171
213
  :certdnsnames => ['', "The DNS names on the Server certificate as a colon-separated list.
172
214
  If it's anything other than an empty string, it will be used as an alias in the created
173
215
  certificate. By default, only the server gets an alias set up, and only for 'puppet'."],
174
- :certdir => ["$ssldir/certs", "The certificate directory."],
175
- :publickeydir => ["$ssldir/public_keys", "The public key directory."],
216
+ :certdir => {
217
+ :default => "$ssldir/certs",
218
+ :owner => "service",
219
+ :desc => "The certificate directory."
220
+ },
221
+ :ssldir => {
222
+ :default => "$confdir/ssl",
223
+ :mode => 0771,
224
+ :owner => "service",
225
+ :desc => "Where SSL certificates are kept."
226
+ },
227
+ :publickeydir => {
228
+ :default => "$ssldir/public_keys",
229
+ :owner => "service",
230
+ :desc => "The public key directory."
231
+ },
232
+ :requestdir => {
233
+ :default => "$ssldir/certificate_requests",
234
+ :owner => "service",
235
+ :desc => "Where host certificate requests are stored."
236
+ },
176
237
  :privatekeydir => { :default => "$ssldir/private_keys",
177
238
  :mode => 0750,
239
+ :owner => "service",
178
240
  :desc => "The private key directory."
179
241
  },
180
242
  :privatedir => { :default => "$ssldir/private",
181
243
  :mode => 0750,
244
+ :owner => "service",
182
245
  :desc => "Where the client stores private certificate information."
183
246
  },
184
247
  :passfile => { :default => "$privatedir/password",
185
248
  :mode => 0640,
249
+ :owner => "service",
186
250
  :desc => "Where puppetd stores the password for its private key.
187
251
  Generally unused."
188
252
  },
189
253
  :hostcsr => { :default => "$ssldir/csr_$certname.pem",
190
254
  :mode => 0644,
191
- :desc => "Where individual hosts store and look for their certificates."
255
+ :owner => "service",
256
+ :desc => "Where individual hosts store and look for their certificate requests."
192
257
  },
193
258
  :hostcert => { :default => "$certdir/$certname.pem",
194
259
  :mode => 0644,
260
+ :owner => "service",
195
261
  :desc => "Where individual hosts store and look for their certificates."
196
262
  },
197
263
  :hostprivkey => { :default => "$privatekeydir/$certname.pem",
198
264
  :mode => 0600,
265
+ :owner => "service",
199
266
  :desc => "Where individual hosts store and look for their private key."
200
267
  },
201
268
  :hostpubkey => { :default => "$publickeydir/$certname.pem",
202
269
  :mode => 0644,
270
+ :owner => "service",
203
271
  :desc => "Where individual hosts store and look for their public key."
204
272
  },
205
273
  :localcacert => { :default => "$certdir/ca.pem",
206
274
  :mode => 0644,
275
+ :owner => "service",
207
276
  :desc => "Where each client stores the CA certificate."
277
+ },
278
+ :hostcrl => { :default => "$ssldir/crl.pem",
279
+ :mode => 0644,
280
+ :owner => "service",
281
+ :desc => "Where the host's certificate revocation list can be found.
282
+ This is distinct from the certificate authority's CRL."
208
283
  }
209
284
  )
210
285
 
211
286
  setdefaults(:ca,
212
287
  :cadir => { :default => "$ssldir/ca",
213
- :owner => "$user",
214
- :group => "$group",
288
+ :owner => "service",
289
+ :group => "service",
215
290
  :mode => 0770,
216
291
  :desc => "The root directory for the certificate authority."
217
292
  },
218
293
  :cacert => { :default => "$cadir/ca_crt.pem",
219
- :owner => "$user",
220
- :group => "$group",
294
+ :owner => "service",
295
+ :group => "service",
221
296
  :mode => 0660,
222
297
  :desc => "The CA certificate."
223
298
  },
224
299
  :cakey => { :default => "$cadir/ca_key.pem",
225
- :owner => "$user",
226
- :group => "$group",
300
+ :owner => "service",
301
+ :group => "service",
227
302
  :mode => 0660,
228
303
  :desc => "The CA private key."
229
304
  },
230
305
  :capub => { :default => "$cadir/ca_pub.pem",
231
- :owner => "$user",
232
- :group => "$group",
306
+ :owner => "service",
307
+ :group => "service",
233
308
  :desc => "The CA public key."
234
309
  },
235
310
  :cacrl => { :default => "$cadir/ca_crl.pem",
236
- :owner => "$user",
237
- :group => "$group",
311
+ :owner => "service",
312
+ :group => "service",
238
313
  :mode => 0664,
239
- :desc => "The certificate revocation list (CRL) for the CA. Set this to 'false' if you do not want to use a CRL."
314
+ :desc => "The certificate revocation list (CRL) for the CA. Will be used if present but otherwise ignored.",
315
+ :hook => proc do |value|
316
+ if value == 'false'
317
+ Puppet.warning "Setting the :cacrl to 'false' is deprecated; Puppet will just ignore the crl if yours is missing"
318
+ end
319
+ end
240
320
  },
241
321
  :caprivatedir => { :default => "$cadir/private",
242
- :owner => "$user",
243
- :group => "$group",
322
+ :owner => "service",
323
+ :group => "service",
244
324
  :mode => 0770,
245
325
  :desc => "Where the CA stores private certificate information."
246
326
  },
247
327
  :csrdir => { :default => "$cadir/requests",
248
- :owner => "$user",
249
- :group => "$group",
328
+ :owner => "service",
329
+ :group => "service",
250
330
  :desc => "Where the CA stores certificate requests"
251
331
  },
252
332
  :signeddir => { :default => "$cadir/signed",
253
- :owner => "$user",
254
- :group => "$group",
333
+ :owner => "service",
334
+ :group => "service",
255
335
  :mode => 0770,
256
336
  :desc => "Where the CA stores signed certificates."
257
337
  },
258
338
  :capass => { :default => "$caprivatedir/ca.pass",
259
- :owner => "$user",
260
- :group => "$group",
339
+ :owner => "service",
340
+ :group => "service",
261
341
  :mode => 0660,
262
342
  :desc => "Where the CA stores the password for the private key"
263
343
  },
264
344
  :serial => { :default => "$cadir/serial",
265
- :owner => "$user",
266
- :group => "$group",
267
- :mode => 0600,
345
+ :owner => "service",
346
+ :group => "service",
347
+ :mode => 0644,
268
348
  :desc => "Where the serial number for certificates is stored."
269
349
  },
270
350
  :autosign => { :default => "$confdir/autosign.conf",
@@ -273,13 +353,13 @@ module Puppet
273
353
  autosigns any key request, and is a very bad idea), false (which
274
354
  never autosigns any key request), and the path to a file, which
275
355
  uses that configuration file to determine which keys to sign."},
276
- :ca_days => ["", "How long a certificate should be valid.
356
+ :ca_days => ["", "How long a certificate should be valid.
277
357
  This parameter is deprecated, use ca_ttl instead"],
278
- :ca_ttl => ["5y", "The default TTL for new certificates; valid values
279
- must be an integer, optionally followed by one of the units
280
- 'y' (years of 365 days), 'd' (days), 'h' (hours), or
358
+ :ca_ttl => ["5y", "The default TTL for new certificates; valid values
359
+ must be an integer, optionally followed by one of the units
360
+ 'y' (years of 365 days), 'd' (days), 'h' (hours), or
281
361
  's' (seconds). The unit defaults to seconds. If this parameter
282
- is set, ca_days is ignored. Examples are '3600' (one hour)
362
+ is set, ca_days is ignored. Examples are '3600' (one hour)
283
363
  and '1825d', which is the same as '5y' (5 years) "],
284
364
  :ca_md => ["md5", "The type of hash used in certificates."],
285
365
  :req_bits => [2048, "The bit length of the certificates."],
@@ -287,8 +367,8 @@ module Puppet
287
367
  :cert_inventory => {
288
368
  :default => "$cadir/inventory.txt",
289
369
  :mode => 0644,
290
- :owner => "$user",
291
- :group => "$group",
370
+ :owner => "service",
371
+ :group => "service",
292
372
  :desc => "A Complete listing of all certificates"
293
373
  }
294
374
  )
@@ -297,13 +377,16 @@ module Puppet
297
377
  self.setdefaults(self.settings[:name],
298
378
  :config => ["$confdir/puppet.conf",
299
379
  "The configuration file for #{Puppet[:name]}."],
300
- :pidfile => ["", "The pid file"],
301
- :bindaddress => ["", "The address to bind to. Mongrel servers
380
+ :pidfile => ["$rundir/$name.pid", "The pid file"],
381
+ :bindaddress => ["", "The address a listening server should bind to. Mongrel servers
302
382
  default to 127.0.0.1 and WEBrick defaults to 0.0.0.0."],
303
- :servertype => ["webrick", "The type of server to use. Currently supported
383
+ :servertype => {:default => "webrick", :desc => "The type of server to use. Currently supported
304
384
  options are webrick and mongrel. If you use mongrel, you will need
305
385
  a proxy in front of the process or processes, since Mongrel cannot
306
- speak SSL."]
386
+ speak SSL.",
387
+ :call_on_define => true, # Call our hook with the default value, so we always get the correct bind address set.
388
+ :hook => proc { |value| value == "webrick" ? Puppet.settings[:bindaddress] = "0.0.0.0" : Puppet.settings[:bindaddress] = "127.0.0.1" if Puppet.settings[:bindaddress] == "" }
389
+ }
307
390
  )
308
391
 
309
392
  self.setdefaults(:puppetmasterd,
@@ -317,38 +400,43 @@ module Puppet
317
400
  by ``puppet``, and should only be set if you're writing your own Puppet
318
401
  executable"],
319
402
  :masterlog => { :default => "$logdir/puppetmaster.log",
320
- :owner => "$user",
321
- :group => "$group",
403
+ :owner => "service",
404
+ :group => "service",
322
405
  :mode => 0660,
323
406
  :desc => "Where puppetmasterd logs. This is generally not used,
324
407
  since syslog is the default log destination."
325
408
  },
326
409
  :masterhttplog => { :default => "$logdir/masterhttp.log",
327
- :owner => "$user",
328
- :group => "$group",
410
+ :owner => "service",
411
+ :group => "service",
329
412
  :mode => 0660,
330
413
  :create => true,
331
414
  :desc => "Where the puppetmasterd web server logs."
332
415
  },
333
416
  :masterport => [8140, "Which port puppetmasterd listens on."],
334
417
  :parseonly => [false, "Just check the syntax of the manifests."],
335
- :node_name => ["cert", "How the puppetmaster determines the client's identity
336
- and sets the 'hostname', 'fqdn' and 'domain' facts for use in the manifest,
337
- in particular for determining which 'node' statement applies to the client.
338
- Possible values are 'cert' (use the subject's CN in the client's
339
- certificate) and 'facter' (use the hostname that the client
418
+ :node_name => ["cert", "How the puppetmaster determines the client's identity
419
+ and sets the 'hostname', 'fqdn' and 'domain' facts for use in the manifest,
420
+ in particular for determining which 'node' statement applies to the client.
421
+ Possible values are 'cert' (use the subject's CN in the client's
422
+ certificate) and 'facter' (use the hostname that the client
340
423
  reported in its facts)"],
341
424
  :bucketdir => {
342
425
  :default => "$vardir/bucket",
343
426
  :mode => 0750,
344
- :owner => "$user",
345
- :group => "$group",
427
+ :owner => "service",
428
+ :group => "service",
346
429
  :desc => "Where FileBucket files are stored."
347
430
  },
431
+ :rest_authconfig => [ "$confdir/auth.conf",
432
+ "The configuration file that defines the rights to the different
433
+ rest indirections. This can be used as a fine-grained
434
+ authorization system for ``puppetmasterd``."
435
+ ],
348
436
  :ca => [true, "Wether the master should function as a certificate authority."],
349
- :modulepath => [ "$confdir/modules:/usr/share/puppet/modules",
350
- "The search path for modules as a colon-separated list of
351
- directories." ],
437
+ :modulepath => {:default => "$confdir/modules:/usr/share/puppet/modules",
438
+ :desc => "The search path for modules as a colon-separated list of
439
+ directories.", :type => :setting }, # We don't want this to be considered a file, since it's multiple files.
352
440
  :ssl_client_header => ["HTTP_X_CLIENT_DN", "The header containing an authenticated
353
441
  client's SSL DN. Only used with Mongrel. This header must be set by the proxy
354
442
  to the authenticated client's SSL DN (e.g., ``/CN=puppet.reductivelabs.com``).
@@ -359,10 +447,34 @@ module Puppet
359
447
  See http://reductivelabs.com/puppet/trac/wiki/UsingMongrel for more information."],
360
448
  # To make sure this directory is created before we try to use it on the server, we need
361
449
  # it to be in the server section (#1138).
362
- :yamldir => {:default => "$vardir/yaml", :owner => "$user", :group => "$user", :mode => "750",
450
+ :yamldir => {:default => "$vardir/yaml", :owner => "service", :group => "service", :mode => "750",
363
451
  :desc => "The directory in which YAML data is stored, usually in a subdirectory."},
364
- :clientyamldir => {:default => "$vardir/client_yaml", :mode => "750",
365
- :desc => "The directory in which client-side YAML data is stored."}
452
+ :reports => ["store",
453
+ "The list of reports to generate. All reports are looked for
454
+ in puppet/reports/<name>.rb, and multiple report names should be
455
+ comma-separated (whitespace is okay)."
456
+ ],
457
+ :reportdir => {:default => "$vardir/reports",
458
+ :mode => 0750,
459
+ :owner => "service",
460
+ :group => "service",
461
+ :desc => "The directory in which to store reports
462
+ received from the client. Each client gets a separate
463
+ subdirectory."},
464
+ :fileserverconfig => ["$confdir/fileserver.conf",
465
+ "Where the fileserver configuration is stored."],
466
+ :rrddir => {:default => "$vardir/rrd",
467
+ :owner => "service",
468
+ :group => "service",
469
+ :desc => "The directory where RRD database files are stored.
470
+ Directories for each reporting host will be created under
471
+ this directory."
472
+ },
473
+ :rrdinterval => ["$runinterval", "How often RRD should expect data.
474
+ This should match how often the hosts report back to the server."],
475
+ :strict_hostname_checking => [false, "Whether to only search for the complete
476
+ hostname as it is in the certificate when searching for node information
477
+ in the catalogs."]
366
478
  )
367
479
 
368
480
  self.setdefaults(:puppetd,
@@ -378,6 +490,8 @@ module Puppet
378
490
  this file reflects the state discovered through interacting
379
491
  with clients."
380
492
  },
493
+ :clientyamldir => {:default => "$vardir/client_yaml", :mode => "750",
494
+ :desc => "The directory in which client-side YAML data is stored."},
381
495
  :classfile => { :default => "$statedir/classes.txt",
382
496
  :owner => "root",
383
497
  :mode => 0644,
@@ -390,19 +504,6 @@ module Puppet
390
504
  :mode => 0640,
391
505
  :desc => "The log file for puppetd. This is generally not used."
392
506
  },
393
- :httplog => { :default => "$logdir/http.log",
394
- :owner => "root",
395
- :mode => 0640,
396
- :desc => "Where the puppetd web server logs."
397
- },
398
- :http_proxy_host => ["none",
399
- "The HTTP proxy host to use for outgoing connections. Note: You
400
- may need to use a FQDN for the server hostname when using a proxy."],
401
- :http_proxy_port => [3128,
402
- "The HTTP proxy port to use for outgoing connections"],
403
- :http_enable_post_connection_check => [true,
404
- "Boolean; wheter or not puppetd should validate the server
405
- SSL certificate against the request hostname."],
406
507
  :server => ["puppet",
407
508
  "The server to which server puppetd should connect"],
408
509
  :ignoreschedules => [false,
@@ -421,37 +522,11 @@ module Puppet
421
522
  authority requests. It's a separate server because it cannot
422
523
  and does not need to horizontally scale."],
423
524
  :ca_port => ["$masterport", "The port to use for the certificate authority."],
424
- :catalog_format => ["yaml", "What format to use to dump the catalog. Only supports
425
- 'marshal' and 'yaml'. Only matters on the client, since it asks the server
426
- for a specific format."]
427
- )
428
-
429
- self.setdefaults(:filebucket,
430
- :clientbucketdir => {
431
- :default => "$vardir/clientbucket",
432
- :mode => 0750,
433
- :desc => "Where FileBucket files are stored locally."
434
- }
435
- )
436
- self.setdefaults(:fileserver,
437
- :fileserverconfig => ["$confdir/fileserver.conf",
438
- "Where the fileserver configuration is stored."]
439
- )
440
- self.setdefaults(:reporting,
441
- :reports => ["store",
442
- "The list of reports to generate. All reports are looked for
443
- in puppet/reports/<name>.rb, and multiple report names should be
444
- comma-separated (whitespace is okay)."
445
- ],
446
- :reportdir => {:default => "$vardir/reports",
447
- :mode => 0750,
448
- :owner => "$user",
449
- :group => "$group",
450
- :desc => "The directory in which to store reports
451
- received from the client. Each client gets a separate
452
- subdirectory."}
453
- )
454
- self.setdefaults(:puppetd,
525
+ :preferred_serialization_format => ["json", "The preferred means of serializing
526
+ ruby instances for passing over the wire. This won't guarantee that all
527
+ instances will be serialized using this method, since not all classes
528
+ can be guaranteed to support this format, but it will be used for all
529
+ classes that support it."],
455
530
  :puppetdlockfile => [ "$statedir/puppetdlock",
456
531
  "A lock file to temporarily stop puppetd from doing anything."],
457
532
  :usecacheonfailure => [true,
@@ -477,30 +552,44 @@ module Puppet
477
552
  run interval."],
478
553
  :splay => [false,
479
554
  "Whether to sleep for a pseudo-random (but consistent) amount of time before
480
- a run."]
481
- )
482
-
483
- self.setdefaults(:puppetd,
555
+ a run."],
556
+ :clientbucketdir => {
557
+ :default => "$vardir/clientbucket",
558
+ :mode => 0750,
559
+ :desc => "Where FileBucket files are stored locally."
560
+ },
484
561
  :configtimeout => [120,
485
562
  "How long the client should wait for the configuration to be retrieved
486
563
  before considering it a failure. This can help reduce flapping if too
487
564
  many clients contact the server at one time."
488
565
  ],
489
- :reportserver => ["$server",
490
- "The server to which to send transaction reports."
566
+ :reportserver => {
567
+ :default => "$server",
568
+ :call_on_define => false,
569
+ :desc => "(Deprecated for 'report_server') The server to which to send transaction reports.",
570
+ :hook => proc do |value|
571
+ if value
572
+ Puppet.settings[:report_server] = value
573
+ end
574
+ end
575
+ },
576
+ :report_server => ["$server",
577
+ "The server to which to send transaction reports."
578
+ ],
579
+ :report_port => ["$masterport",
580
+ "The port to communicate with the report_server."
491
581
  ],
492
582
  :report => [false,
493
583
  "Whether to send reports after every transaction."
494
- ]
584
+ ],
585
+ :graph => [false, "Whether to create dot graph files for the different
586
+ configuration graphs. These dot files can be interpreted by tools
587
+ like OmniGraffle or dot (which is part of ImageMagick)."],
588
+ :graphdir => ["$statedir/graphs", "Where to store dot-outputted graphs."]
495
589
  )
496
590
 
497
591
  # Plugin information.
498
592
  self.setdefaults(:main,
499
- :pluginpath => ["$vardir/plugins",
500
- "Where Puppet should look for plugins. Multiple directories should
501
- be colon-separated, like normal PATH variables. As of 0.23.1, this
502
- option is deprecated; download your custom libraries to the $libdir
503
- instead."],
504
593
  :plugindest => ["$libdir",
505
594
  "Where Puppet should store plugins that it pulls down from the central
506
595
  server."],
@@ -510,21 +599,22 @@ module Puppet
510
599
  be used here."],
511
600
  :pluginsync => [false,
512
601
  "Whether plugins should be synced with the central server."],
513
- :pluginsignore => [".svn CVS",
602
+ :pluginsignore => [".svn CVS .git",
514
603
  "What files to ignore when pulling down plugins."]
515
604
  )
516
605
 
517
606
  # Central fact information.
518
607
  self.setdefaults(:main,
519
- :factpath => {:default => "$vardir/facts",
608
+ :factpath => {:default => "$vardir/facts/",
520
609
  :desc => "Where Puppet should look for facts. Multiple directories should
521
610
  be colon-separated, like normal PATH variables.",
522
611
  :call_on_define => true, # Call our hook with the default value, so we always get the value added to facter.
612
+ :type => :setting, # Don't consider it a file, because it could be multiple colon-separated files
523
613
  :hook => proc { |value| Facter.search(value) if Facter.respond_to?(:search) }},
524
- :factdest => ["$vardir/facts",
614
+ :factdest => ["$vardir/facts/",
525
615
  "Where Puppet should store facts that it pulls down from the central
526
616
  server."],
527
- :factsource => ["puppet://$server/facts",
617
+ :factsource => ["puppet://$server/facts/",
528
618
  "From where to retrieve facts. The standard Puppet ``file`` type
529
619
  is used for retrieval, so anything that is a valid file source can
530
620
  be used here."],
@@ -548,8 +638,8 @@ module Puppet
548
638
  self.setdefaults(:rails,
549
639
  :dblocation => { :default => "$statedir/clientconfigs.sqlite3",
550
640
  :mode => 0660,
551
- :owner => "$user",
552
- :group => "$group",
641
+ :owner => "service",
642
+ :group => "service",
553
643
  :desc => "The database cache for client configurations. Used for
554
644
  querying within the language."
555
645
  },
@@ -566,8 +656,8 @@ module Puppet
566
656
  databases are used. Will be ignored if the value is an empty string."],
567
657
  :railslog => {:default => "$logdir/rails.log",
568
658
  :mode => 0600,
569
- :owner => "$user",
570
- :group => "$group",
659
+ :owner => "service",
660
+ :group => "service",
571
661
  :desc => "Where Rails-specific logs are sent"
572
662
  },
573
663
  :rails_loglevel => ["info", "The log level for Rails connections. The value must be
@@ -575,13 +665,6 @@ module Puppet
575
665
  and other environments normally use ``debug``."]
576
666
  )
577
667
 
578
- setdefaults(:graphing,
579
- :graph => [false, "Whether to create dot graph files for the different
580
- configuration graphs. These dot files can be interpreted by tools
581
- like OmniGraffle or dot (which is part of ImageMagick)."],
582
- :graphdir => ["$statedir/graphs", "Where to store dot-outputted graphs."]
583
- )
584
-
585
668
  setdefaults(:transaction,
586
669
  :tags => ["", "Tags to use to find resources. If this is set, then
587
670
  only resources tagged with the specified tags will be applied.
@@ -598,7 +681,7 @@ module Puppet
598
681
  :typecheck => [true, "Whether to validate types during parsing."],
599
682
  :paramcheck => [true, "Whether to validate parameters during parsing."]
600
683
  )
601
-
684
+
602
685
  setdefaults(:main,
603
686
  :casesensitive => [false,
604
687
  "Whether matching in case statements and selectors
@@ -617,7 +700,7 @@ module Puppet
617
700
  setdefaults(:ldap,
618
701
  :ldapnodes => [false,
619
702
  "Whether to search for node configurations in LDAP. See
620
- http://reductivelabs.com/puppet/trac/wiki/LdapNodes/ for more information."],
703
+ http://reductivelabs.com/trac/puppet/wiki/LDAPNodes for more information."],
621
704
  :ldapssl => [false,
622
705
  "Whether SSL should be used when searching for nodes.
623
706
  Defaults to false because SSL usually requires certificates
@@ -659,9 +742,21 @@ module Puppet
659
742
  )
660
743
 
661
744
  setdefaults(:puppetmasterd,
662
- :storeconfigs => [false,
663
- "Whether to store each client's configuration. This
664
- requires ActiveRecord from Ruby on Rails."]
745
+ :storeconfigs => {:default => false, :desc => "Whether to store each client's configuration. This
746
+ requires ActiveRecord from Ruby on Rails.",
747
+ :call_on_define => true, # Call our hook with the default value, so we always get the libdir set.
748
+ :hook => proc do |value|
749
+ require 'puppet/node'
750
+ require 'puppet/node/facts'
751
+ require 'puppet/resource/catalog'
752
+ if value
753
+ raise "StoreConfigs not supported without ActiveRecord 2.1 or higher" unless Puppet.features.rails?
754
+ Puppet::Resource::Catalog.cache_class = :active_record unless Puppet.settings[:async_storeconfigs]
755
+ Puppet::Node::Facts.cache_class = :active_record
756
+ Puppet::Node.cache_class = :active_record
757
+ end
758
+ end
759
+ }
665
760
  )
666
761
 
667
762
  # This doesn't actually work right now.
@@ -672,26 +767,4 @@ module Puppet
672
767
  directories."
673
768
  ]
674
769
  )
675
-
676
- setdefaults(:main,
677
- :filetimeout => [ 15,
678
- "The minimum time to wait (in seconds) between checking for updates in
679
- configuration files. This timeout determines how quickly Puppet checks whether
680
- a file (such as manifests or templates) has changed on disk."
681
- ]
682
- )
683
-
684
- setdefaults(:metrics,
685
- :rrddir => {:default => "$vardir/rrd",
686
- :owner => "$user",
687
- :group => "$group",
688
- :desc => "The directory where RRD database files are stored.
689
- Directories for each reporting host will be created under
690
- this directory."
691
- },
692
- :rrdgraph => [false, "Whether RRD information should be graphed."],
693
- :rrdinterval => ["$runinterval", "How often RRD should expect data.
694
- This should match how often the hosts report back to the server."]
695
- )
696
770
  end
697
-