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,143 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.dirname(__FILE__) + '/../../spec_helper'
4
+
5
+ require 'puppet/indirector/ldap'
6
+
7
+ describe Puppet::Indirector::Ldap do
8
+ before do
9
+ @indirection = stub 'indirection', :name => :testing
10
+ Puppet::Indirector::Indirection.stubs(:instance).returns(@indirection)
11
+ @ldap_class = Class.new(Puppet::Indirector::Ldap) do
12
+ def self.to_s
13
+ "Testing::Mytype"
14
+ end
15
+ end
16
+
17
+ @connection = mock 'ldap'
18
+
19
+ @searcher = @ldap_class.new
20
+ end
21
+
22
+ describe "when searching ldap" do
23
+ before do
24
+ # Stub everything, and we can selectively replace with an expect as
25
+ # we need to for testing.
26
+ @searcher.stubs(:connection).returns(@connection)
27
+ @searcher.stubs(:search_filter).returns(:filter)
28
+ @searcher.stubs(:search_base).returns(:base)
29
+ @searcher.stubs(:process)
30
+
31
+ @request = stub 'request', :key => "yay"
32
+ end
33
+
34
+ it "should call the ldapsearch method with the search filter" do
35
+ @searcher.expects(:search_filter).with("yay").returns("yay's filter")
36
+ @searcher.expects(:ldapsearch).with("yay's filter")
37
+ @searcher.find @request
38
+ end
39
+
40
+ it "should fail if no block is passed to the ldapsearch method" do
41
+ proc { @searcher.ldapsearch("blah") }.should raise_error(ArgumentError)
42
+ end
43
+
44
+ it "should use the results of the ldapbase method as the ldap search base" do
45
+ @searcher.stubs(:search_base).returns("mybase")
46
+ @connection.expects(:search).with do |*args|
47
+ args[0].should == "mybase"
48
+ true
49
+ end
50
+ @searcher.find @request
51
+ end
52
+
53
+ it "should default to the value of the :search_base setting as the result of the ldapbase method" do
54
+ Puppet.expects(:[]).with(:ldapbase).returns("myldapbase")
55
+ searcher = @ldap_class.new
56
+ searcher.search_base.should == "myldapbase"
57
+ end
58
+
59
+ it "should use the results of the :search_attributes method as the list of attributes to return" do
60
+ @searcher.stubs(:search_attributes).returns(:myattrs)
61
+ @connection.expects(:search).with do |*args|
62
+ args[3].should == :myattrs
63
+ true
64
+ end
65
+ @searcher.find @request
66
+ end
67
+
68
+ it "should use depth 2 when searching" do
69
+ @connection.expects(:search).with do |*args|
70
+ args[1].should == 2
71
+ true
72
+ end
73
+ @searcher.find @request
74
+ end
75
+
76
+ it "should call process() on the first found entry" do
77
+ @connection.expects(:search).yields("myresult")
78
+ @searcher.expects(:process).with("myresult")
79
+ @searcher.find @request
80
+ end
81
+
82
+ it "should reconnect and retry the search if there is a failure" do
83
+ run = false
84
+ @connection.stubs(:search).with do |*args|
85
+ if run
86
+ true
87
+ else
88
+ run = true
89
+ raise "failed"
90
+ end
91
+ end.yields("myresult")
92
+ @searcher.expects(:process).with("myresult")
93
+
94
+ @searcher.find @request
95
+ end
96
+
97
+ it "should not reconnect on failure more than once" do
98
+ count = 0
99
+ @connection.stubs(:search).with do |*args|
100
+ count += 1
101
+ raise ArgumentError, "yay"
102
+ end
103
+ proc { @searcher.find(@request) }.should raise_error(Puppet::Error)
104
+ count.should == 2
105
+ end
106
+
107
+ it "should return true if an entry is found" do
108
+ @connection.expects(:search).yields("result")
109
+ @searcher.ldapsearch("whatever") { |r| }.should be_true
110
+ end
111
+ end
112
+
113
+ describe "when connecting to ldap" do
114
+ confine "LDAP is not available" => Puppet.features.ldap?
115
+
116
+ it "should create and start a Util::Ldap::Connection instance" do
117
+ conn = mock 'connection', :connection => "myconn", :start => nil
118
+ Puppet::Util::Ldap::Connection.expects(:instance).returns conn
119
+
120
+ @searcher.connection.should == "myconn"
121
+ end
122
+
123
+ it "should only create the ldap connection when asked for it the first time" do
124
+ conn = mock 'connection', :connection => "myconn", :start => nil
125
+ Puppet::Util::Ldap::Connection.expects(:instance).returns conn
126
+
127
+ @searcher.connection
128
+ end
129
+
130
+ it "should cache the connection" do
131
+ conn = mock 'connection', :connection => "myconn", :start => nil
132
+ Puppet::Util::Ldap::Connection.expects(:instance).returns conn
133
+
134
+ @searcher.connection.should equal(@searcher.connection)
135
+ end
136
+ end
137
+
138
+ describe "when reconnecting to ldap" do
139
+ confine "Not running on culain as root" => (Puppet::Util::SUIDManager.uid == 0 and Facter.value("hostname") == "culain")
140
+
141
+ it "should reconnect to ldap when connections are lost"
142
+ end
143
+ end
@@ -0,0 +1,29 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.dirname(__FILE__) + '/../../spec_helper'
4
+ require 'puppet/indirector/memory'
5
+
6
+ require 'shared_behaviours/memory_terminus'
7
+
8
+ describe Puppet::Indirector::Memory do
9
+ it_should_behave_like "A Memory Terminus"
10
+
11
+ before do
12
+ Puppet::Indirector::Terminus.stubs(:register_terminus_class)
13
+ @model = mock 'model'
14
+ @indirection = stub 'indirection', :name => :mystuff, :register_terminus_type => nil, :model => @model
15
+ Puppet::Indirector::Indirection.stubs(:instance).returns(@indirection)
16
+
17
+ @memory_class = Class.new(Puppet::Indirector::Memory) do
18
+ def self.to_s
19
+ "Mystuff::Testing"
20
+ end
21
+ end
22
+
23
+ @searcher = @memory_class.new
24
+ @name = "me"
25
+ @instance = stub 'instance', :name => @name
26
+
27
+ @request = stub 'request', :key => @name, :instance => @instance
28
+ end
29
+ end
@@ -0,0 +1,259 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # Created by Luke Kanies on 2007-10-19.
4
+ # Copyright (c) 2007. All rights reserved.
5
+
6
+ require File.dirname(__FILE__) + '/../../spec_helper'
7
+
8
+ require 'puppet/indirector/module_files'
9
+
10
+
11
+ describe Puppet::Indirector::ModuleFiles do
12
+
13
+ before :each do
14
+ Puppet::Node::Environment.stubs(:new).returns(stub('env', :name => "myenv"))
15
+ Puppet::Indirector::Terminus.stubs(:register_terminus_class)
16
+ @model = mock 'model'
17
+ @indirection = stub 'indirection', :name => :mystuff, :register_terminus_type => nil, :model => @model
18
+ Puppet::Indirector::Indirection.stubs(:instance).returns(@indirection)
19
+
20
+ @module_files_class = Class.new(Puppet::Indirector::ModuleFiles) do
21
+ def self.to_s
22
+ "Testing::Mytype"
23
+ end
24
+ end
25
+
26
+ @module_files = @module_files_class.new
27
+
28
+ @uri = "puppetmounts://host/modules/my/local/file"
29
+ @module = Puppet::Module.new("mymod", "/module/path")
30
+
31
+ @request = stub 'request', :key => @uri, :options => {}, :node => nil, :ip => nil, :method => :find
32
+ end
33
+
34
+ describe Puppet::Indirector::ModuleFiles, " when finding files" do
35
+
36
+ it "should strip off the leading '/modules' mount name" do
37
+ Puppet::Module.expects(:find).with('my', "myenv").returns @module
38
+ @module_files.find(@request)
39
+ end
40
+
41
+ it "should not strip off leading terms that start with '/modules' but are longer words" do
42
+ @request.stubs(:key).returns "puppetmounts://host/modulestart/my/local/file"
43
+ Puppet::Module.expects(:find).with('modulestart', "myenv").returns nil
44
+ @module_files.find(@request)
45
+ end
46
+
47
+ it "should search for a module whose name is the first term in the remaining file path" do
48
+ Puppet::Module.expects(:find).with('my', "myenv").returns @module
49
+ @module_files.find(@request)
50
+ end
51
+
52
+ it "should search for a file relative to the module's files directory" do
53
+ Puppet::Module.expects(:find).with('my', "myenv").returns @module
54
+ FileTest.expects(:exists?).with("/module/path/files/local/file")
55
+ @module_files.find(@request)
56
+ end
57
+
58
+ it "should return nil if the module does not exist" do
59
+ Puppet::Module.expects(:find).with('my', "myenv").returns nil
60
+ @module_files.find(@request).should be_nil
61
+ end
62
+
63
+ it "should return nil if the module exists but the file does not" do
64
+ Puppet::Module.expects(:find).with('my', "myenv").returns @module
65
+ FileTest.expects(:exists?).with("/module/path/files/local/file").returns(false)
66
+ @module_files.find(@request).should be_nil
67
+ end
68
+
69
+ it "should return an instance of the model if a module is found and the file exists" do
70
+ Puppet::Module.expects(:find).with('my', "myenv").returns @module
71
+ FileTest.expects(:exists?).with("/module/path/files/local/file").returns(true)
72
+ @model.expects(:new).returns(:myinstance)
73
+ @module_files.find(@request).should == :myinstance
74
+ end
75
+
76
+ it "should use the node's environment to look up the module if the node name is provided" do
77
+ node = stub "node", :environment => "testing"
78
+ Puppet::Node.expects(:find).with("mynode").returns(node)
79
+ Puppet::Module.expects(:find).with('my', "testing")
80
+
81
+ @request.stubs(:node).returns "mynode"
82
+ @module_files.find(@request)
83
+ end
84
+
85
+ it "should use the default environment setting to look up the module if the node name is not provided" do
86
+ env = stub "environment", :name => "testing"
87
+ Puppet::Node::Environment.stubs(:new).returns(env)
88
+ Puppet::Module.expects(:find).with('my', "testing")
89
+ @module_files.find(@request)
90
+ end
91
+ end
92
+
93
+ describe Puppet::Indirector::ModuleFiles, " when returning instances" do
94
+
95
+ before do
96
+ Puppet::Module.expects(:find).with('my', "myenv").returns @module
97
+ FileTest.expects(:exists?).with("/module/path/files/local/file").returns(true)
98
+ @instance = mock 'instance'
99
+ end
100
+
101
+ it "should create the instance with the key used to find the instance" do
102
+ @model.expects(:new).with { |key, *options| key == @uri }
103
+ @module_files.find(@request)
104
+ end
105
+
106
+ it "should create the instance with the path at which the instance was found" do
107
+ @model.expects(:new).with { |key, options| options[:path] == "/module/path/files/local/file" }
108
+ @module_files.find(@request)
109
+ end
110
+
111
+ it "should set the provided :links setting on to the instance if one is provided" do
112
+ @model.expects(:new).returns(@instance)
113
+ @instance.expects(:links=).with(:mytest)
114
+
115
+ @request.options[:links] = :mytest
116
+ @module_files.find(@request)
117
+ end
118
+
119
+ it "should not set a :links value if no :links parameter is provided" do
120
+ @model.expects(:new).returns(@instance)
121
+ @module_files.find(@request)
122
+ end
123
+ end
124
+
125
+ describe Puppet::Indirector::ModuleFiles, " when authorizing" do
126
+
127
+ before do
128
+ @configuration = mock 'configuration'
129
+ Puppet::FileServing::Configuration.stubs(:create).returns(@configuration)
130
+ end
131
+
132
+ it "should have an authorization hook" do
133
+ @module_files.should respond_to(:authorized?)
134
+ end
135
+
136
+ it "should deny the :destroy method" do
137
+ @request.expects(:method).returns :destroy
138
+ @module_files.authorized?(@request).should be_false
139
+ end
140
+
141
+ it "should deny the :save method" do
142
+ @request.expects(:method).returns :save
143
+ @module_files.authorized?(@request).should be_false
144
+ end
145
+
146
+ it "should use the file server configuration to determine authorization" do
147
+ @configuration.expects(:authorized?)
148
+ @module_files.authorized?(@request)
149
+ end
150
+
151
+ it "should use the path directly from the URI if it already includes /modules" do
152
+ @request.expects(:key).returns "puppetmounts://host/modules/my/file"
153
+ @configuration.expects(:authorized?).with { |uri, *args| uri == "/modules/my/file" }
154
+ @module_files.authorized?(@request)
155
+ end
156
+
157
+ it "should add /modules to the file path if it's not included in the URI" do
158
+ @request.expects(:key).returns "puppetmounts://host/my/file"
159
+ @configuration.expects(:authorized?).with { |uri, *args| uri == "/modules/my/file" }
160
+ @module_files.authorized?(@request)
161
+ end
162
+
163
+ it "should pass the node name to the file server configuration" do
164
+ @request.expects(:key).returns "puppetmounts://host/my/file"
165
+ @configuration.expects(:authorized?).with { |key, options| options[:node] == "mynode" }
166
+ @request.stubs(:node).returns "mynode"
167
+ @module_files.authorized?(@request)
168
+ end
169
+
170
+ it "should pass the IP address to the file server configuration" do
171
+ @request.expects(:ip).returns "myip"
172
+ @configuration.expects(:authorized?).with { |key, options| options[:ipaddress] == "myip" }
173
+ @module_files.authorized?(@request)
174
+ end
175
+
176
+ it "should return false if the file server configuration denies authorization" do
177
+ @configuration.expects(:authorized?).returns(false)
178
+ @module_files.authorized?(@request).should be_false
179
+ end
180
+
181
+ it "should return true if the file server configuration approves authorization" do
182
+ @configuration.expects(:authorized?).returns(true)
183
+ @module_files.authorized?(@request).should be_true
184
+ end
185
+ end
186
+
187
+ describe Puppet::Indirector::ModuleFiles, " when searching for files" do
188
+
189
+ it "should strip off the leading '/modules' mount name" do
190
+ Puppet::Node::Environment.stubs(:new).returns(stub('env', :name => "myenv"))
191
+ Puppet::Module.expects(:find).with('my', "myenv").returns @module
192
+ @module_files.search(@request)
193
+ end
194
+
195
+ it "should not strip off leading terms that start with '/modules' but are longer words" do
196
+ Puppet::Node::Environment.stubs(:new).returns(stub('env', :name => "myenv"))
197
+ Puppet::Module.expects(:find).with('modulestart', "myenv").returns nil
198
+ @request.stubs(:key).returns "puppetmounts://host/modulestart/my/local/file"
199
+ @module_files.search @request
200
+ end
201
+
202
+ it "should search for a module whose name is the first term in the remaining file path" do
203
+ Puppet::Node::Environment.stubs(:new).returns(stub('env', :name => "myenv"))
204
+ Puppet::Module.expects(:find).with('my', "myenv").returns @module
205
+ @module_files.search(@request)
206
+ end
207
+
208
+ it "should search for a file relative to the module's files directory" do
209
+ Puppet::Node::Environment.stubs(:new).returns(stub('env', :name => "myenv"))
210
+ Puppet::Module.expects(:find).with('my', "myenv").returns @module
211
+ FileTest.expects(:exists?).with("/module/path/files/local/file")
212
+ @module_files.search(@request)
213
+ end
214
+
215
+ it "should return nil if the module does not exist" do
216
+ Puppet::Node::Environment.stubs(:new).returns(stub('env', :name => "myenv"))
217
+ Puppet::Module.expects(:find).with('my', "myenv").returns nil
218
+ @module_files.search(@request).should be_nil
219
+ end
220
+
221
+ it "should return nil if the module exists but the file does not" do
222
+ Puppet::Node::Environment.stubs(:new).returns(stub('env', :name => "myenv"))
223
+ Puppet::Module.expects(:find).with('my', "myenv").returns @module
224
+ FileTest.expects(:exists?).with("/module/path/files/local/file").returns(false)
225
+ @module_files.search(@request).should be_nil
226
+ end
227
+
228
+ it "should use the node's environment to look up the module if the node name is provided" do
229
+ node = stub "node", :environment => "testing"
230
+ Puppet::Node.expects(:find).with("mynode").returns(node)
231
+ Puppet::Module.expects(:find).with('my', "testing")
232
+ @request.stubs(:node).returns "mynode"
233
+ @module_files.search(@request)
234
+ end
235
+
236
+ it "should use the default environment setting to look up the module if the node name is not provided and the environment is not set to ''" do
237
+ env = stub 'env', :name => "testing"
238
+ Puppet::Node::Environment.stubs(:new).returns(env)
239
+ Puppet::Module.expects(:find).with('my', "testing")
240
+ @module_files.search(@request)
241
+ end
242
+
243
+ it "should use :path2instances from the terminus_helper to return instances if a module is found and the file exists" do
244
+ Puppet::Node::Environment.stubs(:new).returns(stub('env', :name => "myenv"))
245
+ Puppet::Module.expects(:find).with('my', "myenv").returns @module
246
+ FileTest.expects(:exists?).with("/module/path/files/local/file").returns(true)
247
+ @module_files.expects(:path2instances).with(@request, "/module/path/files/local/file")
248
+ @module_files.search(@request)
249
+ end
250
+
251
+ it "should pass the request directly to :path2instances" do
252
+ Puppet::Node::Environment.stubs(:new).returns(stub('env', :name => "myenv"))
253
+ Puppet::Module.expects(:find).with('my', "myenv").returns @module
254
+ FileTest.expects(:exists?).with("/module/path/files/local/file").returns(true)
255
+ @module_files.expects(:path2instances).with(@request, "/module/path/files/local/file")
256
+ @module_files.search(@request)
257
+ end
258
+ end
259
+ end
@@ -0,0 +1,69 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.dirname(__FILE__) + '/../../../spec_helper'
4
+
5
+ require 'puppet/indirector/node/exec'
6
+
7
+ describe Puppet::Node::Exec do
8
+ before do
9
+ @indirection = mock 'indirection'
10
+ Puppet.settings.stubs(:value).with(:external_nodes).returns("/echo")
11
+ @searcher = Puppet::Node::Exec.new
12
+ end
13
+
14
+ describe "when constructing the command to run" do
15
+ it "should use the external_node script as the command" do
16
+ Puppet.expects(:[]).with(:external_nodes).returns("/bin/echo")
17
+ @searcher.command.should == %w{/bin/echo}
18
+ end
19
+
20
+ it "should throw an exception if no external node command is set" do
21
+ Puppet.expects(:[]).with(:external_nodes).returns("none")
22
+ proc { @searcher.find(stub('request', :key => "foo")) }.should raise_error(ArgumentError)
23
+ end
24
+ end
25
+
26
+ describe "when handling the results of the command" do
27
+ before do
28
+ @node = stub 'node', :fact_merge => nil
29
+ @name = "yay"
30
+ Puppet::Node.expects(:new).with(@name).returns(@node)
31
+ @result = {}
32
+ # Use a local variable so the reference is usable in the execute() definition.
33
+ result = @result
34
+ @searcher.meta_def(:execute) do |command|
35
+ return YAML.dump(result)
36
+ end
37
+
38
+ @request = stub 'request', :key => @name
39
+ end
40
+
41
+ it "should translate the YAML into a Node instance" do
42
+ # Use an empty hash
43
+ @searcher.find(@request).should equal(@node)
44
+ end
45
+
46
+ it "should set the resulting parameters as the node parameters" do
47
+ @result[:parameters] = {"a" => "b", "c" => "d"}
48
+ @node.expects(:parameters=).with "a" => "b", "c" => "d"
49
+ @searcher.find(@request)
50
+ end
51
+
52
+ it "should set the resulting classes as the node classes" do
53
+ @result[:classes] = %w{one two}
54
+ @node.expects(:classes=).with %w{one two}
55
+ @searcher.find(@request)
56
+ end
57
+
58
+ it "should merge the node's facts with its parameters" do
59
+ @node.expects(:fact_merge)
60
+ @searcher.find(@request)
61
+ end
62
+
63
+ it "should set the node's environment if one is provided" do
64
+ @result[:environment] = "yay"
65
+ @node.expects(:environment=).with "yay"
66
+ @searcher.find(@request)
67
+ end
68
+ end
69
+ end