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,46 @@
1
+ dir = File.expand_path(File.dirname(__FILE__))
2
+ [ "#{dir}/../../lib", "#{dir}/../../test/lib"].each do |dir|
3
+ fulldir = File.expand_path(dir)
4
+ $LOAD_PATH.unshift(fulldir) unless $LOAD_PATH.include?(fulldir)
5
+ end
6
+
7
+ require 'spec'
8
+ require 'puppettest'
9
+ require 'puppettest/runnable_test'
10
+
11
+ module Spec
12
+ module Runner
13
+ class ExampleGroupRunner
14
+ def run
15
+ prepare
16
+ success = true
17
+ example_groups.each do |example_group|
18
+ unless example_group.runnable?
19
+ warn "Skipping unsuitable example group %s: %s" % [example_group.description, example_group.messages.join(", ")]
20
+ next
21
+ end
22
+ success = success & example_group.run
23
+ end
24
+ return success
25
+ ensure
26
+ finish
27
+ end
28
+ end
29
+ end
30
+ end
31
+
32
+ module Spec
33
+ module Example
34
+ class ExampleGroup
35
+ extend PuppetTest::RunnableTest
36
+ end
37
+ end
38
+ end
39
+
40
+ module Test
41
+ module Unit
42
+ class TestCase
43
+ extend PuppetTest::RunnableTest
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,5 @@
1
+ class Object
2
+ # This is necessary because the RAL has a 'should'
3
+ # method.
4
+ alias :must :should
5
+ end
@@ -0,0 +1,42 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # Created by Luke Kanies on 2007-10-18.
4
+ # Copyright (c) 2007. All rights reserved.
5
+
6
+ describe "Puppet::Indirector::FileServerTerminus", :shared => true do
7
+ # This only works if the shared behaviour is included before
8
+ # the 'before' block in the including context.
9
+ before do
10
+ Puppet::FileServing::Configuration.clear_cache
11
+ FileTest.stubs(:exists?).with(Puppet[:fileserverconfig]).returns(true)
12
+ FileTest.stubs(:exists?).with("/my/mount/path").returns(true)
13
+ FileTest.stubs(:directory?).with("/my/mount/path").returns(true)
14
+ FileTest.stubs(:readable?).with("/my/mount/path").returns(true)
15
+
16
+ # Use a real mount, so the integration is a bit deeper.
17
+ @mount1 = Puppet::FileServing::Configuration::Mount.new("one")
18
+ @mount1.path = "/my/mount/path"
19
+
20
+ @parser = stub 'parser', :changed? => false
21
+ @parser.stubs(:parse).returns("one" => @mount1)
22
+
23
+ Puppet::FileServing::Configuration::Parser.stubs(:new).returns(@parser)
24
+
25
+ # Stub out the modules terminus
26
+ @modules = mock 'modules terminus'
27
+
28
+ @request = Puppet::Indirector::Request.new(:indirection, :method, "puppetmounts://myhost/one/my/file")
29
+ end
30
+
31
+ it "should use the file server configuration to find files" do
32
+ @modules.stubs(:find).returns(nil)
33
+ @terminus.indirection.stubs(:terminus).with(:modules).returns(@modules)
34
+
35
+ path = "/my/mount/path/my/file"
36
+ FileTest.stubs(:exists?).with(path).returns(true)
37
+ FileTest.stubs(:exists?).with("/my/mount/path").returns(true)
38
+ @mount1.expects(:file).with("my/file", :node => nil).returns(path)
39
+
40
+ @terminus.find(@request).should be_instance_of(@test_class)
41
+ end
42
+ end
@@ -0,0 +1,64 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # Created by Luke Kanies on 2007-10-18.
4
+ # Copyright (c) 2007. All rights reserved.
5
+
6
+ describe "Puppet::FileServing::Files", :shared => true do
7
+ it "should use the rest terminus when the 'puppet' URI scheme is used and a host name is present" do
8
+ uri = "puppet://myhost/fakemod/my/file"
9
+ @indirection.terminus(:rest).expects(:find)
10
+ @test_class.find(uri)
11
+ end
12
+
13
+ it "should use the rest terminus when the 'puppet' URI scheme is used, no host name is present, and the process name is not 'puppet'" do
14
+ uri = "puppet:///fakemod/my/file"
15
+ Puppet.settings.stubs(:value).with(:name).returns("puppetd")
16
+ Puppet.settings.stubs(:value).with(:modulepath).returns("")
17
+ @indirection.terminus(:rest).expects(:find)
18
+ @test_class.find(uri)
19
+ end
20
+
21
+ it "should use the file_server terminus when the 'puppet' URI scheme is used, no host name is present, and the process name is 'puppet'" do
22
+ uri = "puppet:///fakemod/my/file"
23
+ Puppet::Node::Environment.stubs(:new).returns(stub("env", :name => "testing"))
24
+ Puppet.settings.stubs(:value).with(:name).returns("puppet")
25
+ Puppet.settings.stubs(:value).with(:modulepath, "testing").returns("")
26
+ Puppet.settings.stubs(:value).with(:modulepath).returns("")
27
+ Puppet.settings.stubs(:value).with(:libdir).returns("")
28
+ Puppet.settings.stubs(:value).with(:fileserverconfig).returns("/whatever")
29
+ Puppet.settings.stubs(:value).with(:environment).returns("")
30
+ @indirection.terminus(:file_server).expects(:find)
31
+ @indirection.terminus(:file_server).stubs(:authorized?).returns(true)
32
+ @test_class.find(uri)
33
+ end
34
+
35
+ it "should use the file_server terminus when the 'puppetmounts' URI scheme is used" do
36
+ uri = "puppetmounts:///fakemod/my/file"
37
+ @indirection.terminus(:file_server).expects(:find)
38
+ @indirection.terminus(:file_server).stubs(:authorized?).returns(true)
39
+ @test_class.find(uri)
40
+ end
41
+
42
+ it "should use the file terminus when the 'file' URI scheme is used" do
43
+ uri = "file:///fakemod/my/file"
44
+ @indirection.terminus(:file).expects(:find)
45
+ @test_class.find(uri)
46
+ end
47
+
48
+ it "should use the file terminus when a fully qualified path is provided" do
49
+ uri = "/fakemod/my/file"
50
+ @indirection.terminus(:file).expects(:find)
51
+ @test_class.find(uri)
52
+ end
53
+
54
+ it "should use the configuration to test whether the request is allowed" do
55
+ uri = "puppetmounts:///fakemod/my/file"
56
+ config = mock 'configuration'
57
+ @indirection.terminus(:file_server).stubs(:configuration).returns config
58
+
59
+ @indirection.terminus(:file_server).expects(:find)
60
+ config.expects(:authorized?).returns(true)
61
+ @test_class.find(uri, :node => "foo", :ip => "bar")
62
+ end
63
+ end
64
+
@@ -0,0 +1,32 @@
1
+ #
2
+ # Created by Luke Kanies on 2008-4-8.
3
+ # Copyright (c) 2008. All rights reserved.
4
+
5
+ describe "A Memory Terminus", :shared => true do
6
+ it "should find no instances by default" do
7
+ @searcher.find(@request).should be_nil
8
+ end
9
+
10
+ it "should be able to find instances that were previously saved" do
11
+ @searcher.save(@request)
12
+ @searcher.find(@request).should equal(@instance)
13
+ end
14
+
15
+ it "should replace existing saved instances when a new instance with the same name is saved" do
16
+ @searcher.save(@request)
17
+ two = stub 'second', :name => @name
18
+ trequest = stub 'request', :key => @name, :instance => two
19
+ @searcher.save(trequest)
20
+ @searcher.find(@request).should equal(two)
21
+ end
22
+
23
+ it "should be able to remove previously saved instances" do
24
+ @searcher.save(@request)
25
+ @searcher.destroy(@request)
26
+ @searcher.find(@request).should be_nil
27
+ end
28
+
29
+ it "should fail when asked to destroy an instance that does not exist" do
30
+ proc { @searcher.destroy(@request) }.should raise_error(ArgumentError)
31
+ end
32
+ end
@@ -0,0 +1,5 @@
1
+ --format
2
+ s
3
+ --colour
4
+ --loadby
5
+ mtime
@@ -0,0 +1,36 @@
1
+ dir = File.expand_path(File.dirname(__FILE__))
2
+
3
+ $LOAD_PATH.unshift("#{dir}/")
4
+ $LOAD_PATH.unshift("#{dir}/../lib")
5
+ $LOAD_PATH.unshift("#{dir}/../test/lib") # Add the old test dir, so that we can still find our local mocha and spec
6
+
7
+ # include any gems in vendor/gems
8
+ Dir["#{dir}/../vendor/gems/**"].each do |path|
9
+ libpath = File.join(path, "lib")
10
+ if File.directory?(libpath)
11
+ $LOAD_PATH.unshift(libpath)
12
+ else
13
+ $LOAD_PATH.unshift(path)
14
+ end
15
+ end
16
+
17
+ require 'puppettest'
18
+ require 'puppettest/runnable_test'
19
+ require 'mocha'
20
+ require 'spec'
21
+
22
+ # load any monkey-patches
23
+ Dir["#{dir}/monkey_patches/*.rb"].map { |file| require file }
24
+
25
+ Spec::Runner.configure do |config|
26
+ config.mock_with :mocha
27
+
28
+ # config.prepend_before :all do
29
+ # setup_mocks_for_rspec
30
+ # setup() if respond_to? :setup
31
+ # end
32
+ #
33
+ # config.prepend_after :all do
34
+ # teardown() if respond_to? :teardown
35
+ # end
36
+ end
@@ -0,0 +1,122 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ Dir.chdir(File.dirname(__FILE__)) { (s = lambda { |f| File.exist?(f) ? require(f) : Dir.chdir("..") { s.call(f) } }).call("spec/spec_helper.rb") }
4
+
5
+ require 'puppet/executables/client/certhandler'
6
+
7
+ cert_handler = Puppet::Executables::Client::CertHandler
8
+
9
+ describe cert_handler, "when handling certificates" do
10
+ before do
11
+ @caclient = mock('caclient')
12
+ caclient_class = mock('caclient_class')
13
+ caclient_class.stubs(:new).returns(@caclient)
14
+ Puppet::Network::Client.stubs(:ca).returns(caclient_class)
15
+ end
16
+
17
+ describe "when reading or retrieving the certificate" do
18
+ before do
19
+ @handler = cert_handler.new(1,true)
20
+ end
21
+
22
+ it "should attempt to read the certificate" do
23
+ @handler.expects(:read_cert).returns true
24
+ @handler.read_retrieve
25
+ end
26
+
27
+ it "should delegate to Puppet::Network::HttpPool to read the certificate" do
28
+ Puppet::Network::HttpPool.expects(:read_cert).returns(true)
29
+ @handler.read_retrieve
30
+ end
31
+
32
+ it "should not attempt to retrieve a certificate if one can be read" do
33
+ @handler.stubs(:read_cert).returns true
34
+ @handler.expects(:retrieve_cert).never
35
+ @handler.read_retrieve
36
+ end
37
+
38
+ it "should attempt to retrieve a certificate if none can be read" do
39
+ @handler.stubs(:read_cert).returns false
40
+ @handler.expects(:retrieve_cert)
41
+ @handler.read_retrieve
42
+ end
43
+
44
+ it "should delegate to caclient to retrieve a certificate" do
45
+ @handler.stubs(:read_cert).returns false
46
+ @caclient.expects(:request_cert).returns(true)
47
+ @handler.stubs(:read_new_cert).returns(true)
48
+ @handler.read_retrieve
49
+ end
50
+
51
+ it "should return true if the certificate exists" do
52
+ @handler.stubs(:read_cert).returns true
53
+ @handler.read_retrieve.should be_true
54
+ end
55
+
56
+ it "should return false when getting a new cert" do
57
+ #This is the second call to httppool that happens in 'read_new_cert'
58
+ Puppet::Network::HttpPool.expects(:read_cert).returns(true)
59
+ @caclient.stubs(:request_cert).returns(true)
60
+ @handler.stubs(:read_cert).returns(false)
61
+ @handler.read_retrieve.should be_false
62
+ end
63
+ end
64
+
65
+ describe "when waiting for cert" do
66
+ before do
67
+ @handler = cert_handler.new(1,false)
68
+ @handler.stubs(:read_cert).returns false
69
+ #all waiting for cert tests should loop, which will always happen if sleep is called
70
+ #yeah, I put the expectation in the setup, deal with it
71
+ @handler.expects(:sleep).with(1)
72
+
73
+ #This is needed to get out of the loop
74
+ @handler.stubs(:read_new_cert).returns(true)
75
+ end
76
+
77
+ it "should loop when the cert request does not return a certificate" do
78
+ @caclient.stubs(:request_cert).times(2).returns(false).then.returns(true)
79
+ @handler.retrieve_cert
80
+ end
81
+
82
+ it "should loop when the cert request raises an Error" do
83
+ @caclient.stubs(:request_cert).times(2).raises(StandardError, 'Testing').then.returns(true)
84
+ @handler.retrieve_cert
85
+ end
86
+
87
+ it "should loop when the new cert can't be read" do
88
+ @caclient.stubs(:request_cert).returns(true)
89
+ @handler.stubs(:read_new_cert).times(2).returns(false).then.returns(true)
90
+ @handler.retrieve_cert
91
+ end
92
+ end
93
+
94
+ describe "when in one time mode" do
95
+ before do
96
+ #true puts us in onetime mode
97
+ @handler = cert_handler.new(1,true)
98
+ @handler.stubs(:read_cert).returns false
99
+ end
100
+
101
+ it "should exit if the cert request does not return a certificate" do
102
+ @caclient.stubs(:request_cert).returns(false)
103
+ @handler.expects(:exit).with(1).raises(SystemExit)
104
+ lambda { @handler.retrieve_cert }.should raise_error(SystemExit)
105
+ end
106
+
107
+
108
+ it "should exit if the cert request raises an exception" do
109
+ @caclient.stubs(:request_cert).raises(StandardError, 'Testing')
110
+ @handler.expects(:exit).with(23).raises(SystemExit)
111
+ lambda { @handler.retrieve_cert }.should raise_error(SystemExit)
112
+ end
113
+
114
+ it "should exit if the new cert can't be read" do
115
+ @caclient.stubs(:request_cert).returns(true)
116
+ #this is the second, call to httppool inside read_new_cert
117
+ Puppet::Network::HttpPool.stubs(:read_cert).returns(false)
118
+ @handler.expects(:exit).with(34).raises(SystemExit)
119
+ lambda { @handler.retrieve_cert }.should raise_error(SystemExit)
120
+ end
121
+ end
122
+ end
@@ -0,0 +1,224 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.dirname(__FILE__) + '/../../spec_helper'
4
+
5
+ require 'puppet/file_serving/configuration'
6
+
7
+ describe Puppet::FileServing::Configuration do
8
+ it "should make :new a private method" do
9
+ proc { Puppet::FileServing::Configuration.new }.should raise_error
10
+ end
11
+
12
+ it "should return the same configuration each time :create is called" do
13
+ Puppet::FileServing::Configuration.create.should equal(Puppet::FileServing::Configuration.create)
14
+ end
15
+
16
+ it "should have a method for removing the current configuration instance" do
17
+ old = Puppet::FileServing::Configuration.create
18
+ Puppet::FileServing::Configuration.clear_cache
19
+ Puppet::FileServing::Configuration.create.should_not equal(old)
20
+ end
21
+
22
+ after do
23
+ Puppet::FileServing::Configuration.clear_cache
24
+ end
25
+ end
26
+
27
+ describe Puppet::FileServing::Configuration do
28
+
29
+ before :each do
30
+ @path = "/path/to/configuration/file.conf"
31
+ Puppet.settings.stubs(:value).with(:fileserverconfig).returns(@path)
32
+ end
33
+
34
+ after :each do
35
+ Puppet::FileServing::Configuration.clear_cache
36
+ end
37
+
38
+ describe Puppet::FileServing::Configuration, " when initializing" do
39
+
40
+ it "should work without a configuration file" do
41
+ FileTest.stubs(:exists?).with(@path).returns(false)
42
+ proc { Puppet::FileServing::Configuration.create }.should_not raise_error
43
+ end
44
+
45
+ it "should parse the configuration file if present" do
46
+ FileTest.stubs(:exists?).with(@path).returns(true)
47
+ @parser = mock 'parser'
48
+ @parser.expects(:parse).returns({})
49
+ Puppet::FileServing::Configuration::Parser.stubs(:new).returns(@parser)
50
+ Puppet::FileServing::Configuration.create
51
+ end
52
+
53
+ it "should determine the path to the configuration file from the Puppet settings" do
54
+ Puppet::FileServing::Configuration.create
55
+ end
56
+ end
57
+
58
+ describe Puppet::FileServing::Configuration, " when parsing the configuration file" do
59
+
60
+ before do
61
+ FileTest.stubs(:exists?).with(@path).returns(true)
62
+ @parser = mock 'parser'
63
+ Puppet::FileServing::Configuration::Parser.stubs(:new).returns(@parser)
64
+ end
65
+
66
+ it "should set the mount list to the results of parsing" do
67
+ @parser.expects(:parse).returns("one" => mock("mount"))
68
+ config = Puppet::FileServing::Configuration.create
69
+ config.mounted?("one").should be_true
70
+ end
71
+
72
+ it "should not raise exceptions" do
73
+ @parser.expects(:parse).raises(ArgumentError)
74
+ proc { Puppet::FileServing::Configuration.create }.should_not raise_error
75
+ end
76
+
77
+ it "should replace the existing mount list with the results of reparsing" do
78
+ @parser.expects(:parse).returns("one" => mock("mount"))
79
+ config = Puppet::FileServing::Configuration.create
80
+ config.mounted?("one").should be_true
81
+ # Now parse again
82
+ @parser.expects(:parse).returns("two" => mock('other'))
83
+ config.send(:readconfig, false)
84
+ config.mounted?("one").should be_false
85
+ config.mounted?("two").should be_true
86
+ end
87
+
88
+ it "should not replace the mount list until the file is entirely parsed successfully" do
89
+ @parser.expects(:parse).returns("one" => mock("mount"))
90
+ @parser.expects(:parse).raises(ArgumentError)
91
+ config = Puppet::FileServing::Configuration.create
92
+ # Now parse again, so the exception gets thrown
93
+ config.send(:readconfig, false)
94
+ config.mounted?("one").should be_true
95
+ end
96
+ end
97
+
98
+ describe Puppet::FileServing::Configuration, " when finding files" do
99
+
100
+ before do
101
+ @parser = mock 'parser'
102
+ @parser.stubs(:changed?).returns true
103
+ FileTest.stubs(:exists?).with(@path).returns(true)
104
+ Puppet::FileServing::Configuration::Parser.stubs(:new).returns(@parser)
105
+
106
+ @mount1 = stub 'mount', :name => "one"
107
+ @mounts = {"one" => @mount1}
108
+
109
+ Facter.stubs(:value).with("hostname").returns("whatever")
110
+
111
+ @config = Puppet::FileServing::Configuration.create
112
+ end
113
+
114
+ it "should fail if the uri does not match a leading slash followed by a valid mount name" do
115
+ @parser.expects(:parse).returns(@mounts)
116
+ proc { @config.file_path("something") }.should raise_error(ArgumentError)
117
+ end
118
+
119
+ it "should use the first term after the first slash for the mount name" do
120
+ @parser.expects(:parse).returns(@mounts)
121
+ FileTest.stubs(:exists?).returns(true)
122
+ @mount1.expects(:file)
123
+ @config.file_path("/one")
124
+ end
125
+
126
+ it "should use the remainder of the URI after the mount name as the file name" do
127
+ @parser.expects(:parse).returns(@mounts)
128
+ @mount1.expects(:file).with("something/else", {})
129
+ FileTest.stubs(:exists?).returns(true)
130
+ @config.file_path("/one/something/else")
131
+ end
132
+
133
+ it "should treat a bare name as a mount and no relative file" do
134
+ @parser.expects(:parse).returns(@mounts)
135
+ @mount1.expects(:file).with(nil, {})
136
+ FileTest.stubs(:exists?).returns(true)
137
+ @config.file_path("/one")
138
+ end
139
+
140
+ it "should treat a name with a trailing slash equivalently to a name with no trailing slash" do
141
+ @parser.expects(:parse).returns(@mounts)
142
+ @mount1.expects(:file).with(nil, {})
143
+ FileTest.stubs(:exists?).returns(true)
144
+ @config.file_path("/one/")
145
+ end
146
+
147
+ it "should return nil if the mount cannot be found" do
148
+ @parser.expects(:changed?).returns(true)
149
+ @parser.expects(:parse).returns({})
150
+ @config.file_path("/one/something").should be_nil
151
+ end
152
+
153
+ it "should return nil if the mount does not contain the file" do
154
+ @parser.expects(:parse).returns(@mounts)
155
+ @mount1.expects(:file).with("something/else", {}).returns(nil)
156
+ @config.file_path("/one/something/else").should be_nil
157
+ end
158
+
159
+ it "should return the fully qualified path if the mount exists" do
160
+ @parser.expects(:parse).returns(@mounts)
161
+ @mount1.expects(:file).with("something/else", {}).returns("/full/path")
162
+ @config.file_path("/one/something/else").should == "/full/path"
163
+ end
164
+
165
+ it "should reparse the configuration file when it has changed" do
166
+ @mount1.stubs(:file).returns("whatever")
167
+ @parser.expects(:changed?).returns(true)
168
+ @parser.expects(:parse).returns(@mounts)
169
+ FileTest.stubs(:exists?).returns(true)
170
+ @config.file_path("/one/something")
171
+
172
+ @parser.expects(:changed?).returns(true)
173
+ @parser.expects(:parse).returns({})
174
+ @config.file_path("/one/something").should be_nil
175
+ end
176
+ end
177
+
178
+ describe Puppet::FileServing::Configuration, " when checking authorization" do
179
+
180
+ before do
181
+ @parser = mock 'parser'
182
+ @parser.stubs(:changed?).returns true
183
+ FileTest.stubs(:exists?).with(@path).returns(true)
184
+ Puppet::FileServing::Configuration::Parser.stubs(:new).returns(@parser)
185
+
186
+ @mount1 = stub 'mount', :name => "one"
187
+ @mounts = {"one" => @mount1}
188
+ @parser.stubs(:parse).returns(@mounts)
189
+
190
+ Facter.stubs(:value).with("hostname").returns("whatever")
191
+
192
+ @config = Puppet::FileServing::Configuration.create
193
+ end
194
+
195
+ it "should return false if the mount cannot be found" do
196
+ @config.authorized?("/nope/my/file").should be_false
197
+ end
198
+
199
+ it "should use the mount to determine authorization" do
200
+ @mount1.expects(:allowed?)
201
+ @config.authorized?("/one/my/file")
202
+ end
203
+
204
+ it "should pass the client's name to the mount if provided" do
205
+ @mount1.expects(:allowed?).with("myhost", nil)
206
+ @config.authorized?("/one/my/file", :node => "myhost")
207
+ end
208
+
209
+ it "should pass the client's IP to the mount if provided" do
210
+ @mount1.expects(:allowed?).with("myhost", "myip")
211
+ @config.authorized?("/one/my/file", :node => "myhost", :ipaddress => "myip")
212
+ end
213
+
214
+ it "should return true if the mount allows the client" do
215
+ @mount1.expects(:allowed?).returns(true)
216
+ @config.authorized?("/one/my/file").should be_true
217
+ end
218
+
219
+ it "should return false if the mount denies the client" do
220
+ @mount1.expects(:allowed?).returns(false)
221
+ @config.authorized?("/one/my/file").should be_false
222
+ end
223
+ end
224
+ end