puppet 3.0.0.rc5 → 3.0.0.rc7

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 (398) hide show
  1. data/LICENSE +1 -1
  2. data/README_DEVELOPER.md +209 -1
  3. data/README_HIERA.md +148 -0
  4. data/Rakefile +25 -27
  5. data/bin/extlookup2hiera +56 -0
  6. data/conf/auth.conf +34 -34
  7. data/examples/hiera/README.md +91 -0
  8. data/examples/hiera/etc/hiera.yaml +15 -0
  9. data/examples/hiera/etc/hieradb/common.yaml +3 -0
  10. data/examples/hiera/etc/hieradb/dc1.yaml +6 -0
  11. data/examples/hiera/etc/hieradb/development.yaml +2 -0
  12. data/examples/hiera/etc/puppet.conf +3 -0
  13. data/examples/hiera/modules/data/manifests/common.pp +3 -0
  14. data/examples/hiera/modules/ntp/manifests/config.pp +5 -0
  15. data/examples/hiera/modules/ntp/manifests/data.pp +3 -0
  16. data/examples/hiera/modules/ntp/templates/ntp.conf.erb +3 -0
  17. data/examples/hiera/modules/users/manifests/common.pp +3 -0
  18. data/examples/hiera/modules/users/manifests/dc1.pp +3 -0
  19. data/examples/hiera/modules/users/manifests/development.pp +3 -0
  20. data/examples/hiera/site.pp +3 -0
  21. data/ext/build_defaults.yaml +23 -0
  22. data/ext/debian/README.Debian +8 -0
  23. data/ext/debian/README.source +2 -0
  24. data/ext/debian/TODO.Debian +1 -0
  25. data/ext/debian/changelog.erb +1104 -0
  26. data/ext/debian/compat +1 -0
  27. data/ext/debian/control +143 -0
  28. data/ext/debian/copyright +361 -0
  29. data/ext/debian/docs +1 -0
  30. data/ext/debian/fileserver.conf +17 -0
  31. data/ext/debian/puppet-common.dirs +8 -0
  32. data/ext/debian/puppet-common.install +4 -0
  33. data/ext/debian/puppet-common.lintian-overrides +5 -0
  34. data/ext/debian/puppet-common.manpages +2 -0
  35. data/ext/debian/puppet-common.postinst +35 -0
  36. data/ext/debian/puppet-common.postrm +32 -0
  37. data/ext/debian/puppet-el.dirs +1 -0
  38. data/ext/debian/puppet-el.emacsen-install +25 -0
  39. data/ext/debian/puppet-el.emacsen-remove +11 -0
  40. data/ext/debian/puppet-el.emacsen-startup +9 -0
  41. data/ext/debian/puppet-el.install +1 -0
  42. data/ext/debian/puppet-testsuite.install +2 -0
  43. data/ext/debian/puppet-testsuite.lintian-overrides +4 -0
  44. data/ext/debian/puppet.conf +14 -0
  45. data/ext/debian/puppet.default +7 -0
  46. data/ext/debian/puppet.init +118 -0
  47. data/ext/debian/puppet.lintian-overrides +3 -0
  48. data/ext/debian/puppet.logrotate +11 -0
  49. data/ext/debian/puppet.manpages +32 -0
  50. data/ext/debian/puppet.postinst +20 -0
  51. data/ext/debian/puppet.postrm +20 -0
  52. data/ext/debian/puppet.preinst +20 -0
  53. data/ext/debian/puppetmaster-common.install +2 -0
  54. data/ext/debian/puppetmaster-common.manpages +2 -0
  55. data/ext/debian/puppetmaster-common.puppetqd.default +27 -0
  56. data/ext/debian/puppetmaster-common.puppetqd.init +84 -0
  57. data/ext/debian/puppetmaster-passenger.dirs +4 -0
  58. data/ext/debian/puppetmaster-passenger.postinst +66 -0
  59. data/ext/debian/puppetmaster-passenger.postrm +33 -0
  60. data/ext/debian/puppetmaster.README.debian +16 -0
  61. data/ext/debian/puppetmaster.default +38 -0
  62. data/ext/debian/puppetmaster.init +158 -0
  63. data/ext/debian/puppetmaster.lintian-overrides +3 -0
  64. data/ext/debian/puppetmaster.postinst +20 -0
  65. data/ext/debian/puppetmaster.postrm +5 -0
  66. data/ext/debian/puppetmaster.preinst +22 -0
  67. data/ext/debian/rules +128 -0
  68. data/ext/debian/source/format +1 -0
  69. data/ext/debian/source/options +1 -0
  70. data/ext/debian/vim-puppet.README.Debian +13 -0
  71. data/ext/debian/vim-puppet.dirs +3 -0
  72. data/ext/debian/vim-puppet.yaml +5 -0
  73. data/ext/debian/watch +2 -0
  74. data/ext/emacs/puppet-mode.el +1 -0
  75. data/ext/envpuppet +4 -0
  76. data/ext/envpuppet.bat +3 -2
  77. data/{conf → ext}/freebsd/puppetd +0 -0
  78. data/{conf → ext}/freebsd/puppetmasterd +0 -0
  79. data/{conf → ext}/gentoo/conf.d/puppet +0 -0
  80. data/{conf → ext}/gentoo/conf.d/puppetmaster +0 -0
  81. data/{conf → ext}/gentoo/init.d/puppet +0 -0
  82. data/{conf → ext}/gentoo/init.d/puppetmaster +0 -0
  83. data/{conf → ext}/gentoo/puppet/fileserver.conf +0 -0
  84. data/{conf → ext}/gentoo/puppet/puppet.conf +0 -0
  85. data/ext/ips/puppet-agent +49 -0
  86. data/ext/ips/puppet-master +44 -0
  87. data/ext/ips/puppet.conf +29 -0
  88. data/ext/ips/puppet.p5m.erb +12 -0
  89. data/ext/ips/puppetagent.xml +46 -0
  90. data/ext/ips/puppetmaster.xml +42 -0
  91. data/ext/ips/rules +19 -0
  92. data/ext/ips/transforms +34 -0
  93. data/{conf → ext}/osx/PackageInfo.plist +0 -0
  94. data/{conf → ext}/osx/createpackage.sh +1 -1
  95. data/ext/osx/file_mapping.yaml +33 -0
  96. data/ext/osx/preflight.erb +37 -0
  97. data/{tasks/rake/templates → ext/osx}/prototype.plist.erb +0 -0
  98. data/ext/packaging/README-Solaris.md +117 -0
  99. data/ext/packaging/README.md +89 -0
  100. data/ext/packaging/tasks/00_utils.rb +236 -0
  101. data/ext/packaging/tasks/10_setupvars.rake +62 -0
  102. data/ext/packaging/tasks/apple.rake +201 -0
  103. data/ext/packaging/tasks/clean.rake +5 -0
  104. data/ext/packaging/tasks/deb.rake +105 -0
  105. data/ext/packaging/tasks/gem.rake +52 -0
  106. data/ext/packaging/tasks/ips.rake +78 -0
  107. data/ext/packaging/tasks/mock.rake +88 -0
  108. data/ext/packaging/tasks/release.rake +20 -0
  109. data/ext/packaging/tasks/rpm.rake +39 -0
  110. data/ext/packaging/tasks/ship.rake +34 -0
  111. data/ext/packaging/tasks/sign.rake +76 -0
  112. data/ext/packaging/tasks/tar.rake +20 -0
  113. data/ext/project_data.yaml +25 -0
  114. data/ext/rack/files/apache2.conf +2 -1
  115. data/{conf → ext}/redhat/client.init +0 -0
  116. data/{conf → ext}/redhat/client.sysconfig +0 -0
  117. data/{conf → ext}/redhat/fileserver.conf +0 -0
  118. data/{conf → ext}/redhat/logrotate +0 -0
  119. data/{conf → ext}/redhat/puppet.conf +0 -0
  120. data/{conf/redhat/puppet.spec → ext/redhat/puppet.spec.erb} +140 -33
  121. data/{conf → ext}/redhat/queue.init +0 -0
  122. data/{conf → ext}/redhat/rundir-perms.patch +0 -0
  123. data/{conf → ext}/redhat/server.init +0 -0
  124. data/{conf → ext}/redhat/server.sysconfig +0 -0
  125. data/{conf → ext}/solaris/pkginfo +0 -0
  126. data/{conf → ext}/solaris/smf/puppetd.xml +0 -0
  127. data/{conf → ext}/solaris/smf/puppetmasterd.xml +0 -0
  128. data/{conf → ext}/solaris/smf/svc-puppetd +0 -0
  129. data/{conf → ext}/solaris/smf/svc-puppetmasterd +0 -0
  130. data/{conf → ext}/suse/client.init +0 -0
  131. data/{conf → ext}/suse/fileserver.conf +0 -0
  132. data/{conf → ext}/suse/logrotate +0 -0
  133. data/{conf → ext}/suse/puppet.conf +0 -0
  134. data/{conf → ext}/suse/puppet.spec +1 -1
  135. data/{conf → ext}/suse/server.init +0 -0
  136. data/ext/systemd/puppetagent.service +13 -0
  137. data/ext/systemd/puppetmaster.service +13 -0
  138. data/{conf → ext}/windows/eventlog/Rakefile +0 -0
  139. data/{conf → ext}/windows/eventlog/puppetres.dll +0 -0
  140. data/{conf → ext}/windows/eventlog/puppetres.mc +0 -0
  141. data/ext/windows/service/daemon.bat +6 -0
  142. data/ext/windows/service/daemon.rb +90 -0
  143. data/install.rb +22 -32
  144. data/lib/hiera/backend/puppet_backend.rb +102 -0
  145. data/lib/hiera/scope.rb +42 -0
  146. data/lib/hiera_puppet.rb +89 -0
  147. data/lib/puppet.rb +1 -1
  148. data/lib/puppet/agent.rb +2 -2
  149. data/lib/puppet/agent/locker.rb +12 -9
  150. data/lib/puppet/application.rb +10 -8
  151. data/lib/puppet/application/agent.rb +12 -8
  152. data/lib/puppet/application/apply.rb +2 -2
  153. data/lib/puppet/application/cert.rb +6 -6
  154. data/lib/puppet/application/certificate.rb +1 -4
  155. data/lib/puppet/application/describe.rb +1 -1
  156. data/lib/puppet/application/device.rb +5 -2
  157. data/lib/puppet/application/doc.rb +1 -1
  158. data/lib/puppet/application/face_base.rb +3 -13
  159. data/lib/puppet/application/filebucket.rb +1 -1
  160. data/lib/puppet/application/inspect.rb +1 -1
  161. data/lib/puppet/application/kick.rb +4 -2
  162. data/lib/puppet/application/master.rb +2 -2
  163. data/lib/puppet/application/queue.rb +3 -1
  164. data/lib/puppet/application/resource.rb +1 -1
  165. data/lib/puppet/configurer.rb +11 -7
  166. data/lib/puppet/configurer/downloader.rb +1 -4
  167. data/lib/puppet/daemon.rb +4 -4
  168. data/lib/puppet/defaults.rb +64 -60
  169. data/lib/puppet/external/dot.rb +1 -1
  170. data/lib/puppet/external/pson/common.rb +15 -0
  171. data/lib/puppet/external/pson/pure.rb +0 -62
  172. data/lib/puppet/external/pson/pure/generator.rb +1 -1
  173. data/lib/puppet/external/pson/pure/parser.rb +2 -2
  174. data/lib/puppet/face/ca.rb +19 -14
  175. data/lib/puppet/face/config.rb +2 -2
  176. data/lib/puppet/face/facts.rb +1 -1
  177. data/lib/puppet/face/help/action.erb +0 -1
  178. data/lib/puppet/face/help/face.erb +0 -1
  179. data/lib/puppet/face/help/man.erb +3 -6
  180. data/lib/puppet/face/module/install.rb +1 -1
  181. data/lib/puppet/face/module/list.rb +1 -1
  182. data/lib/puppet/face/module/uninstall.rb +1 -1
  183. data/lib/puppet/face/node.rb +1 -1
  184. data/lib/puppet/face/node/clean.rb +30 -25
  185. data/lib/puppet/feature/base.rb +0 -3
  186. data/lib/puppet/feature/rails.rb +2 -1
  187. data/lib/puppet/file_serving/terminus_selector.rb +1 -1
  188. data/lib/puppet/indirector/catalog/active_record.rb +5 -0
  189. data/lib/puppet/indirector/catalog/static_compiler.rb +2 -3
  190. data/lib/puppet/indirector/certificate/disabled_ca.rb +22 -0
  191. data/lib/puppet/indirector/certificate_request/disabled_ca.rb +22 -0
  192. data/lib/puppet/indirector/certificate_revocation_list/disabled_ca.rb +22 -0
  193. data/lib/puppet/indirector/face.rb +3 -3
  194. data/lib/puppet/indirector/facts/active_record.rb +5 -0
  195. data/lib/puppet/indirector/facts/facter.rb +1 -4
  196. data/lib/puppet/indirector/facts/inventory_active_record.rb +6 -0
  197. data/lib/puppet/indirector/file_bucket_file/file.rb +2 -1
  198. data/lib/puppet/indirector/indirection.rb +2 -2
  199. data/lib/puppet/indirector/key/disabled_ca.rb +22 -0
  200. data/lib/puppet/indirector/node/active_record.rb +5 -0
  201. data/lib/puppet/indirector/request.rb +4 -0
  202. data/lib/puppet/indirector/resource/active_record.rb +5 -0
  203. data/lib/puppet/network/authentication.rb +30 -0
  204. data/lib/puppet/network/http.rb +0 -13
  205. data/lib/puppet/network/http/connection.rb +10 -2
  206. data/lib/puppet/network/http/handler.rb +8 -0
  207. data/lib/puppet/network/http/mongrel/rest.rb +5 -0
  208. data/lib/puppet/network/http/rack/rest.rb +7 -0
  209. data/lib/puppet/network/http/webrick.rb +3 -6
  210. data/lib/puppet/network/http/webrick/rest.rb +4 -0
  211. data/lib/puppet/network/server.rb +9 -33
  212. data/lib/puppet/node.rb +1 -1
  213. data/lib/puppet/node/facts.rb +0 -1
  214. data/lib/puppet/parser/compiler.rb +1 -1
  215. data/lib/puppet/parser/functions.rb +12 -1
  216. data/lib/puppet/parser/functions/hiera.rb +8 -0
  217. data/lib/puppet/parser/functions/hiera_array.rb +8 -0
  218. data/lib/puppet/parser/functions/hiera_hash.rb +8 -0
  219. data/lib/puppet/parser/functions/hiera_include.rb +11 -0
  220. data/lib/puppet/parser/functions/shellquote.rb +21 -29
  221. data/lib/puppet/parser/lexer.rb +2 -1
  222. data/lib/puppet/parser/scope.rb +8 -0
  223. data/lib/puppet/provider/exec/windows.rb +1 -1
  224. data/lib/puppet/provider/group/groupadd.rb +2 -3
  225. data/lib/puppet/provider/package/pkg.rb +37 -10
  226. data/lib/puppet/provider/service/daemontools.rb +1 -1
  227. data/lib/puppet/provider/service/launchd.rb +1 -1
  228. data/lib/puppet/provider/service/redhat.rb +1 -1
  229. data/lib/puppet/provider/service/runit.rb +1 -1
  230. data/lib/puppet/provider/user/useradd.rb +8 -3
  231. data/lib/puppet/provider/user/windows_adsi.rb +11 -0
  232. data/lib/puppet/provider/zfs/zfs.rb +29 -2
  233. data/lib/puppet/provider/zone/solaris.rb +144 -39
  234. data/lib/puppet/provider/zpool/zpool.rb +7 -10
  235. data/lib/puppet/settings.rb +50 -86
  236. data/lib/puppet/settings/duration_setting.rb +34 -0
  237. data/lib/puppet/settings/terminus_setting.rb +16 -0
  238. data/lib/puppet/ssl/base.rb +49 -9
  239. data/lib/puppet/ssl/certificate.rb +13 -9
  240. data/lib/puppet/ssl/certificate_authority.rb +4 -0
  241. data/lib/puppet/ssl/certificate_authority/interface.rb +10 -17
  242. data/lib/puppet/ssl/certificate_factory.rb +4 -21
  243. data/lib/puppet/ssl/certificate_request.rb +1 -10
  244. data/lib/puppet/ssl/certificate_revocation_list.rb +1 -3
  245. data/lib/puppet/ssl/digest.rb +20 -0
  246. data/lib/puppet/ssl/host.rb +31 -6
  247. data/lib/puppet/test/test_helper.rb +1 -1
  248. data/lib/puppet/transaction/report.rb +2 -1
  249. data/lib/puppet/type.rb +1 -1
  250. data/lib/puppet/type/augeas.rb +1 -1
  251. data/lib/puppet/type/cron.rb +1 -1
  252. data/lib/puppet/type/exec.rb +7 -8
  253. data/lib/puppet/type/file.rb +1 -1
  254. data/lib/puppet/type/file/content.rb +2 -2
  255. data/lib/puppet/type/file/ensure.rb +1 -1
  256. data/lib/puppet/type/file/mode.rb +1 -1
  257. data/lib/puppet/type/file/selcontext.rb +6 -2
  258. data/lib/puppet/type/file/source.rb +1 -1
  259. data/lib/puppet/type/schedule.rb +1 -1
  260. data/lib/puppet/type/scheduled_task.rb +1 -1
  261. data/lib/puppet/type/tidy.rb +1 -1
  262. data/lib/puppet/type/zone.rb +126 -253
  263. data/lib/puppet/util.rb +10 -23
  264. data/lib/puppet/util/adsi.rb +22 -14
  265. data/lib/puppet/util/log/destinations.rb +7 -0
  266. data/lib/puppet/util/log/rate_limited_logger.rb +40 -0
  267. data/lib/puppet/util/metric.rb +2 -2
  268. data/lib/puppet/util/monkey_patches.rb +8 -0
  269. data/lib/puppet/util/platform.rb +7 -0
  270. data/lib/puppet/util/selinux.rb +31 -36
  271. data/lib/puppet/util/windows/error.rb +1 -1
  272. data/lib/puppet/util/windows/process.rb +3 -3
  273. data/lib/puppet/util/windows/security.rb +7 -7
  274. data/lib/puppet/util/windows/user.rb +65 -2
  275. data/lib/puppet/util/zaml.rb +90 -46
  276. data/lib/puppet/version.rb +1 -1
  277. data/spec/fixtures/hiera.yaml +9 -0
  278. data/spec/fixtures/manifests/site.pp +0 -0
  279. data/spec/integration/defaults_spec.rb +25 -11
  280. data/spec/integration/faces/ca_spec.rb +11 -16
  281. data/spec/integration/network/server/webrick_spec.rb +14 -27
  282. data/spec/integration/node_spec.rb +4 -1
  283. data/spec/integration/parser/functions/require_spec.rb +3 -3
  284. data/spec/integration/parser/undef_param_spec.rb +88 -0
  285. data/spec/integration/provider/mount_spec.rb +4 -1
  286. data/spec/integration/ssl/certificate_authority_spec.rb +18 -0
  287. data/spec/lib/puppet_spec/files.rb +3 -3
  288. data/spec/lib/puppet_spec/settings.rb +0 -1
  289. data/spec/shared_contexts/platform.rb +8 -0
  290. data/spec/spec_helper.rb +6 -0
  291. data/spec/unit/agent/locker_spec.rb +8 -2
  292. data/spec/unit/application/agent_spec.rb +29 -7
  293. data/spec/unit/application/apply_spec.rb +1 -1
  294. data/spec/unit/application/device_spec.rb +18 -1
  295. data/spec/unit/application/face_base_spec.rb +16 -2
  296. data/spec/unit/application/kick_spec.rb +8 -0
  297. data/spec/unit/application/queue_spec.rb +5 -0
  298. data/spec/unit/application_spec.rb +13 -23
  299. data/spec/unit/configurer/downloader_spec.rb +2 -11
  300. data/spec/unit/configurer_spec.rb +6 -0
  301. data/spec/unit/face/node_spec.rb +1 -1
  302. data/spec/unit/hiera/backend/puppet_backend_spec.rb +140 -0
  303. data/spec/unit/hiera/scope_spec.rb +62 -0
  304. data/spec/unit/hiera_puppet_spec.rb +111 -0
  305. data/spec/unit/indirector/catalog/active_record_spec.rb +4 -0
  306. data/spec/unit/indirector/catalog/static_compiler_spec.rb +194 -0
  307. data/spec/unit/indirector/certificate/disabled_ca_spec.rb +33 -0
  308. data/spec/unit/indirector/certificate_request/disabled_ca_spec.rb +33 -0
  309. data/spec/unit/indirector/certificate_revocation_list/disabled_ca_spec.rb +33 -0
  310. data/spec/unit/indirector/facts/active_record_spec.rb +37 -26
  311. data/spec/unit/indirector/facts/inventory_active_record_spec.rb +5 -0
  312. data/spec/unit/indirector/hiera_spec.rb +2 -1
  313. data/spec/unit/indirector/key/disabled_ca_spec.rb +33 -0
  314. data/spec/unit/indirector/node/active_record_spec.rb +7 -0
  315. data/spec/unit/indirector/request_spec.rb +22 -0
  316. data/spec/unit/indirector/resource/active_record_spec.rb +5 -0
  317. data/spec/unit/module_tool/application_spec.rb +1 -1
  318. data/spec/unit/network/authentication_spec.rb +86 -0
  319. data/spec/unit/network/http/connection_spec.rb +21 -0
  320. data/spec/unit/network/http/handler_spec.rb +12 -0
  321. data/spec/unit/network/http/rack/rest_spec.rb +7 -0
  322. data/spec/unit/network/http/webrick_spec.rb +11 -26
  323. data/spec/unit/network/server_spec.rb +79 -192
  324. data/spec/unit/node/facts_spec.rb +2 -2
  325. data/spec/unit/parser/ast/vardef_spec.rb +4 -4
  326. data/spec/unit/parser/files_spec.rb +3 -0
  327. data/spec/unit/parser/functions/defined_spec.rb +5 -5
  328. data/spec/unit/parser/functions/fqdn_rand_spec.rb +1 -1
  329. data/spec/unit/parser/functions/hiera_array_spec.rb +23 -0
  330. data/spec/unit/parser/functions/hiera_hash_spec.rb +19 -0
  331. data/spec/unit/parser/functions/hiera_include_spec.rb +19 -0
  332. data/spec/unit/parser/functions/hiera_spec.rb +21 -0
  333. data/spec/unit/parser/functions/include_spec.rb +3 -3
  334. data/spec/unit/parser/functions/realize_spec.rb +3 -3
  335. data/spec/unit/parser/functions/require_spec.rb +5 -5
  336. data/spec/unit/parser/functions/shellquote_spec.rb +0 -4
  337. data/spec/unit/parser/functions_spec.rb +6 -10
  338. data/spec/unit/parser/lexer_spec.rb +13 -0
  339. data/spec/unit/parser/scope_spec.rb +16 -1
  340. data/spec/unit/provider/exec/posix_spec.rb +7 -6
  341. data/spec/unit/provider/group/groupadd_spec.rb +36 -30
  342. data/spec/unit/provider/package/pkg_spec.rb +16 -2
  343. data/spec/unit/provider/service/redhat_spec.rb +2 -2
  344. data/spec/unit/provider/sshkey/parsed_spec.rb +4 -0
  345. data/spec/unit/provider/user/user_role_add_spec.rb +125 -126
  346. data/spec/unit/provider/user/useradd_spec.rb +147 -118
  347. data/spec/unit/provider/user/windows_adsi_spec.rb +22 -0
  348. data/spec/unit/provider/zone/solaris_spec.rb +126 -7
  349. data/spec/unit/provider/zpool/zpool_spec.rb +4 -3
  350. data/spec/unit/puppet_spec.rb +7 -0
  351. data/spec/unit/settings/duration_setting_spec.rb +45 -0
  352. data/spec/unit/settings/terminus_setting_spec.rb +28 -0
  353. data/spec/unit/settings_spec.rb +21 -23
  354. data/spec/unit/ssl/base_spec.rb +68 -19
  355. data/spec/unit/ssl/certificate_authority/interface_spec.rb +19 -30
  356. data/spec/unit/ssl/certificate_authority_spec.rb +3 -2
  357. data/spec/unit/ssl/certificate_factory_spec.rb +15 -6
  358. data/spec/unit/ssl/certificate_request_spec.rb +80 -113
  359. data/spec/unit/ssl/certificate_revocation_list_spec.rb +1 -1
  360. data/spec/unit/ssl/certificate_spec.rb +26 -2
  361. data/spec/unit/ssl/digest_spec.rb +35 -0
  362. data/spec/unit/ssl/host_spec.rb +73 -27
  363. data/spec/unit/ssl/key_spec.rb +0 -4
  364. data/spec/unit/type/exec_spec.rb +1 -1
  365. data/spec/unit/type/file_spec.rb +2 -1
  366. data/spec/unit/type/scheduled_task_spec.rb +2 -2
  367. data/spec/unit/type/zone_spec.rb +52 -10
  368. data/spec/unit/util/adsi_spec.rb +19 -0
  369. data/spec/unit/util/checksums_spec.rb +2 -3
  370. data/spec/unit/util/execution_spec.rb +1 -1
  371. data/spec/unit/util/log/destinations_spec.rb +1 -0
  372. data/spec/unit/util/log/rate_limited_logger_spec.rb +51 -0
  373. data/spec/unit/util/logging_spec.rb +6 -6
  374. data/spec/unit/util/selinux_spec.rb +24 -32
  375. data/spec/unit/util/zaml_spec.rb +94 -6
  376. data/spec/unit/util_spec.rb +17 -0
  377. data/spec/watchr.rb +2 -6
  378. data/tasks/{rake/manpages.rake → manpages.rake} +0 -0
  379. data/tasks/{rake/parser.rake → parser.rake} +0 -0
  380. metadata +1003 -119
  381. data/CHANGELOG +0 -9233
  382. data/conf/osx/preflight +0 -24
  383. data/lib/puppet/network/http/mongrel.rb +0 -35
  384. data/lib/puppet/util/config_timeout.rb +0 -24
  385. data/spec/unit/network/http/mongrel/rest_spec.rb +0 -257
  386. data/spec/unit/network/http/mongrel_spec.rb +0 -91
  387. data/spec/unit/network/http_spec.rb +0 -31
  388. data/spec/unit/util/config_timeout_spec.rb +0 -57
  389. data/tasks/rake/apple.rake +0 -176
  390. data/tasks/rake/changelog.rake +0 -15
  391. data/tasks/rake/ci.rake +0 -22
  392. data/tasks/rake/dailybuild.rake +0 -9
  393. data/tasks/rake/gem.rake +0 -63
  394. data/tasks/rake/git_workflow.rake +0 -134
  395. data/tasks/rake/metrics.rake +0 -14
  396. data/tasks/rake/sign.rake +0 -14
  397. data/tasks/rake/testbranch.rake +0 -16
  398. data/tasks/rake/yard.rake +0 -11
@@ -0,0 +1,89 @@
1
+ require 'hiera'
2
+ require 'hiera/scope'
3
+ require 'puppet'
4
+
5
+ module HieraPuppet
6
+ module_function
7
+
8
+ def lookup(key, default, scope, override, resolution_type)
9
+ unless scope.respond_to?("[]")
10
+ scope = Hiera::Scope.new(scope)
11
+ end
12
+
13
+ answer = hiera.lookup(key, default, scope, override, resolution_type)
14
+
15
+ if answer.nil?
16
+ raise(Puppet::ParseError, "Could not find data item #{key} in any Hiera data file and no default supplied")
17
+ end
18
+
19
+ answer
20
+ end
21
+
22
+ def parse_args(args)
23
+ # Functions called from Puppet manifests like this:
24
+ #
25
+ # hiera("foo", "bar")
26
+ #
27
+ # Are invoked internally after combining the positional arguments into a
28
+ # single array:
29
+ #
30
+ # func = function_hiera
31
+ # func(["foo", "bar"])
32
+ #
33
+ # Functions called from templates preserve the positional arguments:
34
+ #
35
+ # scope.function_hiera("foo", "bar")
36
+ #
37
+ # Deal with Puppet's special calling mechanism here.
38
+ if args[0].is_a?(Array)
39
+ args = args[0]
40
+ end
41
+
42
+ if args.empty?
43
+ raise(Puppet::ParseError, "Please supply a parameter to perform a Hiera lookup")
44
+ end
45
+
46
+ key = args[0]
47
+ default = args[1]
48
+ override = args[2]
49
+
50
+ return [key, default, override]
51
+ end
52
+
53
+ private
54
+ module_function
55
+
56
+ def hiera
57
+ @hiera ||= Hiera.new(:config => hiera_config)
58
+ end
59
+
60
+ def hiera_config
61
+ config = {}
62
+
63
+ if config_file = hiera_config_file
64
+ config = Hiera::Config.load(config_file)
65
+ end
66
+
67
+ config[:logger] = 'puppet'
68
+ config
69
+ end
70
+
71
+ def hiera_config_file
72
+ config_file = nil
73
+
74
+ if Puppet.settings[:hiera_config].is_a?(String)
75
+ expanded_config_file = File.expand_path(Puppet.settings[:hiera_config])
76
+ if File.exist?(expanded_config_file)
77
+ config_file = expanded_config_file
78
+ end
79
+ elsif Puppet.settings[:confdir].is_a?(String)
80
+ expanded_config_file = File.expand_path(File.join(Puppet.settings[:confdir], '/hiera.yaml'))
81
+ if File.exist?(expanded_config_file)
82
+ config_file = expanded_config_file
83
+ end
84
+ end
85
+
86
+ config_file
87
+ end
88
+ end
89
+
@@ -94,7 +94,7 @@ module Puppet
94
94
  # (rather than using a global variable, as we did previously...). Would be good to revisit this at some point.
95
95
  #
96
96
  # --cprice 2012-03-16
97
- Puppet::Util::RunMode[@@settings.run_mode]
97
+ Puppet::Util::RunMode[@@settings.preferred_run_mode]
98
98
  end
99
99
 
100
100
  # Load all of the configuration parameters.
@@ -27,7 +27,7 @@ class Puppet::Agent
27
27
  # Perform a run with our client.
28
28
  def run(client_options = {})
29
29
  if running?
30
- Puppet.notice "Run of #{client_class} already in progress; skipping"
30
+ Puppet.notice "Run of #{client_class} already in progress; skipping (#{lockfile_path} exists)"
31
31
  return
32
32
  end
33
33
  if disabled?
@@ -70,7 +70,7 @@ class Puppet::Agent
70
70
  return unless Puppet[:splay]
71
71
  return if splayed?
72
72
 
73
- time = rand(Integer(Puppet[:splaylimit]) + 1)
73
+ time = rand(Puppet[:splaylimit] + 1)
74
74
  Puppet.info "Sleeping for #{time} seconds (splay is enabled)"
75
75
  sleep(time)
76
76
  @splayed = true
@@ -1,14 +1,13 @@
1
1
  require 'puppet/util/pidlock'
2
2
 
3
- # This module is responsible for encapsulating the logic for
4
- # "locking" the puppet agent during a run; in other words,
5
- # keeping track of enough state to answer the question
6
- # "is there a puppet agent currently running?"
3
+ # This module is responsible for encapsulating the logic for "locking" the
4
+ # puppet agent during a catalog run; in other words, keeping track of enough
5
+ # state to answer the question "is there a puppet agent currently applying a
6
+ # catalog?"
7
7
  #
8
- # The implementation involves writing a lockfile whose contents
9
- # are simply the PID of the running agent process. This is
10
- # considered part of the public Puppet API because it used
11
- # by external tools such as mcollective.
8
+ # The implementation involves writing a lockfile whose contents are simply the
9
+ # PID of the running agent process. This is considered part of the public
10
+ # Puppet API because it used by external tools such as mcollective.
12
11
  #
13
12
  # For more information, please see docs on the website.
14
13
  # http://links.puppetlabs.com/agent_lockfiles
@@ -29,8 +28,12 @@ module Puppet::Agent::Locker
29
28
  lockfile.locked?
30
29
  end
31
30
 
31
+ def lockfile_path
32
+ @lockfile_path ||= Puppet[:agent_catalog_run_lockfile]
33
+ end
34
+
32
35
  def lockfile
33
- @lockfile ||= Puppet::Util::Pidlock.new(Puppet[:agent_pidfile])
36
+ @lockfile ||= Puppet::Util::Pidlock.new(lockfile_path)
34
37
 
35
38
  @lockfile
36
39
  end
@@ -265,19 +265,23 @@ class Application
265
265
  find(name).new
266
266
  end
267
267
 
268
- #
269
- # I think that it would be nice to look into changing this into two methods (getter/setter); however,
270
- # it sounds like this is a desirable feature of our ruby DSL. --cprice 2012-03-06
271
- #
272
-
273
268
  # Sets or gets the run_mode name. Sets the run_mode name if a mode_name is
274
269
  # passed. Otherwise, gets the run_mode or a default run_mode
275
270
  #
276
271
  def run_mode( mode_name = nil)
272
+ if mode_name
273
+ Puppet.settings.preferred_run_mode = mode_name
274
+ end
275
+
277
276
  return @run_mode if @run_mode and not mode_name
278
277
 
279
278
  require 'puppet/util/run_mode'
280
- @run_mode = Puppet::Util::RunMode[ mode_name || :user ]
279
+ @run_mode = Puppet::Util::RunMode[ mode_name || Puppet.settings.preferred_run_mode ]
280
+ end
281
+
282
+ # This is for testing only
283
+ def clear_everything_for_tests
284
+ @run_mode = @banner = @run_status = @option_parser_commands = nil
281
285
  end
282
286
  end
283
287
 
@@ -409,8 +413,6 @@ class Application
409
413
  option_parser.parse!(self.command_line.args)
410
414
  end
411
415
 
412
-
413
-
414
416
  def handlearg(opt, val)
415
417
  opt, val = Puppet::Settings.clean_opt(opt, val)
416
418
  send(:handle_unknown, opt, val) if respond_to?(:handle_unknown)
@@ -9,6 +9,7 @@ class Puppet::Application::Agent < Puppet::Application
9
9
  def app_defaults
10
10
  super.merge({
11
11
  :catalog_terminus => :rest,
12
+ :catalog_cache_terminus => :json,
12
13
  :node_terminus => :rest,
13
14
  :facts_terminus => :facter,
14
15
  })
@@ -33,7 +34,7 @@ class Puppet::Application::Agent < Puppet::Application
33
34
  :client => true,
34
35
  :fqdn => nil,
35
36
  :serve => [],
36
- :digest => :MD5,
37
+ :digest => 'SHA256',
37
38
  :graph => true,
38
39
  :fingerprint => false,
39
40
  }.each do |opt,val|
@@ -88,7 +89,7 @@ class Puppet::Application::Agent < Puppet::Application
88
89
  end
89
90
 
90
91
  def help
91
- <<-HELP
92
+ <<-'HELP'
92
93
 
93
94
  puppet-agent(8) -- The puppet agent daemon
94
95
  ========
@@ -199,8 +200,8 @@ configuration options can also be generated by running puppet agent with
199
200
 
200
201
  * --digest:
201
202
  Change the certificate fingerprinting digest algorithm. The default is
202
- MD5. Valid values depends on the version of OpenSSL installed, but
203
- should always at least contain MD5, MD2, SHA1 and SHA256.
203
+ SHA256. Valid values depends on the version of OpenSSL installed, but
204
+ will likely contain MD5, MD2, SHA1 and SHA256.
204
205
 
205
206
  * --disable:
206
207
  Disable working on the local system. This puts a lock file in place,
@@ -317,10 +318,10 @@ Copyright (c) 2011 Puppet Labs, LLC Licensed under the Apache 2.0 License
317
318
  exit(1)
318
319
  return
319
320
  end
320
- unless fingerprint = cert.fingerprint(options[:digest])
321
+ unless digest = cert.digest(options[:digest].to_s)
321
322
  raise ArgumentError, "Could not get fingerprint for digest '#{options[:digest]}'"
322
323
  end
323
- puts fingerprint
324
+ puts digest.to_s
324
325
  end
325
326
 
326
327
  def onetime
@@ -378,6 +379,7 @@ Copyright (c) 2011 Puppet Labs, LLC Licensed under the Apache 2.0 License
378
379
  end
379
380
 
380
381
  def setup_listen
382
+ Puppet.warning "Puppet --listen / kick is deprecated. See http://links.puppetlabs.com/puppet-kick-deprecation"
381
383
  unless FileTest.exists?(Puppet[:rest_authconfig])
382
384
  Puppet.err "Will not start without authorization file #{Puppet[:rest_authconfig]}"
383
385
  exit(14)
@@ -385,7 +387,7 @@ Copyright (c) 2011 Puppet Labs, LLC Licensed under the Apache 2.0 License
385
387
 
386
388
  require 'puppet/network/server'
387
389
  # No REST handlers yet.
388
- server = Puppet::Network::Server.new(:port => Puppet[:puppetport])
390
+ server = Puppet::Network::Server.new(Puppet[:bindaddress], Puppet[:puppetport])
389
391
 
390
392
  @daemon.server = server
391
393
  end
@@ -460,7 +462,9 @@ Copyright (c) 2011 Puppet Labs, LLC Licensed under the Apache 2.0 License
460
462
  # we want the last report to be persisted locally
461
463
  Puppet::Transaction::Report.indirection.cache_class = :yaml
462
464
 
463
- Puppet::Resource::Catalog.indirection.cache_class = :yaml
465
+ if Puppet[:catalog_cache_terminus]
466
+ Puppet::Resource::Catalog.indirection.cache_class = Puppet[:catalog_cache_terminus]
467
+ end
464
468
 
465
469
  unless options[:fingerprint]
466
470
  setup_agent
@@ -31,7 +31,7 @@ class Puppet::Application::Apply < Puppet::Application
31
31
  end
32
32
 
33
33
  def help
34
- <<-HELP
34
+ <<-'HELP'
35
35
 
36
36
  puppet-apply(8) -- Apply Puppet manifests locally
37
37
  ========
@@ -135,7 +135,7 @@ Copyright (c) 2011 Puppet Labs, LLC Licensed under the Apache 2.0 License
135
135
 
136
136
  def app_defaults
137
137
  super.merge({
138
- :default_file_terminus => "file_server",
138
+ :default_file_terminus => :file_server,
139
139
  })
140
140
  end
141
141
 
@@ -52,7 +52,7 @@ class Puppet::Application::Cert < Puppet::Application
52
52
  end
53
53
 
54
54
  def help
55
- <<-HELP
55
+ <<-'HELP'
56
56
 
57
57
  puppet-cert(8) -- Manage certificates and requests
58
58
  ========
@@ -91,8 +91,8 @@ unless the '--all' option is set.
91
91
  both signed and unsigned, will be removed.
92
92
 
93
93
  * fingerprint:
94
- Print the DIGEST (defaults to md5) fingerprint of a host's
95
- certificate.
94
+ Print the DIGEST (defaults to the signing algorithm) fingerprint of a
95
+ host's certificate.
96
96
 
97
97
  * generate:
98
98
  Generate a certificate for a named client. A certificate/keypair will
@@ -140,9 +140,9 @@ configuration options can also be generated by running puppet cert with
140
140
  'clean', 'list', and 'fingerprint' actions.
141
141
 
142
142
  * --digest:
143
- Set the digest for fingerprinting (defaults to md5). Valid values
144
- depends on your openssl and openssl ruby extension version, but should
145
- contain at least md5, sha1, md2, sha256.
143
+ Set the digest for fingerprinting (defaults to the the digest used when
144
+ signing the cert). Valid values depends on your openssl and openssl ruby
145
+ extension version.
146
146
 
147
147
  * --debug:
148
148
  Enable full debugging.
@@ -7,10 +7,7 @@ class Puppet::Application::Certificate < Puppet::Application::IndirectionBase
7
7
  # I'd prefer if this could be dealt with differently; ideally, run_mode should be set as
8
8
  # part of a class definition, and should not be modifiable beyond that. This is one of
9
9
  # the cases where that isn't currently possible.
10
- # Perhaps a separate issue, but related, is that the run_mode probably shouldn't be a
11
- # normal 'setting' like the rest of the config stuff; I left some notes in settings.rb
12
- # and defaults.rb discussing this. --cprice 2012-03-22
13
- Puppet.settings.set_value(:run_mode, :master, :application_defaults)
10
+ Puppet.settings.preferred_run_mode = "master"
14
11
  end
15
12
 
16
13
  super
@@ -179,7 +179,7 @@ class Puppet::Application::Describe < Puppet::Application
179
179
  option("--meta","-m")
180
180
 
181
181
  def help
182
- <<-HELP
182
+ <<-'HELP'
183
183
 
184
184
  puppet-describe(8) -- Display help about resource types
185
185
  ========
@@ -11,6 +11,7 @@ class Puppet::Application::Device < Puppet::Application
11
11
  def app_defaults
12
12
  super.merge({
13
13
  :catalog_terminus => :rest,
14
+ :catalog_cache_terminus => :json,
14
15
  :node_terminus => :rest,
15
16
  :facts_terminus => :network_device,
16
17
  })
@@ -63,7 +64,7 @@ class Puppet::Application::Device < Puppet::Application
63
64
  end
64
65
 
65
66
  def help
66
- <<-HELP
67
+ <<-'HELP'
67
68
 
68
69
  puppet-device(8) -- Manage remote network devices
69
70
  ========
@@ -236,6 +237,8 @@ Licensed under the Apache 2.0 License
236
237
 
237
238
  Puppet::Transaction::Report.indirection.terminus_class = :rest
238
239
 
239
- Puppet::Resource::Catalog.indirection.cache_class = :yaml
240
+ if Puppet[:catalog_cache_terminus]
241
+ Puppet::Resource::Catalog.indirection.cache_class = Puppet[:catalog_cache_terminus].intern
242
+ end
240
243
  end
241
244
  end
@@ -49,7 +49,7 @@ class Puppet::Application::Doc < Puppet::Application
49
49
  end
50
50
 
51
51
  def help
52
- <<-HELP
52
+ <<-'HELP'
53
53
 
54
54
  puppet-doc(8) -- Generate Puppet documentation and references
55
55
  ========
@@ -4,8 +4,6 @@ require 'optparse'
4
4
  require 'pp'
5
5
 
6
6
  class Puppet::Application::FaceBase < Puppet::Application
7
- run_mode :agent
8
-
9
7
  option("--debug", "-d") do |arg|
10
8
  Puppet::Util::Log.level = :debug
11
9
  end
@@ -18,16 +16,6 @@ class Puppet::Application::FaceBase < Puppet::Application
18
16
  self.render_as = format.to_sym
19
17
  end
20
18
 
21
- # This seems like a bad thing; it seems like--in an ideal world--a given app/face should have one constant run mode.
22
- # This isn't currently possible because of issues relating to the certificate authority, but I've left some notes
23
- # about "run_mode" in settings.rb and defaults.rb, and if we are able to tighten up the behavior / implementation
24
- # of that setting, we might want to revisit this. --cprice 2012-03-16
25
- option("--mode RUNMODE", "-r") do |arg|
26
- raise "Invalid run mode #{arg}; supported modes are user, agent, master" unless %w{user agent master}.include?(arg)
27
- self.class.run_mode(arg.to_sym)
28
- end
29
-
30
-
31
19
  attr_accessor :face, :action, :type, :arguments, :render_as
32
20
 
33
21
  def render_as=(format)
@@ -97,7 +85,9 @@ class Puppet::Application::FaceBase < Puppet::Application
97
85
  unless Puppet.settings.boolean? option.name then
98
86
  # As far as I can tell, we treat non-bool options as always having
99
87
  # a mandatory argument. --daniel 2011-04-05
100
- index += 1 # ...so skip the argument.
88
+ # ... But, the mandatory argument will not be the next item if an = is
89
+ # employed in the long form of the option. --jeffmccune 2012-09-18
90
+ index += 1 unless item =~ /^--#{option.name}=/
101
91
  end
102
92
  elsif option = find_application_argument(item) then
103
93
  index += 1 if (option[:argument] and not option[:optional])
@@ -11,7 +11,7 @@ class Puppet::Application::Filebucket < Puppet::Application
11
11
  attr :args
12
12
 
13
13
  def help
14
- <<-HELP
14
+ <<-'HELP'
15
15
 
16
16
  puppet-filebucket(8) -- Store and retrieve files in a filebucket
17
17
  ========
@@ -17,7 +17,7 @@ class Puppet::Application::Inspect < Puppet::Application
17
17
  end
18
18
 
19
19
  def help
20
- <<-HELP
20
+ <<-'HELP'
21
21
 
22
22
  puppet-inspect(8) -- Send an inspection report
23
23
  ========
@@ -36,7 +36,7 @@ class Puppet::Application::Kick < Puppet::Application
36
36
  end
37
37
 
38
38
  def help
39
- <<-HELP
39
+ <<-'HELP'
40
40
 
41
41
  puppet-kick(8) -- Remotely control puppet agent
42
42
  ========
@@ -298,7 +298,9 @@ Copyright (c) 2011 Puppet Labs, LLC Licensed under the Apache 2.0 License
298
298
  end
299
299
 
300
300
  def setup
301
+ super()
301
302
  raise Puppet::Error.new("Puppet kick is not supported on Microsoft Windows") if Puppet.features.microsoft_windows?
303
+ Puppet.warning "Puppet kick is deprecated. See http://links.puppetlabs.com/puppet-kick-deprecation"
302
304
 
303
305
  if options[:debug]
304
306
  Puppet::Util::Log.level = :debug
@@ -306,7 +308,7 @@ Copyright (c) 2011 Puppet Labs, LLC Licensed under the Apache 2.0 License
306
308
  Puppet::Util::Log.level = :info
307
309
  end
308
310
 
309
- if Puppet[:node_terminus] == "ldap" and (options[:all] or @classes)
311
+ if Puppet[:node_terminus] == :ldap and (options[:all] or @classes)
310
312
  if options[:all]
311
313
  @hosts = Puppet::Node.indirection.search("whatever", :fqdn => options[:fqdn]).collect { |node| node.name }
312
314
  puts "all: #{@hosts.join(", ")}"