puppet 0.24.9 → 0.25.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of puppet might be problematic. Click here for more details.

Files changed (910) hide show
  1. data/CHANGELOG +18680 -1241
  2. data/CHANGELOG.old +1705 -0
  3. data/LICENSE +2 -2
  4. data/README +1 -1
  5. data/README.queueing +126 -0
  6. data/README.rst +4 -4
  7. data/Rakefile +62 -216
  8. data/bin/filebucket +6 -117
  9. data/bin/pi +50 -0
  10. data/bin/puppet +7 -188
  11. data/bin/puppetdoc +7 -198
  12. data/bin/ralsh +4 -191
  13. data/conf/auth.conf +94 -0
  14. data/conf/gentoo/init.d/puppetmaster +30 -30
  15. data/conf/osx/PackageInfo.plist +30 -30
  16. data/conf/osx/createpackage.sh +23 -18
  17. data/conf/osx/preflight +8 -0
  18. data/conf/puppet-queue.conf +10 -0
  19. data/conf/redhat/client.init +52 -41
  20. data/conf/redhat/logrotate +1 -0
  21. data/conf/redhat/puppet.spec +74 -36
  22. data/conf/redhat/rundir-perms.patch +28 -0
  23. data/conf/redhat/server.init +48 -43
  24. data/conf/redhat/server.sysconfig +4 -4
  25. data/conf/solaris/smf/puppetd.xml +53 -53
  26. data/conf/solaris/smf/puppetmasterd.xml +53 -53
  27. data/conf/solaris/smf/svc-puppetd +4 -4
  28. data/conf/solaris/smf/svc-puppetmasterd +3 -3
  29. data/conf/suse/client.init +4 -4
  30. data/conf/suse/puppet.spec +14 -14
  31. data/conf/suse/server.init +17 -17
  32. data/examples/etc/init.d/sleeper +8 -8
  33. data/examples/mac_dscl.pp +2 -2
  34. data/examples/mac_dscl_revert.pp +1 -1
  35. data/examples/mcx_dock_default.pp +108 -108
  36. data/examples/mcx_dock_full.pp +108 -108
  37. data/examples/mcx_nogroup.pp +108 -108
  38. data/examples/modules/sample-module/lib/puppet/parser/functions/hostname_to_dn.rb +5 -5
  39. data/examples/modules/sample-module/manifests/init.pp +2 -2
  40. data/examples/relationships +1 -1
  41. data/ext/autotest/config +6 -6
  42. data/ext/bin/sleeper +12 -12
  43. data/ext/dbfix.sql +21 -21
  44. data/ext/emacs/puppet-mode.el +42 -41
  45. data/ext/extlookup.rb +183 -0
  46. data/ext/ldap/puppet.schema +2 -1
  47. data/ext/logcheck/puppet +1 -1
  48. data/ext/module_puppet +7 -7
  49. data/ext/nagios/check_puppet.rb +83 -83
  50. data/ext/nagios/naggen +302 -0
  51. data/ext/puppet-test +61 -18
  52. data/ext/puppetlisten/puppetlisten.rb +76 -0
  53. data/ext/puppetlisten/puppetrun.rb +39 -0
  54. data/ext/puppetstoredconfigclean.rb +29 -29
  55. data/ext/rack/README +73 -0
  56. data/ext/rack/files/apache2.conf +38 -0
  57. data/ext/rack/files/config.ru +18 -0
  58. data/ext/rack/manifest.pp +59 -0
  59. data/ext/vim/syntax/puppet.vim +54 -35
  60. data/install.rb +37 -26
  61. data/lib/puppet.rb +15 -227
  62. data/lib/puppet/agent.rb +134 -0
  63. data/lib/puppet/agent/locker.rb +42 -0
  64. data/lib/puppet/agent/runner.rb +65 -0
  65. data/lib/puppet/application.rb +313 -0
  66. data/lib/puppet/application/filebucket.rb +87 -0
  67. data/lib/puppet/application/pi.rb +214 -0
  68. data/lib/puppet/application/puppet.rb +177 -0
  69. data/lib/puppet/application/puppetca.rb +71 -0
  70. data/lib/puppet/application/puppetd.rb +256 -0
  71. data/lib/puppet/application/puppetdoc.rb +222 -0
  72. data/lib/puppet/application/puppetmasterd.rb +168 -0
  73. data/lib/puppet/application/puppetqd.rb +96 -0
  74. data/lib/puppet/application/puppetrun.rb +219 -0
  75. data/lib/puppet/application/ralsh.rb +168 -0
  76. data/lib/puppet/configurer.rb +177 -0
  77. data/lib/puppet/configurer/downloader.rb +79 -0
  78. data/lib/puppet/configurer/fact_handler.rb +68 -0
  79. data/lib/puppet/configurer/plugin_handler.rb +26 -0
  80. data/lib/puppet/daemon.rb +78 -28
  81. data/lib/puppet/defaults.rb +239 -166
  82. data/lib/puppet/dsl.rb +7 -7
  83. data/lib/puppet/external/dot.rb +271 -271
  84. data/lib/puppet/external/event-loop/better-definers.rb +298 -298
  85. data/lib/puppet/external/event-loop/event-loop.rb +274 -274
  86. data/lib/puppet/external/event-loop/signal-system.rb +163 -163
  87. data/lib/puppet/external/lock.rb +1 -1
  88. data/lib/puppet/external/nagios.rb +20 -20
  89. data/lib/puppet/external/nagios/base.rb +3 -3
  90. data/lib/puppet/external/nagios/grammar.ry +185 -0
  91. data/lib/puppet/external/nagios/makefile +9 -0
  92. data/lib/puppet/external/nagios/parser.rb +1 -1
  93. data/lib/puppet/feature/json.rb +2 -0
  94. data/lib/puppet/feature/rack.rb +24 -0
  95. data/lib/puppet/feature/rails.rb +23 -33
  96. data/lib/puppet/feature/rubygems.rb +6 -0
  97. data/lib/puppet/feature/stomp.rb +6 -0
  98. data/lib/puppet/file_serving/{file_base.rb → base.rb} +10 -9
  99. data/lib/puppet/file_serving/configuration.rb +61 -61
  100. data/lib/puppet/file_serving/configuration/parser.rb +24 -29
  101. data/lib/puppet/file_serving/content.rb +26 -11
  102. data/lib/puppet/file_serving/fileset.rb +54 -19
  103. data/lib/puppet/file_serving/indirection_hooks.rb +12 -24
  104. data/lib/puppet/file_serving/metadata.rb +8 -8
  105. data/lib/puppet/file_serving/mount.rb +9 -151
  106. data/lib/puppet/file_serving/mount/file.rb +126 -0
  107. data/lib/puppet/file_serving/mount/modules.rb +25 -0
  108. data/lib/puppet/file_serving/mount/plugins.rb +27 -0
  109. data/lib/puppet/file_serving/terminus_helper.rb +9 -4
  110. data/lib/puppet/indirector.rb +6 -4
  111. data/lib/puppet/indirector/active_record.rb +28 -0
  112. data/lib/puppet/indirector/catalog/active_record.rb +36 -0
  113. data/lib/puppet/indirector/catalog/compiler.rb +50 -24
  114. data/lib/puppet/indirector/catalog/queue.rb +5 -0
  115. data/lib/puppet/indirector/catalog/rest.rb +6 -0
  116. data/lib/puppet/indirector/catalog/yaml.rb +2 -4
  117. data/lib/puppet/indirector/certificate/ca.rb +9 -0
  118. data/lib/puppet/indirector/certificate/file.rb +9 -0
  119. data/lib/puppet/indirector/certificate/rest.rb +9 -0
  120. data/lib/puppet/indirector/certificate_request/ca.rb +14 -0
  121. data/lib/puppet/indirector/certificate_request/file.rb +8 -0
  122. data/lib/puppet/indirector/certificate_request/rest.rb +9 -0
  123. data/lib/puppet/indirector/certificate_revocation_list/ca.rb +8 -0
  124. data/lib/puppet/indirector/certificate_revocation_list/file.rb +8 -0
  125. data/lib/puppet/indirector/certificate_revocation_list/rest.rb +9 -0
  126. data/lib/puppet/indirector/direct_file_server.rb +4 -8
  127. data/lib/puppet/indirector/exec.rb +2 -6
  128. data/lib/puppet/indirector/facts/active_record.rb +36 -0
  129. data/lib/puppet/indirector/facts/facter.rb +30 -22
  130. data/lib/puppet/indirector/facts/rest.rb +6 -0
  131. data/lib/puppet/indirector/file.rb +1 -0
  132. data/lib/puppet/indirector/file_content/rest.rb +0 -1
  133. data/lib/puppet/indirector/file_metadata/file.rb +2 -2
  134. data/lib/puppet/indirector/file_metadata/rest.rb +0 -1
  135. data/lib/puppet/indirector/file_server.rb +31 -18
  136. data/lib/puppet/indirector/indirection.rb +46 -33
  137. data/lib/puppet/indirector/key/ca.rb +12 -0
  138. data/lib/puppet/indirector/key/file.rb +42 -0
  139. data/lib/puppet/indirector/node/active_record.rb +13 -0
  140. data/lib/puppet/indirector/node/ldap.rb +1 -1
  141. data/lib/puppet/indirector/queue.rb +83 -0
  142. data/lib/puppet/indirector/report/processor.rb +1 -1
  143. data/lib/puppet/indirector/report/rest.rb +7 -0
  144. data/lib/puppet/indirector/request.rb +158 -15
  145. data/lib/puppet/indirector/rest.rb +74 -36
  146. data/lib/puppet/indirector/runner/rest.rb +7 -0
  147. data/lib/puppet/indirector/ssl_file.rb +174 -0
  148. data/lib/puppet/indirector/terminus.rb +4 -4
  149. data/lib/puppet/indirector/yaml.rb +1 -1
  150. data/lib/puppet/metatype/manager.rb +3 -3
  151. data/lib/puppet/module.rb +99 -124
  152. data/lib/puppet/network/authconfig.rb +57 -42
  153. data/lib/puppet/network/authstore.rb +58 -10
  154. data/lib/puppet/network/client.rb +0 -2
  155. data/lib/puppet/network/client/ca.rb +1 -1
  156. data/lib/puppet/network/client/dipper.rb +7 -2
  157. data/lib/puppet/network/format.rb +123 -0
  158. data/lib/puppet/network/format_handler.rb +156 -0
  159. data/lib/puppet/network/formats.rb +123 -0
  160. data/lib/puppet/network/handler/filebucket.rb +1 -1
  161. data/lib/puppet/network/handler/fileserver.rb +43 -35
  162. data/lib/puppet/network/handler/master.rb +4 -4
  163. data/lib/puppet/network/handler/report.rb +1 -1
  164. data/lib/puppet/network/handler/resource.rb +16 -20
  165. data/lib/puppet/network/handler/runner.rb +9 -42
  166. data/lib/puppet/network/http.rb +4 -4
  167. data/lib/puppet/network/http/api.rb +4 -0
  168. data/lib/puppet/network/http/api/v1.rb +65 -0
  169. data/lib/puppet/network/http/handler.rb +163 -56
  170. data/lib/puppet/network/http/mongrel.rb +19 -15
  171. data/lib/puppet/network/http/mongrel/rest.rb +35 -17
  172. data/lib/puppet/network/http/rack.rb +62 -0
  173. data/lib/puppet/network/http/rack/httphandler.rb +34 -0
  174. data/lib/puppet/network/http/rack/rest.rb +79 -0
  175. data/lib/puppet/network/http/rack/xmlrpc.rb +65 -0
  176. data/lib/puppet/network/http/webrick.rb +89 -16
  177. data/lib/puppet/network/http/webrick/rest.rb +24 -11
  178. data/lib/puppet/network/http_pool.rb +28 -29
  179. data/lib/puppet/network/http_server/mongrel.rb +8 -10
  180. data/lib/puppet/network/http_server/webrick.rb +1 -3
  181. data/lib/puppet/network/rest_authconfig.rb +89 -0
  182. data/lib/puppet/network/rest_authorization.rb +25 -0
  183. data/lib/puppet/network/rights.rb +230 -27
  184. data/lib/puppet/network/server.rb +133 -31
  185. data/lib/puppet/network/xmlrpc/client.rb +5 -5
  186. data/lib/puppet/network/xmlrpc/webrick_servlet.rb +6 -6
  187. data/lib/puppet/node.rb +28 -21
  188. data/lib/puppet/node/environment.rb +48 -0
  189. data/lib/puppet/node/facts.rb +21 -0
  190. data/lib/puppet/parameter.rb +291 -219
  191. data/lib/puppet/parser/ast.rb +1 -0
  192. data/lib/puppet/parser/ast/astarray.rb +5 -1
  193. data/lib/puppet/parser/ast/boolean_operator.rb +3 -3
  194. data/lib/puppet/parser/ast/caseopt.rb +10 -0
  195. data/lib/puppet/parser/ast/casestatement.rb +12 -27
  196. data/lib/puppet/parser/ast/collection.rb +31 -0
  197. data/lib/puppet/parser/ast/collexpr.rb +18 -11
  198. data/lib/puppet/parser/ast/comparison_operator.rb +1 -1
  199. data/lib/puppet/parser/ast/definition.rb +6 -2
  200. data/lib/puppet/parser/ast/function.rb +7 -2
  201. data/lib/puppet/parser/ast/ifstatement.rb +11 -6
  202. data/lib/puppet/parser/ast/leaf.rb +106 -3
  203. data/lib/puppet/parser/ast/match_operator.rb +31 -0
  204. data/lib/puppet/parser/ast/node.rb +10 -6
  205. data/lib/puppet/parser/ast/resource_defaults.rb +2 -2
  206. data/lib/puppet/parser/ast/resource_override.rb +1 -1
  207. data/lib/puppet/parser/ast/resource_reference.rb +11 -3
  208. data/lib/puppet/parser/ast/selector.rb +14 -32
  209. data/lib/puppet/parser/ast/vardef.rb +1 -1
  210. data/lib/puppet/parser/collector.rb +67 -15
  211. data/lib/puppet/parser/compiler.rb +21 -53
  212. data/lib/puppet/parser/files.rb +92 -0
  213. data/lib/puppet/parser/functions.rb +3 -3
  214. data/lib/puppet/parser/functions/defined.rb +3 -3
  215. data/lib/puppet/parser/functions/fqdn_rand.rb +3 -3
  216. data/lib/puppet/parser/functions/inline_template.rb +4 -4
  217. data/lib/puppet/parser/functions/regsubst.rb +37 -35
  218. data/lib/puppet/parser/functions/require.rb +34 -0
  219. data/lib/puppet/parser/functions/shellquote.rb +41 -0
  220. data/lib/puppet/parser/functions/split.rb +29 -0
  221. data/lib/puppet/parser/functions/sprintf.rb +6 -6
  222. data/lib/puppet/parser/functions/template.rb +4 -4
  223. data/lib/puppet/parser/functions/versioncmp.rb +22 -1
  224. data/lib/puppet/parser/grammar.ra +812 -0
  225. data/lib/puppet/parser/interpreter.rb +4 -4
  226. data/lib/puppet/parser/lexer.rb +44 -15
  227. data/lib/puppet/parser/loaded_code.rb +115 -0
  228. data/lib/puppet/parser/makefile +8 -0
  229. data/lib/puppet/parser/parser.rb +1080 -928
  230. data/lib/puppet/parser/parser_support.rb +118 -96
  231. data/lib/puppet/parser/resource.rb +56 -126
  232. data/lib/puppet/parser/resource/param.rb +2 -76
  233. data/lib/puppet/parser/resource/reference.rb +15 -8
  234. data/lib/puppet/parser/scope.rb +68 -35
  235. data/lib/puppet/parser/templatewrapper.rb +8 -8
  236. data/lib/puppet/parser/yaml_trimmer.rb +11 -0
  237. data/lib/puppet/property.rb +69 -124
  238. data/lib/puppet/property/list.rb +3 -3
  239. data/lib/puppet/provider.rb +5 -5
  240. data/lib/puppet/provider/augeas/augeas.rb +119 -118
  241. data/lib/puppet/provider/computer/computer.rb +3 -3
  242. data/lib/puppet/provider/confine/variable.rb +1 -1
  243. data/lib/puppet/provider/cron/crontab.rb +8 -7
  244. data/lib/puppet/provider/group/directoryservice.rb +2 -2
  245. data/lib/puppet/provider/group/groupadd.rb +1 -1
  246. data/lib/puppet/provider/group/ldap.rb +3 -3
  247. data/lib/puppet/provider/group/pw.rb +1 -1
  248. data/lib/puppet/provider/host/parsed.rb +3 -3
  249. data/lib/puppet/provider/ldap.rb +1 -3
  250. data/lib/puppet/provider/macauthorization/macauthorization.rb +62 -55
  251. data/lib/puppet/provider/mailalias/aliases.rb +9 -1
  252. data/lib/puppet/provider/maillist/mailman.rb +8 -4
  253. data/lib/puppet/provider/mcx/mcxcontent.rb +11 -11
  254. data/lib/puppet/provider/mount/parsed.rb +2 -2
  255. data/lib/puppet/provider/nameservice.rb +6 -6
  256. data/lib/puppet/provider/nameservice/directoryservice.rb +83 -87
  257. data/lib/puppet/provider/package/appdmg.rb +10 -9
  258. data/lib/puppet/provider/package/apple.rb +1 -3
  259. data/lib/puppet/provider/package/apt.rb +5 -5
  260. data/lib/puppet/provider/package/aptitude.rb +1 -1
  261. data/lib/puppet/provider/package/aptrpm.rb +1 -1
  262. data/lib/puppet/provider/package/darwinport.rb +1 -1
  263. data/lib/puppet/provider/package/dpkg.rb +2 -2
  264. data/lib/puppet/provider/package/fink.rb +6 -6
  265. data/lib/puppet/provider/package/freebsd.rb +1 -1
  266. data/lib/puppet/provider/package/gem.rb +2 -2
  267. data/lib/puppet/provider/package/hpux.rb +5 -5
  268. data/lib/puppet/provider/package/pkgdmg.rb +30 -22
  269. data/lib/puppet/provider/package/portage.rb +1 -1
  270. data/lib/puppet/provider/package/ports.rb +1 -1
  271. data/lib/puppet/provider/package/rpm.rb +5 -5
  272. data/lib/puppet/provider/package/rug.rb +1 -1
  273. data/lib/puppet/provider/package/sun.rb +7 -7
  274. data/lib/puppet/provider/package/up2date.rb +1 -1
  275. data/lib/puppet/provider/package/yum.rb +2 -2
  276. data/lib/puppet/provider/package/yumhelper.py +2 -2
  277. data/lib/puppet/provider/port/parsed.rb +1 -1
  278. data/lib/puppet/provider/selmodule/semodule.rb +3 -3
  279. data/lib/puppet/provider/service/base.rb +21 -12
  280. data/lib/puppet/provider/service/daemontools.rb +86 -49
  281. data/lib/puppet/provider/service/debian.rb +20 -12
  282. data/lib/puppet/provider/service/freebsd.rb +5 -5
  283. data/lib/puppet/provider/service/gentoo.rb +2 -2
  284. data/lib/puppet/provider/service/init.rb +21 -33
  285. data/lib/puppet/provider/service/launchd.rb +120 -48
  286. data/lib/puppet/provider/service/redhat.rb +12 -21
  287. data/lib/puppet/provider/service/runit.rb +19 -9
  288. data/lib/puppet/provider/service/smf.rb +49 -34
  289. data/lib/puppet/provider/ssh_authorized_key/parsed.rb +34 -0
  290. data/lib/puppet/provider/sshkey/parsed.rb +2 -2
  291. data/lib/puppet/provider/user/directoryservice.rb +12 -29
  292. data/lib/puppet/provider/user/hpux.rb +3 -3
  293. data/lib/puppet/provider/user/ldap.rb +2 -2
  294. data/lib/puppet/provider/zfs/solaris.rb +1 -1
  295. data/lib/puppet/provider/zone/solaris.rb +4 -4
  296. data/lib/puppet/provider/zpool/solaris.rb +3 -3
  297. data/lib/puppet/rails.rb +9 -9
  298. data/lib/puppet/rails/benchmark.rb +69 -0
  299. data/lib/puppet/rails/database/001_add_created_at_to_all_tables.rb +5 -5
  300. data/lib/puppet/rails/database/002_remove_duplicated_index_on_all_tables.rb +2 -2
  301. data/lib/puppet/rails/database/003_add_environment_to_host.rb +1 -1
  302. data/lib/puppet/rails/database/schema.rb +8 -8
  303. data/lib/puppet/rails/fact_value.rb +1 -1
  304. data/lib/puppet/rails/host.rb +211 -93
  305. data/lib/puppet/rails/param_name.rb +5 -1
  306. data/lib/puppet/rails/param_value.rb +29 -2
  307. data/lib/puppet/rails/puppet_tag.rb +5 -0
  308. data/lib/puppet/rails/resource.rb +120 -20
  309. data/lib/puppet/rails/resource_tag.rb +1 -1
  310. data/lib/puppet/rails/source_file.rb +1 -1
  311. data/lib/puppet/reference/configuration.rb +14 -14
  312. data/lib/puppet/reference/function.rb +1 -1
  313. data/lib/puppet/reference/metaparameter.rb +48 -0
  314. data/lib/puppet/reference/providers.rb +6 -6
  315. data/lib/puppet/reference/type.rb +1 -37
  316. data/lib/puppet/relationship.rb +57 -30
  317. data/lib/puppet/reports/rrdgraph.rb +4 -4
  318. data/lib/puppet/reports/store.rb +3 -3
  319. data/lib/puppet/reports/tagmail.rb +15 -15
  320. data/lib/puppet/resource.rb +265 -0
  321. data/lib/puppet/{node → resource}/catalog.rb +188 -112
  322. data/lib/puppet/{resource_reference.rb → resource/reference.rb} +46 -24
  323. data/lib/puppet/simple_graph.rb +165 -27
  324. data/lib/puppet/ssl.rb +7 -0
  325. data/lib/puppet/ssl/base.rb +62 -0
  326. data/lib/puppet/ssl/certificate.rb +34 -0
  327. data/lib/puppet/ssl/certificate_authority.rb +298 -0
  328. data/lib/puppet/ssl/certificate_authority/interface.rb +118 -0
  329. data/lib/puppet/ssl/certificate_factory.rb +145 -0
  330. data/lib/puppet/ssl/certificate_request.rb +51 -0
  331. data/lib/puppet/ssl/certificate_revocation_list.rb +86 -0
  332. data/lib/puppet/ssl/host.rb +271 -0
  333. data/lib/puppet/ssl/inventory.rb +52 -0
  334. data/lib/puppet/ssl/key.rb +56 -0
  335. data/lib/puppet/sslcertificates.rb +6 -6
  336. data/lib/puppet/sslcertificates/ca.rb +15 -15
  337. data/lib/puppet/sslcertificates/certificate.rb +4 -4
  338. data/lib/puppet/sslcertificates/inventory.rb +3 -3
  339. data/lib/puppet/transaction.rb +113 -139
  340. data/lib/puppet/transaction/change.rb +6 -6
  341. data/lib/puppet/transaction/event.rb +1 -1
  342. data/lib/puppet/transaction/report.rb +7 -1
  343. data/lib/puppet/transportable.rb +28 -28
  344. data/lib/puppet/type.rb +263 -688
  345. data/lib/puppet/type/augeas.rb +3 -2
  346. data/lib/puppet/type/component.rb +28 -95
  347. data/lib/puppet/type/computer.rb +10 -10
  348. data/lib/puppet/type/cron.rb +19 -14
  349. data/lib/puppet/type/exec.rb +21 -20
  350. data/lib/puppet/type/file.rb +306 -633
  351. data/lib/puppet/type/file/checksum.rb +10 -11
  352. data/lib/puppet/type/file/content.rb +83 -22
  353. data/lib/puppet/type/file/ensure.rb +15 -9
  354. data/lib/puppet/type/file/group.rb +7 -1
  355. data/lib/puppet/type/file/mode.rb +1 -1
  356. data/lib/puppet/type/file/owner.rb +9 -3
  357. data/lib/puppet/type/file/selcontext.rb +4 -4
  358. data/lib/puppet/type/file/source.rb +78 -179
  359. data/lib/puppet/type/file/target.rb +3 -3
  360. data/lib/puppet/type/file/type.rb +2 -2
  361. data/lib/puppet/type/filebucket.rb +33 -54
  362. data/lib/puppet/type/group.rb +8 -8
  363. data/lib/puppet/type/host.rb +7 -7
  364. data/lib/puppet/type/k5login.rb +2 -2
  365. data/lib/puppet/type/macauthorization.rb +77 -52
  366. data/lib/puppet/type/mailalias.rb +2 -2
  367. data/lib/puppet/type/maillist.rb +2 -2
  368. data/lib/puppet/type/mcx.rb +3 -3
  369. data/lib/puppet/type/mount.rb +16 -11
  370. data/lib/puppet/type/notify.rb +4 -4
  371. data/lib/puppet/type/package.rb +6 -28
  372. data/lib/puppet/type/port.rb +1 -1
  373. data/lib/puppet/type/resources.rb +19 -19
  374. data/lib/puppet/type/schedule.rb +18 -20
  375. data/lib/puppet/type/selmodule.rb +1 -1
  376. data/lib/puppet/type/service.rb +11 -7
  377. data/lib/puppet/type/ssh_authorized_key.rb +26 -9
  378. data/lib/puppet/type/sshkey.rb +2 -2
  379. data/lib/puppet/type/tidy.rb +285 -289
  380. data/lib/puppet/type/user.rb +9 -7
  381. data/lib/puppet/type/yumrepo.rb +17 -16
  382. data/lib/puppet/type/zone.rb +8 -7
  383. data/lib/puppet/util.rb +11 -36
  384. data/lib/puppet/util/autoload.rb +31 -19
  385. data/lib/puppet/util/autoload/file_cache.rb +115 -0
  386. data/lib/puppet/util/backups.rb +86 -0
  387. data/lib/puppet/util/cacher.rb +135 -0
  388. data/lib/puppet/util/checksums.rb +11 -1
  389. data/lib/puppet/util/classgen.rb +1 -1
  390. data/lib/puppet/util/config_store.rb +2 -2
  391. data/lib/puppet/util/constant_inflector.rb +1 -1
  392. data/lib/puppet/util/diff.rb +2 -2
  393. data/lib/puppet/util/docs.rb +9 -3
  394. data/lib/puppet/util/execution.rb +1 -1
  395. data/lib/puppet/util/feature.rb +27 -20
  396. data/lib/puppet/util/fileparsing.rb +3 -3
  397. data/lib/puppet/util/filetype.rb +8 -6
  398. data/lib/puppet/util/graph.rb +5 -5
  399. data/lib/puppet/util/inifile.rb +5 -5
  400. data/lib/puppet/util/json.rb +13 -0
  401. data/lib/puppet/util/ldap/connection.rb +2 -2
  402. data/lib/puppet/util/log.rb +48 -31
  403. data/lib/puppet/util/metric.rb +4 -4
  404. data/lib/puppet/util/monkey_patches.rb +43 -0
  405. data/lib/puppet/util/nagios_maker.rb +1 -1
  406. data/lib/puppet/util/package.rb +4 -4
  407. data/lib/puppet/util/pidlock.rb +59 -59
  408. data/lib/puppet/util/posix.rb +13 -52
  409. data/lib/puppet/util/provider_features.rb +3 -3
  410. data/lib/puppet/util/queue.rb +96 -0
  411. data/lib/puppet/util/queue/stomp.rb +47 -0
  412. data/lib/puppet/util/rails/cache_accumulator.rb +65 -0
  413. data/lib/puppet/util/rails/collection_merger.rb +0 -39
  414. data/lib/puppet/util/rails/reference_serializer.rb +17 -3
  415. data/lib/puppet/util/rdoc.rb +1 -0
  416. data/lib/puppet/util/rdoc/code_objects.rb +5 -1
  417. data/lib/puppet/util/rdoc/generators/puppet_generator.rb +5 -5
  418. data/lib/puppet/util/rdoc/generators/template/puppet/puppet.rb +13 -13
  419. data/lib/puppet/util/rdoc/parser.rb +28 -32
  420. data/lib/puppet/util/reference.rb +29 -8
  421. data/lib/puppet/util/resource_template.rb +1 -1
  422. data/lib/puppet/util/selinux.rb +12 -6
  423. data/lib/puppet/util/settings.rb +203 -578
  424. data/lib/puppet/util/settings/boolean_setting.rb +33 -0
  425. data/lib/puppet/util/settings/file_setting.rb +119 -0
  426. data/lib/puppet/util/settings/setting.rb +110 -0
  427. data/lib/puppet/util/subclass_loader.rb +1 -1
  428. data/lib/puppet/util/suidmanager.rb +2 -2
  429. data/lib/puppet/util/tagging.rb +1 -1
  430. data/lib/puppet/util/warnings.rb +17 -9
  431. data/man/man8/filebucket.8 +2 -2
  432. data/man/man8/pi.8 +2 -2
  433. data/man/man8/puppet.8 +3 -4
  434. data/man/man8/puppet.conf.8 +63 -63
  435. data/man/man8/puppetca.8 +2 -2
  436. data/man/man8/puppetd.8 +2 -2
  437. data/man/man8/puppetdoc.8 +2 -2
  438. data/man/man8/puppetmasterd.8 +2 -2
  439. data/man/man8/puppetrun.8 +2 -2
  440. data/man/man8/ralsh.8 +3 -3
  441. data/sbin/puppetca +102 -0
  442. data/sbin/puppetd +159 -0
  443. data/sbin/puppetmasterd +66 -0
  444. data/sbin/puppetqd +53 -0
  445. data/sbin/puppetrun +130 -0
  446. data/spec/Rakefile +2 -2
  447. data/spec/integration/application/puppet.rb +33 -0
  448. data/spec/integration/bin/puppetmasterd.rb +110 -0
  449. data/spec/integration/configurer.rb +18 -0
  450. data/spec/integration/defaults.rb +158 -7
  451. data/spec/integration/file_serving/content.rb +2 -0
  452. data/spec/integration/file_serving/fileset.rb +14 -0
  453. data/spec/integration/file_serving/metadata.rb +2 -0
  454. data/spec/integration/file_serving/terminus_helper.rb +22 -0
  455. data/spec/integration/indirector/catalog/compiler.rb +67 -0
  456. data/spec/integration/indirector/catalog/queue.rb +61 -0
  457. data/spec/integration/indirector/certificate/rest.rb +69 -0
  458. data/spec/integration/indirector/certificate_request/rest.rb +89 -0
  459. data/spec/integration/indirector/certificate_revocation_list/rest.rb +77 -0
  460. data/spec/integration/indirector/direct_file_server.rb +16 -23
  461. data/spec/integration/indirector/file_content/file_server.rb +75 -0
  462. data/spec/integration/indirector/report/rest.rb +95 -0
  463. data/spec/integration/indirector/rest.rb +207 -147
  464. data/spec/integration/network/client.rb +19 -0
  465. data/spec/integration/network/formats.rb +110 -0
  466. data/spec/integration/network/handler.rb +25 -0
  467. data/spec/integration/network/server/mongrel.rb +26 -8
  468. data/spec/integration/network/server/webrick.rb +49 -11
  469. data/spec/integration/node/environment.rb +58 -0
  470. data/spec/integration/node/facts.rb +4 -2
  471. data/spec/integration/parser/compiler.rb +29 -0
  472. data/spec/integration/parser/functions/require.rb +67 -0
  473. data/spec/integration/provider/mailalias/aliases.rb +25 -0
  474. data/spec/integration/{node → resource}/catalog.rb +17 -10
  475. data/spec/integration/ssl/certificate_authority.rb +135 -0
  476. data/spec/integration/ssl/certificate_request.rb +59 -0
  477. data/spec/integration/ssl/certificate_revocation_list.rb +42 -0
  478. data/spec/integration/ssl/host.rb +90 -0
  479. data/spec/integration/transaction.rb +66 -0
  480. data/spec/integration/transaction/report.rb +2 -5
  481. data/spec/integration/type.rb +22 -0
  482. data/spec/integration/type/file.rb +458 -0
  483. data/spec/integration/type/package.rb +1 -1
  484. data/spec/integration/type/tidy.rb +27 -0
  485. data/spec/integration/util/autoload.rb +114 -0
  486. data/spec/integration/util/feature.rb +54 -0
  487. data/spec/integration/util/file_locking.rb +2 -1
  488. data/spec/integration/util/settings.rb +27 -0
  489. data/spec/lib/puppet_spec/files.rb +9 -0
  490. data/spec/monkey_patches/add_confine_and_runnable_to_rspec_dsl.rb +1 -0
  491. data/spec/monkey_patches/alias_should_to_must.rb +1 -0
  492. data/spec/shared_behaviours/file_server_terminus.rb +14 -11
  493. data/spec/shared_behaviours/file_serving.rb +13 -17
  494. data/spec/spec_helper.rb +22 -5
  495. data/spec/unit/agent.rb +259 -0
  496. data/spec/unit/agent/locker.rb +100 -0
  497. data/spec/unit/agent/runner.rb +118 -0
  498. data/spec/unit/application.rb +420 -0
  499. data/spec/unit/application/filebucket.rb +220 -0
  500. data/spec/unit/application/pi.rb +84 -0
  501. data/spec/unit/application/puppet.rb +404 -0
  502. data/spec/unit/application/puppetca.rb +142 -0
  503. data/spec/unit/application/puppetd.rb +502 -0
  504. data/spec/unit/application/puppetdoc.rb +345 -0
  505. data/spec/unit/application/puppetmasterd.rb +456 -0
  506. data/spec/unit/application/puppetqd.rb +186 -0
  507. data/spec/unit/application/puppetrun.rb +279 -0
  508. data/spec/unit/application/ralsh.rb +237 -0
  509. data/spec/unit/configurer.rb +232 -0
  510. data/spec/unit/configurer/downloader.rb +188 -0
  511. data/spec/unit/configurer/fact_handler.rb +150 -0
  512. data/spec/unit/configurer/plugin_handler.rb +112 -0
  513. data/spec/unit/daemon.rb +287 -0
  514. data/spec/unit/file_serving/{file_base.rb → base.rb} +39 -31
  515. data/spec/unit/file_serving/configuration.rb +104 -93
  516. data/spec/unit/file_serving/configuration/parser.rb +64 -18
  517. data/spec/unit/file_serving/content.rb +65 -26
  518. data/spec/unit/file_serving/fileset.rb +116 -14
  519. data/spec/unit/file_serving/indirection_hooks.rb +34 -95
  520. data/spec/unit/file_serving/metadata.rb +27 -40
  521. data/spec/unit/file_serving/mount.rb +7 -118
  522. data/spec/unit/file_serving/mount/file.rb +188 -0
  523. data/spec/unit/file_serving/mount/modules.rb +63 -0
  524. data/spec/unit/file_serving/mount/plugins.rb +61 -0
  525. data/spec/unit/file_serving/terminus_helper.rb +39 -27
  526. data/spec/unit/indirector.rb +6 -1
  527. data/spec/unit/indirector/active_record.rb +76 -0
  528. data/spec/unit/indirector/catalog/active_record.rb +122 -0
  529. data/spec/unit/indirector/catalog/compiler.rb +222 -118
  530. data/spec/unit/indirector/catalog/queue.rb +20 -0
  531. data/spec/unit/indirector/catalog/rest.rb +11 -0
  532. data/spec/unit/indirector/catalog/yaml.rb +6 -6
  533. data/spec/unit/indirector/certificate/ca.rb +28 -0
  534. data/spec/unit/indirector/certificate/file.rb +28 -0
  535. data/spec/unit/indirector/certificate/rest.rb +23 -0
  536. data/spec/unit/indirector/certificate_request/ca.rb +19 -0
  537. data/spec/unit/indirector/certificate_request/file.rb +19 -0
  538. data/spec/unit/indirector/certificate_request/rest.rb +23 -0
  539. data/spec/unit/indirector/certificate_revocation_list/ca.rb +21 -0
  540. data/spec/unit/indirector/certificate_revocation_list/file.rb +20 -0
  541. data/spec/unit/indirector/certificate_revocation_list/rest.rb +23 -0
  542. data/spec/unit/indirector/direct_file_server.rb +3 -8
  543. data/spec/unit/indirector/exec.rb +6 -1
  544. data/spec/unit/indirector/facts/active_record.rb +104 -0
  545. data/spec/unit/indirector/facts/facter.rb +53 -12
  546. data/spec/unit/indirector/facts/rest.rb +11 -0
  547. data/spec/unit/indirector/file.rb +8 -1
  548. data/spec/unit/indirector/file_metadata/file.rb +5 -5
  549. data/spec/unit/indirector/file_server.rb +181 -98
  550. data/spec/unit/indirector/indirection.rb +102 -38
  551. data/spec/unit/indirector/key/ca.rb +28 -0
  552. data/spec/unit/indirector/key/file.rb +104 -0
  553. data/spec/unit/indirector/node/active_record.rb +34 -0
  554. data/spec/unit/indirector/node/ldap.rb +1 -1
  555. data/spec/unit/indirector/node/rest.rb +2 -2
  556. data/spec/unit/indirector/queue.rb +123 -0
  557. data/spec/unit/indirector/report/rest.rb +28 -0
  558. data/spec/unit/indirector/request.rb +221 -0
  559. data/spec/unit/indirector/rest.rb +343 -334
  560. data/spec/unit/indirector/runner/rest.rb +11 -0
  561. data/spec/unit/indirector/ssl_file.rb +280 -0
  562. data/spec/unit/module.rb +180 -180
  563. data/spec/unit/network/authconfig.rb +292 -0
  564. data/spec/unit/network/authstore.rb +94 -0
  565. data/spec/unit/network/client.rb +2 -2
  566. data/spec/unit/network/client/dipper.rb +16 -0
  567. data/spec/unit/network/format.rb +191 -0
  568. data/spec/unit/network/format_handler.rb +306 -0
  569. data/spec/unit/network/formats.rb +249 -0
  570. data/spec/unit/network/handler/fileserver.rb +2 -5
  571. data/spec/unit/network/http.rb +3 -3
  572. data/spec/unit/network/http/api/v1.rb +122 -0
  573. data/spec/unit/network/http/handler.rb +448 -0
  574. data/spec/unit/network/http/mongrel.rb +46 -32
  575. data/spec/unit/network/http/mongrel/rest.rb +174 -319
  576. data/spec/unit/network/http/rack.rb +102 -0
  577. data/spec/unit/network/http/rack/rest.rb +199 -0
  578. data/spec/unit/network/http/rack/xmlrpc.rb +157 -0
  579. data/spec/unit/network/http/webrick.rb +249 -37
  580. data/spec/unit/network/http/webrick/rest.rb +113 -279
  581. data/spec/unit/network/http_pool.rb +86 -110
  582. data/spec/unit/network/rest_authconfig.rb +146 -0
  583. data/spec/unit/network/rest_authorization.rb +43 -0
  584. data/spec/unit/network/rights.rb +519 -0
  585. data/spec/unit/network/server.rb +475 -257
  586. data/spec/unit/node.rb +43 -10
  587. data/spec/unit/node/environment.rb +143 -9
  588. data/spec/unit/node/facts.rb +77 -24
  589. data/spec/unit/other/selinux.rb +85 -0
  590. data/spec/unit/other/transbucket.rb +29 -13
  591. data/spec/unit/other/transobject.rb +35 -15
  592. data/spec/unit/parameter.rb +378 -5
  593. data/spec/unit/parser/ast.rb +1 -1
  594. data/spec/unit/parser/ast/arithmetic_operator.rb +17 -17
  595. data/spec/unit/parser/ast/astarray.rb +16 -10
  596. data/spec/unit/parser/ast/boolean_operator.rb +2 -2
  597. data/spec/unit/parser/ast/casestatement.rb +143 -0
  598. data/spec/unit/parser/ast/collection.rb +63 -0
  599. data/spec/unit/parser/ast/collexpr.rb +31 -8
  600. data/spec/unit/parser/ast/comparison_operator.rb +9 -9
  601. data/spec/unit/parser/ast/definition.rb +18 -0
  602. data/spec/unit/parser/ast/function.rb +6 -0
  603. data/spec/unit/parser/ast/ifstatement.rb +75 -0
  604. data/spec/unit/parser/ast/leaf.rb +261 -0
  605. data/spec/unit/parser/ast/match_operator.rb +50 -0
  606. data/spec/unit/parser/ast/minus.rb +1 -1
  607. data/spec/unit/parser/ast/node.rb +20 -0
  608. data/spec/unit/parser/ast/not.rb +1 -1
  609. data/spec/unit/parser/ast/resource_override.rb +5 -5
  610. data/spec/unit/parser/ast/resource_reference.rb +11 -5
  611. data/spec/unit/parser/ast/selector.rb +156 -0
  612. data/spec/unit/parser/ast/vardef.rb +11 -11
  613. data/spec/unit/parser/collector.rb +167 -48
  614. data/spec/unit/parser/compiler.rb +128 -104
  615. data/spec/unit/parser/files.rb +190 -0
  616. data/spec/unit/parser/functions/inline_template.rb +0 -0
  617. data/spec/unit/parser/functions/regsubst.rb +42 -42
  618. data/spec/unit/parser/functions/require.rb +36 -0
  619. data/spec/unit/parser/functions/shellquote.rb +92 -0
  620. data/spec/unit/parser/functions/split.rb +51 -0
  621. data/spec/unit/parser/functions/sprintf.rb +11 -11
  622. data/spec/unit/parser/functions/template.rb +0 -0
  623. data/spec/unit/parser/functions/versioncmp.rb +2 -2
  624. data/spec/unit/parser/interpreter.rb +16 -7
  625. data/spec/unit/parser/lexer.rb +72 -12
  626. data/spec/unit/parser/loaded_code.rb +198 -0
  627. data/spec/unit/parser/parser.rb +215 -28
  628. data/spec/unit/parser/resource.rb +131 -22
  629. data/spec/unit/parser/scope.rb +207 -12
  630. data/spec/unit/parser/templatewrapper.rb +8 -3
  631. data/spec/unit/property.rb +270 -16
  632. data/spec/unit/property/list.rb +12 -6
  633. data/spec/unit/provider.rb +31 -0
  634. data/spec/unit/provider/augeas/augeas.rb +61 -33
  635. data/spec/unit/provider/macauthorization.rb +29 -29
  636. data/spec/unit/provider/mcx/mcxcontent.rb +4 -4
  637. data/spec/unit/provider/mount/parsed.rb +5 -8
  638. data/spec/unit/provider/naginator.rb +0 -0
  639. data/spec/unit/provider/package/apt.rb +6 -6
  640. data/spec/unit/provider/package/pkgdmg.rb +73 -0
  641. data/spec/unit/provider/selboolean.rb +1 -1
  642. data/spec/unit/provider/selmodule.rb +2 -2
  643. data/spec/unit/provider/service/daemontools.rb +40 -15
  644. data/spec/unit/provider/service/debian.rb +89 -0
  645. data/spec/unit/provider/service/init.rb +106 -0
  646. data/spec/unit/provider/service/launchd.rb +71 -13
  647. data/spec/unit/provider/service/redhat.rb +94 -0
  648. data/spec/unit/provider/service/runit.rb +14 -2
  649. data/spec/unit/provider/ssh_authorized_key/parsed.rb +66 -2
  650. data/spec/unit/provider/user/ldap.rb +1 -1
  651. data/spec/unit/provider/user/user_role_add.rb +1 -1
  652. data/spec/unit/provider/zfs/solaris.rb +18 -6
  653. data/spec/unit/provider/zone/solaris.rb +1 -1
  654. data/spec/unit/rails.rb +16 -22
  655. data/spec/unit/rails/host.rb +163 -0
  656. data/spec/unit/rails/param_value.rb +49 -0
  657. data/spec/unit/rails/resource.rb +87 -0
  658. data/spec/unit/relationship.rb +141 -29
  659. data/spec/unit/resource.rb +504 -0
  660. data/spec/unit/resource/catalog.rb +1061 -0
  661. data/spec/unit/resource/reference.rb +111 -0
  662. data/spec/unit/simple_graph.rb +448 -191
  663. data/spec/unit/ssl/certificate.rb +124 -0
  664. data/spec/unit/ssl/certificate_authority.rb +741 -0
  665. data/spec/unit/ssl/certificate_authority/interface.rb +269 -0
  666. data/spec/unit/ssl/certificate_factory.rb +107 -0
  667. data/spec/unit/ssl/certificate_request.rb +193 -0
  668. data/spec/unit/ssl/certificate_revocation_list.rb +180 -0
  669. data/spec/unit/ssl/host.rb +704 -0
  670. data/spec/unit/ssl/inventory.rb +180 -0
  671. data/spec/unit/ssl/key.rb +198 -0
  672. data/spec/unit/transaction.rb +65 -2
  673. data/spec/unit/transaction/change.rb +1 -1
  674. data/spec/unit/transaction/report.rb +1 -1
  675. data/spec/unit/type.rb +361 -8
  676. data/spec/unit/type/augeas.rb +30 -37
  677. data/spec/unit/type/component.rb +63 -0
  678. data/spec/unit/type/computer.rb +17 -21
  679. data/spec/unit/type/exec.rb +27 -2
  680. data/spec/unit/type/file.rb +704 -83
  681. data/spec/unit/type/file/content.rb +253 -15
  682. data/spec/unit/type/file/ensure.rb +65 -2
  683. data/spec/unit/type/file/group.rb +5 -0
  684. data/spec/unit/type/file/owner.rb +5 -0
  685. data/spec/unit/type/file/selinux.rb +12 -16
  686. data/spec/unit/type/file/source.rb +264 -0
  687. data/spec/unit/type/filebucket.rb +74 -0
  688. data/spec/unit/type/group.rb +1 -5
  689. data/spec/unit/type/macauthorization.rb +59 -26
  690. data/spec/unit/type/mcx.rb +8 -16
  691. data/spec/unit/type/mount.rb +8 -16
  692. data/spec/unit/type/noop_metaparam.rb +0 -2
  693. data/spec/unit/type/package.rb +13 -23
  694. data/spec/unit/type/resources.rb +4 -7
  695. data/spec/unit/type/schedule.rb +1 -7
  696. data/spec/unit/type/selboolean.rb +4 -6
  697. data/spec/unit/type/service.rb +23 -33
  698. data/spec/unit/type/ssh_authorized_key.rb +25 -14
  699. data/spec/unit/type/tidy.rb +329 -21
  700. data/spec/unit/type/user.rb +18 -10
  701. data/spec/unit/type/zfs.rb +6 -6
  702. data/spec/unit/util/autoload.rb +94 -3
  703. data/spec/unit/util/autoload/file_cache.rb +183 -0
  704. data/spec/unit/util/backups.rb +159 -0
  705. data/spec/unit/util/cache_accumulator.rb +69 -0
  706. data/spec/unit/util/cacher.rb +185 -0
  707. data/spec/unit/util/checksums.rb +9 -1
  708. data/spec/unit/util/feature.rb +72 -0
  709. data/spec/unit/util/filetype.rb +1 -11
  710. data/spec/unit/util/json.rb +21 -0
  711. data/spec/unit/util/log.rb +45 -0
  712. data/spec/unit/util/package.rb +2 -2
  713. data/spec/unit/util/queue.rb +88 -0
  714. data/spec/unit/util/queue/stomp.rb +140 -0
  715. data/spec/unit/util/reference_serializer.rb +52 -0
  716. data/spec/unit/util/selinux.rb +5 -3
  717. data/spec/unit/util/settings.rb +413 -264
  718. data/spec/unit/util/settings/file_setting.rb +223 -0
  719. data/spec/unit/util/storage.rb +11 -11
  720. data/spec/unit/util/warnings.rb +21 -17
  721. data/test/Rakefile +6 -5
  722. data/test/certmgr/ca.rb +5 -5
  723. data/test/certmgr/certmgr.rb +4 -4
  724. data/test/data/providers/cron/crontab.allthree +2 -2
  725. data/test/data/providers/cron/crontab.envNcomment +1 -1
  726. data/test/data/providers/cron/crontab.envNname +1 -1
  727. data/test/data/providers/cron/crontab.multirecords +1 -1
  728. data/test/data/providers/cron/crontab_collections.yaml +14 -14
  729. data/test/data/providers/cron/crontab_multiple_with_env.yaml +6 -6
  730. data/test/data/providers/cron/crontab_sample_records.yaml +102 -102
  731. data/test/data/providers/mailalias/aliases/test1 +28 -0
  732. data/test/data/providers/package/testpackages.yaml +6 -6
  733. data/test/data/reports/1.yaml +17 -17
  734. data/test/data/reports/tagmail_passers.conf +2 -2
  735. data/test/data/snippets/append.pp +5 -5
  736. data/test/data/snippets/casestatement.pp +9 -2
  737. data/test/data/snippets/classincludes.pp +1 -1
  738. data/test/data/snippets/collection_override.pp +8 -0
  739. data/test/data/snippets/fqparents.pp +2 -2
  740. data/test/data/snippets/ifexpression.pp +12 -0
  741. data/test/data/snippets/multilinecomments.pp +5 -1
  742. data/test/data/snippets/selectorvalues.pp +7 -0
  743. data/test/data/types/hosts/1 +1 -1
  744. data/test/data/types/hosts/2 +3 -3
  745. data/test/data/types/hosts/solaris +2 -2
  746. data/test/data/types/mount/freebsd.fstab +7 -7
  747. data/test/data/types/mount/solaris.fstab +10 -10
  748. data/test/data/types/port/1 +472 -472
  749. data/test/data/types/port/darwin +4347 -4347
  750. data/test/language/ast.rb +3 -2
  751. data/test/language/ast/casestatement.rb +12 -12
  752. data/test/language/ast/resource.rb +4 -4
  753. data/test/language/ast/resource_reference.rb +5 -5
  754. data/test/language/ast/selector.rb +11 -11
  755. data/test/language/ast/variable.rb +4 -4
  756. data/test/language/functions.rb +16 -16
  757. data/test/language/parser.rb +89 -111
  758. data/test/language/resource.rb +3 -88
  759. data/test/language/scope.rb +14 -55
  760. data/test/language/snippets.rb +31 -31
  761. data/test/lib/puppettest.rb +12 -12
  762. data/test/lib/puppettest/certificates.rb +2 -2
  763. data/test/lib/puppettest/exetest.rb +0 -1
  764. data/test/lib/puppettest/fakes.rb +1 -1
  765. data/test/lib/puppettest/parsertesting.rb +9 -4
  766. data/test/lib/puppettest/railstesting.rb +3 -3
  767. data/test/lib/puppettest/servertest.rb +1 -1
  768. data/test/lib/puppettest/support/assertions.rb +2 -2
  769. data/test/lib/puppettest/support/collection.rb +1 -1
  770. data/test/lib/puppettest/support/resources.rb +7 -7
  771. data/test/lib/puppettest/support/utils.rb +10 -16
  772. data/test/lib/puppettest/testcase.rb +2 -1
  773. data/test/network/authconfig.rb +1 -1
  774. data/test/network/authorization.rb +1 -1
  775. data/test/network/authstore.rb +57 -14
  776. data/test/network/client/ca.rb +1 -0
  777. data/test/network/client/resource.rb +12 -50
  778. data/test/network/client_request.rb +1 -1
  779. data/test/network/handler/bucket.rb +2 -2
  780. data/test/network/handler/fileserver.rb +17 -21
  781. data/test/network/handler/master.rb +5 -5
  782. data/test/network/handler/report.rb +3 -3
  783. data/test/network/handler/resource.rb +29 -75
  784. data/test/network/handler/runner.rb +8 -58
  785. data/test/network/rights.rb +1 -1
  786. data/test/network/server/mongrel_test.rb +15 -1
  787. data/test/network/server/webrick.rb +0 -36
  788. data/test/network/xmlrpc/webrick_servlet.rb +5 -5
  789. data/test/other/dsl.rb +3 -3
  790. data/test/other/events.rb +15 -15
  791. data/test/other/puppet.rb +2 -32
  792. data/test/other/relationships.rb +21 -148
  793. data/test/other/report.rb +20 -23
  794. data/test/other/transactions.rb +110 -298
  795. data/test/puppet/defaults.rb +1 -1
  796. data/test/puppet/tc_suidmanager.rb +1 -1
  797. data/test/rails/railsparameter.rb +4 -4
  798. data/test/ral/manager/attributes.rb +12 -68
  799. data/test/ral/manager/instances.rb +3 -19
  800. data/test/ral/manager/manager.rb +7 -7
  801. data/test/ral/manager/provider.rb +7 -7
  802. data/test/ral/manager/type.rb +54 -349
  803. data/test/ral/providers/cron/crontab.rb +14 -14
  804. data/test/ral/providers/group.rb +5 -6
  805. data/test/ral/providers/host/parsed.rb +3 -3
  806. data/test/ral/providers/mailalias/aliases.rb +4 -4
  807. data/test/ral/providers/package.rb +3 -3
  808. data/test/ral/providers/package/aptitude.rb +55 -55
  809. data/test/ral/providers/package/aptrpm.rb +7 -7
  810. data/test/ral/providers/parsedfile.rb +10 -14
  811. data/test/ral/providers/port/parsed.rb +6 -6
  812. data/test/ral/providers/provider.rb +10 -10
  813. data/test/ral/providers/service/base.rb +32 -32
  814. data/test/ral/providers/sshkey/parsed.rb +14 -14
  815. data/test/ral/providers/user.rb +16 -17
  816. data/test/ral/providers/user/useradd.rb +19 -22
  817. data/test/ral/type/cron.rb +21 -28
  818. data/test/ral/type/exec.rb +57 -60
  819. data/test/ral/type/file.rb +88 -862
  820. data/test/ral/type/file/target.rb +21 -70
  821. data/test/ral/type/fileignoresource.rb +37 -44
  822. data/test/ral/type/filesources.rb +43 -473
  823. data/test/ral/type/group.rb +6 -7
  824. data/test/ral/type/host.rb +14 -30
  825. data/test/ral/type/mailalias.rb +3 -3
  826. data/test/ral/type/port.rb +5 -5
  827. data/test/ral/type/resources.rb +37 -37
  828. data/test/ral/type/service.rb +3 -3
  829. data/test/ral/type/sshkey.rb +34 -39
  830. data/test/ral/type/user.rb +15 -14
  831. data/test/ral/type/yumrepo.rb +18 -17
  832. data/test/ral/type/zone.rb +4 -6
  833. data/test/test +9 -9
  834. data/test/util/fileparsing.rb +10 -10
  835. data/test/util/inifile.rb +6 -6
  836. data/test/util/instance_loader.rb +1 -1
  837. data/test/util/log.rb +2 -2
  838. data/test/util/metrics.rb +1 -6
  839. data/test/util/package.rb +1 -1
  840. data/test/util/pidlock.rb +116 -116
  841. data/test/util/settings.rb +40 -429
  842. data/test/util/storage.rb +5 -5
  843. data/test/util/subclass_loader.rb +0 -7
  844. data/test/util/utiltest.rb +10 -29
  845. metadata +1369 -941
  846. data/bin/puppetca +0 -363
  847. data/bin/puppetd +0 -439
  848. data/bin/puppetmasterd +0 -289
  849. data/bin/puppetrun +0 -369
  850. data/conf/redhat/lsb-config.patch +0 -51
  851. data/conf/redhat/no-chuser-0.15.1.patch +0 -38
  852. data/conf/redhat/no-lockdir.patch +0 -13
  853. data/examples/mac_netinfo.pp +0 -5
  854. data/ext/passenger/README +0 -63
  855. data/ext/passenger/apache2.conf +0 -29
  856. data/ext/passenger/config.ru +0 -40
  857. data/lib/puppet/config_stores/rest.rb +0 -60
  858. data/lib/puppet/executables/client/certhandler.rb +0 -82
  859. data/lib/puppet/indirector/file_content/modules.rb +0 -11
  860. data/lib/puppet/indirector/file_metadata/modules.rb +0 -17
  861. data/lib/puppet/indirector/module_files.rb +0 -82
  862. data/lib/puppet/indirector/ssl_rsa.rb +0 -5
  863. data/lib/puppet/indirector/ssl_rsa/file.rb +0 -33
  864. data/lib/puppet/network/client/master.rb +0 -524
  865. data/lib/puppet/network/http_server/rack.rb +0 -148
  866. data/lib/puppet/pgraph.rb +0 -121
  867. data/lib/puppet/provider/group/netinfo.rb +0 -15
  868. data/lib/puppet/provider/host/netinfo.rb +0 -19
  869. data/lib/puppet/provider/mount/netinfo.rb +0 -37
  870. data/lib/puppet/provider/nameservice/netinfo.rb +0 -224
  871. data/lib/puppet/provider/user/netinfo.rb +0 -111
  872. data/lib/puppet/util/fact_store.rb +0 -59
  873. data/lib/puppet/util/uri_helper.rb +0 -22
  874. data/spec/integration/file_serving/configuration.rb +0 -43
  875. data/spec/integration/indirector/module_files.rb +0 -57
  876. data/spec/unit/executables/client/certhandler.rb +0 -135
  877. data/spec/unit/indirector/file_content/modules.rb +0 -18
  878. data/spec/unit/indirector/file_metadata/modules.rb +0 -42
  879. data/spec/unit/indirector/module_files.rb +0 -259
  880. data/spec/unit/indirector/ssl_rsa/file.rb +0 -121
  881. data/spec/unit/network/client/master.rb +0 -442
  882. data/spec/unit/node/catalog.rb +0 -865
  883. data/spec/unit/other/pgraph.rb +0 -210
  884. data/spec/unit/resource_reference.rb +0 -73
  885. data/spec/unit/util/uri_helper.rb +0 -41
  886. data/test/data/snippets/ifexpression.rb +0 -6
  887. data/test/executables/filebucket.rb +0 -51
  888. data/test/executables/puppetbin.rb +0 -104
  889. data/test/executables/puppetca.rb +0 -115
  890. data/test/executables/puppetd.rb +0 -55
  891. data/test/executables/puppetmasterd.rb +0 -147
  892. data/test/network/client/client.rb +0 -195
  893. data/test/network/client/master.rb +0 -490
  894. data/test/network/daemon.rb +0 -70
  895. data/test/network/handler/handler.rb +0 -63
  896. data/test/other/overrides.rb +0 -107
  897. data/test/puppet/conffiles.rb +0 -107
  898. data/test/rails/ast.rb +0 -73
  899. data/test/rails/configuration.rb +0 -71
  900. data/test/rails/host.rb +0 -154
  901. data/test/rails/railsresource.rb +0 -251
  902. data/test/ral/providers/host/netinfo.rb +0 -56
  903. data/test/ral/providers/mount/netinfo.rb +0 -79
  904. data/test/ral/type/basic.rb +0 -85
  905. data/test/ral/type/filebucket.rb +0 -157
  906. data/test/ral/type/parameter.rb +0 -174
  907. data/test/ral/type/property.rb +0 -388
  908. data/test/ral/type/tidy.rb +0 -291
  909. data/test/util/autoload.rb +0 -145
  910. data/test/util/features.rb +0 -95
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.dirname(__FILE__) + '/../../../spec_helper'
4
+
5
+ require 'puppet/indirector/runner/rest'
6
+
7
+ describe Puppet::Agent::Runner::Rest do
8
+ it "should be a sublcass of Puppet::Indirector::REST" do
9
+ Puppet::Agent::Runner::Rest.superclass.should equal(Puppet::Indirector::REST)
10
+ end
11
+ end
@@ -0,0 +1,280 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # Created by Luke Kanies on 2008-3-10.
4
+ # Copyright (c) 2007. All rights reserved.
5
+
6
+ require File.dirname(__FILE__) + '/../../spec_helper'
7
+
8
+ require 'puppet/indirector/ssl_file'
9
+
10
+ describe Puppet::Indirector::SslFile do
11
+ before do
12
+ @model = mock 'model'
13
+ @indirection = stub 'indirection', :name => :testing, :model => @model
14
+ Puppet::Indirector::Indirection.expects(:instance).with(:testing).returns(@indirection)
15
+ @file_class = Class.new(Puppet::Indirector::SslFile) do
16
+ def self.to_s
17
+ "Testing::Mytype"
18
+ end
19
+ end
20
+
21
+ @setting = :mydir
22
+ @file_class.store_in @setting
23
+ @path = "/my/directory"
24
+ Puppet.settings.stubs(:value).returns "stubbed_setting"
25
+ Puppet.settings.stubs(:value).with(@setting).returns(@path)
26
+ Puppet.settings.stubs(:value).with(:trace).returns(false)
27
+ end
28
+
29
+ it "should use :main and :ssl upon initialization" do
30
+ Puppet.settings.expects(:use).with(:main, :ssl)
31
+ @file_class.new
32
+ end
33
+
34
+ it "should return a nil collection directory if no directory setting has been provided" do
35
+ @file_class.store_in nil
36
+ @file_class.collection_directory.should be_nil
37
+ end
38
+
39
+ it "should return a nil file location if no location has been provided" do
40
+ @file_class.store_at nil
41
+ @file_class.file_location.should be_nil
42
+ end
43
+
44
+ it "should fail if no store directory or file location has been set" do
45
+ @file_class.store_in nil
46
+ @file_class.store_at nil
47
+ lambda { @file_class.new }.should raise_error(Puppet::DevError)
48
+ end
49
+
50
+ describe "when managing ssl files" do
51
+ before do
52
+ Puppet.settings.stubs(:use)
53
+ @searcher = @file_class.new
54
+
55
+ @cert = stub 'certificate', :name => "myname"
56
+ @certpath = File.join(@path, "myname" + ".pem")
57
+
58
+ @request = stub 'request', :key => @cert.name, :instance => @cert
59
+ end
60
+
61
+ it "should consider the file a ca file if the name is equal to what the SSL::Host class says is the CA name" do
62
+ Puppet::SSL::Host.expects(:ca_name).returns "amaca"
63
+ @searcher.should be_ca("amaca")
64
+ end
65
+
66
+ describe "when choosing the location for certificates" do
67
+ it "should set them at the ca setting's path if a ca setting is available and the name resolves to the CA name" do
68
+ @file_class.store_in nil
69
+ @file_class.store_at :mysetting
70
+ @file_class.store_ca_at :casetting
71
+
72
+ Puppet.settings.stubs(:value).with(:casetting).returns "/ca/file"
73
+
74
+ @searcher.expects(:ca?).with(@cert.name).returns true
75
+ @searcher.path(@cert.name).should == "/ca/file"
76
+ end
77
+
78
+ it "should set them at the file location if a file setting is available" do
79
+ @file_class.store_in nil
80
+ @file_class.store_at :mysetting
81
+
82
+ Puppet.settings.stubs(:value).with(:mysetting).returns "/some/file"
83
+
84
+ @searcher.path(@cert.name).should == "/some/file"
85
+ end
86
+
87
+ it "should set them in the setting directory, with the certificate name plus '.pem', if a directory setting is available" do
88
+ @searcher.path(@cert.name).should == @certpath
89
+ end
90
+ end
91
+
92
+ describe "when finding certificates on disk" do
93
+ describe "and no certificate is present" do
94
+ before do
95
+ # Stub things so the case management bits work.
96
+ FileTest.stubs(:exist?).with(File.dirname(@certpath)).returns false
97
+ FileTest.expects(:exist?).with(@certpath).returns false
98
+ end
99
+
100
+ it "should return nil" do
101
+ @searcher.find(@request).should be_nil
102
+ end
103
+ end
104
+
105
+ describe "and a certificate is present" do
106
+ before do
107
+ FileTest.expects(:exist?).with(@certpath).returns true
108
+ end
109
+
110
+ it "should return an instance of the model, which it should use to read the certificate" do
111
+ cert = mock 'cert'
112
+ model = mock 'model'
113
+ @file_class.stubs(:model).returns model
114
+
115
+ model.expects(:new).with("myname").returns cert
116
+ cert.expects(:read).with(@certpath)
117
+ @searcher.find(@request).should equal(cert)
118
+ end
119
+ end
120
+
121
+ describe "and a certificate is present but has uppercase letters" do
122
+ before do
123
+ @request = stub 'request', :key => "myhost"
124
+ end
125
+
126
+ # This is kind of more an integration test; it's for #1382, until
127
+ # the support for upper-case certs can be removed around mid-2009.
128
+ it "should rename the existing file to the lower-case path" do
129
+ @path = @searcher.path("myhost")
130
+ FileTest.expects(:exist?).with(@path).returns(false)
131
+ dir, file = File.split(@path)
132
+ FileTest.expects(:exist?).with(dir).returns true
133
+ Dir.expects(:entries).with(dir).returns [".", "..", "something.pem", file.upcase]
134
+
135
+ File.expects(:rename).with(File.join(dir, file.upcase), @path)
136
+
137
+ cert = mock 'cert'
138
+ model = mock 'model'
139
+ @searcher.stubs(:model).returns model
140
+ @searcher.model.expects(:new).with("myhost").returns cert
141
+ cert.expects(:read).with(@path)
142
+
143
+ @searcher.find(@request)
144
+ end
145
+ end
146
+ end
147
+
148
+ describe "when saving certificates to disk" do
149
+ before do
150
+ FileTest.stubs(:directory?).returns true
151
+ FileTest.stubs(:writable?).returns true
152
+ end
153
+
154
+ it "should fail if the directory is absent" do
155
+ FileTest.expects(:directory?).with(File.dirname(@certpath)).returns false
156
+ lambda { @searcher.save(@request) }.should raise_error(Puppet::Error)
157
+ end
158
+
159
+ it "should fail if the directory is not writeable" do
160
+ FileTest.stubs(:directory?).returns true
161
+ FileTest.expects(:writable?).with(File.dirname(@certpath)).returns false
162
+ lambda { @searcher.save(@request) }.should raise_error(Puppet::Error)
163
+ end
164
+
165
+ it "should save to the path the output of converting the certificate to a string" do
166
+ fh = mock 'filehandle'
167
+ fh.expects(:print).with("mycert")
168
+
169
+ @searcher.stubs(:write).yields fh
170
+ @cert.expects(:to_s).returns "mycert"
171
+
172
+ @searcher.save(@request)
173
+ end
174
+
175
+ describe "and a directory setting is set" do
176
+ it "should use the Settings class to write the file" do
177
+ @searcher.class.store_in @setting
178
+ fh = mock 'filehandle'
179
+ fh.stubs :print
180
+ Puppet.settings.expects(:writesub).with(@setting, @certpath).yields fh
181
+
182
+ @searcher.save(@request)
183
+ end
184
+ end
185
+
186
+ describe "and a file location is set" do
187
+ it "should use the filehandle provided by the Settings" do
188
+ @searcher.class.store_at @setting
189
+
190
+ fh = mock 'filehandle'
191
+ fh.stubs :print
192
+ Puppet.settings.expects(:write).with(@setting).yields fh
193
+ @searcher.save(@request)
194
+ end
195
+ end
196
+
197
+ describe "and the name is the CA name and a ca setting is set" do
198
+ it "should use the filehandle provided by the Settings" do
199
+ @searcher.class.store_at @setting
200
+ @searcher.class.store_ca_at :castuff
201
+
202
+ fh = mock 'filehandle'
203
+ fh.stubs :print
204
+ Puppet.settings.expects(:write).with(:castuff).yields fh
205
+ @searcher.stubs(:ca?).returns true
206
+ @searcher.save(@request)
207
+ end
208
+ end
209
+ end
210
+
211
+ describe "when destroying certificates" do
212
+ describe "that do not exist" do
213
+ before do
214
+ FileTest.expects(:exist?).with(@certpath).returns false
215
+ end
216
+
217
+ it "should return false" do
218
+ @searcher.destroy(@request).should be_false
219
+ end
220
+ end
221
+
222
+ describe "that exist" do
223
+ before do
224
+ FileTest.expects(:exist?).with(@certpath).returns true
225
+ end
226
+
227
+ it "should unlink the certificate file" do
228
+ File.expects(:unlink).with(@certpath)
229
+ @searcher.destroy(@request)
230
+ end
231
+
232
+ it "should log that is removing the file" do
233
+ File.stubs(:exist?).returns true
234
+ File.stubs(:unlink)
235
+ Puppet.expects(:notice)
236
+ @searcher.destroy(@request)
237
+ end
238
+ end
239
+ end
240
+
241
+ describe "when searching for certificates" do
242
+ before do
243
+ @model = mock 'model'
244
+ @file_class.stubs(:model).returns @model
245
+ end
246
+ it "should return a certificate instance for all files that exist" do
247
+ Dir.expects(:entries).with(@path).returns %w{one.pem two.pem}
248
+
249
+ one = stub 'one', :read => nil
250
+ two = stub 'two', :read => nil
251
+
252
+ @model.expects(:new).with("one").returns one
253
+ @model.expects(:new).with("two").returns two
254
+
255
+ @searcher.search(@request).should == [one, two]
256
+ end
257
+
258
+ it "should read each certificate in using the model's :read method" do
259
+ Dir.expects(:entries).with(@path).returns %w{one.pem}
260
+
261
+ one = stub 'one'
262
+ one.expects(:read).with(File.join(@path, "one.pem"))
263
+
264
+ @model.expects(:new).with("one").returns one
265
+
266
+ @searcher.search(@request)
267
+ end
268
+
269
+ it "should skip any files that do not match /\.pem$/" do
270
+ Dir.expects(:entries).with(@path).returns %w{. .. one.pem}
271
+
272
+ one = stub 'one', :read => nil
273
+
274
+ @model.expects(:new).with("one").returns one
275
+
276
+ @searcher.search(@request)
277
+ end
278
+ end
279
+ end
280
+ end
@@ -2,246 +2,246 @@
2
2
 
3
3
  require File.dirname(__FILE__) + '/../spec_helper'
4
4
 
5
- describe Puppet::Module, " when building its search path" do
6
- include PuppetTest
7
-
8
- it "should fully qualify unqualified paths in the search path" do
9
- Puppet[:modulepath] = "something:/my/something"
10
- File.stubs(:directory?).returns(true)
11
- Puppet::Module.modulepath.should == [File.join(Dir.getwd, 'something'), "/my/something"]
5
+ describe Puppet::Module do
6
+ before do
7
+ # This is necessary because of the extra checks we have for the deprecated
8
+ # 'plugins' directory
9
+ FileTest.stubs(:exist?).returns false
12
10
  end
13
11
 
14
- it "should ignore paths that do not exist" do
15
- Puppet[:modulepath] = "/yes:/no"
16
- File.expects(:directory?).with("/yes").returns(true)
17
- File.expects(:directory?).with("/no").returns(false)
18
- Puppet::Module.modulepath.should == %w{/yes}
19
- end
12
+ it "should have a class method that returns a named module from a given environment" do
13
+ env = mock 'module'
14
+ env.expects(:module).with("mymod").returns "yep"
15
+ Puppet::Node::Environment.expects(:new).with("myenv").returns env
20
16
 
21
- it "should prepend PUPPETLIB in search path when set" do
22
- Puppet[:modulepath] = "/my/mod:/other/mod"
23
- ENV["PUPPETLIB"] = "/env/mod:/myenv/mod"
24
- File.stubs(:directory?).returns(true)
25
- Puppet::Module.modulepath.should == %w{/env/mod /myenv/mod /my/mod /other/mod}
17
+ Puppet::Module.find("mymod", "myenv").should == "yep"
26
18
  end
27
19
 
28
- it "should use the environment-specific search path when a node environment is provided" do
29
- Puppet.settings.expects(:value).with(:modulepath, "myenv").returns("/mone:/mtwo")
30
- File.stubs(:directory?).returns(true)
31
- Puppet::Module.modulepath("myenv").should == %w{/mone /mtwo}
32
- end
20
+ it "should return nil if asked for a named module that doesn't exist" do
21
+ env = mock 'module'
22
+ env.expects(:module).with("mymod").returns nil
23
+ Puppet::Node::Environment.expects(:new).with("myenv").returns env
33
24
 
34
- after do
35
- ENV["PUPPETLIB"] = nil
25
+ Puppet::Module.find("mymod", "myenv").should be_nil
36
26
  end
37
- end
38
27
 
39
- describe Puppet::Module, " when searching for modules" do
40
- it "should find modules in the search path" do
41
- path = %w{/dir/path}
42
- Puppet::Module.stubs(:modulepath).returns(path)
43
- File.stubs(:directory?).returns(true)
44
- mod = Puppet::Module.find("mymod")
45
- mod.should be_an_instance_of(Puppet::Module)
46
- mod.path.should == "/dir/path/mymod"
28
+ it "should return nil if asked for a module whose name is 'nil'" do
29
+ Puppet::Module.find(nil, "myenv").should be_nil
47
30
  end
48
31
 
49
- it "should not search for fully qualified modules" do
50
- path = %w{/dir/path}
51
- Puppet::Module.expects(:modulepath).never
52
- File.expects(:directory?).never
53
- Puppet::Module.find("/mymod").should be_nil
32
+ it "should provide support for logging" do
33
+ Puppet::Module.ancestors.should be_include(Puppet::Util::Logging)
54
34
  end
55
35
 
56
- it "should search for modules in the order specified in the search path" do
57
- Puppet[:modulepath] = "/one:/two:/three"
58
- Puppet::Module.stubs(:modulepath).returns %w{/one /two /three}
59
- File.expects(:directory?).with("/one/mod").returns(false)
60
- File.expects(:directory?).with("/two/mod").returns(true)
61
- File.expects(:directory?).with("/three/mod").never
62
- mod = Puppet::Module.find("mod")
63
- mod.path.should == "/two/mod"
36
+ it "should be able to be converted to a string" do
37
+ Puppet::Module.new("foo").to_s.should == "Module foo"
64
38
  end
65
39
 
66
- it "should use a node environment if specified" do
67
- Puppet::Module.expects(:modulepath).with("myenv").returns([])
68
- Puppet::Module.find("mymod", "myenv")
40
+ it "should add the path to its string form if the module is found" do
41
+ mod = Puppet::Module.new("foo")
42
+ mod.stubs(:path).returns "/a"
43
+ mod.to_s.should == "Module foo(/a)"
69
44
  end
70
- end
71
45
 
72
- describe Puppet::Module, " when searching for templates" do
73
- it "should return fully-qualified templates directly" do
74
- Puppet::Module.expects(:modulepath).never
75
- Puppet::Module.find_template("/my/template").should == "/my/template"
46
+ it "should fail if its name is not alphanumeric" do
47
+ lambda { Puppet::Module.new(".something") }.should raise_error(Puppet::Module::InvalidName)
76
48
  end
77
49
 
78
- it "should return the template from the first found module" do
79
- Puppet[:modulepath] = "/one:/two"
80
- File.stubs(:directory?).returns(true)
81
- Puppet::Module.find_template("mymod/mytemplate").should == "/one/mymod/templates/mytemplate"
82
- end
83
-
84
- it "should return the file in the templatedir if it exists" do
85
- Puppet.settings.expects(:value).with(:templatedir, nil).returns("/my/templates")
86
- Puppet[:modulepath] = "/one:/two"
87
- File.stubs(:directory?).returns(true)
88
- File.stubs(:exists?).returns(true)
89
- Puppet::Module.find_template("mymod/mytemplate").should == "/my/templates/mymod/mytemplate"
50
+ it "should require a name at initialization" do
51
+ lambda { Puppet::Module.new }.should raise_error(ArgumentError)
90
52
  end
91
53
 
92
- it "should raise an error if no valid templatedir exists" do
93
- Puppet::Module.stubs(:templatepath).with(nil).returns(nil)
94
- lambda { Puppet::Module.find_template("mytemplate") }.should raise_error
54
+ it "should convert an environment name into an Environment instance" do
55
+ Puppet::Module.new("foo", "prod").environment.should be_instance_of(Puppet::Node::Environment)
95
56
  end
96
57
 
97
- it "should not raise an error if no valid templatedir exists and the template exists in a module" do
98
- Puppet::Module.stubs(:templatepath).with(nil).returns(nil)
99
- Puppet[:modulepath] = "/one:/two"
100
- File.stubs(:directory?).returns(true)
101
- File.stubs(:exists?).returns(true)
102
- Puppet::Module.find_template("mymod/mytemplate").should == "/one/mymod/templates/mytemplate"
58
+ it "should accept an environment at initialization" do
59
+ Puppet::Module.new("foo", :prod).environment.name.should == :prod
103
60
  end
104
61
 
105
- it "should use the main templatedir if no module is found" do
106
- Puppet::Module.stubs(:templatepath).with(nil).returns(["/my/templates"])
107
- Puppet::Module.expects(:find).with("mymod", nil).returns(nil)
108
- Puppet::Module.find_template("mymod/mytemplate").should == "/my/templates/mymod/mytemplate"
62
+ it "should use the default environment if none is provided" do
63
+ env = Puppet::Node::Environment.new
64
+ Puppet::Module.new("foo").environment.should equal(env)
109
65
  end
110
66
 
111
- it "should return unqualified templates directly in the template dir" do
112
- Puppet::Module.stubs(:templatepath).with(nil).returns(["/my/templates"])
113
- Puppet::Module.expects(:find).never
114
- Puppet::Module.find_template("mytemplate").should == "/my/templates/mytemplate"
67
+ it "should use any provided Environment instance" do
68
+ env = Puppet::Node::Environment.new
69
+ Puppet::Module.new("foo", env).environment.should equal(env)
115
70
  end
116
71
 
117
- it "should accept relative templatedirs" do
118
- Puppet[:templatedir] = "my/templates"
119
- File.expects(:directory?).with(File.join(Dir.getwd,"my/templates")).returns(true)
120
- Puppet::Module.find_template("mytemplate").should == File.join(Dir.getwd,"my/templates/mytemplate")
72
+ it "should return the path to the first found instance in its environment's module paths as its path" do
73
+ mod = Puppet::Module.new("foo")
74
+ env = mock 'environment'
75
+ mod.stubs(:environment).returns env
76
+
77
+ env.expects(:modulepath).returns %w{/a /b /c}
78
+
79
+ FileTest.expects(:exist?).with("/a/foo").returns false
80
+ FileTest.expects(:exist?).with("/b/foo").returns true
81
+ FileTest.expects(:exist?).with("/c/foo").never
82
+
83
+ mod.path.should == "/b/foo"
121
84
  end
122
85
 
123
- it "should use the environment templatedir if no module is found and an environment is specified" do
124
- Puppet::Module.stubs(:templatepath).with("myenv").returns(["/myenv/templates"])
125
- Puppet::Module.expects(:find).with("mymod", "myenv").returns(nil)
126
- Puppet::Module.find_template("mymod/mytemplate", "myenv").should == "/myenv/templates/mymod/mytemplate"
86
+ it "should be considered existent if it exists in at least one module path" do
87
+ mod = Puppet::Module.new("foo")
88
+ mod.expects(:path).returns "/a/foo"
89
+ mod.should be_exist
127
90
  end
128
91
 
129
- it "should use first dir from environment templatedir if no module is found and an environment is specified" do
130
- Puppet::Module.stubs(:templatepath).with("myenv").returns(["/myenv/templates", "/two/templates"])
131
- Puppet::Module.expects(:find).with("mymod", "myenv").returns(nil)
132
- Puppet::Module.find_template("mymod/mytemplate", "myenv").should == "/myenv/templates/mymod/mytemplate"
92
+ it "should be considered nonexistent if it does not exist in any of the module paths" do
93
+ mod = Puppet::Module.new("foo")
94
+ mod.expects(:path).returns nil
95
+ mod.should_not be_exist
133
96
  end
134
97
 
135
- it "should use a valid dir when templatedir is a path for unqualified templates and the first dir contains template" do
136
- Puppet::Module.stubs(:templatepath).returns(["/one/templates", "/two/templates"])
137
- File.expects(:exists?).with("/one/templates/mytemplate").returns(true)
138
- Puppet::Module.expects(:find).never
139
- Puppet::Module.find_template("mytemplate").should == "/one/templates/mytemplate"
98
+ [:plugins, :templates, :files, :manifests].each do |filetype|
99
+ dirname = filetype == :plugins ? "lib" : filetype.to_s
100
+ it "should be able to return individual #{filetype}" do
101
+ mod = Puppet::Module.new("foo")
102
+ mod.stubs(:path).returns "/a/foo"
103
+ path = File.join("/a/foo", dirname, "my/file")
104
+ FileTest.expects(:exist?).with(path).returns true
105
+ mod.send(filetype.to_s.sub(/s$/, ''), "my/file").should == path
106
+ end
107
+
108
+ it "should consider #{filetype} to be present if their base directory exists" do
109
+ mod = Puppet::Module.new("foo")
110
+ mod.stubs(:path).returns "/a/foo"
111
+ path = File.join("/a/foo", dirname)
112
+ FileTest.expects(:exist?).with(path).returns true
113
+ mod.send(filetype.to_s + "?").should be_true
114
+ end
115
+
116
+ it "should consider #{filetype} to be absent if their base directory does not exist" do
117
+ mod = Puppet::Module.new("foo")
118
+ mod.stubs(:path).returns "/a/foo"
119
+ path = File.join("/a/foo", dirname)
120
+ FileTest.expects(:exist?).with(path).returns false
121
+ mod.send(filetype.to_s + "?").should be_false
122
+ end
123
+
124
+ it "should consider #{filetype} to be absent if the module base directory does not exist" do
125
+ mod = Puppet::Module.new("foo")
126
+ mod.stubs(:path).returns nil
127
+ mod.send(filetype.to_s + "?").should be_false
128
+ end
129
+
130
+ it "should return nil if asked to return individual #{filetype} that don't exist" do
131
+ mod = Puppet::Module.new("foo")
132
+ mod.stubs(:path).returns "/a/foo"
133
+ path = File.join("/a/foo", dirname, "my/file")
134
+ FileTest.expects(:exist?).with(path).returns false
135
+ mod.send(filetype.to_s.sub(/s$/, ''), "my/file").should be_nil
136
+ end
137
+
138
+ it "should return nil when asked for individual #{filetype} if the module does not exist" do
139
+ mod = Puppet::Module.new("foo")
140
+ mod.stubs(:path).returns nil
141
+ mod.send(filetype.to_s.sub(/s$/, ''), "my/file").should be_nil
142
+ end
143
+
144
+ it "should return the base directory if asked for a nil path" do
145
+ mod = Puppet::Module.new("foo")
146
+ mod.stubs(:path).returns "/a/foo"
147
+ base = File.join("/a/foo", dirname)
148
+ FileTest.expects(:exist?).with(base).returns true
149
+ mod.send(filetype.to_s.sub(/s$/, ''), nil).should == base
150
+ end
140
151
  end
141
152
 
142
- it "should use a valid dir when templatedir is a path for unqualified templates and only second dir contains template" do
143
- Puppet::Module.stubs(:templatepath).returns(["/one/templates", "/two/templates"])
144
- File.expects(:exists?).with("/one/templates/mytemplate").returns(false)
145
- File.expects(:exists?).with("/two/templates/mytemplate").returns(true)
146
- Puppet::Module.expects(:find).never
147
- Puppet::Module.find_template("mytemplate").should == "/two/templates/mytemplate"
153
+ %w{plugins files}.each do |filetype|
154
+ short = filetype.sub(/s$/, '')
155
+ dirname = filetype == "plugins" ? "lib" : filetype.to_s
156
+ it "should be able to return the #{short} directory" do
157
+ Puppet::Module.new("foo").should respond_to(short + "_directory")
158
+ end
159
+
160
+ it "should return the path to the #{short} directory" do
161
+ mod = Puppet::Module.new("foo")
162
+ mod.stubs(:path).returns "/a/foo"
163
+
164
+ mod.send(short + "_directory").should == "/a/foo/#{dirname}"
165
+ end
148
166
  end
149
167
 
150
- it "should use the node environment if specified" do
151
- Puppet.settings.stubs(:value).returns.returns("/my/directory")
152
- Puppet.settings.expects(:value).with(:modulepath, "myenv").returns("/my/modules")
153
- File.stubs(:directory?).returns(true)
154
- Puppet::Module.find_template("mymod/envtemplate", "myenv").should == "/my/modules/mymod/templates/envtemplate"
168
+ it "should throw a warning if plugins are in a 'plugins' directory rather than a 'lib' directory" do
169
+ mod = Puppet::Module.new("foo")
170
+ mod.stubs(:path).returns "/a/foo"
171
+ FileTest.expects(:exist?).with("/a/foo/plugins").returns true
172
+
173
+ mod.expects(:warning)
174
+
175
+ mod.plugin_directory.should == "/a/foo/plugins"
176
+ end
177
+
178
+ it "should default to 'lib' for the plugins directory" do
179
+ mod = Puppet::Module.new("foo")
180
+ mod.stubs(:path).returns "/a/foo"
181
+ mod.plugin_directory.should == "/a/foo/lib"
182
+ end
183
+ end
184
+
185
+ describe Puppet::Module, " when building its search path" do
186
+ it "should use the current environment's search path if no environment is specified" do
187
+ env = mock 'env'
188
+ env.expects(:modulepath).returns "eh"
189
+ Puppet::Node::Environment.expects(:new).with(nil).returns env
190
+
191
+ Puppet::Module.modulepath.should == "eh"
155
192
  end
156
193
 
157
- after { Puppet.settings.clear }
194
+ it "should use the specified environment's search path if an environment is specified" do
195
+ env = mock 'env'
196
+ env.expects(:modulepath).returns "eh"
197
+ Puppet::Node::Environment.expects(:new).with("foo").returns env
198
+
199
+ Puppet::Module.modulepath("foo").should == "eh"
200
+ end
158
201
  end
159
202
 
160
- describe Puppet::Module, " when searching for manifests when no module is found" do
203
+ describe Puppet::Module, "when finding matching manifests" do
161
204
  before do
162
- File.stubs(:find).returns(nil)
205
+ @mod = Puppet::Module.new("mymod")
206
+ @mod.stubs(:path).returns "/a"
163
207
  end
164
208
 
165
- it "should not look for modules when paths are fully qualified" do
166
- Puppet.expects(:value).with(:modulepath).never
167
- file = "/fully/qualified/file.pp"
168
- Dir.stubs(:glob).with(file).returns([file])
169
- Puppet::Module.find_manifests(file)
170
- end
209
+ it "should return all manifests matching the glob pattern" do
210
+ Dir.expects(:glob).with("/a/manifests/yay/*.pp").returns(%w{foo bar})
171
211
 
172
- it "should directly return fully qualified files" do
173
- file = "/fully/qualified/file.pp"
174
- Dir.stubs(:glob).with(file).returns([file])
175
- Puppet::Module.find_manifests(file).should == [file]
212
+ @mod.match_manifests("yay/*.pp").should == %w{foo bar}
176
213
  end
177
214
 
178
- it "should match against provided fully qualified patterns" do
179
- pattern = "/fully/qualified/pattern/*"
180
- Dir.expects(:glob).with(pattern).returns(%w{my file list})
181
- Puppet::Module.find_manifests(pattern).should == %w{my file list}
182
- end
215
+ it "should not return directories" do
216
+ Dir.expects(:glob).with("/a/manifests/yay/*.pp").returns(%w{foo bar})
183
217
 
184
- it "should look for files relative to the current directory" do
185
- cwd = Dir.getwd
186
- Dir.expects(:glob).with("#{cwd}/foobar/init.pp").returns(["#{cwd}/foobar/init.pp"])
187
- Puppet::Module.find_manifests("foobar/init.pp").should == ["#{cwd}/foobar/init.pp"]
218
+ FileTest.expects(:directory?).with("foo").returns false
219
+ FileTest.expects(:directory?).with("bar").returns true
220
+ @mod.match_manifests("yay/*.pp").should == %w{foo}
188
221
  end
189
222
 
190
- it "should only return files, not directories" do
191
- pattern = "/fully/qualified/pattern/*"
192
- file = "/my/file"
193
- dir = "/my/directory"
194
- Dir.expects(:glob).with(pattern).returns([file, dir])
195
- FileTest.expects(:directory?).with(file).returns(false)
196
- FileTest.expects(:directory?).with(dir).returns(true)
197
- Puppet::Module.find_manifests(pattern).should == [file]
198
- end
199
- end
223
+ it "should default to the 'init.pp' file if no glob pattern is specified" do
224
+ FileTest.stubs(:exist?).returns true
200
225
 
201
- describe Puppet::Module, " when searching for manifests in a found module" do
202
- it "should return the manifests from the first found module" do
203
- Puppet[:modulepath] = "/one:/two"
204
- File.stubs(:directory?).returns(true)
205
- Dir.expects(:glob).with("/one/mymod/manifests/init.pp").returns(%w{/one/mymod/manifests/init.pp})
206
- Puppet::Module.find_manifests("mymod/init.pp").should == ["/one/mymod/manifests/init.pp"]
226
+ @mod.match_manifests(nil).should == %w{/a/manifests/init.pp}
207
227
  end
208
228
 
209
- it "should use the node environment if specified" do
210
- Puppet.settings.expects(:value).with(:modulepath, "myenv").returns("/env/modules")
211
- File.stubs(:directory?).returns(true)
212
- Dir.expects(:glob).with("/env/modules/mymod/manifests/envmanifest.pp").returns(%w{/env/modules/mymod/manifests/envmanifest.pp})
213
- Puppet::Module.find_manifests("mymod/envmanifest.pp", :environment => "myenv").should == ["/env/modules/mymod/manifests/envmanifest.pp"]
214
- end
229
+ it "should return all manifests matching the glob pattern in all existing paths" do
230
+ Dir.expects(:glob).with("/a/manifests/yay/*.pp").returns(%w{a b})
215
231
 
216
- it "should return all manifests matching the glob pattern" do
217
- Puppet.settings.expects(:value).with(:modulepath, nil).returns("/my/modules")
218
- File.stubs(:directory?).returns(true)
219
- Dir.expects(:glob).with("/my/modules/mymod/manifests/yay/*.pp").returns(%w{/one /two})
220
- Puppet::Module.find_manifests("mymod/yay/*.pp").should == %w{/one /two}
232
+ @mod.match_manifests("yay/*.pp").should == %w{a b}
221
233
  end
222
234
 
223
- it "should not return directories" do
224
- Puppet.settings.expects(:value).with(:modulepath, nil).returns("/my/modules")
225
- File.stubs(:directory?).returns(true)
226
- Dir.expects(:glob).with("/my/modules/mymod/manifests/yay/*.pp").returns(%w{/one /two})
227
- FileTest.expects(:directory?).with("/one").returns false
228
- FileTest.expects(:directory?).with("/two").returns true
229
- Puppet::Module.find_manifests("mymod/yay/*.pp").should == %w{/one}
230
- end
235
+ it "should match the glob pattern plus '.pp' if no results are found" do
236
+ Dir.expects(:glob).with("/a/manifests/yay/foo").returns([])
237
+ Dir.expects(:glob).with("/a/manifests/yay/foo.pp").returns(%w{yay})
231
238
 
232
- it "should default to the 'init.pp' file in the manifests directory" do
233
- Puppet.settings.expects(:value).with(:modulepath, nil).returns("/my/modules")
234
- File.stubs(:directory?).returns(true)
235
- Dir.expects(:glob).with("/my/modules/mymod/manifests/init.pp").returns(%w{my manifest})
236
- Puppet::Module.find_manifests("mymod").should == %w{my manifest}
239
+ @mod.match_manifests("yay/foo").should == %w{yay}
237
240
  end
238
241
 
239
- after { Puppet.settings.clear }
240
- end
242
+ it "should return an empty array if no manifests matched" do
243
+ Dir.expects(:glob).with("/a/manifests/yay/*.pp").returns([])
241
244
 
242
- describe Puppet::Module, " when returning files" do
243
- it "should return the path to the module's 'files' directory" do
244
- mod = Puppet::Module.send(:new, "mymod", "/my/mod")
245
- mod.files.should == "/my/mod/files"
245
+ @mod.match_manifests("yay/*.pp").should == []
246
246
  end
247
247
  end