puppet 0.24.6 → 0.24.7

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of puppet might be problematic. Click here for more details.

Files changed (383) hide show
  1. data/CHANGELOG +115 -0
  2. data/Rakefile +43 -14
  3. data/bin/puppetca +6 -5
  4. data/bin/puppetdoc +109 -15
  5. data/bin/ralsh +3 -1
  6. data/conf/redhat/puppet.spec +74 -48
  7. data/examples/mcx_dock_absent.pp +4 -0
  8. data/examples/mcx_dock_default.pp +118 -0
  9. data/examples/mcx_dock_full.pp +125 -0
  10. data/examples/mcx_dock_invalid.pp +9 -0
  11. data/examples/mcx_nogroup.pp +118 -0
  12. data/examples/mcx_notexists_absent.pp +4 -0
  13. data/ext/emacs/puppet-mode.el +1 -1
  14. data/lib/puppet.rb +1 -1
  15. data/lib/puppet/external/nagios/base.rb +114 -71
  16. data/lib/puppet/feature/base.rb +6 -0
  17. data/lib/puppet/indirector/yaml.rb +12 -3
  18. data/lib/puppet/module.rb +1 -1
  19. data/lib/puppet/network/client/master.rb +1 -1
  20. data/lib/puppet/network/xmlrpc/client.rb +3 -1
  21. data/lib/puppet/parameter.rb +1 -1
  22. data/lib/puppet/parser/ast.rb +15 -0
  23. data/lib/puppet/parser/ast/astarray.rb +1 -2
  24. data/lib/puppet/parser/ast/casestatement.rb +2 -0
  25. data/lib/puppet/parser/ast/collection.rb +2 -0
  26. data/lib/puppet/parser/ast/comparison_operator.rb +4 -0
  27. data/lib/puppet/parser/ast/definition.rb +2 -0
  28. data/lib/puppet/parser/ast/else.rb +3 -0
  29. data/lib/puppet/parser/ast/function.rb +19 -12
  30. data/lib/puppet/parser/ast/hostclass.rb +9 -1
  31. data/lib/puppet/parser/ast/ifstatement.rb +3 -0
  32. data/lib/puppet/parser/ast/node.rb +3 -0
  33. data/lib/puppet/parser/ast/resource.rb +3 -0
  34. data/lib/puppet/parser/ast/resource_defaults.rb +2 -0
  35. data/lib/puppet/parser/ast/resource_override.rb +3 -0
  36. data/lib/puppet/parser/ast/vardef.rb +3 -0
  37. data/lib/puppet/parser/functions.rb +14 -0
  38. data/lib/puppet/parser/functions/inline_template.rb +21 -0
  39. data/lib/puppet/parser/functions/template.rb +3 -2
  40. data/lib/puppet/parser/lexer.rb +56 -7
  41. data/lib/puppet/parser/parser.rb +114 -98
  42. data/lib/puppet/parser/parser_support.rb +24 -4
  43. data/lib/puppet/parser/resource/reference.rb +4 -3
  44. data/lib/puppet/parser/templatewrapper.rb +30 -22
  45. data/lib/puppet/property.rb +1 -1
  46. data/lib/puppet/property/list.rb +7 -2
  47. data/lib/puppet/property/ordered_list.rb +22 -0
  48. data/lib/puppet/provider/augeas/augeas.rb +189 -0
  49. data/lib/puppet/provider/computer/computer.rb +22 -0
  50. data/lib/puppet/provider/confine.rb +4 -1
  51. data/lib/puppet/provider/confine/variable.rb +13 -2
  52. data/lib/puppet/provider/confine_collection.rb +4 -1
  53. data/lib/puppet/provider/confiner.rb +1 -1
  54. data/lib/puppet/provider/group/directoryservice.rb +6 -3
  55. data/lib/puppet/provider/group/groupadd.rb +5 -2
  56. data/lib/puppet/provider/group/ldap.rb +11 -9
  57. data/lib/puppet/provider/group/netinfo.rb +8 -4
  58. data/lib/puppet/provider/group/pw.rb +5 -1
  59. data/lib/puppet/provider/host/netinfo.rb +5 -2
  60. data/lib/puppet/provider/macauthorization/macauthorization.rb +315 -0
  61. data/lib/puppet/provider/mcx/mcxcontent.rb +201 -0
  62. data/lib/puppet/provider/nameservice/directoryservice.rb +210 -107
  63. data/lib/puppet/provider/nameservice/netinfo.rb +7 -2
  64. data/lib/puppet/provider/package/appdmg.rb +0 -3
  65. data/lib/puppet/provider/package/apt.rb +6 -0
  66. data/lib/puppet/provider/package/rpm.rb +2 -0
  67. data/lib/puppet/provider/package/yum.rb +5 -1
  68. data/lib/puppet/provider/package/yumhelper.py +9 -0
  69. data/lib/puppet/provider/service/base.rb +9 -6
  70. data/lib/puppet/provider/service/daemontools.rb +25 -15
  71. data/lib/puppet/provider/service/debian.rb +6 -2
  72. data/lib/puppet/provider/service/freebsd.rb +5 -2
  73. data/lib/puppet/provider/service/gentoo.rb +6 -3
  74. data/lib/puppet/provider/service/init.rb +31 -21
  75. data/lib/puppet/provider/service/launchd.rb +195 -0
  76. data/lib/puppet/provider/service/redhat.rb +5 -2
  77. data/lib/puppet/provider/service/runit.rb +30 -20
  78. data/lib/puppet/provider/service/smf.rb +7 -4
  79. data/lib/puppet/provider/ssh_authorized_key/parsed.rb +21 -1
  80. data/lib/puppet/provider/user/directoryservice.rb +1 -0
  81. data/lib/puppet/provider/user/netinfo.rb +9 -3
  82. data/lib/puppet/provider/user/user_role_add.rb +43 -6
  83. data/lib/puppet/provider/zfs/solaris.rb +45 -0
  84. data/lib/puppet/provider/zone/solaris.rb +8 -4
  85. data/lib/puppet/provider/zpool/solaris.rb +116 -0
  86. data/lib/puppet/rails/database/003_add_environment_to_host.rb +9 -0
  87. data/lib/puppet/rails/database/schema.rb +1 -0
  88. data/lib/puppet/rails/host.rb +4 -0
  89. data/lib/puppet/reference/configuration.rb +1 -1
  90. data/lib/puppet/reports/tagmail.rb +15 -6
  91. data/lib/puppet/transaction/change.rb +3 -5
  92. data/lib/puppet/transportable.rb +1 -0
  93. data/lib/puppet/type/augeas.rb +155 -0
  94. data/lib/puppet/type/computer.rb +62 -0
  95. data/lib/puppet/type/exec.rb +2 -1
  96. data/lib/puppet/type/file.rb +1 -1
  97. data/lib/puppet/type/file/ensure.rb +8 -5
  98. data/lib/puppet/type/file/mode.rb +0 -14
  99. data/lib/puppet/type/file/owner.rb +32 -64
  100. data/lib/puppet/type/file/selcontext.rb +3 -8
  101. data/lib/puppet/type/group.rb +27 -45
  102. data/lib/puppet/type/k5login.rb +1 -1
  103. data/lib/puppet/type/macauthorization.rb +141 -0
  104. data/lib/puppet/type/mcx.rb +115 -0
  105. data/lib/puppet/type/mount.rb +1 -1
  106. data/lib/puppet/type/nagios_hostdependency.rb +3 -0
  107. data/lib/puppet/type/ssh_authorized_key.rb +16 -0
  108. data/lib/puppet/type/tidy.rb +43 -14
  109. data/lib/puppet/type/user.rb +25 -1
  110. data/lib/puppet/type/zfs.rb +51 -0
  111. data/lib/puppet/type/zone.rb +8 -0
  112. data/lib/puppet/type/zpool.rb +93 -0
  113. data/lib/puppet/util.rb +17 -38
  114. data/lib/puppet/util/file_locking.rb +44 -0
  115. data/lib/puppet/util/filetype.rb +3 -3
  116. data/lib/puppet/util/log.rb +1 -16
  117. data/lib/puppet/util/metric.rb +0 -5
  118. data/lib/puppet/util/rdoc.rb +85 -0
  119. data/lib/puppet/util/rdoc/code_objects.rb +219 -0
  120. data/lib/puppet/util/rdoc/generators/puppet_generator.rb +829 -0
  121. data/lib/puppet/util/rdoc/generators/template/puppet/puppet.rb +1051 -0
  122. data/lib/puppet/util/rdoc/parser.rb +437 -0
  123. data/lib/puppet/util/selinux.rb +135 -63
  124. data/lib/puppet/util/settings.rb +136 -126
  125. data/lib/puppet/util/storage.rb +4 -2
  126. data/spec/Rakefile +91 -0
  127. data/spec/integration/checksum.rb +47 -0
  128. data/spec/integration/defaults.rb +47 -0
  129. data/spec/integration/file_serving/configuration.rb +43 -0
  130. data/spec/integration/file_serving/content.rb +18 -0
  131. data/spec/integration/file_serving/metadata.rb +18 -0
  132. data/spec/integration/indirector/direct_file_server.rb +80 -0
  133. data/spec/integration/indirector/file_content/file_server.rb +18 -0
  134. data/spec/integration/indirector/file_metadata/file_server.rb +18 -0
  135. data/spec/integration/indirector/module_files.rb +57 -0
  136. data/spec/integration/indirector/node/ldap.rb +15 -0
  137. data/spec/integration/indirector/rest.rb +464 -0
  138. data/spec/integration/network/server/mongrel.rb +48 -0
  139. data/spec/integration/network/server/webrick.rb +48 -0
  140. data/spec/integration/node.rb +93 -0
  141. data/spec/integration/node/catalog.rb +54 -0
  142. data/spec/integration/node/facts.rb +45 -0
  143. data/spec/integration/provider/package.rb +26 -0
  144. data/spec/integration/provider/service/init.rb +32 -0
  145. data/spec/integration/reference/providers.rb +17 -0
  146. data/spec/integration/reports.rb +14 -0
  147. data/spec/integration/transaction/report.rb +26 -0
  148. data/spec/integration/type/package.rb +22 -0
  149. data/spec/integration/util/file_locking.rb +36 -0
  150. data/spec/monkey_patches/add_confine_and_runnable_to_rspec_dsl.rb +46 -0
  151. data/spec/monkey_patches/alias_should_to_must.rb +5 -0
  152. data/spec/shared_behaviours/file_server_terminus.rb +42 -0
  153. data/spec/shared_behaviours/file_serving.rb +64 -0
  154. data/spec/shared_behaviours/memory_terminus.rb +32 -0
  155. data/spec/spec.opts +5 -0
  156. data/spec/spec_helper.rb +36 -0
  157. data/spec/unit/executables/client/certhandler.rb +122 -0
  158. data/spec/unit/file_serving/configuration.rb +224 -0
  159. data/spec/unit/file_serving/configuration/parser.rb +135 -0
  160. data/spec/unit/file_serving/content.rb +71 -0
  161. data/spec/unit/file_serving/file_base.rb +124 -0
  162. data/spec/unit/file_serving/fileset.rb +239 -0
  163. data/spec/unit/file_serving/indirection_hooks.rb +124 -0
  164. data/spec/unit/file_serving/metadata.rb +187 -0
  165. data/spec/unit/file_serving/mount.rb +143 -0
  166. data/spec/unit/file_serving/terminus_helper.rb +76 -0
  167. data/spec/unit/indirector.rb +152 -0
  168. data/spec/unit/indirector/catalog/compiler.rb +156 -0
  169. data/spec/unit/indirector/catalog/yaml.rb +25 -0
  170. data/spec/unit/indirector/checksum/file.rb +139 -0
  171. data/spec/unit/indirector/code.rb +33 -0
  172. data/spec/unit/indirector/direct_file_server.rb +89 -0
  173. data/spec/unit/indirector/envelope.rb +47 -0
  174. data/spec/unit/indirector/exec.rb +51 -0
  175. data/spec/unit/indirector/facts/facter.rb +76 -0
  176. data/spec/unit/indirector/facts/yaml.rb +26 -0
  177. data/spec/unit/indirector/file.rb +154 -0
  178. data/spec/unit/indirector/file_content/file.rb +18 -0
  179. data/spec/unit/indirector/file_content/file_server.rb +18 -0
  180. data/spec/unit/indirector/file_content/modules.rb +18 -0
  181. data/spec/unit/indirector/file_content/rest.rb +11 -0
  182. data/spec/unit/indirector/file_metadata/file.rb +52 -0
  183. data/spec/unit/indirector/file_metadata/file_server.rb +18 -0
  184. data/spec/unit/indirector/file_metadata/modules.rb +42 -0
  185. data/spec/unit/indirector/file_metadata/rest.rb +9 -0
  186. data/spec/unit/indirector/file_server.rb +184 -0
  187. data/spec/unit/indirector/indirection.rb +731 -0
  188. data/spec/unit/indirector/ldap.rb +143 -0
  189. data/spec/unit/indirector/memory.rb +29 -0
  190. data/spec/unit/indirector/module_files.rb +259 -0
  191. data/spec/unit/indirector/node/exec.rb +69 -0
  192. data/spec/unit/indirector/node/ldap.rb +424 -0
  193. data/spec/unit/indirector/node/memory.rb +19 -0
  194. data/spec/unit/indirector/node/plain.rb +19 -0
  195. data/spec/unit/indirector/node/rest.rb +13 -0
  196. data/spec/unit/indirector/node/yaml.rb +25 -0
  197. data/spec/unit/indirector/plain.rb +29 -0
  198. data/spec/unit/indirector/report/processor.rb +81 -0
  199. data/spec/unit/indirector/request.rb +87 -0
  200. data/spec/unit/indirector/rest.rb +372 -0
  201. data/spec/unit/indirector/ssl_rsa/file.rb +116 -0
  202. data/spec/unit/indirector/terminus.rb +245 -0
  203. data/spec/unit/indirector/yaml.rb +145 -0
  204. data/spec/unit/module.rb +247 -0
  205. data/spec/unit/network/client.rb +45 -0
  206. data/spec/unit/network/client/master.rb +442 -0
  207. data/spec/unit/network/handler/fileserver.rb +179 -0
  208. data/spec/unit/network/http.rb +35 -0
  209. data/spec/unit/network/http/mongrel.rb +117 -0
  210. data/spec/unit/network/http/mongrel/rest.rb +377 -0
  211. data/spec/unit/network/http/mongrel/xmlrpc.rb +0 -0
  212. data/spec/unit/network/http/webrick.rb +127 -0
  213. data/spec/unit/network/http/webrick/rest.rb +323 -0
  214. data/spec/unit/network/http/webrick/xmlrpc.rb +0 -0
  215. data/spec/unit/network/http_pool.rb +238 -0
  216. data/spec/unit/network/server.rb +316 -0
  217. data/spec/unit/network/xmlrpc/client.rb +13 -0
  218. data/spec/unit/node.rb +167 -0
  219. data/spec/unit/node/catalog.rb +864 -0
  220. data/spec/unit/node/environment.rb +37 -0
  221. data/spec/unit/node/facts.rb +44 -0
  222. data/spec/unit/other/checksum.rb +92 -0
  223. data/spec/unit/other/pgraph.rb +210 -0
  224. data/spec/unit/other/transaction.rb +33 -0
  225. data/spec/unit/other/transbucket.rb +172 -0
  226. data/spec/unit/other/transobject.rb +92 -0
  227. data/spec/unit/parameter.rb +24 -0
  228. data/spec/unit/parser/ast.rb +37 -0
  229. data/spec/unit/parser/ast/arithmetic_operator.rb +73 -0
  230. data/spec/unit/parser/ast/astarray.rb +66 -0
  231. data/spec/unit/parser/ast/boolean_operator.rb +53 -0
  232. data/spec/unit/parser/ast/collexpr.rb +92 -0
  233. data/spec/unit/parser/ast/comparison_operator.rb +92 -0
  234. data/spec/unit/parser/ast/definition.rb +195 -0
  235. data/spec/unit/parser/ast/function.rb +77 -0
  236. data/spec/unit/parser/ast/hostclass.rb +148 -0
  237. data/spec/unit/parser/ast/minus.rb +36 -0
  238. data/spec/unit/parser/ast/node.rb +125 -0
  239. data/spec/unit/parser/ast/nop.rb +20 -0
  240. data/spec/unit/parser/ast/not.rb +30 -0
  241. data/spec/unit/parser/ast/resource_override.rb +51 -0
  242. data/spec/unit/parser/ast/resource_reference.rb +63 -0
  243. data/spec/unit/parser/ast/vardef.rb +47 -0
  244. data/spec/unit/parser/collector.rb +426 -0
  245. data/spec/unit/parser/compiler.rb +561 -0
  246. data/spec/unit/parser/functions.rb +83 -0
  247. data/spec/unit/parser/functions/inline_template.rb +59 -0
  248. data/spec/unit/parser/functions/template.rb +62 -0
  249. data/spec/unit/parser/interpreter.rb +138 -0
  250. data/spec/unit/parser/lexer.rb +646 -0
  251. data/spec/unit/parser/parser.rb +228 -0
  252. data/spec/unit/parser/resource.rb +336 -0
  253. data/spec/unit/parser/resource/reference.rb +95 -0
  254. data/spec/unit/parser/scope.rb +87 -0
  255. data/spec/unit/parser/templatewrapper.rb +129 -0
  256. data/spec/unit/property.rb +35 -0
  257. data/spec/unit/property/keyvalue.rb +168 -0
  258. data/spec/unit/property/list.rb +156 -0
  259. data/spec/unit/property/ordered_list.rb +64 -0
  260. data/spec/unit/provider/augeas/augeas.rb +238 -0
  261. data/spec/unit/provider/confine.rb +78 -0
  262. data/spec/unit/provider/confine/exists.rb +81 -0
  263. data/spec/unit/provider/confine/false.rb +53 -0
  264. data/spec/unit/provider/confine/feature.rb +60 -0
  265. data/spec/unit/provider/confine/true.rb +53 -0
  266. data/spec/unit/provider/confine/variable.rb +107 -0
  267. data/spec/unit/provider/confine_collection.rb +134 -0
  268. data/spec/unit/provider/confiner.rb +63 -0
  269. data/spec/unit/provider/group/groupadd.rb +31 -0
  270. data/spec/unit/provider/group/ldap.rb +105 -0
  271. data/spec/unit/provider/ldap.rb +248 -0
  272. data/spec/unit/provider/macauthorization.rb +147 -0
  273. data/spec/unit/provider/mcx/mcxcontent.rb +175 -0
  274. data/spec/unit/provider/mount.rb +130 -0
  275. data/spec/unit/provider/mount/parsed.rb +185 -0
  276. data/spec/unit/provider/package/apt.rb +138 -0
  277. data/spec/unit/provider/package/dpkg.rb +163 -0
  278. data/spec/unit/provider/package/gem.rb +87 -0
  279. data/spec/unit/provider/package/hpux.rb +52 -0
  280. data/spec/unit/provider/selboolean.rb +37 -0
  281. data/spec/unit/provider/selmodule-example.pp +0 -0
  282. data/spec/unit/provider/selmodule.rb +66 -0
  283. data/spec/unit/provider/service/daemontools.rb +124 -0
  284. data/spec/unit/provider/service/launchd.rb +134 -0
  285. data/spec/unit/provider/service/runit.rb +117 -0
  286. data/spec/unit/provider/ssh_authorized_key/parsed.rb +102 -0
  287. data/spec/unit/provider/user/hpux.rb +25 -0
  288. data/spec/unit/provider/user/ldap.rb +279 -0
  289. data/spec/unit/provider/user/user_role_add.rb +249 -0
  290. data/spec/unit/provider/user/useradd.rb +115 -0
  291. data/spec/unit/provider/zfs/solaris.rb +87 -0
  292. data/spec/unit/provider/zone/solaris.rb +42 -0
  293. data/spec/unit/provider/zpool/solaris.rb +179 -0
  294. data/spec/unit/rails.rb +125 -0
  295. data/spec/unit/relationship.rb +149 -0
  296. data/spec/unit/reports.rb +61 -0
  297. data/spec/unit/resource_reference.rb +73 -0
  298. data/spec/unit/simple_graph.rb +280 -0
  299. data/spec/unit/transaction/change.rb +187 -0
  300. data/spec/unit/transaction/event.rb +25 -0
  301. data/spec/unit/transaction/report.rb +40 -0
  302. data/spec/unit/type.rb +64 -0
  303. data/spec/unit/type/augeas.rb +113 -0
  304. data/spec/unit/type/computer.rb +82 -0
  305. data/spec/unit/type/exec.rb +91 -0
  306. data/spec/unit/type/file.rb +155 -0
  307. data/spec/unit/type/file/ensure.rb +21 -0
  308. data/spec/unit/type/file/group.rb +118 -0
  309. data/spec/unit/type/file/owner.rb +132 -0
  310. data/spec/unit/type/file/selinux.rb +82 -0
  311. data/spec/unit/type/group.rb +40 -0
  312. data/spec/unit/type/macauthorization.rb +78 -0
  313. data/spec/unit/type/mcx.rb +108 -0
  314. data/spec/unit/type/mount.rb +219 -0
  315. data/spec/unit/type/nagios.rb +63 -0
  316. data/spec/unit/type/noop_metaparam.rb +38 -0
  317. data/spec/unit/type/package.rb +246 -0
  318. data/spec/unit/type/resources.rb +27 -0
  319. data/spec/unit/type/schedule.rb +339 -0
  320. data/spec/unit/type/selboolean.rb +47 -0
  321. data/spec/unit/type/selmodule.rb +18 -0
  322. data/spec/unit/type/service.rb +254 -0
  323. data/spec/unit/type/ssh_authorized_key.rb +106 -0
  324. data/spec/unit/type/tidy.rb +68 -0
  325. data/spec/unit/type/user.rb +260 -0
  326. data/spec/unit/type/zfs.rb +45 -0
  327. data/spec/unit/type/zone.rb +20 -0
  328. data/spec/unit/type/zpool.rb +110 -0
  329. data/spec/unit/util/checksums.rb +99 -0
  330. data/spec/unit/util/constant_inflector.rb +70 -0
  331. data/spec/unit/util/file_locking.rb +115 -0
  332. data/spec/unit/util/ldap/connection.rb +169 -0
  333. data/spec/unit/util/ldap/generator.rb +54 -0
  334. data/spec/unit/util/ldap/manager.rb +654 -0
  335. data/spec/unit/util/loadedfile.rb +65 -0
  336. data/spec/unit/util/log.rb +107 -0
  337. data/spec/unit/util/metric.rb +95 -0
  338. data/spec/unit/util/nagios_maker.rb +128 -0
  339. data/spec/unit/util/posix.rb +256 -0
  340. data/spec/unit/util/resource_template.rb +58 -0
  341. data/spec/unit/util/selinux.rb +219 -0
  342. data/spec/unit/util/settings.rb +847 -0
  343. data/spec/unit/util/storage.rb +248 -0
  344. data/spec/unit/util/tagging.rb +92 -0
  345. data/spec/unit/util/uri_helper.rb +41 -0
  346. data/spec/unit/util/user_attr.rb +47 -0
  347. data/spec/unit/util/warnings.rb +35 -0
  348. data/test/certmgr/support.rb +0 -6
  349. data/test/data/providers/ssh_authorized_key/parsed/authorized_keys +1 -0
  350. data/test/data/snippets/multilinecomments.pp +6 -0
  351. data/test/data/snippets/multipleclass.pp +9 -0
  352. data/test/language/functions.rb +11 -1
  353. data/test/language/snippets.rb +16 -0
  354. data/test/lib/puppettest/runnable_test.rb +1 -1
  355. data/test/network/handler/fileserver.rb +5 -0
  356. data/test/other/report.rb +0 -4
  357. data/test/ral/type/resources.rb +2 -19
  358. data/test/util/settings.rb +4 -4
  359. data/test/util/storage.rb +0 -24
  360. data/test/util/utiltest.rb +0 -33
  361. metadata +319 -26
  362. data/conf/debian/README.source +0 -2
  363. data/conf/debian/TODO.Debian +0 -1
  364. data/conf/debian/changelog +0 -257
  365. data/conf/debian/compat +0 -1
  366. data/conf/debian/control +0 -45
  367. data/conf/debian/copyright +0 -17
  368. data/conf/debian/docs +0 -1
  369. data/conf/debian/fileserver.conf +0 -12
  370. data/conf/debian/puppet.NEWS +0 -63
  371. data/conf/debian/puppet.conf +0 -8
  372. data/conf/debian/puppet.dirs +0 -7
  373. data/conf/debian/puppet.files +0 -6
  374. data/conf/debian/puppet.init +0 -64
  375. data/conf/debian/puppet.logrotate +0 -11
  376. data/conf/debian/puppet.postinst +0 -9
  377. data/conf/debian/puppet.postrm +0 -21
  378. data/conf/debian/puppet.preinst +0 -25
  379. data/conf/debian/puppetmaster.files +0 -4
  380. data/conf/debian/puppetmaster.init +0 -58
  381. data/conf/debian/rules +0 -115
  382. data/conf/debian/watch +0 -2
  383. data/lib/puppet/type/nagios_hostgroupescalation.rb +0 -3
@@ -0,0 +1,25 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.dirname(__FILE__) + '/../../spec_helper'
4
+
5
+ require 'puppet/transaction/event'
6
+
7
+ describe Puppet::Transaction::Event do
8
+ Event = Puppet::Transaction::Event
9
+
10
+ it "should require a name and a source" do
11
+ lambda { Event.new }.should raise_error(ArgumentError)
12
+ end
13
+
14
+ it "should have a name getter" do
15
+ Event.new(:foo, "bar").name.should == :foo
16
+ end
17
+
18
+ it "should have a source accessor" do
19
+ Event.new(:foo, "bar").source.should == "bar"
20
+ end
21
+
22
+ it "should be able to produce a string containing the event name and the source" do
23
+ Event.new(:event, :source).to_s.should == "source -> event"
24
+ end
25
+ end
@@ -0,0 +1,40 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # Created by Luke Kanies on 2007-10-12.
4
+ # Copyright (c) 2007. All rights reserved.
5
+
6
+ require File.dirname(__FILE__) + '/../../spec_helper'
7
+
8
+ require 'puppet/transaction/report'
9
+
10
+ describe Puppet::Transaction::Report, " when being indirect" do
11
+ it "should redirect :find to the indirection" do
12
+ @indirection = stub 'indirection', :name => :report
13
+ Puppet::Transaction::Report.stubs(:indirection).returns(@indirection)
14
+ @indirection.expects(:find)
15
+ Puppet::Transaction::Report.find(:report)
16
+ end
17
+
18
+ it "should redirect :save to the indirection" do
19
+ Facter.stubs(:value).returns("eh")
20
+ @indirection = stub 'indirection', :name => :report
21
+ Puppet::Transaction::Report.stubs(:indirection).returns(@indirection)
22
+ report = Puppet::Transaction::Report.new
23
+ @indirection.expects(:save)
24
+ report.save
25
+ end
26
+
27
+ it "should default to the 'processor' terminus" do
28
+ Puppet::Transaction::Report.indirection.terminus_class.should == :processor
29
+ end
30
+
31
+ it "should delegate its name attribute to its host method" do
32
+ report = Puppet::Transaction::Report.new
33
+ report.expects(:host).returns "me"
34
+ report.name.should == "me"
35
+ end
36
+
37
+ after do
38
+ Puppet::Indirector::Indirection.clear_cache
39
+ end
40
+ end
@@ -0,0 +1,64 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.dirname(__FILE__) + '/../spec_helper'
4
+
5
+ describe Puppet::Type do
6
+ describe "when retrieving current properties" do
7
+ # Use 'mount' as an example, because it doesn't override 'retrieve'
8
+ before do
9
+ @resource = Puppet::Type.type(:mount).create(:name => "foo", :fstype => "bar", :pass => 1, :ensure => :present)
10
+ @properties = {}
11
+ end
12
+
13
+ after { Puppet::Type.type(:mount).clear }
14
+
15
+ it "should return a hash containing values for all set properties" do
16
+ values = @resource.retrieve
17
+ [@resource.property(:fstype), @resource.property(:pass)].each { |property| values.should be_include(property) }
18
+ end
19
+
20
+ it "should not call retrieve on non-ensure properties if the resource is absent" do
21
+ @resource.property(:ensure).expects(:retrieve).returns :absent
22
+ @resource.property(:fstype).expects(:retrieve).never
23
+ @resource.retrieve[@resource.property(:fstype)]
24
+ end
25
+
26
+ it "should set all values to :absent if the resource is absent" do
27
+ @resource.property(:ensure).expects(:retrieve).returns :absent
28
+ @resource.retrieve[@resource.property(:fstype)].should == :absent
29
+ end
30
+
31
+ it "should include the result of retrieving each property's current value if the resource is present" do
32
+ @resource.property(:ensure).expects(:retrieve).returns :present
33
+ @resource.property(:fstype).expects(:retrieve).returns 15
34
+ @resource.retrieve[@resource.property(:fstype)].should == 15
35
+ end
36
+ end
37
+
38
+
39
+ describe "when in a catalog" do
40
+ before do
41
+ @catalog = Puppet::Node::Catalog.new
42
+ @container = Puppet::Type.type(:component).create(:name => "container")
43
+ @one = Puppet::Type.type(:file).create(:path => "/file/one")
44
+ @two = Puppet::Type.type(:file).create(:path => "/file/two")
45
+ @catalog.add_resource @container
46
+ @catalog.add_resource @one
47
+ @catalog.add_resource @two
48
+ @catalog.add_edge @container, @one
49
+ @catalog.add_edge @container, @two
50
+ end
51
+
52
+ it "should have no parent if there is no in edge" do
53
+ @container.parent.should be_nil
54
+ end
55
+
56
+ it "should set its parent to its in edge" do
57
+ @one.parent.ref.should == @container.ref
58
+ end
59
+
60
+ after do
61
+ @catalog.clear(true)
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,113 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.dirname(__FILE__) + '/../../spec_helper'
4
+
5
+ augeas = Puppet::Type.type(:augeas)
6
+
7
+ describe augeas do
8
+ describe "when augeas is present" do
9
+ confine "Augeas is unavailable" => Puppet.features.augeas?
10
+
11
+ it "should have a default provider inheriting from Puppet::Provider" do
12
+ augeas.defaultprovider.ancestors.should be_include(Puppet::Provider)
13
+ end
14
+
15
+ it "should have a valid provider" do
16
+ augeas.create(:name => "foo").provider.class.ancestors.should be_include(Puppet::Provider)
17
+ end
18
+ end
19
+
20
+ describe "basic structure" do
21
+ it "should be able to create a instance" do
22
+ provider_class = Puppet::Type::Augeas.provider(Puppet::Type::Augeas.providers[0])
23
+ Puppet::Type::Augeas.expects(:defaultprovider).returns provider_class
24
+ augeas.create(:name => "bar").should_not be_nil
25
+ end
26
+
27
+ it "should have an parse_commands feature" do
28
+ augeas.provider_feature(:parse_commands).should_not be_nil
29
+ end
30
+
31
+ it "should have an need_to_run? feature" do
32
+ augeas.provider_feature(:need_to_run?).should_not be_nil
33
+ end
34
+
35
+ it "should have an execute_changes feature" do
36
+ augeas.provider_feature(:execute_changes).should_not be_nil
37
+ end
38
+
39
+ properties = [:returns]
40
+ params = [:name, :context, :onlyif, :changes, :root, :load_path, :type_check]
41
+
42
+ properties.each do |property|
43
+ it "should have a %s property" % property do
44
+ augeas.attrclass(property).ancestors.should be_include(Puppet::Property)
45
+ end
46
+
47
+ it "should have documentation for its %s property" % property do
48
+ augeas.attrclass(property).doc.should be_instance_of(String)
49
+ end
50
+ end
51
+
52
+ params.each do |param|
53
+ it "should have a %s parameter" % param do
54
+ augeas.attrclass(param).ancestors.should be_include(Puppet::Parameter)
55
+ end
56
+
57
+ it "should have documentation for its %s parameter" % param do
58
+ augeas.attrclass(param).doc.should be_instance_of(String)
59
+ end
60
+ end
61
+ end
62
+
63
+ describe "default values" do
64
+ before do
65
+ provider_class = augeas.provider(augeas.providers[0])
66
+ augeas.expects(:defaultprovider).returns provider_class
67
+ end
68
+
69
+ it "should be blank for context" do
70
+ augeas.create(:name => :context)[:context].should == ""
71
+ end
72
+
73
+ it "should be blank for onlyif" do
74
+ augeas.create(:name => :onlyif)[:onlyif].should == ""
75
+ end
76
+
77
+ it "should be blank for load_path" do
78
+ augeas.create(:name => :load_path)[:load_path].should == ""
79
+ end
80
+
81
+ it "should be / for root" do
82
+ augeas.create(:name => :root)[:root].should == "/"
83
+ end
84
+
85
+ it "should be false for type_check" do
86
+ augeas.create(:name => :type_check)[:type_check].should == :false
87
+ end
88
+ end
89
+
90
+ describe "provider interaction" do
91
+ it "should munge the changes" do
92
+ provider = stub("provider", :parse_commands => "Jar Jar Binks")
93
+ resource = stub('resource', :resource => nil, :provider => provider, :line => nil, :file => nil)
94
+ changes = augeas.attrclass(:changes).new(:resource => resource)
95
+ changes.value= "Testing 123"
96
+ changes.value.should == "Jar Jar Binks"
97
+ end
98
+
99
+ it "should return 0 if it does not need to run" do
100
+ provider = stub("provider", :need_to_run? => false)
101
+ resource = stub('resource', :resource => nil, :provider => provider, :line => nil, :file => nil)
102
+ changes = augeas.attrclass(:returns).new(:resource => resource)
103
+ changes.retrieve.should == 0
104
+ end
105
+
106
+ it "should return :need_to_run if it needs to run" do
107
+ provider = stub("provider", :need_to_run? => true)
108
+ resource = stub('resource', :resource => nil, :provider => provider, :line => nil, :file => nil)
109
+ changes = augeas.attrclass(:returns).new(:resource => resource)
110
+ changes.retrieve.should == :need_to_run
111
+ end
112
+ end
113
+ end
@@ -0,0 +1,82 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.dirname(__FILE__) + '/../../spec_helper'
4
+
5
+ computer = Puppet::Type.type(:computer)
6
+
7
+ describe Puppet.type(:computer), " when checking computer objects" do
8
+ before do
9
+ provider_class = Puppet::Type::Computer.provider(Puppet::Type::Computer.providers[0])
10
+ Puppet::Type::Computer.expects(:defaultprovider).returns provider_class
11
+ @resource = Puppet::Type::Computer.create(
12
+ :name => "puppetcomputertest",
13
+ :en_address => "aa:bb:cc:dd:ee:ff",
14
+ :ip_address => "1.2.3.4")
15
+ @properties = {}
16
+ @ensure = Puppet::Type::Computer.attrclass(:ensure).new(:resource => @resource)
17
+ end
18
+
19
+ after do
20
+ computer.clear
21
+ end
22
+
23
+ it "should be able to create a instance" do
24
+ provider_class = Puppet::Type::Computer.provider(Puppet::Type::Computer.providers[0])
25
+ Puppet::Type::Computer.expects(:defaultprovider).returns provider_class
26
+ computer.create(:name => "bar").should_not be_nil
27
+ end
28
+
29
+ properties = [:en_address, :ip_address]
30
+ params = [:name]
31
+
32
+ properties.each do |property|
33
+ it "should have a %s property" % property do
34
+ computer.attrclass(property).ancestors.should be_include(Puppet::Property)
35
+ end
36
+
37
+ it "should have documentation for its %s property" % property do
38
+ computer.attrclass(property).doc.should be_instance_of(String)
39
+ end
40
+
41
+ it "should accept :absent as a value" do
42
+ prop = computer.attrclass(property).new(:resource => @resource)
43
+ prop.should = :absent
44
+ prop.should.must == :absent
45
+ end
46
+ end
47
+
48
+ params.each do |param|
49
+ it "should have a %s parameter" % param do
50
+ computer.attrclass(param).ancestors.should be_include(Puppet::Parameter)
51
+ end
52
+
53
+ it "should have documentation for its %s parameter" % param do
54
+ computer.attrclass(param).doc.should be_instance_of(String)
55
+ end
56
+ end
57
+
58
+ describe "default values" do
59
+ before do
60
+ provider_class = computer.provider(computer.providers[0])
61
+ computer.expects(:defaultprovider).returns provider_class
62
+ end
63
+
64
+ it "should be nil for en_address" do
65
+ computer.create(:name => :en_address)[:en_address].should == nil
66
+ end
67
+
68
+ it "should be nil for ip_address" do
69
+ computer.create(:name => :ip_address)[:ip_address].should == nil
70
+ end
71
+ end
72
+
73
+ describe "when managing the ensure property" do
74
+ it "should support a :present value" do
75
+ lambda { @ensure.should = :present }.should_not raise_error
76
+ end
77
+
78
+ it "should support an :absent value" do
79
+ lambda { @ensure.should = :absent }.should_not raise_error
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,91 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.dirname(__FILE__) + '/../../spec_helper'
4
+
5
+ module ExecModuleTesting
6
+ def create_resource(command, output, exitstatus)
7
+ @user_name = 'some_user_name'
8
+ @group_name = 'some_group_name'
9
+ Puppet.features.stubs(:root?).returns(true)
10
+ @execer = Puppet::Type.type(:exec).create(:name => command, :path => %w{/usr/bin /bin}, :user => @user_name, :group => @group_name)
11
+
12
+ status = stub "process"
13
+ status.stubs(:exitstatus).returns(exitstatus)
14
+
15
+ Puppet::Util::SUIDManager.expects(:run_and_capture).with([command], @user_name, @group_name).returns([output, status])
16
+ end
17
+
18
+ def create_logging_resource(command, output, exitstatus, logoutput, loglevel)
19
+ create_resource(command, output, exitstatus)
20
+ @execer[:logoutput] = logoutput
21
+ @execer[:loglevel] = loglevel
22
+ end
23
+
24
+ def expect_output(output, loglevel)
25
+ output.split(/\n/).each do |line|
26
+ @execer.property(:returns).expects(loglevel).with(line)
27
+ end
28
+ end
29
+ end
30
+
31
+ describe Puppet::Type.type(:exec), " when execing" do
32
+ include ExecModuleTesting
33
+
34
+ it "should use the 'run_and_capture' method to exec" do
35
+ command = "true"
36
+ create_resource(command, "", 0)
37
+
38
+ @execer.refresh.should == :executed_command
39
+ end
40
+
41
+ it "should report a failure" do
42
+ command = "false"
43
+ create_resource(command, "", 1)
44
+
45
+ proc { @execer.refresh }.should raise_error(Puppet::Error)
46
+ end
47
+
48
+ it "should log the output on success" do
49
+ #Puppet::Util::Log.newdestination :console
50
+ command = "false"
51
+ output = "output1\noutput2\n"
52
+ create_logging_resource(command, output, 0, true, :err)
53
+ expect_output(output, :err)
54
+ @execer.refresh
55
+ end
56
+
57
+ it "should log the output on failure" do
58
+ #Puppet::Util::Log.newdestination :console
59
+ command = "false"
60
+ output = "output1\noutput2\n"
61
+ create_logging_resource(command, output, 1, true, :err)
62
+ expect_output(output, :err)
63
+
64
+ proc { @execer.refresh }.should raise_error(Puppet::Error)
65
+ end
66
+
67
+ end
68
+
69
+
70
+ describe Puppet::Type.type(:exec), " when logoutput=>on_failure is set," do
71
+ include ExecModuleTesting
72
+
73
+ it "should log the output on failure" do
74
+ #Puppet::Util::Log.newdestination :console
75
+ command = "false"
76
+ output = "output1\noutput2\n"
77
+ create_logging_resource(command, output, 1, :on_failure, :err)
78
+ expect_output(output, :err)
79
+
80
+ proc { @execer.refresh }.should raise_error(Puppet::Error)
81
+ end
82
+
83
+ it "shouldn't log the output on success" do
84
+ #Puppet::Util::Log.newdestination :console
85
+ command = "true"
86
+ output = "output1\noutput2\n"
87
+ create_logging_resource(command, output, 0, :on_failure, :err)
88
+ @execer.property(:returns).expects(:err).never
89
+ @execer.refresh
90
+ end
91
+ end
@@ -0,0 +1,155 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.dirname(__FILE__) + '/../../spec_helper'
4
+
5
+ describe Puppet::Type.type(:file) do
6
+ before do
7
+ @path = Tempfile.new("puppetspec")
8
+ @path.close!()
9
+ @path = @path.path
10
+ @file = Puppet::Type::File.create(:name => @path)
11
+ end
12
+
13
+ describe "when used with content and replace=>false" do
14
+ before do
15
+ @file[:content] = "foo"
16
+ @file[:replace] = false
17
+ end
18
+
19
+ it "should be insync if the file exists and the content is different" do
20
+ File.open(@path, "w") do |f| f.puts "bar" end
21
+ @file.property(:content).insync?("bar").should be_true
22
+ end
23
+
24
+ it "should be insync if the file exists and the content is right" do
25
+ File.open(@path, "w") do |f| f.puts "foo" end
26
+ @file.property(:content).insync?("foo").should be_true
27
+ end
28
+
29
+ it "should not be insync if the file does not exist" do
30
+ @file.property(:content).insync?(:nil).should be_false
31
+ end
32
+ end
33
+
34
+ describe "when specifying a source" do
35
+ before do
36
+ @file[:source] = "/bar"
37
+ end
38
+
39
+ it "should raise if source doesn't exist" do
40
+ @file.property(:source).expects(:found?).returns(false)
41
+ lambda { @file.retrieve }.should raise_error(Puppet::Error)
42
+ end
43
+
44
+ it "should have a checksum type of md5 and warn if retrieving with mtime" do
45
+ File.open(@path, "w") do |f| f.puts "foo" end
46
+ @file.property(:checksum).expects(:warning).with("Files with source set must use md5 as checksum. Forcing to md5 from %s for %s" % [:mtime, @path])
47
+ @file[:checksum] = :mtime
48
+ @file.property(:checksum).checktype.should == :md5
49
+ @file.property(:checksum).retrieve.should == "{md5}d3b07384d113edec49eaa6238ad5ff00"
50
+ end
51
+
52
+ it "should have a checksum type of md5 and warn if retrieving with md5lite" do
53
+ File.open(@path, "w") do |f| f.puts "foo" end
54
+ @file.property(:checksum).expects(:warning).with("Files with source set must use md5 as checksum. Forcing to md5 from %s for %s" % [:md5lite, @path])
55
+ @file[:checksum] = :md5lite
56
+ @file.property(:checksum).checktype.should == :md5
57
+ @file.property(:checksum).retrieve.should == "{md5}d3b07384d113edec49eaa6238ad5ff00"
58
+ end
59
+
60
+
61
+ it "should have a checksum type of md5 if getsum called with mtime" do
62
+ File.open(@path, "w") do |f| f.puts "foo" end
63
+ @file[:checksum] = :md5
64
+ @file.property(:checksum).checktype.should == :md5
65
+ @file.property(:checksum).getsum(:mtime).should == "{md5}d3b07384d113edec49eaa6238ad5ff00"
66
+ end
67
+
68
+ it "should not warn if sumtype set to md5" do
69
+ File.open(@path, "w") do |f| f.puts "foo" end
70
+ @file.property(:checksum).expects(:warning).never
71
+ @file[:checksum] = :md5
72
+ @file.property(:checksum).checktype.should == :md5
73
+ @file.property(:checksum).retrieve.should == "{md5}d3b07384d113edec49eaa6238ad5ff00"
74
+ end
75
+
76
+ end
77
+
78
+ describe "when retrieving remote files" do
79
+ before do
80
+ @filesource = Puppet::Type::File::FileSource.new
81
+ @filesource.server = mock 'fileserver'
82
+
83
+ @file.stubs(:uri2obj).returns(@filesource)
84
+
85
+ @file[:source] = "puppet:///test"
86
+ end
87
+
88
+ it "should fail without writing if it cannot retrieve remote contents" do
89
+ # create the file, because we only get the problem when it starts
90
+ # out absent.
91
+ File.open(@file[:path], "w") { |f| f.puts "a" }
92
+ @file.expects(:write).never
93
+
94
+ @filesource.server.stubs(:describe).returns("493\tfile\t100\t0\t{md5}3f5fef3bddbc4398c46a7bd7ba7b3af7")
95
+ @filesource.server.stubs(:retrieve).raises(RuntimeError)
96
+ @file.property(:source).retrieve
97
+ lambda { @file.property(:source).sync }.should raise_error(Puppet::Error)
98
+ end
99
+
100
+ it "should fail if it cannot describe remote contents" do
101
+ @filesource.server.stubs(:describe).raises(Puppet::Network::XMLRPCClientError.new("Testing"))
102
+ lambda { @file.retrieve }.should raise_error(Puppet::Error)
103
+ end
104
+
105
+ it "should fail during eval_generate if no remote sources exist" do
106
+ file = Puppet::Type.type(:file).create :path => "/foobar", :source => "/this/file/does/not/exist", :recurse => true
107
+
108
+ lambda { file.eval_generate }.should raise_error(Puppet::Error)
109
+ end
110
+ end
111
+
112
+ describe "when managing links" do
113
+ require 'puppettest/support/assertions'
114
+ include PuppetTest
115
+ require 'tempfile'
116
+
117
+ before do
118
+ @basedir = tempfile
119
+ Dir.mkdir(@basedir)
120
+ @file = File.join(@basedir, "file")
121
+ @link = File.join(@basedir, "link")
122
+
123
+ File.open(@file, "w", 0644) { |f| f.puts "yayness"; f.flush }
124
+ File.symlink(@file, @link)
125
+
126
+ @resource = Puppet.type(:file).create(
127
+ :path => @link,
128
+ :mode => "755"
129
+ )
130
+ @catalog = Puppet::Node::Catalog.new
131
+ @catalog.add_resource @resource
132
+ end
133
+
134
+ after do
135
+ remove_tmp_files
136
+ end
137
+
138
+ it "should default to managing the link" do
139
+ @catalog.apply
140
+ # I convert them to strings so they display correctly if there's an error.
141
+ ("%o" % (File.stat(@file).mode & 007777)).should == "%o" % 0644
142
+ end
143
+
144
+ it "should be able to follow links" do
145
+ @resource[:links] = :follow
146
+ @catalog.apply
147
+
148
+ ("%o" % (File.stat(@file).mode & 007777)).should == "%o" % 0755
149
+ end
150
+ end
151
+
152
+ after do
153
+ Puppet::Type::File.clear
154
+ end
155
+ end