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,20 @@
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
+ zone = Puppet::Type.type(:zone)
6
+
7
+ describe zone do
8
+ before do
9
+ @provider = stub 'provider'
10
+ @resource = stub 'resource', :resource => nil, :provider => @provider, :line => nil, :file => nil
11
+ end
12
+
13
+ parameters = [:create_args, :install_args]
14
+
15
+ parameters.each do |parameter|
16
+ it "should have a %s parameter" % parameter do
17
+ zone.attrclass(parameter).ancestors.should be_include(Puppet::Parameter)
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,110 @@
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
+ zpool = Puppet::Type.type(:zpool)
6
+
7
+ describe zpool do
8
+ before do
9
+ @provider = stub 'provider'
10
+ @resource = stub 'resource', :resource => nil, :provider => @provider, :line => nil, :file => nil
11
+ end
12
+
13
+ properties = [:ensure, :disk, :mirror, :raidz, :spare, :log]
14
+
15
+ properties.each do |property|
16
+ it "should have a %s property" % property do
17
+ zpool.attrclass(property).ancestors.should be_include(Puppet::Property)
18
+ end
19
+ end
20
+
21
+ parameters = [:pool, :raid_parity]
22
+
23
+ parameters.each do |parameter|
24
+ it "should have a %s parameter" % parameter do
25
+ zpool.attrclass(parameter).ancestors.should be_include(Puppet::Parameter)
26
+ end
27
+ end
28
+ end
29
+
30
+ vdev_property = Puppet::Property::VDev
31
+
32
+ describe vdev_property do
33
+ before do
34
+ vdev_property.initvars
35
+ @resource = stub 'resource', :[]= => nil, :property => nil
36
+ @property = vdev_property.new(:resource => @resource)
37
+ end
38
+
39
+ it "should be insync if the devices are the same" do
40
+ @property.should = ["dev1 dev2"]
41
+ @property.insync?(["dev2 dev1"]).must be_true
42
+ end
43
+
44
+ it "should be out of sync if the devices are not the same" do
45
+ @property.should = ["dev1 dev3"]
46
+ @property.insync?(["dev2 dev1"]).must be_false
47
+ end
48
+
49
+ it "should be insync if the devices are the same and the should values are comma seperated" do
50
+ @property.should = ["dev1", "dev2"]
51
+ @property.insync?(["dev2 dev1"]).must be_true
52
+ end
53
+
54
+ it "should be out of sync if the device is absent and should has a value" do
55
+ @property.should = ["dev1", "dev2"]
56
+ @property.insync?(:absent).must be_false
57
+ end
58
+
59
+ it "should be insync if the device is absent and should is absent" do
60
+ @property.should = [:absent]
61
+ @property.insync?(:absent).must be_true
62
+ end
63
+ end
64
+
65
+ multi_vdev_property = Puppet::Property::MultiVDev
66
+
67
+ describe multi_vdev_property do
68
+ before do
69
+ multi_vdev_property.initvars
70
+ @resource = stub 'resource', :[]= => nil, :property => nil
71
+ @property = multi_vdev_property.new(:resource => @resource)
72
+ end
73
+
74
+ it "should be insync if the devices are the same" do
75
+ @property.should = ["dev1 dev2"]
76
+ @property.insync?(["dev2 dev1"]).must be_true
77
+ end
78
+
79
+ it "should be out of sync if the devices are not the same" do
80
+ @property.should = ["dev1 dev3"]
81
+ @property.insync?(["dev2 dev1"]).must be_false
82
+ end
83
+
84
+ it "should be out of sync if the device is absent and should has a value" do
85
+ @property.should = ["dev1", "dev2"]
86
+ @property.insync?(:absent).must be_false
87
+ end
88
+
89
+ it "should be insync if the device is absent and should is absent" do
90
+ @property.should = [:absent]
91
+ @property.insync?(:absent).must be_true
92
+ end
93
+
94
+ describe "when there are multiple lists of devices" do
95
+ it "should be in sync if each group has the same devices" do
96
+ @property.should = ["dev1 dev2", "dev3 dev4"]
97
+ @property.insync?(["dev2 dev1", "dev3 dev4"]).must be_true
98
+ end
99
+
100
+ it "should be out of sync if any group has the different devices" do
101
+ @property.should = ["dev1 devX", "dev3 dev4"]
102
+ @property.insync?(["dev2 dev1", "dev3 dev4"]).must be_false
103
+ end
104
+
105
+ it "should be out of sync if devices are in the wrong group" do
106
+ @property.should = ["dev1 dev2", "dev3 dev4"]
107
+ @property.insync?(["dev2 dev3", "dev1 dev4"]).must be_false
108
+ end
109
+ end
110
+ end
@@ -0,0 +1,99 @@
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/util/checksums'
9
+
10
+ describe Puppet::Util::Checksums do
11
+ before do
12
+ @summer = Object.new
13
+ @summer.extend(Puppet::Util::Checksums)
14
+ end
15
+
16
+ content_sums = [:md5, :md5lite, :sha1, :sha1lite]
17
+ file_only = [:ctime, :mtime]
18
+
19
+ content_sums.each do |sumtype|
20
+ it "should be able to calculate %s sums from strings" % sumtype do
21
+ @summer.should be_respond_to(sumtype)
22
+ end
23
+ end
24
+
25
+ [content_sums, file_only].flatten.each do |sumtype|
26
+ it "should be able to calculate %s sums from files" % sumtype do
27
+ @summer.should be_respond_to(sumtype.to_s + "_file")
28
+ end
29
+ end
30
+
31
+ {:md5 => Digest::MD5, :sha1 => Digest::SHA1}.each do |sum, klass|
32
+ describe("when using %s" % sum) do
33
+ it "should use #{klass} to calculate string checksums" do
34
+ klass.expects(:hexdigest).with("mycontent").returns "whatever"
35
+ @summer.send(sum, "mycontent").should == "whatever"
36
+ end
37
+
38
+ it "should use incremental #{klass} sums to calculate file checksums" do
39
+ digest = mock 'digest'
40
+ klass.expects(:new).returns digest
41
+
42
+ file = "/path/to/my/file"
43
+
44
+ fh = mock 'filehandle'
45
+ fh.expects(:read).with(512).times(3).returns("firstline").then.returns("secondline").then.returns(nil)
46
+ #fh.expects(:read).with(512).returns("secondline")
47
+ #fh.expects(:read).with(512).returns(nil)
48
+
49
+ File.expects(:open).with(file, "r").yields(fh)
50
+
51
+ digest.expects(:<<).with "firstline"
52
+ digest.expects(:<<).with "secondline"
53
+ digest.expects(:hexdigest).returns :mydigest
54
+
55
+ @summer.send(sum.to_s + "_file", file).should == :mydigest
56
+ end
57
+ end
58
+ end
59
+
60
+ {:md5lite => Digest::MD5, :sha1lite => Digest::SHA1}.each do |sum, klass|
61
+ describe("when using %s" % sum) do
62
+ it "should use #{klass} to calculate string checksums from the first 512 characters of the string" do
63
+ content = "this is a test" * 100
64
+ klass.expects(:hexdigest).with(content[0..511]).returns "whatever"
65
+ @summer.send(sum, content).should == "whatever"
66
+ end
67
+
68
+ it "should use #{klass} to calculate a sum from the first 512 characters in the file" do
69
+ digest = mock 'digest'
70
+ klass.expects(:new).returns digest
71
+
72
+ file = "/path/to/my/file"
73
+
74
+ fh = mock 'filehandle'
75
+ fh.expects(:read).with(512).returns('my content')
76
+
77
+ File.expects(:open).with(file, "r").yields(fh)
78
+
79
+ digest.expects(:<<).with "my content"
80
+ digest.expects(:hexdigest).returns :mydigest
81
+
82
+ @summer.send(sum.to_s + "_file", file).should == :mydigest
83
+ end
84
+ end
85
+ end
86
+
87
+ [:ctime, :mtime].each do |sum|
88
+ describe("when using %s" % sum) do
89
+ it "should use the '#{sum}' on the file to determine the ctime" do
90
+ file = "/my/file"
91
+ stat = mock 'stat', sum => "mysum"
92
+
93
+ File.expects(:stat).with(file).returns(stat)
94
+
95
+ @summer.send(sum.to_s + "_file", file).should == "mysum"
96
+ end
97
+ end
98
+ end
99
+ end
@@ -0,0 +1,70 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # Created by Luke Kanies on 2008-02-12.
4
+ # Copyright (c) 2007. All rights reserved.
5
+
6
+ require File.dirname(__FILE__) + '/../../spec_helper'
7
+
8
+ require 'puppet/util/constant_inflector'
9
+
10
+ describe Puppet::Util::ConstantInflector, "when converting file names to constants" do
11
+ before do
12
+ @inflector = Object.new
13
+ @inflector.extend(Puppet::Util::ConstantInflector)
14
+ end
15
+
16
+ it "should capitalize terms" do
17
+ @inflector.file2constant("file").should == "File"
18
+ end
19
+
20
+ it "should switch all '/' characters to double colons" do
21
+ @inflector.file2constant("file/other").should == "File::Other"
22
+ end
23
+
24
+ it "should remove underscores and capitalize the proceeding letter" do
25
+ @inflector.file2constant("file_other").should == "FileOther"
26
+ end
27
+
28
+ it "should correctly replace as many underscores as exist in the file name" do
29
+ @inflector.file2constant("two_under_scores/with_some_more_underscores").should == "TwoUnderScores::WithSomeMoreUnderscores"
30
+ end
31
+
32
+ it "should collapse multiple underscores" do
33
+ @inflector.file2constant("many___scores").should == "ManyScores"
34
+ end
35
+
36
+ it "should correctly handle file names deeper than two directories" do
37
+ @inflector.file2constant("one_two/three_four/five_six").should == "OneTwo::ThreeFour::FiveSix"
38
+ end
39
+ end
40
+
41
+ describe Puppet::Util::ConstantInflector, "when converting constnats to file names" do
42
+ before do
43
+ @inflector = Object.new
44
+ @inflector.extend(Puppet::Util::ConstantInflector)
45
+ end
46
+
47
+ it "should convert them to a string if necessary" do
48
+ @inflector.constant2file(Puppet::Util::ConstantInflector).should be_instance_of(String)
49
+ end
50
+
51
+ it "should accept string inputs" do
52
+ @inflector.constant2file("Puppet::Util::ConstantInflector").should be_instance_of(String)
53
+ end
54
+
55
+ it "should downcase all terms" do
56
+ @inflector.constant2file("Puppet").should == "puppet"
57
+ end
58
+
59
+ it "should convert '::' to '/'" do
60
+ @inflector.constant2file("Puppet::Util::Constant").should == "puppet/util/constant"
61
+ end
62
+
63
+ it "should convert mid-word capitalization to an underscore" do
64
+ @inflector.constant2file("OneTwo::ThreeFour").should == "one_two/three_four"
65
+ end
66
+
67
+ it "should correctly handle constants with more than two parts" do
68
+ @inflector.constant2file("OneTwoThree::FourFiveSixSeven").should == "one_two_three/four_five_six_seven"
69
+ end
70
+ end
@@ -0,0 +1,115 @@
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/util/file_locking'
6
+
7
+ class FileLocker
8
+ include Puppet::Util::FileLocking
9
+ end
10
+
11
+ describe Puppet::Util::FileLocking do
12
+ it "should have a module method for getting a read lock on files" do
13
+ Puppet::Util::FileLocking.should respond_to(:readlock)
14
+ end
15
+
16
+ it "should have a module method for getting a write lock on files" do
17
+ Puppet::Util::FileLocking.should respond_to(:writelock)
18
+ end
19
+
20
+ it "should have an instance method for getting a read lock on files" do
21
+ FileLocker.new.private_methods.should be_include("readlock")
22
+ end
23
+
24
+ it "should have an instance method for getting a write lock on files" do
25
+ FileLocker.new.private_methods.should be_include("writelock")
26
+ end
27
+
28
+ describe "when acquiring a read lock" do
29
+ it "should use a global shared mutex" do
30
+ sync = mock 'sync'
31
+ sync.expects(:synchronize).with(Sync::SH)
32
+ Puppet::Util.expects(:sync).with("/file").returns sync
33
+
34
+ Puppet::Util::FileLocking.readlock '/file'
35
+ end
36
+
37
+ it "should use a shared lock on the file" do
38
+ sync = mock 'sync'
39
+ sync.expects(:synchronize).yields
40
+ Puppet::Util.expects(:sync).with("/file").returns sync
41
+
42
+ fh = mock 'filehandle'
43
+ File.expects(:open).with("/file").yields fh
44
+ fh.expects(:lock_shared).yields "locked_fh"
45
+
46
+ result = nil
47
+ Puppet::Util::FileLocking.readlock('/file') { |l| result = l }
48
+ result.should == "locked_fh"
49
+ end
50
+ end
51
+
52
+ describe "when acquiring a write lock" do
53
+ before do
54
+ @sync = mock 'sync'
55
+ Puppet::Util.stubs(:sync).returns @sync
56
+ @sync.stubs(:synchronize).yields
57
+ end
58
+
59
+ it "should fail if the parent directory does not exist" do
60
+ FileTest.expects(:directory?).with("/my/dir").returns false
61
+
62
+ lambda { Puppet::Util::FileLocking.writelock('/my/dir/file') }.should raise_error(Puppet::DevError)
63
+ end
64
+
65
+ it "should use a global exclusive mutex" do
66
+ sync = mock 'sync'
67
+ sync.expects(:synchronize).with(Sync::EX)
68
+ Puppet::Util.expects(:sync).with("/file").returns sync
69
+
70
+ Puppet::Util::FileLocking.writelock '/file'
71
+ end
72
+
73
+ it "should use any specified mode when opening the file" do
74
+ File.expects(:open).with("/file", "w", :mymode)
75
+
76
+ Puppet::Util::FileLocking.writelock('/file', :mymode)
77
+ end
78
+
79
+ it "should use the mode of the existing file if no mode is specified" do
80
+ File.expects(:stat).with("/file").returns(mock("stat", :mode => 0755))
81
+ File.expects(:open).with("/file", "w", 0755)
82
+
83
+ Puppet::Util::FileLocking.writelock('/file')
84
+ end
85
+
86
+ it "should use 0600 as the mode if no mode is specified and the file does not exist" do
87
+ File.expects(:stat).raises(Errno::ENOENT)
88
+ File.expects(:open).with("/file", "w", 0600)
89
+
90
+ Puppet::Util::FileLocking.writelock('/file')
91
+ end
92
+
93
+ it "should create an exclusive file lock" do
94
+ fh = mock 'fh'
95
+ File.expects(:open).yields fh
96
+ fh.expects(:lock_exclusive)
97
+
98
+ Puppet::Util::FileLocking.writelock('/file')
99
+ end
100
+
101
+ it "should allow the caller to write to the locked file" do
102
+ fh = mock 'fh'
103
+ File.expects(:open).yields fh
104
+
105
+ lfh = mock 'locked_filehandle'
106
+ fh.expects(:lock_exclusive).yields(lfh)
107
+
108
+ lfh.expects(:print).with "foo"
109
+
110
+ Puppet::Util::FileLocking.writelock('/file') do |f|
111
+ f.print "foo"
112
+ end
113
+ end
114
+ end
115
+ end
@@ -0,0 +1,169 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # Created by Luke Kanies on 2008-3-19.
4
+ # Copyright (c) 2006. All rights reserved.
5
+
6
+ require File.dirname(__FILE__) + '/../../../spec_helper'
7
+
8
+ require 'puppet/util/ldap/connection'
9
+
10
+ # So our mocks and such all work, even when ldap isn't available.
11
+ unless defined?(LDAP::Conn)
12
+ class LDAP
13
+ class Conn
14
+ def initialize(*args)
15
+ end
16
+ end
17
+ class SSLConn < Conn; end
18
+
19
+ LDAP_OPT_PROTOCOL_VERSION = 1
20
+ LDAP_OPT_REFERRALS = 2
21
+ LDAP_OPT_ON = 3
22
+ end
23
+ end
24
+
25
+ describe Puppet::Util::Ldap::Connection do
26
+ before do
27
+ Puppet.features.stubs(:ldap?).returns true
28
+
29
+ @ldapconn = mock 'ldap'
30
+ LDAP::Conn.stubs(:new).returns(@ldapconn)
31
+ LDAP::SSLConn.stubs(:new).returns(@ldapconn)
32
+
33
+ @ldapconn.stub_everything
34
+
35
+ @connection = Puppet::Util::Ldap::Connection.new("host", "port")
36
+ end
37
+
38
+
39
+ describe "when creating connections" do
40
+ it "should require the host and port" do
41
+ lambda { Puppet::Util::Ldap::Connection.new("myhost") }.should raise_error(ArgumentError)
42
+ end
43
+
44
+ it "should allow specification of a user and password" do
45
+ lambda { Puppet::Util::Ldap::Connection.new("myhost", "myport", :user => "blah", :password => "boo") }.should_not raise_error
46
+ end
47
+
48
+ it "should allow specification of ssl" do
49
+ lambda { Puppet::Util::Ldap::Connection.new("myhost", "myport", :ssl => :tsl) }.should_not raise_error
50
+ end
51
+
52
+ it "should support requiring a new connection" do
53
+ lambda { Puppet::Util::Ldap::Connection.new("myhost", "myport", :reset => true) }.should_not raise_error
54
+ end
55
+
56
+ it "should fail if ldap is unavailable" do
57
+ Puppet.features.expects(:ldap?).returns(false)
58
+
59
+ lambda { Puppet::Util::Ldap::Connection.new("host", "port") }.should raise_error(Puppet::Error)
60
+ end
61
+
62
+ it "should use neither ssl nor tls by default" do
63
+ LDAP::Conn.expects(:new).with("host", "port").returns(@ldapconn)
64
+
65
+ @connection.start
66
+ end
67
+
68
+ it "should use LDAP::SSLConn if ssl is requested" do
69
+ LDAP::SSLConn.expects(:new).with("host", "port").returns(@ldapconn)
70
+
71
+ @connection.ssl = true
72
+
73
+ @connection.start
74
+ end
75
+
76
+ it "should use LDAP::SSLConn and tls if tls is requested" do
77
+ LDAP::SSLConn.expects(:new).with("host", "port", true).returns(@ldapconn)
78
+
79
+ @connection.ssl = :tls
80
+
81
+ @connection.start
82
+ end
83
+
84
+ it "should set the protocol version to 3 and enable referrals" do
85
+ @ldapconn.expects(:set_option).with(LDAP::LDAP_OPT_PROTOCOL_VERSION, 3)
86
+ @ldapconn.expects(:set_option).with(LDAP::LDAP_OPT_REFERRALS, LDAP::LDAP_OPT_ON)
87
+ @connection.start
88
+ end
89
+
90
+ it "should bind with the provided user and password" do
91
+ @connection.user = "myuser"
92
+ @connection.password = "mypassword"
93
+ @ldapconn.expects(:simple_bind).with("myuser", "mypassword")
94
+
95
+ @connection.start
96
+ end
97
+
98
+ it "should bind with no user and password if none has been provided" do
99
+ @ldapconn.expects(:simple_bind).with(nil, nil)
100
+ @connection.start
101
+ end
102
+ end
103
+
104
+ describe "when closing connections" do
105
+ it "should not close connections that are not open" do
106
+ @connection.stubs(:connection).returns(@ldapconn)
107
+
108
+ @ldapconn.expects(:bound?).returns false
109
+ @ldapconn.expects(:unbind).never
110
+
111
+ @connection.close
112
+ end
113
+ end
114
+
115
+ it "should have a class-level method for creating a default connection" do
116
+ Puppet::Util::Ldap::Connection.should respond_to(:instance)
117
+ end
118
+
119
+ describe "when creating a default connection" do
120
+ before do
121
+ Puppet.settings.stubs(:value).returns "whatever"
122
+ end
123
+
124
+ it "should use the :ldapserver setting to determine the host" do
125
+ Puppet.settings.expects(:value).with(:ldapserver).returns "myserv"
126
+ Puppet::Util::Ldap::Connection.expects(:new).with { |host, port, options| host == "myserv" }
127
+ Puppet::Util::Ldap::Connection.instance
128
+ end
129
+
130
+ it "should use the :ldapport setting to determine the port" do
131
+ Puppet.settings.expects(:value).with(:ldapport).returns "456"
132
+ Puppet::Util::Ldap::Connection.expects(:new).with { |host, port, options| port == "456" }
133
+ Puppet::Util::Ldap::Connection.instance
134
+ end
135
+
136
+ it "should set ssl to :tls if tls is enabled" do
137
+ Puppet.settings.expects(:value).with(:ldaptls).returns true
138
+ Puppet::Util::Ldap::Connection.expects(:new).with { |host, port, options| options[:ssl] == :tls }
139
+ Puppet::Util::Ldap::Connection.instance
140
+ end
141
+
142
+ it "should set ssl to 'true' if ssl is enabled and tls is not" do
143
+ Puppet.settings.expects(:value).with(:ldaptls).returns false
144
+ Puppet.settings.expects(:value).with(:ldapssl).returns true
145
+ Puppet::Util::Ldap::Connection.expects(:new).with { |host, port, options| options[:ssl] == true }
146
+ Puppet::Util::Ldap::Connection.instance
147
+ end
148
+
149
+ it "should set ssl to false if neither ssl nor tls are enabled" do
150
+ Puppet.settings.expects(:value).with(:ldaptls).returns false
151
+ Puppet.settings.expects(:value).with(:ldapssl).returns false
152
+ Puppet::Util::Ldap::Connection.expects(:new).with { |host, port, options| options[:ssl] == false }
153
+ Puppet::Util::Ldap::Connection.instance
154
+ end
155
+
156
+ it "should set the ldapuser if one is set" do
157
+ Puppet.settings.expects(:value).with(:ldapuser).returns "foo"
158
+ Puppet::Util::Ldap::Connection.expects(:new).with { |host, port, options| options[:user] == "foo" }
159
+ Puppet::Util::Ldap::Connection.instance
160
+ end
161
+
162
+ it "should set the ldapuser and ldappassword if both is set" do
163
+ Puppet.settings.expects(:value).with(:ldapuser).returns "foo"
164
+ Puppet.settings.expects(:value).with(:ldappassword).returns "bar"
165
+ Puppet::Util::Ldap::Connection.expects(:new).with { |host, port, options| options[:user] == "foo" and options[:password] == "bar" }
166
+ Puppet::Util::Ldap::Connection.instance
167
+ end
168
+ end
169
+ end