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,37 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.dirname(__FILE__) + '/../../spec_helper'
4
+
5
+ require 'puppet/node/environment'
6
+
7
+ describe Puppet::Node::Environment do
8
+ it "should use the default environment if no name is provided while initializing an environment" do
9
+ Puppet.settings.expects(:value).with(:environment).returns("one")
10
+ Puppet::Node::Environment.new().name.should == :one
11
+ end
12
+
13
+ it "should treat environment instances as singletons" do
14
+ Puppet::Node::Environment.new("one").should equal(Puppet::Node::Environment.new("one"))
15
+ end
16
+
17
+ it "should treat an environment specified as names or strings as equivalent" do
18
+ Puppet::Node::Environment.new(:one).should equal(Puppet::Node::Environment.new("one"))
19
+ end
20
+ end
21
+
22
+ describe Puppet::Node::Environment, " when modeling a specific environment" do
23
+ it "should have a method for returning the environment name" do
24
+ Puppet::Node::Environment.new("testing").name.should == :testing
25
+ end
26
+
27
+ it "should provide an array-like accessor method for returning any environment-specific setting" do
28
+ env = Puppet::Node::Environment.new("testing")
29
+ env.should respond_to(:[])
30
+ end
31
+
32
+ it "should ask the Puppet settings instance for the setting qualified with the environment name" do
33
+ Puppet.settings.expects(:value).with("myvar", :testing).returns("myval")
34
+ env = Puppet::Node::Environment.new("testing")
35
+ env["myvar"].should == "myval"
36
+ end
37
+ end
@@ -0,0 +1,44 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.dirname(__FILE__) + '/../../spec_helper'
4
+
5
+ require 'puppet/node/facts'
6
+
7
+ describe Puppet::Node::Facts, " when indirecting" do
8
+ before do
9
+ @indirection = stub 'indirection', :request => mock('request'), :name => :facts
10
+
11
+ # We have to clear the cache so that the facts ask for our indirection stub,
12
+ # instead of anything that might be cached.
13
+ Puppet::Indirector::Indirection.clear_cache
14
+ @facts = Puppet::Node::Facts.new("me", "one" => "two")
15
+ end
16
+
17
+ it "should redirect to the specified fact store for retrieval" do
18
+ Puppet::Node::Facts.stubs(:indirection).returns(@indirection)
19
+ @indirection.expects(:find)
20
+ Puppet::Node::Facts.find(:my_facts)
21
+ end
22
+
23
+ it "should redirect to the specified fact store for storage" do
24
+ Puppet::Node::Facts.stubs(:indirection).returns(@indirection)
25
+ @indirection.expects(:save)
26
+ @facts.save
27
+ end
28
+
29
+ it "should default to the 'facter' terminus" do
30
+ Puppet::Node::Facts.indirection.terminus_class.should == :facter
31
+ end
32
+
33
+ after do
34
+ mocha_verify
35
+ Puppet::Indirector::Indirection.clear_cache
36
+ end
37
+ end
38
+
39
+ describe Puppet::Node::Facts, " when storing and retrieving" do
40
+ it "should add metadata to the facts" do
41
+ facts = Puppet::Node::Facts.new("me", "one" => "two", "three" => "four")
42
+ facts.values[:_timestamp].should be_instance_of(Time)
43
+ end
44
+ end
@@ -0,0 +1,92 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # Created by Luke Kanies on 2007-9-22.
4
+ # Copyright (c) 2007. All rights reserved.
5
+
6
+ require File.dirname(__FILE__) + '/../../spec_helper'
7
+
8
+ require 'puppet/checksum'
9
+
10
+ describe Puppet::Checksum do
11
+ it "should have 'Checksum' and the checksum algorithm when converted to a string" do
12
+ inst = Puppet::Checksum.new("whatever", "md5")
13
+ inst.to_s.should == "Checksum<{md5}#{inst.checksum}>"
14
+ end
15
+
16
+ it "should convert algorithm names to symbols when they are set after checksum creation" do
17
+ sum = Puppet::Checksum.new("whatever")
18
+ sum.algorithm = "md5"
19
+ sum.algorithm.should == :md5
20
+ end
21
+
22
+ it "should return the checksum as the name" do
23
+ sum = Puppet::Checksum.new("whatever")
24
+ sum.checksum.should == sum.name
25
+ end
26
+ end
27
+
28
+ describe Puppet::Checksum, " when initializing" do
29
+ before do
30
+ @content = "this is some content"
31
+ @sum = Puppet::Checksum.new(@content)
32
+ end
33
+
34
+ it "should require content" do
35
+ proc { Puppet::Checksum.new(nil) }.should raise_error(ArgumentError)
36
+ end
37
+
38
+ it "should set the content appropriately" do
39
+ @sum.content.should == @content
40
+ end
41
+
42
+ it "should calculate the checksum" do
43
+ require 'digest/md5'
44
+ Digest::MD5.expects(:hexdigest).with(@content).returns(:mychecksum)
45
+ @sum.checksum.should == :mychecksum
46
+ end
47
+
48
+ it "should not calculate the checksum until it is asked for" do
49
+ require 'digest/md5'
50
+ Digest::MD5.expects(:hexdigest).never
51
+ sum = Puppet::Checksum.new(@content, :md5)
52
+ end
53
+
54
+ it "should remove the old checksum value if the algorithm is changed" do
55
+ Digest::MD5.expects(:hexdigest).with(@content).returns(:oldsum)
56
+ oldsum = @sum.checksum
57
+ @sum.algorithm = :sha1
58
+ Digest::SHA1.expects(:hexdigest).with(@content).returns(:newsum)
59
+ @sum.checksum.should == :newsum
60
+ end
61
+
62
+ it "should default to 'md5' as the checksum algorithm if the algorithm is not in the name" do
63
+ @sum.algorithm.should == :md5
64
+ end
65
+
66
+ it "should support specifying the algorithm during initialization" do
67
+ sum = Puppet::Checksum.new(@content, :sha1)
68
+ sum.algorithm.should == :sha1
69
+ end
70
+
71
+ it "should fail when an unsupported algorithm is used" do
72
+ proc { Puppet::Checksum.new(@content, :nope) }.should raise_error(ArgumentError)
73
+ end
74
+ end
75
+
76
+ describe Puppet::Checksum, " when using back-ends" do
77
+ it "should redirect using Puppet::Indirector" do
78
+ Puppet::Indirector::Indirection.instance(:checksum).model.should equal(Puppet::Checksum)
79
+ end
80
+
81
+ it "should have a :save instance method" do
82
+ Puppet::Checksum.new("mysum").should respond_to(:save)
83
+ end
84
+
85
+ it "should respond to :find" do
86
+ Puppet::Checksum.should respond_to(:find)
87
+ end
88
+
89
+ it "should respond to :destroy" do
90
+ Puppet::Checksum.should respond_to(:destroy)
91
+ end
92
+ end
@@ -0,0 +1,210 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # Created by Luke Kanies on 2007-9-12.
4
+ # Copyright (c) 2006. All rights reserved.
5
+
6
+ require File.dirname(__FILE__) + '/../../spec_helper'
7
+
8
+ require 'puppet/pgraph'
9
+ require 'puppet/util/graph'
10
+
11
+ class Container
12
+ include Puppet::Util::Graph
13
+ include Enumerable
14
+ attr_accessor :name
15
+ def each
16
+ @children.each do |c| yield c end
17
+ end
18
+
19
+ def initialize(name, ary)
20
+ @name = name
21
+ @children = ary
22
+ end
23
+
24
+ def push(*ary)
25
+ ary.each { |c| @children.push(c)}
26
+ end
27
+
28
+ def to_s
29
+ @name
30
+ end
31
+ end
32
+
33
+ describe Puppet::PGraph do
34
+ before do
35
+ @graph = Puppet::PGraph.new
36
+ end
37
+
38
+ it "should correctly clear vertices and edges when asked" do
39
+ @graph.add_edge("a", "b")
40
+ @graph.add_vertex "c"
41
+ @graph.clear
42
+ @graph.vertices.should be_empty
43
+ @graph.edges.should be_empty
44
+ end
45
+ end
46
+
47
+ describe Puppet::PGraph, " when matching edges" do
48
+ before do
49
+ @graph = Puppet::PGraph.new
50
+ @event = Puppet::Transaction::Event.new(:yay, "a")
51
+ @none = Puppet::Transaction::Event.new(:NONE, "a")
52
+
53
+ @edges = {}
54
+ @edges["a/b"] = Puppet::Relationship.new("a", "b", {:event => :yay, :callback => :refresh})
55
+ @edges["a/c"] = Puppet::Relationship.new("a", "c", {:event => :yay, :callback => :refresh})
56
+ @graph.add_edge(@edges["a/b"])
57
+ end
58
+
59
+ it "should match edges whose source matches the source of the event" do
60
+ @graph.matching_edges([@event]).should == [@edges["a/b"]]
61
+ end
62
+
63
+ it "should match always match nothing when the event is :NONE" do
64
+ @graph.matching_edges([@none]).should be_empty
65
+ end
66
+
67
+ it "should match multiple edges" do
68
+ @graph.add_edge(@edges["a/c"])
69
+ edges = @graph.matching_edges([@event])
70
+ edges.should be_include(@edges["a/b"])
71
+ edges.should be_include(@edges["a/c"])
72
+ end
73
+ end
74
+
75
+ describe Puppet::PGraph, " when determining dependencies" do
76
+ before do
77
+ @graph = Puppet::PGraph.new
78
+
79
+ @graph.add_edge("a", "b")
80
+ @graph.add_edge("a", "c")
81
+ @graph.add_edge("b", "d")
82
+ end
83
+
84
+ it "should find all dependents when they are on multiple levels" do
85
+ @graph.dependents("a").sort.should == %w{b c d}.sort
86
+ end
87
+
88
+ it "should find single dependents" do
89
+ @graph.dependents("b").sort.should == %w{d}.sort
90
+ end
91
+
92
+ it "should return an empty array when there are no dependents" do
93
+ @graph.dependents("c").sort.should == [].sort
94
+ end
95
+
96
+ it "should find all dependencies when they are on multiple levels" do
97
+ @graph.dependencies("d").sort.should == %w{a b}
98
+ end
99
+
100
+ it "should find single dependencies" do
101
+ @graph.dependencies("c").sort.should == %w{a}
102
+ end
103
+
104
+ it "should return an empty array when there are no dependencies" do
105
+ @graph.dependencies("a").sort.should == []
106
+ end
107
+ end
108
+
109
+ describe Puppet::PGraph, " when splicing the relationship graph" do
110
+ def container_graph
111
+ @one = Container.new("one", %w{a b})
112
+ @two = Container.new("two", ["c", "d"])
113
+ @three = Container.new("three", ["i", "j"])
114
+ @middle = Container.new("middle", ["e", "f", @two])
115
+ @top = Container.new("top", ["g", "h", @middle, @one, @three])
116
+ @empty = Container.new("empty", [])
117
+
118
+ @contgraph = @top.to_graph
119
+
120
+ # We have to add the container to the main graph, else it won't
121
+ # be spliced in the dependency graph.
122
+ @contgraph.add_vertex(@empty)
123
+ end
124
+
125
+ def dependency_graph
126
+ @depgraph = Puppet::PGraph.new
127
+ @contgraph.vertices.each do |v|
128
+ @depgraph.add_vertex(v)
129
+ end
130
+
131
+ # We have to specify a relationship to our empty container, else it
132
+ # never makes it into the dep graph in the first place.
133
+ {@one => @two, "f" => "c", "h" => @middle, "c" => @empty}.each do |source, target|
134
+ @depgraph.add_edge(source, target, :callback => :refresh)
135
+ end
136
+ end
137
+
138
+ def splice
139
+ @depgraph.splice!(@contgraph, Container)
140
+ end
141
+
142
+ before do
143
+ container_graph
144
+ dependency_graph
145
+ splice
146
+ end
147
+
148
+ # This is the real heart of splicing -- replacing all containers in
149
+ # our relationship and exploding their relationships so that each
150
+ # relationship to a container gets copied to all of its children.
151
+ it "should remove all Container objects from the dependency graph" do
152
+ @depgraph.vertices.find_all { |v| v.is_a?(Container) }.should be_empty
153
+ end
154
+
155
+ it "should add container relationships to contained objects" do
156
+ @contgraph.leaves(@middle).each do |leaf|
157
+ @depgraph.should be_edge("h", leaf)
158
+ end
159
+ end
160
+
161
+ it "should explode container-to-container relationships, making edges between all respective contained objects" do
162
+ @one.each do |oobj|
163
+ @two.each do |tobj|
164
+ @depgraph.should be_edge(oobj, tobj)
165
+ end
166
+ end
167
+ end
168
+
169
+ it "should no longer contain anything but the non-container objects" do
170
+ @depgraph.vertices.find_all { |v| ! v.is_a?(String) }.should be_empty
171
+ end
172
+
173
+ it "should copy labels" do
174
+ @depgraph.edges.each do |edge|
175
+ edge.label.should == {:callback => :refresh}
176
+ end
177
+ end
178
+
179
+ it "should not add labels to edges that have none" do
180
+ @depgraph.add_edge(@two, @three)
181
+ splice
182
+ @depgraph.edge_label("c", "i").should == {}
183
+ end
184
+
185
+ it "should copy labels over edges that have none" do
186
+ @depgraph.add_edge("c", @three, {:callback => :refresh})
187
+ splice
188
+ # And make sure the label got copied.
189
+ @depgraph.edge_label("c", "i").should == {:callback => :refresh}
190
+ end
191
+
192
+ it "should not replace a label with a nil label" do
193
+ # Lastly, add some new label-less edges and make sure the label stays.
194
+ @depgraph.add_edge(@middle, @three)
195
+ @depgraph.add_edge("c", @three, {:callback => :refresh})
196
+ splice
197
+ @depgraph.edge_label("c", "i").should == {:callback => :refresh}
198
+ end
199
+
200
+ it "should copy labels to all created edges" do
201
+ @depgraph.add_edge(@middle, @three)
202
+ @depgraph.add_edge("c", @three, {:callback => :refresh})
203
+ splice
204
+ @three.each do |child|
205
+ edge = Puppet::Relationship.new("c", child)
206
+ @depgraph.should be_edge(edge.source, edge.target)
207
+ @depgraph.edge_label(edge.source, edge.target).should == {:callback => :refresh}
208
+ end
209
+ end
210
+ end
@@ -0,0 +1,33 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.dirname(__FILE__) + '/../../spec_helper'
4
+
5
+ require 'puppet/transaction'
6
+
7
+ describe Puppet::Transaction, " when determining tags" do
8
+ before do
9
+ @config = Puppet::Node::Catalog.new
10
+ @transaction = Puppet::Transaction.new(@config)
11
+ end
12
+
13
+ it "should default to the tags specified in the :tags setting" do
14
+ Puppet.expects(:[]).with(:tags).returns("one")
15
+ @transaction.tags.should == %w{one}
16
+ end
17
+
18
+ it "should split tags based on ','" do
19
+ Puppet.expects(:[]).with(:tags).returns("one,two")
20
+ @transaction.tags.should == %w{one two}
21
+ end
22
+
23
+ it "should use any tags set after creation" do
24
+ Puppet.expects(:[]).with(:tags).never
25
+ @transaction.tags = %w{one two}
26
+ @transaction.tags.should == %w{one two}
27
+ end
28
+
29
+ it "should always convert assigned tags to an array" do
30
+ @transaction.tags = "one::two"
31
+ @transaction.tags.should == %w{one::two}
32
+ end
33
+ end
@@ -0,0 +1,172 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.dirname(__FILE__) + '/../../spec_helper'
4
+
5
+ describe Puppet::TransBucket do
6
+ before do
7
+ @bucket = Puppet::TransBucket.new
8
+ end
9
+
10
+ it "should be able to produce a RAL component" do
11
+ @bucket.name = "luke"
12
+ @bucket.type = "user"
13
+
14
+ resource = nil
15
+ proc { resource = @bucket.to_type }.should_not raise_error
16
+ resource.should be_instance_of(Puppet::Type::Component)
17
+ resource.title.should == "User[luke]"
18
+ end
19
+
20
+ it "should accept TransObjects into its children list" do
21
+ object = Puppet::TransObject.new("luke", "user")
22
+ proc { @bucket.push(object) }.should_not raise_error
23
+ @bucket.each do |o|
24
+ o.should equal(object)
25
+ end
26
+ end
27
+
28
+ it "should accept TransBuckets into its children list" do
29
+ object = Puppet::TransBucket.new()
30
+ proc { @bucket.push(object) }.should_not raise_error
31
+ @bucket.each do |o|
32
+ o.should equal(object)
33
+ end
34
+ end
35
+
36
+ it "should refuse to accept any children that are not TransObjects or TransBuckets" do
37
+ proc { @bucket.push "a test" }.should raise_error
38
+ end
39
+
40
+ it "should return use 'node' as the type and the provided name as the title if only a type is provided" do
41
+ @bucket.type = "mystuff"
42
+ @bucket.to_ref.should == "Node[mystuff]"
43
+ end
44
+
45
+ it "should return use 'component' as the type and the provided type as the title if only a name is provided" do
46
+ @bucket.name = "mystuff"
47
+ @bucket.to_ref.should == "Class[mystuff]"
48
+ end
49
+
50
+ it "should return nil as its reference when type and name are missing" do
51
+ @bucket.to_ref.should be_nil
52
+ end
53
+
54
+ it "should return the title as its reference" do
55
+ @bucket.name = "luke"
56
+ @bucket.type = "user"
57
+ @bucket.to_ref.should == "User[luke]"
58
+ end
59
+
60
+ it "should canonize resource references when the type is 'component'" do
61
+ @bucket.name = 'something'
62
+ @bucket.type = 'foo::bar'
63
+
64
+ @bucket.to_ref.should == "Foo::Bar[something]"
65
+ end
66
+ end
67
+
68
+ describe Puppet::TransBucket, " when generating a catalog" do
69
+ before do
70
+ @bottom = Puppet::TransBucket.new
71
+ @bottom.type = "fake"
72
+ @bottom.name = "bottom"
73
+ @bottomobj = Puppet::TransObject.new("bottom", "user")
74
+ @bottom.push @bottomobj
75
+
76
+ @middle = Puppet::TransBucket.new
77
+ @middle.type = "fake"
78
+ @middle.name = "middle"
79
+ @middleobj = Puppet::TransObject.new("middle", "user")
80
+ @middle.push(@middleobj)
81
+ @middle.push(@bottom)
82
+
83
+ @top = Puppet::TransBucket.new
84
+ @top.type = "fake"
85
+ @top.name = "top"
86
+ @topobj = Puppet::TransObject.new("top", "user")
87
+ @top.push(@topobj)
88
+ @top.push(@middle)
89
+
90
+ @users = %w{top middle bottom}
91
+ @fakes = %w{Fake[bottom] Fake[middle] Fake[top]}
92
+ end
93
+
94
+ after do
95
+ Puppet::Type.allclear
96
+ end
97
+
98
+ it "should convert all transportable objects to RAL resources" do
99
+ @catalog = @top.to_catalog
100
+ @users.each do |name|
101
+ @catalog.vertices.find { |r| r.class.name == :user and r.title == name }.should be_instance_of(Puppet::Type.type(:user))
102
+ end
103
+ end
104
+
105
+ it "should fail if any transportable resources fail to convert to RAL resources" do
106
+ @bottomobj.expects(:to_type).raises ArgumentError
107
+ lambda { @bottom.to_catalog }.should raise_error(ArgumentError)
108
+ end
109
+
110
+ it "should convert all transportable buckets to RAL components" do
111
+ @catalog = @top.to_catalog
112
+ @fakes.each do |name|
113
+ @catalog.vertices.find { |r| r.class.name == :component and r.title == name }.should be_instance_of(Puppet::Type.type(:component))
114
+ end
115
+ end
116
+
117
+ it "should add all resources to the graph's resource table" do
118
+ @catalog = @top.to_catalog
119
+ @catalog.resource("fake[top]").should equal(@top)
120
+ end
121
+
122
+ it "should finalize all resources" do
123
+ @catalog = @top.to_catalog
124
+ @catalog.vertices.each do |vertex| vertex.should be_finalized end
125
+ end
126
+
127
+ it "should only call to_type on each resource once" do
128
+ # We just raise exceptions here because we're not interested in
129
+ # what happens with the result, only that the method only
130
+ # gets called once.
131
+ resource = @topobj.to_type
132
+ @topobj.expects(:to_type).once.returns resource
133
+ @top.to_catalog
134
+ end
135
+
136
+ it "should set each TransObject's catalog before converting to a RAL resource" do
137
+ @middleobj.expects(:catalog=).with { |c| c.is_a?(Puppet::Node::Catalog) }
138
+ @top.to_catalog
139
+ end
140
+
141
+ it "should set each TransBucket's catalog before converting to a RAL resource" do
142
+ # each bucket is seen twice in the loop, so we have to handle the case where the config
143
+ # is set twice
144
+ @bottom.expects(:catalog=).with { |c| c.is_a?(Puppet::Node::Catalog) }.at_least_once
145
+ @top.to_catalog
146
+ end
147
+ end
148
+
149
+ describe Puppet::TransBucket, " when serializing" do
150
+ before do
151
+ @bucket = Puppet::TransBucket.new(%w{one two})
152
+ @bucket.name = "one"
153
+ @bucket.type = "two"
154
+ end
155
+
156
+ it "should be able to be dumped to yaml" do
157
+ proc { YAML.dump(@bucket) }.should_not raise_error
158
+ end
159
+
160
+ it "should dump YAML that produces an equivalent object" do
161
+ result = YAML.dump(@bucket)
162
+
163
+ newobj = YAML.load(result)
164
+ newobj.name.should == "one"
165
+ newobj.type.should == "two"
166
+ children = []
167
+ newobj.each do |o|
168
+ children << o
169
+ end
170
+ children.should == %w{one two}
171
+ end
172
+ end