puppet 0.23.2 → 0.24.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of puppet might be problematic. Click here for more details.

Files changed (629) hide show
  1. data/CHANGELOG +112 -1
  2. data/README +1 -1
  3. data/Rakefile +1 -2
  4. data/bin/filebucket +2 -3
  5. data/bin/puppet +55 -39
  6. data/bin/puppetca +20 -11
  7. data/bin/puppetd +30 -31
  8. data/bin/puppetdoc +27 -28
  9. data/bin/puppetmasterd +24 -42
  10. data/bin/puppetrun +3 -4
  11. data/bin/ralsh +5 -7
  12. data/conf/redhat/puppet.spec +4 -1
  13. data/conf/solaris/smf/svc-puppetd +1 -1
  14. data/conf/solaris/smf/svc-puppetmasterd +1 -1
  15. data/examples/code/allatonce +1 -1
  16. data/examples/code/assignments +1 -1
  17. data/examples/code/components +1 -1
  18. data/examples/code/file.bl +1 -1
  19. data/examples/code/filedefaults +1 -1
  20. data/examples/code/fileparsing +1 -1
  21. data/examples/code/filerecursion +1 -1
  22. data/examples/code/functions +1 -1
  23. data/examples/code/groups +1 -1
  24. data/examples/code/head +1 -1
  25. data/examples/code/importing +1 -1
  26. data/examples/code/modules/sample-module.pp +10 -0
  27. data/examples/code/modules/sample-module/README.txt +17 -0
  28. data/examples/code/modules/sample-module/lib/puppet/parser/functions/hostname_to_dn.rb +36 -0
  29. data/examples/code/modules/sample-module/manifests/init.pp +12 -0
  30. data/examples/code/modules/sample-module/templates/sample.erb +5 -0
  31. data/examples/code/nodes +1 -1
  32. data/examples/code/one +1 -1
  33. data/examples/code/relationships +1 -1
  34. data/examples/code/selectors +1 -1
  35. data/examples/code/simpletests +1 -1
  36. data/examples/root/etc/init.d/sleeper +1 -1
  37. data/examples/root/etc/puppet/fileserver.conf +1 -1
  38. data/ext/ldap/puppet.schema +1 -1
  39. data/ext/module_puppet +30 -21
  40. data/ext/puppet-test +3 -3
  41. data/ext/vim/filetype.vim +1 -1
  42. data/install.rb +1 -2
  43. data/lib/puppet.rb +20 -19
  44. data/lib/puppet/checksum.rb +57 -0
  45. data/lib/puppet/config_stores/rest.rb +1 -1
  46. data/lib/puppet/daemon.rb +0 -1
  47. data/lib/puppet/{configuration.rb → defaults.rb} +56 -23
  48. data/lib/puppet/dsl.rb +22 -116
  49. data/lib/puppet/error.rb +0 -9
  50. data/lib/puppet/event.rb +0 -1
  51. data/lib/puppet/external/gratr/rdot.rb +0 -1
  52. data/lib/puppet/external/lock.rb +0 -1
  53. data/lib/puppet/feature/base.rb +3 -2
  54. data/lib/puppet/feature/rails.rb +0 -1
  55. data/lib/puppet/file_serving.rb +7 -0
  56. data/lib/puppet/file_serving/configuration.rb +129 -0
  57. data/lib/puppet/file_serving/configuration/parser.rb +124 -0
  58. data/lib/puppet/file_serving/content.rb +34 -0
  59. data/lib/puppet/file_serving/file_base.rb +63 -0
  60. data/lib/puppet/file_serving/fileset.rb +138 -0
  61. data/lib/puppet/file_serving/indirection_hooks.rb +44 -0
  62. data/lib/puppet/file_serving/metadata.rb +69 -0
  63. data/lib/puppet/file_serving/mount.rb +186 -0
  64. data/lib/puppet/file_serving/terminus_helper.rb +19 -0
  65. data/lib/puppet/indirector.rb +68 -0
  66. data/lib/puppet/indirector/catalog/compiler.rb +173 -0
  67. data/lib/puppet/indirector/catalog/yaml.rb +24 -0
  68. data/lib/puppet/indirector/checksum/file.rb +33 -0
  69. data/lib/puppet/indirector/code.rb +6 -0
  70. data/lib/puppet/indirector/direct_file_server.rb +27 -0
  71. data/lib/puppet/indirector/exec.rb +57 -0
  72. data/lib/puppet/indirector/facts/facter.rb +65 -0
  73. data/lib/puppet/indirector/facts/memory.rb +9 -0
  74. data/lib/puppet/indirector/facts/yaml.rb +7 -0
  75. data/lib/puppet/indirector/file.rb +54 -0
  76. data/lib/puppet/indirector/file_content.rb +5 -0
  77. data/lib/puppet/indirector/file_content/file.rb +11 -0
  78. data/lib/puppet/indirector/file_content/file_server.rb +11 -0
  79. data/lib/puppet/indirector/file_content/modules.rb +11 -0
  80. data/lib/puppet/indirector/file_content/rest.rb +12 -0
  81. data/lib/puppet/indirector/file_metadata.rb +5 -0
  82. data/lib/puppet/indirector/file_metadata/file.rb +26 -0
  83. data/lib/puppet/indirector/file_metadata/file_server.rb +11 -0
  84. data/lib/puppet/indirector/file_metadata/modules.rb +17 -0
  85. data/lib/puppet/indirector/file_metadata/rest.rb +12 -0
  86. data/lib/puppet/indirector/file_server.rb +56 -0
  87. data/lib/puppet/indirector/indirection.rb +237 -0
  88. data/lib/puppet/indirector/ldap.rb +90 -0
  89. data/lib/puppet/indirector/memory.rb +21 -0
  90. data/lib/puppet/indirector/module_files.rb +82 -0
  91. data/lib/puppet/indirector/node/exec.rb +52 -0
  92. data/lib/puppet/indirector/node/ldap.rb +120 -0
  93. data/lib/puppet/indirector/node/memory.rb +10 -0
  94. data/lib/puppet/indirector/node/plain.rb +19 -0
  95. data/lib/puppet/indirector/node/rest.rb +7 -0
  96. data/lib/puppet/indirector/node/yaml.rb +7 -0
  97. data/lib/puppet/indirector/plain.rb +9 -0
  98. data/lib/puppet/indirector/report/processor.rb +50 -0
  99. data/lib/puppet/indirector/rest.rb +8 -0
  100. data/lib/puppet/indirector/ssl_rsa.rb +5 -0
  101. data/lib/puppet/indirector/ssl_rsa/file.rb +33 -0
  102. data/lib/puppet/indirector/terminus.rb +178 -0
  103. data/lib/puppet/indirector/yaml.rb +57 -0
  104. data/lib/puppet/metatype/attributes.rb +3 -3
  105. data/lib/puppet/metatype/closure.rb +0 -66
  106. data/lib/puppet/metatype/container.rb +0 -9
  107. data/lib/puppet/metatype/evaluation.rb +10 -2
  108. data/lib/puppet/metatype/instances.rb +16 -30
  109. data/lib/puppet/metatype/manager.rb +1 -2
  110. data/lib/puppet/metatype/metaparams.rb +27 -21
  111. data/lib/puppet/metatype/providers.rb +3 -2
  112. data/lib/puppet/metatype/relationships.rb +1 -2
  113. data/lib/puppet/metatype/schedules.rb +0 -1
  114. data/lib/puppet/metatype/tags.rb +0 -1
  115. data/lib/puppet/module.rb +60 -32
  116. data/lib/puppet/network/authconfig.rb +0 -1
  117. data/lib/puppet/network/authorization.rb +0 -1
  118. data/lib/puppet/network/authstore.rb +0 -1
  119. data/lib/puppet/network/client.rb +13 -4
  120. data/lib/puppet/network/client/ca.rb +4 -5
  121. data/lib/puppet/network/client/dipper.rb +0 -1
  122. data/lib/puppet/network/client/file.rb +0 -1
  123. data/lib/puppet/network/client/master.rb +127 -235
  124. data/lib/puppet/network/client/proxy.rb +0 -1
  125. data/lib/puppet/network/client/report.rb +0 -1
  126. data/lib/puppet/network/client/resource.rb +0 -1
  127. data/lib/puppet/network/client/runner.rb +0 -1
  128. data/lib/puppet/network/client/status.rb +0 -1
  129. data/lib/puppet/network/client_request.rb +0 -1
  130. data/lib/puppet/network/handler.rb +5 -2
  131. data/lib/puppet/network/handler/ca.rb +1 -2
  132. data/lib/puppet/network/handler/configuration.rb +184 -0
  133. data/lib/puppet/network/handler/filebucket.rb +1 -2
  134. data/lib/puppet/network/handler/fileserver.rb +279 -107
  135. data/lib/puppet/network/handler/master.rb +57 -152
  136. data/lib/puppet/network/handler/report.rb +6 -65
  137. data/lib/puppet/network/handler/resource.rb +5 -13
  138. data/lib/puppet/network/handler/runner.rb +3 -4
  139. data/lib/puppet/network/handler/status.rb +0 -1
  140. data/lib/puppet/network/http.rb +13 -0
  141. data/lib/puppet/network/http/handler.rb +109 -0
  142. data/lib/puppet/network/http/mongrel.rb +54 -0
  143. data/lib/puppet/network/http/mongrel/rest.rb +37 -0
  144. data/lib/puppet/network/http/mongrel/xmlrpc.rb +4 -0
  145. data/lib/puppet/network/http/webrick.rb +51 -0
  146. data/lib/puppet/network/http/webrick/rest.rb +41 -0
  147. data/lib/puppet/network/http/webrick/xmlrpc.rb +4 -0
  148. data/lib/puppet/network/http_server.rb +3 -0
  149. data/lib/puppet/network/{server → http_server}/mongrel.rb +11 -5
  150. data/lib/puppet/network/{server → http_server}/webrick.rb +9 -5
  151. data/lib/puppet/network/rest_controller.rb +2 -0
  152. data/lib/puppet/network/rights.rb +0 -1
  153. data/lib/puppet/network/server.rb +63 -3
  154. data/lib/puppet/network/xmlrpc/client.rb +90 -23
  155. data/lib/puppet/network/xmlrpc/processor.rb +0 -1
  156. data/lib/puppet/network/xmlrpc/server.rb +0 -1
  157. data/lib/puppet/network/xmlrpc/webrick_servlet.rb +0 -1
  158. data/lib/puppet/node.rb +165 -0
  159. data/lib/puppet/node/catalog.rb +480 -0
  160. data/lib/puppet/node/environment.rb +46 -0
  161. data/lib/puppet/node/facts.rb +36 -0
  162. data/lib/puppet/parameter.rb +34 -28
  163. data/lib/puppet/parser/ast.rb +0 -1
  164. data/lib/puppet/parser/ast/astarray.rb +30 -53
  165. data/lib/puppet/parser/ast/branch.rb +0 -10
  166. data/lib/puppet/parser/ast/caseopt.rb +0 -11
  167. data/lib/puppet/parser/ast/casestatement.rb +0 -12
  168. data/lib/puppet/parser/ast/collection.rb +1 -3
  169. data/lib/puppet/parser/ast/collexpr.rb +0 -2
  170. data/lib/puppet/parser/ast/{component.rb → definition.rb} +58 -72
  171. data/lib/puppet/parser/ast/else.rb +0 -10
  172. data/lib/puppet/parser/ast/function.rb +0 -2
  173. data/lib/puppet/parser/ast/hostclass.rb +21 -19
  174. data/lib/puppet/parser/ast/ifstatement.rb +0 -13
  175. data/lib/puppet/parser/ast/leaf.rb +0 -8
  176. data/lib/puppet/parser/ast/node.rb +13 -10
  177. data/lib/puppet/parser/ast/resource.rb +75 -0
  178. data/lib/puppet/parser/ast/{resourcedefaults.rb → resource_defaults.rb} +4 -20
  179. data/lib/puppet/parser/ast/{resourceoverride.rb → resource_override.rb} +3 -5
  180. data/lib/puppet/parser/ast/resource_reference.rb +66 -0
  181. data/lib/puppet/parser/ast/resourceparam.rb +0 -14
  182. data/lib/puppet/parser/ast/selector.rb +0 -10
  183. data/lib/puppet/parser/ast/tag.rb +0 -2
  184. data/lib/puppet/parser/ast/vardef.rb +0 -14
  185. data/lib/puppet/parser/collector.rb +83 -101
  186. data/lib/puppet/parser/compile.rb +509 -0
  187. data/lib/puppet/parser/functions.rb +10 -10
  188. data/lib/puppet/parser/interpreter.rb +44 -662
  189. data/lib/puppet/parser/lexer.rb +1 -3
  190. data/lib/puppet/parser/parser.rb +674 -701
  191. data/lib/puppet/parser/parser_support.rb +33 -24
  192. data/lib/puppet/parser/resource.rb +219 -162
  193. data/lib/puppet/parser/resource/param.rb +1 -2
  194. data/lib/puppet/parser/resource/reference.rb +24 -16
  195. data/lib/puppet/parser/scope.rb +48 -459
  196. data/lib/puppet/parser/templatewrapper.rb +4 -5
  197. data/lib/puppet/pgraph.rb +10 -13
  198. data/lib/puppet/property.rb +25 -41
  199. data/lib/puppet/propertychange.rb +0 -2
  200. data/lib/puppet/provider.rb +15 -11
  201. data/lib/puppet/provider/cron/crontab.rb +6 -7
  202. data/lib/puppet/provider/group/groupadd.rb +0 -1
  203. data/lib/puppet/provider/group/netinfo.rb +0 -1
  204. data/lib/puppet/provider/group/pw.rb +0 -1
  205. data/lib/puppet/provider/host/netinfo.rb +0 -1
  206. data/lib/puppet/provider/host/parsed.rb +0 -1
  207. data/lib/puppet/provider/interface/redhat.rb +90 -91
  208. data/lib/puppet/provider/interface/sunos.rb +98 -81
  209. data/lib/puppet/provider/mailalias/aliases.rb +0 -1
  210. data/lib/puppet/provider/maillist/mailman.rb +2 -3
  211. data/lib/puppet/provider/mount.rb +10 -9
  212. data/lib/puppet/provider/mount/netinfo.rb +0 -1
  213. data/lib/puppet/provider/mount/parsed.rb +0 -1
  214. data/lib/puppet/provider/nameservice.rb +0 -1
  215. data/lib/puppet/provider/nameservice/netinfo.rb +0 -1
  216. data/lib/puppet/provider/nameservice/objectadd.rb +0 -1
  217. data/lib/puppet/provider/nameservice/pw.rb +0 -1
  218. data/lib/puppet/provider/package.rb +0 -2
  219. data/lib/puppet/provider/package/appdmg.rb +0 -1
  220. data/lib/puppet/provider/package/apple.rb +0 -1
  221. data/lib/puppet/provider/package/apt.rb +0 -1
  222. data/lib/puppet/provider/package/aptitude.rb +0 -1
  223. data/lib/puppet/provider/package/aptrpm.rb +0 -1
  224. data/lib/puppet/provider/package/blastwave.rb +0 -1
  225. data/lib/puppet/provider/package/darwinport.rb +0 -1
  226. data/lib/puppet/provider/package/dpkg.rb +9 -1
  227. data/lib/puppet/provider/package/fink.rb +0 -1
  228. data/lib/puppet/provider/package/freebsd.rb +0 -1
  229. data/lib/puppet/provider/package/gem.rb +0 -1
  230. data/lib/puppet/provider/package/openbsd.rb +1 -2
  231. data/lib/puppet/provider/package/pkgdmg.rb +14 -15
  232. data/lib/puppet/provider/package/portage.rb +6 -7
  233. data/lib/puppet/provider/package/ports.rb +1 -4
  234. data/lib/puppet/provider/package/rpm.rb +31 -45
  235. data/lib/puppet/provider/package/sun.rb +0 -3
  236. data/lib/puppet/provider/package/sunfreeware.rb +0 -1
  237. data/lib/puppet/provider/package/up2date.rb +0 -1
  238. data/lib/puppet/provider/package/urpmi.rb +0 -1
  239. data/lib/puppet/provider/package/yum.rb +45 -14
  240. data/lib/puppet/provider/package/yumhelper.py +37 -0
  241. data/lib/puppet/provider/parsedfile.rb +2 -3
  242. data/lib/puppet/provider/port/parsed.rb +0 -1
  243. data/lib/puppet/provider/service/base.rb +4 -1
  244. data/lib/puppet/provider/service/debian.rb +5 -2
  245. data/lib/puppet/provider/service/freebsd.rb +51 -0
  246. data/lib/puppet/provider/service/init.rb +16 -40
  247. data/lib/puppet/provider/service/redhat.rb +1 -6
  248. data/lib/puppet/provider/service/smf.rb +0 -1
  249. data/lib/puppet/provider/sshkey/parsed.rb +0 -1
  250. data/lib/puppet/provider/user/netinfo.rb +0 -1
  251. data/lib/puppet/provider/user/pw.rb +0 -1
  252. data/lib/puppet/provider/user/useradd.rb +0 -1
  253. data/lib/puppet/provider/zone/solaris.rb +0 -1
  254. data/lib/puppet/rails.rb +35 -30
  255. data/lib/puppet/rails/database/schema.rb +0 -1
  256. data/lib/puppet/rails/host.rb +6 -15
  257. data/lib/puppet/rails/param_name.rb +1 -2
  258. data/lib/puppet/rails/param_value.rb +0 -1
  259. data/lib/puppet/rails/puppet_class.rb +0 -1
  260. data/lib/puppet/rails/resource.rb +3 -5
  261. data/lib/puppet/reference/configuration.rb +12 -6
  262. data/lib/puppet/reference/indirection.rb +34 -0
  263. data/lib/puppet/reference/node_source.rb +9 -0
  264. data/lib/puppet/relationship.rb +10 -8
  265. data/lib/puppet/reports.rb +51 -0
  266. data/lib/puppet/reports/log.rb +2 -3
  267. data/lib/puppet/reports/rrdgraph.rb +2 -5
  268. data/lib/puppet/reports/store.rb +6 -7
  269. data/lib/puppet/reports/tagmail.rb +2 -3
  270. data/lib/puppet/resource_reference.rb +79 -0
  271. data/lib/puppet/simple_graph.rb +251 -0
  272. data/lib/puppet/sslcertificates.rb +19 -15
  273. data/lib/puppet/sslcertificates/ca.rb +56 -15
  274. data/lib/puppet/sslcertificates/certificate.rb +0 -1
  275. data/lib/puppet/sslcertificates/inventory.rb +2 -6
  276. data/lib/puppet/sslcertificates/monkey_patch.rb +6 -0
  277. data/lib/puppet/sslcertificates/support.rb +4 -5
  278. data/lib/puppet/transaction.rb +93 -96
  279. data/lib/puppet/transaction/report.rb +5 -1
  280. data/lib/puppet/transportable.rb +79 -125
  281. data/lib/puppet/type.rb +44 -10
  282. data/lib/puppet/type/component.rb +25 -110
  283. data/lib/puppet/type/cron.rb +1 -2
  284. data/lib/puppet/type/exec.rb +19 -13
  285. data/lib/puppet/type/group.rb +0 -1
  286. data/lib/puppet/type/host.rb +0 -1
  287. data/lib/puppet/type/interface.rb +6 -3
  288. data/lib/puppet/type/k5login.rb +87 -0
  289. data/lib/puppet/type/mailalias.rb +0 -1
  290. data/lib/puppet/type/maillist.rb +0 -1
  291. data/lib/puppet/type/mount.rb +7 -13
  292. data/lib/puppet/type/notify.rb +0 -1
  293. data/lib/puppet/type/package.rb +7 -63
  294. data/lib/puppet/type/pfile.rb +25 -32
  295. data/lib/puppet/type/pfile/checksum.rb +0 -1
  296. data/lib/puppet/type/pfile/content.rb +18 -3
  297. data/lib/puppet/type/pfile/ensure.rb +5 -6
  298. data/lib/puppet/type/pfile/group.rb +4 -1
  299. data/lib/puppet/type/pfile/mode.rb +0 -1
  300. data/lib/puppet/type/pfile/owner.rb +6 -9
  301. data/lib/puppet/type/pfile/source.rb +28 -11
  302. data/lib/puppet/type/pfile/target.rb +2 -1
  303. data/lib/puppet/type/pfile/type.rb +0 -1
  304. data/lib/puppet/type/pfilebucket.rb +0 -1
  305. data/lib/puppet/type/port.rb +0 -1
  306. data/lib/puppet/type/resources.rb +0 -1
  307. data/lib/puppet/type/schedule.rb +17 -15
  308. data/lib/puppet/type/service.rb +23 -159
  309. data/lib/puppet/type/sshkey.rb +0 -1
  310. data/lib/puppet/type/tidy.rb +15 -7
  311. data/lib/puppet/type/user.rb +0 -1
  312. data/lib/puppet/type/zone.rb +0 -1
  313. data/lib/puppet/util.rb +1 -2
  314. data/lib/puppet/util/autoload.rb +21 -23
  315. data/lib/puppet/util/checksums.rb +37 -0
  316. data/lib/puppet/util/classgen.rb +0 -1
  317. data/lib/puppet/util/diff.rb +71 -0
  318. data/lib/puppet/util/docs.rb +8 -2
  319. data/lib/puppet/util/errors.rb +0 -1
  320. data/lib/puppet/util/execution.rb +0 -1
  321. data/lib/puppet/util/fact_store.rb +0 -1
  322. data/lib/puppet/util/feature.rb +31 -22
  323. data/lib/puppet/util/fileparsing.rb +3 -2
  324. data/lib/puppet/util/filetype.rb +30 -12
  325. data/lib/puppet/util/graph.rb +0 -1
  326. data/lib/puppet/util/inifile.rb +0 -1
  327. data/lib/puppet/util/instance_loader.rb +11 -4
  328. data/lib/puppet/util/loadedfile.rb +0 -1
  329. data/lib/puppet/util/log.rb +0 -1
  330. data/lib/puppet/util/log_paths.rb +0 -1
  331. data/lib/puppet/util/logging.rb +0 -1
  332. data/lib/puppet/util/metaid.rb +0 -1
  333. data/lib/puppet/util/methodhelper.rb +0 -2
  334. data/lib/puppet/util/metric.rb +1 -2
  335. data/lib/puppet/util/plist.rb +0 -1
  336. data/lib/puppet/util/plist/generator.rb +0 -1
  337. data/lib/puppet/util/plist/parser.rb +0 -1
  338. data/lib/puppet/util/posix.rb +7 -1
  339. data/lib/puppet/util/provider_features.rb +11 -12
  340. data/lib/puppet/util/rails/collection_merger.rb +0 -1
  341. data/lib/puppet/util/reference.rb +2 -3
  342. data/lib/puppet/util/{config.rb → settings.rb} +424 -300
  343. data/lib/puppet/util/storage.rb +1 -3
  344. data/lib/puppet/util/subclass_loader.rb +0 -1
  345. data/lib/puppet/util/suidmanager.rb +25 -42
  346. data/lib/puppet/util/uri_helper.rb +22 -0
  347. data/lib/puppet/util/variables.rb +0 -1
  348. data/lib/puppet/util/warnings.rb +0 -1
  349. data/test/Rakefile +1 -1
  350. data/test/certmgr/ca.rb +8 -2
  351. data/test/certmgr/certmgr.rb +14 -6
  352. data/test/certmgr/inventory.rb +18 -30
  353. data/test/certmgr/support.rb +3 -2
  354. data/test/executables/filebucket.rb +1 -2
  355. data/test/executables/puppetbin.rb +1 -2
  356. data/test/executables/puppetca.rb +7 -2
  357. data/test/executables/puppetd.rb +23 -29
  358. data/test/executables/puppetmasterd.rb +1 -2
  359. data/test/executables/puppetmodule.rb +1 -2
  360. data/test/language/ast.rb +24 -29
  361. data/test/language/ast/casestatement.rb +1 -2
  362. data/test/language/ast/definition.rb +166 -0
  363. data/test/language/ast/hostclass.rb +50 -29
  364. data/test/language/ast/resource.rb +59 -0
  365. data/test/language/ast/{resourceref.rb → resource_reference.rb} +30 -20
  366. data/test/language/ast/selector.rb +1 -2
  367. data/test/language/ast/variable.rb +1 -2
  368. data/test/language/compile.rb +569 -0
  369. data/test/language/functions.rb +57 -76
  370. data/test/language/lexer.rb +20 -3
  371. data/test/language/parser.rb +45 -33
  372. data/test/language/resource.rb +275 -308
  373. data/test/language/scope.rb +135 -410
  374. data/test/language/snippets.rb +19 -41
  375. data/test/language/transportable.rb +8 -29
  376. data/test/lib/mocha/auto_verify.rb +6 -6
  377. data/test/lib/mocha/deprecation.rb +22 -0
  378. data/test/lib/mocha/exception_raiser.rb +17 -0
  379. data/test/lib/mocha/expectation.rb +167 -84
  380. data/test/lib/mocha/infinite_range.rb +4 -6
  381. data/test/lib/mocha/inspect.rb +3 -1
  382. data/test/lib/mocha/is_a.rb +9 -0
  383. data/test/lib/mocha/missing_expectation.rb +27 -0
  384. data/test/lib/mocha/mock.rb +192 -5
  385. data/test/lib/mocha/multiple_yields.rb +20 -0
  386. data/test/lib/mocha/no_yields.rb +11 -0
  387. data/test/lib/mocha/object.rb +11 -1
  388. data/test/lib/mocha/parameter_matchers.rb +9 -0
  389. data/test/lib/mocha/parameter_matchers/all_of.rb +39 -0
  390. data/test/lib/mocha/parameter_matchers/any_of.rb +44 -0
  391. data/test/lib/mocha/parameter_matchers/anything.rb +30 -0
  392. data/test/lib/mocha/parameter_matchers/has_entry.rb +39 -0
  393. data/test/lib/mocha/parameter_matchers/has_key.rb +39 -0
  394. data/test/lib/mocha/parameter_matchers/has_value.rb +39 -0
  395. data/test/lib/mocha/parameter_matchers/includes.rb +37 -0
  396. data/test/lib/mocha/return_values.rb +31 -0
  397. data/test/lib/mocha/single_return_value.rb +24 -0
  398. data/test/lib/mocha/single_yield.rb +18 -0
  399. data/test/lib/mocha/standalone.rb +2 -0
  400. data/test/lib/mocha/stub.rb +18 -0
  401. data/test/lib/mocha/test_case_adapter.rb +3 -3
  402. data/test/lib/mocha/yield_parameters.rb +31 -0
  403. data/test/lib/puppettest.rb +38 -20
  404. data/test/lib/puppettest/certificates.rb +0 -1
  405. data/test/lib/puppettest/exetest.rb +0 -1
  406. data/test/lib/puppettest/fakes.rb +0 -1
  407. data/test/lib/puppettest/fileparsing.rb +8 -15
  408. data/test/lib/puppettest/filetesting.rb +0 -1
  409. data/test/lib/puppettest/parsertesting.rb +37 -23
  410. data/test/lib/puppettest/railstesting.rb +3 -6
  411. data/test/lib/puppettest/reporttesting.rb +0 -1
  412. data/test/lib/puppettest/resourcetesting.rb +6 -34
  413. data/test/lib/puppettest/runnable_test.rb +30 -0
  414. data/test/lib/puppettest/servertest.rb +2 -3
  415. data/test/lib/puppettest/support/assertions.rb +13 -41
  416. data/test/lib/puppettest/support/collection.rb +0 -1
  417. data/test/lib/puppettest/support/helpers.rb +0 -1
  418. data/test/lib/puppettest/support/resources.rb +17 -17
  419. data/test/lib/puppettest/support/utils.rb +45 -27
  420. data/test/lib/puppettest/testcase.rb +2 -21
  421. data/test/lib/rake/puppet_test_loader.rb +0 -1
  422. data/test/lib/rake/puppet_testtask.rb +0 -1
  423. data/test/network/authconfig.rb +1 -2
  424. data/test/network/authorization.rb +1 -2
  425. data/test/network/authstore.rb +1 -2
  426. data/test/network/client/ca.rb +12 -7
  427. data/test/network/client/client.rb +17 -22
  428. data/test/network/client/dipper.rb +1 -2
  429. data/test/network/client/master.rb +70 -184
  430. data/test/network/client/resource.rb +9 -2
  431. data/test/network/client_request.rb +1 -2
  432. data/test/network/daemon.rb +1 -2
  433. data/test/network/handler/bucket.rb +2 -31
  434. data/test/network/handler/ca.rb +9 -3
  435. data/test/network/handler/configuration.rb +160 -0
  436. data/test/network/handler/fileserver.rb +24 -5
  437. data/test/network/handler/handler.rb +1 -2
  438. data/test/network/handler/master.rb +38 -243
  439. data/test/network/handler/report.rb +2 -104
  440. data/test/network/handler/resource.rb +5 -3
  441. data/test/network/handler/runner.rb +22 -60
  442. data/test/network/rights.rb +1 -2
  443. data/test/network/server/mongrel_test.rb +2 -3
  444. data/test/network/server/webrick.rb +17 -11
  445. data/test/network/xmlrpc/client.rb +27 -12
  446. data/test/network/xmlrpc/processor.rb +3 -4
  447. data/test/network/xmlrpc/server.rb +1 -2
  448. data/test/network/xmlrpc/webrick_servlet.rb +8 -2
  449. data/test/other/dsl.rb +2 -4
  450. data/test/other/events.rb +14 -56
  451. data/test/other/overrides.rb +3 -6
  452. data/test/other/propertychange.rb +1 -2
  453. data/test/other/provider.rb +1 -2
  454. data/test/other/puppet.rb +1 -2
  455. data/test/other/relationships.rb +15 -17
  456. data/test/other/report.rb +14 -20
  457. data/test/other/transactions.rb +109 -192
  458. data/test/puppet/conffiles.rb +3 -5
  459. data/test/puppet/defaults.rb +1 -28
  460. data/test/puppet/errortest.rb +1 -2
  461. data/test/puppet/tc_suidmanager.rb +77 -63
  462. data/test/rails/ast.rb +4 -4
  463. data/test/rails/configuration.rb +71 -0
  464. data/test/rails/host.rb +19 -30
  465. data/test/rails/rails.rb +1 -2
  466. data/test/rails/railsparameter.rb +3 -4
  467. data/test/rails/railsresource.rb +6 -5
  468. data/test/ral/manager/attributes.rb +1 -2
  469. data/test/ral/manager/instances.rb +3 -3
  470. data/test/ral/manager/manager.rb +1 -2
  471. data/test/ral/manager/provider.rb +1 -2
  472. data/test/ral/manager/type.rb +89 -93
  473. data/test/ral/providers/cron/crontab.rb +9 -11
  474. data/test/ral/providers/group.rb +1 -2
  475. data/test/ral/providers/host/netinfo.rb +1 -2
  476. data/test/ral/providers/host/parsed.rb +1 -2
  477. data/test/ral/providers/mailalias/aliases.rb +1 -2
  478. data/test/ral/providers/mount/netinfo.rb +1 -2
  479. data/test/ral/providers/nameservice.rb +1 -2
  480. data/test/ral/providers/package.rb +5 -4
  481. data/test/ral/providers/package/apt.rb +0 -1
  482. data/test/ral/providers/package/aptrpm.rb +0 -1
  483. data/test/ral/providers/parsedfile.rb +1 -2
  484. data/test/ral/providers/port/parsed.rb +1 -2
  485. data/test/ral/providers/provider.rb +10 -5
  486. data/test/ral/providers/service/base.rb +1 -2
  487. data/test/ral/providers/service/debian.rb +58 -0
  488. data/test/ral/providers/sshkey/parsed.rb +1 -2
  489. data/test/ral/providers/user.rb +3 -2
  490. data/test/ral/providers/user/useradd.rb +0 -1
  491. data/test/ral/types/basic.rb +4 -9
  492. data/test/ral/types/cron.rb +6 -12
  493. data/test/ral/types/exec.rb +6 -7
  494. data/test/ral/types/file.rb +35 -14
  495. data/test/ral/types/file/target.rb +6 -5
  496. data/test/ral/types/filebucket.rb +3 -2
  497. data/test/ral/types/fileignoresource.rb +10 -42
  498. data/test/ral/types/filesources.rb +21 -60
  499. data/test/ral/types/group.rb +3 -3
  500. data/test/ral/types/host.rb +6 -3
  501. data/test/ral/types/mailalias.rb +1 -2
  502. data/test/ral/types/parameter.rb +5 -3
  503. data/test/ral/types/port.rb +1 -2
  504. data/test/ral/types/property.rb +3 -3
  505. data/test/ral/types/resources.rb +1 -2
  506. data/test/ral/types/service.rb +5 -3
  507. data/test/ral/types/sshkey.rb +5 -3
  508. data/test/ral/types/tidy.rb +63 -3
  509. data/test/ral/types/user.rb +10 -11
  510. data/test/ral/types/yumrepo.rb +1 -1
  511. data/test/ral/types/zone.rb +1 -2
  512. data/test/util/autoload.rb +23 -27
  513. data/test/util/classgen.rb +1 -2
  514. data/test/util/execution.rb +1 -2
  515. data/test/util/features.rb +1 -3
  516. data/test/util/fileparsing.rb +11 -3
  517. data/test/util/filetype.rb +1 -2
  518. data/test/util/inifile.rb +1 -1
  519. data/test/util/instance_loader.rb +5 -6
  520. data/test/util/loadedfile.rb +1 -2
  521. data/test/util/log.rb +1 -2
  522. data/test/util/metrics.rb +1 -2
  523. data/test/util/package.rb +1 -2
  524. data/test/util/posixtest.rb +1 -2
  525. data/test/util/{config.rb → settings.rb} +123 -265
  526. data/test/util/storage.rb +1 -2
  527. data/test/util/subclass_loader.rb +1 -2
  528. data/test/util/utiltest.rb +1 -111
  529. metadata +130 -112
  530. data/ext/tools/passwd2puppet +0 -45
  531. data/lib/puppet/fact_stores/yaml.rb +0 -42
  532. data/lib/puppet/network/handler/facts.rb +0 -70
  533. data/lib/puppet/parser/ast/resourcedef.rb +0 -222
  534. data/lib/puppet/parser/ast/resourceref.rb +0 -58
  535. data/test/language/ast/component.rb +0 -142
  536. data/test/language/collector.rb +0 -179
  537. data/test/language/interpreter.rb +0 -804
  538. data/test/language/node.rb +0 -126
  539. data/test/lib/mocha/mock_methods.rb +0 -122
  540. data/test/lib/puppettest/graph.rb +0 -41
  541. data/test/lib/spec.rb +0 -8
  542. data/test/lib/spec/callback.rb +0 -11
  543. data/test/lib/spec/callback/callback_container.rb +0 -60
  544. data/test/lib/spec/callback/extensions/module.rb +0 -24
  545. data/test/lib/spec/callback/extensions/object.rb +0 -37
  546. data/test/lib/spec/deprecated.rb +0 -3
  547. data/test/lib/spec/expectations.rb +0 -59
  548. data/test/lib/spec/expectations/differs/default.rb +0 -62
  549. data/test/lib/spec/expectations/errors.rb +0 -6
  550. data/test/lib/spec/expectations/extensions.rb +0 -3
  551. data/test/lib/spec/expectations/extensions/object.rb +0 -109
  552. data/test/lib/spec/expectations/extensions/proc.rb +0 -57
  553. data/test/lib/spec/expectations/extensions/string_and_symbol.rb +0 -17
  554. data/test/lib/spec/expectations/handler.rb +0 -47
  555. data/test/lib/spec/expectations/should.rb +0 -5
  556. data/test/lib/spec/expectations/should/base.rb +0 -64
  557. data/test/lib/spec/expectations/should/change.rb +0 -69
  558. data/test/lib/spec/expectations/should/have.rb +0 -128
  559. data/test/lib/spec/expectations/should/not.rb +0 -74
  560. data/test/lib/spec/expectations/should/should.rb +0 -81
  561. data/test/lib/spec/expectations/sugar.rb +0 -47
  562. data/test/lib/spec/matchers.rb +0 -160
  563. data/test/lib/spec/matchers/be.rb +0 -161
  564. data/test/lib/spec/matchers/be_close.rb +0 -37
  565. data/test/lib/spec/matchers/change.rb +0 -120
  566. data/test/lib/spec/matchers/eql.rb +0 -43
  567. data/test/lib/spec/matchers/equal.rb +0 -43
  568. data/test/lib/spec/matchers/has.rb +0 -44
  569. data/test/lib/spec/matchers/have.rb +0 -140
  570. data/test/lib/spec/matchers/include.rb +0 -50
  571. data/test/lib/spec/matchers/match.rb +0 -41
  572. data/test/lib/spec/matchers/raise_error.rb +0 -100
  573. data/test/lib/spec/matchers/respond_to.rb +0 -35
  574. data/test/lib/spec/matchers/satisfy.rb +0 -47
  575. data/test/lib/spec/matchers/throw_symbol.rb +0 -75
  576. data/test/lib/spec/mocks.rb +0 -232
  577. data/test/lib/spec/mocks/argument_expectation.rb +0 -132
  578. data/test/lib/spec/mocks/error_generator.rb +0 -85
  579. data/test/lib/spec/mocks/errors.rb +0 -10
  580. data/test/lib/spec/mocks/extensions/object.rb +0 -3
  581. data/test/lib/spec/mocks/message_expectation.rb +0 -231
  582. data/test/lib/spec/mocks/methods.rb +0 -40
  583. data/test/lib/spec/mocks/mock.rb +0 -26
  584. data/test/lib/spec/mocks/mock_handler.rb +0 -166
  585. data/test/lib/spec/mocks/order_group.rb +0 -29
  586. data/test/lib/spec/rake/spectask.rb +0 -173
  587. data/test/lib/spec/rake/verify_rcov.rb +0 -47
  588. data/test/lib/spec/runner.rb +0 -132
  589. data/test/lib/spec/runner/backtrace_tweaker.rb +0 -55
  590. data/test/lib/spec/runner/command_line.rb +0 -34
  591. data/test/lib/spec/runner/context.rb +0 -154
  592. data/test/lib/spec/runner/context_eval.rb +0 -142
  593. data/test/lib/spec/runner/context_runner.rb +0 -55
  594. data/test/lib/spec/runner/drb_command_line.rb +0 -21
  595. data/test/lib/spec/runner/execution_context.rb +0 -17
  596. data/test/lib/spec/runner/extensions/kernel.rb +0 -17
  597. data/test/lib/spec/runner/extensions/object.rb +0 -32
  598. data/test/lib/spec/runner/formatter.rb +0 -5
  599. data/test/lib/spec/runner/formatter/base_text_formatter.rb +0 -118
  600. data/test/lib/spec/runner/formatter/html_formatter.rb +0 -219
  601. data/test/lib/spec/runner/formatter/progress_bar_formatter.rb +0 -27
  602. data/test/lib/spec/runner/formatter/rdoc_formatter.rb +0 -22
  603. data/test/lib/spec/runner/formatter/specdoc_formatter.rb +0 -23
  604. data/test/lib/spec/runner/heckle_runner.rb +0 -71
  605. data/test/lib/spec/runner/heckle_runner_win.rb +0 -10
  606. data/test/lib/spec/runner/option_parser.rb +0 -224
  607. data/test/lib/spec/runner/reporter.rb +0 -105
  608. data/test/lib/spec/runner/spec_matcher.rb +0 -25
  609. data/test/lib/spec/runner/spec_parser.rb +0 -41
  610. data/test/lib/spec/runner/spec_should_raise_handler.rb +0 -74
  611. data/test/lib/spec/runner/specification.rb +0 -114
  612. data/test/lib/spec/translator.rb +0 -87
  613. data/test/lib/spec/version.rb +0 -30
  614. data/test/network/handler/facts.rb +0 -112
  615. data/test/other/pgraph.rb +0 -290
  616. data/test/other/relationship.rb +0 -74
  617. data/test/puppet/modules.rb +0 -59
  618. data/test/rails/collection.rb +0 -247
  619. data/test/rails/interpreter.rb +0 -91
  620. data/test/ral/providers/mount/parsed.rb +0 -251
  621. data/test/ral/providers/service.rb +0 -235
  622. data/test/ral/types/component.rb +0 -113
  623. data/test/ral/types/interface.rb +0 -40
  624. data/test/ral/types/mount.rb +0 -362
  625. data/test/ral/types/package.rb +0 -154
  626. data/test/ral/types/schedule.rb +0 -357
  627. data/test/tagging/tagging.rb +0 -170
  628. data/test/util/fact_store.rb +0 -67
  629. data/test/util/graph.rb +0 -108
@@ -0,0 +1,8 @@
1
+ require 'puppet/indirector/rest'
2
+
3
+ # Access objects via REST
4
+ class Puppet::Indirector::REST < Puppet::Indirector::Terminus
5
+ def find(name, options = {})
6
+ indirection.model.new(name)
7
+ end
8
+ end
@@ -0,0 +1,5 @@
1
+ # This is a stub class
2
+
3
+ class Puppet::Indirector::SslRsa #:nodoc:
4
+ end
5
+
@@ -0,0 +1,33 @@
1
+ require 'puppet/indirector/file'
2
+ require 'puppet/indirector/ssl_rsa'
3
+
4
+ class Puppet::Indirector::SslRsa::File < Puppet::Indirector::File
5
+ desc "Store SSL keys on disk."
6
+
7
+ def initialize
8
+ Puppet.settings.use(:ssl)
9
+ end
10
+
11
+ def path(name)
12
+ if name == :ca
13
+ File.join Puppet.settings[:cadir], "ca_key.pem"
14
+ else
15
+ File.join Puppet.settings[:publickeydir], name.to_s + ".pem"
16
+ end
17
+ end
18
+
19
+ def save(key)
20
+ File.open(path(key.name), "w") { |f| f.print key.to_pem }
21
+ end
22
+
23
+ def find(name)
24
+ return nil unless FileTest.exists?(path(name))
25
+ OpenSSL::PKey::RSA.new(File.read(path(name)))
26
+ end
27
+
28
+ def destroy(name)
29
+ return nil unless FileTest.exists?(path(name))
30
+ File.unlink(path(name)) and true
31
+ end
32
+
33
+ end
@@ -0,0 +1,178 @@
1
+ require 'puppet/indirector'
2
+ require 'puppet/indirector/indirection'
3
+ require 'puppet/util/instance_loader'
4
+
5
+ # A simple class that can function as the base class for indirected types.
6
+ class Puppet::Indirector::Terminus
7
+ require 'puppet/util/docs'
8
+ extend Puppet::Util::Docs
9
+
10
+ class << self
11
+ include Puppet::Util::InstanceLoader
12
+
13
+ attr_accessor :name, :terminus_type
14
+ attr_reader :abstract_terminus, :indirection
15
+
16
+ # Are we an abstract terminus type, rather than an instance with an
17
+ # associated indirection?
18
+ def abstract_terminus?
19
+ abstract_terminus
20
+ end
21
+
22
+ # Convert a constant to a short name.
23
+ def const2name(const)
24
+ const.sub(/^[A-Z]/) { |i| i.downcase }.gsub(/[A-Z]/) { |i| "_" + i.downcase }.intern
25
+ end
26
+
27
+ # Look up the indirection if we were only provided a name.
28
+ def indirection=(name)
29
+ if name.is_a?(Puppet::Indirector::Indirection)
30
+ @indirection = name
31
+ elsif ind = Puppet::Indirector::Indirection.instance(name)
32
+ @indirection = ind
33
+ else
34
+ raise ArgumentError, "Could not find indirection instance %s for %s" % [name, self.name]
35
+ end
36
+ end
37
+
38
+ def indirection_name
39
+ @indirection.name
40
+ end
41
+
42
+ # Register our subclass with the appropriate indirection.
43
+ # This follows the convention that our terminus is named after the
44
+ # indirection.
45
+ def inherited(subclass)
46
+ longname = subclass.to_s
47
+ if longname =~ /#<Class/
48
+ raise Puppet::DevError, "Terminus subclasses must have associated constants"
49
+ end
50
+ names = longname.split("::")
51
+
52
+ # Convert everything to a lower-case symbol, converting camelcase to underscore word separation.
53
+ name = names.pop.sub(/^[A-Z]/) { |i| i.downcase }.gsub(/[A-Z]/) { |i| "_" + i.downcase }.intern
54
+
55
+ subclass.name = name
56
+
57
+ # Short-circuit the abstract types, which are those that directly subclass
58
+ # the Terminus class.
59
+ if self == Puppet::Indirector::Terminus
60
+ subclass.mark_as_abstract_terminus
61
+ return
62
+ end
63
+
64
+ # Set the terminus type to be the name of the abstract terminus type.
65
+ # Yay, class/instance confusion.
66
+ subclass.terminus_type = self.name
67
+
68
+ # Our subclass is specifically associated with an indirection.
69
+ indirection_name = names.pop.sub(/^[A-Z]/) { |i| i.downcase }.gsub(/[A-Z]/) { |i| "_" + i.downcase }.intern
70
+
71
+ if indirection_name == "" or indirection_name.nil?
72
+ raise Puppet::DevError, "Could not discern indirection model from class constant"
73
+ end
74
+
75
+ # This will throw an exception if the indirection instance cannot be found.
76
+ # Do this last, because it also registers the terminus type with the indirection,
77
+ # which needs the above information.
78
+ subclass.indirection = indirection_name
79
+
80
+ # And add this instance to the instance hash.
81
+ Puppet::Indirector::Terminus.register_terminus_class(subclass)
82
+ end
83
+
84
+ # Mark that this instance is abstract.
85
+ def mark_as_abstract_terminus
86
+ @abstract_terminus = true
87
+ end
88
+
89
+ def model
90
+ indirection.model
91
+ end
92
+
93
+ # Convert a short name to a constant.
94
+ def name2const(name)
95
+ name.to_s.capitalize.sub(/_(.)/) { |i| $1.upcase }
96
+ end
97
+
98
+ # Register a class, probably autoloaded.
99
+ def register_terminus_class(klass)
100
+ setup_instance_loading klass.indirection_name
101
+ instance_hash(klass.indirection_name)[klass.name] = klass
102
+ end
103
+
104
+ # Return a terminus by name, using the autoloader.
105
+ def terminus_class(indirection_name, terminus_type)
106
+ setup_instance_loading indirection_name
107
+ loaded_instance(indirection_name, terminus_type)
108
+ end
109
+
110
+ # Return all terminus classes for a given indirection.
111
+ def terminus_classes(indirection_name)
112
+ setup_instance_loading indirection_name
113
+
114
+ # Load them all.
115
+ instance_loader(indirection_name).loadall
116
+
117
+ # And return the list of names.
118
+ loaded_instances(indirection_name)
119
+ end
120
+
121
+ private
122
+
123
+ def setup_instance_loading(type)
124
+ unless instance_loading?(type)
125
+ instance_load type, "puppet/indirector/%s" % type
126
+ end
127
+ end
128
+ end
129
+
130
+ # Do we have an update for this object? This compares the provided version
131
+ # to our version, and returns true if our version is at least as high
132
+ # as the asked-about version.
133
+ def has_most_recent?(key, vers)
134
+ raise Puppet::DevError.new("Cannot check update status when no 'version' method is defined") unless respond_to?(:version)
135
+
136
+ if existing_version = version(key)
137
+ #puts "%s fresh: %s (%s vs %s)" % [self.name, (existing_version.to_f >= vers.to_f).inspect, existing_version.to_f, vers.to_f]
138
+ existing_version.to_f >= vers.to_f
139
+ else
140
+ false
141
+ end
142
+ end
143
+
144
+ def indirection
145
+ self.class.indirection
146
+ end
147
+
148
+ def initialize
149
+ if self.class.abstract_terminus?
150
+ raise Puppet::DevError, "Cannot create instances of abstract terminus types"
151
+ end
152
+ end
153
+
154
+ def model
155
+ self.class.model
156
+ end
157
+
158
+ def name
159
+ self.class.name
160
+ end
161
+
162
+ def terminus_type
163
+ self.class.terminus_type
164
+ end
165
+
166
+ # Provide a default method for retrieving an instance's version.
167
+ # By default, just find the resource and get its version. Individual
168
+ # terminus types can override this method to provide custom definitions of
169
+ # 'versions'.
170
+ def version(name)
171
+ raise Puppet::DevError.new("Cannot retrieve an instance's version without a :find method") unless respond_to?(:find)
172
+ if instance = find(name)
173
+ instance.version
174
+ else
175
+ nil
176
+ end
177
+ end
178
+ end
@@ -0,0 +1,57 @@
1
+ require 'puppet/indirector/terminus'
2
+
3
+ # The base class for YAML indirection termini.
4
+ class Puppet::Indirector::Yaml < Puppet::Indirector::Terminus
5
+ def initialize
6
+ # Make sure our base directory exists.
7
+ Puppet.settings.use(:yaml)
8
+ end
9
+
10
+ # Read a given name's file in and convert it from YAML.
11
+ def find(name)
12
+ raise ArgumentError.new("You must specify the name of the object to retrieve") unless name
13
+ file = path(name)
14
+ return nil unless FileTest.exist?(file)
15
+
16
+ begin
17
+ return from_yaml(File.read(file))
18
+ rescue => detail
19
+ raise Puppet::Error, "Could not read YAML data for %s %s: %s" % [indirection.name, name, detail]
20
+ end
21
+ end
22
+
23
+ # Convert our object to YAML and store it to the disk.
24
+ def save(object)
25
+ raise ArgumentError.new("You can only save objects that respond to :name") unless object.respond_to?(:name)
26
+
27
+ file = path(object.name)
28
+
29
+ basedir = File.dirname(file)
30
+
31
+ # This is quite likely a bad idea, since we're not managing ownership or modes.
32
+ unless FileTest.exist?(basedir)
33
+ Dir.mkdir(basedir)
34
+ end
35
+
36
+ begin
37
+ File.open(file, "w", 0660) { |f| f.print to_yaml(object) }
38
+ rescue TypeError => detail
39
+ Puppet.err "Could not save %s %s: %s" % [self.name, object.name, detail]
40
+ end
41
+ end
42
+
43
+ private
44
+
45
+ def from_yaml(text)
46
+ YAML.load(text)
47
+ end
48
+
49
+ def to_yaml(object)
50
+ YAML.dump(object)
51
+ end
52
+
53
+ # Return the path to a given node's file.
54
+ def path(name)
55
+ File.join(Puppet[:yamldir], self.class.indirection_name.to_s, name.to_s + ".yaml")
56
+ end
57
+ end
@@ -252,6 +252,8 @@ class Puppet::Type
252
252
  param.required_features = options[:required_features]
253
253
  end
254
254
 
255
+ param.isnamevar if options[:namevar]
256
+
255
257
  # These might be enabled later.
256
258
  # define_method(name) do
257
259
  # @parameters[name].value
@@ -426,8 +428,7 @@ class Puppet::Type
426
428
  if defined? @title and @title
427
429
  hash[namevar] = @title
428
430
  else
429
- raise Puppet::Error,
430
- "Was not passed a namevar or title"
431
+ raise Puppet::Error, "Was not passed a namevar or title"
431
432
  end
432
433
  end
433
434
 
@@ -686,4 +687,3 @@ class Puppet::Type
686
687
  end
687
688
  end
688
689
 
689
- # $Id: attributes.rb 2676 2007-07-10 23:24:34Z luke $
@@ -1,19 +1,6 @@
1
1
  class Puppet::Type
2
2
  attr_writer :implicit
3
3
 
4
- def self.implicitcreate(hash)
5
- unless hash.include?(:implicit)
6
- hash[:implicit] = true
7
- end
8
- if obj = self.create(hash)
9
- obj.implicit = true
10
-
11
- return obj
12
- else
13
- return nil
14
- end
15
- end
16
-
17
4
  # Is this type's name isomorphic with the object? That is, if the
18
5
  # name conflicts, does it necessarily mean that the objects conflict?
19
6
  # Defaults to true.
@@ -55,57 +42,4 @@ class Puppet::Type
55
42
  return @managed
56
43
  end
57
44
  end
58
-
59
- # Merge new information with an existing object, checking for conflicts
60
- # and such. This allows for two specifications of the same object and
61
- # the same values, but it's pretty limited right now. The result of merging
62
- # properties is very different from the result of merging parameters or
63
- # metaparams. This is currently unused.
64
- def merge(hash)
65
- hash.each { |param, value|
66
- if param.is_a?(String)
67
- param = param.intern
68
- end
69
-
70
- # Of course names are the same, duh.
71
- next if param == :name or param == self.class.namevar
72
-
73
- unless value.is_a?(Array)
74
- value = [value]
75
- end
76
-
77
- if @parameters.include?(param) and oldvals = @parameters[param].shouldorig
78
- unless oldvals.is_a?(Array)
79
- oldvals = [oldvals]
80
- end
81
- # If the values are exactly the same, order and everything,
82
- # then it's okay.
83
- if oldvals == value
84
- return true
85
- end
86
- # take the intersection
87
- newvals = oldvals & value
88
- if newvals.empty?
89
- self.fail "No common values for %s on %s(%s)" %
90
- [param, self.class.name, self.title]
91
- elsif newvals.length > 1
92
- self.fail "Too many values for %s on %s(%s)" %
93
- [param, self.class.name, self.title]
94
- else
95
- self.debug "Reduced old values %s and new values %s to %s" %
96
- [oldvals.inspect, value.inspect, newvals.inspect]
97
- @parameters[param].should = newvals
98
- #self.should = newvals
99
- return true
100
- end
101
- else
102
- self[param] = value
103
- end
104
- }
105
-
106
- # Set the defaults again, just in case.
107
- self.setdefaults
108
- end
109
45
  end
110
-
111
- # $Id: closure.rb 2169 2007-02-07 06:47:10Z luke $
@@ -14,14 +14,6 @@ class Puppet::Type
14
14
  self.class.depthfirst?
15
15
  end
16
16
 
17
- def parent=(parent)
18
- if self.parentof?(parent)
19
- devfail "%s[%s] is already the parent of %s[%s]" %
20
- [self.class.name, self.title, parent.class.name, parent.title]
21
- end
22
- @parent = parent
23
- end
24
-
25
17
  # Add a hook for testing for recursion.
26
18
  def parentof?(child)
27
19
  if (self == child)
@@ -56,4 +48,3 @@ class Puppet::Type
56
48
  end
57
49
  end
58
50
 
59
- # $Id: container.rb 2499 2007-05-09 21:30:44Z luke $
@@ -29,7 +29,16 @@ class Puppet::Type
29
29
  self.debug "%s change(s)" %
30
30
  [changes.length]
31
31
  end
32
- self.cache(:checked, Time.now)
32
+
33
+ # If we're in noop mode, we don't want to store the checked time,
34
+ # because it will result in the resource not getting scheduled if
35
+ # someone were to apply the catalog in non-noop mode.
36
+ # We're going to go ahead and record that we checked if there were
37
+ # no changes, since it's unlikely it will affect the scheduling.
38
+ noop = noop?
39
+ if ! noop or (noop && changes.length == 0)
40
+ self.cache(:checked, Time.now)
41
+ end
33
42
  return changes.flatten
34
43
  end
35
44
 
@@ -153,4 +162,3 @@ class Puppet::Type
153
162
  end
154
163
  end
155
164
 
156
- # $Id: evaluation.rb 2678 2007-07-11 19:30:42Z luke $
@@ -79,8 +79,7 @@ class Puppet::Type
79
79
  end
80
80
 
81
81
  # Force users to call this, so that we can merge objects if
82
- # necessary. FIXME This method should be responsible for most of the
83
- # error handling.
82
+ # necessary.
84
83
  def self.create(args)
85
84
  # Don't modify the original hash; instead, create a duplicate and modify it.
86
85
  # We have to dup and use the ! so that it stays a TransObject if it is
@@ -100,6 +99,8 @@ class Puppet::Type
100
99
  end
101
100
  end
102
101
 
102
+ # If they've specified a type and called on the base, then
103
+ # delegate to the subclass.
103
104
  if type
104
105
  if typeklass = self.type(type)
105
106
  return typeklass.create(hash)
@@ -125,8 +126,6 @@ class Puppet::Type
125
126
  # XXX This will have to change when transobjects change to using titles
126
127
  title = hash.name
127
128
 
128
- #Puppet.debug "Creating %s[%s]" % [self.name, title]
129
-
130
129
  # if the object already exists
131
130
  if self.isomorphic? and retobj = self[title]
132
131
  # if only one of our objects is implicit, then it's easy to see
@@ -138,23 +137,10 @@ class Puppet::Type
138
137
 
139
138
  # now pass through and create the new object
140
139
  elsif implicit
141
- Puppet.notice "Ignoring implicit %s" % title
142
-
143
- return retobj
140
+ Puppet.debug "Ignoring implicit %s[%s]" % [self.name, title]
141
+ return nil
144
142
  else
145
- # If only one of the objects is being managed, then merge them
146
- if retobj.managed?
147
- raise Puppet::Error, "%s '%s' is already being managed" %
148
- [self.name, title]
149
- else
150
- retobj.merge(hash)
151
- return retobj
152
- end
153
- # We will probably want to support merging of some kind in
154
- # the future, but for now, just throw an error.
155
- #retobj.merge(hash)
156
-
157
- #return retobj
143
+ raise Puppet::Error, "%s is already being managed" % retobj.ref
158
144
  end
159
145
  end
160
146
 
@@ -235,19 +221,22 @@ class Puppet::Type
235
221
  hash.delete :name
236
222
  end
237
223
 
238
- unless title
239
- raise Puppet::Error,
240
- "You must specify a title for objects of type %s" % self.to_s
224
+ if catalog = hash[:catalog]
225
+ hash.delete(:catalog)
241
226
  end
242
227
 
228
+ raise(Puppet::Error, "You must specify a title for objects of type %s" % self.to_s) unless title
229
+
243
230
  if hash.include? :type
244
231
  unless self.validattr? :type
245
232
  hash.delete :type
246
233
  end
247
234
  end
235
+
248
236
  # okay, now make a transobject out of hash
249
237
  begin
250
238
  trans = Puppet::TransObject.new(title, self.name.to_s)
239
+ trans.catalog = catalog if catalog
251
240
  hash.each { |param, value|
252
241
  trans[param] = value
253
242
  }
@@ -270,10 +259,8 @@ class Puppet::Type
270
259
  providers_by_source.collect do |provider|
271
260
  provider.instances.collect do |instance|
272
261
  # First try to get the resource if it already exists
273
- if resource = self[instance.name] and resource.provider.class != instance.class
274
- # Skip instances that map to a managed resource with a different provider
275
- next
276
- end
262
+ # Skip instances that map to a managed resource with a different provider
263
+ next if resource = self[instance.name] and resource.provider.class != instance.class
277
264
 
278
265
  # We always want to use the "first" provider instance we find, unless the resource
279
266
  # is already managed and has a different provider set
@@ -308,12 +295,11 @@ class Puppet::Type
308
295
 
309
296
  # Create the path for logging and such.
310
297
  def pathbuilder
311
- if defined? @parent and @parent
312
- [@parent.pathbuilder, self.ref].flatten
298
+ if p = parent
299
+ [p.pathbuilder, self.ref].flatten
313
300
  else
314
301
  [self.ref]
315
302
  end
316
303
  end
317
304
  end
318
305
 
319
- # $Id: instances.rb 2718 2007-07-19 22:12:51Z luke $