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
@@ -1,865 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require File.dirname(__FILE__) + '/../../spec_helper'
4
-
5
- describe Puppet::Node::Catalog, " when compiling" do
6
- it "should accept tags" do
7
- config = Puppet::Node::Catalog.new("mynode")
8
- config.tag("one")
9
- config.tags.should == %w{one}
10
- end
11
-
12
- it "should accept multiple tags at once" do
13
- config = Puppet::Node::Catalog.new("mynode")
14
- config.tag("one", "two")
15
- config.tags.should == %w{one two}
16
- end
17
-
18
- it "should convert all tags to strings" do
19
- config = Puppet::Node::Catalog.new("mynode")
20
- config.tag("one", :two)
21
- config.tags.should == %w{one two}
22
- end
23
-
24
- it "should tag with both the qualified name and the split name" do
25
- config = Puppet::Node::Catalog.new("mynode")
26
- config.tag("one::two")
27
- config.tags.include?("one").should be_true
28
- config.tags.include?("one::two").should be_true
29
- end
30
-
31
- it "should accept classes" do
32
- config = Puppet::Node::Catalog.new("mynode")
33
- config.add_class("one")
34
- config.classes.should == %w{one}
35
- config.add_class("two", "three")
36
- config.classes.should == %w{one two three}
37
- end
38
-
39
- it "should tag itself with passed class names" do
40
- config = Puppet::Node::Catalog.new("mynode")
41
- config.add_class("one")
42
- config.tags.should == %w{one}
43
- end
44
- end
45
-
46
- describe Puppet::Node::Catalog, " when extracting" do
47
- it "should return extraction result as the method result" do
48
- config = Puppet::Node::Catalog.new("mynode")
49
- config.expects(:extraction_format).returns(:whatever)
50
- config.expects(:extract_to_whatever).returns(:result)
51
- config.extract.should == :result
52
- end
53
- end
54
-
55
- describe Puppet::Node::Catalog, " when extracting transobjects" do
56
-
57
- def mkscope
58
- @parser = Puppet::Parser::Parser.new :Code => ""
59
- @node = Puppet::Node.new("mynode")
60
- @compiler = Puppet::Parser::Compiler.new(@node, @parser)
61
-
62
- # XXX This is ridiculous.
63
- @compiler.send(:evaluate_main)
64
- @scope = @compiler.topscope
65
- end
66
-
67
- def mkresource(type, name)
68
- Puppet::Parser::Resource.new(:type => type, :title => name, :source => @source, :scope => @scope)
69
- end
70
-
71
- it "should always create a TransBucket for the 'main' class" do
72
- config = Puppet::Node::Catalog.new("mynode")
73
-
74
- @scope = mkscope
75
- @source = mock 'source'
76
-
77
- main = mkresource("class", :main)
78
- config.add_vertex(main)
79
-
80
- bucket = mock 'bucket'
81
- bucket.expects(:classes=).with(config.classes)
82
- main.stubs(:builtin?).returns(false)
83
- main.expects(:to_transbucket).returns(bucket)
84
-
85
- config.extract_to_transportable.should equal(bucket)
86
- end
87
-
88
- # This isn't really a spec-style test, but I don't know how better to do it.
89
- it "should transform the resource graph into a tree of TransBuckets and TransObjects" do
90
- config = Puppet::Node::Catalog.new("mynode")
91
-
92
- @scope = mkscope
93
- @source = mock 'source'
94
-
95
- defined = mkresource("class", :main)
96
- builtin = mkresource("file", "/yay")
97
-
98
- config.add_edge(defined, builtin)
99
-
100
- bucket = []
101
- bucket.expects(:classes=).with(config.classes)
102
- defined.stubs(:builtin?).returns(false)
103
- defined.expects(:to_transbucket).returns(bucket)
104
- builtin.expects(:to_transobject).returns(:builtin)
105
-
106
- config.extract_to_transportable.should == [:builtin]
107
- end
108
-
109
- # Now try it with a more complicated graph -- a three tier graph, each tier
110
- it "should transform arbitrarily deep graphs into isomorphic trees" do
111
- config = Puppet::Node::Catalog.new("mynode")
112
-
113
- @scope = mkscope
114
- @scope.stubs(:tags).returns([])
115
- @source = mock 'source'
116
-
117
- # Create our scopes.
118
- top = mkresource "class", :main
119
- topbucket = []
120
- topbucket.expects(:classes=).with([])
121
- top.expects(:to_trans).returns(topbucket)
122
- topres = mkresource "file", "/top"
123
- topres.expects(:to_trans).returns(:topres)
124
- config.add_edge top, topres
125
-
126
- middle = mkresource "class", "middle"
127
- middle.expects(:to_trans).returns([])
128
- config.add_edge top, middle
129
- midres = mkresource "file", "/mid"
130
- midres.expects(:to_trans).returns(:midres)
131
- config.add_edge middle, midres
132
-
133
- bottom = mkresource "class", "bottom"
134
- bottom.expects(:to_trans).returns([])
135
- config.add_edge middle, bottom
136
- botres = mkresource "file", "/bot"
137
- botres.expects(:to_trans).returns(:botres)
138
- config.add_edge bottom, botres
139
-
140
- toparray = config.extract_to_transportable
141
-
142
- # This is annoying; it should look like:
143
- # [[[:botres], :midres], :topres]
144
- # but we can't guarantee sort order.
145
- toparray.include?(:topres).should be_true
146
-
147
- midarray = toparray.find { |t| t.is_a?(Array) }
148
- midarray.include?(:midres).should be_true
149
- botarray = midarray.find { |t| t.is_a?(Array) }
150
- botarray.include?(:botres).should be_true
151
- end
152
- end
153
-
154
- describe Puppet::Node::Catalog, " when converting to a transobject catalog" do
155
- class CatalogTestResource
156
- attr_accessor :name, :virtual, :builtin
157
- def initialize(name, options = {})
158
- @name = name
159
- options.each { |p,v| send(p.to_s + "=", v) }
160
- end
161
-
162
- def ref
163
- if builtin?
164
- "File[%s]" % name
165
- else
166
- "Class[%s]" % name
167
- end
168
- end
169
-
170
- def virtual?
171
- virtual
172
- end
173
-
174
- def builtin?
175
- builtin
176
- end
177
-
178
- def to_transobject
179
- Puppet::TransObject.new(name, builtin? ? "file" : "class")
180
- end
181
- end
182
-
183
- before do
184
- @original = Puppet::Node::Catalog.new("mynode")
185
- @original.tag(*%w{one two three})
186
- @original.add_class *%w{four five six}
187
-
188
- @top = CatalogTestResource.new 'top'
189
- @topobject = CatalogTestResource.new 'topobject', :builtin => true
190
- @virtual = CatalogTestResource.new 'virtual', :virtual => true
191
- @virtualobject = CatalogTestResource.new 'virtualobject', :builtin => true, :virtual => true
192
- @middle = CatalogTestResource.new 'middle'
193
- @middleobject = CatalogTestResource.new 'middleobject', :builtin => true
194
- @bottom = CatalogTestResource.new 'bottom'
195
- @bottomobject = CatalogTestResource.new 'bottomobject', :builtin => true
196
-
197
- @resources = [@top, @topobject, @middle, @middleobject, @bottom, @bottomobject]
198
-
199
- @original.add_edge(@top, @topobject)
200
- @original.add_edge(@top, @virtual)
201
- @original.add_edge(@virtual, @virtualobject)
202
- @original.add_edge(@top, @middle)
203
- @original.add_edge(@middle, @middleobject)
204
- @original.add_edge(@middle, @bottom)
205
- @original.add_edge(@bottom, @bottomobject)
206
-
207
- @catalog = @original.to_transportable
208
- end
209
-
210
- it "should add all resources as TransObjects" do
211
- @resources.each { |resource| @catalog.resource(resource.ref).should be_instance_of(Puppet::TransObject) }
212
- end
213
-
214
- it "should not extract defined virtual resources" do
215
- @catalog.vertices.find { |v| v.name == "virtual" }.should be_nil
216
- end
217
-
218
- it "should not extract builtin virtual resources" do
219
- @catalog.vertices.find { |v| v.name == "virtualobject" }.should be_nil
220
- end
221
-
222
- it "should copy the tag list to the new catalog" do
223
- @catalog.tags.sort.should == @original.tags.sort
224
- end
225
-
226
- it "should copy the class list to the new catalog" do
227
- @catalog.classes.should == @original.classes
228
- end
229
-
230
- it "should duplicate the original edges" do
231
- @original.edges.each do |edge|
232
- next if edge.source.virtual? or edge.target.virtual?
233
- source = @catalog.resource(edge.source.ref)
234
- target = @catalog.resource(edge.target.ref)
235
-
236
- source.should_not be_nil
237
- target.should_not be_nil
238
- @catalog.edge?(source, target).should be_true
239
- end
240
- end
241
-
242
- it "should set itself as the catalog for each converted resource" do
243
- @catalog.vertices.each { |v| v.catalog.object_id.should equal(@catalog.object_id) }
244
- end
245
- end
246
-
247
- describe Puppet::Node::Catalog, " when converting to a RAL catalog" do
248
- before do
249
- @original = Puppet::Node::Catalog.new("mynode")
250
- @original.tag(*%w{one two three})
251
- @original.add_class *%w{four five six}
252
-
253
- @top = Puppet::TransObject.new 'top', "class"
254
- @topobject = Puppet::TransObject.new '/topobject', "file"
255
- @middle = Puppet::TransObject.new 'middle', "class"
256
- @middleobject = Puppet::TransObject.new '/middleobject', "file"
257
- @bottom = Puppet::TransObject.new 'bottom', "class"
258
- @bottomobject = Puppet::TransObject.new '/bottomobject', "file"
259
-
260
- @resources = [@top, @topobject, @middle, @middleobject, @bottom, @bottomobject]
261
-
262
- @original.add_resource(*@resources)
263
-
264
- @original.add_edge(@top, @topobject)
265
- @original.add_edge(@top, @middle)
266
- @original.add_edge(@middle, @middleobject)
267
- @original.add_edge(@middle, @bottom)
268
- @original.add_edge(@bottom, @bottomobject)
269
-
270
- @catalog = @original.to_ral
271
- end
272
-
273
- it "should add all resources as RAL instances" do
274
- @resources.each { |resource| @catalog.resource(resource.ref).should be_instance_of(Puppet::Type) }
275
- end
276
-
277
- it "should copy the tag list to the new catalog" do
278
- @catalog.tags.sort.should == @original.tags.sort
279
- end
280
-
281
- it "should copy the class list to the new catalog" do
282
- @catalog.classes.should == @original.classes
283
- end
284
-
285
- it "should duplicate the original edges" do
286
- @original.edges.each do |edge|
287
- @catalog.edge?(@catalog.resource(edge.source.ref), @catalog.resource(edge.target.ref)).should be_true
288
- end
289
- end
290
-
291
- it "should set itself as the catalog for each converted resource" do
292
- @catalog.vertices.each { |v| v.catalog.object_id.should equal(@catalog.object_id) }
293
- end
294
-
295
- it "should convert parser resources to transobjects and set the catalog" do
296
- catalog = Puppet::Node::Catalog.new("mynode")
297
-
298
- result = mock 'catalog'
299
- result.stub_everything
300
-
301
- Puppet::Node::Catalog.expects(:new).returns result
302
-
303
- trans = mock 'trans'
304
- resource = Puppet::Parser::Resource.new(:scope => mock("scope"), :source => mock("source"), :type => :file, :title => "/eh")
305
- resource.expects(:to_transobject).returns trans
306
- trans.expects(:catalog=).with result
307
-
308
- trans.stub_everything
309
-
310
- catalog.add_resource(resource)
311
-
312
- catalog.to_ral
313
- end
314
-
315
- # This tests #931.
316
- it "should not lose track of resources whose names vary" do
317
- changer = Puppet::TransObject.new 'changer', 'test'
318
-
319
- config = Puppet::Node::Catalog.new('test')
320
- config.add_resource(changer)
321
- config.add_resource(@top)
322
-
323
- config.add_edge(@top, changer)
324
-
325
- resource = stub 'resource', :name => "changer2", :title => "changer2", :ref => "Test[changer2]", :catalog= => nil, :remove => nil
326
-
327
- #changer is going to get duplicated as part of a fix for aliases 1094
328
- changer.expects(:dup).returns(changer)
329
- changer.expects(:to_type).returns(resource)
330
-
331
- newconfig = nil
332
-
333
- Puppet::Type.allclear
334
-
335
- proc { @catalog = config.to_ral }.should_not raise_error
336
- @catalog.resource("Test[changer2]").should equal(resource)
337
- end
338
-
339
- after do
340
- # Remove all resource instances.
341
- @catalog.clear(true)
342
- end
343
- end
344
-
345
- describe Puppet::Node::Catalog, " when functioning as a resource container" do
346
- before do
347
- @catalog = Puppet::Node::Catalog.new("host")
348
- @one = stub 'resource1', :ref => "Me[one]", :catalog= => nil, :title => "one"
349
- @two = stub 'resource2', :ref => "Me[two]", :catalog= => nil, :title => "two"
350
- @dupe = stub 'resource3', :ref => "Me[one]", :catalog= => nil, :title => "one"
351
- end
352
-
353
- it "should provide a method to add one or more resources" do
354
- @catalog.add_resource @one, @two
355
- @catalog.resource(@one.ref).should equal(@one)
356
- @catalog.resource(@two.ref).should equal(@two)
357
- end
358
-
359
- it "should set itself as the resource's catalog if it is not a relationship graph" do
360
- @one.expects(:catalog=).with(@catalog)
361
- @catalog.add_resource @one
362
- end
363
-
364
- it "should not set itself as the resource's catalog if it is a relationship graph" do
365
- @one.expects(:catalog=).never
366
- @catalog.is_relationship_graph = true
367
- @catalog.add_resource @one
368
- end
369
-
370
- it "should make all vertices available by resource reference" do
371
- @catalog.add_resource(@one)
372
- @catalog.resource(@one.ref).should equal(@one)
373
- @catalog.vertices.find { |r| r.ref == @one.ref }.should equal(@one)
374
- end
375
-
376
- it "should canonize how resources are referred to during retrieval when both type and title are provided" do
377
- @catalog.add_resource(@one)
378
-
379
- @catalog.resource("me", "one").should equal(@one)
380
- end
381
-
382
- it "should canonize how resources are referred to during retrieval when just the title is provided" do
383
- @catalog.add_resource(@one)
384
-
385
- @catalog.resource("me[one]", nil).should equal(@one)
386
- end
387
-
388
- it "should not allow two resources with the same resource reference" do
389
- @catalog.add_resource(@one)
390
-
391
- # These are used to build the failure
392
- @dupe.stubs(:file)
393
- @dupe.stubs(:line)
394
- @one.stubs(:file)
395
- @one.stubs(:line)
396
- proc { @catalog.add_resource(@dupe) }.should raise_error(ArgumentError)
397
- end
398
-
399
- it "should not store objects that do not respond to :ref" do
400
- proc { @catalog.add_resource("thing") }.should raise_error(ArgumentError)
401
- end
402
-
403
- it "should remove all resources when asked" do
404
- @catalog.add_resource @one
405
- @catalog.add_resource @two
406
- @one.expects :remove
407
- @two.expects :remove
408
- @catalog.clear(true)
409
- end
410
-
411
- it "should support a mechanism for finishing resources" do
412
- @one.expects :finish
413
- @two.expects :finish
414
- @catalog.add_resource @one
415
- @catalog.add_resource @two
416
-
417
- @catalog.finalize
418
- end
419
-
420
- it "should make default resources when finalizing" do
421
- @catalog.expects(:make_default_resources)
422
- @catalog.finalize
423
- end
424
-
425
- it "should add default resources to the catalog upon creation" do
426
- @catalog.make_default_resources
427
- @catalog.resource(:schedule, "daily").should_not be_nil
428
- end
429
-
430
- it "should optionally support an initialization block and should finalize after such blocks" do
431
- @one.expects :finish
432
- @two.expects :finish
433
- config = Puppet::Node::Catalog.new("host") do |conf|
434
- conf.add_resource @one
435
- conf.add_resource @two
436
- end
437
- end
438
-
439
- it "should inform the resource that it is the resource's catalog" do
440
- @one.expects(:catalog=).with(@catalog)
441
- @catalog.add_resource @one
442
- end
443
-
444
- it "should be able to find resources by reference" do
445
- @catalog.add_resource @one
446
- @catalog.resource(@one.ref).should equal(@one)
447
- end
448
-
449
- it "should be able to find resources by reference or by type/title tuple" do
450
- @catalog.add_resource @one
451
- @catalog.resource("me", "one").should equal(@one)
452
- end
453
-
454
- it "should have a mechanism for removing resources" do
455
- @catalog.add_resource @one
456
- @one.expects :remove
457
- @catalog.remove_resource(@one)
458
- @catalog.resource(@one.ref).should be_nil
459
- @catalog.vertex?(@one).should be_false
460
- end
461
-
462
- it "should have a method for creating aliases for resources" do
463
- @catalog.add_resource @one
464
- @catalog.alias(@one, "other")
465
- @catalog.resource("me", "other").should equal(@one)
466
- end
467
-
468
- # This test is the same as the previous, but the behaviour should be explicit.
469
- it "should alias using the class name from the resource reference, not the resource class name" do
470
- @catalog.add_resource @one
471
- @catalog.alias(@one, "other")
472
- @catalog.resource("me", "other").should equal(@one)
473
- end
474
-
475
- it "should ignore conflicting aliases that point to the aliased resource" do
476
- @catalog.alias(@one, "other")
477
- lambda { @catalog.alias(@one, "other") }.should_not raise_error
478
- end
479
-
480
- it "should fail to add an alias if the aliased name already exists" do
481
- @catalog.add_resource @one
482
- proc { @catalog.alias @two, "one" }.should raise_error(ArgumentError)
483
- end
484
-
485
- it "should not fail when a resource has duplicate aliases created" do
486
- @catalog.add_resource @one
487
- proc { @catalog.alias @one, "one" }.should_not raise_error
488
- end
489
-
490
- it "should not create aliases that point back to the resource" do
491
- @catalog.alias(@one, "one")
492
- @catalog.resource(:me, "one").should be_nil
493
- end
494
-
495
- it "should be able to look resources up by their aliases" do
496
- @catalog.add_resource @one
497
- @catalog.alias @one, "two"
498
- @catalog.resource(:me, "two").should equal(@one)
499
- end
500
-
501
- it "should remove resource aliases when the target resource is removed" do
502
- @catalog.add_resource @one
503
- @catalog.alias(@one, "other")
504
- @one.expects :remove
505
- @catalog.remove_resource(@one)
506
- @catalog.resource("me", "other").should be_nil
507
- end
508
-
509
- it "should add an alias for the namevar when the title and name differ on isomorphic resource types" do
510
- resource = Puppet::Type.type(:file).create :path => "/something", :title => "other", :content => "blah"
511
- resource.expects(:isomorphic?).returns(true)
512
- @catalog.add_resource(resource)
513
- @catalog.resource(:file, "other").should equal(resource)
514
- @catalog.resource(:file, "/something").ref.should == resource.ref
515
- end
516
-
517
- it "should not add an alias for the namevar when the title and name differ on non-isomorphic resource types" do
518
- resource = Puppet::Type.type(:file).create :path => "/something", :title => "other", :content => "blah"
519
- resource.expects(:isomorphic?).returns(false)
520
- @catalog.add_resource(resource)
521
- @catalog.resource(:file, resource.title).should equal(resource)
522
- # We can't use .should here, because the resources respond to that method.
523
- if @catalog.resource(:file, resource.name)
524
- raise "Aliased non-isomorphic resource"
525
- end
526
- end
527
-
528
- after do
529
- Puppet::Type.allclear
530
- end
531
- end
532
-
533
- describe Puppet::Node::Catalog do
534
- before :each do
535
- @catalog = Puppet::Node::Catalog.new("host")
536
-
537
- @catalog.retrieval_duration = Time.now
538
- @transaction = mock 'transaction'
539
- Puppet::Transaction.stubs(:new).returns(@transaction)
540
- @transaction.stubs(:evaluate)
541
- @transaction.stubs(:cleanup)
542
- @transaction.stubs(:addtimes)
543
- end
544
-
545
- describe Puppet::Node::Catalog, " when applying" do
546
-
547
- it "should create and evaluate a transaction" do
548
- @transaction.expects(:evaluate)
549
- @catalog.apply
550
- end
551
-
552
- it "should provide the catalog time to the transaction" do
553
- @transaction.expects(:addtimes).with do |arg|
554
- arg[:config_retrieval].should be_instance_of(Time)
555
- true
556
- end
557
- @catalog.apply
558
- end
559
-
560
- it "should clean up the transaction" do
561
- @transaction.expects :cleanup
562
- @catalog.apply
563
- end
564
-
565
- it "should return the transaction" do
566
- @catalog.apply.should equal(@transaction)
567
- end
568
-
569
- it "should yield the transaction if a block is provided" do
570
- @catalog.apply do |trans|
571
- trans.should equal(@transaction)
572
- end
573
- end
574
-
575
- it "should default to not being a host catalog" do
576
- @catalog.host_config.should be_nil
577
- end
578
-
579
- it "should pass supplied tags on to the transaction" do
580
- @transaction.expects(:tags=).with(%w{one two})
581
- @catalog.apply(:tags => %w{one two})
582
- end
583
-
584
- it "should set ignoreschedules on the transaction if specified in apply()" do
585
- @transaction.expects(:ignoreschedules=).with(true)
586
- @catalog.apply(:ignoreschedules => true)
587
- end
588
- end
589
-
590
- describe Puppet::Node::Catalog, " when applying host catalogs" do
591
-
592
- # super() doesn't work in the setup method for some reason
593
- before do
594
- @catalog.host_config = true
595
- Puppet::Util::Storage.stubs(:store)
596
- end
597
-
598
- it "should send a report if reporting is enabled" do
599
- Puppet[:report] = true
600
- @transaction.expects :send_report
601
- @transaction.stubs :any_failed? => false
602
- @catalog.apply
603
- end
604
-
605
- it "should send a report if report summaries are enabled" do
606
- Puppet[:summarize] = true
607
- @transaction.expects :send_report
608
- @transaction.stubs :any_failed? => false
609
- @catalog.apply
610
- end
611
-
612
- it "should initialize the state database before applying a catalog" do
613
- Puppet::Util::Storage.expects(:load)
614
-
615
- # Short-circuit the apply, so we know we're loading before the transaction
616
- Puppet::Transaction.expects(:new).raises ArgumentError
617
- proc { @catalog.apply }.should raise_error(ArgumentError)
618
- end
619
-
620
- it "should sync the state database after applying" do
621
- Puppet::Util::Storage.expects(:store)
622
- @transaction.stubs :any_failed? => false
623
- @catalog.apply
624
- end
625
-
626
- after { Puppet.settings.clear }
627
- end
628
-
629
- describe Puppet::Node::Catalog, " when applying non-host catalogs" do
630
-
631
- before do
632
- @catalog.host_config = false
633
- end
634
-
635
- it "should never send reports" do
636
- Puppet[:report] = true
637
- Puppet[:summarize] = true
638
- @transaction.expects(:send_report).never
639
- @catalog.apply
640
- end
641
-
642
- it "should never modify the state database" do
643
- Puppet::Util::Storage.expects(:load).never
644
- Puppet::Util::Storage.expects(:store).never
645
- @catalog.apply
646
- end
647
-
648
- after { Puppet.settings.clear }
649
- end
650
- end
651
-
652
- describe Puppet::Node::Catalog, " when creating a relationship graph" do
653
- before do
654
- Puppet::Type.type(:component)
655
- @catalog = Puppet::Node::Catalog.new("host")
656
- @compone = Puppet::Type::Component.create :name => "one"
657
- @comptwo = Puppet::Type::Component.create :name => "two", :require => ["class", "one"]
658
- @file = Puppet::Type.type(:file)
659
- @one = @file.create :path => "/one"
660
- @two = @file.create :path => "/two"
661
- @catalog.add_edge @compone, @one
662
- @catalog.add_edge @comptwo, @two
663
-
664
- @three = @file.create :path => "/three"
665
- @four = @file.create :path => "/four", :require => ["file", "/three"]
666
- @five = @file.create :path => "/five"
667
- @catalog.add_resource @compone, @comptwo, @one, @two, @three, @four, @five
668
- @relationships = @catalog.relationship_graph
669
- end
670
-
671
- it "should fail when trying to create a relationship graph for a relationship graph" do
672
- proc { @relationships.relationship_graph }.should raise_error(Puppet::DevError)
673
- end
674
-
675
- it "should be able to create a relationship graph" do
676
- @relationships.should be_instance_of(Puppet::Node::Catalog)
677
- end
678
-
679
- it "should copy its host_config setting to the relationship graph" do
680
- config = Puppet::Node::Catalog.new
681
- config.host_config = true
682
- config.relationship_graph.host_config.should be_true
683
- end
684
-
685
- it "should not have any components" do
686
- @relationships.vertices.find { |r| r.instance_of?(Puppet::Type::Component) }.should be_nil
687
- end
688
-
689
- it "should have all non-component resources from the catalog" do
690
- # The failures print out too much info, so i just do a class comparison
691
- @relationships.vertex?(@five).should be_true
692
- end
693
-
694
- it "should have all resource relationships set as edges" do
695
- @relationships.edge?(@three, @four).should be_true
696
- end
697
-
698
- it "should copy component relationships to all contained resources" do
699
- @relationships.edge?(@one, @two).should be_true
700
- end
701
-
702
- it "should get removed when the catalog is cleaned up" do
703
- @relationships.expects(:clear).with(false)
704
- @catalog.clear
705
- @catalog.instance_variable_get("@relationship_graph").should be_nil
706
- end
707
-
708
- it "should create a new relationship graph after clearing the old one" do
709
- @relationships.expects(:clear).with(false)
710
- @catalog.clear
711
- @catalog.relationship_graph.should be_instance_of(Puppet::Node::Catalog)
712
- end
713
-
714
- it "should look up resources in the relationship graph if not found in the main catalog" do
715
- five = stub 'five', :ref => "File[five]", :catalog= => nil
716
- @relationships.add_resource five
717
- @catalog.resource(five.ref).should equal(five)
718
- end
719
-
720
- it "should provide a method to create additional resources that also registers the resource" do
721
- args = {:name => "/yay", :ensure => :file}
722
- resource = stub 'file', :ref => "File[/yay]", :catalog= => @catalog
723
- Puppet::Type.type(:file).expects(:create).with(args).returns(resource)
724
- @catalog.create_resource :file, args
725
- @catalog.resource("File[/yay]").should equal(resource)
726
- end
727
-
728
- it "should provide a mechanism for creating implicit resources" do
729
- args = {:name => "/yay", :ensure => :file}
730
- resource = stub 'file', :ref => "File[/yay]", :catalog= => @catalog
731
- Puppet::Type.type(:file).expects(:create).with(args).returns(resource)
732
- resource.expects(:implicit=).with(true)
733
- @catalog.create_implicit_resource :file, args
734
- @catalog.resource("File[/yay]").should equal(resource)
735
- end
736
-
737
- it "should add implicit resources to the relationship graph if there is one" do
738
- args = {:name => "/yay", :ensure => :file}
739
- resource = stub 'file', :ref => "File[/yay]", :catalog= => @catalog
740
- resource.expects(:implicit=).with(true)
741
- Puppet::Type.type(:file).expects(:create).with(args).returns(resource)
742
- # build the graph
743
- relgraph = @catalog.relationship_graph
744
-
745
- @catalog.create_implicit_resource :file, args
746
- relgraph.resource("File[/yay]").should equal(resource)
747
- end
748
-
749
- it "should remove resources created mid-transaction" do
750
- args = {:name => "/yay", :ensure => :file}
751
- resource = stub 'file', :ref => "File[/yay]", :catalog= => @catalog
752
- @transaction = mock 'transaction'
753
- Puppet::Transaction.stubs(:new).returns(@transaction)
754
- @transaction.stubs(:evaluate)
755
- @transaction.stubs(:cleanup)
756
- @transaction.stubs(:addtimes)
757
- Puppet::Type.type(:file).expects(:create).with(args).returns(resource)
758
- resource.expects :remove
759
- @catalog.apply do |trans|
760
- @catalog.create_resource :file, args
761
- @catalog.resource("File[/yay]").should equal(resource)
762
- end
763
- @catalog.resource("File[/yay]").should be_nil
764
- end
765
-
766
- it "should remove resources from the relationship graph if it exists" do
767
- @catalog.remove_resource(@one)
768
- @catalog.relationship_graph.vertex?(@one).should be_false
769
- end
770
-
771
- after do
772
- Puppet::Type.allclear
773
- end
774
- end
775
-
776
- describe Puppet::Node::Catalog, " when writing dot files" do
777
- before do
778
- @catalog = Puppet::Node::Catalog.new("host")
779
- @name = :test
780
- @file = File.join(Puppet[:graphdir], @name.to_s + ".dot")
781
- end
782
- it "should only write when it is a host catalog" do
783
- File.expects(:open).with(@file).never
784
- @catalog.host_config = false
785
- Puppet[:graph] = true
786
- @catalog.write_graph(@name)
787
- end
788
-
789
- it "should only write when graphing is enabled" do
790
- File.expects(:open).with(@file).never
791
- @catalog.host_config = true
792
- Puppet[:graph] = false
793
- @catalog.write_graph(@name)
794
- end
795
-
796
- it "should write a dot file based on the passed name" do
797
- Puppet.settings.stubs(:use)
798
- File.expects(:open).with(@file, "w").yields(stub("file", :puts => nil))
799
- @catalog.expects(:to_dot).with("name" => @name.to_s.capitalize)
800
- @catalog.host_config = true
801
- Puppet[:graph] = true
802
- @catalog.write_graph(@name)
803
- end
804
-
805
- after do
806
- Puppet.settings.clear
807
- end
808
- end
809
-
810
- describe Puppet::Node::Catalog, " when indirecting" do
811
- before do
812
- @indirection = stub 'indirection', :name => :catalog
813
-
814
- Puppet::Indirector::Indirection.clear_cache
815
- end
816
-
817
- it "should redirect to the indirection for retrieval" do
818
- Puppet::Node::Catalog.stubs(:indirection).returns(@indirection)
819
- @indirection.expects(:find)
820
- Puppet::Node::Catalog.find(:myconfig)
821
- end
822
-
823
- it "should default to the 'compiler' terminus" do
824
- Puppet::Node::Catalog.indirection.terminus_class.should == :compiler
825
- end
826
-
827
- after do
828
- mocha_verify
829
- Puppet::Indirector::Indirection.clear_cache
830
- end
831
- end
832
-
833
- describe Puppet::Node::Catalog, " when converting to yaml" do
834
- before do
835
- @catalog = Puppet::Node::Catalog.new("me")
836
- @catalog.add_edge("one", "two")
837
- end
838
-
839
- it "should be able to be dumped to yaml" do
840
- YAML.dump(@catalog).should be_instance_of(String)
841
- end
842
- end
843
-
844
- describe Puppet::Node::Catalog, " when converting from yaml" do
845
- before do
846
- @catalog = Puppet::Node::Catalog.new("me")
847
- @catalog.add_edge("one", "two")
848
-
849
- text = YAML.dump(@catalog)
850
- @newcatalog = YAML.load(text)
851
- end
852
-
853
- it "should get converted back to a catalog" do
854
- @newcatalog.should be_instance_of(Puppet::Node::Catalog)
855
- end
856
-
857
- it "should have all vertices" do
858
- @newcatalog.vertex?("one").should be_true
859
- @newcatalog.vertex?("two").should be_true
860
- end
861
-
862
- it "should have all edges" do
863
- @newcatalog.edge?("one", "two").should be_true
864
- end
865
- end