puppet 0.23.2 → 0.24.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 (629) hide show
  1. data/CHANGELOG +112 -1
  2. data/README +1 -1
  3. data/Rakefile +1 -2
  4. data/bin/filebucket +2 -3
  5. data/bin/puppet +55 -39
  6. data/bin/puppetca +20 -11
  7. data/bin/puppetd +30 -31
  8. data/bin/puppetdoc +27 -28
  9. data/bin/puppetmasterd +24 -42
  10. data/bin/puppetrun +3 -4
  11. data/bin/ralsh +5 -7
  12. data/conf/redhat/puppet.spec +4 -1
  13. data/conf/solaris/smf/svc-puppetd +1 -1
  14. data/conf/solaris/smf/svc-puppetmasterd +1 -1
  15. data/examples/code/allatonce +1 -1
  16. data/examples/code/assignments +1 -1
  17. data/examples/code/components +1 -1
  18. data/examples/code/file.bl +1 -1
  19. data/examples/code/filedefaults +1 -1
  20. data/examples/code/fileparsing +1 -1
  21. data/examples/code/filerecursion +1 -1
  22. data/examples/code/functions +1 -1
  23. data/examples/code/groups +1 -1
  24. data/examples/code/head +1 -1
  25. data/examples/code/importing +1 -1
  26. data/examples/code/modules/sample-module.pp +10 -0
  27. data/examples/code/modules/sample-module/README.txt +17 -0
  28. data/examples/code/modules/sample-module/lib/puppet/parser/functions/hostname_to_dn.rb +36 -0
  29. data/examples/code/modules/sample-module/manifests/init.pp +12 -0
  30. data/examples/code/modules/sample-module/templates/sample.erb +5 -0
  31. data/examples/code/nodes +1 -1
  32. data/examples/code/one +1 -1
  33. data/examples/code/relationships +1 -1
  34. data/examples/code/selectors +1 -1
  35. data/examples/code/simpletests +1 -1
  36. data/examples/root/etc/init.d/sleeper +1 -1
  37. data/examples/root/etc/puppet/fileserver.conf +1 -1
  38. data/ext/ldap/puppet.schema +1 -1
  39. data/ext/module_puppet +30 -21
  40. data/ext/puppet-test +3 -3
  41. data/ext/vim/filetype.vim +1 -1
  42. data/install.rb +1 -2
  43. data/lib/puppet.rb +20 -19
  44. data/lib/puppet/checksum.rb +57 -0
  45. data/lib/puppet/config_stores/rest.rb +1 -1
  46. data/lib/puppet/daemon.rb +0 -1
  47. data/lib/puppet/{configuration.rb → defaults.rb} +56 -23
  48. data/lib/puppet/dsl.rb +22 -116
  49. data/lib/puppet/error.rb +0 -9
  50. data/lib/puppet/event.rb +0 -1
  51. data/lib/puppet/external/gratr/rdot.rb +0 -1
  52. data/lib/puppet/external/lock.rb +0 -1
  53. data/lib/puppet/feature/base.rb +3 -2
  54. data/lib/puppet/feature/rails.rb +0 -1
  55. data/lib/puppet/file_serving.rb +7 -0
  56. data/lib/puppet/file_serving/configuration.rb +129 -0
  57. data/lib/puppet/file_serving/configuration/parser.rb +124 -0
  58. data/lib/puppet/file_serving/content.rb +34 -0
  59. data/lib/puppet/file_serving/file_base.rb +63 -0
  60. data/lib/puppet/file_serving/fileset.rb +138 -0
  61. data/lib/puppet/file_serving/indirection_hooks.rb +44 -0
  62. data/lib/puppet/file_serving/metadata.rb +69 -0
  63. data/lib/puppet/file_serving/mount.rb +186 -0
  64. data/lib/puppet/file_serving/terminus_helper.rb +19 -0
  65. data/lib/puppet/indirector.rb +68 -0
  66. data/lib/puppet/indirector/catalog/compiler.rb +173 -0
  67. data/lib/puppet/indirector/catalog/yaml.rb +24 -0
  68. data/lib/puppet/indirector/checksum/file.rb +33 -0
  69. data/lib/puppet/indirector/code.rb +6 -0
  70. data/lib/puppet/indirector/direct_file_server.rb +27 -0
  71. data/lib/puppet/indirector/exec.rb +57 -0
  72. data/lib/puppet/indirector/facts/facter.rb +65 -0
  73. data/lib/puppet/indirector/facts/memory.rb +9 -0
  74. data/lib/puppet/indirector/facts/yaml.rb +7 -0
  75. data/lib/puppet/indirector/file.rb +54 -0
  76. data/lib/puppet/indirector/file_content.rb +5 -0
  77. data/lib/puppet/indirector/file_content/file.rb +11 -0
  78. data/lib/puppet/indirector/file_content/file_server.rb +11 -0
  79. data/lib/puppet/indirector/file_content/modules.rb +11 -0
  80. data/lib/puppet/indirector/file_content/rest.rb +12 -0
  81. data/lib/puppet/indirector/file_metadata.rb +5 -0
  82. data/lib/puppet/indirector/file_metadata/file.rb +26 -0
  83. data/lib/puppet/indirector/file_metadata/file_server.rb +11 -0
  84. data/lib/puppet/indirector/file_metadata/modules.rb +17 -0
  85. data/lib/puppet/indirector/file_metadata/rest.rb +12 -0
  86. data/lib/puppet/indirector/file_server.rb +56 -0
  87. data/lib/puppet/indirector/indirection.rb +237 -0
  88. data/lib/puppet/indirector/ldap.rb +90 -0
  89. data/lib/puppet/indirector/memory.rb +21 -0
  90. data/lib/puppet/indirector/module_files.rb +82 -0
  91. data/lib/puppet/indirector/node/exec.rb +52 -0
  92. data/lib/puppet/indirector/node/ldap.rb +120 -0
  93. data/lib/puppet/indirector/node/memory.rb +10 -0
  94. data/lib/puppet/indirector/node/plain.rb +19 -0
  95. data/lib/puppet/indirector/node/rest.rb +7 -0
  96. data/lib/puppet/indirector/node/yaml.rb +7 -0
  97. data/lib/puppet/indirector/plain.rb +9 -0
  98. data/lib/puppet/indirector/report/processor.rb +50 -0
  99. data/lib/puppet/indirector/rest.rb +8 -0
  100. data/lib/puppet/indirector/ssl_rsa.rb +5 -0
  101. data/lib/puppet/indirector/ssl_rsa/file.rb +33 -0
  102. data/lib/puppet/indirector/terminus.rb +178 -0
  103. data/lib/puppet/indirector/yaml.rb +57 -0
  104. data/lib/puppet/metatype/attributes.rb +3 -3
  105. data/lib/puppet/metatype/closure.rb +0 -66
  106. data/lib/puppet/metatype/container.rb +0 -9
  107. data/lib/puppet/metatype/evaluation.rb +10 -2
  108. data/lib/puppet/metatype/instances.rb +16 -30
  109. data/lib/puppet/metatype/manager.rb +1 -2
  110. data/lib/puppet/metatype/metaparams.rb +27 -21
  111. data/lib/puppet/metatype/providers.rb +3 -2
  112. data/lib/puppet/metatype/relationships.rb +1 -2
  113. data/lib/puppet/metatype/schedules.rb +0 -1
  114. data/lib/puppet/metatype/tags.rb +0 -1
  115. data/lib/puppet/module.rb +60 -32
  116. data/lib/puppet/network/authconfig.rb +0 -1
  117. data/lib/puppet/network/authorization.rb +0 -1
  118. data/lib/puppet/network/authstore.rb +0 -1
  119. data/lib/puppet/network/client.rb +13 -4
  120. data/lib/puppet/network/client/ca.rb +4 -5
  121. data/lib/puppet/network/client/dipper.rb +0 -1
  122. data/lib/puppet/network/client/file.rb +0 -1
  123. data/lib/puppet/network/client/master.rb +127 -235
  124. data/lib/puppet/network/client/proxy.rb +0 -1
  125. data/lib/puppet/network/client/report.rb +0 -1
  126. data/lib/puppet/network/client/resource.rb +0 -1
  127. data/lib/puppet/network/client/runner.rb +0 -1
  128. data/lib/puppet/network/client/status.rb +0 -1
  129. data/lib/puppet/network/client_request.rb +0 -1
  130. data/lib/puppet/network/handler.rb +5 -2
  131. data/lib/puppet/network/handler/ca.rb +1 -2
  132. data/lib/puppet/network/handler/configuration.rb +184 -0
  133. data/lib/puppet/network/handler/filebucket.rb +1 -2
  134. data/lib/puppet/network/handler/fileserver.rb +279 -107
  135. data/lib/puppet/network/handler/master.rb +57 -152
  136. data/lib/puppet/network/handler/report.rb +6 -65
  137. data/lib/puppet/network/handler/resource.rb +5 -13
  138. data/lib/puppet/network/handler/runner.rb +3 -4
  139. data/lib/puppet/network/handler/status.rb +0 -1
  140. data/lib/puppet/network/http.rb +13 -0
  141. data/lib/puppet/network/http/handler.rb +109 -0
  142. data/lib/puppet/network/http/mongrel.rb +54 -0
  143. data/lib/puppet/network/http/mongrel/rest.rb +37 -0
  144. data/lib/puppet/network/http/mongrel/xmlrpc.rb +4 -0
  145. data/lib/puppet/network/http/webrick.rb +51 -0
  146. data/lib/puppet/network/http/webrick/rest.rb +41 -0
  147. data/lib/puppet/network/http/webrick/xmlrpc.rb +4 -0
  148. data/lib/puppet/network/http_server.rb +3 -0
  149. data/lib/puppet/network/{server → http_server}/mongrel.rb +11 -5
  150. data/lib/puppet/network/{server → http_server}/webrick.rb +9 -5
  151. data/lib/puppet/network/rest_controller.rb +2 -0
  152. data/lib/puppet/network/rights.rb +0 -1
  153. data/lib/puppet/network/server.rb +63 -3
  154. data/lib/puppet/network/xmlrpc/client.rb +90 -23
  155. data/lib/puppet/network/xmlrpc/processor.rb +0 -1
  156. data/lib/puppet/network/xmlrpc/server.rb +0 -1
  157. data/lib/puppet/network/xmlrpc/webrick_servlet.rb +0 -1
  158. data/lib/puppet/node.rb +165 -0
  159. data/lib/puppet/node/catalog.rb +480 -0
  160. data/lib/puppet/node/environment.rb +46 -0
  161. data/lib/puppet/node/facts.rb +36 -0
  162. data/lib/puppet/parameter.rb +34 -28
  163. data/lib/puppet/parser/ast.rb +0 -1
  164. data/lib/puppet/parser/ast/astarray.rb +30 -53
  165. data/lib/puppet/parser/ast/branch.rb +0 -10
  166. data/lib/puppet/parser/ast/caseopt.rb +0 -11
  167. data/lib/puppet/parser/ast/casestatement.rb +0 -12
  168. data/lib/puppet/parser/ast/collection.rb +1 -3
  169. data/lib/puppet/parser/ast/collexpr.rb +0 -2
  170. data/lib/puppet/parser/ast/{component.rb → definition.rb} +58 -72
  171. data/lib/puppet/parser/ast/else.rb +0 -10
  172. data/lib/puppet/parser/ast/function.rb +0 -2
  173. data/lib/puppet/parser/ast/hostclass.rb +21 -19
  174. data/lib/puppet/parser/ast/ifstatement.rb +0 -13
  175. data/lib/puppet/parser/ast/leaf.rb +0 -8
  176. data/lib/puppet/parser/ast/node.rb +13 -10
  177. data/lib/puppet/parser/ast/resource.rb +75 -0
  178. data/lib/puppet/parser/ast/{resourcedefaults.rb → resource_defaults.rb} +4 -20
  179. data/lib/puppet/parser/ast/{resourceoverride.rb → resource_override.rb} +3 -5
  180. data/lib/puppet/parser/ast/resource_reference.rb +66 -0
  181. data/lib/puppet/parser/ast/resourceparam.rb +0 -14
  182. data/lib/puppet/parser/ast/selector.rb +0 -10
  183. data/lib/puppet/parser/ast/tag.rb +0 -2
  184. data/lib/puppet/parser/ast/vardef.rb +0 -14
  185. data/lib/puppet/parser/collector.rb +83 -101
  186. data/lib/puppet/parser/compile.rb +509 -0
  187. data/lib/puppet/parser/functions.rb +10 -10
  188. data/lib/puppet/parser/interpreter.rb +44 -662
  189. data/lib/puppet/parser/lexer.rb +1 -3
  190. data/lib/puppet/parser/parser.rb +674 -701
  191. data/lib/puppet/parser/parser_support.rb +33 -24
  192. data/lib/puppet/parser/resource.rb +219 -162
  193. data/lib/puppet/parser/resource/param.rb +1 -2
  194. data/lib/puppet/parser/resource/reference.rb +24 -16
  195. data/lib/puppet/parser/scope.rb +48 -459
  196. data/lib/puppet/parser/templatewrapper.rb +4 -5
  197. data/lib/puppet/pgraph.rb +10 -13
  198. data/lib/puppet/property.rb +25 -41
  199. data/lib/puppet/propertychange.rb +0 -2
  200. data/lib/puppet/provider.rb +15 -11
  201. data/lib/puppet/provider/cron/crontab.rb +6 -7
  202. data/lib/puppet/provider/group/groupadd.rb +0 -1
  203. data/lib/puppet/provider/group/netinfo.rb +0 -1
  204. data/lib/puppet/provider/group/pw.rb +0 -1
  205. data/lib/puppet/provider/host/netinfo.rb +0 -1
  206. data/lib/puppet/provider/host/parsed.rb +0 -1
  207. data/lib/puppet/provider/interface/redhat.rb +90 -91
  208. data/lib/puppet/provider/interface/sunos.rb +98 -81
  209. data/lib/puppet/provider/mailalias/aliases.rb +0 -1
  210. data/lib/puppet/provider/maillist/mailman.rb +2 -3
  211. data/lib/puppet/provider/mount.rb +10 -9
  212. data/lib/puppet/provider/mount/netinfo.rb +0 -1
  213. data/lib/puppet/provider/mount/parsed.rb +0 -1
  214. data/lib/puppet/provider/nameservice.rb +0 -1
  215. data/lib/puppet/provider/nameservice/netinfo.rb +0 -1
  216. data/lib/puppet/provider/nameservice/objectadd.rb +0 -1
  217. data/lib/puppet/provider/nameservice/pw.rb +0 -1
  218. data/lib/puppet/provider/package.rb +0 -2
  219. data/lib/puppet/provider/package/appdmg.rb +0 -1
  220. data/lib/puppet/provider/package/apple.rb +0 -1
  221. data/lib/puppet/provider/package/apt.rb +0 -1
  222. data/lib/puppet/provider/package/aptitude.rb +0 -1
  223. data/lib/puppet/provider/package/aptrpm.rb +0 -1
  224. data/lib/puppet/provider/package/blastwave.rb +0 -1
  225. data/lib/puppet/provider/package/darwinport.rb +0 -1
  226. data/lib/puppet/provider/package/dpkg.rb +9 -1
  227. data/lib/puppet/provider/package/fink.rb +0 -1
  228. data/lib/puppet/provider/package/freebsd.rb +0 -1
  229. data/lib/puppet/provider/package/gem.rb +0 -1
  230. data/lib/puppet/provider/package/openbsd.rb +1 -2
  231. data/lib/puppet/provider/package/pkgdmg.rb +14 -15
  232. data/lib/puppet/provider/package/portage.rb +6 -7
  233. data/lib/puppet/provider/package/ports.rb +1 -4
  234. data/lib/puppet/provider/package/rpm.rb +31 -45
  235. data/lib/puppet/provider/package/sun.rb +0 -3
  236. data/lib/puppet/provider/package/sunfreeware.rb +0 -1
  237. data/lib/puppet/provider/package/up2date.rb +0 -1
  238. data/lib/puppet/provider/package/urpmi.rb +0 -1
  239. data/lib/puppet/provider/package/yum.rb +45 -14
  240. data/lib/puppet/provider/package/yumhelper.py +37 -0
  241. data/lib/puppet/provider/parsedfile.rb +2 -3
  242. data/lib/puppet/provider/port/parsed.rb +0 -1
  243. data/lib/puppet/provider/service/base.rb +4 -1
  244. data/lib/puppet/provider/service/debian.rb +5 -2
  245. data/lib/puppet/provider/service/freebsd.rb +51 -0
  246. data/lib/puppet/provider/service/init.rb +16 -40
  247. data/lib/puppet/provider/service/redhat.rb +1 -6
  248. data/lib/puppet/provider/service/smf.rb +0 -1
  249. data/lib/puppet/provider/sshkey/parsed.rb +0 -1
  250. data/lib/puppet/provider/user/netinfo.rb +0 -1
  251. data/lib/puppet/provider/user/pw.rb +0 -1
  252. data/lib/puppet/provider/user/useradd.rb +0 -1
  253. data/lib/puppet/provider/zone/solaris.rb +0 -1
  254. data/lib/puppet/rails.rb +35 -30
  255. data/lib/puppet/rails/database/schema.rb +0 -1
  256. data/lib/puppet/rails/host.rb +6 -15
  257. data/lib/puppet/rails/param_name.rb +1 -2
  258. data/lib/puppet/rails/param_value.rb +0 -1
  259. data/lib/puppet/rails/puppet_class.rb +0 -1
  260. data/lib/puppet/rails/resource.rb +3 -5
  261. data/lib/puppet/reference/configuration.rb +12 -6
  262. data/lib/puppet/reference/indirection.rb +34 -0
  263. data/lib/puppet/reference/node_source.rb +9 -0
  264. data/lib/puppet/relationship.rb +10 -8
  265. data/lib/puppet/reports.rb +51 -0
  266. data/lib/puppet/reports/log.rb +2 -3
  267. data/lib/puppet/reports/rrdgraph.rb +2 -5
  268. data/lib/puppet/reports/store.rb +6 -7
  269. data/lib/puppet/reports/tagmail.rb +2 -3
  270. data/lib/puppet/resource_reference.rb +79 -0
  271. data/lib/puppet/simple_graph.rb +251 -0
  272. data/lib/puppet/sslcertificates.rb +19 -15
  273. data/lib/puppet/sslcertificates/ca.rb +56 -15
  274. data/lib/puppet/sslcertificates/certificate.rb +0 -1
  275. data/lib/puppet/sslcertificates/inventory.rb +2 -6
  276. data/lib/puppet/sslcertificates/monkey_patch.rb +6 -0
  277. data/lib/puppet/sslcertificates/support.rb +4 -5
  278. data/lib/puppet/transaction.rb +93 -96
  279. data/lib/puppet/transaction/report.rb +5 -1
  280. data/lib/puppet/transportable.rb +79 -125
  281. data/lib/puppet/type.rb +44 -10
  282. data/lib/puppet/type/component.rb +25 -110
  283. data/lib/puppet/type/cron.rb +1 -2
  284. data/lib/puppet/type/exec.rb +19 -13
  285. data/lib/puppet/type/group.rb +0 -1
  286. data/lib/puppet/type/host.rb +0 -1
  287. data/lib/puppet/type/interface.rb +6 -3
  288. data/lib/puppet/type/k5login.rb +87 -0
  289. data/lib/puppet/type/mailalias.rb +0 -1
  290. data/lib/puppet/type/maillist.rb +0 -1
  291. data/lib/puppet/type/mount.rb +7 -13
  292. data/lib/puppet/type/notify.rb +0 -1
  293. data/lib/puppet/type/package.rb +7 -63
  294. data/lib/puppet/type/pfile.rb +25 -32
  295. data/lib/puppet/type/pfile/checksum.rb +0 -1
  296. data/lib/puppet/type/pfile/content.rb +18 -3
  297. data/lib/puppet/type/pfile/ensure.rb +5 -6
  298. data/lib/puppet/type/pfile/group.rb +4 -1
  299. data/lib/puppet/type/pfile/mode.rb +0 -1
  300. data/lib/puppet/type/pfile/owner.rb +6 -9
  301. data/lib/puppet/type/pfile/source.rb +28 -11
  302. data/lib/puppet/type/pfile/target.rb +2 -1
  303. data/lib/puppet/type/pfile/type.rb +0 -1
  304. data/lib/puppet/type/pfilebucket.rb +0 -1
  305. data/lib/puppet/type/port.rb +0 -1
  306. data/lib/puppet/type/resources.rb +0 -1
  307. data/lib/puppet/type/schedule.rb +17 -15
  308. data/lib/puppet/type/service.rb +23 -159
  309. data/lib/puppet/type/sshkey.rb +0 -1
  310. data/lib/puppet/type/tidy.rb +15 -7
  311. data/lib/puppet/type/user.rb +0 -1
  312. data/lib/puppet/type/zone.rb +0 -1
  313. data/lib/puppet/util.rb +1 -2
  314. data/lib/puppet/util/autoload.rb +21 -23
  315. data/lib/puppet/util/checksums.rb +37 -0
  316. data/lib/puppet/util/classgen.rb +0 -1
  317. data/lib/puppet/util/diff.rb +71 -0
  318. data/lib/puppet/util/docs.rb +8 -2
  319. data/lib/puppet/util/errors.rb +0 -1
  320. data/lib/puppet/util/execution.rb +0 -1
  321. data/lib/puppet/util/fact_store.rb +0 -1
  322. data/lib/puppet/util/feature.rb +31 -22
  323. data/lib/puppet/util/fileparsing.rb +3 -2
  324. data/lib/puppet/util/filetype.rb +30 -12
  325. data/lib/puppet/util/graph.rb +0 -1
  326. data/lib/puppet/util/inifile.rb +0 -1
  327. data/lib/puppet/util/instance_loader.rb +11 -4
  328. data/lib/puppet/util/loadedfile.rb +0 -1
  329. data/lib/puppet/util/log.rb +0 -1
  330. data/lib/puppet/util/log_paths.rb +0 -1
  331. data/lib/puppet/util/logging.rb +0 -1
  332. data/lib/puppet/util/metaid.rb +0 -1
  333. data/lib/puppet/util/methodhelper.rb +0 -2
  334. data/lib/puppet/util/metric.rb +1 -2
  335. data/lib/puppet/util/plist.rb +0 -1
  336. data/lib/puppet/util/plist/generator.rb +0 -1
  337. data/lib/puppet/util/plist/parser.rb +0 -1
  338. data/lib/puppet/util/posix.rb +7 -1
  339. data/lib/puppet/util/provider_features.rb +11 -12
  340. data/lib/puppet/util/rails/collection_merger.rb +0 -1
  341. data/lib/puppet/util/reference.rb +2 -3
  342. data/lib/puppet/util/{config.rb → settings.rb} +424 -300
  343. data/lib/puppet/util/storage.rb +1 -3
  344. data/lib/puppet/util/subclass_loader.rb +0 -1
  345. data/lib/puppet/util/suidmanager.rb +25 -42
  346. data/lib/puppet/util/uri_helper.rb +22 -0
  347. data/lib/puppet/util/variables.rb +0 -1
  348. data/lib/puppet/util/warnings.rb +0 -1
  349. data/test/Rakefile +1 -1
  350. data/test/certmgr/ca.rb +8 -2
  351. data/test/certmgr/certmgr.rb +14 -6
  352. data/test/certmgr/inventory.rb +18 -30
  353. data/test/certmgr/support.rb +3 -2
  354. data/test/executables/filebucket.rb +1 -2
  355. data/test/executables/puppetbin.rb +1 -2
  356. data/test/executables/puppetca.rb +7 -2
  357. data/test/executables/puppetd.rb +23 -29
  358. data/test/executables/puppetmasterd.rb +1 -2
  359. data/test/executables/puppetmodule.rb +1 -2
  360. data/test/language/ast.rb +24 -29
  361. data/test/language/ast/casestatement.rb +1 -2
  362. data/test/language/ast/definition.rb +166 -0
  363. data/test/language/ast/hostclass.rb +50 -29
  364. data/test/language/ast/resource.rb +59 -0
  365. data/test/language/ast/{resourceref.rb → resource_reference.rb} +30 -20
  366. data/test/language/ast/selector.rb +1 -2
  367. data/test/language/ast/variable.rb +1 -2
  368. data/test/language/compile.rb +569 -0
  369. data/test/language/functions.rb +57 -76
  370. data/test/language/lexer.rb +20 -3
  371. data/test/language/parser.rb +45 -33
  372. data/test/language/resource.rb +275 -308
  373. data/test/language/scope.rb +135 -410
  374. data/test/language/snippets.rb +19 -41
  375. data/test/language/transportable.rb +8 -29
  376. data/test/lib/mocha/auto_verify.rb +6 -6
  377. data/test/lib/mocha/deprecation.rb +22 -0
  378. data/test/lib/mocha/exception_raiser.rb +17 -0
  379. data/test/lib/mocha/expectation.rb +167 -84
  380. data/test/lib/mocha/infinite_range.rb +4 -6
  381. data/test/lib/mocha/inspect.rb +3 -1
  382. data/test/lib/mocha/is_a.rb +9 -0
  383. data/test/lib/mocha/missing_expectation.rb +27 -0
  384. data/test/lib/mocha/mock.rb +192 -5
  385. data/test/lib/mocha/multiple_yields.rb +20 -0
  386. data/test/lib/mocha/no_yields.rb +11 -0
  387. data/test/lib/mocha/object.rb +11 -1
  388. data/test/lib/mocha/parameter_matchers.rb +9 -0
  389. data/test/lib/mocha/parameter_matchers/all_of.rb +39 -0
  390. data/test/lib/mocha/parameter_matchers/any_of.rb +44 -0
  391. data/test/lib/mocha/parameter_matchers/anything.rb +30 -0
  392. data/test/lib/mocha/parameter_matchers/has_entry.rb +39 -0
  393. data/test/lib/mocha/parameter_matchers/has_key.rb +39 -0
  394. data/test/lib/mocha/parameter_matchers/has_value.rb +39 -0
  395. data/test/lib/mocha/parameter_matchers/includes.rb +37 -0
  396. data/test/lib/mocha/return_values.rb +31 -0
  397. data/test/lib/mocha/single_return_value.rb +24 -0
  398. data/test/lib/mocha/single_yield.rb +18 -0
  399. data/test/lib/mocha/standalone.rb +2 -0
  400. data/test/lib/mocha/stub.rb +18 -0
  401. data/test/lib/mocha/test_case_adapter.rb +3 -3
  402. data/test/lib/mocha/yield_parameters.rb +31 -0
  403. data/test/lib/puppettest.rb +38 -20
  404. data/test/lib/puppettest/certificates.rb +0 -1
  405. data/test/lib/puppettest/exetest.rb +0 -1
  406. data/test/lib/puppettest/fakes.rb +0 -1
  407. data/test/lib/puppettest/fileparsing.rb +8 -15
  408. data/test/lib/puppettest/filetesting.rb +0 -1
  409. data/test/lib/puppettest/parsertesting.rb +37 -23
  410. data/test/lib/puppettest/railstesting.rb +3 -6
  411. data/test/lib/puppettest/reporttesting.rb +0 -1
  412. data/test/lib/puppettest/resourcetesting.rb +6 -34
  413. data/test/lib/puppettest/runnable_test.rb +30 -0
  414. data/test/lib/puppettest/servertest.rb +2 -3
  415. data/test/lib/puppettest/support/assertions.rb +13 -41
  416. data/test/lib/puppettest/support/collection.rb +0 -1
  417. data/test/lib/puppettest/support/helpers.rb +0 -1
  418. data/test/lib/puppettest/support/resources.rb +17 -17
  419. data/test/lib/puppettest/support/utils.rb +45 -27
  420. data/test/lib/puppettest/testcase.rb +2 -21
  421. data/test/lib/rake/puppet_test_loader.rb +0 -1
  422. data/test/lib/rake/puppet_testtask.rb +0 -1
  423. data/test/network/authconfig.rb +1 -2
  424. data/test/network/authorization.rb +1 -2
  425. data/test/network/authstore.rb +1 -2
  426. data/test/network/client/ca.rb +12 -7
  427. data/test/network/client/client.rb +17 -22
  428. data/test/network/client/dipper.rb +1 -2
  429. data/test/network/client/master.rb +70 -184
  430. data/test/network/client/resource.rb +9 -2
  431. data/test/network/client_request.rb +1 -2
  432. data/test/network/daemon.rb +1 -2
  433. data/test/network/handler/bucket.rb +2 -31
  434. data/test/network/handler/ca.rb +9 -3
  435. data/test/network/handler/configuration.rb +160 -0
  436. data/test/network/handler/fileserver.rb +24 -5
  437. data/test/network/handler/handler.rb +1 -2
  438. data/test/network/handler/master.rb +38 -243
  439. data/test/network/handler/report.rb +2 -104
  440. data/test/network/handler/resource.rb +5 -3
  441. data/test/network/handler/runner.rb +22 -60
  442. data/test/network/rights.rb +1 -2
  443. data/test/network/server/mongrel_test.rb +2 -3
  444. data/test/network/server/webrick.rb +17 -11
  445. data/test/network/xmlrpc/client.rb +27 -12
  446. data/test/network/xmlrpc/processor.rb +3 -4
  447. data/test/network/xmlrpc/server.rb +1 -2
  448. data/test/network/xmlrpc/webrick_servlet.rb +8 -2
  449. data/test/other/dsl.rb +2 -4
  450. data/test/other/events.rb +14 -56
  451. data/test/other/overrides.rb +3 -6
  452. data/test/other/propertychange.rb +1 -2
  453. data/test/other/provider.rb +1 -2
  454. data/test/other/puppet.rb +1 -2
  455. data/test/other/relationships.rb +15 -17
  456. data/test/other/report.rb +14 -20
  457. data/test/other/transactions.rb +109 -192
  458. data/test/puppet/conffiles.rb +3 -5
  459. data/test/puppet/defaults.rb +1 -28
  460. data/test/puppet/errortest.rb +1 -2
  461. data/test/puppet/tc_suidmanager.rb +77 -63
  462. data/test/rails/ast.rb +4 -4
  463. data/test/rails/configuration.rb +71 -0
  464. data/test/rails/host.rb +19 -30
  465. data/test/rails/rails.rb +1 -2
  466. data/test/rails/railsparameter.rb +3 -4
  467. data/test/rails/railsresource.rb +6 -5
  468. data/test/ral/manager/attributes.rb +1 -2
  469. data/test/ral/manager/instances.rb +3 -3
  470. data/test/ral/manager/manager.rb +1 -2
  471. data/test/ral/manager/provider.rb +1 -2
  472. data/test/ral/manager/type.rb +89 -93
  473. data/test/ral/providers/cron/crontab.rb +9 -11
  474. data/test/ral/providers/group.rb +1 -2
  475. data/test/ral/providers/host/netinfo.rb +1 -2
  476. data/test/ral/providers/host/parsed.rb +1 -2
  477. data/test/ral/providers/mailalias/aliases.rb +1 -2
  478. data/test/ral/providers/mount/netinfo.rb +1 -2
  479. data/test/ral/providers/nameservice.rb +1 -2
  480. data/test/ral/providers/package.rb +5 -4
  481. data/test/ral/providers/package/apt.rb +0 -1
  482. data/test/ral/providers/package/aptrpm.rb +0 -1
  483. data/test/ral/providers/parsedfile.rb +1 -2
  484. data/test/ral/providers/port/parsed.rb +1 -2
  485. data/test/ral/providers/provider.rb +10 -5
  486. data/test/ral/providers/service/base.rb +1 -2
  487. data/test/ral/providers/service/debian.rb +58 -0
  488. data/test/ral/providers/sshkey/parsed.rb +1 -2
  489. data/test/ral/providers/user.rb +3 -2
  490. data/test/ral/providers/user/useradd.rb +0 -1
  491. data/test/ral/types/basic.rb +4 -9
  492. data/test/ral/types/cron.rb +6 -12
  493. data/test/ral/types/exec.rb +6 -7
  494. data/test/ral/types/file.rb +35 -14
  495. data/test/ral/types/file/target.rb +6 -5
  496. data/test/ral/types/filebucket.rb +3 -2
  497. data/test/ral/types/fileignoresource.rb +10 -42
  498. data/test/ral/types/filesources.rb +21 -60
  499. data/test/ral/types/group.rb +3 -3
  500. data/test/ral/types/host.rb +6 -3
  501. data/test/ral/types/mailalias.rb +1 -2
  502. data/test/ral/types/parameter.rb +5 -3
  503. data/test/ral/types/port.rb +1 -2
  504. data/test/ral/types/property.rb +3 -3
  505. data/test/ral/types/resources.rb +1 -2
  506. data/test/ral/types/service.rb +5 -3
  507. data/test/ral/types/sshkey.rb +5 -3
  508. data/test/ral/types/tidy.rb +63 -3
  509. data/test/ral/types/user.rb +10 -11
  510. data/test/ral/types/yumrepo.rb +1 -1
  511. data/test/ral/types/zone.rb +1 -2
  512. data/test/util/autoload.rb +23 -27
  513. data/test/util/classgen.rb +1 -2
  514. data/test/util/execution.rb +1 -2
  515. data/test/util/features.rb +1 -3
  516. data/test/util/fileparsing.rb +11 -3
  517. data/test/util/filetype.rb +1 -2
  518. data/test/util/inifile.rb +1 -1
  519. data/test/util/instance_loader.rb +5 -6
  520. data/test/util/loadedfile.rb +1 -2
  521. data/test/util/log.rb +1 -2
  522. data/test/util/metrics.rb +1 -2
  523. data/test/util/package.rb +1 -2
  524. data/test/util/posixtest.rb +1 -2
  525. data/test/util/{config.rb → settings.rb} +123 -265
  526. data/test/util/storage.rb +1 -2
  527. data/test/util/subclass_loader.rb +1 -2
  528. data/test/util/utiltest.rb +1 -111
  529. metadata +130 -112
  530. data/ext/tools/passwd2puppet +0 -45
  531. data/lib/puppet/fact_stores/yaml.rb +0 -42
  532. data/lib/puppet/network/handler/facts.rb +0 -70
  533. data/lib/puppet/parser/ast/resourcedef.rb +0 -222
  534. data/lib/puppet/parser/ast/resourceref.rb +0 -58
  535. data/test/language/ast/component.rb +0 -142
  536. data/test/language/collector.rb +0 -179
  537. data/test/language/interpreter.rb +0 -804
  538. data/test/language/node.rb +0 -126
  539. data/test/lib/mocha/mock_methods.rb +0 -122
  540. data/test/lib/puppettest/graph.rb +0 -41
  541. data/test/lib/spec.rb +0 -8
  542. data/test/lib/spec/callback.rb +0 -11
  543. data/test/lib/spec/callback/callback_container.rb +0 -60
  544. data/test/lib/spec/callback/extensions/module.rb +0 -24
  545. data/test/lib/spec/callback/extensions/object.rb +0 -37
  546. data/test/lib/spec/deprecated.rb +0 -3
  547. data/test/lib/spec/expectations.rb +0 -59
  548. data/test/lib/spec/expectations/differs/default.rb +0 -62
  549. data/test/lib/spec/expectations/errors.rb +0 -6
  550. data/test/lib/spec/expectations/extensions.rb +0 -3
  551. data/test/lib/spec/expectations/extensions/object.rb +0 -109
  552. data/test/lib/spec/expectations/extensions/proc.rb +0 -57
  553. data/test/lib/spec/expectations/extensions/string_and_symbol.rb +0 -17
  554. data/test/lib/spec/expectations/handler.rb +0 -47
  555. data/test/lib/spec/expectations/should.rb +0 -5
  556. data/test/lib/spec/expectations/should/base.rb +0 -64
  557. data/test/lib/spec/expectations/should/change.rb +0 -69
  558. data/test/lib/spec/expectations/should/have.rb +0 -128
  559. data/test/lib/spec/expectations/should/not.rb +0 -74
  560. data/test/lib/spec/expectations/should/should.rb +0 -81
  561. data/test/lib/spec/expectations/sugar.rb +0 -47
  562. data/test/lib/spec/matchers.rb +0 -160
  563. data/test/lib/spec/matchers/be.rb +0 -161
  564. data/test/lib/spec/matchers/be_close.rb +0 -37
  565. data/test/lib/spec/matchers/change.rb +0 -120
  566. data/test/lib/spec/matchers/eql.rb +0 -43
  567. data/test/lib/spec/matchers/equal.rb +0 -43
  568. data/test/lib/spec/matchers/has.rb +0 -44
  569. data/test/lib/spec/matchers/have.rb +0 -140
  570. data/test/lib/spec/matchers/include.rb +0 -50
  571. data/test/lib/spec/matchers/match.rb +0 -41
  572. data/test/lib/spec/matchers/raise_error.rb +0 -100
  573. data/test/lib/spec/matchers/respond_to.rb +0 -35
  574. data/test/lib/spec/matchers/satisfy.rb +0 -47
  575. data/test/lib/spec/matchers/throw_symbol.rb +0 -75
  576. data/test/lib/spec/mocks.rb +0 -232
  577. data/test/lib/spec/mocks/argument_expectation.rb +0 -132
  578. data/test/lib/spec/mocks/error_generator.rb +0 -85
  579. data/test/lib/spec/mocks/errors.rb +0 -10
  580. data/test/lib/spec/mocks/extensions/object.rb +0 -3
  581. data/test/lib/spec/mocks/message_expectation.rb +0 -231
  582. data/test/lib/spec/mocks/methods.rb +0 -40
  583. data/test/lib/spec/mocks/mock.rb +0 -26
  584. data/test/lib/spec/mocks/mock_handler.rb +0 -166
  585. data/test/lib/spec/mocks/order_group.rb +0 -29
  586. data/test/lib/spec/rake/spectask.rb +0 -173
  587. data/test/lib/spec/rake/verify_rcov.rb +0 -47
  588. data/test/lib/spec/runner.rb +0 -132
  589. data/test/lib/spec/runner/backtrace_tweaker.rb +0 -55
  590. data/test/lib/spec/runner/command_line.rb +0 -34
  591. data/test/lib/spec/runner/context.rb +0 -154
  592. data/test/lib/spec/runner/context_eval.rb +0 -142
  593. data/test/lib/spec/runner/context_runner.rb +0 -55
  594. data/test/lib/spec/runner/drb_command_line.rb +0 -21
  595. data/test/lib/spec/runner/execution_context.rb +0 -17
  596. data/test/lib/spec/runner/extensions/kernel.rb +0 -17
  597. data/test/lib/spec/runner/extensions/object.rb +0 -32
  598. data/test/lib/spec/runner/formatter.rb +0 -5
  599. data/test/lib/spec/runner/formatter/base_text_formatter.rb +0 -118
  600. data/test/lib/spec/runner/formatter/html_formatter.rb +0 -219
  601. data/test/lib/spec/runner/formatter/progress_bar_formatter.rb +0 -27
  602. data/test/lib/spec/runner/formatter/rdoc_formatter.rb +0 -22
  603. data/test/lib/spec/runner/formatter/specdoc_formatter.rb +0 -23
  604. data/test/lib/spec/runner/heckle_runner.rb +0 -71
  605. data/test/lib/spec/runner/heckle_runner_win.rb +0 -10
  606. data/test/lib/spec/runner/option_parser.rb +0 -224
  607. data/test/lib/spec/runner/reporter.rb +0 -105
  608. data/test/lib/spec/runner/spec_matcher.rb +0 -25
  609. data/test/lib/spec/runner/spec_parser.rb +0 -41
  610. data/test/lib/spec/runner/spec_should_raise_handler.rb +0 -74
  611. data/test/lib/spec/runner/specification.rb +0 -114
  612. data/test/lib/spec/translator.rb +0 -87
  613. data/test/lib/spec/version.rb +0 -30
  614. data/test/network/handler/facts.rb +0 -112
  615. data/test/other/pgraph.rb +0 -290
  616. data/test/other/relationship.rb +0 -74
  617. data/test/puppet/modules.rb +0 -59
  618. data/test/rails/collection.rb +0 -247
  619. data/test/rails/interpreter.rb +0 -91
  620. data/test/ral/providers/mount/parsed.rb +0 -251
  621. data/test/ral/providers/service.rb +0 -235
  622. data/test/ral/types/component.rb +0 -113
  623. data/test/ral/types/interface.rb +0 -40
  624. data/test/ral/types/mount.rb +0 -362
  625. data/test/ral/types/package.rb +0 -154
  626. data/test/ral/types/schedule.rb +0 -357
  627. data/test/tagging/tagging.rb +0 -170
  628. data/test/util/fact_store.rb +0 -67
  629. data/test/util/graph.rb +0 -108
@@ -72,4 +72,3 @@ module Puppet
72
72
  end
73
73
  end
74
74
 
75
- # $Id: sshkey.rb 2500 2007-05-09 22:05:32Z luke $
@@ -1,7 +1,3 @@
1
-
2
- require 'etc'
3
- require 'puppet/type/pfile'
4
-
5
1
  module Puppet
6
2
  newtype(:tidy, Puppet.type(:file)) do
7
3
  @doc = "Remove unwanted files based on specific criteria. Multiple
@@ -14,11 +10,17 @@ module Puppet
14
10
  isnamevar
15
11
  end
16
12
 
13
+ newparam(:matches) do
14
+ desc "One or more file glob patterns, which restrict the list of
15
+ files to be tidied to those whose basenames match at least one
16
+ of the patterns specified. Multiple patterns can be specified
17
+ using an array."
18
+ end
19
+
17
20
  copyparam(Puppet.type(:file), :backup)
18
21
 
19
22
  newproperty(:ensure) do
20
23
  desc "An internal attribute used to determine which files should be removed."
21
- require 'etc'
22
24
 
23
25
  @nodoc = true
24
26
 
@@ -47,6 +49,14 @@ module Puppet
47
49
  end
48
50
  else
49
51
  @out = []
52
+ if @resource[:matches]
53
+ basename = File.basename(@resource[:path])
54
+ flags = File::FNM_DOTMATCH | File::FNM_PATHNAME
55
+ unless @resource[:matches].any? {|pattern| File.fnmatch(pattern, basename, flags) }
56
+ self.debug "No patterns specified match basename, skipping"
57
+ return true
58
+ end
59
+ end
50
60
  TATTRS.each do |param|
51
61
  if property = @resource.property(param)
52
62
  self.debug "No is value for %s", [param] if is[property].nil?
@@ -139,7 +149,6 @@ module Puppet
139
149
  type = @resource[:type] || :atime
140
150
  end
141
151
 
142
- #return Integer(Time.now - stat.send(type))
143
152
  return stat.send(type).to_i
144
153
  end
145
154
 
@@ -292,4 +301,3 @@ module Puppet
292
301
  end
293
302
  end
294
303
 
295
- # $Id: tidy.rb 2647 2007-07-04 22:25:23Z luke $
@@ -343,4 +343,3 @@ module Puppet
343
343
  end
344
344
  end
345
345
 
346
- # $Id: user.rb 2665 2007-07-09 21:32:33Z luke $
@@ -400,4 +400,3 @@ end
400
400
  end
401
401
  end
402
402
 
403
- # $Id: zone.rb 2576 2007-06-14 03:39:00Z luke $
@@ -201,7 +201,7 @@ module Util
201
201
  raise Puppet::DevError, "Failed to provide level to :benchmark"
202
202
  end
203
203
 
204
- unless object.respond_to? level
204
+ unless level == :none or object.respond_to? level
205
205
  raise Puppet::DevError, "Benchmarked object does not respond to %s" % level
206
206
  end
207
207
 
@@ -461,4 +461,3 @@ require 'puppet/util/logging'
461
461
  require 'puppet/util/package'
462
462
  require 'puppet/util/warnings'
463
463
 
464
- # $Id: util.rb 2717 2007-07-19 20:02:26Z luke $
@@ -3,7 +3,7 @@ class Puppet::Util::Autoload
3
3
  include Puppet::Util
4
4
 
5
5
  @autoloaders = {}
6
- @loaded = {}
6
+ @loaded = []
7
7
 
8
8
  class << self
9
9
  attr_reader :autoloaders
@@ -13,12 +13,6 @@ class Puppet::Util::Autoload
13
13
  # Send [], []=, and :clear to the @autloaders hash
14
14
  Puppet::Util.classproxy self, :autoloaders, "[]", "[]="
15
15
 
16
- # Clear the list of autoloaders and loaded files.
17
- def self.clear
18
- @autoloaders.clear
19
- @loaded.clear
20
- end
21
-
22
16
  # List all loaded files.
23
17
  def self.list_loaded
24
18
  @loaded.sort { |a,b| a[0] <=> b[0] }.collect do |path, hash|
@@ -27,15 +21,20 @@ class Puppet::Util::Autoload
27
21
  end
28
22
 
29
23
  # Has a given path been loaded? This is used for testing whether a
30
- # changed file should be loaded or just ignored.
24
+ # changed file should be loaded or just ignored. This is only
25
+ # used in network/client/master, when downloading plugins, to
26
+ # see if a given plugin is currently loaded and thus should be
27
+ # reloaded.
31
28
  def self.loaded?(path)
32
29
  path = path.to_s.sub(/\.rb$/, '')
33
- @loaded[path]
30
+ @loaded.include?(path)
34
31
  end
35
32
 
36
- # Save the fact that a given path has been loaded
37
- def self.loaded(path, file, loader)
38
- @loaded[path] = {:file => file, :autoloader => loader}
33
+ # Save the fact that a given path has been loaded. This is so
34
+ # we can load downloaded plugins if they've already been loaded
35
+ # into memory.
36
+ def self.loaded(file)
37
+ @loaded << file unless @loaded.include?(file)
39
38
  end
40
39
 
41
40
  attr_accessor :object, :path, :objwarn, :wrap
@@ -94,7 +93,7 @@ class Puppet::Util::Autoload
94
93
  # Mark the named object as loaded. Note that this supports unqualified
95
94
  # queries, while we store the result as a qualified query in the class.
96
95
  def loaded(name, file)
97
- self.class.loaded(File.join(@path, name.to_s), file, object)
96
+ self.class.loaded(File.join(@path, name.to_s))
98
97
  end
99
98
 
100
99
  # Indicate whether the specfied plugin has been loaded.
@@ -108,16 +107,11 @@ class Puppet::Util::Autoload
108
107
  # Load every instance of everything we can find.
109
108
  eachdir do |dir|
110
109
  Dir.glob("#{dir}/*.rb").each do |file|
111
- # Load here, rather than require, so that facts
112
- # can be reloaded. This has some short-comings, I
113
- # believe, but it works as long as real classes
114
- # aren't used.
115
110
  name = File.basename(file).sub(".rb", '').intern
116
111
  next if loaded?(name)
117
- next if $".include?(File.join(@path, name.to_s + ".rb"))
118
- filepath = File.join(@path, name.to_s + ".rb")
112
+ rubypath = File.join(@path, name.to_s)
119
113
  begin
120
- Kernel.require file
114
+ Kernel.require rubypath
121
115
  loaded(name, file)
122
116
  rescue => detail
123
117
  if Puppet[:trace]
@@ -141,8 +135,12 @@ class Puppet::Util::Autoload
141
135
 
142
136
  # The list of directories to search through for loadable plugins.
143
137
  def searchpath
144
- [Puppet[:libdir], $:].flatten
138
+ # JJM: Search for optional lib directories in each module bundle.
139
+ module_lib_dirs = Puppet[:modulepath].split(":").collect do |d|
140
+ Dir.glob("%s/*/lib" % d).select do |f|
141
+ FileTest.directory?(f)
142
+ end
143
+ end.flatten
144
+ [module_lib_dirs, Puppet[:libdir], $:].flatten
145
145
  end
146
146
  end
147
-
148
- # $Id: autoload.rb 2668 2007-07-10 04:00:28Z luke $
@@ -0,0 +1,37 @@
1
+ module Puppet::Util::Checksums
2
+ def md5(content)
3
+ require 'digest/md5'
4
+ Digest::MD5.hexdigest(content)
5
+ end
6
+
7
+ def md5_file(filename)
8
+ require 'digest/md5'
9
+
10
+ incr_digest = Digest::MD5.new()
11
+ File.open(filename, 'r') do |file|
12
+ file.each_line do |line|
13
+ incr_digest << line
14
+ end
15
+ end
16
+
17
+ return incr_digest.hexdigest
18
+ end
19
+
20
+ def sha1(content)
21
+ require 'digest/sha1'
22
+ Digest::SHA1.hexdigest(content)
23
+ end
24
+
25
+ def sha1_file(filename)
26
+ require 'digest/sha1'
27
+
28
+ incr_digest = Digest::SHA1.new()
29
+ File.open(filename, 'r') do |file|
30
+ file.each_line do |line|
31
+ incr_digest << line
32
+ end
33
+ end
34
+
35
+ return incr_digest.hexdigest
36
+ end
37
+ end
@@ -205,4 +205,3 @@ module Puppet::Util::ClassGen
205
205
  end
206
206
  end
207
207
 
208
- # $Id: classgen.rb 1856 2006-11-11 07:40:16Z luke $
@@ -0,0 +1,71 @@
1
+ # Provide a diff between two strings.
2
+ module Puppet::Util::Diff
3
+ include Puppet::Util
4
+ require 'tempfile'
5
+
6
+ def diff(old, new)
7
+ command = [Puppet[:diff]]
8
+ if args = Puppet[:diff_args] and args != ""
9
+ command << args
10
+ end
11
+ command << old << new
12
+ execute(command, :failonfail => false)
13
+ end
14
+
15
+ module_function :diff
16
+
17
+ # return diff string of two input strings
18
+ # format defaults to unified
19
+ # context defaults to 3 lines
20
+ def lcs_diff(data_old, data_new, format=:unified, context_lines=3)
21
+ unless Puppet.features.diff?
22
+ Puppet.warning "Cannot provide diff without the diff/lcs Ruby library"
23
+ return ""
24
+ end
25
+ data_old = data_old.split(/\n/).map! { |e| e.chomp }
26
+ data_new = data_new.split(/\n/).map! { |e| e.chomp }
27
+
28
+ output = ""
29
+
30
+ diffs = Diff::LCS.diff(data_old, data_new)
31
+ return output if diffs.empty?
32
+
33
+ oldhunk = hunk = nil
34
+ file_length_difference = 0
35
+
36
+ diffs.each do |piece|
37
+ begin
38
+ hunk = Diff::LCS::Hunk.new(data_old, data_new, piece,
39
+ context_lines,
40
+ file_length_difference)
41
+ file_length_difference = hunk.file_length_difference
42
+ next unless oldhunk
43
+ # Hunks may overlap, which is why we need to be careful when our
44
+ # diff includes lines of context. Otherwise, we might print
45
+ # redundant lines.
46
+ if (context_lines > 0) and hunk.overlaps?(oldhunk)
47
+ hunk.unshift(oldhunk)
48
+ else
49
+ output << oldhunk.diff(format)
50
+ end
51
+ ensure
52
+ oldhunk = hunk
53
+ output << "\n"
54
+ end
55
+ end
56
+
57
+ # Handle the last remaining hunk
58
+ output << oldhunk.diff(format) << "\n"
59
+ end
60
+
61
+ def string_file_diff(path, string)
62
+ require 'tempfile'
63
+ tempfile = Tempfile.new("puppet-diffing")
64
+ tempfile.open
65
+ tempfile.print string
66
+ tempfile.close
67
+ print diff(path, tempfile.path)
68
+ tempfile.delete
69
+ end
70
+ end
71
+
@@ -14,9 +14,11 @@ module Puppet::Util::Docs
14
14
  meta_def method, &block
15
15
  end
16
16
 
17
+ attr_writer :doc
18
+
17
19
  # Generate the full doc string.
18
20
  def doc
19
- extra = methods.find_all { |m| m.to_s =~ /^dochook_.+/ }.collect { |m|
21
+ extra = methods.find_all { |m| m.to_s =~ /^dochook_.+/ }.sort.collect { |m|
20
22
  self.send(m)
21
23
  }.join(" ")
22
24
 
@@ -67,6 +69,11 @@ module Puppet::Util::Docs
67
69
  str + "\n"
68
70
  end
69
71
 
72
+ attr_reader :nodoc
73
+ def nodoc?
74
+ nodoc
75
+ end
76
+
70
77
  # Pad a field with spaces
71
78
  def pad(value, length)
72
79
  value.to_s + (" " * (length - value.to_s.length))
@@ -101,4 +108,3 @@ module Puppet::Util::Docs
101
108
  module_function :scrub
102
109
  end
103
110
 
104
- # $Id: docs.rb 2408 2007-04-24 02:41:16Z luke $
@@ -52,4 +52,3 @@ module Puppet::Util::Errors
52
52
  end
53
53
  end
54
54
 
55
- # $Id: errors.rb 1739 2006-10-06 03:13:15Z luke $
@@ -19,4 +19,3 @@ module Puppet::Util::Execution
19
19
  end
20
20
  end
21
21
 
22
- # $Id: execution.rb 1568 2006-09-05 23:20:45Z luke $
@@ -57,4 +57,3 @@ module Puppet::Util
57
57
  end
58
58
  end
59
59
 
60
- # $Id: fact_store.rb 2457 2007-05-03 05:24:13Z luke $
@@ -16,8 +16,7 @@ class Puppet::Util::Feature
16
16
  if self.class.respond_to?(method)
17
17
  raise ArgumentError, "Feature %s is already defined" % name
18
18
  end
19
-
20
- result = true
19
+
21
20
  if block_given?
22
21
  begin
23
22
  result = yield
@@ -25,33 +24,21 @@ class Puppet::Util::Feature
25
24
  warn "Failed to load feature test for %s: %s" % [name, detail]
26
25
  result = false
27
26
  end
28
- end
29
-
30
- if ary = options[:libs]
31
- ary = [ary] unless ary.is_a?(Array)
32
-
33
- ary.each do |lib|
34
- unless lib.is_a?(String)
35
- raise ArgumentError, "Libraries must be passed as strings not %s" % lib.class
36
- end
37
-
38
- begin
39
- require lib
40
- rescue Exception
41
- Puppet.debug "Failed to load library '%s' for feature '%s'" % [lib, name]
42
- result = false
43
- end
44
- end
27
+ @results[name] = result
45
28
  end
46
29
 
47
30
  meta_def(method) do
48
- result
31
+ unless @results.include?(name)
32
+ @results[name] = test(name, options)
33
+ end
34
+ @results[name]
49
35
  end
50
36
  end
51
37
 
52
38
  # Create a new feature collection.
53
39
  def initialize(path)
54
40
  @path = path
41
+ @results = {}
55
42
  @loader = Puppet::Util::Autoload.new(self, @path)
56
43
  end
57
44
 
@@ -71,6 +58,28 @@ class Puppet::Util::Feature
71
58
  return false
72
59
  end
73
60
  end
74
- end
75
61
 
76
- # $Id: feature.rb 2178 2007-02-07 23:56:59Z luke $
62
+ # Actually test whether the feature is present. We only want to test when
63
+ # someone asks for the feature, so we don't unnecessarily load
64
+ # files.
65
+ def test(name, options)
66
+ result = true
67
+ if ary = options[:libs]
68
+ ary = [ary] unless ary.is_a?(Array)
69
+
70
+ ary.each do |lib|
71
+ unless lib.is_a?(String)
72
+ raise ArgumentError, "Libraries must be passed as strings not %s" % lib.class
73
+ end
74
+
75
+ begin
76
+ require lib
77
+ rescue Exception
78
+ Puppet.debug "Failed to load library '%s' for feature '%s'" % [lib, name]
79
+ result = false
80
+ end
81
+ end
82
+ end
83
+ result
84
+ end
85
+ end
@@ -268,7 +268,9 @@ module Puppet::Util::FileParsing
268
268
 
269
269
  # Define a new type of record. These lines get split into hashes. Valid
270
270
  # options are:
271
- # * <tt>:absent</tt>: What to use when a field is absent. Defaults to "".
271
+ # * <tt>:absent</tt>: What to use as value within a line, when a field is
272
+ # absent. Note that in the record object, the literal :absent symbol is
273
+ # used, and not this value. Defaults to "".
272
274
  # * <tt>:fields</tt>: The list of fields, as an array. By default, all
273
275
  # fields are considered required.
274
276
  # * <tt>:joiner</tt>: How to join fields together. Defaults to '\t'.
@@ -394,4 +396,3 @@ module Puppet::Util::FileParsing
394
396
  end
395
397
  end
396
398
 
397
- # $Id: fileparsing.rb 2750 2007-08-06 17:59:37Z luke $
@@ -78,6 +78,7 @@ class Puppet::Util::FileType
78
78
  end
79
79
 
80
80
  def initialize(path)
81
+ raise ArgumentError.new("Path is nil") if path.nil?
81
82
  @path = path
82
83
  end
83
84
 
@@ -197,26 +198,44 @@ class Puppet::Util::FileType
197
198
  newfiletype(:suntab) do
198
199
  # Read a specific @path's cron tab.
199
200
  def read
200
- Puppet::Util::SUIDManager.asuser(@path) {
201
- %x{crontab -l 2>/dev/null}
202
- }
201
+ begin
202
+ output = Puppet::Util.execute(%w{crontab -l}, :uid => @path)
203
+ return "" if output.include?("can't open your crontab")
204
+ return output
205
+ rescue
206
+ # If there's a failure, treat it like an empty file.
207
+ return ""
208
+ end
203
209
  end
204
210
 
205
211
  # Remove a specific @path's cron tab.
206
212
  def remove
207
- Puppet::Util::SUIDManager.asuser(@path) {
208
- %x{crontab -r 2>/dev/null}
209
- }
213
+ begin
214
+ Puppet::Util.execute(%w{crontab -r}, :uid => @path)
215
+ rescue => detail
216
+ raise Puppet::Error, "Could not remove crontab for %s: %s" % [@path, detail]
217
+ end
210
218
  end
211
219
 
212
220
  # Overwrite a specific @path's cron tab; must be passed the @path name
213
221
  # and the text with which to create the cron tab.
214
222
  def write(text)
215
- Puppet::Util::SUIDManager.asuser(@path) {
216
- IO.popen("crontab", "w") { |p|
217
- p.print text
218
- }
219
- }
223
+ puts text
224
+ require "tempfile"
225
+ output_file = Tempfile.new("puppet")
226
+ fh = output_file.open
227
+ fh.print text
228
+ fh.close
229
+
230
+ # We have to chown the stupid file to the user.
231
+ File.chown(Puppet::Util.uid(@path), nil, output_file.path)
232
+
233
+ begin
234
+ Puppet::Util.execute(["crontab", output_file.path], :uid => @path)
235
+ rescue => detail
236
+ raise Puppet::Error, "Could not write crontab for %s: %s" % [@path, detail]
237
+ end
238
+ output_file.delete
220
239
  end
221
240
  end
222
241
 
@@ -308,4 +327,3 @@ class Puppet::Util::FileType
308
327
  end
309
328
  end
310
329
 
311
- # $Id: filetype.rb 2679 2007-07-11 20:23:49Z luke $