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,27 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.dirname(__FILE__) + '/../../spec_helper'
4
+
5
+ resources = Puppet::Type.type(:resources)
6
+
7
+ # There are still plenty of tests to port over from test/.
8
+ describe resources do
9
+ describe "when initializing" do
10
+ before do
11
+ resources.clear
12
+ end
13
+
14
+ it "should fail if the specified resource type does not exist" do
15
+ Puppet::Type.expects(:type).with("nosuchtype").returns nil
16
+ lambda { resources.create :name => "nosuchtype" }.should raise_error(Puppet::Error)
17
+ end
18
+
19
+ it "should not fail when the specified resource type exists" do
20
+ lambda { resources.create :name => "file" }.should_not raise_error
21
+ end
22
+
23
+ it "should set its :resource_type attribute" do
24
+ resources.create(:name => "file").resource_type.should == Puppet::Type.type(:file)
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,339 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.dirname(__FILE__) + '/../../spec_helper'
4
+
5
+ module ScheduleTesting
6
+
7
+ def format(time)
8
+ time.strftime("%H:%M:%S")
9
+ end
10
+
11
+ def diff(unit, incr, method, count)
12
+ diff = Time.now.to_i.send(method, incr * count)
13
+ Time.at(diff)
14
+ end
15
+
16
+ def month(method, count)
17
+ diff(:hour, 3600 * 24 * 30, method, count)
18
+ end
19
+
20
+ def week(method, count)
21
+ diff(:hour, 3600 * 24 * 7, method, count)
22
+ end
23
+
24
+ def day(method, count)
25
+ diff(:hour, 3600 * 24, method, count)
26
+ end
27
+
28
+ def hour(method, count)
29
+ diff(:hour, 3600, method, count)
30
+ end
31
+
32
+ def min(method, count)
33
+ diff(:min, 60, method, count)
34
+ end
35
+
36
+ def sec(method, count)
37
+ diff(:sec, 1, method, count)
38
+ end
39
+
40
+ end
41
+
42
+ describe Puppet::Type.type(:schedule) do
43
+
44
+ before :each do
45
+ Puppet.settings.stubs(:value).with(:ignoreschedules).returns(false)
46
+
47
+ @schedule = Puppet::Type.type(:schedule).create(:name => "testing")
48
+ end
49
+
50
+ after :each do
51
+ Puppet::Type.type(:schedule).clear
52
+ end
53
+
54
+
55
+ describe Puppet::Type.type(:schedule) do
56
+ include ScheduleTesting
57
+
58
+ it "should default to :distance for period-matching" do
59
+ @schedule[:periodmatch].should == :distance
60
+ end
61
+
62
+ it "should default to a :repeat of 1" do
63
+ @schedule[:repeat].should == 1
64
+ end
65
+
66
+ it "should never match when the period is :never" do
67
+ @schedule[:period] = :never
68
+ @schedule.match?.should be_false
69
+ end
70
+ end
71
+
72
+ describe Puppet::Type.type(:schedule), "when producing default schedules" do
73
+ include ScheduleTesting
74
+
75
+ %w{hourly daily weekly monthly never}.each do |period|
76
+ period = period.to_sym
77
+ it "should produce a #{period} schedule with the period set appropriately" do
78
+ schedules = Puppet::Type.type(:schedule).mkdefaultschedules
79
+ schedules.find { |s| s[:name] == period.to_s and s[:period] == period }.should be_instance_of(Puppet::Type.type(:schedule))
80
+ end
81
+ end
82
+
83
+ it "should produce a schedule named puppet with a period of hourly and a repeat of 2" do
84
+ schedules = Puppet::Type.type(:schedule).mkdefaultschedules
85
+ schedules.find { |s|
86
+ s[:name] == "puppet" and s[:period] == :hourly and s[:repeat] == 2
87
+ }.should be_instance_of(Puppet::Type.type(:schedule))
88
+ end
89
+ end
90
+
91
+ describe Puppet::Type.type(:schedule), "when matching ranges" do
92
+ include ScheduleTesting
93
+
94
+ it "should match when the start time is before the current time and the end time is after the current time" do
95
+ @schedule[:range] = "%s - %s" % [format(Time.now - 10), format(Time.now + 10)]
96
+ @schedule.match?.should be_true
97
+ end
98
+
99
+ it "should not match when the start time is after the current time" do
100
+ @schedule[:range] = "%s - %s" % [format(Time.now + 5), format(Time.now + 10)]
101
+ @schedule.match?.should be_false
102
+ end
103
+
104
+ it "should not match when the end time is previous to the current time" do
105
+ @schedule[:range] = "%s - %s" % [format(Time.now - 10), format(Time.now - 5)]
106
+ @schedule.match?.should be_false
107
+ end
108
+ end
109
+
110
+ describe Puppet::Type.type(:schedule), "when matching hourly by distance" do
111
+ include ScheduleTesting
112
+
113
+ before do
114
+ @schedule[:period] = :hourly
115
+ @schedule[:periodmatch] = :distance
116
+ end
117
+
118
+ it "should match an hour ago" do
119
+ @schedule.match?(hour("-", 1)).should be_true
120
+ end
121
+
122
+ it "should not match now" do
123
+ @schedule.match?(Time.now).should be_false
124
+ end
125
+
126
+ it "should not match 59 minutes ago" do
127
+ @schedule.match?(min("-", 59)).should be_false
128
+ end
129
+ end
130
+
131
+ describe Puppet::Type.type(:schedule), "when matching daily by distance" do
132
+ include ScheduleTesting
133
+
134
+ before do
135
+ @schedule[:period] = :daily
136
+ @schedule[:periodmatch] = :distance
137
+ end
138
+
139
+ it "should match when the previous time was one day ago" do
140
+ @schedule.match?(day("-", 1)).should be_true
141
+ end
142
+
143
+ it "should not match when the previous time is now" do
144
+ @schedule.match?(Time.now).should be_false
145
+ end
146
+
147
+ it "should not match when the previous time was 23 hours ago" do
148
+ @schedule.match?(hour("-", 23)).should be_false
149
+ end
150
+ end
151
+
152
+ describe Puppet::Type.type(:schedule), "when matching weekly by distance" do
153
+ include ScheduleTesting
154
+
155
+ before do
156
+ @schedule[:period] = :weekly
157
+ @schedule[:periodmatch] = :distance
158
+ end
159
+
160
+ it "should match seven days ago" do
161
+ @schedule.match?(day("-", 7)).should be_true
162
+ end
163
+
164
+ it "should not match now" do
165
+ @schedule.match?(Time.now).should be_false
166
+ end
167
+
168
+ it "should not match six days ago" do
169
+ @schedule.match?(day("-", 6)).should be_false
170
+ end
171
+ end
172
+
173
+ describe Puppet::Type.type(:schedule), "when matching monthly by distance" do
174
+ include ScheduleTesting
175
+
176
+ before do
177
+ @schedule[:period] = :monthly
178
+ @schedule[:periodmatch] = :distance
179
+ end
180
+
181
+ it "should match 32 days ago" do
182
+ @schedule.match?(day("-", 32)).should be_true
183
+ end
184
+
185
+ it "should not match now" do
186
+ @schedule.match?(Time.now).should be_false
187
+ end
188
+
189
+ it "should not match 27 days ago" do
190
+ @schedule.match?(day("-", 27)).should be_false
191
+ end
192
+ end
193
+
194
+ describe Puppet::Type.type(:schedule), "when matching hourly by number" do
195
+ include ScheduleTesting
196
+
197
+ before do
198
+ @schedule[:period] = :hourly
199
+ @schedule[:periodmatch] = :number
200
+ end
201
+
202
+ it "should match if the times are one minute apart and the current minute is 0" do
203
+ current = Time.now
204
+
205
+ # Subtract an hour, reset the minute to zero, then add 59 minutes, so we're the previous hour plus 59 minutes.
206
+ previous = (current - 3600 - (current.min * 60) + (59 * 60))
207
+
208
+ # Now set the "current" time to the zero minute of the current hour.
209
+ now = (current - (current.min * 60))
210
+ Time.stubs(:now).returns(now)
211
+ @schedule.match?(previous).should be_true
212
+ end
213
+
214
+ it "should not match if the times are 58 minutes apart and the current minute is 59" do
215
+ current = Time.now
216
+
217
+ # reset the minute to zero
218
+ previous = current - (current.min * 60)
219
+
220
+ # Now set the "current" time to the 59th minute of the current hour.
221
+ now = (current - (current.min * 60) + (59 * 60))
222
+ Time.stubs(:now).returns(now)
223
+ @schedule.match?(previous).should be_false
224
+ end
225
+ end
226
+
227
+ describe Puppet::Type.type(:schedule), "when matching daily by number" do
228
+ include ScheduleTesting
229
+
230
+ before do
231
+ @schedule[:period] = :daily
232
+ @schedule[:periodmatch] = :number
233
+ end
234
+
235
+ it "should match if the times are one minute apart and the current minute and hour are 0" do
236
+ zero = Time.now
237
+
238
+ # Reset the current time to X:00:00
239
+ current = zero - (zero.hour * 3600) - (zero.min * 60) - zero.sec
240
+
241
+ # Now set the previous time to one minute before that
242
+ previous = current - 60
243
+
244
+ Time.stubs(:now).returns(current)
245
+ @schedule.match?(previous).should be_true
246
+ end
247
+
248
+ it "should not match if the times are 23 hours and 58 minutes apart and the current hour is 23 and the current minute is 59" do
249
+ zero = Time.now
250
+
251
+ # Reset the previous time to 00:00:00
252
+ previous = zero - (zero.hour * 3600) - (zero.min * 60) - zero.sec
253
+
254
+ # Set the current time to 23:59
255
+ now = previous + (23 * 3600) + (59 * 60)
256
+
257
+ Time.stubs(:now).returns(now)
258
+ @schedule.match?(previous).should be_false
259
+ end
260
+ end
261
+
262
+ describe Puppet::Type.type(:schedule), "when matching weekly by number" do
263
+ include ScheduleTesting
264
+
265
+ before do
266
+ @schedule[:period] = :weekly
267
+ @schedule[:periodmatch] = :number
268
+ end
269
+
270
+ it "should match if the previous time is prior to the most recent Sunday" do
271
+ now = Time.now
272
+
273
+ # Subtract the number days we've progressed into the week, plus one because we're zero-indexed.
274
+ previous = now - (3600 * 24 * (now.wday + 1))
275
+
276
+ @schedule.match?(previous).should be_true
277
+ end
278
+
279
+ it "should not match if the previous time is after the most recent Saturday" do
280
+ now = Time.now
281
+
282
+ # Subtract the number days we've progressed into the week
283
+ previous = now - (3600 * 24 * now.wday)
284
+
285
+ @schedule.match?(previous).should be_false
286
+ end
287
+ end
288
+
289
+ describe Puppet::Type.type(:schedule), "when matching monthly by number" do
290
+ include ScheduleTesting
291
+
292
+ before do
293
+ @schedule[:period] = :monthly
294
+ @schedule[:periodmatch] = :number
295
+ end
296
+
297
+ it "should match when the previous time is prior to the first day of this month" do
298
+ now = Time.now
299
+
300
+ # Subtract the number days we've progressed into the month
301
+ previous = now - (3600 * 24 * now.day)
302
+
303
+ @schedule.match?(previous).should be_true
304
+ end
305
+
306
+ it "should not match when the previous time is after the last day of last month" do
307
+ now = Time.now
308
+
309
+ # Subtract the number days we've progressed into the month, minus one
310
+ previous = now - (3600 * 24 * (now.day - 1))
311
+
312
+ @schedule.match?(previous).should be_false
313
+ end
314
+ end
315
+
316
+ describe Puppet::Type.type(:schedule), "when matching with a repeat greater than one" do
317
+ include ScheduleTesting
318
+
319
+ before do
320
+ @schedule[:period] = :daily
321
+ @schedule[:repeat] = 2
322
+ end
323
+
324
+ it "should fail if the periodmatch is 'number'" do
325
+ @schedule[:periodmatch] = :number
326
+ proc { @schedule[:repeat] = 2 }.should raise_error(Puppet::Error)
327
+ end
328
+
329
+ it "should match if the previous run was further away than the distance divided by the repeat" do
330
+ previous = Time.now - (3600 * 13)
331
+ @schedule.match?(previous).should be_true
332
+ end
333
+
334
+ it "should not match if the previous run was closer than the distance divided by the repeat" do
335
+ previous = Time.now - (3600 * 11)
336
+ @schedule.match?(previous).should be_false
337
+ end
338
+ end
339
+ end
@@ -0,0 +1,47 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ Dir.chdir(File.dirname(__FILE__)) { (s = lambda { |f| File.exist?(f) ? require(f) : Dir.chdir("..") { s.call(f) } }).call("spec/spec_helper.rb") }
4
+
5
+ describe Puppet::Type.type(:selboolean), "when validating attributes" do
6
+ [:name, :persistent].each do |param|
7
+ it "should have a #{param} parameter" do
8
+ Puppet::Type.type(:selboolean).attrtype(param).should == :param
9
+ end
10
+ end
11
+
12
+ it "should have a value property" do
13
+ Puppet::Type.type(:selboolean).attrtype(:value).should == :property
14
+ end
15
+ end
16
+
17
+ describe Puppet::Type.type(:selboolean), "when validating values" do
18
+ before do
19
+ @class = Puppet::Type.type(:selboolean)
20
+
21
+ @provider_class = stub 'provider_class', :name => "fake", :suitable? => true, :supports_parameter? => true
22
+ @class.stubs(:defaultprovider).returns(@provider_class)
23
+ @class.stubs(:provider).returns(@provider_class)
24
+
25
+ @provider = stub 'provider', :class => @provider_class, :clear => nil
26
+ @provider_class.stubs(:new).returns(@provider)
27
+ end
28
+
29
+ it "should support :on as a value to :value" do
30
+ Puppet::Type.type(:selboolean).create(:name => "yay", :value => :on)
31
+ end
32
+
33
+ it "should support :off as a value to :value" do
34
+ Puppet::Type.type(:selboolean).create(:name => "yay", :value => :off)
35
+ end
36
+
37
+ it "should support :true as a value to :persistent" do
38
+ Puppet::Type.type(:selboolean).create(:name => "yay", :value => :on, :persistent => :true)
39
+ end
40
+
41
+ it "should support :false as a value to :persistent" do
42
+ Puppet::Type.type(:selboolean).create(:name => "yay", :value => :on, :persistent => :false)
43
+ end
44
+
45
+ after { Puppet::Type.type(:selboolean).clear }
46
+ end
47
+
@@ -0,0 +1,18 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ Dir.chdir(File.dirname(__FILE__)) { (s = lambda { |f| File.exist?(f) ? require(f) : Dir.chdir("..") { s.call(f) } }).call("spec/spec_helper.rb") }
4
+
5
+ describe Puppet::Type.type(:selmodule), "when validating attributes" do
6
+ [:name, :selmoduledir, :selmodulepath].each do |param|
7
+ it "should have a #{param} parameter" do
8
+ Puppet::Type.type(:selmodule).attrtype(param).should == :param
9
+ end
10
+ end
11
+
12
+ [:ensure, :syncversion].each do |param|
13
+ it "should have a #{param} property" do
14
+ Puppet::Type.type(:selmodule).attrtype(param).should == :property
15
+ end
16
+ end
17
+ end
18
+
@@ -0,0 +1,254 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.dirname(__FILE__) + '/../../spec_helper'
4
+
5
+ describe Puppet::Type.type(:service) do
6
+ it "should have an :enableable feature that requires the :enable, :disable, and :enabled? methods" do
7
+ Puppet::Type.type(:service).provider_feature(:enableable).methods.should == [:disable, :enable, :enabled?]
8
+ end
9
+
10
+ it "should have a :refreshable feature that requires the :restart method" do
11
+ Puppet::Type.type(:service).provider_feature(:refreshable).methods.should == [:restart]
12
+ end
13
+ end
14
+
15
+ describe Puppet::Type.type(:service), "when validating attributes" do
16
+ [:name, :binary, :hasstatus, :path, :pattern, :start, :restart, :stop, :status, :hasrestart, :control].each do |param|
17
+ it "should have a #{param} parameter" do
18
+ Puppet::Type.type(:service).attrtype(param).should == :param
19
+ end
20
+ end
21
+
22
+ [:ensure, :enable].each do |param|
23
+ it "should have an #{param} property" do
24
+ Puppet::Type.type(:service).attrtype(param).should == :property
25
+ end
26
+ end
27
+ end
28
+
29
+ describe Puppet::Type.type(:service), "when validating attribute values" do
30
+ before do
31
+ @provider = stub 'provider', :class => Puppet::Type.type(:service).defaultprovider, :clear => nil, :controllable? => false
32
+ Puppet::Type.type(:service).defaultprovider.stubs(:new).returns(@provider)
33
+ end
34
+
35
+ it "should support :running as a value to :ensure" do
36
+ Puppet::Type.type(:service).create(:name => "yay", :ensure => :running)
37
+ end
38
+
39
+ it "should support :stopped as a value to :ensure" do
40
+ Puppet::Type.type(:service).create(:name => "yay", :ensure => :stopped)
41
+ end
42
+
43
+ it "should alias the value :true to :running in :ensure" do
44
+ svc = Puppet::Type.type(:service).create(:name => "yay", :ensure => true)
45
+ svc.should(:ensure).should == :running
46
+ end
47
+
48
+ it "should alias the value :false to :stopped in :ensure" do
49
+ svc = Puppet::Type.type(:service).create(:name => "yay", :ensure => false)
50
+ svc.should(:ensure).should == :stopped
51
+ end
52
+
53
+ it "should support :true as a value to :enable" do
54
+ Puppet::Type.type(:service).create(:name => "yay", :enable => :true)
55
+ end
56
+
57
+ it "should support :false as a value to :enable" do
58
+ Puppet::Type.type(:service).create(:name => "yay", :enable => :false)
59
+ end
60
+
61
+ it "should support :true as a value to :hasstatus" do
62
+ Puppet::Type.type(:service).create(:name => "yay", :hasstatus => :true)
63
+ end
64
+
65
+ it "should support :false as a value to :hasstatus" do
66
+ Puppet::Type.type(:service).create(:name => "yay", :hasstatus => :false)
67
+ end
68
+
69
+ it "should support :true as a value to :hasrestart" do
70
+ Puppet::Type.type(:service).create(:name => "yay", :hasrestart => :true)
71
+ end
72
+
73
+ it "should support :false as a value to :hasrestart" do
74
+ Puppet::Type.type(:service).create(:name => "yay", :hasrestart => :false)
75
+ end
76
+
77
+ it "should allow setting the :enable parameter if the provider has the :enableable feature" do
78
+ Puppet::Type.type(:service).defaultprovider.stubs(:supports_parameter?).returns(true)
79
+ Puppet::Type.type(:service).defaultprovider.expects(:supports_parameter?).with(Puppet::Type.type(:service).attrclass(:enable)).returns(true)
80
+ svc = Puppet::Type.type(:service).create(:name => "yay", :enable => true)
81
+ svc.should(:enable).should == :true
82
+ end
83
+
84
+ it "should not allow setting the :enable parameter if the provider is missing the :enableable feature" do
85
+ Puppet::Type.type(:service).defaultprovider.stubs(:supports_parameter?).returns(true)
86
+ Puppet::Type.type(:service).defaultprovider.expects(:supports_parameter?).with(Puppet::Type.type(:service).attrclass(:enable)).returns(false)
87
+ svc = Puppet::Type.type(:service).create(:name => "yay", :enable => true)
88
+ svc.should(:enable).should be_nil
89
+ end
90
+
91
+ it "should discard paths that do not exist" do
92
+ FileTest.stubs(:exist?).returns(false)
93
+ FileTest.stubs(:directory?).returns(false)
94
+ svc = Puppet::Type.type(:service).create(:name => "yay", :path => "/one/two")
95
+ svc[:path].should be_empty
96
+ end
97
+
98
+ it "should discard paths that are not directories" do
99
+ FileTest.stubs(:exist?).returns(true)
100
+ FileTest.stubs(:directory?).returns(false)
101
+ svc = Puppet::Type.type(:service).create(:name => "yay", :path => "/one/two")
102
+ svc[:path].should be_empty
103
+ end
104
+
105
+ it "should split paths on ':'" do
106
+ FileTest.stubs(:exist?).returns(true)
107
+ FileTest.stubs(:directory?).returns(true)
108
+ svc = Puppet::Type.type(:service).create(:name => "yay", :path => "/one/two:/three/four")
109
+ svc[:path].should == %w{/one/two /three/four}
110
+ end
111
+
112
+ it "should accept arrays of paths joined by ':'" do
113
+ FileTest.stubs(:exist?).returns(true)
114
+ FileTest.stubs(:directory?).returns(true)
115
+ svc = Puppet::Type.type(:service).create(:name => "yay", :path => ["/one:/two", "/three:/four"])
116
+ svc[:path].should == %w{/one /two /three /four}
117
+ end
118
+
119
+ after { Puppet::Type.type(:service).clear }
120
+ end
121
+
122
+ describe Puppet::Type.type(:service), "when setting default attribute values" do
123
+ it "should default to the provider's default path if one is available" do
124
+ FileTest.stubs(:directory?).returns(true)
125
+ FileTest.stubs(:exist?).returns(true)
126
+
127
+ Puppet::Type.type(:service).defaultprovider.stubs(:respond_to?).returns(true)
128
+ Puppet::Type.type(:service).defaultprovider.stubs(:defpath).returns("testing")
129
+ svc = Puppet::Type.type(:service).create(:name => "other")
130
+ svc[:path].should == ["testing"]
131
+ end
132
+
133
+ it "should default 'pattern' to the binary if one is provided" do
134
+ svc = Puppet::Type.type(:service).create(:name => "other", :binary => "/some/binary")
135
+ svc[:pattern].should == "/some/binary"
136
+ end
137
+
138
+ it "should default 'pattern' to the name if no pattern is provided" do
139
+ svc = Puppet::Type.type(:service).create(:name => "other")
140
+ svc[:pattern].should == "other"
141
+ end
142
+
143
+ it "should default 'control' to the upcased service name with periods replaced by underscores if the provider supports the 'controllable' feature" do
144
+ provider = stub 'provider', :controllable? => true, :class => Puppet::Type.type(:service).defaultprovider, :clear => nil
145
+ Puppet::Type.type(:service).defaultprovider.stubs(:new).returns(provider)
146
+ svc = Puppet::Type.type(:service).create(:name => "nfs.client")
147
+ svc[:control].should == "NFS_CLIENT_START"
148
+ end
149
+
150
+ after { Puppet::Type.type(:service).clear }
151
+ end
152
+
153
+ describe Puppet::Type.type(:service), "when retrieving the host's current state" do
154
+ before do
155
+ @service = Puppet::Type.type(:service).create(:name => "yay")
156
+ end
157
+
158
+ it "should use the provider's status to determine whether the service is running" do
159
+ @service.provider.expects(:status).returns(:yepper)
160
+ @service[:ensure] = :running
161
+ @service.property(:ensure).retrieve.should == :yepper
162
+ end
163
+
164
+ it "should ask the provider whether it is enabled" do
165
+ @service.provider.class.stubs(:supports_parameter?).returns(true)
166
+ @service.provider.expects(:enabled?).returns(:yepper)
167
+ @service[:enable] = true
168
+ @service.property(:enable).retrieve.should == :yepper
169
+ end
170
+
171
+ after { Puppet::Type.type(:service).clear }
172
+ end
173
+
174
+ describe Puppet::Type.type(:service), "when changing the host" do
175
+ before do
176
+ @service = Puppet::Type.type(:service).create(:name => "yay")
177
+ end
178
+
179
+ it "should start the service if it is supposed to be running" do
180
+ @service[:ensure] = :running
181
+ @service.provider.expects(:start)
182
+ @service.property(:ensure).sync
183
+ end
184
+
185
+ it "should stop the service if it is supposed to be stopped" do
186
+ @service[:ensure] = :stopped
187
+ @service.provider.expects(:stop)
188
+ @service.property(:ensure).sync
189
+ end
190
+
191
+ it "should enable the service if it is supposed to be enabled" do
192
+ @service.provider.class.stubs(:supports_parameter?).returns(true)
193
+ @service[:enable] = true
194
+ @service.provider.expects(:enable)
195
+ @service.property(:enable).sync
196
+ end
197
+
198
+ it "should disable the service if it is supposed to be disabled" do
199
+ @service.provider.class.stubs(:supports_parameter?).returns(true)
200
+ @service[:enable] = false
201
+ @service.provider.expects(:disable)
202
+ @service.property(:enable).sync
203
+ end
204
+
205
+ it "should sync the service's enable state when changing the state of :ensure if :enable is being managed" do
206
+ @service.provider.class.stubs(:supports_parameter?).returns(true)
207
+ @service[:enable] = false
208
+ @service[:ensure] = :stopped
209
+
210
+ @service.property(:enable).expects(:retrieve).returns("whatever")
211
+ @service.property(:enable).expects(:insync?).returns(false)
212
+ @service.property(:enable).expects(:sync)
213
+
214
+ @service.provider.stubs(:stop)
215
+
216
+ @service.property(:ensure).sync
217
+ end
218
+
219
+ after { Puppet::Type.type(:service).clear }
220
+ end
221
+
222
+ describe Puppet::Type.type(:service), "when refreshing the service" do
223
+ before do
224
+ @service = Puppet::Type.type(:service).create(:name => "yay")
225
+ end
226
+
227
+ it "should restart the service if it is running" do
228
+ @service[:ensure] = :running
229
+ @service.provider.expects(:status).returns(:running)
230
+ @service.provider.expects(:restart)
231
+ @service.refresh
232
+ end
233
+
234
+ it "should restart the service if it is running, even if it is supposed to stopped" do
235
+ @service[:ensure] = :stopped
236
+ @service.provider.expects(:status).returns(:running)
237
+ @service.provider.expects(:restart)
238
+ @service.refresh
239
+ end
240
+
241
+ it "should not restart the service if it is not running" do
242
+ @service[:ensure] = :running
243
+ @service.provider.expects(:status).returns(:stopped)
244
+ @service.refresh
245
+ end
246
+
247
+ it "should add :ensure as a property if it is not being managed" do
248
+ @service.provider.expects(:status).returns(:running)
249
+ @service.provider.expects(:restart)
250
+ @service.refresh
251
+ end
252
+
253
+ after { Puppet::Type.type(:service).clear }
254
+ end