puppet 6.19.0 → 7.3.0

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 -170
  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,21 @@
1
+ # The CA service is used to handle certificate related REST requests.
1
2
  #
2
- # @api private
3
- #
4
- # The Ca service is used to handle certificate requests
5
- #
3
+ # @api public
6
4
  class Puppet::HTTP::Service::Ca < Puppet::HTTP::Service
7
- # @api private
8
5
  # @return [Hash] default headers for the ca service
9
6
  HEADERS = { 'Accept' => 'text/plain' }.freeze
10
7
 
11
- # @api private
12
8
  # @return [String] default API for the ca service
13
9
  API = '/puppet-ca/v1'.freeze
14
10
 
15
- #
16
- # @api private
11
+ # Use `Puppet::HTTP::Session.route_to(:ca)` to create or get an instance of this class.
17
12
  #
18
13
  # @param [Puppet::HTTP::Client] client
19
14
  # @param [Puppet::HTTP::Session] session
20
- # @param [String] server (Puppet[:ca_server]) If an explicit server is given,
15
+ # @param [String] server (`Puppet[:ca_server]`) If an explicit server is given,
21
16
  # create a service using that server. If server is nil, the default value
22
17
  # is used to create the service.
23
- # @param [Integer] port (Puppet[:ca_port]) If an explicit port is given, create
18
+ # @param [Integer] port (`Puppet[:ca_port]`) If an explicit port is given, create
24
19
  # a service using that port. If port is nil, the default value is used to
25
20
  # create the service.
26
21
  #
@@ -29,10 +24,7 @@ class Puppet::HTTP::Service::Ca < Puppet::HTTP::Service
29
24
  super(client, session, url)
30
25
  end
31
26
 
32
- #
33
- # @api private
34
- #
35
- # Submit a GET request to retrieve the named certificate from the server
27
+ # Submit a GET request to retrieve the named certificate from the server.
36
28
  #
37
29
  # @param [String] name name of the certificate to request
38
30
  # @param [Puppet::SSL::SSLContext] ssl_context
@@ -40,6 +32,7 @@ class Puppet::HTTP::Service::Ca < Puppet::HTTP::Service
40
32
  # @return [Array<Puppet::HTTP::Response, String>] An array containing the
41
33
  # request response and the stringified body of the request response
42
34
  #
35
+ # @api public
43
36
  def get_certificate(name, ssl_context: nil)
44
37
  response = @client.get(
45
38
  with_base_url("/certificate/#{name}"),
@@ -52,11 +45,8 @@ class Puppet::HTTP::Service::Ca < Puppet::HTTP::Service
52
45
  [response, response.body.to_s]
53
46
  end
54
47
 
55
- #
56
- # @api private
57
- #
58
48
  # Submit a GET request to retrieve the certificate revocation list from the
59
- # server
49
+ # server.
60
50
  #
61
51
  # @param [Time] if_modified_since If not nil, only download the CRL if it has
62
52
  # been modified since the specified time.
@@ -65,6 +55,7 @@ class Puppet::HTTP::Service::Ca < Puppet::HTTP::Service
65
55
  # @return [Array<Puppet::HTTP::Response, String>] An array containing the
66
56
  # request response and the stringified body of the request response
67
57
  #
58
+ # @api public
68
59
  def get_certificate_revocation_list(if_modified_since: nil, ssl_context: nil)
69
60
  headers = add_puppet_headers(HEADERS)
70
61
  headers['If-Modified-Since'] = if_modified_since.httpdate if if_modified_since
@@ -80,10 +71,7 @@ class Puppet::HTTP::Service::Ca < Puppet::HTTP::Service
80
71
  [response, response.body.to_s]
81
72
  end
82
73
 
83
- #
84
- # @api private
85
- #
86
- # Submit a PUT request to send a certificate request to the server
74
+ # Submit a PUT request to send a certificate request to the server.
87
75
  #
88
76
  # @param [String] name The name of the certificate request being sent
89
77
  # @param [OpenSSL::X509::Request] csr Certificate request to send to the
@@ -92,6 +80,7 @@ class Puppet::HTTP::Service::Ca < Puppet::HTTP::Service
92
80
  #
93
81
  # @return [Puppet::HTTP::Response] The request response
94
82
  #
83
+ # @api public
95
84
  def put_certificate_request(name, csr, ssl_context: nil)
96
85
  headers = add_puppet_headers(HEADERS)
97
86
  headers['Content-Type'] = 'text/plain'
@@ -1,23 +1,19 @@
1
- #
2
- # @api private
3
- #
4
1
  # The Compiler service is used to submit and retrieve data from the
5
2
  # puppetserver.
6
3
  #
4
+ # @api public
7
5
  class Puppet::HTTP::Service::Compiler < Puppet::HTTP::Service
8
- # @api private
9
6
  # @return [String] Default API for the Compiler service
10
7
  API = '/puppet/v3'.freeze
11
8
 
12
- #
13
- # @api private
9
+ # Use `Puppet::HTTP::Session.route_to(:puppet)` to create or get an instance of this class.
14
10
  #
15
11
  # @param [Puppet::HTTP::Client] client
16
12
  # @param [Puppet::HTTP::Session] session
17
- # @param [String] server (Puppet[:ca_server]) If an explicit server is given,
13
+ # @param [String] server (`Puppet[:server]`) If an explicit server is given,
18
14
  # create a service using that server. If server is nil, the default value
19
15
  # is used to create the service.
20
- # @param [Integer] port (Puppet[:ca_port]) If an explicit port is given, create
16
+ # @param [Integer] port (`Puppet[:masterport]`) If an explicit port is given, create
21
17
  # a service using that port. If port is nil, the default value is used to
22
18
  # create the service.
23
19
  #
@@ -26,10 +22,7 @@ class Puppet::HTTP::Service::Compiler < Puppet::HTTP::Service
26
22
  super(client, session, url)
27
23
  end
28
24
 
29
- #
30
- # @api private
31
- #
32
- # Submit a GET request to retrieve a node from the server
25
+ # Submit a GET request to retrieve a node from the server.
33
26
  #
34
27
  # @param [String] name The name of the node being requested
35
28
  # @param [String] environment The name of the environment we are operating in
@@ -41,6 +34,7 @@ class Puppet::HTTP::Service::Compiler < Puppet::HTTP::Service
41
34
  # @return [Array<Puppet::HTTP::Response, Puppet::Node>] An array containing
42
35
  # the request response and the deserialized requested node
43
36
  #
37
+ # @api public
44
38
  def get_node(name, environment:, configured_environment: nil, transaction_uuid: nil)
45
39
  headers = add_puppet_headers('Accept' => get_mime_types(Puppet::Node).join(', '))
46
40
 
@@ -59,10 +53,7 @@ class Puppet::HTTP::Service::Compiler < Puppet::HTTP::Service
59
53
  [response, deserialize(response, Puppet::Node)]
60
54
  end
61
55
 
62
- #
63
- # @api private
64
- #
65
- # Submit a POST request to submit a catalog to the server
56
+ # Submit a POST request to submit a catalog to the server.
66
57
  #
67
58
  # @param [String] name The name of the catalog to be submitted
68
59
  # @param [Puppet::Node::Facts] facts Facts for this catalog
@@ -77,14 +68,13 @@ class Puppet::HTTP::Service::Compiler < Puppet::HTTP::Service
77
68
  # @param [Boolean] static_catalog Indicates if the file metadata(s) are inlined
78
69
  # in the catalog. This informs the agent if it needs to make a second request
79
70
  # to retrieve metadata in addition to the initial catalog request.
80
- # @param [Array<String>] checksum_type An array of accepted checksum type.
81
- # Currently defaults to `["md5", "sha256", "sha384", "sha512", "sha224"]`,
82
- # or `["sha256", "sha384", "sha512", "sha224"]` if fips is enabled.
71
+ # @param [Array<String>] checksum_type An array of accepted checksum types.
83
72
  #
84
73
  # @return [Array<Puppet::HTTP::Response, Puppet::Resource::Catalog>] An array
85
74
  # containing the request response and the deserialized catalog returned by
86
75
  # the server
87
76
  #
77
+ # @api public
88
78
  def post_catalog(name, facts:, environment:, configured_environment: nil, transaction_uuid: nil, job_uuid: nil, static_catalog: true, checksum_type: Puppet[:supported_checksum_types])
89
79
  if Puppet[:preferred_serialization_format] == "pson"
90
80
  formatter = Puppet::Network::FormatHandler.format_for(:pson)
@@ -129,10 +119,7 @@ class Puppet::HTTP::Service::Compiler < Puppet::HTTP::Service
129
119
  [response, deserialize(response, Puppet::Resource::Catalog)]
130
120
  end
131
121
 
132
- #
133
- # @api private
134
- #
135
- # Submit a GET request to retrieve the facts for the named node
122
+ # Submit a GET request to retrieve the facts for the named node.
136
123
  #
137
124
  # @param [String] name Name of the node to retrieve facts for
138
125
  # @param [String] environment Name of the environment we are operating in
@@ -141,6 +128,7 @@ class Puppet::HTTP::Service::Compiler < Puppet::HTTP::Service
141
128
  # containing the request response and the deserialized facts for the
142
129
  # specified node
143
130
  #
131
+ # @api public
144
132
  def get_facts(name, environment:)
145
133
  headers = add_puppet_headers('Accept' => get_mime_types(Puppet::Node::Facts).join(', '))
146
134
 
@@ -155,10 +143,7 @@ class Puppet::HTTP::Service::Compiler < Puppet::HTTP::Service
155
143
  [response, deserialize(response, Puppet::Node::Facts)]
156
144
  end
157
145
 
158
- #
159
- # @api private
160
- #
161
- # Submits a PUT request to submit facts for the node to the server
146
+ # Submits a PUT request to submit facts for the node to the server.
162
147
  #
163
148
  # @param [String] name Name of the node we are submitting facts for
164
149
  # @param [String] environment Name of the environment we are operating in
@@ -166,6 +151,7 @@ class Puppet::HTTP::Service::Compiler < Puppet::HTTP::Service
166
151
  #
167
152
  # @return [Puppet::HTTP::Response] The request response
168
153
  #
154
+ # @api public
169
155
  def put_facts(name, environment:, facts:)
170
156
  formatter = Puppet::Network::FormatHandler.format_for(Puppet[:preferred_serialization_format])
171
157
 
@@ -186,39 +172,9 @@ class Puppet::HTTP::Service::Compiler < Puppet::HTTP::Service
186
172
  response
187
173
  end
188
174
 
175
+ # Submit a GET request to retrieve a file stored with filebucket.
189
176
  #
190
- # @api private
191
- #
192
- # Submit a GET request to find the status of a compiler
193
- #
194
- # @param [String] name The name of the node that a status being requested for
195
- #
196
- # @return [Array<Puppet::HTTP::Response, Puppet::Status>] An array containing
197
- # the request response and the deserialized status returned from the server
198
- #
199
- def get_status(name)
200
- headers = add_puppet_headers('Accept' => get_mime_types(Puppet::Status).join(', '))
201
-
202
- response = @client.get(
203
- with_base_url("/status/#{name}"),
204
- headers: headers,
205
- params: {
206
- # environment is required, but meaningless, default to production
207
- environment: 'production'
208
- },
209
- )
210
-
211
- process_response(response)
212
-
213
- [response, deserialize(response, Puppet::Status)]
214
- end
215
-
216
- #
217
- # @api private
218
- #
219
- # Submit a GET request to retrieve a file stored with filebucket
220
- #
221
- # @param [String] path The request path, formatted by Puppet::FileBucket::Dipper
177
+ # @param [String] path The request path, formatted by `Puppet::FileBucket::Dipper`
222
178
  # @param [String] environment Name of the environment we are operating in.
223
179
  # This should not impact filebucket at all, but is included to be consistent
224
180
  # with legacy code.
@@ -233,6 +189,7 @@ class Puppet::HTTP::Service::Compiler < Puppet::HTTP::Service
233
189
  # containing the request response and the deserialized file returned from
234
190
  # the server.
235
191
  #
192
+ # @api public
236
193
  def get_filebucket_file(path, environment:, bucket_path: nil, diff_with: nil, list_all: nil, fromdate: nil, todate: nil)
237
194
  headers = add_puppet_headers('Accept' => 'application/octet-stream')
238
195
 
@@ -254,12 +211,9 @@ class Puppet::HTTP::Service::Compiler < Puppet::HTTP::Service
254
211
  [response, deserialize(response, Puppet::FileBucket::File)]
255
212
  end
256
213
 
214
+ # Submit a PUT request to store a file with filebucket.
257
215
  #
258
- # @api private
259
- #
260
- # Submit a PUT request to store a file with filebucket
261
- #
262
- # @param [String] path The request path, formatted by Puppet::FileBucket::Dipper
216
+ # @param [String] path The request path, formatted by `Puppet::FileBucket::Dipper`
263
217
  # @param [String] body The contents of the file to be backed
264
218
  # @param [String] environment Name of the environment we are operating in.
265
219
  # This should not impact filebucket at all, but is included to be consistent
@@ -267,6 +221,7 @@ class Puppet::HTTP::Service::Compiler < Puppet::HTTP::Service
267
221
  #
268
222
  # @return [Puppet::HTTP::Response] The response request
269
223
  #
224
+ # @api public
270
225
  def put_filebucket_file(path, body:, environment:)
271
226
  headers = add_puppet_headers({
272
227
  'Accept' => 'application/octet-stream',
@@ -287,12 +242,9 @@ class Puppet::HTTP::Service::Compiler < Puppet::HTTP::Service
287
242
  response
288
243
  end
289
244
 
245
+ # Submit a HEAD request to check the status of a file stored with filebucket.
290
246
  #
291
- # @api private
292
- #
293
- # Submit a HEAD request to check the status of a file stored with filebucket
294
- #
295
- # @param [String] path The request path, formatted by Puppet::FileBucket::Dipper
247
+ # @param [String] path The request path, formatted by `Puppet::FileBucket::Dipper`
296
248
  # @param [String] environment Name of the environment we are operating in.
297
249
  # This should not impact filebucket at all, but is included to be consistent
298
250
  # with legacy code.
@@ -300,6 +252,7 @@ class Puppet::HTTP::Service::Compiler < Puppet::HTTP::Service
300
252
  #
301
253
  # @return [Puppet::HTTP::Response] The request response
302
254
  #
255
+ # @api public
303
256
  def head_filebucket_file(path, environment:, bucket_path: nil)
304
257
  headers = add_puppet_headers('Accept' => 'application/octet-stream')
305
258
 
@@ -1,28 +1,24 @@
1
1
  require 'puppet/file_serving/metadata'
2
2
 
3
+ # The FileServer service is used to retrieve file metadata and content.
3
4
  #
4
- # @api private
5
- #
6
- # The FileServer service is used to retrieve file metadata and content
5
+ # @api public
7
6
  #
8
7
  class Puppet::HTTP::Service::FileServer < Puppet::HTTP::Service
9
- # @api private
10
8
  # @return [String] Default API for the FileServer service
11
9
  API = '/puppet/v3'.freeze
12
10
 
13
- # @api private
14
11
  # @return [RegEx] RegEx used to determine if a path contains a leading slash
15
12
  PATH_REGEX = /^\//
16
13
 
17
- #
18
- # @api private
14
+ # Use `Puppet::HTTP::Session.route_to(:fileserver)` to create or get an instance of this class.
19
15
  #
20
16
  # @param [Puppet::HTTP::Client] client
21
17
  # @param [Puppet::HTTP::Session] session
22
- # @param [String] server (Puppet[:ca_server]) If an explicit server is given,
18
+ # @param [String] server (`Puppet[:server]`) If an explicit server is given,
23
19
  # create a service using that server. If server is nil, the default value
24
20
  # is used to create the service.
25
- # @param [Integer] port (Puppet[:ca_port]) If an explicit port is given, create
21
+ # @param [Integer] port (`Puppet[:masterport]`) If an explicit port is given, create
26
22
  # a service using that port. If port is nil, the default value is used to
27
23
  # create the service.
28
24
  #
@@ -31,19 +27,14 @@ class Puppet::HTTP::Service::FileServer < Puppet::HTTP::Service
31
27
  super(client, session, url)
32
28
  end
33
29
 
34
- #
35
- # @api private
36
- #
37
- # Submit a GET request to the server to retrieve the metadata for a specified
38
- # file
30
+ # Submit a GET request to the server to retrieve the metadata for a specified file.
39
31
  #
40
32
  # @param [String] path path to the file to retrieve data from
41
33
  # @param [String] environment the name of the environment we are operating in
42
34
  # @param [Symbol] links Can be one of either `:follow` or `:manage`, defines
43
35
  # how links are handled.
44
36
  # @param [String] checksum_type The digest algorithm used to verify the file.
45
- # Currently if fips is enabled, this defaults to `sha256`. Otherwise, it
46
- # defaults to `md5`.
37
+ # Defaults to `sha256`.
47
38
  # @param [Symbol] source_permissions Can be one of `:use`, `:use_when_creating`,
48
39
  # or `:ignore`. This parameter tells the server if it should include the
49
40
  # file permissions in the response. If set to `:ignore`, the server will
@@ -53,6 +44,8 @@ class Puppet::HTTP::Service::FileServer < Puppet::HTTP::Service
53
44
  # array with the request response and the deserialized metadata for the
54
45
  # file returned from the server
55
46
  #
47
+ # @api public
48
+ #
56
49
  def get_file_metadata(path:, environment:, links: :manage, checksum_type: Puppet[:digest_algorithm], source_permissions: :ignore)
57
50
  validate_path(path)
58
51
 
@@ -74,9 +67,6 @@ class Puppet::HTTP::Service::FileServer < Puppet::HTTP::Service
74
67
  [response, deserialize(response, Puppet::FileServing::Metadata)]
75
68
  end
76
69
 
77
- #
78
- # @api private
79
- #
80
70
  # Submit a GET request to the server to retrieve the metadata for multiple files
81
71
  #
82
72
  # @param [String] path path to the file(s) to retrieve data from
@@ -106,6 +96,8 @@ class Puppet::HTTP::Service::FileServer < Puppet::HTTP::Service
106
96
  # An array with the request response and an array of the deserialized
107
97
  # metadata for each file returned from the server
108
98
  #
99
+ # @api public
100
+ #
109
101
  def get_file_metadatas(path: nil, environment:, recurse: :false, recurselimit: nil, ignore: nil, links: :manage, checksum_type: Puppet[:digest_algorithm], source_permissions: :ignore)
110
102
  validate_path(path)
111
103
 
@@ -130,10 +122,7 @@ class Puppet::HTTP::Service::FileServer < Puppet::HTTP::Service
130
122
  [response, deserialize_multiple(response, Puppet::FileServing::Metadata)]
131
123
  end
132
124
 
133
- #
134
- # @api private
135
- #
136
- # Submit a GET request to the server to retrieve content of a file
125
+ # Submit a GET request to the server to retrieve content of a file.
137
126
  #
138
127
  # @param [String] path path to the file to retrieve data from
139
128
  # @param [String] environment the name of the environment we are operating in
@@ -142,6 +131,8 @@ class Puppet::HTTP::Service::FileServer < Puppet::HTTP::Service
142
131
  #
143
132
  # @return [Puppet::HTTP::Response] The request response
144
133
  #
134
+ # @api public
135
+ #
145
136
  def get_file_content(path:, environment:, &block)
146
137
  validate_path(path)
147
138
 
@@ -163,10 +154,8 @@ class Puppet::HTTP::Service::FileServer < Puppet::HTTP::Service
163
154
  response
164
155
  end
165
156
 
166
- #
167
- # @api private
168
- #
169
- # Submit a GET request to
157
+ # Submit a GET request to retrieve file content using the `static_file_content` API
158
+ # uniquely identified by (`code_id`, `environment`, `path`).
170
159
  #
171
160
  # @param [String] path path to the file to retrieve data from
172
161
  # @param [String] environment the name of the environment we are operating in
@@ -176,6 +165,8 @@ class Puppet::HTTP::Service::FileServer < Puppet::HTTP::Service
176
165
  #
177
166
  # @return [Puppet::HTTP::Response] The request response
178
167
  #
168
+ # @api public
169
+ #
179
170
  def get_static_file_content(path:, environment:, code_id:, &block)
180
171
  validate_path(path)
181
172
 
@@ -1,38 +1,52 @@
1
1
  # The puppetserver service.
2
2
  #
3
- # @api private
3
+ # @api public
4
4
  #
5
5
  class Puppet::HTTP::Service::Puppetserver < Puppet::HTTP::Service
6
+
7
+ # Use `Puppet::HTTP::Session.route_to(:puppetserver)` to create or get an instance of this class.
8
+ #
6
9
  # @param [Puppet::HTTP::Client] client
7
10
  # @param [Puppet::HTTP::Session] session
8
- # @param [String] server If an explicit server is given,
11
+ # @param [String] server (`Puppet[:server]`) If an explicit server is given,
9
12
  # create a service using that server. If server is nil, the default value
10
13
  # is used to create the service.
11
- # @param [Integer] port If an explicit port is given, create
14
+ # @param [Integer] port (`Puppet[:masterport]`) If an explicit port is given, create
12
15
  # a service using that port. If port is nil, the default value is used to
13
16
  # create the service.
14
- # @api private
15
17
  #
16
18
  def initialize(client, session, server, port)
17
19
  url = build_url('', server || Puppet[:server], port || Puppet[:serverport])
18
20
  super(client, session, url)
19
21
  end
20
22
 
21
- # Request the puppetserver's simple status
23
+ # Request the puppetserver's simple status.
22
24
  #
23
25
  # @param [Puppet::SSL::SSLContext] ssl_context to use when establishing
24
26
  # the connection.
25
27
  # @return Puppet::HTTP::Response The HTTP response
26
- # @api private
28
+ #
29
+ # @api public
27
30
  #
28
31
  def get_simple_status(ssl_context: nil)
29
- response = @client.get(
30
- with_base_url("/status/v1/simple/master"),
31
- headers: add_puppet_headers({}),
32
- options: {ssl_context: ssl_context}
33
- )
32
+ request_path = "/status/v1/simple/server"
33
+
34
+ begin
35
+ response = @client.get(
36
+ with_base_url(request_path),
37
+ headers: add_puppet_headers({}),
38
+ options: {ssl_context: ssl_context}
39
+ )
34
40
 
35
- process_response(response)
41
+ process_response(response)
42
+ rescue Puppet::HTTP::ResponseError => e
43
+ if e.response.code == 404 && e.response.url.path == "/status/v1/simple/server"
44
+ request_path = "/status/v1/simple/master"
45
+ retry
46
+ else
47
+ raise e
48
+ end
49
+ end
36
50
 
37
51
  [response, response.body.to_s]
38
52
  end