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
@@ -9,7 +9,7 @@ rescue LoadError
9
9
  end
10
10
 
11
11
  module Puppet::SSLCertificates
12
- #def self.mkcert(type, name, ttl, issuercert, issuername, serial, publickey)
12
+ #def self.mkcert(type, name, dnsnames, ttl, issuercert, issuername, serial, publickey)
13
13
  def self.mkcert(hash)
14
14
  [:type, :name, :ttl, :issuer, :serial, :publickey].each { |param|
15
15
  unless hash.include?(param)
@@ -39,6 +39,7 @@ module Puppet::SSLCertificates
39
39
  basic_constraint = nil
40
40
  key_usage = nil
41
41
  ext_key_usage = nil
42
+ subject_alt_name = []
42
43
 
43
44
  ef = OpenSSL::X509::ExtensionFactory.new
44
45
 
@@ -60,16 +61,26 @@ module Puppet::SSLCertificates
60
61
  key_usage = %w{cRLSign keyCertSign}
61
62
  when :server:
62
63
  basic_constraint = "CA:FALSE"
64
+ dnsnames = Puppet[:certdnsnames]
65
+ name = hash[:name].to_s.sub(%r{/CN=},'')
66
+ if dnsnames != ""
67
+ dnsnames.split(':').each { |d| subject_alt_name << 'DNS:' + d }
68
+ subject_alt_name << 'DNS:' + name # Add the fqdn as an alias
69
+ elsif name == Facter.value(:fqdn) # we're a CA server, and thus probably the server
70
+ subject_alt_name << 'DNS:' + "puppet" # Add 'puppet' as an alias
71
+ subject_alt_name << 'DNS:' + name # Add the fqdn as an alias
72
+ subject_alt_name << 'DNS:' + name.sub(/^[^.]+./, "puppet.") # add puppet.domain as an alias
73
+ end
63
74
  key_usage = %w{digitalSignature keyEncipherment}
64
- ext_key_usage = %w{serverAuth clientAuth}
75
+ ext_key_usage = %w{serverAuth clientAuth}
65
76
  when :ocsp:
66
77
  basic_constraint = "CA:FALSE"
67
78
  key_usage = %w{nonRepudiation digitalSignature}
68
- ext_key_usage = %w{serverAuth OCSPSigning}
79
+ ext_key_usage = %w{serverAuth OCSPSigning}
69
80
  when :client:
70
81
  basic_constraint = "CA:FALSE"
71
82
  key_usage = %w{nonRepudiation digitalSignature keyEncipherment}
72
- ext_key_usage = %w{clientAuth emailProtection}
83
+ ext_key_usage = %w{clientAuth emailProtection}
73
84
  ex << ef.create_extension("nsCertType", "client,email")
74
85
  else
75
86
  raise Puppet::Error, "unknown cert type '%s'" % hash[:type]
@@ -80,12 +91,9 @@ module Puppet::SSLCertificates
80
91
  ex << ef.create_extension("basicConstraints", basic_constraint, true)
81
92
  ex << ef.create_extension("subjectKeyIdentifier", "hash")
82
93
 
83
- if key_usage
84
- ex << ef.create_extension("keyUsage", key_usage.join(","))
85
- end
86
- if ext_key_usage
87
- ex << ef.create_extension("extendedKeyUsage", ext_key_usage.join(","))
88
- end
94
+ ex << ef.create_extension("keyUsage", key_usage.join(",")) if key_usage
95
+ ex << ef.create_extension("extendedKeyUsage", ext_key_usage.join(",")) if ext_key_usage
96
+ ex << ef.create_extension("subjectAltName", subject_alt_name.join(",")) if ! subject_alt_name.empty?
89
97
 
90
98
  #if @ca_config[:cdp_location] then
91
99
  # ex << ef.create_extension("crlDistributionPoints",
@@ -99,10 +107,7 @@ module Puppet::SSLCertificates
99
107
  cert.extensions = ex
100
108
 
101
109
  # for some reason this _must_ be the last extension added
102
- if hash[:type] == :ca
103
- ex << ef.create_extension("authorityKeyIdentifier",
104
- "keyid:always,issuer:always")
105
- end
110
+ ex << ef.create_extension("authorityKeyIdentifier", "keyid:always,issuer:always") if hash[:type] == :ca
106
111
 
107
112
  return cert
108
113
  end
@@ -142,4 +147,3 @@ module Puppet::SSLCertificates
142
147
  require 'puppet/sslcertificates/ca'
143
148
  end
144
149
 
145
- # $Id: sslcertificates.rb 2463 2007-05-04 23:09:34Z luke $
@@ -1,3 +1,5 @@
1
+ require 'sync'
2
+
1
3
  class Puppet::SSLCertificates::CA
2
4
  include Puppet::Util::Warnings
3
5
 
@@ -51,7 +53,7 @@ class Puppet::SSLCertificates::CA
51
53
  end
52
54
 
53
55
  def initialize(hash = {})
54
- Puppet.config.use(:main, :ca, :ssl)
56
+ Puppet.settings.use(:main, :ca, :ssl)
55
57
  self.setconfig(hash)
56
58
 
57
59
  if Puppet[:capass]
@@ -71,7 +73,7 @@ class Puppet::SSLCertificates::CA
71
73
  self.getcert
72
74
  init_crl
73
75
  unless FileTest.exists?(@config[:serial])
74
- Puppet.config.write(:serial) do |f|
76
+ Puppet.settings.write(:serial) do |f|
75
77
  f << "%04X" % 1
76
78
  end
77
79
  end
@@ -83,7 +85,7 @@ class Puppet::SSLCertificates::CA
83
85
  20.times { pass += (rand(74) + 48).chr }
84
86
 
85
87
  begin
86
- Puppet.config.write(:capass) { |f| f.print pass }
88
+ Puppet.settings.write(:capass) { |f| f.print pass }
87
89
  rescue Errno::EACCES => detail
88
90
  raise Puppet::Error, detail.to_s
89
91
  end
@@ -140,6 +142,16 @@ class Puppet::SSLCertificates::CA
140
142
  }
141
143
  end
142
144
 
145
+ # List signed certificates. This returns a list of hostnames, not actual
146
+ # files -- the names can be converted to full paths with host2csrfile.
147
+ def list_signed
148
+ return Dir.entries(Puppet[:signeddir]).find_all { |file|
149
+ file =~ /\.pem$/
150
+ }.collect { |file|
151
+ file.sub(/\.pem$/, '')
152
+ }
153
+ end
154
+
143
155
  # Create the root certificate.
144
156
  def mkrootcert
145
157
  # Make the root cert's name the FQDN of the host running the CA.
@@ -161,10 +173,10 @@ class Puppet::SSLCertificates::CA
161
173
  Puppet::Util::SUIDManager.asuser(Puppet[:user], Puppet[:group]) do
162
174
  @cert = cert.mkselfsigned
163
175
  end
164
- Puppet.config.write(:cacert) do |f|
176
+ Puppet.settings.write(:cacert) do |f|
165
177
  f.puts @cert.to_pem
166
178
  end
167
- Puppet.config.write(:capub) do |f|
179
+ Puppet.settings.write(:capub) do |f|
168
180
  f.puts @cert.public_key
169
181
  end
170
182
  return cert
@@ -199,7 +211,7 @@ class Puppet::SSLCertificates::CA
199
211
  # Take the Puppet config and store it locally.
200
212
  def setconfig(hash)
201
213
  @config = {}
202
- Puppet.config.params("ca").each { |param|
214
+ Puppet.settings.params("ca").each { |param|
203
215
  param = param.intern if param.is_a? String
204
216
  if hash.include?(param)
205
217
  @config[param] = hash[param]
@@ -226,6 +238,33 @@ class Puppet::SSLCertificates::CA
226
238
  }
227
239
  end
228
240
 
241
+ # Create an exclusive lock for reading and writing, and do the
242
+ # writing in a tmp file.
243
+ def readwritelock(file, mode = 0600)
244
+ tmpfile = file + ".tmp"
245
+ sync = Sync.new
246
+ unless FileTest.directory?(File.dirname(tmpfile))
247
+ raise Puppet::DevError, "Cannot create %s; directory %s does not exist" %
248
+ [file, File.dirname(file)]
249
+ end
250
+ sync.synchronize(Sync::EX) do
251
+ File.open(file, "r+", mode) do |rf|
252
+ rf.lock_exclusive do
253
+ File.open(tmpfile, "w", mode) do |tf|
254
+ yield tf
255
+ end
256
+ begin
257
+ File.rename(tmpfile, file)
258
+ rescue => detail
259
+ Puppet.err "Could not rename %s to %s: %s" %
260
+ [file, tmpfile, detail]
261
+ end
262
+ end
263
+ end
264
+ end
265
+ end
266
+
267
+
229
268
  # Sign a given certificate request.
230
269
  def sign(csr)
231
270
  unless csr.is_a?(OpenSSL::X509::Request)
@@ -238,7 +277,14 @@ class Puppet::SSLCertificates::CA
238
277
  raise Puppet::Error, "CSR sign verification failed"
239
278
  end
240
279
 
241
- serial = File.read(@config[:serial]).chomp.hex
280
+ serial = nil
281
+ readwritelock(@config[:serial]) { |f|
282
+ serial = File.read(@config[:serial]).chomp.hex
283
+
284
+ # increment the serial
285
+ f << "%04X" % (serial + 1)
286
+ }
287
+
242
288
  newcert = Puppet::SSLCertificates.mkcert(
243
289
  :type => :server,
244
290
  :name => csr.subject,
@@ -248,10 +294,6 @@ class Puppet::SSLCertificates::CA
248
294
  :publickey => csr.public_key
249
295
  )
250
296
 
251
- # increment the serial
252
- Puppet.config.write(:serial) do |f|
253
- f << "%04X" % (serial + 1)
254
- end
255
297
 
256
298
  sign_with_key(newcert)
257
299
 
@@ -271,7 +313,7 @@ class Puppet::SSLCertificates::CA
271
313
  raise Puppet::Error, "Certificate request for %s already exists" % host
272
314
  end
273
315
 
274
- Puppet.config.writesub(:csrdir, csrfile) do |f|
316
+ Puppet.settings.writesub(:csrdir, csrfile) do |f|
275
317
  f.print csr.to_pem
276
318
  end
277
319
  end
@@ -287,7 +329,7 @@ class Puppet::SSLCertificates::CA
287
329
  end
288
330
 
289
331
  Puppet::SSLCertificates::Inventory::add(cert)
290
- Puppet.config.writesub(:signeddir, certfile) do |f|
332
+ Puppet.settings.writesub(:signeddir, certfile) do |f|
291
333
  f.print cert.to_pem
292
334
  end
293
335
  end
@@ -357,7 +399,7 @@ class Puppet::SSLCertificates::CA
357
399
  @crl.next_update = now + 5 * 365*24*60*60
358
400
 
359
401
  sign_with_key(@crl)
360
- Puppet.config.write(:cacrl) do |f|
402
+ Puppet.settings.write(:cacrl) do |f|
361
403
  f.puts @crl.to_pem
362
404
  end
363
405
  end
@@ -382,4 +424,3 @@ class Puppet::SSLCertificates::CA
382
424
  end
383
425
  end
384
426
 
385
- # $Id: ca.rb 2463 2007-05-04 23:09:34Z luke $
@@ -280,4 +280,3 @@ class Puppet::SSLCertificates::Certificate
280
280
  end
281
281
  end
282
282
 
283
- # $Id: certificate.rb 1581 2006-09-13 16:50:43Z lutter $
@@ -11,11 +11,8 @@ module Puppet::SSLCertificates
11
11
  inited = false
12
12
  end
13
13
 
14
- Puppet.config.write(:cert_inventory, "a") do |f|
15
- unless inited
16
- f.puts self.init
17
- end
18
- f.puts format(cert)
14
+ Puppet.settings.write(:cert_inventory, "a") do |f|
15
+ f.puts((inited ? nil : self.init).to_s + format(cert))
19
16
  end
20
17
  end
21
18
 
@@ -40,4 +37,3 @@ module Puppet::SSLCertificates
40
37
  end
41
38
  end
42
39
 
43
- # $Id$
@@ -0,0 +1,6 @@
1
+ # This is the file that we use to add indirection to all the SSL Certificate classes.
2
+
3
+ require 'puppet/indirector'
4
+
5
+ OpenSSL::PKey::RSA.extend Puppet::Indirector
6
+ OpenSSL::PKey::RSA.indirects :ssl_rsa, :terminus_class => :file
@@ -44,7 +44,7 @@ module Puppet::SSLCertificates::Support
44
44
  unless instance_variable_get(var)
45
45
  unless cert = send(reader)
46
46
  cert = send(maker)
47
- Puppet.config.write(param) { |f| f.puts cert.to_pem }
47
+ Puppet.settings.write(param) { |f| f.puts cert.to_pem }
48
48
  end
49
49
  instance_variable_set(var, cert)
50
50
  end
@@ -59,7 +59,7 @@ module Puppet::SSLCertificates::Support
59
59
 
60
60
  # Our key meta programming can only handle one file, so we have
61
61
  # to separately write out the public key.
62
- Puppet.config.write(:hostpubkey) do |f|
62
+ Puppet.settings.write(:hostpubkey) do |f|
63
63
  f.print key.public_key.to_pem
64
64
  end
65
65
  return key
@@ -104,8 +104,8 @@ module Puppet::SSLCertificates::Support
104
104
  if cert.nil? or cert == ""
105
105
  return nil
106
106
  end
107
- Puppet.config.write(:hostcert) do |f| f.print cert end
108
- Puppet.config.write(:localcacert) do |f| f.print cacert end
107
+ Puppet.settings.write(:hostcert) do |f| f.print cert end
108
+ Puppet.settings.write(:localcacert) do |f| f.print cacert end
109
109
  #File.open(@certfile, "w", 0644) { |f| f.print cert }
110
110
  #File.open(@cacertfile, "w", 0644) { |f| f.print cacert }
111
111
  begin
@@ -125,4 +125,3 @@ module Puppet::SSLCertificates::Support
125
125
  end
126
126
  end
127
127
 
128
- # $Id: support.rb 2259 2007-03-06 19:03:05Z luke $
@@ -6,10 +6,14 @@ require 'puppet/propertychange'
6
6
 
7
7
  module Puppet
8
8
  class Transaction
9
- attr_accessor :component, :resources, :ignoreschedules, :ignoretags
10
- attr_accessor :relgraph, :sorted_resources, :configurator
9
+ attr_accessor :component, :catalog, :ignoreschedules
10
+ attr_accessor :sorted_resources, :configurator
11
11
 
12
+ # The report, once generated.
12
13
  attr_reader :report
14
+
15
+ # The list of events generated in this transaction.
16
+ attr_reader :events
13
17
 
14
18
  attr_writer :tags
15
19
 
@@ -22,13 +26,14 @@ class Transaction
22
26
  end
23
27
  end
24
28
 
25
- # Check to see if we should actually allow deleition.
29
+ # Check to see if we should actually allow processing, but this really only
30
+ # matters when a resource is getting deleted.
26
31
  def allow_processing?(resource, changes)
27
32
  # If a resource is going to be deleted but it still has
28
33
  # dependencies, then don't delete it unless it's implicit or the
29
34
  # dependency is itself being deleted.
30
35
  if resource.purging? and resource.deleting?
31
- if deps = @relgraph.dependents(resource) and ! deps.empty? and deps.detect { |d| ! d.deleting? }
36
+ if deps = relationship_graph.dependents(resource) and ! deps.empty? and deps.detect { |d| ! d.deleting? }
32
37
  resource.warning "%s still depend%s on me -- not purging" %
33
38
  [deps.collect { |r| r.ref }.join(","), deps.length > 1 ? "":"s"]
34
39
  return false
@@ -38,6 +43,16 @@ class Transaction
38
43
  return true
39
44
  end
40
45
 
46
+ # Are there any failed resources in this transaction?
47
+ def any_failed?
48
+ failures = @failures.inject(0) { |failures, array| failures += array[1]; failures }
49
+ if failures > 0
50
+ failures
51
+ else
52
+ false
53
+ end
54
+ end
55
+
41
56
  # Apply all changes for a resource, returning a list of the events
42
57
  # generated.
43
58
  def apply(resource)
@@ -129,6 +144,9 @@ class Transaction
129
144
  # Find all of the changed resources.
130
145
  def changed?
131
146
  @changes.find_all { |change| change.changed }.collect { |change|
147
+ unless change.property.resource
148
+ raise "No resource for %s" % change.inspect
149
+ end
132
150
  change.property.resource
133
151
  }.uniq
134
152
  end
@@ -137,14 +155,8 @@ class Transaction
137
155
  # contained resources might never get cleaned up.
138
156
  def cleanup
139
157
  if defined? @generated
140
- @generated.each do |resource|
141
- resource.remove
142
- end
143
- end
144
- if defined? @relgraph
145
- @relgraph.clear
158
+ relationship_graph.remove_resource(*@generated)
146
159
  end
147
- @resources.clear
148
160
  end
149
161
 
150
162
  # Copy an important relationships from the parent to the newly-generated
@@ -158,10 +170,11 @@ class Transaction
158
170
  else
159
171
  edge = [resource, gen_child]
160
172
  end
161
- unless @relgraph.edge?(edge[1], edge[0])
162
- @relgraph.add_edge!(*edge)
173
+ relationship_graph.add_resource(gen_child) unless relationship_graph.resource(gen_child.ref)
174
+
175
+ unless relationship_graph.edge?(edge[1], edge[0])
176
+ relationship_graph.add_edge!(*edge)
163
177
  else
164
- @relgraph.add_vertex!(gen_child)
165
178
  resource.debug "Skipping automatic relationship to %s" % gen_child
166
179
  end
167
180
  end
@@ -189,11 +202,7 @@ class Transaction
189
202
  end
190
203
 
191
204
  if children
192
- children.each do |child|
193
- child.finish
194
- # Make sure that the vertex is in the relationship graph.
195
- @relgraph.add_vertex!(child)
196
- end
205
+ children.each { |child| child.finish }
197
206
  @generated += children
198
207
  return children
199
208
  end
@@ -265,9 +274,12 @@ class Transaction
265
274
  # Collect the targets of any subscriptions to those events. We pass
266
275
  # the parent resource in so it will override the source in the events,
267
276
  # since eval_generated children can't have direct relationships.
268
- @relgraph.matching_edges(events, resource).each do |edge|
269
- edge = edge.dup
270
- label = edge.label
277
+ relationship_graph.matching_edges(events, resource).each do |orig_edge|
278
+ # We have to dup the label here, else we modify the original edge label,
279
+ # which affects whether a given event will match on the next run, which is,
280
+ # of course, bad.
281
+ edge = orig_edge.class.new(orig_edge.source, orig_edge.target)
282
+ label = orig_edge.label.dup
271
283
  label[:event] = events.collect { |e| e.event }
272
284
  edge.label = label
273
285
  set_trigger(edge)
@@ -282,9 +294,7 @@ class Transaction
282
294
  # necessary events.
283
295
  def evaluate
284
296
  @count = 0
285
-
286
- graph(@resources, :resources)
287
-
297
+
288
298
  # Start logging.
289
299
  Puppet::Util::Log.newdestination(@report)
290
300
 
@@ -301,7 +311,7 @@ class Transaction
301
311
  ret = eval_resource(resource)
302
312
  end
303
313
 
304
- if Puppet[:evaltrace]
314
+ if Puppet[:evaltrace] and @catalog.host_config?
305
315
  resource.info "Evaluated in %0.2f seconds" % seconds
306
316
  end
307
317
  ret
@@ -314,6 +324,7 @@ class Transaction
314
324
  Puppet.debug "Finishing transaction %s with %s changes" %
315
325
  [self.object_id, @count]
316
326
 
327
+ @events = allevents
317
328
  allevents
318
329
  end
319
330
 
@@ -333,7 +344,7 @@ class Transaction
333
344
  # enough to check the immediate dependencies, which is why we use
334
345
  # a tree from the reversed graph.
335
346
  skip = false
336
- deps = @relgraph.dependencies(resource)
347
+ deps = relationship_graph.dependencies(resource)
337
348
  deps.each do |dep|
338
349
  if fails = failed?(dep)
339
350
  resource.notice "Dependency %s[%s] has %s failures" %
@@ -347,7 +358,7 @@ class Transaction
347
358
 
348
359
  # Collect any dynamically generated resources.
349
360
  def generate
350
- list = @resources.vertices
361
+ list = @catalog.vertices
351
362
 
352
363
  # Store a list of all generated resources, so that we can clean them up
353
364
  # after the transaction closes.
@@ -369,7 +380,8 @@ class Transaction
369
380
  end
370
381
  made.uniq!
371
382
  made.each do |res|
372
- @resources.add_vertex!(res)
383
+ @catalog.add_resource(res)
384
+ res.catalog = catalog
373
385
  newlist << res
374
386
  @generated << res
375
387
  res.finish
@@ -410,32 +422,24 @@ class Transaction
410
422
  return @report
411
423
  end
412
424
 
413
- # Produce the graph files if requested.
414
- def graph(gr, name)
415
- # We don't want to graph the configuration process.
416
- return if self.configurator
417
-
418
- return unless Puppet[:graph]
419
-
420
- Puppet.config.use(:graphing)
421
-
422
- file = File.join(Puppet[:graphdir], "%s.dot" % name.to_s)
423
- File.open(file, "w") { |f|
424
- f.puts gr.to_dot("name" => name.to_s.capitalize)
425
- }
425
+ # Should we ignore tags?
426
+ def ignore_tags?
427
+ ! @catalog.host_config?
426
428
  end
427
429
 
428
430
  # this should only be called by a Puppet::Type::Component resource now
429
431
  # and it should only receive an array
430
432
  def initialize(resources)
431
- if resources.is_a?(Puppet::PGraph)
432
- @resources = resources
433
+ if resources.is_a?(Puppet::Node::Catalog)
434
+ @catalog = resources
435
+ elsif resources.is_a?(Puppet::PGraph)
436
+ raise "Transactions should get catalogs now, not PGraph"
433
437
  else
434
- @resources = resources.to_graph
438
+ raise "Transactions require catalogs"
435
439
  end
436
440
 
437
441
  @resourcemetrics = {
438
- :total => @resources.vertices.length,
442
+ :total => @catalog.vertices.length,
439
443
  :out_of_sync => 0, # The number of resources that had changes
440
444
  :applied => 0, # The number of resources fixed
441
445
  :skipped => 0, # The number of resources skipped
@@ -474,7 +478,7 @@ class Transaction
474
478
  # types, just providers.
475
479
  def prefetch
476
480
  prefetchers = {}
477
- @resources.each do |resource|
481
+ @catalog.vertices.each do |resource|
478
482
  if provider = resource.provider and provider.class.respond_to?(:prefetch)
479
483
  prefetchers[provider.class] ||= {}
480
484
  prefetchers[provider.class][resource.title] = resource
@@ -501,48 +505,49 @@ class Transaction
501
505
 
502
506
  # Now add any dynamically generated resources
503
507
  generate()
504
-
505
- # Create a relationship graph from our resource graph
506
- @relgraph = relationship_graph
507
508
 
508
509
  # This will throw an error if there are cycles in the graph.
509
- @sorted_resources = @relgraph.topsort
510
+ @sorted_resources = relationship_graph.topsort
510
511
  end
511
-
512
- # Create a graph of all of the relationships in our resource graph.
512
+
513
513
  def relationship_graph
514
- graph = Puppet::PGraph.new
515
-
516
- # First create the dependency graph
517
- @resources.vertices.each do |vertex|
518
- graph.add_vertex!(vertex)
519
- vertex.builddepends.each do |edge|
520
- graph.add_edge!(edge)
521
- end
514
+ catalog.relationship_graph
515
+ end
516
+
517
+ # Send off the transaction report.
518
+ def send_report
519
+ begin
520
+ report = generate_report()
521
+ rescue => detail
522
+ Puppet.err "Could not generate report: %s" % detail
523
+ return
524
+ end
525
+
526
+ if Puppet[:rrdgraph] == true
527
+ report.graph()
528
+ end
529
+
530
+ if Puppet[:summarize]
531
+ puts report.summary
522
532
  end
523
533
 
524
- # Lastly, add in any autorequires
525
- graph.vertices.each do |vertex|
526
- vertex.autorequire.each do |edge|
527
- unless graph.edge?(edge)
528
- unless graph.edge?(edge.target, edge.source)
529
- vertex.debug "Autorequiring %s" % [edge.source]
530
- graph.add_edge!(edge)
531
- else
532
- vertex.debug "Skipping automatic relationship with %s" % (edge.source == vertex ? edge.target : edge.source)
533
- end
534
- end
534
+ if Puppet[:report]
535
+ begin
536
+ reportclient().report(report)
537
+ rescue => detail
538
+ Puppet.err "Reporting failed: %s" % detail
535
539
  end
536
540
  end
537
-
538
- graph(graph, :relationships)
539
-
540
- # Then splice in the container information
541
- graph.splice!(@resources, Puppet::Type::Component)
541
+ end
542
542
 
543
- graph(graph, :expanded_relationships)
544
-
545
- return graph
543
+ def reportclient
544
+ unless defined? @reportclient
545
+ @reportclient = Puppet::Network::Client.report.new(
546
+ :Server => Puppet[:reportserver]
547
+ )
548
+ end
549
+
550
+ @reportclient
546
551
  end
547
552
 
548
553
  # Roll all completed changes back.
@@ -572,7 +577,7 @@ class Transaction
572
577
  end
573
578
 
574
579
  # FIXME This won't work right now.
575
- @relgraph.matching_edges(events).each do |edge|
580
+ relationship_graph.matching_edges(events).each do |edge|
576
581
  @targets[edge.target] << edge
577
582
  end
578
583
 
@@ -606,7 +611,7 @@ class Transaction
606
611
  # Should this resource be skipped?
607
612
  def skip?(resource)
608
613
  skip = false
609
- if ! tagged?(resource)
614
+ if missing_tags?(resource)
610
615
  resource.debug "Not tagged with %s" % tags.join(", ")
611
616
  elsif ! scheduled?(resource)
612
617
  resource.debug "Not scheduled"
@@ -620,29 +625,22 @@ class Transaction
620
625
 
621
626
  # The tags we should be checking.
622
627
  def tags
623
- # Allow the tags to be overridden
624
628
  unless defined? @tags
625
- @tags = Puppet[:tags]
626
- end
627
-
628
- unless defined? @processed_tags
629
- if @tags.nil? or @tags == ""
629
+ tags = Puppet[:tags]
630
+ if tags.nil? or tags == ""
630
631
  @tags = []
631
632
  else
632
- @tags = [@tags] unless @tags.is_a? Array
633
- @tags = @tags.collect do |tag|
634
- tag.split(/\s*,\s*/)
635
- end.flatten
633
+ @tags = tags.split(/\s*,\s*/)
636
634
  end
637
- @processed_tags = true
638
635
  end
639
636
 
640
637
  @tags
641
638
  end
642
639
 
643
640
  # Is this resource tagged appropriately?
644
- def tagged?(resource)
645
- self.ignoretags or tags.empty? or resource.tagged?(tags)
641
+ def missing_tags?(resource)
642
+ return false if self.ignore_tags? or tags.empty?
643
+ return true unless resource.tagged?(tags)
646
644
  end
647
645
 
648
646
  # Are there any edges that target this resource?
@@ -737,4 +735,3 @@ end
737
735
 
738
736
  require 'puppet/transaction/report'
739
737
 
740
- # $Id: transaction.rb 2678 2007-07-11 19:30:42Z luke $