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,424 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.dirname(__FILE__) + '/../../../spec_helper'
4
+
5
+ require 'puppet/indirector/node/ldap'
6
+
7
+ describe Puppet::Node::Ldap do
8
+ before do
9
+ Puppet::Node::Facts.stubs(:terminus_class).returns :yaml
10
+ end
11
+
12
+ describe "when searching for a single node" do
13
+ before :each do
14
+ @searcher = Puppet::Node::Ldap.new
15
+
16
+ @name = "mynode.domain.com"
17
+ @node = stub 'node', :name => @name, :name= => nil
18
+ @node.stub_everything
19
+
20
+ Puppet::Node.stubs(:new).returns(@node)
21
+
22
+ @request = stub 'request', :key => @name
23
+ end
24
+
25
+ it "should convert the hostname into a search filter" do
26
+ entry = stub 'entry', :dn => 'cn=mynode.domain.com,ou=hosts,dc=madstop,dc=com', :vals => %w{}, :to_hash => {}
27
+ @searcher.expects(:ldapsearch).with("(&(objectclass=puppetClient)(cn=#{@name}))").yields entry
28
+ @searcher.name2hash(@name)
29
+ end
30
+
31
+ it "should convert any found entry into a hash" do
32
+ entry = stub 'entry', :dn => 'cn=mynode.domain.com,ou=hosts,dc=madstop,dc=com', :vals => %w{}, :to_hash => {}
33
+ @searcher.expects(:ldapsearch).with("(&(objectclass=puppetClient)(cn=#{@name}))").yields entry
34
+ @searcher.expects(:entry2hash).with(entry).returns "myhash"
35
+ @searcher.name2hash(@name).should == "myhash"
36
+ end
37
+
38
+ # This heavily tests our entry2hash method, so we don't have to stub out the stupid entry information any more.
39
+ describe "when an ldap entry is found" do
40
+ before do
41
+ @entry = stub 'entry', :dn => 'cn=mynode.domain.com,ou=hosts,dc=madstop,dc=com', :vals => %w{}, :to_hash => {}
42
+ @searcher.stubs(:ldapsearch).yields @entry
43
+ end
44
+
45
+ it "should convert the entry to a hash" do
46
+ @searcher.entry2hash(@entry).should be_instance_of(Hash)
47
+ end
48
+
49
+ it "should add the entry's common name to the hash" do
50
+ @searcher.entry2hash(@entry)[:name].should == "mynode.domain.com"
51
+ end
52
+
53
+ it "should add all of the entry's classes to the hash" do
54
+ @entry.stubs(:vals).with("puppetclass").returns %w{one two}
55
+ @searcher.entry2hash(@entry)[:classes].should == %w{one two}
56
+ end
57
+
58
+ it "should deduplicate class values" do
59
+ @entry.stubs(:to_hash).returns({})
60
+ @searcher.stubs(:class_attributes).returns(%w{one two})
61
+ @entry.stubs(:vals).with("one").returns(%w{a b})
62
+ @entry.stubs(:vals).with("two").returns(%w{b c})
63
+ @searcher.entry2hash(@entry)[:classes].should == %w{a b c}
64
+ end
65
+
66
+ it "should add the entry's environment to the hash" do
67
+ @entry.stubs(:to_hash).returns("environment" => %w{production})
68
+ @searcher.entry2hash(@entry)[:environment].should == "production"
69
+ end
70
+
71
+ it "should add all stacked parameters as parameters in the hash" do
72
+ @entry.stubs(:vals).with("puppetvar").returns(%w{one=two three=four})
73
+ result = @searcher.entry2hash(@entry)
74
+ result[:parameters]["one"].should == "two"
75
+ result[:parameters]["three"].should == "four"
76
+ end
77
+
78
+ it "should not add the stacked parameter as a normal parameter" do
79
+ @entry.stubs(:vals).with("puppetvar").returns(%w{one=two three=four})
80
+ @entry.stubs(:to_hash).returns("puppetvar" => %w{one=two three=four})
81
+ @searcher.entry2hash(@entry)[:parameters]["puppetvar"].should be_nil
82
+ end
83
+
84
+ it "should add all other attributes as parameters in the hash" do
85
+ @entry.stubs(:to_hash).returns("foo" => %w{one two})
86
+ @searcher.entry2hash(@entry)[:parameters]["foo"].should == %w{one two}
87
+ end
88
+
89
+ it "should return single-value parameters as strings, not arrays" do
90
+ @entry.stubs(:to_hash).returns("foo" => %w{one})
91
+ @searcher.entry2hash(@entry)[:parameters]["foo"].should == "one"
92
+ end
93
+
94
+ it "should add the parent's name if present" do
95
+ @entry.stubs(:vals).with("parentnode").returns(%w{foo})
96
+ @searcher.entry2hash(@entry)[:parent].should == "foo"
97
+ end
98
+
99
+ it "should fail if more than one parent is specified" do
100
+ @entry.stubs(:vals).with("parentnode").returns(%w{foo})
101
+ @searcher.entry2hash(@entry)[:parent].should == "foo"
102
+ end
103
+ end
104
+
105
+ it "should search first for the provided key" do
106
+ @searcher.expects(:name2hash).with("mynode.domain.com").returns({})
107
+ @searcher.find(@request)
108
+ end
109
+
110
+ it "should search for the short version of the provided key if the key looks like a hostname and no results are found for the key itself" do
111
+ @searcher.expects(:name2hash).with("mynode.domain.com").returns(nil)
112
+ @searcher.expects(:name2hash).with("mynode").returns({})
113
+ @searcher.find(@request)
114
+ end
115
+
116
+ it "should search for default information if no information can be found for the key" do
117
+ @searcher.expects(:name2hash).with("mynode.domain.com").returns(nil)
118
+ @searcher.expects(:name2hash).with("mynode").returns(nil)
119
+ @searcher.expects(:name2hash).with("default").returns({})
120
+ @searcher.find(@request)
121
+ end
122
+
123
+ it "should return nil if no results are found in ldap" do
124
+ @searcher.stubs(:name2hash).returns nil
125
+ @searcher.find(@request).should be_nil
126
+ end
127
+
128
+ it "should return a node object if results are found in ldap" do
129
+ @searcher.stubs(:name2hash).returns({})
130
+ @searcher.find(@request).should equal(@node)
131
+ end
132
+
133
+ describe "and node information is found in LDAP" do
134
+ before do
135
+ @result = {}
136
+ @searcher.stubs(:name2hash).returns @result
137
+ end
138
+
139
+ it "should create the node with the correct name, even if it was found by a different name" do
140
+ @searcher.expects(:name2hash).with("mynode.domain.com").returns nil
141
+ @searcher.expects(:name2hash).with("mynode").returns @result
142
+
143
+ Puppet::Node.expects(:new).with("mynode.domain.com").returns @node
144
+ @searcher.find(@request)
145
+ end
146
+
147
+ it "should add any classes from ldap" do
148
+ @result[:classes] = %w[a b c d]
149
+ @node.expects(:classes=).with(%w{a b c d})
150
+ @searcher.find(@request)
151
+ end
152
+
153
+ it "should add all entry attributes as node parameters" do
154
+ @result[:parameters] = {"one" => "two", "three" => "four"}
155
+ @node.expects(:parameters=).with("one" => "two", "three" => "four")
156
+ @searcher.find(@request)
157
+ end
158
+
159
+ it "should set the node's environment to the environment of the results" do
160
+ @result[:environment] = "test"
161
+ @node.expects(:environment=).with("test")
162
+ @searcher.find(@request)
163
+ end
164
+
165
+ it "should retain false parameter values" do
166
+ @result[:parameters] = {}
167
+ @result[:parameters]["one"] = false
168
+ @node.expects(:parameters=).with("one" => false)
169
+ @searcher.find(@request)
170
+ end
171
+
172
+ it "should merge the node's facts after the parameters from ldap are assigned" do
173
+ # Make sure we've got data to start with, so the parameters are actually set.
174
+ @result[:parameters] = {}
175
+ @result[:parameters]["one"] = "yay"
176
+
177
+ # A hackish way to enforce order.
178
+ set = false
179
+ @node.expects(:parameters=).with { |*args| set = true }
180
+ @node.expects(:fact_merge).with { |*args| raise "Facts were merged before parameters were set" unless set; true }
181
+
182
+ @searcher.find(@request)
183
+ end
184
+
185
+ describe "and a parent node is specified" do
186
+ before do
187
+ @entry = {:classes => [], :parameters => {}}
188
+ @parent = {:classes => [], :parameters => {}}
189
+ @parent_parent = {:classes => [], :parameters => {}}
190
+
191
+ @searcher.stubs(:name2hash).with(@name).returns(@entry)
192
+ @searcher.stubs(:name2hash).with('parent').returns(@parent)
193
+ @searcher.stubs(:name2hash).with('parent_parent').returns(@parent_parent)
194
+
195
+ @searcher.stubs(:parent_attribute).returns(:parent)
196
+ end
197
+
198
+ it "should search for the parent node" do
199
+ @entry[:parent] = "parent"
200
+
201
+ @searcher.expects(:name2hash).with(@name).returns @entry
202
+ @searcher.expects(:name2hash).with('parent').returns @parent
203
+
204
+ @searcher.find(@request)
205
+ end
206
+
207
+ it "should fail if the parent cannot be found" do
208
+ @entry[:parent] = "parent"
209
+
210
+ @searcher.expects(:name2hash).with('parent').returns nil
211
+
212
+ proc { @searcher.find(@request) }.should raise_error(Puppet::Error)
213
+ end
214
+
215
+ it "should add any parent classes to the node's classes" do
216
+ @entry[:parent] = "parent"
217
+ @entry[:classes] = %w{a b}
218
+
219
+ @parent[:classes] = %w{c d}
220
+
221
+ @node.expects(:classes=).with(%w{a b c d})
222
+ @searcher.find(@request)
223
+ end
224
+
225
+ it "should add any parent parameters to the node's parameters" do
226
+ @entry[:parent] = "parent"
227
+ @entry[:parameters]["one"] = "two"
228
+
229
+ @parent[:parameters]["three"] = "four"
230
+
231
+ @node.expects(:parameters=).with("one" => "two", "three" => "four")
232
+ @searcher.find(@request)
233
+ end
234
+
235
+ it "should prefer node parameters over parent parameters" do
236
+ @entry[:parent] = "parent"
237
+ @entry[:parameters]["one"] = "two"
238
+
239
+ @parent[:parameters]["one"] = "three"
240
+
241
+ @node.expects(:parameters=).with("one" => "two")
242
+ @searcher.find(@request)
243
+ end
244
+
245
+ it "should use the parent's environment if the node has none" do
246
+ @entry[:parent] = "parent"
247
+
248
+ @parent[:environment] = "parent"
249
+
250
+ @node.stubs(:parameters=)
251
+ @node.expects(:environment=).with("parent")
252
+ @searcher.find(@request)
253
+ end
254
+
255
+ it "should prefer the node's environment to the parent's" do
256
+ @entry[:parent] = "parent"
257
+ @entry[:environment] = "child"
258
+
259
+ @parent[:environment] = "parent"
260
+
261
+ @node.stubs(:parameters=)
262
+ @node.expects(:environment=).with("child")
263
+ @searcher.find(@request)
264
+ end
265
+
266
+ it "should recursively look up parent information" do
267
+ @entry[:parent] = "parent"
268
+ @entry[:parameters]["one"] = "two"
269
+
270
+ @parent[:parent] = "parent_parent"
271
+ @parent[:parameters]["three"] = "four"
272
+
273
+ @parent_parent[:parameters]["five"] = "six"
274
+
275
+ @node.expects(:parameters=).with("one" => "two", "three" => "four", "five" => "six")
276
+ @searcher.find(@request)
277
+ end
278
+
279
+ it "should not allow loops in parent declarations" do
280
+ @entry[:parent] = "parent"
281
+ @parent[:parent] = @name
282
+ proc { @searcher.find(@request) }.should raise_error(ArgumentError)
283
+ end
284
+ end
285
+ end
286
+ end
287
+
288
+ describe "when searching for multiple nodes" do
289
+ before :each do
290
+ @searcher = Puppet::Node::Ldap.new
291
+ @options = {}
292
+ @request = stub 'request', :key => "foo", :options => @options
293
+
294
+ Puppet::Node::Facts.stubs(:terminus_class).returns :yaml
295
+ end
296
+
297
+ it "should find all nodes if no arguments are provided" do
298
+ @searcher.expects(:ldapsearch).with("(objectclass=puppetClient)")
299
+ # LAK:NOTE The search method requires an essentially bogus key. It's
300
+ # an API problem that I don't really know how to fix.
301
+ @searcher.search @request
302
+ end
303
+
304
+ describe "and a class is specified" do
305
+ it "should find all nodes that are members of that class" do
306
+ @searcher.expects(:ldapsearch).with("(&(objectclass=puppetClient)(puppetclass=one))")
307
+
308
+ @options[:class] = "one"
309
+ @searcher.search @request
310
+ end
311
+ end
312
+
313
+ describe "multiple classes are specified" do
314
+ it "should find all nodes that are members of all classes" do
315
+ @searcher.expects(:ldapsearch).with("(&(objectclass=puppetClient)(puppetclass=one)(puppetclass=two))")
316
+ @options[:class] = %w{one two}
317
+ @searcher.search @request
318
+ end
319
+ end
320
+
321
+ it "should process each found entry" do
322
+ # .yields can't be used to yield multiple values :/
323
+ @searcher.expects(:ldapsearch).yields("one")
324
+ @searcher.expects(:entry2hash).with("one").returns(:name => "foo")
325
+ @searcher.search @request
326
+ end
327
+
328
+ it "should return a node for each processed entry with the name from the entry" do
329
+ @searcher.expects(:ldapsearch).yields("whatever")
330
+ @searcher.expects(:entry2hash).with("whatever").returns(:name => "foo")
331
+ result = @searcher.search(@request)
332
+ result[0].should be_instance_of(Puppet::Node)
333
+ result[0].name.should == "foo"
334
+ end
335
+
336
+ it "should merge each node's facts" do
337
+ node = mock 'node'
338
+ Puppet::Node.expects(:new).with("foo").returns node
339
+ node.expects(:fact_merge)
340
+ @searcher.stubs(:ldapsearch).yields("one")
341
+ @searcher.stubs(:entry2hash).with("one").returns(:name => "foo")
342
+ @searcher.search(@request)
343
+ end
344
+ end
345
+ end
346
+
347
+ describe Puppet::Node::Ldap, " when developing the search query" do
348
+ before do
349
+ @searcher = Puppet::Node::Ldap.new
350
+ end
351
+
352
+ it "should return the value of the :ldapclassattrs split on commas as the class attributes" do
353
+ Puppet.stubs(:[]).with(:ldapclassattrs).returns("one,two")
354
+ @searcher.class_attributes.should == %w{one two}
355
+ end
356
+
357
+ it "should return nil as the parent attribute if the :ldapparentattr is set to an empty string" do
358
+ Puppet.stubs(:[]).with(:ldapparentattr).returns("")
359
+ @searcher.parent_attribute.should be_nil
360
+ end
361
+
362
+ it "should return the value of the :ldapparentattr as the parent attribute" do
363
+ Puppet.stubs(:[]).with(:ldapparentattr).returns("pere")
364
+ @searcher.parent_attribute.should == "pere"
365
+ end
366
+
367
+ it "should use the value of the :ldapstring as the search filter" do
368
+ Puppet.stubs(:[]).with(:ldapstring).returns("mystring")
369
+ @searcher.search_filter("testing").should == "mystring"
370
+ end
371
+
372
+ it "should replace '%s' with the node name in the search filter if it is present" do
373
+ Puppet.stubs(:[]).with(:ldapstring).returns("my%sstring")
374
+ @searcher.search_filter("testing").should == "mytestingstring"
375
+ end
376
+
377
+ it "should not modify the global :ldapstring when replacing '%s' in the search filter" do
378
+ filter = mock 'filter'
379
+ filter.expects(:include?).with("%s").returns(true)
380
+ filter.expects(:gsub).with("%s", "testing").returns("mynewstring")
381
+ Puppet.stubs(:[]).with(:ldapstring).returns(filter)
382
+ @searcher.search_filter("testing").should == "mynewstring"
383
+ end
384
+ end
385
+
386
+ describe Puppet::Node::Ldap, " when deciding attributes to search for" do
387
+ before do
388
+ @searcher = Puppet::Node::Ldap.new
389
+ end
390
+
391
+ it "should use 'nil' if the :ldapattrs setting is 'all'" do
392
+ Puppet.stubs(:[]).with(:ldapattrs).returns("all")
393
+ @searcher.search_attributes.should be_nil
394
+ end
395
+
396
+ it "should split the value of :ldapattrs on commas and use the result as the attribute list" do
397
+ Puppet.stubs(:[]).with(:ldapattrs).returns("one,two")
398
+ @searcher.stubs(:class_attributes).returns([])
399
+ @searcher.stubs(:parent_attribute).returns(nil)
400
+ @searcher.search_attributes.should == %w{one two}
401
+ end
402
+
403
+ it "should add the class attributes to the search attributes if not returning all attributes" do
404
+ Puppet.stubs(:[]).with(:ldapattrs).returns("one,two")
405
+ @searcher.stubs(:class_attributes).returns(%w{three four})
406
+ @searcher.stubs(:parent_attribute).returns(nil)
407
+ # Sort them so i don't have to care about return order
408
+ @searcher.search_attributes.sort.should == %w{one two three four}.sort
409
+ end
410
+
411
+ it "should add the parent attribute to the search attributes if not returning all attributes" do
412
+ Puppet.stubs(:[]).with(:ldapattrs).returns("one,two")
413
+ @searcher.stubs(:class_attributes).returns([])
414
+ @searcher.stubs(:parent_attribute).returns("parent")
415
+ @searcher.search_attributes.sort.should == %w{one two parent}.sort
416
+ end
417
+
418
+ it "should not add nil parent attributes to the search attributes" do
419
+ Puppet.stubs(:[]).with(:ldapattrs).returns("one,two")
420
+ @searcher.stubs(:class_attributes).returns([])
421
+ @searcher.stubs(:parent_attribute).returns(nil)
422
+ @searcher.search_attributes.should == %w{one two}
423
+ end
424
+ end
@@ -0,0 +1,19 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.dirname(__FILE__) + '/../../../spec_helper'
4
+
5
+ require 'puppet/indirector/node/memory'
6
+
7
+ require 'shared_behaviours/memory_terminus'
8
+
9
+ describe Puppet::Node::Memory do
10
+ before do
11
+ @name = "me"
12
+ @searcher = Puppet::Node::Memory.new
13
+ @instance = stub 'instance', :name => @name
14
+
15
+ @request = stub 'request', :key => @name, :instance => @instance
16
+ end
17
+
18
+ it_should_behave_like "A Memory Terminus"
19
+ end
@@ -0,0 +1,19 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.dirname(__FILE__) + '/../../../spec_helper'
4
+
5
+ require 'puppet/indirector/node/plain'
6
+
7
+ describe Puppet::Node::Plain do
8
+ before do
9
+ @searcher = Puppet::Node::Plain.new
10
+ end
11
+
12
+ it "should call node_merge() on the returned node" do
13
+ node = mock 'node'
14
+ Puppet::Node.expects(:new).with("mynode").returns(node)
15
+ node.expects(:fact_merge)
16
+ request = stub 'request', :key => "mynode"
17
+ @searcher.find(request)
18
+ end
19
+ end