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,124 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # Created by Luke Kanies on 2007-10-18.
4
+ # Copyright (c) 2007. All rights reserved.
5
+
6
+ require File.dirname(__FILE__) + '/../../spec_helper'
7
+
8
+ require 'puppet/file_serving/indirection_hooks'
9
+
10
+ describe Puppet::FileServing::IndirectionHooks do
11
+ before do
12
+ @object = Object.new
13
+ @object.extend(Puppet::FileServing::IndirectionHooks)
14
+
15
+ @request = stub 'request', :key => "http://myhost/blah", :options => {:node => "whatever"}
16
+ end
17
+
18
+ describe "when being used to select termini" do
19
+ it "should escape the key before parsing" do
20
+ uri = stub 'uri', :scheme => "puppet", :host => "blah", :path => "/something"
21
+ URI.expects(:escape).with("http://myhost/blah").returns("escaped_blah")
22
+ URI.expects(:parse).with("escaped_blah").returns(uri)
23
+ @object.select_terminus(@request)
24
+ end
25
+
26
+ it "should use the URI class to parse the key" do
27
+ uri = stub 'uri', :scheme => "puppet", :host => "blah", :path => "/something"
28
+ URI.expects(:parse).with("http://myhost/blah").returns(uri)
29
+ @object.select_terminus @request
30
+ end
31
+
32
+ it "should choose :rest when the protocol is 'puppet'" do
33
+ @request.stubs(:key).returns "puppet://host/module/file"
34
+ @object.select_terminus(@request).should == :rest
35
+ end
36
+
37
+ it "should choose :file_server when the protocol is 'puppetmounts' and the mount name is not 'modules'" do
38
+ modules = mock 'modules'
39
+ @object.stubs(:terminus).with(:modules).returns(modules)
40
+ modules.stubs(:find_module).returns(nil)
41
+
42
+ @request.stubs(:key).returns "puppetmounts://host/notmodules/file"
43
+
44
+ @object.select_terminus(@request).should == :file_server
45
+ end
46
+
47
+ it "should choose :file_server when no server name is provided, the process name is 'puppet', and the mount name is not 'modules'" do
48
+ modules = mock 'modules'
49
+ @object.stubs(:terminus).with(:modules).returns(modules)
50
+ modules.stubs(:find_module).returns(nil)
51
+
52
+ Puppet.settings.expects(:value).with(:name).returns("puppet")
53
+ @request.stubs(:key).returns "puppet:///notmodules/file"
54
+ @object.select_terminus(@request).should == :file_server
55
+ end
56
+
57
+ it "should choose :modules if it would normally choose :file_server but the mount name is 'modules'" do
58
+ @request.stubs(:key).returns "puppetmounts://host/modules/mymod/file"
59
+ @object.select_terminus(@request).should == :modules
60
+ end
61
+
62
+ it "should choose :modules if it would normally choose :file_server but a module exists with the mount name" do
63
+ modules = mock 'modules'
64
+
65
+ @object.expects(:terminus).with(:modules).returns(modules)
66
+ modules.expects(:find_module).with("mymod", @request.options[:node]).returns(:thing)
67
+
68
+ @request.stubs(:key).returns "puppetmounts://host/mymod/file"
69
+ @object.select_terminus(@request).should == :modules
70
+ end
71
+
72
+ it "should choose :rest when no server name is provided and the process name is not 'puppet'" do
73
+ Puppet.settings.expects(:value).with(:name).returns("puppetd")
74
+ @request.stubs(:key).returns "puppet:///module/file"
75
+ @object.select_terminus(@request).should == :rest
76
+ end
77
+
78
+ it "should choose :file when the protocol is 'file'" do
79
+ @request.stubs(:key).returns "file://host/module/file"
80
+ @object.select_terminus(@request).should == :file
81
+ end
82
+
83
+ it "should choose :file when the URI is a normal path name" do
84
+ @request.stubs(:key).returns "/module/file"
85
+ @object.select_terminus(@request).should == :file
86
+ end
87
+
88
+ # This is so that we only choose modules over mounts, not file
89
+ it "should choose :file when the protocol is 'file' and the fully qualified path starts with '/modules'" do
90
+ @request.stubs(:key).returns "/module/file"
91
+ @object.select_terminus(@request).should == :file
92
+ end
93
+
94
+ it "should fail when a protocol other than :puppet, :file, or :puppetmounts is used" do
95
+ @request.stubs(:key).returns "http:///module/file"
96
+ proc { @object.select_terminus(@request) }.should raise_error(ArgumentError)
97
+ end
98
+ end
99
+
100
+ describe "when looking for a module whose name matches the mount name" do
101
+ before do
102
+ @modules = mock 'modules'
103
+ @object.stubs(:terminus).with(:modules).returns(@modules)
104
+
105
+ @request.stubs(:key).returns "puppetmounts://host/mymod/file"
106
+ end
107
+
108
+ it "should use the modules terminus to look up the module" do
109
+ @modules.expects(:find_module).with("mymod", @request.options[:node])
110
+ @object.select_terminus @request
111
+ end
112
+
113
+ it "should pass the node name to the modules terminus" do
114
+ @modules.expects(:find_module).with("mymod", @request.options[:node])
115
+ @object.select_terminus @request
116
+ end
117
+
118
+ it "should log a deprecation warning if a module is found" do
119
+ @modules.expects(:find_module).with("mymod", @request.options[:node]).returns(:something)
120
+ Puppet.expects(:warning)
121
+ @object.select_terminus @request
122
+ end
123
+ end
124
+ end
@@ -0,0 +1,187 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.dirname(__FILE__) + '/../../spec_helper'
4
+
5
+ require 'puppet/file_serving/metadata'
6
+
7
+ describe Puppet::FileServing::Metadata do
8
+ it "should should be a subclass of FileBase" do
9
+ Puppet::FileServing::Metadata.superclass.should equal(Puppet::FileServing::FileBase)
10
+ end
11
+
12
+ it "should indirect file_metadata" do
13
+ Puppet::FileServing::Metadata.indirection.name.should == :file_metadata
14
+ end
15
+
16
+ it "should should include the IndirectionHooks module in its indirection" do
17
+ Puppet::FileServing::Metadata.indirection.metaclass.included_modules.should include(Puppet::FileServing::IndirectionHooks)
18
+ end
19
+ end
20
+
21
+ describe Puppet::FileServing::Metadata, " when finding the file to use for setting attributes" do
22
+ before do
23
+ @metadata = Puppet::FileServing::Metadata.new("my/path")
24
+
25
+ @full = "/base/path/my/path"
26
+
27
+ @metadata.path = @full
28
+
29
+ # Use a link because it's easier to test -- no checksumming
30
+ @stat = stub "stat", :uid => 10, :gid => 20, :mode => 0755, :ftype => "link"
31
+ end
32
+
33
+ it "should accept a base path path to which the file should be relative" do
34
+ File.expects(:lstat).with(@full).returns @stat
35
+ File.expects(:readlink).with(@full).returns "/what/ever"
36
+ @metadata.collect_attributes
37
+ end
38
+
39
+ it "should use the set base path if one is not provided" do
40
+ File.expects(:lstat).with(@full).returns @stat
41
+ File.expects(:readlink).with(@full).returns "/what/ever"
42
+ @metadata.collect_attributes()
43
+ end
44
+
45
+ it "should fail if a base path is neither set nor provided" do
46
+ proc { @metadata.collect_attributes() }.should raise_error(Errno::ENOENT)
47
+ end
48
+
49
+ it "should raise an exception if the file does not exist" do
50
+ File.expects(:lstat).with(@full).raises(Errno::ENOENT)
51
+ proc { @metadata.collect_attributes()}.should raise_error(Errno::ENOENT)
52
+ end
53
+ end
54
+
55
+ describe Puppet::FileServing::Metadata, " when collecting attributes" do
56
+ before do
57
+ @path = "/my/file"
58
+ # Use a real file mode, so we can validate the masking is done.
59
+ @stat = stub 'stat', :uid => 10, :gid => 20, :mode => 33261, :ftype => "file"
60
+ File.stubs(:lstat).returns(@stat)
61
+ @checksum = Digest::MD5.hexdigest("some content\n")
62
+ @metadata = Puppet::FileServing::Metadata.new("file", :path => "/my/file")
63
+ @metadata.stubs(:md5_file).returns(@checksum)
64
+ @metadata.collect_attributes
65
+ end
66
+
67
+ it "should be able to produce xmlrpc-style attribute information" do
68
+ @metadata.should respond_to(:attributes_with_tabs)
69
+ end
70
+
71
+ # LAK:FIXME This should actually change at some point
72
+ it "should set the owner by id" do
73
+ @metadata.owner.should be_instance_of(Fixnum)
74
+ end
75
+
76
+ # LAK:FIXME This should actually change at some point
77
+ it "should set the group by id" do
78
+ @metadata.group.should be_instance_of(Fixnum)
79
+ end
80
+
81
+ it "should set the owner to the file's current owner" do
82
+ @metadata.owner.should == 10
83
+ end
84
+
85
+ it "should set the group to the file's current group" do
86
+ @metadata.group.should == 20
87
+ end
88
+
89
+ it "should set the mode to the file's masked mode" do
90
+ @metadata.mode.should == 0755
91
+ end
92
+
93
+ it "should set the checksum to the file's current checksum" do
94
+ @metadata.checksum.should == "{md5}" + @checksum
95
+ end
96
+
97
+ describe "when managing files" do
98
+ it "should default to a checksum of type MD5" do
99
+ @metadata.checksum.should == "{md5}" + @checksum
100
+ end
101
+
102
+ it "should give a mtime checksum when checksum_type is set" do
103
+ time = Time.now
104
+ @metadata.checksum_type = "mtime"
105
+ @metadata.expects(:mtime_file).returns(@time)
106
+ @metadata.collect_attributes
107
+ @metadata.checksum.should == "{mtime}" + @time.to_s
108
+ end
109
+
110
+ it "should produce tab-separated mode, type, owner, group, and checksum for xmlrpc" do
111
+ @metadata.attributes_with_tabs.should == "#{0755.to_s}\tfile\t10\t20\t{md5}#{@checksum}"
112
+ end
113
+ end
114
+
115
+ describe "when managing directories" do
116
+ before do
117
+ @stat.stubs(:ftype).returns("directory")
118
+ @time = Time.now
119
+ @metadata.expects(:ctime_file).returns(@time)
120
+ end
121
+
122
+ it "should only use checksums of type 'ctime' for directories" do
123
+ @metadata.collect_attributes
124
+ @metadata.checksum.should == "{ctime}" + @time.to_s
125
+ end
126
+
127
+ it "should only use checksums of type 'ctime' for directories even if checksum_type set" do
128
+ @metadata.checksum_type = "mtime"
129
+ @metadata.expects(:mtime_file).never
130
+ @metadata.collect_attributes
131
+ @metadata.checksum.should == "{ctime}" + @time.to_s
132
+ end
133
+
134
+ it "should produce tab-separated mode, type, owner, group, and checksum for xmlrpc" do
135
+ @metadata.collect_attributes
136
+ @metadata.attributes_with_tabs.should == "#{0755.to_s}\tdirectory\t10\t20\t{ctime}#{@time.to_s}"
137
+ end
138
+ end
139
+
140
+ describe "when managing links" do
141
+ before do
142
+ @stat.stubs(:ftype).returns("link")
143
+ File.expects(:readlink).with("/my/file").returns("/path/to/link")
144
+ @metadata.collect_attributes
145
+ end
146
+
147
+ it "should read links instead of returning their checksums" do
148
+ @metadata.destination.should == "/path/to/link"
149
+ end
150
+
151
+ it "should produce tab-separated mode, type, owner, group, and destination for xmlrpc" do
152
+ @metadata.attributes_with_tabs.should == "#{0755.to_s}\tlink\t10\t20\t/path/to/link"
153
+ end
154
+ end
155
+ end
156
+
157
+ describe Puppet::FileServing::Metadata, " when pointing to a link" do
158
+ it "should store the destination of the link in :destination if links are :manage" do
159
+ file = Puppet::FileServing::Metadata.new("mykey", :links => :manage, :path => "/base/path/my/file")
160
+
161
+ File.expects(:lstat).with("/base/path/my/file").returns stub("stat", :uid => 1, :gid => 2, :ftype => "link", :mode => 0755)
162
+ File.expects(:readlink).with("/base/path/my/file").returns "/some/other/path"
163
+
164
+ file.collect_attributes
165
+ file.destination.should == "/some/other/path"
166
+ end
167
+
168
+ it "should not collect the checksum" do
169
+ file = Puppet::FileServing::Metadata.new("my/file", :links => :manage, :path => "/base/path/my/file")
170
+
171
+ File.expects(:lstat).with("/base/path/my/file").returns stub("stat", :uid => 1, :gid => 2, :ftype => "link", :mode => 0755)
172
+ File.expects(:readlink).with("/base/path/my/file").returns "/some/other/path"
173
+
174
+ file.collect_attributes
175
+ file.checksum.should be_nil
176
+ end
177
+ end
178
+
179
+ describe Puppet::FileServing::Metadata, " when converting from yaml" do
180
+ # LAK:FIXME This isn't in the right place, but we need some kind of
181
+ # control somewhere that requires that all REST connections only pull
182
+ # from the file-server, thus guaranteeing they go through our authorization
183
+ # hook.
184
+ it "should set the URI scheme to 'puppetmounts'" do
185
+ pending "We need to figure out where this should be"
186
+ end
187
+ end
@@ -0,0 +1,143 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.dirname(__FILE__) + '/../../spec_helper'
4
+ require 'puppet/file_serving/mount'
5
+
6
+ module FileServingMountTesting
7
+ def stub_facter(hostname)
8
+ Facter.stubs(:value).with("hostname").returns(hostname.sub(/\..+/, ''))
9
+ Facter.stubs(:value).with("domain").returns(hostname.sub(/^[^.]+\./, ''))
10
+ end
11
+ end
12
+
13
+ describe Puppet::FileServing::Mount do
14
+ it "should provide a method for clearing its cached host information" do
15
+ Puppet::FileServing::Mount.new("whatever").send(:localmap)
16
+ Puppet::FileServing::Mount.clear_cache
17
+ Puppet::FileServing::Mount.send(:class_variable_get, "@@localmap").should be_nil
18
+ end
19
+ end
20
+
21
+ describe Puppet::FileServing::Mount, " when initializing" do
22
+ it "should fail on non-alphanumeric name" do
23
+ proc { Puppet::FileServing::Mount.new("non alpha") }.should raise_error(ArgumentError)
24
+ end
25
+
26
+ it "should allow dashes in its name" do
27
+ Puppet::FileServing::Mount.new("non-alpha").name.should == "non-alpha"
28
+ end
29
+
30
+ it "should allow an optional path" do
31
+ Puppet::FileServing::Mount.new("name", "/").path.should == "/"
32
+ end
33
+ end
34
+
35
+ describe Puppet::FileServing::Mount, " when setting the path" do
36
+ before do
37
+ @mount = Puppet::FileServing::Mount.new("test")
38
+ @dir = "/this/path/does/not/exist"
39
+ end
40
+
41
+ it "should fail if the path is not a directory" do
42
+ FileTest.expects(:directory?).returns(false)
43
+ proc { @mount.path = @dir }.should raise_error(ArgumentError)
44
+ end
45
+
46
+ it "should fail if the path is not readable" do
47
+ FileTest.expects(:directory?).returns(true)
48
+ FileTest.expects(:readable?).returns(false)
49
+ proc { @mount.path = @dir }.should raise_error(ArgumentError)
50
+ end
51
+ end
52
+
53
+ describe Puppet::FileServing::Mount, " when finding files" do
54
+ include FileServingMountTesting
55
+
56
+ before do
57
+ FileTest.stubs(:directory?).returns(true)
58
+ FileTest.stubs(:readable?).returns(true)
59
+ @mount = Puppet::FileServing::Mount.new("test")
60
+ @host = "host.domain.com"
61
+ end
62
+
63
+ it "should fail if the mount path has not been set" do
64
+ proc { @mount.file_path("/blah") }.should raise_error(ArgumentError)
65
+ end
66
+
67
+ it "should replace incidences of %h in the path with the client's short name" do
68
+ @mount.path = "/dir/%h/yay"
69
+ @mount.path(@host).should == "/dir/host/yay"
70
+ end
71
+
72
+ it "should replace incidences of %H in the path with the client's fully qualified name" do
73
+ @mount.path = "/dir/%H/yay"
74
+ @mount.path(@host).should == "/dir/host.domain.com/yay"
75
+ end
76
+
77
+ it "should replace incidences of %d in the path with the client's domain name" do
78
+ @mount.path = "/dir/%d/yay"
79
+ @mount.path(@host).should == "/dir/domain.com/yay"
80
+ end
81
+
82
+ it "should perform all necessary replacements" do
83
+ @mount.path = "/%h/%d/%H"
84
+ @mount.path(@host).should == "/host/domain.com/host.domain.com"
85
+ end
86
+
87
+ it "should perform replacements on the base path" do
88
+ @mount.path = "/blah/%h"
89
+ @mount.file_path("/my/stuff", @host).should == "/blah/host/my/stuff"
90
+ end
91
+
92
+ it "should not perform replacements on the per-file path" do
93
+ @mount.path = "/blah"
94
+ @mount.file_path("/%h/stuff", @host).should == "/blah/%h/stuff"
95
+ end
96
+
97
+ it "should look for files relative to its base directory" do
98
+ @mount.path = "/blah"
99
+ @mount.file_path("/my/stuff", @host).should == "/blah/my/stuff"
100
+ end
101
+
102
+ it "should use local host information if no client data is provided" do
103
+ stub_facter("myhost.mydomain.com")
104
+ @mount.path = "/%h/%d/%H"
105
+ @mount.path().should == "/myhost/mydomain.com/myhost.mydomain.com"
106
+ end
107
+
108
+ after do
109
+ Puppet::FileServing::Mount.clear_cache
110
+ end
111
+ end
112
+
113
+ describe Puppet::FileServing::Mount, " when providing file paths" do
114
+ include FileServingMountTesting
115
+
116
+ before do
117
+ FileTest.stubs(:exists?).returns(true)
118
+ FileTest.stubs(:directory?).returns(true)
119
+ FileTest.stubs(:readable?).returns(true)
120
+ @mount = Puppet::FileServing::Mount.new("test", "/mount/%h")
121
+ stub_facter("myhost.mydomain.com")
122
+ @host = "host.domain.com"
123
+ end
124
+
125
+ it "should return nil if the file is absent" do
126
+ FileTest.stubs(:exists?).returns(false)
127
+ @mount.file("/my/path").should be_nil
128
+ end
129
+
130
+ it "should return the file path if the file is absent" do
131
+ FileTest.stubs(:exists?).with("/my/path").returns(true)
132
+ @mount.file("/my/path").should == "/mount/myhost/my/path"
133
+ end
134
+
135
+ it "should treat a nil file name as the path to the mount itself" do
136
+ FileTest.stubs(:exists?).returns(true)
137
+ @mount.file(nil).should == "/mount/myhost"
138
+ end
139
+
140
+ it "should use the client host name if provided in the options" do
141
+ @mount.file("/my/path", :node => @host).should == "/mount/host/my/path"
142
+ end
143
+ end