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
@@ -8,11 +8,86 @@ require File.dirname(__FILE__) + '/../../../spec_helper'
8
8
  require 'puppet/indirector/file_content/file_server'
9
9
  require 'shared_behaviours/file_server_terminus'
10
10
 
11
+ require 'puppet_spec/files'
12
+
11
13
  describe Puppet::Indirector::FileContent::FileServer, " when finding files" do
12
14
  it_should_behave_like "Puppet::Indirector::FileServerTerminus"
15
+ include PuppetSpec::Files
13
16
 
14
17
  before do
15
18
  @terminus = Puppet::Indirector::FileContent::FileServer.new
16
19
  @test_class = Puppet::FileServing::Content
17
20
  end
21
+
22
+ it "should find plugin file content in the environment specified in the request" do
23
+ path = tmpfile("file_content_with_env")
24
+
25
+ Dir.mkdir(path)
26
+
27
+ modpath = File.join(path, "mod")
28
+ FileUtils.mkdir_p(File.join(modpath, "lib"))
29
+ file = File.join(modpath, "lib", "file.rb")
30
+ File.open(file, "w") { |f| f.puts "1" }
31
+
32
+ env = Puppet::Node::Environment.new("foo")
33
+ env.stubs(:modulepath).returns [path]
34
+ Puppet.settings[:modulepath] = "/no/such/file"
35
+
36
+ result = Puppet::FileServing::Content.search("plugins", :environment => "foo", :recurse => true)
37
+
38
+ result.should_not be_nil
39
+ result.length.should == 2
40
+ result[1].should be_instance_of(Puppet::FileServing::Content)
41
+ result[1].content.should == "1\n"
42
+ end
43
+
44
+ it "should find file content in modules" do
45
+ path = tmpfile("file_content")
46
+
47
+ Dir.mkdir(path)
48
+
49
+ modpath = File.join(path, "mymod")
50
+ FileUtils.mkdir_p(File.join(modpath, "files"))
51
+ file = File.join(modpath, "files", "myfile")
52
+ File.open(file, "w") { |f| f.puts "1" }
53
+
54
+ Puppet.settings[:modulepath] = path
55
+
56
+ result = Puppet::FileServing::Content.find("modules/mymod/myfile")
57
+
58
+ result.should_not be_nil
59
+ result.should be_instance_of(Puppet::FileServing::Content)
60
+ result.content.should == "1\n"
61
+ end
62
+
63
+ it "should find file content in files when node name expansions are used" do
64
+ Puppet::Util::Cacher.expire
65
+ FileTest.stubs(:exists?).returns true
66
+ FileTest.stubs(:exists?).with(Puppet[:fileserverconfig]).returns(true)
67
+
68
+ @path = tmpfile("file_server_testing")
69
+
70
+ Dir.mkdir(@path)
71
+ subdir = File.join(@path, "mynode")
72
+ Dir.mkdir(subdir)
73
+ File.open(File.join(subdir, "myfile"), "w") { |f| f.puts "1" }
74
+
75
+ # Use a real mount, so the integration is a bit deeper.
76
+ @mount1 = Puppet::FileServing::Configuration::Mount::File.new("one")
77
+ @mount1.stubs(:allowed?).returns true
78
+ @mount1.path = File.join(@path, "%h")
79
+
80
+ @parser = stub 'parser', :changed? => false
81
+ @parser.stubs(:parse).returns("one" => @mount1)
82
+
83
+ Puppet::FileServing::Configuration::Parser.stubs(:new).returns(@parser)
84
+
85
+ path = File.join(@path, "myfile")
86
+
87
+ result = Puppet::FileServing::Content.find("one/myfile", :environment => "foo", :node => "mynode")
88
+
89
+ result.should_not be_nil
90
+ result.should be_instance_of(Puppet::FileServing::Content)
91
+ result.content.should == "1\n"
92
+ end
18
93
  end
@@ -0,0 +1,95 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ Dir.chdir(File.dirname(__FILE__)) { (s = lambda { |f| File.exist?(f) ? require(f) : Dir.chdir("..") { s.call(f) } }).call("spec/spec_helper.rb") }
4
+
5
+ require 'puppet/transaction/report'
6
+ require 'puppet/network/server'
7
+ require 'puppet/network/http/webrick/rest'
8
+
9
+ describe "Report REST Terminus" do
10
+ before do
11
+ Puppet[:masterport] = 34343
12
+ Puppet[:server] = "localhost"
13
+
14
+ # Get a safe temporary file
15
+ @tmpfile = Tempfile.new("webrick_integration_testing")
16
+ @dir = @tmpfile.path + "_dir"
17
+
18
+ Puppet.settings[:confdir] = @dir
19
+ Puppet.settings[:vardir] = @dir
20
+ Puppet.settings[:server] = "127.0.0.1"
21
+ Puppet.settings[:masterport] = "34343"
22
+ Puppet.settings[:http_enable_post_connection_check] = false
23
+
24
+ Puppet::Util::Cacher.expire
25
+
26
+ Puppet[:servertype] = 'webrick'
27
+ Puppet[:server] = '127.0.0.1'
28
+ Puppet[:certname] = '127.0.0.1'
29
+
30
+ # Generate the certificate with a local CA
31
+ Puppet::SSL::Host.ca_location = :local
32
+ ca = Puppet::SSL::CertificateAuthority.new
33
+ ca.generate(Puppet[:certname]) unless Puppet::SSL::Certificate.find(Puppet[:certname])
34
+ ca.generate("foo.madstop.com") unless Puppet::SSL::Certificate.find(Puppet[:certname])
35
+
36
+ @host = Puppet::SSL::Host.new(Puppet[:certname])
37
+
38
+ @params = { :port => 34343, :handlers => [ :report ] }
39
+ @server = Puppet::Network::Server.new(@params)
40
+ @server.listen
41
+
42
+ # Let's use REST for our reports :-)
43
+ @old_terminus = Puppet::Transaction::Report.indirection.terminus_class
44
+ Puppet::Transaction::Report.terminus_class = :rest
45
+
46
+ # LAK:NOTE We need to have a fake model here so that our indirected methods get
47
+ # passed through REST; otherwise we'd be stubbing 'save', which would cause an immediate
48
+ # return.
49
+ @report = stub_everything 'report'
50
+ @mock_model = stub_everything 'faked model', :name => "report", :convert_from => @report
51
+ Puppet::Indirector::Request.any_instance.stubs(:model).returns(@mock_model)
52
+
53
+ Puppet::Network::HTTP::WEBrickREST.any_instance.stubs(:check_authorization)
54
+ end
55
+
56
+ after do
57
+ Puppet::Network::HttpPool.expire
58
+ Puppet::SSL::Host.ca_location = :none
59
+ Puppet.settings.clear
60
+ @server.unlisten
61
+ Puppet::Transaction::Report.terminus_class = @old_terminus
62
+ end
63
+
64
+ it "should be able to send a report to the server" do
65
+ @report.expects(:save)
66
+
67
+ report = Puppet::Transaction::Report.new
68
+
69
+ resourcemetrics = {
70
+ :total => 12,
71
+ :out_of_sync => 20,
72
+ :applied => 45,
73
+ :skipped => 1,
74
+ :restarted => 23,
75
+ :failed_restarts => 1,
76
+ :scheduled => 10
77
+ }
78
+ report.newmetric(:resources, resourcemetrics)
79
+
80
+ timemetrics = {
81
+ :resource1 => 10,
82
+ :resource2 => 50,
83
+ :resource3 => 40,
84
+ :resource4 => 20,
85
+ }
86
+ report.newmetric(:times, timemetrics)
87
+
88
+ report.newmetric(:changes,
89
+ :total => 20
90
+ )
91
+
92
+ report.time = Time.now
93
+ report.save
94
+ end
95
+ end
@@ -7,19 +7,19 @@ require 'puppet/indirector/rest'
7
7
 
8
8
  # a fake class that will be indirected via REST
9
9
  class Puppet::TestIndirectedFoo
10
- extend Puppet::Indirector
10
+ extend Puppet::Indirector
11
11
  indirects :test_indirected_foo, :terminus_setting => :test_indirected_foo_terminus
12
-
12
+
13
13
  attr_reader :value
14
-
14
+
15
15
  def initialize(value = 0)
16
16
  @value = value
17
17
  end
18
-
18
+
19
19
  def self.from_yaml(yaml)
20
20
  YAML.load(yaml)
21
21
  end
22
-
22
+
23
23
  def name
24
24
  "bob"
25
25
  end
@@ -31,66 +31,109 @@ end
31
31
 
32
32
 
33
33
  describe Puppet::Indirector::REST do
34
+ before do
35
+ # Get a safe temporary file
36
+ @tmpfile = Tempfile.new("webrick_integration_testing")
37
+ @dir = @tmpfile.path + "_dir"
38
+
39
+ Puppet.settings[:confdir] = @dir
40
+ Puppet.settings[:vardir] = @dir
41
+ Puppet.settings[:server] = "127.0.0.1"
42
+ Puppet.settings[:masterport] = "34343"
43
+ Puppet.settings[:http_enable_post_connection_check] = false
44
+
45
+ Puppet::SSL::Host.ca_location = :local
46
+
47
+ Puppet::TestIndirectedFoo.terminus_class = :rest
48
+ end
49
+
50
+ after do
51
+ Puppet::Network::HttpPool.expire
52
+ Puppet::SSL::Host.ca_location = :none
53
+ Puppet.settings.clear
54
+ end
55
+
34
56
  describe "when using webrick" do
35
57
  before :each do
58
+ Puppet::Util::Cacher.expire
59
+
36
60
  Puppet[:servertype] = 'webrick'
37
- @params = { :address => "127.0.0.1", :port => 34343, :handlers => [ :test_indirected_foo ] }
61
+ Puppet[:server] = '127.0.0.1'
62
+ Puppet[:certname] = '127.0.0.1'
63
+
64
+ ca = Puppet::SSL::CertificateAuthority.new
65
+ ca.generate(Puppet[:certname]) unless Puppet::SSL::Certificate.find(Puppet[:certname])
66
+
67
+ @params = { :port => 34343, :handlers => [ :test_indirected_foo ], :xmlrpc_handlers => [ :status ] }
38
68
  @server = Puppet::Network::Server.new(@params)
39
69
  @server.listen
40
70
 
41
- # the autoloader was clearly not written test-first. We subvert the integration test to get around its bullshit.
42
- Puppet::Indirector::Terminus.stubs(:terminus_class).returns(Puppet::TestIndirectedFoo::Rest)
43
- Puppet::TestIndirectedFoo.indirection.stubs(:terminus_class).returns :rest
71
+ # LAK:NOTE We need to have a fake model here so that our indirected methods get
72
+ # passed through REST; otherwise we'd be stubbing 'find', which would cause an immediate
73
+ # return.
74
+ @mock_model = stub('faked model', :name => "foo")
75
+ Puppet::Indirector::Request.any_instance.stubs(:model).returns(@mock_model)
44
76
 
45
- # Stub the connection information.
46
- Puppet::TestIndirectedFoo.indirection.terminus(:rest).stubs(:rest_connection_details).returns(:host => "localhost", :port => 34343)
77
+ # do not trigger the authorization layer
78
+ Puppet::Network::HTTP::WEBrickREST.any_instance.stubs(:check_authorization).returns(true)
47
79
  end
48
-
80
+
49
81
  describe "when finding a model instance over REST" do
50
82
  describe "when a matching model instance can be found" do
51
83
  before :each do
52
84
  @model_instance = Puppet::TestIndirectedFoo.new(23)
53
- @mock_model = stub('faked model', :find => @model_instance)
54
- Puppet::Network::HTTP::WEBrickREST.any_instance.stubs(:model).returns(@mock_model)
85
+ @mock_model.stubs(:find).returns @model_instance
55
86
  end
56
-
87
+
57
88
  it "should not fail" do
58
89
  lambda { Puppet::TestIndirectedFoo.find('bar') }.should_not raise_error
59
90
  end
60
-
91
+
61
92
  it 'should return an instance of the model class' do
62
93
  Puppet::TestIndirectedFoo.find('bar').class.should == Puppet::TestIndirectedFoo
63
94
  end
64
-
95
+
96
+ it "should pass options all the way through" do
97
+ @mock_model.expects(:find).with { |key, args| args[:one] == "two" and args[:three] == "four" }.returns @model_instance
98
+ Puppet::TestIndirectedFoo.find('bar', :one => "two", :three => "four")
99
+ end
100
+
65
101
  it 'should return the instance of the model class associated with the provided lookup key' do
66
102
  Puppet::TestIndirectedFoo.find('bar').value.should == @model_instance.value
67
103
  end
68
-
104
+
69
105
  it 'should set an expiration on model instance' do
70
106
  Puppet::TestIndirectedFoo.find('bar').expiration.should_not be_nil
71
107
  end
108
+
109
+ it "should use a supported format" do
110
+ Puppet::TestIndirectedFoo.expects(:supported_formats).returns ["marshal"]
111
+ text = Marshal.dump(@model_instance)
112
+ @model_instance.expects(:render).with(Puppet::Network::FormatHandler.format("marshal")).returns text
113
+ Puppet::TestIndirectedFoo.find('bar')
114
+ end
72
115
  end
73
-
116
+
74
117
  describe "when no matching model instance can be found" do
75
118
  before :each do
76
- @mock_model = stub('faked model', :find => nil)
77
- Puppet::Network::HTTP::WEBrickREST.any_instance.stubs(:model).returns(@mock_model)
119
+ @mock_model = stub('faked model', :name => "foo", :find => nil)
120
+ Puppet::Indirector::Request.any_instance.stubs(:model).returns(@mock_model)
78
121
  end
79
-
122
+
80
123
  it "should return nil" do
81
124
  Puppet::TestIndirectedFoo.find('bar').should be_nil
82
125
  end
83
126
  end
84
-
127
+
85
128
  describe "when an exception is encountered in looking up a model instance" do
86
129
  before :each do
87
- @mock_model = stub('faked model')
130
+ @mock_model = stub('faked model', :name => "foo")
88
131
  @mock_model.stubs(:find).raises(RuntimeError)
89
- Puppet::Network::HTTP::WEBrickREST.any_instance.stubs(:model).returns(@mock_model)
132
+ Puppet::Indirector::Request.any_instance.stubs(:model).returns(@mock_model)
90
133
  end
91
-
134
+
92
135
  it "should raise an exception" do
93
- lambda { Puppet::TestIndirectedFoo.find('bar') }.should raise_error(RuntimeError)
136
+ lambda { Puppet::TestIndirectedFoo.find('bar') }.should raise_error(Net::HTTPError)
94
137
  end
95
138
  end
96
139
  end
@@ -99,57 +142,58 @@ describe Puppet::Indirector::REST do
99
142
  describe "when matching model instances can be found" do
100
143
  before :each do
101
144
  @model_instances = [ Puppet::TestIndirectedFoo.new(23), Puppet::TestIndirectedFoo.new(24) ]
102
- @mock_model = stub('faked model', :search => @model_instances)
103
- Puppet::Network::HTTP::WEBrickREST.any_instance.stubs(:model).returns(@mock_model)
145
+ @mock_model.stubs(:search).returns @model_instances
146
+
147
+ # Force yaml, because otherwise our mocks can't work correctly
148
+ Puppet::TestIndirectedFoo.stubs(:supported_formats).returns %w{yaml}
149
+
150
+ @mock_model.stubs(:render_multiple).returns @model_instances.to_yaml
104
151
  end
105
-
152
+
106
153
  it "should not fail" do
107
154
  lambda { Puppet::TestIndirectedFoo.search('bar') }.should_not raise_error
108
155
  end
109
-
156
+
110
157
  it 'should return all matching results' do
111
158
  Puppet::TestIndirectedFoo.search('bar').length.should == @model_instances.length
112
159
  end
113
-
160
+
161
+ it "should pass options all the way through" do
162
+ @mock_model.expects(:search).with { |key, args| args[:one] == "two" and args[:three] == "four" }.returns @model_instances
163
+ Puppet::TestIndirectedFoo.search("foo", :one => "two", :three => "four")
164
+ end
165
+
114
166
  it 'should return model instances' do
115
- Puppet::TestIndirectedFoo.search('bar').each do |result|
167
+ Puppet::TestIndirectedFoo.search('bar').each do |result|
116
168
  result.class.should == Puppet::TestIndirectedFoo
117
169
  end
118
170
  end
119
-
171
+
120
172
  it 'should return the instance of the model class associated with the provided lookup key' do
121
173
  Puppet::TestIndirectedFoo.search('bar').collect { |i| i.value }.should == @model_instances.collect { |i| i.value }
122
174
  end
123
-
124
- it 'should set a version timestamp on model instances' do
125
- pending("Luke looking at why this version magic might not be working") do
126
- Puppet::TestIndirectedFoo.search('bar').each do |result|
127
- result.version.should_not be_nil
128
- end
129
- end
130
- end
131
175
  end
132
-
176
+
133
177
  describe "when no matching model instance can be found" do
134
178
  before :each do
135
- @mock_model = stub('faked model', :find => nil)
136
- Puppet::Network::HTTP::WEBrickREST.any_instance.stubs(:model).returns(@mock_model)
179
+ @mock_model = stub('faked model', :name => "foo", :find => nil)
180
+ Puppet::Indirector::Request.any_instance.stubs(:model).returns(@mock_model)
137
181
  end
138
-
182
+
139
183
  it "should return nil" do
140
184
  Puppet::TestIndirectedFoo.find('bar').should be_nil
141
185
  end
142
186
  end
143
-
187
+
144
188
  describe "when an exception is encountered in looking up a model instance" do
145
189
  before :each do
146
190
  @mock_model = stub('faked model')
147
191
  @mock_model.stubs(:find).raises(RuntimeError)
148
- Puppet::Network::HTTP::WEBrickREST.any_instance.stubs(:model).returns(@mock_model)
192
+ Puppet::Indirector::Request.any_instance.stubs(:model).returns(@mock_model)
149
193
  end
150
-
194
+
151
195
  it "should raise an exception" do
152
- lambda { Puppet::TestIndirectedFoo.find('bar') }.should raise_error(RuntimeError)
196
+ lambda { Puppet::TestIndirectedFoo.find('bar') }.should raise_error(Net::HTTPError)
153
197
  end
154
198
  end
155
199
  end
@@ -157,39 +201,35 @@ describe Puppet::Indirector::REST do
157
201
  describe "when destroying a model instance over REST" do
158
202
  describe "when a matching model instance can be found" do
159
203
  before :each do
160
- @mock_model = stub('faked model', :destroy => true)
161
- Puppet::Network::HTTP::WEBrickREST.any_instance.stubs(:model).returns(@mock_model)
204
+ @mock_model.stubs(:destroy).returns true
162
205
  end
163
-
206
+
164
207
  it "should not fail" do
165
208
  lambda { Puppet::TestIndirectedFoo.destroy('bar') }.should_not raise_error
166
209
  end
167
-
210
+
168
211
  it 'should return success' do
169
212
  Puppet::TestIndirectedFoo.destroy('bar').should == true
170
213
  end
171
214
  end
172
-
215
+
173
216
  describe "when no matching model instance can be found" do
174
217
  before :each do
175
- @mock_model = stub('faked model', :destroy => false)
176
- Puppet::Network::HTTP::WEBrickREST.any_instance.stubs(:model).returns(@mock_model)
218
+ @mock_model.stubs(:destroy).returns false
177
219
  end
178
-
220
+
179
221
  it "should return failure" do
180
222
  Puppet::TestIndirectedFoo.destroy('bar').should == false
181
223
  end
182
224
  end
183
-
225
+
184
226
  describe "when an exception is encountered in destroying a model instance" do
185
227
  before :each do
186
- @mock_model = stub('faked model')
187
228
  @mock_model.stubs(:destroy).raises(RuntimeError)
188
- Puppet::Network::HTTP::WEBrickREST.any_instance.stubs(:model).returns(@mock_model)
189
229
  end
190
-
230
+
191
231
  it "should raise an exception" do
192
- lambda { Puppet::TestIndirectedFoo.destroy('bar') }.should raise_error(RuntimeError)
232
+ lambda { Puppet::TestIndirectedFoo.destroy('bar') }.should raise_error(Net::HTTPError)
193
233
  end
194
234
  end
195
235
  end
@@ -197,45 +237,45 @@ describe Puppet::Indirector::REST do
197
237
  describe "when saving a model instance over REST" do
198
238
  before :each do
199
239
  @instance = Puppet::TestIndirectedFoo.new(42)
200
- @mock_model = stub('faked model', :from_yaml => @instance)
201
- Puppet::Network::HTTP::WEBrickREST.any_instance.stubs(:model).returns(@mock_model)
202
- Puppet::Network::HTTP::WEBrickREST.any_instance.stubs(:save_object).returns(@instance)
240
+ @mock_model.stubs(:save_object).returns @instance
241
+ @mock_model.stubs(:convert_from).returns @instance
242
+ Puppet::Network::HTTP::WEBrickREST.any_instance.stubs(:save_object).returns(@instance)
203
243
  end
204
-
244
+
205
245
  describe "when a successful save can be performed" do
206
246
  before :each do
207
247
  end
208
-
248
+
209
249
  it "should not fail" do
210
250
  lambda { @instance.save }.should_not raise_error
211
251
  end
212
-
252
+
213
253
  it 'should return an instance of the model class' do
214
254
  @instance.save.class.should == Puppet::TestIndirectedFoo
215
255
  end
216
-
256
+
217
257
  it 'should return a matching instance of the model class' do
218
258
  @instance.save.value.should == @instance.value
219
259
  end
220
260
  end
221
-
261
+
222
262
  describe "when a save cannot be completed" do
223
263
  before :each do
224
264
  Puppet::Network::HTTP::WEBrickREST.any_instance.stubs(:save_object).returns(false)
225
265
  end
226
-
266
+
227
267
  it "should return failure" do
228
268
  @instance.save.should == false
229
269
  end
230
270
  end
231
-
271
+
232
272
  describe "when an exception is encountered in performing a save" do
233
273
  before :each do
234
- Puppet::Network::HTTP::WEBrickREST.any_instance.stubs(:save_object).raises(RuntimeError)
274
+ Puppet::Network::HTTP::WEBrickREST.any_instance.stubs(:save_object).raises(RuntimeError)
235
275
  end
236
-
276
+
237
277
  it "should raise an exception" do
238
- lambda { @instance.save }.should raise_error(RuntimeError)
278
+ lambda { @instance.save }.should raise_error(Net::HTTPError)
239
279
  end
240
280
  end
241
281
  end
@@ -247,66 +287,88 @@ describe Puppet::Indirector::REST do
247
287
 
248
288
  describe "when using mongrel" do
249
289
  confine "Mongrel is not available" => Puppet.features.mongrel?
250
-
290
+
251
291
  before :each do
252
292
  Puppet[:servertype] = 'mongrel'
253
- @params = { :address => "127.0.0.1", :port => 34343, :handlers => [ :test_indirected_foo ] }
293
+ @params = { :port => 34343, :handlers => [ :test_indirected_foo ] }
294
+
295
+ # Make sure we never get a cert, since mongrel can't speak ssl
296
+ Puppet::SSL::Certificate.stubs(:find).returns nil
297
+
298
+ # We stub ssl to be off, since mongrel can't speak ssl
299
+ Net::HTTP.any_instance.stubs(:use_ssl?).returns false
300
+
254
301
  @server = Puppet::Network::Server.new(@params)
255
302
  @server.listen
256
303
 
257
- # the autoloader was clearly not written test-first. We subvert the integration test to get around its bullshit.
258
- Puppet::Indirector::Terminus.stubs(:terminus_class).returns(Puppet::TestIndirectedFoo::Rest)
259
- Puppet::TestIndirectedFoo.indirection.stubs(:terminus_class).returns :rest
304
+ # LAK:NOTE We need to have a fake model here so that our indirected methods get
305
+ # passed through REST; otherwise we'd be stubbing 'find', which would cause an immediate
306
+ # return.
307
+ @mock_model = stub('faked model', :name => "foo")
308
+ Puppet::Indirector::Request.any_instance.stubs(:model).returns(@mock_model)
309
+
310
+ # do not trigger the authorization layer
311
+ Puppet::Network::HTTP::MongrelREST.any_instance.stubs(:check_authorization).returns(true)
312
+ end
260
313
 
261
- # Stub the connection information.
262
- Puppet::TestIndirectedFoo.indirection.terminus(:rest).stubs(:rest_connection_details).returns(:host => "localhost", :port => 34343)
314
+ after do
315
+ @server.unlisten
263
316
  end
264
-
317
+
265
318
  describe "when finding a model instance over REST" do
266
319
  describe "when a matching model instance can be found" do
267
320
  before :each do
268
321
  @model_instance = Puppet::TestIndirectedFoo.new(23)
269
- @mock_model = stub('faked model', :find => @model_instance)
270
- Puppet::Network::HTTP::MongrelREST.any_instance.stubs(:model).returns(@mock_model)
322
+ @mock_model.stubs(:find).returns @model_instance
271
323
  end
272
-
324
+
273
325
  it "should not fail" do
274
326
  lambda { Puppet::TestIndirectedFoo.find('bar') }.should_not raise_error
275
327
  end
276
-
328
+
277
329
  it 'should return an instance of the model class' do
278
330
  Puppet::TestIndirectedFoo.find('bar').class.should == Puppet::TestIndirectedFoo
279
331
  end
280
-
332
+
333
+ it "should pass options all the way through" do
334
+ @mock_model.expects(:find).with { |key, args| args[:one] == "two" and args[:three] == "four" }.returns @model_instance
335
+ Puppet::TestIndirectedFoo.find('bar', :one => "two", :three => "four")
336
+ end
337
+
281
338
  it 'should return the instance of the model class associated with the provided lookup key' do
282
339
  Puppet::TestIndirectedFoo.find('bar').value.should == @model_instance.value
283
340
  end
284
-
341
+
285
342
  it 'should set an expiration on model instance' do
286
343
  Puppet::TestIndirectedFoo.find('bar').expiration.should_not be_nil
287
344
  end
345
+
346
+ it "should use a supported format" do
347
+ Puppet::TestIndirectedFoo.expects(:supported_formats).returns ["marshal"]
348
+ format = stub 'format'
349
+ text = Marshal.dump(@model_instance)
350
+ @model_instance.expects(:render).with(Puppet::Network::FormatHandler.format("marshal")).returns text
351
+ Puppet::TestIndirectedFoo.find('bar')
352
+ end
288
353
  end
289
-
354
+
290
355
  describe "when no matching model instance can be found" do
291
356
  before :each do
292
- @mock_model = stub('faked model', :find => nil)
293
- Puppet::Network::HTTP::MongrelREST.any_instance.stubs(:model).returns(@mock_model)
357
+ @mock_model.stubs(:find).returns nil
294
358
  end
295
-
359
+
296
360
  it "should return nil" do
297
361
  Puppet::TestIndirectedFoo.find('bar').should be_nil
298
362
  end
299
363
  end
300
-
364
+
301
365
  describe "when an exception is encountered in looking up a model instance" do
302
366
  before :each do
303
- @mock_model = stub('faked model')
304
367
  @mock_model.stubs(:find).raises(RuntimeError)
305
- Puppet::Network::HTTP::MongrelREST.any_instance.stubs(:model).returns(@mock_model)
306
368
  end
307
-
369
+
308
370
  it "should raise an exception" do
309
- lambda { Puppet::TestIndirectedFoo.find('bar') }.should raise_error(RuntimeError)
371
+ lambda { Puppet::TestIndirectedFoo.find('bar') }.should raise_error(Net::HTTPError)
310
372
  end
311
373
  end
312
374
  end
@@ -315,55 +377,62 @@ describe Puppet::Indirector::REST do
315
377
  describe "when matching model instances can be found" do
316
378
  before :each do
317
379
  @model_instances = [ Puppet::TestIndirectedFoo.new(23), Puppet::TestIndirectedFoo.new(24) ]
318
- @mock_model = stub('faked model', :search => @model_instances)
319
- Puppet::Network::HTTP::MongrelREST.any_instance.stubs(:model).returns(@mock_model)
380
+
381
+ # Force yaml, because otherwise our mocks can't work correctly
382
+ Puppet::TestIndirectedFoo.stubs(:supported_formats).returns %w{yaml}
383
+
384
+ @mock_model.stubs(:search).returns @model_instances
385
+ @mock_model.stubs(:render_multiple).returns @model_instances.to_yaml
320
386
  end
321
-
387
+
322
388
  it "should not fail" do
323
389
  lambda { Puppet::TestIndirectedFoo.search('bar') }.should_not raise_error
324
390
  end
325
-
391
+
326
392
  it 'should return all matching results' do
327
393
  Puppet::TestIndirectedFoo.search('bar').length.should == @model_instances.length
328
394
  end
329
-
395
+
396
+ it "should pass options all the way through" do
397
+ @mock_model.expects(:search).with { |key, args| args[:one] == "two" and args[:three] == "four" }.returns @model_instances
398
+ Puppet::TestIndirectedFoo.search('bar', :one => "two", :three => "four")
399
+ end
400
+
330
401
  it 'should return model instances' do
331
- Puppet::TestIndirectedFoo.search('bar').each do |result|
402
+ Puppet::TestIndirectedFoo.search('bar').each do |result|
332
403
  result.class.should == Puppet::TestIndirectedFoo
333
404
  end
334
405
  end
335
-
406
+
336
407
  it 'should return the instance of the model class associated with the provided lookup key' do
337
408
  Puppet::TestIndirectedFoo.search('bar').collect { |i| i.value }.should == @model_instances.collect { |i| i.value }
338
409
  end
339
-
410
+
340
411
  it 'should set an expiration on model instances' do
341
412
  Puppet::TestIndirectedFoo.search('bar').each do |result|
342
413
  result.expiration.should_not be_nil
343
414
  end
344
415
  end
345
416
  end
346
-
417
+
347
418
  describe "when no matching model instance can be found" do
348
419
  before :each do
349
- @mock_model = stub('faked model', :find => nil)
350
- Puppet::Network::HTTP::MongrelREST.any_instance.stubs(:model).returns(@mock_model)
420
+ @mock_model.stubs(:search).returns nil
421
+ @mock_model.stubs(:render_multiple).returns nil.to_yaml
351
422
  end
352
-
423
+
353
424
  it "should return nil" do
354
- Puppet::TestIndirectedFoo.find('bar').should be_nil
425
+ Puppet::TestIndirectedFoo.search('bar').should == []
355
426
  end
356
427
  end
357
-
428
+
358
429
  describe "when an exception is encountered in looking up a model instance" do
359
430
  before :each do
360
- @mock_model = stub('faked model')
361
431
  @mock_model.stubs(:find).raises(RuntimeError)
362
- Puppet::Network::HTTP::MongrelREST.any_instance.stubs(:model).returns(@mock_model)
363
432
  end
364
-
433
+
365
434
  it "should raise an exception" do
366
- lambda { Puppet::TestIndirectedFoo.find('bar') }.should raise_error(RuntimeError)
435
+ lambda { Puppet::TestIndirectedFoo.find('bar') }.should raise_error(Net::HTTPError)
367
436
  end
368
437
  end
369
438
  end
@@ -371,39 +440,35 @@ describe Puppet::Indirector::REST do
371
440
  describe "when destroying a model instance over REST" do
372
441
  describe "when a matching model instance can be found" do
373
442
  before :each do
374
- @mock_model = stub('faked model', :destroy => true)
375
- Puppet::Network::HTTP::MongrelREST.any_instance.stubs(:model).returns(@mock_model)
443
+ @mock_model.stubs(:destroy).returns true
376
444
  end
377
-
445
+
378
446
  it "should not fail" do
379
447
  lambda { Puppet::TestIndirectedFoo.destroy('bar') }.should_not raise_error
380
448
  end
381
-
449
+
382
450
  it 'should return success' do
383
451
  Puppet::TestIndirectedFoo.destroy('bar').should == true
384
452
  end
385
453
  end
386
-
454
+
387
455
  describe "when no matching model instance can be found" do
388
456
  before :each do
389
- @mock_model = stub('faked model', :destroy => false)
390
- Puppet::Network::HTTP::MongrelREST.any_instance.stubs(:model).returns(@mock_model)
457
+ @mock_model.stubs(:destroy).returns false
391
458
  end
392
-
459
+
393
460
  it "should return failure" do
394
461
  Puppet::TestIndirectedFoo.destroy('bar').should == false
395
462
  end
396
463
  end
397
-
464
+
398
465
  describe "when an exception is encountered in destroying a model instance" do
399
466
  before :each do
400
- @mock_model = stub('faked model')
401
467
  @mock_model.stubs(:destroy).raises(RuntimeError)
402
- Puppet::Network::HTTP::MongrelREST.any_instance.stubs(:model).returns(@mock_model)
403
468
  end
404
-
469
+
405
470
  it "should raise an exception" do
406
- lambda { Puppet::TestIndirectedFoo.destroy('bar') }.should raise_error(RuntimeError)
471
+ lambda { Puppet::TestIndirectedFoo.destroy('bar') }.should raise_error(Net::HTTPError)
407
472
  end
408
473
  end
409
474
  end
@@ -411,54 +476,49 @@ describe Puppet::Indirector::REST do
411
476
  describe "when saving a model instance over REST" do
412
477
  before :each do
413
478
  @instance = Puppet::TestIndirectedFoo.new(42)
414
- @mock_model = stub('faked model', :from_yaml => @instance)
415
- Puppet::Network::HTTP::MongrelREST.any_instance.stubs(:model).returns(@mock_model)
479
+ @mock_model.stubs(:convert_from).returns @instance
416
480
 
417
481
  # LAK:NOTE This stub is necessary to prevent the REST call from calling
418
482
  # REST.save again, thus producing painful infinite recursion.
419
- Puppet::Network::HTTP::MongrelREST.any_instance.stubs(:save_object).returns(@instance)
483
+ Puppet::Network::HTTP::MongrelREST.any_instance.stubs(:save_object).returns(@instance)
420
484
  end
421
-
485
+
422
486
  describe "when a successful save can be performed" do
423
487
  before :each do
424
488
  end
425
-
489
+
426
490
  it "should not fail" do
427
491
  lambda { @instance.save }.should_not raise_error
428
492
  end
429
-
493
+
430
494
  it 'should return an instance of the model class' do
431
495
  @instance.save.class.should == Puppet::TestIndirectedFoo
432
496
  end
433
-
497
+
434
498
  it 'should return a matching instance of the model class' do
435
499
  @instance.save.value.should == @instance.value
436
500
  end
437
501
  end
438
-
502
+
439
503
  describe "when a save cannot be completed" do
440
504
  before :each do
441
505
  Puppet::Network::HTTP::MongrelREST.any_instance.stubs(:save_object).returns(false)
442
506
  end
443
-
507
+
444
508
  it "should return failure" do
445
509
  @instance.save.should == false
446
510
  end
447
511
  end
448
-
512
+
449
513
  describe "when an exception is encountered in performing a save" do
450
514
  before :each do
451
- Puppet::Network::HTTP::MongrelREST.any_instance.stubs(:save_object).raises(RuntimeError)
515
+ Puppet::Network::HTTP::MongrelREST.any_instance.stubs(:save_object).raises(RuntimeError)
452
516
  end
453
-
517
+
454
518
  it "should raise an exception" do
455
- lambda { @instance.save }.should raise_error(RuntimeError)
519
+ lambda { @instance.save }.should raise_error(Net::HTTPError)
456
520
  end
457
521
  end
458
522
  end
459
-
460
- after :each do
461
- @server.unlisten
462
- end
463
523
  end
464
524
  end