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,13 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.dirname(__FILE__) + '/../../../spec_helper'
4
+
5
+ require 'puppet/indirector/node/rest'
6
+
7
+ describe Puppet::Node::Rest do
8
+ before do
9
+ @searcher = Puppet::Node::Rest.new
10
+ end
11
+
12
+
13
+ end
@@ -0,0 +1,25 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.dirname(__FILE__) + '/../../../spec_helper'
4
+
5
+ require 'puppet/node'
6
+ require 'puppet/indirector/node/yaml'
7
+
8
+ describe Puppet::Node::Yaml do
9
+ it "should be a subclass of the Yaml terminus" do
10
+ Puppet::Node::Yaml.superclass.should equal(Puppet::Indirector::Yaml)
11
+ end
12
+
13
+ it "should have documentation" do
14
+ Puppet::Node::Yaml.doc.should_not be_nil
15
+ end
16
+
17
+ it "should be registered with the configuration store indirection" do
18
+ indirection = Puppet::Indirector::Indirection.instance(:node)
19
+ Puppet::Node::Yaml.indirection.should equal(indirection)
20
+ end
21
+
22
+ it "should have its name set to :node" do
23
+ Puppet::Node::Yaml.name.should == :yaml
24
+ end
25
+ end
@@ -0,0 +1,29 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.dirname(__FILE__) + '/../../spec_helper'
4
+ require 'puppet/indirector/plain'
5
+
6
+ describe Puppet::Indirector::Plain do
7
+ before do
8
+ Puppet::Indirector::Terminus.stubs(:register_terminus_class)
9
+ @model = mock 'model'
10
+ @indirection = stub 'indirection', :name => :mystuff, :register_terminus_type => nil, :model => @model
11
+ Puppet::Indirector::Indirection.stubs(:instance).returns(@indirection)
12
+
13
+ @plain_class = Class.new(Puppet::Indirector::Plain) do
14
+ def self.to_s
15
+ "Mystuff::Testing"
16
+ end
17
+ end
18
+
19
+ @searcher = @plain_class.new
20
+
21
+ @request = stub 'request', :key => "yay"
22
+ end
23
+
24
+ it "should return return an instance of the indirected model" do
25
+ object = mock 'object'
26
+ @model.expects(:new).with(@request.key).returns object
27
+ @searcher.find(@request).should equal(object)
28
+ end
29
+ end
@@ -0,0 +1,81 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # Created by Luke Kanies on 2007-9-23.
4
+ # Copyright (c) 2007. All rights reserved.
5
+
6
+ require File.dirname(__FILE__) + '/../../../spec_helper'
7
+
8
+ require 'puppet/indirector/report/processor'
9
+
10
+ describe Puppet::Transaction::Report::Processor do
11
+ before do
12
+ Puppet.settings.stubs(:use).returns(true)
13
+ end
14
+
15
+ it "should provide a method for saving reports" do
16
+ Puppet::Transaction::Report::Processor.new.should respond_to(:save)
17
+ end
18
+ end
19
+
20
+ describe Puppet::Transaction::Report::Processor, " when saving a report" do
21
+ before do
22
+ Puppet.settings.stubs(:use)
23
+ @reporter = Puppet::Transaction::Report::Processor.new
24
+ end
25
+
26
+ it "should not process the report if reports are set to 'none'" do
27
+ Puppet::Reports.expects(:report).never
28
+ Puppet.settings.expects(:value).with(:reports).returns("none")
29
+
30
+ request = stub 'request', :instance => mock("report")
31
+
32
+ @reporter.save(request)
33
+ end
34
+
35
+ it "should process the report with each configured report type" do
36
+ Puppet.settings.stubs(:value).with(:reports).returns("one,two")
37
+ @reporter.send(:reports).should == %w{one two}
38
+ end
39
+ end
40
+
41
+ describe Puppet::Transaction::Report::Processor, " when processing a report" do
42
+ before do
43
+ Puppet.settings.stubs(:value).with(:reports).returns("one")
44
+ Puppet.settings.stubs(:use)
45
+ @reporter = Puppet::Transaction::Report::Processor.new
46
+
47
+ @report_type = mock 'one'
48
+ @dup_report = mock 'dupe report'
49
+ @dup_report.stubs(:process)
50
+ @report = mock 'report'
51
+ @report.expects(:dup).returns(@dup_report)
52
+
53
+ @request = stub 'request', :instance => @report
54
+
55
+ Puppet::Reports.expects(:report).with("one").returns(@report_type)
56
+
57
+ @dup_report.expects(:extend).with(@report_type)
58
+ end
59
+
60
+ # LAK:NOTE This is stupid, because the code is so short it doesn't
61
+ # make sense to split it out, which means I just do the same test
62
+ # three times so the spec looks right.
63
+ it "should process a duplicate of the report, not the original" do
64
+ @reporter.save(@request)
65
+ end
66
+
67
+ it "should extend the report with the report type's module" do
68
+ @reporter.save(@request)
69
+ end
70
+
71
+ it "should call the report type's :process method" do
72
+ @dup_report.expects(:process)
73
+ @reporter.save(@request)
74
+ end
75
+
76
+ it "should not raise exceptions" do
77
+ Puppet.settings.stubs(:value).with(:trace).returns(false)
78
+ @dup_report.expects(:process).raises(ArgumentError)
79
+ proc { @reporter.save(@request) }.should_not raise_error
80
+ end
81
+ end
@@ -0,0 +1,87 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.dirname(__FILE__) + '/../../spec_helper'
4
+ require 'puppet/indirector/request'
5
+
6
+ describe Puppet::Indirector::Request do
7
+ describe "when initializing" do
8
+ it "should require an indirection name, a key, and a method" do
9
+ lambda { Puppet::Indirector::Request.new }.should raise_error(ArgumentError)
10
+ end
11
+
12
+ it "should use provided value as the key if it is a string" do
13
+ Puppet::Indirector::Request.new(:ind, :method, "mykey").key.should == "mykey"
14
+ end
15
+
16
+ it "should use provided value as the key if it is a symbol" do
17
+ Puppet::Indirector::Request.new(:ind, :method, :mykey).key.should == :mykey
18
+ end
19
+
20
+ it "should use the name of the provided instance as its key if an instance is provided as the key instead of a string" do
21
+ instance = mock 'instance', :name => "mykey"
22
+ request = Puppet::Indirector::Request.new(:ind, :method, instance)
23
+ request.key.should == "mykey"
24
+ request.instance.should equal(instance)
25
+ end
26
+
27
+ it "should support options specified as a hash" do
28
+ lambda { Puppet::Indirector::Request.new(:ind, :method, :key, :one => :two) }.should_not raise_error(ArgumentError)
29
+ end
30
+
31
+ it "should support nil options" do
32
+ lambda { Puppet::Indirector::Request.new(:ind, :method, :key, nil) }.should_not raise_error(ArgumentError)
33
+ end
34
+
35
+ it "should support unspecified options" do
36
+ lambda { Puppet::Indirector::Request.new(:ind, :method, :key) }.should_not raise_error(ArgumentError)
37
+ end
38
+
39
+ it "should fail if options are specified as anything other than nil or a hash" do
40
+ lambda { Puppet::Indirector::Request.new(:ind, :method, :key, [:one, :two]) }.should raise_error(ArgumentError)
41
+ end
42
+
43
+ it "should use an empty options hash if nil was provided" do
44
+ Puppet::Indirector::Request.new(:ind, :method, :key, nil).options.should == {}
45
+ end
46
+
47
+ it "should default to a nil node" do
48
+ Puppet::Indirector::Request.new(:ind, :method, :key, nil).node.should be_nil
49
+ end
50
+
51
+ it "should set its node attribute if provided in the options" do
52
+ Puppet::Indirector::Request.new(:ind, :method, :key, :node => "foo.com").node.should == "foo.com"
53
+ end
54
+
55
+ it "should default to a nil ip" do
56
+ Puppet::Indirector::Request.new(:ind, :method, :key, nil).ip.should be_nil
57
+ end
58
+
59
+ it "should set its ip attribute if provided in the options" do
60
+ Puppet::Indirector::Request.new(:ind, :method, :key, :ip => "192.168.0.1").ip.should == "192.168.0.1"
61
+ end
62
+
63
+ it "should default to being unauthenticated" do
64
+ Puppet::Indirector::Request.new(:ind, :method, :key, nil).should_not be_authenticated
65
+ end
66
+
67
+ it "should set be marked authenticated if configured in the options" do
68
+ Puppet::Indirector::Request.new(:ind, :method, :key, :authenticated => "eh").should be_authenticated
69
+ end
70
+
71
+ it "should keep its options as a hash even if a node is specified" do
72
+ Puppet::Indirector::Request.new(:ind, :method, :key, :node => "eh").options.should be_instance_of(Hash)
73
+ end
74
+
75
+ it "should keep its options as a hash even if another option is specified" do
76
+ Puppet::Indirector::Request.new(:ind, :method, :key, :foo => "bar").options.should be_instance_of(Hash)
77
+ end
78
+ end
79
+
80
+ it "should look use the Indirection class to return the appropriate indirection" do
81
+ ind = mock 'indirection'
82
+ Puppet::Indirector::Indirection.expects(:instance).with(:myind).returns ind
83
+ request = Puppet::Indirector::Request.new(:myind, :method, :key)
84
+
85
+ request.indirection.should equal(ind)
86
+ end
87
+ end
@@ -0,0 +1,372 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.dirname(__FILE__) + '/../../spec_helper'
4
+ require 'puppet/indirector/rest'
5
+
6
+ describe Puppet::Indirector::REST do
7
+ before do
8
+ Puppet::Indirector::Terminus.stubs(:register_terminus_class)
9
+ @model = stub('model')
10
+ @instance = stub('model instance')
11
+ @indirection = stub('indirection', :name => :mystuff, :register_terminus_type => nil, :model => @model)
12
+ Puppet::Indirector::Indirection.stubs(:instance).returns(@indirection)
13
+
14
+ @rest_class = Class.new(Puppet::Indirector::REST) do
15
+ def self.to_s
16
+ "This::Is::A::Test::Class"
17
+ end
18
+ end
19
+
20
+ @searcher = @rest_class.new
21
+ end
22
+
23
+ describe "when locating the REST connection" do
24
+ before do
25
+ Puppet.settings.stubs(:value).returns("whatever")
26
+ end
27
+
28
+ it "should return the :server setting as the host" do
29
+ Puppet.settings.expects(:value).with(:server).returns "myserver"
30
+ @searcher.rest_connection_details[:host].should == "myserver"
31
+ end
32
+
33
+ it "should return the :masterport (as an Integer) as the port" do
34
+ Puppet.settings.expects(:value).with(:masterport).returns "1234"
35
+ @searcher.rest_connection_details[:port].should == 1234
36
+ end
37
+ end
38
+
39
+ describe "when doing a network fetch" do
40
+ before :each do
41
+ Net::HTTP.stubs(:start).returns('result')
42
+ @details = { :host => '127.0.0.1', :port => 34343 }
43
+ @searcher.stubs(:rest_connection_details).returns(@details)
44
+ end
45
+
46
+ it "should accept a path" do
47
+ lambda { @search.network_fetch('foo') }.should_not raise_error(ArgumentError)
48
+ end
49
+
50
+ it "should require a path" do
51
+ lambda { @searcher.network_fetch }.should raise_error(ArgumentError)
52
+ end
53
+
54
+ it "should look up connection details" do
55
+ @searcher.expects(:rest_connection_details).returns(@details)
56
+ @searcher.network_fetch('foo')
57
+ end
58
+
59
+ it "should use the GET http method" do
60
+ @mock_result = stub('mock result', :body => 'result')
61
+ @mock_connection = mock('mock http connection', :get => @mock_result)
62
+ @searcher.stubs(:network).yields(@mock_connection)
63
+ @searcher.network_fetch('foo')
64
+ end
65
+
66
+ it "should use the appropriate remote server" do
67
+ Net::HTTP.expects(:start).with {|host, port| host == @details[:host] }
68
+ @searcher.network_fetch('foo')
69
+ end
70
+
71
+ it "should use the appropriate remote port" do
72
+ Net::HTTP.expects(:start).with {|host, port| port == @details[:port] }
73
+ @searcher.network_fetch('foo')
74
+ end
75
+
76
+ it "should use the provided path" do
77
+ @mock_result = stub('mock result', :body => 'result')
78
+ @mock_connection = stub('mock http connection')
79
+ @mock_connection.expects(:get).with('/foo').returns(@mock_result)
80
+ @searcher.stubs(:network).yields(@mock_connection)
81
+ @searcher.network_fetch('foo')
82
+ end
83
+
84
+ it "should return the results of the GET request" do
85
+ @searcher.network_fetch('foo').should == 'result'
86
+ end
87
+ end
88
+
89
+ describe "when doing a network delete" do
90
+ before :each do
91
+ Net::HTTP.stubs(:start).returns('result')
92
+ @details = { :host => '127.0.0.1', :port => 34343 }
93
+ @searcher.stubs(:rest_connection_details).returns(@details)
94
+ end
95
+
96
+ it "should accept a path" do
97
+ lambda { @search.network_delete('foo') }.should_not raise_error(ArgumentError)
98
+ end
99
+
100
+ it "should require a path" do
101
+ lambda { @searcher.network_delete }.should raise_error(ArgumentError)
102
+ end
103
+
104
+ it "should look up connection details" do
105
+ @searcher.expects(:rest_connection_details).returns(@details)
106
+ @searcher.network_delete('foo')
107
+ end
108
+
109
+ it "should use the DELETE http method" do
110
+ @mock_result = stub('mock result', :body => 'result')
111
+ @mock_connection = mock('mock http connection', :delete => @mock_result)
112
+ @searcher.stubs(:network).yields(@mock_connection)
113
+ @searcher.network_delete('foo')
114
+ end
115
+
116
+ it "should use the appropriate remote server" do
117
+ Net::HTTP.expects(:start).with {|host, port| host == @details[:host] }
118
+ @searcher.network_delete('foo')
119
+ end
120
+
121
+ it "should use the appropriate remote port" do
122
+ Net::HTTP.expects(:start).with {|host, port| port == @details[:port] }
123
+ @searcher.network_delete('foo')
124
+ end
125
+
126
+ it "should use the provided path" do
127
+ @mock_result = stub('mock result', :body => 'result')
128
+ @mock_connection = stub('mock http connection')
129
+ @mock_connection.expects(:delete).with('/foo').returns(@mock_result)
130
+ @searcher.stubs(:network).yields(@mock_connection)
131
+ @searcher.network_delete('foo')
132
+ end
133
+
134
+ it "should return the results of the DELETE request" do
135
+ @searcher.network_delete('foo').should == 'result'
136
+ end
137
+ end
138
+
139
+ describe "when doing a network put" do
140
+ before :each do
141
+ Net::HTTP.stubs(:start).returns('result')
142
+ @details = { :host => '127.0.0.1', :port => 34343 }
143
+ @data = { :foo => 'bar' }
144
+ @searcher.stubs(:rest_connection_details).returns(@details)
145
+ end
146
+
147
+ it "should accept a path and data" do
148
+ lambda { @search.network_put('foo', @data) }.should_not raise_error(ArgumentError)
149
+ end
150
+
151
+ it "should require a path and data" do
152
+ lambda { @searcher.network_put('foo') }.should raise_error(ArgumentError)
153
+ end
154
+
155
+ it "should look up connection details" do
156
+ @searcher.expects(:rest_connection_details).returns(@details)
157
+ @searcher.network_put('foo', @data)
158
+ end
159
+
160
+ it "should use the appropriate remote server" do
161
+ Net::HTTP.expects(:start).with {|host, port| host == @details[:host] }
162
+ @searcher.network_put('foo', @data)
163
+ end
164
+
165
+ it "should use the appropriate remote port" do
166
+ Net::HTTP.expects(:start).with {|host, port| port == @details[:port] }
167
+ @searcher.network_put('foo', @data)
168
+ end
169
+
170
+ it "should use the PUT http method" do
171
+ @mock_result = stub('mock result', :body => 'result')
172
+ @mock_connection = mock('mock http connection', :put => @mock_result)
173
+ @searcher.stubs(:network).yields(@mock_connection)
174
+ @searcher.network_put('foo', @data)
175
+ end
176
+
177
+ it "should use the provided path" do
178
+ @mock_result = stub('mock result', :body => 'result')
179
+ @mock_connection = stub('mock http connection')
180
+ @mock_connection.expects(:put).with {|path, data| path == '/foo' }.returns(@mock_result)
181
+ @searcher.stubs(:network).yields(@mock_connection)
182
+ @searcher.network_put('foo', @data)
183
+ end
184
+
185
+ it "should use the provided data" do
186
+ @mock_result = stub('mock result', :body => 'result')
187
+ @mock_connection = stub('mock http connection')
188
+ @mock_connection.expects(:put).with {|path, data| data == @data }.returns(@mock_result)
189
+ @searcher.stubs(:network).yields(@mock_connection)
190
+ @searcher.network_put('foo', @data)
191
+ end
192
+
193
+ it "should return the results of the PUT request" do
194
+ @searcher.network_put('foo', @data).should == 'result'
195
+ end
196
+ end
197
+
198
+ describe "when doing a find" do
199
+ before :each do
200
+ @result = { :foo => 'bar'}.to_yaml
201
+ @searcher.stubs(:network_fetch).returns(@result) # neuter the network connection
202
+ @model.stubs(:from_yaml).returns(@instance)
203
+
204
+ @request = stub 'request', :key => 'foo'
205
+ end
206
+
207
+ it "should look up the model instance over the network" do
208
+ @searcher.expects(:network_fetch).returns(@result)
209
+ @searcher.find(@request)
210
+ end
211
+
212
+ it "should look up the model instance using the named indirection" do
213
+ @searcher.expects(:network_fetch).with {|path| path =~ %r{^#{@indirection.name.to_s}/} }.returns(@result)
214
+ @searcher.find(@request)
215
+ end
216
+
217
+ it "should look up the model instance using the provided key" do
218
+ @searcher.expects(:network_fetch).with {|path| path =~ %r{/foo$} }.returns(@result)
219
+ @searcher.find(@request)
220
+ end
221
+
222
+ it "should deserialize result data to a Model instance" do
223
+ @model.expects(:from_yaml)
224
+ @searcher.find(@request)
225
+ end
226
+
227
+ it "should return the deserialized Model instance" do
228
+ @searcher.find(@request).should == @instance
229
+ end
230
+
231
+ it "should return nil when deserialized model instance is nil" do
232
+ @model.stubs(:from_yaml).returns(nil)
233
+ @searcher.find(@request).should be_nil
234
+ end
235
+
236
+ it "should generate an error when result data deserializes improperly" do
237
+ @model.stubs(:from_yaml).raises(ArgumentError)
238
+ lambda { @searcher.find(@request) }.should raise_error(ArgumentError)
239
+ end
240
+
241
+ it "should generate an error when result data specifies an error" do
242
+ @searcher.stubs(:network_fetch).returns(RuntimeError.new("bogus").to_yaml)
243
+ lambda { @searcher.find(@request) }.should raise_error(RuntimeError)
244
+ end
245
+ end
246
+
247
+ describe "when doing a search" do
248
+ before :each do
249
+ @result = [1, 2].to_yaml
250
+ @searcher.stubs(:network_fetch).returns(@result)
251
+ @model.stubs(:from_yaml).returns(@instance)
252
+
253
+ @request = stub 'request', :key => 'foo'
254
+ end
255
+
256
+ it "should look up the model data over the network" do
257
+ @searcher.expects(:network_fetch).returns(@result)
258
+ @searcher.search(@request)
259
+ end
260
+
261
+ it "should look up the model instance using the named indirection" do
262
+ @searcher.expects(:network_fetch).with {|path| path =~ %r{^#{@indirection.name.to_s}s/} }.returns(@result)
263
+ @searcher.search(@request)
264
+ end
265
+
266
+ it "should look up the model instance using the provided key" do
267
+ @searcher.expects(:network_fetch).with {|path| path =~ %r{/foo$} }.returns(@result)
268
+ @searcher.search(@request)
269
+ end
270
+
271
+ it "should deserialize result data into a list of Model instances" do
272
+ @model.expects(:from_yaml).at_least(2)
273
+ @searcher.search(@request)
274
+ end
275
+
276
+ it "should generate an error when result data deserializes improperly" do
277
+ @model.stubs(:from_yaml).raises(ArgumentError)
278
+ lambda { @searcher.search(@request) }.should raise_error(ArgumentError)
279
+ end
280
+
281
+ it "should generate an error when result data specifies an error" do
282
+ @searcher.stubs(:network_fetch).returns(RuntimeError.new("bogus").to_yaml)
283
+ lambda { @searcher.search(@request) }.should raise_error(RuntimeError)
284
+ end
285
+ end
286
+
287
+ describe "when doing a destroy" do
288
+ before :each do
289
+ @result = true.to_yaml
290
+ @searcher.stubs(:network_delete).returns(@result) # neuter the network connection
291
+ @model.stubs(:from_yaml).returns(@instance)
292
+
293
+ @request = stub 'request', :key => 'foo'
294
+ end
295
+
296
+ it "should look up the model instance over the network" do
297
+ @searcher.expects(:network_delete).returns(@result)
298
+ @searcher.destroy(@request)
299
+ end
300
+
301
+ it "should look up the model instance using the named indirection" do
302
+ @searcher.expects(:network_delete).with {|path| path =~ %r{^#{@indirection.name.to_s}/} }.returns(@result)
303
+ @searcher.destroy(@request)
304
+ end
305
+
306
+ it "should look up the model instance using the provided key" do
307
+ @searcher.expects(:network_delete).with {|path| path =~ %r{/foo$} }.returns(@result)
308
+ @searcher.destroy(@request)
309
+ end
310
+
311
+ it "should deserialize result data" do
312
+ YAML.expects(:load).with(@result)
313
+ @searcher.destroy(@request)
314
+ end
315
+
316
+ it "should return deserialized result data" do
317
+ @searcher.destroy(@request).should == true
318
+ end
319
+
320
+ it "should generate an error when result data specifies an error" do
321
+ @searcher.stubs(:network_delete).returns(RuntimeError.new("bogus").to_yaml)
322
+ lambda { @searcher.destroy(@request) }.should raise_error(RuntimeError)
323
+ end
324
+ end
325
+
326
+ describe "when doing a save" do
327
+ before :each do
328
+ @result = { :foo => 'bar'}.to_yaml
329
+ @searcher.stubs(:network_put).returns(@result) # neuter the network connection
330
+ @model.stubs(:from_yaml).returns(@instance)
331
+
332
+ @request = stub 'request', :instance => @instance
333
+ end
334
+
335
+ it "should save the model instance over the network" do
336
+ @searcher.expects(:network_put).returns(@result)
337
+ @searcher.save(@request)
338
+ end
339
+
340
+ it "should save the model instance using the named indirection" do
341
+ @searcher.expects(:network_put).with do |path, data|
342
+ path =~ %r{^#{@indirection.name.to_s}/} and
343
+ data == @instance.to_yaml
344
+ end.returns(@result)
345
+ @searcher.save(@request)
346
+ end
347
+
348
+ it "should deserialize result data to a Model instance" do
349
+ @model.expects(:from_yaml)
350
+ @searcher.save(@request)
351
+ end
352
+
353
+ it "should return the resulting deserialized Model instance" do
354
+ @searcher.save(@request).should == @instance
355
+ end
356
+
357
+ it "should return nil when deserialized model instance is nil" do
358
+ @model.stubs(:from_yaml).returns(nil)
359
+ @searcher.save(@request).should be_nil
360
+ end
361
+
362
+ it "should generate an error when result data deserializes improperly" do
363
+ @model.stubs(:from_yaml).raises(ArgumentError)
364
+ lambda { @searcher.save(@request) }.should raise_error(ArgumentError)
365
+ end
366
+
367
+ it "should generate an error when result data specifies an error" do
368
+ @searcher.stubs(:network_put).returns(RuntimeError.new("bogus").to_yaml)
369
+ lambda { @searcher.save(@request) }.should raise_error(RuntimeError)
370
+ end
371
+ end
372
+ end