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
@@ -6,311 +6,529 @@
6
6
  require File.dirname(__FILE__) + '/../../spec_helper'
7
7
  require 'puppet/network/server'
8
8
 
9
- describe Puppet::Network::Server, "when initializing" do
9
+ describe Puppet::Network::Server do
10
10
  before do
11
11
  @mock_http_server_class = mock('http server class')
12
- Puppet.stubs(:[]).with(:servertype).returns(:suparserver)
12
+ Puppet.settings.stubs(:use)
13
+ Puppet.settings.stubs(:value).with(:name).returns("me")
14
+ Puppet.settings.stubs(:value).with(:servertype).returns(:suparserver)
15
+ Puppet.settings.stubs(:value).with(:bindaddress).returns("")
16
+ Puppet.settings.stubs(:value).with(:masterport).returns(8140)
13
17
  Puppet::Network::HTTP.stubs(:server_class_by_type).returns(@mock_http_server_class)
14
- end
15
-
16
- it "should allow specifying a listening address" do
17
- Puppet.stubs(:[]).with(:masterport).returns('')
18
- @server = Puppet::Network::Server.new(:address => "127.0.0.1")
19
- @server.address.should == "127.0.0.1"
20
- end
21
-
22
- it "should allow specifying a listening port" do
23
- Puppet.stubs(:[]).with(:bindaddress).returns('')
18
+ Puppet.settings.stubs(:value).with(:servertype).returns(:suparserver)
24
19
  @server = Puppet::Network::Server.new(:port => 31337)
25
- @server.port.should == 31337
26
- end
27
-
28
- it "should use the Puppet configurator to find a default listening address" do
29
- Puppet.stubs(:[]).with(:masterport).returns('')
30
- Puppet.expects(:[]).with(:bindaddress).returns("10.0.0.1")
31
- @server = Puppet::Network::Server.new
32
- @server.address.should == "10.0.0.1"
33
20
  end
34
21
 
35
- it "should use the Puppet configurator to find a default listening port" do
36
- Puppet.stubs(:[]).with(:bindaddress).returns('')
37
- Puppet.expects(:[]).with(:masterport).returns(6667)
38
- @server = Puppet::Network::Server.new
39
- @server.port.should == 6667
40
- end
22
+ describe "when initializing" do
23
+ before do
24
+ Puppet::Indirector::Indirection.stubs(:model).returns mock('indirection')
25
+ Puppet::Network::Handler.stubs(:handler).returns mock('xmlrpc_handler')
26
+ Puppet.settings.stubs(:value).with(:bindaddress).returns("")
27
+ Puppet.settings.stubs(:value).with(:masterport).returns('')
28
+ end
41
29
 
42
- it "should fail to initialize if no listening address can be found" do
43
- Puppet.stubs(:[]).with(:masterport).returns(6667)
44
- Puppet.stubs(:[]).with(:bindaddress).returns(nil)
45
- Proc.new { Puppet::Network::Server.new }.should raise_error(ArgumentError)
46
- end
47
-
48
- it "should fail to initialize if no listening port can be found" do
49
- Puppet.stubs(:[]).with(:bindaddress).returns("127.0.0.1")
50
- Puppet.stubs(:[]).with(:masterport).returns(nil)
51
- Proc.new { Puppet::Network::Server.new }.should raise_error(ArgumentError)
52
- end
30
+ it 'should fail if an unknown option is provided' do
31
+ lambda { Puppet::Network::Server.new(:foo => 31337) }.should raise_error(ArgumentError)
32
+ end
53
33
 
54
- it "should use the Puppet configurator to determine which HTTP server will be used to provide access to clients" do
55
- Puppet.expects(:[]).with(:servertype).returns(:suparserver)
56
- @server = Puppet::Network::Server.new(:address => "127.0.0.1", :port => 31337)
57
- @server.server_type.should == :suparserver
58
- end
59
-
60
- it "should fail to initialize if there is no HTTP server known to the Puppet configurator" do
61
- Puppet.expects(:[]).with(:servertype).returns(nil)
62
- Proc.new { Puppet::Network::Server.new(:address => "127.0.0.1", :port => 31337) }.should raise_error
63
- end
64
-
65
- it "should ask the Puppet::Network::HTTP class to fetch the proper HTTP server class" do
66
- Puppet::Network::HTTP.expects(:server_class_by_type).with(:suparserver).returns(@mock_http_server_class)
67
- @server = Puppet::Network::Server.new(:address => "127.0.0.1", :port => 31337)
68
- end
69
-
70
- it "should fail if the HTTP server class is unknown" do
71
- Puppet::Network::HTTP.stubs(:server_class_by_type).returns(nil)
72
- Proc.new { Puppet::Network::Server.new(:address => "127.0.0.1", :port => 31337) }.should raise_error(ArgumentError)
73
- end
74
-
75
- it "should allow registering indirections" do
76
- @server = Puppet::Network::Server.new(:address => "127.0.0.1", :port => 31337, :handlers => [ :foo, :bar, :baz])
77
- Proc.new { @server.unregister(:foo, :bar, :baz) }.should_not raise_error
78
- end
79
-
80
- it "should not be listening after initialization" do
81
- Puppet::Network::Server.new(:address => "127.0.0.1", :port => 31337).should_not be_listening
82
- end
83
- end
34
+ it "should allow specifying a listening port" do
35
+ Puppet.settings.stubs(:value).with(:bindaddress).returns('')
36
+ @server = Puppet::Network::Server.new(:port => 31337)
37
+ @server.port.should == 31337
38
+ end
84
39
 
85
- describe Puppet::Network::Server, "in general" do
86
- before do
87
- @mock_http_server_class = mock('http server class')
88
- Puppet::Network::HTTP.stubs(:server_class_by_type).returns(@mock_http_server_class)
89
- Puppet.stubs(:[]).with(:servertype).returns(:suparserver)
90
- @server = Puppet::Network::Server.new(:address => "127.0.0.1", :port => 31337)
91
- end
92
-
93
- it "should allow registering an indirection for client access by specifying its indirection name" do
94
- Proc.new { @server.register(:foo) }.should_not raise_error
95
- end
96
-
97
- it "should require at least one indirection name when registering indirections for client access" do
98
- Proc.new { @server.register }.should raise_error(ArgumentError)
99
- end
100
-
101
- it "should allow for numerous indirections to be registered at once for client access" do
102
- Proc.new { @server.register(:foo, :bar, :baz) }.should_not raise_error
103
- end
40
+ it "should use the :bindaddress setting to determine the default listening address" do
41
+ Puppet.settings.stubs(:value).with(:masterport).returns('')
42
+ Puppet.settings.expects(:value).with(:bindaddress).returns("10.0.0.1")
43
+ @server = Puppet::Network::Server.new
44
+ @server.address.should == "10.0.0.1"
45
+ end
46
+
47
+ it "should set the bind address to '127.0.0.1' if the default address is an empty string and the server type is mongrel" do
48
+ Puppet.settings.stubs(:value).with(:servertype).returns("mongrel")
49
+ Puppet.settings.expects(:value).with(:bindaddress).returns("")
50
+ @server = Puppet::Network::Server.new
51
+ @server.address.should == '127.0.0.1'
52
+ end
53
+
54
+ it "should set the bind address to '0.0.0.0' if the default address is an empty string and the server type is webrick" do
55
+ Puppet.settings.stubs(:value).with(:servertype).returns("webrick")
56
+ Puppet.settings.expects(:value).with(:bindaddress).returns("")
57
+ @server = Puppet::Network::Server.new
58
+ @server.address.should == '0.0.0.0'
59
+ end
60
+
61
+ it "should use the Puppet configurator to find a default listening port" do
62
+ Puppet.settings.stubs(:value).with(:bindaddress).returns('')
63
+ Puppet.settings.expects(:value).with(:masterport).returns(6667)
64
+ @server = Puppet::Network::Server.new
65
+ @server.port.should == 6667
66
+ end
67
+
68
+ it "should fail to initialize if no listening port can be found" do
69
+ Puppet.settings.stubs(:value).with(:bindaddress).returns("127.0.0.1")
70
+ Puppet.settings.stubs(:value).with(:masterport).returns(nil)
71
+ lambda { Puppet::Network::Server.new }.should raise_error(ArgumentError)
72
+ end
73
+
74
+ it "should use the Puppet configurator to determine which HTTP server will be used to provide access to clients" do
75
+ Puppet.settings.expects(:value).with(:servertype).returns(:suparserver)
76
+ @server = Puppet::Network::Server.new(:port => 31337)
77
+ @server.server_type.should == :suparserver
78
+ end
79
+
80
+ it "should fail to initialize if there is no HTTP server known to the Puppet configurator" do
81
+ Puppet.settings.expects(:value).with(:servertype).returns(nil)
82
+ lambda { Puppet::Network::Server.new(:port => 31337) }.should raise_error
83
+ end
84
+
85
+ it "should ask the Puppet::Network::HTTP class to fetch the proper HTTP server class" do
86
+ Puppet::Network::HTTP.expects(:server_class_by_type).with(:suparserver).returns(@mock_http_server_class)
87
+ @server = Puppet::Network::Server.new(:port => 31337)
88
+ end
89
+
90
+ it "should fail if the HTTP server class is unknown" do
91
+ Puppet::Network::HTTP.stubs(:server_class_by_type).returns(nil)
92
+ lambda { Puppet::Network::Server.new(:port => 31337) }.should raise_error(ArgumentError)
93
+ end
104
94
 
105
- it "should allow the use of indirection names to specify which indirections are to be no longer accessible to clients" do
106
- @server.register(:foo)
107
- Proc.new { @server.unregister(:foo) }.should_not raise_error
95
+ it "should allow registering REST handlers" do
96
+ @server = Puppet::Network::Server.new(:port => 31337, :handlers => [ :foo, :bar, :baz])
97
+ lambda { @server.unregister(:foo, :bar, :baz) }.should_not raise_error
98
+ end
99
+
100
+ it "should allow registering XMLRPC handlers" do
101
+ @server = Puppet::Network::Server.new(:port => 31337, :xmlrpc_handlers => [ :foo, :bar, :baz])
102
+ lambda { @server.unregister_xmlrpc(:foo, :bar, :baz) }.should_not raise_error
103
+ end
104
+
105
+ it "should not be listening after initialization" do
106
+ Puppet::Network::Server.new(:port => 31337).should_not be_listening
107
+ end
108
+
109
+ it "should use the :main setting section" do
110
+ Puppet.settings.expects(:use).with { |*args| args.include?(:main) }
111
+ @server = Puppet::Network::Server.new(:port => 31337, :xmlrpc_handlers => [ :foo, :bar, :baz])
112
+ end
113
+
114
+ it "should use the Puppet[:name] setting section" do
115
+ Puppet.settings.expects(:value).with(:name).returns "me"
116
+ Puppet.settings.expects(:use).with { |*args| args.include?("me") }
117
+
118
+ @server = Puppet::Network::Server.new(:port => 31337, :xmlrpc_handlers => [ :foo, :bar, :baz])
119
+ end
108
120
  end
109
121
 
110
- it "should leave other indirections accessible to clients when turning off indirections" do
111
- @server.register(:foo, :bar)
112
- @server.unregister(:foo)
113
- Proc.new { @server.unregister(:bar)}.should_not raise_error
122
+ # We don't test the method, because it's too much of a Unix-y pain.
123
+ it "should be able to daemonize" do
124
+ @server.should respond_to(:daemonize)
114
125
  end
115
-
116
- it "should allow specifying numerous indirections which are to be no longer accessible to clients" do
117
- @server.register(:foo, :bar)
118
- Proc.new { @server.unregister(:foo, :bar) }.should_not raise_error
126
+
127
+ describe "when being started" do
128
+ before do
129
+ @server.stubs(:listen)
130
+ @server.stubs(:create_pidfile)
131
+ end
132
+
133
+ it "should listen" do
134
+ @server.expects(:listen)
135
+ @server.start
136
+ end
137
+
138
+ it "should create its PID file" do
139
+ @server.expects(:create_pidfile)
140
+ @server.start
141
+ end
119
142
  end
120
-
121
- it "should not turn off any indirections if given unknown indirection names to turn off" do
122
- @server.register(:foo, :bar)
123
- Proc.new { @server.unregister(:foo, :bar, :baz) }.should raise_error(ArgumentError)
124
- Proc.new { @server.unregister(:foo, :bar) }.should_not raise_error
143
+
144
+ describe "when being stopped" do
145
+ before do
146
+ @server.stubs(:unlisten)
147
+ @server.stubs(:remove_pidfile)
148
+ end
149
+
150
+ it "should unlisten" do
151
+ @server.expects(:unlisten)
152
+ @server.stop
153
+ end
154
+
155
+ it "should remove its PID file" do
156
+ @server.expects(:remove_pidfile)
157
+ @server.stop
158
+ end
125
159
  end
126
-
127
- it "should not allow turning off unknown indirection names" do
128
- @server.register(:foo, :bar)
129
- Proc.new { @server.unregister(:baz) }.should raise_error(ArgumentError)
160
+
161
+ describe "when creating its pidfile" do
162
+ it "should use an exclusive mutex" do
163
+ Puppet.settings.expects(:value).with(:name).returns "me"
164
+
165
+ sync = mock 'sync'
166
+ Puppet::Util.expects(:sync).with("me").returns sync
167
+
168
+ sync.expects(:synchronize).with(Sync::EX)
169
+ @server.create_pidfile
170
+ end
171
+
172
+ it "should lock the pidfile using the Pidlock class" do
173
+ pidfile = mock 'pidfile'
174
+
175
+ Puppet.settings.stubs(:value).with(:name).returns "eh"
176
+ Puppet.settings.expects(:value).with(:pidfile).returns "/my/file"
177
+
178
+ Puppet::Util::Pidlock.expects(:new).with("/my/file").returns pidfile
179
+
180
+ pidfile.expects(:lock).returns true
181
+ @server.create_pidfile
182
+ end
183
+
184
+ it "should fail if it cannot lock" do
185
+ pidfile = mock 'pidfile'
186
+
187
+ Puppet.settings.stubs(:value).with(:name).returns "eh"
188
+ Puppet.settings.stubs(:value).with(:pidfile).returns "/my/file"
189
+
190
+ Puppet::Util::Pidlock.expects(:new).with("/my/file").returns pidfile
191
+
192
+ pidfile.expects(:lock).returns false
193
+
194
+ lambda { @server.create_pidfile }.should raise_error
195
+ end
130
196
  end
131
-
132
- it "should disable client access immediately when turning off indirections" do
133
- @server.register(:foo, :bar)
134
- @server.unregister(:foo)
135
- Proc.new { @server.unregister(:foo) }.should raise_error(ArgumentError)
197
+
198
+ describe "when removing its pidfile" do
199
+ it "should use an exclusive mutex" do
200
+ Puppet.settings.expects(:value).with(:name).returns "me"
201
+
202
+ sync = mock 'sync'
203
+ Puppet::Util.expects(:sync).with("me").returns sync
204
+
205
+ sync.expects(:synchronize).with(Sync::EX)
206
+ @server.remove_pidfile
207
+ end
208
+
209
+ it "should do nothing if the pidfile is not present" do
210
+ pidfile = mock 'pidfile', :locked? => false
211
+ Puppet::Util::Pidlock.expects(:new).with("/my/file").returns pidfile
212
+
213
+ Puppet.settings.stubs(:value).with(:name).returns "eh"
214
+ Puppet.settings.stubs(:value).with(:pidfile).returns "/my/file"
215
+
216
+ pidfile.expects(:unlock).never
217
+ @server.remove_pidfile
218
+ end
219
+
220
+ it "should unlock the pidfile using the Pidlock class" do
221
+ pidfile = mock 'pidfile', :locked? => true
222
+ Puppet::Util::Pidlock.expects(:new).with("/my/file").returns pidfile
223
+ pidfile.expects(:unlock).returns true
224
+
225
+ Puppet.settings.stubs(:value).with(:name).returns "eh"
226
+ Puppet.settings.stubs(:value).with(:pidfile).returns "/my/file"
227
+
228
+ @server.remove_pidfile
229
+ end
230
+
231
+ it "should warn if it cannot remove the pidfile" do
232
+ pidfile = mock 'pidfile', :locked? => true
233
+ Puppet::Util::Pidlock.expects(:new).with("/my/file").returns pidfile
234
+ pidfile.expects(:unlock).returns false
235
+
236
+ Puppet.settings.stubs(:value).with(:name).returns "eh"
237
+ Puppet.settings.stubs(:value).with(:pidfile).returns "/my/file"
238
+
239
+ Puppet.expects :err
240
+ @server.remove_pidfile
241
+ end
136
242
  end
137
-
138
- it "should allow turning off all indirections at once" do
139
- @server.register(:foo, :bar)
140
- @server.unregister
141
- [ :foo, :bar, :baz].each do |indirection|
142
- Proc.new { @server.unregister(indirection) }.should raise_error(ArgumentError)
243
+
244
+ describe "when managing indirection registrations" do
245
+ before do
246
+ Puppet::Indirector::Indirection.stubs(:model).returns mock('indirection')
247
+ end
248
+
249
+ it "should allow registering an indirection for client access by specifying its indirection name" do
250
+ lambda { @server.register(:foo) }.should_not raise_error
251
+ end
252
+
253
+ it "should require that the indirection be valid" do
254
+ Puppet::Indirector::Indirection.expects(:model).with(:foo).returns nil
255
+ lambda { @server.register(:foo) }.should raise_error(ArgumentError)
256
+ end
257
+
258
+ it "should require at least one indirection name when registering indirections for client access" do
259
+ lambda { @server.register }.should raise_error(ArgumentError)
260
+ end
261
+
262
+ it "should allow for numerous indirections to be registered at once for client access" do
263
+ lambda { @server.register(:foo, :bar, :baz) }.should_not raise_error
264
+ end
265
+
266
+ it "should allow the use of indirection names to specify which indirections are to be no longer accessible to clients" do
267
+ @server.register(:foo)
268
+ lambda { @server.unregister(:foo) }.should_not raise_error
269
+ end
270
+
271
+ it "should leave other indirections accessible to clients when turning off indirections" do
272
+ @server.register(:foo, :bar)
273
+ @server.unregister(:foo)
274
+ lambda { @server.unregister(:bar)}.should_not raise_error
275
+ end
276
+
277
+ it "should allow specifying numerous indirections which are to be no longer accessible to clients" do
278
+ @server.register(:foo, :bar)
279
+ lambda { @server.unregister(:foo, :bar) }.should_not raise_error
280
+ end
281
+
282
+ it "should not turn off any indirections if given unknown indirection names to turn off" do
283
+ @server.register(:foo, :bar)
284
+ lambda { @server.unregister(:foo, :bar, :baz) }.should raise_error(ArgumentError)
285
+ lambda { @server.unregister(:foo, :bar) }.should_not raise_error
286
+ end
287
+
288
+ it "should not allow turning off unknown indirection names" do
289
+ @server.register(:foo, :bar)
290
+ lambda { @server.unregister(:baz) }.should raise_error(ArgumentError)
291
+ end
292
+
293
+ it "should disable client access immediately when turning off indirections" do
294
+ @server.register(:foo, :bar)
295
+ @server.unregister(:foo)
296
+ lambda { @server.unregister(:foo) }.should raise_error(ArgumentError)
297
+ end
298
+
299
+ it "should allow turning off all indirections at once" do
300
+ @server.register(:foo, :bar)
301
+ @server.unregister
302
+ [ :foo, :bar, :baz].each do |indirection|
303
+ lambda { @server.unregister(indirection) }.should raise_error(ArgumentError)
304
+ end
143
305
  end
144
306
  end
145
-
307
+
146
308
  it "should provide a means of determining whether it is listening" do
147
309
  @server.should respond_to(:listening?)
148
310
  end
149
-
311
+
150
312
  it "should provide a means of determining which HTTP server will be used to provide access to clients" do
151
313
  @server.server_type.should == :suparserver
152
314
  end
153
-
154
- it "should allow for multiple configurations, each handling different indirections" do
155
- @server2 = Puppet::Network::Server.new(:address => "127.0.0.1", :port => 31337)
156
- @server.register(:foo, :bar)
157
- @server2.register(:foo, :xyzzy)
158
- @server.unregister(:foo, :bar)
159
- @server2.unregister(:foo, :xyzzy)
160
- Proc.new { @server.unregister(:xyzzy) }.should raise_error(ArgumentError)
161
- Proc.new { @server2.unregister(:bar) }.should raise_error(ArgumentError)
162
- end
163
315
 
164
316
  it "should provide a means of determining which protocols are in use" do
165
317
  @server.should respond_to(:protocols)
166
318
  end
167
-
168
- it "should only support the REST protocol at this time" do
169
- @server.protocols.should == [ :rest ]
319
+
320
+ it "should set the protocols to :rest and :xmlrpc" do
321
+ @server.protocols.should == [ :rest, :xmlrpc ]
170
322
  end
171
-
323
+
172
324
  it "should provide a means of determining the listening address" do
173
325
  @server.address.should == "127.0.0.1"
174
326
  end
175
-
327
+
176
328
  it "should provide a means of determining the listening port" do
177
329
  @server.port.should == 31337
178
330
  end
179
- end
180
331
 
181
- describe Puppet::Network::Server, "when listening is off" do
182
- before do
183
- @mock_http_server_class = mock('http server class')
184
- Puppet::Network::HTTP.stubs(:server_class_by_type).returns(@mock_http_server_class)
185
- Puppet.stubs(:[]).with(:servertype).returns(:suparserver)
186
- @server = Puppet::Network::Server.new(:address => "127.0.0.1", :port => 31337)
187
- @mock_http_server = mock('http server')
188
- @mock_http_server.stubs(:listen)
189
- @server.stubs(:http_server).returns(@mock_http_server)
190
- end
332
+ it "should allow for multiple configurations, each handling different indirections" do
333
+ Puppet::Indirector::Indirection.stubs(:model).returns mock('indirection')
191
334
 
192
- it "should indicate that it is not listening" do
193
- @server.should_not be_listening
194
- end
195
-
196
- it "should not allow listening to be turned off" do
197
- Proc.new { @server.unlisten }.should raise_error(RuntimeError)
198
- end
199
-
200
- it "should allow listening to be turned on" do
201
- Proc.new { @server.listen }.should_not raise_error
335
+ @server2 = Puppet::Network::Server.new(:port => 31337)
336
+ @server.register(:foo, :bar)
337
+ @server2.register(:foo, :xyzzy)
338
+ @server.unregister(:foo, :bar)
339
+ @server2.unregister(:foo, :xyzzy)
340
+ lambda { @server.unregister(:xyzzy) }.should raise_error(ArgumentError)
341
+ lambda { @server2.unregister(:bar) }.should raise_error(ArgumentError)
202
342
  end
203
-
204
- end
205
343
 
206
- describe Puppet::Network::Server, "when listening is on" do
207
- before do
208
- @mock_http_server_class = mock('http server class')
209
- Puppet::Network::HTTP.stubs(:server_class_by_type).returns(@mock_http_server_class)
210
- Puppet.stubs(:[]).with(:servertype).returns(:suparserver)
211
- @server = Puppet::Network::Server.new(:address => "127.0.0.1", :port => 31337)
212
- @mock_http_server = mock('http server')
213
- @mock_http_server.stubs(:listen)
214
- @mock_http_server.stubs(:unlisten)
215
- @server.stubs(:http_server).returns(@mock_http_server)
216
- @server.listen
217
- end
218
-
219
- it "should indicate that listening is turned off" do
220
- @server.should be_listening
221
- end
222
-
223
- it "should not allow listening to be turned on" do
224
- Proc.new { @server.listen }.should raise_error(RuntimeError)
225
- end
226
-
227
- it "should allow listening to be turned off" do
228
- Proc.new { @server.unlisten }.should_not raise_error
229
- end
230
- end
231
-
232
- describe Puppet::Network::Server, "when listening is being turned on" do
233
- before do
234
- @mock_http_server_class = mock('http server class')
235
- Puppet::Network::HTTP.stubs(:server_class_by_type).returns(@mock_http_server_class)
236
- Puppet.stubs(:[]).with(:servertype).returns(:suparserver)
237
- @server = Puppet::Network::Server.new(:address => "127.0.0.1", :port => 31337, :handlers => [:node])
238
- @mock_http_server = mock('http server')
239
- @mock_http_server.stubs(:listen)
240
- end
344
+ describe "when managing xmlrpc registrations" do
345
+ before do
346
+ Puppet::Network::Handler.stubs(:handler).returns mock('xmlrpc_handler')
347
+ end
241
348
 
242
- it "should fetch an instance of an HTTP server" do
243
- @server.stubs(:http_server_class).returns(@mock_http_server_class)
244
- @mock_http_server_class.expects(:new).returns(@mock_http_server)
245
- @server.listen
246
- end
349
+ it "should allow registering an xmlrpc handler by specifying its namespace" do
350
+ lambda { @server.register_xmlrpc(:foo) }.should_not raise_error
351
+ end
247
352
 
248
- it "should cause the HTTP server to listen" do
249
- @server.stubs(:http_server).returns(@mock_http_server)
250
- @mock_http_server.expects(:listen)
251
- @server.listen
252
- end
253
-
254
- it "should pass the listening address to the HTTP server" do
255
- @server.stubs(:http_server).returns(@mock_http_server)
256
- @mock_http_server.expects(:listen).with do |args|
257
- args[:address] == '127.0.0.1'
258
- end
259
- @server.listen
260
- end
261
-
262
- it "should pass the listening port to the HTTP server" do
263
- @server.stubs(:http_server).returns(@mock_http_server)
264
- @mock_http_server.expects(:listen).with do |args|
265
- args[:port] == 31337
266
- end
267
- @server.listen
268
- end
269
-
270
- it "should pass a list of handlers to the HTTP server" do
271
- @server.stubs(:http_server).returns(@mock_http_server)
272
- @mock_http_server.expects(:listen).with do |args|
273
- args[:handlers] == [ :node ]
274
- end
275
- @server.listen
276
- end
277
-
278
- it "should pass a list of protocols to the HTTP server" do
279
- @server.stubs(:http_server).returns(@mock_http_server)
280
- @mock_http_server.expects(:listen).with do |args|
281
- args[:protocols] == [ :rest ]
282
- end
283
- @server.listen
353
+ it "should require that the xmlrpc namespace be valid" do
354
+ Puppet::Network::Handler.stubs(:handler).returns nil
355
+
356
+ lambda { @server.register_xmlrpc(:foo) }.should raise_error(ArgumentError)
357
+ end
358
+
359
+ it "should require at least one namespace" do
360
+ lambda { @server.register_xmlrpc() }.should raise_error(ArgumentError)
361
+ end
362
+
363
+ it "should allow multiple namespaces to be registered at once" do
364
+ lambda { @server.register_xmlrpc(:foo, :bar) }.should_not raise_error
365
+ end
366
+
367
+ it "should allow the use of namespaces to specify which are no longer accessible to clients" do
368
+ @server.register_xmlrpc(:foo, :bar)
369
+ end
370
+
371
+ it "should leave other namespaces accessible to clients when turning off xmlrpc namespaces" do
372
+ @server.register_xmlrpc(:foo, :bar)
373
+ @server.unregister_xmlrpc(:foo)
374
+ lambda { @server.unregister_xmlrpc(:bar)}.should_not raise_error
375
+ end
376
+
377
+ it "should allow specifying numerous namespaces which are to be no longer accessible to clients" do
378
+ @server.register_xmlrpc(:foo, :bar)
379
+ lambda { @server.unregister_xmlrpc(:foo, :bar) }.should_not raise_error
380
+ end
381
+
382
+ it "should not turn off any indirections if given unknown namespaces to turn off" do
383
+ @server.register_xmlrpc(:foo, :bar)
384
+ lambda { @server.unregister_xmlrpc(:foo, :bar, :baz) }.should raise_error(ArgumentError)
385
+ lambda { @server.unregister_xmlrpc(:foo, :bar) }.should_not raise_error
386
+ end
387
+
388
+ it "should not allow turning off unknown namespaces" do
389
+ @server.register_xmlrpc(:foo, :bar)
390
+ lambda { @server.unregister_xmlrpc(:baz) }.should raise_error(ArgumentError)
391
+ end
392
+
393
+ it "should disable client access immediately when turning off namespaces" do
394
+ @server.register_xmlrpc(:foo, :bar)
395
+ @server.unregister_xmlrpc(:foo)
396
+ lambda { @server.unregister_xmlrpc(:foo) }.should raise_error(ArgumentError)
397
+ end
398
+
399
+ it "should allow turning off all namespaces at once" do
400
+ @server.register_xmlrpc(:foo, :bar)
401
+ @server.unregister_xmlrpc
402
+ [ :foo, :bar, :baz].each do |indirection|
403
+ lambda { @server.unregister_xmlrpc(indirection) }.should raise_error(ArgumentError)
404
+ end
405
+ end
284
406
  end
285
- end
286
407
 
287
- describe Puppet::Network::Server, "when listening is being turned off" do
288
- before do
289
- @mock_http_server_class = mock('http server class')
290
- Puppet::Network::HTTP.stubs(:server_class_by_type).returns(@mock_http_server_class)
291
- Puppet.stubs(:[]).with(:servertype).returns(:suparserver)
292
- @server = Puppet::Network::Server.new(:address => "127.0.0.1", :port => 31337)
293
- @mock_http_server = mock('http server')
294
- @mock_http_server.stubs(:listen)
295
- @server.stubs(:http_server).returns(@mock_http_server)
296
- @server.listen
408
+ describe "when listening is off" do
409
+ before do
410
+ @mock_http_server = mock('http server')
411
+ @mock_http_server.stubs(:listen)
412
+ @server.stubs(:http_server).returns(@mock_http_server)
413
+ end
414
+
415
+ it "should indicate that it is not listening" do
416
+ @server.should_not be_listening
417
+ end
418
+
419
+ it "should not allow listening to be turned off" do
420
+ lambda { @server.unlisten }.should raise_error(RuntimeError)
421
+ end
422
+
423
+ it "should allow listening to be turned on" do
424
+ lambda { @server.listen }.should_not raise_error
425
+ end
426
+
297
427
  end
298
428
 
299
- it "should cause the HTTP server to stop listening when listening is turned off" do
300
- @mock_http_server.expects(:unlisten)
301
- @server.unlisten
429
+ describe "when listening is on" do
430
+ before do
431
+ @mock_http_server = mock('http server')
432
+ @mock_http_server.stubs(:listen)
433
+ @mock_http_server.stubs(:unlisten)
434
+ @server.stubs(:http_server).returns(@mock_http_server)
435
+ @server.listen
436
+ end
437
+
438
+ it "should indicate that it is listening" do
439
+ @server.should be_listening
440
+ end
441
+
442
+ it "should not allow listening to be turned on" do
443
+ lambda { @server.listen }.should raise_error(RuntimeError)
444
+ end
445
+
446
+ it "should allow listening to be turned off" do
447
+ lambda { @server.unlisten }.should_not raise_error
448
+ end
302
449
  end
303
450
 
304
- it "should not allow for indirections to be turned off" do
305
- @server.register(:foo)
306
- Proc.new { @server.unregister(:foo) }.should raise_error(RuntimeError)
451
+ describe "when listening is being turned on" do
452
+ before do
453
+ Puppet::Indirector::Indirection.stubs(:model).returns mock('indirection')
454
+ Puppet::Network::Handler.stubs(:handler).returns mock('xmlrpc_handler')
455
+
456
+ @server = Puppet::Network::Server.new(:port => 31337, :handlers => [:node], :xmlrpc_handlers => [:master])
457
+ @mock_http_server = mock('http server')
458
+ @mock_http_server.stubs(:listen)
459
+ end
460
+
461
+ it "should fetch an instance of an HTTP server" do
462
+ @server.stubs(:http_server_class).returns(@mock_http_server_class)
463
+ @mock_http_server_class.expects(:new).returns(@mock_http_server)
464
+ @server.listen
465
+ end
466
+
467
+ it "should cause the HTTP server to listen" do
468
+ @server.stubs(:http_server).returns(@mock_http_server)
469
+ @mock_http_server.expects(:listen)
470
+ @server.listen
471
+ end
472
+
473
+ it "should pass the listening address to the HTTP server" do
474
+ @server.stubs(:http_server).returns(@mock_http_server)
475
+ @mock_http_server.expects(:listen).with do |args|
476
+ args[:address] == '127.0.0.1'
477
+ end
478
+ @server.listen
479
+ end
480
+
481
+ it "should pass the listening port to the HTTP server" do
482
+ @server.stubs(:http_server).returns(@mock_http_server)
483
+ @mock_http_server.expects(:listen).with do |args|
484
+ args[:port] == 31337
485
+ end
486
+ @server.listen
487
+ end
488
+
489
+ it "should pass a list of REST handlers to the HTTP server" do
490
+ @server.stubs(:http_server).returns(@mock_http_server)
491
+ @mock_http_server.expects(:listen).with do |args|
492
+ args[:handlers] == [ :node ]
493
+ end
494
+ @server.listen
495
+ end
496
+
497
+ it "should pass a list of XMLRPC handlers to the HTTP server" do
498
+ @server.stubs(:http_server).returns(@mock_http_server)
499
+ @mock_http_server.expects(:listen).with do |args|
500
+ args[:xmlrpc_handlers] == [ :master ]
501
+ end
502
+ @server.listen
503
+ end
504
+
505
+ it "should pass a list of protocols to the HTTP server" do
506
+ @server.stubs(:http_server).returns(@mock_http_server)
507
+ @mock_http_server.expects(:listen).with do |args|
508
+ args[:protocols] == [ :rest, :xmlrpc ]
509
+ end
510
+ @server.listen
511
+ end
307
512
  end
308
- end
309
513
 
310
-
311
- describe Class.new, "put these somewhere" do
312
- it "should have the ability to use a class-level from_ hook (from_yaml, from_text, etc.) that can be called, based on content-type header, to allow for different deserializations of an object"
313
- it "should allow from_* on the inbound :data packet (look at its content_type) when doing a PUT/.new.save"
314
- it "should prepend a rest version number on the path (w00t)"
315
- it "should ... on server side, .save should from_yaml, then foo.save(args) instead of just Foo.new.save(args)"
514
+ describe "when listening is being turned off" do
515
+ before do
516
+ @mock_http_server = mock('http server')
517
+ @mock_http_server.stubs(:listen)
518
+ @server.stubs(:http_server).returns(@mock_http_server)
519
+ @server.listen
520
+ end
521
+
522
+ it "should cause the HTTP server to stop listening" do
523
+ @mock_http_server.expects(:unlisten)
524
+ @server.unlisten
525
+ end
526
+
527
+ it "should not allow for indirections to be turned off" do
528
+ Puppet::Indirector::Indirection.stubs(:model).returns mock('indirection')
529
+
530
+ @server.register(:foo)
531
+ lambda { @server.unregister(:foo) }.should raise_error(RuntimeError)
532
+ end
533
+ end
316
534
  end