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
@@ -51,7 +51,7 @@ class Puppet::Parser::Resource::Param
51
51
  #dev_warn if db_values.nil? || db_values.empty?
52
52
 
53
53
  values_to_remove(db_values).each { |remove_me|
54
- Puppet::Rails::ParamValue.delete(remove_me)
54
+ Puppet::Rails::ParamValue.delete(remove_me.id)
55
55
  }
56
56
  line_number = line_to_i()
57
57
  values_to_add(db_values).each { |add_me|
@@ -88,4 +88,3 @@ class Puppet::Parser::Resource::Param
88
88
  end
89
89
  end
90
90
 
91
- # $Id: param.rb 2742 2007-08-03 23:49:53Z luke $
@@ -1,9 +1,11 @@
1
+ require 'puppet/resource_reference'
2
+
1
3
  # A reference to a resource. Mostly just the type and title.
2
- class Puppet::Parser::Resource::Reference
4
+ class Puppet::Parser::Resource::Reference < Puppet::ResourceReference
3
5
  include Puppet::Util::MethodHelper
4
6
  include Puppet::Util::Errors
5
7
 
6
- attr_accessor :type, :title, :builtin, :file, :line, :scope
8
+ attr_accessor :builtin, :file, :line, :scope
7
9
 
8
10
  # Are we a builtin type?
9
11
  def builtin?
@@ -15,24 +17,39 @@ class Puppet::Parser::Resource::Reference
15
17
  end
16
18
  end
17
19
 
18
- self.builtin
20
+ @builtin
19
21
  end
20
22
 
21
23
  def builtintype
22
- if t = Puppet::Type.type(self.type) and t.name != :component
24
+ if t = Puppet::Type.type(self.type.downcase) and t.name != :component
23
25
  t
24
26
  else
25
27
  nil
26
28
  end
27
29
  end
28
30
 
29
- # Return the defined type for our obj.
31
+ # Return the defined type for our obj. This can return classes,
32
+ # definitions or nodes.
30
33
  def definedtype
31
34
  unless defined? @definedtype
32
- if tmp = @scope.finddefine(self.type)
35
+ case self.type
36
+ when "Class": # look for host classes
37
+ if self.title == :main
38
+ tmp = @scope.findclass("")
39
+ else
40
+ tmp = @scope.findclass(self.title)
41
+ end
42
+ when "Node": # look for node definitions
43
+ tmp = @scope.parser.nodes[self.title]
44
+ else # normal definitions
45
+ # We have to swap these variables around so the errors are right.
46
+ tmp = @scope.finddefine(self.type)
47
+ end
48
+
49
+ if tmp
33
50
  @definedtype = tmp
34
51
  else
35
- fail Puppet::ParseError, "Could not find resource type '%s'" % self.type
52
+ fail Puppet::ParseError, "Could not find resource '%s'" % self
36
53
  end
37
54
  end
38
55
 
@@ -48,13 +65,6 @@ class Puppet::Parser::Resource::Reference
48
65
  return [type.to_s,title.to_s]
49
66
  end
50
67
 
51
- def to_s
52
- unless defined? @namestring
53
- @namestring = "%s[%s]" % [type.capitalize, title]
54
- end
55
- @namestring
56
- end
57
-
58
68
  def typeclass
59
69
  unless defined? @typeclass
60
70
  if tmp = builtintype || definedtype
@@ -67,5 +77,3 @@ class Puppet::Parser::Resource::Reference
67
77
  @typeclass
68
78
  end
69
79
  end
70
-
71
- # $Id: reference.rb 2664 2007-07-09 20:54:35Z luke $
@@ -15,36 +15,19 @@ class Puppet::Parser::Scope
15
15
 
16
16
  include Enumerable
17
17
  include Puppet::Util::Errors
18
- attr_accessor :parent, :level, :interp, :source, :host
19
- attr_accessor :name, :type, :topscope, :base, :keyword
20
- attr_accessor :top, :translated, :exported, :virtual
18
+ attr_accessor :parent, :level, :parser, :source, :resource
19
+ attr_accessor :base, :keyword, :nodescope
20
+ attr_accessor :top, :translated, :compile
21
21
 
22
- # Whether we behave declaratively. Note that it's a class variable,
23
- # so all scopes behave the same.
24
- @@declarative = true
25
-
26
- # Retrieve and set the declarative setting.
27
- def self.declarative
28
- return @@declarative
29
- end
30
-
31
- def self.declarative=(val)
32
- @@declarative = val
22
+ # Proxy accessors
23
+ def host
24
+ @compile.node.name
33
25
  end
34
26
 
35
- # This handles the shared tables that all scopes have. They're effectively
36
- # global tables, except that they're only global for a single scope tree,
37
- # which is why I can't use class variables for them.
38
- def self.sharedtable(*names)
39
- attr_accessor(*names)
40
- @@sharedtables ||= []
41
- @@sharedtables += names
27
+ def interpreter
28
+ @compile.interpreter
42
29
  end
43
30
 
44
- # This is probably not all that good of an idea, but...
45
- # This way a parent can share its tables with all of its children.
46
- sharedtable :classtable, :definedtable, :exportable, :overridetable, :collecttable
47
-
48
31
  # Is the value true? This allows us to control the definition of truth
49
32
  # in one place.
50
33
  def self.true?(value)
@@ -65,146 +48,14 @@ class Puppet::Parser::Scope
65
48
  end
66
49
  end
67
50
 
68
- # Is the type a builtin type?
69
- def builtintype?(type)
70
- if typeklass = Puppet::Type.type(type)
71
- return typeklass
72
- else
73
- return false
74
- end
75
- end
76
-
77
- # Create a new child scope.
78
- def child=(scope)
79
- @children.push(scope)
80
-
81
- # Copy all of the shared tables over to the child.
82
- @@sharedtables.each do |name|
83
- scope.send(name.to_s + "=", self.send(name))
84
- end
85
- end
86
-
87
- # Verify that the given object isn't defined elsewhere.
88
- def chkobjectclosure(obj)
89
- if exobj = @definedtable[obj.ref]
90
- typeklass = Puppet::Type.type(obj.type)
91
- if typeklass and ! typeklass.isomorphic?
92
- Puppet.info "Allowing duplicate %s" % type
93
- else
94
- # Either it's a defined type, which are never
95
- # isomorphic, or it's a non-isomorphic type.
96
- msg = "Duplicate definition: %s is already defined" % obj.ref
97
-
98
- if exobj.file and exobj.line
99
- msg << " in file %s at line %s" %
100
- [exobj.file, exobj.line]
101
- end
102
-
103
- if obj.line or obj.file
104
- msg << "; cannot redefine"
105
- end
106
-
107
- raise Puppet::ParseError.new(msg)
108
- end
109
- end
110
-
111
- return true
112
- end
113
-
114
- # Return the scope associated with a class. This is just here so
115
- # that subclasses can set their parent scopes to be the scope of
116
- # their parent class.
117
- def class_scope(klass)
118
- scope = if klass.respond_to?(:classname)
119
- @classtable[klass.classname]
120
- else
121
- @classtable[klass]
122
- end
123
-
124
- return nil unless scope
125
-
126
- if scope.nodescope? and ! klass.is_a?(AST::Node)
127
- raise Puppet::ParseError, "Node %s has already been evaluated; cannot evaluate class with same name" % [klass.classname]
128
- end
129
-
130
- scope
131
- end
132
-
133
- # Return the list of collections.
134
- def collections
135
- @collecttable
136
- end
137
-
138
- def declarative=(val)
139
- self.class.declarative = val
140
- end
141
-
142
- def declarative
143
- self.class.declarative
144
- end
145
-
146
- # Test whether a given scope is declarative. Even though it's
147
- # a global value, the calling objects don't need to know that.
148
- def declarative?
149
- @@declarative
150
- end
151
-
152
- # Remove a specific child.
153
- def delete(child)
154
- @children.delete(child)
155
- end
156
-
157
- # Remove a resource from the various tables. This is only used when
158
- # a resource maps to a definition and gets evaluated.
159
- def deleteresource(resource)
160
- if @definedtable[resource.ref]
161
- @definedtable.delete(resource.ref)
162
- end
163
-
164
- if @children.include?(resource)
165
- @children.delete(resource)
166
- end
167
- end
168
-
169
51
  # Are we the top scope?
170
52
  def topscope?
171
53
  @level == 1
172
54
  end
173
55
 
174
- # Return a list of all of the defined classes.
175
- def classlist
176
- unless defined? @classtable
177
- raise Puppet::DevError, "Scope did not receive class table"
178
- end
179
- return @classtable.keys.reject { |k| k == "" }
180
- end
181
-
182
- # Yield each child scope in turn
183
- def each
184
- @children.each { |child|
185
- yield child
186
- }
187
- end
188
-
189
- # Evaluate a list of classes.
190
- def evalclasses(*classes)
191
- retval = []
192
- classes.each do |klass|
193
- if obj = findclass(klass)
194
- obj.safeevaluate :scope => self
195
- retval << klass
196
- end
197
- end
198
- retval
199
- end
200
-
201
- def exported?
202
- self.exported
203
- end
204
-
205
56
  def findclass(name)
206
57
  @namespaces.each do |namespace|
207
- if r = interp.findclass(namespace, name)
58
+ if r = parser.findclass(namespace, name)
208
59
  return r
209
60
  end
210
61
  end
@@ -213,7 +64,7 @@ class Puppet::Parser::Scope
213
64
 
214
65
  def finddefine(name)
215
66
  @namespaces.each do |namespace|
216
- if r = interp.finddefine(namespace, name)
67
+ if r = parser.finddefine(namespace, name)
217
68
  return r
218
69
  end
219
70
  end
@@ -221,28 +72,11 @@ class Puppet::Parser::Scope
221
72
  end
222
73
 
223
74
  def findresource(string, name = nil)
224
- if name
225
- string = "%s[%s]" % [string.capitalize, name]
226
- end
227
-
228
- @definedtable[string]
229
- end
230
-
231
- # Recursively complete the whole tree, in preparation for
232
- # translation or storage.
233
- def finish
234
- self.each do |obj|
235
- obj.finish
236
- end
75
+ compile.findresource(string, name)
237
76
  end
238
77
 
239
- # Initialize our new scope. Defaults to having no parent and to
240
- # being declarative.
78
+ # Initialize our new scope. Defaults to having no parent.
241
79
  def initialize(hash = {})
242
- @parent = nil
243
- @type = nil
244
- @name = nil
245
- @finished = false
246
80
  if hash.include?(:namespace)
247
81
  if n = hash[:namespace]
248
82
  @namespaces = [n]
@@ -262,94 +96,15 @@ class Puppet::Parser::Scope
262
96
 
263
97
  @tags = []
264
98
 
265
- if @parent.nil?
266
- unless hash.include?(:declarative)
267
- hash[:declarative] = true
268
- end
269
- self.istop(hash[:declarative])
270
- @inside = nil
271
- else
272
- # This is here, rather than in newchild(), so that all
273
- # of the later variable initialization works.
274
- @parent.child = self
275
-
276
- @level = @parent.level + 1
277
- @interp = @parent.interp
278
- @source = hash[:source] || @parent.source
279
- @topscope = @parent.topscope
280
- #@inside = @parent.inside # Used for definition inheritance
281
- @host = @parent.host
282
- @type ||= @parent.type
283
- end
284
-
285
- # Our child scopes and objects
286
- @children = []
287
-
288
99
  # The symbol table for this scope. This is where we store variables.
289
100
  @symtable = {}
290
101
 
291
102
  # All of the defaults set for types. It's a hash of hashes,
292
103
  # with the first key being the type, then the second key being
293
104
  # the parameter.
294
- @defaultstable = Hash.new { |dhash,type|
105
+ @defaults = Hash.new { |dhash,type|
295
106
  dhash[type] = {}
296
107
  }
297
-
298
- unless @interp
299
- raise Puppet::DevError, "Scopes require an interpreter"
300
- end
301
- end
302
-
303
- # Associate the object directly with the scope, so that contained objects
304
- # can look up what container they're running within.
305
- def inside(arg = nil)
306
- return @inside unless arg
307
-
308
- old = @inside
309
- @inside = arg
310
- yield
311
- ensure
312
- #Puppet.warning "exiting %s" % @inside.name
313
- @inside = old
314
- end
315
-
316
- # Mark that we're the top scope, and set some hard-coded info.
317
- def istop(declarative = true)
318
- # the level is mostly used for debugging
319
- @level = 1
320
-
321
- # The table for storing class singletons. This will only actually
322
- # be used by top scopes and node scopes.
323
- @classtable = {}
324
-
325
- self.class.declarative = declarative
326
-
327
- # The table for all defined objects.
328
- @definedtable = {}
329
-
330
- # The list of objects that will available for export.
331
- @exportable = {}
332
-
333
- # The list of overrides. This is used to cache overrides on objects
334
- # that don't exist yet. We store an array of each override.
335
- @overridetable = Hash.new do |overs, ref|
336
- overs[ref] = []
337
- end
338
-
339
- # Eventually, if we support sites, this will allow definitions
340
- # of nodes with the same name in different sites. For now
341
- # the top-level scope is always the only site scope.
342
- @sitescope = true
343
-
344
- @namespaces = [""]
345
-
346
- # The list of collections that have been created. This is a global list,
347
- # but they each refer back to the scope that created them.
348
- @collecttable = []
349
-
350
- @topscope = self
351
- @type = "puppet"
352
- @name = "top"
353
108
  end
354
109
 
355
110
  # Collect all of the defaults set at any higher scopes.
@@ -360,16 +115,16 @@ class Puppet::Parser::Scope
360
115
  values = {}
361
116
 
362
117
  # first collect the values from the parents
363
- unless @parent.nil?
364
- @parent.lookupdefaults(type).each { |var,value|
118
+ unless parent.nil?
119
+ parent.lookupdefaults(type).each { |var,value|
365
120
  values[var] = value
366
121
  }
367
122
  end
368
123
 
369
124
  # then override them with any current values
370
125
  # this should probably be done differently
371
- if @defaultstable.include?(type)
372
- @defaultstable[type].each { |var,value|
126
+ if @defaults.include?(type)
127
+ @defaults[type].each { |var,value|
373
128
  values[var] = value
374
129
  }
375
130
  end
@@ -379,17 +134,6 @@ class Puppet::Parser::Scope
379
134
  return values
380
135
  end
381
136
 
382
- # Look up all of the exported objects of a given type.
383
- def lookupexported(type)
384
- @definedtable.find_all do |name, r|
385
- r.type == type and r.exported?
386
- end
387
- end
388
-
389
- def lookupoverrides(obj)
390
- @overridetable[obj.ref]
391
- end
392
-
393
137
  # Look up a defined type.
394
138
  def lookuptype(name)
395
139
  finddefine(name) || findclass(name)
@@ -403,7 +147,7 @@ class Puppet::Parser::Scope
403
147
  unless klass
404
148
  raise Puppet::ParseError, "Could not find class %s" % klassname
405
149
  end
406
- unless kscope = class_scope(klass)
150
+ unless kscope = compile.class_scope(klass)
407
151
  raise Puppet::ParseError, "Class %s has not been evaluated so its variables cannot be referenced" % klass.classname
408
152
  end
409
153
  return kscope.lookupvar(shortname, usestring)
@@ -426,7 +170,7 @@ class Puppet::Parser::Scope
426
170
  return @symtable[name]
427
171
  end
428
172
  elsif self.parent
429
- return @parent.lookupvar(name, usestring)
173
+ return parent.lookupvar(name, usestring)
430
174
  elsif usestring
431
175
  return ""
432
176
  else
@@ -438,16 +182,9 @@ class Puppet::Parser::Scope
438
182
  @namespaces.dup
439
183
  end
440
184
 
441
- # Add a collection to the global list.
442
- def newcollection(coll)
443
- @collecttable << coll
444
- end
445
-
446
- # Create a new scope.
447
- def newscope(hash = {})
448
- hash[:parent] = self
449
- #debug "Creating new scope, level %s" % [self.level + 1]
450
- return Puppet::Parser::Scope.new(hash)
185
+ # Create a new scope and set these options.
186
+ def newscope(options = {})
187
+ compile.newscope(self, options)
451
188
  end
452
189
 
453
190
  # Is this class for a node? This is used to make sure that
@@ -455,75 +192,25 @@ class Puppet::Parser::Scope
455
192
  # is required because of how often the names are used throughout
456
193
  # the system, including on the client.
457
194
  def nodescope?
458
- defined?(@nodescope) and @nodescope
195
+ self.nodescope
459
196
  end
460
197
 
461
- # Return the list of remaining overrides.
462
- def overrides
463
- #@overridetable.collect { |name, overs| overs }.flatten
464
- @overridetable.values.flatten
465
- end
466
-
467
- def resources
468
- @definedtable.values
469
- end
470
-
471
- # Store the fact that we've evaluated a given class. We use a hash
472
- # that gets inherited from the top scope down, rather than a global
473
- # hash. We store the object ID, not class name, so that we
474
- # can support multiple unrelated classes with the same name.
475
- def setclass(obj)
476
- if obj.is_a?(AST::HostClass)
477
- unless obj.classname
478
- raise Puppet::DevError, "Got a %s with no fully qualified name" %
479
- obj.class
480
- end
481
- @classtable[obj.classname] = self
482
- else
483
- raise Puppet::DevError, "Invalid class %s" % obj.inspect
484
- end
485
- if obj.is_a?(AST::Node)
486
- @nodescope = true
487
- end
488
- nil
489
- end
490
-
491
- # Set all of our facts in the top-level scope.
492
- def setfacts(facts)
493
- facts.each { |var, value|
494
- self.setvar(var, value)
495
- }
496
- end
497
-
498
- # Add a new object to our object table and the global list, and do any necessary
499
- # checks.
500
- def setresource(obj)
501
- self.chkobjectclosure(obj)
502
-
503
- @children << obj
504
-
505
- # Mark the resource as virtual or exported, as necessary.
506
- if self.exported?
507
- obj.exported = true
508
- elsif self.virtual?
509
- obj.virtual = true
198
+ # We probably shouldn't cache this value... But it's a lot faster
199
+ # than doing lots of queries.
200
+ def parent
201
+ unless defined?(@parent)
202
+ @parent = compile.parent(self)
510
203
  end
511
-
512
- # The global table
513
- @definedtable[obj.ref] = obj
514
-
515
- return obj
204
+ @parent
516
205
  end
517
206
 
518
- # Override a parameter in an existing object. If the object does not yet
519
- # exist, then cache the override in a global table, so it can be flushed
520
- # at the end.
521
- def setoverride(resource)
522
- resource.override = true
523
- if obj = @definedtable[resource.ref]
524
- obj.merge(resource)
207
+ # Return the list of scopes up to the top scope, ordered with our own first.
208
+ # This is used for looking up variables and defaults.
209
+ def scope_path
210
+ if parent
211
+ [self, parent.scope_path].flatten.compact
525
212
  else
526
- @overridetable[resource.ref] << resource
213
+ [self]
527
214
  end
528
215
  end
529
216
 
@@ -531,7 +218,7 @@ class Puppet::Parser::Scope
531
218
  # so that the syntax is isolated. We don't do any kind of type-checking
532
219
  # here; instead we let the resource do it when the defaults are used.
533
220
  def setdefaults(type, params)
534
- table = @defaultstable[type]
221
+ table = @defaults[type]
535
222
 
536
223
  # if we got a single param, it'll be in its own array
537
224
  params = [params] unless params.is_a?(Array)
@@ -539,17 +226,8 @@ class Puppet::Parser::Scope
539
226
  params.each { |param|
540
227
  #Puppet.debug "Default for %s is %s => %s" %
541
228
  # [type,ary[0].inspect,ary[1].inspect]
542
- if @@declarative
543
- if table.include?(param.name)
544
- self.fail "Default already defined for %s { %s }" %
545
- [type,param.name]
546
- end
547
- else
548
- if table.include?(param.name)
549
- # we should maybe allow this warning to be turned off...
550
- Puppet.warning "Replacing default for %s { %s }" %
551
- [type,param.name]
552
- end
229
+ if table.include?(param.name)
230
+ raise Puppet::ParseError.new("Default already defined for %s { %s }; cannot redefine" % [type, param.name], param.line, param.file)
553
231
  end
554
232
  table[param.name] = param
555
233
  }
@@ -557,23 +235,19 @@ class Puppet::Parser::Scope
557
235
 
558
236
  # Set a variable in the current scope. This will override settings
559
237
  # in scopes above, but will not allow variables in the current scope
560
- # to be reassigned if we're declarative (which is the default).
238
+ # to be reassigned.
561
239
  def setvar(name,value, file = nil, line = nil)
562
240
  #Puppet.debug "Setting %s to '%s' at level %s" %
563
241
  # [name.inspect,value,self.level]
564
242
  if @symtable.include?(name)
565
- if @@declarative
566
- error = Puppet::ParseError.new("Cannot reassign variable %s" % name)
567
- if file
568
- error.file = file
569
- end
570
- if line
571
- error.line = line
572
- end
573
- raise error
574
- else
575
- Puppet.warning "Reassigning %s to %s" % [name,value]
243
+ error = Puppet::ParseError.new("Cannot reassign variable %s" % name)
244
+ if file
245
+ error.file = file
576
246
  end
247
+ if line
248
+ error.line = line
249
+ end
250
+ raise error
577
251
  end
578
252
  @symtable[name] = value
579
253
  end
@@ -637,82 +311,16 @@ class Puppet::Parser::Scope
637
311
  return out
638
312
  end
639
313
 
640
- # Add a tag to our current list. These tags will be added to all
641
- # of the objects contained in this scope.
642
- def tag(*ary)
643
- ary.each { |tag|
644
- if tag.nil? or tag == ""
645
- puts caller
646
- Puppet.debug "got told to tag with %s" % tag.inspect
647
- next
648
- end
649
- unless tag =~ /^\w[-\w]*$/
650
- fail Puppet::ParseError, "Invalid tag %s" % tag.inspect
651
- end
652
- tag = tag.to_s
653
- unless @tags.include?(tag)
654
- #Puppet.info "Tagging scope %s with %s" % [self.object_id, tag]
655
- @tags << tag
656
- end
657
- }
658
- end
659
-
660
314
  # Return the tags associated with this scope. It's basically
661
315
  # just our parents' tags, plus our type. We don't cache this value
662
316
  # because our parent tags might change between calls.
663
317
  def tags
664
- tmp = [] + @tags
665
- unless ! defined? @type or @type.nil? or @type == ""
666
- tmp << @type.to_s
667
- end
668
- if @parent
669
- #info "Looking for tags in %s" % @parent.type
670
- @parent.tags.each { |tag|
671
- if tag.nil? or tag == ""
672
- Puppet.debug "parent returned tag %s" % tag.inspect
673
- next
674
- end
675
- unless tmp.include?(tag)
676
- tmp << tag
677
- end
678
- }
679
- end
680
- return tmp.sort.uniq
318
+ resource.tags
681
319
  end
682
320
 
683
321
  # Used mainly for logging
684
322
  def to_s
685
- if self.name
686
- return "%s[%s]" % [@type, @name]
687
- else
688
- return self.type.to_s
689
- end
690
- end
691
-
692
- # Convert all of our objects as necessary.
693
- def translate
694
- ret = @children.collect do |child|
695
- case child
696
- when Puppet::Parser::Resource
697
- child.to_trans
698
- when self.class
699
- child.translate
700
- else
701
- devfail "Got %s for translation" % child.class
702
- end
703
- end.reject { |o| o.nil? }
704
- bucket = Puppet::TransBucket.new ret
705
-
706
- case self.type
707
- when "": bucket.type = "main"
708
- when nil: devfail "A Scope with no type"
709
- else
710
- bucket.type = @type
711
- end
712
- if self.name
713
- bucket.name = self.name
714
- end
715
- return bucket
323
+ "Scope(%s)" % @resource.to_s
716
324
  end
717
325
 
718
326
  # Undefine a variable; only used for testing.
@@ -721,23 +329,4 @@ class Puppet::Parser::Scope
721
329
  @symtable.delete(var)
722
330
  end
723
331
  end
724
-
725
- # Return an array of all of the unevaluated objects
726
- def unevaluated
727
- ary = @definedtable.find_all do |name, object|
728
- ! object.builtin? and ! object.evaluated?
729
- end.collect { |name, object| object }
730
-
731
- if ary.empty?
732
- return nil
733
- else
734
- return ary
735
- end
736
- end
737
-
738
- def virtual?
739
- self.virtual || self.exported?
740
- end
741
332
  end
742
-
743
- # $Id: scope.rb 2646 2007-07-04 21:06:26Z luke $