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
@@ -12,7 +12,7 @@ describe Puppet::Parser::AST::Not do
12
12
  it "should evaluate its child expression" do
13
13
  val = stub "val"
14
14
  val.expects(:safeevaluate).with(@scope)
15
-
15
+
16
16
  operator = Puppet::Parser::AST::Not.new :value => val
17
17
  operator.evaluate(@scope)
18
18
  end
@@ -31,19 +31,19 @@ describe Puppet::Parser::AST::ResourceOverride do
31
31
  it "should return the overriden resource directly when called with one item" do
32
32
  klass = stub 'klass', :title => "title", :type => "one"
33
33
  object = mock 'object', :safeevaluate => klass
34
- override = ast::ResourceOverride.new(:object => object , :params => @params).evaluate(@scope)
34
+ override = ast::ResourceOverride.new(:object => object , :params => @params).evaluate(@scope)
35
35
  override.should be_an_instance_of(Puppet::Parser::Resource)
36
36
  override.title.should == "title"
37
- override.type.should == "One"
37
+ override.type.should == "One"
38
38
  end
39
39
 
40
40
  it "should return an array of overriden resources when called with an array of titles" do
41
41
  klass1 = stub 'klass1', :title => "title1", :type => "one"
42
42
  klass2 = stub 'klass2', :title => "title2", :type => "one"
43
-
43
+
44
44
  object = mock 'object', :safeevaluate => [klass1,klass2]
45
-
46
- override = ast::ResourceOverride.new(:object => object , :params => @params).evaluate(@scope)
45
+
46
+ override = ast::ResourceOverride.new(:object => object , :params => @params).evaluate(@scope)
47
47
  override.should have(2).elements
48
48
  override.each {|o| o.should be_an_instance_of(Puppet::Parser::Resource) }
49
49
  end
@@ -22,7 +22,7 @@ describe Puppet::Parser::AST::ResourceReference do
22
22
  %{ "one::two" "one-two"}.each do |type|
23
23
  it "should evaluate correctly reference to define" do
24
24
  klass = stub 'klass', :title => "three", :classname => type
25
- @scope.stubs(:finddefine).returns(klass)
25
+ @scope.stubs(:find_definition).returns(klass)
26
26
 
27
27
  newref("three", type).evaluate(@scope).to_ref.should == Puppet::Parser::Resource::Reference.new( :type => type, :title => "three" ).to_ref
28
28
  end
@@ -30,13 +30,13 @@ describe Puppet::Parser::AST::ResourceReference do
30
30
 
31
31
  it "should be able to call qualified_class" do
32
32
  klass = stub 'klass', :title => "three", :classname => "one"
33
- @scope.expects(:findclass).with("one").returns(klass)
33
+ @scope.expects(:find_hostclass).with("one").returns(klass)
34
34
  newref("three","class").qualified_class(@scope,"one").should == "one"
35
35
  end
36
36
 
37
37
  it "should be able to find qualified classes when evaluating" do
38
38
  klass = stub 'klass', :title => "one", :classname => "one"
39
- @scope.stubs(:findclass).returns(klass)
39
+ @scope.stubs(:find_hostclass).returns(klass)
40
40
 
41
41
  evaled = newref("one", "class").evaluate(@scope)
42
42
  evaled.type.should == "Class"
@@ -47,7 +47,7 @@ describe Puppet::Parser::AST::ResourceReference do
47
47
  titles = mock 'titles', :safeevaluate => ["title1","title2"]
48
48
  ref = ast::ResourceReference.new( :title => titles, :type => "Resource" )
49
49
  ref.stubs(:qualified_type).with(@scope).returns("Resource")
50
-
50
+
51
51
  ref.evaluate(@scope).should have(2).elements
52
52
  end
53
53
 
@@ -56,8 +56,14 @@ describe Puppet::Parser::AST::ResourceReference do
56
56
  ref = ast::ResourceReference.new( :title => titles, :type => "Class" )
57
57
  ref.expects(:qualified_class).with(@scope,"title1").returns("class")
58
58
  ref.expects(:qualified_class).with(@scope,"title2").returns("class")
59
-
59
+
60
60
  ref.evaluate(@scope)
61
61
  end
62
62
 
63
+ it "should return a correct representation when converting to string" do
64
+ type = stub 'type', :is_a? => true, :to_s => "file"
65
+ title = stub 'title', :is_a? => true, :to_s => "[/tmp/a, /tmp/b]"
66
+
67
+ ast::ResourceReference.new( :type => type, :title => title ).to_s.should == "File[/tmp/a, /tmp/b]"
68
+ end
63
69
  end
@@ -0,0 +1,156 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.dirname(__FILE__) + '/../../../spec_helper'
4
+
5
+ describe Puppet::Parser::AST::Selector do
6
+ before :each do
7
+ @scope = Puppet::Parser::Scope.new()
8
+ end
9
+
10
+ describe "when evaluating" do
11
+
12
+ before :each do
13
+ @param = stub 'param'
14
+ @param.stubs(:safeevaluate).with(@scope).returns("value")
15
+
16
+ @value1 = stub 'value1'
17
+ @param1 = stub_everything 'param1'
18
+ @param1.stubs(:safeevaluate).with(@scope).returns(@param1)
19
+ @param1.stubs(:respond_to?).with(:downcase).returns(false)
20
+ @value1.stubs(:param).returns(@param1)
21
+ @value1.stubs(:value).returns(@value1)
22
+
23
+ @value2 = stub 'value2'
24
+ @param2 = stub_everything 'param2'
25
+ @param2.stubs(:safeevaluate).with(@scope).returns(@param2)
26
+ @param2.stubs(:respond_to?).with(:downcase).returns(false)
27
+ @value2.stubs(:param).returns(@param2)
28
+ @value2.stubs(:value).returns(@value2)
29
+
30
+ @values = stub 'values', :instance_of? => true
31
+ @values.stubs(:each).multiple_yields(@value1, @value2)
32
+
33
+ @selector = Puppet::Parser::AST::Selector.new :param => @param, :values => @values
34
+ @selector.stubs(:fail)
35
+ end
36
+
37
+ it "should evaluate param" do
38
+ @param.expects(:safeevaluate).with(@scope)
39
+
40
+ @selector.evaluate(@scope)
41
+ end
42
+
43
+ it "should downcase the evaluated param value if allowed" do
44
+ Puppet.stubs(:[]).with(:casesensitive).returns(false)
45
+ value = stub 'param'
46
+ @param.stubs(:safeevaluate).with(@scope).returns(value)
47
+
48
+ value.expects(:downcase)
49
+
50
+ @selector.evaluate(@scope)
51
+ end
52
+
53
+ it "should scan each option" do
54
+ @values.expects(:each).multiple_yields(@value1, @value2)
55
+
56
+ @selector.evaluate(@scope)
57
+ end
58
+
59
+ describe "when scanning values" do
60
+ it "should evaluate first matching option" do
61
+ @param2.stubs(:evaluate_match).with { |*arg| arg[0] == "value" }.returns(true)
62
+ @value2.expects(:safeevaluate).with(@scope)
63
+
64
+ @selector.evaluate(@scope)
65
+ end
66
+
67
+ it "should return the first matching evaluated option" do
68
+ @param2.stubs(:evaluate_match).with { |*arg| arg[0] == "value" }.returns(true)
69
+ @value2.stubs(:safeevaluate).with(@scope).returns(:result)
70
+
71
+ @selector.evaluate(@scope).should == :result
72
+ end
73
+
74
+ it "should evaluate the default option if none matched" do
75
+ @param1.stubs(:is_a?).with(Puppet::Parser::AST::Default).returns(true)
76
+ @value1.expects(:safeevaluate).with(@scope).returns(@param1)
77
+
78
+ @selector.evaluate(@scope)
79
+ end
80
+
81
+ it "should return the default evaluated option if none matched" do
82
+ result = stub 'result'
83
+ @param1.stubs(:is_a?).with(Puppet::Parser::AST::Default).returns(true)
84
+ @value1.stubs(:safeevaluate).returns(result)
85
+
86
+ @selector.evaluate(@scope).should == result
87
+ end
88
+
89
+ it "should return nil if nothing matched" do
90
+ @selector.evaluate(@scope).should be_nil
91
+ end
92
+
93
+ it "should delegate matching to evaluate_match" do
94
+ @param1.expects(:evaluate_match).with { |*arg| arg[0] == "value" and arg[1] == @scope }
95
+
96
+ @selector.evaluate(@scope)
97
+ end
98
+
99
+ it "should transmit the sensitive parameter to evaluate_match" do
100
+ Puppet.stubs(:[]).with(:casesensitive).returns(:sensitive)
101
+ @param1.expects(:evaluate_match).with { |*arg| arg[2][:sensitive] == :sensitive }
102
+
103
+ @selector.evaluate(@scope)
104
+ end
105
+
106
+ it "should transmit the AST file and line to evaluate_match" do
107
+ @selector.file = :file
108
+ @selector.line = :line
109
+ @param1.expects(:evaluate_match).with { |*arg| arg[2][:file] == :file and arg[2][:line] == :line }
110
+
111
+ @selector.evaluate(@scope)
112
+ end
113
+
114
+
115
+ it "should evaluate the matching param" do
116
+ @param1.stubs(:evaluate_match).with { |*arg| arg[0] == "value" and arg[1] == @scope }.returns(true)
117
+
118
+ @value1.expects(:safeevaluate).with(@scope)
119
+
120
+ @selector.evaluate(@scope)
121
+ end
122
+
123
+ it "should return this evaluated option if it matches" do
124
+ @param1.stubs(:evaluate_match).with { |*arg| arg[0] == "value" and arg[1] == @scope }.returns(true)
125
+ @value1.stubs(:safeevaluate).with(@scope).returns(:result)
126
+
127
+ @selector.evaluate(@scope).should == :result
128
+ end
129
+
130
+ it "should unset scope ephemeral variables after option evaluation" do
131
+ @param1.stubs(:evaluate_match).with { |*arg| arg[0] == "value" and arg[1] == @scope }.returns(true)
132
+ @value1.stubs(:safeevaluate).with(@scope).returns(:result)
133
+
134
+ @scope.expects(:unset_ephemeral_var)
135
+
136
+ @selector.evaluate(@scope)
137
+ end
138
+
139
+ it "should not leak ephemeral variables even if evaluation fails" do
140
+ @param1.stubs(:evaluate_match).with { |*arg| arg[0] == "value" and arg[1] == @scope }.returns(true)
141
+ @value1.stubs(:safeevaluate).with(@scope).raises
142
+
143
+ @scope.expects(:unset_ephemeral_var)
144
+
145
+ lambda { @selector.evaluate(@scope) }.should raise_error
146
+ end
147
+
148
+ it "should fail if there is no default" do
149
+ @selector.expects(:fail)
150
+
151
+ @selector.evaluate(@scope)
152
+ end
153
+ end
154
+
155
+ end
156
+ end
@@ -12,11 +12,11 @@ describe Puppet::Parser::AST::VarDef do
12
12
  it "should evaluate arguments" do
13
13
  name = mock 'name'
14
14
  value = mock 'value'
15
-
15
+
16
16
  name.expects(:safeevaluate).with(@scope)
17
17
  value.expects(:safeevaluate).with(@scope)
18
18
 
19
- vardef = Puppet::Parser::AST::VarDef.new :name => name, :value => value, :file => nil,
19
+ vardef = Puppet::Parser::AST::VarDef.new :name => name, :value => value, :file => nil,
20
20
  :line => nil
21
21
  vardef.evaluate(@scope)
22
22
  end
@@ -24,21 +24,21 @@ describe Puppet::Parser::AST::VarDef do
24
24
  it "should be in append=false mode if called without append" do
25
25
  name = stub 'name', :safeevaluate => "var"
26
26
  value = stub 'value', :safeevaluate => "1"
27
-
28
- @scope.expects(:setvar).with { |name,value,file,line,append| append == nil }
29
-
30
- vardef = Puppet::Parser::AST::VarDef.new :name => name, :value => value, :file => nil,
27
+
28
+ @scope.expects(:setvar).with { |name,value,options| options[:append] == nil }
29
+
30
+ vardef = Puppet::Parser::AST::VarDef.new :name => name, :value => value, :file => nil,
31
31
  :line => nil
32
32
  vardef.evaluate(@scope)
33
33
  end
34
-
34
+
35
35
  it "should call scope in append mode if append is true" do
36
36
  name = stub 'name', :safeevaluate => "var"
37
37
  value = stub 'value', :safeevaluate => "1"
38
-
39
- @scope.expects(:setvar).with { |name,value,file,line,append| append == true }
40
-
41
- vardef = Puppet::Parser::AST::VarDef.new :name => name, :value => value, :file => nil,
38
+
39
+ @scope.expects(:setvar).with { |name,value,options| options[:append] == true }
40
+
41
+ vardef = Puppet::Parser::AST::VarDef.new :name => name, :value => value, :file => nil,
42
42
  :line => nil, :append => true
43
43
  vardef.evaluate(@scope)
44
44
  end
@@ -39,6 +39,14 @@ describe Puppet::Parser::Collector, "when initializing" do
39
39
  @collector = Puppet::Parser::Collector.new(@scope, "resource::type", @equery, @vquery, @form)
40
40
  @collector.type.should == "Resource::Type"
41
41
  end
42
+
43
+ it "should accept an optional resource override" do
44
+ @collector = Puppet::Parser::Collector.new(@scope, "resource::type", @equery, @vquery, @form)
45
+ override = { :params => "whatever" }
46
+ @collector.add_override(override)
47
+ @collector.overrides.should equal(override)
48
+ end
49
+
42
50
  end
43
51
 
44
52
  describe Puppet::Parser::Collector, "when collecting specific virtual resources" do
@@ -59,8 +67,9 @@ describe Puppet::Parser::Collector, "when collecting specific virtual resources"
59
67
 
60
68
  it "should mark matched resources as non-virtual" do
61
69
  @collector.resources = ["File[virtual1]", "File[virtual2]"]
62
- one = mock 'one'
70
+ one = stub_everything 'one'
63
71
  one.expects(:virtual=).with(false)
72
+
64
73
  @scope.stubs(:findresource).with("File[virtual1]").returns(one)
65
74
  @scope.stubs(:findresource).with("File[virtual2]").returns(nil)
66
75
  @collector.evaluate
@@ -68,8 +77,7 @@ describe Puppet::Parser::Collector, "when collecting specific virtual resources"
68
77
 
69
78
  it "should return matched resources" do
70
79
  @collector.resources = ["File[virtual1]", "File[virtual2]"]
71
- one = mock 'one'
72
- one.stubs(:virtual=)
80
+ one = stub_everything 'one'
73
81
  @scope.stubs(:findresource).with("File[virtual1]").returns(one)
74
82
  @scope.stubs(:findresource).with("File[virtual2]").returns(nil)
75
83
  @collector.evaluate.should == [one]
@@ -77,8 +85,7 @@ describe Puppet::Parser::Collector, "when collecting specific virtual resources"
77
85
 
78
86
  it "should delete itself from the compile's collection list if it has found all of its resources" do
79
87
  @collector.resources = ["File[virtual1]"]
80
- one = mock 'one'
81
- one.stubs(:virtual=)
88
+ one = stub_everything 'one'
82
89
  @compiler.expects(:delete_collection).with(@collector)
83
90
  @scope.expects(:compiler).returns(@compiler)
84
91
  @scope.stubs(:findresource).with("File[virtual1]").returns(one)
@@ -87,15 +94,14 @@ describe Puppet::Parser::Collector, "when collecting specific virtual resources"
87
94
 
88
95
  it "should not delete itself from the compile's collection list if it has unfound resources" do
89
96
  @collector.resources = ["File[virtual1]"]
90
- one = mock 'one'
91
- one.stubs(:virtual=)
97
+ one = stub_everything 'one'
92
98
  @compiler.expects(:delete_collection).never
93
99
  @scope.stubs(:findresource).with("File[virtual1]").returns(nil)
94
100
  @collector.evaluate
95
101
  end
96
102
  end
97
103
 
98
- describe Puppet::Parser::Collector, "when collecting virtual resources" do
104
+ describe Puppet::Parser::Collector, "when collecting virtual and catalog resources" do
99
105
  before do
100
106
  @scope = mock 'scope'
101
107
  @compiler = mock 'compile'
@@ -106,12 +112,18 @@ describe Puppet::Parser::Collector, "when collecting virtual resources" do
106
112
  @collector = Puppet::Parser::Collector.new(@scope, @resource_type, nil, @vquery, :virtual)
107
113
  end
108
114
 
109
- it "should find all resources matching the vquery" do
110
- one = stub 'one', :type => "Mytype", :virtual? => true
111
- two = stub 'two', :type => "Mytype", :virtual? => true
115
+ it "should find all virtual resources matching the vquery" do
116
+ one = stub_everything 'one', :type => "Mytype", :virtual? => true
117
+ two = stub_everything 'two', :type => "Mytype", :virtual? => true
112
118
 
113
- one.stubs(:virtual=)
114
- two.stubs(:virtual=)
119
+ @compiler.expects(:resources).returns([one, two])
120
+
121
+ @collector.evaluate.should == [one, two]
122
+ end
123
+
124
+ it "should find all non-virtual resources matching the vquery" do
125
+ one = stub_everything 'one', :type => "Mytype", :virtual? => false
126
+ two = stub_everything 'two', :type => "Mytype", :virtual? => false
115
127
 
116
128
  @compiler.expects(:resources).returns([one, two])
117
129
 
@@ -119,7 +131,7 @@ describe Puppet::Parser::Collector, "when collecting virtual resources" do
119
131
  end
120
132
 
121
133
  it "should mark all matched resources as non-virtual" do
122
- one = stub 'one', :type => "Mytype", :virtual? => true
134
+ one = stub_everything 'one', :type => "Mytype", :virtual? => true
123
135
 
124
136
  one.expects(:virtual=).with(false)
125
137
 
@@ -129,11 +141,8 @@ describe Puppet::Parser::Collector, "when collecting virtual resources" do
129
141
  end
130
142
 
131
143
  it "should return matched resources" do
132
- one = stub 'one', :type => "Mytype", :virtual? => true
133
- two = stub 'two', :type => "Mytype", :virtual? => true
134
-
135
- one.stubs(:virtual=)
136
- two.stubs(:virtual=)
144
+ one = stub_everything 'one', :type => "Mytype", :virtual? => true
145
+ two = stub_everything 'two', :type => "Mytype", :virtual? => true
137
146
 
138
147
  @compiler.expects(:resources).returns([one, two])
139
148
 
@@ -141,8 +150,8 @@ describe Puppet::Parser::Collector, "when collecting virtual resources" do
141
150
  end
142
151
 
143
152
  it "should return all resources of the correct type if there is no virtual query" do
144
- one = stub 'one', :type => "Mytype", :virtual? => true
145
- two = stub 'two', :type => "Mytype", :virtual? => true
153
+ one = stub_everything 'one', :type => "Mytype", :virtual? => true
154
+ two = stub_everything 'two', :type => "Mytype", :virtual? => true
146
155
 
147
156
  one.expects(:virtual=).with(false)
148
157
  two.expects(:virtual=).with(false)
@@ -155,8 +164,8 @@ describe Puppet::Parser::Collector, "when collecting virtual resources" do
155
164
  end
156
165
 
157
166
  it "should not return or mark resources of a different type" do
158
- one = stub 'one', :type => "Mytype", :virtual? => true
159
- two = stub 'two', :type => :other, :virtual? => true
167
+ one = stub_everything 'one', :type => "Mytype", :virtual? => true
168
+ two = stub_everything 'two', :type => :other, :virtual? => true
160
169
 
161
170
  one.expects(:virtual=).with(false)
162
171
  two.expects(:virtual=).never
@@ -166,23 +175,84 @@ describe Puppet::Parser::Collector, "when collecting virtual resources" do
166
175
  @collector.evaluate.should == [one]
167
176
  end
168
177
 
169
- it "should not return or mark non-virtual resources" do
170
- one = stub 'one', :type => "Mytype", :virtual? => false
171
- two = stub 'two', :type => :other, :virtual? => false
178
+ it "should create a resource with overriden parameters" do
179
+ one = stub_everything 'one', :type => "Mytype", :virtual? => true, :title => "test"
180
+ param = stub 'param'
181
+ @compiler.stubs(:add_override)
172
182
 
173
- one.expects(:virtual=).never
174
- two.expects(:virtual=).never
183
+ @compiler.expects(:resources).returns([one])
175
184
 
176
- @compiler.expects(:resources).returns([one, two])
185
+ @collector.add_override(:params => param )
186
+ Puppet::Parser::Resource.expects(:new).with { |h|
187
+ h[:params] == param
188
+ }
189
+
190
+ @collector.evaluate
191
+ end
192
+
193
+ it "should define a new allow all child_of? on overriden resource" do
194
+ one = stub_everything 'one', :type => "Mytype", :virtual? => true, :title => "test"
195
+ param = stub 'param'
196
+ source = stub 'source'
197
+ @compiler.stubs(:add_override)
198
+
199
+ @compiler.expects(:resources).returns([one])
200
+
201
+ @collector.add_override(:params => param, :source => source )
202
+ Puppet::Parser::Resource.stubs(:new)
203
+
204
+ source.expects(:meta_def).with { |name,block| name == :child_of? }
205
+
206
+ @collector.evaluate
207
+ end
208
+
209
+
210
+ it "should not override already overriden resources for this same collection in a previous run" do
211
+ one = stub_everything 'one', :type => "Mytype", :virtual? => true, :title => "test"
212
+ param = stub 'param'
213
+ @compiler.stubs(:add_override)
214
+
215
+ @compiler.expects(:resources).at_least(2).returns([one])
216
+
217
+ @collector.add_override(:params => param )
218
+ Puppet::Parser::Resource.expects(:new).once.with { |h|
219
+ h[:params] == param
220
+ }
221
+
222
+ @collector.evaluate
223
+
224
+ @collector.evaluate
225
+ end
226
+
227
+ it "should not return resources that were collected in a previous run of this collector" do
228
+ one = stub_everything 'one', :type => "Mytype", :virtual? => true, :title => "test"
229
+ @compiler.stubs(:resources).returns([one])
230
+
231
+ @collector.evaluate
177
232
 
178
233
  @collector.evaluate.should be_false
179
234
  end
180
235
 
236
+
237
+ it "should tell the compiler about the overriden resources" do
238
+ one = stub_everything 'one', :type => "Mytype", :virtual? => true, :title => "test"
239
+ param = stub 'param'
240
+
241
+ one.expects(:virtual=).with(false)
242
+ @compiler.expects(:resources).returns([one])
243
+ @collector.add_override(:params => param )
244
+ Puppet::Parser::Resource.stubs(:new).returns("whatever")
245
+
246
+ @compiler.expects(:add_override).with("whatever")
247
+
248
+ @collector.evaluate
249
+ end
250
+
181
251
  it "should not return or mark non-matching resources" do
182
252
  @collector.vquery = proc { |res| res.name == :one }
183
253
 
184
- one = stub 'one', :name => :one, :type => "Mytype", :virtual? => true
185
- two = stub 'two', :name => :two, :type => "Mytype", :virtual? => true
254
+ one = stub_everything 'one', :name => :one, :type => "Mytype", :virtual? => true
255
+ two = stub_everything 'two', :name => :two, :type => "Mytype", :virtual? => true
186
256
 
187
257
  one.expects(:virtual=).with(false)
188
258
  two.expects(:virtual=).never
@@ -194,7 +264,7 @@ describe Puppet::Parser::Collector, "when collecting virtual resources" do
194
264
  end
195
265
 
196
266
  describe Puppet::Parser::Collector, "when collecting exported resources" do
197
- confine Puppet.features.rails? => "Cannot test Rails integration without ActiveRecord"
267
+ confine "Cannot test Rails integration without ActiveRecord" => Puppet.features.rails?
198
268
 
199
269
  before do
200
270
  @scope = stub 'scope', :host => "myhost", :debug => nil
@@ -237,8 +307,8 @@ describe Puppet::Parser::Collector, "when collecting exported resources" do
237
307
  it "should return all matching resources from the current compile and mark them non-virtual and non-exported" do
238
308
  stub_rails(true)
239
309
 
240
- one = stub 'one', :type => "Mytype", :virtual? => true, :exported? => true
241
- two = stub 'two', :type => "Mytype", :virtual? => true, :exported? => true
310
+ one = stub 'one', :type => "Mytype", :virtual? => true, :exported? => true, :ref => "one"
311
+ two = stub 'two', :type => "Mytype", :virtual? => true, :exported? => true, :ref => "two"
242
312
 
243
313
  one.stubs(:exported=)
244
314
  one.stubs(:virtual=)
@@ -253,7 +323,7 @@ describe Puppet::Parser::Collector, "when collecting exported resources" do
253
323
  it "should mark all returned resources as not virtual" do
254
324
  stub_rails(true)
255
325
 
256
- one = stub 'one', :type => "Mytype", :virtual? => true, :exported? => true
326
+ one = stub 'one', :type => "Mytype", :virtual? => true, :exported? => true, :ref => "one"
257
327
 
258
328
  one.stubs(:exported=)
259
329
  one.expects(:virtual=).with(false)
@@ -267,13 +337,14 @@ describe Puppet::Parser::Collector, "when collecting exported resources" do
267
337
  stub_rails()
268
338
  Puppet::Rails::Host.stubs(:find_by_name).returns(nil)
269
339
 
270
- one = stub 'one', :restype => "Mytype", :title => "one", :virtual? => true, :exported? => true
340
+ one = stub 'one', :restype => "Mytype", :title => "one", :virtual? => true, :exported? => true, :ref => "one"
271
341
  Puppet::Rails::Resource.stubs(:find).returns([one])
272
342
 
273
343
  resource = mock 'resource'
274
344
  one.expects(:to_resource).with(@scope).returns(resource)
275
345
  resource.stubs(:exported=)
276
346
  resource.stubs(:virtual=)
347
+ resource.stubs(:ref)
277
348
 
278
349
  @compiler.stubs(:resources).returns([])
279
350
  @scope.stubs(:findresource).returns(nil)
@@ -283,17 +354,47 @@ describe Puppet::Parser::Collector, "when collecting exported resources" do
283
354
  @collector.evaluate.should == [resource]
284
355
  end
285
356
 
357
+ it "should override all exported collected resources if collector has an override" do
358
+ stub_rails()
359
+ Puppet::Rails::Host.stubs(:find_by_name).returns(nil)
360
+
361
+ one = stub 'one', :restype => "Mytype", :title => "one", :virtual? => true, :exported? => true, :ref => "one"
362
+ Puppet::Rails::Resource.stubs(:find).returns([one])
363
+
364
+ resource = mock 'resource'
365
+ one.expects(:to_resource).with(@scope).returns(resource)
366
+ resource.stubs(:exported=)
367
+ resource.stubs(:virtual=)
368
+ resource.stubs(:ref)
369
+ resource.stubs(:title)
370
+
371
+ @compiler.stubs(:resources).returns([])
372
+ @scope.stubs(:findresource).returns(nil)
373
+
374
+ param = stub 'param'
375
+ @compiler.stubs(:add_override)
376
+ @compiler.stubs(:add_resource)
377
+
378
+ @collector.add_override(:params => param )
379
+ Puppet::Parser::Resource.expects(:new).once.with { |h|
380
+ h[:params] == param
381
+ }
382
+
383
+ @collector.evaluate
384
+ end
385
+
286
386
  it "should store converted resources in the compile's resource list" do
287
387
  stub_rails()
288
388
  Puppet::Rails::Host.stubs(:find_by_name).returns(nil)
289
389
 
290
- one = stub 'one', :restype => "Mytype", :title => "one", :virtual? => true, :exported? => true
390
+ one = stub 'one', :restype => "Mytype", :title => "one", :virtual? => true, :exported? => true, :ref => "one"
291
391
  Puppet::Rails::Resource.stubs(:find).returns([one])
292
392
 
293
393
  resource = mock 'resource'
294
394
  one.expects(:to_resource).with(@scope).returns(resource)
295
395
  resource.stubs(:exported=)
296
396
  resource.stubs(:virtual=)
397
+ resource.stubs(:ref)
297
398
 
298
399
  @compiler.stubs(:resources).returns([])
299
400
  @scope.stubs(:findresource).returns(nil)
@@ -308,13 +409,14 @@ describe Puppet::Parser::Collector, "when collecting exported resources" do
308
409
  stub_rails()
309
410
  Puppet::Rails::Host.stubs(:find_by_name).returns(nil)
310
411
 
311
- one = stub 'one', :restype => "Mytype", :title => "one", :virtual? => true, :exported? => true
412
+ one = stub 'one', :restype => "Mytype", :title => "one", :virtual? => true, :exported? => true, :ref => "one"
312
413
  Puppet::Rails::Resource.stubs(:find).returns([one])
313
414
 
314
415
  resource = mock 'resource'
315
416
  one.expects(:to_resource).with(@scope).returns(resource)
316
417
  resource.expects(:exported=).with(false)
317
418
  resource.stubs(:virtual=)
419
+ resource.stubs(:ref)
318
420
 
319
421
  @compiler.stubs(:resources).returns([])
320
422
  @scope.stubs(:findresource).returns(nil)
@@ -364,7 +466,7 @@ describe Puppet::Parser::Collector, "when collecting exported resources" do
364
466
  end
365
467
 
366
468
  describe Puppet::Parser::Collector, "when building its ActiveRecord query for collecting exported resources" do
367
- confine Puppet.features.rails? => "Cannot test Rails integration without ActiveRecord"
469
+ confine "Cannot test Rails integration without ActiveRecord" => Puppet.features.rails?
368
470
 
369
471
  before do
370
472
  @scope = stub 'scope', :host => "myhost", :debug => nil
@@ -374,7 +476,10 @@ describe Puppet::Parser::Collector, "when building its ActiveRecord query for co
374
476
  @equery = nil
375
477
  @vquery = proc { |r| true }
376
478
 
479
+ @resource = stub_everything 'collected'
480
+
377
481
  @collector = Puppet::Parser::Collector.new(@scope, @resource_type, @equery, @vquery, :exported)
482
+ @collector.stubs(:exported_resource).with(@resource).returns(@resource)
378
483
  @compiler.stubs(:resources).returns([])
379
484
 
380
485
  ActiveRecord::Base.stubs(:connected?).returns(false)
@@ -394,33 +499,47 @@ describe Puppet::Parser::Collector, "when building its ActiveRecord query for co
394
499
 
395
500
  Puppet::Rails::Resource.stubs(:find).with { |*arguments|
396
501
  options = arguments[3]
397
- options[:conditions][0] =~ /^host_id != \?/ and options[:conditions][1] == 5
398
- }.returns([])
502
+ options[:conditions][0] =~ /^host_id != \?/ and options[:conditions][1] == 5
503
+ }.returns([@resource])
399
504
 
400
- @collector.evaluate
505
+ @collector.evaluate.should == [@resource]
401
506
  end
402
507
 
403
- it "should return parameter names and parameter values when querying ActiveRecord" do
508
+ it "should return parameter names, parameter values when querying ActiveRecord" do
404
509
  Puppet::Rails::Resource.stubs(:find).with { |*arguments|
405
510
  options = arguments[3]
406
511
  options[:include] == {:param_values => :param_name}
407
- }.returns([])
512
+ }.returns([@resource])
408
513
 
409
- @collector.evaluate
514
+ @collector.evaluate.should == [@resource]
515
+ end
516
+
517
+ it "should return tags when querying ActiveRecord with a tag exported query" do
518
+ @collector.equery = "puppet_tags.name = test"
519
+ Puppet::Rails::Resource.stubs(:find).with { |*arguments|
520
+ options = arguments[3]
521
+ options[:include] == {:param_values => :param_name, :puppet_tags => :resource_tags}
522
+ }.returns([@resource])
523
+
524
+ @collector.evaluate.should == [@resource]
410
525
  end
411
526
 
412
527
  it "should only search for exported resources with the matching type" do
413
528
  Puppet::Rails::Resource.stubs(:find).with { |*arguments|
414
529
  options = arguments[3]
415
530
  options[:conditions][0].include?("(exported=? AND restype=?)") and options[:conditions][1] == true and options[:conditions][2] == "Mytype"
416
- }.returns([])
531
+ }.returns([@resource])
532
+
533
+ @collector.evaluate.should == [@resource]
417
534
  end
418
535
 
419
536
  it "should include the export query if one is provided" do
420
- @collector = Puppet::Parser::Collector.new(@scope, @resource_type, "test = true", @vquery, :exported)
537
+ @collector.equery = "test = true"
421
538
  Puppet::Rails::Resource.stubs(:find).with { |*arguments|
422
539
  options = arguments[3]
423
540
  options[:conditions][0].include?("test = true")
424
- }.returns([])
541
+ }.returns([@resource])
542
+
543
+ @collector.evaluate.should == [@resource]
425
544
  end
426
545
  end