puppet 0.18.4 → 0.22.4

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 (673) hide show
  1. data/CHANGELOG +288 -0
  2. data/README +2 -2
  3. data/Rakefile +78 -5
  4. data/bin/puppet +28 -36
  5. data/bin/puppetca +81 -38
  6. data/bin/puppetd +65 -62
  7. data/bin/puppetdoc +409 -140
  8. data/bin/puppetmasterd +59 -47
  9. data/bin/puppetrun +38 -23
  10. data/conf/freebsd/puppetd +26 -0
  11. data/conf/freebsd/puppetmasterd +26 -0
  12. data/conf/gentoo/conf.d/puppet +5 -0
  13. data/conf/gentoo/conf.d/puppetmaster +12 -0
  14. data/conf/gentoo/init.d/puppet +38 -0
  15. data/conf/gentoo/init.d/puppetmaster +50 -0
  16. data/conf/gentoo/puppet/fileserver.conf +12 -0
  17. data/conf/gentoo/puppet/puppetca.conf +29 -0
  18. data/conf/gentoo/puppet/puppetd.conf +29 -0
  19. data/conf/gentoo/puppet/puppetmasterd.conf +29 -0
  20. data/conf/redhat/client.init +10 -5
  21. data/conf/redhat/client.sysconfig +1 -1
  22. data/conf/redhat/fileserver.conf +2 -2
  23. data/conf/redhat/logrotate +1 -1
  24. data/conf/redhat/no-lockdir.patch +13 -0
  25. data/conf/redhat/puppet.spec +65 -8
  26. data/conf/redhat/puppetd.conf +0 -4
  27. data/conf/redhat/server.init +3 -6
  28. data/conf/solaris/pkginfo +1 -1
  29. data/conf/solaris/smf/svc-puppetd +2 -2
  30. data/conf/suse/client.init +142 -0
  31. data/conf/suse/puppet.spec +221 -0
  32. data/conf/suse/server.init +162 -0
  33. data/examples/code/mac_automount.pp +16 -0
  34. data/examples/root/bin/sleeper +3 -5
  35. data/examples/root/etc/init.d/sleeper +8 -2
  36. data/examples/root/etc/puppet/fileserver.conf +12 -2
  37. data/examples/root/etc/puppet/namespaceauth.conf +20 -0
  38. data/examples/root/etc/puppet/puppetd.conf +4 -0
  39. data/examples/root/etc/puppet/puppetmasterd.conf +6 -9
  40. data/examples/root/etc/puppet/tagmail.conf +1 -0
  41. data/ext/emacs/puppet-mode.el +46 -1
  42. data/ext/logcheck/puppet +15 -0
  43. data/ext/module_puppet +15 -23
  44. data/ext/vim/puppet.vim +4 -2
  45. data/install.rb +2 -1
  46. data/lib/puppet.rb +76 -207
  47. data/lib/puppet/configuration.rb +331 -0
  48. data/lib/puppet/daemon.rb +63 -246
  49. data/lib/puppet/dsl.rb +371 -0
  50. data/lib/puppet/element.rb +8 -26
  51. data/lib/puppet/error.rb +54 -0
  52. data/lib/puppet/event.rb +8 -243
  53. data/lib/puppet/{base64.rb → external/base64.rb} +0 -0
  54. data/lib/puppet/external/event-loop.rb +1 -0
  55. data/lib/puppet/{event-loop → external/event-loop}/better-definers.rb +0 -0
  56. data/lib/puppet/{event-loop → external/event-loop}/event-loop.rb +2 -2
  57. data/lib/puppet/{event-loop → external/event-loop}/signal-system.rb +1 -1
  58. data/lib/puppet/external/gratr.rb +33 -0
  59. data/lib/puppet/external/gratr/adjacency_graph.rb +257 -0
  60. data/lib/puppet/external/gratr/base.rb +34 -0
  61. data/lib/puppet/external/gratr/biconnected.rb +116 -0
  62. data/lib/puppet/external/gratr/chinese_postman.rb +123 -0
  63. data/lib/puppet/external/gratr/common.rb +73 -0
  64. data/lib/puppet/external/gratr/comparability.rb +92 -0
  65. data/lib/puppet/external/gratr/digraph.rb +116 -0
  66. data/lib/puppet/external/gratr/digraph_distance.rb +185 -0
  67. data/lib/puppet/external/gratr/dot.rb +90 -0
  68. data/lib/puppet/external/gratr/edge.rb +145 -0
  69. data/lib/puppet/external/gratr/graph.rb +303 -0
  70. data/lib/puppet/external/gratr/graph_api.rb +83 -0
  71. data/lib/puppet/external/gratr/import.rb +44 -0
  72. data/lib/puppet/external/gratr/labels.rb +90 -0
  73. data/lib/puppet/external/gratr/maximum_flow.rb +64 -0
  74. data/lib/puppet/external/gratr/rdot.rb +327 -0
  75. data/lib/puppet/external/gratr/search.rb +409 -0
  76. data/lib/puppet/external/gratr/strong_components.rb +127 -0
  77. data/lib/puppet/external/gratr/undirected_graph.rb +153 -0
  78. data/lib/puppet/{lock.rb → external/lock.rb} +1 -1
  79. data/lib/puppet/feature/base.rb +20 -0
  80. data/lib/puppet/feature/rails.rb +52 -0
  81. data/lib/puppet/metatype/attributes.rb +719 -0
  82. data/lib/puppet/metatype/closure.rb +111 -0
  83. data/lib/puppet/metatype/container.rb +94 -0
  84. data/lib/puppet/metatype/evaluation.rb +118 -0
  85. data/lib/puppet/metatype/instances.rb +261 -0
  86. data/lib/puppet/metatype/manager.rb +169 -0
  87. data/lib/puppet/metatype/metaparams.rb +409 -0
  88. data/lib/puppet/metatype/providers.rb +260 -0
  89. data/lib/puppet/metatype/relationships.rb +116 -0
  90. data/lib/puppet/metatype/schedules.rb +39 -0
  91. data/lib/puppet/metatype/tags.rb +39 -0
  92. data/lib/puppet/modules.rb +113 -0
  93. data/lib/puppet/network/authconfig.rb +168 -0
  94. data/lib/puppet/network/authorization.rb +84 -0
  95. data/lib/puppet/network/authstore.rb +293 -0
  96. data/lib/puppet/network/client.rb +187 -0
  97. data/lib/puppet/network/client/ca.rb +56 -0
  98. data/lib/puppet/network/client/dipper.rb +81 -0
  99. data/lib/puppet/network/client/file.rb +7 -0
  100. data/lib/puppet/network/client/logger.rb +6 -0
  101. data/lib/puppet/network/client/master.rb +644 -0
  102. data/lib/puppet/{client → network/client}/proxy.rb +3 -3
  103. data/lib/puppet/{client/reporter.rb → network/client/report.rb} +4 -7
  104. data/lib/puppet/{client/pelement.rb → network/client/resource.rb} +6 -19
  105. data/lib/puppet/network/client/runner.rb +13 -0
  106. data/lib/puppet/network/client/status.rb +5 -0
  107. data/lib/puppet/network/client_request.rb +32 -0
  108. data/lib/puppet/network/handler.rb +33 -0
  109. data/lib/puppet/{server → network/handler}/ca.rb +5 -6
  110. data/lib/puppet/network/handler/filebucket.rb +180 -0
  111. data/lib/puppet/{server → network/handler}/fileserver.rb +277 -219
  112. data/lib/puppet/{server → network/handler}/logger.rb +3 -5
  113. data/lib/puppet/{server → network/handler}/master.rb +42 -8
  114. data/lib/puppet/network/handler/report.rb +158 -0
  115. data/lib/puppet/network/handler/resource.rb +190 -0
  116. data/lib/puppet/{server → network/handler}/runner.rb +17 -18
  117. data/lib/puppet/network/handler/status.rb +13 -0
  118. data/lib/puppet/network/rights.rb +74 -0
  119. data/lib/puppet/network/server.rb +5 -0
  120. data/lib/puppet/network/server/mongrel.rb +138 -0
  121. data/lib/puppet/network/server/webrick.rb +153 -0
  122. data/lib/puppet/network/xmlrpc/client.rb +129 -0
  123. data/lib/puppet/network/xmlrpc/processor.rb +91 -0
  124. data/lib/puppet/network/xmlrpc/server.rb +20 -0
  125. data/lib/puppet/network/xmlrpc/webrick_servlet.rb +121 -0
  126. data/lib/puppet/parameter.rb +390 -346
  127. data/lib/puppet/parser/ast.rb +116 -147
  128. data/lib/puppet/parser/ast/astarray.rb +17 -33
  129. data/lib/puppet/parser/ast/branch.rb +2 -0
  130. data/lib/puppet/parser/ast/caseopt.rb +7 -12
  131. data/lib/puppet/parser/ast/casestatement.rb +23 -32
  132. data/lib/puppet/parser/ast/collection.rb +19 -80
  133. data/lib/puppet/parser/ast/collexpr.rb +81 -0
  134. data/lib/puppet/parser/ast/component.rb +160 -89
  135. data/lib/puppet/parser/ast/else.rb +30 -0
  136. data/lib/puppet/parser/ast/function.rb +9 -2
  137. data/lib/puppet/parser/ast/hostclass.rb +47 -131
  138. data/lib/puppet/parser/ast/ifstatement.rb +43 -0
  139. data/lib/puppet/parser/ast/leaf.rb +10 -21
  140. data/lib/puppet/parser/ast/node.rb +32 -79
  141. data/lib/puppet/parser/ast/resourcedef.rb +222 -0
  142. data/lib/puppet/parser/ast/{typedefaults.rb → resourcedefaults.rb} +10 -16
  143. data/lib/puppet/parser/ast/resourceoverride.rb +62 -0
  144. data/lib/puppet/parser/ast/{objectparam.rb → resourceparam.rb} +12 -6
  145. data/lib/puppet/parser/ast/resourceref.rb +44 -0
  146. data/lib/puppet/parser/ast/selector.rb +16 -8
  147. data/lib/puppet/parser/ast/tag.rb +3 -1
  148. data/lib/puppet/parser/ast/vardef.rb +8 -12
  149. data/lib/puppet/parser/collector.rb +181 -0
  150. data/lib/puppet/parser/functions.rb +191 -36
  151. data/lib/puppet/parser/interpreter.rb +802 -380
  152. data/lib/puppet/parser/lexer.rb +86 -19
  153. data/lib/puppet/parser/parser.rb +1123 -960
  154. data/lib/puppet/parser/resource.rb +353 -0
  155. data/lib/puppet/parser/resource/param.rb +57 -0
  156. data/lib/puppet/parser/resource/reference.rb +71 -0
  157. data/lib/puppet/parser/scope.rb +573 -1000
  158. data/lib/puppet/parser/templatewrapper.rb +54 -0
  159. data/lib/puppet/pgraph.rb +208 -0
  160. data/lib/puppet/propertychange.rb +143 -0
  161. data/lib/puppet/provider.rb +302 -0
  162. data/lib/puppet/provider/cron/crontab.rb +187 -0
  163. data/lib/puppet/provider/group/groupadd.rb +29 -0
  164. data/lib/puppet/provider/group/netinfo.rb +12 -0
  165. data/lib/puppet/provider/group/pw.rb +31 -0
  166. data/lib/puppet/provider/host/netinfo.rb +18 -0
  167. data/lib/puppet/provider/host/parsed.rb +73 -0
  168. data/lib/puppet/provider/mount.rb +57 -0
  169. data/lib/puppet/provider/mount/netinfo.rb +38 -0
  170. data/lib/puppet/provider/mount/parsed.rb +37 -0
  171. data/lib/puppet/provider/nameservice.rb +344 -0
  172. data/lib/puppet/provider/nameservice/netinfo.rb +210 -0
  173. data/lib/puppet/provider/nameservice/objectadd.rb +45 -0
  174. data/lib/puppet/provider/nameservice/pw.rb +22 -0
  175. data/lib/puppet/provider/package/apple.rb +53 -0
  176. data/lib/puppet/provider/package/apt.rb +119 -0
  177. data/lib/puppet/provider/package/aptitude.rb +30 -0
  178. data/lib/puppet/provider/package/aptrpm.rb +79 -0
  179. data/lib/puppet/provider/package/blastwave.rb +114 -0
  180. data/lib/puppet/provider/package/darwinport.rb +88 -0
  181. data/lib/puppet/provider/package/dpkg.rb +109 -0
  182. data/lib/puppet/provider/package/freebsd.rb +43 -0
  183. data/lib/puppet/provider/package/gem.rb +104 -0
  184. data/lib/puppet/provider/package/openbsd.rb +93 -0
  185. data/lib/puppet/provider/package/pkgdmg.rb +119 -0
  186. data/lib/puppet/provider/package/portage.rb +112 -0
  187. data/lib/puppet/provider/package/ports.rb +94 -0
  188. data/lib/puppet/provider/package/rpm.rb +125 -0
  189. data/lib/puppet/provider/package/rug.rb +53 -0
  190. data/lib/puppet/provider/package/sun.rb +168 -0
  191. data/lib/puppet/provider/package/sunfreeware.rb +9 -0
  192. data/lib/puppet/provider/package/up2date.rb +45 -0
  193. data/lib/puppet/provider/package/yum.rb +54 -0
  194. data/lib/puppet/provider/parsedfile.rb +342 -0
  195. data/lib/puppet/provider/port/parsed.rb +174 -0
  196. data/lib/puppet/provider/service/base.rb +136 -0
  197. data/lib/puppet/provider/service/debian.rb +32 -0
  198. data/lib/puppet/provider/service/gentoo.rb +49 -0
  199. data/lib/puppet/{type → provider}/service/init.rb +42 -40
  200. data/lib/puppet/provider/service/redhat.rb +59 -0
  201. data/lib/puppet/{type → provider}/service/smf.rb +24 -13
  202. data/lib/puppet/provider/sshkey/parsed.rb +36 -0
  203. data/lib/puppet/provider/user/netinfo.rb +106 -0
  204. data/lib/puppet/provider/user/pw.rb +41 -0
  205. data/lib/puppet/provider/user/useradd.rb +67 -0
  206. data/lib/puppet/provider/zone/solaris.rb +208 -0
  207. data/lib/puppet/rails.rb +102 -66
  208. data/lib/puppet/rails/database/001_add_indexes.rb +38 -0
  209. data/lib/puppet/rails/database/schema.rb +89 -0
  210. data/lib/puppet/rails/external/tagging/acts_as_taggable.rb +62 -0
  211. data/lib/puppet/rails/external/tagging/init.rb +5 -0
  212. data/lib/puppet/rails/external/tagging/tag.rb +50 -0
  213. data/lib/puppet/rails/external/tagging/tagging.rb +12 -0
  214. data/lib/puppet/rails/fact_name.rb +7 -0
  215. data/lib/puppet/rails/fact_value.rb +5 -0
  216. data/lib/puppet/rails/host.rb +95 -46
  217. data/lib/puppet/rails/param_name.rb +28 -0
  218. data/lib/puppet/rails/param_value.rb +5 -0
  219. data/lib/puppet/rails/puppet_class.rb +9 -0
  220. data/lib/puppet/rails/resource.rb +95 -0
  221. data/lib/puppet/rails/source_file.rb +5 -0
  222. data/lib/puppet/relationship.rb +63 -0
  223. data/lib/puppet/reports/log.rb +14 -0
  224. data/lib/puppet/reports/rrdgraph.rb +114 -10
  225. data/lib/puppet/reports/store.rb +64 -0
  226. data/lib/puppet/reports/tagmail.rb +144 -71
  227. data/lib/puppet/sslcertificates.rb +38 -5
  228. data/lib/puppet/sslcertificates/ca.rb +142 -37
  229. data/lib/puppet/sslcertificates/certificate.rb +3 -3
  230. data/lib/puppet/sslcertificates/inventory.rb +53 -0
  231. data/lib/puppet/sslcertificates/support.rb +128 -0
  232. data/lib/puppet/transaction.rb +568 -189
  233. data/lib/puppet/transaction/report.rb +14 -3
  234. data/lib/puppet/transportable.rb +18 -10
  235. data/lib/puppet/type.rb +279 -2299
  236. data/lib/puppet/type/component.rb +63 -63
  237. data/lib/puppet/type/cron.rb +294 -710
  238. data/lib/puppet/type/exec.rb +185 -129
  239. data/lib/puppet/type/group.rb +38 -89
  240. data/lib/puppet/type/host.rb +110 -0
  241. data/lib/puppet/type/mount.rb +189 -0
  242. data/lib/puppet/type/notify.rb +47 -0
  243. data/lib/puppet/type/package.rb +129 -257
  244. data/lib/puppet/type/parsedtype.rb +172 -297
  245. data/lib/puppet/type/pfile.rb +540 -319
  246. data/lib/puppet/type/pfile/checksum.rb +103 -76
  247. data/lib/puppet/type/pfile/content.rb +16 -10
  248. data/lib/puppet/type/pfile/ensure.rb +52 -34
  249. data/lib/puppet/type/pfile/group.rb +25 -18
  250. data/lib/puppet/type/pfile/mode.rb +7 -4
  251. data/lib/puppet/type/pfile/{uid.rb → owner.rb} +21 -17
  252. data/lib/puppet/type/pfile/source.rb +119 -124
  253. data/lib/puppet/type/pfile/target.rb +29 -45
  254. data/lib/puppet/type/pfile/type.rb +2 -2
  255. data/lib/puppet/type/pfilebucket.rb +18 -14
  256. data/lib/puppet/type/port.rb +121 -0
  257. data/lib/puppet/type/property.rb +530 -0
  258. data/lib/puppet/type/resources.rb +150 -0
  259. data/lib/puppet/type/schedule.rb +38 -22
  260. data/lib/puppet/type/service.rb +70 -326
  261. data/lib/puppet/type/sshkey.rb +76 -0
  262. data/lib/puppet/type/tidy.rb +197 -97
  263. data/lib/puppet/type/user.rb +107 -183
  264. data/lib/puppet/type/yumrepo.rb +53 -34
  265. data/lib/puppet/type/zone.rb +55 -208
  266. data/lib/puppet/util.rb +239 -201
  267. data/lib/puppet/util/autoload.rb +107 -0
  268. data/lib/puppet/util/classgen.rb +208 -0
  269. data/lib/puppet/{config.rb → util/config.rb} +102 -54
  270. data/lib/puppet/util/docs.rb +104 -0
  271. data/lib/puppet/util/errors.rb +55 -0
  272. data/lib/puppet/util/execution.rb +22 -0
  273. data/lib/puppet/util/feature.rb +76 -0
  274. data/lib/puppet/util/fileparsing.rb +380 -0
  275. data/lib/puppet/util/filetype.rb +300 -0
  276. data/lib/puppet/util/graph.rb +39 -0
  277. data/lib/puppet/util/inifile.rb +209 -0
  278. data/lib/puppet/util/loadedfile.rb +71 -0
  279. data/lib/puppet/util/log.rb +549 -0
  280. data/lib/puppet/util/logging.rb +20 -0
  281. data/lib/puppet/util/metaid.rb +22 -0
  282. data/lib/puppet/util/methodhelper.rb +37 -0
  283. data/lib/puppet/util/metric.rb +160 -0
  284. data/lib/puppet/util/package.rb +31 -0
  285. data/lib/puppet/util/pidlock.rb +68 -0
  286. data/lib/puppet/util/plist.rb +24 -0
  287. data/lib/puppet/util/plist/generator.rb +226 -0
  288. data/lib/puppet/util/plist/parser.rb +227 -0
  289. data/lib/puppet/util/posix.rb +87 -0
  290. data/lib/puppet/util/provider_features.rb +170 -0
  291. data/lib/puppet/util/rails/collection_merger.rb +42 -0
  292. data/lib/puppet/util/storage.rb +103 -0
  293. data/lib/puppet/util/subclass_loader.rb +83 -0
  294. data/lib/puppet/util/suidmanager.rb +86 -0
  295. data/lib/puppet/util/variables.rb +39 -0
  296. data/lib/puppet/util/warnings.rb +15 -0
  297. data/test/Rakefile +97 -0
  298. data/test/certmgr/ca.rb +81 -0
  299. data/test/certmgr/certmgr.rb +77 -50
  300. data/test/certmgr/inventory.rb +79 -0
  301. data/test/certmgr/support.rb +81 -0
  302. data/test/executables/filebucket.rb +49 -0
  303. data/test/executables/puppetbin.rb +28 -12
  304. data/test/executables/puppetca.rb +75 -54
  305. data/test/executables/puppetd.rb +10 -13
  306. data/test/executables/puppetmasterd.rb +12 -17
  307. data/test/executables/puppetmodule.rb +18 -17
  308. data/test/language/ast.rb +242 -798
  309. data/test/language/ast/casestatement.rb +104 -0
  310. data/test/language/ast/component.rb +133 -0
  311. data/test/language/ast/hostclass.rb +162 -0
  312. data/test/language/ast/selector.rb +62 -0
  313. data/test/language/ast/variable.rb +31 -0
  314. data/test/language/collector.rb +369 -0
  315. data/test/language/functions.rb +305 -18
  316. data/test/language/interpreter.rb +894 -125
  317. data/test/language/lexer.rb +98 -12
  318. data/test/language/node.rb +37 -53
  319. data/test/language/parser.rb +455 -148
  320. data/test/language/resource.rb +535 -0
  321. data/test/language/scope.rb +451 -561
  322. data/test/language/snippets.rb +101 -111
  323. data/test/language/transportable.rb +6 -8
  324. data/test/lib/mocha.rb +19 -0
  325. data/test/lib/mocha/any_instance_method.rb +35 -0
  326. data/test/lib/mocha/auto_verify.rb +113 -0
  327. data/test/lib/mocha/central.rb +35 -0
  328. data/test/lib/mocha/class_method.rb +62 -0
  329. data/test/lib/mocha/expectation.rb +295 -0
  330. data/test/lib/mocha/expectation_error.rb +6 -0
  331. data/test/lib/mocha/infinite_range.rb +27 -0
  332. data/test/lib/mocha/inspect.rb +37 -0
  333. data/test/lib/mocha/instance_method.rb +8 -0
  334. data/test/lib/mocha/metaclass.rb +7 -0
  335. data/test/lib/mocha/mock.rb +20 -0
  336. data/test/lib/mocha/mock_methods.rb +122 -0
  337. data/test/lib/mocha/object.rb +100 -0
  338. data/test/lib/mocha/pretty_parameters.rb +28 -0
  339. data/test/lib/mocha/setup_and_teardown.rb +23 -0
  340. data/test/lib/mocha/standalone.rb +30 -0
  341. data/test/lib/mocha/test_case_adapter.rb +49 -0
  342. data/test/lib/mocha_standalone.rb +2 -0
  343. data/test/lib/puppettest.rb +294 -0
  344. data/test/lib/puppettest/certificates.rb +61 -0
  345. data/test/lib/puppettest/exetest.rb +123 -0
  346. data/test/lib/puppettest/fakes.rb +194 -0
  347. data/test/lib/puppettest/fileparsing.rb +33 -0
  348. data/test/lib/puppettest/filetesting.rb +231 -0
  349. data/test/lib/puppettest/graph.rb +41 -0
  350. data/test/lib/puppettest/parsertesting.rb +392 -0
  351. data/test/lib/puppettest/railstesting.rb +56 -0
  352. data/test/lib/puppettest/reporttesting.rb +19 -0
  353. data/test/lib/puppettest/resourcetesting.rb +73 -0
  354. data/test/lib/puppettest/servertest.rb +72 -0
  355. data/test/lib/puppettest/support.rb +8 -0
  356. data/test/lib/puppettest/support/assertions.rb +101 -0
  357. data/test/lib/puppettest/support/helpers.rb +23 -0
  358. data/test/lib/puppettest/support/resources.rb +37 -0
  359. data/test/lib/puppettest/support/utils.rb +160 -0
  360. data/test/lib/puppettest/testcase.rb +48 -0
  361. data/test/lib/rake/puppet_test_loader.rb +17 -0
  362. data/test/lib/rake/puppet_testtask.rb +17 -0
  363. data/test/lib/spec.rb +8 -0
  364. data/test/lib/spec/callback.rb +11 -0
  365. data/test/lib/spec/callback/callback_container.rb +60 -0
  366. data/test/lib/spec/callback/extensions/module.rb +24 -0
  367. data/test/lib/spec/callback/extensions/object.rb +37 -0
  368. data/test/lib/spec/deprecated.rb +3 -0
  369. data/test/lib/spec/expectations.rb +59 -0
  370. data/test/lib/spec/expectations/differs/default.rb +62 -0
  371. data/test/lib/spec/expectations/errors.rb +6 -0
  372. data/test/lib/spec/expectations/extensions.rb +3 -0
  373. data/test/lib/spec/expectations/extensions/object.rb +109 -0
  374. data/test/lib/spec/expectations/extensions/proc.rb +57 -0
  375. data/test/lib/spec/expectations/extensions/string_and_symbol.rb +17 -0
  376. data/test/lib/spec/expectations/handler.rb +47 -0
  377. data/test/lib/spec/expectations/should.rb +5 -0
  378. data/test/lib/spec/expectations/should/base.rb +64 -0
  379. data/test/lib/spec/expectations/should/change.rb +69 -0
  380. data/test/lib/spec/expectations/should/have.rb +128 -0
  381. data/test/lib/spec/expectations/should/not.rb +74 -0
  382. data/test/lib/spec/expectations/should/should.rb +81 -0
  383. data/test/lib/spec/expectations/sugar.rb +47 -0
  384. data/test/lib/spec/matchers.rb +160 -0
  385. data/test/lib/spec/matchers/be.rb +161 -0
  386. data/test/lib/spec/matchers/be_close.rb +37 -0
  387. data/test/lib/spec/matchers/change.rb +120 -0
  388. data/test/lib/spec/matchers/eql.rb +43 -0
  389. data/test/lib/spec/matchers/equal.rb +43 -0
  390. data/test/lib/spec/matchers/has.rb +44 -0
  391. data/test/lib/spec/matchers/have.rb +140 -0
  392. data/test/lib/spec/matchers/include.rb +50 -0
  393. data/test/lib/spec/matchers/match.rb +41 -0
  394. data/test/lib/spec/matchers/raise_error.rb +100 -0
  395. data/test/lib/spec/matchers/respond_to.rb +35 -0
  396. data/test/lib/spec/matchers/satisfy.rb +47 -0
  397. data/test/lib/spec/matchers/throw_symbol.rb +75 -0
  398. data/test/lib/spec/mocks.rb +232 -0
  399. data/test/lib/spec/mocks/argument_expectation.rb +132 -0
  400. data/test/lib/spec/mocks/error_generator.rb +85 -0
  401. data/test/lib/spec/mocks/errors.rb +10 -0
  402. data/test/lib/spec/mocks/extensions/object.rb +3 -0
  403. data/test/lib/spec/mocks/message_expectation.rb +231 -0
  404. data/test/lib/spec/mocks/methods.rb +40 -0
  405. data/test/lib/spec/mocks/mock.rb +26 -0
  406. data/test/lib/spec/mocks/mock_handler.rb +166 -0
  407. data/test/lib/spec/mocks/order_group.rb +29 -0
  408. data/test/lib/spec/rake/spectask.rb +173 -0
  409. data/test/lib/spec/rake/verify_rcov.rb +47 -0
  410. data/test/lib/spec/runner.rb +132 -0
  411. data/test/lib/spec/runner/backtrace_tweaker.rb +55 -0
  412. data/test/lib/spec/runner/command_line.rb +34 -0
  413. data/test/lib/spec/runner/context.rb +154 -0
  414. data/test/lib/spec/runner/context_eval.rb +142 -0
  415. data/test/lib/spec/runner/context_runner.rb +55 -0
  416. data/test/lib/spec/runner/drb_command_line.rb +21 -0
  417. data/test/lib/spec/runner/execution_context.rb +17 -0
  418. data/test/lib/spec/runner/extensions/kernel.rb +17 -0
  419. data/test/lib/spec/runner/extensions/object.rb +32 -0
  420. data/test/lib/spec/runner/formatter.rb +5 -0
  421. data/test/lib/spec/runner/formatter/base_text_formatter.rb +118 -0
  422. data/test/lib/spec/runner/formatter/html_formatter.rb +219 -0
  423. data/test/lib/spec/runner/formatter/progress_bar_formatter.rb +27 -0
  424. data/test/lib/spec/runner/formatter/rdoc_formatter.rb +22 -0
  425. data/test/lib/spec/runner/formatter/specdoc_formatter.rb +23 -0
  426. data/test/lib/spec/runner/heckle_runner.rb +71 -0
  427. data/test/lib/spec/runner/heckle_runner_win.rb +10 -0
  428. data/test/lib/spec/runner/option_parser.rb +224 -0
  429. data/test/lib/spec/runner/reporter.rb +105 -0
  430. data/test/lib/spec/runner/spec_matcher.rb +25 -0
  431. data/test/lib/spec/runner/spec_parser.rb +41 -0
  432. data/test/lib/spec/runner/spec_should_raise_handler.rb +74 -0
  433. data/test/lib/spec/runner/specification.rb +114 -0
  434. data/test/lib/spec/translator.rb +87 -0
  435. data/test/lib/spec/version.rb +30 -0
  436. data/test/lib/stubba.rb +2 -0
  437. data/test/network/authconfig.rb +72 -0
  438. data/test/network/authorization.rb +138 -0
  439. data/test/network/authstore.rb +450 -0
  440. data/test/network/client/ca.rb +38 -0
  441. data/test/{client → network/client}/client.rb +107 -24
  442. data/test/network/client/dipper.rb +35 -0
  443. data/test/network/client/master.rb +627 -0
  444. data/test/{client/pelement.rb → network/client/resource.rb} +13 -29
  445. data/test/network/client_request.rb +39 -0
  446. data/test/network/daemon.rb +71 -0
  447. data/test/{server → network/handler}/bucket.rb +103 -27
  448. data/test/{server → network/handler}/ca.rb +14 -19
  449. data/test/{server → network/handler}/fileserver.rb +443 -68
  450. data/test/network/handler/handler.rb +64 -0
  451. data/test/{server → network/handler}/logger.rb +26 -26
  452. data/test/network/handler/master.rb +352 -0
  453. data/test/network/handler/report.rb +185 -0
  454. data/test/{server/pelement.rb → network/handler/resource.rb} +25 -38
  455. data/test/{server → network/handler}/runner.rb +17 -16
  456. data/test/network/rights.rb +38 -0
  457. data/test/network/server/webrick.rb +140 -0
  458. data/test/network/xmlrpc/client.rb +68 -0
  459. data/test/network/xmlrpc/processor.rb +80 -0
  460. data/test/network/xmlrpc/server.rb +28 -0
  461. data/test/network/xmlrpc/webrick_servlet.rb +26 -0
  462. data/test/other/dsl.rb +218 -0
  463. data/test/other/events.rb +22 -15
  464. data/test/other/overrides.rb +9 -14
  465. data/test/other/pgraph.rb +289 -0
  466. data/test/other/propertychange.rb +142 -0
  467. data/test/other/provider.rb +162 -0
  468. data/test/other/puppet.rb +63 -10
  469. data/test/other/relationship.rb +74 -0
  470. data/test/other/relationships.rb +199 -123
  471. data/test/other/report.rb +152 -23
  472. data/test/other/transactions.rb +824 -78
  473. data/test/puppet/conffiles.rb +16 -11
  474. data/test/puppet/defaults.rb +7 -10
  475. data/test/puppet/{error.rb → errortest.rb} +5 -8
  476. data/test/puppet/modules.rb +58 -0
  477. data/test/puppet/tc_suidmanager.rb +107 -0
  478. data/test/rails/host.rb +177 -0
  479. data/test/rails/rails.rb +27 -0
  480. data/test/rails/railsparameter.rb +62 -0
  481. data/test/rails/railsresource.rb +100 -0
  482. data/test/ral/manager/attributes.rb +296 -0
  483. data/test/ral/manager/manager.rb +55 -0
  484. data/test/ral/manager/provider.rb +54 -0
  485. data/test/ral/manager/type.rb +837 -0
  486. data/test/ral/providers/cron/crontab.rb +346 -0
  487. data/test/ral/providers/group.rb +252 -0
  488. data/test/ral/providers/host/netinfo.rb +58 -0
  489. data/test/ral/providers/host/parsed.rb +226 -0
  490. data/test/ral/providers/mount/netinfo.rb +80 -0
  491. data/test/ral/providers/mount/parsed.rb +223 -0
  492. data/test/ral/providers/nameservice.rb +33 -0
  493. data/test/ral/providers/package.rb +253 -0
  494. data/test/ral/providers/package/apt.rb +89 -0
  495. data/test/ral/providers/package/aptitude.rb +69 -0
  496. data/test/ral/providers/package/aptrpm.rb +89 -0
  497. data/test/ral/providers/package/dpkg.rb +64 -0
  498. data/test/ral/providers/parsedfile.rb +668 -0
  499. data/test/ral/providers/parsedport.rb +233 -0
  500. data/test/ral/providers/provider.rb +423 -0
  501. data/test/{types → ral/providers}/service.rb +20 -121
  502. data/test/ral/providers/service/base.rb +75 -0
  503. data/test/ral/providers/sshkey/parsed.rb +111 -0
  504. data/test/ral/providers/user.rb +567 -0
  505. data/test/ral/providers/user/useradd.rb +250 -0
  506. data/test/ral/types/basic.rb +90 -0
  507. data/test/ral/types/component.rb +113 -0
  508. data/test/ral/types/cron.rb +480 -0
  509. data/test/{types → ral/types}/exec.rb +278 -82
  510. data/test/ral/types/file.rb +1799 -0
  511. data/test/ral/types/file/target.rb +363 -0
  512. data/test/{types → ral/types}/filebucket.rb +15 -17
  513. data/test/{types → ral/types}/fileignoresource.rb +9 -15
  514. data/test/ral/types/filesources.rb +1046 -0
  515. data/test/ral/types/group.rb +169 -0
  516. data/test/ral/types/host.rb +155 -0
  517. data/test/ral/types/mount.rb +312 -0
  518. data/test/ral/types/package.rb +85 -0
  519. data/test/ral/types/parameter.rb +172 -0
  520. data/test/ral/types/port.rb +148 -0
  521. data/test/ral/types/property.rb +343 -0
  522. data/test/ral/types/resources.rb +221 -0
  523. data/test/{types → ral/types}/schedule.rb +34 -12
  524. data/test/ral/types/service.rb +37 -0
  525. data/test/{types → ral/types}/sshkey.rb +75 -65
  526. data/test/ral/types/tidy.rb +240 -0
  527. data/test/ral/types/user.rb +493 -0
  528. data/test/{types → ral/types}/yumrepo.rb +7 -11
  529. data/test/{types → ral/types}/zone.rb +45 -45
  530. data/test/tagging/tagging.rb +17 -26
  531. data/test/util/autoload.rb +130 -0
  532. data/test/util/classgen.rb +227 -0
  533. data/test/{other → util}/config.rb +373 -113
  534. data/test/util/execution.rb +34 -0
  535. data/test/util/features.rb +94 -0
  536. data/test/util/fileparsing.rb +677 -0
  537. data/test/{other → util}/filetype.rb +9 -12
  538. data/test/util/graph.rb +108 -0
  539. data/test/{other → util}/inifile.rb +24 -11
  540. data/test/util/loadedfile.rb +106 -0
  541. data/test/{other → util}/log.rb +96 -50
  542. data/test/{other → util}/metrics.rb +7 -17
  543. data/test/util/package.rb +27 -0
  544. data/test/util/pidlock.rb +126 -0
  545. data/test/util/posixtest.rb +173 -0
  546. data/test/util/storage.rb +123 -0
  547. data/test/util/subclass_loader.rb +100 -0
  548. data/test/util/utiltest.rb +368 -0
  549. metadata +449 -169
  550. data/examples/code/classing +0 -35
  551. data/examples/code/failers/badclassnoparam +0 -10
  552. data/examples/code/failers/badclassparam +0 -10
  553. data/examples/code/failers/badcompnoparam +0 -9
  554. data/examples/code/failers/badcompparam +0 -9
  555. data/examples/code/failers/badtypeparam +0 -3
  556. data/examples/code/failers/noobjectrvalue +0 -1
  557. data/examples/code/snippets/aliastest.pp +0 -16
  558. data/examples/code/snippets/argumentdefaults +0 -14
  559. data/examples/code/snippets/casestatement.pp +0 -58
  560. data/examples/code/snippets/classheirarchy.pp +0 -15
  561. data/examples/code/snippets/classincludes.pp +0 -17
  562. data/examples/code/snippets/classpathtest +0 -11
  563. data/examples/code/snippets/componentmetaparams.pp +0 -11
  564. data/examples/code/snippets/deepclassheirarchy.pp +0 -23
  565. data/examples/code/snippets/defineoverrides.pp +0 -17
  566. data/examples/code/snippets/dirchmod +0 -19
  567. data/examples/code/snippets/emptyclass.pp +0 -9
  568. data/examples/code/snippets/emptyexec.pp +0 -3
  569. data/examples/code/snippets/failmissingexecpath.pp +0 -13
  570. data/examples/code/snippets/falsevalues.pp +0 -3
  571. data/examples/code/snippets/filecreate +0 -11
  572. data/examples/code/snippets/implicititeration +0 -15
  573. data/examples/code/snippets/multipleinstances +0 -7
  574. data/examples/code/snippets/namevartest +0 -9
  575. data/examples/code/snippets/scopetest +0 -13
  576. data/examples/code/snippets/selectorvalues.pp +0 -42
  577. data/examples/code/snippets/simpledefaults +0 -5
  578. data/examples/code/snippets/simpleselector +0 -38
  579. data/examples/code/snippets/singleary.pp +0 -19
  580. data/examples/code/snippets/singlequote.pp +0 -11
  581. data/examples/code/snippets/singleselector.pp +0 -22
  582. data/examples/code/snippets/tag.pp +0 -9
  583. data/examples/code/snippets/tagged.pp +0 -35
  584. data/lib/puppet/client.rb +0 -177
  585. data/lib/puppet/client/ca.rb +0 -21
  586. data/lib/puppet/client/dipper.rb +0 -76
  587. data/lib/puppet/client/file.rb +0 -20
  588. data/lib/puppet/client/log.rb +0 -17
  589. data/lib/puppet/client/master.rb +0 -531
  590. data/lib/puppet/client/runner.rb +0 -17
  591. data/lib/puppet/client/status.rb +0 -7
  592. data/lib/puppet/event-loop.rb +0 -1
  593. data/lib/puppet/filetype.rb +0 -308
  594. data/lib/puppet/inifile.rb +0 -201
  595. data/lib/puppet/log.rb +0 -524
  596. data/lib/puppet/metric.rb +0 -132
  597. data/lib/puppet/networkclient.rb +0 -175
  598. data/lib/puppet/parsedfile.rb +0 -58
  599. data/lib/puppet/parser/ast/classdef.rb +0 -79
  600. data/lib/puppet/parser/ast/compdef.rb +0 -75
  601. data/lib/puppet/parser/ast/nodedef.rb +0 -73
  602. data/lib/puppet/parser/ast/objectdef.rb +0 -284
  603. data/lib/puppet/parser/ast/objectref.rb +0 -77
  604. data/lib/puppet/rails/database.rb +0 -40
  605. data/lib/puppet/rails/rails_object.rb +0 -42
  606. data/lib/puppet/rails/rails_parameter.rb +0 -5
  607. data/lib/puppet/server.rb +0 -196
  608. data/lib/puppet/server/authconfig.rb +0 -177
  609. data/lib/puppet/server/authstore.rb +0 -226
  610. data/lib/puppet/server/filebucket.rb +0 -155
  611. data/lib/puppet/server/pelement.rb +0 -188
  612. data/lib/puppet/server/report.rb +0 -184
  613. data/lib/puppet/server/rights.rb +0 -78
  614. data/lib/puppet/server/servlet.rb +0 -274
  615. data/lib/puppet/statechange.rb +0 -129
  616. data/lib/puppet/storage.rb +0 -98
  617. data/lib/puppet/type/nameservice.rb +0 -264
  618. data/lib/puppet/type/nameservice/netinfo.rb +0 -232
  619. data/lib/puppet/type/nameservice/objectadd.rb +0 -146
  620. data/lib/puppet/type/nameservice/posix.rb +0 -12
  621. data/lib/puppet/type/nameservice/pw.rb +0 -107
  622. data/lib/puppet/type/package/apple.rb +0 -41
  623. data/lib/puppet/type/package/apt.rb +0 -107
  624. data/lib/puppet/type/package/blastwave.rb +0 -136
  625. data/lib/puppet/type/package/darwinport.rb +0 -97
  626. data/lib/puppet/type/package/dpkg.rb +0 -113
  627. data/lib/puppet/type/package/freebsd.rb +0 -19
  628. data/lib/puppet/type/package/gem.rb +0 -119
  629. data/lib/puppet/type/package/openbsd.rb +0 -112
  630. data/lib/puppet/type/package/ports.rb +0 -103
  631. data/lib/puppet/type/package/rpm.rb +0 -121
  632. data/lib/puppet/type/package/sun.rb +0 -174
  633. data/lib/puppet/type/package/sunfreeware.rb +0 -7
  634. data/lib/puppet/type/package/yum.rb +0 -52
  635. data/lib/puppet/type/parsedtype/host.rb +0 -144
  636. data/lib/puppet/type/parsedtype/mount.rb +0 -271
  637. data/lib/puppet/type/parsedtype/port.rb +0 -261
  638. data/lib/puppet/type/parsedtype/sshkey.rb +0 -123
  639. data/lib/puppet/type/service/base.rb +0 -12
  640. data/lib/puppet/type/service/debian.rb +0 -46
  641. data/lib/puppet/type/service/redhat.rb +0 -38
  642. data/lib/puppet/type/state.rb +0 -393
  643. data/lib/puppet/type/symlink.rb +0 -186
  644. data/test/client/master.rb +0 -207
  645. data/test/language/rails.rb +0 -105
  646. data/test/other/parsedfile.rb +0 -58
  647. data/test/other/storage.rb +0 -100
  648. data/test/puppet/utiltest.rb +0 -299
  649. data/test/puppettest.rb +0 -1170
  650. data/test/server/authconfig.rb +0 -56
  651. data/test/server/authstore.rb +0 -218
  652. data/test/server/master.rb +0 -201
  653. data/test/server/report.rb +0 -93
  654. data/test/server/rights.rb +0 -41
  655. data/test/server/server.rb +0 -152
  656. data/test/test +0 -61
  657. data/test/types/basic.rb +0 -117
  658. data/test/types/component.rb +0 -298
  659. data/test/types/cron.rb +0 -718
  660. data/test/types/file.rb +0 -1314
  661. data/test/types/filesources.rb +0 -590
  662. data/test/types/group.rb +0 -323
  663. data/test/types/host.rb +0 -186
  664. data/test/types/mount.rb +0 -294
  665. data/test/types/package.rb +0 -538
  666. data/test/types/parameter.rb +0 -107
  667. data/test/types/port.rb +0 -201
  668. data/test/types/query.rb +0 -101
  669. data/test/types/state.rb +0 -92
  670. data/test/types/symlink.rb +0 -120
  671. data/test/types/tidy.rb +0 -102
  672. data/test/types/type.rb +0 -469
  673. data/test/types/user.rb +0 -563
@@ -1,16 +1,14 @@
1
1
  # Description of yum repositories
2
2
 
3
- require 'puppet/statechange'
4
- require 'puppet/inifile'
3
+ require 'puppet/propertychange'
4
+ require 'puppet/util/inifile'
5
5
  require 'puppet/type/parsedtype'
6
6
 
7
7
  module Puppet
8
-
9
- # A state for one entry in a .ini-style file
10
- class IniState < Puppet::State
11
-
8
+ # A property for one entry in a .ini-style file
9
+ class IniProperty < Puppet::Property
12
10
  def insync?
13
- # A should state of :absent is the same as nil
11
+ # A should property of :absent is the same as nil
14
12
  if is.nil? && (should.nil? || should == :absent)
15
13
  return true
16
14
  end
@@ -21,7 +19,7 @@ module Puppet
21
19
  if insync?
22
20
  result = nil
23
21
  else
24
- result = set
22
+ result = set(self.should)
25
23
  if should == :absent
26
24
  parent.section[inikey] = nil
27
25
  else
@@ -39,8 +37,8 @@ module Puppet
39
37
  name.to_s
40
38
  end
41
39
 
42
- # Set the key associated with this state to KEY, instead
43
- # of using the state's NAME
40
+ # Set the key associated with this property to KEY, instead
41
+ # of using the property's NAME
44
42
  def self.inikey(key)
45
43
  # Override the inikey instance method
46
44
  # Is there a way to do this without resorting to strings ?
@@ -51,7 +49,7 @@ module Puppet
51
49
 
52
50
  end
53
51
 
54
- # Doc string for states that can be made 'absent'
52
+ # Doc string for properties that can be made 'absent'
55
53
  ABSENT_DOC="Set this to 'absent' to remove it from the file completely"
56
54
 
57
55
  newtype(:yumrepo) do
@@ -74,7 +72,7 @@ module Puppet
74
72
  attr_accessor :yumconf
75
73
  end
76
74
 
77
- self.filetype = Puppet::FileType.filetype(:flat)
75
+ self.filetype = Puppet::Util::FileType.filetype(:flat)
78
76
 
79
77
  @inifile = nil
80
78
 
@@ -83,7 +81,28 @@ module Puppet
83
81
  # Where to put files for brand new sections
84
82
  @defaultrepodir = nil
85
83
 
86
- # Return the Puppet::IniConfig::File for the whole yum config
84
+ def self.list
85
+ l = []
86
+ check = validproperties
87
+ clear
88
+ inifile.each_section do |s|
89
+ next if s.name == "main"
90
+ obj = create(:name => s.name, :check => check)
91
+ obj.retrieve
92
+ obj.eachproperty do |property|
93
+ if property.is.nil?
94
+ obj.delete(property.name)
95
+ else
96
+ property.should = property.is
97
+ end
98
+ end
99
+ obj.delete(:check)
100
+ l << obj
101
+ end
102
+ l
103
+ end
104
+
105
+ # Return the Puppet::Util::IniConfig::File for the whole yum config
87
106
  def self.inifile
88
107
  if @inifile.nil?
89
108
  @inifile = read()
@@ -115,7 +134,7 @@ module Puppet
115
134
  # Non-test code should use self.inifile to get at the
116
135
  # underlying file
117
136
  def self.read
118
- result = Puppet::IniConfig::File.new()
137
+ result = Puppet::Util::IniConfig::File.new()
119
138
  result.read(yumconf)
120
139
  main = result['main']
121
140
  if main.nil?
@@ -142,7 +161,7 @@ module Puppet
142
161
  return result
143
162
  end
144
163
 
145
- # Return the Puppet::IniConfig::Section with name NAME
164
+ # Return the Puppet::Util::IniConfig::Section with name NAME
146
165
  # from the yum config
147
166
  def self.section(name)
148
167
  result = inifile[name]
@@ -170,7 +189,7 @@ module Puppet
170
189
  super
171
190
  end
172
191
 
173
- # Return the Puppet::IniConfig::Section for this yumrepo element
192
+ # Return the Puppet::Util::IniConfig::Section for this yumrepo element
174
193
  def section
175
194
  self.class.section(self[:name])
176
195
  end
@@ -182,16 +201,16 @@ module Puppet
182
201
  # writing the whole file
183
202
  # A cleaner solution would be to either use the composite
184
203
  # pattern and encapsulate all changes into a change that does
185
- # not depend on a state and triggers storing, or insert another
204
+ # not depend on a property and triggers storing, or insert another
186
205
  # change at the end of changes to trigger storing Both
187
- # solutions require that the StateChange interface be
206
+ # solutions require that the PropertyChange interface be
188
207
  # abstracted so that it can work with a change that is not
189
- # directly backed by a State
208
+ # directly backed by a Property
190
209
  unless changes.empty?
191
210
  class << changes[-1]
192
211
  def go
193
212
  result = super
194
- self.state.parent.store
213
+ self.property.parent.store
195
214
  return result
196
215
  end
197
216
  end
@@ -209,7 +228,7 @@ module Puppet
209
228
  isnamevar
210
229
  end
211
230
 
212
- newstate(:descr, Puppet::IniState) do
231
+ newproperty(:descr, :parent => Puppet::IniProperty) do
213
232
  desc "A human readable description of the repository.
214
233
  #{ABSENT_DOC}"
215
234
  newvalue(:absent) { self.should = :absent }
@@ -217,7 +236,7 @@ module Puppet
217
236
  inikey "name"
218
237
  end
219
238
 
220
- newstate(:mirrorlist, Puppet::IniState) do
239
+ newproperty(:mirrorlist, :parent => Puppet::IniProperty) do
221
240
  desc "The URL that holds the list of mirrors for this repository.
222
241
  #{ABSENT_DOC}"
223
242
  newvalue(:absent) { self.should = :absent }
@@ -225,21 +244,21 @@ module Puppet
225
244
  newvalue(/.*/) { }
226
245
  end
227
246
 
228
- newstate(:baseurl, Puppet::IniState) do
247
+ newproperty(:baseurl, :parent => Puppet::IniProperty) do
229
248
  desc "The URL for this repository.\n#{ABSENT_DOC}"
230
249
  newvalue(:absent) { self.should = :absent }
231
250
  # Should really check that it's a valid URL
232
251
  newvalue(/.*/) { }
233
252
  end
234
253
 
235
- newstate(:enabled, Puppet::IniState) do
254
+ newproperty(:enabled, :parent => Puppet::IniProperty) do
236
255
  desc "Whether this repository is enabled or disabled. Possible
237
256
  values are '0', and '1'.\n#{ABSENT_DOC}"
238
257
  newvalue(:absent) { self.should = :absent }
239
258
  newvalue(%r{(0|1)}) { }
240
259
  end
241
260
 
242
- newstate(:gpgcheck, Puppet::IniState) do
261
+ newproperty(:gpgcheck, :parent => Puppet::IniProperty) do
243
262
  desc "Whether to check the GPG signature on packages installed
244
263
  from this repository. Possible values are '0', and '1'.
245
264
  \n#{ABSENT_DOC}"
@@ -247,7 +266,7 @@ module Puppet
247
266
  newvalue(%r{(0|1)}) { }
248
267
  end
249
268
 
250
- newstate(:gpgkey, Puppet::IniState) do
269
+ newproperty(:gpgkey, :parent => Puppet::IniProperty) do
251
270
  desc "The URL for the GPG key with which packages from this
252
271
  repository are signed.\n#{ABSENT_DOC}"
253
272
  newvalue(:absent) { self.should = :absent }
@@ -255,14 +274,14 @@ module Puppet
255
274
  newvalue(/.*/) { }
256
275
  end
257
276
 
258
- newstate(:include, Puppet::IniState) do
277
+ newproperty(:include, :parent => Puppet::IniProperty) do
259
278
  desc "A URL from which to include the config.\n#{ABSENT_DOC}"
260
279
  newvalue(:absent) { self.should = :absent }
261
280
  # Should really check that it's a valid URL
262
281
  newvalue(/.*/) { }
263
282
  end
264
283
 
265
- newstate(:exclude, Puppet::IniState) do
284
+ newproperty(:exclude, :parent => Puppet::IniProperty) do
266
285
  desc "List of shell globs. Matching packages will never be
267
286
  considered in updates or installs for this repo.
268
287
  #{ABSENT_DOC}"
@@ -270,7 +289,7 @@ module Puppet
270
289
  newvalue(/.*/) { }
271
290
  end
272
291
 
273
- newstate(:includepkgs, Puppet::IniState) do
292
+ newproperty(:includepkgs, :parent => Puppet::IniProperty) do
274
293
  desc "List of shell globs. If this is set, only packages
275
294
  matching one of the globs will be considered for
276
295
  update or install.\n#{ABSENT_DOC}"
@@ -278,7 +297,7 @@ module Puppet
278
297
  newvalue(/.*/) { }
279
298
  end
280
299
 
281
- newstate(:enablegroups, Puppet::IniState) do
300
+ newproperty(:enablegroups, :parent => Puppet::IniProperty) do
282
301
  desc "Determines whether yum will allow the use of
283
302
  package groups for this repository. Possible
284
303
  values are '0', and '1'.\n#{ABSENT_DOC}"
@@ -286,27 +305,27 @@ module Puppet
286
305
  newvalue(%r{(0|1)}) { }
287
306
  end
288
307
 
289
- newstate(:failovermethod, Puppet::IniState) do
308
+ newproperty(:failovermethod, :parent => Puppet::IniProperty) do
290
309
  desc "Either 'roundrobin' or 'priority'.\n#{ABSENT_DOC}"
291
310
  newvalue(:absent) { self.should = :absent }
292
311
  newvalue(%r(roundrobin|priority)) { }
293
312
  end
294
313
 
295
- newstate(:keepalive, Puppet::IniState) do
314
+ newproperty(:keepalive, :parent => Puppet::IniProperty) do
296
315
  desc "Either '1' or '0'. This tells yum whether or not HTTP/1.1
297
316
  keepalive should be used with this repository.\n#{ABSENT_DOC}"
298
317
  newvalue(:absent) { self.should = :absent }
299
318
  newvalue(%r{(0|1)}) { }
300
319
  end
301
320
 
302
- newstate(:timeout, Puppet::IniState) do
321
+ newproperty(:timeout, :parent => Puppet::IniProperty) do
303
322
  desc "Number of seconds to wait for a connection before timing
304
323
  out.\n#{ABSENT_DOC}"
305
324
  newvalue(:absent) { self.should = :absent }
306
325
  newvalue(%r{[0-9]+}) { }
307
326
  end
308
327
 
309
- newstate(:metadata_expire, Puppet::IniState) do
328
+ newproperty(:metadata_expire, :parent => Puppet::IniProperty) do
310
329
  desc "Number of seconds after which the metadata will expire.
311
330
  #{ABSENT_DOC}"
312
331
  newvalue(:absent) { self.should = :absent }
@@ -1,18 +1,18 @@
1
1
  Puppet::Type.newtype(:zone) do
2
2
  @doc = "Solaris zones."
3
3
 
4
- # These states modify the zone configuration, and they need to provide
4
+ # These properties modify the zone configuration, and they need to provide
5
5
  # the text separately from syncing it, so all config statements can be rolled
6
6
  # into a single creation statement.
7
- class ZoneConfigState < Puppet::State
7
+ class ZoneConfigProperty < Puppet::Property
8
8
  # Perform the config operation.
9
9
  def sync
10
- @parent.cfg self.configtext
10
+ provider.setconfig self.configtext
11
11
  end
12
12
  end
13
13
 
14
- # Those states that can have multiple instances.
15
- class ZoneMultiConfigState < ZoneConfigState
14
+ # Those properties that can have multiple instances.
15
+ class ZoneMultiConfigProperty < ZoneConfigProperty
16
16
  def configtext
17
17
  list = @should
18
18
 
@@ -72,7 +72,7 @@ Puppet::Type.newtype(:zone) do
72
72
  only then can be ``running``. Note also that ``halt`` is currently
73
73
  used to stop zones."
74
74
 
75
- @states = {}
75
+ @properties = {}
76
76
 
77
77
  def self.newvalue(name, hash)
78
78
  if @parametervalues.is_a? Hash
@@ -81,7 +81,7 @@ Puppet::Type.newtype(:zone) do
81
81
 
82
82
  @parametervalues << name
83
83
 
84
- @states[name] = hash
84
+ @properties[name] = hash
85
85
  hash[:name] = name
86
86
  end
87
87
 
@@ -112,11 +112,11 @@ Puppet::Type.newtype(:zone) do
112
112
  # the range op twice.
113
113
  if findex > sindex
114
114
  list = @parametervalues[sindex..findex].collect do |name|
115
- @states[name]
115
+ @properties[name]
116
116
  end.reverse
117
117
  else
118
118
  list = @parametervalues[findex..sindex].collect do |name|
119
- @states[name]
119
+ @properties[name]
120
120
  end
121
121
  end
122
122
 
@@ -141,8 +141,8 @@ Puppet::Type.newtype(:zone) do
141
141
  # everything between it and us.
142
142
  states = self.class.valueslice(self.is, self.should)
143
143
 
144
- states.each do |st|
145
- if method = st[dir]
144
+ properties.each do |prop|
145
+ if method = prop[dir]
146
146
  warned = false
147
147
  while @parent.processing?
148
148
  unless warned
@@ -151,7 +151,7 @@ Puppet::Type.newtype(:zone) do
151
151
  end
152
152
  sleep 1
153
153
  end
154
- @parent.send(method)
154
+ provider.send(method)
155
155
  else
156
156
  raise Puppet::DevError, "Cannot move %s from %s" %
157
157
  [dir, st[:name]]
@@ -161,7 +161,7 @@ Puppet::Type.newtype(:zone) do
161
161
  return ("zone_" + self.should.to_s).intern
162
162
  end
163
163
 
164
- # Are we moving up the state tree?
164
+ # Are we moving up the property tree?
165
165
  def up?
166
166
  self.class.valueindex(self.is) < self.class.valueindex(self.should)
167
167
  end
@@ -178,7 +178,7 @@ Puppet::Type.newtype(:zone) do
178
178
  and cannot be changed."
179
179
  end
180
180
 
181
- newstate(:ip, ZoneMultiConfigState) do
181
+ newproperty(:ip, :parent => ZoneMultiConfigProperty) do
182
182
  require 'ipaddr'
183
183
 
184
184
  desc "The IP address of the zone. IP addresses must be specified
@@ -225,7 +225,7 @@ end
225
225
  end
226
226
  end
227
227
 
228
- newstate(:autoboot, ZoneConfigState) do
228
+ newproperty(:autoboot, :parent => ZoneConfigProperty) do
229
229
  desc "Whether the zone should automatically boot."
230
230
 
231
231
  defaultto true
@@ -238,7 +238,7 @@ end
238
238
  end
239
239
  end
240
240
 
241
- newstate(:pool, ZoneConfigState) do
241
+ newproperty(:pool, :parent => ZoneConfigProperty) do
242
242
  desc "The resource pool for this zone."
243
243
 
244
244
  def configtext
@@ -246,7 +246,15 @@ end
246
246
  end
247
247
  end
248
248
 
249
- newstate(:inherit, ZoneMultiConfigState) do
249
+ newproperty(:shares, :parent => ZoneConfigProperty) do
250
+ desc "Number of FSS CPU shares allocated to the zone."
251
+
252
+ def configtext
253
+ "add rctl\nset name=zone.cpu-shares\nadd value (priv=privileged,limit=#{self.should},action=none)\nend"
254
+ end
255
+ end
256
+
257
+ newproperty(:inherit, :parent => ZoneMultiConfigProperty) do
250
258
  desc "The list of directories that the zone inherits from the global
251
259
  zone. All directories must be fully qualified."
252
260
 
@@ -277,35 +285,35 @@ end
277
285
  # only used to boot the zone the very first time.
278
286
  newparam(:sysidcfg) do
279
287
  desc %{The text to go into the sysidcfg file when the zone is first
280
- booted. The best way is to use a template:
288
+ booted. The best way is to use a template::
281
289
 
282
290
  # $templatedir/sysidcfg
283
291
  system_locale=en_US
284
292
  timezone=GMT
285
293
  terminal=xterms
286
294
  security_policy=NONE
287
- root_password=<%= password %>
295
+ root_password=&lt;%= password %>
288
296
  timeserver=localhost
289
- name_service=DNS {domain_name=<%= domain %>
290
- name_server=<%= nameserver %>}
291
- network_interface=primary {hostname=<%= name %>
292
- ip_address=<%= ip %>
293
- netmask=<%= netmask %>
297
+ name_service=DNS {domain_name=&lt;%= domain %>
298
+ name_server=&lt;%= nameserver %>}
299
+ network_interface=primary {hostname=&lt;%= realhostname %>
300
+ ip_address=&lt;%= ip %>
301
+ netmask=&lt;%= netmask %>
294
302
  protocol_ipv6=no
295
- default_route=<%= defaultroute %>}
303
+ default_route=&lt;%= defaultroute %>}
296
304
  nfs4_domain=dynamic
297
305
 
298
- And then call that:
306
+ And then call that::
299
307
 
300
308
  zone { myzone:
301
309
  ip => "bge0:192.168.0.23",
302
310
  sysidcfg => template(sysidcfg),
303
- path => "/opt/zones/myzone"
311
+ path => "/opt/zones/myzone",
312
+ realhostname => "fully.qualified.domain.name"
304
313
  }
305
314
 
306
315
  The sysidcfg only matters on the first booting of the zone,
307
- so Puppet only checks for it at that time.
308
- }
316
+ so Puppet only checks for it at that time.}
309
317
  end
310
318
 
311
319
  newparam(:path) do
@@ -329,6 +337,10 @@ end
329
337
  end
330
338
  end
331
339
 
340
+ newparam(:realhostname) do
341
+ desc "The actual hostname of the zone."
342
+ end
343
+
332
344
  # If Puppet is also managing the base dir or its parent dir, list them
333
345
  # both as prerequisites.
334
346
  autorequire(:file) do
@@ -339,51 +351,6 @@ end
339
351
  end
340
352
  end
341
353
 
342
- # Convert the output of a list into a hash
343
- def self.line2hash(line)
344
- fields = [:id, :name, :ensure, :path]
345
-
346
- hash = {}
347
- line.split(":").each_with_index { |value, index|
348
- hash[fields[index]] = value
349
- }
350
-
351
- # Configured but not installed zones do not have IDs
352
- if hash[:id] == "-"
353
- hash.delete(:id)
354
- end
355
-
356
- return hash
357
- end
358
-
359
- def self.list
360
- %x{/usr/sbin/zoneadm list -cp}.split("\n").collect do |line|
361
- hash = line2hash(line)
362
-
363
- obj = nil
364
- unless obj = @objects[hash[:name]]
365
- obj = create(:name => hash[:name])
366
- end
367
-
368
- obj.setstatus(hash)
369
-
370
- obj
371
- end
372
- end
373
-
374
- # Execute a configuration string. Can't be private because it's called
375
- # by the states.
376
- def cfg(str)
377
- debug "Executing '%s' in zone %s" % [str, self[:name]]
378
- IO.popen("/usr/sbin/zonecfg -z %s -f - 2>&1" % self[:name], "w") do |pipe|
379
- pipe.puts str
380
- end
381
-
382
- unless $? == 0
383
- raise ArgumentError, "Failed to apply configuration"
384
- end
385
- end
386
-
387
354
  # Perform all of our configuration steps.
388
355
  def configure
389
356
  # If the thing is entirely absent, then we need to create the config.
@@ -392,36 +359,20 @@ set zonepath=%s
392
359
  } % self[:path]
393
360
 
394
361
  # Then perform all of our configuration steps.
395
- @states.each do |name, state|
396
- if state.is_a? ZoneConfigState and ! state.insync?
397
- str += state.configtext + "\n"
362
+ properties().each do |property|
363
+ if property.is_a? ZoneConfigProperty and ! property.insync?
364
+ str += property.configtext + "\n"
398
365
  end
399
366
  end
400
367
 
401
368
  str += "commit\n"
402
- cfg(str)
403
- end
404
-
405
- def destroy
406
- begin
407
- execute("/usr/sbin/zonecfg -z #{self[:name]} delete -F")
408
- rescue Puppet::ExecutionFailure => detail
409
- self.fail "Could not destroy zone: %s" % detail
410
- end
411
- end
412
-
413
- def install
414
- begin
415
- execute("/usr/sbin/zoneadm -z #{self[:name]} install")
416
- rescue Puppet::ExecutionFailure => detail
417
- self.fail "Could not install zone: %s" % detail
418
- end
369
+ provider.setconfig(str)
419
370
  end
420
371
 
421
372
  # We need a way to test whether a zone is in process. Our 'ensure'
422
- # state models the static states, but we need to handle the temporary ones.
373
+ # property models the static states, but we need to handle the temporary ones.
423
374
  def processing?
424
- if hash = statushash()
375
+ if hash = provider.statushash()
425
376
  case hash[:ensure]
426
377
  when "incomplete", "ready", "shutting_down"
427
378
  true
@@ -434,14 +385,14 @@ set zonepath=%s
434
385
  end
435
386
 
436
387
  def retrieve
437
- if hash = statushash()
388
+ if hash = provider.statushash()
438
389
  setstatus(hash)
439
390
 
440
391
  # Now retrieve the configuration itself and set appropriately.
441
- getconfig()
392
+ config2status(provider.getconfig())
442
393
  else
443
- @states.each do |name, state|
444
- state.is = :absent
394
+ properties().each do |pr|
395
+ pr.is = :absent
445
396
  end
446
397
  end
447
398
  end
@@ -451,75 +402,15 @@ set zonepath=%s
451
402
  hash.each do |param, value|
452
403
  next if param == :name
453
404
  case self.class.attrtype(param)
454
- when :state:
405
+ when :pr:
455
406
  self.is = [param, value]
456
407
  else
457
408
  self[param] = value
458
409
  end
459
410
  end
460
-
461
- # For any configured items that are not found, mark absent.
462
- @states.each do |name, st|
463
- next unless st.is_a? ZoneConfigState
464
-
465
- unless hash.has_key? st.name
466
- st.is = :absent
467
- end
468
- end
469
- end
470
-
471
- def start
472
- # Check the sysidcfg stuff
473
- if cfg = self[:sysidcfg]
474
- path = File.join(self[:path], "root", "etc", "sysidcfg")
475
-
476
- unless File.exists?(path)
477
- begin
478
- File.open(path, "w", 0600) do |f|
479
- f.puts cfg
480
- end
481
- rescue => detail
482
- if Puppet[:debug]
483
- puts detail.stacktrace
484
- end
485
- raise Puppet::Error, "Could not create sysidcfg: %s" % detail
486
- end
487
- end
488
- end
489
-
490
- begin
491
- execute("/usr/sbin/zoneadm -z #{self[:name]} boot")
492
- rescue Puppet::ExecutionFailure => detail
493
- self.fail "Could not start zone: %s" % detail
494
- end
495
- end
496
-
497
- def stop
498
- begin
499
- execute("/usr/sbin/zoneadm -z #{self[:name]} halt")
500
- rescue Puppet::ExecutionFailure => detail
501
- self.fail "Could not halt zone: %s" % detail
502
- end
503
- end
504
-
505
- def unconfigure
506
- begin
507
- execute("/usr/sbin/zonecfg -z #{self[:name]} delete -F")
508
- rescue Puppet::ExecutionFailure => detail
509
- self.fail "Could not unconfigure zone: %s" % detail
510
- end
511
- end
512
-
513
- def uninstall
514
- begin
515
- execute("/usr/sbin/zoneadm -z #{self[:name]} uninstall -F")
516
- rescue Puppet::ExecutionFailure => detail
517
- self.fail "Could not halt zone: %s" % detail
518
- end
519
411
  end
520
412
 
521
413
  private
522
-
523
414
  # Turn the results of getconfig into status information.
524
415
  def config2status(config)
525
416
  config.each do |name, value|
@@ -530,6 +421,8 @@ set zonepath=%s
530
421
  # Nothing; this is set in the zoneadm list command
531
422
  when :pool:
532
423
  self.is = [:pool, value]
424
+ when :shares:
425
+ self.is = [:shares, value]
533
426
  when "inherit-pkg-dir":
534
427
  dirs = value.collect do |hash|
535
428
  hash[:dir]
@@ -544,52 +437,6 @@ set zonepath=%s
544
437
  end
545
438
  end
546
439
  end
547
-
548
- # Collect the configuration of the zone.
549
- def getconfig
550
- output = execute("/usr/sbin/zonecfg -z %s info" % self[:name])
551
-
552
- name = nil
553
- current = nil
554
- hash = {}
555
- output.split("\n").each do |line|
556
- case line
557
- when /^(\S+):\s*$/:
558
- name = $1
559
- current = nil # reset it
560
- when /^(\S+):\s*(.+)$/:
561
- hash[$1.intern] = $2
562
- #self.is = [$1.intern, $2]
563
- when /^\s+(\S+):\s*(.+)$/:
564
- if name
565
- unless hash.include? name
566
- hash[name] = []
567
- end
568
-
569
- unless current
570
- current = {}
571
- hash[name] << current
572
- end
573
- current[$1.intern] = $2
574
- else
575
- err "Ignoring '%s'" % line
576
- end
577
- else
578
- debug "Ignoring zone output '%s'" % line
579
- end
580
- end
581
- config2status(hash)
582
- end
583
-
584
- def statushash
585
- begin
586
- output = execute("/usr/sbin/zoneadm -z #{self[:name]} list -p 2>/dev/null")
587
- rescue Puppet::ExecutionFailure => detail
588
- return nil
589
- end
590
-
591
- return self.class.line2hash(output.chomp)
592
- end
593
440
  end
594
441
 
595
- # $Id: zone.rb 1386 2006-07-11 18:38:42Z luke $
442
+ # $Id: zone.rb 2408 2007-04-24 02:41:16Z luke $