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
@@ -7,21 +7,18 @@ resources = Puppet::Type.type(:resources)
7
7
  # There are still plenty of tests to port over from test/.
8
8
  describe resources do
9
9
  describe "when initializing" do
10
- before do
11
- resources.clear
12
- end
13
-
14
10
  it "should fail if the specified resource type does not exist" do
11
+ Puppet::Type.stubs(:type).with("Resources").returns resources
15
12
  Puppet::Type.expects(:type).with("nosuchtype").returns nil
16
- lambda { resources.create :name => "nosuchtype" }.should raise_error(Puppet::Error)
13
+ lambda { resources.new :name => "nosuchtype" }.should raise_error(Puppet::Error)
17
14
  end
18
15
 
19
16
  it "should not fail when the specified resource type exists" do
20
- lambda { resources.create :name => "file" }.should_not raise_error
17
+ lambda { resources.new :name => "file" }.should_not raise_error
21
18
  end
22
19
 
23
20
  it "should set its :resource_type attribute" do
24
- resources.create(:name => "file").resource_type.should == Puppet::Type.type(:file)
21
+ resources.new(:name => "file").resource_type.should == Puppet::Type.type(:file)
25
22
  end
26
23
  end
27
24
  end
@@ -40,18 +40,12 @@ module ScheduleTesting
40
40
  end
41
41
 
42
42
  describe Puppet::Type.type(:schedule) do
43
-
44
43
  before :each do
45
44
  Puppet.settings.stubs(:value).with(:ignoreschedules).returns(false)
46
45
 
47
- @schedule = Puppet::Type.type(:schedule).create(:name => "testing")
48
- end
49
-
50
- after :each do
51
- Puppet::Type.type(:schedule).clear
46
+ @schedule = Puppet::Type.type(:schedule).new(:name => "testing")
52
47
  end
53
48
 
54
-
55
49
  describe Puppet::Type.type(:schedule) do
56
50
  include ScheduleTesting
57
51
 
@@ -27,21 +27,19 @@ describe Puppet::Type.type(:selboolean), "when validating values" do
27
27
  end
28
28
 
29
29
  it "should support :on as a value to :value" do
30
- Puppet::Type.type(:selboolean).create(:name => "yay", :value => :on)
30
+ Puppet::Type.type(:selboolean).new(:name => "yay", :value => :on)
31
31
  end
32
32
 
33
33
  it "should support :off as a value to :value" do
34
- Puppet::Type.type(:selboolean).create(:name => "yay", :value => :off)
34
+ Puppet::Type.type(:selboolean).new(:name => "yay", :value => :off)
35
35
  end
36
36
 
37
37
  it "should support :true as a value to :persistent" do
38
- Puppet::Type.type(:selboolean).create(:name => "yay", :value => :on, :persistent => :true)
38
+ Puppet::Type.type(:selboolean).new(:name => "yay", :value => :on, :persistent => :true)
39
39
  end
40
40
 
41
41
  it "should support :false as a value to :persistent" do
42
- Puppet::Type.type(:selboolean).create(:name => "yay", :value => :on, :persistent => :false)
42
+ Puppet::Type.type(:selboolean).new(:name => "yay", :value => :on, :persistent => :false)
43
43
  end
44
-
45
- after { Puppet::Type.type(:selboolean).clear }
46
44
  end
47
45
 
@@ -33,90 +33,88 @@ describe Puppet::Type.type(:service), "when validating attribute values" do
33
33
  end
34
34
 
35
35
  it "should support :running as a value to :ensure" do
36
- Puppet::Type.type(:service).create(:name => "yay", :ensure => :running)
36
+ Puppet::Type.type(:service).new(:name => "yay", :ensure => :running)
37
37
  end
38
38
 
39
39
  it "should support :stopped as a value to :ensure" do
40
- Puppet::Type.type(:service).create(:name => "yay", :ensure => :stopped)
40
+ Puppet::Type.type(:service).new(:name => "yay", :ensure => :stopped)
41
41
  end
42
42
 
43
43
  it "should alias the value :true to :running in :ensure" do
44
- svc = Puppet::Type.type(:service).create(:name => "yay", :ensure => true)
44
+ svc = Puppet::Type.type(:service).new(:name => "yay", :ensure => true)
45
45
  svc.should(:ensure).should == :running
46
46
  end
47
47
 
48
48
  it "should alias the value :false to :stopped in :ensure" do
49
- svc = Puppet::Type.type(:service).create(:name => "yay", :ensure => false)
49
+ svc = Puppet::Type.type(:service).new(:name => "yay", :ensure => false)
50
50
  svc.should(:ensure).should == :stopped
51
51
  end
52
52
 
53
53
  it "should support :true as a value to :enable" do
54
- Puppet::Type.type(:service).create(:name => "yay", :enable => :true)
54
+ Puppet::Type.type(:service).new(:name => "yay", :enable => :true)
55
55
  end
56
56
 
57
57
  it "should support :false as a value to :enable" do
58
- Puppet::Type.type(:service).create(:name => "yay", :enable => :false)
58
+ Puppet::Type.type(:service).new(:name => "yay", :enable => :false)
59
59
  end
60
60
 
61
61
  it "should support :true as a value to :hasstatus" do
62
- Puppet::Type.type(:service).create(:name => "yay", :hasstatus => :true)
62
+ Puppet::Type.type(:service).new(:name => "yay", :hasstatus => :true)
63
63
  end
64
64
 
65
65
  it "should support :false as a value to :hasstatus" do
66
- Puppet::Type.type(:service).create(:name => "yay", :hasstatus => :false)
66
+ Puppet::Type.type(:service).new(:name => "yay", :hasstatus => :false)
67
67
  end
68
68
 
69
69
  it "should support :true as a value to :hasrestart" do
70
- Puppet::Type.type(:service).create(:name => "yay", :hasrestart => :true)
70
+ Puppet::Type.type(:service).new(:name => "yay", :hasrestart => :true)
71
71
  end
72
72
 
73
73
  it "should support :false as a value to :hasrestart" do
74
- Puppet::Type.type(:service).create(:name => "yay", :hasrestart => :false)
74
+ Puppet::Type.type(:service).new(:name => "yay", :hasrestart => :false)
75
75
  end
76
76
 
77
77
  it "should allow setting the :enable parameter if the provider has the :enableable feature" do
78
78
  Puppet::Type.type(:service).defaultprovider.stubs(:supports_parameter?).returns(true)
79
79
  Puppet::Type.type(:service).defaultprovider.expects(:supports_parameter?).with(Puppet::Type.type(:service).attrclass(:enable)).returns(true)
80
- svc = Puppet::Type.type(:service).create(:name => "yay", :enable => true)
80
+ svc = Puppet::Type.type(:service).new(:name => "yay", :enable => true)
81
81
  svc.should(:enable).should == :true
82
82
  end
83
83
 
84
84
  it "should not allow setting the :enable parameter if the provider is missing the :enableable feature" do
85
85
  Puppet::Type.type(:service).defaultprovider.stubs(:supports_parameter?).returns(true)
86
86
  Puppet::Type.type(:service).defaultprovider.expects(:supports_parameter?).with(Puppet::Type.type(:service).attrclass(:enable)).returns(false)
87
- svc = Puppet::Type.type(:service).create(:name => "yay", :enable => true)
87
+ svc = Puppet::Type.type(:service).new(:name => "yay", :enable => true)
88
88
  svc.should(:enable).should be_nil
89
89
  end
90
90
 
91
91
  it "should discard paths that do not exist" do
92
92
  FileTest.stubs(:exist?).returns(false)
93
93
  FileTest.stubs(:directory?).returns(false)
94
- svc = Puppet::Type.type(:service).create(:name => "yay", :path => "/one/two")
94
+ svc = Puppet::Type.type(:service).new(:name => "yay", :path => "/one/two")
95
95
  svc[:path].should be_empty
96
96
  end
97
97
 
98
98
  it "should discard paths that are not directories" do
99
99
  FileTest.stubs(:exist?).returns(true)
100
100
  FileTest.stubs(:directory?).returns(false)
101
- svc = Puppet::Type.type(:service).create(:name => "yay", :path => "/one/two")
101
+ svc = Puppet::Type.type(:service).new(:name => "yay", :path => "/one/two")
102
102
  svc[:path].should be_empty
103
103
  end
104
104
 
105
105
  it "should split paths on ':'" do
106
106
  FileTest.stubs(:exist?).returns(true)
107
107
  FileTest.stubs(:directory?).returns(true)
108
- svc = Puppet::Type.type(:service).create(:name => "yay", :path => "/one/two:/three/four")
108
+ svc = Puppet::Type.type(:service).new(:name => "yay", :path => "/one/two:/three/four")
109
109
  svc[:path].should == %w{/one/two /three/four}
110
110
  end
111
111
 
112
112
  it "should accept arrays of paths joined by ':'" do
113
113
  FileTest.stubs(:exist?).returns(true)
114
114
  FileTest.stubs(:directory?).returns(true)
115
- svc = Puppet::Type.type(:service).create(:name => "yay", :path => ["/one:/two", "/three:/four"])
115
+ svc = Puppet::Type.type(:service).new(:name => "yay", :path => ["/one:/two", "/three:/four"])
116
116
  svc[:path].should == %w{/one /two /three /four}
117
117
  end
118
-
119
- after { Puppet::Type.type(:service).clear }
120
118
  end
121
119
 
122
120
  describe Puppet::Type.type(:service), "when setting default attribute values" do
@@ -126,33 +124,31 @@ describe Puppet::Type.type(:service), "when setting default attribute values" do
126
124
 
127
125
  Puppet::Type.type(:service).defaultprovider.stubs(:respond_to?).returns(true)
128
126
  Puppet::Type.type(:service).defaultprovider.stubs(:defpath).returns("testing")
129
- svc = Puppet::Type.type(:service).create(:name => "other")
127
+ svc = Puppet::Type.type(:service).new(:name => "other")
130
128
  svc[:path].should == ["testing"]
131
129
  end
132
130
 
133
131
  it "should default 'pattern' to the binary if one is provided" do
134
- svc = Puppet::Type.type(:service).create(:name => "other", :binary => "/some/binary")
132
+ svc = Puppet::Type.type(:service).new(:name => "other", :binary => "/some/binary")
135
133
  svc[:pattern].should == "/some/binary"
136
134
  end
137
135
 
138
136
  it "should default 'pattern' to the name if no pattern is provided" do
139
- svc = Puppet::Type.type(:service).create(:name => "other")
137
+ svc = Puppet::Type.type(:service).new(:name => "other")
140
138
  svc[:pattern].should == "other"
141
139
  end
142
140
 
143
141
  it "should default 'control' to the upcased service name with periods replaced by underscores if the provider supports the 'controllable' feature" do
144
142
  provider = stub 'provider', :controllable? => true, :class => Puppet::Type.type(:service).defaultprovider, :clear => nil
145
143
  Puppet::Type.type(:service).defaultprovider.stubs(:new).returns(provider)
146
- svc = Puppet::Type.type(:service).create(:name => "nfs.client")
144
+ svc = Puppet::Type.type(:service).new(:name => "nfs.client")
147
145
  svc[:control].should == "NFS_CLIENT_START"
148
146
  end
149
-
150
- after { Puppet::Type.type(:service).clear }
151
147
  end
152
148
 
153
149
  describe Puppet::Type.type(:service), "when retrieving the host's current state" do
154
150
  before do
155
- @service = Puppet::Type.type(:service).create(:name => "yay")
151
+ @service = Puppet::Type.type(:service).new(:name => "yay")
156
152
  end
157
153
 
158
154
  it "should use the provider's status to determine whether the service is running" do
@@ -167,13 +163,11 @@ describe Puppet::Type.type(:service), "when retrieving the host's current state"
167
163
  @service[:enable] = true
168
164
  @service.property(:enable).retrieve.should == :yepper
169
165
  end
170
-
171
- after { Puppet::Type.type(:service).clear }
172
166
  end
173
167
 
174
168
  describe Puppet::Type.type(:service), "when changing the host" do
175
169
  before do
176
- @service = Puppet::Type.type(:service).create(:name => "yay")
170
+ @service = Puppet::Type.type(:service).new(:name => "yay")
177
171
  end
178
172
 
179
173
  it "should start the service if it is supposed to be running" do
@@ -215,13 +209,11 @@ describe Puppet::Type.type(:service), "when changing the host" do
215
209
 
216
210
  @service.property(:ensure).sync
217
211
  end
218
-
219
- after { Puppet::Type.type(:service).clear }
220
212
  end
221
213
 
222
214
  describe Puppet::Type.type(:service), "when refreshing the service" do
223
215
  before do
224
- @service = Puppet::Type.type(:service).create(:name => "yay")
216
+ @service = Puppet::Type.type(:service).new(:name => "yay")
225
217
  end
226
218
 
227
219
  it "should restart the service if it is running" do
@@ -249,6 +241,4 @@ describe Puppet::Type.type(:service), "when refreshing the service" do
249
241
  @service.provider.expects(:restart)
250
242
  @service.refresh
251
243
  end
252
-
253
- after { Puppet::Type.type(:service).clear }
254
244
  end
@@ -14,7 +14,7 @@ describe ssh_authorized_key do
14
14
 
15
15
  @provider = stub 'provider', :class => @provider_class, :file_path => "/tmp/whatever", :clear => nil
16
16
  @provider_class.stubs(:new).returns(@provider)
17
- @catalog = Puppet::Node::Catalog.new
17
+ @catalog = Puppet::Resource::Catalog.new
18
18
  end
19
19
 
20
20
  it "should have a name parameter" do
@@ -34,31 +34,31 @@ describe ssh_authorized_key do
34
34
  end
35
35
 
36
36
  it "should support :present as a value for :ensure" do
37
- proc { @class.create(:name => "whev", :ensure => :present, :user => "nobody") }.should_not raise_error
37
+ proc { @class.new(:name => "whev", :ensure => :present, :user => "nobody") }.should_not raise_error
38
38
  end
39
39
 
40
40
  it "should support :absent as a value for :ensure" do
41
- proc { @class.create(:name => "whev", :ensure => :absent, :user => "nobody") }.should_not raise_error
41
+ proc { @class.new(:name => "whev", :ensure => :absent, :user => "nobody") }.should_not raise_error
42
42
  end
43
43
 
44
44
  it "should have an type property" do
45
45
  @class.attrtype(:type).should == :property
46
46
  end
47
47
  it "should support ssh-dss as an type value" do
48
- proc { @class.create(:name => "whev", :type => "ssh-dss", :user => "nobody") }.should_not raise_error
48
+ proc { @class.new(:name => "whev", :type => "ssh-dss", :user => "nobody") }.should_not raise_error
49
49
  end
50
50
  it "should support ssh-rsa as an type value" do
51
- proc { @class.create(:name => "whev", :type => "ssh-rsa", :user => "nobody") }.should_not raise_error
51
+ proc { @class.new(:name => "whev", :type => "ssh-rsa", :user => "nobody") }.should_not raise_error
52
52
  end
53
53
  it "should support :dsa as an type value" do
54
- proc { @class.create(:name => "whev", :type => :dsa, :user => "nobody") }.should_not raise_error
54
+ proc { @class.new(:name => "whev", :type => :dsa, :user => "nobody") }.should_not raise_error
55
55
  end
56
56
  it "should support :rsa as an type value" do
57
- proc { @class.create(:name => "whev", :type => :rsa, :user => "nobody") }.should_not raise_error
57
+ proc { @class.new(:name => "whev", :type => :rsa, :user => "nobody") }.should_not raise_error
58
58
  end
59
59
 
60
60
  it "should not support values other than ssh-dss, ssh-rsa, dsa, rsa in the ssh_authorized_key_type" do
61
- proc { @class.create(:name => "whev", :type => :something) }.should raise_error(Puppet::Error)
61
+ proc { @class.new(:name => "whev", :type => :something) }.should raise_error(Puppet::Error)
62
62
  end
63
63
 
64
64
  it "should have an key property" do
@@ -74,13 +74,13 @@ describe ssh_authorized_key do
74
74
  end
75
75
 
76
76
  it "'s options property should return well formed string of arrays from is_to_s" do
77
- resource = @class.create(:name => "whev", :type => :rsa, :user => "nobody", :options => ["a","b","c"])
77
+ resource = @class.new(:name => "whev", :type => :rsa, :user => "nobody", :options => ["a","b","c"])
78
78
 
79
79
  resource.property(:options).is_to_s(["a","b","c"]).should == "a,b,c"
80
80
  end
81
81
 
82
82
  it "'s options property should return well formed string of arrays from is_to_s" do
83
- resource = @class.create(:name => "whev", :type => :rsa, :user => "nobody", :options => ["a","b","c"])
83
+ resource = @class.new(:name => "whev", :type => :rsa, :user => "nobody", :options => ["a","b","c"])
84
84
 
85
85
  resource.property(:options).should_to_s(["a","b","c"]).should == "a,b,c"
86
86
  end
@@ -120,10 +120,21 @@ describe ssh_authorized_key do
120
120
  target = File.expand_path("~root/.ssh/authorized_keys")
121
121
  resource.should(:target).should == target
122
122
  end
123
- end
124
123
 
125
- after do
126
- @class.clear
127
- @catalog.clear
124
+ # Bug #2124 - ssh_authorized_key always changes target if target is not defined
125
+ it "should not raise spurious change events" do
126
+ resource = @class.new(:name => "Test", :user => "root")
127
+ target = File.expand_path("~root/.ssh/authorized_keys")
128
+ resource.property(:target).insync?(target).should == true
129
+ end
130
+ end
131
+
132
+ describe "when calling validate" do
133
+ it "should not crash on a non-existant user" do
134
+ resource = @class.create(
135
+ :name => "Test",
136
+ :user => "ihopesuchuserdoesnotexist")
137
+ proc { resource.validate }.should_not raise_error
138
+ end
128
139
  end
129
140
  end
@@ -9,39 +9,27 @@ describe tidy do
9
9
  Puppet.settings.stubs(:use)
10
10
  end
11
11
 
12
- after { tidy.clear }
13
-
14
- it "should be in sync if the targeted file does not exist" do
15
- File.expects(:lstat).with("/tmp/foonesslaters").raises Errno::ENOENT
16
- @tidy = tidy.create :path => "/tmp/foonesslaters", :age => "100d"
17
-
18
- @tidy.property(:ensure).must be_insync({})
12
+ it "should use :lstat when stating a file" do
13
+ resource = tidy.new :path => "/foo/bar", :age => "1d"
14
+ stat = mock 'stat'
15
+ File.expects(:lstat).with("/foo/bar").returns stat
16
+ resource.stat("/foo/bar").should == stat
19
17
  end
20
18
 
21
- [:ensure, :age, :size].each do |property|
22
- it "should have a %s property" % property do
23
- tidy.attrclass(property).ancestors.should be_include(Puppet::Property)
24
- end
25
-
26
- it "should have documentation for its %s property" % property do
27
- tidy.attrclass(property).doc.should be_instance_of(String)
28
- end
29
- end
30
-
31
- [:path, :matches, :type, :recurse, :rmdirs].each do |param|
19
+ [:age, :size, :path, :matches, :type, :recurse, :rmdirs].each do |param|
32
20
  it "should have a %s parameter" % param do
33
- tidy.attrclass(param).ancestors.should be_include(Puppet::Parameter)
21
+ Puppet::Type.type(:tidy).attrclass(param).ancestors.should be_include(Puppet::Parameter)
34
22
  end
35
23
 
36
24
  it "should have documentation for its %s param" % param do
37
- tidy.attrclass(param).doc.should be_instance_of(String)
25
+ Puppet::Type.type(:tidy).attrclass(param).doc.should be_instance_of(String)
38
26
  end
39
27
  end
40
28
 
41
29
  describe "when validating parameter values" do
42
30
  describe "for 'recurse'" do
43
31
  before do
44
- @tidy = tidy.create :path => "/tmp", :age => "100d"
32
+ @tidy = Puppet::Type.type(:tidy).new :path => "/tmp", :age => "100d"
45
33
  end
46
34
 
47
35
  it "should allow 'true'" do
@@ -69,4 +57,324 @@ describe tidy do
69
57
  end
70
58
  end
71
59
  end
60
+
61
+ describe "when matching files by age" do
62
+ convertors = {
63
+ :second => 1,
64
+ :minute => 60
65
+ }
66
+
67
+ convertors[:hour] = convertors[:minute] * 60
68
+ convertors[:day] = convertors[:hour] * 24
69
+ convertors[:week] = convertors[:day] * 7
70
+
71
+ convertors.each do |unit, multiple|
72
+ it "should consider a %s to be %s seconds" % [unit, multiple] do
73
+ tidy = Puppet::Type.type(:tidy).new :path => "/what/ever", :age => "5%s" % unit.to_s[0..0]
74
+
75
+ tidy[:age].should == 5 * multiple
76
+ end
77
+ end
78
+ end
79
+
80
+ describe "when matching files by size" do
81
+ convertors = {
82
+ :b => 0,
83
+ :kb => 1,
84
+ :mb => 2,
85
+ :gb => 3
86
+ }
87
+
88
+ convertors.each do |unit, multiple|
89
+ it "should consider a %s to be 1024^%s bytes" % [unit, multiple] do
90
+ tidy = Puppet::Type.type(:tidy).new :path => "/what/ever", :size => "5%s" % unit
91
+
92
+ total = 5
93
+ multiple.times { total *= 1024 }
94
+ tidy[:size].should == total
95
+ end
96
+ end
97
+ end
98
+
99
+ describe "when tidying" do
100
+ before do
101
+ @tidy = Puppet::Type.type(:tidy).new :path => "/what/ever"
102
+ @stat = stub 'stat', :ftype => "directory"
103
+ File.stubs(:lstat).with("/what/ever").returns @stat
104
+ end
105
+
106
+ describe "and generating files" do
107
+ it "should set the backup on the file if backup is set on the tidy instance" do
108
+ @tidy[:backup] = "whatever"
109
+ Puppet::Type.type(:file).expects(:new).with { |args| args[:backup] == "whatever" }
110
+
111
+ @tidy.mkfile("/what/ever")
112
+ end
113
+
114
+ it "should set the file's path to the tidy's path" do
115
+ Puppet::Type.type(:file).expects(:new).with { |args| args[:path] == "/what/ever" }
116
+
117
+ @tidy.mkfile("/what/ever")
118
+ end
119
+
120
+ it "should configure the file for deletion" do
121
+ Puppet::Type.type(:file).expects(:new).with { |args| args[:ensure] == :absent }
122
+
123
+ @tidy.mkfile("/what/ever")
124
+ end
125
+
126
+ it "should force deletion on the file" do
127
+ Puppet::Type.type(:file).expects(:new).with { |args| args[:force] == true }
128
+
129
+ @tidy.mkfile("/what/ever")
130
+ end
131
+
132
+ it "should do nothing if the targeted file does not exist" do
133
+ File.expects(:lstat).with("/what/ever").raises Errno::ENOENT
134
+
135
+ @tidy.generate.should == []
136
+ end
137
+ end
138
+
139
+ describe "and recursion is not used" do
140
+ it "should generate a file resource if the file should be tidied" do
141
+ @tidy.expects(:tidy?).with("/what/ever").returns true
142
+ file = Puppet::Type.type(:file).new(:path => "/eh")
143
+ @tidy.expects(:mkfile).with("/what/ever").returns file
144
+
145
+ @tidy.generate.should == [file]
146
+ end
147
+
148
+ it "should do nothing if the file should not be tidied" do
149
+ @tidy.expects(:tidy?).with("/what/ever").returns false
150
+ @tidy.expects(:mkfile).never
151
+
152
+ @tidy.generate.should == []
153
+ end
154
+ end
155
+
156
+ describe "and recursion is used" do
157
+ before do
158
+ @tidy[:recurse] = true
159
+ Puppet::FileServing::Fileset.any_instance.stubs(:stat).returns mock("stat")
160
+ @fileset = Puppet::FileServing::Fileset.new("/what/ever")
161
+ Puppet::FileServing::Fileset.stubs(:new).returns @fileset
162
+ end
163
+
164
+ it "should use a Fileset for recursion" do
165
+ Puppet::FileServing::Fileset.expects(:new).with("/what/ever", :recurse => true).returns @fileset
166
+ @fileset.expects(:files).returns %w{. one two}
167
+ @tidy.stubs(:tidy?).returns false
168
+
169
+ @tidy.generate
170
+ end
171
+
172
+ it "should generate a file resource for every file that should be tidied but not for files that should not be tidied" do
173
+ @fileset.expects(:files).returns %w{. one two}
174
+
175
+ @tidy.expects(:tidy?).with("/what/ever").returns true
176
+ @tidy.expects(:tidy?).with("/what/ever/one").returns true
177
+ @tidy.expects(:tidy?).with("/what/ever/two").returns false
178
+
179
+ file = Puppet::Type.type(:file).new(:path => "/eh")
180
+ @tidy.expects(:mkfile).with("/what/ever").returns file
181
+ @tidy.expects(:mkfile).with("/what/ever/one").returns file
182
+
183
+ @tidy.generate
184
+ end
185
+ end
186
+
187
+ describe "and determining whether a file matches provided glob patterns" do
188
+ before do
189
+ @tidy = Puppet::Type.type(:tidy).new :path => "/what/ever"
190
+ @tidy[:matches] = %w{*foo* *bar*}
191
+
192
+ @stat = mock 'stat'
193
+
194
+ @matcher = @tidy.parameter(:matches)
195
+ end
196
+
197
+ it "should always convert the globs to an array" do
198
+ @matcher.value = "*foo*"
199
+ @matcher.value.should == %w{*foo*}
200
+ end
201
+
202
+ it "should return true if any pattern matches the last part of the file" do
203
+ @matcher.value = %w{*foo* *bar*}
204
+ @matcher.must be_tidy("/file/yaybarness", @stat)
205
+ end
206
+
207
+ it "should return false if no pattern matches the last part of the file" do
208
+ @matcher.value = %w{*foo* *bar*}
209
+ @matcher.should_not be_tidy("/file/yayness", @stat)
210
+ end
211
+ end
212
+
213
+ describe "and determining whether a file is too old" do
214
+ before do
215
+ @tidy = Puppet::Type.type(:tidy).new :path => "/what/ever"
216
+ @stat = stub 'stat'
217
+
218
+ @tidy[:age] = "1s"
219
+ @tidy[:type] = "mtime"
220
+ @ager = @tidy.parameter(:age)
221
+ end
222
+
223
+ it "should use the age type specified" do
224
+ @tidy[:type] = :ctime
225
+ @stat.expects(:ctime).returns(Time.now)
226
+
227
+ @ager.tidy?("/what/ever", @stat)
228
+ end
229
+
230
+ it "should return false if the file is more recent than the specified age" do
231
+ @stat.expects(:mtime).returns(Time.now)
232
+
233
+ @ager.should_not be_tidy("/what/ever", @stat)
234
+ end
235
+
236
+ it "should return true if the file is older than the specified age" do
237
+ @stat.expects(:mtime).returns(Time.now - 10)
238
+
239
+ @ager.must be_tidy("/what/ever", @stat)
240
+ end
241
+ end
242
+
243
+ describe "and determining whether a file is too large" do
244
+ before do
245
+ @tidy = Puppet::Type.type(:tidy).new :path => "/what/ever"
246
+ @stat = stub 'stat', :ftype => "file"
247
+
248
+ @tidy[:size] = "1kb"
249
+ @sizer = @tidy.parameter(:size)
250
+ end
251
+
252
+ it "should return false if the file is smaller than the specified size" do
253
+ @stat.expects(:size).returns(4) # smaller than a kilobyte
254
+
255
+ @sizer.should_not be_tidy("/what/ever", @stat)
256
+ end
257
+
258
+ it "should return true if the file is larger than the specified size" do
259
+ @stat.expects(:size).returns(1500) # larger than a kilobyte
260
+
261
+ @sizer.must be_tidy("/what/ever", @stat)
262
+ end
263
+ end
264
+
265
+ describe "and determining whether a file should be tidied" do
266
+ before do
267
+ @tidy = Puppet::Type.type(:tidy).new :path => "/what/ever"
268
+ @stat = stub 'stat', :ftype => "file"
269
+ File.stubs(:lstat).with("/what/ever").returns @stat
270
+ end
271
+
272
+ it "should not try to recurse if the file does not exist" do
273
+ @tidy[:recurse] = true
274
+
275
+ File.stubs(:lstat).with("/what/ever").returns nil
276
+
277
+ @tidy.generate.should == []
278
+ end
279
+
280
+ it "should not be tidied if the file does not exist" do
281
+ File.expects(:lstat).with("/what/ever").raises Errno::ENOENT
282
+
283
+ @tidy.should_not be_tidy("/what/ever")
284
+ end
285
+
286
+ it "should not be tidied if the user has no access to the file" do
287
+ File.expects(:lstat).with("/what/ever").raises Errno::EACCES
288
+
289
+ @tidy.should_not be_tidy("/what/ever")
290
+ end
291
+
292
+ it "should not be tidied if it is a directory and rmdirs is set to false" do
293
+ stat = mock 'stat', :ftype => "directory"
294
+ File.expects(:lstat).with("/what/ever").returns stat
295
+
296
+ @tidy.should_not be_tidy("/what/ever")
297
+ end
298
+
299
+ it "should return false if it does not match any provided globs" do
300
+ @tidy[:matches] = "globs"
301
+
302
+ matches = @tidy.parameter(:matches)
303
+ matches.expects(:tidy?).with("/what/ever", @stat).returns false
304
+ @tidy.should_not be_tidy("/what/ever")
305
+ end
306
+
307
+ it "should return false if it does not match aging requirements" do
308
+ @tidy[:age] = "1d"
309
+
310
+ ager = @tidy.parameter(:age)
311
+ ager.expects(:tidy?).with("/what/ever", @stat).returns false
312
+ @tidy.should_not be_tidy("/what/ever")
313
+ end
314
+
315
+ it "should return false if it does not match size requirements" do
316
+ @tidy[:size] = "1b"
317
+
318
+ sizer = @tidy.parameter(:size)
319
+ sizer.expects(:tidy?).with("/what/ever", @stat).returns false
320
+ @tidy.should_not be_tidy("/what/ever")
321
+ end
322
+
323
+ it "should tidy a file if age and size are set but only size matches" do
324
+ @tidy[:size] = "1b"
325
+ @tidy[:age] = "1d"
326
+
327
+ @tidy.parameter(:size).stubs(:tidy?).returns true
328
+ @tidy.parameter(:age).stubs(:tidy?).returns false
329
+ @tidy.should be_tidy("/what/ever")
330
+ end
331
+
332
+ it "should tidy a file if age and size are set but only age matches" do
333
+ @tidy[:size] = "1b"
334
+ @tidy[:age] = "1d"
335
+
336
+ @tidy.parameter(:size).stubs(:tidy?).returns false
337
+ @tidy.parameter(:age).stubs(:tidy?).returns true
338
+ @tidy.should be_tidy("/what/ever")
339
+ end
340
+
341
+ it "should tidy all files if neither age nor size is set" do
342
+ @tidy.must be_tidy("/what/ever")
343
+ end
344
+
345
+ it "should sort the results inversely by path length, so files are added to the catalog before their directories" do
346
+ @tidy[:recurse] = true
347
+ @tidy[:rmdirs] = true
348
+ fileset = Puppet::FileServing::Fileset.new("/what/ever")
349
+ Puppet::FileServing::Fileset.expects(:new).returns fileset
350
+ fileset.expects(:files).returns %w{. one one/two}
351
+
352
+ @tidy.stubs(:tidy?).returns true
353
+
354
+ @tidy.generate.collect { |r| r[:path] }.should == %w{/what/ever/one/two /what/ever/one /what/ever}
355
+ end
356
+ end
357
+
358
+ it "should configure directories to require their contained files if rmdirs is enabled, so the files will be deleted first" do
359
+ @tidy[:recurse] = true
360
+ @tidy[:rmdirs] = true
361
+ fileset = mock 'fileset'
362
+ Puppet::FileServing::Fileset.expects(:new).with("/what/ever", :recurse => true).returns fileset
363
+ fileset.expects(:files).returns %w{. one two one/subone two/subtwo one/subone/ssone}
364
+ @tidy.stubs(:tidy?).returns true
365
+
366
+ result = @tidy.generate.inject({}) { |hash, res| hash[res[:path]] = res; hash }
367
+ {
368
+ "/what/ever" => %w{/what/ever/one /what/ever/two},
369
+ "/what/ever/one" => ["/what/ever/one/subone"],
370
+ "/what/ever/two" => ["/what/ever/two/subtwo"],
371
+ "/what/ever/one/subone" => ["/what/ever/one/subone/ssone"]
372
+ }.each do |parent, children|
373
+ children.each do |child|
374
+ ref = Puppet::Resource::Reference.new(:file, child)
375
+ result[parent][:require].find { |req| req.to_s == ref.to_s }.should_not be_nil
376
+ end
377
+ end
378
+ end
379
+ end
72
380
  end