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,117 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # Unit testing for the Runit service Provider
4
+ #
5
+ # author Brice Figureau
6
+ #
7
+ require File.dirname(__FILE__) + '/../../../spec_helper'
8
+
9
+ provider_class = Puppet::Type.type(:service).provider(:runit)
10
+
11
+ describe provider_class do
12
+
13
+ before(:each) do
14
+ # Create a mock resource
15
+ @resource = stub 'resource'
16
+
17
+ @provider = provider_class.new
18
+ @servicedir = "/etc/service"
19
+ @provider.servicedir=@servicedir
20
+ @daemondir = "/etc/sv"
21
+ @provider.class.defpath=@daemondir
22
+
23
+ # A catch all; no parameters set
24
+ @resource.stubs(:[]).returns(nil)
25
+
26
+ # But set name, source and path (because we won't run
27
+ # the thing that will fetch the resource path from the provider)
28
+ @resource.stubs(:[]).with(:name).returns "myservice"
29
+ @resource.stubs(:[]).with(:ensure).returns :enabled
30
+ @resource.stubs(:[]).with(:path).returns @daemondir
31
+ @resource.stubs(:ref).returns "Service[myservice]"
32
+
33
+ @provider.stubs(:resource).returns @resource
34
+ end
35
+
36
+ it "should have a restartcmd method" do
37
+ @provider.should respond_to(:restartcmd)
38
+ end
39
+
40
+ it "should have a start method" do
41
+ @provider.should respond_to(:start)
42
+ end
43
+
44
+ it "should have a stop method" do
45
+ @provider.should respond_to(:stop)
46
+ end
47
+
48
+ it "should have an enabled? method" do
49
+ @provider.should respond_to(:enabled?)
50
+ end
51
+
52
+ it "should have an enable method" do
53
+ @provider.should respond_to(:enable)
54
+ end
55
+
56
+ it "should have a disable method" do
57
+ @provider.should respond_to(:disable)
58
+ end
59
+
60
+ describe "when starting" do
61
+ it "should call enable" do
62
+ @provider.expects(:enable)
63
+ @provider.start
64
+ end
65
+ end
66
+
67
+ describe "when stopping" do
68
+ it "should execute external command 'sv stop /etc/service/myservice'" do
69
+ @provider.expects(:ucommand).with(:stop).returns("")
70
+ @provider.stop
71
+ end
72
+ end
73
+
74
+ describe "when enabling" do
75
+ it "should create a symlink between daemon dir and service dir" do
76
+ FileTest.stubs(:symlink?).returns(false)
77
+ File.expects(:symlink).with(File.join(@daemondir,"myservice"), File.join(@servicedir,"myservice")).returns(0)
78
+ @provider.enable
79
+ end
80
+ end
81
+
82
+ describe "when disabling" do
83
+ it "should remove the '/etc/service/myservice' symlink" do
84
+ FileTest.stubs(:directory?).returns(false)
85
+ FileTest.stubs(:symlink?).returns(true)
86
+ File.expects(:unlink).with(File.join(@servicedir,"myservice")).returns(0)
87
+ @provider.disable
88
+ end
89
+ end
90
+
91
+ describe "when checking status" do
92
+ it "should call the external command 'sv status /etc/sv/myservice'" do
93
+ @provider.expects(:sv).with('status',File.join(@daemondir,"myservice"))
94
+ @provider.status
95
+ end
96
+ end
97
+
98
+ describe "when checking status" do
99
+ it "and sv status fails, properly raise a Puppet::Error" do
100
+ @provider.expects(:sv).with('status',File.join(@daemondir,"myservice")).raises(Puppet::ExecutionFailure, "fail: /etc/sv/myservice: file not found")
101
+ lambda { @provider.status }.should raise_error(Puppet::Error, 'Could not get status for service Service[myservice]: fail: /etc/sv/myservice: file not found')
102
+ end
103
+ it "and sv status returns up, then return :running" do
104
+ @provider.expects(:sv).with('status',File.join(@daemondir,"myservice")).returns("run: /etc/sv/myservice: (pid 9029) 6s")
105
+ @provider.status.should == :running
106
+ end
107
+ it "and sv status returns not running, then return :stopped" do
108
+ @provider.expects(:sv).with('status',File.join(@daemondir,"myservice")).returns("fail: /etc/sv/myservice: runsv not running")
109
+ @provider.status.should == :stopped
110
+ end
111
+ it "and sv status returns a warning, then return :stopped" do
112
+ @provider.expects(:sv).with('status',File.join(@daemondir,"myservice")).returns("warning: /etc/sv/myservice: unable to open supervise/ok: file does not exist")
113
+ @provider.status.should == :stopped
114
+ end
115
+ end
116
+
117
+ end
@@ -0,0 +1,102 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.dirname(__FILE__) + '/../../../spec_helper'
4
+
5
+ require 'puppettest'
6
+ require 'puppettest/support/utils'
7
+ require 'puppettest/fileparsing'
8
+
9
+ provider_class = Puppet::Type.type(:ssh_authorized_key).provider(:parsed)
10
+
11
+ describe provider_class do
12
+ include PuppetTest
13
+ include PuppetTest::FileParsing
14
+
15
+ before :each do
16
+ @sshauthkey_class = Puppet.type(:ssh_authorized_key)
17
+ @provider = @sshauthkey_class.provider(:parsed)
18
+ end
19
+
20
+ after :each do
21
+ @provider.initvars
22
+ end
23
+
24
+ def mkkey(args)
25
+ fakeresource = fakeresource(:ssh_authorized_key, args[:name])
26
+
27
+ key = @provider.new(fakeresource)
28
+ args.each do |p,v|
29
+ key.send(p.to_s + "=", v)
30
+ end
31
+
32
+ return key
33
+ end
34
+
35
+ def genkey(key)
36
+ @provider.filetype = :ram
37
+ file = @provider.default_target
38
+
39
+ key.flush
40
+ text = @provider.target_object(file).read
41
+ return text
42
+ end
43
+
44
+ it "should be able to parse each example" do
45
+ fakedata("data/providers/ssh_authorized_key/parsed").each { |file|
46
+ puts "Parsing %s" % file
47
+ fakedataparse(file)
48
+ }
49
+ end
50
+
51
+ it "should be able to generate a basic authorized_keys file" do
52
+ key = mkkey({
53
+ :name => "Just Testing",
54
+ :key => "AAAAfsfddsjldjgksdflgkjsfdlgkj",
55
+ :type => "ssh-dss",
56
+ :ensure => :present,
57
+ :options => [:absent]
58
+ })
59
+
60
+ genkey(key).should == "ssh-dss AAAAfsfddsjldjgksdflgkjsfdlgkj Just Testing\n"
61
+ end
62
+
63
+ it "should be able to generate a authorized_keys file with options" do
64
+ key = mkkey({
65
+ :name => "root@localhost",
66
+ :key => "AAAAfsfddsjldjgksdflgkjsfdlgkj",
67
+ :type => "ssh-rsa",
68
+ :ensure => :present,
69
+ :options => ['from="192.168.1.1"', "no-pty", "no-X11-forwarding"]
70
+ })
71
+
72
+ genkey(key).should == "from=\"192.168.1.1\",no-pty,no-X11-forwarding ssh-rsa AAAAfsfddsjldjgksdflgkjsfdlgkj root@localhost\n"
73
+ end
74
+
75
+ it "should prefetch ~user/.ssh/authorized_keys when user is given" do
76
+ key = Puppet::Type.type(:ssh_authorized_key).create(
77
+ :name => "Test",
78
+ :key => "AA",
79
+ :type => "rsa",
80
+ :ensure => :present,
81
+ :user => "root")
82
+ prov = @provider.new key
83
+
84
+ prov.prefetch
85
+ prov.target.should == File.expand_path("~root/.ssh/authorized_keys")
86
+ end
87
+
88
+ it "should create destination dir" do
89
+ # No idea how to test the flush method
90
+ end
91
+
92
+ it "should set correct default permissions" do
93
+ # No idea how to test the flush method
94
+ end
95
+
96
+ it "'s parse_options method should be able to parse options containing commas" do
97
+ options = %w{from="host1.reductlivelabs.com,host.reductivelabs.com" command="/usr/local/bin/run" ssh-pty}
98
+ optionstr = options.join(", ")
99
+
100
+ @provider.parse_options(optionstr).should == options
101
+ end
102
+ end
@@ -0,0 +1,25 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.dirname(__FILE__) + '/../../../spec_helper'
4
+
5
+ provider_class = Puppet::Type.type(:user).provider(:hpuxuseradd)
6
+
7
+ describe provider_class do
8
+ # left from the useradd test... I have no clue what I'm doing.
9
+ before do
10
+ @resource = stub("resource", :name => "myuser", :managehome? => nil, :should => "fakeval", :[] => "fakeval")
11
+ @provider = provider_class.new(@resource)
12
+ end
13
+
14
+ it "should add -F when modifying a user" do
15
+ @resource.expects(:allowdupe?).returns true
16
+ @provider.expects(:execute).with { |args| args.include?("-F") }
17
+ @provider.uid = 1000
18
+ end
19
+
20
+ it "should add -F when deleting a user" do
21
+ @provider.stubs(:exists?).returns(true)
22
+ @provider.expects(:execute).with { |args| args.include?("-F") }
23
+ @provider.delete
24
+ end
25
+ end
@@ -0,0 +1,279 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # Created by Luke Kanies on 2008-3-10.
4
+ # Copyright (c) 2006. All rights reserved.
5
+
6
+ require File.dirname(__FILE__) + '/../../../spec_helper'
7
+
8
+ provider_class = Puppet::Type.type(:user).provider(:ldap)
9
+
10
+ describe provider_class do
11
+ it "should have the Ldap provider class as its baseclass" do
12
+ provider_class.superclass.should equal(Puppet::Provider::Ldap)
13
+ end
14
+
15
+ it "should manage :posixAccount and :person objectclasses" do
16
+ provider_class.manager.objectclasses.should == [:posixAccount, :person]
17
+ end
18
+
19
+ it "should use 'ou=People' as its relative base" do
20
+ provider_class.manager.location.should == "ou=People"
21
+ end
22
+
23
+ it "should use :uid as its rdn" do
24
+ provider_class.manager.rdn.should == :uid
25
+ end
26
+
27
+ it "should be able to manage passwords" do
28
+ provider_class.should be_manages_passwords
29
+ end
30
+
31
+ it "should use the ldap group provider to convert group names to numbers" do
32
+ provider = provider_class.new(:name => "foo")
33
+ Puppet::Type.type(:group).provider(:ldap).expects(:name2id).with("bar").returns 10
34
+
35
+ provider.gid = 'bar'
36
+ provider.gid.should == 10
37
+ end
38
+
39
+ {:name => "uid",
40
+ :password => "userPassword",
41
+ :comment => "cn",
42
+ :uid => "uidNumber",
43
+ :gid => "gidNumber",
44
+ :home => "homeDirectory",
45
+ :shell => "loginShell"
46
+ }.each do |puppet, ldap|
47
+ it "should map :#{puppet.to_s} to '#{ldap}'" do
48
+ provider_class.manager.ldap_name(puppet).should == ldap
49
+ end
50
+ end
51
+
52
+ describe "when being created" do
53
+ before do
54
+ # So we don't try to actually talk to ldap
55
+ @connection = mock 'connection'
56
+ provider_class.manager.stubs(:connect).yields @connection
57
+ end
58
+
59
+ it "should generate the sn as the last field of the cn" do
60
+ resource = stub 'resource', :should => %w{whatever}
61
+ resource.stubs(:should).with(:comment).returns ["Luke Kanies"]
62
+ resource.stubs(:should).with(:ensure).returns :present
63
+ instance = provider_class.new(:name => "luke", :ensure => :absent)
64
+ instance.stubs(:resource).returns resource
65
+
66
+ @connection.expects(:add).with { |dn, attrs| attrs["sn"] == ["Kanies"] }
67
+
68
+ instance.create
69
+ instance.flush
70
+ end
71
+
72
+ describe "with no uid specified" do
73
+ it "should pick the first available UID after the largest existing UID" do
74
+ low = {:name=>["luke"], :shell=>:absent, :uid=>["600"], :home=>["/h"], :gid=>["1000"], :password=>["blah"], :comment=>["l k"]}
75
+ high = {:name=>["testing"], :shell=>:absent, :uid=>["640"], :home=>["/h"], :gid=>["1000"], :password=>["blah"], :comment=>["t u"]}
76
+ provider_class.manager.expects(:search).returns([low, high])
77
+
78
+ resource = stub 'resource', :should => %w{whatever}
79
+ resource.stubs(:should).with(:uid).returns nil
80
+ resource.stubs(:should).with(:ensure).returns :present
81
+ instance = provider_class.new(:name => "luke", :ensure => :absent)
82
+ instance.stubs(:resource).returns resource
83
+
84
+ @connection.expects(:add).with { |dn, attrs| attrs["uidNumber"] == ["641"] }
85
+
86
+ instance.create
87
+ instance.flush
88
+ end
89
+
90
+ it "should pick 501 of no users exist" do
91
+ provider_class.manager.expects(:search).returns nil
92
+
93
+ resource = stub 'resource', :should => %w{whatever}
94
+ resource.stubs(:should).with(:uid).returns nil
95
+ resource.stubs(:should).with(:ensure).returns :present
96
+ instance = provider_class.new(:name => "luke", :ensure => :absent)
97
+ instance.stubs(:resource).returns resource
98
+
99
+ @connection.expects(:add).with { |dn, attrs| attrs["uidNumber"] == ["501"] }
100
+
101
+ instance.create
102
+ instance.flush
103
+ end
104
+ end
105
+ end
106
+
107
+ describe "when flushing" do
108
+ before do
109
+ provider_class.stubs(:suitable?).returns true
110
+
111
+ @instance = provider_class.new(:name => "myname", :groups => %w{whatever}, :uid => "400")
112
+ end
113
+
114
+ it "should remove the :groups value before updating" do
115
+ @instance.class.manager.expects(:update).with { |name, ldap, puppet| puppet[:groups].nil? }
116
+
117
+ @instance.flush
118
+ end
119
+
120
+ it "should empty the property hash" do
121
+ @instance.class.manager.stubs(:update)
122
+
123
+ @instance.flush
124
+
125
+ @instance.uid.should == :absent
126
+ end
127
+
128
+ it "should empty the ldap property hash" do
129
+ @instance.class.manager.stubs(:update)
130
+
131
+ @instance.flush
132
+
133
+ @instance.ldap_properties[:uid].should be_nil
134
+ end
135
+ end
136
+
137
+ describe "when checking group membership" do
138
+ before do
139
+ @groups = Puppet::Type.type(:group).provider(:ldap)
140
+ @group_manager = @groups.manager
141
+ provider_class.stubs(:suitable?).returns true
142
+
143
+ @instance = provider_class.new(:name => "myname")
144
+ end
145
+
146
+ it "should show its group membership as the list of all groups returned by an ldap query of group memberships" do
147
+ one = {:name => "one"}
148
+ two = {:name => "two"}
149
+ @group_manager.expects(:search).with("memberUid=myname").returns([one, two])
150
+
151
+ @instance.groups.should == "one,two"
152
+ end
153
+
154
+ it "should show its group membership as :absent if no matching groups are found in ldap" do
155
+ @group_manager.expects(:search).with("memberUid=myname").returns(nil)
156
+
157
+ @instance.groups.should == :absent
158
+ end
159
+
160
+ it "should cache the group value" do
161
+ @group_manager.expects(:search).with("memberUid=myname").once.returns nil
162
+
163
+ @instance.groups
164
+ @instance.groups.should == :absent
165
+ end
166
+ end
167
+
168
+ describe "when modifying group membership" do
169
+ before do
170
+ @groups = Puppet::Type.type(:group).provider(:ldap)
171
+ @group_manager = @groups.manager
172
+ provider_class.stubs(:suitable?).returns true
173
+
174
+ @one = {:name => "one", :gid => "500"}
175
+ @group_manager.stubs(:find).with("one").returns(@one)
176
+
177
+ @two = {:name => "one", :gid => "600"}
178
+ @group_manager.stubs(:find).with("two").returns(@two)
179
+
180
+ @instance = provider_class.new(:name => "myname")
181
+
182
+ @instance.stubs(:groups).returns :absent
183
+ end
184
+
185
+ it "should fail if the group does not exist" do
186
+ @group_manager.expects(:find).with("mygroup").returns nil
187
+
188
+ lambda { @instance.groups = "mygroup" }.should raise_error(Puppet::Error)
189
+ end
190
+
191
+ it "should only pass the attributes it cares about to the group manager" do
192
+ @group_manager.expects(:update).with { |name, attrs| attrs[:gid].nil? }
193
+
194
+ @instance.groups = "one"
195
+ end
196
+
197
+ it "should always include :ensure => :present in the current values" do
198
+ @group_manager.expects(:update).with { |name, is, should| is[:ensure] == :present }
199
+
200
+ @instance.groups = "one"
201
+ end
202
+
203
+ it "should always include :ensure => :present in the desired values" do
204
+ @group_manager.expects(:update).with { |name, is, should| should[:ensure] == :present }
205
+
206
+ @instance.groups = "one"
207
+ end
208
+
209
+ it "should always pass the group's original member list" do
210
+ @one[:members] = %w{yay ness}
211
+ @group_manager.expects(:update).with { |name, is, should| is[:members] == %w{yay ness} }
212
+
213
+ @instance.groups = "one"
214
+ end
215
+
216
+ it "should find the group again when resetting its member list, so it has the full member list" do
217
+ @group_manager.expects(:find).with("one").returns(@one)
218
+
219
+ @group_manager.stubs(:update)
220
+
221
+ @instance.groups = "one"
222
+ end
223
+
224
+ describe "for groups that have no members" do
225
+ it "should create a new members attribute with its value being the user's name" do
226
+ @group_manager.expects(:update).with { |name, is, should| should[:members] == %w{myname} }
227
+
228
+ @instance.groups = "one"
229
+ end
230
+ end
231
+
232
+ describe "for groups it is being removed from" do
233
+ it "should replace the group's member list with one missing the user's name" do
234
+ @one[:members] = %w{myname a}
235
+ @two[:members] = %w{myname b}
236
+
237
+ @group_manager.expects(:update).with { |name, is, should| name == "two" and should[:members] == %w{b} }
238
+
239
+ @instance.stubs(:groups).returns "one,two"
240
+ @instance.groups = "one"
241
+ end
242
+
243
+ it "should mark the member list as empty if there are no remaining members" do
244
+ @one[:members] = %w{myname}
245
+ @two[:members] = %w{myname b}
246
+
247
+ @group_manager.expects(:update).with { |name, is, should| name == "one" and should[:members] == :absent }
248
+
249
+ @instance.stubs(:groups).returns "one,two"
250
+ @instance.groups = "two"
251
+ end
252
+ end
253
+
254
+ describe "for groups that already have members" do
255
+ it "should replace each group's member list with a new list including the user's name" do
256
+ @one[:members] = %w{a b}
257
+ @group_manager.expects(:update).with { |name, is, should| should[:members] == %w{a b myname} }
258
+ @two[:members] = %w{b c}
259
+ @group_manager.expects(:update).with { |name, is, should| should[:members] == %w{b c myname} }
260
+
261
+ @instance.groups = "one,two"
262
+ end
263
+ end
264
+
265
+ describe "for groups of which it is a member" do
266
+ it "should do nothing" do
267
+ @one[:members] = %w{a b}
268
+ @group_manager.expects(:update).with { |name, is, should| should[:members] == %w{a b myname} }
269
+
270
+ @two[:members] = %w{c myname}
271
+ @group_manager.expects(:update).with { |name, *other| name == "two" }.never
272
+
273
+ @instance.stubs(:groups).returns "two"
274
+
275
+ @instance.groups = "one,two"
276
+ end
277
+ end
278
+ end
279
+ end