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
@@ -54,6 +54,7 @@ class Puppet::Rails::Schema
54
54
  create_table :hosts do |t|
55
55
  t.column :name, :string, :null => false
56
56
  t.column :ip, :string
57
+ t.column :environment, :string
57
58
  t.column :last_compile, :datetime
58
59
  t.column :last_freshcheck, :datetime
59
60
  t.column :last_report, :datetime
@@ -43,6 +43,10 @@ class Puppet::Rails::Host < ActiveRecord::Base
43
43
  host.ip = ip
44
44
  end
45
45
 
46
+ if env = node.environment
47
+ host.environment = env
48
+ end
49
+
46
50
  # Store the facts into the database.
47
51
  host.setfacts node.parameters
48
52
 
@@ -133,7 +133,7 @@ Signals
133
133
  -------
134
134
  The ``puppetd`` and ``puppetmasterd`` executables catch some signals for special
135
135
  handling. Both daemons catch (``SIGHUP``), which forces the server to restart
136
- tself. Predictably, interrupt and terminate (``SIGINT`` and ``SIGHUP``) will shut
136
+ tself. Predictably, interrupt and terminate (``SIGINT`` and ``SIGTERM``) will shut
137
137
  down the server, whether it be an instance of ``puppetd`` or ``puppetmasterd``.
138
138
 
139
139
  Sending the ``SIGUSR1`` signal to an instance of ``puppetd`` will cause it to
@@ -151,12 +151,14 @@ Puppet::Reports.register_report(:tagmail) do
151
151
  reports.each do |emails, messages|
152
152
  Puppet.info "Sending report to %s" % emails.join(", ")
153
153
  # We need to open a separate process for every set of email addresses
154
- IO.popen(Puppet[:sendmail] + " " + emails.join(" "), "w") do |p|
155
- p.puts "From: #{Puppet[:reportfrom]}"
156
- p.puts "Subject: Puppet Report for %s" % self.host
157
- p.puts "To: " + emails.join(", ")
158
-
159
- p.puts messages
154
+ sync.synchronize do
155
+ IO.popen(Puppet[:sendmail] + " " + emails.join(" "), "w") do |p|
156
+ p.puts "From: #{Puppet[:reportfrom]}"
157
+ p.puts "Subject: Puppet Report for %s" % self.host
158
+ p.puts "To: " + emails.join(", ")
159
+
160
+ p.puts messages
161
+ end
160
162
  end
161
163
  end
162
164
  rescue => detail
@@ -174,5 +176,12 @@ Puppet::Reports.register_report(:tagmail) do
174
176
  # Don't bother waiting for the pid to return.
175
177
  Process.detach(pid)
176
178
  end
179
+
180
+ def sync
181
+ unless defined?(@sync)
182
+ @sync = Sync.new
183
+ end
184
+ @sync
185
+ end
177
186
  end
178
187
 
@@ -53,12 +53,10 @@ class Puppet::Transaction::Change
53
53
  # The transaction catches any exceptions here.
54
54
  events = @property.sync
55
55
  if events.nil?
56
- return nil
57
- end
58
-
59
- if events.is_a?(Array)
56
+ events = [(@property.name.to_s + "_changed").to_sym]
57
+ elsif events.is_a?(Array)
60
58
  if events.empty?
61
- return nil
59
+ events = [(@property.name.to_s + "_changed").to_sym]
62
60
  end
63
61
  else
64
62
  events = [events]
@@ -53,6 +53,7 @@ module Puppet
53
53
  Puppet.debug "Defining %s on %s" % [param, ref]
54
54
  trans[param] = value
55
55
  }
56
+ trans.catalog = self.catalog
56
57
  Puppet::Type::Component.create(trans)
57
58
  end
58
59
 
@@ -0,0 +1,155 @@
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
+ Puppet::Type.newtype(:augeas) do
21
+ include Puppet::Util
22
+
23
+ feature :parse_commands, "Parse the command string"
24
+ feature :need_to_run?, "If the command should run"
25
+ feature :execute_changes, "Actually make the changes"
26
+
27
+ @doc = "Apply the changes (single or array of changes) to the filesystem
28
+ via the augeas tool.
29
+
30
+ Requires:
31
+ - augeas to be installed (http://www.augeas.net)
32
+ - ruby-augeas bindings
33
+
34
+ Sample usage with a string::
35
+
36
+ augeas{\"test1\" :
37
+ context => \"/files/etc/sysconfig/firstboot\",
38
+ changes => \"set RUN_FIRSTBOOT YES\",
39
+ onlyif => \"match other_value size > 0\",
40
+ }
41
+
42
+ Sample usage with an array and custom lenses::
43
+
44
+ augeas{\"jboss_conf\":
45
+ context => \"/files\",
46
+ changes => [
47
+ \"set /etc/jbossas/jbossas.conf/JBOSS_IP $ipaddress\",
48
+ \"set /etc/jbossas/jbossas.conf/JAVA_HOME /usr\"
49
+ ],
50
+ load_path => \"$/usr/share/jbossas/lenses\",
51
+ }
52
+
53
+ "
54
+
55
+ newparam (:name) do
56
+ desc "The name of this task. Used for uniqueness"
57
+ isnamevar
58
+ end
59
+
60
+ newparam (:context) do
61
+ desc "Optional context path. This value is pre-pended to the paths of all changes"
62
+ defaultto ""
63
+ end
64
+
65
+ newparam (:onlyif) do
66
+ desc "Optional augeas command and comparisons to control the execution of this type.
67
+ Supported onlyif syntax::
68
+
69
+ get [AUGEAS_PATH] [COMPARATOR] [STRING]
70
+ match [MATCH_PATH] size [COMPARATOR] [INT]
71
+ match [MATCH_PATH] include [STRING]
72
+ match [MATCH_PATH] == [AN_ARRAY]
73
+
74
+ where::
75
+
76
+ AUGEAS_PATH is a valid path scoped by the context
77
+ MATCH_PATH is a valid match synatx scoped by the context
78
+ COMPARATOR is in the set [> >= != == <= <]
79
+ STRING is a string
80
+ INT is a number
81
+ AN_ARRAY is in the form ['a string', 'another']"
82
+ defaultto ""
83
+ end
84
+
85
+
86
+ newparam(:changes) do
87
+ desc "The changes which should be applied to the filesystem. This
88
+ can be either a string which contains a command or an array of commands.
89
+ Commands supported are::
90
+
91
+ set [PATH] [VALUE] Sets the value VALUE at loction PATH
92
+ rm [PATH] Removes the node at location PATH
93
+ remove [PATH] Synonym for rm
94
+ clear [PATH] Keeps the node at PATH, but removes the value.
95
+ ins [PATH] Inserts an empty node at PATH.
96
+ insert [PATH] Synonym for ins
97
+
98
+ If the parameter 'context' is set that that value is prepended to PATH"
99
+
100
+ munge do |value|
101
+ provider.parse_commands(value)
102
+ end
103
+ end
104
+
105
+
106
+ newparam(:root) do
107
+ desc "A file system path; all files loaded by Augeas are loaded underneath ROOT"
108
+ defaultto "/"
109
+ end
110
+
111
+ newparam(:load_path) do
112
+ desc "Optional colon separated list of directories; these directories are searched for schema definitions"
113
+ defaultto ""
114
+ end
115
+
116
+
117
+ newparam(:type_check) do
118
+ desc "Set to true if augeas should perform typechecking. Optional, defaults to false"
119
+ newvalues(:true, :false)
120
+
121
+ defaultto :false
122
+ end
123
+
124
+ # This is the acutal meat of the code. It forces
125
+ # augeas to be run and fails or not based on the augeas return
126
+ # code.
127
+ newproperty(:returns) do |property|
128
+ include Puppet::Util
129
+ desc "The expected return code from the augeas command. Should not be set"
130
+
131
+ defaultto 0
132
+
133
+ # Make output a bit prettier
134
+ def change_to_s(currentvalue, newvalue)
135
+ return "executed successfully"
136
+ end
137
+
138
+ # if the onlyif resource is provided, then the value is parsed.
139
+ # a return value of 0 will stop exection becuase it matches the
140
+ # default value.
141
+ def retrieve
142
+ if @resource.provider.need_to_run?()
143
+ :need_to_run
144
+ else
145
+ 0
146
+ end
147
+ end
148
+
149
+ # Actually execute the command.
150
+ def sync
151
+ @resource.provider.execute_changes()
152
+ end
153
+ end
154
+
155
+ end
@@ -0,0 +1,62 @@
1
+ Puppet::Type.newtype(:computer) do
2
+
3
+ @doc = "Computer object management using DirectoryService
4
+ on OS X.
5
+
6
+ Note that these are distinctly different kinds of objects to 'hosts',
7
+ as they require a MAC address and can have all sorts of policy attached to
8
+ them.
9
+
10
+ This provider only manages Computer objects in the local directory service
11
+ domain, not in remote directories.
12
+
13
+ If you wish to manage /etc/hosts on Mac OS X, then simply use the host
14
+ type as per other platforms.
15
+
16
+ This type primarily exists to create localhost Computer objects that MCX
17
+ policy can then be attached to."
18
+
19
+ # ensurable
20
+
21
+ # We autorequire the computer object in case it is being managed at the
22
+ # file level by Puppet.
23
+
24
+ autorequire(:file) do
25
+ if self[:name]
26
+ "/var/db/dslocal/nodes/Default/computers/#{self[:name]}.plist"
27
+ else
28
+ nil
29
+ end
30
+ end
31
+
32
+ newproperty(:ensure, :parent => Puppet::Property::Ensure) do
33
+ desc "Control the existences of this computer record. Set this attribute to
34
+ ``present`` to ensure the computer record exists. Set it to ``absent``
35
+ to delete any computer records with this name"
36
+ newvalue(:present) do
37
+ provider.create
38
+ end
39
+
40
+ newvalue(:absent) do
41
+ provider.delete
42
+ end
43
+ end
44
+
45
+ newparam(:name) do
46
+ desc "The authoritative 'short' name of the computer record."
47
+ isnamevar
48
+ end
49
+
50
+ newparam(:realname) do
51
+ desc "The 'long' name of the computer record."
52
+ end
53
+
54
+ newproperty(:en_address) do
55
+ desc "The MAC address of the primary network interface. Must match en0."
56
+ end
57
+
58
+ newproperty(:ip_address) do
59
+ desc "The IP Address of the Computer object."
60
+ end
61
+
62
+ end
@@ -391,7 +391,8 @@ module Puppet
391
391
  Note that this command follows the same rules as the main command,
392
392
  which is to say that it must be fully qualified if the path is not set.
393
393
 
394
- Also note that onlyif can take an array as its value, eg:
394
+ Also note that onlyif can take an array as its value, eg::
395
+
395
396
  onlyif => [\"test -f /tmp/file1\", \"test -f /tmp/file2\"]
396
397
 
397
398
  This will only run the exec if /all/ conditions in the array return true.
@@ -1127,7 +1127,7 @@ module Puppet
1127
1127
  # file creation/modification, so we have to do some extra checking.
1128
1128
  def property_fix
1129
1129
  properties.each do |thing|
1130
- next unless [:mode, :owner, :group].include?(thing.name)
1130
+ next unless [:mode, :owner, :group, :seluser, :selrole, :seltype, :selrange].include?(thing.name)
1131
1131
 
1132
1132
  # Make sure we get a new stat objct
1133
1133
  self.stat(true)
@@ -2,11 +2,10 @@ module Puppet
2
2
  Puppet.type(:file).ensurable do
3
3
  require 'etc'
4
4
  desc "Whether to create files that don't currently exist.
5
- Possible values are *absent*, *present* (will match any form of
6
- file existence, and if the file is missing will create an empty
7
- file), *file*, and *directory*. Specifying ``absent`` will delete
8
- the file, although currently this will not recursively delete
9
- directories.
5
+ Possible values are *absent*, *present*, *file*, and *directory*.
6
+ Specifying ``present`` will match any form of file existence, and
7
+ if the file is missing will create an empty file. Specifying
8
+ ``absent`` will delete the file (and directory if recurse => true).
10
9
 
11
10
  Anything other than those values will be considered to be a symlink.
12
11
  For instance, the following text creates a link::
@@ -138,6 +137,10 @@ module Puppet
138
137
  # We have to treat :present specially, because it works with any
139
138
  # type of file.
140
139
  def insync?(currentvalue)
140
+ unless currentvalue == :absent or resource.replace?
141
+ return true
142
+ end
143
+
141
144
  if self.should == :present
142
145
  if currentvalue.nil? or currentvalue == :absent
143
146
  return false
@@ -103,22 +103,8 @@ module Puppet
103
103
  end
104
104
 
105
105
  def sync
106
- unless @resource.stat(false)
107
- stat = @resource.stat(true)
108
-
109
- unless stat
110
- self.debug "File does not exist; cannot set mode"
111
- return nil
112
- end
113
- end
114
-
115
106
  mode = self.should
116
107
 
117
- if mode == :absent
118
- # This is really only valid for create states...
119
- return nil
120
- end
121
-
122
108
  begin
123
109
  File.chmod(mode, @resource[:path])
124
110
  rescue => detail
@@ -1,5 +1,8 @@
1
1
  module Puppet
2
2
  Puppet.type(:file).newproperty(:owner) do
3
+ include Puppet::Util::POSIX
4
+ include Puppet::Util::Warnings
5
+
3
6
  require 'etc'
4
7
  desc "To whom the file should belong. Argument can be user name or
5
8
  user ID."
@@ -24,40 +27,32 @@ module Puppet
24
27
  end
25
28
  end
26
29
 
27
- def name2id(value)
28
- if value.is_a?(Symbol)
29
- return value.to_s
30
+ def insync?(current)
31
+ unless Puppet::Util::SUIDManager.uid == 0
32
+ warning "Cannot manage ownership unless running as root"
33
+ return true
30
34
  end
31
- begin
32
- user = Etc.getpwnam(value)
33
- if user.uid == ""
34
- return nil
35
+
36
+ @should.each do |value|
37
+ if value =~ /^\d+$/
38
+ uid = Integer(value)
39
+ elsif value.is_a?(String)
40
+ fail "Could not find user %s" % value unless uid = uid(value)
41
+ else
42
+ uid = value
35
43
  end
36
- return user.uid
37
- rescue ArgumentError => detail
38
- return nil
44
+
45
+ return true if uid == current
39
46
  end
47
+ return false
40
48
  end
41
49
 
42
50
  # Determine if the user is valid, and if so, return the UID
43
51
  def validuser?(value)
44
- if value =~ /^\d+$/
45
- value = value.to_i
46
- end
47
-
48
- if value.is_a?(Integer)
49
- # verify the user is a valid user
50
- if tmp = id2name(value)
51
- return value
52
- else
53
- return false
54
- end
52
+ if number = uid(value)
53
+ return number
55
54
  else
56
- if tmp = name2id(value)
57
- return tmp
58
- else
59
- return false
60
- end
55
+ return false
61
56
  end
62
57
  end
63
58
 
@@ -99,13 +94,6 @@ module Puppet
99
94
  return :absent
100
95
  end
101
96
 
102
- # Set our method appropriately, depending on links.
103
- if stat.ftype == "link" and @resource[:links] != :follow
104
- @method = :lchown
105
- else
106
- @method = :chown
107
- end
108
-
109
97
  currentvalue = stat.uid
110
98
 
111
99
  # On OS X, files that are owned by -2 get returned as really
@@ -120,44 +108,24 @@ module Puppet
120
108
  end
121
109
 
122
110
  def sync
123
- unless Puppet::Util::SUIDManager.uid == 0
124
- unless defined? @@notifieduid
125
- self.notice "Cannot manage ownership unless running as root"
126
- #@resource.delete(self.name)
127
- @@notifieduid = true
128
- end
129
- return nil
111
+ # Set our method appropriately, depending on links.
112
+ if resource[:links] == :manage
113
+ method = :lchown
114
+ else
115
+ method = :chown
130
116
  end
131
117
 
132
- user = nil
133
- unless user = self.validuser?(self.should)
134
- tmp = self.should
135
- unless defined? @@usermissing
136
- @@usermissing = {}
137
- end
138
-
139
- if @@usermissing.include?(tmp)
140
- @@usermissing[tmp] += 1
141
- else
142
- self.notice "user %s does not exist" % tmp
143
- @@usermissing[tmp] = 1
144
- end
145
- return nil
118
+ uid = nil
119
+ @should.each do |user|
120
+ break if uid = validuser?(user)
146
121
  end
147
122
 
148
- unless @resource.stat(false)
149
- unless @resource.stat(true)
150
- self.debug "File does not exist; cannot set owner"
151
- return nil
152
- end
153
- #self.debug "%s: after refresh, is '%s'" % [self.class.name,@is]
154
- end
123
+ raise Puppet::Error, "Could not find user(s) %s" % @should.join(",") unless uid
155
124
 
156
125
  begin
157
- File.send(@method, user, nil, @resource[:path])
126
+ File.send(method, uid, nil, @resource[:path])
158
127
  rescue => detail
159
- raise Puppet::Error, "Failed to set owner to '%s': %s" %
160
- [user, detail]
128
+ raise Puppet::Error, "Failed to set owner to '%s': %s" % [uid, detail]
161
129
  end
162
130
 
163
131
  return :file_changed