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,116 @@
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/sslcertificates/monkey_patch'
9
+ require 'puppet/indirector/ssl_rsa/file'
10
+
11
+
12
+ describe Puppet::Indirector::SslRsa::File do
13
+
14
+ it "should be a subclass of the File terminus class" do
15
+ Puppet::Indirector::SslRsa::File.superclass.should equal(Puppet::Indirector::File)
16
+ end
17
+
18
+ it "should have documentation" do
19
+ Puppet::Indirector::SslRsa::File.doc.should be_instance_of(String)
20
+ end
21
+ end
22
+
23
+ describe Puppet::Indirector::SslRsa::File, " when choosing a path for a ca key" do
24
+ before do
25
+ @file = Puppet::Indirector::SslRsa::File.new
26
+ @name = :ca
27
+ end
28
+
29
+ it "should use the cadir" do
30
+ Puppet.settings.stubs(:value).with(:cadir).returns("/dir")
31
+ @file.path(@name).should =~ /^\/dir/
32
+ end
33
+
34
+ it "should use 'ca_key.pem' as the file name" do
35
+ @file.path(@name).should =~ /ca_key\.pem$/
36
+ end
37
+ end
38
+
39
+ describe Puppet::Indirector::SslRsa::File, " when choosing a path for a non-ca key" do
40
+ before do
41
+ @file = Puppet::Indirector::SslRsa::File.new
42
+ @name = :publickey
43
+ end
44
+
45
+ it "should use the publickeydir" do
46
+ Puppet.settings.stubs(:value).with(:publickeydir).returns("/dir")
47
+ @file.path(@name).should =~ /^\/dir/
48
+ end
49
+
50
+ it "should use the key name with the pem file extension" do
51
+ @file.path(@name).should =~ /#{@name}\.pem$/
52
+ end
53
+ end
54
+
55
+ describe Puppet::Indirector::SslRsa::File, " when saving" do
56
+ before do
57
+ @file = Puppet::Indirector::SslRsa::File.new
58
+
59
+ Puppet.settings.stubs(:value).with(:publickeydir).returns("/dir")
60
+ @key = stub "key", :name => "foo"
61
+ end
62
+
63
+ it "should store the rsa key to disk in pem format" do
64
+ @key.expects(:to_pem).returns(:data)
65
+ @path = "/dir/foo.pem"
66
+ filehandle = mock "filehandle"
67
+ File.expects(:open).with(@path, "w").yields(filehandle)
68
+ filehandle.expects(:print).with(:data)
69
+ @file.save(@key)
70
+ end
71
+ end
72
+
73
+ describe Puppet::Indirector::SslRsa::File, " when finding a key by name" do
74
+ before do
75
+ @file = Puppet::Indirector::SslRsa::File.new
76
+
77
+ Puppet.settings.stubs(:value).with(:publickeydir).returns("/dir")
78
+ @name = "foo"
79
+ end
80
+
81
+ it "should return the key as a key object on success" do
82
+ @path = "/dir/foo.pem"
83
+ FileTest.stubs(:exists?).with(@path).returns(true)
84
+ File.stubs(:read).with(@path).returns(:data)
85
+ OpenSSL::PKey::RSA.expects(:new).with(:data).returns(:mykey)
86
+ @file.find(@name).should == :mykey
87
+ end
88
+
89
+ it "should return 'nil' on failure" do
90
+ @path = "/dir/foo.pem"
91
+ FileTest.stubs(:exists?).with(@path).returns(false)
92
+ @file.find(@name).should == nil
93
+ end
94
+ end
95
+
96
+ describe Puppet::Indirector::SslRsa::File, " when removing a key" do
97
+ before do
98
+ @file = Puppet::Indirector::SslRsa::File.new
99
+
100
+ Puppet.settings.stubs(:value).with(:publickeydir).returns("/dir")
101
+ @name = "foo"
102
+ end
103
+
104
+ it "should remove the key from disk and return true" do
105
+ @path = "/dir/foo.pem"
106
+ FileTest.stubs(:exists?).with(@path).returns(true)
107
+ File.stubs(:unlink).with(@path).returns(true)
108
+ @file.destroy(@name).should == true
109
+ end
110
+
111
+ it "should return an exception on failure" do
112
+ @path = "/dir/foo.pem"
113
+ FileTest.stubs(:exists?).with(@path).returns(false)
114
+ @file.destroy(@name).should == nil
115
+ end
116
+ end
@@ -0,0 +1,245 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.dirname(__FILE__) + '/../../spec_helper'
4
+ require 'puppet/defaults'
5
+ require 'puppet/indirector'
6
+ require 'puppet/indirector/file'
7
+
8
+ describe Puppet::Indirector::Terminus do
9
+ before :each do
10
+ Puppet::Indirector::Terminus.stubs(:register_terminus_class)
11
+ @indirection = stub 'indirection', :name => :my_stuff, :register_terminus_type => nil
12
+ Puppet::Indirector::Indirection.stubs(:instance).with(:my_stuff).returns(@indirection)
13
+ @abstract_terminus = Class.new(Puppet::Indirector::Terminus) do
14
+ def self.to_s
15
+ "Testing::Abstract"
16
+ end
17
+ end
18
+ @terminus_class = Class.new(@abstract_terminus) do
19
+ def self.to_s
20
+ "MyStuff::TermType"
21
+ end
22
+ end
23
+ @terminus = @terminus_class.new
24
+ end
25
+
26
+ describe Puppet::Indirector::Terminus do
27
+
28
+ it "should provide a method for setting terminus class documentation" do
29
+ @terminus_class.should respond_to(:desc)
30
+ end
31
+
32
+ it "should support a class-level name attribute" do
33
+ @terminus_class.should respond_to(:name)
34
+ end
35
+
36
+ it "should support a class-level indirection attribute" do
37
+ @terminus_class.should respond_to(:indirection)
38
+ end
39
+
40
+ it "should support a class-level terminus-type attribute" do
41
+ @terminus_class.should respond_to(:terminus_type)
42
+ end
43
+
44
+ it "should support a class-level model attribute" do
45
+ @terminus_class.should respond_to(:model)
46
+ end
47
+
48
+ it "should accept indirection instances as its indirection" do
49
+ indirection = stub 'indirection', :is_a? => true, :register_terminus_type => nil
50
+ proc { @terminus_class.indirection = indirection }.should_not raise_error
51
+ @terminus_class.indirection.should equal(indirection)
52
+ end
53
+
54
+ it "should look up indirection instances when only a name has been provided" do
55
+ indirection = mock 'indirection'
56
+ Puppet::Indirector::Indirection.expects(:instance).with(:myind).returns(indirection)
57
+ @terminus_class.indirection = :myind
58
+ @terminus_class.indirection.should equal(indirection)
59
+ end
60
+
61
+ it "should fail when provided a name that does not resolve to an indirection" do
62
+ Puppet::Indirector::Indirection.expects(:instance).with(:myind).returns(nil)
63
+ proc { @terminus_class.indirection = :myind }.should raise_error(ArgumentError)
64
+
65
+ # It shouldn't overwrite our existing one (or, more normally, it shouldn't set
66
+ # anything).
67
+ @terminus_class.indirection.should equal(@indirection)
68
+ end
69
+ end
70
+
71
+ describe Puppet::Indirector::Terminus, " when creating terminus classes" do
72
+ it "should associate the subclass with an indirection based on the subclass constant" do
73
+ @terminus.indirection.should equal(@indirection)
74
+ end
75
+
76
+ it "should set the subclass's type to the abstract terminus name" do
77
+ @terminus.terminus_type.should == :abstract
78
+ end
79
+
80
+ it "should set the subclass's name to the indirection name" do
81
+ @terminus.name.should == :term_type
82
+ end
83
+
84
+ it "should set the subclass's model to the indirection model" do
85
+ @indirection.expects(:model).returns :yay
86
+ @terminus.model.should == :yay
87
+ end
88
+ end
89
+
90
+ describe Puppet::Indirector::Terminus, " when a terminus instance" do
91
+
92
+ it "should return the class's name as its name" do
93
+ @terminus.name.should == :term_type
94
+ end
95
+
96
+ it "should return the class's indirection as its indirection" do
97
+ @terminus.indirection.should equal(@indirection)
98
+ end
99
+
100
+ it "should set the instances's type to the abstract terminus type's name" do
101
+ @terminus.terminus_type.should == :abstract
102
+ end
103
+
104
+ it "should set the instances's model to the indirection's model" do
105
+ @indirection.expects(:model).returns :yay
106
+ @terminus.model.should == :yay
107
+ end
108
+ end
109
+ end
110
+
111
+ # LAK: This could reasonably be in the Indirection instances, too. It doesn't make
112
+ # a whole heckuva lot of difference, except that with the instance loading in
113
+ # the Terminus base class, we have to have a check to see if we're already
114
+ # instance-loading a given terminus class type.
115
+ describe Puppet::Indirector::Terminus, " when managing terminus classes" do
116
+ it "should provide a method for registering terminus classes" do
117
+ Puppet::Indirector::Terminus.should respond_to(:register_terminus_class)
118
+ end
119
+
120
+ it "should provide a method for returning terminus classes by name and type" do
121
+ terminus = stub 'terminus_type', :name => :abstract, :indirection_name => :whatever
122
+ Puppet::Indirector::Terminus.register_terminus_class(terminus)
123
+ Puppet::Indirector::Terminus.terminus_class(:whatever, :abstract).should equal(terminus)
124
+ end
125
+
126
+ it "should set up autoloading for any terminus class types requested" do
127
+ Puppet::Indirector::Terminus.expects(:instance_load).with(:test2, "puppet/indirector/test2")
128
+ Puppet::Indirector::Terminus.terminus_class(:test2, :whatever)
129
+ end
130
+
131
+ it "should load terminus classes that are not found" do
132
+ # Set up instance loading; it would normally happen automatically
133
+ Puppet::Indirector::Terminus.instance_load :test1, "puppet/indirector/test1"
134
+
135
+ Puppet::Indirector::Terminus.instance_loader(:test1).expects(:load).with(:yay)
136
+ Puppet::Indirector::Terminus.terminus_class(:test1, :yay)
137
+ end
138
+
139
+ it "should fail when no indirection can be found" do
140
+ Puppet::Indirector::Indirection.expects(:instance).with(:my_indirection).returns(nil)
141
+
142
+ @abstract_terminus = Class.new(Puppet::Indirector::Terminus) do
143
+ def self.to_s
144
+ "Abstract"
145
+ end
146
+ end
147
+ proc {
148
+ @terminus = Class.new(@abstract_terminus) do
149
+ def self.to_s
150
+ "MyIndirection::TestType"
151
+ end
152
+ end
153
+ }.should raise_error(ArgumentError)
154
+ end
155
+
156
+ it "should register the terminus class with the terminus base class" do
157
+ Puppet::Indirector::Terminus.expects(:register_terminus_class).with do |type|
158
+ type.indirection_name == :my_indirection and type.name == :test_terminus
159
+ end
160
+ @indirection = stub 'indirection', :name => :my_indirection, :register_terminus_type => nil
161
+ Puppet::Indirector::Indirection.expects(:instance).with(:my_indirection).returns(@indirection)
162
+
163
+ @abstract_terminus = Class.new(Puppet::Indirector::Terminus) do
164
+ def self.to_s
165
+ "Abstract"
166
+ end
167
+ end
168
+
169
+ @terminus = Class.new(@abstract_terminus) do
170
+ def self.to_s
171
+ "MyIndirection::TestTerminus"
172
+ end
173
+ end
174
+ end
175
+ end
176
+
177
+ describe Puppet::Indirector::Terminus, " when parsing class constants for indirection and terminus names" do
178
+ before do
179
+ @subclass = mock 'subclass'
180
+ @subclass.stubs(:to_s).returns("TestInd::OneTwo")
181
+ @subclass.stubs(:mark_as_abstract_terminus)
182
+ Puppet::Indirector::Terminus.stubs(:register_terminus_class)
183
+ end
184
+
185
+ it "should fail when anonymous classes are used" do
186
+ proc { Puppet::Indirector::Terminus.inherited(Class.new) }.should raise_error(Puppet::DevError)
187
+ end
188
+
189
+ it "should use the last term in the constant for the terminus class name" do
190
+ @subclass.expects(:name=).with(:one_two)
191
+ @subclass.stubs(:indirection=)
192
+ Puppet::Indirector::Terminus.inherited(@subclass)
193
+ end
194
+
195
+ it "should convert the terminus name to a downcased symbol" do
196
+ @subclass.expects(:name=).with(:one_two)
197
+ @subclass.stubs(:indirection=)
198
+ Puppet::Indirector::Terminus.inherited(@subclass)
199
+ end
200
+
201
+ it "should use the second to last term in the constant for the indirection name" do
202
+ @subclass.expects(:indirection=).with(:test_ind)
203
+ @subclass.stubs(:name=)
204
+ @subclass.stubs(:terminus_type=)
205
+ Puppet::Indirector::File.inherited(@subclass)
206
+ end
207
+
208
+ it "should convert the indirection name to a downcased symbol" do
209
+ @subclass.expects(:indirection=).with(:test_ind)
210
+ @subclass.stubs(:name=)
211
+ @subclass.stubs(:terminus_type=)
212
+ Puppet::Indirector::File.inherited(@subclass)
213
+ end
214
+
215
+ it "should convert camel case to lower case with underscores as word separators" do
216
+ @subclass.expects(:name=).with(:one_two)
217
+ @subclass.stubs(:indirection=)
218
+
219
+ Puppet::Indirector::Terminus.inherited(@subclass)
220
+ end
221
+ end
222
+
223
+ describe Puppet::Indirector::Terminus, " when creating terminus class types" do
224
+ before do
225
+ Puppet::Indirector::Terminus.stubs(:register_terminus_class)
226
+ @subclass = Class.new(Puppet::Indirector::Terminus) do
227
+ def self.to_s
228
+ "Puppet::Indirector::Terminus::MyTermType"
229
+ end
230
+ end
231
+ end
232
+
233
+ it "should set the name of the abstract subclass to be its class constant" do
234
+ @subclass.name.should equal(:my_term_type)
235
+ end
236
+
237
+ it "should mark abstract terminus types as such" do
238
+ @subclass.should be_abstract_terminus
239
+ end
240
+
241
+ it "should not allow instances of abstract subclasses to be created" do
242
+ proc { @subclass.new }.should raise_error(Puppet::DevError)
243
+ end
244
+ end
245
+
@@ -0,0 +1,145 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.dirname(__FILE__) + '/../../spec_helper'
4
+
5
+ require 'puppet/indirector/yaml'
6
+
7
+ describe Puppet::Indirector::Yaml, " when choosing file location" do
8
+ before :each do
9
+ @indirection = stub 'indirection', :name => :my_yaml, :register_terminus_type => nil
10
+ Puppet::Indirector::Indirection.stubs(:instance).with(:my_yaml).returns(@indirection)
11
+ @store_class = Class.new(Puppet::Indirector::Yaml) do
12
+ def self.to_s
13
+ "MyYaml::MyType"
14
+ end
15
+ end
16
+ @store = @store_class.new
17
+
18
+ @subject = Object.new
19
+ @subject.metaclass.send(:attr_accessor, :name)
20
+ @subject.name = :me
21
+
22
+ @dir = "/what/ever"
23
+ Puppet.settings.stubs(:value).returns("fakesettingdata")
24
+ Puppet.settings.stubs(:value).with(:clientyamldir).returns(@dir)
25
+
26
+ @request = stub 'request', :key => :me, :instance => @subject
27
+ end
28
+
29
+ describe Puppet::Indirector::Yaml, " when choosing file location" do
30
+ it "should use the yamldir if the process name is 'puppetmasterd'" do
31
+ Puppet.settings.expects(:value).with(:name).returns "puppetmasterd"
32
+ Puppet.settings.expects(:value).with(:yamldir).returns "/main/yaml/dir"
33
+ @store.path(:me).should =~ %r{^/main/yaml/dir}
34
+ end
35
+
36
+ it "should use the client yamldir if the process name is not 'puppetmasterd'" do
37
+ Puppet.settings.expects(:value).with(:name).returns "cient"
38
+ Puppet.settings.expects(:value).with(:clientyamldir).returns "/client/yaml/dir"
39
+ @store.path(:me).should =~ %r{^/client/yaml/dir}
40
+ end
41
+
42
+ it "should store all files in a single file root set in the Puppet defaults" do
43
+ @store.path(:me).should =~ %r{^#{@dir}}
44
+ end
45
+
46
+ it "should use the terminus name for choosing the subdirectory" do
47
+ @store.path(:me).should =~ %r{^#{@dir}/my_yaml}
48
+ end
49
+
50
+ it "should use the object's name to determine the file name" do
51
+ @store.path(:me).should =~ %r{me.yaml$}
52
+ end
53
+ end
54
+
55
+ describe Puppet::Indirector::Yaml, " when storing objects as YAML" do
56
+ it "should only store objects that respond to :name" do
57
+ @request.stubs(:instance).returns Object.new
58
+ proc { @store.save(@request) }.should raise_error(ArgumentError)
59
+ end
60
+
61
+ it "should convert Ruby objects to YAML and write them to disk using a write lock" do
62
+ yaml = @subject.to_yaml
63
+ file = mock 'file'
64
+ path = @store.send(:path, @subject.name)
65
+ FileTest.expects(:exist?).with(File.dirname(path)).returns(true)
66
+ @store.expects(:writelock).with(path, 0660).yields(file)
67
+ file.expects(:print).with(yaml)
68
+
69
+ @store.save(@request)
70
+ end
71
+
72
+ it "should create the indirection subdirectory if it does not exist" do
73
+ yaml = @subject.to_yaml
74
+ file = mock 'file'
75
+ path = @store.send(:path, @subject.name)
76
+ dir = File.dirname(path)
77
+
78
+ FileTest.expects(:exist?).with(dir).returns(false)
79
+ Dir.expects(:mkdir).with(dir)
80
+
81
+ @store.expects(:writelock).yields(file)
82
+ file.expects(:print).with(yaml)
83
+
84
+ @store.save(@request)
85
+ end
86
+ end
87
+
88
+ describe Puppet::Indirector::Yaml, " when retrieving YAML" do
89
+ it "should read YAML in from disk using a read lock and convert it to Ruby objects" do
90
+ path = @store.send(:path, @subject.name)
91
+
92
+ yaml = @subject.to_yaml
93
+ FileTest.expects(:exist?).with(path).returns(true)
94
+
95
+ fh = mock 'filehandle'
96
+ @store.expects(:readlock).with(path).yields fh
97
+ fh.expects(:read).returns yaml
98
+
99
+ @store.find(@request).instance_variable_get("@name").should == :me
100
+ end
101
+
102
+ it "should fail coherently when the stored YAML is invalid" do
103
+ path = @store.send(:path, @subject.name)
104
+ FileTest.expects(:exist?).with(path).returns(true)
105
+
106
+ # Something that will fail in yaml
107
+ yaml = "--- !ruby/object:Hash"
108
+
109
+ fh = mock 'filehandle'
110
+ @store.expects(:readlock).yields fh
111
+ fh.expects(:read).returns yaml
112
+
113
+ proc { @store.find(@request) }.should raise_error(Puppet::Error)
114
+ end
115
+ end
116
+
117
+ describe Puppet::Indirector::Yaml, " when searching" do
118
+ it "should return an array of fact instances with one instance for each file when globbing *" do
119
+ @request = stub 'request', :key => "*", :instance => @subject
120
+ @one = mock 'one'
121
+ @two = mock 'two'
122
+ @store.expects(:base).returns "/my/yaml/dir"
123
+ Dir.expects(:glob).with(File.join("/my/yaml/dir", @store.class.indirection_name.to_s, @request.key)).returns(%w{one.yaml two.yaml})
124
+ YAML.expects(:load_file).with("one.yaml").returns @one;
125
+ YAML.expects(:load_file).with("two.yaml").returns @two;
126
+ @store.search(@request).should == [@one, @two]
127
+ end
128
+
129
+ it "should return an array containing a single instance of fact when globbing 'one*'" do
130
+ @request = stub 'request', :key => "one*", :instance => @subject
131
+ @one = mock 'one'
132
+ @store.expects(:base).returns "/my/yaml/dir"
133
+ Dir.expects(:glob).with(File.join("/my/yaml/dir", @store.class.indirection_name.to_s, @request.key)).returns(%w{one.yaml})
134
+ YAML.expects(:load_file).with("one.yaml").returns @one;
135
+ @store.search(@request).should == [@one]
136
+ end
137
+
138
+ it "should return an empty array when the glob doesn't match anything" do
139
+ @request = stub 'request', :key => "f*ilglobcanfail*", :instance => @subject
140
+ @store.expects(:base).returns "/my/yaml/dir"
141
+ Dir.expects(:glob).with(File.join("/my/yaml/dir", @store.class.indirection_name.to_s, @request.key)).returns([])
142
+ @store.search(@request).should == []
143
+ end
144
+ end
145
+ end