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,228 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.dirname(__FILE__) + '/../../spec_helper'
4
+
5
+ describe Puppet::Parser do
6
+
7
+ ast = Puppet::Parser::AST
8
+
9
+ before :each do
10
+ @parser = Puppet::Parser::Parser.new :environment => "development"
11
+ @true_ast = Puppet::Parser::AST::Boolean.new :value => true
12
+ end
13
+
14
+ describe "when parsing append operator" do
15
+
16
+ it "should not raise syntax errors" do
17
+ lambda { @parser.parse("$var += something") }.should_not raise_error
18
+ end
19
+
20
+ it "shouldraise syntax error on incomplete syntax " do
21
+ lambda { @parser.parse("$var += ") }.should raise_error
22
+ end
23
+
24
+ it "should call ast::VarDef with append=true" do
25
+ ast::VarDef.expects(:new).with { |h| h[:append] == true }
26
+ @parser.parse("$var += 2")
27
+ end
28
+
29
+ it "should work with arrays too" do
30
+ ast::VarDef.expects(:new).with { |h| h[:append] == true }
31
+ @parser.parse("$var += ['test']")
32
+ end
33
+
34
+ end
35
+
36
+ describe Puppet::Parser, "when parsing 'if'" do
37
+ it "not, it should create the correct ast objects" do
38
+ ast::Not.expects(:new).with { |h| h[:value].is_a?(ast::Boolean) }
39
+ @parser.parse("if ! true { $var = 1 }")
40
+ end
41
+
42
+ it "boolean operation, it should create the correct ast objects" do
43
+ ast::BooleanOperator.expects(:new).with {
44
+ |h| h[:rval].is_a?(ast::Boolean) and h[:lval].is_a?(ast::Boolean) and h[:operator]=="or"
45
+ }
46
+ @parser.parse("if true or true { $var = 1 }")
47
+
48
+ end
49
+
50
+ it "comparison operation, it should create the correct ast objects" do
51
+ ast::ComparisonOperator.expects(:new).with {
52
+ |h| h[:lval].is_a?(ast::Name) and h[:rval].is_a?(ast::Name) and h[:operator]=="<"
53
+ }
54
+ @parser.parse("if 1 < 2 { $var = 1 }")
55
+
56
+ end
57
+
58
+ end
59
+
60
+ describe Puppet::Parser, "when parsing if complex expressions" do
61
+ it "should create a correct ast tree" do
62
+ aststub = stub_everything 'ast'
63
+ ast::ComparisonOperator.expects(:new).with {
64
+ |h| h[:rval].is_a?(ast::Name) and h[:lval].is_a?(ast::Name) and h[:operator]==">"
65
+ }.returns(aststub)
66
+ ast::ComparisonOperator.expects(:new).with {
67
+ |h| h[:rval].is_a?(ast::Name) and h[:lval].is_a?(ast::Name) and h[:operator]=="=="
68
+ }.returns(aststub)
69
+ ast::BooleanOperator.expects(:new).with {
70
+ |h| h[:rval]==aststub and h[:lval]==aststub and h[:operator]=="and"
71
+ }
72
+ @parser.parse("if (1 > 2) and (1 == 2) { $var = 1 }")
73
+ end
74
+
75
+ it "should raise an error on incorrect expression" do
76
+ lambda { @parser.parse("if (1 > 2 > ) or (1 == 2) { $var = 1 }") }.should raise_error
77
+ end
78
+
79
+ end
80
+
81
+ describe Puppet::Parser, "when parsing resource references" do
82
+
83
+ it "should not raise syntax errors" do
84
+ lambda { @parser.parse('exec { test: param => File["a"] }') }.should_not raise_error
85
+ end
86
+
87
+ it "should not raise syntax errors with multiple references" do
88
+ lambda { @parser.parse('exec { test: param => File["a","b"] }') }.should_not raise_error
89
+ end
90
+
91
+ it "should create an ast::ResourceReference" do
92
+ ast::Resource.stubs(:new)
93
+ ast::ResourceReference.expects(:new).with { |arg|
94
+ arg[:line]==1 and arg[:type]=="File" and arg[:title].is_a?(ast::ASTArray)
95
+ }
96
+ @parser.parse('exec { test: command => File["a","b"] }')
97
+ end
98
+ end
99
+
100
+ describe Puppet::Parser, "when parsing resource overrides" do
101
+
102
+ it "should not raise syntax errors" do
103
+ lambda { @parser.parse('Resource["title"] { param => value }') }.should_not raise_error
104
+ end
105
+
106
+ it "should not raise syntax errors with multiple overrides" do
107
+ lambda { @parser.parse('Resource["title1","title2"] { param => value }') }.should_not raise_error
108
+ end
109
+
110
+ it "should create an ast::ResourceOverride" do
111
+ ast::ResourceOverride.expects(:new).with { |arg|
112
+ arg[:line]==1 and arg[:object].is_a?(ast::ResourceReference) and arg[:params].is_a?(ast::ResourceParam)
113
+ }
114
+ @parser.parse('Resource["title1","title2"] { param => value }')
115
+ end
116
+
117
+ end
118
+
119
+ describe Puppet::Parser, "when parsing if statements" do
120
+
121
+ it "should not raise errors with empty if" do
122
+ lambda { @parser.parse("if true { }") }.should_not raise_error
123
+ end
124
+
125
+ it "should not raise errors with empty else" do
126
+ lambda { @parser.parse("if false { notice('if') } else { }") }.should_not raise_error
127
+ end
128
+
129
+ it "should not raise errors with empty if and else" do
130
+ lambda { @parser.parse("if false { } else { }") }.should_not raise_error
131
+ end
132
+
133
+ it "should create a nop node for empty branch" do
134
+ ast::Nop.expects(:new)
135
+ @parser.parse("if true { }")
136
+ end
137
+
138
+ it "should create a nop node for empty else branch" do
139
+ ast::Nop.expects(:new)
140
+ @parser.parse("if true { notice('test') } else { }")
141
+ end
142
+
143
+ end
144
+
145
+ describe Puppet::Parser, "when parsing function calls" do
146
+
147
+ it "should not raise errors with no arguments" do
148
+ lambda { @parser.parse("tag()") }.should_not raise_error
149
+ end
150
+
151
+ it "should not raise errors with rvalue function with no args" do
152
+ lambda { @parser.parse("$a = template()") }.should_not raise_error
153
+ end
154
+
155
+ it "should not raise errors with arguments" do
156
+ lambda { @parser.parse("notice(1)") }.should_not raise_error
157
+ end
158
+
159
+ it "should not raise errors with multiple arguments" do
160
+ lambda { @parser.parse("notice(1,2)") }.should_not raise_error
161
+ end
162
+
163
+ it "should not raise errors with multiple arguments and a trailing comma" do
164
+ lambda { @parser.parse("notice(1,2,)") }.should_not raise_error
165
+ end
166
+
167
+ end
168
+
169
+ describe Puppet::Parser, "when parsing arrays with trailing comma" do
170
+
171
+ it "should not raise errors with a trailing comma" do
172
+ lambda { @parser.parse("$a = [1,2,]") }.should_not raise_error
173
+ end
174
+ end
175
+
176
+ describe Puppet::Parser, "when instantiating class of same name" do
177
+
178
+ before :each do
179
+ @one = stub 'one', :is_a? => true
180
+ @one.stubs(:is_a?).with(ast::ASTArray).returns(false)
181
+ @one.stubs(:is_a?).with(ast).returns(true)
182
+
183
+ @two = stub 'two'
184
+ @two.stubs(:is_a?).with(ast::ASTArray).returns(false)
185
+ @two.stubs(:is_a?).with(ast).returns(true)
186
+ end
187
+
188
+ it "should return the first class" do
189
+
190
+ klass1 = @parser.newclass("one", { :code => @one })
191
+
192
+ @parser.newclass("one", { :code => @two }).should == klass1
193
+ end
194
+
195
+ it "should concatenate code" do
196
+ klass1 = @parser.newclass("one", { :code => @one })
197
+
198
+ @parser.newclass("one", { :code => @two })
199
+
200
+ klass1.code.children.should == [@one,@two]
201
+ end
202
+ end
203
+
204
+ describe Puppet::Parser, "when parsing comments before statement" do
205
+ it "should associate the documentation to the statement AST node" do
206
+ ast = @parser.parse("""
207
+ # comment
208
+ class test {}
209
+ """)
210
+
211
+ ast[:classes]["test"].doc.should == "comment\n"
212
+ end
213
+ end
214
+
215
+ describe Puppet::Parser, "when building ast nodes" do
216
+ it "should get lexer comments if ast node declares use_docs" do
217
+ lexer = stub 'lexer'
218
+ ast = mock 'ast', :nil? => false, :use_docs => true, :doc => ""
219
+ @parser.stubs(:lexer).returns(lexer)
220
+
221
+ Puppet::Parser::AST::Definition.expects(:new).returns(ast)
222
+ lexer.expects(:getcomment).returns("comment")
223
+ ast.expects(:doc=).with("comment")
224
+
225
+ @parser.ast(Puppet::Parser::AST::Definition)
226
+ end
227
+ end
228
+ end
@@ -0,0 +1,336 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.dirname(__FILE__) + '/../../spec_helper'
4
+
5
+ # LAK: FIXME This is just new tests for resources; I have
6
+ # not moved all tests over yet.
7
+
8
+ describe Puppet::Parser::Resource do
9
+ before do
10
+ @parser = Puppet::Parser::Parser.new :Code => ""
11
+ @source = @parser.newclass ""
12
+ @node = Puppet::Node.new("yaynode")
13
+ @compiler = Puppet::Parser::Compiler.new(@node, @parser)
14
+ @scope = @compiler.topscope
15
+ end
16
+
17
+ def mkresource(args = {})
18
+ args[:source] ||= "source"
19
+ args[:scope] ||= stub('scope', :source => mock('source'))
20
+
21
+ {:type => "resource", :title => "testing", :source => "source", :scope => "scope"}.each do |param, value|
22
+ args[param] ||= value
23
+ end
24
+
25
+ params = args[:params] || {:one => "yay", :three => "rah"}
26
+ if args[:params] == :none
27
+ args.delete(:params)
28
+ else
29
+ args[:params] = paramify(args[:source], params)
30
+ end
31
+
32
+ Puppet::Parser::Resource.new(args)
33
+ end
34
+
35
+ def param(name, value, source)
36
+ Puppet::Parser::Resource::Param.new(:name => name, :value => value, :source => source)
37
+ end
38
+
39
+ def paramify(source, hash)
40
+ hash.collect do |name, value|
41
+ Puppet::Parser::Resource::Param.new(
42
+ :name => name, :value => value, :source => source
43
+ )
44
+ end
45
+ end
46
+
47
+ it "should be isomorphic if it is builtin and models an isomorphic type" do
48
+ Puppet::Type.type(:file).expects(:isomorphic?).returns(true)
49
+ @resource = Puppet::Parser::Resource.new(:type => "file", :title => "whatever", :scope => @scope, :source => @source).isomorphic?.should be_true
50
+ end
51
+
52
+ it "should not be isomorphic if it is builtin and models a non-isomorphic type" do
53
+ Puppet::Type.type(:file).expects(:isomorphic?).returns(false)
54
+ @resource = Puppet::Parser::Resource.new(:type => "file", :title => "whatever", :scope => @scope, :source => @source).isomorphic?.should be_false
55
+ end
56
+
57
+ it "should be isomorphic if it is not builtin" do
58
+ @parser.newdefine "whatever"
59
+ @resource = Puppet::Parser::Resource.new(:type => "whatever", :title => "whatever", :scope => @scope, :source => @source).isomorphic?.should be_true
60
+ end
61
+
62
+ it "should have a array-indexing method for retrieving parameter values" do
63
+ @resource = mkresource
64
+ @resource[:one].should == "yay"
65
+ end
66
+
67
+ it "should have a method for converting to a ral resource" do
68
+ trans = mock 'trans', :to_type => "yay"
69
+ @resource = mkresource
70
+ @resource.expects(:to_trans).returns trans
71
+ @resource.to_type.should == "yay"
72
+ end
73
+
74
+ describe "when initializing" do
75
+ before do
76
+ @arguments = {:type => "resource", :title => "testing", :scope => stub('scope', :source => mock('source'))}
77
+ end
78
+
79
+ [:type, :title, :scope].each do |name|
80
+ it "should fail unless #{name.to_s} is specified" do
81
+ try = @arguments.dup
82
+ try.delete(name)
83
+ lambda { Puppet::Parser::Resource.new(try) }.should raise_error(ArgumentError)
84
+ end
85
+ end
86
+
87
+ it "should set the reference correctly" do
88
+ res = Puppet::Parser::Resource.new(@arguments)
89
+ res.ref.should == "Resource[testing]"
90
+ end
91
+ end
92
+
93
+ describe "when evaluating" do
94
+ before do
95
+ @type = Puppet::Parser::Resource
96
+
97
+ @definition = @parser.newdefine "mydefine"
98
+ @class = @parser.newclass "myclass"
99
+ @nodedef = @parser.newnode("mynode")[0]
100
+ end
101
+
102
+ it "should evaluate the associated AST definition" do
103
+ res = @type.new(:type => "mydefine", :title => "whatever", :scope => @scope, :source => @source)
104
+ @definition.expects(:evaluate_code).with(res)
105
+
106
+ res.evaluate
107
+ end
108
+
109
+ it "should evaluate the associated AST class" do
110
+ res = @type.new(:type => "class", :title => "myclass", :scope => @scope, :source => @source)
111
+ @class.expects(:evaluate_code).with(res)
112
+ res.evaluate
113
+ end
114
+
115
+ it "should evaluate the associated AST node" do
116
+ res = @type.new(:type => "node", :title => "mynode", :scope => @scope, :source => @source)
117
+ @nodedef.expects(:evaluate_code).with(res)
118
+ res.evaluate
119
+ end
120
+ end
121
+
122
+ describe "when finishing" do
123
+ before do
124
+ @class = @parser.newclass "myclass"
125
+ @nodedef = @parser.newnode("mynode")[0]
126
+
127
+ @resource = Puppet::Parser::Resource.new(:type => "file", :title => "whatever", :scope => @scope, :source => @source)
128
+ end
129
+
130
+ it "should do nothing if it has already been finished" do
131
+ @resource.finish
132
+ @resource.expects(:add_metaparams).never
133
+ @resource.finish
134
+ end
135
+
136
+ it "should add all defaults available from the scope" do
137
+ @resource.scope.expects(:lookupdefaults).with(@resource.type).returns(:owner => param(:owner, "default", @resource.source))
138
+ @resource.finish
139
+
140
+ @resource[:owner].should == "default"
141
+ end
142
+
143
+ it "should not replace existing parameters with defaults" do
144
+ @resource.set_parameter :owner, "oldvalue"
145
+ @resource.scope.expects(:lookupdefaults).with(@resource.type).returns(:owner => :replaced)
146
+ @resource.finish
147
+
148
+ @resource[:owner].should == "oldvalue"
149
+ end
150
+
151
+ it "should add a copy of each default, rather than the actual default parameter instance" do
152
+ newparam = param(:owner, "default", @resource.source)
153
+ other = newparam.dup
154
+ other.value = "other"
155
+ newparam.expects(:dup).returns(other)
156
+ @resource.scope.expects(:lookupdefaults).with(@resource.type).returns(:owner => newparam)
157
+ @resource.finish
158
+
159
+ @resource[:owner].should == "other"
160
+ end
161
+
162
+ it "should copy metaparams from its scope" do
163
+ @scope.setvar("noop", "true")
164
+
165
+ @resource.class.publicize_methods(:add_metaparams) { @resource.add_metaparams }
166
+
167
+ @resource["noop"].should == "true"
168
+ end
169
+
170
+ it "should not copy metaparams that it already has" do
171
+ @resource.set_parameter("noop", "false")
172
+ @scope.setvar("noop", "true")
173
+
174
+ @resource.class.publicize_methods(:add_metaparams) { @resource.add_metaparams }
175
+
176
+ @resource["noop"].should == "false"
177
+ end
178
+
179
+ it "should copy all metaparams that it finds" do
180
+ @scope.setvar("require", "container")
181
+ @scope.setvar("notify", "container")
182
+
183
+ @resource.class.publicize_methods(:add_metaparams) { @resource.add_metaparams }
184
+
185
+ @resource["require"].should == "container"
186
+ @resource["notify"].should == "container"
187
+ end
188
+
189
+ it "should stack relationship metaparams from its container if it already has them" do
190
+ @resource.set_parameter("require", "resource")
191
+ @scope.setvar("require", "container")
192
+
193
+ @resource.class.publicize_methods(:add_metaparams) { @resource.add_metaparams }
194
+
195
+ @resource["require"].sort.should == %w{container resource}
196
+ end
197
+
198
+ it "should flatten the array resulting from stacking relationship metaparams" do
199
+ @resource.set_parameter("require", ["resource1", "resource2"])
200
+ @scope.setvar("require", %w{container1 container2})
201
+
202
+ @resource.class.publicize_methods(:add_metaparams) { @resource.add_metaparams }
203
+
204
+ @resource["require"].sort.should == %w{container1 container2 resource1 resource2}
205
+ end
206
+
207
+ it "should add any tags from the scope resource" do
208
+ scope_resource = stub 'scope_resource', :tags => %w{one two}
209
+ @scope.stubs(:resource).returns(scope_resource)
210
+
211
+ @resource.class.publicize_methods(:add_scope_tags) { @resource.add_scope_tags }
212
+
213
+ @resource.tags.should be_include("one")
214
+ @resource.tags.should be_include("two")
215
+ end
216
+ end
217
+
218
+ describe "when being tagged" do
219
+ before do
220
+ @scope_resource = stub 'scope_resource', :tags => %w{srone srtwo}
221
+ @scope = stub 'scope', :resource => @scope_resource
222
+ @resource = Puppet::Parser::Resource.new(:type => "file", :title => "yay", :scope => @scope, :source => mock('source'))
223
+ end
224
+
225
+ it "should get tagged with the resource type" do
226
+ @resource.tags.should be_include("file")
227
+ end
228
+
229
+ it "should get tagged with the title" do
230
+ @resource.tags.should be_include("yay")
231
+ end
232
+
233
+ it "should get tagged with each name in the title if the title is a qualified class name" do
234
+ resource = Puppet::Parser::Resource.new(:type => "file", :title => "one::two", :scope => @scope, :source => mock('source'))
235
+ resource.tags.should be_include("one")
236
+ resource.tags.should be_include("two")
237
+ end
238
+
239
+ it "should get tagged with each name in the type if the type is a qualified class name" do
240
+ resource = Puppet::Parser::Resource.new(:type => "one::two", :title => "whatever", :scope => @scope, :source => mock('source'))
241
+ resource.tags.should be_include("one")
242
+ resource.tags.should be_include("two")
243
+ end
244
+
245
+ it "should not get tagged with non-alphanumeric titles" do
246
+ resource = Puppet::Parser::Resource.new(:type => "file", :title => "this is a test", :scope => @scope, :source => mock('source'))
247
+ resource.tags.should_not be_include("this is a test")
248
+ end
249
+
250
+ it "should fail on tags containing '*' characters" do
251
+ lambda { @resource.tag("bad*tag") }.should raise_error(Puppet::ParseError)
252
+ end
253
+
254
+ it "should fail on tags starting with '-' characters" do
255
+ lambda { @resource.tag("-badtag") }.should raise_error(Puppet::ParseError)
256
+ end
257
+
258
+ it "should fail on tags containing ' ' characters" do
259
+ lambda { @resource.tag("bad tag") }.should raise_error(Puppet::ParseError)
260
+ end
261
+
262
+ it "should allow alpha tags" do
263
+ lambda { @resource.tag("good_tag") }.should_not raise_error(Puppet::ParseError)
264
+ end
265
+ end
266
+
267
+ describe "when merging overrides" do
268
+ before do
269
+ @source = "source1"
270
+ @resource = mkresource :source => @source
271
+ @override = mkresource :source => @source
272
+ end
273
+
274
+ it "should fail when the override was not created by a parent class" do
275
+ @override.source = "source2"
276
+ @override.source.expects(:child_of?).with("source1").returns(false)
277
+ lambda { @resource.merge(@override) }.should raise_error(Puppet::ParseError)
278
+ end
279
+
280
+ it "should succeed when the override was created in the current scope" do
281
+ @resource.source = "source3"
282
+ @override.source = @resource.source
283
+ @override.source.expects(:child_of?).with("source3").never
284
+ params = {:a => :b, :c => :d}
285
+ @override.expects(:params).returns(params)
286
+ @resource.expects(:override_parameter).with(:b)
287
+ @resource.expects(:override_parameter).with(:d)
288
+ @resource.merge(@override)
289
+ end
290
+
291
+ it "should succeed when a parent class created the override" do
292
+ @resource.source = "source3"
293
+ @override.source = "source4"
294
+ @override.source.expects(:child_of?).with("source3").returns(true)
295
+ params = {:a => :b, :c => :d}
296
+ @override.expects(:params).returns(params)
297
+ @resource.expects(:override_parameter).with(:b)
298
+ @resource.expects(:override_parameter).with(:d)
299
+ @resource.merge(@override)
300
+ end
301
+
302
+ it "should add new parameters when the parameter is not set" do
303
+ @source.stubs(:child_of?).returns true
304
+ @override.set_parameter(:testing, "value")
305
+ @resource.merge(@override)
306
+
307
+ @resource[:testing].should == "value"
308
+ end
309
+
310
+ it "should replace existing parameter values" do
311
+ @source.stubs(:child_of?).returns true
312
+ @resource.set_parameter(:testing, "old")
313
+ @override.set_parameter(:testing, "value")
314
+
315
+ @resource.merge(@override)
316
+
317
+ @resource[:testing].should == "value"
318
+ end
319
+
320
+ it "should add values to the parameter when the override was created with the '+>' syntax" do
321
+ @source.stubs(:child_of?).returns true
322
+ param = Puppet::Parser::Resource::Param.new(:name => :testing, :value => "testing", :source => @resource.source)
323
+ param.add = true
324
+
325
+ @override.set_parameter(param)
326
+
327
+ @resource.set_parameter(:testing, "other")
328
+
329
+ @resource.merge(@override)
330
+
331
+ @resource[:testing].should == %w{other testing}
332
+ end
333
+
334
+
335
+ end
336
+ end