puppet 0.18.4 → 0.22.4

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 (673) hide show
  1. data/CHANGELOG +288 -0
  2. data/README +2 -2
  3. data/Rakefile +78 -5
  4. data/bin/puppet +28 -36
  5. data/bin/puppetca +81 -38
  6. data/bin/puppetd +65 -62
  7. data/bin/puppetdoc +409 -140
  8. data/bin/puppetmasterd +59 -47
  9. data/bin/puppetrun +38 -23
  10. data/conf/freebsd/puppetd +26 -0
  11. data/conf/freebsd/puppetmasterd +26 -0
  12. data/conf/gentoo/conf.d/puppet +5 -0
  13. data/conf/gentoo/conf.d/puppetmaster +12 -0
  14. data/conf/gentoo/init.d/puppet +38 -0
  15. data/conf/gentoo/init.d/puppetmaster +50 -0
  16. data/conf/gentoo/puppet/fileserver.conf +12 -0
  17. data/conf/gentoo/puppet/puppetca.conf +29 -0
  18. data/conf/gentoo/puppet/puppetd.conf +29 -0
  19. data/conf/gentoo/puppet/puppetmasterd.conf +29 -0
  20. data/conf/redhat/client.init +10 -5
  21. data/conf/redhat/client.sysconfig +1 -1
  22. data/conf/redhat/fileserver.conf +2 -2
  23. data/conf/redhat/logrotate +1 -1
  24. data/conf/redhat/no-lockdir.patch +13 -0
  25. data/conf/redhat/puppet.spec +65 -8
  26. data/conf/redhat/puppetd.conf +0 -4
  27. data/conf/redhat/server.init +3 -6
  28. data/conf/solaris/pkginfo +1 -1
  29. data/conf/solaris/smf/svc-puppetd +2 -2
  30. data/conf/suse/client.init +142 -0
  31. data/conf/suse/puppet.spec +221 -0
  32. data/conf/suse/server.init +162 -0
  33. data/examples/code/mac_automount.pp +16 -0
  34. data/examples/root/bin/sleeper +3 -5
  35. data/examples/root/etc/init.d/sleeper +8 -2
  36. data/examples/root/etc/puppet/fileserver.conf +12 -2
  37. data/examples/root/etc/puppet/namespaceauth.conf +20 -0
  38. data/examples/root/etc/puppet/puppetd.conf +4 -0
  39. data/examples/root/etc/puppet/puppetmasterd.conf +6 -9
  40. data/examples/root/etc/puppet/tagmail.conf +1 -0
  41. data/ext/emacs/puppet-mode.el +46 -1
  42. data/ext/logcheck/puppet +15 -0
  43. data/ext/module_puppet +15 -23
  44. data/ext/vim/puppet.vim +4 -2
  45. data/install.rb +2 -1
  46. data/lib/puppet.rb +76 -207
  47. data/lib/puppet/configuration.rb +331 -0
  48. data/lib/puppet/daemon.rb +63 -246
  49. data/lib/puppet/dsl.rb +371 -0
  50. data/lib/puppet/element.rb +8 -26
  51. data/lib/puppet/error.rb +54 -0
  52. data/lib/puppet/event.rb +8 -243
  53. data/lib/puppet/{base64.rb → external/base64.rb} +0 -0
  54. data/lib/puppet/external/event-loop.rb +1 -0
  55. data/lib/puppet/{event-loop → external/event-loop}/better-definers.rb +0 -0
  56. data/lib/puppet/{event-loop → external/event-loop}/event-loop.rb +2 -2
  57. data/lib/puppet/{event-loop → external/event-loop}/signal-system.rb +1 -1
  58. data/lib/puppet/external/gratr.rb +33 -0
  59. data/lib/puppet/external/gratr/adjacency_graph.rb +257 -0
  60. data/lib/puppet/external/gratr/base.rb +34 -0
  61. data/lib/puppet/external/gratr/biconnected.rb +116 -0
  62. data/lib/puppet/external/gratr/chinese_postman.rb +123 -0
  63. data/lib/puppet/external/gratr/common.rb +73 -0
  64. data/lib/puppet/external/gratr/comparability.rb +92 -0
  65. data/lib/puppet/external/gratr/digraph.rb +116 -0
  66. data/lib/puppet/external/gratr/digraph_distance.rb +185 -0
  67. data/lib/puppet/external/gratr/dot.rb +90 -0
  68. data/lib/puppet/external/gratr/edge.rb +145 -0
  69. data/lib/puppet/external/gratr/graph.rb +303 -0
  70. data/lib/puppet/external/gratr/graph_api.rb +83 -0
  71. data/lib/puppet/external/gratr/import.rb +44 -0
  72. data/lib/puppet/external/gratr/labels.rb +90 -0
  73. data/lib/puppet/external/gratr/maximum_flow.rb +64 -0
  74. data/lib/puppet/external/gratr/rdot.rb +327 -0
  75. data/lib/puppet/external/gratr/search.rb +409 -0
  76. data/lib/puppet/external/gratr/strong_components.rb +127 -0
  77. data/lib/puppet/external/gratr/undirected_graph.rb +153 -0
  78. data/lib/puppet/{lock.rb → external/lock.rb} +1 -1
  79. data/lib/puppet/feature/base.rb +20 -0
  80. data/lib/puppet/feature/rails.rb +52 -0
  81. data/lib/puppet/metatype/attributes.rb +719 -0
  82. data/lib/puppet/metatype/closure.rb +111 -0
  83. data/lib/puppet/metatype/container.rb +94 -0
  84. data/lib/puppet/metatype/evaluation.rb +118 -0
  85. data/lib/puppet/metatype/instances.rb +261 -0
  86. data/lib/puppet/metatype/manager.rb +169 -0
  87. data/lib/puppet/metatype/metaparams.rb +409 -0
  88. data/lib/puppet/metatype/providers.rb +260 -0
  89. data/lib/puppet/metatype/relationships.rb +116 -0
  90. data/lib/puppet/metatype/schedules.rb +39 -0
  91. data/lib/puppet/metatype/tags.rb +39 -0
  92. data/lib/puppet/modules.rb +113 -0
  93. data/lib/puppet/network/authconfig.rb +168 -0
  94. data/lib/puppet/network/authorization.rb +84 -0
  95. data/lib/puppet/network/authstore.rb +293 -0
  96. data/lib/puppet/network/client.rb +187 -0
  97. data/lib/puppet/network/client/ca.rb +56 -0
  98. data/lib/puppet/network/client/dipper.rb +81 -0
  99. data/lib/puppet/network/client/file.rb +7 -0
  100. data/lib/puppet/network/client/logger.rb +6 -0
  101. data/lib/puppet/network/client/master.rb +644 -0
  102. data/lib/puppet/{client → network/client}/proxy.rb +3 -3
  103. data/lib/puppet/{client/reporter.rb → network/client/report.rb} +4 -7
  104. data/lib/puppet/{client/pelement.rb → network/client/resource.rb} +6 -19
  105. data/lib/puppet/network/client/runner.rb +13 -0
  106. data/lib/puppet/network/client/status.rb +5 -0
  107. data/lib/puppet/network/client_request.rb +32 -0
  108. data/lib/puppet/network/handler.rb +33 -0
  109. data/lib/puppet/{server → network/handler}/ca.rb +5 -6
  110. data/lib/puppet/network/handler/filebucket.rb +180 -0
  111. data/lib/puppet/{server → network/handler}/fileserver.rb +277 -219
  112. data/lib/puppet/{server → network/handler}/logger.rb +3 -5
  113. data/lib/puppet/{server → network/handler}/master.rb +42 -8
  114. data/lib/puppet/network/handler/report.rb +158 -0
  115. data/lib/puppet/network/handler/resource.rb +190 -0
  116. data/lib/puppet/{server → network/handler}/runner.rb +17 -18
  117. data/lib/puppet/network/handler/status.rb +13 -0
  118. data/lib/puppet/network/rights.rb +74 -0
  119. data/lib/puppet/network/server.rb +5 -0
  120. data/lib/puppet/network/server/mongrel.rb +138 -0
  121. data/lib/puppet/network/server/webrick.rb +153 -0
  122. data/lib/puppet/network/xmlrpc/client.rb +129 -0
  123. data/lib/puppet/network/xmlrpc/processor.rb +91 -0
  124. data/lib/puppet/network/xmlrpc/server.rb +20 -0
  125. data/lib/puppet/network/xmlrpc/webrick_servlet.rb +121 -0
  126. data/lib/puppet/parameter.rb +390 -346
  127. data/lib/puppet/parser/ast.rb +116 -147
  128. data/lib/puppet/parser/ast/astarray.rb +17 -33
  129. data/lib/puppet/parser/ast/branch.rb +2 -0
  130. data/lib/puppet/parser/ast/caseopt.rb +7 -12
  131. data/lib/puppet/parser/ast/casestatement.rb +23 -32
  132. data/lib/puppet/parser/ast/collection.rb +19 -80
  133. data/lib/puppet/parser/ast/collexpr.rb +81 -0
  134. data/lib/puppet/parser/ast/component.rb +160 -89
  135. data/lib/puppet/parser/ast/else.rb +30 -0
  136. data/lib/puppet/parser/ast/function.rb +9 -2
  137. data/lib/puppet/parser/ast/hostclass.rb +47 -131
  138. data/lib/puppet/parser/ast/ifstatement.rb +43 -0
  139. data/lib/puppet/parser/ast/leaf.rb +10 -21
  140. data/lib/puppet/parser/ast/node.rb +32 -79
  141. data/lib/puppet/parser/ast/resourcedef.rb +222 -0
  142. data/lib/puppet/parser/ast/{typedefaults.rb → resourcedefaults.rb} +10 -16
  143. data/lib/puppet/parser/ast/resourceoverride.rb +62 -0
  144. data/lib/puppet/parser/ast/{objectparam.rb → resourceparam.rb} +12 -6
  145. data/lib/puppet/parser/ast/resourceref.rb +44 -0
  146. data/lib/puppet/parser/ast/selector.rb +16 -8
  147. data/lib/puppet/parser/ast/tag.rb +3 -1
  148. data/lib/puppet/parser/ast/vardef.rb +8 -12
  149. data/lib/puppet/parser/collector.rb +181 -0
  150. data/lib/puppet/parser/functions.rb +191 -36
  151. data/lib/puppet/parser/interpreter.rb +802 -380
  152. data/lib/puppet/parser/lexer.rb +86 -19
  153. data/lib/puppet/parser/parser.rb +1123 -960
  154. data/lib/puppet/parser/resource.rb +353 -0
  155. data/lib/puppet/parser/resource/param.rb +57 -0
  156. data/lib/puppet/parser/resource/reference.rb +71 -0
  157. data/lib/puppet/parser/scope.rb +573 -1000
  158. data/lib/puppet/parser/templatewrapper.rb +54 -0
  159. data/lib/puppet/pgraph.rb +208 -0
  160. data/lib/puppet/propertychange.rb +143 -0
  161. data/lib/puppet/provider.rb +302 -0
  162. data/lib/puppet/provider/cron/crontab.rb +187 -0
  163. data/lib/puppet/provider/group/groupadd.rb +29 -0
  164. data/lib/puppet/provider/group/netinfo.rb +12 -0
  165. data/lib/puppet/provider/group/pw.rb +31 -0
  166. data/lib/puppet/provider/host/netinfo.rb +18 -0
  167. data/lib/puppet/provider/host/parsed.rb +73 -0
  168. data/lib/puppet/provider/mount.rb +57 -0
  169. data/lib/puppet/provider/mount/netinfo.rb +38 -0
  170. data/lib/puppet/provider/mount/parsed.rb +37 -0
  171. data/lib/puppet/provider/nameservice.rb +344 -0
  172. data/lib/puppet/provider/nameservice/netinfo.rb +210 -0
  173. data/lib/puppet/provider/nameservice/objectadd.rb +45 -0
  174. data/lib/puppet/provider/nameservice/pw.rb +22 -0
  175. data/lib/puppet/provider/package/apple.rb +53 -0
  176. data/lib/puppet/provider/package/apt.rb +119 -0
  177. data/lib/puppet/provider/package/aptitude.rb +30 -0
  178. data/lib/puppet/provider/package/aptrpm.rb +79 -0
  179. data/lib/puppet/provider/package/blastwave.rb +114 -0
  180. data/lib/puppet/provider/package/darwinport.rb +88 -0
  181. data/lib/puppet/provider/package/dpkg.rb +109 -0
  182. data/lib/puppet/provider/package/freebsd.rb +43 -0
  183. data/lib/puppet/provider/package/gem.rb +104 -0
  184. data/lib/puppet/provider/package/openbsd.rb +93 -0
  185. data/lib/puppet/provider/package/pkgdmg.rb +119 -0
  186. data/lib/puppet/provider/package/portage.rb +112 -0
  187. data/lib/puppet/provider/package/ports.rb +94 -0
  188. data/lib/puppet/provider/package/rpm.rb +125 -0
  189. data/lib/puppet/provider/package/rug.rb +53 -0
  190. data/lib/puppet/provider/package/sun.rb +168 -0
  191. data/lib/puppet/provider/package/sunfreeware.rb +9 -0
  192. data/lib/puppet/provider/package/up2date.rb +45 -0
  193. data/lib/puppet/provider/package/yum.rb +54 -0
  194. data/lib/puppet/provider/parsedfile.rb +342 -0
  195. data/lib/puppet/provider/port/parsed.rb +174 -0
  196. data/lib/puppet/provider/service/base.rb +136 -0
  197. data/lib/puppet/provider/service/debian.rb +32 -0
  198. data/lib/puppet/provider/service/gentoo.rb +49 -0
  199. data/lib/puppet/{type → provider}/service/init.rb +42 -40
  200. data/lib/puppet/provider/service/redhat.rb +59 -0
  201. data/lib/puppet/{type → provider}/service/smf.rb +24 -13
  202. data/lib/puppet/provider/sshkey/parsed.rb +36 -0
  203. data/lib/puppet/provider/user/netinfo.rb +106 -0
  204. data/lib/puppet/provider/user/pw.rb +41 -0
  205. data/lib/puppet/provider/user/useradd.rb +67 -0
  206. data/lib/puppet/provider/zone/solaris.rb +208 -0
  207. data/lib/puppet/rails.rb +102 -66
  208. data/lib/puppet/rails/database/001_add_indexes.rb +38 -0
  209. data/lib/puppet/rails/database/schema.rb +89 -0
  210. data/lib/puppet/rails/external/tagging/acts_as_taggable.rb +62 -0
  211. data/lib/puppet/rails/external/tagging/init.rb +5 -0
  212. data/lib/puppet/rails/external/tagging/tag.rb +50 -0
  213. data/lib/puppet/rails/external/tagging/tagging.rb +12 -0
  214. data/lib/puppet/rails/fact_name.rb +7 -0
  215. data/lib/puppet/rails/fact_value.rb +5 -0
  216. data/lib/puppet/rails/host.rb +95 -46
  217. data/lib/puppet/rails/param_name.rb +28 -0
  218. data/lib/puppet/rails/param_value.rb +5 -0
  219. data/lib/puppet/rails/puppet_class.rb +9 -0
  220. data/lib/puppet/rails/resource.rb +95 -0
  221. data/lib/puppet/rails/source_file.rb +5 -0
  222. data/lib/puppet/relationship.rb +63 -0
  223. data/lib/puppet/reports/log.rb +14 -0
  224. data/lib/puppet/reports/rrdgraph.rb +114 -10
  225. data/lib/puppet/reports/store.rb +64 -0
  226. data/lib/puppet/reports/tagmail.rb +144 -71
  227. data/lib/puppet/sslcertificates.rb +38 -5
  228. data/lib/puppet/sslcertificates/ca.rb +142 -37
  229. data/lib/puppet/sslcertificates/certificate.rb +3 -3
  230. data/lib/puppet/sslcertificates/inventory.rb +53 -0
  231. data/lib/puppet/sslcertificates/support.rb +128 -0
  232. data/lib/puppet/transaction.rb +568 -189
  233. data/lib/puppet/transaction/report.rb +14 -3
  234. data/lib/puppet/transportable.rb +18 -10
  235. data/lib/puppet/type.rb +279 -2299
  236. data/lib/puppet/type/component.rb +63 -63
  237. data/lib/puppet/type/cron.rb +294 -710
  238. data/lib/puppet/type/exec.rb +185 -129
  239. data/lib/puppet/type/group.rb +38 -89
  240. data/lib/puppet/type/host.rb +110 -0
  241. data/lib/puppet/type/mount.rb +189 -0
  242. data/lib/puppet/type/notify.rb +47 -0
  243. data/lib/puppet/type/package.rb +129 -257
  244. data/lib/puppet/type/parsedtype.rb +172 -297
  245. data/lib/puppet/type/pfile.rb +540 -319
  246. data/lib/puppet/type/pfile/checksum.rb +103 -76
  247. data/lib/puppet/type/pfile/content.rb +16 -10
  248. data/lib/puppet/type/pfile/ensure.rb +52 -34
  249. data/lib/puppet/type/pfile/group.rb +25 -18
  250. data/lib/puppet/type/pfile/mode.rb +7 -4
  251. data/lib/puppet/type/pfile/{uid.rb → owner.rb} +21 -17
  252. data/lib/puppet/type/pfile/source.rb +119 -124
  253. data/lib/puppet/type/pfile/target.rb +29 -45
  254. data/lib/puppet/type/pfile/type.rb +2 -2
  255. data/lib/puppet/type/pfilebucket.rb +18 -14
  256. data/lib/puppet/type/port.rb +121 -0
  257. data/lib/puppet/type/property.rb +530 -0
  258. data/lib/puppet/type/resources.rb +150 -0
  259. data/lib/puppet/type/schedule.rb +38 -22
  260. data/lib/puppet/type/service.rb +70 -326
  261. data/lib/puppet/type/sshkey.rb +76 -0
  262. data/lib/puppet/type/tidy.rb +197 -97
  263. data/lib/puppet/type/user.rb +107 -183
  264. data/lib/puppet/type/yumrepo.rb +53 -34
  265. data/lib/puppet/type/zone.rb +55 -208
  266. data/lib/puppet/util.rb +239 -201
  267. data/lib/puppet/util/autoload.rb +107 -0
  268. data/lib/puppet/util/classgen.rb +208 -0
  269. data/lib/puppet/{config.rb → util/config.rb} +102 -54
  270. data/lib/puppet/util/docs.rb +104 -0
  271. data/lib/puppet/util/errors.rb +55 -0
  272. data/lib/puppet/util/execution.rb +22 -0
  273. data/lib/puppet/util/feature.rb +76 -0
  274. data/lib/puppet/util/fileparsing.rb +380 -0
  275. data/lib/puppet/util/filetype.rb +300 -0
  276. data/lib/puppet/util/graph.rb +39 -0
  277. data/lib/puppet/util/inifile.rb +209 -0
  278. data/lib/puppet/util/loadedfile.rb +71 -0
  279. data/lib/puppet/util/log.rb +549 -0
  280. data/lib/puppet/util/logging.rb +20 -0
  281. data/lib/puppet/util/metaid.rb +22 -0
  282. data/lib/puppet/util/methodhelper.rb +37 -0
  283. data/lib/puppet/util/metric.rb +160 -0
  284. data/lib/puppet/util/package.rb +31 -0
  285. data/lib/puppet/util/pidlock.rb +68 -0
  286. data/lib/puppet/util/plist.rb +24 -0
  287. data/lib/puppet/util/plist/generator.rb +226 -0
  288. data/lib/puppet/util/plist/parser.rb +227 -0
  289. data/lib/puppet/util/posix.rb +87 -0
  290. data/lib/puppet/util/provider_features.rb +170 -0
  291. data/lib/puppet/util/rails/collection_merger.rb +42 -0
  292. data/lib/puppet/util/storage.rb +103 -0
  293. data/lib/puppet/util/subclass_loader.rb +83 -0
  294. data/lib/puppet/util/suidmanager.rb +86 -0
  295. data/lib/puppet/util/variables.rb +39 -0
  296. data/lib/puppet/util/warnings.rb +15 -0
  297. data/test/Rakefile +97 -0
  298. data/test/certmgr/ca.rb +81 -0
  299. data/test/certmgr/certmgr.rb +77 -50
  300. data/test/certmgr/inventory.rb +79 -0
  301. data/test/certmgr/support.rb +81 -0
  302. data/test/executables/filebucket.rb +49 -0
  303. data/test/executables/puppetbin.rb +28 -12
  304. data/test/executables/puppetca.rb +75 -54
  305. data/test/executables/puppetd.rb +10 -13
  306. data/test/executables/puppetmasterd.rb +12 -17
  307. data/test/executables/puppetmodule.rb +18 -17
  308. data/test/language/ast.rb +242 -798
  309. data/test/language/ast/casestatement.rb +104 -0
  310. data/test/language/ast/component.rb +133 -0
  311. data/test/language/ast/hostclass.rb +162 -0
  312. data/test/language/ast/selector.rb +62 -0
  313. data/test/language/ast/variable.rb +31 -0
  314. data/test/language/collector.rb +369 -0
  315. data/test/language/functions.rb +305 -18
  316. data/test/language/interpreter.rb +894 -125
  317. data/test/language/lexer.rb +98 -12
  318. data/test/language/node.rb +37 -53
  319. data/test/language/parser.rb +455 -148
  320. data/test/language/resource.rb +535 -0
  321. data/test/language/scope.rb +451 -561
  322. data/test/language/snippets.rb +101 -111
  323. data/test/language/transportable.rb +6 -8
  324. data/test/lib/mocha.rb +19 -0
  325. data/test/lib/mocha/any_instance_method.rb +35 -0
  326. data/test/lib/mocha/auto_verify.rb +113 -0
  327. data/test/lib/mocha/central.rb +35 -0
  328. data/test/lib/mocha/class_method.rb +62 -0
  329. data/test/lib/mocha/expectation.rb +295 -0
  330. data/test/lib/mocha/expectation_error.rb +6 -0
  331. data/test/lib/mocha/infinite_range.rb +27 -0
  332. data/test/lib/mocha/inspect.rb +37 -0
  333. data/test/lib/mocha/instance_method.rb +8 -0
  334. data/test/lib/mocha/metaclass.rb +7 -0
  335. data/test/lib/mocha/mock.rb +20 -0
  336. data/test/lib/mocha/mock_methods.rb +122 -0
  337. data/test/lib/mocha/object.rb +100 -0
  338. data/test/lib/mocha/pretty_parameters.rb +28 -0
  339. data/test/lib/mocha/setup_and_teardown.rb +23 -0
  340. data/test/lib/mocha/standalone.rb +30 -0
  341. data/test/lib/mocha/test_case_adapter.rb +49 -0
  342. data/test/lib/mocha_standalone.rb +2 -0
  343. data/test/lib/puppettest.rb +294 -0
  344. data/test/lib/puppettest/certificates.rb +61 -0
  345. data/test/lib/puppettest/exetest.rb +123 -0
  346. data/test/lib/puppettest/fakes.rb +194 -0
  347. data/test/lib/puppettest/fileparsing.rb +33 -0
  348. data/test/lib/puppettest/filetesting.rb +231 -0
  349. data/test/lib/puppettest/graph.rb +41 -0
  350. data/test/lib/puppettest/parsertesting.rb +392 -0
  351. data/test/lib/puppettest/railstesting.rb +56 -0
  352. data/test/lib/puppettest/reporttesting.rb +19 -0
  353. data/test/lib/puppettest/resourcetesting.rb +73 -0
  354. data/test/lib/puppettest/servertest.rb +72 -0
  355. data/test/lib/puppettest/support.rb +8 -0
  356. data/test/lib/puppettest/support/assertions.rb +101 -0
  357. data/test/lib/puppettest/support/helpers.rb +23 -0
  358. data/test/lib/puppettest/support/resources.rb +37 -0
  359. data/test/lib/puppettest/support/utils.rb +160 -0
  360. data/test/lib/puppettest/testcase.rb +48 -0
  361. data/test/lib/rake/puppet_test_loader.rb +17 -0
  362. data/test/lib/rake/puppet_testtask.rb +17 -0
  363. data/test/lib/spec.rb +8 -0
  364. data/test/lib/spec/callback.rb +11 -0
  365. data/test/lib/spec/callback/callback_container.rb +60 -0
  366. data/test/lib/spec/callback/extensions/module.rb +24 -0
  367. data/test/lib/spec/callback/extensions/object.rb +37 -0
  368. data/test/lib/spec/deprecated.rb +3 -0
  369. data/test/lib/spec/expectations.rb +59 -0
  370. data/test/lib/spec/expectations/differs/default.rb +62 -0
  371. data/test/lib/spec/expectations/errors.rb +6 -0
  372. data/test/lib/spec/expectations/extensions.rb +3 -0
  373. data/test/lib/spec/expectations/extensions/object.rb +109 -0
  374. data/test/lib/spec/expectations/extensions/proc.rb +57 -0
  375. data/test/lib/spec/expectations/extensions/string_and_symbol.rb +17 -0
  376. data/test/lib/spec/expectations/handler.rb +47 -0
  377. data/test/lib/spec/expectations/should.rb +5 -0
  378. data/test/lib/spec/expectations/should/base.rb +64 -0
  379. data/test/lib/spec/expectations/should/change.rb +69 -0
  380. data/test/lib/spec/expectations/should/have.rb +128 -0
  381. data/test/lib/spec/expectations/should/not.rb +74 -0
  382. data/test/lib/spec/expectations/should/should.rb +81 -0
  383. data/test/lib/spec/expectations/sugar.rb +47 -0
  384. data/test/lib/spec/matchers.rb +160 -0
  385. data/test/lib/spec/matchers/be.rb +161 -0
  386. data/test/lib/spec/matchers/be_close.rb +37 -0
  387. data/test/lib/spec/matchers/change.rb +120 -0
  388. data/test/lib/spec/matchers/eql.rb +43 -0
  389. data/test/lib/spec/matchers/equal.rb +43 -0
  390. data/test/lib/spec/matchers/has.rb +44 -0
  391. data/test/lib/spec/matchers/have.rb +140 -0
  392. data/test/lib/spec/matchers/include.rb +50 -0
  393. data/test/lib/spec/matchers/match.rb +41 -0
  394. data/test/lib/spec/matchers/raise_error.rb +100 -0
  395. data/test/lib/spec/matchers/respond_to.rb +35 -0
  396. data/test/lib/spec/matchers/satisfy.rb +47 -0
  397. data/test/lib/spec/matchers/throw_symbol.rb +75 -0
  398. data/test/lib/spec/mocks.rb +232 -0
  399. data/test/lib/spec/mocks/argument_expectation.rb +132 -0
  400. data/test/lib/spec/mocks/error_generator.rb +85 -0
  401. data/test/lib/spec/mocks/errors.rb +10 -0
  402. data/test/lib/spec/mocks/extensions/object.rb +3 -0
  403. data/test/lib/spec/mocks/message_expectation.rb +231 -0
  404. data/test/lib/spec/mocks/methods.rb +40 -0
  405. data/test/lib/spec/mocks/mock.rb +26 -0
  406. data/test/lib/spec/mocks/mock_handler.rb +166 -0
  407. data/test/lib/spec/mocks/order_group.rb +29 -0
  408. data/test/lib/spec/rake/spectask.rb +173 -0
  409. data/test/lib/spec/rake/verify_rcov.rb +47 -0
  410. data/test/lib/spec/runner.rb +132 -0
  411. data/test/lib/spec/runner/backtrace_tweaker.rb +55 -0
  412. data/test/lib/spec/runner/command_line.rb +34 -0
  413. data/test/lib/spec/runner/context.rb +154 -0
  414. data/test/lib/spec/runner/context_eval.rb +142 -0
  415. data/test/lib/spec/runner/context_runner.rb +55 -0
  416. data/test/lib/spec/runner/drb_command_line.rb +21 -0
  417. data/test/lib/spec/runner/execution_context.rb +17 -0
  418. data/test/lib/spec/runner/extensions/kernel.rb +17 -0
  419. data/test/lib/spec/runner/extensions/object.rb +32 -0
  420. data/test/lib/spec/runner/formatter.rb +5 -0
  421. data/test/lib/spec/runner/formatter/base_text_formatter.rb +118 -0
  422. data/test/lib/spec/runner/formatter/html_formatter.rb +219 -0
  423. data/test/lib/spec/runner/formatter/progress_bar_formatter.rb +27 -0
  424. data/test/lib/spec/runner/formatter/rdoc_formatter.rb +22 -0
  425. data/test/lib/spec/runner/formatter/specdoc_formatter.rb +23 -0
  426. data/test/lib/spec/runner/heckle_runner.rb +71 -0
  427. data/test/lib/spec/runner/heckle_runner_win.rb +10 -0
  428. data/test/lib/spec/runner/option_parser.rb +224 -0
  429. data/test/lib/spec/runner/reporter.rb +105 -0
  430. data/test/lib/spec/runner/spec_matcher.rb +25 -0
  431. data/test/lib/spec/runner/spec_parser.rb +41 -0
  432. data/test/lib/spec/runner/spec_should_raise_handler.rb +74 -0
  433. data/test/lib/spec/runner/specification.rb +114 -0
  434. data/test/lib/spec/translator.rb +87 -0
  435. data/test/lib/spec/version.rb +30 -0
  436. data/test/lib/stubba.rb +2 -0
  437. data/test/network/authconfig.rb +72 -0
  438. data/test/network/authorization.rb +138 -0
  439. data/test/network/authstore.rb +450 -0
  440. data/test/network/client/ca.rb +38 -0
  441. data/test/{client → network/client}/client.rb +107 -24
  442. data/test/network/client/dipper.rb +35 -0
  443. data/test/network/client/master.rb +627 -0
  444. data/test/{client/pelement.rb → network/client/resource.rb} +13 -29
  445. data/test/network/client_request.rb +39 -0
  446. data/test/network/daemon.rb +71 -0
  447. data/test/{server → network/handler}/bucket.rb +103 -27
  448. data/test/{server → network/handler}/ca.rb +14 -19
  449. data/test/{server → network/handler}/fileserver.rb +443 -68
  450. data/test/network/handler/handler.rb +64 -0
  451. data/test/{server → network/handler}/logger.rb +26 -26
  452. data/test/network/handler/master.rb +352 -0
  453. data/test/network/handler/report.rb +185 -0
  454. data/test/{server/pelement.rb → network/handler/resource.rb} +25 -38
  455. data/test/{server → network/handler}/runner.rb +17 -16
  456. data/test/network/rights.rb +38 -0
  457. data/test/network/server/webrick.rb +140 -0
  458. data/test/network/xmlrpc/client.rb +68 -0
  459. data/test/network/xmlrpc/processor.rb +80 -0
  460. data/test/network/xmlrpc/server.rb +28 -0
  461. data/test/network/xmlrpc/webrick_servlet.rb +26 -0
  462. data/test/other/dsl.rb +218 -0
  463. data/test/other/events.rb +22 -15
  464. data/test/other/overrides.rb +9 -14
  465. data/test/other/pgraph.rb +289 -0
  466. data/test/other/propertychange.rb +142 -0
  467. data/test/other/provider.rb +162 -0
  468. data/test/other/puppet.rb +63 -10
  469. data/test/other/relationship.rb +74 -0
  470. data/test/other/relationships.rb +199 -123
  471. data/test/other/report.rb +152 -23
  472. data/test/other/transactions.rb +824 -78
  473. data/test/puppet/conffiles.rb +16 -11
  474. data/test/puppet/defaults.rb +7 -10
  475. data/test/puppet/{error.rb → errortest.rb} +5 -8
  476. data/test/puppet/modules.rb +58 -0
  477. data/test/puppet/tc_suidmanager.rb +107 -0
  478. data/test/rails/host.rb +177 -0
  479. data/test/rails/rails.rb +27 -0
  480. data/test/rails/railsparameter.rb +62 -0
  481. data/test/rails/railsresource.rb +100 -0
  482. data/test/ral/manager/attributes.rb +296 -0
  483. data/test/ral/manager/manager.rb +55 -0
  484. data/test/ral/manager/provider.rb +54 -0
  485. data/test/ral/manager/type.rb +837 -0
  486. data/test/ral/providers/cron/crontab.rb +346 -0
  487. data/test/ral/providers/group.rb +252 -0
  488. data/test/ral/providers/host/netinfo.rb +58 -0
  489. data/test/ral/providers/host/parsed.rb +226 -0
  490. data/test/ral/providers/mount/netinfo.rb +80 -0
  491. data/test/ral/providers/mount/parsed.rb +223 -0
  492. data/test/ral/providers/nameservice.rb +33 -0
  493. data/test/ral/providers/package.rb +253 -0
  494. data/test/ral/providers/package/apt.rb +89 -0
  495. data/test/ral/providers/package/aptitude.rb +69 -0
  496. data/test/ral/providers/package/aptrpm.rb +89 -0
  497. data/test/ral/providers/package/dpkg.rb +64 -0
  498. data/test/ral/providers/parsedfile.rb +668 -0
  499. data/test/ral/providers/parsedport.rb +233 -0
  500. data/test/ral/providers/provider.rb +423 -0
  501. data/test/{types → ral/providers}/service.rb +20 -121
  502. data/test/ral/providers/service/base.rb +75 -0
  503. data/test/ral/providers/sshkey/parsed.rb +111 -0
  504. data/test/ral/providers/user.rb +567 -0
  505. data/test/ral/providers/user/useradd.rb +250 -0
  506. data/test/ral/types/basic.rb +90 -0
  507. data/test/ral/types/component.rb +113 -0
  508. data/test/ral/types/cron.rb +480 -0
  509. data/test/{types → ral/types}/exec.rb +278 -82
  510. data/test/ral/types/file.rb +1799 -0
  511. data/test/ral/types/file/target.rb +363 -0
  512. data/test/{types → ral/types}/filebucket.rb +15 -17
  513. data/test/{types → ral/types}/fileignoresource.rb +9 -15
  514. data/test/ral/types/filesources.rb +1046 -0
  515. data/test/ral/types/group.rb +169 -0
  516. data/test/ral/types/host.rb +155 -0
  517. data/test/ral/types/mount.rb +312 -0
  518. data/test/ral/types/package.rb +85 -0
  519. data/test/ral/types/parameter.rb +172 -0
  520. data/test/ral/types/port.rb +148 -0
  521. data/test/ral/types/property.rb +343 -0
  522. data/test/ral/types/resources.rb +221 -0
  523. data/test/{types → ral/types}/schedule.rb +34 -12
  524. data/test/ral/types/service.rb +37 -0
  525. data/test/{types → ral/types}/sshkey.rb +75 -65
  526. data/test/ral/types/tidy.rb +240 -0
  527. data/test/ral/types/user.rb +493 -0
  528. data/test/{types → ral/types}/yumrepo.rb +7 -11
  529. data/test/{types → ral/types}/zone.rb +45 -45
  530. data/test/tagging/tagging.rb +17 -26
  531. data/test/util/autoload.rb +130 -0
  532. data/test/util/classgen.rb +227 -0
  533. data/test/{other → util}/config.rb +373 -113
  534. data/test/util/execution.rb +34 -0
  535. data/test/util/features.rb +94 -0
  536. data/test/util/fileparsing.rb +677 -0
  537. data/test/{other → util}/filetype.rb +9 -12
  538. data/test/util/graph.rb +108 -0
  539. data/test/{other → util}/inifile.rb +24 -11
  540. data/test/util/loadedfile.rb +106 -0
  541. data/test/{other → util}/log.rb +96 -50
  542. data/test/{other → util}/metrics.rb +7 -17
  543. data/test/util/package.rb +27 -0
  544. data/test/util/pidlock.rb +126 -0
  545. data/test/util/posixtest.rb +173 -0
  546. data/test/util/storage.rb +123 -0
  547. data/test/util/subclass_loader.rb +100 -0
  548. data/test/util/utiltest.rb +368 -0
  549. metadata +449 -169
  550. data/examples/code/classing +0 -35
  551. data/examples/code/failers/badclassnoparam +0 -10
  552. data/examples/code/failers/badclassparam +0 -10
  553. data/examples/code/failers/badcompnoparam +0 -9
  554. data/examples/code/failers/badcompparam +0 -9
  555. data/examples/code/failers/badtypeparam +0 -3
  556. data/examples/code/failers/noobjectrvalue +0 -1
  557. data/examples/code/snippets/aliastest.pp +0 -16
  558. data/examples/code/snippets/argumentdefaults +0 -14
  559. data/examples/code/snippets/casestatement.pp +0 -58
  560. data/examples/code/snippets/classheirarchy.pp +0 -15
  561. data/examples/code/snippets/classincludes.pp +0 -17
  562. data/examples/code/snippets/classpathtest +0 -11
  563. data/examples/code/snippets/componentmetaparams.pp +0 -11
  564. data/examples/code/snippets/deepclassheirarchy.pp +0 -23
  565. data/examples/code/snippets/defineoverrides.pp +0 -17
  566. data/examples/code/snippets/dirchmod +0 -19
  567. data/examples/code/snippets/emptyclass.pp +0 -9
  568. data/examples/code/snippets/emptyexec.pp +0 -3
  569. data/examples/code/snippets/failmissingexecpath.pp +0 -13
  570. data/examples/code/snippets/falsevalues.pp +0 -3
  571. data/examples/code/snippets/filecreate +0 -11
  572. data/examples/code/snippets/implicititeration +0 -15
  573. data/examples/code/snippets/multipleinstances +0 -7
  574. data/examples/code/snippets/namevartest +0 -9
  575. data/examples/code/snippets/scopetest +0 -13
  576. data/examples/code/snippets/selectorvalues.pp +0 -42
  577. data/examples/code/snippets/simpledefaults +0 -5
  578. data/examples/code/snippets/simpleselector +0 -38
  579. data/examples/code/snippets/singleary.pp +0 -19
  580. data/examples/code/snippets/singlequote.pp +0 -11
  581. data/examples/code/snippets/singleselector.pp +0 -22
  582. data/examples/code/snippets/tag.pp +0 -9
  583. data/examples/code/snippets/tagged.pp +0 -35
  584. data/lib/puppet/client.rb +0 -177
  585. data/lib/puppet/client/ca.rb +0 -21
  586. data/lib/puppet/client/dipper.rb +0 -76
  587. data/lib/puppet/client/file.rb +0 -20
  588. data/lib/puppet/client/log.rb +0 -17
  589. data/lib/puppet/client/master.rb +0 -531
  590. data/lib/puppet/client/runner.rb +0 -17
  591. data/lib/puppet/client/status.rb +0 -7
  592. data/lib/puppet/event-loop.rb +0 -1
  593. data/lib/puppet/filetype.rb +0 -308
  594. data/lib/puppet/inifile.rb +0 -201
  595. data/lib/puppet/log.rb +0 -524
  596. data/lib/puppet/metric.rb +0 -132
  597. data/lib/puppet/networkclient.rb +0 -175
  598. data/lib/puppet/parsedfile.rb +0 -58
  599. data/lib/puppet/parser/ast/classdef.rb +0 -79
  600. data/lib/puppet/parser/ast/compdef.rb +0 -75
  601. data/lib/puppet/parser/ast/nodedef.rb +0 -73
  602. data/lib/puppet/parser/ast/objectdef.rb +0 -284
  603. data/lib/puppet/parser/ast/objectref.rb +0 -77
  604. data/lib/puppet/rails/database.rb +0 -40
  605. data/lib/puppet/rails/rails_object.rb +0 -42
  606. data/lib/puppet/rails/rails_parameter.rb +0 -5
  607. data/lib/puppet/server.rb +0 -196
  608. data/lib/puppet/server/authconfig.rb +0 -177
  609. data/lib/puppet/server/authstore.rb +0 -226
  610. data/lib/puppet/server/filebucket.rb +0 -155
  611. data/lib/puppet/server/pelement.rb +0 -188
  612. data/lib/puppet/server/report.rb +0 -184
  613. data/lib/puppet/server/rights.rb +0 -78
  614. data/lib/puppet/server/servlet.rb +0 -274
  615. data/lib/puppet/statechange.rb +0 -129
  616. data/lib/puppet/storage.rb +0 -98
  617. data/lib/puppet/type/nameservice.rb +0 -264
  618. data/lib/puppet/type/nameservice/netinfo.rb +0 -232
  619. data/lib/puppet/type/nameservice/objectadd.rb +0 -146
  620. data/lib/puppet/type/nameservice/posix.rb +0 -12
  621. data/lib/puppet/type/nameservice/pw.rb +0 -107
  622. data/lib/puppet/type/package/apple.rb +0 -41
  623. data/lib/puppet/type/package/apt.rb +0 -107
  624. data/lib/puppet/type/package/blastwave.rb +0 -136
  625. data/lib/puppet/type/package/darwinport.rb +0 -97
  626. data/lib/puppet/type/package/dpkg.rb +0 -113
  627. data/lib/puppet/type/package/freebsd.rb +0 -19
  628. data/lib/puppet/type/package/gem.rb +0 -119
  629. data/lib/puppet/type/package/openbsd.rb +0 -112
  630. data/lib/puppet/type/package/ports.rb +0 -103
  631. data/lib/puppet/type/package/rpm.rb +0 -121
  632. data/lib/puppet/type/package/sun.rb +0 -174
  633. data/lib/puppet/type/package/sunfreeware.rb +0 -7
  634. data/lib/puppet/type/package/yum.rb +0 -52
  635. data/lib/puppet/type/parsedtype/host.rb +0 -144
  636. data/lib/puppet/type/parsedtype/mount.rb +0 -271
  637. data/lib/puppet/type/parsedtype/port.rb +0 -261
  638. data/lib/puppet/type/parsedtype/sshkey.rb +0 -123
  639. data/lib/puppet/type/service/base.rb +0 -12
  640. data/lib/puppet/type/service/debian.rb +0 -46
  641. data/lib/puppet/type/service/redhat.rb +0 -38
  642. data/lib/puppet/type/state.rb +0 -393
  643. data/lib/puppet/type/symlink.rb +0 -186
  644. data/test/client/master.rb +0 -207
  645. data/test/language/rails.rb +0 -105
  646. data/test/other/parsedfile.rb +0 -58
  647. data/test/other/storage.rb +0 -100
  648. data/test/puppet/utiltest.rb +0 -299
  649. data/test/puppettest.rb +0 -1170
  650. data/test/server/authconfig.rb +0 -56
  651. data/test/server/authstore.rb +0 -218
  652. data/test/server/master.rb +0 -201
  653. data/test/server/report.rb +0 -93
  654. data/test/server/rights.rb +0 -41
  655. data/test/server/server.rb +0 -152
  656. data/test/test +0 -61
  657. data/test/types/basic.rb +0 -117
  658. data/test/types/component.rb +0 -298
  659. data/test/types/cron.rb +0 -718
  660. data/test/types/file.rb +0 -1314
  661. data/test/types/filesources.rb +0 -590
  662. data/test/types/group.rb +0 -323
  663. data/test/types/host.rb +0 -186
  664. data/test/types/mount.rb +0 -294
  665. data/test/types/package.rb +0 -538
  666. data/test/types/parameter.rb +0 -107
  667. data/test/types/port.rb +0 -201
  668. data/test/types/query.rb +0 -101
  669. data/test/types/state.rb +0 -92
  670. data/test/types/symlink.rb +0 -120
  671. data/test/types/tidy.rb +0 -102
  672. data/test/types/type.rb +0 -469
  673. data/test/types/user.rb +0 -563
@@ -3,9 +3,14 @@
3
3
  # This state never actually modifies the system, it only notices when the system
4
4
  # changes on its own.
5
5
  module Puppet
6
- Puppet.type(:file).newstate(:checksum) do
7
- desc "How to check whether a file has changed. **md5**/*lite-md5*/
8
- *time*/*mtime*"
6
+ Puppet.type(:file).newproperty(:checksum) do
7
+ desc "How to check whether a file has changed. This state is used internally
8
+ for file copying, but it can also be used to monitor files somewhat
9
+ like Tripwire without managing the file contents in any way. You can
10
+ specify that a file's checksum should be monitored and then subscribe to
11
+ the file from another object and receive events to signify
12
+ checksum changes, for instance."
13
+
9
14
  @event = :file_changed
10
15
 
11
16
  @unmanaged = true
@@ -24,6 +29,8 @@ module Puppet
24
29
 
25
30
  str = @validtypes.join("|")
26
31
 
32
+ # This is here because Puppet sets this internally, using
33
+ # {md5}......
27
34
  newvalue(/^\{#{str}\}/) do
28
35
  handlesum()
29
36
  end
@@ -33,50 +40,75 @@ module Puppet
33
40
  :nochange
34
41
  end
35
42
 
36
- # Convert from the sum type to the stored checksum.
43
+ # If they pass us a sum type, behave normally, but if they pass
44
+ # us a sum type + sum, stick the sum in the cache.
37
45
  munge do |value|
38
- unless defined? @checktypes
39
- @checktypes = []
40
- end
41
-
42
46
  if value =~ /^\{(\w+)\}(.+)$/
43
- @checktypes << $1
44
- #return $2
45
- return value
47
+ type = symbolize($1)
48
+ sum = $2
49
+ cache(type, sum)
50
+ return type
46
51
  else
47
52
  if FileTest.directory?(@parent[:path])
48
- value = "time"
53
+ return :time
54
+ else
55
+ return symbolize(value)
49
56
  end
50
- value = super(value)
51
- @checktypes << value
52
- return getcachedsum()
53
57
  end
54
58
  end
55
59
 
56
- def checktype
57
- @checktypes[0]
60
+ # Store the checksum in the data cache, or retrieve it if only the
61
+ # sum type is provided.
62
+ def cache(type, sum = nil)
63
+ unless type
64
+ raise ArgumentError, "A type must be specified to cache a checksum"
65
+ end
66
+ type = symbolize(type)
67
+ unless state = @parent.cached(:checksums)
68
+ self.debug "Initializing checksum hash"
69
+ state = {}
70
+ @parent.cache(:checksums, state)
71
+ end
72
+
73
+ if sum
74
+ unless sum =~ /\{\w+\}/
75
+ sum = "{%s}%s" % [type, sum]
76
+ end
77
+ state[type] = sum
78
+ else
79
+ return state[type]
80
+ end
58
81
  end
59
82
 
60
83
  # Because source and content and whomever else need to set the checksum
61
84
  # and do the updating, we provide a simple mechanism for doing so.
62
85
  def checksum=(value)
63
86
  @is = value
64
- @should = [value]
87
+ munge(@should)
65
88
  self.updatesum
66
89
  end
67
90
 
91
+ def checktype
92
+ self.should || :md5
93
+ end
94
+
68
95
  # Checksums need to invert how changes are printed.
69
96
  def change_to_s
70
97
  begin
71
98
  if @is == :absent
72
99
  return "defined '%s' as '%s'" %
73
- [self.name, self.should_to_s]
100
+ [self.name, self.currentsum]
74
101
  elsif self.should == :absent
75
102
  return "undefined %s from '%s'" %
76
103
  [self.name, self.is_to_s]
77
104
  else
78
- return "%s changed '%s' to '%s'" %
79
- [self.name, self.should_to_s, self.is_to_s]
105
+ if defined? @cached and @cached
106
+ return "%s changed '%s' to '%s'" %
107
+ [self.name, @cached, self.is_to_s]
108
+ else
109
+ return "%s changed '%s' to '%s'" %
110
+ [self.name, self.currentsum, self.is_to_s]
111
+ end
80
112
  end
81
113
  rescue Puppet::Error, Puppet::DevError
82
114
  raise
@@ -86,6 +118,11 @@ module Puppet
86
118
  end
87
119
  end
88
120
 
121
+ def currentsum
122
+ #"{%s}%s" % [self.should, cache(self.should)]
123
+ cache(checktype())
124
+ end
125
+
89
126
  # Retrieve the cached sum
90
127
  def getcachedsum
91
128
  hash = nil
@@ -94,11 +131,7 @@ module Puppet
94
131
  @parent.cache(:checksums, hash)
95
132
  end
96
133
 
97
- sumtype = @checktypes[0]
98
-
99
- #unless state
100
- # self.devfail "Did not get state back from Storage"
101
- #end
134
+ sumtype = self.should
102
135
 
103
136
  if hash.include?(sumtype)
104
137
  #self.notice "Found checksum %s for %s" %
@@ -126,14 +159,10 @@ module Puppet
126
159
  checktype = checktype.intern if checktype.is_a? String
127
160
  case checktype
128
161
  when :md5, :md5lite:
129
- unless FileTest.file?(@parent[:path])
130
- @parent.info "Cannot MD5 sum directory %s" %
131
- @parent[:path]
132
-
133
- @should = [nil]
134
- @is = nil
135
- #@parent.delete(self[:path])
136
- return
162
+ if ! FileTest.file?(@parent[:path])
163
+ @parent.debug "Cannot MD5 sum %s; using mtime" %
164
+ [@parent.stat.ftype]
165
+ sum = @parent.stat.mtime.to_s
137
166
  else
138
167
  begin
139
168
  File.open(@parent[:path]) { |file|
@@ -158,7 +187,7 @@ module Puppet
158
187
  @parent[:path]
159
188
  @parent.delete(self.class.name)
160
189
  rescue => detail
161
- self.notice "Cannot checksum %s: %s" %
190
+ self.notice "Cannot checksum: %s" %
162
191
  detail
163
192
  @parent.delete(self.class.name)
164
193
  end
@@ -174,7 +203,6 @@ module Puppet
174
203
  end
175
204
 
176
205
  return "{#{checktype}}" + sum.to_s
177
- #return sum.to_s
178
206
  end
179
207
 
180
208
  # At this point, we don't actually modify the system, we modify
@@ -183,7 +211,7 @@ module Puppet
183
211
  def handlesum
184
212
  if @is.nil?
185
213
  raise Puppet::Error, "Checksum state for %s is somehow nil" %
186
- @parent.name
214
+ @parent.title
187
215
  end
188
216
 
189
217
  if @is == :absent
@@ -201,7 +229,7 @@ module Puppet
201
229
  if @is == :absent
202
230
  # if they're copying, then we won't worry about the file
203
231
  # not existing yet
204
- unless @parent.state(:source)
232
+ unless @parent.property(:source)
205
233
  self.warning(
206
234
  "File %s does not exist -- cannot checksum" %
207
235
  @parent[:path]
@@ -219,6 +247,17 @@ module Puppet
219
247
  end
220
248
  end
221
249
 
250
+ def insync?
251
+ @should = [checktype]
252
+ if cache(checktype())
253
+ return @is == currentsum()
254
+ else
255
+ # If there's no cached sum, then we don't want to generate
256
+ # an event.
257
+ return true
258
+ end
259
+ end
260
+
222
261
  # Even though they can specify multiple checksums, the insync?
223
262
  # mechanism can really only test against one, so we'll just retrieve
224
263
  # the first specified sum type.
@@ -229,10 +268,6 @@ module Puppet
229
268
  return @is
230
269
  end
231
270
 
232
- unless defined? @checktypes
233
- @checktypes = ["md5"]
234
- end
235
-
236
271
  stat = nil
237
272
  unless stat = @parent.stat
238
273
  self.is = :absent
@@ -242,29 +277,18 @@ module Puppet
242
277
  if stat.ftype == "link" and @parent[:links] != :follow
243
278
  self.debug "Not checksumming symlink"
244
279
  #@parent.delete(:checksum)
245
- self.is = self.should
280
+ self.is = self.currentsum
246
281
  return
247
282
  end
248
283
 
249
- if stat.ftype == "directory" and @checktypes[0] =~ /md5/
250
- @checktypes = ["time"]
251
- end
252
-
253
284
  # Just use the first allowed check type
254
- @is = getsum(@checktypes[0])
255
-
256
- # @should should always be set, so if it's not set at all, we
257
- # know we haven't looked in the cache yet.
258
- unless defined? @should and ! @should.nil?
259
- @should = [getcachedsum()]
260
- end
285
+ @is = getsum(checktype())
261
286
 
262
- # If there is no should defined, then store the current value
263
- # into the 'should' value, so that we're not marked as being
287
+ # If there is no sum defined, then store the current value
288
+ # into the cache, so that we're not marked as being
264
289
  # out of sync. We don't want to generate an event the first
265
290
  # time we get a sum.
266
- if @should == [:nosum]
267
- @should = [@is]
291
+ unless cache(checktype())
268
292
  # FIXME we should support an updatechecksums-like mechanism
269
293
  self.updatesum
270
294
  end
@@ -275,39 +299,42 @@ module Puppet
275
299
  # Store the new sum to the state db.
276
300
  def updatesum
277
301
  result = false
278
- state = nil
279
- unless state = @parent.cached(:checksums)
280
- self.debug "Initializing checksum hash for %s" % @parent.name
281
- state = {}
282
- @parent.cache(:checksums, state)
283
- end
284
302
 
285
303
  if @is.is_a?(Symbol)
286
- error = Puppet::Error.new("%s has invalid checksum" %
287
- @parent.name)
288
- raise error
304
+ raise Puppet::Error, "%s has invalid checksum" % @parent.title
289
305
  end
290
306
 
291
307
  # if we're replacing, vs. updating
292
- if state.include?(@checktypes[0])
293
- unless defined? @should
294
- raise Puppet::Error.new(
295
- ("@should is not initialized for %s, even though we " +
296
- "found a checksum") % @parent[:path]
297
- )
308
+ if sum = cache(checktype())
309
+ # unless defined? @should
310
+ # raise Puppet::Error.new(
311
+ # ("@should is not initialized for %s, even though we " +
312
+ # "found a checksum") % @parent[:path]
313
+ # )
314
+ # end
315
+
316
+ if @is == sum
317
+ return false
298
318
  end
319
+
320
+ #if cache(self.should) == @is
321
+ # raise Puppet::Error, "Got told to update same sum twice"
322
+ #end
299
323
  self.debug "Replacing %s checksum %s with %s" %
300
- [@parent.name, state[@checktypes[0]],@is]
324
+ [@parent.title, sum, @is]
301
325
  #@parent.debug "@is: %s; @should: %s" % [@is,@should]
302
326
  result = true
303
327
  else
304
328
  @parent.debug "Creating checksum %s" % @is
305
329
  result = false
306
330
  end
307
- state[@checktypes[0]] = @is
331
+
332
+ # Cache the sum so the log message can be right if possible.
333
+ @cached = sum
334
+ cache(checktype(), @is)
308
335
  return result
309
336
  end
310
337
  end
311
338
  end
312
339
 
313
- # $Id: checksum.rb 1147 2006-04-28 17:19:45Z luke $
340
+ # $Id: checksum.rb 2169 2007-02-07 06:47:10Z luke $
@@ -1,9 +1,9 @@
1
1
  module Puppet
2
- Puppet.type(:file).newstate(:content) do
3
- desc "Specify the contents of a file as a string. Newlines, tabs, and spaces
4
- can be specified using the escaped syntax (e.g., \\n for a newline). The
5
- primary purpose of this parameter is to provide a kind of limited
6
- templating:
2
+ Puppet.type(:file).newproperty(:content) do
3
+ desc "Specify the contents of a file as a string. Newlines, tabs, and
4
+ spaces can be specified using the escaped syntax (e.g., \\n for a
5
+ newline). The primary purpose of this parameter is to provide a
6
+ kind of limited templating::
7
7
 
8
8
  define resolve(nameserver1, nameserver2, domain, search) {
9
9
  $str = \"search $search
@@ -17,11 +17,17 @@ module Puppet
17
17
  }
18
18
  }
19
19
 
20
- Yes, it's very primitive, and it's useless for larger files, but it
21
- is mostly meant as a stopgap measure for simple cases."
20
+ This attribute is especially useful when used with
21
+ `PuppetTemplating templating`:trac:."
22
22
 
23
23
  def change_to_s
24
- "synced"
24
+ should = "{md5}" + Digest::MD5.hexdigest(self.should)
25
+ if @is == :absent
26
+ return "created file with contents %s" % should
27
+ else
28
+ is = "{md5}" + Digest::MD5.hexdigest(@is)
29
+ return "changed file contents from %s to %s" % [is, should]
30
+ end
25
31
  end
26
32
 
27
33
  # We should probably take advantage of existing md5 sums if they're there,
@@ -49,7 +55,7 @@ module Puppet
49
55
  rescue => detail
50
56
  @is = nil
51
57
  raise Puppet::Error, "Could not read %s: %s" %
52
- [@parent.name, detail]
58
+ [@parent.title, detail]
53
59
  end
54
60
  end
55
61
 
@@ -67,4 +73,4 @@ module Puppet
67
73
  end
68
74
  end
69
75
 
70
- # $Id: content.rb 1300 2006-06-19 19:12:54Z luke $
76
+ # $Id: content.rb 2408 2007-04-24 02:41:16Z luke $
@@ -2,19 +2,21 @@ module Puppet
2
2
  Puppet.type(:file).ensurable do
3
3
  require 'etc'
4
4
  desc "Whether to create files that don't currently exist.
5
- Possible values are *absent*, *present* (equivalent to *file*),
6
- *file*, and *directory*. Specifying 'absent' will delete the file,
7
- although currently this will not recursively delete directories.
5
+ Possible values are *absent*, *present* (equivalent to ``exists`` in
6
+ most file tests -- will match any form of file existence, and if the
7
+ file is missing will create an empty file), *file*, and
8
+ *directory*. Specifying ``absent`` will delete the file, although
9
+ currently this will not recursively delete directories.
8
10
 
9
11
  Anything other than those values will be considered to be a symlink.
10
- For instance, the following text creates a link:
12
+ For instance, the following text creates a link::
11
13
 
12
14
  # Useful on solaris
13
15
  file { \"/etc/inetd.conf\":
14
16
  ensure => \"/etc/inet/inetd.conf\"
15
17
  }
16
18
 
17
- You can make relative links:
19
+ You can make relative links::
18
20
 
19
21
  # Useful on solaris
20
22
  file { \"/etc/inetd.conf\":
@@ -30,7 +32,7 @@ module Puppet
30
32
  with directories corresponding to each directory
31
33
  and links corresponding to each file."
32
34
 
33
- # Most 'ensure' states have a default, but with files we, um, don't.
35
+ # Most 'ensure' properties have a default, but with files we, um, don't.
34
36
  nodefault
35
37
 
36
38
  newvalue(:absent) do
@@ -41,8 +43,8 @@ module Puppet
41
43
 
42
44
  newvalue(:file) do
43
45
  # Make sure we're not managing the content some other way
44
- if state = @parent.state(:content) or state = @parent.state(:source)
45
- state.sync
46
+ if property = (@parent.property(:content) || @parent.property(:source))
47
+ property.sync
46
48
  else
47
49
  @parent.write(false) { |f| f.flush }
48
50
  mode = @parent.should(:mode)
@@ -50,7 +52,12 @@ module Puppet
50
52
  return :file_created
51
53
  end
52
54
 
53
- aliasvalue(:present, :file)
55
+ #aliasvalue(:present, :file)
56
+ newvalue(:present) do
57
+ # Make a file if they want something, but this will match almost
58
+ # anything.
59
+ set_file
60
+ end
54
61
 
55
62
  newvalue(:directory) do
56
63
  mode = @parent.should(:mode)
@@ -60,7 +67,7 @@ module Puppet
60
67
  "Cannot create %s; parent directory %s does not exist" %
61
68
  [@parent[:path], parent]
62
69
  end
63
- Puppet::Util.asuser(@parent.asuser()) {
70
+ @parent.write_if_writable(parent) do
64
71
  if mode
65
72
  Puppet::Util.withumask(000) do
66
73
  Dir.mkdir(@parent[:path],mode)
@@ -68,22 +75,18 @@ module Puppet
68
75
  else
69
76
  Dir.mkdir(@parent[:path])
70
77
  end
71
- }
78
+ end
79
+ @parent.send(:property_fix)
72
80
  @parent.setchecksum
73
81
  return :directory_created
74
82
  end
75
83
 
76
84
 
77
85
  newvalue(:link) do
78
- if state = @parent.state(:target)
79
- state.retrieve
86
+ if property = @parent.property(:target)
87
+ property.retrieve
80
88
 
81
- if state.linkmaker
82
- self.set_directory
83
- return :directory_created
84
- else
85
- return state.mklink
86
- end
89
+ return property.mklink
87
90
  else
88
91
  self.fail "Cannot create a symlink without a target"
89
92
  end
@@ -105,6 +108,14 @@ module Puppet
105
108
  return :link
106
109
  end
107
110
 
111
+ def change_to_s
112
+ if property = (@parent.property(:content) || @parent.property(:source)) and ! property.insync?
113
+ return property.change_to_s
114
+ else
115
+ super
116
+ end
117
+ end
118
+
108
119
  # Check that we can actually create anything
109
120
  def check
110
121
  basedir = File.dirname(@parent[:path])
@@ -112,11 +123,25 @@ module Puppet
112
123
  if ! FileTest.exists?(basedir)
113
124
  raise Puppet::Error,
114
125
  "Can not create %s; parent directory does not exist" %
115
- @parent.name
126
+ @parent.title
116
127
  elsif ! FileTest.directory?(basedir)
117
128
  raise Puppet::Error,
118
129
  "Can not create %s; %s is not a directory" %
119
- [@parent.name, dirname]
130
+ [@parent.title, dirname]
131
+ end
132
+ end
133
+
134
+ # We have to treat :present specially, because it works with any
135
+ # type of file.
136
+ def insync?
137
+ if self.should == :present
138
+ if @is.nil? or @is == :absent
139
+ return false
140
+ else
141
+ return true
142
+ end
143
+ else
144
+ return super
120
145
  end
121
146
  end
122
147
 
@@ -133,23 +158,16 @@ module Puppet
133
158
  end
134
159
 
135
160
  def sync
136
- event = super
137
-
138
- # There are some cases where all of the work does not get done on
139
- # file creation, so we have to do some extra checking.
140
- @parent.each do |thing|
141
- next unless thing.is_a? Puppet::State
142
- next if thing == self
143
-
144
- thing.retrieve
145
- unless thing.insync?
146
- thing.sync
147
- end
161
+ @parent.remove_existing(self.should)
162
+ if self.should == :absent
163
+ return :file_removed
148
164
  end
149
165
 
166
+ event = super
167
+
150
168
  return event
151
169
  end
152
170
  end
153
171
  end
154
172
 
155
- # $Id: ensure.rb 1300 2006-06-19 19:12:54Z luke $
173
+ # $Id: ensure.rb 2408 2007-04-24 02:41:16Z luke $