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
@@ -9,8 +9,6 @@ class Puppet::Util::Settings
9
9
  include Enumerable
10
10
  include Puppet::Util
11
11
 
12
- @@sync = Sync.new
13
-
14
12
  attr_accessor :file
15
13
  attr_reader :timer
16
14
 
@@ -21,22 +19,22 @@ class Puppet::Util::Settings
21
19
 
22
20
  # Set a config value. This doesn't set the defaults, it sets the value itself.
23
21
  def []=(param, value)
24
- @@sync.synchronize do # yay, thread-safe
25
- param = symbolize(param)
26
- unless element = @config[param]
27
- raise ArgumentError,
28
- "Attempt to assign a value to unknown configuration parameter %s" % param.inspect
29
- end
30
- if element.respond_to?(:munge)
31
- value = element.munge(value)
32
- end
33
- if element.respond_to?(:handle)
34
- element.handle(value)
35
- end
36
- # Reset the name, so it's looked up again.
37
- if param == :name
38
- @name = nil
39
- end
22
+ param = symbolize(param)
23
+ unless element = @config[param]
24
+ raise ArgumentError,
25
+ "Attempt to assign a value to unknown configuration parameter %s" % param.inspect
26
+ end
27
+ if element.respond_to?(:munge)
28
+ value = element.munge(value)
29
+ end
30
+ if element.respond_to?(:handle)
31
+ element.handle(value)
32
+ end
33
+ # Reset the name, so it's looked up again.
34
+ if param == :name
35
+ @name = nil
36
+ end
37
+ @sync.synchronize do # yay, thread-safe
40
38
  @values[:memory][param] = value
41
39
  @cache.clear
42
40
  end
@@ -58,7 +56,6 @@ class Puppet::Util::Settings
58
56
  return options
59
57
  end
60
58
 
61
- # Turn the config into a Puppet configuration and apply it
62
59
  def apply
63
60
  trans = self.to_transportable
64
61
  begin
@@ -86,25 +83,21 @@ class Puppet::Util::Settings
86
83
 
87
84
  # Remove all set values, potentially skipping cli values.
88
85
  def clear(exceptcli = false)
89
- @config.each { |name, obj|
90
- unless exceptcli and obj.setbycli
91
- obj.clear
86
+ @sync.synchronize do
87
+ @values.each do |name, values|
88
+ @values.delete(name) unless exceptcli and name == :cli
92
89
  end
93
- }
94
- @values.each do |name, values|
95
- next if name == :cli and exceptcli
96
- @values.delete(name)
97
- end
98
90
 
99
- # Don't clear the 'used' in this case, since it's a config file reparse,
100
- # and we want to retain this info.
101
- unless exceptcli
102
- @used = []
103
- end
91
+ # Don't clear the 'used' in this case, since it's a config file reparse,
92
+ # and we want to retain this info.
93
+ unless exceptcli
94
+ @used = []
95
+ end
104
96
 
105
- @cache.clear
97
+ @cache.clear
106
98
 
107
- @name = nil
99
+ @name = nil
100
+ end
108
101
  end
109
102
 
110
103
  # This is mostly just used for testing.
@@ -177,10 +170,12 @@ class Puppet::Util::Settings
177
170
  end
178
171
  str = str.intern
179
172
  if self.valid?(str)
180
- if self.boolean?(str)
181
- @values[:cli][str] = bool
182
- else
183
- @values[:cli][str] = value
173
+ @sync.synchronize do
174
+ if self.boolean?(str)
175
+ @values[:cli][str] = bool
176
+ else
177
+ @values[:cli][str] = value
178
+ end
184
179
  end
185
180
  else
186
181
  raise ArgumentError, "Invalid argument %s" % opt
@@ -198,14 +193,17 @@ class Puppet::Util::Settings
198
193
  @shortnames.include?(short)
199
194
  end
200
195
 
201
- # Create a new config object
196
+ # Create a new collection of config settings.
202
197
  def initialize
203
198
  @config = {}
204
199
  @shortnames = {}
205
-
200
+
206
201
  @created = []
207
202
  @searchpath = nil
208
203
 
204
+ # Mutex-like thing to protect @values
205
+ @sync = Sync.new
206
+
209
207
  # Keep track of set values.
210
208
  @values = Hash.new { |hash, key| hash[key] = {} }
211
209
 
@@ -309,7 +307,10 @@ class Puppet::Util::Settings
309
307
  end
310
308
  searchpath.each do |source|
311
309
  next if source == :name
312
- break if @name = @values[source][:name]
310
+ @sync.synchronize do
311
+ @name = @values[source][:name]
312
+ end
313
+ break if @name
313
314
  end
314
315
  unless @name
315
316
  @name = convert(@config[:name].default).intern
@@ -332,14 +333,24 @@ class Puppet::Util::Settings
332
333
  end
333
334
  end
334
335
 
335
- # Parse the configuration file.
336
+ # Parse the configuration file. Just provides
337
+ # thread safety.
336
338
  def parse(file)
339
+ # We have to clear outside of the sync, because it's
340
+ # also using synchronize().
337
341
  clear(true)
338
342
 
343
+ @sync.synchronize do
344
+ unsafe_parse(file)
345
+ end
346
+ end
347
+
348
+ # Unsafely parse the file -- this isn't thread-safe and causes plenty of problems if used directly.
349
+ def unsafe_parse(file)
339
350
  parse_file(file).each do |area, values|
340
351
  @values[area] = values
341
352
  end
342
-
353
+
343
354
  # Determine our environment, if we have one.
344
355
  if @config[:environment]
345
356
  env = self.value(:environment).to_sym
@@ -372,6 +383,8 @@ class Puppet::Util::Settings
372
383
  end
373
384
  end
374
385
 
386
+ private :unsafe_parse
387
+
375
388
  # Parse the configuration file. As of May 2007, this is a backward-compatibility method and
376
389
  # will be deprecated soon.
377
390
  def old_parse(file)
@@ -394,9 +407,11 @@ class Puppet::Util::Settings
394
407
  raise Puppet::Error, "Permission denied to file %s" % file
395
408
  end
396
409
 
397
- @values = Hash.new { |names, name|
398
- names[name] = {}
399
- }
410
+ @sync.synchronize do
411
+ @values = Hash.new { |names, name|
412
+ names[name] = {}
413
+ }
414
+ end
400
415
 
401
416
  # Get rid of the values set by the file, keeping cli values.
402
417
  self.clear(true)
@@ -404,72 +419,71 @@ class Puppet::Util::Settings
404
419
  section = "puppet"
405
420
  metas = %w{owner group mode}
406
421
  values = Hash.new { |hash, key| hash[key] = {} }
407
- text.split(/\n/).each { |line|
408
- case line
409
- when /^\[(\w+)\]$/: section = $1 # Section names
410
- when /^\s*#/: next # Skip comments
411
- when /^\s*$/: next # Skip blanks
412
- when /^\s*(\w+)\s*=\s*(.+)$/: # settings
413
- var = $1.intern
414
- if var == :mode
415
- value = $2
416
- else
417
- value = munge_value($2)
418
- end
422
+ @sync.synchronize do
423
+ text.split(/\n/).each { |line|
424
+ case line
425
+ when /^\[(\w+)\]$/: section = $1 # Section names
426
+ when /^\s*#/: next # Skip comments
427
+ when /^\s*$/: next # Skip blanks
428
+ when /^\s*(\w+)\s*=\s*(.+)$/: # settings
429
+ var = $1.intern
430
+ if var == :mode
431
+ value = $2
432
+ else
433
+ value = munge_value($2)
434
+ end
419
435
 
420
- # Only warn if we don't know what this config var is. This
421
- # prevents exceptions later on.
422
- unless @config.include?(var) or metas.include?(var.to_s)
423
- Puppet.warning "Discarded unknown configuration parameter %s" % var.inspect
424
- next # Skip this line.
425
- end
436
+ # Only warn if we don't know what this config var is. This
437
+ # prevents exceptions later on.
438
+ unless @config.include?(var) or metas.include?(var.to_s)
439
+ Puppet.warning "Discarded unknown configuration parameter %s" % var.inspect
440
+ next # Skip this line.
441
+ end
442
+
443
+ # Mmm, "special" attributes
444
+ if metas.include?(var.to_s)
445
+ unless values.include?(section)
446
+ values[section] = {}
447
+ end
448
+ values[section][var.to_s] = value
426
449
 
427
- # Mmm, "special" attributes
428
- if metas.include?(var.to_s)
429
- unless values.include?(section)
430
- values[section] = {}
450
+ # If the parameter is valid, then set it.
451
+ if section == Puppet[:name] and @config.include?(var)
452
+ #@config[var].value = value
453
+ @values[:main][var] = value
454
+ end
455
+ next
431
456
  end
432
- values[section][var.to_s] = value
433
457
 
434
- # If the parameter is valid, then set it.
435
- if section == Puppet[:name] and @config.include?(var)
436
- #@config[var].value = value
458
+ # Don't override set parameters, since the file is parsed
459
+ # after cli arguments are handled.
460
+ unless @config.include?(var) and @config[var].setbycli
461
+ Puppet.debug "%s: Setting %s to '%s'" % [section, var, value]
437
462
  @values[:main][var] = value
438
463
  end
439
- next
440
- end
441
-
442
- # Don't override set parameters, since the file is parsed
443
- # after cli arguments are handled.
444
- unless @config.include?(var) and @config[var].setbycli
445
- Puppet.debug "%s: Setting %s to '%s'" % [section, var, value]
446
- @values[:main][var] = value
447
- end
448
- @config[var].section = symbolize(section)
464
+ @config[var].section = symbolize(section)
449
465
 
450
- metas.each { |meta|
451
- if values[section][meta]
452
- if @config[var].respond_to?(meta + "=")
453
- @config[var].send(meta + "=", values[section][meta])
466
+ metas.each { |meta|
467
+ if values[section][meta]
468
+ if @config[var].respond_to?(meta + "=")
469
+ @config[var].send(meta + "=", values[section][meta])
470
+ end
454
471
  end
455
- end
456
- }
457
- else
458
- raise Puppet::Error, "Could not match line %s" % line
459
- end
460
- }
472
+ }
473
+ else
474
+ raise Puppet::Error, "Could not match line %s" % line
475
+ end
476
+ }
477
+ end
461
478
  end
462
479
 
463
- # Create a new element. The value is passed in because it's used to determine
464
- # what kind of element we're creating, but the value itself might be either
465
- # a default or a value, so we can't actually assign it.
480
+ # Create a new config option.
466
481
  def newelement(hash)
467
- value = hash[:value] || hash[:default]
468
482
  klass = nil
469
483
  if hash[:section]
470
484
  hash[:section] = symbolize(hash[:section])
471
485
  end
472
- case value
486
+ case hash[:default]
473
487
  when true, false, "true", "false":
474
488
  klass = CBoolean
475
489
  when /^\$\w+\//, /^\//:
@@ -479,7 +493,7 @@ class Puppet::Util::Settings
479
493
  else
480
494
  raise Puppet::Error, "Invalid value '%s' for %s" % [value.inspect, hash[:name]]
481
495
  end
482
- hash[:parent] = self
496
+ hash[:settings] = self
483
497
  element = klass.new(hash)
484
498
 
485
499
  return element
@@ -502,7 +516,7 @@ class Puppet::Util::Settings
502
516
  def reparse
503
517
  if defined? @file and @file.changed?
504
518
  Puppet.notice "Reparsing %s" % @file.file
505
- @@sync.synchronize do
519
+ @sync.synchronize do
506
520
  parse(@file)
507
521
  end
508
522
  reuse()
@@ -511,7 +525,7 @@ class Puppet::Util::Settings
511
525
 
512
526
  def reuse
513
527
  return unless defined? @used
514
- @@sync.synchronize do # yay, thread-safe
528
+ @sync.synchronize do # yay, thread-safe
515
529
  @used.each do |section|
516
530
  @used.delete(section)
517
531
  self.use(section)
@@ -595,7 +609,6 @@ class Puppet::Util::Settings
595
609
  name = symbolize(name)
596
610
  hash[:name] = name
597
611
  hash[:section] = section
598
- name = hash[:name]
599
612
  if @config.include?(name)
600
613
  raise ArgumentError, "Parameter %s is already defined" % name
601
614
  end
@@ -708,7 +721,7 @@ Generated on #{Time.now}.
708
721
  # Create the necessary objects to use a section. This is idempotent;
709
722
  # you can 'use' a section as many times as you want.
710
723
  def use(*sections)
711
- @@sync.synchronize do # yay, thread-safe
724
+ @sync.synchronize do # yay, thread-safe
712
725
  sections = sections.reject { |s| @used.include?(s.to_sym) }
713
726
 
714
727
  return if sections.empty?
@@ -769,16 +782,19 @@ Generated on #{Time.now}.
769
782
  end
770
783
 
771
784
  # See if we can find it within our searchable list of values
772
- val = nil
773
- each_source(environment) do |source|
774
- # Look for the value. We have to test the hash for whether
775
- # it exists, because the value might be false.
776
- if @values[source].include?(param)
777
- val = @values[source][param]
778
- break
785
+ val = catch :foundval do
786
+ each_source(environment) do |source|
787
+ # Look for the value. We have to test the hash for whether
788
+ # it exists, because the value might be false.
789
+ @sync.synchronize do
790
+ if @values[source].include?(param)
791
+ throw :foundval, @values[source][param]
792
+ end
793
+ end
779
794
  end
795
+ throw :foundval, nil
780
796
  end
781
-
797
+
782
798
  # If we didn't get a value, use the default
783
799
  val = @config[param].default if val.nil?
784
800
 
@@ -1058,14 +1074,9 @@ Generated on #{Time.now}.
1058
1074
 
1059
1075
  # The base element type.
1060
1076
  class CElement
1061
- attr_accessor :name, :section, :default, :parent, :setbycli, :call_on_define
1077
+ attr_accessor :name, :section, :default, :setbycli, :call_on_define
1062
1078
  attr_reader :desc, :short
1063
1079
 
1064
- # Unset any set value.
1065
- def clear
1066
- @value = nil
1067
- end
1068
-
1069
1080
  def desc=(value)
1070
1081
  @desc = value.gsub(/^\s*/, '')
1071
1082
  end
@@ -1085,10 +1096,9 @@ Generated on #{Time.now}.
1085
1096
 
1086
1097
  # Create the new element. Pretty much just sets the name.
1087
1098
  def initialize(args = {})
1088
- if args.include?(:parent)
1089
- self.parent = args[:parent]
1090
- args.delete(:parent)
1091
- end
1099
+ @settings = args.delete(:settings)
1100
+ raise ArgumentError.new("You must refer to a settings object") if @settings.nil? or !@settings.is_a?(Puppet::Util::Settings)
1101
+
1092
1102
  args.each do |param, value|
1093
1103
  method = param.to_s + "="
1094
1104
  unless self.respond_to? method
@@ -1143,7 +1153,7 @@ Generated on #{Time.now}.
1143
1153
  # If the value has not been overridden, then print it out commented
1144
1154
  # and unconverted, so it's clear that that's the default and how it
1145
1155
  # works.
1146
- value = @parent.value(self.name)
1156
+ value = @settings.value(self.name)
1147
1157
 
1148
1158
  if value != @default
1149
1159
  line = "%s = %s" % [@name, value]
@@ -1158,7 +1168,7 @@ Generated on #{Time.now}.
1158
1168
 
1159
1169
  # Retrieves the value, or if it's not set, retrieves the default.
1160
1170
  def value
1161
- @parent.value(self.name)
1171
+ @settings.value(self.name)
1162
1172
  end
1163
1173
  end
1164
1174
 
@@ -1169,7 +1179,7 @@ Generated on #{Time.now}.
1169
1179
 
1170
1180
  def group
1171
1181
  if defined? @group
1172
- return @parent.convert(@group)
1182
+ return @settings.convert(@group)
1173
1183
  else
1174
1184
  return nil
1175
1185
  end
@@ -1177,7 +1187,7 @@ Generated on #{Time.now}.
1177
1187
 
1178
1188
  def owner
1179
1189
  if defined? @owner
1180
- return @parent.convert(@owner)
1190
+ return @settings.convert(@owner)
1181
1191
  else
1182
1192
  return nil
1183
1193
  end
@@ -1200,7 +1210,7 @@ Generated on #{Time.now}.
1200
1210
 
1201
1211
  # Return the appropriate type.
1202
1212
  def type
1203
- value = @parent.value(self.name)
1213
+ value = @settings.value(self.name)
1204
1214
  if @name.to_s =~ /dir/
1205
1215
  return :directory
1206
1216
  elsif value.to_s =~ /\/$/
@@ -1271,7 +1281,7 @@ Generated on #{Time.now}.
1271
1281
  return true unless value.is_a? String
1272
1282
  value.scan(/\$(\w+)/) { |name|
1273
1283
  name = $1
1274
- unless @parent.include?(name)
1284
+ unless @settings.include?(name)
1275
1285
  raise ArgumentError,
1276
1286
  "Settings parameter '%s' is undefined" %
1277
1287
  name