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,135 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.dirname(__FILE__) + '/../../../spec_helper'
4
+
5
+ require 'puppet/file_serving/configuration/parser'
6
+
7
+ describe Puppet::FileServing::Configuration::Parser do
8
+ it "should subclass the LoadedFile class" do
9
+ Puppet::FileServing::Configuration::Parser.superclass.should equal(Puppet::Util::LoadedFile)
10
+ end
11
+ end
12
+
13
+
14
+ module FSConfigurationParserTesting
15
+ def mock_file_content(content)
16
+ # We want an array, but we actually want our carriage returns on all of it.
17
+ lines = content.split("\n").collect { |l| l + "\n" }
18
+ @filehandle.stubs(:each).multiple_yields(*lines)
19
+ end
20
+ end
21
+
22
+ describe Puppet::FileServing::Configuration::Parser do
23
+ before :each do
24
+ @path = "/my/config.conf"
25
+ FileTest.stubs(:exists?).with(@path).returns(true)
26
+ FileTest.stubs(:readable?).with(@path).returns(true)
27
+ @filehandle = mock 'filehandle'
28
+ File.expects(:open).with(@path).yields(@filehandle)
29
+ @parser = Puppet::FileServing::Configuration::Parser.new(@path)
30
+ end
31
+
32
+ describe Puppet::FileServing::Configuration::Parser, " when parsing" do
33
+ include FSConfigurationParserTesting
34
+
35
+ before do
36
+ @parser.stubs(:add_modules_mount)
37
+ end
38
+
39
+ it "should allow comments" do
40
+ @filehandle.expects(:each).yields("# this is a comment\n")
41
+ proc { @parser.parse }.should_not raise_error
42
+ end
43
+
44
+ it "should allow blank lines" do
45
+ @filehandle.expects(:each).yields("\n")
46
+ proc { @parser.parse }.should_not raise_error
47
+ end
48
+
49
+ it "should create a new mount for each section in the configuration" do
50
+ mount1 = mock 'one'
51
+ mount2 = mock 'two'
52
+ Puppet::FileServing::Mount.expects(:new).with("one").returns(mount1)
53
+ Puppet::FileServing::Mount.expects(:new).with("two").returns(mount2)
54
+ mock_file_content "[one]\n[two]\n"
55
+ @parser.parse
56
+ end
57
+
58
+ # This test is almost the exact same as the previous one.
59
+ it "should return a hash of the created mounts" do
60
+ mount1 = mock 'one'
61
+ mount2 = mock 'two'
62
+ Puppet::FileServing::Mount.expects(:new).with("one").returns(mount1)
63
+ Puppet::FileServing::Mount.expects(:new).with("two").returns(mount2)
64
+ mock_file_content "[one]\n[two]\n"
65
+
66
+ @parser.parse.should == {"one" => mount1, "two" => mount2}
67
+ end
68
+
69
+ it "should only allow mount names that are alphanumeric plus dashes" do
70
+ mock_file_content "[a*b]\n"
71
+ proc { @parser.parse }.should raise_error(ArgumentError)
72
+ end
73
+
74
+ it "should fail if the value for path/allow/deny starts with an equals sign" do
75
+ mock_file_content "[one]\npath = /testing"
76
+ proc { @parser.parse }.should raise_error(ArgumentError)
77
+ end
78
+ end
79
+
80
+ describe Puppet::FileServing::Configuration::Parser, " when parsing mount attributes" do
81
+ include FSConfigurationParserTesting
82
+
83
+ before do
84
+ @mount = stub 'mount', :name => "one"
85
+ Puppet::FileServing::Mount.expects(:new).with("one").returns(@mount)
86
+ @parser.stubs(:add_modules_mount)
87
+ end
88
+
89
+ it "should set the mount path to the path attribute from that section" do
90
+ mock_file_content "[one]\npath /some/path\n"
91
+
92
+ @mount.expects(:path=).with("/some/path")
93
+ @parser.parse
94
+ end
95
+
96
+ it "should tell the mount to allow any allow values from the section" do
97
+ mock_file_content "[one]\nallow something\n"
98
+
99
+ @mount.expects(:info)
100
+ @mount.expects(:allow).with("something")
101
+ @parser.parse
102
+ end
103
+
104
+ it "should tell the mount to deny any deny values from the section" do
105
+ mock_file_content "[one]\ndeny something\n"
106
+
107
+ @mount.expects(:info)
108
+ @mount.expects(:deny).with("something")
109
+ @parser.parse
110
+ end
111
+
112
+ it "should fail on any attributes other than path, allow, and deny" do
113
+ mock_file_content "[one]\ndo something\n"
114
+
115
+ proc { @parser.parse }.should raise_error(ArgumentError)
116
+ end
117
+ end
118
+
119
+ describe Puppet::FileServing::Configuration::Parser, " when parsing the modules mount" do
120
+ include FSConfigurationParserTesting
121
+
122
+ before do
123
+ @mount = stub 'mount', :name => "modules"
124
+ Puppet::FileServing::Mount.expects(:new).with("modules").returns(@mount)
125
+ end
126
+
127
+ it "should warn if a path is set" do
128
+ mock_file_content "[modules]\npath /some/path\n"
129
+
130
+ @modules.expects(:path=).never
131
+ Puppet.expects(:warning)
132
+ @parser.parse
133
+ end
134
+ end
135
+ end
@@ -0,0 +1,71 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.dirname(__FILE__) + '/../../spec_helper'
4
+
5
+ require 'puppet/file_serving/content'
6
+
7
+ describe Puppet::FileServing::Content do
8
+ it "should should be a subclass of FileBase" do
9
+ Puppet::FileServing::Content.superclass.should equal(Puppet::FileServing::FileBase)
10
+ end
11
+
12
+ it "should indirect file_content" do
13
+ Puppet::FileServing::Content.indirection.name.should == :file_content
14
+ end
15
+
16
+ it "should should include the IndirectionHooks module in its indirection" do
17
+ Puppet::FileServing::Content.indirection.metaclass.included_modules.should include(Puppet::FileServing::IndirectionHooks)
18
+ end
19
+ end
20
+
21
+ describe Puppet::FileServing::Content, " when returning the contents" do
22
+ before do
23
+ @path = "/my/base"
24
+ @content = Puppet::FileServing::Content.new("sub/path", :links => :follow, :path => @path)
25
+ end
26
+
27
+ it "should fail if the file is a symlink and links are set to :manage" do
28
+ @content.links = :manage
29
+ File.expects(:lstat).with(@path).returns stub("stat", :ftype => "symlink")
30
+ proc { @content.content }.should raise_error(ArgumentError)
31
+ end
32
+
33
+ it "should fail if a path is not set" do
34
+ proc { @content.content() }.should raise_error(Errno::ENOENT)
35
+ end
36
+
37
+ it "should raise Errno::ENOENT if the file is absent" do
38
+ @content.path = "/there/is/absolutely/no/chance/that/this/path/exists"
39
+ proc { @content.content() }.should raise_error(Errno::ENOENT)
40
+ end
41
+
42
+ it "should return the contents of the path if the file exists" do
43
+ File.expects(:stat).with(@path).returns stub("stat", :ftype => "file")
44
+ File.expects(:read).with(@path).returns(:mycontent)
45
+ @content.content.should == :mycontent
46
+ end
47
+ end
48
+
49
+ describe Puppet::FileServing::Content, " when converting to yaml" do
50
+ it "should fail if no path has been set" do
51
+ @content = Puppet::FileServing::Content.new("some/key")
52
+ proc { @content.to_yaml }.should raise_error(ArgumentError)
53
+ end
54
+
55
+ it "should return the file contents" do
56
+ @content = Puppet::FileServing::Content.new("some/path")
57
+ @content.path = "/base/path"
58
+ @content.expects(:content).returns(:content)
59
+ @content.to_yaml.should == :content
60
+ end
61
+ end
62
+
63
+ describe Puppet::FileServing::Content, " when converting from yaml" do
64
+ # LAK:FIXME This isn't in the right place, but we need some kind of
65
+ # control somewhere that requires that all REST connections only pull
66
+ # from the file-server, thus guaranteeing they go through our authorization
67
+ # hook.
68
+ it "should set the URI scheme to 'puppetmounts'" do
69
+ pending "We need to figure out where this should be"
70
+ end
71
+ end
@@ -0,0 +1,124 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.dirname(__FILE__) + '/../../spec_helper'
4
+
5
+ require 'puppet/file_serving/file_base'
6
+
7
+ describe Puppet::FileServing::FileBase do
8
+ it "should accept a key in the form of a URI" do
9
+ Puppet::FileServing::FileBase.new("puppet://host/module/dir/file").key.should == "puppet://host/module/dir/file"
10
+ end
11
+
12
+ it "should allow specification of whether links should be managed" do
13
+ Puppet::FileServing::FileBase.new("puppet://host/module/dir/file", :links => :manage).links.should == :manage
14
+ end
15
+
16
+ it "should consider :ignore links equivalent to :manage links" do
17
+ Puppet::FileServing::FileBase.new("puppet://host/module/dir/file", :links => :ignore).links.should == :manage
18
+ end
19
+
20
+ it "should fail if :links is set to anything other than :manage, :follow, or :ignore" do
21
+ proc { Puppet::FileServing::FileBase.new("puppet://host/module/dir/file", :links => :else) }.should raise_error(ArgumentError)
22
+ end
23
+
24
+ it "should default to :manage for :links" do
25
+ Puppet::FileServing::FileBase.new("puppet://host/module/dir/file").links.should == :manage
26
+ end
27
+
28
+ it "should allow specification of a path" do
29
+ FileTest.stubs(:exists?).returns(true)
30
+ Puppet::FileServing::FileBase.new("puppet://host/module/dir/file", :path => "/my/file").path.should == "/my/file"
31
+ end
32
+
33
+ it "should allow specification of a relative path" do
34
+ FileTest.stubs(:exists?).returns(true)
35
+ Puppet::FileServing::FileBase.new("puppet://host/module/dir/file", :relative_path => "my/file").relative_path.should == "my/file"
36
+ end
37
+
38
+ it "should have a means of determining if the file exists" do
39
+ Puppet::FileServing::FileBase.new("blah").should respond_to(:exist?)
40
+ end
41
+
42
+ it "should correctly indicate if the file is present" do
43
+ File.expects(:lstat).with("/my/file").returns(mock("stat"))
44
+ Puppet::FileServing::FileBase.new("blah", :path => "/my/file").exist?.should be_true
45
+ end
46
+
47
+ it "should correctly indicate if the file is asbsent" do
48
+ File.expects(:lstat).with("/my/file").raises RuntimeError
49
+ Puppet::FileServing::FileBase.new("blah", :path => "/my/file").exist?.should be_false
50
+ end
51
+
52
+ describe "when setting the base path" do
53
+ before do
54
+ @file = Puppet::FileServing::FileBase.new("puppet://host/module/dir/file")
55
+ end
56
+
57
+ it "should require that the base path be fully qualified" do
58
+ FileTest.stubs(:exists?).returns(true)
59
+ proc { @file.path = "unqualified/file" }.should raise_error(ArgumentError)
60
+ end
61
+ end
62
+
63
+ describe "when setting the relative path" do
64
+ it "should require that the relative path be unqualified" do
65
+ @file = Puppet::FileServing::FileBase.new("puppet://host/module/dir/file")
66
+ FileTest.stubs(:exists?).returns(true)
67
+ proc { @file.relative_path = "/qualified/file" }.should raise_error(ArgumentError)
68
+ end
69
+ end
70
+
71
+ describe "when determining the full file path" do
72
+ before do
73
+ @file = Puppet::FileServing::FileBase.new("mykey", :path => "/this/file")
74
+ end
75
+
76
+ it "should return the path if there is no relative path" do
77
+ @file.full_path.should == "/this/file"
78
+ end
79
+
80
+ it "should return the path if the relative_path is set to ''" do
81
+ @file.relative_path = ""
82
+ @file.full_path.should == "/this/file"
83
+ end
84
+
85
+ it "should return the path joined with the relative path if there is a relative path and it is not set to '/' or ''" do
86
+ @file.relative_path = "not/qualified"
87
+ @file.full_path.should == "/this/file/not/qualified"
88
+ end
89
+
90
+ it "should should fail if there is no path set" do
91
+ @file = Puppet::FileServing::FileBase.new("not/qualified")
92
+ proc { @file.full_path }.should raise_error(ArgumentError)
93
+ end
94
+ end
95
+
96
+ describe "when stat'ing files" do
97
+ before do
98
+ @file = Puppet::FileServing::FileBase.new("mykey", :path => "/this/file")
99
+ end
100
+
101
+ it "should stat the file's full path" do
102
+ @file.stubs(:full_path).returns("/this/file")
103
+ File.expects(:lstat).with("/this/file").returns stub("stat", :ftype => "file")
104
+ @file.stat
105
+ end
106
+
107
+ it "should fail if the file does not exist" do
108
+ @file.stubs(:full_path).returns("/this/file")
109
+ File.expects(:lstat).with("/this/file").raises(Errno::ENOENT)
110
+ proc { @file.stat }.should raise_error(Errno::ENOENT)
111
+ end
112
+
113
+ it "should use :lstat if :links is set to :manage" do
114
+ File.expects(:lstat).with("/this/file").returns stub("stat", :ftype => "file")
115
+ @file.stat
116
+ end
117
+
118
+ it "should use :stat if :links is set to :follow" do
119
+ File.expects(:stat).with("/this/file").returns stub("stat", :ftype => "file")
120
+ @file.links = :follow
121
+ @file.stat
122
+ end
123
+ end
124
+ end
@@ -0,0 +1,239 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.dirname(__FILE__) + '/../../spec_helper'
4
+
5
+ require 'puppet/file_serving/fileset'
6
+
7
+ describe Puppet::FileServing::Fileset, " when initializing" do
8
+ it "should require a path" do
9
+ proc { Puppet::FileServing::Fileset.new }.should raise_error(ArgumentError)
10
+ end
11
+
12
+ it "should fail if its path is not fully qualified" do
13
+ proc { Puppet::FileServing::Fileset.new("some/file") }.should raise_error(ArgumentError)
14
+ end
15
+
16
+ it "should fail if its path does not exist" do
17
+ File.expects(:lstat).with("/some/file").returns nil
18
+ proc { Puppet::FileServing::Fileset.new("/some/file") }.should raise_error(ArgumentError)
19
+ end
20
+
21
+ it "should accept a 'recurse' option" do
22
+ File.expects(:lstat).with("/some/file").returns stub("stat")
23
+ set = Puppet::FileServing::Fileset.new("/some/file", :recurse => true)
24
+ set.recurse.should be_true
25
+ end
26
+
27
+ it "should accept an 'ignore' option" do
28
+ File.expects(:lstat).with("/some/file").returns stub("stat")
29
+ set = Puppet::FileServing::Fileset.new("/some/file", :ignore => ".svn")
30
+ set.ignore.should == [".svn"]
31
+ end
32
+
33
+ it "should accept a 'links' option" do
34
+ File.expects(:lstat).with("/some/file").returns stub("stat")
35
+ set = Puppet::FileServing::Fileset.new("/some/file", :links => :manage)
36
+ set.links.should == :manage
37
+ end
38
+
39
+ it "should fail if 'links' is set to anything other than :manage or :follow" do
40
+ proc { Puppet::FileServing::Fileset.new("/some/file", :links => :whatever) }.should raise_error(ArgumentError)
41
+ end
42
+
43
+ it "should default to 'false' for recurse" do
44
+ File.expects(:lstat).with("/some/file").returns stub("stat")
45
+ Puppet::FileServing::Fileset.new("/some/file").recurse.should == false
46
+ end
47
+
48
+ it "should default to an empty ignore list" do
49
+ File.expects(:lstat).with("/some/file").returns stub("stat")
50
+ Puppet::FileServing::Fileset.new("/some/file").ignore.should == []
51
+ end
52
+
53
+ it "should default to :manage for links" do
54
+ File.expects(:lstat).with("/some/file").returns stub("stat")
55
+ Puppet::FileServing::Fileset.new("/some/file").links.should == :manage
56
+ end
57
+ end
58
+
59
+ describe Puppet::FileServing::Fileset, " when determining whether to recurse" do
60
+ before do
61
+ @path = "/my/path"
62
+ File.expects(:lstat).with(@path).returns stub("stat")
63
+ @fileset = Puppet::FileServing::Fileset.new(@path)
64
+ end
65
+
66
+ it "should always recurse if :recurse is set to 'true'" do
67
+ @fileset.recurse = true
68
+ @fileset.recurse?(0).should be_true
69
+ end
70
+
71
+ it "should never recurse if :recurse is set to 'false'" do
72
+ @fileset.recurse = false
73
+ @fileset.recurse?(-1).should be_false
74
+ end
75
+
76
+ it "should recurse if :recurse is set to an integer and the current depth is less than that integer" do
77
+ @fileset.recurse = 1
78
+ @fileset.recurse?(0).should be_true
79
+ end
80
+
81
+ it "should recurse if :recurse is set to an integer and the current depth is equal to that integer" do
82
+ @fileset.recurse = 1
83
+ @fileset.recurse?(1).should be_true
84
+ end
85
+
86
+ it "should not recurse if :recurse is set to an integer and the current depth is greater than that integer" do
87
+ @fileset.recurse = 1
88
+ @fileset.recurse?(2).should be_false
89
+ end
90
+
91
+ it "should not recurse if :recurse is set to 0" do
92
+ @fileset.recurse = 0
93
+ @fileset.recurse?(-1).should be_false
94
+ end
95
+ end
96
+
97
+ describe Puppet::FileServing::Fileset, " when recursing" do
98
+ before do
99
+ @path = "/my/path"
100
+ File.expects(:lstat).with(@path).returns stub("stat", :directory? => true)
101
+ @fileset = Puppet::FileServing::Fileset.new(@path)
102
+
103
+ @dirstat = stub 'dirstat', :directory? => true
104
+ @filestat = stub 'filestat', :directory? => false
105
+ end
106
+
107
+ def mock_dir_structure(path, stat_method = :lstat)
108
+ File.stubs(stat_method).with(path).returns(@dirstat)
109
+ Dir.stubs(:entries).with(path).returns(%w{one two .svn CVS})
110
+
111
+ # Keep track of the files we're stubbing.
112
+ @files = %w{.}
113
+
114
+ %w{one two .svn CVS}.each do |subdir|
115
+ @files << subdir # relative path
116
+ subpath = File.join(path, subdir)
117
+ File.stubs(stat_method).with(subpath).returns(@dirstat)
118
+ Dir.stubs(:entries).with(subpath).returns(%w{.svn CVS file1 file2})
119
+ %w{file1 file2 .svn CVS}.each do |file|
120
+ @files << File.join(subdir, file) # relative path
121
+ File.stubs(stat_method).with(File.join(subpath, file)).returns(@filestat)
122
+ end
123
+ end
124
+ end
125
+
126
+ it "should recurse through the whole file tree if :recurse is set to 'true'" do
127
+ mock_dir_structure(@path)
128
+ @fileset.stubs(:recurse?).returns(true)
129
+ @fileset.files.sort.should == @files.sort
130
+ end
131
+
132
+ it "should not recurse if :recurse is set to 'false'" do
133
+ mock_dir_structure(@path)
134
+ @fileset.stubs(:recurse?).returns(false)
135
+ @fileset.files.should == %w{.}
136
+ end
137
+
138
+ # It seems like I should stub :recurse? here, or that I shouldn't stub the
139
+ # examples above, but...
140
+ it "should recurse to the level set if :recurse is set to an integer" do
141
+ mock_dir_structure(@path)
142
+ @fileset.recurse = 1
143
+ @fileset.files.should == %w{. one two .svn CVS}
144
+ end
145
+
146
+ it "should ignore the '.' and '..' directories in subdirectories" do
147
+ mock_dir_structure(@path)
148
+ @fileset.recurse = true
149
+ @fileset.files.sort.should == @files.sort
150
+ end
151
+
152
+ it "should ignore files that match a single pattern in the ignore list" do
153
+ mock_dir_structure(@path)
154
+ @fileset.recurse = true
155
+ @fileset.ignore = ".svn"
156
+ @fileset.files.find { |file| file.include?(".svn") }.should be_nil
157
+ end
158
+
159
+ it "should ignore files that match any of multiple patterns in the ignore list" do
160
+ mock_dir_structure(@path)
161
+ @fileset.recurse = true
162
+ @fileset.ignore = %w{.svn CVS}
163
+ @fileset.files.find { |file| file.include?(".svn") or file.include?("CVS") }.should be_nil
164
+ end
165
+
166
+ it "should use File.stat if :links is set to :follow" do
167
+ mock_dir_structure(@path, :stat)
168
+ @fileset.recurse = true
169
+ @fileset.links = :follow
170
+ @fileset.files.sort.should == @files.sort
171
+ end
172
+
173
+ it "should use File.lstat if :links is set to :manage" do
174
+ mock_dir_structure(@path, :lstat)
175
+ @fileset.recurse = true
176
+ @fileset.links = :manage
177
+ @fileset.files.sort.should == @files.sort
178
+ end
179
+
180
+ it "should succeed when paths have regexp significant characters" do
181
+ @path = "/my/path/rV1x2DafFr0R6tGG+1bbk++++TM"
182
+ File.expects(:lstat).with(@path).returns stub("stat", :directory? => true)
183
+ @fileset = Puppet::FileServing::Fileset.new(@path)
184
+ mock_dir_structure(@path)
185
+ @fileset.recurse = true
186
+ @fileset.files.sort.should == @files.sort
187
+ end
188
+ end
189
+
190
+ describe Puppet::FileServing::Fileset, " when following links that point to missing files" do
191
+ before do
192
+ @path = "/my/path"
193
+ File.expects(:lstat).with(@path).returns stub("stat", :directory? => true)
194
+ @fileset = Puppet::FileServing::Fileset.new(@path)
195
+ @fileset.links = :follow
196
+ @fileset.recurse = true
197
+
198
+ @stat = stub 'stat', :directory? => true
199
+
200
+ File.expects(:stat).with(@path).returns(@stat)
201
+ File.expects(:stat).with(File.join(@path, "mylink")).raises(Errno::ENOENT)
202
+ Dir.stubs(:entries).with(@path).returns(["mylink"])
203
+ end
204
+
205
+ it "should not fail" do
206
+ proc { @fileset.files }.should_not raise_error
207
+ end
208
+
209
+ it "should still manage the link" do
210
+ @fileset.files.sort.should == %w{. mylink}.sort
211
+ end
212
+ end
213
+
214
+ describe Puppet::FileServing::Fileset, " when ignoring" do
215
+ before do
216
+ @path = "/my/path"
217
+ File.expects(:lstat).with(@path).returns stub("stat", :directory? => true)
218
+ @fileset = Puppet::FileServing::Fileset.new(@path)
219
+ end
220
+
221
+ it "should use ruby's globbing to determine what files should be ignored" do
222
+ @fileset.ignore = ".svn"
223
+ File.expects(:fnmatch?).with(".svn", "my_file")
224
+ @fileset.ignore?("my_file")
225
+ end
226
+
227
+ it "should ignore files whose paths match a single provided ignore value" do
228
+ @fileset.ignore = ".svn"
229
+ File.stubs(:fnmatch?).with(".svn", "my_file").returns true
230
+ @fileset.ignore?("my_file").should be_true
231
+ end
232
+
233
+ it "should ignore files whose paths match any of multiple provided ignore values" do
234
+ @fileset.ignore = [".svn", "CVS"]
235
+ File.stubs(:fnmatch?).with(".svn", "my_file").returns false
236
+ File.stubs(:fnmatch?).with("CVS", "my_file").returns true
237
+ @fileset.ignore?("my_file").should be_true
238
+ end
239
+ end