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
@@ -3,10 +3,32 @@
3
3
  require File.dirname(__FILE__) + '/../../spec_helper'
4
4
  require 'puppet/indirector/rest'
5
5
 
6
+ describe "a REST http call", :shared => true do
7
+ it "should accept a path" do
8
+ lambda { @search.send(@method, *@arguments) }.should_not raise_error(ArgumentError)
9
+ end
10
+
11
+ it "should require a path" do
12
+ lambda { @searcher.send(@method) }.should raise_error(ArgumentError)
13
+ end
14
+
15
+ it "should return the results of deserializing the response to the request" do
16
+ conn = mock 'connection'
17
+ conn.stubs(:put).returns @response
18
+ conn.stubs(:delete).returns @response
19
+ conn.stubs(:get).returns @response
20
+ Puppet::Network::HttpPool.stubs(:http_instance).returns conn
21
+
22
+ @searcher.expects(:deserialize).with(@response).returns "myobject"
23
+
24
+ @searcher.send(@method, *@arguments).should == 'myobject'
25
+ end
26
+ end
27
+
6
28
  describe Puppet::Indirector::REST do
7
29
  before do
8
30
  Puppet::Indirector::Terminus.stubs(:register_terminus_class)
9
- @model = stub('model')
31
+ @model = stub('model', :supported_formats => %w{}, :convert_from => nil)
10
32
  @instance = stub('model instance')
11
33
  @indirection = stub('indirection', :name => :mystuff, :register_terminus_type => nil, :model => @model)
12
34
  Puppet::Indirector::Indirection.stubs(:instance).returns(@indirection)
@@ -17,356 +39,343 @@ describe Puppet::Indirector::REST do
17
39
  end
18
40
  end
19
41
 
42
+ @response = stub('mock response', :body => 'result', :code => "200")
43
+ @response.stubs(:[]).with('content-type').returns "text/plain"
44
+
20
45
  @searcher = @rest_class.new
46
+ @searcher.stubs(:model).returns @model
47
+ end
48
+
49
+ it "should include the v1 REST API module" do
50
+ Puppet::Indirector::REST.ancestors.should be_include(Puppet::Network::HTTP::API::V1)
51
+ end
52
+
53
+ it "should have a method for specifying what setting a subclass should use to retrieve its server" do
54
+ @rest_class.should respond_to(:use_server_setting)
55
+ end
56
+
57
+ it "should use any specified setting to pick the server" do
58
+ @rest_class.expects(:server_setting).returns :servset
59
+ Puppet.settings.expects(:value).with(:servset).returns "myserver"
60
+ @rest_class.server.should == "myserver"
21
61
  end
22
-
23
- describe "when locating the REST connection" do
24
- before do
25
- Puppet.settings.stubs(:value).returns("whatever")
26
- end
27
62
 
28
- it "should return the :server setting as the host" do
63
+ it "should default to :server for the server setting" do
64
+ @rest_class.expects(:server_setting).returns nil
29
65
  Puppet.settings.expects(:value).with(:server).returns "myserver"
30
- @searcher.rest_connection_details[:host].should == "myserver"
31
- end
32
-
33
- it "should return the :masterport (as an Integer) as the port" do
34
- Puppet.settings.expects(:value).with(:masterport).returns "1234"
35
- @searcher.rest_connection_details[:port].should == 1234
36
- end
66
+ @rest_class.server.should == "myserver"
37
67
  end
38
-
39
- describe "when doing a network fetch" do
40
- before :each do
41
- Net::HTTP.stubs(:start).returns('result')
42
- @details = { :host => '127.0.0.1', :port => 34343 }
43
- @searcher.stubs(:rest_connection_details).returns(@details)
44
- end
45
-
46
- it "should accept a path" do
47
- lambda { @search.network_fetch('foo') }.should_not raise_error(ArgumentError)
48
- end
49
-
50
- it "should require a path" do
51
- lambda { @searcher.network_fetch }.should raise_error(ArgumentError)
52
- end
53
-
54
- it "should look up connection details" do
55
- @searcher.expects(:rest_connection_details).returns(@details)
56
- @searcher.network_fetch('foo')
57
- end
58
-
59
- it "should use the GET http method" do
60
- @mock_result = stub('mock result', :body => 'result')
61
- @mock_connection = mock('mock http connection', :get => @mock_result)
62
- @searcher.stubs(:network).yields(@mock_connection)
63
- @searcher.network_fetch('foo')
64
- end
65
-
66
- it "should use the appropriate remote server" do
67
- Net::HTTP.expects(:start).with {|host, port| host == @details[:host] }
68
- @searcher.network_fetch('foo')
69
- end
70
-
71
- it "should use the appropriate remote port" do
72
- Net::HTTP.expects(:start).with {|host, port| port == @details[:port] }
73
- @searcher.network_fetch('foo')
74
- end
75
-
76
- it "should use the provided path" do
77
- @mock_result = stub('mock result', :body => 'result')
78
- @mock_connection = stub('mock http connection')
79
- @mock_connection.expects(:get).with('/foo').returns(@mock_result)
80
- @searcher.stubs(:network).yields(@mock_connection)
81
- @searcher.network_fetch('foo')
82
- end
83
-
84
- it "should return the results of the GET request" do
85
- @searcher.network_fetch('foo').should == 'result'
86
- end
68
+
69
+ it "should have a method for specifying what setting a subclass should use to retrieve its port" do
70
+ @rest_class.should respond_to(:use_port_setting)
87
71
  end
88
72
 
89
- describe "when doing a network delete" do
90
- before :each do
91
- Net::HTTP.stubs(:start).returns('result')
92
- @details = { :host => '127.0.0.1', :port => 34343 }
93
- @searcher.stubs(:rest_connection_details).returns(@details)
94
- end
95
-
96
- it "should accept a path" do
97
- lambda { @search.network_delete('foo') }.should_not raise_error(ArgumentError)
98
- end
99
-
100
- it "should require a path" do
101
- lambda { @searcher.network_delete }.should raise_error(ArgumentError)
102
- end
103
-
104
- it "should look up connection details" do
105
- @searcher.expects(:rest_connection_details).returns(@details)
106
- @searcher.network_delete('foo')
107
- end
108
-
109
- it "should use the DELETE http method" do
110
- @mock_result = stub('mock result', :body => 'result')
111
- @mock_connection = mock('mock http connection', :delete => @mock_result)
112
- @searcher.stubs(:network).yields(@mock_connection)
113
- @searcher.network_delete('foo')
114
- end
115
-
116
- it "should use the appropriate remote server" do
117
- Net::HTTP.expects(:start).with {|host, port| host == @details[:host] }
118
- @searcher.network_delete('foo')
119
- end
120
-
121
- it "should use the appropriate remote port" do
122
- Net::HTTP.expects(:start).with {|host, port| port == @details[:port] }
123
- @searcher.network_delete('foo')
124
- end
125
-
126
- it "should use the provided path" do
127
- @mock_result = stub('mock result', :body => 'result')
128
- @mock_connection = stub('mock http connection')
129
- @mock_connection.expects(:delete).with('/foo').returns(@mock_result)
130
- @searcher.stubs(:network).yields(@mock_connection)
131
- @searcher.network_delete('foo')
132
- end
133
-
134
- it "should return the results of the DELETE request" do
135
- @searcher.network_delete('foo').should == 'result'
136
- end
73
+ it "should use any specified setting to pick the port" do
74
+ @rest_class.expects(:port_setting).returns :servset
75
+ Puppet.settings.expects(:value).with(:servset).returns "321"
76
+ @rest_class.port.should == 321
137
77
  end
138
-
139
- describe "when doing a network put" do
140
- before :each do
141
- Net::HTTP.stubs(:start).returns('result')
142
- @details = { :host => '127.0.0.1', :port => 34343 }
143
- @data = { :foo => 'bar' }
144
- @searcher.stubs(:rest_connection_details).returns(@details)
145
- end
146
-
147
- it "should accept a path and data" do
148
- lambda { @search.network_put('foo', @data) }.should_not raise_error(ArgumentError)
149
- end
150
-
151
- it "should require a path and data" do
152
- lambda { @searcher.network_put('foo') }.should raise_error(ArgumentError)
153
- end
154
-
155
- it "should look up connection details" do
156
- @searcher.expects(:rest_connection_details).returns(@details)
157
- @searcher.network_put('foo', @data)
158
- end
159
-
160
- it "should use the appropriate remote server" do
161
- Net::HTTP.expects(:start).with {|host, port| host == @details[:host] }
162
- @searcher.network_put('foo', @data)
163
- end
164
-
165
- it "should use the appropriate remote port" do
166
- Net::HTTP.expects(:start).with {|host, port| port == @details[:port] }
167
- @searcher.network_put('foo', @data)
168
- end
169
-
170
- it "should use the PUT http method" do
171
- @mock_result = stub('mock result', :body => 'result')
172
- @mock_connection = mock('mock http connection', :put => @mock_result)
173
- @searcher.stubs(:network).yields(@mock_connection)
174
- @searcher.network_put('foo', @data)
175
- end
176
-
177
- it "should use the provided path" do
178
- @mock_result = stub('mock result', :body => 'result')
179
- @mock_connection = stub('mock http connection')
180
- @mock_connection.expects(:put).with {|path, data| path == '/foo' }.returns(@mock_result)
181
- @searcher.stubs(:network).yields(@mock_connection)
182
- @searcher.network_put('foo', @data)
183
- end
184
-
185
- it "should use the provided data" do
186
- @mock_result = stub('mock result', :body => 'result')
187
- @mock_connection = stub('mock http connection')
188
- @mock_connection.expects(:put).with {|path, data| data == @data }.returns(@mock_result)
189
- @searcher.stubs(:network).yields(@mock_connection)
190
- @searcher.network_put('foo', @data)
191
- end
192
-
193
- it "should return the results of the PUT request" do
194
- @searcher.network_put('foo', @data).should == 'result'
195
- end
78
+
79
+ it "should default to :port for the port setting" do
80
+ @rest_class.expects(:port_setting).returns nil
81
+ Puppet.settings.expects(:value).with(:masterport).returns "543"
82
+ @rest_class.port.should == 543
83
+ end
84
+
85
+ describe "when deserializing responses" do
86
+ it "should return nil if the response code is 404" do
87
+ response = mock 'response'
88
+ response.expects(:code).returns "404"
89
+
90
+ @searcher.deserialize(response).should be_nil
91
+ end
92
+
93
+ it "should fail if the response code is not in the 200s" do
94
+ @model.expects(:convert_from).never
95
+
96
+ response = mock 'response'
97
+ response.stubs(:code).returns "300"
98
+ response.stubs(:message).returns "There was a problem"
99
+
100
+ lambda { @searcher.deserialize(response) }.should raise_error(Net::HTTPError)
101
+ end
102
+
103
+ it "should return the results of converting from the format specified by the content-type header if the response code is in the 200s" do
104
+ @model.expects(:convert_from).with("myformat", "mydata").returns "myobject"
105
+
106
+ response = mock 'response'
107
+ response.stubs(:[]).with("content-type").returns "myformat"
108
+ response.stubs(:body).returns "mydata"
109
+ response.stubs(:code).returns "200"
110
+
111
+ @searcher.deserialize(response).should == "myobject"
112
+ end
113
+
114
+ it "should convert and return multiple instances if the return code is in the 200s and 'multiple' is specified" do
115
+ @model.expects(:convert_from_multiple).with("myformat", "mydata").returns "myobjects"
116
+
117
+ response = mock 'response'
118
+ response.stubs(:[]).with("content-type").returns "myformat"
119
+ response.stubs(:body).returns "mydata"
120
+ response.stubs(:code).returns "200"
121
+
122
+ @searcher.deserialize(response, true).should == "myobjects"
123
+ end
124
+
125
+ it "should strip the content-type header to keep only the mime-type" do
126
+ @model.expects(:convert_from).with("text/plain", "mydata").returns "myobject"
127
+
128
+ response = mock 'response'
129
+ response.stubs(:[]).with("content-type").returns "text/plain; charset=utf-8"
130
+ response.stubs(:body).returns "mydata"
131
+ response.stubs(:code).returns "200"
132
+
133
+ @searcher.deserialize(response)
134
+ end
135
+ end
136
+
137
+ describe "when creating an HTTP client" do
138
+ before do
139
+ Puppet.settings.stubs(:value).returns("rest_testing")
140
+ end
141
+
142
+ it "should use the class's server and port if the indirection request provides neither" do
143
+ @request = stub 'request', :key => "foo", :server => nil, :port => nil
144
+ @searcher.class.expects(:port).returns 321
145
+ @searcher.class.expects(:server).returns "myserver"
146
+ Puppet::Network::HttpPool.expects(:http_instance).with("myserver", 321).returns "myconn"
147
+ @searcher.network(@request).should == "myconn"
148
+ end
149
+
150
+ it "should use the server from the indirection request if one is present" do
151
+ @request = stub 'request', :key => "foo", :server => "myserver", :port => nil
152
+ @searcher.class.stubs(:port).returns 321
153
+ Puppet::Network::HttpPool.expects(:http_instance).with("myserver", 321).returns "myconn"
154
+ @searcher.network(@request).should == "myconn"
155
+ end
156
+
157
+ it "should use the port from the indirection request if one is present" do
158
+ @request = stub 'request', :key => "foo", :server => nil, :port => 321
159
+ @searcher.class.stubs(:server).returns "myserver"
160
+ Puppet::Network::HttpPool.expects(:http_instance).with("myserver", 321).returns "myconn"
161
+ @searcher.network(@request).should == "myconn"
162
+ end
196
163
  end
197
164
 
198
165
  describe "when doing a find" do
199
- before :each do
200
- @result = { :foo => 'bar'}.to_yaml
201
- @searcher.stubs(:network_fetch).returns(@result) # neuter the network connection
202
- @model.stubs(:from_yaml).returns(@instance)
203
-
204
- @request = stub 'request', :key => 'foo'
205
- end
206
-
207
- it "should look up the model instance over the network" do
208
- @searcher.expects(:network_fetch).returns(@result)
209
- @searcher.find(@request)
210
- end
211
-
212
- it "should look up the model instance using the named indirection" do
213
- @searcher.expects(:network_fetch).with {|path| path =~ %r{^#{@indirection.name.to_s}/} }.returns(@result)
214
- @searcher.find(@request)
215
- end
216
-
217
- it "should look up the model instance using the provided key" do
218
- @searcher.expects(:network_fetch).with {|path| path =~ %r{/foo$} }.returns(@result)
219
- @searcher.find(@request)
220
- end
221
-
222
- it "should deserialize result data to a Model instance" do
223
- @model.expects(:from_yaml)
224
- @searcher.find(@request)
225
- end
226
-
227
- it "should return the deserialized Model instance" do
228
- @searcher.find(@request).should == @instance
229
- end
230
-
231
- it "should return nil when deserialized model instance is nil" do
232
- @model.stubs(:from_yaml).returns(nil)
233
- @searcher.find(@request).should be_nil
234
- end
235
-
236
- it "should generate an error when result data deserializes improperly" do
237
- @model.stubs(:from_yaml).raises(ArgumentError)
238
- lambda { @searcher.find(@request) }.should raise_error(ArgumentError)
239
- end
240
-
241
- it "should generate an error when result data specifies an error" do
242
- @searcher.stubs(:network_fetch).returns(RuntimeError.new("bogus").to_yaml)
243
- lambda { @searcher.find(@request) }.should raise_error(RuntimeError)
244
- end
166
+ before :each do
167
+ @connection = stub('mock http connection', :get => @response)
168
+ @searcher.stubs(:network).returns(@connection) # neuter the network connection
169
+
170
+ # Use a key with spaces, so we can test escaping
171
+ @request = Puppet::Indirector::Request.new(:foo, :find, "foo bar")
172
+ end
173
+
174
+ it "should call the GET http method on a network connection" do
175
+ @searcher.expects(:network).returns @connection
176
+ @connection.expects(:get).returns @response
177
+ @searcher.find(@request)
178
+ end
179
+
180
+ it "should deserialize and return the http response" do
181
+ @connection.expects(:get).returns @response
182
+ @searcher.expects(:deserialize).with(@response).returns "myobject"
183
+
184
+ @searcher.find(@request).should == 'myobject'
185
+ end
186
+
187
+ it "should use the URI generated by the Handler module" do
188
+ @searcher.expects(:indirection2uri).with(@request).returns "/my/uri"
189
+ @connection.expects(:get).with { |path, args| path == "/my/uri" }.returns(@response)
190
+ @searcher.find(@request)
191
+ end
192
+
193
+ it "should provide an Accept header containing the list of supported formats joined with commas" do
194
+ @connection.expects(:get).with { |path, args| args["Accept"] == "supported, formats" }.returns(@response)
195
+
196
+ @searcher.model.expects(:supported_formats).returns %w{supported formats}
197
+ @searcher.find(@request)
198
+ end
199
+
200
+ it "should deserialize and return the network response" do
201
+ @searcher.expects(:deserialize).with(@response).returns @instance
202
+ @searcher.find(@request).should equal(@instance)
203
+ end
204
+
205
+ it "should generate an error when result data deserializes fails" do
206
+ @searcher.expects(:deserialize).raises(ArgumentError)
207
+ lambda { @searcher.find(@request) }.should raise_error(ArgumentError)
208
+ end
245
209
  end
246
210
 
247
211
  describe "when doing a search" do
248
- before :each do
249
- @result = [1, 2].to_yaml
250
- @searcher.stubs(:network_fetch).returns(@result)
251
- @model.stubs(:from_yaml).returns(@instance)
252
-
253
- @request = stub 'request', :key => 'foo'
254
- end
255
-
256
- it "should look up the model data over the network" do
257
- @searcher.expects(:network_fetch).returns(@result)
258
- @searcher.search(@request)
259
- end
260
-
261
- it "should look up the model instance using the named indirection" do
262
- @searcher.expects(:network_fetch).with {|path| path =~ %r{^#{@indirection.name.to_s}s/} }.returns(@result)
263
- @searcher.search(@request)
264
- end
265
-
266
- it "should look up the model instance using the provided key" do
267
- @searcher.expects(:network_fetch).with {|path| path =~ %r{/foo$} }.returns(@result)
268
- @searcher.search(@request)
269
- end
270
-
271
- it "should deserialize result data into a list of Model instances" do
272
- @model.expects(:from_yaml).at_least(2)
273
- @searcher.search(@request)
274
- end
275
-
276
- it "should generate an error when result data deserializes improperly" do
277
- @model.stubs(:from_yaml).raises(ArgumentError)
278
- lambda { @searcher.search(@request) }.should raise_error(ArgumentError)
279
- end
280
-
281
- it "should generate an error when result data specifies an error" do
282
- @searcher.stubs(:network_fetch).returns(RuntimeError.new("bogus").to_yaml)
283
- lambda { @searcher.search(@request) }.should raise_error(RuntimeError)
284
- end
285
- end
286
-
212
+ before :each do
213
+ @connection = stub('mock http connection', :get => @response)
214
+ @searcher.stubs(:network).returns(@connection) # neuter the network connection
215
+
216
+ @model.stubs(:convert_from_multiple)
217
+
218
+ @request = Puppet::Indirector::Request.new(:foo, :search, "foo bar")
219
+ end
220
+
221
+ it "should call the GET http method on a network connection" do
222
+ @searcher.expects(:network).returns @connection
223
+ @connection.expects(:get).returns @response
224
+ @searcher.search(@request)
225
+ end
226
+
227
+ it "should deserialize as multiple instances and return the http response" do
228
+ @connection.expects(:get).returns @response
229
+ @searcher.expects(:deserialize).with(@response, true).returns "myobject"
230
+
231
+ @searcher.search(@request).should == 'myobject'
232
+ end
233
+
234
+ it "should use the URI generated by the Handler module" do
235
+ @searcher.expects(:indirection2uri).with(@request).returns "/mys/uri"
236
+ @connection.expects(:get).with { |path, args| path == "/mys/uri" }.returns(@response)
237
+ @searcher.search(@request)
238
+ end
239
+
240
+ it "should provide an Accept header containing the list of supported formats joined with commas" do
241
+ @connection.expects(:get).with { |path, args| args["Accept"] == "supported, formats" }.returns(@response)
242
+
243
+ @searcher.model.expects(:supported_formats).returns %w{supported formats}
244
+ @searcher.search(@request)
245
+ end
246
+
247
+ it "should return an empty array if serialization returns nil" do
248
+ @model.stubs(:convert_from_multiple).returns nil
249
+
250
+ @searcher.search(@request).should == []
251
+ end
252
+
253
+ it "should generate an error when result data deserializes fails" do
254
+ @searcher.expects(:deserialize).raises(ArgumentError)
255
+ lambda { @searcher.search(@request) }.should raise_error(ArgumentError)
256
+ end
257
+ end
258
+
287
259
  describe "when doing a destroy" do
288
- before :each do
289
- @result = true.to_yaml
290
- @searcher.stubs(:network_delete).returns(@result) # neuter the network connection
291
- @model.stubs(:from_yaml).returns(@instance)
292
-
293
- @request = stub 'request', :key => 'foo'
294
- end
295
-
296
- it "should look up the model instance over the network" do
297
- @searcher.expects(:network_delete).returns(@result)
298
- @searcher.destroy(@request)
299
- end
300
-
301
- it "should look up the model instance using the named indirection" do
302
- @searcher.expects(:network_delete).with {|path| path =~ %r{^#{@indirection.name.to_s}/} }.returns(@result)
303
- @searcher.destroy(@request)
304
- end
305
-
306
- it "should look up the model instance using the provided key" do
307
- @searcher.expects(:network_delete).with {|path| path =~ %r{/foo$} }.returns(@result)
308
- @searcher.destroy(@request)
309
- end
310
-
311
- it "should deserialize result data" do
312
- YAML.expects(:load).with(@result)
313
- @searcher.destroy(@request)
314
- end
315
-
316
- it "should return deserialized result data" do
317
- @searcher.destroy(@request).should == true
318
- end
319
-
320
- it "should generate an error when result data specifies an error" do
321
- @searcher.stubs(:network_delete).returns(RuntimeError.new("bogus").to_yaml)
322
- lambda { @searcher.destroy(@request) }.should raise_error(RuntimeError)
323
- end
260
+ before :each do
261
+ @connection = stub('mock http connection', :delete => @response)
262
+ @searcher.stubs(:network).returns(@connection) # neuter the network connection
263
+
264
+ @request = Puppet::Indirector::Request.new(:foo, :destroy, "foo bar")
265
+ end
266
+
267
+ it "should call the DELETE http method on a network connection" do
268
+ @searcher.expects(:network).returns @connection
269
+ @connection.expects(:delete).returns @response
270
+ @searcher.destroy(@request)
271
+ end
272
+
273
+ it "should fail if any options are provided, since DELETE apparently does not support query options" do
274
+ @request.stubs(:options).returns(:one => "two", :three => "four")
275
+
276
+ lambda { @searcher.destroy(@request) }.should raise_error(ArgumentError)
277
+ end
278
+
279
+ it "should deserialize and return the http response" do
280
+ @connection.expects(:delete).returns @response
281
+ @searcher.expects(:deserialize).with(@response).returns "myobject"
282
+
283
+ @searcher.destroy(@request).should == 'myobject'
284
+ end
285
+
286
+ it "should use the URI generated by the Handler module" do
287
+ @searcher.expects(:indirection2uri).with(@request).returns "/my/uri"
288
+ @connection.expects(:delete).with { |path, args| path == "/my/uri" }.returns(@response)
289
+ @searcher.destroy(@request)
290
+ end
291
+
292
+ it "should not include the query string" do
293
+ @connection.stubs(:delete).returns @response
294
+ @searcher.destroy(@request)
295
+ end
296
+
297
+ it "should provide an Accept header containing the list of supported formats joined with commas" do
298
+ @connection.expects(:delete).with { |path, args| args["Accept"] == "supported, formats" }.returns(@response)
299
+
300
+ @searcher.model.expects(:supported_formats).returns %w{supported formats}
301
+ @searcher.destroy(@request)
302
+ end
303
+
304
+ it "should deserialize and return the network response" do
305
+ @searcher.expects(:deserialize).with(@response).returns @instance
306
+ @searcher.destroy(@request).should equal(@instance)
307
+ end
308
+
309
+ it "should generate an error when result data deserializes fails" do
310
+ @searcher.expects(:deserialize).raises(ArgumentError)
311
+ lambda { @searcher.destroy(@request) }.should raise_error(ArgumentError)
312
+ end
324
313
  end
325
314
 
326
315
  describe "when doing a save" do
327
- before :each do
328
- @result = { :foo => 'bar'}.to_yaml
329
- @searcher.stubs(:network_put).returns(@result) # neuter the network connection
330
- @model.stubs(:from_yaml).returns(@instance)
331
-
332
- @request = stub 'request', :instance => @instance
333
- end
334
-
335
- it "should save the model instance over the network" do
336
- @searcher.expects(:network_put).returns(@result)
337
- @searcher.save(@request)
338
- end
339
-
340
- it "should save the model instance using the named indirection" do
341
- @searcher.expects(:network_put).with do |path, data|
342
- path =~ %r{^#{@indirection.name.to_s}/} and
343
- data == @instance.to_yaml
344
- end.returns(@result)
345
- @searcher.save(@request)
346
- end
347
-
348
- it "should deserialize result data to a Model instance" do
349
- @model.expects(:from_yaml)
350
- @searcher.save(@request)
351
- end
352
-
353
- it "should return the resulting deserialized Model instance" do
354
- @searcher.save(@request).should == @instance
355
- end
356
-
357
- it "should return nil when deserialized model instance is nil" do
358
- @model.stubs(:from_yaml).returns(nil)
359
- @searcher.save(@request).should be_nil
360
- end
361
-
362
- it "should generate an error when result data deserializes improperly" do
363
- @model.stubs(:from_yaml).raises(ArgumentError)
364
- lambda { @searcher.save(@request) }.should raise_error(ArgumentError)
365
- end
366
-
367
- it "should generate an error when result data specifies an error" do
368
- @searcher.stubs(:network_put).returns(RuntimeError.new("bogus").to_yaml)
369
- lambda { @searcher.save(@request) }.should raise_error(RuntimeError)
370
- end
316
+ before :each do
317
+ @connection = stub('mock http connection', :put => @response)
318
+ @searcher.stubs(:network).returns(@connection) # neuter the network connection
319
+
320
+ @instance = stub 'instance', :render => "mydata", :mime => "mime"
321
+ @request = Puppet::Indirector::Request.new(:foo, :save, "foo bar")
322
+ @request.instance = @instance
323
+ end
324
+
325
+ it "should call the PUT http method on a network connection" do
326
+ @searcher.expects(:network).returns @connection
327
+ @connection.expects(:put).returns @response
328
+ @searcher.save(@request)
329
+ end
330
+
331
+ it "should fail if any options are provided, since DELETE apparently does not support query options" do
332
+ @request.stubs(:options).returns(:one => "two", :three => "four")
333
+
334
+ lambda { @searcher.save(@request) }.should raise_error(ArgumentError)
335
+ end
336
+
337
+ it "should use the URI generated by the Handler module" do
338
+ @searcher.expects(:indirection2uri).with(@request).returns "/my/uri"
339
+ @connection.expects(:put).with { |path, args| path == "/my/uri" }.returns(@response)
340
+ @searcher.save(@request)
341
+ end
342
+
343
+ it "should serialize the instance using the default format and pass the result as the body of the request" do
344
+ @instance.expects(:render).returns "serial_instance"
345
+ @connection.expects(:put).with { |path, data, args| data == "serial_instance" }.returns @response
346
+
347
+ @searcher.save(@request)
348
+ end
349
+
350
+ it "should deserialize and return the http response" do
351
+ @connection.expects(:put).returns @response
352
+ @searcher.expects(:deserialize).with(@response).returns "myobject"
353
+
354
+ @searcher.save(@request).should == 'myobject'
355
+ end
356
+
357
+ it "should provide an Accept header containing the list of supported formats joined with commas" do
358
+ @connection.expects(:put).with { |path, data, args| args["Accept"] == "supported, formats" }.returns(@response)
359
+
360
+ @searcher.model.expects(:supported_formats).returns %w{supported formats}
361
+ @searcher.save(@request)
362
+ end
363
+
364
+ it "should provide a Content-Type header containing the mime-type of the sent object" do
365
+ @connection.expects(:put).with { |path, data, args| args['Content-Type'] == "mime" }.returns(@response)
366
+
367
+ @instance.expects(:mime).returns "mime"
368
+ @searcher.save(@request)
369
+ end
370
+
371
+ it "should deserialize and return the network response" do
372
+ @searcher.expects(:deserialize).with(@response).returns @instance
373
+ @searcher.save(@request).should equal(@instance)
374
+ end
375
+
376
+ it "should generate an error when result data deserializes fails" do
377
+ @searcher.expects(:deserialize).raises(ArgumentError)
378
+ lambda { @searcher.save(@request) }.should raise_error(ArgumentError)
379
+ end
371
380
  end
372
381
  end