puppet 6.19.0-x64-mingw32 → 7.3.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 (513) hide show
  1. checksums.yaml +4 -4
  2. data/CODEOWNERS +2 -16
  3. data/Gemfile +3 -4
  4. data/Gemfile.lock +33 -28
  5. data/README.md +1 -1
  6. data/conf/fileserver.conf +5 -10
  7. data/ext/build_defaults.yaml +1 -1
  8. data/ext/osx/file_mapping.yaml +0 -5
  9. data/ext/project_data.yaml +2 -14
  10. data/ext/redhat/puppet.spec.erb +0 -1
  11. data/ext/windows/service/daemon.rb +6 -5
  12. data/install.rb +21 -17
  13. data/lib/puppet.rb +11 -20
  14. data/lib/puppet/application.rb +182 -104
  15. data/lib/puppet/application/agent.rb +1 -0
  16. data/lib/puppet/application/apply.rb +3 -2
  17. data/lib/puppet/application/device.rb +101 -104
  18. data/lib/puppet/application/filebucket.rb +15 -11
  19. data/lib/puppet/application/script.rb +1 -0
  20. data/lib/puppet/application/ssl.rb +1 -1
  21. data/lib/puppet/application_support.rb +7 -0
  22. data/lib/puppet/configurer.rb +44 -36
  23. data/lib/puppet/configurer/plugin_handler.rb +21 -19
  24. data/lib/puppet/defaults.rb +71 -170
  25. data/lib/puppet/environments.rb +44 -75
  26. data/lib/puppet/face/config.rb +10 -0
  27. data/lib/puppet/face/epp.rb +12 -2
  28. data/lib/puppet/face/facts.rb +80 -6
  29. data/lib/puppet/face/help.rb +1 -1
  30. data/lib/puppet/face/node/clean.rb +8 -0
  31. data/lib/puppet/face/plugin.rb +5 -8
  32. data/lib/puppet/ffi/posix.rb +10 -0
  33. data/lib/puppet/ffi/posix/constants.rb +14 -0
  34. data/lib/puppet/ffi/posix/functions.rb +24 -0
  35. data/lib/puppet/ffi/windows.rb +12 -0
  36. data/lib/puppet/ffi/windows/api_types.rb +311 -0
  37. data/lib/puppet/ffi/windows/constants.rb +404 -0
  38. data/lib/puppet/ffi/windows/functions.rb +628 -0
  39. data/lib/puppet/ffi/windows/structs.rb +338 -0
  40. data/lib/puppet/file_serving/configuration.rb +0 -5
  41. data/lib/puppet/file_serving/configuration/parser.rb +6 -32
  42. data/lib/puppet/file_serving/http_metadata.rb +1 -1
  43. data/lib/puppet/file_serving/mount.rb +1 -2
  44. data/lib/puppet/forge/repository.rb +0 -1
  45. data/lib/puppet/functions/epp.rb +1 -0
  46. data/lib/puppet/functions/inline_epp.rb +1 -0
  47. data/lib/puppet/generate/models/type/type.rb +4 -1
  48. data/lib/puppet/http.rb +22 -13
  49. data/lib/puppet/http/client.rb +164 -114
  50. data/lib/puppet/{network/resolver.rb → http/dns.rb} +2 -2
  51. data/lib/puppet/http/errors.rb +16 -0
  52. data/lib/puppet/http/external_client.rb +5 -7
  53. data/lib/puppet/{network/http → http}/factory.rb +8 -11
  54. data/lib/puppet/{network/http → http}/pool.rb +61 -26
  55. data/lib/puppet/{network/http/session.rb → http/pool_entry.rb} +2 -3
  56. data/lib/puppet/http/proxy.rb +137 -0
  57. data/lib/puppet/http/redirector.rb +4 -12
  58. data/lib/puppet/http/resolver.rb +5 -15
  59. data/lib/puppet/http/resolver/server_list.rb +6 -10
  60. data/lib/puppet/http/resolver/settings.rb +4 -7
  61. data/lib/puppet/http/resolver/srv.rb +7 -11
  62. data/lib/puppet/http/response.rb +36 -54
  63. data/lib/puppet/http/response_converter.rb +24 -0
  64. data/lib/puppet/http/response_net_http.rb +42 -0
  65. data/lib/puppet/http/retry_after_handler.rb +4 -13
  66. data/lib/puppet/http/service.rb +12 -26
  67. data/lib/puppet/http/service/ca.rb +11 -22
  68. data/lib/puppet/http/service/compiler.rb +22 -69
  69. data/lib/puppet/http/service/file_server.rb +18 -27
  70. data/lib/puppet/http/service/puppetserver.rb +26 -12
  71. data/lib/puppet/http/service/report.rb +8 -10
  72. data/lib/puppet/http/session.rb +11 -20
  73. data/lib/puppet/{network/http → http}/site.rb +1 -2
  74. data/lib/puppet/indirector/catalog/rest.rb +2 -4
  75. data/lib/puppet/indirector/fact_search.rb +60 -0
  76. data/lib/puppet/indirector/facts/facter.rb +24 -3
  77. data/lib/puppet/indirector/facts/json.rb +27 -0
  78. data/lib/puppet/indirector/facts/rest.rb +3 -22
  79. data/lib/puppet/indirector/facts/yaml.rb +3 -58
  80. data/lib/puppet/indirector/file_bucket_file/rest.rb +3 -9
  81. data/lib/puppet/indirector/file_content/rest.rb +2 -6
  82. data/lib/puppet/indirector/file_metadata/rest.rb +3 -9
  83. data/lib/puppet/indirector/file_server.rb +1 -8
  84. data/lib/puppet/indirector/generic_http.rb +0 -11
  85. data/lib/puppet/indirector/json.rb +5 -1
  86. data/lib/puppet/indirector/node/json.rb +8 -0
  87. data/lib/puppet/indirector/node/rest.rb +2 -4
  88. data/lib/puppet/indirector/report/json.rb +34 -0
  89. data/lib/puppet/indirector/report/rest.rb +3 -8
  90. data/lib/puppet/indirector/request.rb +0 -101
  91. data/lib/puppet/indirector/rest.rb +12 -263
  92. data/lib/puppet/module_tool/applications.rb +0 -1
  93. data/lib/puppet/module_tool/applications/installer.rb +48 -2
  94. data/lib/puppet/module_tool/errors/shared.rb +17 -2
  95. data/lib/puppet/network/authconfig.rb +2 -96
  96. data/lib/puppet/network/authorization.rb +13 -35
  97. data/lib/puppet/network/formats.rb +69 -1
  98. data/lib/puppet/network/http.rb +3 -3
  99. data/lib/puppet/network/http/api/indirected_routes.rb +2 -20
  100. data/lib/puppet/network/http/api/master/v3.rb +11 -13
  101. data/lib/puppet/network/http/connection.rb +247 -316
  102. data/lib/puppet/network/http/handler.rb +0 -1
  103. data/lib/puppet/network/http_pool.rb +16 -34
  104. data/lib/puppet/node.rb +1 -30
  105. data/lib/puppet/pal/json_catalog_encoder.rb +4 -0
  106. data/lib/puppet/pal/pal_impl.rb +73 -18
  107. data/lib/puppet/parser/ast/leaf.rb +3 -2
  108. data/lib/puppet/parser/ast/pops_bridge.rb +0 -38
  109. data/lib/puppet/parser/compiler.rb +0 -198
  110. data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +14 -39
  111. data/lib/puppet/parser/resource.rb +0 -69
  112. data/lib/puppet/parser/templatewrapper.rb +1 -1
  113. data/lib/puppet/pops/evaluator/deferred_resolver.rb +5 -3
  114. data/lib/puppet/pops/evaluator/evaluator_impl.rb +22 -8
  115. data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +3 -3
  116. data/lib/puppet/pops/evaluator/runtime3_support.rb +1 -1
  117. data/lib/puppet/pops/issues.rb +0 -5
  118. data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +6 -8
  119. data/lib/puppet/pops/model/ast.pp +0 -42
  120. data/lib/puppet/pops/model/ast.rb +0 -290
  121. data/lib/puppet/pops/model/ast_transformer.rb +1 -1
  122. data/lib/puppet/pops/model/factory.rb +0 -45
  123. data/lib/puppet/pops/model/model_label_provider.rb +0 -5
  124. data/lib/puppet/pops/model/model_tree_dumper.rb +0 -22
  125. data/lib/puppet/pops/model/pn_transformer.rb +0 -16
  126. data/lib/puppet/pops/parser/egrammar.ra +0 -56
  127. data/lib/puppet/pops/parser/eparser.rb +1520 -1712
  128. data/lib/puppet/pops/parser/lexer2.rb +4 -4
  129. data/lib/puppet/pops/parser/parser_support.rb +0 -5
  130. data/lib/puppet/pops/resource/resource_type_impl.rb +2 -24
  131. data/lib/puppet/pops/types/type_calculator.rb +0 -7
  132. data/lib/puppet/pops/types/type_parser.rb +0 -4
  133. data/lib/puppet/pops/types/types.rb +0 -1
  134. data/lib/puppet/pops/validation/checker4_0.rb +9 -37
  135. data/lib/puppet/pops/validation/tasks_checker.rb +0 -12
  136. data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -2
  137. data/lib/puppet/provider.rb +0 -13
  138. data/lib/puppet/provider/nameservice.rb +0 -18
  139. data/lib/puppet/provider/package/apt.rb +4 -0
  140. data/lib/puppet/provider/package/dpkg.rb +0 -10
  141. data/lib/puppet/provider/package/gem.rb +23 -3
  142. data/lib/puppet/provider/package/pip.rb +0 -1
  143. data/lib/puppet/provider/package/pkg.rb +0 -4
  144. data/lib/puppet/provider/package/portage.rb +1 -1
  145. data/lib/puppet/provider/package/puppet_gem.rb +1 -4
  146. data/lib/puppet/provider/service/smf.rb +191 -73
  147. data/lib/puppet/provider/user/aix.rb +2 -2
  148. data/lib/puppet/provider/user/directoryservice.rb +0 -10
  149. data/lib/puppet/reference/configuration.rb +8 -5
  150. data/lib/puppet/reference/indirection.rb +1 -1
  151. data/lib/puppet/resource.rb +1 -89
  152. data/lib/puppet/resource/catalog.rb +1 -14
  153. data/lib/puppet/resource/type.rb +3 -119
  154. data/lib/puppet/resource/type_collection.rb +3 -48
  155. data/lib/puppet/runtime.rb +1 -2
  156. data/lib/puppet/settings.rb +88 -48
  157. data/lib/puppet/settings/alias_setting.rb +37 -0
  158. data/lib/puppet/settings/base_setting.rb +26 -2
  159. data/lib/puppet/settings/integer_setting.rb +17 -0
  160. data/lib/puppet/settings/port_setting.rb +15 -0
  161. data/lib/puppet/settings/priority_setting.rb +5 -4
  162. data/lib/puppet/ssl.rb +10 -6
  163. data/lib/puppet/ssl/base.rb +3 -5
  164. data/lib/puppet/ssl/certificate.rb +0 -6
  165. data/lib/puppet/ssl/certificate_request.rb +1 -12
  166. data/lib/puppet/ssl/certificate_signer.rb +6 -0
  167. data/lib/puppet/ssl/oids.rb +3 -1
  168. data/lib/puppet/ssl/ssl_provider.rb +17 -0
  169. data/lib/puppet/ssl/state_machine.rb +3 -1
  170. data/lib/puppet/ssl/verifier.rb +2 -0
  171. data/lib/puppet/test/test_helper.rb +1 -3
  172. data/lib/puppet/transaction.rb +1 -7
  173. data/lib/puppet/transaction/report.rb +2 -4
  174. data/lib/puppet/type.rb +0 -76
  175. data/lib/puppet/type/file.rb +5 -7
  176. data/lib/puppet/type/file/checksum.rb +1 -1
  177. data/lib/puppet/type/file/source.rb +1 -1
  178. data/lib/puppet/type/filebucket.rb +3 -3
  179. data/lib/puppet/type/package.rb +5 -13
  180. data/lib/puppet/type/user.rb +1 -1
  181. data/lib/puppet/util/autoload.rb +1 -8
  182. data/lib/puppet/util/execution.rb +0 -11
  183. data/lib/puppet/util/http_proxy.rb +2 -215
  184. data/lib/puppet/util/monkey_patches.rb +0 -46
  185. data/lib/puppet/util/posix.rb +54 -5
  186. data/lib/puppet/util/rdoc.rb +0 -7
  187. data/lib/puppet/util/retry_action.rb +1 -1
  188. data/lib/puppet/util/rubygems.rb +5 -1
  189. data/lib/puppet/util/run_mode.rb +9 -1
  190. data/lib/puppet/util/windows.rb +3 -8
  191. data/lib/puppet/util/windows/daemon.rb +360 -0
  192. data/lib/puppet/util/windows/error.rb +1 -0
  193. data/lib/puppet/util/windows/eventlog.rb +4 -9
  194. data/lib/puppet/util/windows/file.rb +8 -242
  195. data/lib/puppet/util/windows/monkey_patches/process.rb +414 -0
  196. data/lib/puppet/util/windows/process.rb +4 -226
  197. data/lib/puppet/util/windows/service.rb +9 -460
  198. data/lib/puppet/util/windows/string.rb +12 -13
  199. data/lib/puppet/util/yaml.rb +0 -22
  200. data/lib/puppet/vendor/require_vendored.rb +0 -1
  201. data/lib/puppet/version.rb +1 -1
  202. data/lib/puppet/x509.rb +5 -1
  203. data/lib/puppet/x509/cert_provider.rb +29 -1
  204. data/locales/puppet.pot +629 -1314
  205. data/man/man5/puppet.conf.5 +39 -99
  206. data/man/man8/puppet-agent.8 +2 -2
  207. data/man/man8/puppet-apply.8 +2 -2
  208. data/man/man8/puppet-catalog.8 +1 -1
  209. data/man/man8/puppet-config.8 +1 -1
  210. data/man/man8/puppet-describe.8 +1 -1
  211. data/man/man8/puppet-device.8 +2 -2
  212. data/man/man8/puppet-doc.8 +1 -1
  213. data/man/man8/puppet-epp.8 +1 -1
  214. data/man/man8/puppet-facts.8 +58 -9
  215. data/man/man8/puppet-filebucket.8 +6 -6
  216. data/man/man8/puppet-generate.8 +1 -1
  217. data/man/man8/puppet-help.8 +1 -1
  218. data/man/man8/puppet-lookup.8 +1 -1
  219. data/man/man8/puppet-module.8 +1 -58
  220. data/man/man8/puppet-node.8 +4 -1
  221. data/man/man8/puppet-parser.8 +1 -1
  222. data/man/man8/puppet-plugin.8 +1 -1
  223. data/man/man8/puppet-report.8 +4 -1
  224. data/man/man8/puppet-resource.8 +1 -1
  225. data/man/man8/puppet-script.8 +2 -2
  226. data/man/man8/puppet-ssl.8 +1 -1
  227. data/man/man8/puppet.8 +2 -2
  228. data/spec/fixtures/integration/application/agent/cached_deferred_catalog.json +91 -0
  229. data/spec/fixtures/unit/provider/service/smf/{svcs.out → svcs_instances.out} +0 -0
  230. data/spec/fixtures/unit/provider/user/aix/aix_passwd_file.out +4 -0
  231. data/spec/integration/application/agent_spec.rb +151 -14
  232. data/spec/integration/application/apply_spec.rb +20 -1
  233. data/spec/integration/application/filebucket_spec.rb +16 -16
  234. data/spec/integration/application/help_spec.rb +2 -0
  235. data/spec/integration/application/plugin_spec.rb +23 -1
  236. data/spec/integration/defaults_spec.rb +7 -10
  237. data/spec/integration/environments/setting_hooks_spec.rb +1 -1
  238. data/spec/integration/indirector/file_content/file_server_spec.rb +0 -2
  239. data/spec/integration/indirector/file_metadata/file_server_spec.rb +0 -2
  240. data/spec/integration/network/http_pool_spec.rb +3 -21
  241. data/spec/integration/parser/catalog_spec.rb +0 -38
  242. data/spec/integration/parser/node_spec.rb +0 -9
  243. data/spec/integration/parser/pcore_resource_spec.rb +0 -37
  244. data/spec/integration/resource/type_collection_spec.rb +2 -6
  245. data/spec/integration/transaction_spec.rb +4 -9
  246. data/spec/integration/type/file_spec.rb +5 -4
  247. data/spec/integration/util/windows/adsi_spec.rb +3 -1
  248. data/spec/integration/util/windows/monkey_patches/process_spec.rb +231 -0
  249. data/spec/integration/util/windows/registry_spec.rb +0 -10
  250. data/spec/integration/util/windows/security_spec.rb +1 -1
  251. data/spec/lib/puppet_spec/puppetserver.rb +1 -1
  252. data/spec/lib/puppet_spec/settings.rb +7 -1
  253. data/spec/spec_helper.rb +3 -4
  254. data/spec/unit/agent_spec.rb +8 -8
  255. data/spec/unit/application/agent_spec.rb +0 -1
  256. data/spec/unit/application/config_spec.rb +224 -4
  257. data/spec/unit/application/facts_spec.rb +35 -0
  258. data/spec/unit/application/filebucket_spec.rb +41 -41
  259. data/spec/unit/application/ssl_spec.rb +2 -2
  260. data/spec/unit/application_spec.rb +51 -9
  261. data/spec/unit/certificate_factory_spec.rb +1 -1
  262. data/spec/unit/configurer/downloader_spec.rb +6 -2
  263. data/spec/unit/configurer/plugin_handler_spec.rb +56 -18
  264. data/spec/unit/configurer_spec.rb +12 -9
  265. data/spec/unit/confine/feature_spec.rb +1 -1
  266. data/spec/unit/confine_spec.rb +8 -2
  267. data/spec/unit/context/trusted_information_spec.rb +2 -6
  268. data/spec/unit/defaults_spec.rb +26 -32
  269. data/spec/unit/environments_spec.rb +96 -22
  270. data/spec/unit/face/config_spec.rb +27 -32
  271. data/spec/unit/face/facts_spec.rb +4 -0
  272. data/spec/unit/face/node_spec.rb +14 -13
  273. data/spec/unit/face/plugin_spec.rb +73 -33
  274. data/spec/unit/file_bucket/file_spec.rb +1 -1
  275. data/spec/unit/file_serving/configuration/parser_spec.rb +22 -19
  276. data/spec/unit/file_serving/configuration_spec.rb +6 -12
  277. data/spec/unit/file_serving/metadata_spec.rb +3 -3
  278. data/spec/unit/file_serving/terminus_helper_spec.rb +11 -4
  279. data/spec/unit/forge/module_release_spec.rb +2 -7
  280. data/spec/unit/functions/camelcase_spec.rb +1 -1
  281. data/spec/unit/functions/capitalize_spec.rb +1 -1
  282. data/spec/unit/functions/downcase_spec.rb +1 -1
  283. data/spec/unit/functions/inline_epp_spec.rb +26 -1
  284. data/spec/unit/functions/upcase_spec.rb +1 -1
  285. data/spec/unit/http/client_spec.rb +7 -8
  286. data/spec/unit/{network/resolver_spec.rb → http/dns_spec.rb} +3 -3
  287. data/spec/unit/http/external_client_spec.rb +4 -4
  288. data/spec/unit/{network/http → http}/factory_spec.rb +5 -11
  289. data/spec/unit/{network/http/session_spec.rb → http/pool_entry_spec.rb} +3 -3
  290. data/spec/unit/{network/http → http}/pool_spec.rb +12 -17
  291. data/spec/unit/{util/http_proxy_spec.rb → http/proxy_spec.rb} +2 -69
  292. data/spec/unit/http/resolver_spec.rb +13 -13
  293. data/spec/unit/http/service/compiler_spec.rb +49 -62
  294. data/spec/unit/http/service/file_server_spec.rb +3 -3
  295. data/spec/unit/http/service/puppetserver_spec.rb +34 -4
  296. data/spec/unit/http/service_spec.rb +1 -2
  297. data/spec/unit/http/session_spec.rb +16 -14
  298. data/spec/unit/{network/http → http}/site_spec.rb +3 -3
  299. data/spec/unit/indirector/face_spec.rb +0 -1
  300. data/spec/unit/indirector/facts/facter_spec.rb +104 -1
  301. data/spec/unit/indirector/facts/json_spec.rb +255 -0
  302. data/spec/unit/indirector/file_bucket_file/file_spec.rb +5 -3
  303. data/spec/unit/indirector/file_bucket_file/selector_spec.rb +26 -8
  304. data/spec/unit/indirector/file_content/rest_spec.rb +0 -4
  305. data/spec/unit/indirector/file_metadata/rest_spec.rb +0 -4
  306. data/spec/unit/indirector/file_server_spec.rb +1 -15
  307. data/spec/unit/indirector/indirection_spec.rb +8 -12
  308. data/spec/unit/indirector/node/json_spec.rb +33 -0
  309. data/spec/{integration/indirector/report/yaml.rb → unit/indirector/report/json_spec.rb} +13 -24
  310. data/spec/unit/indirector/report/rest_spec.rb +2 -17
  311. data/spec/unit/indirector/report/yaml_spec.rb +72 -8
  312. data/spec/unit/indirector/request_spec.rb +0 -264
  313. data/spec/unit/indirector/rest_spec.rb +98 -752
  314. data/spec/unit/indirector_spec.rb +2 -2
  315. data/spec/unit/module_tool/applications/installer_spec.rb +66 -0
  316. data/spec/unit/network/authconfig_spec.rb +2 -132
  317. data/spec/unit/network/authorization_spec.rb +2 -55
  318. data/spec/unit/network/formats_spec.rb +45 -4
  319. data/spec/unit/network/http/api/indirected_routes_spec.rb +1 -101
  320. data/spec/unit/network/http/api/master/v3_spec.rb +28 -7
  321. data/spec/unit/network/http/api_spec.rb +10 -0
  322. data/spec/unit/network/http/connection_spec.rb +19 -41
  323. data/spec/unit/network/http/handler_spec.rb +0 -6
  324. data/spec/unit/network/http_pool_spec.rb +0 -4
  325. data/spec/unit/node/environment_spec.rb +33 -21
  326. data/spec/unit/node_spec.rb +2 -54
  327. data/spec/unit/parser/compiler_spec.rb +3 -19
  328. data/spec/unit/parser/functions/create_resources_spec.rb +2 -20
  329. data/spec/unit/parser/resource_spec.rb +14 -8
  330. data/spec/unit/parser/templatewrapper_spec.rb +4 -3
  331. data/spec/unit/pops/evaluator/deferred_resolver_spec.rb +20 -0
  332. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +4 -7
  333. data/spec/unit/pops/loaders/loaders_spec.rb +6 -21
  334. data/spec/unit/pops/parser/parse_application_spec.rb +4 -22
  335. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +0 -1
  336. data/spec/unit/pops/parser/parse_capabilities_spec.rb +8 -21
  337. data/spec/unit/pops/parser/parse_site_spec.rb +20 -24
  338. data/spec/unit/pops/resource/resource_type_impl_spec.rb +0 -71
  339. data/spec/unit/pops/serialization/to_from_hr_spec.rb +1 -1
  340. data/spec/unit/pops/types/type_calculator_spec.rb +6 -6
  341. data/spec/unit/pops/types/type_factory_spec.rb +1 -1
  342. data/spec/unit/pops/validator/validator_spec.rb +61 -46
  343. data/spec/unit/pops/visitor_spec.rb +1 -1
  344. data/spec/unit/property_spec.rb +1 -0
  345. data/spec/unit/provider/nameservice_spec.rb +66 -122
  346. data/spec/unit/provider/package/apt_spec.rb +4 -8
  347. data/spec/unit/provider/package/base_spec.rb +6 -5
  348. data/spec/unit/provider/package/dpkg_spec.rb +0 -48
  349. data/spec/unit/provider/package/gem_spec.rb +32 -0
  350. data/spec/unit/provider/package/pacman_spec.rb +18 -12
  351. data/spec/unit/provider/package/pip_spec.rb +6 -11
  352. data/spec/unit/provider/package/pkgdmg_spec.rb +0 -4
  353. data/spec/unit/provider/package/puppet_gem_spec.rb +3 -2
  354. data/spec/unit/provider/service/smf_spec.rb +401 -165
  355. data/spec/unit/provider/service/windows_spec.rb +0 -1
  356. data/spec/unit/provider/user/aix_spec.rb +5 -0
  357. data/spec/unit/provider/user/hpux_spec.rb +1 -1
  358. data/spec/unit/provider/user/pw_spec.rb +2 -0
  359. data/spec/unit/provider/user/useradd_spec.rb +1 -0
  360. data/spec/unit/provider_spec.rb +6 -20
  361. data/spec/unit/puppet_pal_catalog_spec.rb +45 -0
  362. data/spec/unit/resource/type_collection_spec.rb +2 -22
  363. data/spec/unit/resource/type_spec.rb +1 -1
  364. data/spec/unit/resource_spec.rb +11 -66
  365. data/spec/unit/settings/http_extra_headers_spec.rb +2 -4
  366. data/spec/unit/settings/integer_setting_spec.rb +42 -0
  367. data/spec/unit/settings/port_setting_spec.rb +31 -0
  368. data/spec/unit/settings/priority_setting_spec.rb +4 -4
  369. data/spec/unit/settings_spec.rb +560 -228
  370. data/spec/unit/ssl/base_spec.rb +36 -4
  371. data/spec/unit/ssl/certificate_request_spec.rb +15 -45
  372. data/spec/unit/ssl/certificate_spec.rb +2 -11
  373. data/spec/unit/ssl/ssl_provider_spec.rb +14 -8
  374. data/spec/unit/ssl/state_machine_spec.rb +0 -1
  375. data/spec/unit/ssl/verifier_spec.rb +0 -21
  376. data/spec/unit/transaction/additional_resource_generator_spec.rb +3 -7
  377. data/spec/unit/transaction/event_manager_spec.rb +14 -11
  378. data/spec/unit/transaction/report_spec.rb +0 -2
  379. data/spec/unit/transaction/resource_harness_spec.rb +2 -2
  380. data/spec/unit/transaction_spec.rb +57 -82
  381. data/spec/unit/type/file/checksum_spec.rb +6 -6
  382. data/spec/unit/type/file/content_spec.rb +1 -2
  383. data/spec/unit/type/file/ensure_spec.rb +1 -1
  384. data/spec/unit/type/file/mode_spec.rb +1 -1
  385. data/spec/unit/type/file/selinux_spec.rb +0 -2
  386. data/spec/unit/type/file/source_spec.rb +0 -1
  387. data/spec/unit/type/file_spec.rb +12 -12
  388. data/spec/unit/type/group_spec.rb +13 -6
  389. data/spec/unit/type/package_spec.rb +1 -1
  390. data/spec/unit/type/resources_spec.rb +7 -7
  391. data/spec/unit/type/service_spec.rb +1 -1
  392. data/spec/unit/type/tidy_spec.rb +0 -1
  393. data/spec/unit/type_spec.rb +22 -2
  394. data/spec/unit/util/at_fork_spec.rb +2 -2
  395. data/spec/unit/util/autoload_spec.rb +5 -1
  396. data/spec/unit/util/backups_spec.rb +1 -4
  397. data/spec/unit/util/execution_spec.rb +15 -40
  398. data/spec/unit/util/inifile_spec.rb +6 -14
  399. data/spec/unit/util/log_spec.rb +8 -7
  400. data/spec/unit/util/logging_spec.rb +3 -3
  401. data/spec/unit/util/monkey_patches_spec.rb +0 -6
  402. data/spec/unit/util/posix_spec.rb +363 -15
  403. data/spec/unit/util/rubygems_spec.rb +2 -2
  404. data/spec/unit/util/run_mode_spec.rb +21 -121
  405. data/spec/unit/util/selinux_spec.rb +76 -52
  406. data/spec/unit/util/storage_spec.rb +3 -1
  407. data/spec/unit/util/suidmanager_spec.rb +44 -41
  408. data/spec/unit/util/windows/string_spec.rb +1 -3
  409. data/spec/unit/util/yaml_spec.rb +0 -54
  410. data/spec/unit/util_spec.rb +13 -24
  411. metadata +66 -226
  412. data/conf/auth.conf +0 -150
  413. data/lib/puppet/application/cert.rb +0 -76
  414. data/lib/puppet/application/key.rb +0 -4
  415. data/lib/puppet/application/man.rb +0 -4
  416. data/lib/puppet/application/status.rb +0 -4
  417. data/lib/puppet/face/key.rb +0 -16
  418. data/lib/puppet/face/man.rb +0 -145
  419. data/lib/puppet/face/module/build.rb +0 -14
  420. data/lib/puppet/face/module/generate.rb +0 -14
  421. data/lib/puppet/face/module/search.rb +0 -103
  422. data/lib/puppet/face/status.rb +0 -51
  423. data/lib/puppet/indirector/certificate/file.rb +0 -9
  424. data/lib/puppet/indirector/certificate/rest.rb +0 -18
  425. data/lib/puppet/indirector/certificate_request/file.rb +0 -9
  426. data/lib/puppet/indirector/certificate_request/memory.rb +0 -7
  427. data/lib/puppet/indirector/certificate_request/rest.rb +0 -11
  428. data/lib/puppet/indirector/file_content/http.rb +0 -22
  429. data/lib/puppet/indirector/key/file.rb +0 -46
  430. data/lib/puppet/indirector/key/memory.rb +0 -7
  431. data/lib/puppet/indirector/ssl_file.rb +0 -162
  432. data/lib/puppet/indirector/status.rb +0 -3
  433. data/lib/puppet/indirector/status/local.rb +0 -12
  434. data/lib/puppet/indirector/status/rest.rb +0 -27
  435. data/lib/puppet/module_tool/applications/searcher.rb +0 -29
  436. data/lib/puppet/network/auth_config_parser.rb +0 -90
  437. data/lib/puppet/network/authstore.rb +0 -283
  438. data/lib/puppet/network/http/api/master/v3/authorization.rb +0 -18
  439. data/lib/puppet/network/http/api/master/v3/environment.rb +0 -88
  440. data/lib/puppet/network/http/base_pool.rb +0 -36
  441. data/lib/puppet/network/http/compression.rb +0 -127
  442. data/lib/puppet/network/http/connection_adapter.rb +0 -184
  443. data/lib/puppet/network/http/nocache_pool.rb +0 -28
  444. data/lib/puppet/network/rest_controller.rb +0 -2
  445. data/lib/puppet/network/rights.rb +0 -210
  446. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +0 -66
  447. data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +0 -22
  448. data/lib/puppet/parser/environment_compiler.rb +0 -202
  449. data/lib/puppet/pops/types/enumeration.rb +0 -16
  450. data/lib/puppet/resource/capability_finder.rb +0 -154
  451. data/lib/puppet/rest/errors.rb +0 -15
  452. data/lib/puppet/rest/response.rb +0 -35
  453. data/lib/puppet/rest/route.rb +0 -85
  454. data/lib/puppet/rest/routes.rb +0 -135
  455. data/lib/puppet/ssl/host.rb +0 -505
  456. data/lib/puppet/ssl/key.rb +0 -61
  457. data/lib/puppet/ssl/validator.rb +0 -61
  458. data/lib/puppet/ssl/validator/default_validator.rb +0 -209
  459. data/lib/puppet/ssl/validator/no_validator.rb +0 -22
  460. data/lib/puppet/ssl/verifier_adapter.rb +0 -58
  461. data/lib/puppet/status.rb +0 -40
  462. data/lib/puppet/util/connection.rb +0 -88
  463. data/lib/puppet/util/ssl.rb +0 -83
  464. data/lib/puppet/util/windows/api_types.rb +0 -309
  465. data/lib/puppet/util/windows/monkey_patches/dir.rb +0 -40
  466. data/lib/puppet/vendor/load_pathspec.rb +0 -1
  467. data/lib/puppet/vendor/pathspec/CHANGELOG.md +0 -2
  468. data/lib/puppet/vendor/pathspec/LICENSE +0 -201
  469. data/lib/puppet/vendor/pathspec/PUPPET_README.md +0 -6
  470. data/lib/puppet/vendor/pathspec/README.md +0 -53
  471. data/lib/puppet/vendor/pathspec/lib/pathspec.rb +0 -122
  472. data/lib/puppet/vendor/pathspec/lib/pathspec/gitignorespec.rb +0 -275
  473. data/lib/puppet/vendor/pathspec/lib/pathspec/regexspec.rb +0 -17
  474. data/lib/puppet/vendor/pathspec/lib/pathspec/spec.rb +0 -14
  475. data/man/man8/puppet-key.8 +0 -126
  476. data/man/man8/puppet-man.8 +0 -76
  477. data/man/man8/puppet-status.8 +0 -108
  478. data/spec/integration/application/config_spec.rb +0 -74
  479. data/spec/integration/network/authconfig_spec.rb +0 -256
  480. data/spec/integration/util/windows/monkey_patches/dir_spec.rb +0 -11
  481. data/spec/unit/application/man_spec.rb +0 -52
  482. data/spec/unit/capability_spec.rb +0 -414
  483. data/spec/unit/face/catalog_spec.rb +0 -6
  484. data/spec/unit/face/key_spec.rb +0 -9
  485. data/spec/unit/face/module/search_spec.rb +0 -231
  486. data/spec/unit/face/module_spec.rb +0 -3
  487. data/spec/unit/face/status_spec.rb +0 -9
  488. data/spec/unit/indirector/certificate/file_spec.rb +0 -14
  489. data/spec/unit/indirector/certificate/rest_spec.rb +0 -61
  490. data/spec/unit/indirector/certificate_request/file_spec.rb +0 -14
  491. data/spec/unit/indirector/certificate_request/rest_spec.rb +0 -25
  492. data/spec/unit/indirector/key/file_spec.rb +0 -79
  493. data/spec/unit/indirector/ssl_file_spec.rb +0 -305
  494. data/spec/unit/indirector/status/local_spec.rb +0 -10
  495. data/spec/unit/indirector/status/rest_spec.rb +0 -50
  496. data/spec/unit/module_tool/applications/searcher_spec.rb +0 -38
  497. data/spec/unit/network/auth_config_parser_spec.rb +0 -115
  498. data/spec/unit/network/authstore_spec.rb +0 -422
  499. data/spec/unit/network/http/api/master/v3/authorization_spec.rb +0 -57
  500. data/spec/unit/network/http/api/master/v3/environment_spec.rb +0 -185
  501. data/spec/unit/network/http/compression_spec.rb +0 -240
  502. data/spec/unit/network/http/nocache_pool_spec.rb +0 -64
  503. data/spec/unit/network/http_spec.rb +0 -9
  504. data/spec/unit/network/rights_spec.rb +0 -439
  505. data/spec/unit/parser/environment_compiler_spec.rb +0 -730
  506. data/spec/unit/pops/types/enumeration_spec.rb +0 -51
  507. data/spec/unit/resource/capability_finder_spec.rb +0 -143
  508. data/spec/unit/rest/route_spec.rb +0 -132
  509. data/spec/unit/ssl/host_spec.rb +0 -650
  510. data/spec/unit/ssl/key_spec.rb +0 -173
  511. data/spec/unit/ssl/validator_spec.rb +0 -278
  512. data/spec/unit/status_spec.rb +0 -45
  513. data/spec/unit/util/ssl_spec.rb +0 -91
@@ -1,26 +1,17 @@
1
- #
2
- # @api private
3
- #
4
1
  # Resolver base class. Each resolver represents a different strategy for
5
2
  # resolving a service name into a list of candidate servers and ports.
6
3
  #
7
4
  # @abstract Subclass and override {#resolve} to create a new resolver.
8
- #
5
+ # @api public
9
6
  class Puppet::HTTP::Resolver
10
7
  #
11
- # @api private
12
- #
13
- # Create a new resolver
8
+ # Create a new resolver.
14
9
  #
15
10
  # @param [Puppet::HTTP::Client] client
16
- #
17
11
  def initialize(client)
18
12
  @client = client
19
13
  end
20
14
 
21
- #
22
- # @api private
23
- #
24
15
  # Return a working server/port for the resolver. This is the base
25
16
  # implementation and is meant to be a placeholder.
26
17
  #
@@ -33,14 +24,12 @@ class Puppet::HTTP::Resolver
33
24
  #
34
25
  # @raise [NotImplementedError] this base class is not implemented
35
26
  #
27
+ # @api public
36
28
  def resolve(session, name, ssl_context: nil, canceled_handler: nil)
37
29
  raise NotImplementedError
38
30
  end
39
31
 
40
- #
41
- # @api private
42
- #
43
- # Check a given connection to establish if it can be relied on for future use
32
+ # Check a given connection to establish if it can be relied on for future use.
44
33
  #
45
34
  # @param [Puppet::HTTP::Session] session
46
35
  # @param [Puppet::HTTP::Service] service
@@ -48,6 +37,7 @@ class Puppet::HTTP::Resolver
48
37
  #
49
38
  # @return [Boolean] Returns true if a connection is successful, false otherwise
50
39
  #
40
+ # @api public
51
41
  def check_connection?(session, service, ssl_context: nil)
52
42
  service.connect(ssl_context: ssl_context)
53
43
  return true
@@ -1,12 +1,10 @@
1
- #
2
- # @api private
3
- #
4
1
  # Use the server_list setting to resolve a service. This resolver is only used
5
2
  # if server_list is set either on the command line or in the configuration file.
6
3
  #
4
+ # @api public
7
5
  class Puppet::HTTP::Resolver::ServerList < Puppet::HTTP::Resolver
8
- #
9
- # @api private
6
+
7
+ # Create a server list resolver.
10
8
  #
11
9
  # @param [Puppet::HTTP::Client] client
12
10
  # @param [Array<String>] server_list_setting array of servers set via the
@@ -24,15 +22,12 @@ class Puppet::HTTP::Resolver::ServerList < Puppet::HTTP::Resolver
24
22
  @services = services
25
23
  end
26
24
 
27
- #
28
- # @api private
29
- #
30
25
  # Walk the server_list to find a server and port that will connect successfully.
31
26
  #
32
- # @param [Puppet::HTTP::Session] session <description>
27
+ # @param [Puppet::HTTP::Session] session
33
28
  # @param [Symbol] name the name of the service being resolved
34
29
  # @param [Puppet::SSL::SSLContext] ssl_context
35
- # @param [Proc] canceled_handler (nil) optional callback allowing a resolver
30
+ # @param [Proc] canceled_handler optional callback allowing a resolver
36
31
  # to cancel resolution.
37
32
  #
38
33
  # @return [nil] return nil if the service to be resolved does not support
@@ -43,6 +38,7 @@ class Puppet::HTTP::Resolver::ServerList < Puppet::HTTP::Resolver
43
38
  # @raise [Puppet::Error] raise if none of the servers defined in server_list
44
39
  # are available
45
40
  #
41
+ # @api public
46
42
  def resolve(session, name, ssl_context: nil, canceled_handler: nil)
47
43
  # If we're configured to use an explicit service host, e.g. report_server
48
44
  # then don't use server_list to resolve the `:report` service.
@@ -1,24 +1,21 @@
1
- #
2
- # @api private
3
- #
4
1
  # Resolve a service using settings. This is the default resolver if none of the
5
2
  # other resolvers find a functional connection.
6
3
  #
4
+ # @api public
7
5
  class Puppet::HTTP::Resolver::Settings < Puppet::HTTP::Resolver
8
- #
9
- # @api private
10
- #
6
+
11
7
  # Resolve a service using the default server and port settings for this service.
12
8
  #
13
9
  # @param [Puppet::HTTP::Session] session
14
10
  # @param [Symbol] name the name of the service to be resolved
15
11
  # @param [Puppet::SSL::SSLContext] ssl_context
16
- # @param [Proc] canceled_handler (nil) optional callback allowing a resolver
12
+ # @param [Proc] canceled_handler optional callback allowing a resolver
17
13
  # to cancel resolution.
18
14
  #
19
15
  # @return [Puppet::HTTP::Service] if the service successfully connects,
20
16
  # return it. Otherwise, return nil.
21
17
  #
18
+ # @api public
22
19
  def resolve(session, name, ssl_context: nil, canceled_handler: nil)
23
20
  service = Puppet::HTTP::Service.create_service(@client, session, name)
24
21
  check_connection?(session, service, ssl_context: ssl_context) ? service : nil
@@ -1,11 +1,9 @@
1
+ # Resolve a service using DNS SRV records.
1
2
  #
2
- # @api private
3
- #
4
- # Resolve a service using SRV
5
- #
3
+ # @api public
6
4
  class Puppet::HTTP::Resolver::SRV < Puppet::HTTP::Resolver
7
- #
8
- # @api private
5
+
6
+ # Create an DNS SRV resolver.
9
7
  #
10
8
  # @param [Puppet::HTTP::Client] client
11
9
  # @param [String] domain srv domain
@@ -14,23 +12,21 @@ class Puppet::HTTP::Resolver::SRV < Puppet::HTTP::Resolver
14
12
  def initialize(client, domain:, dns: Resolv::DNS.new)
15
13
  @client = client
16
14
  @srv_domain = domain
17
- @delegate = Puppet::Network::Resolver.new(dns)
15
+ @delegate = Puppet::HTTP::DNS.new(dns)
18
16
  end
19
17
 
20
- #
21
- # @api private
22
- #
23
18
  # Walk the available srv records and return the first that successfully connects
24
19
  #
25
20
  # @param [Puppet::HTTP::Session] session
26
21
  # @param [Symbol] name the service being resolved
27
22
  # @param [Puppet::SSL::SSLContext] ssl_context
28
- # @param [Proc] canceled_handler (nil) optional callback allowing a resolver
23
+ # @param [Proc] canceled_handler optional callback allowing a resolver
29
24
  # to cancel resolution.
30
25
  #
31
26
  # @return [Puppet::HTTP::Service] if an available service is found, return
32
27
  # it. Return nil otherwise.
33
28
  #
29
+ # @api public
34
30
  def resolve(session, name, ssl_context: nil, canceled_handler: nil)
35
31
  # Here we pass our HTTP service name as the DNS SRV service name
36
32
  # This is fine for :ca, but note that :puppet and :file are handled
@@ -1,118 +1,100 @@
1
+ # Represents the response returned from the server from an HTTP request.
1
2
  #
2
- # @api private
3
- #
4
- # Represents the response returned from the server from an HTTP request
5
- #
3
+ # @api abstract
4
+ # @api public
6
5
  class Puppet::HTTP::Response
7
- # @api private
8
- # @return [Net::HTTP] the Net::HTTP response
9
- attr_reader :nethttp
10
-
11
- # @api private
12
- # @return [URI] the response uri
6
+ # @return [URI] the response url
13
7
  attr_reader :url
14
8
 
9
+ # Create a response associated with the URL.
15
10
  #
16
- # @api private
17
- #
18
- # Object to represent the response returned from an HTTP request
19
- #
20
- # @param [Net::HTTP] nethttp the request response
21
11
  # @param [URI] url
22
- #
23
- def initialize(nethttp, url)
24
- @nethttp = nethttp
12
+ # @param [Integer] HTTP status
13
+ # @param [String] HTTP reason
14
+ def initialize(url, code, reason)
25
15
  @url = url
16
+ @code = code
17
+ @reason = reason
26
18
  end
27
19
 
28
- #
29
- # @api private
30
- #
31
- # Extract the response code
20
+ # Return the response code.
32
21
  #
33
22
  # @return [Integer] Response code for the request
34
23
  #
24
+ # @api public
35
25
  def code
36
- @nethttp.code.to_i
26
+ @code
37
27
  end
38
28
 
39
- #
40
- # @api private
41
- #
42
- # Extract the response message
29
+ # Return the response message.
43
30
  #
44
31
  # @return [String] Response message for the request
45
32
  #
33
+ # @api public
46
34
  def reason
47
- @nethttp.message
35
+ @reason
48
36
  end
49
37
 
50
- #
51
- # @api private
52
- #
53
38
  # Returns the entire response body. Can be used instead of
54
- # Puppet::HTTP::Response.read_body, but both methods cannot be used for the
39
+ # `Puppet::HTTP::Response.read_body`, but both methods cannot be used for the
55
40
  # same response.
56
41
  #
57
42
  # @return [String] Response body for the request
58
43
  #
44
+ # @api public
59
45
  def body
60
- @nethttp.body
46
+ raise NotImplementedError
61
47
  end
62
48
 
63
- #
64
- # @api private
65
- #
66
49
  # Streams the response body to the caller in chunks. Can be used instead of
67
- # Puppet::HTTP::Response.body, but both methods cannot be used for the same
50
+ # `Puppet::HTTP::Response.body`, but both methods cannot be used for the same
68
51
  # response.
69
52
  #
70
53
  # @yield [String] Streams the response body in chunks
71
54
  #
72
55
  # @raise [ArgumentError] raise if a block is not given
73
56
  #
57
+ # @api public
74
58
  def read_body(&block)
75
- raise ArgumentError, "A block is required" unless block_given?
76
-
77
- @nethttp.read_body(&block)
59
+ raise NotImplementedError
78
60
  end
79
61
 
80
- #
81
- # @api private
82
- #
83
- # Check if the request received a response of success
62
+ # Check if the request received a response of success (HTTP 2xx).
84
63
  #
85
64
  # @return [Boolean] Returns true if the response indicates success
86
65
  #
66
+ # @api public
87
67
  def success?
88
- @nethttp.is_a?(Net::HTTPSuccess)
68
+ 200 <= @code && @code < 300
89
69
  end
90
70
 
91
- # @api private
92
- #
93
71
  # Get a header case-insensitively.
72
+ #
94
73
  # @param [String] name The header name
95
74
  # @return [String] The header value
96
75
  #
76
+ # @api public
97
77
  def [](name)
98
- @nethttp[name]
78
+ raise NotImplementedError
99
79
  end
100
80
 
101
- # @api private
102
- #
103
81
  # Yield each header name and value. Returns an enumerator if no block is given.
104
82
  #
105
83
  # @yieldparam [String] header name
106
84
  # @yieldparam [String] header value
107
85
  #
86
+ # @api public
108
87
  def each_header(&block)
109
- @nethttp.each_header(&block)
88
+ raise NotImplementedError
110
89
  end
111
90
 
112
- # @api private
113
- #
114
- # Drain the response body.
91
+ # Ensure the response body is fully read so that the server is not blocked
92
+ # waiting for us to read data from the socket. Also if the caller streamed
93
+ # the response, but didn't read the data, we need a way to drain the socket
94
+ # before adding the connection back to the connection pool, otherwise the
95
+ # unread response data would "leak" into the next HTTP request/response.
115
96
  #
97
+ # @api public
116
98
  def drain
117
99
  body
118
100
  true
@@ -0,0 +1,24 @@
1
+ module Puppet::HTTP::ResponseConverter
2
+ module_function
3
+
4
+ # Borrowed from puppetserver, see https://github.com/puppetlabs/puppetserver/commit/a1ebeaaa5af590003ccd23c89f808ba4f0c89609
5
+ def to_ruby_response(response)
6
+ str_code = response.code.to_s
7
+
8
+ # Copied from Net::HTTPResponse because it is private there.
9
+ clazz = Net::HTTPResponse::CODE_TO_OBJ[str_code] or
10
+ Net::HTTPResponse::CODE_CLASS_TO_OBJ[str_code[0,1]] or
11
+ Net::HTTPUnknownResponse
12
+ result = clazz.new(nil, str_code, nil)
13
+ result.body = response.body
14
+ # This is nasty, nasty. But apparently there is no way to create
15
+ # an instance of Net::HttpResponse from outside of the library and have
16
+ # the body be readable, unless you do stupid things like this.
17
+ result.instance_variable_set(:@read, true)
18
+ response.each_header do |k,v|
19
+ result[k] = v
20
+ end
21
+ result
22
+ end
23
+ end
24
+
@@ -0,0 +1,42 @@
1
+ # Adapts Net::HTTPResponse to Puppet::HTTP::Response
2
+ #
3
+ # @api public
4
+ class Puppet::HTTP::ResponseNetHTTP < Puppet::HTTP::Response
5
+
6
+ # Create a response associated with the URL.
7
+ #
8
+ # @param [URI] url
9
+ # @param [Net::HTTPResponse] nethttp The response
10
+ def initialize(url, nethttp)
11
+ super(url, nethttp.code.to_i, nethttp.message)
12
+
13
+ @nethttp = nethttp
14
+ end
15
+
16
+ # (see Puppet::HTTP::Response#body)
17
+ def body
18
+ @nethttp.body
19
+ end
20
+
21
+ # (see Puppet::HTTP::Response#read_body)
22
+ def read_body(&block)
23
+ raise ArgumentError, "A block is required" unless block_given?
24
+
25
+ @nethttp.read_body(&block)
26
+ end
27
+
28
+ # (see Puppet::HTTP::Response#success?)
29
+ def success?
30
+ @nethttp.is_a?(Net::HTTPSuccess)
31
+ end
32
+
33
+ # (see Puppet::HTTP::Response#[])
34
+ def [](name)
35
+ @nethttp[name]
36
+ end
37
+
38
+ # (see Puppet::HTTP::Response#each_header)
39
+ def each_header(&block)
40
+ @nethttp.each_header(&block)
41
+ end
42
+ end
@@ -1,28 +1,20 @@
1
1
  require 'date'
2
2
  require 'time'
3
3
 
4
- #
5
- # @api private
6
- #
7
4
  # Parse information relating to responses containing a Retry-After headers
8
5
  #
6
+ # @api private
9
7
  class Puppet::HTTP::RetryAfterHandler
10
- #
11
- # @api private
12
- #
8
+
13
9
  # Create a handler to allow the system to sleep between HTTP requests
14
10
  #
15
11
  # @param [Integer] retry_limit number of retries allowed
16
12
  # @param [Integer] max_sleep maximum sleep time allowed
17
- #
18
13
  def initialize(retry_limit, max_sleep)
19
14
  @retry_limit = retry_limit
20
15
  @max_sleep = max_sleep
21
16
  end
22
17
 
23
- #
24
- # @api private
25
- #
26
18
  # Does the response from the server tell us to wait until we attempt the next
27
19
  # retry?
28
20
  #
@@ -32,6 +24,7 @@ class Puppet::HTTP::RetryAfterHandler
32
24
  # @return [Boolean] Return true if the response code is 429 or 503, return
33
25
  # false otherwise
34
26
  #
27
+ # @api private
35
28
  def retry_after?(request, response)
36
29
  case response.code
37
30
  when 429, 503
@@ -41,9 +34,6 @@ class Puppet::HTTP::RetryAfterHandler
41
34
  end
42
35
  end
43
36
 
44
- #
45
- # @api private
46
- #
47
37
  # The amount of time to wait before attempting a retry
48
38
  #
49
39
  # @param [Net::HTTP] request
@@ -55,6 +45,7 @@ class Puppet::HTTP::RetryAfterHandler
55
45
  # @raise [Puppet::HTTP::TooManyRetryAfters] raise if we have hit our retry
56
46
  # limit
57
47
  #
48
+ # @api private
58
49
  def retry_after_interval(request, response, retries)
59
50
  raise Puppet::HTTP::TooManyRetryAfters.new(request.uri) if retries >= @retry_limit
60
51
 
@@ -1,24 +1,17 @@
1
+ # Represents an abstract Puppet web service.
1
2
  #
2
- # @api private
3
- #
4
- # Represents a puppet web service
5
- #
3
+ # @abstract Subclass and implement methods for the service's REST APIs.
4
+ # @api public
6
5
  class Puppet::HTTP::Service
7
- # @api private
8
6
  # @return [URI] the url associated with this service
9
7
  attr_reader :url
10
8
 
11
- # @api private
12
9
  # @return [Array<Symbol>] available services
13
10
  SERVICE_NAMES = [:ca, :fileserver, :puppet, :puppetserver, :report].freeze
14
11
 
15
- # @api private
16
12
  # @return [Array<Symbol>] format types that are unsupported
17
13
  EXCLUDED_FORMATS = [:yaml, :b64_zlib_yaml, :dot].freeze
18
14
 
19
- #
20
- # @api private
21
- #
22
15
  # Create a new web service, which contains the URL used to connect to the
23
16
  # service. The four services implemented are `:ca`, `:fileserver`, `:puppet`,
24
17
  # and `:report`.
@@ -35,6 +28,7 @@ class Puppet::HTTP::Service
35
28
  #
36
29
  # @return [Puppet::HTTP::Service] an instance of the service type requested
37
30
  #
31
+ # @api private
38
32
  def self.create_service(client, session, name, server = nil, port = nil)
39
33
  case name
40
34
  when :ca
@@ -52,57 +46,49 @@ class Puppet::HTTP::Service
52
46
  end
53
47
  end
54
48
 
55
- #
56
- # @api private
57
- #
58
49
  # Check if the service named is included in the list of available services.
59
50
  #
60
51
  # @param [Symbol] name
61
52
  #
62
53
  # @return [Boolean]
63
54
  #
55
+ # @api private
64
56
  def self.valid_name?(name)
65
57
  SERVICE_NAMES.include?(name)
66
58
  end
67
59
 
68
- #
69
- # @api private
70
- #
71
- # Create a new service
60
+ # Create a new service. Services should be created by calling `Puppet::HTTP::Session#route_to`.
72
61
  #
73
62
  # @param [Puppet::HTTP::Client] client
74
63
  # @param [Puppet::HTTP::Session] session
75
64
  # @param [URI] url The url to connect to
76
65
  #
66
+ # @api private
77
67
  def initialize(client, session, url)
78
68
  @client = client
79
69
  @session = session
80
70
  @url = url
81
71
  end
82
72
 
83
- #
84
- # @api private
85
- #
86
73
  # Return the url with the given path encoded and appended
87
74
  #
88
75
  # @param [String] path the string to append to the base url
89
76
  #
90
77
  # @return [URI] the URI object containing the encoded path
91
78
  #
79
+ # @api public
92
80
  def with_base_url(path)
93
81
  u = @url.dup
94
82
  u.path += Puppet::Util.uri_encode(path)
95
83
  u
96
84
  end
97
85
 
86
+ # Open a connection using the given ssl context.
98
87
  #
99
- # @api private
100
- #
101
- # Open a connection using the given ssl context
102
- #
103
- # @param [Puppet::SSL::SSLContext] ssl_context (nil) optional ssl context to
104
- # connect with
88
+ # @param [Puppet::SSL::SSLContext] ssl_context An optional ssl context to connect with
89
+ # @return [void]
105
90
  #
91
+ # @api public
106
92
  def connect(ssl_context: nil)
107
93
  @client.connect(@url, options: {ssl_context: ssl_context})
108
94
  end