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
@@ -0,0 +1,46 @@
1
+ # Model the environment that a node can operate in. This class just
2
+ # provides a simple wrapper for the functionality around environments.
3
+ class Puppet::Node::Environment
4
+ # Return the list of valid environments. Just looks them up in
5
+ # the settings.
6
+ def self.valid
7
+ Puppet.settings.value(:environments).split(",").collect { |e| e.to_sym }
8
+ end
9
+
10
+ # Is the provided environment valid?
11
+ def self.valid?(name)
12
+ return false if name.to_s == ""
13
+ valid.include?(name.to_sym)
14
+ end
15
+
16
+ @seen = {}
17
+
18
+ # Return an existing environment instance, or create a new one,
19
+ # validating the environment name.
20
+ def self.new(name = nil)
21
+ name ||= Puppet.settings.value(:environment)
22
+
23
+ raise ArgumentError, "Environment name must be specified" unless name
24
+
25
+ raise(ArgumentError, "'%s' is not a valid environment" % name) unless valid?(name)
26
+
27
+ symbol = name.to_sym
28
+
29
+ return @seen[symbol] if @seen[symbol]
30
+
31
+ obj = self.allocate
32
+ obj.send :initialize, symbol
33
+ @seen[symbol] = obj
34
+ end
35
+
36
+ attr_reader :name
37
+
38
+ # Return an environment-specific setting.
39
+ def [](param)
40
+ Puppet.settings.value(param, self.name)
41
+ end
42
+
43
+ def initialize(name)
44
+ @name = name
45
+ end
46
+ end
@@ -0,0 +1,36 @@
1
+ require 'puppet/node'
2
+ require 'puppet/indirector'
3
+
4
+ # Manage a given node's facts. This either accepts facts and stores them, or
5
+ # returns facts for a given node.
6
+ class Puppet::Node::Facts
7
+ # Set up indirection, so that nodes can be looked for in
8
+ # the node sources.
9
+ extend Puppet::Indirector
10
+
11
+ # Use the node source as the indirection terminus.
12
+ indirects :facts, :terminus_class => :facter
13
+
14
+ attr_accessor :name, :values
15
+
16
+ def initialize(name, values = {})
17
+ @name = name
18
+ @values = values
19
+
20
+ add_internal
21
+ end
22
+
23
+ private
24
+
25
+ # Add internal data to the facts for storage.
26
+ def add_internal
27
+ self.values[:_timestamp] = Time.now
28
+ end
29
+
30
+ # Strip out that internal data.
31
+ def strip_internal
32
+ newvals = values.dup
33
+ newvals.find_all { |name, value| name.to_s =~ /^_/ }.each { |name, value| newvals.delete(name) }
34
+ newvals
35
+ end
36
+ end
@@ -1,6 +1,7 @@
1
1
  require 'puppet/util/methodhelper'
2
2
  require 'puppet/util/log_paths'
3
3
  require 'puppet/util/logging'
4
+ require 'puppet/util/docs'
4
5
 
5
6
  class Puppet::Parameter
6
7
  include Puppet::Util
@@ -10,6 +11,7 @@ class Puppet::Parameter
10
11
  include Puppet::Util::MethodHelper
11
12
  class << self
12
13
  include Puppet::Util
14
+ include Puppet::Util::Docs
13
15
  attr_reader :validater, :munger, :name, :default, :required_features
14
16
  attr_accessor :metaparam
15
17
 
@@ -287,9 +289,6 @@ class Puppet::Parameter
287
289
  raise Puppet::DevError, "No resource set for %s" % self.class.name
288
290
  end
289
291
 
290
- # LAK 2007-05-09: Keep the @parent around for backward compatibility.
291
- #@parent = @resource
292
-
293
292
  if ! self.metaparam? and klass = Puppet::Type.metaparamclass(self.class.name)
294
293
  setup_shadow(klass)
295
294
  end
@@ -376,36 +375,37 @@ class Puppet::Parameter
376
375
  vals = self.class.values
377
376
  regs = self.class.regexes
378
377
 
379
- if regs.is_a? Hash # this is true on properties
380
- regs = regs.keys
381
- end
382
- if vals.empty? and regs.empty?
383
- # This parameter isn't using defined values to do its work.
384
- return
385
- end
378
+ # this is true on properties
379
+ regs = regs.keys if regs.is_a?(Hash)
380
+
381
+ # This parameter isn't using defined values to do its work.
382
+ return if vals.empty? and regs.empty?
383
+
386
384
  newval = value
387
- unless value.is_a?(Symbol)
388
- newval = value.to_s.intern
389
- end
385
+ newval = value.to_s.intern unless value.is_a?(Symbol)
390
386
 
391
- unless vals.include?(newval) or
392
- self.class.alias(newval) or
393
- self.class.match?(value) # We match the string, not the symbol
394
- str = "Invalid '%s' value %s. " %
395
- [self.class.name, value.inspect]
387
+ name = newval
396
388
 
397
- unless vals.empty?
398
- str += "Valid values are %s. " % vals.join(", ")
399
- end
389
+ unless vals.include?(newval) or name = self.class.alias(newval) or name = self.class.match?(value) # We match the string, not the symbol
390
+ str = "Invalid '%s' value %s. " %
391
+ [self.class.name, value.inspect]
400
392
 
401
- unless regs.empty?
402
- str += "Valid values match %s." % regs.collect { |r|
403
- r.to_s
404
- }.join(", ")
405
- end
393
+ unless vals.empty?
394
+ str += "Valid values are %s. " % vals.join(", ")
395
+ end
396
+
397
+ unless regs.empty?
398
+ str += "Valid values match %s." % regs.collect { |r|
399
+ r.to_s
400
+ }.join(", ")
401
+ end
406
402
 
407
- raise ArgumentError, str
403
+ raise ArgumentError, str
408
404
  end
405
+
406
+ # Now check for features.
407
+ name = name[0] if name.is_a?(Array) # This is true for regexes.
408
+ validate_features_per_value(name) if is_a?(Puppet::Property)
409
409
  end
410
410
 
411
411
  def remove
@@ -482,6 +482,12 @@ class Puppet::Parameter
482
482
  def to_s
483
483
  s = "Parameter(%s)" % self.name
484
484
  end
485
+
486
+ # Make sure that we've got all of the required features for a given value.
487
+ def validate_features_per_value(value)
488
+ if features = self.class.value_option(value, :required_features)
489
+ raise ArgumentError, "Provider must have features '%s' to set '%s' to '%s'" % [features, self.class.name, value] unless provider.satisfies?(features)
490
+ end
491
+ end
485
492
  end
486
493
 
487
- # $Id: parameter.rb 2647 2007-07-04 22:25:23Z luke $
@@ -117,4 +117,3 @@ end
117
117
 
118
118
  require 'puppet/parser/ast/leaf'
119
119
 
120
- # $Id: ast.rb 2742 2007-08-03 23:49:53Z luke $
@@ -21,45 +21,39 @@ class Puppet::Parser::AST
21
21
  # We basically always operate declaratively, and when we
22
22
  # do we need to evaluate the settor-like statements first. This
23
23
  # is basically variable and type-default declarations.
24
- if scope.declarative?
25
- # This is such a stupid hack. I've no real idea how to make a
26
- # "real" declarative language, so I hack it so it looks like
27
- # one, yay.
28
- settors = []
29
- others = []
24
+ # This is such a stupid hack. I've no real idea how to make a
25
+ # "real" declarative language, so I hack it so it looks like
26
+ # one, yay.
27
+ settors = []
28
+ others = []
30
29
 
31
- # Make a new array, so we don't have to deal with the details of
32
- # flattening and such
33
- items = []
34
-
35
- # First clean out any AST::ASTArrays
36
- @children.each { |child|
37
- if child.instance_of?(AST::ASTArray)
38
- child.each do |ac|
39
- if ac.class.settor?
40
- settors << ac
41
- else
42
- others << ac
43
- end
44
- end
45
- else
46
- if child.class.settor?
47
- settors << child
30
+ # Make a new array, so we don't have to deal with the details of
31
+ # flattening and such
32
+ items = []
33
+
34
+ # First clean out any AST::ASTArrays
35
+ @children.each { |child|
36
+ if child.instance_of?(AST::ASTArray)
37
+ child.each do |ac|
38
+ if ac.class.settor?
39
+ settors << ac
48
40
  else
49
- others << child
41
+ others << ac
50
42
  end
51
43
  end
52
- }
53
- rets = [settors, others].flatten.collect { |child|
54
- child.safeevaluate(:scope => scope)
55
- }
56
- return rets.reject { |o| o.nil? }
57
- else
58
- # If we're not declarative, just do everything in order.
59
- return @children.collect { |item|
60
- item.safeevaluate(:scope => scope)
61
- }.reject { |o| o.nil? }
62
- end
44
+ else
45
+ if child.class.settor?
46
+ settors << child
47
+ else
48
+ others << child
49
+ end
50
+ end
51
+ }
52
+
53
+ rets = [settors, others].flatten.collect { |child|
54
+ child.safeevaluate(:scope => scope)
55
+ }
56
+ return rets.reject { |o| o.nil? }
63
57
  end
64
58
 
65
59
  def push(*ary)
@@ -72,28 +66,11 @@ class Puppet::Parser::AST
72
66
 
73
67
  return self
74
68
  end
75
-
76
- # Convert to a string. Only used for printing the parse tree.
77
- def to_s
78
- return "[" + @children.collect { |child|
79
- child.to_s
80
- }.join(", ") + "]"
81
- end
82
-
83
- # Print the parse tree.
84
- def tree(indent = 0)
85
- #puts((AST.indent * indent) + self.pin)
86
- self.collect { |child|
87
- child.tree(indent)
88
- }.join("\n" + (AST.midline * (indent+1)) + "\n")
89
- end
90
69
  end
91
70
 
92
71
  # A simple container class, containing the parameters for an object.
93
72
  # Used for abstracting the grammar declarations. Basically unnecessary
94
73
  # except that I kept finding bugs because I had too many arrays that
95
74
  # meant completely different things.
96
- class ResourceInst < ASTArray; end
75
+ class ResourceInstance < ASTArray; end
97
76
  end
98
-
99
- # $Id: astarray.rb 1739 2006-10-06 03:13:15Z luke $
@@ -35,15 +35,5 @@ class Puppet::Parser::AST
35
35
  end
36
36
  }
37
37
  end
38
-
39
- # Pretty-print the parse tree.
40
- def tree(indent = 0)
41
- return ((@@indline * indent) +
42
- self.typewrap(self.pin)) + "\n" + self.collect { |child|
43
- child.tree(indent + 1)
44
- }.join("\n")
45
- end
46
38
  end
47
39
  end
48
-
49
- # $Id: branch.rb 1484 2006-08-22 23:34:40Z luke $
@@ -56,16 +56,5 @@ class Puppet::Parser::AST
56
56
  def evaluate(hash)
57
57
  return @statements.safeevaluate(hash)
58
58
  end
59
-
60
- def tree(indent = 0)
61
- rettree = [
62
- @value.tree(indent + 1),
63
- ((@@indline * indent) + self.typewrap(self.pin)),
64
- @statements.tree(indent + 1)
65
- ]
66
- return rettree.flatten.join("\n")
67
- end
68
59
  end
69
60
  end
70
-
71
- # $Id: caseopt.rb 2259 2007-03-06 19:03:05Z luke $
@@ -51,20 +51,8 @@ class Puppet::Parser::AST
51
51
  return retvalue
52
52
  end
53
53
 
54
- def tree(indent = 0)
55
- rettree = [
56
- @test.tree(indent + 1),
57
- ((@@indline * indent) + self.typewrap(self.pin)),
58
- @options.tree(indent + 1)
59
- ]
60
-
61
- return rettree.flatten.join("\n")
62
- end
63
-
64
54
  def each
65
55
  [@test,@options].each { |child| yield child }
66
56
  end
67
57
  end
68
58
  end
69
-
70
- # $Id: casestatement.rb 2259 2007-03-06 19:03:05Z luke $
@@ -20,11 +20,9 @@ class Collection < AST::Branch
20
20
 
21
21
  newcoll = Puppet::Parser::Collector.new(scope, @type, str, code, self.form)
22
22
 
23
- scope.newcollection(newcoll)
23
+ scope.compile.add_collection(newcoll)
24
24
 
25
25
  newcoll
26
26
  end
27
27
  end
28
28
  end
29
-
30
- # $Id: collection.rb 1805 2006-10-18 00:22:45Z luke $
@@ -77,5 +77,3 @@ class CollExpr < AST::Branch
77
77
  end
78
78
  end
79
79
  end
80
-
81
- # $Id: collexpr.rb 2714 2007-07-19 18:12:20Z luke $
@@ -4,7 +4,7 @@ class Puppet::Parser::AST
4
4
  # Evaluate the stored parse tree for a given component. This will
5
5
  # receive the arguments passed to the component and also the type and
6
6
  # name of the component.
7
- class Component < AST::Branch
7
+ class Definition < AST::Branch
8
8
  include Puppet::Util
9
9
  include Puppet::Util::Warnings
10
10
  include Puppet::Util::MethodHelper
@@ -27,78 +27,26 @@ class Puppet::Parser::AST
27
27
  false
28
28
  end
29
29
 
30
- def evaluate(hash)
31
- origscope = hash[:scope]
32
- title = hash[:title]
33
- args = symbolize_options(hash[:arguments] || {})
30
+ def evaluate(options)
31
+ origscope = options[:scope]
32
+ resource = options[:resource]
34
33
 
35
- name = args[:name] || title
36
-
37
- exported = hash[:exported]
38
- virtual = hash[:virtual]
39
-
40
- pscope = origscope
41
- scope = subscope(pscope, title)
42
-
43
- if virtual or origscope.virtual?
44
- scope.virtual = true
45
- end
46
-
47
- if exported or origscope.exported?
48
- scope.exported = true
49
- end
34
+ # Create a new scope.
35
+ scope = subscope(origscope, resource)
50
36
 
51
37
  # Additionally, add a tag for whatever kind of class
52
38
  # we are
53
39
  if @classname != "" and ! @classname.nil?
54
- @classname.split(/::/).each { |tag| scope.tag(tag) }
40
+ @classname.split(/::/).each { |tag| scope.resource.tag(tag) }
55
41
  end
56
42
 
57
- [name, title].each do |str|
43
+ [resource.name, resource.title].each do |str|
58
44
  unless str.nil? or str =~ /[^\w]/ or str == ""
59
- scope.tag(str)
45
+ scope.resource.tag(str)
60
46
  end
61
47
  end
62
48
 
63
- # define all of the arguments in our local scope
64
- if self.arguments
65
- # Verify that all required arguments are either present or
66
- # have been provided with defaults.
67
- self.arguments.each { |arg, default|
68
- arg = symbolize(arg)
69
- unless args.include?(arg)
70
- if defined? default and ! default.nil?
71
- default = default.safeevaluate :scope => scope
72
- args[arg] = default
73
- #Puppet.debug "Got default %s for %s in %s" %
74
- # [default.inspect, arg.inspect, @name.inspect]
75
- else
76
- parsefail "Must pass %s to %s of type %s" %
77
- [arg,title,@classname]
78
- end
79
- end
80
- }
81
- end
82
-
83
- # Set each of the provided arguments as variables in the
84
- # component's scope.
85
- args.each { |arg,value|
86
- unless validattr?(arg)
87
- parsefail "%s does not accept attribute %s" % [@classname, arg]
88
- end
89
-
90
- exceptwrap do
91
- scope.setvar(arg.to_s,args[arg])
92
- end
93
- }
94
-
95
- unless args.include? :title
96
- scope.setvar("title",title)
97
- end
98
-
99
- unless args.include? :name
100
- scope.setvar("name",name)
101
- end
49
+ set_resource_parameters(scope, resource)
102
50
 
103
51
  if self.code
104
52
  return self.code.safeevaluate(:scope => scope)
@@ -130,11 +78,9 @@ class Puppet::Parser::AST
130
78
  @arguments.each do |arg, defvalue|
131
79
  next unless Puppet::Type.metaparamclass(arg)
132
80
  if defvalue
133
- warnonce "%s is a metaparam; this value will inherit to all contained elements" % arg
81
+ warnonce "%s is a metaparam; this value will inherit to all contained resources" % arg
134
82
  else
135
- raise Puppet::ParseError,
136
- "%s is a metaparameter; please choose another name" %
137
- name
83
+ raise Puppet::ParseError, "%s is a metaparameter; please choose another parameter name in the %s definition" % [arg, self.classname]
138
84
  end
139
85
  end
140
86
  end
@@ -175,14 +121,15 @@ class Puppet::Parser::AST
175
121
  end
176
122
 
177
123
  # Create a new subscope in which to evaluate our code.
178
- def subscope(scope, name = nil)
124
+ def subscope(scope, resource)
179
125
  args = {
180
- :type => self.classname,
126
+ :resource => resource,
181
127
  :keyword => self.keyword,
182
- :namespace => self.namespace
128
+ :namespace => self.namespace,
129
+ :source => self
183
130
  }
184
131
 
185
- args[:name] = name if name
132
+ oldscope = scope
186
133
  scope = scope.newscope(args)
187
134
  scope.source = self
188
135
 
@@ -220,7 +167,46 @@ class Puppet::Parser::AST
220
167
  return false
221
168
  end
222
169
  end
170
+
171
+ private
172
+
173
+ # Set any arguments passed by the resource as variables in the scope.
174
+ def set_resource_parameters(scope, resource)
175
+ args = symbolize_options(resource.to_hash || {})
176
+
177
+ # Verify that all required arguments are either present or
178
+ # have been provided with defaults.
179
+ if self.arguments
180
+ self.arguments.each { |arg, default|
181
+ arg = symbolize(arg)
182
+ unless args.include?(arg)
183
+ if defined? default and ! default.nil?
184
+ default = default.safeevaluate :scope => scope
185
+ args[arg] = default
186
+ #Puppet.debug "Got default %s for %s in %s" %
187
+ # [default.inspect, arg.inspect, @name.inspect]
188
+ else
189
+ parsefail "Must pass %s to %s of type %s" %
190
+ [arg, resource.title, @classname]
191
+ end
192
+ end
193
+ }
194
+ end
195
+
196
+ # Set each of the provided arguments as variables in the
197
+ # definition's scope.
198
+ args.each { |arg,value|
199
+ unless validattr?(arg)
200
+ parsefail "%s does not accept attribute %s" % [@classname, arg]
201
+ end
202
+
203
+ exceptwrap do
204
+ scope.setvar(arg.to_s, args[arg])
205
+ end
206
+ }
207
+
208
+ scope.setvar("title", resource.title) unless args.include? :title
209
+ scope.setvar("name", resource.name) unless args.include? :name
210
+ end
223
211
  end
224
212
  end
225
-
226
- # $Id: component.rb 2742 2007-08-03 23:49:53Z luke $