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,345 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.dirname(__FILE__) + '/../../spec_helper'
4
+
5
+ require 'puppet/application/puppetdoc'
6
+
7
+ describe "puppetdoc" do
8
+ before :each do
9
+ @puppetdoc = Puppet::Application[:puppetdoc]
10
+ @puppetdoc.stubs(:puts)
11
+ @puppetdoc.run_preinit
12
+ Puppet::Util::Log.stubs(:newdestination)
13
+ Puppet::Util::Log.stubs(:level=)
14
+ end
15
+
16
+ it "should ask Puppet::Application to not parse Puppet configuration file" do
17
+ @puppetdoc.should_parse_config?.should be_false
18
+ end
19
+
20
+ it "should declare a other command" do
21
+ @puppetdoc.should respond_to(:other)
22
+ end
23
+
24
+ it "should declare a rdoc command" do
25
+ @puppetdoc.should respond_to(:rdoc)
26
+ end
27
+
28
+ it "should declare a trac command" do
29
+ @puppetdoc.should respond_to(:trac)
30
+ end
31
+
32
+ it "should declare a fallback for unknown options" do
33
+ @puppetdoc.should respond_to(:handle_unknown)
34
+ end
35
+
36
+ it "should declare a preinit block" do
37
+ @puppetdoc.should respond_to(:run_preinit)
38
+ end
39
+
40
+ describe "in preinit" do
41
+ it "should set references to []" do
42
+ @puppetdoc.run_preinit
43
+
44
+ @puppetdoc.options[:references].should == []
45
+ end
46
+
47
+ it "should init mode to text" do
48
+ @puppetdoc.run_preinit
49
+
50
+ @puppetdoc.options[:mode].should == :text
51
+ end
52
+
53
+ it "should init format to to_rest" do
54
+ @puppetdoc.run_preinit
55
+
56
+ @puppetdoc.options[:format].should == :to_rest
57
+ end
58
+ end
59
+
60
+ describe "when handling options" do
61
+ [:all, :outputdir, :verbose, :debug].each do |option|
62
+ it "should declare handle_#{option} method" do
63
+ @puppetdoc.should respond_to("handle_#{option}".to_sym)
64
+ end
65
+
66
+ it "should store argument value when calling handle_#{option}" do
67
+ @puppetdoc.options.expects(:[]=).with(option, 'arg')
68
+ @puppetdoc.send("handle_#{option}".to_sym, 'arg')
69
+ end
70
+ end
71
+
72
+ it "should store the format if valid" do
73
+ Puppet::Util::Reference.stubs(:method_defined?).with('to_format').returns(true)
74
+
75
+ @puppetdoc.options.expects(:[]=).with(:format, 'to_format')
76
+
77
+ @puppetdoc.handle_format('format')
78
+ end
79
+
80
+ it "should raise an error if the format is not valid" do
81
+ Puppet::Util::Reference.stubs(:method_defined?).with('to_format').returns(false)
82
+ lambda { @puppetdoc.handle_format('format') }
83
+ end
84
+
85
+ it "should store the mode if valid" do
86
+ Puppet::Util::Reference.stubs(:modes).returns(stub('mode', :include? => true))
87
+
88
+ @puppetdoc.options.expects(:[]=).with(:mode, :mode)
89
+
90
+ @puppetdoc.handle_mode('mode')
91
+ end
92
+
93
+ it "should store the mode if :rdoc" do
94
+ Puppet::Util::Reference.modes.stubs(:include?).with('rdoc').returns(false)
95
+
96
+ @puppetdoc.options.expects(:[]=).with(:mode, :rdoc)
97
+
98
+ @puppetdoc.handle_mode('rdoc')
99
+ end
100
+
101
+ it "should raise an error if the mode is not valid" do
102
+ Puppet::Util::Reference.modes.stubs(:include?).with('unknown').returns(false)
103
+ lambda { @puppetdoc.handle_mode('unknown') }
104
+ end
105
+
106
+ it "should list all references on list and exit" do
107
+ reference = stubs 'reference'
108
+ ref = stubs 'ref'
109
+ Puppet::Util::Reference.stubs(:references).returns([reference])
110
+
111
+ Puppet::Util::Reference.expects(:reference).with(reference).returns(ref)
112
+ ref.expects(:doc)
113
+ @puppetdoc.expects(:exit)
114
+
115
+ @puppetdoc.handle_list(nil)
116
+ end
117
+
118
+ it "should add reference to references list with --reference" do
119
+ @puppetdoc.options[:references] = [:ref1]
120
+
121
+ @puppetdoc.handle_reference('ref2')
122
+
123
+ @puppetdoc.options[:references].should == [:ref1,:ref2]
124
+ end
125
+ end
126
+
127
+ describe "during setup" do
128
+
129
+ before :each do
130
+ Puppet::Log.stubs(:newdestination)
131
+ ARGV.stubs(:size).returns(0)
132
+ end
133
+
134
+ it "should default to rdoc mode if there are command line arguments" do
135
+ ARGV.stubs(:size).returns(1)
136
+ @puppetdoc.stubs(:setup_rdoc)
137
+
138
+ @puppetdoc.options.expects(:[]=).with(:mode,:rdoc)
139
+
140
+ @puppetdoc.run_setup
141
+ end
142
+
143
+ it "should call setup_rdoc in rdoc mode" do
144
+ @puppetdoc.options.stubs(:[]).with(:mode).returns(:rdoc)
145
+
146
+ @puppetdoc.expects(:setup_rdoc)
147
+
148
+ @puppetdoc.run_setup
149
+ end
150
+
151
+ it "should call setup_reference if not rdoc" do
152
+ @puppetdoc.options.stubs(:[]).with(:mode).returns(:test)
153
+
154
+ @puppetdoc.expects(:setup_reference)
155
+
156
+ @puppetdoc.run_setup
157
+ end
158
+
159
+ describe "in non-rdoc mode" do
160
+
161
+ it "should get all non-dynamic reference if --all" do
162
+ @puppetdoc.options.stubs(:[]).with(:all).returns(true)
163
+ @puppetdoc.options.stubs(:[]).with(:references).returns([])
164
+ static = stub 'static', :dynamic? => false
165
+ dynamic = stub 'dynamic', :dynamic? => true
166
+ Reference.stubs(:reference).with(:static).returns(static)
167
+ Reference.stubs(:reference).with(:dynamic).returns(dynamic)
168
+ Reference.stubs(:references).returns([:static,:dynamic])
169
+
170
+ @puppetdoc.options.stubs(:[]=).with(:references, [:static])
171
+
172
+ @puppetdoc.setup_reference
173
+ end
174
+
175
+ it "should default to :type if no references" do
176
+ @puppetdoc.options.stubs(:[]).with(:all).returns(false)
177
+ array = stub 'array', :empty? => true
178
+ @puppetdoc.options.stubs(:[]).with(:references).returns(array)
179
+
180
+ array.expects(:<<).with(:type)
181
+
182
+ @puppetdoc.setup_reference
183
+ end
184
+
185
+ end
186
+
187
+ describe "in rdoc mode" do
188
+
189
+ before :each do
190
+ @puppetdoc.options.stubs(:[]).returns(false)
191
+ Puppet.stubs(:[]=).with(:name, "puppetmasterd")
192
+ Puppet.stubs(:parse_config)
193
+ Puppet::Util::Log.stubs(:level=)
194
+ Puppet::Util::Log.stubs(:newdestination)
195
+ end
196
+
197
+ describe "when there are unknown args" do
198
+
199
+ it "should expand --modulepath if any" do
200
+ @puppetdoc.unknown_args = [ { :opt => "--modulepath", :arg => "path" } ]
201
+ Puppet.settings.stubs(:handlearg)
202
+
203
+ File.expects(:expand_path).with("path")
204
+
205
+ @puppetdoc.setup_rdoc
206
+ end
207
+
208
+ it "should expand --manifestdir if any" do
209
+ @puppetdoc.unknown_args = [ { :opt => "--manifestdir", :arg => "path" } ]
210
+ Puppet.settings.stubs(:handlearg)
211
+
212
+ File.expects(:expand_path).with("path")
213
+
214
+ @puppetdoc.setup_rdoc
215
+ end
216
+
217
+ it "should give them to Puppet.settings" do
218
+ @puppetdoc.unknown_args = [ { :opt => :option, :arg => :argument } ]
219
+ Puppet.settings.expects(:handlearg).with(:option,:argument)
220
+
221
+ @puppetdoc.setup_rdoc
222
+ end
223
+ end
224
+
225
+ it "should pretend to be puppetmasterd" do
226
+ Puppet.expects(:[]=).with(:name, "puppetmasterd")
227
+
228
+ @puppetdoc.setup_rdoc
229
+ end
230
+
231
+ it "should parse puppet configuration" do
232
+ Puppet.expects(:parse_config)
233
+
234
+ @puppetdoc.setup_rdoc
235
+ end
236
+
237
+ it "should set log level to debug if --debug" do
238
+ @puppetdoc.options.stubs(:[]).with(:debug).returns(true)
239
+ Puppet::Util::Log.expects(:level=).with(:debug)
240
+
241
+ @puppetdoc.setup_rdoc
242
+ end
243
+
244
+ it "should set log level to info if --verbose" do
245
+ @puppetdoc.options.stubs(:[]).with(:verbose).returns(true)
246
+ Puppet::Util::Log.expects(:level=).with(:info)
247
+
248
+ @puppetdoc.setup_rdoc
249
+ end
250
+
251
+ it "should set log destination to console if --verbose" do
252
+ @puppetdoc.options.stubs(:[]).with(:verbose).returns(true)
253
+
254
+ Puppet::Util::Log.expects(:newdestination).with(:console)
255
+
256
+ @puppetdoc.setup_rdoc
257
+ end
258
+
259
+ it "should set log destination to console if --debug" do
260
+ @puppetdoc.options.stubs(:[]).with(:debug).returns(true)
261
+
262
+ Puppet::Util::Log.expects(:newdestination).with(:console)
263
+
264
+ @puppetdoc.setup_rdoc
265
+ end
266
+
267
+ end
268
+
269
+ end
270
+
271
+ describe "when running" do
272
+ before :each do
273
+ end
274
+
275
+ describe "in trac mode" do
276
+ it "should call trac for each reference" do
277
+ ref = stub 'ref'
278
+ Puppet::Util::Reference.stubs(:reference).with(:ref).returns(ref)
279
+ @puppetdoc.options.stubs(:[]).with(:references).returns([:ref])
280
+ @puppetdoc.options.stubs(:[]).with(:mode).returns(:trac)
281
+
282
+ ref.expects(:trac)
283
+
284
+ @puppetdoc.trac
285
+ end
286
+ end
287
+
288
+ describe "in rdoc mode" do
289
+ before :each do
290
+ @puppetdoc.manifest = false
291
+ Puppet.stubs(:info)
292
+ Puppet.stubs(:[]).with(:trace).returns(false)
293
+ Puppet.stubs(:[]).with(:modulepath).returns('modules')
294
+ Puppet.stubs(:[]).with(:manifestdir).returns('manifests')
295
+ @puppetdoc.options.stubs(:[]).with(:all).returns(false)
296
+ @puppetdoc.options.stubs(:[]).with(:outputdir).returns('doc')
297
+ Puppet.settings.stubs(:[]=).with(:document_all, false)
298
+ Puppet.settings.stubs(:setdefaults)
299
+ Puppet::Util::RDoc.stubs(:rdoc)
300
+ @puppetdoc.stubs(:exit)
301
+ File.stubs(:expand_path).with('modules').returns('modules')
302
+ File.stubs(:expand_path).with('manifests').returns('manifests')
303
+ @old = ARGV.dup
304
+ ARGV.clear
305
+ end
306
+
307
+ after :each do
308
+ ARGV << @old
309
+ end
310
+
311
+ it "should set document_all on --all" do
312
+ @puppetdoc.options.expects(:[]).with(:all).returns(true)
313
+ Puppet.settings.expects(:[]=).with(:document_all, true)
314
+
315
+ @puppetdoc.rdoc
316
+ end
317
+
318
+ it "should call Puppet::Util::RDoc.rdoc in full mode" do
319
+ Puppet::Util::RDoc.expects(:rdoc).with('doc', ['modules','manifests'])
320
+ @puppetdoc.rdoc
321
+ end
322
+
323
+ it "should call Puppet::Util::RDoc.manifestdoc in manifest mode" do
324
+ @puppetdoc.manifest = true
325
+ Puppet::Util::RDoc.expects(:manifestdoc)
326
+ @puppetdoc.rdoc
327
+ end
328
+ end
329
+
330
+ describe "in the other modes" do
331
+ it "should get reference in given format" do
332
+ reference = stub 'reference'
333
+ @puppetdoc.options.stubs(:[]).with(:mode).returns(:none)
334
+ @puppetdoc.options.stubs(:[]).with(:references).returns([:ref])
335
+ Puppet::Util::Reference.expects(:reference).with(:ref).returns(reference)
336
+ @puppetdoc.options.stubs(:[]).with(:format).returns(:format)
337
+ @puppetdoc.stubs(:exit)
338
+
339
+ reference.expects(:send).with { |format,contents| format == :format }.returns('doc')
340
+ @puppetdoc.other
341
+ end
342
+ end
343
+
344
+ end
345
+ end
@@ -0,0 +1,456 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.dirname(__FILE__) + '/../../spec_helper'
4
+
5
+ require 'puppet/application/puppetmasterd'
6
+
7
+ describe "PuppetMaster" do
8
+ before :each do
9
+ @puppetmasterd = Puppet::Application[:puppetmasterd]
10
+ @daemon = stub_everything 'daemon'
11
+ Puppet::Daemon.stubs(:new).returns(@daemon)
12
+ Puppet::Util::Log.stubs(:newdestination)
13
+ Puppet::Util::Log.stubs(:level=)
14
+
15
+ Puppet::Node.stubs(:terminus_class=)
16
+ Puppet::Node.stubs(:cache_class=)
17
+ Puppet::Node::Facts.stubs(:terminus_class=)
18
+ Puppet::Node::Facts.stubs(:cache_class=)
19
+ Puppet::Transaction::Report.stubs(:terminus_class=)
20
+ Puppet::Resource::Catalog.stubs(:terminus_class=)
21
+ end
22
+
23
+ it "should ask Puppet::Application to parse Puppet configuration file" do
24
+ @puppetmasterd.should_parse_config?.should be_true
25
+ end
26
+
27
+ it "should declare a main command" do
28
+ @puppetmasterd.should respond_to(:main)
29
+ end
30
+
31
+ it "should declare a parseonly command" do
32
+ @puppetmasterd.should respond_to(:parseonly)
33
+ end
34
+
35
+ it "should declare a compile command" do
36
+ @puppetmasterd.should respond_to(:compile)
37
+ end
38
+
39
+ it "should declare a preinit block" do
40
+ @puppetmasterd.should respond_to(:run_preinit)
41
+ end
42
+
43
+ describe "during preinit" do
44
+ before :each do
45
+ @puppetmasterd.stubs(:trap)
46
+ end
47
+
48
+ it "should catch INT" do
49
+ @puppetmasterd.stubs(:trap).with { |arg,block| arg == :INT }
50
+
51
+ @puppetmasterd.run_preinit
52
+ end
53
+
54
+ it "should create a Puppet Daemon" do
55
+ Puppet::Daemon.expects(:new).returns(@daemon)
56
+
57
+ @puppetmasterd.run_preinit
58
+ end
59
+
60
+ it "should give ARGV to the Daemon" do
61
+ argv = stub 'argv'
62
+ ARGV.stubs(:dup).returns(argv)
63
+ @daemon.expects(:argv=).with(argv)
64
+
65
+ @puppetmasterd.run_preinit
66
+ end
67
+
68
+ end
69
+
70
+ [:debug,:verbose].each do |option|
71
+ it "should declare handle_#{option} method" do
72
+ @puppetmasterd.should respond_to("handle_#{option}".to_sym)
73
+ end
74
+
75
+ it "should store argument value when calling handle_#{option}" do
76
+ @puppetmasterd.options.expects(:[]=).with(option, 'arg')
77
+ @puppetmasterd.send("handle_#{option}".to_sym, 'arg')
78
+ end
79
+ end
80
+
81
+ describe "when applying options" do
82
+ before do
83
+ @old_argv = ARGV.dup
84
+ ARGV.clear
85
+ end
86
+
87
+ after do
88
+ ARGV.clear
89
+ @old_argv.each { |a| ARGV << a }
90
+ end
91
+
92
+ it "should set the log destination with --logdest" do
93
+ Puppet::Log.expects(:newdestination).with("console")
94
+
95
+ @puppetmasterd.handle_logdest("console")
96
+ end
97
+
98
+ it "should put the setdest options to true" do
99
+ @puppetmasterd.options.expects(:[]=).with(:setdest,true)
100
+
101
+ @puppetmasterd.handle_logdest("console")
102
+ end
103
+
104
+ it "should parse the log destination from ARGV" do
105
+ ARGV << "--logdest" << "/my/file"
106
+
107
+ Puppet::Util::Log.expects(:newdestination).with("/my/file")
108
+
109
+ @puppetmasterd.parse_options
110
+ end
111
+ end
112
+
113
+ describe "during setup" do
114
+
115
+ before :each do
116
+ Puppet::Log.stubs(:newdestination)
117
+ Puppet.stubs(:settraps)
118
+ Puppet::Log.stubs(:level=)
119
+ Puppet::SSL::CertificateAuthority.stubs(:instance)
120
+ Puppet::SSL::CertificateAuthority.stubs(:ca?)
121
+ Puppet.settings.stubs(:use)
122
+
123
+ @puppetmasterd.options.stubs(:[]).with(any_parameters)
124
+ end
125
+
126
+ it "should set log level to debug if --debug was passed" do
127
+ @puppetmasterd.options.stubs(:[]).with(:debug).returns(true)
128
+
129
+ Puppet::Log.expects(:level=).with(:debug)
130
+
131
+ @puppetmasterd.run_setup
132
+ end
133
+
134
+ it "should set log level to info if --verbose was passed" do
135
+ @puppetmasterd.options.stubs(:[]).with(:verbose).returns(true)
136
+
137
+ Puppet::Log.expects(:level=).with(:info)
138
+
139
+ @puppetmasterd.run_setup
140
+ end
141
+
142
+ it "should set console as the log destination if no --logdest and --daemonize" do
143
+ @puppetmasterd.stubs(:[]).with(:daemonize).returns(:false)
144
+
145
+ Puppet::Log.expects(:newdestination).with(:syslog)
146
+
147
+ @puppetmasterd.run_setup
148
+ end
149
+
150
+ it "should set syslog as the log destination if no --logdest and not --daemonize" do
151
+ Puppet::Log.expects(:newdestination).with(:syslog)
152
+
153
+ @puppetmasterd.run_setup
154
+ end
155
+
156
+ it "should set syslog as the log destination if --rack" do
157
+ @puppetmasterd.options.stubs(:[]).with(:rack).returns(:true)
158
+
159
+ Puppet::Log.expects(:newdestination).with(:syslog)
160
+
161
+ @puppetmasterd.run_setup
162
+ end
163
+
164
+ it "should print puppet config if asked to in Puppet config" do
165
+ @puppetmasterd.stubs(:exit)
166
+ Puppet.settings.stubs(:print_configs?).returns(true)
167
+
168
+ Puppet.settings.expects(:print_configs)
169
+
170
+ @puppetmasterd.run_setup
171
+ end
172
+
173
+ it "should exit after printing puppet config if asked to in Puppet config" do
174
+ Puppet.settings.stubs(:print_configs?).returns(true)
175
+
176
+ lambda { @puppetmasterd.run_setup }.should raise_error(SystemExit)
177
+ end
178
+
179
+ it "should tell Puppet.settings to use :main,:ssl and :puppetmasterd category" do
180
+ Puppet.settings.expects(:use).with(:main,:puppetmasterd,:ssl)
181
+
182
+ @puppetmasterd.run_setup
183
+ end
184
+
185
+ it "should set node facst terminus to yaml" do
186
+ Puppet::Node::Facts.expects(:terminus_class=).with(:yaml)
187
+
188
+ @puppetmasterd.run_setup
189
+ end
190
+
191
+ it "should cache class in yaml" do
192
+ Puppet::Node.expects(:cache_class=).with(:yaml)
193
+
194
+ @puppetmasterd.run_setup
195
+ end
196
+
197
+ describe "with no ca" do
198
+
199
+ it "should set the ca_location to none" do
200
+ Puppet::SSL::Host.expects(:ca_location=).with(:none)
201
+
202
+ @puppetmasterd.run_setup
203
+ end
204
+
205
+ end
206
+
207
+ describe "with a ca configured" do
208
+
209
+ before :each do
210
+ Puppet::SSL::CertificateAuthority.stubs(:ca?).returns(true)
211
+ end
212
+
213
+ it "should set the ca_location to local" do
214
+ Puppet::SSL::Host.expects(:ca_location=).with(:local)
215
+
216
+ @puppetmasterd.run_setup
217
+ end
218
+
219
+ it "should tell Puppet.settings to use :ca category" do
220
+ Puppet.settings.expects(:use).with(:ca)
221
+
222
+ @puppetmasterd.run_setup
223
+ end
224
+
225
+ it "should instantiate the CertificateAuthority singleton" do
226
+ Puppet::SSL::CertificateAuthority.expects(:instance)
227
+
228
+ @puppetmasterd.run_setup
229
+ end
230
+
231
+
232
+ end
233
+
234
+ end
235
+
236
+ describe "when running" do
237
+
238
+ it "should dispatch to parseonly if parseonly is set" do
239
+ Puppet.stubs(:[]).with(:parseonly).returns(true)
240
+
241
+ @puppetmasterd.get_command.should == :parseonly
242
+ end
243
+
244
+ it "should dispatch to compile if called with --compile" do
245
+ @puppetmasterd.options[:node] = "foo"
246
+ @puppetmasterd.get_command.should == :compile
247
+ end
248
+
249
+ it "should dispatch to main if parseonly is not set" do
250
+ Puppet.stubs(:[]).with(:parseonly).returns(false)
251
+ @puppetmasterd.options[:node] = nil
252
+
253
+ @puppetmasterd.get_command.should == :main
254
+ end
255
+
256
+ describe "the parseonly command" do
257
+ before :each do
258
+ Puppet.stubs(:[]).with(:environment)
259
+ Puppet.stubs(:[]).with(:manifest).returns("site.pp")
260
+ @interpreter = stub_everything
261
+ Puppet.stubs(:err)
262
+ @puppetmasterd.stubs(:exit)
263
+ Puppet::Parser::Interpreter.stubs(:new).returns(@interpreter)
264
+ end
265
+
266
+ it "should delegate to the Puppet Parser" do
267
+
268
+ @interpreter.expects(:parser)
269
+
270
+ @puppetmasterd.parseonly
271
+ end
272
+
273
+ it "should exit with exit code 0 if no error" do
274
+ @puppetmasterd.expects(:exit).with(0)
275
+
276
+ @puppetmasterd.parseonly
277
+ end
278
+
279
+ it "should exit with exit code 1 if error" do
280
+ @interpreter.stubs(:parser).raises(Puppet::ParseError)
281
+
282
+ @puppetmasterd.expects(:exit).with(1)
283
+
284
+ @puppetmasterd.parseonly
285
+ end
286
+
287
+ end
288
+
289
+ describe "the compile command" do
290
+ before do
291
+ Puppet.stubs(:[]).with(:environment)
292
+ Puppet.stubs(:[]).with(:manifest).returns("site.pp")
293
+ @interpreter = stub_everything
294
+ Puppet.stubs(:err)
295
+ @puppetmasterd.stubs(:exit)
296
+ Puppet::Parser::Interpreter.stubs(:new).returns(@interpreter)
297
+ Puppet.features.stubs(:json?).returns true
298
+ end
299
+
300
+ it "should fail if json isn't available" do
301
+ Puppet.features.expects(:json?).returns false
302
+ lambda { @puppetmasterd.compile }.should raise_error
303
+ end
304
+
305
+ it "should compile a catalog for the specified node" do
306
+ @puppetmasterd.options[:node] = "foo"
307
+ Puppet::Resource::Catalog.expects(:find).with("foo").returns Puppet::Resource::Catalog.new
308
+ $stdout.stubs(:puts)
309
+
310
+ @puppetmasterd.compile
311
+ end
312
+
313
+ it "should render the catalog to json and print the output" do
314
+ @puppetmasterd.options[:node] = "foo"
315
+ catalog = Puppet::Resource::Catalog.new
316
+ catalog.expects(:render).with(:json).returns "myjson"
317
+ Puppet::Resource::Catalog.expects(:find).returns catalog
318
+
319
+ $stdout.expects(:puts).with("myjson")
320
+ @puppetmasterd.compile
321
+ end
322
+
323
+ it "should exit with error code 30 if no catalog can be found" do
324
+ @puppetmasterd.options[:node] = "foo"
325
+ Puppet::Resource::Catalog.expects(:find).returns nil
326
+ @puppetmasterd.expects(:exit).with(30)
327
+ $stderr.expects(:puts)
328
+
329
+ @puppetmasterd.compile
330
+ end
331
+
332
+ it "should exit with error code 30 if there's a failure" do
333
+ @puppetmasterd.options[:node] = "foo"
334
+ Puppet::Resource::Catalog.expects(:find).raises ArgumentError
335
+ @puppetmasterd.expects(:exit).with(30)
336
+ $stderr.expects(:puts)
337
+
338
+ @puppetmasterd.compile
339
+ end
340
+ end
341
+
342
+ describe "the main command" do
343
+ before :each do
344
+ @puppetmasterd.run_preinit
345
+ @server = stub_everything 'server'
346
+ Puppet::Network::Server.stubs(:new).returns(@server)
347
+ @app = stub_everything 'app'
348
+ Puppet::SSL::Host.stubs(:localhost)
349
+ Puppet::SSL::CertificateAuthority.stubs(:ca?)
350
+ Process.stubs(:uid).returns(1000)
351
+ Puppet.stubs(:service)
352
+ Puppet.stubs(:[])
353
+ Puppet.stubs(:notice)
354
+ Puppet.stubs(:start)
355
+ end
356
+
357
+ it "should create a Server" do
358
+ Puppet::Network::Server.expects(:new)
359
+
360
+ @puppetmasterd.main
361
+ end
362
+
363
+ it "should give the server to the daemon" do
364
+ @daemon.expects(:server=).with(@server)
365
+
366
+ @puppetmasterd.main
367
+ end
368
+
369
+ it "should create the server with the right XMLRPC handlers" do
370
+ Puppet::Network::Server.expects(:new).with { |args| args[:xmlrpc_handlers] == [:Status, :FileServer, :Master, :Report, :Filebucket]}
371
+
372
+ @puppetmasterd.main
373
+ end
374
+
375
+ it "should create the server with a :ca xmlrpc handler if needed" do
376
+ Puppet.stubs(:[]).with(:ca).returns(true)
377
+ Puppet::Network::Server.expects(:new).with { |args| args[:xmlrpc_handlers].include?(:CA) }
378
+
379
+ @puppetmasterd.main
380
+ end
381
+
382
+ it "should generate a SSL cert for localhost" do
383
+ Puppet::SSL::Host.expects(:localhost)
384
+
385
+ @puppetmasterd.main
386
+ end
387
+
388
+ it "should make sure to *only* hit the CA for data" do
389
+ Puppet::SSL::CertificateAuthority.stubs(:ca?).returns(true)
390
+
391
+ Puppet::SSL::Host.expects(:ca_location=).with(:only)
392
+
393
+ @puppetmasterd.main
394
+ end
395
+
396
+ it "should drop privileges if running as root" do
397
+ Process.stubs(:uid).returns(0)
398
+
399
+ Puppet::Util.expects(:chuser)
400
+
401
+ @puppetmasterd.main
402
+ end
403
+
404
+ it "should daemonize if needed" do
405
+ Puppet.stubs(:[]).with(:daemonize).returns(true)
406
+
407
+ @daemon.expects(:daemonize)
408
+
409
+ @puppetmasterd.main
410
+ end
411
+
412
+ it "should start the service" do
413
+ @daemon.expects(:start)
414
+
415
+ @puppetmasterd.main
416
+ end
417
+
418
+ describe "with --rack" do
419
+ confine "Rack is not available" => Puppet.features.rack?
420
+
421
+ before do
422
+ require 'puppet/network/http/rack'
423
+ Puppet::Network::HTTP::Rack.stubs(:new).returns(@app)
424
+ end
425
+
426
+ it "it should create the app with REST and XMLRPC support" do
427
+ @puppetmasterd.options.stubs(:[]).with(:rack).returns(:true)
428
+
429
+ Puppet::Network::HTTP::Rack.expects(:new).with { |args|
430
+ args[:xmlrpc_handlers] == [:Status, :FileServer, :Master, :Report, :Filebucket] and
431
+ args[:protocols] == [:rest, :xmlrpc]
432
+ }
433
+
434
+ @puppetmasterd.main
435
+ end
436
+
437
+ it "it should not start a daemon" do
438
+ @puppetmasterd.options.stubs(:[]).with(:rack).returns(:true)
439
+
440
+ @daemon.expects(:start).never
441
+
442
+ @puppetmasterd.main
443
+ end
444
+
445
+ it "it should return the app" do
446
+ @puppetmasterd.options.stubs(:[]).with(:rack).returns(:true)
447
+
448
+ app = @puppetmasterd.main
449
+ app.should equal(@app)
450
+ end
451
+
452
+ end
453
+
454
+ end
455
+ end
456
+ end