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
@@ -18,6 +18,7 @@ class Puppet::Parser::Parser
18
18
  attr_reader :version, :environment
19
19
  attr_accessor :files
20
20
 
21
+ attr_accessor :lexer
21
22
 
22
23
  # Add context to a message; useful for error messages and such.
23
24
  def addcontext(message, obj = nil)
@@ -56,7 +57,9 @@ class Puppet::Parser::Parser
56
57
  end
57
58
  end
58
59
 
59
- return klass.new(hash)
60
+ k = klass.new(hash)
61
+ k.doc = lexer.getcomment if !k.nil? and k.use_docs and k.doc.empty?
62
+ return k
60
63
  end
61
64
 
62
65
  # The fully qualifed name, with the full namespace.
@@ -272,6 +275,7 @@ class Puppet::Parser::Parser
272
275
  end
273
276
  code = options[:code]
274
277
  parent = options[:parent]
278
+ doc = options[:doc]
275
279
 
276
280
  # If the class is already defined, then add code to it.
277
281
  if other = @astset.classes[name]
@@ -291,15 +295,25 @@ class Puppet::Parser::Parser
291
295
  if tmp == ""
292
296
  tmp = "main"
293
297
  end
294
-
298
+
295
299
  Puppet.debug addcontext("Adding code to %s" % tmp)
296
300
  # Else, add our code to it.
297
301
  if other.code and code
302
+ # promote if neededcodes to ASTArray so that we can append code
303
+ # ASTArray knows how to evaluate its members.
304
+ other.code = ast AST::ASTArray, :children => [other.code] unless other.code.is_a?(AST::ASTArray)
305
+ code = ast AST::ASTArray, :children => [code] unless code.is_a?(AST::ASTArray)
298
306
  other.code.children += code.children
299
307
  else
300
308
  other.code ||= code
301
309
  end
302
310
  end
311
+
312
+ if other.doc and doc
313
+ other.doc += doc
314
+ else
315
+ other.doc ||= doc
316
+ end
303
317
  else
304
318
  # Define it anew.
305
319
  # Note we're doing something somewhat weird here -- we're setting
@@ -308,6 +322,8 @@ class Puppet::Parser::Parser
308
322
  args = {:namespace => name, :classname => name, :parser => self}
309
323
  args[:code] = code if code
310
324
  args[:parentclass] = parent if parent
325
+ args[:doc] = doc
326
+
311
327
  @astset.classes[name] = ast AST::HostClass, args
312
328
  end
313
329
 
@@ -332,7 +348,8 @@ class Puppet::Parser::Parser
332
348
  :arguments => options[:arguments],
333
349
  :code => options[:code],
334
350
  :parser => self,
335
- :classname => name
351
+ :classname => name,
352
+ :doc => options[:doc]
336
353
  }
337
354
 
338
355
  [:code, :arguments].each do |param|
@@ -346,6 +363,7 @@ class Puppet::Parser::Parser
346
363
  # table, not according to namespaces.
347
364
  def newnode(names, options = {})
348
365
  names = [names] unless names.instance_of?(Array)
366
+ doc = lexer.getcomment
349
367
  names.collect do |name|
350
368
  name = name.to_s.downcase
351
369
  if other = @astset.nodes[name]
@@ -354,7 +372,8 @@ class Puppet::Parser::Parser
354
372
  name = name.to_s if name.is_a?(Symbol)
355
373
  args = {
356
374
  :name => name,
357
- :parser => self
375
+ :parser => self,
376
+ :doc => doc
358
377
  }
359
378
  if options[:code]
360
379
  args[:code] = options[:code]
@@ -395,6 +414,7 @@ class Puppet::Parser::Parser
395
414
  self.string = string
396
415
  end
397
416
  begin
417
+ @yydebug = false
398
418
  main = yyparse(@lexer,:scan)
399
419
  rescue Racc::ParseError => except
400
420
  error = Puppet::ParseError.new(except)
@@ -37,7 +37,7 @@ class Puppet::Parser::Resource::Reference < Puppet::ResourceReference
37
37
  if self.title == :main
38
38
  tmp = @scope.findclass("")
39
39
  else
40
- unless tmp = @scope.findclass(self.title)
40
+ unless tmp = @scope.parser.classes[self.title]
41
41
  fail Puppet::ParseError, "Could not find class '%s'" % self.title
42
42
  end
43
43
  end
@@ -46,8 +46,9 @@ class Puppet::Parser::Resource::Reference < Puppet::ResourceReference
46
46
  fail Puppet::ParseError, "Could not find node '%s'" % self.title
47
47
  end
48
48
  else # normal definitions
49
- # We have to swap these variables around so the errors are right.
50
- tmp = @scope.finddefine(self.type)
49
+ # The resource type is capitalized, so we have to downcase. Really,
50
+ # we should have a better interface for finding these, but eh.
51
+ tmp = @scope.parser.definitions[self.type.downcase]
51
52
  end
52
53
 
53
54
  if tmp
@@ -1,33 +1,18 @@
1
1
  # A simple wrapper for templates, so they don't have full access to
2
2
  # the scope objects.
3
3
  class Puppet::Parser::TemplateWrapper
4
- attr_accessor :scope, :file
4
+ attr_accessor :scope, :file, :string
5
5
  include Puppet::Util
6
6
  Puppet::Util.logmethods(self)
7
7
 
8
- def initialize(scope, filename)
8
+ def initialize(scope)
9
9
  @__scope__ = scope
10
- @__file__ = Puppet::Module::find_template(filename, scope.compiler.environment)
11
-
12
- unless FileTest.exists?(file)
13
- raise Puppet::ParseError,
14
- "Could not find template %s" % file
15
- end
16
-
17
- # We'll only ever not have a parser in testing, but, eh.
18
- if scope.parser
19
- scope.parser.watch_file(file)
20
- end
21
10
  end
22
11
 
23
12
  def scope
24
13
  @__scope__
25
14
  end
26
15
 
27
- def file
28
- @__file__
29
- end
30
-
31
16
  # Should return true if a variable is defined, false if it is not
32
17
  def has_variable?(name)
33
18
  if scope.lookupvar(name.to_s, false) != :undefined
@@ -77,11 +62,34 @@ class Puppet::Parser::TemplateWrapper
77
62
  end
78
63
  end
79
64
 
80
- def result
65
+ def file=(filename)
66
+ @file = Puppet::Module::find_template(filename, scope.compiler.environment)
67
+
68
+ unless FileTest.exists?(file)
69
+ raise Puppet::ParseError,
70
+ "Could not find template %s" % file
71
+ end
72
+
73
+ # We'll only ever not have a parser in testing, but, eh.
74
+ if scope.parser
75
+ scope.parser.watch_file(file)
76
+ end
77
+
78
+ @string = File.read(file)
79
+ end
80
+
81
+ def result(string = nil)
82
+ if string
83
+ self.string = string
84
+ template_source = "inline template"
85
+ else
86
+ template_source = file
87
+ end
88
+
81
89
  # Expose all the variables in our scope as instance variables of the
82
90
  # current object, making it possible to access them without conflict
83
91
  # to the regular methods.
84
- benchmark(:debug, "Bound template variables for #{file}") do
92
+ benchmark(:debug, "Bound template variables for #{template_source}") do
85
93
  scope.to_hash.each { |name, value|
86
94
  if name.kind_of?(String)
87
95
  realname = name.gsub(/[^\w]/, "_")
@@ -93,8 +101,8 @@ class Puppet::Parser::TemplateWrapper
93
101
  end
94
102
 
95
103
  result = nil
96
- benchmark(:debug, "Interpolated template #{file}") do
97
- template = ERB.new(File.read(file), 0, "-")
104
+ benchmark(:debug, "Interpolated template #{template_source}") do
105
+ template = ERB.new(self.string, 0, "-")
98
106
  result = template.result(binding)
99
107
  end
100
108
 
@@ -102,7 +110,7 @@ class Puppet::Parser::TemplateWrapper
102
110
  end
103
111
 
104
112
  def to_s
105
- "template[%s]" % file
113
+ "template[%s]" % (file ? file : "inline")
106
114
  end
107
115
  end
108
116
 
@@ -485,7 +485,7 @@ class Property < Puppet::Parameter
485
485
  end
486
486
 
487
487
  # This doc will probably get overridden
488
- @doc ||= "The basic property that the object should be in."
488
+ @doc ||= "The basic property that the resource should be in."
489
489
  end
490
490
 
491
491
  def self.inherited(sub)
@@ -28,6 +28,11 @@ module Puppet
28
28
  @resource[membership] == :inclusive
29
29
  end
30
30
 
31
+ #dearrayify was motivated because to simplify the implementation of the OrderedList property
32
+ def dearrayify(array)
33
+ array.sort.join(delimiter)
34
+ end
35
+
31
36
  def should
32
37
  unless defined? @should and @should
33
38
  return nil
@@ -39,7 +44,7 @@ module Puppet
39
44
  members = add_should_with_current(members, retrieve)
40
45
  end
41
46
 
42
- members.sort.join(delimiter)
47
+ dearrayify(members)
43
48
  end
44
49
 
45
50
  def delimiter
@@ -57,7 +62,7 @@ module Puppet
57
62
 
58
63
  def prepare_is_for_comparison(is)
59
64
  if is.is_a? Array
60
- is = is.sort.join(delimiter)
65
+ is = dearrayify(is)
61
66
  end
62
67
  is
63
68
  end
@@ -0,0 +1,22 @@
1
+ require 'puppet/property/list'
2
+
3
+ module Puppet
4
+ class Property
5
+ class OrderedList < List
6
+
7
+ def add_should_with_current(should, current)
8
+ if current.is_a?(Array)
9
+ #tricky trick
10
+ #Preserve all the current items in the list
11
+ #but move them to the back of the line
12
+ should = should + (current - should)
13
+ end
14
+ should
15
+ end
16
+
17
+ def dearrayify(array)
18
+ array.join(delimiter)
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,189 @@
1
+ #--
2
+ # Copyright (C) 2008 Red Hat Inc.
3
+ #
4
+ # This library is free software; you can redistribute it and/or
5
+ # modify it under the terms of the GNU General Public
6
+ # License as published by the Free Software Foundation; either
7
+ # version 2 of the License, or (at your option) any later version.
8
+ #
9
+ # This library is distributed in the hope that it will be useful,
10
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12
+ # General Public License for more details.
13
+ #
14
+ # You should have received a copy of the GNU General Public
15
+ # License along with this library; if not, write to the Free Software
16
+ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17
+ #
18
+ # Author: Bryan Kearney <bkearney@redhat.com>
19
+
20
+ require 'augeas' if Puppet.features.augeas?
21
+
22
+ Puppet::Type.type(:augeas).provide(:augeas) do
23
+ #class Puppet::Provider::Augeas < Puppet::Provider
24
+ include Puppet::Util
25
+
26
+ confine :true => Puppet.features.augeas?
27
+
28
+ has_features :parse_commands, :need_to_run?,:execute_changes
29
+
30
+ # Extracts an 2 dimensional array of commands which are in the
31
+ # form of command path value.
32
+ # The input can be
33
+ # - A string with one command
34
+ # - A string with many commands per line
35
+ # - An array of strings.
36
+ def parse_commands(data)
37
+ commands = Array.new()
38
+ if data.is_a?(String)
39
+ data.each_line do |line|
40
+ cmd_array = Array.new()
41
+ tokens = line.split(" ")
42
+ cmd = tokens.shift()
43
+ file = tokens.shift()
44
+ other = tokens.join(" ")
45
+ cmd_array << cmd if !cmd.nil?
46
+ cmd_array << file if !file.nil?
47
+ cmd_array << other if other != ""
48
+ commands << cmd_array
49
+ end
50
+ elsif data.is_a?(Array)
51
+ data.each do |datum|
52
+ commands.concat(parse_commands(datum))
53
+ end
54
+ end
55
+
56
+ return commands
57
+ end
58
+
59
+ def open_augeas
60
+ flags = 0
61
+ (flags = 1 << 2 ) if self.resource[:type_check] == :true
62
+ root = self.resource[:root]
63
+ load_path = self.resource[:load_path]
64
+ debug("Opening augeas with root #{root}, lens path #{load_path}, flags #{flags}")
65
+ Augeas.open(root, load_path,flags)
66
+ end
67
+
68
+ # Used by the need_to_run? method to process get filters. Returns
69
+ # true if there is a match, false if otherwise
70
+ # Assumes a syntax of get /files/path [COMPARATOR] value
71
+ def process_get(cmd_array)
72
+ return_value = false
73
+
74
+ #validate and tear apart the command
75
+ fail ("Invalid command: #{cmd_array.join(" ")}") if cmd_array.length < 4
76
+ cmd = cmd_array.shift()
77
+ path = cmd_array.shift()
78
+ comparator = cmd_array.shift()
79
+ arg = cmd_array.join(" ")
80
+
81
+ #check the value in augeas
82
+ aug = open_augeas()
83
+ result = aug.get(path) || ''
84
+ unless result.nil?
85
+ case comparator
86
+ when "!=":
87
+ return_value = true if !(result == arg)
88
+ when "=~":
89
+ regex = Regexp.new(arg)
90
+ loc = result=~ regex
91
+ return_value = true if ! loc.nil?
92
+ else
93
+ return_value = true if (result.send(comparator, arg))
94
+ end
95
+ end
96
+ return_value
97
+ end
98
+
99
+ # Used by the need_to_run? method to process match filters. Returns
100
+ # true if there is a match, false if otherwise
101
+ def process_match(cmd_array)
102
+ return_value = false
103
+
104
+ #validate and tear apart the command
105
+ fail("Invalid command: #{cmd_array.join(" ")}") if cmd_array.length < 4
106
+ cmd = cmd_array.shift()
107
+ path = cmd_array.shift()
108
+ verb = cmd_array.shift()
109
+
110
+ #Get the values from augeas
111
+ aug = open_augeas()
112
+ result = aug.match(path) || ''
113
+ # Now do the work
114
+ if (!result.nil?)
115
+ case verb
116
+ when "size":
117
+ fail("Invalid command: #{cmd_array.join(" ")}") if cmd_array.length != 2
118
+ comparator = cmd_array.shift()
119
+ arg = cmd_array.shift().to_i
120
+ return_value = true if (result.size.send(comparator, arg))
121
+ when "include":
122
+ arg = cmd_array.join(" ")
123
+ return_value = true if result.include?(arg)
124
+ when "==":
125
+ begin
126
+ arg = cmd_array.join(" ")
127
+ new_array = eval arg
128
+ return_value = true if result == new_array
129
+ rescue
130
+ fail("Invalid array in command: #{cmd_array.join(" ")}")
131
+ end
132
+ end
133
+ end
134
+ return_value
135
+ end
136
+
137
+ # Determines if augeas acutally needs to run.
138
+ def need_to_run?
139
+ return_value = true
140
+ filter = resource[:onlyif]
141
+ unless (filter == "")
142
+ cmd_array = filter.split
143
+ command = cmd_array[0];
144
+ cmd_array[1]= File.join(resource[:context], cmd_array[1])
145
+ begin
146
+ data = nil
147
+ case command
148
+ when "get" then return_value = process_get(cmd_array)
149
+ when "match" then return_value = process_match(cmd_array)
150
+ end
151
+ rescue Exception => e
152
+ fail("Error sending command '#{command}' with params #{cmd_array[1..-1].inspect}/#{e.message}")
153
+ end
154
+ end
155
+ return_value
156
+ end
157
+
158
+ # Actually execute the augeas changes.
159
+ def execute_changes
160
+ aug = open_augeas
161
+ commands = resource[:changes]
162
+ context = resource[:context]
163
+ commands.each do |cmd_array|
164
+ fail("invalid command #{cmd_array.join[" "]}") if cmd_array.length < 2
165
+ command = cmd_array[0]
166
+ cmd_array.shift()
167
+ cmd_array[0]=File.join(context, cmd_array[0])
168
+ debug("sending command '#{command}' with params #{cmd_array.inspect}")
169
+ begin
170
+ case command
171
+ when "set": aug.set(cmd_array[0], cmd_array[1])
172
+ when "rm", "remove": aug.rm(cmd_array[0])
173
+ when "clear": aug.clear(cmd_array[0])
174
+ when "insert", "ins": aug.insert(cmd_array[0])
175
+ else fail("Command '#{command}' is not supported")
176
+ end
177
+ rescue Exception => e
178
+ fail("Error sending command '#{command}' with params #{cmd_array.inspect}/#{e.message}")
179
+ end
180
+ end
181
+ success = aug.save()
182
+ if (success != true)
183
+ fail("Save failed with return code #{success}")
184
+ end
185
+
186
+ return :executed
187
+ end
188
+
189
+ end