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
@@ -3,68 +3,6 @@ require 'puppet/external/pson/pure/parser'
3
3
  require 'puppet/external/pson/pure/generator'
4
4
 
5
5
  module PSON
6
- begin
7
- require 'iconv'
8
- # An iconv instance to convert from UTF8 to UTF16 Big Endian.
9
- UTF16toUTF8 = Iconv.new('utf-8', 'utf-16be') # :nodoc:
10
- # An iconv instance to convert from UTF16 Big Endian to UTF8.
11
- UTF8toUTF16 = Iconv.new('utf-16be', 'utf-8') # :nodoc:
12
- UTF8toUTF16.iconv('no bom')
13
- rescue LoadError
14
- # We actually don't care
15
- Puppet.warning "iconv couldn't be loaded, which is required for UTF-8/UTF-16 conversions"
16
- rescue Errno::EINVAL, Iconv::InvalidEncoding
17
- # Iconv doesn't support big endian utf-16. Let's try to hack this manually
18
- # into the converters.
19
- begin
20
- old_verbose, $VERBSOSE = $VERBOSE, nil
21
- # An iconv instance to convert from UTF8 to UTF16 Big Endian.
22
- UTF16toUTF8 = Iconv.new('utf-8', 'utf-16') # :nodoc:
23
- # An iconv instance to convert from UTF16 Big Endian to UTF8.
24
- UTF8toUTF16 = Iconv.new('utf-16', 'utf-8') # :nodoc:
25
- UTF8toUTF16.iconv('no bom')
26
- if UTF8toUTF16.iconv("\xe2\x82\xac") == "\xac\x20"
27
- swapper = Class.new do
28
- def initialize(iconv) # :nodoc:
29
- @iconv = iconv
30
- end
31
-
32
- def iconv(string) # :nodoc:
33
- result = @iconv.iconv(string)
34
- PSON.swap!(result)
35
- end
36
- end
37
- UTF8toUTF16 = swapper.new(UTF8toUTF16) # :nodoc:
38
- end
39
- if UTF16toUTF8.iconv("\xac\x20") == "\xe2\x82\xac"
40
- swapper = Class.new do
41
- def initialize(iconv) # :nodoc:
42
- @iconv = iconv
43
- end
44
-
45
- def iconv(string) # :nodoc:
46
- string = PSON.swap!(string.dup)
47
- @iconv.iconv(string)
48
- end
49
- end
50
- UTF16toUTF8 = swapper.new(UTF16toUTF8) # :nodoc:
51
- end
52
- rescue Errno::EINVAL, Iconv::InvalidEncoding
53
- Puppet.warning "iconv doesn't seem to support UTF-8/UTF-16 conversions"
54
- ensure
55
- $VERBOSE = old_verbose
56
- end
57
- end
58
-
59
- # Swap consecutive bytes of _string_ in place.
60
- def self.swap!(string) # :nodoc:
61
- 0.upto(string.size / 2) do |i|
62
- break unless string[2 * i + 1]
63
- string[2 * i], string[2 * i + 1] = string[2 * i + 1], string[2 * i]
64
- end
65
- string
66
- end
67
-
68
6
  # This module holds all the modules/classes that implement PSON's
69
7
  # functionality in pure ruby.
70
8
  module Pure
@@ -45,7 +45,7 @@ module PSON
45
45
  string.force_encoding(Encoding::ASCII_8BIT)
46
46
  string.gsub!(/["\\\x0-\x1f]/) { MAP[$MATCH] }
47
47
  string
48
- rescue Iconv::Failure => e
48
+ rescue => e
49
49
  raise GeneratorError, "Caught #{e.class}: #{e}"
50
50
  end
51
51
  else
@@ -141,7 +141,7 @@ module PSON
141
141
  bytes << c[6 * i + 2, 2].to_i(16) << c[6 * i + 4, 2].to_i(16)
142
142
  i += 1
143
143
  end
144
- PSON::UTF16toUTF8.iconv(bytes)
144
+ PSON.encode('utf-8', 'utf-16be', bytes)
145
145
  end
146
146
  end
147
147
  string.force_encoding(Encoding::UTF_8) if string.respond_to?(:force_encoding)
@@ -149,7 +149,7 @@ module PSON
149
149
  else
150
150
  UNPARSED
151
151
  end
152
- rescue Iconv::Failure => e
152
+ rescue => e
153
153
  raise GeneratorError, "Caught #{e.class}: #{e}"
154
154
  end
155
155
 
@@ -34,6 +34,10 @@ Puppet::Face.define(:ca, '0.1.0') do
34
34
  summary "Include signed certificates."
35
35
  end
36
36
 
37
+ option "--digest ALGORITHM" do
38
+ summary "The hash algorithm to use when displaying the fingerprint"
39
+ end
40
+
37
41
  option "--subject PATTERN" do
38
42
  summary "Only list if the subject matches PATTERN."
39
43
 
@@ -50,6 +54,7 @@ Puppet::Face.define(:ca, '0.1.0') do
50
54
  unless ca = Puppet::SSL::CertificateAuthority.instance
51
55
  raise "Unable to fetch the CA"
52
56
  end
57
+ Puppet::SSL::Host.ca_location = :only
53
58
 
54
59
  pattern = options[:subject].nil? ? nil :
55
60
  Regexp.new(options[:subject], Regexp::IGNORECASE)
@@ -70,7 +75,7 @@ Puppet::Face.define(:ca, '0.1.0') do
70
75
  hosts.sort.map {|host| Puppet::SSL::Host.new(host) }
71
76
  end
72
77
 
73
- when_rendering :console do |hosts|
78
+ when_rendering :console do |hosts, options|
74
79
  unless ca = Puppet::SSL::CertificateAuthority.instance
75
80
  raise "Unable to fetch the CA"
76
81
  end
@@ -80,13 +85,13 @@ Puppet::Face.define(:ca, '0.1.0') do
80
85
  hosts.map do |host|
81
86
  name = host.name.ljust(length)
82
87
  if host.certificate_request then
83
- " #{name} (#{host.certificate_request.fingerprint})"
88
+ " #{name} #{host.certificate_request.digest(options[:digest])}"
84
89
  else
85
90
  begin
86
91
  ca.verify(host.name)
87
- "+ #{name} (#{host.certificate.fingerprint})"
92
+ "+ #{name} #{host.certificate.digest(options[:digest])}"
88
93
  rescue Puppet::SSL::CertificateAuthority::CertificateVerificationError => e
89
- "- #{name} (#{host.certificate.fingerprint}) (#{e.to_s})"
94
+ "- #{name} #{host.certificate.digest(options[:digest])} (#{e.to_s})"
90
95
  end
91
96
  end
92
97
  end.join("\n")
@@ -99,6 +104,7 @@ Puppet::Face.define(:ca, '0.1.0') do
99
104
  unless ca = Puppet::SSL::CertificateAuthority.instance
100
105
  raise "Unable to fetch the CA"
101
106
  end
107
+ Puppet::SSL::Host.ca_location = :local
102
108
 
103
109
  ca.destroy host
104
110
  end
@@ -110,6 +116,7 @@ Puppet::Face.define(:ca, '0.1.0') do
110
116
  unless ca = Puppet::SSL::CertificateAuthority.instance
111
117
  raise "Unable to fetch the CA"
112
118
  end
119
+ Puppet::SSL::Host.ca_location = :only
113
120
 
114
121
  begin
115
122
  ca.revoke host
@@ -134,6 +141,7 @@ Puppet::Face.define(:ca, '0.1.0') do
134
141
  unless ca = Puppet::SSL::CertificateAuthority.instance
135
142
  raise "Unable to fetch the CA"
136
143
  end
144
+ Puppet::SSL::Host.ca_location = :local
137
145
 
138
146
  begin
139
147
  ca.generate(host, :dns_alt_names => options[:dns_alt_names])
@@ -163,6 +171,7 @@ Puppet::Face.define(:ca, '0.1.0') do
163
171
  unless ca = Puppet::SSL::CertificateAuthority.instance
164
172
  raise "Unable to fetch the CA"
165
173
  end
174
+ Puppet::SSL::Host.ca_location = :only
166
175
 
167
176
  begin
168
177
  ca.sign(host, options[:allow_dns_alt_names])
@@ -182,6 +191,7 @@ Puppet::Face.define(:ca, '0.1.0') do
182
191
  unless ca = Puppet::SSL::CertificateAuthority.instance
183
192
  raise "Unable to fetch the CA"
184
193
  end
194
+ Puppet::SSL::Host.ca_location = :only
185
195
 
186
196
  ca.print host
187
197
  end
@@ -197,17 +207,11 @@ Puppet::Face.define(:ca, '0.1.0') do
197
207
  unless ca = Puppet::SSL::CertificateAuthority.instance
198
208
  raise "Unable to fetch the CA"
199
209
  end
210
+ Puppet::SSL::Host.ca_location = :only
200
211
 
201
- begin
202
- # I want the default from the CA, not to duplicate it, but passing
203
- # 'nil' explicitly means that we don't get that. This works...
204
- if options.has_key? :digest
205
- ca.fingerprint host, options[:digest]
206
- else
207
- ca.fingerprint host
208
- end
209
- rescue ArgumentError => e
210
- raise unless e.to_s =~ /Could not find a certificate or csr for/
212
+ if cert = (Puppet::SSL::Certificate.indirection.find(host) || Puppet::SSL::CertificateRequest.indirection.find(host))
213
+ cert.digest(options[:digest]).to_s
214
+ else
211
215
  nil
212
216
  end
213
217
  end
@@ -219,6 +223,7 @@ Puppet::Face.define(:ca, '0.1.0') do
219
223
  unless ca = Puppet::SSL::CertificateAuthority.instance
220
224
  raise "Unable to fetch the CA"
221
225
  end
226
+ Puppet::SSL::Host.ca_location = :only
222
227
 
223
228
  begin
224
229
  ca.verify host
@@ -22,7 +22,7 @@ Puppet::Face.define(:config, '0.0.1') do
22
22
  EOT
23
23
  notes <<-'EOT'
24
24
  By default, this action reads the configuration in agent mode.
25
- Use the '--mode' and '--environment' flags to examine other
25
+ Use the '--run_mode' and '--environment' flags to examine other
26
26
  configuration domains.
27
27
  EOT
28
28
  examples <<-'EOT'
@@ -32,7 +32,7 @@ Puppet::Face.define(:config, '0.0.1') do
32
32
 
33
33
  Get a list of important directories from the master's config:
34
34
 
35
- $ puppet config print all --mode master | grep -E "(path|dir)"
35
+ $ puppet config print all --run_mode master | grep -E "(path|dir)"
36
36
  EOT
37
37
 
38
38
  when_invoked do |*args|
@@ -42,7 +42,7 @@ Puppet::Indirector::Face.define(:facts, '0.0.1') do
42
42
 
43
43
  Query a DB-backed inventory directly (bypassing the REST API):
44
44
 
45
- $ puppet facts find somenode.puppetlabs.lan --terminus inventory_active_record --mode master
45
+ $ puppet facts find somenode.puppetlabs.lan --terminus inventory_active_record --run_mode master
46
46
  EOT
47
47
 
48
48
  get_action(:destroy).summary "Invalid for this subcommand."
@@ -10,7 +10,6 @@ RETURNS: <%= action.returns.strip %>
10
10
  <% end -%>
11
11
  OPTIONS:
12
12
  <%# Remove these options once we can introspect them normally. -%>
13
- --mode MODE - The run mode to use (user, agent, or master).
14
13
  --render-as FORMAT - The rendering format to use.
15
14
  --verbose - Whether to log verbosely.
16
15
  --debug - Whether to log debug information.
@@ -6,7 +6,6 @@ USAGE: <%= face.synopsis %>
6
6
 
7
7
  OPTIONS:
8
8
  <%# Remove these options once we can introspect them normally. -%>
9
- --mode MODE - The run mode to use (user, agent, or master).
10
9
  --render-as FORMAT - The rendering format to use.
11
10
  --verbose - Whether to log verbosely.
12
11
  --debug - Whether to log debug information.
@@ -17,9 +17,9 @@ OPTIONS
17
17
  -------
18
18
  Note that any configuration parameter that's valid in the configuration
19
19
  file is also a valid long argument, although it may or may not be
20
- relevant to the present action. For example, `server` is a valid
21
- configuration parameter, so you can specify `--server <servername>` as
22
- an argument.
20
+ relevant to the present action. For example, `server` and `run_mode` are valid
21
+ configuration parameters, so you can specify `--server <servername>`, or
22
+ `--run_mode <runmode>` as an argument.
23
23
 
24
24
  See the configuration file documentation at
25
25
  <http://docs.puppetlabs.com/references/stable/configuration.html> for the
@@ -27,9 +27,6 @@ full list of acceptable parameters. A commented list of all
27
27
  configuration options can also be generated by running puppet with
28
28
  `--genconfig`.
29
29
 
30
- * --mode MODE:
31
- The run mode to use for the current action. Valid modes are `user`, `agent`,
32
- and `master`.
33
30
  * --render-as FORMAT:
34
31
  The format in which to render output. The most common formats are `json`,
35
32
  `s` (string), `yaml`, and `console`, but other options such as `dot` are
@@ -16,7 +16,7 @@ Puppet::Face.define(:module, '1.0.0') do
16
16
 
17
17
  returns "Pathname object representing the path to the installed module."
18
18
 
19
- examples <<-EOT
19
+ examples <<-'EOT'
20
20
  Install a module:
21
21
 
22
22
  $ puppet module install puppetlabs-vcsrepo
@@ -17,7 +17,7 @@ Puppet::Face.define(:module, '1.0.0') do
17
17
  summary "Whether to show dependencies as a tree view"
18
18
  end
19
19
 
20
- examples <<-EOT
20
+ examples <<-'EOT'
21
21
  List installed modules:
22
22
 
23
23
  $ puppet module list
@@ -8,7 +8,7 @@ Puppet::Face.define(:module, '1.0.0') do
8
8
 
9
9
  returns "Hash of module objects representing uninstalled modules and related errors."
10
10
 
11
- examples <<-EOT
11
+ examples <<-'EOT'
12
12
  Uninstall a module:
13
13
 
14
14
  $ puppet module uninstall puppetlabs-ssh
@@ -34,7 +34,7 @@ Puppet::Indirector::Face.define(:node, '0.0.1') do
34
34
 
35
35
  Retrieve a node using the puppet master's configured ENC:
36
36
 
37
- $ puppet node find somenode.puppetlabs.lan --terminus exec --mode master --render-as yaml
37
+ $ puppet node find somenode.puppetlabs.lan --terminus exec --run_mode master --render-as yaml
38
38
 
39
39
  Retrieve the same node from the puppet master:
40
40
 
@@ -1,27 +1,32 @@
1
1
  Puppet::Face.define(:node, '0.0.1') do
2
2
  action(:clean) do
3
3
  option "--[no-]unexport" do
4
- summary "Unexport exported resources"
4
+ summary "Whether to remove this node's exported resources from other nodes"
5
5
  end
6
6
 
7
- summary "Clean up everything a puppetmaster knows about a node"
7
+ summary "Clean up everything a puppetmaster knows about a node."
8
8
  arguments "<host1> [<host2> ...]"
9
- description <<-EOT
10
- This includes
11
-
12
- * Signed certificates ($vardir/ssl/ca/signed/node.domain.pem)
13
- * Cached facts ($vardir/yaml/facts/node.domain.yaml)
14
- * Cached node stuff ($vardir/yaml/node/node.domain.yaml)
15
- * Reports ($vardir/reports/node.domain)
16
- * Stored configs: it can either remove all data from an host in your
17
- storedconfig database, or with --unexport turn every exported resource
18
- supporting ensure to absent so that any other host checking out their
19
- config can remove those exported configurations.
20
-
21
- This will unexport exported resources of a
22
- host, so that consumers of these resources can remove the exported
23
- resources and we will safely remove the node from our
24
- infrastructure.
9
+ description <<-'EOT'
10
+ Clean up everything a puppet master knows about a node, including certificates
11
+ and storeconfigs data.
12
+
13
+ The full list of info cleaned by this action is:
14
+
15
+ <Signed certificates> - ($vardir/ssl/ca/signed/node.domain.pem)
16
+
17
+ <Cached facts> - ($vardir/yaml/facts/node.domain.yaml)
18
+
19
+ <Cached node objects> - ($vardir/yaml/node/node.domain.yaml)
20
+
21
+ <Reports> - ($vardir/reports/node.domain)
22
+
23
+ <Stored configs> - (in database) The clean action can either remove all
24
+ data from a host in your storeconfigs database, or, with the
25
+ <--unexport> option, turn every exported resource supporting ensure to
26
+ absent so that any other host that collected those resources can remove
27
+ them. Without unexporting, a removed node's exported resources become
28
+ unmanaged by Puppet, and may linger as cruft unless you are purging
29
+ that resource type.
25
30
  EOT
26
31
 
27
32
  when_invoked do |*args|
@@ -29,13 +34,13 @@ Puppet::Face.define(:node, '0.0.1') do
29
34
  options = args.last
30
35
  raise "At least one node should be passed" if nodes.empty? || nodes == options
31
36
 
32
-
33
-
34
- # This seems really bad; run_mode should be set as part of a class definition, and should
35
- # not be modifiable beyond that. This is one of the only places left in the code that
36
- # tries to manipulate it. I would like to get rid of it but I'm not entirely familiar
37
- # with what we are trying to do here, so I'm postponing for now... --cprice 2012-03-16
38
- Puppet.settings.set_value(:run_mode, :master, :application_defaults)
37
+ # This seems really bad; run_mode should be set as part of a class
38
+ # definition, and should not be modifiable beyond that. This is one of
39
+ # the only places left in the code that tries to manipulate it. Other
40
+ # parts of code that handle certificates behave differently if the the
41
+ # run_mode is master. Those other behaviors are needed for cleaning the
42
+ # certificates correctly.
43
+ Puppet.settings.preferred_run_mode = "master"
39
44
 
40
45
  if Puppet::SSL::CertificateAuthority.ca?
41
46
  Puppet::SSL::Host.ca_location = :local
@@ -47,9 +47,6 @@ Puppet.features.add(:libshadow, :libs => ["shadow"])
47
47
  # We're running as root.
48
48
  Puppet.features.add(:root) { require 'puppet/util/suidmanager'; Puppet::Util::SUIDManager.root? }
49
49
 
50
- # We've got mongrel available
51
- Puppet.features.add(:mongrel, :libs => %w{rubygems mongrel puppet/network/http/mongrel})
52
-
53
50
  # We have lcs diff
54
51
  Puppet.features.add :diff, :libs => %w{diff/lcs diff/lcs/hunk}
55
52
 
@@ -13,9 +13,10 @@ Puppet.features.add(:rails) do
13
13
  # that it offers. --daniel 2012-07-16
14
14
  require 'active_support'
15
15
  begin
16
+ require 'active_support/dependencies'
16
17
  ActiveSupport::Dependencies.unhook!
17
18
  ActiveSupport::Dependencies.mechanism = :require
18
- rescue ScriptError, StandardError => e
19
+ rescue LoadError, ScriptError, StandardError => e
19
20
  # ignore any failure - worst case we run without disabling the CPU
20
21
  # sucking features, so are slower but ... not actually failed, just
21
22
  # because some random future version of ActiveRecord changes.
@@ -19,7 +19,7 @@ module Puppet::FileServing::TerminusSelector
19
19
  if request.server
20
20
  :rest
21
21
  else
22
- Puppet[:default_file_terminus].to_sym
22
+ Puppet[:default_file_terminus]
23
23
  end
24
24
  when nil
25
25
  :file_server
@@ -5,6 +5,11 @@ require 'puppet/resource/catalog'
5
5
  class Puppet::Resource::Catalog::ActiveRecord < Puppet::Indirector::ActiveRecord
6
6
  use_ar_model Puppet::Rails::Host
7
7
 
8
+ def initialize
9
+ Puppet.deprecation_warning "ActiveRecord-based storeconfigs and inventory are deprecated. See http://links.puppetlabs.com/activerecord-deprecation"
10
+ super
11
+ end
12
+
8
13
  # We don't retrieve catalogs from storeconfigs
9
14
  def find(request)
10
15
  nil
@@ -113,9 +113,7 @@ class Puppet::Resource::Catalog::StaticCompiler < Puppet::Indirector::Code
113
113
 
114
114
  def remove_existing_resources(children, catalog)
115
115
  existing_names = catalog.resources.collect { |r| r.to_s }
116
-
117
116
  both = (existing_names & children.keys).inject({}) { |hash, name| hash[name] = true; hash }
118
-
119
117
  both.each { |name| children.delete(name) }
120
118
  end
121
119
 
@@ -131,7 +129,8 @@ class Puppet::Resource::Catalog::StaticCompiler < Puppet::Indirector::Code
131
129
  else
132
130
  Puppet.info "Storing content for source '#{resource[:source]}'"
133
131
  content = Puppet::FileServing::Content.indirection.find(resource[:source])
134
- Puppet::FileBucket::File.indirection.save(Puppet::FileBucket::File.new(content.content))
132
+ file = Puppet::FileBucket::File.new(content.content)
133
+ Puppet::FileBucket::File.indirection.save(file)
135
134
  end
136
135
  end
137
136
  end