puppet 0.18.4 → 0.22.4

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 (673) hide show
  1. data/CHANGELOG +288 -0
  2. data/README +2 -2
  3. data/Rakefile +78 -5
  4. data/bin/puppet +28 -36
  5. data/bin/puppetca +81 -38
  6. data/bin/puppetd +65 -62
  7. data/bin/puppetdoc +409 -140
  8. data/bin/puppetmasterd +59 -47
  9. data/bin/puppetrun +38 -23
  10. data/conf/freebsd/puppetd +26 -0
  11. data/conf/freebsd/puppetmasterd +26 -0
  12. data/conf/gentoo/conf.d/puppet +5 -0
  13. data/conf/gentoo/conf.d/puppetmaster +12 -0
  14. data/conf/gentoo/init.d/puppet +38 -0
  15. data/conf/gentoo/init.d/puppetmaster +50 -0
  16. data/conf/gentoo/puppet/fileserver.conf +12 -0
  17. data/conf/gentoo/puppet/puppetca.conf +29 -0
  18. data/conf/gentoo/puppet/puppetd.conf +29 -0
  19. data/conf/gentoo/puppet/puppetmasterd.conf +29 -0
  20. data/conf/redhat/client.init +10 -5
  21. data/conf/redhat/client.sysconfig +1 -1
  22. data/conf/redhat/fileserver.conf +2 -2
  23. data/conf/redhat/logrotate +1 -1
  24. data/conf/redhat/no-lockdir.patch +13 -0
  25. data/conf/redhat/puppet.spec +65 -8
  26. data/conf/redhat/puppetd.conf +0 -4
  27. data/conf/redhat/server.init +3 -6
  28. data/conf/solaris/pkginfo +1 -1
  29. data/conf/solaris/smf/svc-puppetd +2 -2
  30. data/conf/suse/client.init +142 -0
  31. data/conf/suse/puppet.spec +221 -0
  32. data/conf/suse/server.init +162 -0
  33. data/examples/code/mac_automount.pp +16 -0
  34. data/examples/root/bin/sleeper +3 -5
  35. data/examples/root/etc/init.d/sleeper +8 -2
  36. data/examples/root/etc/puppet/fileserver.conf +12 -2
  37. data/examples/root/etc/puppet/namespaceauth.conf +20 -0
  38. data/examples/root/etc/puppet/puppetd.conf +4 -0
  39. data/examples/root/etc/puppet/puppetmasterd.conf +6 -9
  40. data/examples/root/etc/puppet/tagmail.conf +1 -0
  41. data/ext/emacs/puppet-mode.el +46 -1
  42. data/ext/logcheck/puppet +15 -0
  43. data/ext/module_puppet +15 -23
  44. data/ext/vim/puppet.vim +4 -2
  45. data/install.rb +2 -1
  46. data/lib/puppet.rb +76 -207
  47. data/lib/puppet/configuration.rb +331 -0
  48. data/lib/puppet/daemon.rb +63 -246
  49. data/lib/puppet/dsl.rb +371 -0
  50. data/lib/puppet/element.rb +8 -26
  51. data/lib/puppet/error.rb +54 -0
  52. data/lib/puppet/event.rb +8 -243
  53. data/lib/puppet/{base64.rb → external/base64.rb} +0 -0
  54. data/lib/puppet/external/event-loop.rb +1 -0
  55. data/lib/puppet/{event-loop → external/event-loop}/better-definers.rb +0 -0
  56. data/lib/puppet/{event-loop → external/event-loop}/event-loop.rb +2 -2
  57. data/lib/puppet/{event-loop → external/event-loop}/signal-system.rb +1 -1
  58. data/lib/puppet/external/gratr.rb +33 -0
  59. data/lib/puppet/external/gratr/adjacency_graph.rb +257 -0
  60. data/lib/puppet/external/gratr/base.rb +34 -0
  61. data/lib/puppet/external/gratr/biconnected.rb +116 -0
  62. data/lib/puppet/external/gratr/chinese_postman.rb +123 -0
  63. data/lib/puppet/external/gratr/common.rb +73 -0
  64. data/lib/puppet/external/gratr/comparability.rb +92 -0
  65. data/lib/puppet/external/gratr/digraph.rb +116 -0
  66. data/lib/puppet/external/gratr/digraph_distance.rb +185 -0
  67. data/lib/puppet/external/gratr/dot.rb +90 -0
  68. data/lib/puppet/external/gratr/edge.rb +145 -0
  69. data/lib/puppet/external/gratr/graph.rb +303 -0
  70. data/lib/puppet/external/gratr/graph_api.rb +83 -0
  71. data/lib/puppet/external/gratr/import.rb +44 -0
  72. data/lib/puppet/external/gratr/labels.rb +90 -0
  73. data/lib/puppet/external/gratr/maximum_flow.rb +64 -0
  74. data/lib/puppet/external/gratr/rdot.rb +327 -0
  75. data/lib/puppet/external/gratr/search.rb +409 -0
  76. data/lib/puppet/external/gratr/strong_components.rb +127 -0
  77. data/lib/puppet/external/gratr/undirected_graph.rb +153 -0
  78. data/lib/puppet/{lock.rb → external/lock.rb} +1 -1
  79. data/lib/puppet/feature/base.rb +20 -0
  80. data/lib/puppet/feature/rails.rb +52 -0
  81. data/lib/puppet/metatype/attributes.rb +719 -0
  82. data/lib/puppet/metatype/closure.rb +111 -0
  83. data/lib/puppet/metatype/container.rb +94 -0
  84. data/lib/puppet/metatype/evaluation.rb +118 -0
  85. data/lib/puppet/metatype/instances.rb +261 -0
  86. data/lib/puppet/metatype/manager.rb +169 -0
  87. data/lib/puppet/metatype/metaparams.rb +409 -0
  88. data/lib/puppet/metatype/providers.rb +260 -0
  89. data/lib/puppet/metatype/relationships.rb +116 -0
  90. data/lib/puppet/metatype/schedules.rb +39 -0
  91. data/lib/puppet/metatype/tags.rb +39 -0
  92. data/lib/puppet/modules.rb +113 -0
  93. data/lib/puppet/network/authconfig.rb +168 -0
  94. data/lib/puppet/network/authorization.rb +84 -0
  95. data/lib/puppet/network/authstore.rb +293 -0
  96. data/lib/puppet/network/client.rb +187 -0
  97. data/lib/puppet/network/client/ca.rb +56 -0
  98. data/lib/puppet/network/client/dipper.rb +81 -0
  99. data/lib/puppet/network/client/file.rb +7 -0
  100. data/lib/puppet/network/client/logger.rb +6 -0
  101. data/lib/puppet/network/client/master.rb +644 -0
  102. data/lib/puppet/{client → network/client}/proxy.rb +3 -3
  103. data/lib/puppet/{client/reporter.rb → network/client/report.rb} +4 -7
  104. data/lib/puppet/{client/pelement.rb → network/client/resource.rb} +6 -19
  105. data/lib/puppet/network/client/runner.rb +13 -0
  106. data/lib/puppet/network/client/status.rb +5 -0
  107. data/lib/puppet/network/client_request.rb +32 -0
  108. data/lib/puppet/network/handler.rb +33 -0
  109. data/lib/puppet/{server → network/handler}/ca.rb +5 -6
  110. data/lib/puppet/network/handler/filebucket.rb +180 -0
  111. data/lib/puppet/{server → network/handler}/fileserver.rb +277 -219
  112. data/lib/puppet/{server → network/handler}/logger.rb +3 -5
  113. data/lib/puppet/{server → network/handler}/master.rb +42 -8
  114. data/lib/puppet/network/handler/report.rb +158 -0
  115. data/lib/puppet/network/handler/resource.rb +190 -0
  116. data/lib/puppet/{server → network/handler}/runner.rb +17 -18
  117. data/lib/puppet/network/handler/status.rb +13 -0
  118. data/lib/puppet/network/rights.rb +74 -0
  119. data/lib/puppet/network/server.rb +5 -0
  120. data/lib/puppet/network/server/mongrel.rb +138 -0
  121. data/lib/puppet/network/server/webrick.rb +153 -0
  122. data/lib/puppet/network/xmlrpc/client.rb +129 -0
  123. data/lib/puppet/network/xmlrpc/processor.rb +91 -0
  124. data/lib/puppet/network/xmlrpc/server.rb +20 -0
  125. data/lib/puppet/network/xmlrpc/webrick_servlet.rb +121 -0
  126. data/lib/puppet/parameter.rb +390 -346
  127. data/lib/puppet/parser/ast.rb +116 -147
  128. data/lib/puppet/parser/ast/astarray.rb +17 -33
  129. data/lib/puppet/parser/ast/branch.rb +2 -0
  130. data/lib/puppet/parser/ast/caseopt.rb +7 -12
  131. data/lib/puppet/parser/ast/casestatement.rb +23 -32
  132. data/lib/puppet/parser/ast/collection.rb +19 -80
  133. data/lib/puppet/parser/ast/collexpr.rb +81 -0
  134. data/lib/puppet/parser/ast/component.rb +160 -89
  135. data/lib/puppet/parser/ast/else.rb +30 -0
  136. data/lib/puppet/parser/ast/function.rb +9 -2
  137. data/lib/puppet/parser/ast/hostclass.rb +47 -131
  138. data/lib/puppet/parser/ast/ifstatement.rb +43 -0
  139. data/lib/puppet/parser/ast/leaf.rb +10 -21
  140. data/lib/puppet/parser/ast/node.rb +32 -79
  141. data/lib/puppet/parser/ast/resourcedef.rb +222 -0
  142. data/lib/puppet/parser/ast/{typedefaults.rb → resourcedefaults.rb} +10 -16
  143. data/lib/puppet/parser/ast/resourceoverride.rb +62 -0
  144. data/lib/puppet/parser/ast/{objectparam.rb → resourceparam.rb} +12 -6
  145. data/lib/puppet/parser/ast/resourceref.rb +44 -0
  146. data/lib/puppet/parser/ast/selector.rb +16 -8
  147. data/lib/puppet/parser/ast/tag.rb +3 -1
  148. data/lib/puppet/parser/ast/vardef.rb +8 -12
  149. data/lib/puppet/parser/collector.rb +181 -0
  150. data/lib/puppet/parser/functions.rb +191 -36
  151. data/lib/puppet/parser/interpreter.rb +802 -380
  152. data/lib/puppet/parser/lexer.rb +86 -19
  153. data/lib/puppet/parser/parser.rb +1123 -960
  154. data/lib/puppet/parser/resource.rb +353 -0
  155. data/lib/puppet/parser/resource/param.rb +57 -0
  156. data/lib/puppet/parser/resource/reference.rb +71 -0
  157. data/lib/puppet/parser/scope.rb +573 -1000
  158. data/lib/puppet/parser/templatewrapper.rb +54 -0
  159. data/lib/puppet/pgraph.rb +208 -0
  160. data/lib/puppet/propertychange.rb +143 -0
  161. data/lib/puppet/provider.rb +302 -0
  162. data/lib/puppet/provider/cron/crontab.rb +187 -0
  163. data/lib/puppet/provider/group/groupadd.rb +29 -0
  164. data/lib/puppet/provider/group/netinfo.rb +12 -0
  165. data/lib/puppet/provider/group/pw.rb +31 -0
  166. data/lib/puppet/provider/host/netinfo.rb +18 -0
  167. data/lib/puppet/provider/host/parsed.rb +73 -0
  168. data/lib/puppet/provider/mount.rb +57 -0
  169. data/lib/puppet/provider/mount/netinfo.rb +38 -0
  170. data/lib/puppet/provider/mount/parsed.rb +37 -0
  171. data/lib/puppet/provider/nameservice.rb +344 -0
  172. data/lib/puppet/provider/nameservice/netinfo.rb +210 -0
  173. data/lib/puppet/provider/nameservice/objectadd.rb +45 -0
  174. data/lib/puppet/provider/nameservice/pw.rb +22 -0
  175. data/lib/puppet/provider/package/apple.rb +53 -0
  176. data/lib/puppet/provider/package/apt.rb +119 -0
  177. data/lib/puppet/provider/package/aptitude.rb +30 -0
  178. data/lib/puppet/provider/package/aptrpm.rb +79 -0
  179. data/lib/puppet/provider/package/blastwave.rb +114 -0
  180. data/lib/puppet/provider/package/darwinport.rb +88 -0
  181. data/lib/puppet/provider/package/dpkg.rb +109 -0
  182. data/lib/puppet/provider/package/freebsd.rb +43 -0
  183. data/lib/puppet/provider/package/gem.rb +104 -0
  184. data/lib/puppet/provider/package/openbsd.rb +93 -0
  185. data/lib/puppet/provider/package/pkgdmg.rb +119 -0
  186. data/lib/puppet/provider/package/portage.rb +112 -0
  187. data/lib/puppet/provider/package/ports.rb +94 -0
  188. data/lib/puppet/provider/package/rpm.rb +125 -0
  189. data/lib/puppet/provider/package/rug.rb +53 -0
  190. data/lib/puppet/provider/package/sun.rb +168 -0
  191. data/lib/puppet/provider/package/sunfreeware.rb +9 -0
  192. data/lib/puppet/provider/package/up2date.rb +45 -0
  193. data/lib/puppet/provider/package/yum.rb +54 -0
  194. data/lib/puppet/provider/parsedfile.rb +342 -0
  195. data/lib/puppet/provider/port/parsed.rb +174 -0
  196. data/lib/puppet/provider/service/base.rb +136 -0
  197. data/lib/puppet/provider/service/debian.rb +32 -0
  198. data/lib/puppet/provider/service/gentoo.rb +49 -0
  199. data/lib/puppet/{type → provider}/service/init.rb +42 -40
  200. data/lib/puppet/provider/service/redhat.rb +59 -0
  201. data/lib/puppet/{type → provider}/service/smf.rb +24 -13
  202. data/lib/puppet/provider/sshkey/parsed.rb +36 -0
  203. data/lib/puppet/provider/user/netinfo.rb +106 -0
  204. data/lib/puppet/provider/user/pw.rb +41 -0
  205. data/lib/puppet/provider/user/useradd.rb +67 -0
  206. data/lib/puppet/provider/zone/solaris.rb +208 -0
  207. data/lib/puppet/rails.rb +102 -66
  208. data/lib/puppet/rails/database/001_add_indexes.rb +38 -0
  209. data/lib/puppet/rails/database/schema.rb +89 -0
  210. data/lib/puppet/rails/external/tagging/acts_as_taggable.rb +62 -0
  211. data/lib/puppet/rails/external/tagging/init.rb +5 -0
  212. data/lib/puppet/rails/external/tagging/tag.rb +50 -0
  213. data/lib/puppet/rails/external/tagging/tagging.rb +12 -0
  214. data/lib/puppet/rails/fact_name.rb +7 -0
  215. data/lib/puppet/rails/fact_value.rb +5 -0
  216. data/lib/puppet/rails/host.rb +95 -46
  217. data/lib/puppet/rails/param_name.rb +28 -0
  218. data/lib/puppet/rails/param_value.rb +5 -0
  219. data/lib/puppet/rails/puppet_class.rb +9 -0
  220. data/lib/puppet/rails/resource.rb +95 -0
  221. data/lib/puppet/rails/source_file.rb +5 -0
  222. data/lib/puppet/relationship.rb +63 -0
  223. data/lib/puppet/reports/log.rb +14 -0
  224. data/lib/puppet/reports/rrdgraph.rb +114 -10
  225. data/lib/puppet/reports/store.rb +64 -0
  226. data/lib/puppet/reports/tagmail.rb +144 -71
  227. data/lib/puppet/sslcertificates.rb +38 -5
  228. data/lib/puppet/sslcertificates/ca.rb +142 -37
  229. data/lib/puppet/sslcertificates/certificate.rb +3 -3
  230. data/lib/puppet/sslcertificates/inventory.rb +53 -0
  231. data/lib/puppet/sslcertificates/support.rb +128 -0
  232. data/lib/puppet/transaction.rb +568 -189
  233. data/lib/puppet/transaction/report.rb +14 -3
  234. data/lib/puppet/transportable.rb +18 -10
  235. data/lib/puppet/type.rb +279 -2299
  236. data/lib/puppet/type/component.rb +63 -63
  237. data/lib/puppet/type/cron.rb +294 -710
  238. data/lib/puppet/type/exec.rb +185 -129
  239. data/lib/puppet/type/group.rb +38 -89
  240. data/lib/puppet/type/host.rb +110 -0
  241. data/lib/puppet/type/mount.rb +189 -0
  242. data/lib/puppet/type/notify.rb +47 -0
  243. data/lib/puppet/type/package.rb +129 -257
  244. data/lib/puppet/type/parsedtype.rb +172 -297
  245. data/lib/puppet/type/pfile.rb +540 -319
  246. data/lib/puppet/type/pfile/checksum.rb +103 -76
  247. data/lib/puppet/type/pfile/content.rb +16 -10
  248. data/lib/puppet/type/pfile/ensure.rb +52 -34
  249. data/lib/puppet/type/pfile/group.rb +25 -18
  250. data/lib/puppet/type/pfile/mode.rb +7 -4
  251. data/lib/puppet/type/pfile/{uid.rb → owner.rb} +21 -17
  252. data/lib/puppet/type/pfile/source.rb +119 -124
  253. data/lib/puppet/type/pfile/target.rb +29 -45
  254. data/lib/puppet/type/pfile/type.rb +2 -2
  255. data/lib/puppet/type/pfilebucket.rb +18 -14
  256. data/lib/puppet/type/port.rb +121 -0
  257. data/lib/puppet/type/property.rb +530 -0
  258. data/lib/puppet/type/resources.rb +150 -0
  259. data/lib/puppet/type/schedule.rb +38 -22
  260. data/lib/puppet/type/service.rb +70 -326
  261. data/lib/puppet/type/sshkey.rb +76 -0
  262. data/lib/puppet/type/tidy.rb +197 -97
  263. data/lib/puppet/type/user.rb +107 -183
  264. data/lib/puppet/type/yumrepo.rb +53 -34
  265. data/lib/puppet/type/zone.rb +55 -208
  266. data/lib/puppet/util.rb +239 -201
  267. data/lib/puppet/util/autoload.rb +107 -0
  268. data/lib/puppet/util/classgen.rb +208 -0
  269. data/lib/puppet/{config.rb → util/config.rb} +102 -54
  270. data/lib/puppet/util/docs.rb +104 -0
  271. data/lib/puppet/util/errors.rb +55 -0
  272. data/lib/puppet/util/execution.rb +22 -0
  273. data/lib/puppet/util/feature.rb +76 -0
  274. data/lib/puppet/util/fileparsing.rb +380 -0
  275. data/lib/puppet/util/filetype.rb +300 -0
  276. data/lib/puppet/util/graph.rb +39 -0
  277. data/lib/puppet/util/inifile.rb +209 -0
  278. data/lib/puppet/util/loadedfile.rb +71 -0
  279. data/lib/puppet/util/log.rb +549 -0
  280. data/lib/puppet/util/logging.rb +20 -0
  281. data/lib/puppet/util/metaid.rb +22 -0
  282. data/lib/puppet/util/methodhelper.rb +37 -0
  283. data/lib/puppet/util/metric.rb +160 -0
  284. data/lib/puppet/util/package.rb +31 -0
  285. data/lib/puppet/util/pidlock.rb +68 -0
  286. data/lib/puppet/util/plist.rb +24 -0
  287. data/lib/puppet/util/plist/generator.rb +226 -0
  288. data/lib/puppet/util/plist/parser.rb +227 -0
  289. data/lib/puppet/util/posix.rb +87 -0
  290. data/lib/puppet/util/provider_features.rb +170 -0
  291. data/lib/puppet/util/rails/collection_merger.rb +42 -0
  292. data/lib/puppet/util/storage.rb +103 -0
  293. data/lib/puppet/util/subclass_loader.rb +83 -0
  294. data/lib/puppet/util/suidmanager.rb +86 -0
  295. data/lib/puppet/util/variables.rb +39 -0
  296. data/lib/puppet/util/warnings.rb +15 -0
  297. data/test/Rakefile +97 -0
  298. data/test/certmgr/ca.rb +81 -0
  299. data/test/certmgr/certmgr.rb +77 -50
  300. data/test/certmgr/inventory.rb +79 -0
  301. data/test/certmgr/support.rb +81 -0
  302. data/test/executables/filebucket.rb +49 -0
  303. data/test/executables/puppetbin.rb +28 -12
  304. data/test/executables/puppetca.rb +75 -54
  305. data/test/executables/puppetd.rb +10 -13
  306. data/test/executables/puppetmasterd.rb +12 -17
  307. data/test/executables/puppetmodule.rb +18 -17
  308. data/test/language/ast.rb +242 -798
  309. data/test/language/ast/casestatement.rb +104 -0
  310. data/test/language/ast/component.rb +133 -0
  311. data/test/language/ast/hostclass.rb +162 -0
  312. data/test/language/ast/selector.rb +62 -0
  313. data/test/language/ast/variable.rb +31 -0
  314. data/test/language/collector.rb +369 -0
  315. data/test/language/functions.rb +305 -18
  316. data/test/language/interpreter.rb +894 -125
  317. data/test/language/lexer.rb +98 -12
  318. data/test/language/node.rb +37 -53
  319. data/test/language/parser.rb +455 -148
  320. data/test/language/resource.rb +535 -0
  321. data/test/language/scope.rb +451 -561
  322. data/test/language/snippets.rb +101 -111
  323. data/test/language/transportable.rb +6 -8
  324. data/test/lib/mocha.rb +19 -0
  325. data/test/lib/mocha/any_instance_method.rb +35 -0
  326. data/test/lib/mocha/auto_verify.rb +113 -0
  327. data/test/lib/mocha/central.rb +35 -0
  328. data/test/lib/mocha/class_method.rb +62 -0
  329. data/test/lib/mocha/expectation.rb +295 -0
  330. data/test/lib/mocha/expectation_error.rb +6 -0
  331. data/test/lib/mocha/infinite_range.rb +27 -0
  332. data/test/lib/mocha/inspect.rb +37 -0
  333. data/test/lib/mocha/instance_method.rb +8 -0
  334. data/test/lib/mocha/metaclass.rb +7 -0
  335. data/test/lib/mocha/mock.rb +20 -0
  336. data/test/lib/mocha/mock_methods.rb +122 -0
  337. data/test/lib/mocha/object.rb +100 -0
  338. data/test/lib/mocha/pretty_parameters.rb +28 -0
  339. data/test/lib/mocha/setup_and_teardown.rb +23 -0
  340. data/test/lib/mocha/standalone.rb +30 -0
  341. data/test/lib/mocha/test_case_adapter.rb +49 -0
  342. data/test/lib/mocha_standalone.rb +2 -0
  343. data/test/lib/puppettest.rb +294 -0
  344. data/test/lib/puppettest/certificates.rb +61 -0
  345. data/test/lib/puppettest/exetest.rb +123 -0
  346. data/test/lib/puppettest/fakes.rb +194 -0
  347. data/test/lib/puppettest/fileparsing.rb +33 -0
  348. data/test/lib/puppettest/filetesting.rb +231 -0
  349. data/test/lib/puppettest/graph.rb +41 -0
  350. data/test/lib/puppettest/parsertesting.rb +392 -0
  351. data/test/lib/puppettest/railstesting.rb +56 -0
  352. data/test/lib/puppettest/reporttesting.rb +19 -0
  353. data/test/lib/puppettest/resourcetesting.rb +73 -0
  354. data/test/lib/puppettest/servertest.rb +72 -0
  355. data/test/lib/puppettest/support.rb +8 -0
  356. data/test/lib/puppettest/support/assertions.rb +101 -0
  357. data/test/lib/puppettest/support/helpers.rb +23 -0
  358. data/test/lib/puppettest/support/resources.rb +37 -0
  359. data/test/lib/puppettest/support/utils.rb +160 -0
  360. data/test/lib/puppettest/testcase.rb +48 -0
  361. data/test/lib/rake/puppet_test_loader.rb +17 -0
  362. data/test/lib/rake/puppet_testtask.rb +17 -0
  363. data/test/lib/spec.rb +8 -0
  364. data/test/lib/spec/callback.rb +11 -0
  365. data/test/lib/spec/callback/callback_container.rb +60 -0
  366. data/test/lib/spec/callback/extensions/module.rb +24 -0
  367. data/test/lib/spec/callback/extensions/object.rb +37 -0
  368. data/test/lib/spec/deprecated.rb +3 -0
  369. data/test/lib/spec/expectations.rb +59 -0
  370. data/test/lib/spec/expectations/differs/default.rb +62 -0
  371. data/test/lib/spec/expectations/errors.rb +6 -0
  372. data/test/lib/spec/expectations/extensions.rb +3 -0
  373. data/test/lib/spec/expectations/extensions/object.rb +109 -0
  374. data/test/lib/spec/expectations/extensions/proc.rb +57 -0
  375. data/test/lib/spec/expectations/extensions/string_and_symbol.rb +17 -0
  376. data/test/lib/spec/expectations/handler.rb +47 -0
  377. data/test/lib/spec/expectations/should.rb +5 -0
  378. data/test/lib/spec/expectations/should/base.rb +64 -0
  379. data/test/lib/spec/expectations/should/change.rb +69 -0
  380. data/test/lib/spec/expectations/should/have.rb +128 -0
  381. data/test/lib/spec/expectations/should/not.rb +74 -0
  382. data/test/lib/spec/expectations/should/should.rb +81 -0
  383. data/test/lib/spec/expectations/sugar.rb +47 -0
  384. data/test/lib/spec/matchers.rb +160 -0
  385. data/test/lib/spec/matchers/be.rb +161 -0
  386. data/test/lib/spec/matchers/be_close.rb +37 -0
  387. data/test/lib/spec/matchers/change.rb +120 -0
  388. data/test/lib/spec/matchers/eql.rb +43 -0
  389. data/test/lib/spec/matchers/equal.rb +43 -0
  390. data/test/lib/spec/matchers/has.rb +44 -0
  391. data/test/lib/spec/matchers/have.rb +140 -0
  392. data/test/lib/spec/matchers/include.rb +50 -0
  393. data/test/lib/spec/matchers/match.rb +41 -0
  394. data/test/lib/spec/matchers/raise_error.rb +100 -0
  395. data/test/lib/spec/matchers/respond_to.rb +35 -0
  396. data/test/lib/spec/matchers/satisfy.rb +47 -0
  397. data/test/lib/spec/matchers/throw_symbol.rb +75 -0
  398. data/test/lib/spec/mocks.rb +232 -0
  399. data/test/lib/spec/mocks/argument_expectation.rb +132 -0
  400. data/test/lib/spec/mocks/error_generator.rb +85 -0
  401. data/test/lib/spec/mocks/errors.rb +10 -0
  402. data/test/lib/spec/mocks/extensions/object.rb +3 -0
  403. data/test/lib/spec/mocks/message_expectation.rb +231 -0
  404. data/test/lib/spec/mocks/methods.rb +40 -0
  405. data/test/lib/spec/mocks/mock.rb +26 -0
  406. data/test/lib/spec/mocks/mock_handler.rb +166 -0
  407. data/test/lib/spec/mocks/order_group.rb +29 -0
  408. data/test/lib/spec/rake/spectask.rb +173 -0
  409. data/test/lib/spec/rake/verify_rcov.rb +47 -0
  410. data/test/lib/spec/runner.rb +132 -0
  411. data/test/lib/spec/runner/backtrace_tweaker.rb +55 -0
  412. data/test/lib/spec/runner/command_line.rb +34 -0
  413. data/test/lib/spec/runner/context.rb +154 -0
  414. data/test/lib/spec/runner/context_eval.rb +142 -0
  415. data/test/lib/spec/runner/context_runner.rb +55 -0
  416. data/test/lib/spec/runner/drb_command_line.rb +21 -0
  417. data/test/lib/spec/runner/execution_context.rb +17 -0
  418. data/test/lib/spec/runner/extensions/kernel.rb +17 -0
  419. data/test/lib/spec/runner/extensions/object.rb +32 -0
  420. data/test/lib/spec/runner/formatter.rb +5 -0
  421. data/test/lib/spec/runner/formatter/base_text_formatter.rb +118 -0
  422. data/test/lib/spec/runner/formatter/html_formatter.rb +219 -0
  423. data/test/lib/spec/runner/formatter/progress_bar_formatter.rb +27 -0
  424. data/test/lib/spec/runner/formatter/rdoc_formatter.rb +22 -0
  425. data/test/lib/spec/runner/formatter/specdoc_formatter.rb +23 -0
  426. data/test/lib/spec/runner/heckle_runner.rb +71 -0
  427. data/test/lib/spec/runner/heckle_runner_win.rb +10 -0
  428. data/test/lib/spec/runner/option_parser.rb +224 -0
  429. data/test/lib/spec/runner/reporter.rb +105 -0
  430. data/test/lib/spec/runner/spec_matcher.rb +25 -0
  431. data/test/lib/spec/runner/spec_parser.rb +41 -0
  432. data/test/lib/spec/runner/spec_should_raise_handler.rb +74 -0
  433. data/test/lib/spec/runner/specification.rb +114 -0
  434. data/test/lib/spec/translator.rb +87 -0
  435. data/test/lib/spec/version.rb +30 -0
  436. data/test/lib/stubba.rb +2 -0
  437. data/test/network/authconfig.rb +72 -0
  438. data/test/network/authorization.rb +138 -0
  439. data/test/network/authstore.rb +450 -0
  440. data/test/network/client/ca.rb +38 -0
  441. data/test/{client → network/client}/client.rb +107 -24
  442. data/test/network/client/dipper.rb +35 -0
  443. data/test/network/client/master.rb +627 -0
  444. data/test/{client/pelement.rb → network/client/resource.rb} +13 -29
  445. data/test/network/client_request.rb +39 -0
  446. data/test/network/daemon.rb +71 -0
  447. data/test/{server → network/handler}/bucket.rb +103 -27
  448. data/test/{server → network/handler}/ca.rb +14 -19
  449. data/test/{server → network/handler}/fileserver.rb +443 -68
  450. data/test/network/handler/handler.rb +64 -0
  451. data/test/{server → network/handler}/logger.rb +26 -26
  452. data/test/network/handler/master.rb +352 -0
  453. data/test/network/handler/report.rb +185 -0
  454. data/test/{server/pelement.rb → network/handler/resource.rb} +25 -38
  455. data/test/{server → network/handler}/runner.rb +17 -16
  456. data/test/network/rights.rb +38 -0
  457. data/test/network/server/webrick.rb +140 -0
  458. data/test/network/xmlrpc/client.rb +68 -0
  459. data/test/network/xmlrpc/processor.rb +80 -0
  460. data/test/network/xmlrpc/server.rb +28 -0
  461. data/test/network/xmlrpc/webrick_servlet.rb +26 -0
  462. data/test/other/dsl.rb +218 -0
  463. data/test/other/events.rb +22 -15
  464. data/test/other/overrides.rb +9 -14
  465. data/test/other/pgraph.rb +289 -0
  466. data/test/other/propertychange.rb +142 -0
  467. data/test/other/provider.rb +162 -0
  468. data/test/other/puppet.rb +63 -10
  469. data/test/other/relationship.rb +74 -0
  470. data/test/other/relationships.rb +199 -123
  471. data/test/other/report.rb +152 -23
  472. data/test/other/transactions.rb +824 -78
  473. data/test/puppet/conffiles.rb +16 -11
  474. data/test/puppet/defaults.rb +7 -10
  475. data/test/puppet/{error.rb → errortest.rb} +5 -8
  476. data/test/puppet/modules.rb +58 -0
  477. data/test/puppet/tc_suidmanager.rb +107 -0
  478. data/test/rails/host.rb +177 -0
  479. data/test/rails/rails.rb +27 -0
  480. data/test/rails/railsparameter.rb +62 -0
  481. data/test/rails/railsresource.rb +100 -0
  482. data/test/ral/manager/attributes.rb +296 -0
  483. data/test/ral/manager/manager.rb +55 -0
  484. data/test/ral/manager/provider.rb +54 -0
  485. data/test/ral/manager/type.rb +837 -0
  486. data/test/ral/providers/cron/crontab.rb +346 -0
  487. data/test/ral/providers/group.rb +252 -0
  488. data/test/ral/providers/host/netinfo.rb +58 -0
  489. data/test/ral/providers/host/parsed.rb +226 -0
  490. data/test/ral/providers/mount/netinfo.rb +80 -0
  491. data/test/ral/providers/mount/parsed.rb +223 -0
  492. data/test/ral/providers/nameservice.rb +33 -0
  493. data/test/ral/providers/package.rb +253 -0
  494. data/test/ral/providers/package/apt.rb +89 -0
  495. data/test/ral/providers/package/aptitude.rb +69 -0
  496. data/test/ral/providers/package/aptrpm.rb +89 -0
  497. data/test/ral/providers/package/dpkg.rb +64 -0
  498. data/test/ral/providers/parsedfile.rb +668 -0
  499. data/test/ral/providers/parsedport.rb +233 -0
  500. data/test/ral/providers/provider.rb +423 -0
  501. data/test/{types → ral/providers}/service.rb +20 -121
  502. data/test/ral/providers/service/base.rb +75 -0
  503. data/test/ral/providers/sshkey/parsed.rb +111 -0
  504. data/test/ral/providers/user.rb +567 -0
  505. data/test/ral/providers/user/useradd.rb +250 -0
  506. data/test/ral/types/basic.rb +90 -0
  507. data/test/ral/types/component.rb +113 -0
  508. data/test/ral/types/cron.rb +480 -0
  509. data/test/{types → ral/types}/exec.rb +278 -82
  510. data/test/ral/types/file.rb +1799 -0
  511. data/test/ral/types/file/target.rb +363 -0
  512. data/test/{types → ral/types}/filebucket.rb +15 -17
  513. data/test/{types → ral/types}/fileignoresource.rb +9 -15
  514. data/test/ral/types/filesources.rb +1046 -0
  515. data/test/ral/types/group.rb +169 -0
  516. data/test/ral/types/host.rb +155 -0
  517. data/test/ral/types/mount.rb +312 -0
  518. data/test/ral/types/package.rb +85 -0
  519. data/test/ral/types/parameter.rb +172 -0
  520. data/test/ral/types/port.rb +148 -0
  521. data/test/ral/types/property.rb +343 -0
  522. data/test/ral/types/resources.rb +221 -0
  523. data/test/{types → ral/types}/schedule.rb +34 -12
  524. data/test/ral/types/service.rb +37 -0
  525. data/test/{types → ral/types}/sshkey.rb +75 -65
  526. data/test/ral/types/tidy.rb +240 -0
  527. data/test/ral/types/user.rb +493 -0
  528. data/test/{types → ral/types}/yumrepo.rb +7 -11
  529. data/test/{types → ral/types}/zone.rb +45 -45
  530. data/test/tagging/tagging.rb +17 -26
  531. data/test/util/autoload.rb +130 -0
  532. data/test/util/classgen.rb +227 -0
  533. data/test/{other → util}/config.rb +373 -113
  534. data/test/util/execution.rb +34 -0
  535. data/test/util/features.rb +94 -0
  536. data/test/util/fileparsing.rb +677 -0
  537. data/test/{other → util}/filetype.rb +9 -12
  538. data/test/util/graph.rb +108 -0
  539. data/test/{other → util}/inifile.rb +24 -11
  540. data/test/util/loadedfile.rb +106 -0
  541. data/test/{other → util}/log.rb +96 -50
  542. data/test/{other → util}/metrics.rb +7 -17
  543. data/test/util/package.rb +27 -0
  544. data/test/util/pidlock.rb +126 -0
  545. data/test/util/posixtest.rb +173 -0
  546. data/test/util/storage.rb +123 -0
  547. data/test/util/subclass_loader.rb +100 -0
  548. data/test/util/utiltest.rb +368 -0
  549. metadata +449 -169
  550. data/examples/code/classing +0 -35
  551. data/examples/code/failers/badclassnoparam +0 -10
  552. data/examples/code/failers/badclassparam +0 -10
  553. data/examples/code/failers/badcompnoparam +0 -9
  554. data/examples/code/failers/badcompparam +0 -9
  555. data/examples/code/failers/badtypeparam +0 -3
  556. data/examples/code/failers/noobjectrvalue +0 -1
  557. data/examples/code/snippets/aliastest.pp +0 -16
  558. data/examples/code/snippets/argumentdefaults +0 -14
  559. data/examples/code/snippets/casestatement.pp +0 -58
  560. data/examples/code/snippets/classheirarchy.pp +0 -15
  561. data/examples/code/snippets/classincludes.pp +0 -17
  562. data/examples/code/snippets/classpathtest +0 -11
  563. data/examples/code/snippets/componentmetaparams.pp +0 -11
  564. data/examples/code/snippets/deepclassheirarchy.pp +0 -23
  565. data/examples/code/snippets/defineoverrides.pp +0 -17
  566. data/examples/code/snippets/dirchmod +0 -19
  567. data/examples/code/snippets/emptyclass.pp +0 -9
  568. data/examples/code/snippets/emptyexec.pp +0 -3
  569. data/examples/code/snippets/failmissingexecpath.pp +0 -13
  570. data/examples/code/snippets/falsevalues.pp +0 -3
  571. data/examples/code/snippets/filecreate +0 -11
  572. data/examples/code/snippets/implicititeration +0 -15
  573. data/examples/code/snippets/multipleinstances +0 -7
  574. data/examples/code/snippets/namevartest +0 -9
  575. data/examples/code/snippets/scopetest +0 -13
  576. data/examples/code/snippets/selectorvalues.pp +0 -42
  577. data/examples/code/snippets/simpledefaults +0 -5
  578. data/examples/code/snippets/simpleselector +0 -38
  579. data/examples/code/snippets/singleary.pp +0 -19
  580. data/examples/code/snippets/singlequote.pp +0 -11
  581. data/examples/code/snippets/singleselector.pp +0 -22
  582. data/examples/code/snippets/tag.pp +0 -9
  583. data/examples/code/snippets/tagged.pp +0 -35
  584. data/lib/puppet/client.rb +0 -177
  585. data/lib/puppet/client/ca.rb +0 -21
  586. data/lib/puppet/client/dipper.rb +0 -76
  587. data/lib/puppet/client/file.rb +0 -20
  588. data/lib/puppet/client/log.rb +0 -17
  589. data/lib/puppet/client/master.rb +0 -531
  590. data/lib/puppet/client/runner.rb +0 -17
  591. data/lib/puppet/client/status.rb +0 -7
  592. data/lib/puppet/event-loop.rb +0 -1
  593. data/lib/puppet/filetype.rb +0 -308
  594. data/lib/puppet/inifile.rb +0 -201
  595. data/lib/puppet/log.rb +0 -524
  596. data/lib/puppet/metric.rb +0 -132
  597. data/lib/puppet/networkclient.rb +0 -175
  598. data/lib/puppet/parsedfile.rb +0 -58
  599. data/lib/puppet/parser/ast/classdef.rb +0 -79
  600. data/lib/puppet/parser/ast/compdef.rb +0 -75
  601. data/lib/puppet/parser/ast/nodedef.rb +0 -73
  602. data/lib/puppet/parser/ast/objectdef.rb +0 -284
  603. data/lib/puppet/parser/ast/objectref.rb +0 -77
  604. data/lib/puppet/rails/database.rb +0 -40
  605. data/lib/puppet/rails/rails_object.rb +0 -42
  606. data/lib/puppet/rails/rails_parameter.rb +0 -5
  607. data/lib/puppet/server.rb +0 -196
  608. data/lib/puppet/server/authconfig.rb +0 -177
  609. data/lib/puppet/server/authstore.rb +0 -226
  610. data/lib/puppet/server/filebucket.rb +0 -155
  611. data/lib/puppet/server/pelement.rb +0 -188
  612. data/lib/puppet/server/report.rb +0 -184
  613. data/lib/puppet/server/rights.rb +0 -78
  614. data/lib/puppet/server/servlet.rb +0 -274
  615. data/lib/puppet/statechange.rb +0 -129
  616. data/lib/puppet/storage.rb +0 -98
  617. data/lib/puppet/type/nameservice.rb +0 -264
  618. data/lib/puppet/type/nameservice/netinfo.rb +0 -232
  619. data/lib/puppet/type/nameservice/objectadd.rb +0 -146
  620. data/lib/puppet/type/nameservice/posix.rb +0 -12
  621. data/lib/puppet/type/nameservice/pw.rb +0 -107
  622. data/lib/puppet/type/package/apple.rb +0 -41
  623. data/lib/puppet/type/package/apt.rb +0 -107
  624. data/lib/puppet/type/package/blastwave.rb +0 -136
  625. data/lib/puppet/type/package/darwinport.rb +0 -97
  626. data/lib/puppet/type/package/dpkg.rb +0 -113
  627. data/lib/puppet/type/package/freebsd.rb +0 -19
  628. data/lib/puppet/type/package/gem.rb +0 -119
  629. data/lib/puppet/type/package/openbsd.rb +0 -112
  630. data/lib/puppet/type/package/ports.rb +0 -103
  631. data/lib/puppet/type/package/rpm.rb +0 -121
  632. data/lib/puppet/type/package/sun.rb +0 -174
  633. data/lib/puppet/type/package/sunfreeware.rb +0 -7
  634. data/lib/puppet/type/package/yum.rb +0 -52
  635. data/lib/puppet/type/parsedtype/host.rb +0 -144
  636. data/lib/puppet/type/parsedtype/mount.rb +0 -271
  637. data/lib/puppet/type/parsedtype/port.rb +0 -261
  638. data/lib/puppet/type/parsedtype/sshkey.rb +0 -123
  639. data/lib/puppet/type/service/base.rb +0 -12
  640. data/lib/puppet/type/service/debian.rb +0 -46
  641. data/lib/puppet/type/service/redhat.rb +0 -38
  642. data/lib/puppet/type/state.rb +0 -393
  643. data/lib/puppet/type/symlink.rb +0 -186
  644. data/test/client/master.rb +0 -207
  645. data/test/language/rails.rb +0 -105
  646. data/test/other/parsedfile.rb +0 -58
  647. data/test/other/storage.rb +0 -100
  648. data/test/puppet/utiltest.rb +0 -299
  649. data/test/puppettest.rb +0 -1170
  650. data/test/server/authconfig.rb +0 -56
  651. data/test/server/authstore.rb +0 -218
  652. data/test/server/master.rb +0 -201
  653. data/test/server/report.rb +0 -93
  654. data/test/server/rights.rb +0 -41
  655. data/test/server/server.rb +0 -152
  656. data/test/test +0 -61
  657. data/test/types/basic.rb +0 -117
  658. data/test/types/component.rb +0 -298
  659. data/test/types/cron.rb +0 -718
  660. data/test/types/file.rb +0 -1314
  661. data/test/types/filesources.rb +0 -590
  662. data/test/types/group.rb +0 -323
  663. data/test/types/host.rb +0 -186
  664. data/test/types/mount.rb +0 -294
  665. data/test/types/package.rb +0 -538
  666. data/test/types/parameter.rb +0 -107
  667. data/test/types/port.rb +0 -201
  668. data/test/types/query.rb +0 -101
  669. data/test/types/state.rb +0 -92
  670. data/test/types/symlink.rb +0 -120
  671. data/test/types/tidy.rb +0 -102
  672. data/test/types/type.rb +0 -469
  673. data/test/types/user.rb +0 -563
@@ -1,42 +0,0 @@
1
- require 'puppet'
2
- require 'puppet/rails/rails_parameter'
3
-
4
- #RailsParameter = Puppet::Rails::RailsParameter
5
- class Puppet::Rails::RailsObject < ActiveRecord::Base
6
- has_many :rails_parameters, :dependent => :delete_all
7
- serialize :tags, Array
8
-
9
- belongs_to :host
10
-
11
- # Add a set of parameters.
12
- def addparams(params)
13
- params.each do |pname, pvalue|
14
- rails_parameters.build(
15
- :name => pname,
16
- :value => pvalue
17
- )
18
-
19
- #self.rails_parameters << pobj
20
- end
21
- end
22
-
23
- # Convert our object to a trans_object. Do not retain whether the object
24
- # is collectable, though, since that would cause it to get stripped
25
- # from the configuration.
26
- def to_trans
27
- obj = Puppet::TransObject.new(name(), ptype())
28
-
29
- [:file, :line, :tags].each do |method|
30
- if val = send(method)
31
- obj.send(method.to_s + "=", val)
32
- end
33
- end
34
- rails_parameters.each do |param|
35
- obj[param.name] = param.value
36
- end
37
-
38
- return obj
39
- end
40
- end
41
-
42
- # $Id: rails_object.rb 1192 2006-05-14 02:42:21Z luke $
@@ -1,5 +0,0 @@
1
- class Puppet::Rails::RailsParameter < ActiveRecord::Base
2
- belongs_to :rails_objects
3
- end
4
-
5
- # $Id: rails_parameter.rb 1187 2006-05-13 04:52:34Z luke $
@@ -1,196 +0,0 @@
1
- # the server
2
- #
3
- # allow things to connect to us and communicate, and stuff
4
-
5
- require 'puppet'
6
- require 'puppet/daemon'
7
-
8
- $noservernetworking = false
9
-
10
- begin
11
- require 'webrick'
12
- require 'webrick/https'
13
- require 'cgi'
14
- require 'xmlrpc/server'
15
- require 'xmlrpc/client'
16
- rescue LoadError => detail
17
- $noservernetworking = detail
18
- end
19
-
20
- module Puppet
21
- class ServerError < RuntimeError; end
22
- #---------------------------------------------------------------
23
- if $noservernetworking
24
- Puppet.err "Could not create server: %s" % $noservernetworking
25
- class Server; end
26
- else
27
- class Server < WEBrick::HTTPServer
28
- include Puppet::Daemon
29
-
30
- Puppet.config.setdefaults(:puppetd,
31
- :listen => [false, "Whether puppetd should listen for
32
- connections. If this is true, then by default only the
33
- ``runner`` server is started, which allows remote authorized
34
- and authenticated nodes to connect and trigger ``puppetd``
35
- runs."]
36
- )
37
-
38
- # Create our config object if necessary. This works even if
39
- # there's no configuration file.
40
- def authconfig
41
- unless defined? @authconfig
42
- @authconfig = Puppet::Server::AuthConfig.new()
43
- end
44
-
45
- @authconfig
46
- end
47
-
48
- def initialize(hash = {})
49
- Puppet.info "Starting server for Puppet version %s" % Puppet.version
50
- daemonize = nil
51
- if hash.include?(:Daemonize)
52
- daemonize = hash[:Daemonize]
53
- end
54
-
55
- # FIXME we should have some kind of access control here, using
56
- # :RequestHandler
57
- hash[:Port] ||= Puppet[:masterport]
58
- hash[:Logger] ||= self.httplog
59
- hash[:AccessLog] ||= [
60
- [ self.httplog, WEBrick::AccessLog::COMMON_LOG_FORMAT ],
61
- [ self.httplog, WEBrick::AccessLog::REFERER_LOG_FORMAT ]
62
- ]
63
-
64
- if hash.include?(:Handlers)
65
- unless hash[:Handlers].is_a?(Hash)
66
- raise ServerError, "Handlers must have arguments"
67
- end
68
-
69
- @handlers = hash[:Handlers].collect { |handler, args|
70
- hclass = nil
71
- unless hclass = Handler.handler(handler)
72
- raise ServerError, "Invalid handler %s" % handler
73
- end
74
- hclass.new(args)
75
- }
76
- else
77
- raise ServerError, "A server must have handlers"
78
- end
79
-
80
- # okay, i need to retrieve my cert and set it up, somehow
81
- # the default case will be that i'm also the ca
82
- if ca = @handlers.find { |handler| handler.is_a?(Puppet::Server::CA) }
83
- @driver = ca
84
- @secureinit = true
85
- self.fqdn
86
- else
87
- if hash.include?(:NoSecureInit)
88
- @secureinit = false
89
- else
90
- @secureinit = true
91
- end
92
- end
93
-
94
- unless self.readcert
95
- unless self.requestcert
96
- raise Puppet::Error, "Cannot start without certificates"
97
- end
98
- end
99
-
100
- hash[:SSLCertificate] = @cert
101
- hash[:SSLPrivateKey] = @key
102
- hash[:SSLStartImmediately] = true
103
- hash[:SSLEnable] = true
104
- hash[:SSLCACertificateFile] = @cacertfile
105
- hash[:SSLVerifyClient] = OpenSSL::SSL::VERIFY_PEER
106
- hash[:SSLCertName] = nil
107
-
108
- super(hash)
109
-
110
- Puppet.info "Listening on port %s" % hash[:Port]
111
-
112
- # this creates a new servlet for every connection,
113
- # but all servlets have the same list of handlers
114
- # thus, the servlets can have their own state -- passing
115
- # around the requests and such -- but the handlers
116
- # have a global state
117
-
118
- # mount has to be called after the server is initialized
119
- self.mount("/RPC2", Puppet::Server::Servlet, @handlers)
120
- end
121
-
122
- # the base class for the different handlers
123
- class Handler
124
- attr_accessor :server
125
- @subclasses = []
126
-
127
- def self.each
128
- @subclasses.each { |c| yield c }
129
- end
130
-
131
- def self.handler(name)
132
- name = name.to_s.downcase
133
- @subclasses.find { |h|
134
- h.name.to_s.downcase == name
135
- }
136
- end
137
-
138
- def self.inherited(sub)
139
- @subclasses << sub
140
- end
141
-
142
- def self.interface
143
- if defined? @interface
144
- return @interface
145
- else
146
- raise Puppet::DevError, "Handler %s has no defined interface" %
147
- self
148
- end
149
- end
150
-
151
- def self.name
152
- unless defined? @name
153
- @name = self.to_s.sub(/.+::/, '').intern
154
- end
155
-
156
- return @name
157
- end
158
-
159
- def initialize(hash = {})
160
- end
161
- end
162
-
163
-
164
- class ServerStatus < Handler
165
-
166
- @interface = XMLRPC::Service::Interface.new("status") { |iface|
167
- iface.add_method("int status()")
168
- }
169
-
170
- @name = :Status
171
-
172
- def status(status = nil, client = nil, clientip = nil)
173
- return 1
174
- end
175
- end
176
-
177
- end
178
- end
179
-
180
- #---------------------------------------------------------------
181
- end
182
-
183
- require 'puppet/server/authstore'
184
- require 'puppet/server/authconfig'
185
- require 'puppet/server/servlet'
186
- require 'puppet/server/master'
187
- require 'puppet/server/ca'
188
- require 'puppet/server/fileserver'
189
- require 'puppet/server/filebucket'
190
- require 'puppet/server/pelement'
191
- require 'puppet/server/runner'
192
- require 'puppet/server/logger'
193
- require 'puppet/server/report'
194
- require 'puppet/client'
195
-
196
- # $Id: server.rb 1339 2006-06-29 20:32:17Z luke $
@@ -1,177 +0,0 @@
1
- require 'puppet/parsedfile'
2
- require 'puppet/server/rights'
3
-
4
- module Puppet
5
- class Server
6
-
7
- class ConfigurationError < Puppet::Error; end
8
-
9
- class AuthConfig < Puppet::ParsedFile
10
- Puppet.config.setdefaults(:puppet,
11
- :authconfig => [ "$confdir/namespaceauth.conf",
12
- "The configuration file that defines the rights to the different
13
- namespaces and methods. This can be used as a coarse-grained
14
- authorization system for both ``puppetd`` and ``puppetmasterd``."
15
- ]
16
- )
17
-
18
- # Just proxy the setting methods to our rights stuff
19
- [:allow, :deny].each do |method|
20
- define_method(method) do |*args|
21
- @rights.send(method, *args)
22
- end
23
- end
24
-
25
- # Here we add a little bit of semantics. They can set auth on a whole namespace
26
- # or on just a single method in the namespace.
27
- def allowed?(name, host, ip)
28
- namespace, method = name.to_s.split(".")
29
- unless namespace and method
30
- raise ArgumentError, "Invalid method name %s" % name
31
- end
32
-
33
- name = name.intern if name.is_a? String
34
- namespace = namespace.intern
35
- method = method.intern
36
-
37
- read()
38
-
39
- if @rights.include?(name)
40
- return @rights[name].allowed?(host, ip)
41
- elsif @rights.include?(namespace)
42
- return @rights[namespace].allowed?(host, ip)
43
- else
44
- return false
45
- end
46
- end
47
-
48
- # Does the file exist? Puppetmasterd does not require it, but
49
- # puppetd does.
50
- def exists?
51
- FileTest.exists?(@file)
52
- end
53
-
54
- def initialize(file = nil, parsenow = true)
55
- @file ||= Puppet[:authconfig]
56
-
57
- unless @file
58
- raise Puppet::DevError, "No authconfig file defined"
59
- end
60
- return unless self.exists?
61
- super(@file)
62
- @rights = Rights.new
63
- @configstamp = @configstatted = nil
64
- @configtimeout = 60
65
-
66
- if parsenow
67
- read()
68
- end
69
- end
70
-
71
- # Read the configuration file.
72
- def read
73
- return unless FileTest.exists?(@file)
74
-
75
- if @configstamp
76
- if @configtimeout and @configstatted
77
- if Time.now - @configstatted > @configtimeout
78
- @configstatted = Time.now
79
- tmp = File.stat(@file).ctime
80
-
81
- if tmp == @configstamp
82
- return
83
- else
84
- Puppet.notice "%s vs %s" % [tmp, @configstamp]
85
- end
86
- else
87
- return
88
- end
89
- else
90
- Puppet.notice "%s and %s" % [@configtimeout, @configstatted]
91
- end
92
- end
93
-
94
- parse()
95
-
96
- @configstamp = File.stat(@file).ctime
97
- @configstatted = Time.now
98
- end
99
-
100
- private
101
-
102
- def parse
103
- newrights = Puppet::Server::Rights.new
104
- begin
105
- File.open(@file) { |f|
106
- right = nil
107
- count = 1
108
- f.each { |line|
109
- case line
110
- when /^\s*#/: next # skip comments
111
- when /^\s*$/: next # skip blank lines
112
- when /\[([\w.]+)\]/: # "namespace" or "namespace.method"
113
- name = $1
114
- if newrights.include?(name)
115
- raise FileServerError, "%s is already set at %s" %
116
- [newrights[name], name]
117
- end
118
- newrights.newright(name)
119
- right = newrights[name]
120
- when /^\s*(\w+)\s+(.+)$/:
121
- var = $1
122
- value = $2
123
- case var
124
- when "allow":
125
- value.split(/\s*,\s*/).each { |val|
126
- begin
127
- right.info "allowing %s access" % val
128
- right.allow(val)
129
- rescue AuthStoreError => detail
130
- raise ConfigurationError, "%s at line %s of %s" %
131
- [detail.to_s, count, @config]
132
- end
133
- }
134
- when "deny":
135
- value.split(/\s*,\s*/).each { |val|
136
- begin
137
- right.info "denying %s access" % val
138
- right.deny(val)
139
- rescue AuthStoreError => detail
140
- raise ConfigurationError, "%s at line %s of %s" %
141
- [detail.to_s, count, @config]
142
- end
143
- }
144
- else
145
- raise ConfigurationError,
146
- "Invalid argument '%s' at line %s" % [var, count]
147
- end
148
- else
149
- raise ConfigurationError, "Invalid line %s: %s" % [count, line]
150
- end
151
- count += 1
152
- }
153
- }
154
- rescue Errno::EACCES => detail
155
- Puppet.err "Configuration error: Cannot read %s; cannot serve" % @file
156
- #raise Puppet::Error, "Cannot read %s" % @config
157
- rescue Errno::ENOENT => detail
158
- Puppet.err "Configuration error: '%s' does not exit; cannot serve" %
159
- @file
160
- #raise Puppet::Error, "%s does not exit" % @config
161
- #rescue FileServerError => detail
162
- # Puppet.err "FileServer error: %s" % detail
163
- end
164
-
165
- # Verify each of the rights are valid.
166
- # We let the check raise an error, so that it can raise an error
167
- # pointing to the specific problem.
168
- newrights.each { |name, right|
169
- right.valid?
170
- }
171
- @rights = newrights
172
- end
173
- end
174
- end
175
- end
176
-
177
- # $Id: authconfig.rb 1148 2006-04-28 19:46:04Z luke $
@@ -1,226 +0,0 @@
1
- # standard module for determining whether a given hostname or IP has access to
2
- # the requested resource
3
-
4
- require 'ipaddr'
5
-
6
- module Puppet
7
- class Server
8
- class AuthStoreError < Puppet::Error; end
9
- class AuthorizationError < Puppet::Error; end
10
-
11
- class AuthStore
12
- # This has to be an array, not a hash, else it loses its ordering.
13
- ORDER = [
14
- [:ip, [:ip]],
15
- [:name, [:hostname, :domain]]
16
- ]
17
-
18
- Puppet::Util.logmethods(self, true)
19
-
20
- def allow(pattern)
21
- # a simple way to allow anyone at all to connect
22
- if pattern == "*"
23
- @globalallow = true
24
- else
25
- store(pattern, @allow)
26
- end
27
- end
28
-
29
- def allowed?(name, ip)
30
- if name or ip
31
- unless name and ip
32
- raise Puppet::DevError, "Name and IP must be passed to 'allowed?'"
33
- end
34
- # else, we're networked and such
35
- else
36
- # we're local
37
- return true
38
- end
39
-
40
- # yay insecure overrides
41
- if @globalallow
42
- return true
43
- end
44
-
45
- value = nil
46
- ORDER.each { |nametype, array|
47
- if nametype == :ip
48
- value = IPAddr.new(ip)
49
- else
50
- value = name.split(".").reverse
51
- end
52
-
53
-
54
- array.each { |type|
55
- [[@deny, false], [@allow, true]].each { |ary|
56
- hash, retval = ary
57
- if hash.include?(type)
58
- hash[type].each { |pattern|
59
- if match?(nametype, value, pattern)
60
- return retval
61
- end
62
- }
63
- end
64
- }
65
- }
66
- }
67
-
68
- self.info "defaulting to no access for %s" % name
69
- # default to false
70
- return false
71
- end
72
-
73
- def deny(pattern)
74
- store(pattern, @deny)
75
- end
76
-
77
- def initialize
78
- @globalallow = nil
79
- @allow = Hash.new { |hash, key|
80
- hash[key] = []
81
- }
82
- @deny = Hash.new { |hash, key|
83
- hash[key] = []
84
- }
85
- end
86
-
87
- private
88
-
89
- def match?(nametype, value, pattern)
90
- if value == pattern # simplest shortcut
91
- return true
92
- end
93
-
94
- case nametype
95
- when :ip: matchip?(value, pattern)
96
- when :name: matchname?(value, pattern)
97
- else
98
- raise Puppet::DevError, "Invalid match type %s" % nametype
99
- end
100
- end
101
-
102
- def matchip?(value, pattern)
103
- # we're just using builtin stuff for this, thankfully
104
- if pattern.include?(value)
105
- return true
106
- else
107
- return false
108
- end
109
- end
110
-
111
- def matchname?(value, pattern)
112
- # yay, horribly inefficient
113
- if pattern[-1] != '*' # the pattern has no metachars and is not equal
114
- # thus, no match
115
- #Puppet.info "%s is not equal with no * in %s" % [value, pattern]
116
- return false
117
- else
118
- # we know the last field of the pattern is '*'
119
- # if everything up to that doesn't match, we're definitely false
120
- if pattern[0..-2] != value[0..pattern.length-2]
121
- #Puppet.notice "subpatterns didn't match; %s vs %s" %
122
- # [pattern[0..-2], value[0..pattern.length-2]]
123
- return false
124
- end
125
-
126
- case value.length <=> pattern.length
127
- when -1: # value is shorter than pattern
128
- if pattern.length - value.length == 1
129
- # only ever allowed when the value is the domain of a
130
- # splatted pattern
131
- #Puppet.info "allowing splatted domain %s" % [value]
132
- return true
133
- else
134
- return false
135
- end
136
- when 0: # value is the same length as pattern
137
- if pattern[-1] == "*"
138
- #Puppet.notice "same length with *"
139
- return true
140
- else
141
- return false
142
- end
143
- when 1: # value is longer than pattern
144
- # at this point we've already verified that everything up to
145
- # the '*' in the pattern matches, so we are true
146
- return true
147
- end
148
- end
149
- end
150
-
151
- def store(pattern, hash)
152
- type, value = type(pattern)
153
-
154
- if type and value
155
- # this won't work once we get beyond simple stuff...
156
- hash[type] << value
157
- else
158
- raise AuthStoreError, "Invalid pattern %s" % pattern
159
- end
160
- end
161
-
162
- def type(pattern)
163
- type = value = nil
164
- case pattern
165
- when /^(\d+\.){3}\d+$/:
166
- type = :ip
167
- begin
168
- value = IPAddr.new(pattern)
169
- rescue ArgumentError => detail
170
- raise AuthStoreError, "Invalid IP address pattern %s" % pattern
171
- end
172
- when /^(\d+\.){3}\d+\/(\d+)$/:
173
- mask = Integer($2)
174
- if mask < 1 or mask > 32
175
- raise AuthStoreError, "Invalid IP mask %s" % mask
176
- end
177
- type = :ip
178
- begin
179
- value = IPAddr.new(pattern)
180
- rescue ArgumentError => detail
181
- raise AuthStoreError, "Invalid IP address pattern %s" % pattern
182
- end
183
- when /^(\d+\.){1,3}\*$/: # an ip address with a '*' at the end
184
- type = :ip
185
- match = $1
186
- match.sub!(".", '')
187
- ary = pattern.split(".")
188
-
189
- mask = case ary.index(match)
190
- when 0: 8
191
- when 1: 16
192
- when 2: 24
193
- else
194
- raise AuthStoreError, "Invalid IP pattern %s" % pattern
195
- end
196
-
197
- ary.pop
198
- while ary.length < 4
199
- ary.push("0")
200
- end
201
-
202
- begin
203
- value = IPAddr.new(ary.join(".") + "/" + mask.to_s)
204
- rescue ArgumentError => detail
205
- raise AuthStoreError, "Invalid IP address pattern %s" % pattern
206
- end
207
- when /^[\d.]+$/: # necessary so incomplete IP addresses can't look
208
- # like hostnames
209
- raise AuthStoreError, "Invalid IP address pattern %s" % pattern
210
- when /^([a-zA-Z][-\w]*\.)+[-\w]+$/: # a full hostname
211
- type = :hostname
212
- value = pattern.split(".").reverse
213
- when /^\*(\.([a-zA-Z][-\w]*)){1,}$/:
214
- type = :domain
215
- value = pattern.split(".").reverse
216
- else
217
- raise AuthStoreError, "Invalid pattern %s" % pattern
218
- end
219
-
220
- return [type, value]
221
- end
222
- end
223
- end
224
- end
225
- #
226
- # $Id: authstore.rb 1248 2006-06-08 21:46:07Z luke $