puppet 0.24.6 → 0.24.7

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 (383) hide show
  1. data/CHANGELOG +115 -0
  2. data/Rakefile +43 -14
  3. data/bin/puppetca +6 -5
  4. data/bin/puppetdoc +109 -15
  5. data/bin/ralsh +3 -1
  6. data/conf/redhat/puppet.spec +74 -48
  7. data/examples/mcx_dock_absent.pp +4 -0
  8. data/examples/mcx_dock_default.pp +118 -0
  9. data/examples/mcx_dock_full.pp +125 -0
  10. data/examples/mcx_dock_invalid.pp +9 -0
  11. data/examples/mcx_nogroup.pp +118 -0
  12. data/examples/mcx_notexists_absent.pp +4 -0
  13. data/ext/emacs/puppet-mode.el +1 -1
  14. data/lib/puppet.rb +1 -1
  15. data/lib/puppet/external/nagios/base.rb +114 -71
  16. data/lib/puppet/feature/base.rb +6 -0
  17. data/lib/puppet/indirector/yaml.rb +12 -3
  18. data/lib/puppet/module.rb +1 -1
  19. data/lib/puppet/network/client/master.rb +1 -1
  20. data/lib/puppet/network/xmlrpc/client.rb +3 -1
  21. data/lib/puppet/parameter.rb +1 -1
  22. data/lib/puppet/parser/ast.rb +15 -0
  23. data/lib/puppet/parser/ast/astarray.rb +1 -2
  24. data/lib/puppet/parser/ast/casestatement.rb +2 -0
  25. data/lib/puppet/parser/ast/collection.rb +2 -0
  26. data/lib/puppet/parser/ast/comparison_operator.rb +4 -0
  27. data/lib/puppet/parser/ast/definition.rb +2 -0
  28. data/lib/puppet/parser/ast/else.rb +3 -0
  29. data/lib/puppet/parser/ast/function.rb +19 -12
  30. data/lib/puppet/parser/ast/hostclass.rb +9 -1
  31. data/lib/puppet/parser/ast/ifstatement.rb +3 -0
  32. data/lib/puppet/parser/ast/node.rb +3 -0
  33. data/lib/puppet/parser/ast/resource.rb +3 -0
  34. data/lib/puppet/parser/ast/resource_defaults.rb +2 -0
  35. data/lib/puppet/parser/ast/resource_override.rb +3 -0
  36. data/lib/puppet/parser/ast/vardef.rb +3 -0
  37. data/lib/puppet/parser/functions.rb +14 -0
  38. data/lib/puppet/parser/functions/inline_template.rb +21 -0
  39. data/lib/puppet/parser/functions/template.rb +3 -2
  40. data/lib/puppet/parser/lexer.rb +56 -7
  41. data/lib/puppet/parser/parser.rb +114 -98
  42. data/lib/puppet/parser/parser_support.rb +24 -4
  43. data/lib/puppet/parser/resource/reference.rb +4 -3
  44. data/lib/puppet/parser/templatewrapper.rb +30 -22
  45. data/lib/puppet/property.rb +1 -1
  46. data/lib/puppet/property/list.rb +7 -2
  47. data/lib/puppet/property/ordered_list.rb +22 -0
  48. data/lib/puppet/provider/augeas/augeas.rb +189 -0
  49. data/lib/puppet/provider/computer/computer.rb +22 -0
  50. data/lib/puppet/provider/confine.rb +4 -1
  51. data/lib/puppet/provider/confine/variable.rb +13 -2
  52. data/lib/puppet/provider/confine_collection.rb +4 -1
  53. data/lib/puppet/provider/confiner.rb +1 -1
  54. data/lib/puppet/provider/group/directoryservice.rb +6 -3
  55. data/lib/puppet/provider/group/groupadd.rb +5 -2
  56. data/lib/puppet/provider/group/ldap.rb +11 -9
  57. data/lib/puppet/provider/group/netinfo.rb +8 -4
  58. data/lib/puppet/provider/group/pw.rb +5 -1
  59. data/lib/puppet/provider/host/netinfo.rb +5 -2
  60. data/lib/puppet/provider/macauthorization/macauthorization.rb +315 -0
  61. data/lib/puppet/provider/mcx/mcxcontent.rb +201 -0
  62. data/lib/puppet/provider/nameservice/directoryservice.rb +210 -107
  63. data/lib/puppet/provider/nameservice/netinfo.rb +7 -2
  64. data/lib/puppet/provider/package/appdmg.rb +0 -3
  65. data/lib/puppet/provider/package/apt.rb +6 -0
  66. data/lib/puppet/provider/package/rpm.rb +2 -0
  67. data/lib/puppet/provider/package/yum.rb +5 -1
  68. data/lib/puppet/provider/package/yumhelper.py +9 -0
  69. data/lib/puppet/provider/service/base.rb +9 -6
  70. data/lib/puppet/provider/service/daemontools.rb +25 -15
  71. data/lib/puppet/provider/service/debian.rb +6 -2
  72. data/lib/puppet/provider/service/freebsd.rb +5 -2
  73. data/lib/puppet/provider/service/gentoo.rb +6 -3
  74. data/lib/puppet/provider/service/init.rb +31 -21
  75. data/lib/puppet/provider/service/launchd.rb +195 -0
  76. data/lib/puppet/provider/service/redhat.rb +5 -2
  77. data/lib/puppet/provider/service/runit.rb +30 -20
  78. data/lib/puppet/provider/service/smf.rb +7 -4
  79. data/lib/puppet/provider/ssh_authorized_key/parsed.rb +21 -1
  80. data/lib/puppet/provider/user/directoryservice.rb +1 -0
  81. data/lib/puppet/provider/user/netinfo.rb +9 -3
  82. data/lib/puppet/provider/user/user_role_add.rb +43 -6
  83. data/lib/puppet/provider/zfs/solaris.rb +45 -0
  84. data/lib/puppet/provider/zone/solaris.rb +8 -4
  85. data/lib/puppet/provider/zpool/solaris.rb +116 -0
  86. data/lib/puppet/rails/database/003_add_environment_to_host.rb +9 -0
  87. data/lib/puppet/rails/database/schema.rb +1 -0
  88. data/lib/puppet/rails/host.rb +4 -0
  89. data/lib/puppet/reference/configuration.rb +1 -1
  90. data/lib/puppet/reports/tagmail.rb +15 -6
  91. data/lib/puppet/transaction/change.rb +3 -5
  92. data/lib/puppet/transportable.rb +1 -0
  93. data/lib/puppet/type/augeas.rb +155 -0
  94. data/lib/puppet/type/computer.rb +62 -0
  95. data/lib/puppet/type/exec.rb +2 -1
  96. data/lib/puppet/type/file.rb +1 -1
  97. data/lib/puppet/type/file/ensure.rb +8 -5
  98. data/lib/puppet/type/file/mode.rb +0 -14
  99. data/lib/puppet/type/file/owner.rb +32 -64
  100. data/lib/puppet/type/file/selcontext.rb +3 -8
  101. data/lib/puppet/type/group.rb +27 -45
  102. data/lib/puppet/type/k5login.rb +1 -1
  103. data/lib/puppet/type/macauthorization.rb +141 -0
  104. data/lib/puppet/type/mcx.rb +115 -0
  105. data/lib/puppet/type/mount.rb +1 -1
  106. data/lib/puppet/type/nagios_hostdependency.rb +3 -0
  107. data/lib/puppet/type/ssh_authorized_key.rb +16 -0
  108. data/lib/puppet/type/tidy.rb +43 -14
  109. data/lib/puppet/type/user.rb +25 -1
  110. data/lib/puppet/type/zfs.rb +51 -0
  111. data/lib/puppet/type/zone.rb +8 -0
  112. data/lib/puppet/type/zpool.rb +93 -0
  113. data/lib/puppet/util.rb +17 -38
  114. data/lib/puppet/util/file_locking.rb +44 -0
  115. data/lib/puppet/util/filetype.rb +3 -3
  116. data/lib/puppet/util/log.rb +1 -16
  117. data/lib/puppet/util/metric.rb +0 -5
  118. data/lib/puppet/util/rdoc.rb +85 -0
  119. data/lib/puppet/util/rdoc/code_objects.rb +219 -0
  120. data/lib/puppet/util/rdoc/generators/puppet_generator.rb +829 -0
  121. data/lib/puppet/util/rdoc/generators/template/puppet/puppet.rb +1051 -0
  122. data/lib/puppet/util/rdoc/parser.rb +437 -0
  123. data/lib/puppet/util/selinux.rb +135 -63
  124. data/lib/puppet/util/settings.rb +136 -126
  125. data/lib/puppet/util/storage.rb +4 -2
  126. data/spec/Rakefile +91 -0
  127. data/spec/integration/checksum.rb +47 -0
  128. data/spec/integration/defaults.rb +47 -0
  129. data/spec/integration/file_serving/configuration.rb +43 -0
  130. data/spec/integration/file_serving/content.rb +18 -0
  131. data/spec/integration/file_serving/metadata.rb +18 -0
  132. data/spec/integration/indirector/direct_file_server.rb +80 -0
  133. data/spec/integration/indirector/file_content/file_server.rb +18 -0
  134. data/spec/integration/indirector/file_metadata/file_server.rb +18 -0
  135. data/spec/integration/indirector/module_files.rb +57 -0
  136. data/spec/integration/indirector/node/ldap.rb +15 -0
  137. data/spec/integration/indirector/rest.rb +464 -0
  138. data/spec/integration/network/server/mongrel.rb +48 -0
  139. data/spec/integration/network/server/webrick.rb +48 -0
  140. data/spec/integration/node.rb +93 -0
  141. data/spec/integration/node/catalog.rb +54 -0
  142. data/spec/integration/node/facts.rb +45 -0
  143. data/spec/integration/provider/package.rb +26 -0
  144. data/spec/integration/provider/service/init.rb +32 -0
  145. data/spec/integration/reference/providers.rb +17 -0
  146. data/spec/integration/reports.rb +14 -0
  147. data/spec/integration/transaction/report.rb +26 -0
  148. data/spec/integration/type/package.rb +22 -0
  149. data/spec/integration/util/file_locking.rb +36 -0
  150. data/spec/monkey_patches/add_confine_and_runnable_to_rspec_dsl.rb +46 -0
  151. data/spec/monkey_patches/alias_should_to_must.rb +5 -0
  152. data/spec/shared_behaviours/file_server_terminus.rb +42 -0
  153. data/spec/shared_behaviours/file_serving.rb +64 -0
  154. data/spec/shared_behaviours/memory_terminus.rb +32 -0
  155. data/spec/spec.opts +5 -0
  156. data/spec/spec_helper.rb +36 -0
  157. data/spec/unit/executables/client/certhandler.rb +122 -0
  158. data/spec/unit/file_serving/configuration.rb +224 -0
  159. data/spec/unit/file_serving/configuration/parser.rb +135 -0
  160. data/spec/unit/file_serving/content.rb +71 -0
  161. data/spec/unit/file_serving/file_base.rb +124 -0
  162. data/spec/unit/file_serving/fileset.rb +239 -0
  163. data/spec/unit/file_serving/indirection_hooks.rb +124 -0
  164. data/spec/unit/file_serving/metadata.rb +187 -0
  165. data/spec/unit/file_serving/mount.rb +143 -0
  166. data/spec/unit/file_serving/terminus_helper.rb +76 -0
  167. data/spec/unit/indirector.rb +152 -0
  168. data/spec/unit/indirector/catalog/compiler.rb +156 -0
  169. data/spec/unit/indirector/catalog/yaml.rb +25 -0
  170. data/spec/unit/indirector/checksum/file.rb +139 -0
  171. data/spec/unit/indirector/code.rb +33 -0
  172. data/spec/unit/indirector/direct_file_server.rb +89 -0
  173. data/spec/unit/indirector/envelope.rb +47 -0
  174. data/spec/unit/indirector/exec.rb +51 -0
  175. data/spec/unit/indirector/facts/facter.rb +76 -0
  176. data/spec/unit/indirector/facts/yaml.rb +26 -0
  177. data/spec/unit/indirector/file.rb +154 -0
  178. data/spec/unit/indirector/file_content/file.rb +18 -0
  179. data/spec/unit/indirector/file_content/file_server.rb +18 -0
  180. data/spec/unit/indirector/file_content/modules.rb +18 -0
  181. data/spec/unit/indirector/file_content/rest.rb +11 -0
  182. data/spec/unit/indirector/file_metadata/file.rb +52 -0
  183. data/spec/unit/indirector/file_metadata/file_server.rb +18 -0
  184. data/spec/unit/indirector/file_metadata/modules.rb +42 -0
  185. data/spec/unit/indirector/file_metadata/rest.rb +9 -0
  186. data/spec/unit/indirector/file_server.rb +184 -0
  187. data/spec/unit/indirector/indirection.rb +731 -0
  188. data/spec/unit/indirector/ldap.rb +143 -0
  189. data/spec/unit/indirector/memory.rb +29 -0
  190. data/spec/unit/indirector/module_files.rb +259 -0
  191. data/spec/unit/indirector/node/exec.rb +69 -0
  192. data/spec/unit/indirector/node/ldap.rb +424 -0
  193. data/spec/unit/indirector/node/memory.rb +19 -0
  194. data/spec/unit/indirector/node/plain.rb +19 -0
  195. data/spec/unit/indirector/node/rest.rb +13 -0
  196. data/spec/unit/indirector/node/yaml.rb +25 -0
  197. data/spec/unit/indirector/plain.rb +29 -0
  198. data/spec/unit/indirector/report/processor.rb +81 -0
  199. data/spec/unit/indirector/request.rb +87 -0
  200. data/spec/unit/indirector/rest.rb +372 -0
  201. data/spec/unit/indirector/ssl_rsa/file.rb +116 -0
  202. data/spec/unit/indirector/terminus.rb +245 -0
  203. data/spec/unit/indirector/yaml.rb +145 -0
  204. data/spec/unit/module.rb +247 -0
  205. data/spec/unit/network/client.rb +45 -0
  206. data/spec/unit/network/client/master.rb +442 -0
  207. data/spec/unit/network/handler/fileserver.rb +179 -0
  208. data/spec/unit/network/http.rb +35 -0
  209. data/spec/unit/network/http/mongrel.rb +117 -0
  210. data/spec/unit/network/http/mongrel/rest.rb +377 -0
  211. data/spec/unit/network/http/mongrel/xmlrpc.rb +0 -0
  212. data/spec/unit/network/http/webrick.rb +127 -0
  213. data/spec/unit/network/http/webrick/rest.rb +323 -0
  214. data/spec/unit/network/http/webrick/xmlrpc.rb +0 -0
  215. data/spec/unit/network/http_pool.rb +238 -0
  216. data/spec/unit/network/server.rb +316 -0
  217. data/spec/unit/network/xmlrpc/client.rb +13 -0
  218. data/spec/unit/node.rb +167 -0
  219. data/spec/unit/node/catalog.rb +864 -0
  220. data/spec/unit/node/environment.rb +37 -0
  221. data/spec/unit/node/facts.rb +44 -0
  222. data/spec/unit/other/checksum.rb +92 -0
  223. data/spec/unit/other/pgraph.rb +210 -0
  224. data/spec/unit/other/transaction.rb +33 -0
  225. data/spec/unit/other/transbucket.rb +172 -0
  226. data/spec/unit/other/transobject.rb +92 -0
  227. data/spec/unit/parameter.rb +24 -0
  228. data/spec/unit/parser/ast.rb +37 -0
  229. data/spec/unit/parser/ast/arithmetic_operator.rb +73 -0
  230. data/spec/unit/parser/ast/astarray.rb +66 -0
  231. data/spec/unit/parser/ast/boolean_operator.rb +53 -0
  232. data/spec/unit/parser/ast/collexpr.rb +92 -0
  233. data/spec/unit/parser/ast/comparison_operator.rb +92 -0
  234. data/spec/unit/parser/ast/definition.rb +195 -0
  235. data/spec/unit/parser/ast/function.rb +77 -0
  236. data/spec/unit/parser/ast/hostclass.rb +148 -0
  237. data/spec/unit/parser/ast/minus.rb +36 -0
  238. data/spec/unit/parser/ast/node.rb +125 -0
  239. data/spec/unit/parser/ast/nop.rb +20 -0
  240. data/spec/unit/parser/ast/not.rb +30 -0
  241. data/spec/unit/parser/ast/resource_override.rb +51 -0
  242. data/spec/unit/parser/ast/resource_reference.rb +63 -0
  243. data/spec/unit/parser/ast/vardef.rb +47 -0
  244. data/spec/unit/parser/collector.rb +426 -0
  245. data/spec/unit/parser/compiler.rb +561 -0
  246. data/spec/unit/parser/functions.rb +83 -0
  247. data/spec/unit/parser/functions/inline_template.rb +59 -0
  248. data/spec/unit/parser/functions/template.rb +62 -0
  249. data/spec/unit/parser/interpreter.rb +138 -0
  250. data/spec/unit/parser/lexer.rb +646 -0
  251. data/spec/unit/parser/parser.rb +228 -0
  252. data/spec/unit/parser/resource.rb +336 -0
  253. data/spec/unit/parser/resource/reference.rb +95 -0
  254. data/spec/unit/parser/scope.rb +87 -0
  255. data/spec/unit/parser/templatewrapper.rb +129 -0
  256. data/spec/unit/property.rb +35 -0
  257. data/spec/unit/property/keyvalue.rb +168 -0
  258. data/spec/unit/property/list.rb +156 -0
  259. data/spec/unit/property/ordered_list.rb +64 -0
  260. data/spec/unit/provider/augeas/augeas.rb +238 -0
  261. data/spec/unit/provider/confine.rb +78 -0
  262. data/spec/unit/provider/confine/exists.rb +81 -0
  263. data/spec/unit/provider/confine/false.rb +53 -0
  264. data/spec/unit/provider/confine/feature.rb +60 -0
  265. data/spec/unit/provider/confine/true.rb +53 -0
  266. data/spec/unit/provider/confine/variable.rb +107 -0
  267. data/spec/unit/provider/confine_collection.rb +134 -0
  268. data/spec/unit/provider/confiner.rb +63 -0
  269. data/spec/unit/provider/group/groupadd.rb +31 -0
  270. data/spec/unit/provider/group/ldap.rb +105 -0
  271. data/spec/unit/provider/ldap.rb +248 -0
  272. data/spec/unit/provider/macauthorization.rb +147 -0
  273. data/spec/unit/provider/mcx/mcxcontent.rb +175 -0
  274. data/spec/unit/provider/mount.rb +130 -0
  275. data/spec/unit/provider/mount/parsed.rb +185 -0
  276. data/spec/unit/provider/package/apt.rb +138 -0
  277. data/spec/unit/provider/package/dpkg.rb +163 -0
  278. data/spec/unit/provider/package/gem.rb +87 -0
  279. data/spec/unit/provider/package/hpux.rb +52 -0
  280. data/spec/unit/provider/selboolean.rb +37 -0
  281. data/spec/unit/provider/selmodule-example.pp +0 -0
  282. data/spec/unit/provider/selmodule.rb +66 -0
  283. data/spec/unit/provider/service/daemontools.rb +124 -0
  284. data/spec/unit/provider/service/launchd.rb +134 -0
  285. data/spec/unit/provider/service/runit.rb +117 -0
  286. data/spec/unit/provider/ssh_authorized_key/parsed.rb +102 -0
  287. data/spec/unit/provider/user/hpux.rb +25 -0
  288. data/spec/unit/provider/user/ldap.rb +279 -0
  289. data/spec/unit/provider/user/user_role_add.rb +249 -0
  290. data/spec/unit/provider/user/useradd.rb +115 -0
  291. data/spec/unit/provider/zfs/solaris.rb +87 -0
  292. data/spec/unit/provider/zone/solaris.rb +42 -0
  293. data/spec/unit/provider/zpool/solaris.rb +179 -0
  294. data/spec/unit/rails.rb +125 -0
  295. data/spec/unit/relationship.rb +149 -0
  296. data/spec/unit/reports.rb +61 -0
  297. data/spec/unit/resource_reference.rb +73 -0
  298. data/spec/unit/simple_graph.rb +280 -0
  299. data/spec/unit/transaction/change.rb +187 -0
  300. data/spec/unit/transaction/event.rb +25 -0
  301. data/spec/unit/transaction/report.rb +40 -0
  302. data/spec/unit/type.rb +64 -0
  303. data/spec/unit/type/augeas.rb +113 -0
  304. data/spec/unit/type/computer.rb +82 -0
  305. data/spec/unit/type/exec.rb +91 -0
  306. data/spec/unit/type/file.rb +155 -0
  307. data/spec/unit/type/file/ensure.rb +21 -0
  308. data/spec/unit/type/file/group.rb +118 -0
  309. data/spec/unit/type/file/owner.rb +132 -0
  310. data/spec/unit/type/file/selinux.rb +82 -0
  311. data/spec/unit/type/group.rb +40 -0
  312. data/spec/unit/type/macauthorization.rb +78 -0
  313. data/spec/unit/type/mcx.rb +108 -0
  314. data/spec/unit/type/mount.rb +219 -0
  315. data/spec/unit/type/nagios.rb +63 -0
  316. data/spec/unit/type/noop_metaparam.rb +38 -0
  317. data/spec/unit/type/package.rb +246 -0
  318. data/spec/unit/type/resources.rb +27 -0
  319. data/spec/unit/type/schedule.rb +339 -0
  320. data/spec/unit/type/selboolean.rb +47 -0
  321. data/spec/unit/type/selmodule.rb +18 -0
  322. data/spec/unit/type/service.rb +254 -0
  323. data/spec/unit/type/ssh_authorized_key.rb +106 -0
  324. data/spec/unit/type/tidy.rb +68 -0
  325. data/spec/unit/type/user.rb +260 -0
  326. data/spec/unit/type/zfs.rb +45 -0
  327. data/spec/unit/type/zone.rb +20 -0
  328. data/spec/unit/type/zpool.rb +110 -0
  329. data/spec/unit/util/checksums.rb +99 -0
  330. data/spec/unit/util/constant_inflector.rb +70 -0
  331. data/spec/unit/util/file_locking.rb +115 -0
  332. data/spec/unit/util/ldap/connection.rb +169 -0
  333. data/spec/unit/util/ldap/generator.rb +54 -0
  334. data/spec/unit/util/ldap/manager.rb +654 -0
  335. data/spec/unit/util/loadedfile.rb +65 -0
  336. data/spec/unit/util/log.rb +107 -0
  337. data/spec/unit/util/metric.rb +95 -0
  338. data/spec/unit/util/nagios_maker.rb +128 -0
  339. data/spec/unit/util/posix.rb +256 -0
  340. data/spec/unit/util/resource_template.rb +58 -0
  341. data/spec/unit/util/selinux.rb +219 -0
  342. data/spec/unit/util/settings.rb +847 -0
  343. data/spec/unit/util/storage.rb +248 -0
  344. data/spec/unit/util/tagging.rb +92 -0
  345. data/spec/unit/util/uri_helper.rb +41 -0
  346. data/spec/unit/util/user_attr.rb +47 -0
  347. data/spec/unit/util/warnings.rb +35 -0
  348. data/test/certmgr/support.rb +0 -6
  349. data/test/data/providers/ssh_authorized_key/parsed/authorized_keys +1 -0
  350. data/test/data/snippets/multilinecomments.pp +6 -0
  351. data/test/data/snippets/multipleclass.pp +9 -0
  352. data/test/language/functions.rb +11 -1
  353. data/test/language/snippets.rb +16 -0
  354. data/test/lib/puppettest/runnable_test.rb +1 -1
  355. data/test/network/handler/fileserver.rb +5 -0
  356. data/test/other/report.rb +0 -4
  357. data/test/ral/type/resources.rb +2 -19
  358. data/test/util/settings.rb +4 -4
  359. data/test/util/storage.rb +0 -24
  360. data/test/util/utiltest.rb +0 -33
  361. metadata +319 -26
  362. data/conf/debian/README.source +0 -2
  363. data/conf/debian/TODO.Debian +0 -1
  364. data/conf/debian/changelog +0 -257
  365. data/conf/debian/compat +0 -1
  366. data/conf/debian/control +0 -45
  367. data/conf/debian/copyright +0 -17
  368. data/conf/debian/docs +0 -1
  369. data/conf/debian/fileserver.conf +0 -12
  370. data/conf/debian/puppet.NEWS +0 -63
  371. data/conf/debian/puppet.conf +0 -8
  372. data/conf/debian/puppet.dirs +0 -7
  373. data/conf/debian/puppet.files +0 -6
  374. data/conf/debian/puppet.init +0 -64
  375. data/conf/debian/puppet.logrotate +0 -11
  376. data/conf/debian/puppet.postinst +0 -9
  377. data/conf/debian/puppet.postrm +0 -21
  378. data/conf/debian/puppet.preinst +0 -25
  379. data/conf/debian/puppetmaster.files +0 -4
  380. data/conf/debian/puppetmaster.init +0 -58
  381. data/conf/debian/rules +0 -115
  382. data/conf/debian/watch +0 -2
  383. data/lib/puppet/type/nagios_hostgroupescalation.rb +0 -3
@@ -0,0 +1,76 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # Created by Luke Kanies on 2007-10-22.
4
+ # Copyright (c) 2007. All rights reserved.
5
+
6
+ require File.dirname(__FILE__) + '/../../spec_helper'
7
+
8
+ require 'puppet/file_serving/terminus_helper'
9
+
10
+ describe Puppet::FileServing::TerminusHelper do
11
+ before do
12
+ @helper = Object.new
13
+ @helper.extend(Puppet::FileServing::TerminusHelper)
14
+
15
+ @model = mock 'model'
16
+ @helper.stubs(:model).returns(@model)
17
+
18
+ @request = stub 'request', :key => "url", :options => {}
19
+ end
20
+
21
+ it "should use a fileset to find paths" do
22
+ fileset = mock 'fileset', :files => []
23
+ Puppet::FileServing::Fileset.expects(:new).with("/my/file", {}).returns(fileset)
24
+ @helper.path2instances(@request, "/my/file")
25
+ end
26
+
27
+ it "should pass :recurse, :ignore, and :links settings on to the fileset if present" do
28
+ fileset = mock 'fileset', :files => []
29
+ Puppet::FileServing::Fileset.expects(:new).with("/my/file", :links => :a, :ignore => :b, :recurse => :c).returns(fileset)
30
+ @request.stubs(:options).returns(:links => :a, :ignore => :b, :recurse => :c)
31
+ @helper.path2instances(@request, "/my/file")
32
+ end
33
+
34
+ describe "when creating instances" do
35
+ before do
36
+ @request.stubs(:key).returns "puppet://host/mount/dir"
37
+
38
+ @fileset = mock 'fileset', :files => %w{one two}
39
+ Puppet::FileServing::Fileset.expects(:new).returns(@fileset)
40
+ end
41
+
42
+ it "should create an instance of the model for each path returned by the fileset" do
43
+ @model.expects(:new).returns(:one)
44
+ @model.expects(:new).returns(:two)
45
+ @helper.path2instances(@request, "/my/file").length.should == 2
46
+ end
47
+
48
+ it "should set each instance's key to be the original key plus the file-specific path" do
49
+ @model.expects(:new).with { |key, options| key == @request.key + "/one" }.returns(:one)
50
+ @model.expects(:new).with { |key, options| key == @request.key + "/two" }.returns(:two)
51
+ @helper.path2instances(@request, "/my/file")
52
+ end
53
+
54
+ it "should set each returned instance's path to the original path" do
55
+ @model.expects(:new).with { |key, options| options[:path] == "/my/file" }.returns(:one)
56
+ @model.expects(:new).with { |key, options| options[:path] == "/my/file" }.returns(:two)
57
+ @helper.path2instances(@request, "/my/file")
58
+ end
59
+
60
+ it "should set each returned instance's relative path to the file-specific path" do
61
+ @model.expects(:new).with { |key, options| options[:relative_path] == "one" }.returns(:one)
62
+ @model.expects(:new).with { |key, options| options[:relative_path] == "two" }.returns(:two)
63
+ @helper.path2instances(@request, "/my/file")
64
+ end
65
+
66
+ it "should set the links value on each instance if one is provided" do
67
+ one = mock 'one', :links= => :manage
68
+ two = mock 'two', :links= => :manage
69
+ @model.expects(:new).returns(one)
70
+ @model.expects(:new).returns(two)
71
+
72
+ @request.options[:links] = :manage
73
+ @helper.path2instances(@request, "/my/file")
74
+ end
75
+ end
76
+ end
@@ -0,0 +1,152 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.dirname(__FILE__) + '/../spec_helper'
4
+
5
+ require 'puppet/defaults'
6
+ require 'puppet/indirector'
7
+
8
+ describe Puppet::Indirector, " when available to a model" do
9
+ before do
10
+ @thingie = Class.new do
11
+ extend Puppet::Indirector
12
+ end
13
+ end
14
+
15
+ it "should provide a way for the model to register an indirection under a name" do
16
+ @thingie.should respond_to(:indirects)
17
+ end
18
+ end
19
+
20
+ describe Puppet::Indirector, "when registering an indirection" do
21
+ before do
22
+ @thingie = Class.new do
23
+ extend Puppet::Indirector
24
+ attr_reader :name
25
+ def initialize(name)
26
+ @name = name
27
+ end
28
+ end
29
+ end
30
+
31
+ it "should require a name when registering a model" do
32
+ Proc.new {@thingie.send(:indirects) }.should raise_error(ArgumentError)
33
+ end
34
+
35
+ it "should create an indirection instance to manage each indirecting model" do
36
+ @indirection = @thingie.indirects(:test)
37
+ @indirection.should be_instance_of(Puppet::Indirector::Indirection)
38
+ end
39
+
40
+ it "should not allow a model to register under multiple names" do
41
+ # Keep track of the indirection instance so we can delete it on cleanup
42
+ @indirection = @thingie.indirects :first
43
+ Proc.new { @thingie.indirects :second }.should raise_error(ArgumentError)
44
+ end
45
+
46
+ it "should make the indirection available via an accessor" do
47
+ @indirection = @thingie.indirects :first
48
+ @thingie.indirection.should equal(@indirection)
49
+ end
50
+
51
+ it "should pass any provided options to the indirection during initialization" do
52
+ klass = mock 'terminus class'
53
+ Puppet::Indirector::Indirection.expects(:new).with(@thingie, :first, {:some => :options})
54
+ @indirection = @thingie.indirects :first, :some => :options
55
+ end
56
+
57
+ after do
58
+ @indirection.delete if @indirection
59
+ end
60
+ end
61
+
62
+ describe "Delegated Indirection Method", :shared => true do
63
+ it "should delegate to the indirection" do
64
+ @indirection.expects(@method)
65
+ @thingie.send(@method, "me")
66
+ end
67
+
68
+ it "should pass all of the passed arguments directly to the indirection instance" do
69
+ @indirection.expects(@method).with("me", :one => :two)
70
+ @thingie.send(@method, "me", :one => :two)
71
+ end
72
+
73
+ it "should return the results of the delegation as its result" do
74
+ request = mock 'request'
75
+ @indirection.expects(@method).returns "yay"
76
+ @thingie.send(@method, "me").should == "yay"
77
+ end
78
+ end
79
+
80
+ describe Puppet::Indirector, "when redirecting a model" do
81
+ before do
82
+ @thingie = Class.new do
83
+ extend Puppet::Indirector
84
+ attr_reader :name
85
+ def initialize(name)
86
+ @name = name
87
+ end
88
+ end
89
+ @indirection = @thingie.send(:indirects, :test)
90
+ end
91
+
92
+ it "should include the Envelope module in the model" do
93
+ @thingie.ancestors.should be_include(Puppet::Indirector::Envelope)
94
+ end
95
+
96
+ describe "when finding instances via the model" do
97
+ before { @method = :find }
98
+ it_should_behave_like "Delegated Indirection Method"
99
+ end
100
+
101
+ describe "when destroying instances via the model" do
102
+ before { @method = :destroy }
103
+ it_should_behave_like "Delegated Indirection Method"
104
+ end
105
+
106
+ describe "when searching for instances via the model" do
107
+ before { @method = :search }
108
+ it_should_behave_like "Delegated Indirection Method"
109
+ end
110
+
111
+ describe "when expiring instances via the model" do
112
+ before { @method = :expire }
113
+ it_should_behave_like "Delegated Indirection Method"
114
+ end
115
+
116
+ # This is an instance method, so it behaves a bit differently.
117
+ describe "when saving instances via the model" do
118
+ before do
119
+ @instance = @thingie.new("me")
120
+ end
121
+
122
+ it "should delegate to the indirection" do
123
+ @indirection.expects(:save)
124
+ @instance.save
125
+ end
126
+
127
+ it "should pass the instance and all arguments to the indirection's :save method" do
128
+ @indirection.expects(:save).with(@instance, :one => :two)
129
+ @instance.save :one => :two
130
+ end
131
+
132
+ it "should return the results of the delegation as its result" do
133
+ request = mock 'request'
134
+ @indirection.expects(:save).returns "yay"
135
+ @instance.save.should == "yay"
136
+ end
137
+ end
138
+
139
+ it "should give the model the ability to set the indirection terminus class" do
140
+ @indirection.expects(:terminus_class=).with(:myterm)
141
+ @thingie.terminus_class = :myterm
142
+ end
143
+
144
+ it "should give the model the ability to set the indirection cache class" do
145
+ @indirection.expects(:cache_class=).with(:mycache)
146
+ @thingie.cache_class = :mycache
147
+ end
148
+
149
+ after do
150
+ @indirection.delete
151
+ end
152
+ end
@@ -0,0 +1,156 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # Created by Luke Kanies on 2007-9-23.
4
+ # Copyright (c) 2007. All rights reserved.
5
+
6
+ require File.dirname(__FILE__) + '/../../../spec_helper'
7
+
8
+ require 'puppet/indirector/catalog/compiler'
9
+
10
+ describe Puppet::Node::Catalog::Compiler do
11
+ before do
12
+ Puppet.expects(:version).returns(1)
13
+ Facter.expects(:value).with('fqdn').returns("my.server.com")
14
+ Facter.expects(:value).with('ipaddress').returns("my.ip.address")
15
+ end
16
+
17
+ it "should gather data about itself" do
18
+ Puppet::Node::Catalog::Compiler.new
19
+ end
20
+
21
+ it "should cache the server metadata and reuse it" do
22
+ compiler = Puppet::Node::Catalog::Compiler.new
23
+ node1 = stub 'node1', :merge => nil
24
+ node2 = stub 'node2', :merge => nil
25
+ compiler.stubs(:compile)
26
+ Puppet::Node.stubs(:find).with('node1').returns(node1)
27
+ Puppet::Node.stubs(:find).with('node2').returns(node2)
28
+
29
+ compiler.find(stub('request', :key => 'node1', :options => {}))
30
+ compiler.find(stub('node2request', :key => 'node2', :options => {}))
31
+ end
32
+
33
+ it "should provide a method for determining if the catalog is networked" do
34
+ compiler = Puppet::Node::Catalog::Compiler.new
35
+ compiler.should respond_to(:networked?)
36
+ end
37
+ end
38
+
39
+ describe Puppet::Node::Catalog::Compiler, " when creating the interpreter" do
40
+ before do
41
+ # This gets pretty annoying on a plane where we have no IP address
42
+ Facter.stubs(:value).returns("whatever")
43
+ @compiler = Puppet::Node::Catalog::Compiler.new
44
+ end
45
+
46
+ it "should not create the interpreter until it is asked for the first time" do
47
+ interp = mock 'interp'
48
+ Puppet::Parser::Interpreter.expects(:new).with().returns(interp)
49
+ @compiler.interpreter.should equal(interp)
50
+ end
51
+
52
+ it "should use the same interpreter for all compiles" do
53
+ interp = mock 'interp'
54
+ Puppet::Parser::Interpreter.expects(:new).with().returns(interp)
55
+ @compiler.interpreter.should equal(interp)
56
+ @compiler.interpreter.should equal(interp)
57
+ end
58
+ end
59
+
60
+ describe Puppet::Node::Catalog::Compiler, " when finding nodes" do
61
+ before do
62
+ Facter.stubs(:value).returns("whatever")
63
+ @compiler = Puppet::Node::Catalog::Compiler.new
64
+ @name = "me"
65
+ @node = mock 'node'
66
+ @request = stub 'request', :key => @name, :options => {}
67
+ @compiler.stubs(:compile)
68
+ end
69
+
70
+ it "should look node information up via the Node class with the provided key" do
71
+ @node.stubs :merge
72
+ Puppet::Node.expects(:find).with(@name).returns(@node)
73
+ @compiler.find(@request)
74
+ end
75
+ end
76
+
77
+ describe Puppet::Node::Catalog::Compiler, " after finding nodes" do
78
+ before do
79
+ Puppet.expects(:version).returns(1)
80
+ Facter.expects(:value).with('fqdn').returns("my.server.com")
81
+ Facter.expects(:value).with('ipaddress').returns("my.ip.address")
82
+ @compiler = Puppet::Node::Catalog::Compiler.new
83
+ @name = "me"
84
+ @node = mock 'node'
85
+ @request = stub 'request', :key => @name, :options => {}
86
+ @compiler.stubs(:compile)
87
+ Puppet::Node.stubs(:find).with(@name).returns(@node)
88
+ end
89
+
90
+ it "should add the server's Puppet version to the node's parameters as 'serverversion'" do
91
+ @node.expects(:merge).with { |args| args["serverversion"] == "1" }
92
+ @compiler.find(@request)
93
+ end
94
+
95
+ it "should add the server's fqdn to the node's parameters as 'servername'" do
96
+ @node.expects(:merge).with { |args| args["servername"] == "my.server.com" }
97
+ @compiler.find(@request)
98
+ end
99
+
100
+ it "should add the server's IP address to the node's parameters as 'serverip'" do
101
+ @node.expects(:merge).with { |args| args["serverip"] == "my.ip.address" }
102
+ @compiler.find(@request)
103
+ end
104
+ end
105
+
106
+ describe Puppet::Node::Catalog::Compiler, " when creating catalogs" do
107
+ before do
108
+ Facter.stubs(:value).returns("whatever")
109
+ env = stub 'environment', :name => "yay"
110
+ Puppet::Node::Environment.stubs(:new).returns(env)
111
+
112
+ @compiler = Puppet::Node::Catalog::Compiler.new
113
+ @name = "me"
114
+ @node = Puppet::Node.new @name
115
+ @node.stubs(:merge)
116
+ @request = stub 'request', :key => @name, :options => {}
117
+ end
118
+
119
+ it "should directly use provided nodes" do
120
+ Puppet::Node.expects(:find).never
121
+ @compiler.expects(:compile).with(@node)
122
+ @request.stubs(:options).returns(:use_node => @node)
123
+ @compiler.find(@request)
124
+ end
125
+
126
+ it "should fail if no node is passed and none can be found" do
127
+ Puppet::Node.stubs(:find).with(@name).returns(nil)
128
+ proc { @compiler.find(@request) }.should raise_error(ArgumentError)
129
+ end
130
+
131
+ it "should pass the found node to the interpreter for compiling" do
132
+ Puppet::Node.expects(:find).with(@name).returns(@node)
133
+ config = mock 'config'
134
+ @compiler.interpreter.expects(:compile).with(@node)
135
+ @compiler.find(@request)
136
+ end
137
+
138
+ it "should return the results of compiling as the catalog" do
139
+ Puppet::Node.stubs(:find).returns(@node)
140
+ config = mock 'config'
141
+ result = mock 'result'
142
+
143
+ @compiler.interpreter.expects(:compile).with(@node).returns(result)
144
+ @compiler.find(@request).should equal(result)
145
+ end
146
+
147
+ it "should benchmark the compile process" do
148
+ Puppet::Node.stubs(:find).returns(@node)
149
+ @compiler.stubs(:networked?).returns(true)
150
+ @compiler.expects(:benchmark).with do |level, message|
151
+ level == :notice and message =~ /^Compiled catalog/
152
+ end
153
+ @compiler.interpreter.stubs(:compile).with(@node)
154
+ @compiler.find(@request)
155
+ end
156
+ end
@@ -0,0 +1,25 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.dirname(__FILE__) + '/../../../spec_helper'
4
+
5
+ require 'puppet/node/catalog'
6
+ require 'puppet/indirector/catalog/yaml'
7
+
8
+ describe Puppet::Node::Catalog::Yaml do
9
+ it "should be a subclass of the Yaml terminus" do
10
+ Puppet::Node::Catalog::Yaml.superclass.should equal(Puppet::Indirector::Yaml)
11
+ end
12
+
13
+ it "should have documentation" do
14
+ Puppet::Node::Catalog::Yaml.doc.should_not be_nil
15
+ end
16
+
17
+ it "should be registered with the catalog store indirection" do
18
+ indirection = Puppet::Indirector::Indirection.instance(:catalog)
19
+ Puppet::Node::Catalog::Yaml.indirection.should equal(indirection)
20
+ end
21
+
22
+ it "should have its name set to :yaml" do
23
+ Puppet::Node::Catalog::Yaml.name.should == :yaml
24
+ end
25
+ end
@@ -0,0 +1,139 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # Created by Luke Kanies on 2007-9-22.
4
+ # Copyright (c) 2007. All rights reserved.
5
+
6
+ require File.dirname(__FILE__) + '/../../../spec_helper'
7
+
8
+ require 'puppet/indirector/checksum/file'
9
+
10
+ describe Puppet::Checksum::File do
11
+ it "should be a subclass of the File terminus class" do
12
+ Puppet::Checksum::File.superclass.should equal(Puppet::Indirector::File)
13
+ end
14
+
15
+ it "should have documentation" do
16
+ Puppet::Checksum::File.doc.should be_instance_of(String)
17
+ end
18
+ end
19
+
20
+ describe Puppet::Checksum::File, " when initializing" do
21
+ it "should use the filebucket settings section" do
22
+ Puppet.settings.expects(:use).with(:filebucket)
23
+ Puppet::Checksum::File.new
24
+ end
25
+ end
26
+
27
+
28
+ describe Puppet::Checksum::File do
29
+ before :each do
30
+ Puppet.settings.stubs(:use)
31
+ @store = Puppet::Checksum::File.new
32
+
33
+ @value = "70924d6fa4b2d745185fa4660703a5c0"
34
+ @sum = stub 'sum', :name => @value
35
+
36
+ @dir = "/what/ever"
37
+
38
+ Puppet.stubs(:[]).with(:bucketdir).returns(@dir)
39
+
40
+ @path = @store.path(@value)
41
+
42
+ @request = stub 'request', :key => @value
43
+ end
44
+
45
+
46
+ describe Puppet::Checksum::File, " when determining file paths" do
47
+
48
+ # I was previously passing the object in.
49
+ it "should use the value passed in to path() as the checksum" do
50
+ @value.expects(:name).never
51
+ @store.path(@value)
52
+ end
53
+
54
+ it "should use the value of the :bucketdir setting as the root directory" do
55
+ @path.should =~ %r{^#{@dir}}
56
+ end
57
+
58
+ it "should choose a path 8 directories deep with each directory name being the respective character in the checksum" do
59
+ dirs = @value[0..7].split("").join(File::SEPARATOR)
60
+ @path.should be_include(dirs)
61
+ end
62
+
63
+ it "should use the full checksum as the final directory name" do
64
+ File.basename(File.dirname(@path)).should == @value
65
+ end
66
+
67
+ it "should use 'contents' as the actual file name" do
68
+ File.basename(@path).should == "contents"
69
+ end
70
+
71
+ it "should use the bucketdir, the 8 sum character directories, the full checksum, and 'contents' as the full file name" do
72
+ @path.should == [@dir, @value[0..7].split(""), @value, "contents"].flatten.join(File::SEPARATOR)
73
+ end
74
+ end
75
+
76
+ describe Puppet::Checksum::File, " when retrieving files" do
77
+
78
+ # The smallest test that will use the calculated path
79
+ it "should look for the calculated path" do
80
+ File.expects(:exist?).with(@path).returns(false)
81
+ @store.find(@request)
82
+ end
83
+
84
+ it "should return an instance of Puppet::Checksum created with the content if the file exists" do
85
+ content = "my content"
86
+ sum = stub 'file'
87
+ Puppet::Checksum.expects(:new).with(content).returns(sum)
88
+
89
+ File.expects(:exist?).with(@path).returns(true)
90
+ File.expects(:read).with(@path).returns(content)
91
+
92
+ @store.find(@request).should equal(sum)
93
+ end
94
+
95
+ it "should return nil if no file is found" do
96
+ File.expects(:exist?).with(@path).returns(false)
97
+ @store.find(@request).should be_nil
98
+ end
99
+
100
+ it "should fail intelligently if a found file cannot be read" do
101
+ File.expects(:exist?).with(@path).returns(true)
102
+ File.expects(:read).with(@path).raises(RuntimeError)
103
+ proc { @store.find(@request) }.should raise_error(Puppet::Error)
104
+ end
105
+ end
106
+
107
+ describe Puppet::Checksum::File, " when saving files" do
108
+
109
+ # LAK:FIXME I don't know how to include in the spec the fact that we're
110
+ # using the superclass's save() method and thus are acquiring all of
111
+ # it's behaviours.
112
+ it "should save the content to the calculated path" do
113
+ File.stubs(:directory?).with(File.dirname(@path)).returns(true)
114
+ File.expects(:open).with(@path, "w")
115
+
116
+ file = stub 'file', :name => @value
117
+ @store.save(@request)
118
+ end
119
+
120
+ it "should make any directories necessary for storage" do
121
+ FileUtils.expects(:mkdir_p).with do |arg|
122
+ File.umask == 0007 and arg == File.dirname(@path)
123
+ end
124
+ File.expects(:directory?).with(File.dirname(@path)).returns(true)
125
+ File.expects(:open).with(@path, "w")
126
+
127
+ @store.save(@request)
128
+ end
129
+ end
130
+
131
+ describe Puppet::Checksum::File, " when deleting files" do
132
+ it "should remove the file at the calculated path" do
133
+ File.expects(:exist?).with(@path).returns(true)
134
+ File.expects(:unlink).with(@path)
135
+
136
+ @store.destroy(@request)
137
+ end
138
+ end
139
+ end