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
@@ -1,10 +1,15 @@
1
1
  require 'puppet'
2
+ require 'puppet/indirector'
2
3
 
3
4
  # A class for reporting what happens on each client. Reports consist of
4
5
  # two types of data: Logs and Metrics. Logs are the output that each
5
6
  # change produces, and Metrics are all of the numerical data involved
6
7
  # in the transaction.
7
8
  class Puppet::Transaction::Report
9
+ extend Puppet::Indirector
10
+
11
+ indirects :report, :terminus_class => :processor
12
+
8
13
  attr_accessor :logs, :metrics, :time, :host
9
14
 
10
15
  def <<(msg)
@@ -76,4 +81,3 @@ class Puppet::Transaction::Report
76
81
  end
77
82
  end
78
83
 
79
- # $Id: report.rb 2459 2007-05-04 05:04:29Z luke $
@@ -1,4 +1,5 @@
1
1
  require 'puppet'
2
+ require 'puppet/resource_reference'
2
3
  require 'yaml'
3
4
 
4
5
  module Puppet
@@ -8,7 +9,7 @@ module Puppet
8
9
  # YAML.
9
10
  class TransObject
10
11
  include Enumerable
11
- attr_accessor :type, :name, :file, :line, :collectable, :collected
12
+ attr_accessor :type, :name, :file, :line, :catalog
12
13
 
13
14
  attr_writer :tags
14
15
 
@@ -23,9 +24,8 @@ module Puppet
23
24
  end
24
25
 
25
26
  def initialize(name,type)
26
- @type = type
27
+ @type = type.to_s.downcase
27
28
  @name = name
28
- @collectable = false
29
29
  @params = {}
30
30
  @tags = []
31
31
  end
@@ -34,10 +34,28 @@ module Puppet
34
34
  return [@type,@name].join('--')
35
35
  end
36
36
 
37
+ def ref
38
+ unless defined? @ref
39
+ @ref = Puppet::ResourceReference.new(@type, @name)
40
+ end
41
+ @ref.to_s
42
+ end
43
+
37
44
  def tags
38
45
  return @tags
39
46
  end
40
47
 
48
+ # Convert a defined type into a component.
49
+ def to_component
50
+ trans = TransObject.new(ref, :component)
51
+ @params.each { |param,value|
52
+ next unless Puppet::Type::Component.validattr?(param)
53
+ Puppet.debug "Defining %s on %s" % [param, ref]
54
+ trans[param] = value
55
+ }
56
+ Puppet::Type::Component.create(trans)
57
+ end
58
+
41
59
  def to_hash
42
60
  @params.dup
43
61
  end
@@ -57,28 +75,19 @@ module Puppet
57
75
  end
58
76
 
59
77
  def to_yaml_properties
60
- instance_variables
78
+ instance_variables.reject { |v| %w{@ref}.include?(v) }
79
+ end
80
+
81
+ def to_ref
82
+ ref
61
83
  end
62
84
 
63
- def to_type(parent = nil)
85
+ def to_type
64
86
  retobj = nil
65
87
  if typeklass = Puppet::Type.type(self.type)
66
- # FIXME This should really be done differently, but...
67
- if retobj = typeklass[self.name]
68
- self.each do |param, val|
69
- retobj[param] = val
70
- end
71
- else
72
- unless retobj = typeklass.create(self)
73
- return nil
74
- end
75
- end
88
+ return typeklass.create(self)
76
89
  else
77
- raise Puppet::Error.new("Could not find object type %s" % self.type)
78
- end
79
-
80
- if parent
81
- parent.push retobj
90
+ return to_component
82
91
  end
83
92
 
84
93
  return retobj
@@ -90,7 +99,7 @@ module Puppet
90
99
  class TransBucket
91
100
  include Enumerable
92
101
 
93
- attr_accessor :name, :type, :file, :line, :classes, :keyword, :top
102
+ attr_accessor :name, :type, :file, :line, :classes, :keyword, :top, :catalog
94
103
 
95
104
  %w{delete shift include? length empty? << []}.each { |method|
96
105
  define_method(method) do |*args|
@@ -100,20 +109,6 @@ module Puppet
100
109
  end
101
110
  }
102
111
 
103
- # Remove all collectable objects from our tree, since the client
104
- # should not see them.
105
- def collectstrip!
106
- @children.dup.each do |child|
107
- if child.is_a? self.class
108
- child.collectstrip!
109
- else
110
- if child.collectable and ! child.collected
111
- @children.delete(child)
112
- end
113
- end
114
- end
115
- end
116
-
117
112
  # Recursively yield everything.
118
113
  def delve(&block)
119
114
  @children.each do |obj|
@@ -167,12 +162,7 @@ module Puppet
167
162
  end
168
163
  end
169
164
 
170
- str = nil
171
- if self.top
172
- str = "%s"
173
- else
174
- str = "#{@keyword} #{@type} {\n%s\n}"
175
- end
165
+ str = "#{@keyword} #{@name} {\n%s\n}"
176
166
  str % @children.collect { |child|
177
167
  child.to_manifest
178
168
  }.collect { |str|
@@ -188,95 +178,61 @@ module Puppet
188
178
  instance_variables
189
179
  end
190
180
 
191
- def to_type(parent = nil)
192
- # this container will contain the equivalent of all objects at
193
- # this level
194
- #container = Puppet::Component.new(:name => @name, :type => @type)
195
- #unless defined? @name
196
- # raise Puppet::DevError, "TransBuckets must have names"
197
- #end
198
- unless defined? @type
199
- Puppet.debug "TransBucket '%s' has no type" % @name
200
- end
201
- usetrans = true
202
-
203
- if usetrans
204
- tmpname = nil
205
-
206
- # Nodes have the same name and type
207
- if self.name
208
- tmpname = "%s[%s]" % [@type, self.name]
209
- else
210
- tmpname = @type
211
- end
212
- trans = TransObject.new(tmpname, :component)
213
- if defined? @parameters
214
- @parameters.each { |param,value|
215
- Puppet.debug "Defining %s on %s of type %s" %
216
- [param,@name,@type]
217
- trans[param] = value
218
- }
219
- else
220
- #Puppet.debug "%s[%s] has no parameters" % [@type, @name]
181
+ # Create a resource graph from our structure.
182
+ def to_catalog
183
+ catalog = Puppet::Node::Catalog.new(Facter.value("hostname")) do |config|
184
+ delver = proc do |obj|
185
+ obj.catalog = config
186
+ unless container = config.resource(obj.to_ref)
187
+ container = obj.to_type
188
+ config.add_resource container
189
+ end
190
+ obj.each do |child|
191
+ child.catalog = config
192
+ unless resource = config.resource(child.to_ref)
193
+ next unless resource = child.to_type
194
+ config.add_resource resource
195
+ end
196
+ config.add_edge!(container, resource)
197
+ if child.is_a?(self.class)
198
+ delver.call(child)
199
+ end
200
+ end
221
201
  end
222
- container = Puppet::Type::Component.create(trans)
223
- else
224
- hash = {
225
- :name => self.name,
226
- :type => @type
227
- }
228
- if defined? @parameters
229
- @parameters.each { |param,value|
230
- Puppet.debug "Defining %s on %s of type %s" %
231
- [param,@name,@type]
232
- hash[param] = value
233
- }
202
+
203
+ delver.call(self)
204
+ end
205
+
206
+ return catalog
207
+ end
208
+
209
+ def to_ref
210
+ unless defined? @ref
211
+ if self.type and self.name
212
+ @ref = Puppet::ResourceReference.new(self.type, self.name)
213
+ elsif self.type and ! self.name # This is old-school node types
214
+ @ref = Puppet::ResourceReference.new("node", self.type)
215
+ elsif ! self.type and self.name
216
+ @ref = Puppet::ResourceReference.new("component", self.name)
234
217
  else
235
- #Puppet.debug "%s[%s] has no parameters" % [@type, @name]
218
+ @ref = nil
236
219
  end
237
-
238
- #if parent
239
- # hash[:parent] = parent
240
- #end
241
- container = Puppet::Type::Component.create(hash)
242
220
  end
243
- #Puppet.info container.inspect
221
+ @ref.to_s if @ref
222
+ end
244
223
 
245
- if parent
246
- parent.push container
247
- end
224
+ def to_type
225
+ Puppet.debug("TransBucket '%s' has no type" % @name) unless defined? @type
248
226
 
249
- # unless we successfully created the container, return an error
250
- unless container
251
- Puppet.warning "Got no container back"
252
- return nil
227
+ # Nodes have the same name and type
228
+ trans = TransObject.new(to_ref, :component)
229
+ if defined? @parameters
230
+ @parameters.each { |param,value|
231
+ Puppet.debug "Defining %s on %s" % [param, to_ref]
232
+ trans[param] = value
233
+ }
253
234
  end
254
-
255
- self.each { |child|
256
- # the fact that we descend here means that we are
257
- # always going to execute depth-first
258
- # which is _probably_ a good thing, but one never knows...
259
- unless child.is_a?(Puppet::TransBucket) or
260
- child.is_a?(Puppet::TransObject)
261
- raise Puppet::DevError,
262
- "TransBucket#to_type cannot handle objects of type %s" %
263
- child.class
264
- end
265
-
266
- # Now just call to_type on them with the container as a parent
267
- begin
268
- child.to_type(container)
269
- rescue => detail
270
- if Puppet[:trace] and ! detail.is_a?(Puppet::Error)
271
- puts detail.backtrace
272
- end
273
- Puppet.err detail.to_s
274
- end
275
- }
276
-
277
- # at this point, no objects at are level are still Transportable
278
- # objects
279
- return container
235
+ return Puppet::Type::Component.create(trans)
280
236
  end
281
237
 
282
238
  def param(param,value)
@@ -287,7 +243,5 @@ module Puppet
287
243
  end
288
244
 
289
245
  end
290
- #------------------------------------------------------------
291
246
  end
292
247
 
293
- # $Id: transportable.rb 2068 2007-01-10 03:25:25Z lutter $
@@ -10,6 +10,7 @@ require 'puppet/metatype/manager'
10
10
  require 'puppet/util/errors'
11
11
  require 'puppet/util/log_paths'
12
12
  require 'puppet/util/logging'
13
+ require 'puppet/resource_reference'
13
14
 
14
15
  # see the bottom of the file for the rest of the inclusions
15
16
 
@@ -44,7 +45,6 @@ class Type
44
45
  # that it is clear whether it operates on all attributes (thus has 'attr' in
45
46
  # the method name, or whether it operates on a specific type of attributes.
46
47
  attr_accessor :file, :line
47
- attr_reader :parent
48
48
 
49
49
  attr_writer :title
50
50
  attr_writer :noop
@@ -117,6 +117,9 @@ class Type
117
117
  define_method(:validate, &block)
118
118
  #@validate = block
119
119
  end
120
+
121
+ # The catalog that this resource is stored in.
122
+ attr_accessor :catalog
120
123
 
121
124
  # create a log at specified level
122
125
  def log(msg)
@@ -179,8 +182,11 @@ class Type
179
182
  # If we got passed a transportable object, we just pull a bunch of info
180
183
  # directly from it. This is the main object instantiation mechanism.
181
184
  if hash.is_a?(Puppet::TransObject)
185
+ # XXX This will need to change when transobjects change to titles.
186
+ self.title = hash.name
187
+
182
188
  #self[:name] = hash[:name]
183
- [:file, :line, :tags].each { |getter|
189
+ [:file, :line, :tags, :catalog].each { |getter|
184
190
  if hash.respond_to?(getter)
185
191
  setter = getter.to_s + "="
186
192
  if val = hash.send(getter)
@@ -189,13 +195,12 @@ class Type
189
195
  end
190
196
  }
191
197
 
192
- # XXX This will need to change when transobjects change to titles.
193
- @title = hash.name
194
198
  hash = hash.to_hash
195
- elsif hash[:title]
196
- # XXX This should never happen
197
- @title = hash[:title]
198
- hash.delete(:title)
199
+ else
200
+ if hash[:title]
201
+ @title = hash[:title]
202
+ hash.delete(:title)
203
+ end
199
204
  end
200
205
 
201
206
  # Before anything else, set our parent if it was included
@@ -219,7 +224,7 @@ class Type
219
224
  if attrs.include?(namevar)
220
225
  attrs.delete(namevar)
221
226
  else
222
- self.devfail "My namevar isn\'t a valid attribute...?"
227
+ self.devfail "My namevar isn't a valid attribute...?"
223
228
  end
224
229
  else
225
230
  self.devfail "I was not passed a namevar"
@@ -282,6 +287,14 @@ class Type
282
287
  # Scheduling has to be done when the whole config is instantiated, so
283
288
  # that file order doesn't matter in finding them.
284
289
  self.schedule
290
+
291
+ # Make sure all of our relationships are valid. Again, must be done
292
+ # when the entire catalog is instantiated.
293
+ self.class.relationship_params.collect do |klass|
294
+ if param = @parameters[klass.name]
295
+ param.validate_relationship
296
+ end
297
+ end.flatten.reject { |r| r.nil? }
285
298
  end
286
299
 
287
300
  # Return a cached value
@@ -310,6 +323,28 @@ class Type
310
323
  return self[:name]
311
324
  end
312
325
 
326
+ # Look up our parent in the catalog, if we have one.
327
+ def parent
328
+ return nil unless catalog
329
+
330
+ unless defined?(@parent)
331
+ # This is kinda weird.
332
+ if implicit?
333
+ parents = catalog.relationship_graph.adjacent(self, :direction => :in)
334
+ else
335
+ parents = catalog.adjacent(self, :direction => :in)
336
+ end
337
+ if parents
338
+ # We should never have more than one parent, so let's just ignore
339
+ # it if we happen to.
340
+ @parent = parents.shift
341
+ else
342
+ @parent = nil
343
+ end
344
+ end
345
+ @parent
346
+ end
347
+
313
348
  # Return the "type[name]" style reference.
314
349
  def ref
315
350
  "%s[%s]" % [self.class.name.to_s.capitalize, self.title]
@@ -394,4 +429,3 @@ require 'puppet/type/tidy'
394
429
 
395
430
 
396
431
 
397
- # $Id: type.rb 2684 2007-07-12 16:39:47Z luke $
@@ -48,16 +48,6 @@ Puppet::Type.newtype(:component) do
48
48
  @children.each { |child| yield child }
49
49
  end
50
50
 
51
- # flatten all children, sort them, and evaluate them in order
52
- # this is only called on one component over the whole system
53
- # this also won't work with scheduling, but eh
54
- def evaluate
55
- self.finalize unless self.finalized?
56
- transaction = Puppet::Transaction.new(self)
57
- transaction.component = self
58
- return transaction
59
- end
60
-
61
51
  # Do all of the polishing off, mostly doing autorequires and making
62
52
  # dependencies. This will get run once on the top-level component,
63
53
  # and it will do everything necessary.
@@ -92,14 +82,14 @@ Puppet::Type.newtype(:component) do
92
82
  end
93
83
 
94
84
  # Initialize a new component
95
- def initialize(args)
85
+ def initialize(*args)
96
86
  @children = []
97
- super(args)
87
+ super
88
+
89
+ @reference = Puppet::ResourceReference.new(:component, @title)
98
90
 
99
- # If the title isn't a full resource reference, assume
100
- # we're a class and make an alias for that.
101
- unless @title.to_s.include?("[")
102
- self.class.alias("class[%s]" % @title, self)
91
+ unless self.class[@reference.to_s]
92
+ self.class.alias(@reference.to_s, self)
103
93
  end
104
94
  end
105
95
 
@@ -108,14 +98,6 @@ Puppet::Type.newtype(:component) do
108
98
  @children = []
109
99
  end
110
100
 
111
- def parent=(parent)
112
- if self.parentof?(parent)
113
- devfail "%s[%s] is already the parent of %s[%s]" %
114
- [self.class.name, self.title, parent.class.name, parent.title]
115
- end
116
- @parent = parent
117
- end
118
-
119
101
  # Add a hook for testing for recursion.
120
102
  def parentof?(child)
121
103
  if super(child)
@@ -127,113 +109,46 @@ Puppet::Type.newtype(:component) do
127
109
  return false
128
110
  end
129
111
  end
130
-
131
- def push(*childs)
132
- unless defined? @children
133
- @children = []
134
- end
135
- childs.each { |child|
136
- # Make sure we don't have any loops here.
137
- if parentof?(child)
138
- devfail "Already the parent of %s[%s]" % [child.class.name, child.title]
139
- end
140
- unless child.is_a?(Puppet::Type)
141
- self.debug "Got object of type %s" % child.class
142
- self.devfail(
143
- "Containers can only contain Puppet resources, not %s" %
144
- child.class
145
- )
146
- end
147
- @children.push(child)
148
- child.parent = self
149
- }
150
- end
151
112
 
152
113
  # Component paths are special because they function as containers.
153
114
  def pathbuilder
154
- tmp = []
155
- if defined? @parent and @parent
156
- tmp += [@parent.pathbuilder, self.title]
157
- else
158
- # The top-level name is always main[top], so we don't bother with
159
- # that.
160
- if self.title == "main[top]"
161
- tmp << "" # This empty field results in "//" in the path
115
+ if @reference.type == "Class"
116
+ # 'main' is the top class, so we want to see '//' instead of
117
+ # its name.
118
+ if @reference.title == "main"
119
+ myname = ""
162
120
  else
163
- tmp << self.title
121
+ myname = @reference.title
164
122
  end
123
+ else
124
+ myname = @reference.to_s
125
+ end
126
+ if p = self.parent
127
+ return [p.pathbuilder, myname]
128
+ else
129
+ return [myname]
165
130
  end
166
-
167
- tmp
168
131
  end
169
132
 
170
- # Remove an object. The argument determines whether the object's
171
- # subscriptions get eliminated, too.
172
- def remove(rmdeps = true)
173
- # Our children remove themselves from our @children array (else the object
174
- # we called this on at the top would not be removed), so we duplicate the
175
- # array and iterate over that. If we don't do this, only half of the
176
- # objects get removed.
177
- @children.dup.each { |child|
178
- child.remove(rmdeps)
179
- }
180
-
181
- @children.clear
182
-
183
- # Get rid of params and provider, too.
184
- super
185
-
186
- @parent = nil
133
+ def ref
134
+ @reference.to_s
187
135
  end
188
136
 
189
- # We have a different way of setting the title
137
+ # We want our title to just be the whole reference, rather than @title.
190
138
  def title
191
- unless defined? @title
192
- if self[:type] == self[:name] # this is the case for classes
193
- @title = self[:type]
194
- elsif self[:name] =~ /\[.+\]/ # most components already have ref info in the name
195
- @title = self[:name]
196
- else # else, set it up
197
- @title = "%s[%s]" % [self[:type].capitalize, self[:name]]
198
- end
199
- end
200
- return @title
139
+ @reference.to_s
201
140
  end
202
141
 
203
142
  def refresh
204
- @children.collect { |child|
143
+ catalog.adjacent(self).each do |child|
205
144
  if child.respond_to?(:refresh)
206
145
  child.refresh
207
146
  child.log "triggering %s" % :refresh
208
147
  end
209
- }
210
- end
211
-
212
- # Convert to a graph object with all of the container info.
213
- def to_graph
214
- graph = Puppet::PGraph.new
215
-
216
- delver = proc do |obj|
217
- obj.each do |child|
218
- graph.add_edge!(obj, child)
219
- if child.is_a?(self.class)
220
- delver.call(child)
221
- end
222
- end
223
148
  end
224
-
225
- delver.call(self)
226
-
227
- return graph
228
149
  end
229
150
 
230
151
  def to_s
231
- if self.title =~ /\[/
232
- return self.title
233
- else
234
- return "component(%s)" % self.title
235
- end
152
+ @reference.to_s
236
153
  end
237
154
  end
238
-
239
- # $Id: component.rb 2715 2007-07-19 19:23:56Z luke $