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
@@ -7,16 +7,16 @@ class Puppet::Parser::TemplateWrapper
7
7
 
8
8
  def initialize(scope, file)
9
9
  @scope = scope
10
- @file = Puppet::Module::find_template(file)
10
+ @file = Puppet::Module::find_template(file, @scope.compile.environment)
11
11
 
12
12
  unless FileTest.exists?(@file)
13
13
  raise Puppet::ParseError,
14
14
  "Could not find template %s" % file
15
15
  end
16
16
 
17
- # We'll only ever not have an interpreter in testing, but, eh.
18
- if @scope.interp
19
- @scope.interp.newfile(@file)
17
+ # We'll only ever not have a parser in testing, but, eh.
18
+ if @scope.parser
19
+ @scope.parser.watch_file(@file)
20
20
  end
21
21
  end
22
22
 
@@ -51,4 +51,3 @@ class Puppet::Parser::TemplateWrapper
51
51
  end
52
52
  end
53
53
 
54
- # $Id: templatewrapper.rb 2277 2007-03-09 00:48:28Z lutter $
@@ -4,11 +4,13 @@
4
4
  require 'puppet/external/gratr/digraph'
5
5
  require 'puppet/external/gratr/import'
6
6
  require 'puppet/external/gratr/dot'
7
+
7
8
  require 'puppet/relationship'
9
+ require 'puppet/simple_graph'
8
10
 
9
11
  # This class subclasses a graph class in order to handle relationships
10
12
  # among resources.
11
- class Puppet::PGraph < GRATR::Digraph
13
+ class Puppet::PGraph < Puppet::SimpleGraph
12
14
  # This is the type used for splicing.
13
15
  attr_accessor :container_type
14
16
 
@@ -23,13 +25,6 @@ class Puppet::PGraph < GRATR::Digraph
23
25
  @reversal = nil
24
26
  super
25
27
  end
26
-
27
- def clear
28
- @vertex_dict.clear
29
- if defined? @edge_number
30
- @edge_number.clear
31
- end
32
- end
33
28
 
34
29
  # Make sure whichever edge has a label keeps the label
35
30
  def copy_label(source, target, label)
@@ -84,7 +79,7 @@ class Puppet::PGraph < GRATR::Digraph
84
79
  def matching_edges(events, base = nil)
85
80
  events.collect do |event|
86
81
  source = base || event.source
87
-
82
+
88
83
  unless vertex?(source)
89
84
  Puppet.warning "Got an event from invalid vertex %s" % source.ref
90
85
  next
@@ -95,7 +90,7 @@ class Puppet::PGraph < GRATR::Digraph
95
90
  adjacent(source, :direction => :out, :type => :edges).find_all do |edge|
96
91
  edge.match?(event.event)
97
92
  end
98
- end.flatten
93
+ end.compact.flatten
99
94
  end
100
95
 
101
96
  # Take container information from another graph and use it
@@ -149,7 +144,7 @@ class Puppet::PGraph < GRATR::Digraph
149
144
  # Now get rid of the edge, so remove_vertex! works correctly.
150
145
  remove_edge!(edge)
151
146
  Puppet.debug "%s: %s => %s: %s" % [container,
152
- edge.source, edge.target, edge?(edge)]
147
+ edge.source, edge.target, edge?(edge.source, edge.target)]
153
148
  end
154
149
  end
155
150
  remove_vertex!(container)
@@ -190,6 +185,10 @@ class Puppet::PGraph < GRATR::Digraph
190
185
  return result
191
186
  end
192
187
 
188
+ def to_yaml_properties
189
+ instance_variables
190
+ end
191
+
193
192
  # A different way of walking a tree, and a much faster way than the
194
193
  # one that comes with GRATR.
195
194
  def tree_from_vertex2(start, direction = :out)
@@ -209,5 +208,3 @@ class Puppet::PGraph < GRATR::Digraph
209
208
  end
210
209
  end
211
210
  end
212
-
213
- # $Id: pgraph.rb 2521 2007-05-17 20:57:24Z luke $
@@ -56,8 +56,7 @@ class Property < Puppet::Parameter
56
56
 
57
57
  # Look up a value's name, so we can find options and such.
58
58
  def self.value_name(value)
59
- name = symbolize(value)
60
- if @parametervalues[name]
59
+ if value != '' and name = symbolize(value) and @parametervalues.include?(name)
61
60
  return name
62
61
  elsif ary = self.match?(value)
63
62
  return ary[0]
@@ -68,9 +67,7 @@ class Property < Puppet::Parameter
68
67
 
69
68
  # Retrieve an option set when a value was defined.
70
69
  def self.value_option(name, option)
71
- if option.is_a?(String)
72
- option = symbolize(option)
73
- end
70
+ option = option.to_sym
74
71
  if hash = @parameteroptions[name]
75
72
  hash[option]
76
73
  else
@@ -161,7 +158,7 @@ class Property < Puppet::Parameter
161
158
  def call_valuemethod(name, value)
162
159
  event = nil
163
160
  if method = self.class.value_option(name, :method) and self.respond_to?(method)
164
- self.debug "setting %s (currently %s)" % [value, self.retrieve]
161
+ #self.debug "setting %s (currently %s)" % [value, self.retrieve]
165
162
 
166
163
  begin
167
164
  event = self.send(method)
@@ -210,28 +207,28 @@ class Property < Puppet::Parameter
210
207
  # Figure out which event to return.
211
208
  def event(name, event = nil)
212
209
  if value_event = self.class.value_option(name, :event)
213
- return value_event
214
- else
215
- if event and event.is_a?(Symbol)
216
- if event == :nochange
217
- return nil
218
- else
219
- return event
220
- end
210
+ return value_event
211
+ end
212
+
213
+ if event and event.is_a?(Symbol)
214
+ if event == :nochange
215
+ return nil
221
216
  else
222
- if self.class.name == :ensure
223
- event = case self.should
224
- when :present: (@resource.class.name.to_s + "_created").intern
225
- when :absent: (@resource.class.name.to_s + "_removed").intern
226
- else
227
- (@resource.class.name.to_s + "_changed").intern
228
- end
229
- else
230
- event = (@resource.class.name.to_s + "_changed").intern
231
- end
217
+ return event
232
218
  end
233
219
  end
234
220
 
221
+ if self.class.name == :ensure
222
+ event = case self.should
223
+ when :present: (@resource.class.name.to_s + "_created").intern
224
+ when :absent: (@resource.class.name.to_s + "_removed").intern
225
+ else
226
+ (@resource.class.name.to_s + "_changed").intern
227
+ end
228
+ else
229
+ event = (@resource.class.name.to_s + "_changed").intern
230
+ end
231
+
235
232
  return event
236
233
  end
237
234
 
@@ -298,8 +295,7 @@ class Property < Puppet::Parameter
298
295
  # Send a log message.
299
296
  def log(msg)
300
297
  unless @resource[:loglevel]
301
- self.devfail "Parent %s has no loglevel" %
302
- @resource.name
298
+ self.devfail "Parent %s has no loglevel" % @resource.name
303
299
  end
304
300
  Puppet::Util::Log.create(
305
301
  :level => @resource[:loglevel],
@@ -339,10 +335,7 @@ class Property < Puppet::Parameter
339
335
  # provider. In other words, if the property name is 'gid', we'll call
340
336
  # 'provider.gid' to retrieve the current value.
341
337
  def retrieve
342
- is = provider.send(self.class.name)
343
- # puts "IS is: " + is.to_s
344
- # puts "and its an array!!!" if is.is_a? Array
345
- return is
338
+ provider.send(self.class.name)
346
339
  end
347
340
 
348
341
  # Set our value, using the provider, an associated block, or both.
@@ -421,17 +414,9 @@ class Property < Puppet::Parameter
421
414
  end
422
415
  end
423
416
 
424
- # The default 'sync' method only selects among a list of registered
425
- # values.
417
+ # The default 'sync' method only selects among a list of registered # values.
426
418
  def sync
427
- # if self.insync?
428
- # self.info "already in sync"
429
- # return nil
430
- # end
431
- unless self.class.values
432
- self.devfail "No values defined for %s" %
433
- self.class.name
434
- end
419
+ self.devfail("No values defined for %s" % self.class.name) unless self.class.values
435
420
 
436
421
  if value = self.should
437
422
  set(value)
@@ -557,4 +542,3 @@ class Property < Puppet::Parameter
557
542
  end
558
543
  end
559
544
 
560
- # $Id: property.rb 2678 2007-07-11 19:30:42Z luke $
@@ -139,5 +139,3 @@ module Puppet
139
139
  end
140
140
  end
141
141
  end
142
-
143
- # $Id: propertychange.rb 2678 2007-07-11 19:30:42Z luke $
@@ -64,6 +64,11 @@ class Puppet::Provider
64
64
  end
65
65
  end
66
66
 
67
+ # Is the provided feature a declared feature?
68
+ def self.declared_feature?(name)
69
+ defined?(@declared_features) and @declared_features.include?(name)
70
+ end
71
+
67
72
  # Does this implementation match all of the default requirements? If
68
73
  # defaults are empty, we return false.
69
74
  def self.default?
@@ -284,16 +289,16 @@ class Puppet::Provider
284
289
  end
285
290
  end
286
291
 
287
- def self.to_s
288
- unless defined? @str
289
- if self.resource_type
290
- @str = "%s provider %s" % [resource_type.name, self.name]
291
- else
292
- @str = "unattached provider %s" % [self.name]
293
- end
294
- end
295
- @str
296
- end
292
+ # def self.to_s
293
+ # unless defined? @str
294
+ # if self.resource_type
295
+ # @str = "%s provider %s" % [resource_type.name, self.name]
296
+ # else
297
+ # @str = "unattached provider %s" % [self.name]
298
+ # end
299
+ # end
300
+ # @str
301
+ # end
297
302
 
298
303
  dochook(:defaults) do
299
304
  if @defaults.length > 0
@@ -372,4 +377,3 @@ class Puppet::Provider
372
377
  end
373
378
  end
374
379
 
375
- # $Id: provider.rb 2753 2007-08-07 02:38:45Z luke $
@@ -102,15 +102,15 @@ Puppet::Type.type(:cron).provide(:crontab,
102
102
  next if field == :command
103
103
  next if field == :special
104
104
  if record[field] and ! resource.value(field)
105
- Puppet.info "Cron is missing %s: %s and %s" %
106
- [field, record[field].inspect, resource.value(field).inspect]
105
+ #Puppet.info "Cron is missing %s: %s and %s" %
106
+ # [field, record[field].inspect, resource.value(field).inspect]
107
107
  matched = false
108
108
  break
109
109
  end
110
110
 
111
111
  if ! record[field] and resource.value(field)
112
- Puppet.info "Hash is missing %s: %s and %s" %
113
- [field, resource.value(field).inspect, record[field].inspect]
112
+ #Puppet.info "Hash is missing %s: %s and %s" %
113
+ # [field, resource.value(field).inspect, record[field].inspect]
114
114
  matched = false
115
115
  break
116
116
  end
@@ -120,8 +120,8 @@ Puppet::Type.type(:cron).provide(:crontab,
120
120
 
121
121
  # Everything should be in the form of arrays, not the normal text.
122
122
  next if (record[field] == resource.value(field))
123
- Puppet.info "Did not match %s: %s vs %s" %
124
- [field, resource.value(field).inspect, record[field].inspect]
123
+ #Puppet.info "Did not match %s: %s vs %s" %
124
+ # [field, resource.value(field).inspect, record[field].inspect]
125
125
  matched = false
126
126
  break
127
127
  end
@@ -198,4 +198,3 @@ Puppet::Type.type(:cron).provide(:crontab,
198
198
  end
199
199
  end
200
200
 
201
- # $Id: crontab.rb 2750 2007-08-06 17:59:37Z luke $
@@ -26,4 +26,3 @@ Puppet::Type.type(:group).provide :groupadd, :parent => Puppet::Provider::NameSe
26
26
  end
27
27
  end
28
28
 
29
- # $Id: groupadd.rb 2501 2007-05-09 23:08:42Z luke $
@@ -9,4 +9,3 @@ Puppet::Type.type(:group).provide :netinfo, :parent => Puppet::Provider::NameSer
9
9
  defaultfor :operatingsystem => :darwin
10
10
  end
11
11
 
12
- # $Id: netinfo.rb 1502 2006-08-28 06:55:22Z luke $
@@ -28,4 +28,3 @@ Puppet::Type.type(:group).provide :pw, :parent => Puppet::Provider::NameService:
28
28
  end
29
29
  end
30
30
 
31
- # $Id: pw.rb 2501 2007-05-09 23:08:42Z luke $
@@ -14,4 +14,3 @@ Puppet::Type.type(:host).provide :netinfo, :parent => Puppet::Provider::NameServ
14
14
  defaultfor :operatingsystem => :darwin
15
15
  end
16
16
 
17
- # $Id: netinfo.rb 2714 2007-07-19 18:12:20Z luke $
@@ -70,4 +70,3 @@ Puppet::Type.type(:host).provide(:parsed,
70
70
  end
71
71
  end
72
72
 
73
- # $Id: parsed.rb 1864 2006-11-13 03:28:47Z luke $
@@ -2,6 +2,9 @@ require 'puppet/provider/parsedfile'
2
2
  require 'erb'
3
3
 
4
4
  Puppet::Type.type(:interface).provide(:redhat) do
5
+ desc "Manage network interfaces on Red Hat operating systems. This provider
6
+ parses and generates configuration files in ``/etc/sysconfig/network-scripts``."
7
+
5
8
  INTERFACE_DIR = "/etc/sysconfig/network-scripts"
6
9
  confine :exists => INTERFACE_DIR
7
10
  defaultfor :operatingsystem => [:fedora, :centos, :redhat]
@@ -9,31 +12,42 @@ Puppet::Type.type(:interface).provide(:redhat) do
9
12
  # Create the setter/gettor methods to match the model.
10
13
  mk_resource_methods
11
14
 
12
- ALIAS_TEMPLATE = ERB.new <<-ALIAS
15
+ @templates = {}
16
+
17
+ # Register a template.
18
+ def self.register_template(name, string)
19
+ @templates[name] = ERB.new(string)
20
+ end
21
+
22
+ # Retrieve a template by name.
23
+ def self.template(name)
24
+ @templates[name]
25
+ end
26
+
27
+ register_template :alias, <<-ALIAS
13
28
  DEVICE=<%= self.device %>
14
29
  ONBOOT=<%= self.on_boot %>
15
- BOOTPROTO=<%= self.bootproto %>
30
+ BOOTPROTO=none
16
31
  IPADDR=<%= self.name %>
17
32
  NETMASK=<%= self.netmask %>
18
33
  BROADCAST=
19
34
  ALIAS
20
35
 
21
36
 
22
- LOOPBACK_TEMPLATE = ERB.new <<-LOOPBACKDUMMY
37
+ register_template :normal, <<-LOOPBACKDUMMY
23
38
  DEVICE=<%= self.device %>
24
39
  ONBOOT=<%= self.on_boot %>
25
40
  BOOTPROTO=static
26
41
  IPADDR=<%= self.name %>
27
- NETMASK=255.255.255.255
42
+ NETMASK=<%= self.netmask %>
28
43
  BROADCAST=
29
44
  LOOPBACKDUMMY
30
45
 
31
46
  # maximum number of dummy interfaces
32
- MAX_DUMMIES = 10
47
+ @max_dummies = 10
33
48
 
34
49
  # maximum number of aliases per interface
35
- MAX_ALIASES_PER_IFACE = 10
36
-
50
+ @max_aliases_per_iface = 10
37
51
 
38
52
  @@dummies = []
39
53
  @@aliases = Hash.new { |hash, key| hash[key] = [] }
@@ -43,17 +57,13 @@ LOOPBACKDUMMY
43
57
  def self.instances
44
58
  # parse all of the config files at once
45
59
  Dir.glob("%s/ifcfg-*" % INTERFACE_DIR).collect do |file|
46
-
47
60
  record = parse(file)
48
61
 
49
62
  # store the existing dummy interfaces
50
- if record[:interface_type] == :dummy
51
- @@dummies << record[:ifnum] unless @@dummies.include?(record[:ifnum])
52
- end
63
+ @@dummies << record[:ifnum] if (record[:interface_type] == :dummy and ! @@dummies.include?(record[:ifnum]))
64
+
65
+ @@aliases[record[:interface]] << record[:ifnum] if record[:interface_type] == :alias
53
66
 
54
- if record[:interface_type] == :alias
55
- @@aliases[record[:interface]] << record[:ifnum]
56
- end
57
67
  new(record)
58
68
  end
59
69
  end
@@ -61,7 +71,7 @@ LOOPBACKDUMMY
61
71
  # return the next avaliable dummy interface number, in the case where
62
72
  # ifnum is not manually specified
63
73
  def self.next_dummy
64
- MAX_DUMMIES.times do |i|
74
+ @max_dummies.times do |i|
65
75
  unless @@dummies.include?(i.to_s)
66
76
  @@dummies << i.to_s
67
77
  return i.to_s
@@ -72,7 +82,7 @@ LOOPBACKDUMMY
72
82
  # return the next available alias on a given interface, in the case
73
83
  # where ifnum if not manually specified
74
84
  def self.next_alias(interface)
75
- MAX_ALIASES_PER_IFACE.times do |i|
85
+ @max_aliases_per_iface.times do |i|
76
86
  unless @@aliases[interface].include?(i.to_s)
77
87
  @@aliases[interface] << i.to_s
78
88
  return i.to_s
@@ -85,68 +95,16 @@ LOOPBACKDUMMY
85
95
 
86
96
  # Parse the existing file.
87
97
  def self.parse(file)
98
+ instance = new()
99
+ return instance unless FileTest.exist?(file)
88
100
 
89
- opts = {}
90
- return opts unless FileTest.exists?(file)
91
-
92
- File.open(file) do |f|
93
- f.readlines.each do |line|
94
- if line =~ /^(\w+)=(.+)$/
95
- opts[$1.downcase.intern] = $2
96
- end
97
- end
98
- end
99
-
100
- # figure out the "real" device information
101
- case opts[:device]
102
- when /:/:
103
- if opts[:device].include?(":")
104
- opts[:interface], opts[:ifnum] = opts[:device].split(":")
105
- end
106
-
107
- opts[:interface_type] = :alias
108
- when /^dummy/:
109
- opts[:interface_type] = :loopback
110
- opts[:interface] = "dummy"
111
-
112
- # take the number of the dummy interface, as this is used
113
- # when working out whether to call next_dummy when dynamically
114
- # creating these
115
- opts[:ifnum] = opts[:device].sub("dummy",'')
116
-
117
- @@dummies << opts[:ifnum].to_s unless @@dummies.include?(opts[:ifnum].to_s)
118
- else
119
- opts[:interface_type] = :normal
120
- opts[:interface] = opts[:device]
121
- end
122
-
123
- # translate whether we come up on boot to true/false
124
- case opts[:onboot].downcase
125
- when "yes":
126
- opts[:onboot] = :true
127
- when "no":
128
- opts[:onboot] = :false
129
- else
130
- # this case should never happen, but just in case
131
- opts[:onboot] = false
132
- end
133
-
134
-
135
- # Remove any attributes we don't want. These would be
136
- # pretty easy to support.
137
- [:bootproto, :broadcast, :netmask, :device].each do |opt|
138
- if opts.include?(opt)
139
- opts.delete(opt)
101
+ File.readlines(file).each do |line|
102
+ if line =~ /^(\w+)=(.+)$/
103
+ instance.send($1.downcase + "=", $2)
140
104
  end
141
105
  end
142
106
 
143
- if opts.include?(:ipaddr)
144
- opts[:name] = opts[:ipaddr]
145
- opts.delete(:ipaddr)
146
- end
147
-
148
- return opts
149
-
107
+ return instance
150
108
  end
151
109
 
152
110
  # Prefetch our interface list, yo.
@@ -159,7 +117,7 @@ LOOPBACKDUMMY
159
117
  end
160
118
 
161
119
  def create
162
- @resource.class.validproperties.each do |property|
120
+ self.class.resource_type.validproperties.each do |property|
163
121
  if value = @resource.should(property)
164
122
  @property_hash[property] = value
165
123
  end
@@ -170,11 +128,11 @@ LOOPBACKDUMMY
170
128
  end
171
129
 
172
130
  def destroy
173
- File.unlink(@resource[:target])
131
+ File.unlink(file_path)
174
132
  end
175
133
 
176
134
  def exists?
177
- FileTest.exists?(@resource[:target])
135
+ FileTest.exist?(file_path)
178
136
  end
179
137
 
180
138
  # generate the content for the interface file, so this is dependent
@@ -182,23 +140,49 @@ LOOPBACKDUMMY
182
140
  # address (also dummy) on linux. For linux it's quite involved, and we
183
141
  # will use an ERB template
184
142
  def generate
185
- # choose which template to use for the interface file, based on
186
- # the interface type
187
- case @resource.should(:interface_type)
188
- when :loopback
189
- return LOOPBACK_TEMPLATE.result(binding)
190
- when :alias
191
- return ALIAS_TEMPLATE.result(binding)
192
- end
143
+ itype = self.interface_type == :alias ? :alias : :normal
144
+ self.class.template(itype).result(binding)
193
145
  end
194
146
 
195
147
  # Where should the file be written out?
196
148
  # This defaults to INTERFACE_DIR/ifcfg-<namevar>, but can have a
197
149
  # more symbolic name by setting interface_desc in the type.
198
150
  def file_path
199
- @resource[:interface_desc] ||= @resource[:name]
200
- return File.join(INTERFACE_DIR, "ifcfg-" + @resource[:interface_desc])
151
+ if resource and val = resource[:interface_desc]
152
+ desc = val
153
+ else
154
+ desc = self.name
155
+ end
156
+
157
+ self.fail("Could not get name for interface") unless desc
158
+
159
+ if self.interface_type == :alias
160
+ return File.join(INTERFACE_DIR, "ifcfg-" + self.interface + ":" + desc)
161
+ else
162
+ return File.join(INTERFACE_DIR, "ifcfg-" + desc)
163
+ end
164
+ end
165
+
166
+ # Use the device value to figure out all kinds of nifty things.
167
+ def device=(value)
168
+ case value
169
+ when /:/:
170
+ @property_hash[:interface], @property_hash[:ifnum] = value.split(":")
171
+ @property_hash[:interface_type] = :alias
172
+ when /^dummy/:
173
+ @property_hash[:interface_type] = :loopback
174
+ @property_hash[:interface] = "dummy"
201
175
 
176
+ # take the number of the dummy interface, as this is used
177
+ # when working out whether to call next_dummy when dynamically
178
+ # creating these
179
+ @property_hash[:ifnum] = value.sub("dummy",'')
180
+
181
+ @@dummies << @property_hash[:ifnum].to_s unless @@dummies.include?(@property_hash[:ifnum].to_s)
182
+ else
183
+ @property_hash[:interface_type] = :normal
184
+ @property_hash[:interface] = value
185
+ end
202
186
  end
203
187
 
204
188
  # create the device name, so this based on the IP, and interface + type
@@ -213,6 +197,11 @@ LOOPBACKDUMMY
213
197
  end
214
198
  end
215
199
 
200
+ # Set the name to our ip address.
201
+ def ipaddr=(value)
202
+ @property_hash[:name] = value
203
+ end
204
+
216
205
  # whether the device is to be brought up on boot or not. converts
217
206
  # the true / false of the type, into yes / no values respectively
218
207
  # writing out the ifcfg-* files
@@ -227,10 +216,21 @@ LOOPBACKDUMMY
227
216
  end
228
217
  end
229
218
 
219
+ # Mark whether the interface should be started on boot.
220
+ def on_boot=(value)
221
+ # translate whether we come up on boot to true/false
222
+ case value.downcase
223
+ when "yes":
224
+ @property_hash[:onboot] = :true
225
+ else
226
+ @property_hash[:onboot] = :false
227
+ end
228
+ end
229
+
230
230
  # Write the new file out.
231
231
  def flush
232
232
  # Don't flush to disk if we're removing the config.
233
- return if @resource.should(:ensure) == :absent
233
+ return if self.ensure == :absent
234
234
 
235
235
  @property_hash.each do |name, val|
236
236
  if val == :absent
@@ -238,14 +238,13 @@ LOOPBACKDUMMY
238
238
  end
239
239
  end
240
240
 
241
- File.open(@resource[:target], "w") do |f|
241
+ File.open(file_path, "w") do |f|
242
242
  f.puts generate()
243
243
  end
244
244
  end
245
245
 
246
246
  def prefetch
247
- @property_hash = self.class.parse(@resource[:target])
247
+ @property_hash = self.class.parse(file_path)
248
248
  end
249
249
  end
250
250
 
251
- # $Id: redhat.rb 2747 2007-08-05 19:01:39Z luke $