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
@@ -35,39 +35,36 @@ describe Puppet::Parser::Compiler do
35
35
  @node = Puppet::Node.new "testnode"
36
36
  @parser = Puppet::Parser::Parser.new :environment => "development"
37
37
 
38
- @scope_resource = stub 'scope_resource', :builtin? => true, :finish => nil, :ref => 'Class[main]'
38
+ @scope_resource = stub 'scope_resource', :builtin? => true, :finish => nil, :ref => 'Class[main]', :type => "class"
39
39
  @scope = stub 'scope', :resource => @scope_resource, :source => mock("source")
40
40
  @compiler = Puppet::Parser::Compiler.new(@node, @parser)
41
41
  end
42
42
 
43
- describe Puppet::Parser::Compiler do
44
-
45
- it "should be able to store references to class scopes" do
46
- lambda { @compiler.class_set "myname", "myscope" }.should_not raise_error
47
- end
43
+ it "should be able to store references to class scopes" do
44
+ lambda { @compiler.class_set "myname", "myscope" }.should_not raise_error
45
+ end
48
46
 
49
- it "should be able to retrieve class scopes by name" do
50
- @compiler.class_set "myname", "myscope"
51
- @compiler.class_scope("myname").should == "myscope"
52
- end
47
+ it "should be able to retrieve class scopes by name" do
48
+ @compiler.class_set "myname", "myscope"
49
+ @compiler.class_scope("myname").should == "myscope"
50
+ end
53
51
 
54
- it "should be able to retrieve class scopes by object" do
55
- klass = mock 'ast_class'
56
- klass.expects(:classname).returns("myname")
57
- @compiler.class_set "myname", "myscope"
58
- @compiler.class_scope(klass).should == "myscope"
59
- end
52
+ it "should be able to retrieve class scopes by object" do
53
+ klass = mock 'ast_class'
54
+ klass.expects(:classname).returns("myname")
55
+ @compiler.class_set "myname", "myscope"
56
+ @compiler.class_scope(klass).should == "myscope"
57
+ end
60
58
 
61
- it "should be able to return a class list containing all set classes" do
62
- @compiler.class_set "", "empty"
63
- @compiler.class_set "one", "yep"
64
- @compiler.class_set "two", "nope"
59
+ it "should be able to return a class list containing all set classes" do
60
+ @compiler.class_set "", "empty"
61
+ @compiler.class_set "one", "yep"
62
+ @compiler.class_set "two", "nope"
65
63
 
66
- @compiler.classlist.sort.should == %w{one two}.sort
67
- end
64
+ @compiler.classlist.sort.should == %w{one two}.sort
68
65
  end
69
66
 
70
- describe Puppet::Parser::Compiler, " when initializing" do
67
+ describe "when initializing" do
71
68
 
72
69
  it "should set its node attribute" do
73
70
  @compiler.node.should equal(@node)
@@ -82,12 +79,16 @@ describe Puppet::Parser::Compiler do
82
79
  end
83
80
 
84
81
  it "should detect when ast nodes are present" do
85
- @parser.nodes["testing"] = "yay"
82
+ @parser.expects(:nodes?).returns true
86
83
  @compiler.ast_nodes?.should be_true
87
84
  end
85
+
86
+ it "should copy the parser version to the catalog" do
87
+ @compiler.catalog.version.should == @parser.version
88
+ end
88
89
  end
89
90
 
90
- describe Puppet::Parser::Compiler, "when managing scopes" do
91
+ describe "when managing scopes" do
91
92
 
92
93
  it "should create a top scope" do
93
94
  @compiler.topscope.should be_instance_of(Puppet::Parser::Scope)
@@ -109,7 +110,7 @@ describe Puppet::Parser::Compiler do
109
110
  end
110
111
  end
111
112
 
112
- describe Puppet::Parser::Compiler, " when compiling" do
113
+ describe "when compiling" do
113
114
 
114
115
  def compile_methods
115
116
  [:set_node_parameters, :evaluate_main, :evaluate_ast_node, :evaluate_node_classes, :evaluate_generators, :fail_on_unevaluated,
@@ -142,22 +143,12 @@ describe Puppet::Parser::Compiler do
142
143
  @compiler.class.publicize_methods(:evaluate_node_classes) { @compiler.evaluate_node_classes }
143
144
  end
144
145
 
145
- it "should enable ast_nodes if the parser has any nodes" do
146
- @parser.expects(:nodes).returns(:one => :yay)
147
- @compiler.ast_nodes?.should be_true
148
- end
149
-
150
- it "should disable ast_nodes if the parser has no nodes" do
151
- @parser.expects(:nodes).returns({})
152
- @compiler.ast_nodes?.should be_false
153
- end
154
-
155
146
  it "should evaluate the main class if it exists" do
156
147
  compile_stub(:evaluate_main)
157
148
  main_class = mock 'main_class'
158
149
  main_class.expects(:evaluate_code).with { |r| r.is_a?(Puppet::Parser::Resource) }
159
150
  @compiler.topscope.expects(:source=).with(main_class)
160
- @parser.stubs(:findclass).with("", "").returns(main_class)
151
+ @parser.stubs(:find_hostclass).with("", "").returns(main_class)
161
152
 
162
153
  @compiler.compile
163
154
  end
@@ -183,11 +174,11 @@ describe Puppet::Parser::Compiler do
183
174
  end
184
175
 
185
176
  it "should ignore builtin resources" do
186
- resource = stub 'builtin', :ref => "File[testing]", :builtin? => true
177
+ resource = stub 'builtin', :ref => "File[testing]", :builtin? => true, :type => "file"
187
178
 
188
179
  @compiler.add_resource(@scope, resource)
189
180
  resource.expects(:evaluate).never
190
-
181
+
191
182
  @compiler.compile
192
183
  end
193
184
 
@@ -198,15 +189,15 @@ describe Puppet::Parser::Compiler do
198
189
 
199
190
  # We have to now mark the resource as evaluated
200
191
  resource.expects(:evaluate).with { |*whatever| resource.evaluated = true }
201
-
192
+
202
193
  @compiler.compile
203
194
  end
204
195
 
205
196
  it "should not evaluate already-evaluated resources" do
206
- resource = stub 'already_evaluated', :ref => "File[testing]", :builtin? => false, :evaluated? => true, :virtual? => false
197
+ resource = stub 'already_evaluated', :ref => "File[testing]", :builtin? => false, :evaluated? => true, :virtual? => false, :type => "file"
207
198
  @compiler.add_resource(@scope, resource)
208
199
  resource.expects(:evaluate).never
209
-
200
+
210
201
  @compiler.compile
211
202
  end
212
203
 
@@ -220,7 +211,7 @@ describe Puppet::Parser::Compiler do
220
211
  resource.expects(:evaluate).with { |*whatever| resource.evaluated = true; @compiler.add_resource(@scope, resource2) }
221
212
  resource2.expects(:evaluate).with { |*whatever| resource2.evaluated = true }
222
213
 
223
-
214
+
224
215
  @compiler.compile
225
216
  end
226
217
 
@@ -232,60 +223,105 @@ describe Puppet::Parser::Compiler do
232
223
  @compiler.add_resource(@scope, resource)
233
224
 
234
225
  # And one that does not
235
- dnf = stub "dnf", :ref => "File[dnf]"
226
+ dnf = stub "dnf", :ref => "File[dnf]", :type => "file"
236
227
 
237
228
  @compiler.add_resource(@scope, dnf)
238
229
 
239
230
  @compiler.send(:finish)
240
231
  end
241
232
 
233
+ it "should call finish() in add_resource order" do
234
+ resources = sequence('resources')
235
+
236
+ resource1 = Puppet::Parser::Resource.new :scope => @scope, :type => "file", :title => "finish1"
237
+ resource1.expects(:finish).in_sequence(resources)
238
+
239
+ @compiler.add_resource(@scope, resource1)
240
+
241
+ resource2 = Puppet::Parser::Resource.new :scope => @scope, :type => "file", :title => "finish2"
242
+ resource2.expects(:finish).in_sequence(resources)
243
+
244
+ @compiler.add_resource(@scope, resource2)
245
+
246
+ @compiler.send(:finish)
247
+ end
248
+
249
+ it "should return added resources in add order" do
250
+ resource1 = stub "1", :ref => "File[yay]", :type => "file"
251
+ @compiler.add_resource(@scope, resource1)
252
+ resource2 = stub "2", :ref => "File[youpi]", :type => "file"
253
+ @compiler.add_resource(@scope, resource2)
254
+
255
+ @compiler.resources.should == [resource1, resource2]
256
+ end
257
+
242
258
  it "should add resources that do not conflict with existing resources" do
243
- resource = stub "noconflict", :ref => "File[yay]"
259
+ resource = CompilerTestResource.new(:file, "yay")
244
260
  @compiler.add_resource(@scope, resource)
245
261
 
246
262
  @compiler.catalog.should be_vertex(resource)
247
263
  end
248
264
 
249
265
  it "should fail to add resources that conflict with existing resources" do
250
- type = stub 'faketype', :isomorphic? => true, :name => "mytype"
251
- Puppet::Type.stubs(:type).with("mytype").returns(type)
266
+ file1 = Puppet::Type.type(:file).new :path => "/foo"
267
+ file2 = Puppet::Type.type(:file).new :path => "/foo"
252
268
 
253
- resource1 = stub "iso1conflict", :ref => "Mytype[yay]", :type => "mytype", :file => "eh", :line => 0
254
- resource2 = stub "iso2conflict", :ref => "Mytype[yay]", :type => "mytype", :file => "eh", :line => 0
269
+ @compiler.add_resource(@scope, file1)
270
+ lambda { @compiler.add_resource(@scope, file2) }.should raise_error(Puppet::Resource::Catalog::DuplicateResourceError)
271
+ end
255
272
 
256
- @compiler.add_resource(@scope, resource1)
257
- lambda { @compiler.add_resource(@scope, resource2) }.should raise_error(ArgumentError)
273
+ it "should add an edge from the scope resource to the added resource" do
274
+ resource = stub "noconflict", :ref => "File[yay]", :type => "file"
275
+ @compiler.add_resource(@scope, resource)
276
+
277
+ @compiler.catalog.should be_edge(@scope.resource, resource)
278
+ end
279
+
280
+ it "should add edges from the class resources to the main class" do
281
+ main = CompilerTestResource.new(:class, :main)
282
+ @compiler.add_resource(@scope, main)
283
+ resource = CompilerTestResource.new(:class, "foo")
284
+ @compiler.add_resource(@scope, resource)
285
+
286
+ @compiler.catalog.should be_edge(main, resource)
287
+ end
288
+
289
+ it "should just add edges to the scope resource for the class resources when no main class can be found" do
290
+ resource = CompilerTestResource.new(:class, "foo")
291
+ @compiler.add_resource(@scope, resource)
292
+
293
+ @compiler.catalog.should be_edge(@scope.resource, resource)
258
294
  end
259
295
 
260
296
  it "should have a method for looking up resources" do
261
- resource = stub 'resource', :ref => "Yay[foo]"
297
+ resource = stub 'resource', :ref => "Yay[foo]", :type => "file"
262
298
  @compiler.add_resource(@scope, resource)
263
299
  @compiler.findresource("Yay[foo]").should equal(resource)
264
300
  end
265
301
 
266
302
  it "should be able to look resources up by type and title" do
267
- resource = stub 'resource', :ref => "Yay[foo]"
303
+ resource = stub 'resource', :ref => "Yay[foo]", :type => "file"
268
304
  @compiler.add_resource(@scope, resource)
269
305
  @compiler.findresource("Yay", "foo").should equal(resource)
270
306
  end
271
307
 
272
308
  it "should not evaluate virtual defined resources" do
273
- resource = stub 'notevaluated', :ref => "File[testing]", :builtin? => false, :evaluated? => false, :virtual? => true
309
+ resource = stub 'notevaluated', :ref => "File[testing]", :builtin? => false, :evaluated? => false, :virtual? => true, :type => "file"
274
310
  @compiler.add_resource(@scope, resource)
275
311
 
276
312
  resource.expects(:evaluate).never
277
-
313
+
278
314
  @compiler.compile
279
315
  end
280
316
  end
281
317
 
282
- describe Puppet::Parser::Compiler, " when evaluating collections" do
318
+ describe "when evaluating collections" do
283
319
 
284
320
  it "should evaluate each collection" do
285
321
  2.times { |i|
286
322
  coll = mock 'coll%s' % i
287
323
  @compiler.add_collection(coll)
288
-
324
+
289
325
  # This is the hard part -- we have to emulate the fact that
290
326
  # collections delete themselves if they are done evaluating.
291
327
  coll.expects(:evaluate).with do
@@ -324,7 +360,7 @@ describe Puppet::Parser::Compiler do
324
360
  end
325
361
  end
326
362
 
327
- describe Puppet::Parser::Compiler, "when told to evaluate missing classes" do
363
+ describe "when told to evaluate missing classes" do
328
364
 
329
365
  it "should fail if there's no source listed for the scope" do
330
366
  scope = stub 'scope', :source => nil
@@ -333,18 +369,18 @@ describe Puppet::Parser::Compiler do
333
369
 
334
370
  it "should tag the catalog with the name of each not-found class" do
335
371
  @compiler.catalog.expects(:tag).with("notfound")
336
- @scope.expects(:findclass).with("notfound").returns(nil)
372
+ @scope.expects(:find_hostclass).with("notfound").returns(nil)
337
373
  @compiler.evaluate_classes(%w{notfound}, @scope)
338
374
  end
339
375
  end
340
376
 
341
- describe Puppet::Parser::Compiler, " when evaluating found classes" do
377
+ describe "when evaluating found classes" do
342
378
 
343
379
  before do
344
380
  @class = stub 'class', :classname => "my::class"
345
- @scope.stubs(:findclass).with("myclass").returns(@class)
381
+ @scope.stubs(:find_hostclass).with("myclass").returns(@class)
346
382
 
347
- @resource = stub 'resource', :ref => "Class[myclass]"
383
+ @resource = stub 'resource', :ref => "Class[myclass]", :type => "file"
348
384
  end
349
385
 
350
386
  it "should evaluate each class" do
@@ -387,11 +423,21 @@ describe Puppet::Parser::Compiler do
387
423
  @compiler.evaluate_classes(%w{myclass}, @scope, false)
388
424
  end
389
425
 
426
+ it "should skip classes previously evaluated with different capitalization" do
427
+ @compiler.catalog.stubs(:tag)
428
+ @scope.stubs(:find_hostclass).with("MyClass").returns(@class)
429
+ @compiler.expects(:class_scope).with(@class).returns("something")
430
+ @compiler.expects(:add_resource).never
431
+ @resource.expects(:evaluate).never
432
+ Puppet::Parser::Resource.expects(:new).never
433
+ @compiler.evaluate_classes(%w{MyClass}, @scope, false)
434
+ end
435
+
390
436
  it "should return the list of found classes" do
391
437
  @compiler.catalog.stubs(:tag)
392
438
 
393
439
  @compiler.stubs(:add_resource)
394
- @scope.stubs(:findclass).with("notfound").returns(nil)
440
+ @scope.stubs(:find_hostclass).with("notfound").returns(nil)
395
441
 
396
442
  Puppet::Parser::Resource.stubs(:new).returns(@resource)
397
443
  @class.stubs :evaluate
@@ -399,7 +445,7 @@ describe Puppet::Parser::Compiler do
399
445
  end
400
446
  end
401
447
 
402
- describe Puppet::Parser::Compiler, " when evaluating AST nodes with no AST nodes present" do
448
+ describe "when evaluating AST nodes with no AST nodes present" do
403
449
 
404
450
  it "should do nothing" do
405
451
  @compiler.expects(:ast_nodes?).returns(false)
@@ -410,21 +456,19 @@ describe Puppet::Parser::Compiler do
410
456
  end
411
457
  end
412
458
 
413
- describe Puppet::Parser::Compiler, " when evaluating AST nodes with AST nodes present" do
459
+ describe "when evaluating AST nodes with AST nodes present" do
414
460
 
415
461
  before do
416
- @nodes = mock 'node_hash'
417
- @compiler.stubs(:ast_nodes?).returns(true)
418
- @compiler.parser.stubs(:nodes).returns(@nodes)
462
+ @compiler.parser.stubs(:nodes?).returns true
419
463
 
420
464
  # Set some names for our test
421
465
  @node.stubs(:names).returns(%w{a b c})
422
- @nodes.stubs(:[]).with("a").returns(nil)
423
- @nodes.stubs(:[]).with("b").returns(nil)
424
- @nodes.stubs(:[]).with("c").returns(nil)
466
+ @compiler.parser.stubs(:node).with("a").returns(nil)
467
+ @compiler.parser.stubs(:node).with("b").returns(nil)
468
+ @compiler.parser.stubs(:node).with("c").returns(nil)
425
469
 
426
470
  # It should check this last, of course.
427
- @nodes.stubs(:[]).with("default").returns(nil)
471
+ @compiler.parser.stubs(:node).with("default").returns(nil)
428
472
  end
429
473
 
430
474
  it "should fail if the named node cannot be found" do
@@ -433,9 +477,9 @@ describe Puppet::Parser::Compiler do
433
477
 
434
478
  it "should evaluate the first node class matching the node name" do
435
479
  node_class = stub 'node', :classname => "c", :evaluate_code => nil
436
- @nodes.stubs(:[]).with("c").returns(node_class)
480
+ @compiler.parser.stubs(:node).with("c").returns(node_class)
437
481
 
438
- node_resource = stub 'node resource', :ref => "Node[c]", :evaluate => nil
482
+ node_resource = stub 'node resource', :ref => "Node[c]", :evaluate => nil, :type => "node"
439
483
  node_class.expects(:evaluate).returns(node_resource)
440
484
 
441
485
  @compiler.compile
@@ -443,9 +487,9 @@ describe Puppet::Parser::Compiler do
443
487
 
444
488
  it "should match the default node if no matching node can be found" do
445
489
  node_class = stub 'node', :classname => "default", :evaluate_code => nil
446
- @nodes.stubs(:[]).with("default").returns(node_class)
490
+ @compiler.parser.stubs(:node).with("default").returns(node_class)
447
491
 
448
- node_resource = stub 'node resource', :ref => "Node[default]", :evaluate => nil
492
+ node_resource = stub 'node resource', :ref => "Node[default]", :evaluate => nil, :type => "node"
449
493
  node_class.expects(:evaluate).returns(node_resource)
450
494
 
451
495
  @compiler.compile
@@ -453,9 +497,9 @@ describe Puppet::Parser::Compiler do
453
497
 
454
498
  it "should evaluate the node resource immediately rather than using lazy evaluation" do
455
499
  node_class = stub 'node', :classname => "c"
456
- @nodes.stubs(:[]).with("c").returns(node_class)
500
+ @compiler.parser.stubs(:node).with("c").returns(node_class)
457
501
 
458
- node_resource = stub 'node resource', :ref => "Node[c]"
502
+ node_resource = stub 'node resource', :ref => "Node[c]", :type => "node"
459
503
  node_class.expects(:evaluate).returns(node_resource)
460
504
 
461
505
  node_resource.expects(:evaluate)
@@ -464,10 +508,10 @@ describe Puppet::Parser::Compiler do
464
508
  end
465
509
 
466
510
  it "should set the node's scope as the top scope" do
467
- node_resource = stub 'node resource', :ref => "Node[c]", :evaluate => nil
511
+ node_resource = stub 'node resource', :ref => "Node[c]", :evaluate => nil, :type => "node"
468
512
  node_class = stub 'node', :classname => "c", :evaluate => node_resource
469
513
 
470
- @nodes.stubs(:[]).with("c").returns(node_class)
514
+ @compiler.parser.stubs(:node).with("c").returns(node_class)
471
515
 
472
516
  # The #evaluate method normally does this.
473
517
  scope = stub 'scope', :source => "mysource"
@@ -480,31 +524,11 @@ describe Puppet::Parser::Compiler do
480
524
  end
481
525
  end
482
526
 
483
- describe Puppet::Parser::Compiler, "when storing compiled resources" do
484
-
485
- it "should store the resources" do
486
- Puppet.features.expects(:rails?).returns(true)
487
- Puppet::Rails.expects(:connect)
488
-
489
- @compiler.catalog.expects(:vertices).returns(:resources)
490
-
491
- @compiler.expects(:store_to_active_record).with(@node, :resources)
492
- @compiler.send(:store)
493
- end
494
-
495
- it "should store to active_record" do
496
- @node.expects(:name).returns("myname")
497
- Puppet::Rails::Host.stubs(:transaction).yields
498
- Puppet::Rails::Host.expects(:store).with(@node, :resources)
499
- @compiler.send(:store_to_active_record, @node, :resources)
500
- end
501
- end
502
-
503
- describe Puppet::Parser::Compiler, "when managing resource overrides" do
527
+ describe "when managing resource overrides" do
504
528
 
505
529
  before do
506
- @override = stub 'override', :ref => "My[ref]"
507
- @resource = stub 'resource', :ref => "My[ref]", :builtin? => true
530
+ @override = stub 'override', :ref => "My[ref]", :type => "my"
531
+ @resource = stub 'resource', :ref => "My[ref]", :builtin? => true, :type => "my"
508
532
  end
509
533
 
510
534
  it "should be able to store overrides" do
@@ -541,7 +565,7 @@ describe Puppet::Parser::Compiler do
541
565
  end
542
566
 
543
567
  # #620 - Nodes and classes should conflict, else classes don't get evaluated
544
- describe Puppet::Parser::Compiler, "when evaluating nodes and classes with the same name (#620)" do
568
+ describe "when evaluating nodes and classes with the same name (#620)" do
545
569
 
546
570
  before do
547
571
  @node = stub :nodescope? => true
@@ -0,0 +1,190 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.dirname(__FILE__) + '/../../spec_helper'
4
+
5
+ require 'puppet/parser/files'
6
+
7
+ describe Puppet::Parser::Files do
8
+ it "should have a method for finding a template" do
9
+ Puppet::Parser::Files.should respond_to(:find_template)
10
+ end
11
+
12
+ it "should have a method for finding manifests" do
13
+ Puppet::Parser::Files.should respond_to(:find_manifests)
14
+ end
15
+
16
+ describe "when searching for templates" do
17
+ it "should return fully-qualified templates directly" do
18
+ Puppet::Parser::Files.expects(:modulepath).never
19
+ Puppet::Parser::Files.find_template("/my/template").should == "/my/template"
20
+ end
21
+
22
+ it "should return the template from the first found module" do
23
+ mod = mock 'module'
24
+ Puppet::Node::Environment.new.expects(:module).with("mymod").returns mod
25
+
26
+ mod.expects(:template).returns("/one/mymod/templates/mytemplate")
27
+ Puppet::Parser::Files.find_template("mymod/mytemplate").should == "/one/mymod/templates/mytemplate"
28
+ end
29
+
30
+ it "should return the file in the templatedir if it exists" do
31
+ Puppet.settings.expects(:value).with(:templatedir, nil).returns("/my/templates")
32
+ Puppet[:modulepath] = "/one:/two"
33
+ File.stubs(:directory?).returns(true)
34
+ FileTest.stubs(:exist?).returns(true)
35
+ Puppet::Parser::Files.find_template("mymod/mytemplate").should == "/my/templates/mymod/mytemplate"
36
+ end
37
+
38
+ it "should not raise an error if no valid templatedir exists and the template exists in a module" do
39
+ mod = mock 'module'
40
+ Puppet::Node::Environment.new.expects(:module).with("mymod").returns mod
41
+
42
+ mod.expects(:template).returns("/one/mymod/templates/mytemplate")
43
+ Puppet::Parser::Files.stubs(:templatepath).with(nil).returns(nil)
44
+
45
+ Puppet::Parser::Files.find_template("mymod/mytemplate").should == "/one/mymod/templates/mytemplate"
46
+ end
47
+
48
+ it "should return unqualified templates if they exist in the template dir" do
49
+ FileTest.stubs(:exist?).returns true
50
+ Puppet::Parser::Files.stubs(:templatepath).with(nil).returns(["/my/templates"])
51
+ Puppet::Parser::Files.find_template("mytemplate").should == "/my/templates/mytemplate"
52
+ end
53
+
54
+ it "should only return templates if they actually exist" do
55
+ FileTest.expects(:exist?).with("/my/templates/mytemplate").returns true
56
+ Puppet::Parser::Files.stubs(:templatepath).with(nil).returns(["/my/templates"])
57
+ Puppet::Parser::Files.find_template("mytemplate").should == "/my/templates/mytemplate"
58
+ end
59
+
60
+ it "should return nil when asked for a template that doesn't exist" do
61
+ FileTest.expects(:exist?).with("/my/templates/mytemplate").returns false
62
+ Puppet::Parser::Files.stubs(:templatepath).with(nil).returns(["/my/templates"])
63
+ Puppet::Parser::Files.find_template("mytemplate").should be_nil
64
+ end
65
+
66
+ it "should search in the template directories before modules" do
67
+ FileTest.stubs(:exist?).returns true
68
+ Puppet::Parser::Files.stubs(:templatepath).with(nil).returns(["/my/templates"])
69
+ Puppet::Module.expects(:find).never
70
+ Puppet::Parser::Files.find_template("mytemplate")
71
+ end
72
+
73
+ it "should accept relative templatedirs" do
74
+ FileTest.stubs(:exist?).returns true
75
+ Puppet[:templatedir] = "my/templates"
76
+ File.expects(:directory?).with(File.join(Dir.getwd,"my/templates")).returns(true)
77
+ Puppet::Parser::Files.find_template("mytemplate").should == File.join(Dir.getwd,"my/templates/mytemplate")
78
+ end
79
+
80
+ it "should use the environment templatedir if no module is found and an environment is specified" do
81
+ FileTest.stubs(:exist?).returns true
82
+ Puppet::Parser::Files.stubs(:templatepath).with("myenv").returns(["/myenv/templates"])
83
+ Puppet::Parser::Files.find_template("mymod/mytemplate", "myenv").should == "/myenv/templates/mymod/mytemplate"
84
+ end
85
+
86
+ it "should use first dir from environment templatedir if no module is found and an environment is specified" do
87
+ FileTest.stubs(:exist?).returns true
88
+ Puppet::Parser::Files.stubs(:templatepath).with("myenv").returns(["/myenv/templates", "/two/templates"])
89
+ Puppet::Parser::Files.find_template("mymod/mytemplate", "myenv").should == "/myenv/templates/mymod/mytemplate"
90
+ end
91
+
92
+ it "should use a valid dir when templatedir is a path for unqualified templates and the first dir contains template" do
93
+ Puppet::Parser::Files.stubs(:templatepath).returns(["/one/templates", "/two/templates"])
94
+ FileTest.expects(:exist?).with("/one/templates/mytemplate").returns(true)
95
+ Puppet::Parser::Files.find_template("mytemplate").should == "/one/templates/mytemplate"
96
+ end
97
+
98
+ it "should use a valid dir when templatedir is a path for unqualified templates and only second dir contains template" do
99
+ Puppet::Parser::Files.stubs(:templatepath).returns(["/one/templates", "/two/templates"])
100
+ FileTest.expects(:exist?).with("/one/templates/mytemplate").returns(false)
101
+ FileTest.expects(:exist?).with("/two/templates/mytemplate").returns(true)
102
+ Puppet::Parser::Files.find_template("mytemplate").should == "/two/templates/mytemplate"
103
+ end
104
+
105
+ it "should use the node environment if specified" do
106
+ mod = mock 'module'
107
+ Puppet::Node::Environment.new("myenv").expects(:module).with("mymod").returns mod
108
+
109
+ mod.expects(:template).returns("/my/modules/mymod/templates/envtemplate")
110
+
111
+ Puppet::Parser::Files.find_template("mymod/envtemplate", "myenv").should == "/my/modules/mymod/templates/envtemplate"
112
+ end
113
+
114
+ it "should return nil if no template can be found" do
115
+ Puppet::Parser::Files.find_template("foomod/envtemplate", "myenv").should be_nil
116
+ end
117
+
118
+ after { Puppet.settings.clear }
119
+ end
120
+
121
+ describe "when searching for manifests" do
122
+ it "should ignore invalid modules" do
123
+ mod = mock 'module'
124
+ Puppet::Node::Environment.new.expects(:module).with("mymod").raises Puppet::Module::InvalidName
125
+ Puppet.expects(:value).with(:modulepath).never
126
+ Dir.stubs(:glob).returns %w{foo}
127
+
128
+ Puppet::Parser::Files.find_manifests("mymod/init.pp").should == %w{foo}
129
+ end
130
+ end
131
+
132
+ describe "when searching for manifests when no module is found" do
133
+ before do
134
+ File.stubs(:find).returns(nil)
135
+ end
136
+
137
+ it "should not look for modules when paths are fully qualified" do
138
+ Puppet.expects(:value).with(:modulepath).never
139
+ file = "/fully/qualified/file.pp"
140
+ Dir.stubs(:glob).with(file).returns([file])
141
+ Puppet::Parser::Files.find_manifests(file)
142
+ end
143
+
144
+ it "should directly return fully qualified files" do
145
+ file = "/fully/qualified/file.pp"
146
+ Dir.stubs(:glob).with(file).returns([file])
147
+ Puppet::Parser::Files.find_manifests(file).should == [file]
148
+ end
149
+
150
+ it "should match against provided fully qualified patterns" do
151
+ pattern = "/fully/qualified/pattern/*"
152
+ Dir.expects(:glob).with(pattern).returns(%w{my file list})
153
+ Puppet::Parser::Files.find_manifests(pattern).should == %w{my file list}
154
+ end
155
+
156
+ it "should look for files relative to the current directory" do
157
+ cwd = Dir.getwd
158
+ Dir.expects(:glob).with("#{cwd}/foobar/init.pp").returns(["#{cwd}/foobar/init.pp"])
159
+ Puppet::Parser::Files.find_manifests("foobar/init.pp").should == ["#{cwd}/foobar/init.pp"]
160
+ end
161
+
162
+ it "should only return files, not directories" do
163
+ pattern = "/fully/qualified/pattern/*"
164
+ file = "/my/file"
165
+ dir = "/my/directory"
166
+ Dir.expects(:glob).with(pattern).returns([file, dir])
167
+ FileTest.expects(:directory?).with(file).returns(false)
168
+ FileTest.expects(:directory?).with(dir).returns(true)
169
+ Puppet::Parser::Files.find_manifests(pattern).should == [file]
170
+ end
171
+ end
172
+
173
+ describe "when searching for manifests in a found module" do
174
+ it "should return the manifests from the first found module" do
175
+ mod = mock 'module'
176
+ Puppet::Node::Environment.new.expects(:module).with("mymod").returns mod
177
+ mod.expects(:match_manifests).with("init.pp").returns(%w{/one/mymod/manifests/init.pp})
178
+ Puppet::Parser::Files.find_manifests("mymod/init.pp").should == ["/one/mymod/manifests/init.pp"]
179
+ end
180
+
181
+ it "should use the node environment if specified" do
182
+ mod = mock 'module'
183
+ Puppet::Node::Environment.new("myenv").expects(:module).with("mymod").returns mod
184
+ mod.expects(:match_manifests).with("init.pp").returns(%w{/one/mymod/manifests/init.pp})
185
+ Puppet::Parser::Files.find_manifests("mymod/init.pp", :environment => "myenv").should == ["/one/mymod/manifests/init.pp"]
186
+ end
187
+
188
+ after { Puppet.settings.clear }
189
+ end
190
+ end