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
@@ -1,6 +1,7 @@
1
1
  require 'etc'
2
2
  require 'facter'
3
3
  require 'puppet/property/list'
4
+ require 'puppet/property/ordered_list'
4
5
  require 'puppet/property/keyvalue'
5
6
 
6
7
  module Puppet
@@ -98,6 +99,16 @@ module Puppet
98
99
  end
99
100
  end
100
101
 
102
+ def insync?(is)
103
+ # We know the 'is' is a number, so we need to convert the 'should' to a number,
104
+ # too.
105
+ @should.each do |value|
106
+ return true if number = Puppet::Util.gid(value) and is == number
107
+ end
108
+
109
+ return false
110
+ end
111
+
101
112
  def sync
102
113
  found = false
103
114
  @should.each do |value|
@@ -109,6 +120,8 @@ module Puppet
109
120
  end
110
121
 
111
122
  fail "Could not find group(s) %s" % @should.join(",") unless found
123
+
124
+ # Use the default event.
112
125
  end
113
126
  end
114
127
 
@@ -266,6 +279,17 @@ module Puppet
266
279
  end
267
280
  end
268
281
 
282
+ #autorequire the roles that the user has
283
+ autorequire(:user) do
284
+ reqs = []
285
+
286
+ if roles_property = @parameters[:roles] and roles = roles_property.should
287
+ reqs += roles.split(',')
288
+ end
289
+
290
+ reqs
291
+ end
292
+
269
293
  newparam(:role_membership) do
270
294
  desc "Whether specified roles should be treated as the only roles
271
295
  of which the user is a member or whether they should merely
@@ -304,7 +328,7 @@ module Puppet
304
328
  defaultto :minimum
305
329
  end
306
330
 
307
- newproperty(:profiles, :parent => Puppet::Property::List, :required_features => :manages_solaris_rbac) do
331
+ newproperty(:profiles, :parent => Puppet::Property::OrderedList, :required_features => :manages_solaris_rbac) do
308
332
  desc "The profiles the user has. Multiple profiles should be
309
333
  specified as an array."
310
334
 
@@ -0,0 +1,51 @@
1
+ module Puppet
2
+ newtype(:zfs) do
3
+ @doc = "Manage zfs. Create destroy and set properties on zfs instances."
4
+
5
+ ensurable
6
+
7
+ newparam(:name) do
8
+ desc "The full name for this filesystem. (including the zpool)"
9
+ end
10
+
11
+ newproperty(:mountpoint) do
12
+ desc "The mountpoint property."
13
+ end
14
+
15
+ newproperty(:compression) do
16
+ desc "The compression property."
17
+ end
18
+
19
+ newproperty(:copies) do
20
+ desc "The copies property."
21
+ end
22
+
23
+ newproperty(:quota) do
24
+ desc "The quota property."
25
+ end
26
+
27
+ newproperty(:reservation) do
28
+ desc "The reservation property."
29
+ end
30
+
31
+ newproperty(:sharenfs) do
32
+ desc "The sharenfs property."
33
+ end
34
+
35
+ newproperty(:snapdir) do
36
+ desc "The sharenfs property."
37
+ end
38
+
39
+ autorequire(:zpool) do
40
+ #strip the zpool off the zfs name and autorequire it
41
+ [@parameters[:name].value.split('/')[0]]
42
+ end
43
+
44
+ autorequire(:zfs) do
45
+ #slice and dice, we want all the zfs before this one
46
+ names = @parameters[:name].value.split('/')
47
+ names.slice(1..-2).inject([]) { |a,v| a << "#{a.last}/#{v}" }.collect { |fs| names[0] + fs }
48
+ end
49
+ end
50
+ end
51
+
@@ -357,6 +357,14 @@ end
357
357
  end
358
358
  end
359
359
 
360
+ newparam(:create_args) do
361
+ desc "Arguments to the zonecfg create command. This can be used to create branded zones."
362
+ end
363
+
364
+ newparam(:install_args) do
365
+ desc "Arguments to the zoneadm install command. This can be used to create branded zones."
366
+ end
367
+
360
368
  newparam(:realhostname) do
361
369
  desc "The actual hostname of the zone."
362
370
  end
@@ -0,0 +1,93 @@
1
+ module Puppet
2
+ class Property
3
+
4
+ class VDev < Property
5
+
6
+ def flatten_and_sort(array)
7
+ array.collect { |a| a.split(' ') }.flatten.sort
8
+ end
9
+
10
+ def insync?(is)
11
+ return true unless self.should
12
+
13
+ return @should == [:absent] if is == :absent
14
+
15
+ flatten_and_sort(is) == flatten_and_sort(@should)
16
+ end
17
+ end
18
+
19
+ class MultiVDev < VDev
20
+ def insync?(is)
21
+ return true unless self.should
22
+
23
+ return @should == [:absent] if is == :absent
24
+
25
+ return false unless is.length == @should.length
26
+
27
+ is.each_with_index { |list, i| return false unless flatten_and_sort(list) == flatten_and_sort(@should[i]) }
28
+
29
+ #if we made it this far we are in sync
30
+ true
31
+ end
32
+ end
33
+ end
34
+
35
+ newtype(:zpool) do
36
+ @doc = "Manage zpools. Create and delete zpools. The provider WILL NOT SYNC, only report differences.
37
+
38
+ Supports vdevs with mirrors, raidz, logs and spares."
39
+
40
+ ensurable
41
+
42
+ newproperty(:disk, :array_matching => :all, :parent => Puppet::Property::VDev) do
43
+ desc "The disk(s) for this pool. Can be an array or space separated string"
44
+ end
45
+
46
+ newproperty(:mirror, :array_matching => :all, :parent => Puppet::Property::MultiVDev) do
47
+ desc "List of all the devices to mirror for this pool. Each mirror should be a space separated string.
48
+ mirror => [\"disk1 disk2\", \"disk3 disk4\"]"
49
+
50
+ validate do |value|
51
+ if value.include?(",")
52
+ raise ArgumentError, "mirror names must be provided as string separated, not a comma-separated list"
53
+ end
54
+ end
55
+ end
56
+
57
+ newproperty(:raidz, :array_matching => :all, :parent => Puppet::Property::MultiVDev) do
58
+ desc "List of all the devices to raid for this pool. Should be an array of space separated strings.
59
+ raidz => [\"disk1 disk2\", \"disk3 disk4\"]"
60
+
61
+ validate do |value|
62
+ if value.include?(",")
63
+ raise ArgumentError, "raid names must be provided as string separated, not a comma-separated list"
64
+ end
65
+ end
66
+ end
67
+
68
+ newproperty(:spare, :array_matching => :all, :parent => Puppet::Property::VDev) do
69
+ desc "Spare disk(s) for this pool."
70
+ end
71
+
72
+ newproperty(:log, :array_matching => :all, :parent => Puppet::Property::VDev) do
73
+ desc "Log disks for this pool. (doesn't support mirroring yet)"
74
+ end
75
+
76
+ newparam(:pool) do
77
+ desc "The name for this pool."
78
+ isnamevar
79
+ end
80
+
81
+ newparam(:raid_parity) do
82
+ desc "Determines parity when using raidz property."
83
+ end
84
+
85
+ validate do
86
+ has_should = [:disk, :mirror, :raidz].select { |prop| self.should(prop) }
87
+ if has_should.length > 1
88
+ self.fail "You cannot specify %s on this type (only one)" % has_should.join(" and ")
89
+ end
90
+ end
91
+ end
92
+ end
93
+
@@ -10,6 +10,8 @@ module Puppet
10
10
  module Util
11
11
  require 'benchmark'
12
12
 
13
+ # These are all for backward compatibility -- these are methods that used
14
+ # to be in Puppet::Util but have been moved into external modules.
13
15
  require 'puppet/util/posix'
14
16
  extend Puppet::Util::POSIX
15
17
 
@@ -66,40 +68,6 @@ module Util
66
68
  end
67
69
  end
68
70
 
69
- # Create a shared lock for reading
70
- def self.readlock(file)
71
- self.sync(file).synchronize(Sync::SH) do
72
- File.open(file) { |f|
73
- f.lock_shared { |lf| yield lf }
74
- }
75
- end
76
- end
77
-
78
- # Create an exclusive lock for writing, and do the writing in a
79
- # tmp file.
80
- def self.writelock(file, mode = 0600)
81
- tmpfile = file + ".tmp"
82
- unless FileTest.directory?(File.dirname(tmpfile))
83
- raise Puppet::DevError, "Cannot create %s; directory %s does not exist" %
84
- [file, File.dirname(file)]
85
- end
86
- self.sync(file).synchronize(Sync::EX) do
87
- File.open(file, "w", mode) do |rf|
88
- rf.lock_exclusive do |lrf|
89
- File.open(tmpfile, "w", mode) do |tf|
90
- yield tf
91
- end
92
- begin
93
- File.rename(tmpfile, file)
94
- rescue => detail
95
- Puppet.err "Could not rename %s to %s: %s" %
96
- [file, tmpfile, detail]
97
- end
98
- end
99
- end
100
- end
101
- end
102
-
103
71
  # Create instance methods for each of the log levels. This allows
104
72
  # the messages to be a little richer. Most classes will be calling this
105
73
  # method.
@@ -268,7 +236,10 @@ module Util
268
236
 
269
237
  # Execute the desired command, and return the status and output.
270
238
  # def execute(command, failonfail = true, uid = nil, gid = nil)
271
- def execute(command, arguments = {:failonfail => true})
239
+ # :combine sets whether or not to combine stdout/stderr in the output
240
+ # :stdinfile sets a file that can be used for stdin. Passing a string
241
+ # for stdin is not currently supported.
242
+ def execute(command, arguments = {:failonfail => true, :combine => true})
272
243
  if command.is_a?(Array)
273
244
  command = command.flatten.collect { |i| i.to_s }
274
245
  str = command.join(" ")
@@ -301,9 +272,13 @@ module Util
301
272
 
302
273
  # The idea here is to avoid IO#read whenever possible.
303
274
  output_file="/dev/null"
275
+ error_file="/dev/null"
304
276
  if ! arguments[:squelch]
305
277
  require "tempfile"
306
278
  output_file = Tempfile.new("puppet")
279
+ if arguments[:combine]
280
+ error_file=output_file
281
+ end
307
282
  end
308
283
 
309
284
  oldverb = $VERBOSE
@@ -317,9 +292,14 @@ module Util
317
292
  # Child process executes this
318
293
  Process.setsid
319
294
  begin
320
- $stdin.reopen("/dev/null")
295
+ if arguments[:stdinfile]
296
+ $stdin.reopen(arguments[:stdinfile])
297
+ else
298
+ $stdin.reopen("/dev/null")
299
+ end
321
300
  $stdout.reopen(output_file)
322
- $stderr.reopen(output_file)
301
+ $stderr.reopen(error_file)
302
+
323
303
  3.upto(256){|fd| IO::new(fd).close rescue nil}
324
304
  if arguments[:gid]
325
305
  Process.egid = arguments[:gid]
@@ -461,4 +441,3 @@ require 'puppet/util/execution'
461
441
  require 'puppet/util/logging'
462
442
  require 'puppet/util/package'
463
443
  require 'puppet/util/warnings'
464
-
@@ -0,0 +1,44 @@
1
+ require 'puppet/util'
2
+
3
+ module Puppet::Util::FileLocking
4
+ module_function
5
+
6
+ # Create a shared lock for reading
7
+ def readlock(file)
8
+ Puppet::Util.sync(file).synchronize(Sync::SH) do
9
+ File.open(file) { |f|
10
+ f.lock_shared { |lf| yield lf }
11
+ }
12
+ end
13
+ end
14
+
15
+ # Create an exclusive lock for writing, and do the writing in a
16
+ # tmp file.
17
+ def writelock(file, mode = nil)
18
+ unless FileTest.directory?(File.dirname(file))
19
+ raise Puppet::DevError, "Cannot create %s; directory %s does not exist" % [file, File.dirname(file)]
20
+ end
21
+ tmpfile = file + ".tmp"
22
+
23
+ unless mode
24
+ # It's far more likely that the file will be there than not, so it's
25
+ # better to stat once to check for existence and mode.
26
+ # If we can't stat, it's most likely because the file's not there,
27
+ # but could also be because the directory isn't readable, in which case
28
+ # we won't be able to write anyway.
29
+ begin
30
+ mode = File.stat(file).mode
31
+ rescue
32
+ mode = 0600
33
+ end
34
+ end
35
+
36
+ Puppet::Util.sync(file).synchronize(Sync::EX) do
37
+ File.open(file, "w", mode) do |rf|
38
+ rf.lock_exclusive do |lrf|
39
+ yield lrf
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -213,10 +213,10 @@ class Puppet::Util::FileType
213
213
  begin
214
214
  output = Puppet::Util.execute(%w{crontab -l}, :uid => @path)
215
215
  return "" if output.include?("can't open your crontab")
216
+ raise Puppet::Error, "User %s not authorized to use cron" % @path if output.include?("you are not authorized to use cron")
216
217
  return output
217
- rescue
218
- # If there's a failure, treat it like an empty file.
219
- return ""
218
+ rescue => detail
219
+ raise Puppet::Error, "Could not read crontab for %s: %s" % [@path, detail]
220
220
  end
221
221
  end
222
222
 
@@ -369,11 +369,7 @@ class Puppet::Util::Log
369
369
  end
370
370
 
371
371
  def handle(msg)
372
- # Only add messages from objects, since anything else is
373
- # probably unrelated to this run.
374
- if msg.objectsource?
375
- @report.newlog(msg)
376
- end
372
+ @report.newlog(msg)
377
373
  end
378
374
  end
379
375
 
@@ -505,15 +501,6 @@ class Puppet::Util::Log
505
501
  Log.newmessage(self)
506
502
  end
507
503
 
508
- # Was the source of this log a Puppet resource or parameter?
509
- def objectsource?
510
- if defined? @objectsource and @objectsource
511
- @objectsource
512
- else
513
- false
514
- end
515
- end
516
-
517
504
  # If they pass a source in to us, we make sure it is a string, and
518
505
  # we retrieve any tags we can.
519
506
  def source=(source)
@@ -521,10 +508,8 @@ class Puppet::Util::Log
521
508
  # We can't just check for whether it responds to :path, because
522
509
  # plenty of providers respond to that in their normal function.
523
510
  if (source.is_a?(Puppet::Type) or source.is_a?(Puppet::Parameter)) and source.respond_to?(:path)
524
- @objectsource = true
525
511
  @source = source.path
526
512
  else
527
- @objectsource = false
528
513
  @source = source.to_s
529
514
  end
530
515
  if source.respond_to?(:tags)
@@ -4,11 +4,6 @@ require 'puppet'
4
4
  # A class for handling metrics. This is currently ridiculously hackish.
5
5
  class Puppet::Util::Metric
6
6
 
7
- # Load the library as a feature, so we can test its presence.
8
- # It's only used by this class, so there's no reason to move it
9
- # to the main feature list.
10
- Puppet.features.add :rrd, :libs => 'RRDtool'
11
-
12
7
  attr_accessor :type, :name, :value, :label
13
8
  attr_writer :values
14
9
 
@@ -0,0 +1,85 @@
1
+
2
+ module Puppet::Util::RDoc
3
+
4
+ module_function
5
+
6
+ # launch a rdoc documenation process
7
+ # with the files/dir passed in +files+
8
+ def rdoc(outputdir, files)
9
+ begin
10
+ Puppet[:ignoreimport] = true
11
+
12
+ # then rdoc
13
+ require 'rdoc/rdoc'
14
+
15
+ # load our parser
16
+ require 'puppet/util/rdoc/parser'
17
+
18
+ r = RDoc::RDoc.new
19
+ RDoc::RDoc::GENERATORS["puppet"] = RDoc::RDoc::Generator.new("puppet/util/rdoc/generators/puppet_generator.rb",
20
+ "PuppetGenerator".intern,
21
+ "puppet")
22
+ # specify our own format & where to output
23
+ options = [ "--fmt", "puppet",
24
+ "--quiet",
25
+ "--op", outputdir ]
26
+
27
+ options += files
28
+
29
+ # launch the documentation process
30
+ r.document(options)
31
+ rescue RDoc::RDocError => e
32
+ raise Puppet::ParseError.new("RDoc error %s" % e)
33
+ end
34
+ end
35
+
36
+ # launch a output to console manifest doc
37
+ def manifestdoc(files)
38
+ Puppet[:ignoreimport] = true
39
+ files.select { |f| FileTest.file?(f) }.each do |f|
40
+ parser = Puppet::Parser::Parser.new(:environment => Puppet[:environment])
41
+ parser.file = f
42
+ ast = parser.parse
43
+ output(f, ast)
44
+ end
45
+ end
46
+
47
+ # Ouputs to the console the documentation
48
+ # of a manifest
49
+ def output(file, ast)
50
+ astobj = []
51
+ ast[:nodes].each do |name, k|
52
+ astobj << k if k.file == file
53
+ end
54
+ ast[:classes].each do |name, k|
55
+ astobj << k if k.file == file
56
+ end
57
+ ast[:definitions].each do |name, k|
58
+ astobj << k if k.file == file
59
+ end
60
+ astobj.sort! {|a,b| a.line <=> b.line }.each do |k|
61
+ output_astnode_doc(k)
62
+ end
63
+ end
64
+
65
+ def output_astnode_doc(ast)
66
+ puts ast.doc if !ast.doc.nil? and !ast.doc.empty?
67
+ if Puppet.settings[:document_all]
68
+ # scan each underlying resources to produce documentation
69
+ code = ast.code.children if ast.code.is_a?(Puppet::Parser::AST::ASTArray)
70
+ code ||= ast.code
71
+ output_resource_doc(code) unless code.nil?
72
+ end
73
+ end
74
+
75
+ def output_resource_doc(code)
76
+ code.sort { |a,b| a.line <=> b.line }.each do |stmt|
77
+ output_resource_doc(stmt.children) if stmt.is_a?(Puppet::Parser::AST::ASTArray)
78
+
79
+ if stmt.is_a?(Puppet::Parser::AST::Resource)
80
+ puts stmt.doc if !stmt.doc.nil? and !stmt.doc.empty?
81
+ end
82
+ end
83
+ end
84
+
85
+ end