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,287 @@
1
+ #!/usr/bin/env ruby"
2
+
3
+ require File.dirname(__FILE__) + '/../spec_helper'
4
+ require 'puppet/daemon'
5
+
6
+ describe Puppet::Daemon do
7
+ before do
8
+ @daemon = Puppet::Daemon.new
9
+ end
10
+
11
+ it "should be able to manage an agent" do
12
+ @daemon.should respond_to(:agent)
13
+ end
14
+
15
+ it "should be able to manage a network server" do
16
+ @daemon.should respond_to(:server)
17
+ end
18
+
19
+ it "should reopen the Log logs when told to reopen logs" do
20
+ Puppet::Util::Log.expects(:reopen)
21
+ @daemon.reopen_logs
22
+ end
23
+
24
+ describe "when setting signal traps" do
25
+ before do
26
+ @daemon.stubs(:trap)
27
+ end
28
+
29
+ {:INT => :stop, :TERM => :stop, :HUP => :restart, :USR1 => :reload, :USR2 => :reopen_logs}.each do |signal, method|
30
+ it "should log and call #{method} when it receives #{signal}" do
31
+ @daemon.expects(:trap).with(signal).yields
32
+
33
+ Puppet.expects(:notice)
34
+
35
+ @daemon.expects(method)
36
+
37
+ @daemon.set_signal_traps
38
+ end
39
+ end
40
+ end
41
+
42
+ describe "when starting" do
43
+ before do
44
+ @daemon.stubs(:create_pidfile)
45
+ @daemon.stubs(:set_signal_traps)
46
+ EventLoop.current.stubs(:run)
47
+ end
48
+
49
+ it "should fail if it has neither agent nor server" do
50
+ lambda { @daemon.start }.should raise_error(Puppet::DevError)
51
+ end
52
+
53
+ it "should create its pidfile" do
54
+ @daemon.stubs(:agent).returns stub('agent', :start => nil)
55
+
56
+ @daemon.expects(:create_pidfile)
57
+ @daemon.start
58
+ end
59
+
60
+ it "should start the agent if the agent is configured" do
61
+ agent = mock 'agent'
62
+ agent.expects(:start)
63
+ @daemon.stubs(:agent).returns agent
64
+
65
+ @daemon.start
66
+ end
67
+
68
+ it "should start its server if one is configured" do
69
+ server = mock 'server'
70
+ server.expects(:start)
71
+ @daemon.stubs(:server).returns server
72
+
73
+ @daemon.start
74
+ end
75
+
76
+ it "should let the current EventLoop run" do
77
+ @daemon.stubs(:agent).returns stub('agent', :start => nil)
78
+ EventLoop.current.expects(:run)
79
+
80
+ @daemon.start
81
+ end
82
+ end
83
+
84
+ describe "when stopping" do
85
+ before do
86
+ @daemon.stubs(:remove_pidfile)
87
+ @daemon.stubs(:exit)
88
+ Puppet::Util::Log.stubs(:close_all)
89
+ end
90
+
91
+ it "should stop its server if one is configured" do
92
+ server = mock 'server'
93
+ server.expects(:stop)
94
+ @daemon.stubs(:server).returns server
95
+
96
+ @daemon.stop
97
+ end
98
+
99
+ it "should stop its agent if one is configured" do
100
+ agent = mock 'agent'
101
+ agent.expects(:stop)
102
+ @daemon.stubs(:agent).returns agent
103
+
104
+ @daemon.stop
105
+ end
106
+
107
+ it "should remove its pidfile" do
108
+ @daemon.expects(:remove_pidfile)
109
+
110
+ @daemon.stop
111
+ end
112
+
113
+ it "should close all logs" do
114
+ Puppet::Util::Log.expects(:close_all)
115
+
116
+ @daemon.stop
117
+ end
118
+
119
+ it "should exit unless called with ':exit => false'" do
120
+ @daemon.expects(:exit)
121
+ @daemon.stop
122
+ end
123
+
124
+ it "should not exit if called with ':exit => false'" do
125
+ @daemon.expects(:exit).never
126
+ @daemon.stop :exit => false
127
+ end
128
+ end
129
+
130
+ describe "when creating its pidfile" do
131
+ it "should use an exclusive mutex" do
132
+ Puppet.settings.expects(:value).with(:name).returns "me"
133
+
134
+ sync = mock 'sync'
135
+ Puppet::Util.expects(:sync).with("me").returns sync
136
+
137
+ sync.expects(:synchronize).with(Sync::EX)
138
+ @daemon.create_pidfile
139
+ end
140
+
141
+ it "should lock the pidfile using the Pidlock class" do
142
+ pidfile = mock 'pidfile'
143
+
144
+ Puppet.settings.stubs(:value).with(:name).returns "eh"
145
+ Puppet.settings.expects(:value).with(:pidfile).returns "/my/file"
146
+
147
+ Puppet::Util::Pidlock.expects(:new).with("/my/file").returns pidfile
148
+
149
+ pidfile.expects(:lock).returns true
150
+ @daemon.create_pidfile
151
+ end
152
+
153
+ it "should fail if it cannot lock" do
154
+ pidfile = mock 'pidfile'
155
+
156
+ Puppet.settings.stubs(:value).with(:name).returns "eh"
157
+ Puppet.settings.stubs(:value).with(:pidfile).returns "/my/file"
158
+
159
+ Puppet::Util::Pidlock.expects(:new).with("/my/file").returns pidfile
160
+
161
+ pidfile.expects(:lock).returns false
162
+
163
+ lambda { @daemon.create_pidfile }.should raise_error
164
+ end
165
+ end
166
+
167
+ describe "when removing its pidfile" do
168
+ it "should use an exclusive mutex" do
169
+ Puppet.settings.expects(:value).with(:name).returns "me"
170
+
171
+ sync = mock 'sync'
172
+ Puppet::Util.expects(:sync).with("me").returns sync
173
+
174
+ sync.expects(:synchronize).with(Sync::EX)
175
+ @daemon.remove_pidfile
176
+ end
177
+
178
+ it "should do nothing if the pidfile is not present" do
179
+ pidfile = mock 'pidfile', :locked? => false
180
+ Puppet::Util::Pidlock.expects(:new).with("/my/file").returns pidfile
181
+
182
+ Puppet.settings.stubs(:value).with(:name).returns "eh"
183
+ Puppet.settings.stubs(:value).with(:pidfile).returns "/my/file"
184
+
185
+ pidfile.expects(:unlock).never
186
+ @daemon.remove_pidfile
187
+ end
188
+
189
+ it "should unlock the pidfile using the Pidlock class" do
190
+ pidfile = mock 'pidfile', :locked? => true
191
+ Puppet::Util::Pidlock.expects(:new).with("/my/file").returns pidfile
192
+ pidfile.expects(:unlock).returns true
193
+
194
+ Puppet.settings.stubs(:value).with(:name).returns "eh"
195
+ Puppet.settings.stubs(:value).with(:pidfile).returns "/my/file"
196
+
197
+ @daemon.remove_pidfile
198
+ end
199
+
200
+ it "should warn if it cannot remove the pidfile" do
201
+ pidfile = mock 'pidfile', :locked? => true
202
+ Puppet::Util::Pidlock.expects(:new).with("/my/file").returns pidfile
203
+ pidfile.expects(:unlock).returns false
204
+
205
+ Puppet.settings.stubs(:value).with(:name).returns "eh"
206
+ Puppet.settings.stubs(:value).with(:pidfile).returns "/my/file"
207
+
208
+ Puppet.expects :err
209
+ @daemon.remove_pidfile
210
+ end
211
+ end
212
+
213
+ describe "when reloading" do
214
+ it "should do nothing if no agent is configured" do
215
+ @daemon.reload
216
+ end
217
+
218
+ it "should do nothing if the agent is running" do
219
+ agent = mock 'agent'
220
+ agent.expects(:running?).returns true
221
+
222
+ @daemon.stubs(:agent).returns agent
223
+
224
+ @daemon.reload
225
+ end
226
+
227
+ it "should run the agent if one is available and it is not running" do
228
+ agent = mock 'agent'
229
+ agent.expects(:running?).returns false
230
+ agent.expects :run
231
+
232
+ @daemon.stubs(:agent).returns agent
233
+
234
+ @daemon.reload
235
+ end
236
+ end
237
+
238
+ describe "when restarting" do
239
+ it "should reexec itself if no agent is available" do
240
+ @daemon.expects(:reexec)
241
+
242
+ @daemon.restart
243
+ end
244
+
245
+ it "should reexec itself if the agent is not running" do
246
+ agent = mock 'agent'
247
+ agent.expects(:running?).returns false
248
+ @daemon.stubs(:agent).returns agent
249
+ @daemon.expects(:reexec)
250
+
251
+ @daemon.restart
252
+ end
253
+
254
+ it "should configure the agent for later restart if the agent is running" do
255
+ agent = mock 'agent'
256
+ agent.expects(:running?).returns true
257
+ @daemon.stubs(:agent).returns agent
258
+ @daemon.expects(:reexec).never
259
+
260
+ agent.expects(:configure_delayed_restart)
261
+
262
+ @daemon.restart
263
+ end
264
+ end
265
+
266
+ describe "when reexecing it self" do
267
+ it "should fail if no argv values are available" do
268
+ @daemon.expects(:argv).returns nil
269
+ lambda { @daemon.reexec }.should raise_error(Puppet::DevError)
270
+ end
271
+
272
+ it "should shut down without exiting" do
273
+ @daemon.argv = %w{foo}
274
+ @daemon.expects(:stop).with(:exit => false)
275
+
276
+ @daemon.stubs(:exec)
277
+ @daemon.reexec
278
+ end
279
+
280
+ it "should call 'exec' with the original executable and arguments" do
281
+ @daemon.argv = %w{foo}
282
+ @daemon.expects(:exec).with($0 + " " + "foo")
283
+
284
+ @daemon.reexec
285
+ end
286
+ end
287
+ end
@@ -2,67 +2,70 @@
2
2
 
3
3
  require File.dirname(__FILE__) + '/../../spec_helper'
4
4
 
5
- require 'puppet/file_serving/file_base'
5
+ require 'puppet/file_serving/base'
6
6
 
7
- describe Puppet::FileServing::FileBase do
8
- it "should accept a key in the form of a URI" do
9
- Puppet::FileServing::FileBase.new("puppet://host/module/dir/file").key.should == "puppet://host/module/dir/file"
7
+ describe Puppet::FileServing::Base do
8
+ it "should accept a path" do
9
+ Puppet::FileServing::Base.new("/module/dir/file").path.should == "/module/dir/file"
10
+ end
11
+
12
+ it "should require that paths be fully qualified" do
13
+ lambda { Puppet::FileServing::Base.new("module/dir/file") }.should raise_error(ArgumentError)
10
14
  end
11
15
 
12
16
  it "should allow specification of whether links should be managed" do
13
- Puppet::FileServing::FileBase.new("puppet://host/module/dir/file", :links => :manage).links.should == :manage
17
+ Puppet::FileServing::Base.new("/module/dir/file", :links => :manage).links.should == :manage
18
+ end
19
+
20
+ it "should have a :source attribute" do
21
+ file = Puppet::FileServing::Base.new("/module/dir/file")
22
+ file.should respond_to(:source)
23
+ file.should respond_to(:source=)
14
24
  end
15
25
 
16
26
  it "should consider :ignore links equivalent to :manage links" do
17
- Puppet::FileServing::FileBase.new("puppet://host/module/dir/file", :links => :ignore).links.should == :manage
27
+ Puppet::FileServing::Base.new("/module/dir/file", :links => :ignore).links.should == :manage
18
28
  end
19
29
 
20
30
  it "should fail if :links is set to anything other than :manage, :follow, or :ignore" do
21
- proc { Puppet::FileServing::FileBase.new("puppet://host/module/dir/file", :links => :else) }.should raise_error(ArgumentError)
31
+ proc { Puppet::FileServing::Base.new("/module/dir/file", :links => :else) }.should raise_error(ArgumentError)
32
+ end
33
+
34
+ it "should allow links values to be set as strings" do
35
+ Puppet::FileServing::Base.new("/module/dir/file", :links => "follow").links.should == :follow
22
36
  end
23
37
 
24
38
  it "should default to :manage for :links" do
25
- Puppet::FileServing::FileBase.new("puppet://host/module/dir/file").links.should == :manage
39
+ Puppet::FileServing::Base.new("/module/dir/file").links.should == :manage
26
40
  end
27
41
 
28
42
  it "should allow specification of a path" do
29
43
  FileTest.stubs(:exists?).returns(true)
30
- Puppet::FileServing::FileBase.new("puppet://host/module/dir/file", :path => "/my/file").path.should == "/my/file"
44
+ Puppet::FileServing::Base.new("/module/dir/file", :path => "/my/file").path.should == "/my/file"
31
45
  end
32
46
 
33
47
  it "should allow specification of a relative path" do
34
48
  FileTest.stubs(:exists?).returns(true)
35
- Puppet::FileServing::FileBase.new("puppet://host/module/dir/file", :relative_path => "my/file").relative_path.should == "my/file"
49
+ Puppet::FileServing::Base.new("/module/dir/file", :relative_path => "my/file").relative_path.should == "my/file"
36
50
  end
37
51
 
38
52
  it "should have a means of determining if the file exists" do
39
- Puppet::FileServing::FileBase.new("blah").should respond_to(:exist?)
53
+ Puppet::FileServing::Base.new("/blah").should respond_to(:exist?)
40
54
  end
41
55
 
42
56
  it "should correctly indicate if the file is present" do
43
57
  File.expects(:lstat).with("/my/file").returns(mock("stat"))
44
- Puppet::FileServing::FileBase.new("blah", :path => "/my/file").exist?.should be_true
58
+ Puppet::FileServing::Base.new("/my/file").exist?.should be_true
45
59
  end
46
60
 
47
- it "should correctly indicate if the file is asbsent" do
61
+ it "should correctly indicate if the file is absent" do
48
62
  File.expects(:lstat).with("/my/file").raises RuntimeError
49
- Puppet::FileServing::FileBase.new("blah", :path => "/my/file").exist?.should be_false
50
- end
51
-
52
- describe "when setting the base path" do
53
- before do
54
- @file = Puppet::FileServing::FileBase.new("puppet://host/module/dir/file")
55
- end
56
-
57
- it "should require that the base path be fully qualified" do
58
- FileTest.stubs(:exists?).returns(true)
59
- proc { @file.path = "unqualified/file" }.should raise_error(ArgumentError)
60
- end
63
+ Puppet::FileServing::Base.new("/my/file").exist?.should be_false
61
64
  end
62
65
 
63
66
  describe "when setting the relative path" do
64
67
  it "should require that the relative path be unqualified" do
65
- @file = Puppet::FileServing::FileBase.new("puppet://host/module/dir/file")
68
+ @file = Puppet::FileServing::Base.new("/module/dir/file")
66
69
  FileTest.stubs(:exists?).returns(true)
67
70
  proc { @file.relative_path = "/qualified/file" }.should raise_error(ArgumentError)
68
71
  end
@@ -70,7 +73,7 @@ describe Puppet::FileServing::FileBase do
70
73
 
71
74
  describe "when determining the full file path" do
72
75
  before do
73
- @file = Puppet::FileServing::FileBase.new("mykey", :path => "/this/file")
76
+ @file = Puppet::FileServing::Base.new("/this/file")
74
77
  end
75
78
 
76
79
  it "should return the path if there is no relative path" do
@@ -82,20 +85,25 @@ describe Puppet::FileServing::FileBase do
82
85
  @file.full_path.should == "/this/file"
83
86
  end
84
87
 
88
+ it "should return the path if the relative_path is set to '.'" do
89
+ @file.relative_path = "."
90
+ @file.full_path.should == "/this/file"
91
+ end
92
+
85
93
  it "should return the path joined with the relative path if there is a relative path and it is not set to '/' or ''" do
86
94
  @file.relative_path = "not/qualified"
87
95
  @file.full_path.should == "/this/file/not/qualified"
88
96
  end
89
97
 
90
- it "should should fail if there is no path set" do
91
- @file = Puppet::FileServing::FileBase.new("not/qualified")
92
- proc { @file.full_path }.should raise_error(ArgumentError)
98
+ it "should strip extra slashes" do
99
+ file = Puppet::FileServing::Base.new("//this//file")
100
+ file.full_path.should == "/this/file"
93
101
  end
94
102
  end
95
103
 
96
104
  describe "when stat'ing files" do
97
105
  before do
98
- @file = Puppet::FileServing::FileBase.new("mykey", :path => "/this/file")
106
+ @file = Puppet::FileServing::Base.new("/this/file")
99
107
  end
100
108
 
101
109
  it "should stat the file's full path" do
@@ -15,12 +15,12 @@ describe Puppet::FileServing::Configuration do
15
15
 
16
16
  it "should have a method for removing the current configuration instance" do
17
17
  old = Puppet::FileServing::Configuration.create
18
- Puppet::FileServing::Configuration.clear_cache
18
+ Puppet::Util::Cacher.expire
19
19
  Puppet::FileServing::Configuration.create.should_not equal(old)
20
20
  end
21
21
 
22
22
  after do
23
- Puppet::FileServing::Configuration.clear_cache
23
+ Puppet::Util::Cacher.expire
24
24
  end
25
25
  end
26
26
 
@@ -28,14 +28,15 @@ describe Puppet::FileServing::Configuration do
28
28
 
29
29
  before :each do
30
30
  @path = "/path/to/configuration/file.conf"
31
+ Puppet.settings.stubs(:value).with(:trace).returns(false)
31
32
  Puppet.settings.stubs(:value).with(:fileserverconfig).returns(@path)
32
33
  end
33
34
 
34
35
  after :each do
35
- Puppet::FileServing::Configuration.clear_cache
36
+ Puppet::Util::Cacher.expire
36
37
  end
37
38
 
38
- describe Puppet::FileServing::Configuration, " when initializing" do
39
+ describe "when initializing" do
39
40
 
40
41
  it "should work without a configuration file" do
41
42
  FileTest.stubs(:exists?).with(@path).returns(false)
@@ -55,7 +56,7 @@ describe Puppet::FileServing::Configuration do
55
56
  end
56
57
  end
57
58
 
58
- describe Puppet::FileServing::Configuration, " when parsing the configuration file" do
59
+ describe "when parsing the configuration file" do
59
60
 
60
61
  before do
61
62
  FileTest.stubs(:exists?).with(@path).returns(true)
@@ -93,132 +94,142 @@ describe Puppet::FileServing::Configuration do
93
94
  config.send(:readconfig, false)
94
95
  config.mounted?("one").should be_true
95
96
  end
96
- end
97
-
98
- describe Puppet::FileServing::Configuration, " when finding files" do
99
97
 
100
- before do
101
- @parser = mock 'parser'
102
- @parser.stubs(:changed?).returns true
103
- FileTest.stubs(:exists?).with(@path).returns(true)
104
- Puppet::FileServing::Configuration::Parser.stubs(:new).returns(@parser)
98
+ it "should add modules and plugins mounts even if the file does not exist" do
99
+ FileTest.expects(:exists?).returns false # the file doesn't exist
100
+ config = Puppet::FileServing::Configuration.create
101
+ config.mounted?("modules").should be_true
102
+ config.mounted?("plugins").should be_true
103
+ end
105
104
 
106
- @mount1 = stub 'mount', :name => "one"
107
- @mounts = {"one" => @mount1}
105
+ it "should allow all access to modules and plugins if no fileserver.conf exists" do
106
+ FileTest.expects(:exists?).returns false # the file doesn't exist
107
+ modules = stub 'modules'
108
+ Puppet::FileServing::Mount::Modules.stubs(:new).returns(modules)
109
+ modules.expects(:allow).with('*')
108
110
 
109
- Facter.stubs(:value).with("hostname").returns("whatever")
111
+ plugins = stub 'plugins'
112
+ Puppet::FileServing::Mount::Plugins.stubs(:new).returns(plugins)
113
+ plugins.expects(:allow).with('*')
110
114
 
111
- @config = Puppet::FileServing::Configuration.create
115
+ Puppet::FileServing::Configuration.create
112
116
  end
113
117
 
114
- it "should fail if the uri does not match a leading slash followed by a valid mount name" do
115
- @parser.expects(:parse).returns(@mounts)
116
- proc { @config.file_path("something") }.should raise_error(ArgumentError)
118
+ it "should add modules and plugins mounts even if they are not returned by the parser" do
119
+ @parser.expects(:parse).returns("one" => mock("mount"))
120
+ FileTest.expects(:exists?).returns true # the file doesn't exist
121
+ config = Puppet::FileServing::Configuration.create
122
+ config.mounted?("modules").should be_true
123
+ config.mounted?("plugins").should be_true
117
124
  end
125
+ end
118
126
 
119
- it "should use the first term after the first slash for the mount name" do
120
- @parser.expects(:parse).returns(@mounts)
121
- FileTest.stubs(:exists?).returns(true)
122
- @mount1.expects(:file)
123
- @config.file_path("/one")
127
+ describe "when finding the specified mount" do
128
+ it "should choose the named mount if one exists" do
129
+ config = Puppet::FileServing::Configuration.create
130
+ config.expects(:mounts).returns("one" => "foo")
131
+ config.find_mount("one", mock('env')).should == "foo"
124
132
  end
125
133
 
126
- it "should use the remainder of the URI after the mount name as the file name" do
127
- @parser.expects(:parse).returns(@mounts)
128
- @mount1.expects(:file).with("something/else", {})
129
- FileTest.stubs(:exists?).returns(true)
130
- @config.file_path("/one/something/else")
131
- end
134
+ it "should use the provided environment to find a matching module if the named module cannot be found" do
135
+ config = Puppet::FileServing::Configuration.create
132
136
 
133
- it "should treat a bare name as a mount and no relative file" do
134
- @parser.expects(:parse).returns(@mounts)
135
- @mount1.expects(:file).with(nil, {})
136
- FileTest.stubs(:exists?).returns(true)
137
- @config.file_path("/one")
138
- end
137
+ mod = mock 'module'
138
+ env = mock 'environment'
139
+ env.expects(:module).with("foo").returns mod
140
+ mount = mock 'mount'
139
141
 
140
- it "should treat a name with a trailing slash equivalently to a name with no trailing slash" do
141
- @parser.expects(:parse).returns(@mounts)
142
- @mount1.expects(:file).with(nil, {})
143
- FileTest.stubs(:exists?).returns(true)
144
- @config.file_path("/one/")
142
+ config.stubs(:mounts).returns("modules" => mount)
143
+ Puppet::Util::Warnings.expects(:notice_once)
144
+ config.find_mount("foo", env).should equal(mount)
145
145
  end
146
146
 
147
- it "should return nil if the mount cannot be found" do
148
- @parser.expects(:changed?).returns(true)
149
- @parser.expects(:parse).returns({})
150
- @config.file_path("/one/something").should be_nil
151
- end
147
+ it "should return nil if there is no such named mount and no module with the same name exists" do
148
+ config = Puppet::FileServing::Configuration.create
149
+
150
+ env = mock 'environment'
151
+ env.expects(:module).with("foo").returns nil
152
152
 
153
- it "should return nil if the mount does not contain the file" do
154
- @parser.expects(:parse).returns(@mounts)
155
- @mount1.expects(:file).with("something/else", {}).returns(nil)
156
- @config.file_path("/one/something/else").should be_nil
153
+ mount = mock 'mount'
154
+ config.stubs(:mounts).returns("modules" => mount)
155
+ config.find_mount("foo", env).should be_nil
157
156
  end
157
+ end
158
+
159
+ describe "when finding the mount name and relative path in a request key" do
160
+ before do
161
+ @config = Puppet::FileServing::Configuration.create
162
+ @config.stubs(:find_mount)
158
163
 
159
- it "should return the fully qualified path if the mount exists" do
160
- @parser.expects(:parse).returns(@mounts)
161
- @mount1.expects(:file).with("something/else", {}).returns("/full/path")
162
- @config.file_path("/one/something/else").should == "/full/path"
164
+ @request = stub 'request', :key => "foo/bar/baz", :options => {}, :node => nil, :environment => mock("env")
163
165
  end
164
166
 
165
- it "should reparse the configuration file when it has changed" do
166
- @mount1.stubs(:file).returns("whatever")
167
- @parser.expects(:changed?).returns(true)
168
- @parser.expects(:parse).returns(@mounts)
169
- FileTest.stubs(:exists?).returns(true)
170
- @config.file_path("/one/something")
167
+ it "should reread the configuration" do
168
+ @config.expects(:readconfig)
171
169
 
172
- @parser.expects(:changed?).returns(true)
173
- @parser.expects(:parse).returns({})
174
- @config.file_path("/one/something").should be_nil
170
+ @config.split_path(@request)
175
171
  end
176
- end
177
172
 
178
- describe Puppet::FileServing::Configuration, " when checking authorization" do
173
+ it "should treat the first field of the URI path as the mount name" do
174
+ @config.expects(:find_mount).with { |name, node| name == "foo" }
179
175
 
180
- before do
181
- @parser = mock 'parser'
182
- @parser.stubs(:changed?).returns true
183
- FileTest.stubs(:exists?).with(@path).returns(true)
184
- Puppet::FileServing::Configuration::Parser.stubs(:new).returns(@parser)
176
+ @config.split_path(@request)
177
+ end
185
178
 
186
- @mount1 = stub 'mount', :name => "one"
187
- @mounts = {"one" => @mount1}
188
- @parser.stubs(:parse).returns(@mounts)
179
+ it "should fail if the mount name is not alpha-numeric" do
180
+ @request.expects(:key).returns "foo&bar/asdf"
189
181
 
190
- Facter.stubs(:value).with("hostname").returns("whatever")
182
+ lambda { @config.split_path(@request) }.should raise_error(ArgumentError)
183
+ end
191
184
 
192
- @config = Puppet::FileServing::Configuration.create
185
+ it "should support dashes in the mount name" do
186
+ @request.expects(:key).returns "foo-bar/asdf"
187
+
188
+ lambda { @config.split_path(@request) }.should_not raise_error(ArgumentError)
193
189
  end
194
190
 
195
- it "should return false if the mount cannot be found" do
196
- @config.authorized?("/nope/my/file").should be_false
191
+ it "should use the mount name and environment to find the mount" do
192
+ @config.expects(:find_mount).with { |name, env| name == "foo" and env == @request.environment }
193
+ @request.stubs(:node).returns("mynode")
194
+
195
+ @config.split_path(@request)
197
196
  end
198
197
 
199
- it "should use the mount to determine authorization" do
200
- @mount1.expects(:allowed?)
201
- @config.authorized?("/one/my/file")
198
+ it "should return nil if the mount cannot be found" do
199
+ @config.expects(:find_mount).returns nil
200
+
201
+ @config.split_path(@request).should be_nil
202
202
  end
203
203
 
204
- it "should pass the client's name to the mount if provided" do
205
- @mount1.expects(:allowed?).with("myhost", nil)
206
- @config.authorized?("/one/my/file", :node => "myhost")
204
+ it "should return the mount and the relative path if the mount is found" do
205
+ mount = stub 'mount', :name => "foo"
206
+ @config.expects(:find_mount).returns mount
207
+
208
+ @config.split_path(@request).should == [mount, "bar/baz"]
207
209
  end
208
210
 
209
- it "should pass the client's IP to the mount if provided" do
210
- @mount1.expects(:allowed?).with("myhost", "myip")
211
- @config.authorized?("/one/my/file", :node => "myhost", :ipaddress => "myip")
211
+ it "should remove any double slashes" do
212
+ @request.stubs(:key).returns "foo/bar//baz"
213
+ mount = stub 'mount', :name => "foo"
214
+ @config.expects(:find_mount).returns mount
215
+
216
+ @config.split_path(@request).should == [mount, "bar/baz"]
212
217
  end
213
218
 
214
- it "should return true if the mount allows the client" do
215
- @mount1.expects(:allowed?).returns(true)
216
- @config.authorized?("/one/my/file").should be_true
219
+ it "should return the relative path as nil if it is an empty string" do
220
+ @request.expects(:key).returns "foo"
221
+ mount = stub 'mount', :name => "foo"
222
+ @config.expects(:find_mount).returns mount
223
+
224
+ @config.split_path(@request).should == [mount, nil]
217
225
  end
218
226
 
219
- it "should return false if the mount denies the client" do
220
- @mount1.expects(:allowed?).returns(false)
221
- @config.authorized?("/one/my/file").should be_false
227
+ it "should add 'modules/' to the relative path if the modules mount is used but not specified, for backward compatibility" do
228
+ @request.expects(:key).returns "foo/bar"
229
+ mount = stub 'mount', :name => "modules"
230
+ @config.expects(:find_mount).returns mount
231
+
232
+ @config.split_path(@request).should == [mount, "foo/bar"]
222
233
  end
223
234
  end
224
235
  end