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
@@ -32,10 +32,6 @@ describe Puppet::FileServing::Configuration::Parser do
32
32
  describe Puppet::FileServing::Configuration::Parser, " when parsing" do
33
33
  include FSConfigurationParserTesting
34
34
 
35
- before do
36
- @parser.stubs(:add_modules_mount)
37
- end
38
-
39
35
  it "should allow comments" do
40
36
  @filehandle.expects(:each).yields("# this is a comment\n")
41
37
  proc { @parser.parse }.should_not raise_error
@@ -47,23 +43,25 @@ describe Puppet::FileServing::Configuration::Parser do
47
43
  end
48
44
 
49
45
  it "should create a new mount for each section in the configuration" do
50
- mount1 = mock 'one'
51
- mount2 = mock 'two'
52
- Puppet::FileServing::Mount.expects(:new).with("one").returns(mount1)
53
- Puppet::FileServing::Mount.expects(:new).with("two").returns(mount2)
46
+ mount1 = mock 'one', :validate => true
47
+ mount2 = mock 'two', :validate => true
48
+ Puppet::FileServing::Mount::File.expects(:new).with("one").returns(mount1)
49
+ Puppet::FileServing::Mount::File.expects(:new).with("two").returns(mount2)
54
50
  mock_file_content "[one]\n[two]\n"
55
51
  @parser.parse
56
52
  end
57
53
 
58
54
  # This test is almost the exact same as the previous one.
59
55
  it "should return a hash of the created mounts" do
60
- mount1 = mock 'one'
61
- mount2 = mock 'two'
62
- Puppet::FileServing::Mount.expects(:new).with("one").returns(mount1)
63
- Puppet::FileServing::Mount.expects(:new).with("two").returns(mount2)
56
+ mount1 = mock 'one', :validate => true
57
+ mount2 = mock 'two', :validate => true
58
+ Puppet::FileServing::Mount::File.expects(:new).with("one").returns(mount1)
59
+ Puppet::FileServing::Mount::File.expects(:new).with("two").returns(mount2)
64
60
  mock_file_content "[one]\n[two]\n"
65
61
 
66
- @parser.parse.should == {"one" => mount1, "two" => mount2}
62
+ result = @parser.parse
63
+ result["one"].should equal(mount1)
64
+ result["two"].should equal(mount2)
67
65
  end
68
66
 
69
67
  it "should only allow mount names that are alphanumeric plus dashes" do
@@ -75,14 +73,34 @@ describe Puppet::FileServing::Configuration::Parser do
75
73
  mock_file_content "[one]\npath = /testing"
76
74
  proc { @parser.parse }.should raise_error(ArgumentError)
77
75
  end
76
+
77
+ it "should validate each created mount" do
78
+ mount1 = mock 'one'
79
+ Puppet::FileServing::Mount::File.expects(:new).with("one").returns(mount1)
80
+ mock_file_content "[one]\n"
81
+
82
+ mount1.expects(:validate)
83
+
84
+ @parser.parse
85
+ end
86
+
87
+ it "should fail if any mount does not pass validation" do
88
+ mount1 = mock 'one'
89
+ Puppet::FileServing::Mount::File.expects(:new).with("one").returns(mount1)
90
+ mock_file_content "[one]\n"
91
+
92
+ mount1.expects(:validate).raises RuntimeError
93
+
94
+ lambda { @parser.parse }.should raise_error(RuntimeError)
95
+ end
78
96
  end
79
97
 
80
98
  describe Puppet::FileServing::Configuration::Parser, " when parsing mount attributes" do
81
99
  include FSConfigurationParserTesting
82
100
 
83
101
  before do
84
- @mount = stub 'mount', :name => "one"
85
- Puppet::FileServing::Mount.expects(:new).with("one").returns(@mount)
102
+ @mount = stub 'testmount', :name => "one", :validate => true
103
+ Puppet::FileServing::Mount::File.expects(:new).with("one").returns(@mount)
86
104
  @parser.stubs(:add_modules_mount)
87
105
  end
88
106
 
@@ -120,14 +138,42 @@ describe Puppet::FileServing::Configuration::Parser do
120
138
  include FSConfigurationParserTesting
121
139
 
122
140
  before do
123
- @mount = stub 'mount', :name => "modules"
124
- Puppet::FileServing::Mount.expects(:new).with("modules").returns(@mount)
141
+ @mount = stub 'modulesmount', :name => "modules", :validate => true
142
+ end
143
+
144
+ it "should create an instance of the Modules Mount class" do
145
+ mock_file_content "[modules]\n"
146
+
147
+ Puppet::FileServing::Mount::Modules.expects(:new).with("modules").returns @mount
148
+ @parser.parse
125
149
  end
126
150
 
127
151
  it "should warn if a path is set" do
128
152
  mock_file_content "[modules]\npath /some/path\n"
153
+ Puppet::FileServing::Mount::Modules.expects(:new).with("modules").returns(@mount)
154
+
155
+ Puppet.expects(:warning)
156
+ @parser.parse
157
+ end
158
+ end
159
+
160
+ describe Puppet::FileServing::Configuration::Parser, " when parsing the plugins mount" do
161
+ include FSConfigurationParserTesting
162
+
163
+ before do
164
+ @mount = stub 'pluginsmount', :name => "plugins", :validate => true
165
+ end
166
+
167
+ it "should create an instance of the Plugins Mount class" do
168
+ mock_file_content "[plugins]\n"
169
+
170
+ Puppet::FileServing::Mount::Plugins.expects(:new).with("plugins").returns @mount
171
+ @parser.parse
172
+ end
173
+
174
+ it "should warn if a path is set" do
175
+ mock_file_content "[plugins]\npath /some/path\n"
129
176
 
130
- @modules.expects(:path=).never
131
177
  Puppet.expects(:warning)
132
178
  @parser.parse
133
179
  end
@@ -5,8 +5,8 @@ require File.dirname(__FILE__) + '/../../spec_helper'
5
5
  require 'puppet/file_serving/content'
6
6
 
7
7
  describe Puppet::FileServing::Content do
8
- it "should should be a subclass of FileBase" do
9
- Puppet::FileServing::Content.superclass.should equal(Puppet::FileServing::FileBase)
8
+ it "should should be a subclass of Base" do
9
+ Puppet::FileServing::Content.superclass.should equal(Puppet::FileServing::Base)
10
10
  end
11
11
 
12
12
  it "should indirect file_content" do
@@ -16,12 +16,66 @@ describe Puppet::FileServing::Content do
16
16
  it "should should include the IndirectionHooks module in its indirection" do
17
17
  Puppet::FileServing::Content.indirection.metaclass.included_modules.should include(Puppet::FileServing::IndirectionHooks)
18
18
  end
19
+
20
+ it "should only support the raw format" do
21
+ Puppet::FileServing::Content.supported_formats.should == [:raw]
22
+ end
23
+
24
+ it "should have a method for collecting its attributes" do
25
+ Puppet::FileServing::Content.new("/path").should respond_to(:collect)
26
+ end
27
+
28
+ it "should retrieve and store its contents when its attributes are collected if the file is a normal file" do
29
+ content = Puppet::FileServing::Content.new("/path")
30
+
31
+ result = "foo"
32
+ File.stubs(:lstat).returns(stub("stat", :ftype => "file"))
33
+ File.expects(:read).with("/path").returns result
34
+ content.collect
35
+
36
+ content.instance_variable_get("@content").should_not be_nil
37
+ end
38
+
39
+ it "should not attempt to retrieve its contents if the file is a directory" do
40
+ content = Puppet::FileServing::Content.new("/path")
41
+
42
+ result = "foo"
43
+ File.stubs(:lstat).returns(stub("stat", :ftype => "directory"))
44
+ File.expects(:read).with("/path").never
45
+ content.collect
46
+
47
+ content.instance_variable_get("@content").should be_nil
48
+ end
49
+
50
+ it "should have a method for setting its content" do
51
+ content = Puppet::FileServing::Content.new("/path")
52
+ content.should respond_to(:content=)
53
+ end
54
+
55
+ it "should make content available when set externally" do
56
+ content = Puppet::FileServing::Content.new("/path")
57
+ content.content = "foo/bar"
58
+ content.content.should == "foo/bar"
59
+ end
60
+
61
+ it "should be able to create a content instance from raw file contents" do
62
+ Puppet::FileServing::Content.should respond_to(:from_raw)
63
+ end
64
+
65
+ it "should create an instance with a fake file name and correct content when converting from raw" do
66
+ instance = mock 'instance'
67
+ Puppet::FileServing::Content.expects(:new).with("/this/is/a/fake/path").returns instance
68
+
69
+ instance.expects(:content=).with "foo/bar"
70
+
71
+ Puppet::FileServing::Content.from_raw("foo/bar").should equal(instance)
72
+ end
19
73
  end
20
74
 
21
- describe Puppet::FileServing::Content, " when returning the contents" do
75
+ describe Puppet::FileServing::Content, "when returning the contents" do
22
76
  before do
23
- @path = "/my/base"
24
- @content = Puppet::FileServing::Content.new("sub/path", :links => :follow, :path => @path)
77
+ @path = "/my/path"
78
+ @content = Puppet::FileServing::Content.new(@path, :links => :follow)
25
79
  end
26
80
 
27
81
  it "should fail if the file is a symlink and links are set to :manage" do
@@ -44,28 +98,13 @@ describe Puppet::FileServing::Content, " when returning the contents" do
44
98
  File.expects(:read).with(@path).returns(:mycontent)
45
99
  @content.content.should == :mycontent
46
100
  end
47
- end
48
-
49
- describe Puppet::FileServing::Content, " when converting to yaml" do
50
- it "should fail if no path has been set" do
51
- @content = Puppet::FileServing::Content.new("some/key")
52
- proc { @content.to_yaml }.should raise_error(ArgumentError)
53
- end
54
101
 
55
- it "should return the file contents" do
56
- @content = Puppet::FileServing::Content.new("some/path")
57
- @content.path = "/base/path"
58
- @content.expects(:content).returns(:content)
59
- @content.to_yaml.should == :content
60
- end
61
- end
102
+ it "should cache the returned contents" do
103
+ File.expects(:stat).with(@path).returns stub("stat", :ftype => "file")
104
+ File.expects(:read).with(@path).returns(:mycontent)
105
+ @content.content
62
106
 
63
- describe Puppet::FileServing::Content, " when converting from yaml" do
64
- # LAK:FIXME This isn't in the right place, but we need some kind of
65
- # control somewhere that requires that all REST connections only pull
66
- # from the file-server, thus guaranteeing they go through our authorization
67
- # hook.
68
- it "should set the URI scheme to 'puppetmounts'" do
69
- pending "We need to figure out where this should be"
107
+ # The second run would throw a failure if the content weren't being cached.
108
+ @content.content
70
109
  end
71
110
  end
@@ -24,6 +24,12 @@ describe Puppet::FileServing::Fileset, " when initializing" do
24
24
  set.recurse.should be_true
25
25
  end
26
26
 
27
+ it "should accept a 'recurselimit' option" do
28
+ File.expects(:lstat).with("/some/file").returns stub("stat")
29
+ set = Puppet::FileServing::Fileset.new("/some/file", :recurselimit => 3)
30
+ set.recurselimit.should == 3
31
+ end
32
+
27
33
  it "should accept an 'ignore' option" do
28
34
  File.expects(:lstat).with("/some/file").returns stub("stat")
29
35
  set = Puppet::FileServing::Fileset.new("/some/file", :ignore => ".svn")
@@ -45,6 +51,11 @@ describe Puppet::FileServing::Fileset, " when initializing" do
45
51
  Puppet::FileServing::Fileset.new("/some/file").recurse.should == false
46
52
  end
47
53
 
54
+ it "should default to :infinite for recurselimit" do
55
+ File.expects(:lstat).with("/some/file").returns stub("stat")
56
+ Puppet::FileServing::Fileset.new("/some/file").recurselimit.should == :infinite
57
+ end
58
+
48
59
  it "should default to an empty ignore list" do
49
60
  File.expects(:lstat).with("/some/file").returns stub("stat")
50
61
  Puppet::FileServing::Fileset.new("/some/file").ignore.should == []
@@ -54,6 +65,47 @@ describe Puppet::FileServing::Fileset, " when initializing" do
54
65
  File.expects(:lstat).with("/some/file").returns stub("stat")
55
66
  Puppet::FileServing::Fileset.new("/some/file").links.should == :manage
56
67
  end
68
+
69
+ it "should support using an Indirector Request for its options" do
70
+ File.expects(:lstat).with("/some/file").returns stub("stat")
71
+ request = Puppet::Indirector::Request.new(:file_serving, :find, "foo")
72
+ lambda { Puppet::FileServing::Fileset.new("/some/file", request) }.should_not raise_error
73
+ end
74
+
75
+ describe "using an indirector request" do
76
+ before do
77
+ File.stubs(:lstat).returns stub("stat")
78
+ @values = {:links => :manage, :ignore => %w{a b}, :recurse => true, :recurselimit => 1234}
79
+ @request = Puppet::Indirector::Request.new(:file_serving, :find, "foo")
80
+ end
81
+
82
+ [:recurse, :recurselimit, :ignore, :links].each do |option|
83
+ it "should pass :recurse, :recurselimit, :ignore, and :links settings on to the fileset if present" do
84
+ @request.stubs(:options).returns(option => @values[option])
85
+ Puppet::FileServing::Fileset.new("/my/file", @request).send(option).should == @values[option]
86
+ end
87
+
88
+ it "should pass :recurse, :recurselimit, :ignore, and :links settings on to the fileset if present with the keys stored as strings" do
89
+ @request.stubs(:options).returns(option.to_s => @values[option])
90
+ Puppet::FileServing::Fileset.new("/my/file", @request).send(option).should == @values[option]
91
+ end
92
+ end
93
+
94
+ it "should convert the integer as a string to their integer counterpart when setting options" do
95
+ @request.stubs(:options).returns(:recurselimit => "1234")
96
+ Puppet::FileServing::Fileset.new("/my/file", @request).recurselimit.should == 1234
97
+ end
98
+
99
+ it "should convert the string 'true' to the boolean true when setting options" do
100
+ @request.stubs(:options).returns(:recurse => "true")
101
+ Puppet::FileServing::Fileset.new("/my/file", @request).recurse.should == true
102
+ end
103
+
104
+ it "should convert the string 'false' to the boolean false when setting options" do
105
+ @request.stubs(:options).returns(:recurse => "false")
106
+ Puppet::FileServing::Fileset.new("/my/file", @request).recurse.should == false
107
+ end
108
+ end
57
109
  end
58
110
 
59
111
  describe Puppet::FileServing::Fileset, " when determining whether to recurse" do
@@ -63,8 +115,9 @@ describe Puppet::FileServing::Fileset, " when determining whether to recurse" do
63
115
  @fileset = Puppet::FileServing::Fileset.new(@path)
64
116
  end
65
117
 
66
- it "should always recurse if :recurse is set to 'true'" do
118
+ it "should always recurse if :recurse is set to 'true' and with infinite recursion" do
67
119
  @fileset.recurse = true
120
+ @fileset.recurselimit = :infinite
68
121
  @fileset.recurse?(0).should be_true
69
122
  end
70
123
 
@@ -73,25 +126,23 @@ describe Puppet::FileServing::Fileset, " when determining whether to recurse" do
73
126
  @fileset.recurse?(-1).should be_false
74
127
  end
75
128
 
76
- it "should recurse if :recurse is set to an integer and the current depth is less than that integer" do
77
- @fileset.recurse = 1
129
+ it "should recurse if :recurse is set to true, :recurselimit is set to an integer and the current depth is less than that integer" do
130
+ @fileset.recurse = true
131
+ @fileset.recurselimit = 1
78
132
  @fileset.recurse?(0).should be_true
79
133
  end
80
134
 
81
- it "should recurse if :recurse is set to an integer and the current depth is equal to that integer" do
82
- @fileset.recurse = 1
135
+ it "should recurse if :recurse is set to true, :recurselimit is set to an integer and the current depth is equal to that integer" do
136
+ @fileset.recurse = true
137
+ @fileset.recurselimit = 1
83
138
  @fileset.recurse?(1).should be_true
84
139
  end
85
140
 
86
- it "should not recurse if :recurse is set to an integer and the current depth is greater than that integer" do
87
- @fileset.recurse = 1
141
+ it "should not recurse if :recurse is set to true, :recurselimit is set to an integer and the current depth is greater than that integer" do
142
+ @fileset.recurse = true
143
+ @fileset.recurselimit = 1
88
144
  @fileset.recurse?(2).should be_false
89
145
  end
90
-
91
- it "should not recurse if :recurse is set to 0" do
92
- @fileset.recurse = 0
93
- @fileset.recurse?(-1).should be_false
94
- end
95
146
  end
96
147
 
97
148
  describe Puppet::FileServing::Fileset, " when recursing" do
@@ -137,9 +188,10 @@ describe Puppet::FileServing::Fileset, " when recursing" do
137
188
 
138
189
  # It seems like I should stub :recurse? here, or that I shouldn't stub the
139
190
  # examples above, but...
140
- it "should recurse to the level set if :recurse is set to an integer" do
191
+ it "should recurse to the level set if :recurselimit is set to an integer" do
141
192
  mock_dir_structure(@path)
142
- @fileset.recurse = 1
193
+ @fileset.recurse = true
194
+ @fileset.recurselimit = 1
143
195
  @fileset.files.should == %w{. one two .svn CVS}
144
196
  end
145
197
 
@@ -149,6 +201,13 @@ describe Puppet::FileServing::Fileset, " when recursing" do
149
201
  @fileset.files.sort.should == @files.sort
150
202
  end
151
203
 
204
+ it "should function if the :ignore value provided is nil" do
205
+ mock_dir_structure(@path)
206
+ @fileset.recurse = true
207
+ @fileset.ignore = nil
208
+ lambda { @fileset.files }.should_not raise_error
209
+ end
210
+
152
211
  it "should ignore files that match a single pattern in the ignore list" do
153
212
  mock_dir_structure(@path)
154
213
  @fileset.recurse = true
@@ -237,3 +296,46 @@ describe Puppet::FileServing::Fileset, " when ignoring" do
237
296
  @fileset.ignore?("my_file").should be_true
238
297
  end
239
298
  end
299
+
300
+ describe Puppet::FileServing::Fileset, "when merging other filesets" do
301
+ before do
302
+ @paths = %w{/first/path /second/path /third/path}
303
+
304
+ @filesets = @paths.collect do |path|
305
+ File.stubs(:lstat).with(path).returns stub("stat", :directory? => true)
306
+ Puppet::FileServing::Fileset.new(path, :recurse => true)
307
+ end
308
+
309
+ Dir.stubs(:entries).returns []
310
+ end
311
+
312
+ it "should return a hash of all files in each fileset with the value being the base path" do
313
+ Dir.expects(:entries).with("/first/path").returns(%w{one uno})
314
+ Dir.expects(:entries).with("/second/path").returns(%w{two dos})
315
+ Dir.expects(:entries).with("/third/path").returns(%w{three tres})
316
+
317
+ Puppet::FileServing::Fileset.merge(*@filesets).should == {
318
+ "." => "/first/path",
319
+ "one" => "/first/path",
320
+ "uno" => "/first/path",
321
+ "two" => "/second/path",
322
+ "dos" => "/second/path",
323
+ "three" => "/third/path",
324
+ "tres" => "/third/path",
325
+ }
326
+ end
327
+
328
+ it "should include the base directory from the first fileset" do
329
+ Dir.expects(:entries).with("/first/path").returns(%w{one})
330
+ Dir.expects(:entries).with("/second/path").returns(%w{two})
331
+
332
+ Puppet::FileServing::Fileset.merge(*@filesets)["."].should == "/first/path"
333
+ end
334
+
335
+ it "should use the base path of the first found file when relative file paths conflict" do
336
+ Dir.expects(:entries).with("/first/path").returns(%w{one})
337
+ Dir.expects(:entries).with("/second/path").returns(%w{one})
338
+
339
+ Puppet::FileServing::Fileset.merge(*@filesets)["one"].should == "/first/path"
340
+ end
341
+ end
@@ -12,113 +12,52 @@ describe Puppet::FileServing::IndirectionHooks do
12
12
  @object = Object.new
13
13
  @object.extend(Puppet::FileServing::IndirectionHooks)
14
14
 
15
- @request = stub 'request', :key => "http://myhost/blah", :options => {:node => "whatever"}
15
+ @request = stub 'request', :key => "mymod/myfile", :options => {:node => "whatever"}, :server => nil, :protocol => nil
16
16
  end
17
17
 
18
18
  describe "when being used to select termini" do
19
- it "should escape the key before parsing" do
20
- uri = stub 'uri', :scheme => "puppet", :host => "blah", :path => "/something"
21
- URI.expects(:escape).with("http://myhost/blah").returns("escaped_blah")
22
- URI.expects(:parse).with("escaped_blah").returns(uri)
23
- @object.select_terminus(@request)
24
- end
25
-
26
- it "should use the URI class to parse the key" do
27
- uri = stub 'uri', :scheme => "puppet", :host => "blah", :path => "/something"
28
- URI.expects(:parse).with("http://myhost/blah").returns(uri)
29
- @object.select_terminus @request
30
- end
31
-
32
- it "should choose :rest when the protocol is 'puppet'" do
33
- @request.stubs(:key).returns "puppet://host/module/file"
34
- @object.select_terminus(@request).should == :rest
35
- end
36
-
37
- it "should choose :file_server when the protocol is 'puppetmounts' and the mount name is not 'modules'" do
38
- modules = mock 'modules'
39
- @object.stubs(:terminus).with(:modules).returns(modules)
40
- modules.stubs(:find_module).returns(nil)
41
-
42
- @request.stubs(:key).returns "puppetmounts://host/notmodules/file"
43
-
44
- @object.select_terminus(@request).should == :file_server
45
- end
46
-
47
- it "should choose :file_server when no server name is provided, the process name is 'puppet', and the mount name is not 'modules'" do
48
- modules = mock 'modules'
49
- @object.stubs(:terminus).with(:modules).returns(modules)
50
- modules.stubs(:find_module).returns(nil)
51
-
52
- Puppet.settings.expects(:value).with(:name).returns("puppet")
53
- @request.stubs(:key).returns "puppet:///notmodules/file"
54
- @object.select_terminus(@request).should == :file_server
55
- end
56
-
57
- it "should choose :modules if it would normally choose :file_server but the mount name is 'modules'" do
58
- @request.stubs(:key).returns "puppetmounts://host/modules/mymod/file"
59
- @object.select_terminus(@request).should == :modules
60
- end
61
-
62
- it "should choose :modules if it would normally choose :file_server but a module exists with the mount name" do
63
- modules = mock 'modules'
64
-
65
- @object.expects(:terminus).with(:modules).returns(modules)
66
- modules.expects(:find_module).with("mymod", @request.options[:node]).returns(:thing)
67
-
68
- @request.stubs(:key).returns "puppetmounts://host/mymod/file"
69
- @object.select_terminus(@request).should == :modules
70
- end
71
-
72
- it "should choose :rest when no server name is provided and the process name is not 'puppet'" do
73
- Puppet.settings.expects(:value).with(:name).returns("puppetd")
74
- @request.stubs(:key).returns "puppet:///module/file"
75
- @object.select_terminus(@request).should == :rest
76
- end
77
-
78
- it "should choose :file when the protocol is 'file'" do
79
- @request.stubs(:key).returns "file://host/module/file"
80
- @object.select_terminus(@request).should == :file
81
- end
82
-
83
- it "should choose :file when the URI is a normal path name" do
84
- @request.stubs(:key).returns "/module/file"
19
+ it "should return :file if the request key is fully qualified" do
20
+ @request.expects(:key).returns "#{File::SEPARATOR}foo"
85
21
  @object.select_terminus(@request).should == :file
86
22
  end
87
23
 
88
- # This is so that we only choose modules over mounts, not file
89
- it "should choose :file when the protocol is 'file' and the fully qualified path starts with '/modules'" do
90
- @request.stubs(:key).returns "/module/file"
24
+ it "should return :file if the URI protocol is set to 'file'" do
25
+ @request.expects(:protocol).returns "file"
91
26
  @object.select_terminus(@request).should == :file
92
27
  end
93
28
 
94
- it "should fail when a protocol other than :puppet, :file, or :puppetmounts is used" do
95
- @request.stubs(:key).returns "http:///module/file"
29
+ it "should fail when a protocol other than :puppet or :file is used" do
30
+ @request.stubs(:protocol).returns "http"
96
31
  proc { @object.select_terminus(@request) }.should raise_error(ArgumentError)
97
32
  end
98
- end
99
-
100
- describe "when looking for a module whose name matches the mount name" do
101
- before do
102
- @modules = mock 'modules'
103
- @object.stubs(:terminus).with(:modules).returns(@modules)
104
-
105
- @request.stubs(:key).returns "puppetmounts://host/mymod/file"
106
- end
107
-
108
- it "should use the modules terminus to look up the module" do
109
- @modules.expects(:find_module).with("mymod", @request.options[:node])
110
- @object.select_terminus @request
111
- end
112
-
113
- it "should pass the node name to the modules terminus" do
114
- @modules.expects(:find_module).with("mymod", @request.options[:node])
115
- @object.select_terminus @request
116
- end
117
33
 
118
- it "should log a deprecation warning if a module is found" do
119
- @modules.expects(:find_module).with("mymod", @request.options[:node]).returns(:something)
120
- Puppet.expects(:warning)
121
- @object.select_terminus @request
34
+ describe "and the protocol is 'puppet'" do
35
+ before do
36
+ @request.stubs(:protocol).returns "puppet"
37
+ end
38
+
39
+ it "should choose :rest when a server is specified" do
40
+ @request.stubs(:protocol).returns "puppet"
41
+ @request.expects(:server).returns "foo"
42
+ @object.select_terminus(@request).should == :rest
43
+ end
44
+
45
+ # This is so a given file location works when bootstrapping with no server.
46
+ it "should choose :rest when the Settings name isn't 'puppet'" do
47
+ @request.stubs(:protocol).returns "puppet"
48
+ @request.stubs(:server).returns "foo"
49
+ Puppet.settings.stubs(:value).with(:name).returns "foo"
50
+ @object.select_terminus(@request).should == :rest
51
+ end
52
+
53
+ it "should choose :file_server when the settings name is 'puppet' and no server is specified" do
54
+ modules = mock 'modules'
55
+
56
+ @request.expects(:protocol).returns "puppet"
57
+ @request.expects(:server).returns nil
58
+ Puppet.settings.expects(:value).with(:name).returns "puppet"
59
+ @object.select_terminus(@request).should == :file_server
60
+ end
122
61
  end
123
62
  end
124
63
  end