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,11 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.dirname(__FILE__) + '/../../../spec_helper'
4
+
5
+ require 'puppet/indirector/facts/rest'
6
+
7
+ describe Puppet::Node::Facts::Rest do
8
+ it "should be a sublcass of Puppet::Indirector::REST" do
9
+ Puppet::Node::Facts::Rest.superclass.should equal(Puppet::Indirector::REST)
10
+ end
11
+ end
@@ -24,7 +24,7 @@ describe Puppet::Indirector::File do
24
24
 
25
25
  @request = stub 'request', :key => @path
26
26
  end
27
-
27
+
28
28
  describe Puppet::Indirector::File, " when finding files" do
29
29
 
30
30
  it "should provide a method to return file contents at a specified path" do
@@ -140,6 +140,13 @@ describe Puppet::Indirector::File do
140
140
  proc { @searcher.destroy(@request) }.should raise_error(Puppet::Error)
141
141
  end
142
142
 
143
+ it "should log that is removing the file" do
144
+ File.expects(:exist?).returns(true)
145
+ File.expects(:unlink)
146
+ Puppet.expects(:notice)
147
+ @searcher.destroy(@request)
148
+ end
149
+
143
150
  it "should use the path() method to calculate the path if it exists" do
144
151
  @searcher.meta_def(:path) do |thing|
145
152
  thing.to_s.upcase
@@ -21,14 +21,14 @@ describe Puppet::Indirector::FileMetadata::File do
21
21
  @metadata = Puppet::Indirector::FileMetadata::File.new
22
22
  @uri = "file:///my/local"
23
23
  @data = mock 'metadata'
24
- @data.stubs(:collect_attributes)
24
+ @data.stubs(:collect)
25
25
  FileTest.expects(:exists?).with("/my/local").returns true
26
26
 
27
- @request = stub 'request', :key => @uri, :options => {}
27
+ @request = Puppet::Indirector::Request.new(:file_metadata, :find, @uri)
28
28
  end
29
29
 
30
30
  it "should collect its attributes when a file is found" do
31
- @data.expects(:collect_attributes)
31
+ @data.expects(:collect)
32
32
 
33
33
  Puppet::FileServing::Metadata.expects(:new).returns(@data)
34
34
  @metadata.find(@request).should == @data
@@ -40,12 +40,12 @@ describe Puppet::Indirector::FileMetadata::File do
40
40
  @metadata = Puppet::Indirector::FileMetadata::File.new
41
41
  @uri = "file:///my/local"
42
42
 
43
- @request = stub 'request', :key => @uri, :options => {}
43
+ @request = Puppet::Indirector::Request.new(:file_metadata, :find, @uri)
44
44
  end
45
45
 
46
46
  it "should collect the attributes of the instances returned" do
47
47
  FileTest.expects(:exists?).with("/my/local").returns true
48
- @metadata.expects(:path2instances).returns( [mock("one", :collect_attributes => nil), mock("two", :collect_attributes => nil)] )
48
+ @metadata.expects(:path2instances).returns( [mock("one", :collect => nil), mock("two", :collect => nil)] )
49
49
  @metadata.search(@request)
50
50
  end
51
51
  end
@@ -24,161 +24,244 @@ describe Puppet::Indirector::FileServer do
24
24
 
25
25
  @file_server = @file_server_class.new
26
26
 
27
- @uri = "puppetmounts://host/my/local/file"
27
+ @uri = "puppet://host/my/local/file"
28
28
  @configuration = mock 'configuration'
29
29
  Puppet::FileServing::Configuration.stubs(:create).returns(@configuration)
30
30
 
31
- @request = Puppet::Indirector::Request.new(:myind, :mymethod, @uri)
31
+ @request = Puppet::Indirector::Request.new(:myind, :mymethod, @uri, :environment => "myenv")
32
32
  end
33
33
 
34
- describe Puppet::Indirector::FileServer, " when finding files" do
34
+ describe "when finding files" do
35
+ before do
36
+ @mount = stub 'mount', :find => nil
37
+ @instance = stub('instance', :links= => nil, :collect => nil)
38
+ end
39
+
40
+ it "should use the configuration to find the mount and relative path" do
41
+ @configuration.expects(:split_path).with(@request)
35
42
 
36
- it "should use the path portion of the URI as the file name" do
37
- @configuration.expects(:file_path).with("/my/local/file", :node => nil)
38
43
  @file_server.find(@request)
39
44
  end
40
45
 
41
- it "should use the FileServing configuration to convert the file name to a fully qualified path" do
42
- @configuration.expects(:file_path).with("/my/local/file", :node => nil)
46
+ it "should return nil if it cannot find the mount" do
47
+ @configuration.expects(:split_path).with(@request).returns(nil, nil)
48
+
49
+ @file_server.find(@request).should be_nil
50
+ end
51
+
52
+ it "should use the mount to find the full path" do
53
+ @configuration.expects(:split_path).with(@request).returns([@mount, "rel/path"])
54
+
55
+ @mount.expects(:find).with { |key, request| key == "rel/path" }
56
+
43
57
  @file_server.find(@request)
44
58
  end
45
59
 
46
- it "should pass the node name to the FileServing configuration if one is provided" do
47
- @configuration.expects(:file_path).with("/my/local/file", :node => "testing")
48
- @request.node = "testing"
60
+ it "should pass the request when finding a file" do
61
+ @configuration.expects(:split_path).with(@request).returns([@mount, "rel/path"])
62
+
63
+ @mount.expects(:find).with { |key, request| request == @request }
64
+
49
65
  @file_server.find(@request)
50
66
  end
51
67
 
52
- it "should return nil if no fully qualified path is found" do
53
- @configuration.expects(:file_path).with("/my/local/file", :node => nil).returns(nil)
68
+ it "should return nil if it cannot find a full path" do
69
+ @configuration.expects(:split_path).with(@request).returns([@mount, "rel/path"])
70
+
71
+ @mount.expects(:find).with { |key, request| key == "rel/path" }.returns nil
72
+
54
73
  @file_server.find(@request).should be_nil
55
74
  end
56
75
 
57
- it "should return an instance of the model created with the full path if a file is found" do
58
- @configuration.expects(:file_path).with("/my/local/file", :node => nil).returns("/some/file")
59
- @model.expects(:new).returns(:myinstance)
60
- @file_server.find(@request).should == :myinstance
76
+ it "should create an instance with the found path" do
77
+ @configuration.expects(:split_path).with(@request).returns([@mount, "rel/path"])
78
+
79
+ @mount.expects(:find).with { |key, request| key == "rel/path" }.returns "/my/file"
80
+
81
+ @model.expects(:new).with("/my/file").returns @instance
82
+
83
+ @file_server.find(@request).should equal(@instance)
61
84
  end
62
- end
63
85
 
64
- describe Puppet::Indirector::FileServer, " when returning instances" do
65
- before :each do
66
- @configuration.expects(:file_path).with("/my/local/file", :node => nil).returns("/some/file")
67
- @instance = mock 'instance'
86
+ it "should set 'links' on the instance if it is set in the request options" do
87
+ @request.options[:links] = true
88
+ @configuration.expects(:split_path).with(@request).returns([@mount, "rel/path"])
89
+
90
+ @mount.expects(:find).with { |key, request| key == "rel/path" }.returns "/my/file"
91
+
92
+ @model.expects(:new).with("/my/file").returns @instance
93
+
94
+ @instance.expects(:links=).with(true)
95
+
96
+ @file_server.find(@request).should equal(@instance)
68
97
  end
69
98
 
70
- it "should create the instance with the key used to find the instance" do
71
- @model.expects(:new).with { |key, *options| key == @uri }
72
- @file_server.find(@request)
99
+ it "should collect the instance" do
100
+ @request.options[:links] = true
101
+ @configuration.expects(:split_path).with(@request).returns([@mount, "rel/path"])
102
+
103
+ @mount.expects(:find).with { |key, request| key == "rel/path" }.returns "/my/file"
104
+
105
+ @model.expects(:new).with("/my/file").returns @instance
106
+
107
+ @instance.expects(:collect)
108
+
109
+ @file_server.find(@request).should equal(@instance)
73
110
  end
111
+ end
74
112
 
75
- it "should create the instance with the path at which the instance was found" do
76
- @model.expects(:new).with { |key, options| options[:path] == "/some/file" }
77
- @file_server.find(@request)
113
+ describe "when searching for instances" do
114
+ before do
115
+ @mount = stub 'mount', :search => nil
116
+ @instance = stub('instance', :links= => nil, :collect => nil)
78
117
  end
79
118
 
80
- it "should set the provided :links setting on to the instance if one is provided" do
81
- @model.expects(:new).returns(@instance)
82
- @instance.expects(:links=).with(:mytest)
83
- @request.options[:links] = :mytest
84
- @file_server.find(@request)
119
+ it "should use the configuration to search the mount and relative path" do
120
+ @configuration.expects(:split_path).with(@request)
121
+
122
+ @file_server.search(@request)
85
123
  end
86
124
 
87
- it "should not set a :links value if no :links parameter is provided" do
88
- @model.expects(:new).returns(@instance)
89
- @file_server.find(@request)
125
+ it "should return nil if it cannot search the mount" do
126
+ @configuration.expects(:split_path).with(@request).returns(nil, nil)
127
+
128
+ @file_server.search(@request).should be_nil
90
129
  end
91
- end
92
130
 
93
- describe Puppet::Indirector::FileServer, " when checking authorization" do
131
+ it "should use the mount to search for the full paths" do
132
+ @configuration.expects(:split_path).with(@request).returns([@mount, "rel/path"])
133
+
134
+ @mount.expects(:search).with { |key, request| key == "rel/path" }
94
135
 
95
- it "should have an authorization hook" do
96
- @file_server.should respond_to(:authorized?)
136
+ @file_server.search(@request)
97
137
  end
98
138
 
99
- it "should deny the :destroy method" do
100
- @request.method = :destroy
101
- @file_server.authorized?(@request).should be_false
139
+ it "should pass the request" do
140
+ @configuration.stubs(:split_path).returns([@mount, "rel/path"])
141
+
142
+ @mount.expects(:search).with { |key, request| request == @request }
143
+
144
+ @file_server.search(@request)
102
145
  end
103
146
 
104
- it "should deny the :save method" do
105
- @request.method = :save
106
- @file_server.authorized?(@request).should be_false
147
+ it "should return nil if searching does not find any full paths" do
148
+ @configuration.expects(:split_path).with(@request).returns([@mount, "rel/path"])
149
+
150
+ @mount.expects(:search).with { |key, request| key == "rel/path" }.returns nil
151
+
152
+ @file_server.search(@request).should be_nil
107
153
  end
108
-
109
- describe "and finding file information" do
110
- before do
111
- @request.key = "puppetmounts://host/my/file"
112
- @request.method = :find
113
- end
114
154
 
115
- it "should use the file server configuration to determine authorization" do
116
- @configuration.expects(:authorized?)
117
- @file_server.authorized?(@request)
118
- end
155
+ it "should create a fileset with each returned path and merge them" do
156
+ @configuration.expects(:split_path).with(@request).returns([@mount, "rel/path"])
119
157
 
120
- it "should pass the file path from the URI to the file server configuration" do
121
- @configuration.expects(:authorized?).with { |uri, *args| uri == "/my/file" }
122
- @file_server.authorized?(@request)
123
- end
158
+ @mount.expects(:search).with { |key, request| key == "rel/path" }.returns %w{/one /two}
124
159
 
125
- it "should pass the node name to the file server configuration" do
126
- @configuration.expects(:authorized?).with { |key, options| options[:node] == "mynode" }
127
- @request.node = "mynode"
128
- @file_server.authorized?(@request)
129
- end
160
+ FileTest.stubs(:exist?).returns true
130
161
 
131
- it "should pass the IP address to the file server configuration" do
132
- @configuration.expects(:authorized?).with { |key, options| options[:ipaddress] == "myip" }
133
- @request.ip = "myip"
134
- @file_server.authorized?(@request)
135
- end
162
+ one = mock 'fileset_one'
163
+ Puppet::FileServing::Fileset.expects(:new).with("/one", @request).returns(one)
164
+ two = mock 'fileset_two'
165
+ Puppet::FileServing::Fileset.expects(:new).with("/two", @request).returns(two)
136
166
 
137
- it "should return false if the file server configuration denies authorization" do
138
- @configuration.expects(:authorized?).returns(false)
139
- @file_server.authorized?(@request)
140
- end
167
+ Puppet::FileServing::Fileset.expects(:merge).with(one, two).returns []
141
168
 
142
- it "should return true if the file server configuration approves authorization" do
143
- @configuration.expects(:authorized?).returns(true)
144
- @file_server.authorized?(@request)
145
- end
169
+ @file_server.search(@request)
146
170
  end
147
- end
148
171
 
149
- describe Puppet::Indirector::FileServer, " when searching for files" do
172
+ it "should create an instance with each path resulting from the merger of the filesets" do
173
+ @configuration.expects(:split_path).with(@request).returns([@mount, "rel/path"])
150
174
 
151
- it "should use the path portion of the URI as the file name" do
152
- @configuration.expects(:file_path).with("/my/local/file", :node => nil)
153
- @file_server.search(@request)
175
+ @mount.expects(:search).with { |key, request| key == "rel/path" }.returns []
176
+
177
+ FileTest.stubs(:exist?).returns true
178
+
179
+ Puppet::FileServing::Fileset.expects(:merge).returns("one" => "/one", "two" => "/two")
180
+
181
+ one = stub 'one', :collect => nil
182
+ @model.expects(:new).with("/one", :relative_path => "one").returns one
183
+
184
+ two = stub 'two', :collect => nil
185
+ @model.expects(:new).with("/two", :relative_path => "two").returns two
186
+
187
+ # order can't be guaranteed
188
+ result = @file_server.search(@request)
189
+ result.should be_include(one)
190
+ result.should be_include(two)
191
+ result.length.should == 2
154
192
  end
155
193
 
156
- it "should use the FileServing configuration to convert the file name to a fully qualified path" do
157
- @configuration.expects(:file_path).with("/my/local/file", :node => nil)
194
+ it "should set 'links' on the instances if it is set in the request options" do
195
+ @configuration.expects(:split_path).with(@request).returns([@mount, "rel/path"])
196
+
197
+ @mount.expects(:search).with { |key, request| key == "rel/path" }.returns []
198
+
199
+ FileTest.stubs(:exist?).returns true
200
+
201
+ Puppet::FileServing::Fileset.expects(:merge).returns("one" => "/one")
202
+
203
+ one = stub 'one', :collect => nil
204
+ @model.expects(:new).with("/one", :relative_path => "one").returns one
205
+ one.expects(:links=).with true
206
+
207
+ @request.options[:links] = true
208
+
158
209
  @file_server.search(@request)
159
210
  end
160
211
 
161
- it "should pass the node name to the FileServing configuration if one is provided" do
162
- @configuration.expects(:file_path).with("/my/local/file", :node => "testing")
163
- @request.node = "testing"
212
+ it "should collect the instances" do
213
+ @configuration.expects(:split_path).with(@request).returns([@mount, "rel/path"])
214
+
215
+ @mount.expects(:search).with { |key, options| key == "rel/path" }.returns []
216
+
217
+ FileTest.stubs(:exist?).returns true
218
+
219
+ Puppet::FileServing::Fileset.expects(:merge).returns("one" => "/one")
220
+
221
+ one = mock 'one'
222
+ @model.expects(:new).with("/one", :relative_path => "one").returns one
223
+ one.expects(:collect)
224
+
164
225
  @file_server.search(@request)
165
226
  end
227
+ end
166
228
 
167
- it "should return nil if no fully qualified path is found" do
168
- @configuration.expects(:file_path).with("/my/local/file", :node => nil).returns(nil)
169
- @file_server.search(@request).should be_nil
229
+ describe "when checking authorization" do
230
+ before do
231
+ @request.method = :find
170
232
  end
171
233
 
172
- it "should use :path2instances from the terminus_helper to return instances if a module is found and the file exists" do
173
- @configuration.expects(:file_path).with("/my/local/file", :node => nil).returns("/my/file")
174
- @file_server.expects(:path2instances)
175
- @file_server.search(@request)
234
+ it "should return false when destroying" do
235
+ @request.method = :destroy
236
+ @file_server.should_not be_authorized(@request)
176
237
  end
177
238
 
178
- it "should pass the request on to :path2instances" do
179
- @configuration.expects(:file_path).with("/my/local/file", :node => nil).returns("/my/file")
180
- @file_server.expects(:path2instances).with(@request, "/my/file")
181
- @file_server.search(@request)
239
+ it "should return false when saving" do
240
+ @request.method = :save
241
+ @file_server.should_not be_authorized(@request)
242
+ end
243
+
244
+ it "should use the configuration to find the mount and relative path" do
245
+ @configuration.expects(:split_path).with(@request)
246
+
247
+ @file_server.authorized?(@request)
248
+ end
249
+
250
+ it "should return false if it cannot find the mount" do
251
+ @configuration.expects(:split_path).with(@request).returns(nil, nil)
252
+
253
+ @file_server.should_not be_authorized(@request)
254
+ end
255
+
256
+ it "should return the results of asking the mount whether the node and IP are authorized" do
257
+ @mount = stub 'mount'
258
+ @configuration.expects(:split_path).with(@request).returns([@mount, "rel/path"])
259
+
260
+ @request.stubs(:node).returns("mynode")
261
+ @request.stubs(:ip).returns("myip")
262
+ @mount.expects(:allowed?).with("mynode", "myip").returns "something"
263
+
264
+ @file_server.authorized?(@request).should == "something"
182
265
  end
183
266
  end
184
267
  end
@@ -6,7 +6,7 @@ require 'puppet/indirector/indirection'
6
6
 
7
7
  describe "Indirection Delegator", :shared => true do
8
8
  it "should create a request object with the appropriate method name and all of the passed arguments" do
9
- request = stub 'request', :node => nil
9
+ request = Puppet::Indirector::Request.new(:indirection, :find, "me")
10
10
 
11
11
  @indirection.expects(:request).with(@method, "mystuff", :one => :two).returns request
12
12
 
@@ -22,7 +22,7 @@ describe "Indirection Delegator", :shared => true do
22
22
  end
23
23
  end
24
24
 
25
- request = stub 'request', :key => "me", :options => {}
25
+ request = Puppet::Indirector::Request.new(:indirection, :find, "me")
26
26
 
27
27
  @indirection.stubs(:request).returns request
28
28
 
@@ -34,6 +34,22 @@ describe "Indirection Delegator", :shared => true do
34
34
  @indirection.send(@method, "me")
35
35
  end
36
36
 
37
+ it "should fail if the :select_terminus hook does not return a terminus name" do
38
+ # Define the method, so our respond_to? hook matches.
39
+ class << @indirection
40
+ def select_terminus(request)
41
+ end
42
+ end
43
+
44
+ request = stub 'request', :key => "me", :options => {}
45
+
46
+ @indirection.stubs(:request).returns request
47
+
48
+ @indirection.expects(:select_terminus).with(request).returns nil
49
+
50
+ lambda { @indirection.send(@method, "me") }.should raise_error(ArgumentError)
51
+ end
52
+
37
53
  it "should choose the terminus returned by the :terminus_class method if no :select_terminus method is available" do
38
54
  @indirection.expects(:terminus_class).returns :test_terminus
39
55
 
@@ -87,6 +103,9 @@ describe "Delegation Authorizer", :shared => true do
87
103
  end
88
104
 
89
105
  describe Puppet::Indirector::Indirection do
106
+ after do
107
+ Puppet::Util::Cacher.expire
108
+ end
90
109
  describe "when initializing" do
91
110
  # (LAK) I've no idea how to test this, really.
92
111
  it "should store a reference to itself before it consumes its options" do
@@ -127,7 +146,7 @@ describe Puppet::Indirector::Indirection do
127
146
  @terminus_class = mock 'terminus_class'
128
147
  @terminus = mock 'terminus'
129
148
  @terminus_class.stubs(:new).returns(@terminus)
130
- @cache = mock 'cache'
149
+ @cache = stub 'cache', :name => "mycache"
131
150
  @cache_class = mock 'cache_class'
132
151
  Puppet::Indirector::Terminus.stubs(:terminus_class).with(:test, :cache_terminus).returns(@cache_class)
133
152
  Puppet::Indirector::Terminus.stubs(:terminus_class).with(:test, :test_terminus).returns(@terminus_class)
@@ -190,7 +209,7 @@ describe Puppet::Indirector::Indirection do
190
209
  @indirection.request(:funtest, "yayness").should equal(request)
191
210
  end
192
211
  end
193
-
212
+
194
213
  describe "and looking for a model instance" do
195
214
  before { @method = :find }
196
215
 
@@ -224,10 +243,18 @@ describe Puppet::Indirector::Indirection do
224
243
  @indirection.find("/my/key")
225
244
  end
226
245
 
246
+ it "should filter the result instance if the terminus supports it" do
247
+ @terminus.stubs(:find).returns(@instance)
248
+ @terminus.stubs(:respond_to?).with(:filter).returns(true)
249
+
250
+ @terminus.expects(:filter).with(@instance)
251
+
252
+ @indirection.find("/my/key")
253
+ end
227
254
  describe "when caching is enabled" do
228
255
  before do
229
256
  @indirection.cache_class = :cache_terminus
230
- @cache_class.expects(:new).returns(@cache)
257
+ @cache_class.stubs(:new).returns(@cache)
231
258
 
232
259
  @instance.stubs(:expired?).returns false
233
260
  end
@@ -239,6 +266,28 @@ describe Puppet::Indirector::Indirection do
239
266
  @indirection.find("/my/key")
240
267
  end
241
268
 
269
+ it "should not look in the cache if the request specifies not to use the cache" do
270
+ @terminus.expects(:find).returns @instance
271
+ @cache.expects(:find).never
272
+ @cache.stubs(:save)
273
+
274
+ @indirection.find("/my/key", :ignore_cache => true)
275
+ end
276
+
277
+ it "should still save to the cache even if the cache is being ignored during readin" do
278
+ @terminus.expects(:find).returns @instance
279
+ @cache.expects(:save)
280
+
281
+ @indirection.find("/my/key", :ignore_cache => true)
282
+ end
283
+
284
+ it "should only look in the cache if the request specifies not to use the terminus" do
285
+ @terminus.expects(:find).never
286
+ @cache.expects(:find)
287
+
288
+ @indirection.find("/my/key", :ignore_terminus => true)
289
+ end
290
+
242
291
  it "should use a request to look in the cache for cached objects" do
243
292
  @cache.expects(:find).with { |r| r.method == :find and r.key == "/my/key" }.returns @instance
244
293
 
@@ -254,6 +303,21 @@ describe Puppet::Indirector::Indirection do
254
303
  @indirection.find("/my/key").should equal(@instance)
255
304
  end
256
305
 
306
+ it "should not fail if the cache fails" do
307
+ @terminus.stubs(:find).returns @instance
308
+
309
+ @cache.expects(:find).raises ArgumentError
310
+ @cache.stubs(:save)
311
+ lambda { @indirection.find("/my/key") }.should_not raise_error
312
+ end
313
+
314
+ it "should look in the main terminus if the cache fails" do
315
+ @terminus.expects(:find).returns @instance
316
+ @cache.expects(:find).raises ArgumentError
317
+ @cache.stubs(:save)
318
+ @indirection.find("/my/key").should equal(@instance)
319
+ end
320
+
257
321
  it "should send a debug log if it is using the cached object" do
258
322
  Puppet.expects(:debug)
259
323
  @cache.stubs(:find).returns @instance
@@ -325,19 +389,29 @@ describe Puppet::Indirector::Indirection do
325
389
  it_should_behave_like "Indirection Delegator"
326
390
  it_should_behave_like "Delegation Authorizer"
327
391
 
328
- it "should return nil" do
329
- @terminus.stubs(:save)
330
- @indirection.save(@instance).should be_nil
392
+ it "should return the result of the save" do
393
+ @terminus.stubs(:save).returns "foo"
394
+ @indirection.save(@instance).should == "foo"
331
395
  end
332
396
 
333
397
  describe "when caching is enabled" do
334
398
  before do
335
399
  @indirection.cache_class = :cache_terminus
336
- @cache_class.expects(:new).returns(@cache)
400
+ @cache_class.stubs(:new).returns(@cache)
337
401
 
338
402
  @instance.stubs(:expired?).returns false
339
403
  end
340
404
 
405
+ it "should return the result of saving to the terminus" do
406
+ request = stub 'request', :instance => @instance, :node => nil
407
+
408
+ @indirection.expects(:request).returns request
409
+
410
+ @cache.stubs(:save)
411
+ @terminus.stubs(:save).returns @instance
412
+ @indirection.save(@instance).should equal(@instance)
413
+ end
414
+
341
415
  it "should use a request to save the object to the cache" do
342
416
  request = stub 'request', :instance => @instance, :node => nil
343
417
 
@@ -347,9 +421,19 @@ describe Puppet::Indirector::Indirection do
347
421
  @terminus.stubs(:save)
348
422
  @indirection.save(@instance)
349
423
  end
424
+
425
+ it "should not save to the cache if the normal save fails" do
426
+ request = stub 'request', :instance => @instance, :node => nil
427
+
428
+ @indirection.expects(:request).returns request
429
+
430
+ @cache.expects(:save).never
431
+ @terminus.expects(:save).raises "eh"
432
+ lambda { @indirection.save(@instance) }.should raise_error
433
+ end
350
434
  end
351
435
  end
352
-
436
+
353
437
  describe "and removing a model instance" do
354
438
  before { @method = :destroy }
355
439
 
@@ -494,7 +578,7 @@ describe Puppet::Indirector::Indirection do
494
578
 
495
579
  after :each do
496
580
  @indirection.delete
497
- Puppet::Indirector::Indirection.clear_cache
581
+ Puppet::Util::Cacher.expire
498
582
  end
499
583
  end
500
584
 
@@ -504,7 +588,7 @@ describe Puppet::Indirector::Indirection do
504
588
  @indirection = Puppet::Indirector::Indirection.new(mock('model'), :test)
505
589
  Puppet::Indirector::Indirection.instance(:test).should equal(@indirection)
506
590
  end
507
-
591
+
508
592
  it "should return nil when the named indirection has not been created" do
509
593
  Puppet::Indirector::Indirection.instance(:test).should be_nil
510
594
  end
@@ -514,7 +598,7 @@ describe Puppet::Indirector::Indirection do
514
598
  @indirection = Puppet::Indirector::Indirection.new(mock_model, :test)
515
599
  Puppet::Indirector::Indirection.model(:test).should equal(mock_model)
516
600
  end
517
-
601
+
518
602
  it "should return nil when no model matches the requested name" do
519
603
  Puppet::Indirector::Indirection.model(:test).should be_nil
520
604
  end
@@ -615,15 +699,6 @@ describe Puppet::Indirector::Indirection do
615
699
  @indirection.terminus(:foo).should equal(@terminus)
616
700
  end
617
701
 
618
- it "should allow the clearance of cached terminus instances" do
619
- terminus1 = mock 'terminus1'
620
- terminus2 = mock 'terminus2'
621
- @terminus_class.stubs(:new).returns(terminus1, terminus2, ArgumentError)
622
- @indirection.terminus(:foo).should equal(terminus1)
623
- @indirection.class.clear_cache
624
- @indirection.terminus(:foo).should equal(terminus2)
625
- end
626
-
627
702
  # Make sure it caches the terminus.
628
703
  it "should return the same terminus instance each time for a given name" do
629
704
  @terminus_class.stubs(:new).returns(@terminus)
@@ -638,7 +713,6 @@ describe Puppet::Indirector::Indirection do
638
713
 
639
714
  after do
640
715
  @indirection.delete
641
- Puppet::Indirector::Indirection.clear_cache
642
716
  end
643
717
  end
644
718
 
@@ -664,8 +738,9 @@ describe Puppet::Indirector::Indirection do
664
738
  proc { @indirection.cache_class = "" }.should raise_error(ArgumentError)
665
739
  end
666
740
 
667
- it "should fail to set the cache class when the cache class name is nil" do
668
- proc { @indirection.cache_class = nil }.should raise_error(ArgumentError)
741
+ it "should allow resetting the cache_class to nil" do
742
+ @indirection.cache_class = nil
743
+ @indirection.cache_class.should be_nil
669
744
  end
670
745
 
671
746
  it "should fail to set the cache class when the specified cache class cannot be found" do
@@ -675,7 +750,6 @@ describe Puppet::Indirector::Indirection do
675
750
 
676
751
  after do
677
752
  @indirection.delete
678
- Puppet::Indirector::Indirection.clear_cache
679
753
  end
680
754
  end
681
755
 
@@ -706,26 +780,16 @@ describe Puppet::Indirector::Indirection do
706
780
  @indirection.cache.should equal(@cache)
707
781
  @indirection.cache.should equal(@cache)
708
782
  end
709
-
710
- it "should remove the cache terminus when all other terminus instances are cleared" do
711
- cache2 = mock 'cache2'
712
- @cache_class.stubs(:new).returns(@cache, cache2)
713
- @indirection.cache_class = :cache_terminus
714
- @indirection.cache.should equal(@cache)
715
- @indirection.clear_cache
716
- @indirection.cache.should equal(cache2)
717
- end
718
783
  end
719
784
 
720
785
  describe "and saving" do
721
786
  end
722
-
787
+
723
788
  describe "and finding" do
724
789
  end
725
-
790
+
726
791
  after :each do
727
792
  @indirection.delete
728
- Puppet::Indirector::Indirection.clear_cache
729
793
  end
730
794
  end
731
795
  end