puppet 0.24.7 → 0.24.8

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 (489) hide show
  1. data/CHANGELOG +72 -0
  2. data/README.rst +38 -0
  3. data/Rakefile +3 -1
  4. data/bin/filebucket +0 -0
  5. data/bin/puppet +0 -0
  6. data/bin/puppetca +0 -0
  7. data/bin/puppetd +0 -0
  8. data/bin/puppetdoc +0 -0
  9. data/bin/puppetmasterd +0 -0
  10. data/bin/puppetrun +0 -0
  11. data/bin/ralsh +4 -0
  12. data/conf/gentoo/init.d/puppetmaster +0 -0
  13. data/conf/osx/createpackage.sh +0 -0
  14. data/conf/osx/preflight +0 -0
  15. data/conf/redhat/puppet.spec +20 -3
  16. data/conf/solaris/smf/svc-puppetd +0 -0
  17. data/conf/solaris/smf/svc-puppetmasterd +0 -0
  18. data/examples/etc/init.d/sleeper +0 -0
  19. data/examples/mac_dscl.pp +0 -0
  20. data/examples/mac_dscl_revert.pp +0 -0
  21. data/examples/mac_netinfo.pp +0 -0
  22. data/examples/mac_pkgdmg.pp +0 -0
  23. data/ext/bin/sleeper +0 -0
  24. data/ext/dbfix.sql +132 -0
  25. data/ext/logcheck/puppet +2 -1
  26. data/ext/module_puppet +0 -0
  27. data/ext/nagios/check_puppet.rb +0 -0
  28. data/ext/puppet-test +0 -0
  29. data/ext/puppetlast +0 -0
  30. data/ext/vim/syntax/puppet.vim +2 -1
  31. data/install.rb +2 -2
  32. data/lib/puppet.rb +1 -1
  33. data/lib/puppet/daemon.rb +0 -0
  34. data/lib/puppet/defaults.rb +9 -0
  35. data/lib/puppet/executables/client/certhandler.rb +6 -1
  36. data/lib/puppet/external/base64.rb +0 -0
  37. data/lib/puppet/external/nagios.rb +0 -0
  38. data/lib/puppet/external/nagios/base.rb +0 -0
  39. data/lib/puppet/external/nagios/parser.rb +39 -57
  40. data/lib/puppet/file_collection.rb +30 -0
  41. data/lib/puppet/file_collection/lookup.rb +20 -0
  42. data/lib/puppet/indirector/facts/facter.rb +6 -2
  43. data/lib/puppet/indirector/node/ldap.rb +75 -39
  44. data/lib/puppet/network/authstore.rb +0 -0
  45. data/lib/puppet/network/handler/filebucket.rb +0 -0
  46. data/lib/puppet/network/handler/fileserver.rb +0 -0
  47. data/lib/puppet/network/handler/report.rb +0 -0
  48. data/lib/puppet/network/handler/resource.rb +0 -0
  49. data/lib/puppet/network/handler/runner.rb +0 -0
  50. data/lib/puppet/network/rights.rb +0 -0
  51. data/lib/puppet/network/xmlrpc/client.rb +113 -53
  52. data/lib/puppet/node/facts.rb +0 -0
  53. data/lib/puppet/parser/ast.rb +4 -3
  54. data/lib/puppet/parser/ast/astarray.rb +2 -1
  55. data/lib/puppet/parser/ast/leaf.rb +1 -1
  56. data/lib/puppet/parser/ast/resource.rb +20 -20
  57. data/lib/puppet/parser/ast/resource_override.rb +2 -2
  58. data/lib/puppet/parser/collector.rb +1 -2
  59. data/lib/puppet/parser/functions/realize.rb +1 -1
  60. data/lib/puppet/parser/functions/regsubst.rb +93 -0
  61. data/lib/puppet/parser/functions/sprintf.rb +17 -0
  62. data/lib/puppet/parser/functions/versioncmp.rb +10 -0
  63. data/lib/puppet/parser/resource.rb +10 -6
  64. data/lib/puppet/parser/resource/param.rb +17 -14
  65. data/lib/puppet/parser/resource/reference.rb +2 -0
  66. data/lib/puppet/parser/scope.rb +3 -3
  67. data/lib/puppet/property/list.rb +5 -1
  68. data/lib/puppet/provider/augeas/augeas.rb +146 -44
  69. data/lib/puppet/provider/cron/crontab.rb +0 -0
  70. data/lib/puppet/provider/mailalias/aliases.rb +0 -0
  71. data/lib/puppet/provider/maillist/mailman.rb +0 -0
  72. data/lib/puppet/provider/mount/parsed.rb +0 -0
  73. data/lib/puppet/provider/naginator.rb +7 -2
  74. data/lib/puppet/provider/nameservice/directoryservice.rb +128 -44
  75. data/lib/puppet/provider/package/apple.rb +0 -0
  76. data/lib/puppet/provider/package/apt.rb +0 -0
  77. data/lib/puppet/provider/package/aptitude.rb +0 -0
  78. data/lib/puppet/provider/package/blastwave.rb +0 -0
  79. data/lib/puppet/provider/package/darwinport.rb +0 -0
  80. data/lib/puppet/provider/package/dpkg.rb +0 -0
  81. data/lib/puppet/provider/package/fink.rb +0 -0
  82. data/lib/puppet/provider/package/freebsd.rb +0 -0
  83. data/lib/puppet/provider/package/gem.rb +0 -0
  84. data/lib/puppet/provider/package/openbsd.rb +0 -0
  85. data/lib/puppet/provider/package/ports.rb +0 -0
  86. data/lib/puppet/provider/package/rpm.rb +0 -0
  87. data/lib/puppet/provider/package/sun.rb +0 -0
  88. data/lib/puppet/provider/package/sunfreeware.rb +0 -0
  89. data/lib/puppet/provider/package/up2date.rb +4 -2
  90. data/lib/puppet/provider/package/yum.rb +0 -0
  91. data/lib/puppet/provider/parsedfile.rb +47 -22
  92. data/lib/puppet/provider/port/parsed.rb +0 -0
  93. data/lib/puppet/provider/service/base.rb +0 -0
  94. data/lib/puppet/provider/service/debian.rb +0 -0
  95. data/lib/puppet/provider/service/gentoo.rb +1 -1
  96. data/lib/puppet/provider/service/init.rb +0 -0
  97. data/lib/puppet/provider/service/launchd.rb +13 -4
  98. data/lib/puppet/provider/service/redhat.rb +5 -5
  99. data/lib/puppet/provider/service/smf.rb +0 -0
  100. data/lib/puppet/provider/ssh_authorized_key/parsed.rb +43 -16
  101. data/lib/puppet/provider/sshkey/parsed.rb +0 -0
  102. data/lib/puppet/provider/user/useradd.rb +1 -1
  103. data/lib/puppet/rails/database/003_add_environment_to_host.rb +6 -2
  104. data/lib/puppet/rails/host.rb +70 -19
  105. data/lib/puppet/rails/param_value.rb +31 -12
  106. data/lib/puppet/rails/resource.rb +36 -9
  107. data/lib/puppet/rails/resource_tag.rb +18 -0
  108. data/lib/puppet/reference/report.rb +1 -0
  109. data/lib/puppet/reports.rb +0 -0
  110. data/lib/puppet/sslcertificates.rb +0 -0
  111. data/lib/puppet/transaction.rb +1 -1
  112. data/lib/puppet/type.rb +2 -6
  113. data/lib/puppet/type/augeas.rb +23 -15
  114. data/lib/puppet/type/cron.rb +0 -0
  115. data/lib/puppet/type/exec.rb +0 -0
  116. data/lib/puppet/type/file/checksum.rb +7 -35
  117. data/lib/puppet/type/file/content.rb +11 -8
  118. data/lib/puppet/type/file/ensure.rb +0 -0
  119. data/lib/puppet/type/file/group.rb +0 -0
  120. data/lib/puppet/type/file/mode.rb +0 -0
  121. data/lib/puppet/type/file/owner.rb +0 -0
  122. data/lib/puppet/type/file/selcontext.rb +8 -0
  123. data/lib/puppet/type/file/source.rb +0 -0
  124. data/lib/puppet/type/file/type.rb +0 -0
  125. data/lib/puppet/type/filebucket.rb +0 -0
  126. data/lib/puppet/type/group.rb +0 -0
  127. data/lib/puppet/type/host.rb +0 -0
  128. data/lib/puppet/type/mailalias.rb +0 -0
  129. data/lib/puppet/type/maillist.rb +0 -0
  130. data/lib/puppet/type/mount.rb +0 -0
  131. data/lib/puppet/type/port.rb +0 -0
  132. data/lib/puppet/type/schedule.rb +0 -0
  133. data/lib/puppet/type/ssh_authorized_key.rb +14 -0
  134. data/lib/puppet/type/sshkey.rb +0 -0
  135. data/lib/puppet/type/tidy.rb +0 -0
  136. data/lib/puppet/type/user.rb +6 -0
  137. data/lib/puppet/type/yumrepo.rb +4 -1
  138. data/lib/puppet/type/zfs.rb +0 -0
  139. data/lib/puppet/type/zpool.rb +0 -0
  140. data/lib/puppet/util/autoload.rb +2 -2
  141. data/lib/puppet/util/filetype.rb +7 -96
  142. data/lib/puppet/util/inifile.rb +1 -0
  143. data/lib/puppet/util/instance_loader.rb +0 -0
  144. data/lib/puppet/util/loadedfile.rb +0 -0
  145. data/lib/puppet/util/nagios_maker.rb +4 -0
  146. data/lib/puppet/util/package.rb +2 -0
  147. data/lib/puppet/util/posix.rb +0 -0
  148. data/lib/puppet/util/rails/reference_serializer.rb +18 -0
  149. data/lib/puppet/util/selinux.rb +3 -1
  150. data/spec/integration/checksum.rb +1 -0
  151. data/spec/integration/defaults.rb +9 -0
  152. data/spec/integration/file_serving/configuration.rb +0 -0
  153. data/spec/integration/file_serving/content.rb +0 -0
  154. data/spec/integration/file_serving/metadata.rb +0 -0
  155. data/spec/integration/indirector/direct_file_server.rb +0 -0
  156. data/spec/integration/indirector/file_content/file_server.rb +0 -0
  157. data/spec/integration/indirector/file_metadata/file_server.rb +0 -0
  158. data/spec/integration/indirector/module_files.rb +0 -0
  159. data/spec/integration/indirector/node/ldap.rb +0 -0
  160. data/spec/integration/indirector/rest.rb +0 -0
  161. data/spec/integration/network/server/mongrel.rb +0 -0
  162. data/spec/integration/network/server/webrick.rb +0 -0
  163. data/spec/integration/node.rb +0 -0
  164. data/spec/integration/node/catalog.rb +0 -0
  165. data/spec/integration/node/facts.rb +0 -0
  166. data/spec/integration/provider/package.rb +0 -0
  167. data/spec/integration/provider/service/init.rb +0 -0
  168. data/spec/integration/reference/providers.rb +0 -0
  169. data/spec/integration/reports.rb +4 -0
  170. data/spec/integration/transaction/report.rb +7 -1
  171. data/spec/integration/type/package.rb +5 -2
  172. data/spec/integration/util/file_locking.rb +0 -0
  173. data/spec/unit/executables/client/certhandler.rb +13 -0
  174. data/spec/unit/file_collection.rb +53 -0
  175. data/spec/unit/file_collection/lookup.rb +46 -0
  176. data/spec/unit/file_serving/configuration.rb +0 -0
  177. data/spec/unit/file_serving/configuration/parser.rb +0 -0
  178. data/spec/unit/file_serving/content.rb +0 -0
  179. data/spec/unit/file_serving/file_base.rb +0 -0
  180. data/spec/unit/file_serving/fileset.rb +0 -0
  181. data/spec/unit/file_serving/indirection_hooks.rb +0 -0
  182. data/spec/unit/file_serving/metadata.rb +0 -0
  183. data/spec/unit/file_serving/mount.rb +0 -0
  184. data/spec/unit/file_serving/terminus_helper.rb +0 -0
  185. data/spec/unit/indirector.rb +0 -0
  186. data/spec/unit/indirector/catalog/compiler.rb +0 -0
  187. data/spec/unit/indirector/catalog/yaml.rb +0 -0
  188. data/spec/unit/indirector/checksum/file.rb +0 -0
  189. data/spec/unit/indirector/code.rb +0 -0
  190. data/spec/unit/indirector/direct_file_server.rb +0 -0
  191. data/spec/unit/indirector/envelope.rb +0 -0
  192. data/spec/unit/indirector/exec.rb +0 -0
  193. data/spec/unit/indirector/facts/facter.rb +27 -2
  194. data/spec/unit/indirector/facts/yaml.rb +0 -0
  195. data/spec/unit/indirector/file.rb +0 -0
  196. data/spec/unit/indirector/file_content/file.rb +0 -0
  197. data/spec/unit/indirector/file_content/file_server.rb +0 -0
  198. data/spec/unit/indirector/file_content/modules.rb +0 -0
  199. data/spec/unit/indirector/file_content/rest.rb +0 -0
  200. data/spec/unit/indirector/file_metadata/file.rb +0 -0
  201. data/spec/unit/indirector/file_metadata/file_server.rb +0 -0
  202. data/spec/unit/indirector/file_metadata/modules.rb +0 -0
  203. data/spec/unit/indirector/file_metadata/rest.rb +0 -0
  204. data/spec/unit/indirector/file_server.rb +0 -0
  205. data/spec/unit/indirector/indirection.rb +0 -0
  206. data/spec/unit/indirector/ldap.rb +0 -0
  207. data/spec/unit/indirector/memory.rb +0 -0
  208. data/spec/unit/indirector/module_files.rb +0 -0
  209. data/spec/unit/indirector/node/exec.rb +0 -0
  210. data/spec/unit/indirector/node/ldap.rb +20 -0
  211. data/spec/unit/indirector/node/memory.rb +0 -0
  212. data/spec/unit/indirector/node/plain.rb +0 -0
  213. data/spec/unit/indirector/node/rest.rb +0 -0
  214. data/spec/unit/indirector/node/yaml.rb +0 -0
  215. data/spec/unit/indirector/plain.rb +0 -0
  216. data/spec/unit/indirector/report/processor.rb +0 -0
  217. data/spec/unit/indirector/request.rb +0 -0
  218. data/spec/unit/indirector/rest.rb +0 -0
  219. data/spec/unit/indirector/ssl_rsa/file.rb +5 -0
  220. data/spec/unit/indirector/terminus.rb +0 -0
  221. data/spec/unit/indirector/yaml.rb +0 -0
  222. data/spec/unit/module.rb +0 -0
  223. data/spec/unit/network/client.rb +0 -0
  224. data/spec/unit/network/client/master.rb +0 -0
  225. data/spec/unit/network/http.rb +0 -0
  226. data/spec/unit/network/http/mongrel.rb +0 -0
  227. data/spec/unit/network/http/mongrel/rest.rb +0 -0
  228. data/spec/unit/network/http/mongrel/xmlrpc.rb +0 -0
  229. data/spec/unit/network/http/webrick.rb +0 -0
  230. data/spec/unit/network/http/webrick/rest.rb +0 -0
  231. data/spec/unit/network/http/webrick/xmlrpc.rb +0 -0
  232. data/spec/unit/network/http_pool.rb +0 -0
  233. data/spec/unit/network/server.rb +0 -0
  234. data/spec/unit/network/xmlrpc/client.rb +165 -7
  235. data/spec/unit/node.rb +0 -0
  236. data/spec/unit/node/catalog.rb +1 -0
  237. data/spec/unit/node/environment.rb +0 -0
  238. data/spec/unit/node/facts.rb +0 -0
  239. data/spec/unit/other/checksum.rb +0 -0
  240. data/spec/unit/other/pgraph.rb +0 -0
  241. data/spec/unit/other/transbucket.rb +4 -4
  242. data/spec/unit/other/transobject.rb +0 -0
  243. data/spec/unit/parameter.rb +0 -0
  244. data/spec/unit/parser/ast.rb +5 -1
  245. data/spec/unit/parser/ast/arithmetic_operator.rb +0 -0
  246. data/spec/unit/parser/ast/astarray.rb +2 -2
  247. data/spec/unit/parser/ast/boolean_operator.rb +0 -0
  248. data/spec/unit/parser/ast/collexpr.rb +0 -0
  249. data/spec/unit/parser/ast/comparison_operator.rb +0 -0
  250. data/spec/unit/parser/ast/definition.rb +0 -0
  251. data/spec/unit/parser/ast/hostclass.rb +0 -0
  252. data/spec/unit/parser/ast/minus.rb +0 -0
  253. data/spec/unit/parser/ast/node.rb +0 -0
  254. data/spec/unit/parser/ast/nop.rb +0 -0
  255. data/spec/unit/parser/ast/not.rb +0 -0
  256. data/spec/unit/parser/ast/resource.rb +103 -0
  257. data/spec/unit/parser/ast/resource_override.rb +0 -0
  258. data/spec/unit/parser/ast/resource_reference.rb +0 -0
  259. data/spec/unit/parser/ast/vardef.rb +0 -0
  260. data/spec/unit/parser/collector.rb +4 -4
  261. data/spec/unit/parser/compiler.rb +0 -0
  262. data/spec/unit/parser/functions/realize.rb +51 -0
  263. data/spec/unit/parser/functions/regsubst.rb +88 -0
  264. data/spec/unit/parser/functions/sprintf.rb +42 -0
  265. data/spec/unit/parser/functions/versioncmp.rb +29 -0
  266. data/spec/unit/parser/interpreter.rb +0 -0
  267. data/spec/unit/parser/lexer.rb +0 -0
  268. data/spec/unit/parser/parser.rb +0 -0
  269. data/spec/unit/parser/resource.rb +4 -0
  270. data/spec/unit/parser/resource/reference.rb +4 -0
  271. data/spec/unit/parser/scope.rb +14 -0
  272. data/spec/unit/parser/templatewrapper.rb +0 -0
  273. data/spec/unit/property.rb +0 -0
  274. data/spec/unit/property/list.rb +4 -0
  275. data/spec/unit/provider/augeas/augeas.rb +219 -92
  276. data/spec/unit/provider/confine.rb +0 -0
  277. data/spec/unit/provider/confine/exists.rb +0 -0
  278. data/spec/unit/provider/confine/false.rb +0 -0
  279. data/spec/unit/provider/confine/feature.rb +0 -0
  280. data/spec/unit/provider/confine/true.rb +0 -0
  281. data/spec/unit/provider/confine/variable.rb +0 -0
  282. data/spec/unit/provider/confine_collection.rb +0 -0
  283. data/spec/unit/provider/confiner.rb +0 -0
  284. data/spec/unit/provider/group/groupadd.rb +0 -0
  285. data/spec/unit/provider/group/ldap.rb +0 -0
  286. data/spec/unit/provider/ldap.rb +0 -0
  287. data/spec/unit/provider/macauthorization.rb +0 -0
  288. data/spec/unit/provider/mcx/mcxcontent.rb +0 -0
  289. data/spec/unit/provider/mount.rb +0 -0
  290. data/spec/unit/provider/mount/parsed.rb +1 -0
  291. data/spec/unit/provider/naginator.rb +58 -0
  292. data/spec/unit/provider/package/apt.rb +0 -0
  293. data/spec/unit/provider/package/dpkg.rb +0 -0
  294. data/spec/unit/provider/parsedfile.rb +95 -0
  295. data/spec/unit/provider/selboolean.rb +0 -0
  296. data/spec/unit/provider/selmodule.rb +0 -0
  297. data/spec/unit/provider/service/launchd.rb +9 -1
  298. data/spec/unit/provider/ssh_authorized_key/parsed.rb +63 -19
  299. data/spec/unit/provider/user/hpux.rb +0 -0
  300. data/spec/unit/provider/user/ldap.rb +0 -0
  301. data/spec/unit/provider/user/useradd.rb +0 -0
  302. data/spec/unit/provider/zfs/solaris.rb +0 -0
  303. data/spec/unit/provider/zone/solaris.rb +0 -0
  304. data/spec/unit/provider/zpool/solaris.rb +0 -0
  305. data/spec/unit/rails.rb +1 -0
  306. data/spec/unit/relationship.rb +0 -0
  307. data/spec/unit/reports.rb +0 -0
  308. data/spec/unit/resource_reference.rb +0 -0
  309. data/spec/unit/simple_graph.rb +0 -0
  310. data/spec/unit/{other/transaction.rb → transaction.rb} +16 -1
  311. data/spec/unit/transaction/change.rb +0 -0
  312. data/spec/unit/transaction/event.rb +0 -0
  313. data/spec/unit/transaction/report.rb +0 -0
  314. data/spec/unit/type.rb +0 -0
  315. data/spec/unit/type/computer.rb +0 -0
  316. data/spec/unit/type/exec.rb +0 -0
  317. data/spec/unit/type/file.rb +2 -0
  318. data/spec/unit/type/file/content.rb +30 -0
  319. data/spec/unit/type/file/ensure.rb +0 -0
  320. data/spec/unit/type/file/group.rb +0 -0
  321. data/spec/unit/type/file/owner.rb +0 -0
  322. data/spec/unit/type/file/selinux.rb +6 -0
  323. data/spec/unit/type/group.rb +3 -0
  324. data/spec/unit/type/macauthorization.rb +0 -0
  325. data/spec/unit/type/mcx.rb +0 -0
  326. data/spec/unit/type/mount.rb +0 -0
  327. data/spec/unit/type/nagios.rb +0 -0
  328. data/spec/unit/type/noop_metaparam.rb +1 -0
  329. data/spec/unit/type/package.rb +0 -0
  330. data/spec/unit/type/schedule.rb +0 -0
  331. data/spec/unit/type/selboolean.rb +0 -0
  332. data/spec/unit/type/selmodule.rb +0 -0
  333. data/spec/unit/type/service.rb +0 -0
  334. data/spec/unit/type/ssh_authorized_key.rb +31 -8
  335. data/spec/unit/type/tidy.rb +4 -0
  336. data/spec/unit/type/user.rb +17 -0
  337. data/spec/unit/type/zfs.rb +0 -0
  338. data/spec/unit/type/zone.rb +0 -0
  339. data/spec/unit/type/zpool.rb +0 -0
  340. data/spec/unit/util/autoload.rb +39 -0
  341. data/spec/unit/util/checksums.rb +0 -0
  342. data/spec/unit/util/constant_inflector.rb +0 -0
  343. data/spec/unit/util/file_locking.rb +0 -0
  344. data/spec/unit/util/filetype.rb +110 -0
  345. data/spec/unit/util/ldap/connection.rb +0 -0
  346. data/spec/unit/util/ldap/generator.rb +0 -0
  347. data/spec/unit/util/ldap/manager.rb +0 -0
  348. data/spec/unit/util/loadedfile.rb +0 -0
  349. data/spec/unit/util/log.rb +0 -0
  350. data/spec/unit/util/metric.rb +0 -0
  351. data/spec/unit/util/nagios_maker.rb +32 -34
  352. data/spec/unit/util/package.rb +21 -0
  353. data/spec/unit/util/posix.rb +0 -0
  354. data/spec/unit/util/resource_template.rb +0 -0
  355. data/spec/unit/util/settings.rb +0 -0
  356. data/spec/unit/util/storage.rb +0 -0
  357. data/spec/unit/util/tagging.rb +0 -0
  358. data/spec/unit/util/uri_helper.rb +0 -0
  359. data/spec/unit/util/warnings.rb +0 -0
  360. data/test/certmgr/ca.rb +0 -0
  361. data/test/certmgr/certmgr.rb +0 -0
  362. data/test/certmgr/inventory.rb +0 -0
  363. data/test/certmgr/support.rb +0 -0
  364. data/test/data/snippets/subclass_name_duplication.pp +0 -0
  365. data/test/executables/filebucket.rb +6 -3
  366. data/test/executables/puppetbin.rb +1 -1
  367. data/test/executables/puppetca.rb +0 -0
  368. data/test/executables/puppetd.rb +0 -0
  369. data/test/executables/puppetmasterd.rb +0 -0
  370. data/test/executables/puppetmodule.rb +0 -0
  371. data/test/language/ast.rb +0 -0
  372. data/test/language/ast/casestatement.rb +0 -0
  373. data/test/language/ast/resource.rb +0 -0
  374. data/test/language/ast/resource_reference.rb +0 -0
  375. data/test/language/ast/selector.rb +0 -0
  376. data/test/language/ast/variable.rb +0 -0
  377. data/test/language/functions.rb +0 -0
  378. data/test/language/parser.rb +0 -0
  379. data/test/language/resource.rb +0 -40
  380. data/test/language/scope.rb +0 -0
  381. data/test/language/snippets.rb +0 -0
  382. data/test/language/transportable.rb +0 -0
  383. data/test/lib/puppettest.rb +3 -0
  384. data/test/lib/puppettest/support/resources.rb +0 -0
  385. data/test/network/authconfig.rb +0 -0
  386. data/test/network/authorization.rb +0 -0
  387. data/test/network/authstore.rb +0 -0
  388. data/test/network/client/ca.rb +0 -0
  389. data/test/network/client/client.rb +0 -0
  390. data/test/network/client/dipper.rb +0 -0
  391. data/test/network/client/master.rb +0 -0
  392. data/test/network/client/resource.rb +0 -0
  393. data/test/network/client_request.rb +0 -0
  394. data/test/network/daemon.rb +0 -0
  395. data/test/network/handler/bucket.rb +0 -0
  396. data/test/network/handler/ca.rb +0 -0
  397. data/test/network/handler/fileserver.rb +0 -0
  398. data/test/network/handler/handler.rb +0 -0
  399. data/test/network/handler/master.rb +0 -0
  400. data/test/network/handler/report.rb +0 -0
  401. data/test/network/handler/resource.rb +0 -0
  402. data/test/network/handler/runner.rb +0 -0
  403. data/test/network/rights.rb +0 -0
  404. data/test/network/server/mongrel_test.rb +0 -0
  405. data/test/network/server/webrick.rb +0 -0
  406. data/test/network/xmlrpc/client.rb +0 -0
  407. data/test/network/xmlrpc/processor.rb +0 -0
  408. data/test/network/xmlrpc/server.rb +0 -0
  409. data/test/network/xmlrpc/webrick_servlet.rb +0 -0
  410. data/test/other/dsl.rb +0 -0
  411. data/test/other/events.rb +0 -0
  412. data/test/other/overrides.rb +0 -0
  413. data/test/other/provider.rb +0 -0
  414. data/test/other/puppet.rb +0 -0
  415. data/test/other/relationships.rb +0 -0
  416. data/test/other/report.rb +0 -0
  417. data/test/other/transactions.rb +0 -0
  418. data/test/puppet/conffiles.rb +0 -0
  419. data/test/puppet/defaults.rb +0 -0
  420. data/test/puppet/errortest.rb +0 -0
  421. data/test/puppet/tc_suidmanager.rb +0 -0
  422. data/test/rails/ast.rb +0 -0
  423. data/test/rails/configuration.rb +0 -0
  424. data/test/rails/host.rb +0 -0
  425. data/test/rails/rails.rb +0 -0
  426. data/test/rails/railsparameter.rb +0 -0
  427. data/test/rails/railsresource.rb +0 -0
  428. data/test/ral/manager/attributes.rb +0 -0
  429. data/test/ral/manager/instances.rb +0 -0
  430. data/test/ral/manager/manager.rb +0 -0
  431. data/test/ral/manager/provider.rb +0 -0
  432. data/test/ral/manager/type.rb +0 -3
  433. data/test/ral/providers/cron/crontab.rb +0 -0
  434. data/test/ral/providers/group.rb +0 -0
  435. data/test/ral/providers/host/netinfo.rb +0 -0
  436. data/test/ral/providers/host/parsed.rb +0 -0
  437. data/test/ral/providers/mailalias/aliases.rb +0 -0
  438. data/test/ral/providers/mount/netinfo.rb +0 -0
  439. data/test/ral/providers/nameservice.rb +0 -0
  440. data/test/ral/providers/package.rb +0 -0
  441. data/test/ral/providers/package/aptitude.rb +0 -0
  442. data/test/ral/providers/package/aptrpm.rb +0 -0
  443. data/test/ral/providers/parsedfile.rb +0 -0
  444. data/test/ral/providers/port/parsed.rb +0 -0
  445. data/test/ral/providers/provider.rb +0 -0
  446. data/test/ral/providers/service/base.rb +0 -0
  447. data/test/ral/providers/service/debian.rb +0 -0
  448. data/test/ral/providers/sshkey/parsed.rb +0 -0
  449. data/test/ral/providers/user.rb +0 -0
  450. data/test/ral/providers/user/useradd.rb +0 -0
  451. data/test/ral/type/basic.rb +0 -0
  452. data/test/ral/type/cron.rb +0 -0
  453. data/test/ral/type/exec.rb +0 -0
  454. data/test/ral/type/file.rb +0 -0
  455. data/test/ral/type/file/target.rb +0 -0
  456. data/test/ral/type/filebucket.rb +0 -0
  457. data/test/ral/type/fileignoresource.rb +0 -0
  458. data/test/ral/type/filesources.rb +0 -0
  459. data/test/ral/type/group.rb +0 -0
  460. data/test/ral/type/host.rb +0 -0
  461. data/test/ral/type/mailalias.rb +0 -0
  462. data/test/ral/type/parameter.rb +0 -0
  463. data/test/ral/type/port.rb +0 -0
  464. data/test/ral/type/property.rb +0 -0
  465. data/test/ral/type/resources.rb +0 -0
  466. data/test/ral/type/service.rb +0 -0
  467. data/test/ral/type/sshkey.rb +0 -0
  468. data/test/ral/type/tidy.rb +0 -0
  469. data/test/ral/type/user.rb +0 -0
  470. data/test/ral/type/yumrepo.rb +0 -0
  471. data/test/ral/type/zone.rb +0 -0
  472. data/test/test +0 -0
  473. data/test/util/autoload.rb +0 -0
  474. data/test/util/classgen.rb +0 -0
  475. data/test/util/execution.rb +0 -0
  476. data/test/util/features.rb +0 -0
  477. data/test/util/fileparsing.rb +0 -0
  478. data/test/util/inifile.rb +0 -0
  479. data/test/util/instance_loader.rb +0 -0
  480. data/test/util/log.rb +0 -0
  481. data/test/util/metrics.rb +0 -0
  482. data/test/util/package.rb +0 -0
  483. data/test/util/pidlock.rb +0 -0
  484. data/test/util/settings.rb +0 -0
  485. data/test/util/storage.rb +0 -0
  486. data/test/util/subclass_loader.rb +0 -0
  487. data/test/util/utiltest.rb +0 -0
  488. metadata +981 -968
  489. data/test/util/filetype.rb +0 -137
File without changes
File without changes
File without changes
File without changes
@@ -7,6 +7,7 @@ require 'puppet/external/nagios'
7
7
 
8
8
  # The base class for all Naginator providers.
9
9
  class Puppet::Provider::Naginator < Puppet::Provider::ParsedFile
10
+ NAME_STRING = "## --PUPPET_NAME-- (called '_naginator_name' in the manifest)"
10
11
  # Retrieve the associated class from Nagios::Base.
11
12
  def self.nagios_type
12
13
  unless defined?(@nagios_type) and @nagios_type
@@ -23,11 +24,15 @@ class Puppet::Provider::Naginator < Puppet::Provider::ParsedFile
23
24
  end
24
25
 
25
26
  def self.parse(text)
26
- Nagios::Parser.new.parse(text)
27
+ begin
28
+ Nagios::Parser.new.parse(text.gsub(NAME_STRING, "_naginator_name"))
29
+ rescue => detail
30
+ raise Puppet::Error, "Could not parse configuration for %s: %s" % [resource_type.name, detail]
31
+ end
27
32
  end
28
33
 
29
34
  def self.to_file(records)
30
- header + records.collect { |record| record.to_s }.join("\n")
35
+ header + records.collect { |record| record.to_s }.join("\n").gsub("_naginator_name", NAME_STRING)
31
36
  end
32
37
 
33
38
  def self.skip_record?(record)
@@ -15,6 +15,7 @@
15
15
  require 'puppet'
16
16
  require 'puppet/provider/nameservice'
17
17
  require 'facter/util/plist'
18
+ require 'cgi'
18
19
 
19
20
 
20
21
  class Puppet::Provider::NameService
@@ -26,6 +27,7 @@ class DirectoryService < Puppet::Provider::NameService
26
27
  # e.g. Puppet::Type.type(:user).provide :directoryservice, :ds_path => "Users"
27
28
  # This is referenced in the get_ds_path class method
28
29
  attr_writer :ds_path
30
+ attr_writer :macosx_version_major
29
31
  end
30
32
 
31
33
 
@@ -40,6 +42,7 @@ class DirectoryService < Puppet::Provider::NameService
40
42
 
41
43
  commands :dscl => "/usr/bin/dscl"
42
44
  commands :dseditgroup => "/usr/sbin/dseditgroup"
45
+ commands :sw_vers => "/usr/bin/sw_vers"
43
46
  confine :operatingsystem => :darwin
44
47
  defaultfor :operatingsystem => :darwin
45
48
 
@@ -100,12 +103,31 @@ class DirectoryService < Puppet::Provider::NameService
100
103
  # @ds_path is an attribute of the class itself.
101
104
  if defined? @ds_path
102
105
  return @ds_path
103
- else
104
- # JJM: "Users" or "Groups" etc ... (Based on the Puppet::Type)
105
- # Remember this is a class method, so self.class is Class
106
- # Also, @resource_type seems to be the reference to the
107
- # Puppet::Type this class object is providing for.
108
- return @resource_type.name.to_s.capitalize + "s"
106
+ end
107
+ # JJM: "Users" or "Groups" etc ... (Based on the Puppet::Type)
108
+ # Remember this is a class method, so self.class is Class
109
+ # Also, @resource_type seems to be the reference to the
110
+ # Puppet::Type this class object is providing for.
111
+ return @resource_type.name.to_s.capitalize + "s"
112
+ end
113
+
114
+ def self.get_macosx_version_major
115
+ if defined? @macosx_version_major
116
+ return @macosx_version_major
117
+ end
118
+ begin
119
+ product_version = Facter.value(:macosx_productversion)
120
+ if product_version.nil?
121
+ raise Puppet::Error, "Could not determine OS X version"
122
+ end
123
+ product_version_major = product_version.scan(/(\d+)\.(\d+)./).join(".")
124
+ if %w{10.0 10.1 10.2 10.3}.include?(product_version_major)
125
+ raise Puppet::Error, "%s is not supported by the directoryservice provider" % product_version_major
126
+ end
127
+ @macosx_version_major = product_version_major
128
+ return @macosx_version_major
129
+ rescue Puppet::ExecutionFailure => detail
130
+ raise Puppet::Error, "Could not determine OS X version: %s" % detail
109
131
  end
110
132
  end
111
133
 
@@ -119,34 +141,56 @@ class DirectoryService < Puppet::Provider::NameService
119
141
  return dscl_output.split("\n")
120
142
  end
121
143
 
122
- def self.single_report(resource_name, *type_properties)
123
- # JJM 2007-07-24:
124
- # Given a the name of an object and a list of properties of that
125
- # object, return all property values in a hash.
126
- #
127
- # This class method returns nil if the object doesn't exist
128
- # Otherwise, it returns a hash of the object properties.
129
-
130
- all_present_str_array = list_all_present()
131
-
132
- # NBK: shortcut the process if the resource is missing
133
- return nil unless all_present_str_array.include? resource_name
144
+ def self.parse_dscl_url_data(dscl_output)
145
+ # we need to construct a Hash from the dscl -url output to match
146
+ # that returned by the dscl -plist output for 10.5+ clients.
147
+ #
148
+ # Nasty assumptions:
149
+ # a) no values *end* in a colon ':', only keys
150
+ # b) if a line ends in a colon and the next line does start with
151
+ # a space, then the second line is a value of the first.
152
+ # c) (implied by (b)) keys don't start with spaces.
134
153
 
135
- dscl_vector = get_exec_preamble("-read", resource_name)
136
- begin
137
- dscl_output = execute(dscl_vector)
138
- rescue Puppet::ExecutionFailure => detail
139
- raise Puppet::Error, "Could not get report. command execution failed."
154
+ dscl_plist = {}
155
+ dscl_output.split("\n").inject([]) do |array, line|
156
+ if line =~ /^\s+/ # it's a value
157
+ array[-1] << line # add the value to the previous key
158
+ else
159
+ array << line
160
+ end
161
+ array
162
+ end.compact
163
+
164
+ dscl_output.each do |line|
165
+ # This should be a 'normal' entry. key and value on one line.
166
+ # We split on ': ' to deal with keys/values with a colon in them.
167
+ split_array = line.split(/:\s+/)
168
+ key = split_array.first
169
+ value = CGI::unescape(split_array.last.strip.chomp)
170
+ # We need to treat GroupMembership separately as it is currently
171
+ # the only attribute we care about multiple values for, and
172
+ # the values can never contain spaces (shortnames)
173
+ # We also make every value an array to be consistent with the
174
+ # output of dscl -plist under 10.5
175
+ if key == "GroupMembership"
176
+ dscl_plist[key] = value.split(/\s/)
177
+ else
178
+ dscl_plist[key] = [value]
179
+ end
140
180
  end
141
-
142
- # JJM: We need a new hash to return back to our caller.
143
- attribute_hash = Hash.new
144
-
145
- dscl_plist = Plist.parse_xml(dscl_output)
146
- dscl_plist.keys().each do |key|
181
+ return dscl_plist
182
+ end
183
+
184
+ def self.parse_dscl_plist_data(dscl_output)
185
+ return Plist.parse_xml(dscl_output)
186
+ end
187
+
188
+ def self.generate_attribute_hash(input_hash, *type_properties)
189
+ attribute_hash = {}
190
+ input_hash.keys().each do |key|
147
191
  ds_attribute = key.sub("dsAttrTypeStandard:", "")
148
192
  next unless (@@ds_to_ns_attribute_map.keys.include?(ds_attribute) and type_properties.include? @@ds_to_ns_attribute_map[ds_attribute])
149
- ds_value = dscl_plist[key]
193
+ ds_value = input_hash[key]
150
194
  case @@ds_to_ns_attribute_map[ds_attribute]
151
195
  when :members:
152
196
  ds_value = ds_value # only members uses arrays so far
@@ -172,7 +216,41 @@ class DirectoryService < Puppet::Provider::NameService
172
216
  if @resource_type.validproperties.include?(:password)
173
217
  attribute_hash[:password] = self.get_password(attribute_hash[:guid])
174
218
  end
175
- return attribute_hash
219
+ return attribute_hash
220
+ end
221
+
222
+ def self.single_report(resource_name, *type_properties)
223
+ # JJM 2007-07-24:
224
+ # Given a the name of an object and a list of properties of that
225
+ # object, return all property values in a hash.
226
+ #
227
+ # This class method returns nil if the object doesn't exist
228
+ # Otherwise, it returns a hash of the object properties.
229
+
230
+ all_present_str_array = list_all_present()
231
+
232
+ # NBK: shortcut the process if the resource is missing
233
+ return nil unless all_present_str_array.include? resource_name
234
+
235
+ dscl_vector = get_exec_preamble("-read", resource_name)
236
+ begin
237
+ dscl_output = execute(dscl_vector)
238
+ rescue Puppet::ExecutionFailure => detail
239
+ raise Puppet::Error, "Could not get report. command execution failed."
240
+ end
241
+
242
+ # Two code paths is ugly, but until we can drop 10.4 support we don't
243
+ # have a lot of choice. Ultimately this should all be done using Ruby
244
+ # to access the DirectoryService APIs directly, but that's simply not
245
+ # feasible for a while yet.
246
+ case self.get_macosx_version_major
247
+ when "10.4"
248
+ dscl_plist = self.parse_dscl_url_data(dscl_output)
249
+ when "10.5", "10.6"
250
+ dscl_plist = self.parse_dscl_plist_data(dscl_output)
251
+ end
252
+
253
+ return self.generate_attribute_hash(dscl_plist, *type_properties)
176
254
  end
177
255
 
178
256
  def self.get_exec_preamble(ds_action, resource_name = nil)
@@ -183,8 +261,16 @@ class DirectoryService < Puppet::Provider::NameService
183
261
  # This method spits out proper DSCL commands for us.
184
262
  # We EXPECT name to be @resource[:name] when called from an instance object.
185
263
 
186
- # There are two ways to specify paths in 10.5. See man dscl.
187
- command_vector = [ command(:dscl), "-plist", "." ]
264
+ # 10.4 doesn't support the -plist option for dscl, and 10.5 has a
265
+ # different format for the -url output with objects with spaces in
266
+ # their values. *sigh*. Use -url for 10.4 in the hope this can be
267
+ # deprecated one day, and use -plist for 10.5 and higher.
268
+ case self.get_macosx_version_major
269
+ when "10.4"
270
+ command_vector = [ command(:dscl), "-url", "." ]
271
+ when "10.5", "10.6"
272
+ command_vector = [ command(:dscl), "-plist", "." ]
273
+ end
188
274
  # JJM: The actual action to perform. See "man dscl"
189
275
  # Common actiosn: -create, -delete, -merge, -append, -passwd
190
276
  command_vector << ds_action
@@ -234,15 +320,14 @@ class DirectoryService < Puppet::Provider::NameService
234
320
  def self.get_password(guid)
235
321
  password_hash = nil
236
322
  password_hash_file = "#{@@password_hash_dir}/#{guid}"
237
- # TODO: sort out error conditions?
238
- if File.exists?(password_hash_file)
323
+ if File.exists?(password_hash_file) and File.file?(password_hash_file)
239
324
  if not File.readable?(password_hash_file)
240
325
  raise Puppet::Error("Could not read password hash file at #{password_hash_file} for #{@resource[:name]}")
241
326
  end
242
327
  f = File.new(password_hash_file)
243
328
  password_hash = f.read
244
329
  f.close
245
- end
330
+ end
246
331
  password_hash
247
332
  end
248
333
 
@@ -322,9 +407,8 @@ class DirectoryService < Puppet::Provider::NameService
322
407
  # to create objects with dscl, rather than the single command nameservice.rb
323
408
  # expects to be returned by addcmd. Thus we don't bother defining addcmd.
324
409
  def create
325
- if exists?
410
+ if exists?
326
411
  info "already exists"
327
- # The object already exists
328
412
  return nil
329
413
  end
330
414
 
@@ -373,25 +457,25 @@ class DirectoryService < Puppet::Provider::NameService
373
457
 
374
458
  def remove_unwanted_members(current_members, new_members)
375
459
  current_members.each do |member|
376
- if not value.include?(member)
460
+ if not new_members.include?(member)
377
461
  cmd = [:dseditgroup, "-o", "edit", "-n", ".", "-d", member, @resource[:name]]
378
462
  begin
379
463
  execute(cmd)
380
464
  rescue Puppet::ExecutionFailure => detail
381
- raise Puppet::Error, "Could not set %s on %s[%s]: %s" % [param, @resource.class.name, @resource.name, detail]
465
+ raise Puppet::Error, "Could not remove %s from group: %s, %s" % [member, @resource.name, detail]
382
466
  end
383
467
  end
384
468
  end
385
469
  end
386
470
 
387
471
  def add_members(current_members, new_members)
388
- new_members.each do |user|
389
- if current_members.nil? or not current_members.include?(user)
390
- cmd = [:dseditgroup, "-o", "edit", "-n", ".", "-a", user, @resource[:name]]
472
+ new_members.each do |new_member|
473
+ if current_members.nil? or not current_members.include?(new_member)
474
+ cmd = [:dseditgroup, "-o", "edit", "-n", ".", "-a", new_member, @resource[:name]]
391
475
  begin
392
476
  execute(cmd)
393
477
  rescue Puppet::ExecutionFailure => detail
394
- raise Puppet::Error, "Could not set %s on %s[%s]: %s" % [param, @resource.class.name, @resource.name, detail]
478
+ raise Puppet::Error, "Could not add %s to group: %s, %s" % [new_member, @resource.name, detail]
395
479
  end
396
480
  end
397
481
  end
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -3,9 +3,11 @@ Puppet.type(:package).provide :up2date, :parent => :rpm, :source => :rpm do
3
3
  mechanism."
4
4
 
5
5
  commands :up2date => "/usr/sbin/up2date-nox"
6
- defaultfor :operatingsystem => :redhat,
6
+
7
+ defaultfor :operatingsystem => [:redhat, :oel, :ovm],
7
8
  :lsbdistrelease => ["2.1", "3", "4"]
8
- confine :operatingsystem => :redhat
9
+
10
+ confine :operatingsystem => [:redhat, :oel, :ovm]
9
11
 
10
12
  # Install a package using 'up2date'.
11
13
  def install
File without changes
@@ -78,8 +78,24 @@ class Puppet::Provider::ParsedFile < Puppet::Provider
78
78
  @modified.reject! { |t| flushed.include?(t) }
79
79
  end
80
80
 
81
+ # Make sure our file is backed up, but only back it up once per transaction.
82
+ # We cheat and rely on the fact that @records is created on each prefetch.
83
+ def self.backup_target(target)
84
+ return nil unless target_object(target).respond_to?(:backup)
85
+
86
+ unless defined?(@backup_stats)
87
+ @backup_stats = {}
88
+ end
89
+ return nil if @backup_stats[target] == @records.object_id
90
+
91
+ target_object(target).backup
92
+ @backup_stats[target] = @records.object_id
93
+ end
94
+
81
95
  # Flush all of the records relating to a specific target.
82
96
  def self.flush_target(target)
97
+ backup_target(target)
98
+
83
99
  records = target_records(target).reject { |r|
84
100
  r[:ensure] == :absent
85
101
  }
@@ -108,10 +124,11 @@ class Puppet::Provider::ParsedFile < Puppet::Provider
108
124
 
109
125
  # Return a list of all of the records we can find.
110
126
  def self.instances
111
- prefetch()
112
- @records.find_all { |r| r[:record_type] == self.name }.collect { |r|
113
- new(r)
114
- }
127
+ targets.collect do |target|
128
+ prefetch_target(target)
129
+ end.flatten.reject { |r| skip_record?(r) }.collect do |record|
130
+ new(record)
131
+ end
115
132
  end
116
133
 
117
134
  # Override the default method with a lot more functionality.
@@ -171,31 +188,39 @@ class Puppet::Provider::ParsedFile < Puppet::Provider
171
188
  # resource instance.
172
189
  def self.prefetch(resources = nil)
173
190
  # Reset the record list.
174
- @records = []
175
- targets(resources).each do |target|
176
- @records += prefetch_target(target)
177
- end
191
+ @records = prefetch_all_targets(resources)
178
192
 
179
- if resources
180
- matchers = resources.dup
181
- @records.each do |record|
182
- # Skip things like comments and blank lines
183
- next if skip_record?(record)
193
+ match_providers_with_resources(resources)
194
+ end
184
195
 
185
- if name = record[:name] and resource = resources[name]
196
+ def self.match_providers_with_resources(resources)
197
+ return unless resources
198
+ matchers = resources.dup
199
+ @records.each do |record|
200
+ # Skip things like comments and blank lines
201
+ next if skip_record?(record)
202
+
203
+ if name = record[:name] and resource = resources[name]
204
+ resource.provider = new(record)
205
+ elsif respond_to?(:match)
206
+ if resource = match(record, matchers)
207
+ # Remove this resource from circulation so we don't unnecessarily try to match
208
+ matchers.delete(resource.title)
209
+ record[:name] = resource[:name]
186
210
  resource.provider = new(record)
187
- elsif respond_to?(:match)
188
- if resource = match(record, matchers)
189
- # Remove this resource from circulation so we don't unnecessarily try to match
190
- matchers.delete(resource.title)
191
- record[:name] = resource[:name]
192
- resource.provider = new(record)
193
- end
194
211
  end
195
212
  end
196
213
  end
197
214
  end
198
215
 
216
+ def self.prefetch_all_targets(resources)
217
+ records = []
218
+ targets(resources).each do |target|
219
+ records += prefetch_target(target)
220
+ end
221
+ records
222
+ end
223
+
199
224
  # Prefetch an individual target.
200
225
  def self.prefetch_target(target)
201
226
  target_records = retrieve(target).each do |r|
@@ -217,6 +242,7 @@ class Puppet::Provider::ParsedFile < Puppet::Provider
217
242
 
218
243
  # Is there an existing record with this name?
219
244
  def self.record?(name)
245
+ return nil unless @records
220
246
  @records.find { |r| r[:name] == name }
221
247
  end
222
248
 
@@ -367,4 +393,3 @@ class Puppet::Provider::ParsedFile < Puppet::Provider
367
393
  end
368
394
  end
369
395
  end
370
-