puppet 0.24.9 → 0.25.0

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

Potentially problematic release.


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

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