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,22 @@
1
+ require 'puppet/provider/nameservice/directoryservice'
2
+
3
+ Puppet::Type.type(:computer).provide :directoryservice, :parent => Puppet::Provider::NameService::DirectoryService do
4
+ desc "Computer object management using DirectoryService on OS X.
5
+ Note that these are distinctly different kinds of objects to 'hosts',
6
+ as they require a MAC address and can have all sorts of policy attached to
7
+ them.
8
+
9
+ This provider only manages Computer objects in the local directory service
10
+ domain, not in remote directories.
11
+
12
+ If you wish to manage /etc/hosts on Mac OS X, then simply use the host
13
+ type as per other platforms.
14
+
15
+ "
16
+
17
+ confine :operatingsystem => :darwin
18
+ defaultfor :operatingsystem => :darwin
19
+
20
+ # hurray for abstraction. The nameservice directoryservice provider can
21
+ # handle everything we need. super.
22
+ end
@@ -42,6 +42,9 @@ class Puppet::Provider::Confine
42
42
  for_binary
43
43
  end
44
44
 
45
+ # Used for logging.
46
+ attr_accessor :label
47
+
45
48
  def initialize(values)
46
49
  values = [values] unless values.is_a?(Array)
47
50
  @values = values
@@ -61,7 +64,7 @@ class Puppet::Provider::Confine
61
64
  def valid?
62
65
  values.each do |value|
63
66
  unless pass?(value)
64
- Puppet.debug message(value)
67
+ Puppet.debug(label + ": " + message(value))
65
68
  return false
66
69
  end
67
70
  end
@@ -24,8 +24,13 @@ class Puppet::Provider::Confine::Variable < Puppet::Provider::Confine
24
24
  @facter_value
25
25
  end
26
26
 
27
+ def initialize(values)
28
+ super
29
+ @values = @values.collect { |v| v.to_s.downcase }
30
+ end
31
+
27
32
  def message(value)
28
- "facter value '%s' for '%s' not in required list '%s'" % [value, self.name, values.join(",")]
33
+ "facter value '%s' for '%s' not in required list '%s'" % [test_value, self.name, values.join(",")]
29
34
  end
30
35
 
31
36
  # Compare the passed-in value to the retrieved value.
@@ -35,10 +40,16 @@ class Puppet::Provider::Confine::Variable < Puppet::Provider::Confine
35
40
 
36
41
  def reset
37
42
  # Reset the cache. We want to cache it during a given
38
- # run, but across runs.
43
+ # run, but not across runs.
39
44
  @facter_value = nil
40
45
  end
41
46
 
47
+ def valid?
48
+ @values.include?(test_value.to_s.downcase)
49
+ ensure
50
+ reset
51
+ end
52
+
42
53
  private
43
54
 
44
55
  def setting?
@@ -19,10 +19,13 @@ class Puppet::Provider::ConfineCollection
19
19
  confine.name = test
20
20
  @confines << confine
21
21
  end
22
+ @confines[-1].label = self.label
22
23
  end
23
24
  end
24
25
 
25
- def initialize
26
+ attr_reader :label
27
+ def initialize(label)
28
+ @label = label
26
29
  @confines = []
27
30
  end
28
31
 
@@ -7,7 +7,7 @@ module Puppet::Provider::Confiner
7
7
 
8
8
  def confine_collection
9
9
  unless defined?(@confine_collection)
10
- @confine_collection = Puppet::Provider::ConfineCollection.new
10
+ @confine_collection = Puppet::Provider::ConfineCollection.new(self.to_s)
11
11
  end
12
12
  @confine_collection
13
13
  end
@@ -15,9 +15,12 @@
15
15
  require 'puppet/provider/nameservice/directoryservice'
16
16
 
17
17
  Puppet::Type.type(:group).provide :directoryservice, :parent => Puppet::Provider::NameService::DirectoryService do
18
- desc "Group management using DirectoryService on OS X."
19
-
18
+ desc "Group management using DirectoryService on OS X.
19
+
20
+ "
21
+
20
22
  commands :dscl => "/usr/bin/dscl"
21
23
  confine :operatingsystem => :darwin
22
- #defaultfor :operatingsystem => :darwin
24
+ defaultfor :operatingsystem => :darwin
25
+ has_feature :manages_members
23
26
  end
@@ -1,8 +1,11 @@
1
1
  require 'puppet/provider/nameservice/objectadd'
2
2
 
3
3
  Puppet::Type.type(:group).provide :groupadd, :parent => Puppet::Provider::NameService::ObjectAdd do
4
- desc "Group management via ``groupadd`` and its ilk. The default
5
- for most platforms"
4
+ desc "Group management via ``groupadd`` and its ilk.
5
+
6
+ The default for most platforms
7
+
8
+ "
6
9
 
7
10
  commands :add => "groupadd", :delete => "groupdel", :modify => "groupmod"
8
11
 
@@ -1,16 +1,18 @@
1
1
  require 'puppet/provider/ldap'
2
2
 
3
3
  Puppet::Type.type(:group).provide :ldap, :parent => Puppet::Provider::Ldap do
4
- desc "Group management via ``ldap``. This provider requires that you
5
- have valid values for all of the ldap-related settings,
6
- including ``ldapbase``. You will also almost definitely need settings
7
- for ``ldapuser`` and ``ldappassword``, so that your clients can write
8
- to ldap.
4
+ desc "Group management via ``ldap``.
5
+
6
+ This provider requires that you have valid values for all of the
7
+ ldap-related settings, including ``ldapbase``. You will also almost
8
+ definitely need settings for ``ldapuser`` and ``ldappassword``, so that
9
+ your clients can write to ldap.
9
10
 
10
- Note that this provider will automatically generate a GID for you if
11
- you do not specify one, but it is a potentially expensive operation,
12
- as it iterates across all existing groups to pick the appropriate next
13
- one."
11
+ Note that this provider will automatically generate a GID for you if you do
12
+ not specify one, but it is a potentially expensive operation, as it
13
+ iterates across all existing groups to pick the appropriate next one.
14
+
15
+ "
14
16
 
15
17
  confine :true => Puppet.features.ldap?, :false => (Puppet[:ldapuser] == "")
16
18
 
@@ -1,11 +1,15 @@
1
- # Manage NetInfo POSIX objects. Probably only used on OS X, but I suppose
2
- # it could be used elsewhere.
1
+ # Manage NetInfo POSIX objects.
2
+ #
3
+ # This provider has been deprecated. You should be using the directoryservice
4
+ # nameservice provider instead.
5
+
3
6
  require 'puppet/provider/nameservice/netinfo'
4
7
 
5
8
  Puppet::Type.type(:group).provide :netinfo, :parent => Puppet::Provider::NameService::NetInfo do
6
- desc "Group management using NetInfo."
9
+ desc "Group management using NetInfo.
10
+
11
+ "
7
12
  commands :nireport => "nireport", :niutil => "niutil"
8
13
 
9
- defaultfor :operatingsystem => :darwin
10
14
  end
11
15
 
@@ -1,7 +1,11 @@
1
1
  require 'puppet/provider/nameservice/pw'
2
2
 
3
3
  Puppet::Type.type(:group).provide :pw, :parent => Puppet::Provider::NameService::PW do
4
- desc "Group management via ``pw``. Only works on FreeBSD."
4
+ desc "Group management via ``pw``.
5
+
6
+ Only works on FreeBSD.
7
+
8
+ "
5
9
 
6
10
  commands :pw => "/usr/sbin/pw"
7
11
  defaultfor :operatingsystem => :freebsd
@@ -4,8 +4,11 @@ require 'puppet/provider/nameservice/netinfo'
4
4
 
5
5
  Puppet::Type.type(:host).provide :netinfo, :parent => Puppet::Provider::NameService::NetInfo,
6
6
  :netinfodir => "machines" do
7
- desc "Host management in NetInfo. This provider is highly experimental and is known
8
- not to work currently."
7
+ desc "Host management in NetInfo.
8
+
9
+ This provider is highly experimental and is known not to work currently.
10
+
11
+ "
9
12
  commands :nireport => "nireport", :niutil => "niutil"
10
13
  commands :mountcmd => "mount", :umount => "umount", :df => "df"
11
14
 
@@ -0,0 +1,315 @@
1
+ require 'facter'
2
+ require 'facter/util/plist'
3
+ require 'puppet'
4
+ require 'tempfile'
5
+
6
+ Puppet::Type.type(:macauthorization).provide :macauthorization, :parent => Puppet::Provider do
7
+
8
+ desc "Manage Mac OS X authorization database rules and rights.
9
+
10
+ "
11
+
12
+ commands :security => "/usr/bin/security"
13
+ commands :sw_vers => "/usr/bin/sw_vers"
14
+
15
+ confine :operatingsystem => :darwin
16
+
17
+ # This should be confined based on macosx_productversion once
18
+ # http://projects.reductivelabs.com/issues/show/1796
19
+ # is resolved.
20
+ if FileTest.exists?("/usr/bin/sw_vers")
21
+ product_version = sw_vers "-productVersion"
22
+
23
+ confine :true => if /^10.5/.match(product_version) or /^10.6/.match(product_version)
24
+ true
25
+ end
26
+ end
27
+
28
+ defaultfor :operatingsystem => :darwin
29
+
30
+ AuthDB = "/etc/authorization"
31
+
32
+ @rights = {}
33
+ @rules = {}
34
+ @parsed_auth_db = {}
35
+ @comment = "" # Not implemented yet. Is there any real need to?
36
+
37
+ # This map exists due to the use of hyphens and reserved words in
38
+ # the authorization schema.
39
+ PuppetToNativeAttributeMap = { :allow_root => "allow-root",
40
+ :authenticate_user => "authenticate-user",
41
+ :auth_class => "class",
42
+ :k_of_n => "k-of-n",
43
+ :session_owner => "session-owner", }
44
+
45
+ class << self
46
+ attr_accessor :parsed_auth_db
47
+ attr_accessor :rights
48
+ attr_accessor :rules
49
+ attr_accessor :comments # Not implemented yet.
50
+
51
+ def prefetch(resources)
52
+ self.populate_rules_rights
53
+ end
54
+
55
+ def instances
56
+ if self.parsed_auth_db == {}
57
+ self.prefetch(nil)
58
+ end
59
+ self.parsed_auth_db.collect do |k,v|
60
+ new(:name => k)
61
+ end
62
+ end
63
+
64
+ def populate_rules_rights
65
+ auth_plist = Plist::parse_xml(AuthDB)
66
+ if not auth_plist
67
+ raise Puppet::Error.new("Cannot parse: #{AuthDB}")
68
+ end
69
+ self.rights = auth_plist["rights"].dup
70
+ self.rules = auth_plist["rules"].dup
71
+ self.parsed_auth_db = self.rights.dup
72
+ self.parsed_auth_db.merge!(self.rules.dup)
73
+ end
74
+
75
+ end
76
+
77
+ # standard required provider instance methods
78
+
79
+ def initialize(resource)
80
+ if self.class.parsed_auth_db == {}
81
+ self.class.prefetch(resource)
82
+ end
83
+ super
84
+ end
85
+
86
+
87
+ def create
88
+ # we just fill the @property_hash in here and let the flush method
89
+ # deal with it rather than repeating code.
90
+ new_values = {}
91
+ validprops = Puppet::Type.type(resource.class.name).validproperties
92
+ validprops.each do |prop|
93
+ next if prop == :ensure
94
+ if value = resource.should(prop) and value != ""
95
+ new_values[prop] = value
96
+ end
97
+ end
98
+ @property_hash = new_values.dup
99
+ end
100
+
101
+ def destroy
102
+ # We explicitly delete here rather than in the flush method.
103
+ case resource[:auth_type]
104
+ when :right
105
+ destroy_right
106
+ when :rule
107
+ destroy_rule
108
+ else
109
+ raise Puppet::Error.new("Must specify auth_type when destroying.")
110
+ end
111
+ end
112
+
113
+ def exists?
114
+ if self.class.parsed_auth_db.has_key?(resource[:name])
115
+ return true
116
+ else
117
+ return false
118
+ end
119
+ end
120
+
121
+
122
+ def flush
123
+ # deletion happens in the destroy methods
124
+ if resource[:ensure] != :absent
125
+ case resource[:auth_type]
126
+ when :right
127
+ flush_right
128
+ when :rule
129
+ flush_rule
130
+ else
131
+ raise Puppet::Error.new("flush requested for unknown type.")
132
+ end
133
+ @property_hash.clear
134
+ end
135
+ end
136
+
137
+
138
+ # utility methods below
139
+
140
+ def destroy_right
141
+ security "authorizationdb", :remove, resource[:name]
142
+ end
143
+
144
+ def destroy_rule
145
+ authdb = Plist::parse_xml(AuthDB)
146
+ authdb_rules = authdb["rules"].dup
147
+ if authdb_rules[resource[:name]]
148
+ begin
149
+ authdb["rules"].delete(resource[:name])
150
+ Plist::Emit.save_plist(authdb, AuthDB)
151
+ rescue Errno::EACCES => e
152
+ raise Puppet::Error.new("Error saving #{AuthDB}: #{e}")
153
+ end
154
+ end
155
+ end
156
+
157
+ def flush_right
158
+ # first we re-read the right just to make sure we're in sync for
159
+ # values that weren't specified in the manifest. As we're supplying
160
+ # the whole plist when specifying the right it seems safest to be
161
+ # paranoid given the low cost of quering the db once more.
162
+ cmds = []
163
+ cmds << :security << "authorizationdb" << "read" << resource[:name]
164
+ output = execute(cmds, :combine => false)
165
+ current_values = Plist::parse_xml(output)
166
+ if current_values.nil?
167
+ current_values = {}
168
+ end
169
+ specified_values = convert_plist_to_native_attributes(@property_hash)
170
+
171
+ # take the current values, merge the specified values to obtain a
172
+ # complete description of the new values.
173
+ new_values = current_values.merge(specified_values)
174
+ set_right(resource[:name], new_values)
175
+ end
176
+
177
+ def flush_rule
178
+ authdb = Plist::parse_xml(AuthDB)
179
+ authdb_rules = authdb["rules"].dup
180
+ current_values = {}
181
+ if authdb_rules[resource[:name]]
182
+ current_values = authdb_rules[resource[:name]]
183
+ end
184
+ specified_values = convert_plist_to_native_attributes(@property_hash)
185
+ new_values = current_values.merge(specified_values)
186
+ set_rule(resource[:name], new_values)
187
+ end
188
+
189
+ def set_right(name, values)
190
+ # Both creates and modifies rights as it simply overwrites them.
191
+ # The security binary only allows for writes using stdin, so we
192
+ # dump the values to a tempfile.
193
+ values = convert_plist_to_native_attributes(values)
194
+ tmp = Tempfile.new('puppet_macauthorization')
195
+ begin
196
+ Plist::Emit.save_plist(values, tmp.path)
197
+ cmds = []
198
+ cmds << :security << "authorizationdb" << "write" << name
199
+ output = execute(cmds, :combine => false,
200
+ :stdinfile => tmp.path.to_s)
201
+ rescue Errno::EACCES => e
202
+ raise Puppet::Error.new("Cannot save right to #{tmp.path}: #{e}")
203
+ ensure
204
+ tmp.close
205
+ tmp.unlink
206
+ end
207
+ end
208
+
209
+ def set_rule(name, values)
210
+ # Both creates and modifies rules as it overwrites the entry in the
211
+ # rules dictionary. Unfortunately the security binary doesn't
212
+ # support modifying rules at all so we have to twiddle the whole
213
+ # plist... :( See Apple Bug #6386000
214
+ values = convert_plist_to_native_attributes(values)
215
+ authdb = Plist::parse_xml(AuthDB)
216
+ authdb["rules"][name] = values
217
+
218
+ begin
219
+ Plist::Emit.save_plist(authdb, AuthDB)
220
+ rescue
221
+ raise Puppet::Error.new("Error writing to: #{AuthDB}")
222
+ end
223
+ end
224
+
225
+ def convert_plist_to_native_attributes(propertylist)
226
+ # This mainly converts the keys from the puppet attributes to the
227
+ # 'native' ones, but also enforces that the keys are all Strings
228
+ # rather than Symbols so that any merges of the resultant Hash are
229
+ # sane.
230
+ newplist = {}
231
+ propertylist.each_pair do |key, value|
232
+ next if key == :ensure # not part of the auth db schema.
233
+ next if key == :auth_type # not part of the auth db schema.
234
+ new_key = key
235
+ if PuppetToNativeAttributeMap.has_key?(key)
236
+ new_key = PuppetToNativeAttributeMap[key].to_s
237
+ elsif not key.is_a?(String)
238
+ new_key = key.to_s
239
+ end
240
+ newplist[new_key] = value
241
+ end
242
+ newplist
243
+ end
244
+
245
+ def retrieve_value(resource_name, attribute)
246
+
247
+ if not self.class.parsed_auth_db.has_key?(resource_name)
248
+ raise Puppet::Error.new("Cannot find #{resource_name} in auth db")
249
+ end
250
+
251
+ if PuppetToNativeAttributeMap.has_key?(attribute)
252
+ native_attribute = PuppetToNativeAttributeMap[attribute]
253
+ else
254
+ native_attribute = attribute.to_s
255
+ end
256
+
257
+ if self.class.parsed_auth_db[resource_name].has_key?(native_attribute)
258
+ value = self.class.parsed_auth_db[resource_name][native_attribute]
259
+ case value
260
+ when true, "true", :true
261
+ value = :true
262
+ when false, "false", :false
263
+ value = :false
264
+ end
265
+
266
+ @property_hash[attribute] = value
267
+ return value
268
+ else
269
+ @property_hash.delete(attribute)
270
+ return "" # so ralsh doesn't display it.
271
+ end
272
+ end
273
+
274
+
275
+ # property methods below
276
+ #
277
+ # We define them all dynamically apart from auth_type which is a special
278
+ # case due to not being in the actual authorization db schema.
279
+
280
+ properties = [ :allow_root, :authenticate_user, :auth_class, :comment,
281
+ :group, :k_of_n, :mechanisms, :rule, :session_owner,
282
+ :shared, :timeout, :tries ]
283
+
284
+ properties.each do |field|
285
+ define_method(field.to_s) do
286
+ retrieve_value(resource[:name], field)
287
+ end
288
+
289
+ define_method(field.to_s + "=") do |value|
290
+ @property_hash[field] = value
291
+ end
292
+ end
293
+
294
+ def auth_type
295
+ if resource.should(:auth_type) != nil
296
+ return resource.should(:auth_type)
297
+ elsif self.exists?
298
+ # this is here just for ralsh, so it can work out what type it is.
299
+ if self.class.rights.has_key?(resource[:name])
300
+ return :right
301
+ elsif self.class.rules.has_key?(resource[:name])
302
+ return :rule
303
+ else
304
+ raise Puppet::Error.new("#{resource[:name]} is unknown type.")
305
+ end
306
+ else
307
+ raise Puppet::Error.new("auth_type required for new resources.")
308
+ end
309
+ end
310
+
311
+ def auth_type=(value)
312
+ @property_hash[:auth_type] = value
313
+ end
314
+
315
+ end