puppet 6.25.0-x64-mingw32 → 7.0.0-x64-mingw32

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 (783) hide show
  1. checksums.yaml +4 -4
  2. data/CODEOWNERS +16 -2
  3. data/CONTRIBUTING.md +5 -5
  4. data/Gemfile +3 -5
  5. data/Gemfile.lock +39 -51
  6. data/README.md +5 -5
  7. data/conf/fileserver.conf +5 -10
  8. data/ext/README.environment +8 -0
  9. data/ext/build_defaults.yaml +1 -1
  10. data/ext/dbfix.sql +132 -0
  11. data/ext/debian/README.Debian +8 -0
  12. data/ext/debian/README.source +2 -0
  13. data/ext/debian/TODO.Debian +1 -0
  14. data/ext/debian/changelog.erb +1122 -0
  15. data/ext/debian/compat +1 -0
  16. data/ext/debian/control +144 -0
  17. data/ext/debian/copyright +339 -0
  18. data/ext/debian/docs +1 -0
  19. data/ext/debian/fileserver.conf +41 -0
  20. data/ext/debian/puppet-common.dirs +13 -0
  21. data/ext/debian/puppet-common.install +3 -0
  22. data/ext/debian/puppet-common.lintian-overrides +5 -0
  23. data/ext/debian/puppet-common.manpages +28 -0
  24. data/ext/debian/puppet-common.postinst +35 -0
  25. data/ext/debian/puppet-common.postrm +33 -0
  26. data/ext/debian/puppet-el.dirs +1 -0
  27. data/ext/debian/puppet-el.emacsen-install +25 -0
  28. data/ext/debian/puppet-el.emacsen-remove +11 -0
  29. data/ext/debian/puppet-el.emacsen-startup +9 -0
  30. data/ext/debian/puppet-el.install +1 -0
  31. data/ext/debian/puppet-testsuite.install +2 -0
  32. data/ext/debian/puppet-testsuite.lintian-overrides +4 -0
  33. data/ext/debian/puppet.lintian-overrides +3 -0
  34. data/ext/debian/puppet.logrotate +20 -0
  35. data/ext/debian/puppet.postinst +20 -0
  36. data/ext/debian/puppet.postrm +20 -0
  37. data/ext/debian/puppet.preinst +20 -0
  38. data/ext/debian/puppetmaster-common.install +2 -0
  39. data/ext/debian/puppetmaster-common.manpages +2 -0
  40. data/ext/debian/puppetmaster-common.postinst +6 -0
  41. data/ext/debian/puppetmaster-passenger.dirs +4 -0
  42. data/ext/debian/puppetmaster-passenger.postinst +162 -0
  43. data/ext/debian/puppetmaster-passenger.postrm +61 -0
  44. data/ext/debian/puppetmaster.README.debian +17 -0
  45. data/ext/debian/puppetmaster.default +14 -0
  46. data/ext/debian/puppetmaster.init +137 -0
  47. data/ext/debian/puppetmaster.lintian-overrides +3 -0
  48. data/ext/debian/puppetmaster.postinst +20 -0
  49. data/ext/debian/puppetmaster.postrm +5 -0
  50. data/ext/debian/puppetmaster.preinst +22 -0
  51. data/ext/debian/rules +132 -0
  52. data/ext/debian/source/format +1 -0
  53. data/ext/debian/source/options +1 -0
  54. data/ext/debian/vim-puppet.README.Debian +13 -0
  55. data/ext/debian/vim-puppet.dirs +5 -0
  56. data/ext/debian/vim-puppet.yaml +7 -0
  57. data/ext/debian/watch +2 -0
  58. data/ext/freebsd/puppetd +26 -0
  59. data/ext/freebsd/puppetmasterd +26 -0
  60. data/ext/gentoo/conf.d/puppet +5 -0
  61. data/ext/gentoo/conf.d/puppetmaster +12 -0
  62. data/ext/gentoo/init.d/puppet +38 -0
  63. data/ext/gentoo/init.d/puppetmaster +51 -0
  64. data/ext/gentoo/puppet/fileserver.conf +41 -0
  65. data/ext/ips/puppet-agent +44 -0
  66. data/ext/ips/puppet-master +44 -0
  67. data/ext/ips/puppet.p5m.erb +12 -0
  68. data/ext/ips/puppetagent.xml +42 -0
  69. data/ext/ips/puppetmaster.xml +42 -0
  70. data/ext/ips/rules +19 -0
  71. data/ext/ips/transforms +34 -0
  72. data/ext/ldap/puppet.schema +24 -0
  73. data/ext/logcheck/puppet +23 -0
  74. data/{examples → ext}/nagios/check_puppet.rb +2 -2
  75. data/ext/osx/file_mapping.yaml +28 -0
  76. data/ext/osx/postflight.erb +109 -0
  77. data/ext/osx/preflight.erb +52 -0
  78. data/ext/osx/prototype.plist.erb +38 -0
  79. data/ext/osx/puppet.plist +0 -2
  80. data/ext/project_data.yaml +1 -15
  81. data/ext/redhat/fileserver.conf +41 -0
  82. data/ext/redhat/logrotate +21 -0
  83. data/ext/redhat/puppet.spec.erb +841 -0
  84. data/ext/redhat/server.init +128 -0
  85. data/ext/redhat/server.sysconfig +13 -0
  86. data/{examples/enc → ext}/regexp_nodes/classes/databases +0 -0
  87. data/{examples/enc → ext}/regexp_nodes/classes/webservers +0 -0
  88. data/{examples/enc → ext}/regexp_nodes/environment/development +0 -0
  89. data/{examples/enc → ext}/regexp_nodes/parameters/service/prod +0 -0
  90. data/{examples/enc → ext}/regexp_nodes/parameters/service/qa +0 -0
  91. data/{examples/enc → ext}/regexp_nodes/parameters/service/sandbox +0 -0
  92. data/{examples/enc → ext}/regexp_nodes/regexp_nodes.rb +0 -0
  93. data/ext/solaris/pkginfo +6 -0
  94. data/ext/solaris/smf/puppetd.xml +77 -0
  95. data/ext/solaris/smf/puppetmasterd.xml +77 -0
  96. data/ext/solaris/smf/svc-puppetd +71 -0
  97. data/ext/solaris/smf/svc-puppetmasterd +67 -0
  98. data/ext/suse/puppet.spec +310 -0
  99. data/ext/suse/server.init +173 -0
  100. data/ext/windows/service/daemon.rb +6 -5
  101. data/ext/yaml_nodes.rb +105 -0
  102. data/install.rb +21 -17
  103. data/lib/puppet/application/agent.rb +4 -16
  104. data/lib/puppet/application/apply.rb +4 -24
  105. data/lib/puppet/application/device.rb +100 -106
  106. data/lib/puppet/application/filebucket.rb +13 -10
  107. data/lib/puppet/application/resource.rb +16 -32
  108. data/lib/puppet/application/script.rb +0 -2
  109. data/lib/puppet/application/ssl.rb +1 -13
  110. data/lib/puppet/application.rb +178 -108
  111. data/lib/puppet/application_support.rb +0 -7
  112. data/lib/puppet/concurrent/thread_local_singleton.rb +0 -1
  113. data/lib/puppet/configurer/downloader.rb +1 -2
  114. data/lib/puppet/configurer/plugin_handler.rb +21 -19
  115. data/lib/puppet/configurer.rb +87 -130
  116. data/lib/puppet/confine/variable.rb +1 -1
  117. data/lib/puppet/defaults.rb +128 -226
  118. data/lib/puppet/environments.rb +82 -146
  119. data/lib/puppet/face/facts.rb +5 -103
  120. data/lib/puppet/face/help/action.erb +0 -1
  121. data/lib/puppet/face/help/face.erb +0 -1
  122. data/lib/puppet/face/help.rb +1 -1
  123. data/lib/puppet/face/node/clean.rb +0 -11
  124. data/lib/puppet/face/plugin.rb +5 -8
  125. data/lib/puppet/ffi/windows/api_types.rb +311 -0
  126. data/lib/puppet/ffi/windows/constants.rb +404 -0
  127. data/lib/puppet/ffi/windows/functions.rb +628 -0
  128. data/lib/puppet/ffi/windows/structs.rb +338 -0
  129. data/lib/puppet/ffi/windows.rb +12 -0
  130. data/lib/puppet/file_serving/configuration/parser.rb +3 -34
  131. data/lib/puppet/file_serving/configuration.rb +0 -8
  132. data/lib/puppet/file_serving/fileset.rb +2 -14
  133. data/lib/puppet/file_serving/http_metadata.rb +1 -1
  134. data/lib/puppet/file_serving/mount/file.rb +4 -4
  135. data/lib/puppet/file_serving/mount.rb +1 -2
  136. data/lib/puppet/file_system/file_impl.rb +1 -3
  137. data/lib/puppet/file_system/memory_file.rb +1 -8
  138. data/lib/puppet/file_system/windows.rb +2 -4
  139. data/lib/puppet/forge/repository.rb +0 -1
  140. data/lib/puppet/forge.rb +4 -4
  141. data/lib/puppet/functions/all.rb +1 -1
  142. data/lib/puppet/functions/camelcase.rb +1 -1
  143. data/lib/puppet/functions/capitalize.rb +2 -2
  144. data/lib/puppet/functions/downcase.rb +2 -2
  145. data/lib/puppet/functions/empty.rb +0 -8
  146. data/lib/puppet/functions/find_template.rb +2 -2
  147. data/lib/puppet/functions/get.rb +5 -5
  148. data/lib/puppet/functions/group_by.rb +5 -13
  149. data/lib/puppet/functions/lest.rb +1 -1
  150. data/lib/puppet/functions/new.rb +100 -100
  151. data/lib/puppet/functions/partition.rb +4 -12
  152. data/lib/puppet/functions/require.rb +5 -5
  153. data/lib/puppet/functions/sort.rb +3 -3
  154. data/lib/puppet/functions/strftime.rb +0 -1
  155. data/lib/puppet/functions/tree_each.rb +9 -7
  156. data/lib/puppet/functions/type.rb +4 -4
  157. data/lib/puppet/functions/unwrap.rb +2 -17
  158. data/lib/puppet/functions/upcase.rb +2 -2
  159. data/lib/puppet/generate/models/type/type.rb +4 -1
  160. data/lib/puppet/http/client.rb +164 -114
  161. data/lib/puppet/{network/resolver.rb → http/dns.rb} +2 -2
  162. data/lib/puppet/http/errors.rb +16 -0
  163. data/lib/puppet/http/external_client.rb +5 -7
  164. data/lib/puppet/{network/http → http}/factory.rb +8 -15
  165. data/lib/puppet/{network/http → http}/pool.rb +61 -26
  166. data/lib/puppet/{network/http/session.rb → http/pool_entry.rb} +2 -3
  167. data/lib/puppet/http/proxy.rb +137 -0
  168. data/lib/puppet/http/redirector.rb +4 -12
  169. data/lib/puppet/http/resolver/server_list.rb +10 -25
  170. data/lib/puppet/http/resolver/settings.rb +4 -7
  171. data/lib/puppet/http/resolver/srv.rb +7 -11
  172. data/lib/puppet/http/resolver.rb +5 -15
  173. data/lib/puppet/http/response.rb +36 -54
  174. data/lib/puppet/http/response_converter.rb +24 -0
  175. data/lib/puppet/http/response_net_http.rb +42 -0
  176. data/lib/puppet/http/retry_after_handler.rb +4 -13
  177. data/lib/puppet/http/service/ca.rb +11 -22
  178. data/lib/puppet/http/service/compiler.rb +23 -144
  179. data/lib/puppet/http/service/file_server.rb +19 -29
  180. data/lib/puppet/http/service/puppetserver.rb +26 -12
  181. data/lib/puppet/http/service/report.rb +8 -10
  182. data/lib/puppet/http/service.rb +12 -26
  183. data/lib/puppet/http/session.rb +11 -20
  184. data/lib/puppet/{network/http → http}/site.rb +1 -2
  185. data/lib/puppet/http.rb +22 -13
  186. data/lib/puppet/indirector/catalog/compiler.rb +6 -25
  187. data/lib/puppet/indirector/catalog/rest.rb +2 -5
  188. data/lib/puppet/indirector/facts/facter.rb +6 -6
  189. data/lib/puppet/indirector/facts/rest.rb +3 -22
  190. data/lib/puppet/indirector/file_bucket_file/rest.rb +3 -9
  191. data/lib/puppet/indirector/file_content/rest.rb +2 -6
  192. data/lib/puppet/indirector/file_metadata/rest.rb +3 -10
  193. data/lib/puppet/indirector/file_server.rb +1 -8
  194. data/lib/puppet/indirector/generic_http.rb +0 -11
  195. data/lib/puppet/indirector/indirection.rb +1 -1
  196. data/lib/puppet/indirector/node/rest.rb +2 -4
  197. data/lib/puppet/indirector/report/rest.rb +3 -8
  198. data/lib/puppet/indirector/request.rb +0 -101
  199. data/lib/puppet/indirector/resource/ral.rb +1 -6
  200. data/lib/puppet/indirector/rest.rb +12 -263
  201. data/lib/puppet/indirector/terminus.rb +0 -4
  202. data/lib/puppet/interface/documentation.rb +0 -1
  203. data/lib/puppet/module/plan.rb +1 -0
  204. data/lib/puppet/module/task.rb +1 -1
  205. data/lib/puppet/module.rb +0 -1
  206. data/lib/puppet/module_tool/applications/installer.rb +2 -56
  207. data/lib/puppet/module_tool/applications/uninstaller.rb +1 -1
  208. data/lib/puppet/module_tool/applications/upgrader.rb +1 -1
  209. data/lib/puppet/module_tool/applications.rb +0 -1
  210. data/lib/puppet/module_tool/errors/shared.rb +2 -34
  211. data/lib/puppet/network/authconfig.rb +2 -96
  212. data/lib/puppet/network/authorization.rb +13 -35
  213. data/lib/puppet/network/formats.rb +0 -67
  214. data/lib/puppet/network/http/api/indirected_routes.rb +3 -21
  215. data/lib/puppet/network/http/api/master/v3.rb +11 -13
  216. data/lib/puppet/network/http/connection.rb +247 -316
  217. data/lib/puppet/network/http/handler.rb +0 -1
  218. data/lib/puppet/network/http.rb +3 -3
  219. data/lib/puppet/network/http_pool.rb +16 -34
  220. data/lib/puppet/node/environment.rb +11 -10
  221. data/lib/puppet/node.rb +1 -30
  222. data/lib/puppet/pal/json_catalog_encoder.rb +4 -0
  223. data/lib/puppet/pal/pal_impl.rb +4 -2
  224. data/lib/puppet/parser/ast/leaf.rb +2 -3
  225. data/lib/puppet/parser/ast/pops_bridge.rb +0 -38
  226. data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +14 -39
  227. data/lib/puppet/parser/compiler.rb +0 -198
  228. data/lib/puppet/parser/functions/fqdn_rand.rb +6 -14
  229. data/lib/puppet/parser/resource.rb +0 -69
  230. data/lib/puppet/parser/scope.rb +0 -1
  231. data/lib/puppet/parser/templatewrapper.rb +1 -2
  232. data/lib/puppet/pops/evaluator/deferred_resolver.rb +3 -5
  233. data/lib/puppet/pops/evaluator/evaluator_impl.rb +0 -5
  234. data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +3 -3
  235. data/lib/puppet/pops/evaluator/runtime3_support.rb +1 -1
  236. data/lib/puppet/pops/issues.rb +0 -5
  237. data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +6 -8
  238. data/lib/puppet/pops/lookup/lookup_adapter.rb +2 -3
  239. data/lib/puppet/pops/model/ast.pp +0 -42
  240. data/lib/puppet/pops/model/ast.rb +0 -291
  241. data/lib/puppet/pops/model/ast_transformer.rb +1 -1
  242. data/lib/puppet/pops/model/factory.rb +1 -47
  243. data/lib/puppet/pops/model/model_label_provider.rb +0 -5
  244. data/lib/puppet/pops/model/model_tree_dumper.rb +0 -22
  245. data/lib/puppet/pops/model/pn_transformer.rb +0 -16
  246. data/lib/puppet/pops/parser/egrammar.ra +0 -56
  247. data/lib/puppet/pops/parser/eparser.rb +1691 -1883
  248. data/lib/puppet/pops/parser/lexer2.rb +91 -92
  249. data/lib/puppet/pops/parser/parser_support.rb +0 -5
  250. data/lib/puppet/pops/parser/slurp_support.rb +0 -1
  251. data/lib/puppet/pops/resource/resource_type_impl.rb +2 -24
  252. data/lib/puppet/pops/serialization/to_data_converter.rb +6 -18
  253. data/lib/puppet/pops/serialization/to_stringified_converter.rb +1 -1
  254. data/lib/puppet/pops/types/p_sem_ver_type.rb +2 -8
  255. data/lib/puppet/pops/types/p_sensitive_type.rb +0 -10
  256. data/lib/puppet/pops/types/type_calculator.rb +0 -7
  257. data/lib/puppet/pops/types/type_formatter.rb +3 -4
  258. data/lib/puppet/pops/types/type_mismatch_describer.rb +1 -1
  259. data/lib/puppet/pops/types/type_parser.rb +0 -4
  260. data/lib/puppet/pops/types/types.rb +1 -2
  261. data/lib/puppet/pops/validation/checker4_0.rb +9 -37
  262. data/lib/puppet/pops/validation/tasks_checker.rb +0 -12
  263. data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -2
  264. data/lib/puppet/property/list.rb +1 -1
  265. data/lib/puppet/provider/aix_object.rb +1 -1
  266. data/lib/puppet/provider/exec/posix.rb +4 -16
  267. data/lib/puppet/provider/group/groupadd.rb +10 -18
  268. data/lib/puppet/provider/nameservice.rb +0 -18
  269. data/lib/puppet/provider/package/apt.rb +2 -34
  270. data/lib/puppet/provider/package/aptitude.rb +0 -6
  271. data/lib/puppet/provider/package/dnfmodule.rb +1 -1
  272. data/lib/puppet/provider/package/dpkg.rb +0 -10
  273. data/lib/puppet/provider/package/gem.rb +23 -3
  274. data/lib/puppet/provider/package/nim.rb +6 -11
  275. data/lib/puppet/provider/package/pip.rb +3 -16
  276. data/lib/puppet/provider/package/pkg.rb +2 -23
  277. data/lib/puppet/provider/package/portage.rb +1 -1
  278. data/lib/puppet/provider/package/puppet_gem.rb +1 -4
  279. data/lib/puppet/provider/package/puppetserver_gem.rb +1 -1
  280. data/lib/puppet/provider/package/yum.rb +1 -1
  281. data/lib/puppet/provider/parsedfile.rb +0 -3
  282. data/lib/puppet/provider/service/base.rb +1 -1
  283. data/lib/puppet/provider/service/debian.rb +0 -2
  284. data/lib/puppet/provider/service/init.rb +5 -5
  285. data/lib/puppet/provider/service/launchd.rb +2 -2
  286. data/lib/puppet/provider/service/redhat.rb +1 -1
  287. data/lib/puppet/provider/service/smf.rb +194 -76
  288. data/lib/puppet/provider/service/systemd.rb +6 -16
  289. data/lib/puppet/provider/service/upstart.rb +5 -5
  290. data/lib/puppet/provider/service/windows.rb +0 -38
  291. data/lib/puppet/provider/user/aix.rb +3 -46
  292. data/lib/puppet/provider/user/directoryservice.rb +11 -34
  293. data/lib/puppet/provider/user/useradd.rb +24 -134
  294. data/lib/puppet/provider.rb +1 -14
  295. data/lib/puppet/reference/configuration.rb +8 -7
  296. data/lib/puppet/reference/indirection.rb +1 -1
  297. data/lib/puppet/reference/providers.rb +2 -2
  298. data/lib/puppet/resource/catalog.rb +1 -14
  299. data/lib/puppet/resource/type.rb +3 -119
  300. data/lib/puppet/resource/type_collection.rb +3 -49
  301. data/lib/puppet/resource.rb +1 -89
  302. data/lib/puppet/runtime.rb +2 -13
  303. data/lib/puppet/settings/environment_conf.rb +0 -1
  304. data/lib/puppet/settings/integer_setting.rb +17 -0
  305. data/lib/puppet/settings/port_setting.rb +15 -0
  306. data/lib/puppet/settings/priority_setting.rb +5 -4
  307. data/lib/puppet/settings.rb +82 -98
  308. data/lib/puppet/ssl/base.rb +3 -5
  309. data/lib/puppet/ssl/certificate.rb +0 -6
  310. data/lib/puppet/ssl/certificate_request.rb +1 -12
  311. data/lib/puppet/ssl/certificate_signer.rb +6 -0
  312. data/lib/puppet/ssl/oids.rb +3 -1
  313. data/lib/puppet/ssl/ssl_provider.rb +17 -0
  314. data/lib/puppet/ssl/state_machine.rb +3 -1
  315. data/lib/puppet/ssl/verifier.rb +2 -0
  316. data/lib/puppet/ssl.rb +10 -6
  317. data/lib/puppet/test/test_helper.rb +2 -7
  318. data/lib/puppet/transaction/additional_resource_generator.rb +1 -1
  319. data/lib/puppet/transaction/persistence.rb +1 -11
  320. data/lib/puppet/transaction/report.rb +3 -19
  321. data/lib/puppet/transaction.rb +1 -7
  322. data/lib/puppet/type/exec.rb +5 -35
  323. data/lib/puppet/type/file/checksum.rb +1 -1
  324. data/lib/puppet/type/file/mode.rb +0 -6
  325. data/lib/puppet/type/file/selcontext.rb +1 -1
  326. data/lib/puppet/type/file/source.rb +1 -1
  327. data/lib/puppet/type/file.rb +12 -32
  328. data/lib/puppet/type/filebucket.rb +4 -4
  329. data/lib/puppet/type/group.rb +1 -0
  330. data/lib/puppet/type/package.rb +8 -16
  331. data/lib/puppet/type/resources.rb +1 -1
  332. data/lib/puppet/type/service.rb +41 -26
  333. data/lib/puppet/type/tidy.rb +3 -22
  334. data/lib/puppet/type/user.rb +21 -38
  335. data/lib/puppet/type.rb +1 -77
  336. data/lib/puppet/util/autoload.rb +8 -1
  337. data/lib/puppet/util/command_line.rb +1 -1
  338. data/lib/puppet/util/execution.rb +0 -11
  339. data/lib/puppet/util/filetype.rb +2 -2
  340. data/lib/puppet/util/http_proxy.rb +2 -215
  341. data/lib/puppet/util/json.rb +0 -3
  342. data/lib/puppet/util/log.rb +2 -1
  343. data/lib/puppet/util/logging.rb +25 -1
  344. data/lib/puppet/util/monkey_patches.rb +0 -53
  345. data/lib/puppet/util/pidlock.rb +1 -1
  346. data/lib/puppet/util/posix.rb +5 -54
  347. data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +1 -1
  348. data/lib/puppet/util/rdoc.rb +0 -7
  349. data/lib/puppet/util/retry_action.rb +1 -1
  350. data/lib/puppet/util/run_mode.rb +9 -1
  351. data/lib/puppet/util/selinux.rb +4 -30
  352. data/lib/puppet/util/suidmanager.rb +2 -1
  353. data/lib/puppet/util/symbolic_file_mode.rb +17 -29
  354. data/lib/puppet/util/tagging.rb +0 -1
  355. data/lib/puppet/util/windows/adsi.rb +0 -46
  356. data/lib/puppet/util/windows/daemon.rb +360 -0
  357. data/lib/puppet/util/windows/error.rb +1 -0
  358. data/lib/puppet/util/windows/eventlog.rb +4 -9
  359. data/lib/puppet/util/windows/file.rb +8 -242
  360. data/lib/puppet/util/windows/monkey_patches/process.rb +414 -0
  361. data/lib/puppet/util/windows/principal.rb +2 -9
  362. data/lib/puppet/util/windows/process.rb +4 -226
  363. data/lib/puppet/util/windows/service.rb +9 -460
  364. data/lib/puppet/util/windows/sid.rb +2 -6
  365. data/lib/puppet/util/windows/string.rb +12 -13
  366. data/lib/puppet/util/windows/user.rb +2 -0
  367. data/lib/puppet/util/windows.rb +3 -8
  368. data/lib/puppet/util/yaml.rb +0 -22
  369. data/lib/puppet/util.rb +3 -4
  370. data/lib/puppet/vendor/require_vendored.rb +0 -1
  371. data/lib/puppet/version.rb +1 -1
  372. data/lib/puppet/x509/cert_provider.rb +29 -1
  373. data/lib/puppet/x509.rb +5 -1
  374. data/lib/puppet.rb +20 -25
  375. data/locales/puppet.pot +816 -1637
  376. data/man/man5/puppet.conf.5 +286 -382
  377. data/man/man8/puppet-agent.8 +2 -5
  378. data/man/man8/puppet-apply.8 +2 -2
  379. data/man/man8/puppet-catalog.8 +9 -9
  380. data/man/man8/puppet-config.8 +1 -1
  381. data/man/man8/puppet-describe.8 +1 -1
  382. data/man/man8/puppet-device.8 +2 -2
  383. data/man/man8/puppet-doc.8 +1 -1
  384. data/man/man8/puppet-epp.8 +1 -1
  385. data/man/man8/puppet-facts.8 +8 -51
  386. data/man/man8/puppet-filebucket.8 +4 -4
  387. data/man/man8/puppet-generate.8 +1 -1
  388. data/man/man8/puppet-help.8 +1 -1
  389. data/man/man8/puppet-lookup.8 +1 -1
  390. data/man/man8/puppet-module.8 +3 -60
  391. data/man/man8/puppet-node.8 +5 -5
  392. data/man/man8/puppet-parser.8 +1 -1
  393. data/man/man8/puppet-plugin.8 +1 -1
  394. data/man/man8/puppet-report.8 +5 -5
  395. data/man/man8/puppet-resource.8 +1 -1
  396. data/man/man8/puppet-script.8 +2 -2
  397. data/man/man8/puppet-ssl.8 +1 -5
  398. data/man/man8/puppet.8 +2 -2
  399. data/spec/fixtures/ssl/127.0.0.1-key.pem +57 -107
  400. data/spec/fixtures/ssl/127.0.0.1.pem +31 -52
  401. data/spec/fixtures/ssl/bad-basic-constraints.pem +35 -57
  402. data/spec/fixtures/ssl/bad-int-basic-constraints.pem +35 -57
  403. data/spec/fixtures/ssl/ca.pem +35 -57
  404. data/spec/fixtures/ssl/crl.pem +18 -28
  405. data/spec/fixtures/ssl/ec-key.pem +11 -11
  406. data/spec/fixtures/ssl/ec.pem +24 -33
  407. data/spec/fixtures/ssl/encrypted-ec-key.pem +12 -12
  408. data/spec/fixtures/ssl/encrypted-key.pem +58 -108
  409. data/spec/fixtures/ssl/intermediate-agent-crl.pem +19 -28
  410. data/spec/fixtures/ssl/intermediate-agent.pem +36 -57
  411. data/spec/fixtures/ssl/intermediate-crl.pem +21 -31
  412. data/spec/fixtures/ssl/intermediate.pem +36 -57
  413. data/spec/fixtures/ssl/pluto-key.pem +57 -107
  414. data/spec/fixtures/ssl/pluto.pem +30 -52
  415. data/spec/fixtures/ssl/request-key.pem +57 -107
  416. data/spec/fixtures/ssl/request.pem +26 -47
  417. data/spec/fixtures/ssl/revoked-key.pem +57 -107
  418. data/spec/fixtures/ssl/revoked.pem +30 -52
  419. data/spec/fixtures/ssl/signed-key.pem +57 -107
  420. data/spec/fixtures/ssl/signed.pem +30 -52
  421. data/spec/fixtures/ssl/tampered-cert.pem +30 -52
  422. data/spec/fixtures/ssl/tampered-csr.pem +26 -47
  423. data/spec/fixtures/ssl/unknown-127.0.0.1-key.pem +57 -107
  424. data/spec/fixtures/ssl/unknown-127.0.0.1.pem +29 -50
  425. data/spec/fixtures/ssl/unknown-ca-key.pem +57 -107
  426. data/spec/fixtures/ssl/unknown-ca.pem +33 -55
  427. data/spec/fixtures/unit/provider/service/smf/{svcs.out → svcs_instances.out} +0 -0
  428. data/spec/fixtures/unit/provider/user/aix/aix_passwd_file.out +0 -4
  429. data/spec/integration/application/agent_spec.rb +51 -271
  430. data/spec/integration/application/apply_spec.rb +1 -20
  431. data/spec/integration/application/filebucket_spec.rb +16 -32
  432. data/spec/integration/application/help_spec.rb +2 -0
  433. data/spec/integration/application/module_spec.rb +0 -21
  434. data/spec/integration/application/plugin_spec.rb +24 -2
  435. data/spec/integration/configurer_spec.rb +2 -18
  436. data/spec/integration/defaults_spec.rb +14 -3
  437. data/spec/integration/environments/settings_interpolation_spec.rb +4 -0
  438. data/spec/integration/http/client_spec.rb +0 -12
  439. data/spec/integration/indirector/direct_file_server_spec.rb +3 -1
  440. data/spec/integration/indirector/facts/facter_spec.rb +39 -93
  441. data/spec/integration/network/http_pool_spec.rb +3 -21
  442. data/spec/integration/parser/catalog_spec.rb +0 -38
  443. data/spec/integration/parser/node_spec.rb +0 -9
  444. data/spec/integration/parser/pcore_resource_spec.rb +0 -37
  445. data/spec/integration/resource/type_collection_spec.rb +6 -2
  446. data/spec/integration/transaction/report_spec.rb +1 -1
  447. data/spec/integration/transaction_spec.rb +9 -4
  448. data/spec/integration/type/exec_spec.rb +45 -70
  449. data/spec/integration/type/file_spec.rb +7 -6
  450. data/spec/integration/type/package_spec.rb +6 -6
  451. data/spec/integration/util/rdoc/parser_spec.rb +1 -1
  452. data/spec/integration/util/windows/adsi_spec.rb +1 -21
  453. data/spec/integration/util/windows/monkey_patches/process_spec.rb +231 -0
  454. data/spec/integration/util/windows/principal_spec.rb +0 -21
  455. data/spec/integration/util/windows/process_spec.rb +9 -1
  456. data/spec/integration/util/windows/registry_spec.rb +10 -6
  457. data/spec/integration/util/windows/security_spec.rb +1 -1
  458. data/spec/lib/matchers/include.rb +27 -0
  459. data/spec/lib/matchers/include_spec.rb +32 -0
  460. data/spec/lib/puppet/test_ca.rb +2 -7
  461. data/spec/lib/puppet_spec/modules.rb +2 -13
  462. data/spec/lib/puppet_spec/puppetserver.rb +1 -16
  463. data/spec/lib/puppet_spec/settings.rb +1 -1
  464. data/spec/shared_behaviours/documentation_on_faces.rb +2 -0
  465. data/spec/spec_helper.rb +17 -13
  466. data/spec/unit/agent_spec.rb +6 -10
  467. data/spec/unit/application/agent_spec.rb +3 -7
  468. data/spec/unit/application/apply_spec.rb +56 -76
  469. data/spec/unit/application/facts_spec.rb +12 -456
  470. data/spec/unit/application/filebucket_spec.rb +43 -39
  471. data/spec/unit/application/resource_spec.rb +0 -29
  472. data/spec/unit/application/ssl_spec.rb +2 -25
  473. data/spec/unit/application_spec.rb +9 -51
  474. data/spec/unit/certificate_factory_spec.rb +1 -1
  475. data/spec/unit/configurer/downloader_spec.rb +6 -8
  476. data/spec/unit/configurer/plugin_handler_spec.rb +56 -18
  477. data/spec/unit/configurer_spec.rb +67 -202
  478. data/spec/unit/confine/feature_spec.rb +1 -1
  479. data/spec/unit/confine_spec.rb +2 -8
  480. data/spec/unit/context/trusted_information_spec.rb +2 -6
  481. data/spec/unit/defaults_spec.rb +68 -55
  482. data/spec/unit/environments_spec.rb +68 -408
  483. data/spec/unit/face/node_spec.rb +11 -0
  484. data/spec/unit/face/plugin_spec.rb +73 -33
  485. data/spec/unit/file_bucket/dipper_spec.rb +2 -2
  486. data/spec/unit/file_bucket/file_spec.rb +1 -1
  487. data/spec/unit/file_serving/configuration/parser_spec.rb +15 -41
  488. data/spec/unit/file_serving/configuration_spec.rb +10 -26
  489. data/spec/unit/file_serving/fileset_spec.rb +0 -60
  490. data/spec/unit/file_serving/metadata_spec.rb +3 -3
  491. data/spec/unit/file_serving/terminus_helper_spec.rb +4 -11
  492. data/spec/unit/file_system_spec.rb +0 -22
  493. data/spec/unit/forge/module_release_spec.rb +7 -2
  494. data/spec/unit/functions/assert_type_spec.rb +1 -1
  495. data/spec/unit/functions/camelcase_spec.rb +1 -1
  496. data/spec/unit/functions/capitalize_spec.rb +1 -1
  497. data/spec/unit/functions/downcase_spec.rb +1 -1
  498. data/spec/unit/functions/empty_spec.rb +0 -10
  499. data/spec/unit/functions/logging_spec.rb +0 -1
  500. data/spec/unit/functions/lookup_spec.rb +0 -64
  501. data/spec/unit/functions/unwrap_spec.rb +0 -8
  502. data/spec/unit/functions/upcase_spec.rb +1 -1
  503. data/spec/unit/functions4_spec.rb +2 -2
  504. data/spec/unit/gettext/config_spec.rb +0 -12
  505. data/spec/unit/http/client_spec.rb +7 -8
  506. data/spec/unit/{network/resolver_spec.rb → http/dns_spec.rb} +3 -3
  507. data/spec/unit/http/external_client_spec.rb +4 -4
  508. data/spec/unit/{network/http → http}/factory_spec.rb +5 -30
  509. data/spec/unit/{network/http/session_spec.rb → http/pool_entry_spec.rb} +3 -3
  510. data/spec/unit/{network/http → http}/pool_spec.rb +12 -17
  511. data/spec/unit/{util/http_proxy_spec.rb → http/proxy_spec.rb} +2 -69
  512. data/spec/unit/http/resolver_spec.rb +13 -13
  513. data/spec/unit/http/service/compiler_spec.rb +0 -193
  514. data/spec/unit/http/service/file_server_spec.rb +3 -3
  515. data/spec/unit/http/service/puppetserver_spec.rb +34 -4
  516. data/spec/unit/http/service_spec.rb +0 -1
  517. data/spec/unit/http/session_spec.rb +16 -14
  518. data/spec/unit/{network/http → http}/site_spec.rb +3 -3
  519. data/spec/unit/indirector/catalog/compiler_spec.rb +10 -101
  520. data/spec/unit/indirector/catalog/rest_spec.rb +0 -8
  521. data/spec/unit/indirector/face_spec.rb +1 -0
  522. data/spec/unit/indirector/facts/facter_spec.rb +3 -0
  523. data/spec/unit/indirector/file_bucket_file/file_spec.rb +5 -3
  524. data/spec/unit/indirector/file_bucket_file/selector_spec.rb +8 -26
  525. data/spec/unit/indirector/file_content/rest_spec.rb +0 -4
  526. data/spec/unit/indirector/file_metadata/rest_spec.rb +0 -4
  527. data/spec/unit/indirector/file_server_spec.rb +1 -15
  528. data/spec/unit/indirector/indirection_spec.rb +15 -18
  529. data/spec/unit/indirector/report/rest_spec.rb +2 -17
  530. data/spec/unit/indirector/request_spec.rb +0 -264
  531. data/spec/unit/indirector/resource/ral_spec.rb +75 -40
  532. data/spec/unit/indirector/rest_spec.rb +98 -752
  533. data/spec/unit/indirector/store_configs_spec.rb +7 -0
  534. data/spec/unit/indirector_spec.rb +2 -2
  535. data/spec/unit/interface/action_spec.rb +9 -0
  536. data/spec/unit/module_spec.rb +1 -15
  537. data/spec/unit/module_tool/applications/installer_spec.rb +0 -105
  538. data/spec/unit/network/authconfig_spec.rb +2 -129
  539. data/spec/unit/network/authorization_spec.rb +2 -55
  540. data/spec/unit/network/formats_spec.rb +4 -51
  541. data/spec/unit/network/http/api/indirected_routes_spec.rb +5 -92
  542. data/spec/unit/network/http/api/master/v3_spec.rb +28 -7
  543. data/spec/unit/network/http/api_spec.rb +10 -0
  544. data/spec/unit/network/http/connection_spec.rb +19 -41
  545. data/spec/unit/network/http/handler_spec.rb +0 -1
  546. data/spec/unit/network/http_pool_spec.rb +0 -4
  547. data/spec/unit/node/environment_spec.rb +33 -21
  548. data/spec/unit/node_spec.rb +2 -54
  549. data/spec/unit/parser/compiler_spec.rb +19 -3
  550. data/spec/unit/parser/functions/create_resources_spec.rb +2 -20
  551. data/spec/unit/parser/functions/fqdn_rand_spec.rb +1 -15
  552. data/spec/unit/parser/resource_spec.rb +8 -14
  553. data/spec/unit/parser/templatewrapper_spec.rb +5 -16
  554. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +4 -7
  555. data/spec/unit/pops/loaders/loaders_spec.rb +6 -21
  556. data/spec/unit/pops/parser/parse_application_spec.rb +4 -22
  557. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +0 -1
  558. data/spec/unit/pops/parser/parse_capabilities_spec.rb +8 -21
  559. data/spec/unit/pops/parser/parse_containers_spec.rb +11 -0
  560. data/spec/unit/pops/parser/parse_site_spec.rb +20 -24
  561. data/spec/unit/pops/resource/resource_type_impl_spec.rb +0 -71
  562. data/spec/unit/pops/serialization/to_from_hr_spec.rb +1 -59
  563. data/spec/unit/pops/serialization/to_stringified_spec.rb +0 -5
  564. data/spec/unit/pops/types/p_sem_ver_type_spec.rb +0 -18
  565. data/spec/unit/pops/types/p_sensitive_type_spec.rb +0 -18
  566. data/spec/unit/pops/types/type_calculator_spec.rb +6 -12
  567. data/spec/unit/pops/types/type_factory_spec.rb +1 -1
  568. data/spec/unit/pops/validator/validator_spec.rb +61 -46
  569. data/spec/unit/pops/visitor_spec.rb +1 -1
  570. data/spec/unit/property_spec.rb +0 -1
  571. data/spec/unit/provider/group/groupadd_spec.rb +2 -5
  572. data/spec/unit/provider/nameservice_spec.rb +64 -122
  573. data/spec/unit/provider/package/apt_spec.rb +23 -28
  574. data/spec/unit/provider/package/aptitude_spec.rb +1 -1
  575. data/spec/unit/provider/package/base_spec.rb +5 -6
  576. data/spec/unit/provider/package/dnfmodule_spec.rb +1 -10
  577. data/spec/unit/provider/package/dpkg_spec.rb +0 -48
  578. data/spec/unit/provider/package/gem_spec.rb +33 -1
  579. data/spec/unit/provider/package/nim_spec.rb +0 -42
  580. data/spec/unit/provider/package/pacman_spec.rb +12 -18
  581. data/spec/unit/provider/package/pip2_spec.rb +1 -1
  582. data/spec/unit/provider/package/pip3_spec.rb +1 -1
  583. data/spec/unit/provider/package/pip_spec.rb +12 -44
  584. data/spec/unit/provider/package/pkg_spec.rb +4 -29
  585. data/spec/unit/provider/package/pkgdmg_spec.rb +4 -0
  586. data/spec/unit/provider/package/puppet_gem_spec.rb +4 -3
  587. data/spec/unit/provider/package/puppetserver_gem_spec.rb +1 -1
  588. data/spec/unit/provider/parsedfile_spec.rb +0 -10
  589. data/spec/unit/provider/service/init_spec.rb +0 -1
  590. data/spec/unit/provider/service/launchd_spec.rb +0 -11
  591. data/spec/unit/provider/service/openwrt_spec.rb +1 -3
  592. data/spec/unit/provider/service/smf_spec.rb +401 -165
  593. data/spec/unit/provider/service/systemd_spec.rb +9 -54
  594. data/spec/unit/provider/service/windows_spec.rb +0 -203
  595. data/spec/unit/provider/user/aix_spec.rb +0 -105
  596. data/spec/unit/provider/user/directoryservice_spec.rb +36 -68
  597. data/spec/unit/provider/user/hpux_spec.rb +1 -1
  598. data/spec/unit/provider/user/pw_spec.rb +0 -2
  599. data/spec/unit/provider/user/useradd_spec.rb +5 -114
  600. data/spec/unit/provider_spec.rb +12 -22
  601. data/spec/unit/puppet_spec.rb +4 -12
  602. data/spec/unit/resource/catalog_spec.rb +1 -1
  603. data/spec/unit/resource/type_collection_spec.rb +2 -22
  604. data/spec/unit/resource/type_spec.rb +1 -1
  605. data/spec/unit/resource_spec.rb +10 -67
  606. data/spec/unit/settings/http_extra_headers_spec.rb +2 -4
  607. data/spec/unit/settings/integer_setting_spec.rb +42 -0
  608. data/spec/unit/settings/port_setting_spec.rb +31 -0
  609. data/spec/unit/settings/priority_setting_spec.rb +4 -4
  610. data/spec/unit/settings_spec.rb +79 -110
  611. data/spec/unit/ssl/base_spec.rb +37 -3
  612. data/spec/unit/ssl/certificate_request_spec.rb +21 -45
  613. data/spec/unit/ssl/certificate_spec.rb +2 -11
  614. data/spec/unit/ssl/ssl_provider_spec.rb +2 -5
  615. data/spec/unit/ssl/state_machine_spec.rb +5 -20
  616. data/spec/unit/ssl/verifier_spec.rb +0 -21
  617. data/spec/unit/transaction/additional_resource_generator_spec.rb +9 -3
  618. data/spec/unit/transaction/event_manager_spec.rb +11 -14
  619. data/spec/unit/transaction/report_spec.rb +0 -2
  620. data/spec/unit/transaction/resource_harness_spec.rb +2 -2
  621. data/spec/unit/transaction_spec.rb +55 -96
  622. data/spec/unit/type/exec_spec.rb +29 -76
  623. data/spec/unit/type/file/checksum_spec.rb +6 -6
  624. data/spec/unit/type/file/content_spec.rb +2 -1
  625. data/spec/unit/type/file/ensure_spec.rb +1 -1
  626. data/spec/unit/type/file/mode_spec.rb +1 -1
  627. data/spec/unit/type/file/selinux_spec.rb +5 -3
  628. data/spec/unit/type/file/source_spec.rb +4 -5
  629. data/spec/unit/type/file_spec.rb +18 -6
  630. data/spec/unit/type/group_spec.rb +6 -13
  631. data/spec/unit/type/package_spec.rb +1 -1
  632. data/spec/unit/type/resources_spec.rb +7 -7
  633. data/spec/unit/type/service_spec.rb +189 -87
  634. data/spec/unit/type/tidy_spec.rb +8 -24
  635. data/spec/unit/type/user_spec.rb +0 -45
  636. data/spec/unit/type_spec.rb +24 -4
  637. data/spec/unit/util/at_fork_spec.rb +2 -2
  638. data/spec/unit/util/autoload_spec.rb +1 -5
  639. data/spec/unit/util/backups_spec.rb +2 -3
  640. data/spec/unit/util/execution_spec.rb +11 -44
  641. data/spec/unit/util/inifile_spec.rb +14 -6
  642. data/spec/unit/util/log_spec.rb +7 -8
  643. data/spec/unit/util/logging_spec.rb +3 -5
  644. data/spec/unit/util/monkey_patches_spec.rb +0 -6
  645. data/spec/unit/util/posix_spec.rb +15 -363
  646. data/spec/unit/util/run_mode_spec.rb +21 -121
  647. data/spec/unit/util/selinux_spec.rb +68 -163
  648. data/spec/unit/util/storage_spec.rb +1 -3
  649. data/spec/unit/util/suidmanager_spec.rb +41 -44
  650. data/spec/unit/util/windows/sid_spec.rb +0 -41
  651. data/spec/unit/util/windows/string_spec.rb +1 -3
  652. data/spec/unit/util/yaml_spec.rb +0 -54
  653. data/spec/unit/util_spec.rb +6 -31
  654. data/tasks/generate_cert_fixtures.rake +3 -12
  655. data/tasks/parallel.rake +3 -3
  656. metadata +137 -288
  657. data/conf/auth.conf +0 -150
  658. data/ext/README.md +0 -13
  659. data/lib/puppet/application/cert.rb +0 -76
  660. data/lib/puppet/application/key.rb +0 -4
  661. data/lib/puppet/application/man.rb +0 -4
  662. data/lib/puppet/application/status.rb +0 -4
  663. data/lib/puppet/face/key.rb +0 -16
  664. data/lib/puppet/face/man.rb +0 -145
  665. data/lib/puppet/face/module/build.rb +0 -14
  666. data/lib/puppet/face/module/generate.rb +0 -14
  667. data/lib/puppet/face/module/search.rb +0 -103
  668. data/lib/puppet/face/status.rb +0 -51
  669. data/lib/puppet/facter_impl.rb +0 -96
  670. data/lib/puppet/ffi/posix/constants.rb +0 -14
  671. data/lib/puppet/ffi/posix/functions.rb +0 -24
  672. data/lib/puppet/ffi/posix.rb +0 -10
  673. data/lib/puppet/file_serving/mount/scripts.rb +0 -24
  674. data/lib/puppet/indirector/certificate/file.rb +0 -9
  675. data/lib/puppet/indirector/certificate/rest.rb +0 -18
  676. data/lib/puppet/indirector/certificate_request/file.rb +0 -9
  677. data/lib/puppet/indirector/certificate_request/memory.rb +0 -7
  678. data/lib/puppet/indirector/certificate_request/rest.rb +0 -11
  679. data/lib/puppet/indirector/file_content/http.rb +0 -22
  680. data/lib/puppet/indirector/key/file.rb +0 -46
  681. data/lib/puppet/indirector/key/memory.rb +0 -7
  682. data/lib/puppet/indirector/ssl_file.rb +0 -162
  683. data/lib/puppet/indirector/status/local.rb +0 -12
  684. data/lib/puppet/indirector/status/rest.rb +0 -27
  685. data/lib/puppet/indirector/status.rb +0 -3
  686. data/lib/puppet/module_tool/applications/searcher.rb +0 -29
  687. data/lib/puppet/network/auth_config_parser.rb +0 -90
  688. data/lib/puppet/network/authstore.rb +0 -283
  689. data/lib/puppet/network/http/api/master/v3/authorization.rb +0 -18
  690. data/lib/puppet/network/http/api/master/v3/environment.rb +0 -88
  691. data/lib/puppet/network/http/base_pool.rb +0 -36
  692. data/lib/puppet/network/http/compression.rb +0 -127
  693. data/lib/puppet/network/http/connection_adapter.rb +0 -184
  694. data/lib/puppet/network/http/nocache_pool.rb +0 -28
  695. data/lib/puppet/network/rest_controller.rb +0 -2
  696. data/lib/puppet/network/rights.rb +0 -210
  697. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +0 -66
  698. data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +0 -22
  699. data/lib/puppet/parser/environment_compiler.rb +0 -202
  700. data/lib/puppet/pops/types/enumeration.rb +0 -16
  701. data/lib/puppet/resource/capability_finder.rb +0 -154
  702. data/lib/puppet/rest/errors.rb +0 -15
  703. data/lib/puppet/rest/response.rb +0 -35
  704. data/lib/puppet/rest/route.rb +0 -85
  705. data/lib/puppet/rest/routes.rb +0 -135
  706. data/lib/puppet/settings/alias_setting.rb +0 -37
  707. data/lib/puppet/ssl/host.rb +0 -505
  708. data/lib/puppet/ssl/key.rb +0 -61
  709. data/lib/puppet/ssl/validator/default_validator.rb +0 -209
  710. data/lib/puppet/ssl/validator/no_validator.rb +0 -22
  711. data/lib/puppet/ssl/validator.rb +0 -61
  712. data/lib/puppet/ssl/verifier_adapter.rb +0 -58
  713. data/lib/puppet/status.rb +0 -40
  714. data/lib/puppet/util/connection.rb +0 -88
  715. data/lib/puppet/util/fact_dif.rb +0 -81
  716. data/lib/puppet/util/ssl.rb +0 -83
  717. data/lib/puppet/util/windows/api_types.rb +0 -309
  718. data/lib/puppet/util/windows/monkey_patches/dir.rb +0 -40
  719. data/lib/puppet/vendor/load_pathspec.rb +0 -1
  720. data/lib/puppet/vendor/pathspec/CHANGELOG.md +0 -2
  721. data/lib/puppet/vendor/pathspec/LICENSE +0 -201
  722. data/lib/puppet/vendor/pathspec/PUPPET_README.md +0 -6
  723. data/lib/puppet/vendor/pathspec/README.md +0 -53
  724. data/lib/puppet/vendor/pathspec/lib/pathspec/gitignorespec.rb +0 -275
  725. data/lib/puppet/vendor/pathspec/lib/pathspec/regexspec.rb +0 -17
  726. data/lib/puppet/vendor/pathspec/lib/pathspec/spec.rb +0 -14
  727. data/lib/puppet/vendor/pathspec/lib/pathspec.rb +0 -122
  728. data/man/man8/puppet-key.8 +0 -126
  729. data/man/man8/puppet-man.8 +0 -76
  730. data/man/man8/puppet-status.8 +0 -108
  731. data/spec/fixtures/integration/application/agent/cached_deferred_catalog.json +0 -91
  732. data/spec/fixtures/integration/application/agent/lib/facter/agent_spec_role.rb +0 -3
  733. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/Gemfile +0 -4
  734. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/Rakefile +0 -3
  735. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/lib/puppet/functions/l10n.rb +0 -8
  736. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/config.yaml +0 -25
  737. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/ja/puppet-l10n.po +0 -19
  738. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/puppet-l10n.pot +0 -20
  739. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/metadata.json +0 -8
  740. data/spec/fixtures/ssl/oid-key.pem +0 -117
  741. data/spec/fixtures/ssl/oid.pem +0 -69
  742. data/spec/fixtures/ssl/trusted_oid_mapping.yaml +0 -5
  743. data/spec/fixtures/unit/provider/service/systemd/list_unit_files_services_vendor_preset +0 -9
  744. data/spec/integration/application/resource_spec.rb +0 -64
  745. data/spec/integration/application/ssl_spec.rb +0 -20
  746. data/spec/integration/l10n/compiler_spec.rb +0 -37
  747. data/spec/integration/network/authconfig_spec.rb +0 -256
  748. data/spec/integration/util/windows/monkey_patches/dir_spec.rb +0 -11
  749. data/spec/shared_contexts/l10n.rb +0 -27
  750. data/spec/unit/application/man_spec.rb +0 -52
  751. data/spec/unit/capability_spec.rb +0 -414
  752. data/spec/unit/face/key_spec.rb +0 -9
  753. data/spec/unit/face/module/search_spec.rb +0 -231
  754. data/spec/unit/face/status_spec.rb +0 -9
  755. data/spec/unit/facter_impl_spec.rb +0 -31
  756. data/spec/unit/file_serving/mount/scripts_spec.rb +0 -69
  757. data/spec/unit/indirector/certificate/file_spec.rb +0 -14
  758. data/spec/unit/indirector/certificate/rest_spec.rb +0 -61
  759. data/spec/unit/indirector/certificate_request/file_spec.rb +0 -14
  760. data/spec/unit/indirector/certificate_request/rest_spec.rb +0 -25
  761. data/spec/unit/indirector/key/file_spec.rb +0 -78
  762. data/spec/unit/indirector/ssl_file_spec.rb +0 -305
  763. data/spec/unit/indirector/status/local_spec.rb +0 -10
  764. data/spec/unit/indirector/status/rest_spec.rb +0 -50
  765. data/spec/unit/module_tool/applications/searcher_spec.rb +0 -38
  766. data/spec/unit/network/auth_config_parser_spec.rb +0 -115
  767. data/spec/unit/network/authstore_spec.rb +0 -407
  768. data/spec/unit/network/http/api/master/v3/authorization_spec.rb +0 -57
  769. data/spec/unit/network/http/api/master/v3/environment_spec.rb +0 -185
  770. data/spec/unit/network/http/compression_spec.rb +0 -240
  771. data/spec/unit/network/http/nocache_pool_spec.rb +0 -64
  772. data/spec/unit/network/http_spec.rb +0 -9
  773. data/spec/unit/network/rights_spec.rb +0 -439
  774. data/spec/unit/parser/environment_compiler_spec.rb +0 -730
  775. data/spec/unit/pops/evaluator/deferred_resolver_spec.rb +0 -20
  776. data/spec/unit/pops/types/enumeration_spec.rb +0 -51
  777. data/spec/unit/resource/capability_finder_spec.rb +0 -148
  778. data/spec/unit/rest/route_spec.rb +0 -132
  779. data/spec/unit/ssl/host_spec.rb +0 -645
  780. data/spec/unit/ssl/key_spec.rb +0 -173
  781. data/spec/unit/ssl/validator_spec.rb +0 -278
  782. data/spec/unit/status_spec.rb +0 -45
  783. data/spec/unit/util/ssl_spec.rb +0 -91
@@ -1,5 +1,4 @@
1
1
  # Unwraps a Sensitive value and returns the wrapped object.
2
- # Returns the Value itself, if it is not Sensitive.
3
2
  #
4
3
  # @example Usage of unwrap
5
4
  #
@@ -29,17 +28,12 @@
29
28
  # @since 4.0.0
30
29
  #
31
30
  Puppet::Functions.create_function(:unwrap) do
32
- dispatch :from_sensitive do
31
+ dispatch :unwrap do
33
32
  param 'Sensitive', :arg
34
33
  optional_block_param
35
34
  end
36
35
 
37
- dispatch :from_any do
38
- param 'Any', :arg
39
- optional_block_param
40
- end
41
-
42
- def from_sensitive(arg)
36
+ def unwrap(arg)
43
37
  unwrapped = arg.unwrap
44
38
  if block_given?
45
39
  yield(unwrapped)
@@ -47,13 +41,4 @@ Puppet::Functions.create_function(:unwrap) do
47
41
  unwrapped
48
42
  end
49
43
  end
50
-
51
- def from_any(arg)
52
- unwrapped = arg
53
- if block_given?
54
- yield(unwrapped)
55
- else
56
- unwrapped
57
- end
58
- end
59
44
  end
@@ -22,14 +22,14 @@
22
22
  # 'hello'.upcase()
23
23
  # upcase('hello')
24
24
  # ```
25
- # Would both result in `"HELLO"`
25
+ # Would both result in "HELLO"
26
26
  #
27
27
  # @example Converting an Array to upper case
28
28
  # ```puppet
29
29
  # ['a', 'b'].upcase()
30
30
  # upcase(['a', 'b'])
31
31
  # ```
32
- # Would both result in `['A', 'B']`
32
+ # Would both result in ['A', 'B']
33
33
  #
34
34
  # @example Converting a Hash to upper case
35
35
  # ```puppet
@@ -49,7 +49,10 @@ module Puppet
49
49
  ]
50
50
  end]
51
51
  @isomorphic = type.isomorphic?
52
- @capability = type.is_capability?
52
+ # continue to emit capability as false when rendering the ERB
53
+ # template, so that pcore modules generated prior to puppet7 can be
54
+ # read by puppet7 and vice-versa.
55
+ @capability = false
53
56
  end
54
57
 
55
58
  def render(template)
@@ -1,23 +1,96 @@
1
+ # The HTTP client provides methods for making `GET`, `POST`, etc requests to
2
+ # HTTP(S) servers. It also provides methods for resolving Puppetserver REST
3
+ # service endpoints using SRV records and settings (such as `server_list`,
4
+ # `server`, `ca_server`, etc). Once a service endpoint has been resolved, there
5
+ # are methods for making REST requests (such as getting a node, sending facts,
6
+ # etc).
1
7
  #
2
- # @api private
8
+ # The client uses persistent HTTP connections by default unless the `Connection:
9
+ # close` header is specified and supports streaming response bodies.
3
10
  #
4
- # The client contains a pool of persistent HTTP connections and creates HTTP
5
- # sessions.
11
+ # By default the client only trusts the Puppet CA for HTTPS connections. However,
12
+ # if the `include_system_store` request option is set to true, then Puppet will
13
+ # trust certificates in the puppet-agent CA bundle.
6
14
  #
15
+ # @example To access the HTTP client:
16
+ # client = Puppet.runtime[:http]
17
+ #
18
+ # @example To make an HTTP GET request:
19
+ # response = client.get(URI("http://www.example.com"))
20
+ #
21
+ # @example To make an HTTPS GET request, trusting the puppet CA and certs in Puppet's CA bundle:
22
+ # response = client.get(URI("https://www.example.com"), include_system_store: true)
23
+ #
24
+ # @example To use a URL containing special characters, such as spaces:
25
+ # response = client.get(URI(Puppet::Util.uri_encode("https://www.example.com/path to file")))
26
+ #
27
+ # @example To pass query parameters:
28
+ # response = client.get(URI("https://www.example.com"), query: {'q' => 'puppet'})
29
+ #
30
+ # @example To pass custom headers:
31
+ # response = client.get(URI("https://www.example.com"), headers: {'Accept-Content' => 'application/json'})
32
+ #
33
+ # @example To check if the response is successful (2xx):
34
+ # response = client.get(URI("http://www.example.com"))
35
+ # puts response.success?
36
+ #
37
+ # @example To get the response code and reason:
38
+ # response = client.get(URI("http://www.example.com"))
39
+ # unless response.success?
40
+ # puts "HTTP #{response.code} #{response.reason}"
41
+ # end
42
+ #
43
+ # @example To read response headers:
44
+ # response = client.get(URI("http://www.example.com"))
45
+ # puts response['Content-Type']
46
+ #
47
+ # @example To stream the response body:
48
+ # client.get(URI("http://www.example.com")) do |response|
49
+ # if response.success?
50
+ # response.read_body do |data|
51
+ # puts data
52
+ # end
53
+ # end
54
+ # end
55
+ #
56
+ # @example To handle exceptions:
57
+ # begin
58
+ # client.get(URI("https://www.example.com"))
59
+ # rescue Puppet::HTTP::ResponseError => e
60
+ # puts "HTTP #{e.response.code} #{e.response.reason}"
61
+ # rescue Puppet::HTTP::ConnectionError => e
62
+ # puts "Connection error #{e.message}"
63
+ # rescue Puppet::SSL::SSLError => e
64
+ # puts "SSL error #{e.message}"
65
+ # rescue Puppet::HTTP::HTTPError => e
66
+ # puts "General HTTP error #{e.message}"
67
+ # end
68
+ #
69
+ # @example To route to the `:puppet` service:
70
+ # session = client.create_session
71
+ # service = session.route_to(:puppet)
72
+ #
73
+ # @example To make a node request:
74
+ # node = service.get_node(Puppet[:certname], environment: 'production')
75
+ #
76
+ # @example To submit facts:
77
+ # facts = Puppet::Indirection::Facts.indirection.find(Puppet[:certname])
78
+ # service.put_facts(Puppet[:certname], environment: 'production', facts: facts)
79
+ #
80
+ # @example To submit a report to the `:report` service:
81
+ # report = Puppet::Transaction::Report.new
82
+ # service = session.route_to(:report)
83
+ # service.put_report(Puppet[:certname], report, environment: 'production')
84
+ #
85
+ # @api public
7
86
  class Puppet::HTTP::Client
8
87
 
9
- # @api private
10
- # @return [Puppet::Network::HTTP::Pool] the pool instance associated with
11
- # this client
12
88
  attr_reader :pool
13
89
 
90
+ # Create a new http client instance. Use `Puppet.runtime[:http]` to get
91
+ # the current client instead of creating an instance of this class.
14
92
  #
15
- # @api private
16
- #
17
- # Create a new http client instance. The client contains a pool of persistent
18
- # HTTP connections and creates HTTP sessions.
19
- #
20
- # @param [Puppet::Network::HTTP::Pool] pool pool of persistent Net::HTTP
93
+ # @param [Puppet::HTTP::Pool] pool pool of persistent Net::HTTP
21
94
  # connections
22
95
  # @param [Puppet::SSL::SSLContext] ssl_context ssl context to be used for
23
96
  # connections
@@ -28,7 +101,7 @@ class Puppet::HTTP::Client
28
101
  # @param [Integer] retry_limit number of HTTP reties allowed in a given
29
102
  # request
30
103
  #
31
- def initialize(pool: Puppet::Network::HTTP::Pool.new(Puppet[:http_keepalive_timeout]), ssl_context: nil, system_ssl_context: nil, redirect_limit: 10, retry_limit: 100)
104
+ def initialize(pool: Puppet::HTTP::Pool.new(Puppet[:http_keepalive_timeout]), ssl_context: nil, system_ssl_context: nil, redirect_limit: 10, retry_limit: 100)
32
105
  @pool = pool
33
106
  @default_headers = {
34
107
  'X-Puppet-Version' => Puppet.version,
@@ -40,22 +113,19 @@ class Puppet::HTTP::Client
40
113
  @retry_after_handler = Puppet::HTTP::RetryAfterHandler.new(retry_limit, Puppet[:runinterval])
41
114
  end
42
115
 
43
- #
44
- # @api private
45
- #
46
116
  # Create a new HTTP session. A session is the object through which services
47
117
  # may be connected to and accessed.
48
118
  #
49
119
  # @return [Puppet::HTTP::Session] the newly created HTTP session
50
120
  #
121
+ # @api public
51
122
  def create_session
52
123
  Puppet::HTTP::Session.new(self, build_resolvers)
53
124
  end
54
125
 
55
- #
56
- # @api private
57
- #
58
- # Open a connection to the given URI
126
+ # Open a connection to the given URI. It is typically not necessary to call
127
+ # this method as the client will create connections as needed when a request
128
+ # is made.
59
129
  #
60
130
  # @param [URI] uri the connection destination
61
131
  # @param [Hash] options
@@ -63,16 +133,12 @@ class Puppet::HTTP::Client
63
133
  # be used for connections
64
134
  # @option options [Boolean] :include_system_store (false) if we should include
65
135
  # the system store for connection
66
- #
67
- # @yield [Net::HTTP] If a block is given, yields an active http connection
68
- # from the pool
69
- #
70
136
  def connect(uri, options: {}, &block)
71
137
  start = Time.now
72
138
  verifier = nil
73
139
  connected = false
74
140
 
75
- site = Puppet::Network::HTTP::Site.from_uri(uri)
141
+ site = Puppet::HTTP::Site.from_uri(uri)
76
142
  if site.use_ssl?
77
143
  ssl_context = options.fetch(:ssl_context, nil)
78
144
  include_system_store = options.fetch(:include_system_store, false)
@@ -101,88 +167,73 @@ class Puppet::HTTP::Client
101
167
  {uri: uri, elapsed: elapsed(start), message: e.message}, e, connected)
102
168
  end
103
169
 
104
- #
105
- # @api private
106
- #
170
+ # These options apply to all HTTP request methods
171
+ #
172
+ # @!macro [new] request_options
173
+ # @param [Hash] options HTTP request options. Options not recognized by the
174
+ # HTTP implementation will be ignored.
175
+ # @option options [Puppet::SSL::SSLContext] :ssl_context (nil) ssl context to
176
+ # be used for connections
177
+ # @option options [Boolean] :include_system_store (false) if we should include
178
+ # the system store for connection
179
+ # @option options [Integer] :redirect_limit (10) The maximum number of HTTP
180
+ # redirections to allow for this request.
181
+ # @option options [Hash] :basic_auth A map of `:username` => `String` and
182
+ # `:password` => `String`
183
+ # @option options [String] :metric_id The metric id used to track metrics
184
+ # on requests.
185
+
107
186
  # Submits a GET HTTP request to the given url
108
187
  #
109
188
  # @param [URI] url the location to submit the http request
110
189
  # @param [Hash] headers merged with the default headers defined by the client
111
190
  # @param [Hash] params encoded and set as the url query
112
- # @param [Hash] options passed through to the request execution
113
- # @option options [Puppet::SSL::SSLContext] :ssl_context (nil) ssl context to
114
- # be used for connections
115
- # @option options [Boolean] :include_system_store (false) if we should include
116
- # the system store for connection
117
- # @param options [Integer] :redirect_limit number of HTTP redirections to allow
118
- # for this request.
191
+ # @!macro request_options
119
192
  #
120
193
  # @yield [Puppet::HTTP::Response] if a block is given yields the response
121
194
  #
122
- # @return [String] if a block is not given, returns the response body
195
+ # @return [Puppet::HTTP::Response] the response
123
196
  #
197
+ # @api public
124
198
  def get(url, headers: {}, params: {}, options: {}, &block)
125
199
  url = encode_query(url, params)
126
200
 
127
201
  request = Net::HTTP::Get.new(url, @default_headers.merge(headers))
128
202
 
129
- execute_streaming(request, options: options) do |response|
130
- if block_given?
131
- yield response
132
- else
133
- response.body
134
- end
135
- end
203
+ execute_streaming(request, options: options, &block)
136
204
  end
137
205
 
138
- #
139
- # @api private
140
- #
141
206
  # Submits a HEAD HTTP request to the given url
142
207
  #
143
208
  # @param [URI] url the location to submit the http request
144
209
  # @param [Hash] headers merged with the default headers defined by the client
145
210
  # @param [Hash] params encoded and set as the url query
146
- # @param [Hash] options passed through to the request execution
147
- # @option options [Puppet::SSL::SSLContext] :ssl_context (nil) ssl context to
148
- # be used for connections
149
- # @option options [Boolean] :include_system_store (false) if we should include
150
- # the system store for connection
151
- # @param options [Integer] :redirect_limit number of HTTP redirections to allow
152
- # for this request.
211
+ # @!macro request_options
153
212
  #
154
- # @return [String] the body of the request response
213
+ # @return [Puppet::HTTP::Response] the response
155
214
  #
215
+ # @api public
156
216
  def head(url, headers: {}, params: {}, options: {})
157
217
  url = encode_query(url, params)
158
218
 
159
219
  request = Net::HTTP::Head.new(url, @default_headers.merge(headers))
160
220
 
161
- execute_streaming(request, options: options) do |response|
162
- response.body
163
- end
221
+ execute_streaming(request, options: options)
164
222
  end
165
223
 
166
- #
167
- # @api private
168
- #
169
224
  # Submits a PUT HTTP request to the given url
170
225
  #
171
226
  # @param [URI] url the location to submit the http request
172
227
  # @param [String] body the body of the PUT request
173
- # @param [Hash] headers merged with the default headers defined by the client
228
+ # @param [Hash] headers merged with the default headers defined by the client. The
229
+ # `Content-Type` header is required and should correspond to the type of data passed
230
+ # as the `body` argument.
174
231
  # @param [Hash] params encoded and set as the url query
175
- # @param [Hash] options passed through to the request execution
176
- # @option options [String] :content_type the type of the body content
177
- # @option options [Puppet::SSL::SSLContext] :ssl_context (nil) ssl context to
178
- # be used for connections
179
- # @option options [Boolean] :include_system_store (false) if we should include
180
- # the system store for connection
181
- # @param options [Integer] :redirect_limit number of HTTP redirections to allow
182
- # for this request.
232
+ # @!macro request_options
183
233
  #
184
- # @return [String] the body of the request response
234
+ # @return [Puppet::HTTP::Response] the response
185
235
  #
236
+ # @api public
186
237
  def put(url, body, headers: {}, params: {}, options: {})
187
238
  raise ArgumentError, "'put' requires a string 'body' argument" unless body.is_a?(String)
188
239
  url = encode_query(url, params)
@@ -193,31 +244,24 @@ class Puppet::HTTP::Client
193
244
 
194
245
  raise ArgumentError, "'put' requires a 'content-type' header" unless request['Content-Type']
195
246
 
196
- execute_streaming(request, options: options) do |response|
197
- response.body
198
- end
247
+ execute_streaming(request, options: options)
199
248
  end
200
249
 
201
- #
202
- # @api private
203
- #
204
250
  # Submits a POST HTTP request to the given url
205
251
  #
206
252
  # @param [URI] url the location to submit the http request
207
253
  # @param [String] body the body of the POST request
208
- # @param [Hash] headers merged with the default headers defined by the client
254
+ # @param [Hash] headers merged with the default headers defined by the client. The
255
+ # `Content-Type` header is required and should correspond to the type of data passed
256
+ # as the `body` argument.
209
257
  # @param [Hash] params encoded and set as the url query
210
- # @param [Hash] options passed through to the request execution
211
- # @option options [String] :content_type the type of the body content
212
- # @option options [Puppet::SSL::SSLContext] :ssl_context (nil) ssl context to
213
- # be used for connections
214
- # @option options [Boolean] :include_system_store (false) if we should include
215
- # the system store for connection
216
- # @param options [Integer] :redirect_limit number of HTTP redirections to allow
217
- # for this request.
258
+ # @!macro request_options
218
259
  #
219
- # @return [String] the body of the request response
260
+ # @yield [Puppet::HTTP::Response] if a block is given yields the response
261
+ #
262
+ # @return [Puppet::HTTP::Response] the response
220
263
  #
264
+ # @api public
221
265
  def post(url, body, headers: {}, params: {}, options: {}, &block)
222
266
  raise ArgumentError, "'post' requires a string 'body' argument" unless body.is_a?(String)
223
267
  url = encode_query(url, params)
@@ -228,48 +272,32 @@ class Puppet::HTTP::Client
228
272
 
229
273
  raise ArgumentError, "'post' requires a 'content-type' header" unless request['Content-Type']
230
274
 
231
- execute_streaming(request, options: options) do |response|
232
- if block_given?
233
- yield response
234
- else
235
- response.body
236
- end
237
- end
275
+ execute_streaming(request, options: options, &block)
238
276
  end
239
277
 
240
- #
241
- # @api private
242
- #
243
- # Submits a DELETE HTTP request to the given url
278
+ # Submits a DELETE HTTP request to the given url.
244
279
  #
245
280
  # @param [URI] url the location to submit the http request
246
281
  # @param [Hash] headers merged with the default headers defined by the client
247
282
  # @param [Hash] params encoded and set as the url query
248
- # @param [Hash] options options hash passed through to the request execution
249
- # @option options [Puppet::SSL::SSLContext] :ssl_context (nil) ssl context to
250
- # be used for connections
251
- # @option options [Boolean] :include_system_store (false) if we should include
252
- # the system store for connection
253
- # @param options [Integer] :redirect_limit number of HTTP redirections to allow
254
- # for this request.
283
+ # @!macro request_options
255
284
  #
256
- # @return [String] the body of the request response
285
+ # @return [Puppet::HTTP::Response] the response
257
286
  #
287
+ # @api public
258
288
  def delete(url, headers: {}, params: {}, options: {})
259
289
  url = encode_query(url, params)
260
290
 
261
291
  request = Net::HTTP::Delete.new(url, @default_headers.merge(headers))
262
292
 
263
- execute_streaming(request, options: options) do |response|
264
- response.body
265
- end
293
+ execute_streaming(request, options: options)
266
294
  end
267
295
 
296
+ # Close persistent connections in the pool.
268
297
  #
269
- # @api private
270
- #
271
- # Close persistent connections in the pool
298
+ # @return [void]
272
299
  #
300
+ # @api public
273
301
  def close
274
302
  @pool.close
275
303
  end
@@ -286,6 +314,21 @@ class Puppet::HTTP::Client
286
314
 
287
315
  private
288
316
 
317
+ # Connect or borrow a connection from the pool to the host and port associated
318
+ # with the request's URL. Then execute the HTTP request, retrying and
319
+ # following redirects as needed, and return the HTTP response. The response
320
+ # body will always be fully drained/consumed when this method returns.
321
+ #
322
+ # If a block is provided, then the response will be yielded to the caller,
323
+ # allowing the response body to be streamed.
324
+ #
325
+ # If the request/response did not result in an exception and the caller did
326
+ # not ask for the connection to be closed (via Connection: close), then the
327
+ # connection will be returned to the pool.
328
+ #
329
+ # @yieldparam [Puppet::HTTP::Response] response The final response, after
330
+ # following redirects and retrying
331
+ # @return [Puppet::HTTP::Response]
289
332
  def execute_streaming(request, options: {}, &block)
290
333
  redirector = Puppet::HTTP::Redirector.new(options.fetch(:redirect_limit, @default_redirect_limit))
291
334
 
@@ -307,7 +350,7 @@ class Puppet::HTTP::Client
307
350
 
308
351
  # don't call return within the `request` block
309
352
  http.request(request) do |nethttp|
310
- response = Puppet::HTTP::Response.new(nethttp, request.uri)
353
+ response = Puppet::HTTP::ResponseNetHTTP.new(request.uri, nethttp)
311
354
  begin
312
355
  Puppet.debug("HTTP #{request.method.upcase} #{request.uri} returned #{response.code} #{response.reason}")
313
356
 
@@ -320,7 +363,7 @@ class Puppet::HTTP::Client
320
363
  retries += 1
321
364
  if interval
322
365
  if http.started?
323
- Puppet.debug("Closing connection for #{Puppet::Network::HTTP::Site.from_uri(request.uri)}")
366
+ Puppet.debug("Closing connection for #{Puppet::HTTP::Site.from_uri(request.uri)}")
324
367
  http.finish
325
368
  end
326
369
  Puppet.warning(_("Sleeping for %{interval} seconds before retrying the request") % { interval: interval })
@@ -329,8 +372,15 @@ class Puppet::HTTP::Client
329
372
  end
330
373
  end
331
374
 
332
- yield response
375
+ if block_given?
376
+ yield response
377
+ else
378
+ response.body
379
+ end
333
380
  ensure
381
+ # we need to make sure the response body is fully consumed before
382
+ # the connection is put back in the pool, otherwise the response
383
+ # for one request could leak into a future response.
334
384
  response.drain
335
385
  end
336
386
 
@@ -1,7 +1,7 @@
1
1
  require 'resolv'
2
2
 
3
- module Puppet::Network
4
- class Resolver
3
+ module Puppet::HTTP
4
+ class DNS
5
5
 
6
6
  class CacheEntry
7
7
  attr_reader :records, :ttl, :resolution_time
@@ -1,14 +1,26 @@
1
1
  module Puppet::HTTP
2
+ # A base class for puppet http errors
3
+ # @api public
2
4
  class HTTPError < Puppet::Error; end
3
5
 
6
+ # A connection error such as if the server refuses the connection.
7
+ # @api public
4
8
  class ConnectionError < HTTPError; end
5
9
 
10
+ # A failure to route to the server such as if the `server_list` is exhausted.
11
+ # @api public
6
12
  class RouteError < HTTPError; end
7
13
 
14
+ # An HTTP protocol error, such as the server's response missing a required header.
15
+ # @api public
8
16
  class ProtocolError < HTTPError; end
9
17
 
18
+ # An error serializing or deserializing an object via REST.
19
+ # @api public
10
20
  class SerializationError < HTTPError; end
11
21
 
22
+ # An error due to an unsuccessful HTTP response, such as HTTP 500.
23
+ # @api public
12
24
  class ResponseError < HTTPError
13
25
  attr_reader :response
14
26
 
@@ -18,12 +30,16 @@ module Puppet::HTTP
18
30
  end
19
31
  end
20
32
 
33
+ # An error if asked to follow too many redirects (such as HTTP 301).
34
+ # @api public
21
35
  class TooManyRedirects < HTTPError
22
36
  def initialize(addr)
23
37
  super(_("Too many HTTP redirections for %{addr}") % { addr: addr})
24
38
  end
25
39
  end
26
40
 
41
+ # An error if asked to retry (such as HTTP 503) too many times.
42
+ # @api public
27
43
  class TooManyRetryAfters < HTTPError
28
44
  def initialize(addr)
29
45
  super(_("Too many HTTP retries for %{addr}") % { addr: addr})
@@ -1,4 +1,3 @@
1
- #
2
1
  # Adapts an external http_client_class to the HTTP client API. The former
3
2
  # is typically registered by puppetserver and only implements a subset of
4
3
  # the Puppet::Network::HTTP::Connection methods. As a result, only the
@@ -7,10 +6,10 @@
7
6
  #
8
7
  # @api private
9
8
  class Puppet::HTTP::ExternalClient < Puppet::HTTP::Client
10
- # Create an external http client
9
+
10
+ # Create an external http client.
11
11
  #
12
12
  # @param [Class] http_client_class The class to create to handle the request
13
- # @api private
14
13
  def initialize(http_client_class)
15
14
  @http_client_class = http_client_class
16
15
  end
@@ -23,7 +22,7 @@ class Puppet::HTTP::ExternalClient < Puppet::HTTP::Client
23
22
  options[:use_ssl] = url.scheme == 'https'
24
23
 
25
24
  client = @http_client_class.new(url.host, url.port, options)
26
- response = Puppet::HTTP::Response.new(client.get(url.request_uri, headers, options), url)
25
+ response = Puppet::HTTP::ResponseNetHTTP.new(url, client.get(url.request_uri, headers, options))
27
26
 
28
27
  if block_given?
29
28
  yield response
@@ -45,7 +44,7 @@ class Puppet::HTTP::ExternalClient < Puppet::HTTP::Client
45
44
  options[:use_ssl] = url.scheme == 'https'
46
45
 
47
46
  client = @http_client_class.new(url.host, url.port, options)
48
- response = Puppet::HTTP::Response.new(client.post(url.request_uri, body, headers, options), url)
47
+ response = Puppet::HTTP::ResponseNetHTTP.new(url, client.post(url.request_uri, body, headers, options))
49
48
 
50
49
  if block_given?
51
50
  yield response
@@ -58,8 +57,7 @@ class Puppet::HTTP::ExternalClient < Puppet::HTTP::Client
58
57
  raise Puppet::HTTP::HTTPError.new(e.message, e)
59
58
  end
60
59
 
61
- # Close the external http client.
62
- #
60
+ # (see Puppet::HTTP::Client#close)
63
61
  # @api private
64
62
  def close
65
63
  # This is a noop as puppetserver doesn't provide a way to close its http client.
@@ -1,15 +1,14 @@
1
1
  require 'puppet/ssl/openssl_loader'
2
2
  require 'net/http'
3
- require 'puppet/util/http_proxy'
3
+ require 'puppet/http'
4
4
 
5
- # Factory for <tt>Net::HTTP</tt> objects.
5
+ # Factory for `Net::HTTP` objects.
6
6
  #
7
- # Encapsulates the logic for creating a <tt>Net::HTTP</tt> object based on the
8
- # specified {Puppet::Network::HTTP::Site Site} and puppet settings.
7
+ # Encapsulates the logic for creating a `Net::HTTP` object based on the
8
+ # specified {Site} and puppet settings.
9
9
  #
10
10
  # @api private
11
- #
12
- class Puppet::Network::HTTP::Factory
11
+ class Puppet::HTTP::Factory
13
12
  @@openssl_initialized = false
14
13
 
15
14
  KEEP_ALIVE_TIMEOUT = 2**31 - 1
@@ -25,20 +24,14 @@ class Puppet::Network::HTTP::Factory
25
24
  def create_connection(site)
26
25
  Puppet.debug("Creating new connection for #{site}")
27
26
 
28
- http = Puppet::Util::HttpProxy.proxy(URI(site.addr))
27
+ http = Puppet::HTTP::Proxy.proxy(URI(site.addr))
29
28
  http.use_ssl = site.use_ssl?
30
- if site.use_ssl?
31
- http.min_version = OpenSSL::SSL::TLS1_VERSION if http.respond_to?(:min_version)
32
- http.ciphers = Puppet[:ciphers]
33
- end
34
29
  http.read_timeout = Puppet[:http_read_timeout]
35
30
  http.open_timeout = Puppet[:http_connect_timeout]
36
31
  http.keep_alive_timeout = KEEP_ALIVE_TIMEOUT if http.respond_to?(:keep_alive_timeout=)
37
32
 
38
- if http.respond_to?(:max_retries)
39
- # 0 means make one request and never retry
40
- http.max_retries = 0
41
- end
33
+ # 0 means make one request and never retry
34
+ http.max_retries = 0
42
35
 
43
36
  if Puppet[:sourceaddress]
44
37
  Puppet.debug("Using source IP #{Puppet[:sourceaddress]}")