puppet 6.19.1 → 7.0.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 (440) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -1
  3. data/Gemfile.lock +19 -20
  4. data/README.md +1 -1
  5. data/conf/fileserver.conf +5 -10
  6. data/ext/build_defaults.yaml +1 -1
  7. data/ext/osx/file_mapping.yaml +0 -5
  8. data/ext/project_data.yaml +1 -14
  9. data/ext/redhat/puppet.spec.erb +0 -1
  10. data/ext/windows/service/daemon.rb +6 -5
  11. data/install.rb +21 -17
  12. data/lib/puppet.rb +11 -20
  13. data/lib/puppet/application.rb +172 -98
  14. data/lib/puppet/application/device.rb +100 -104
  15. data/lib/puppet/application/filebucket.rb +15 -11
  16. data/lib/puppet/application/ssl.rb +1 -1
  17. data/lib/puppet/configurer.rb +28 -33
  18. data/lib/puppet/configurer/plugin_handler.rb +21 -19
  19. data/lib/puppet/defaults.rb +95 -159
  20. data/lib/puppet/environments.rb +10 -25
  21. data/lib/puppet/face/config.rb +10 -0
  22. data/lib/puppet/face/epp.rb +12 -2
  23. data/lib/puppet/face/facts.rb +66 -6
  24. data/lib/puppet/face/help.rb +1 -1
  25. data/lib/puppet/face/plugin.rb +5 -8
  26. data/lib/puppet/ffi/windows.rb +12 -0
  27. data/lib/puppet/ffi/windows/api_types.rb +311 -0
  28. data/lib/puppet/ffi/windows/constants.rb +404 -0
  29. data/lib/puppet/ffi/windows/functions.rb +628 -0
  30. data/lib/puppet/ffi/windows/structs.rb +338 -0
  31. data/lib/puppet/file_serving/configuration.rb +0 -5
  32. data/lib/puppet/file_serving/configuration/parser.rb +3 -32
  33. data/lib/puppet/file_serving/http_metadata.rb +1 -1
  34. data/lib/puppet/file_serving/mount.rb +1 -2
  35. data/lib/puppet/forge/repository.rb +0 -1
  36. data/lib/puppet/functions/epp.rb +1 -0
  37. data/lib/puppet/functions/inline_epp.rb +1 -0
  38. data/lib/puppet/generate/models/type/type.rb +4 -1
  39. data/lib/puppet/http.rb +22 -13
  40. data/lib/puppet/http/client.rb +164 -114
  41. data/lib/puppet/{network/resolver.rb → http/dns.rb} +2 -2
  42. data/lib/puppet/http/errors.rb +16 -0
  43. data/lib/puppet/http/external_client.rb +5 -7
  44. data/lib/puppet/{network/http → http}/factory.rb +8 -11
  45. data/lib/puppet/{network/http → http}/pool.rb +61 -26
  46. data/lib/puppet/{network/http/session.rb → http/pool_entry.rb} +2 -3
  47. data/lib/puppet/http/proxy.rb +137 -0
  48. data/lib/puppet/http/redirector.rb +4 -12
  49. data/lib/puppet/http/resolver.rb +5 -15
  50. data/lib/puppet/http/resolver/server_list.rb +6 -10
  51. data/lib/puppet/http/resolver/settings.rb +4 -7
  52. data/lib/puppet/http/resolver/srv.rb +7 -11
  53. data/lib/puppet/http/response.rb +36 -54
  54. data/lib/puppet/http/response_converter.rb +24 -0
  55. data/lib/puppet/http/response_net_http.rb +42 -0
  56. data/lib/puppet/http/retry_after_handler.rb +4 -13
  57. data/lib/puppet/http/service.rb +12 -26
  58. data/lib/puppet/http/service/ca.rb +11 -22
  59. data/lib/puppet/http/service/compiler.rb +22 -69
  60. data/lib/puppet/http/service/file_server.rb +18 -27
  61. data/lib/puppet/http/service/puppetserver.rb +26 -12
  62. data/lib/puppet/http/service/report.rb +8 -10
  63. data/lib/puppet/http/session.rb +11 -20
  64. data/lib/puppet/{network/http → http}/site.rb +1 -2
  65. data/lib/puppet/indirector/catalog/rest.rb +2 -4
  66. data/lib/puppet/indirector/fact_search.rb +60 -0
  67. data/lib/puppet/indirector/facts/facter.rb +24 -3
  68. data/lib/puppet/indirector/facts/json.rb +27 -0
  69. data/lib/puppet/indirector/facts/rest.rb +3 -22
  70. data/lib/puppet/indirector/facts/yaml.rb +3 -58
  71. data/lib/puppet/indirector/file_bucket_file/rest.rb +3 -9
  72. data/lib/puppet/indirector/file_content/rest.rb +2 -6
  73. data/lib/puppet/indirector/file_metadata/rest.rb +3 -9
  74. data/lib/puppet/indirector/file_server.rb +1 -8
  75. data/lib/puppet/indirector/generic_http.rb +0 -11
  76. data/lib/puppet/indirector/json.rb +5 -1
  77. data/lib/puppet/indirector/node/json.rb +8 -0
  78. data/lib/puppet/indirector/node/rest.rb +2 -4
  79. data/lib/puppet/indirector/report/json.rb +34 -0
  80. data/lib/puppet/indirector/report/rest.rb +3 -8
  81. data/lib/puppet/indirector/request.rb +0 -101
  82. data/lib/puppet/indirector/rest.rb +12 -263
  83. data/lib/puppet/module_tool/applications.rb +0 -1
  84. data/lib/puppet/network/authconfig.rb +2 -96
  85. data/lib/puppet/network/authorization.rb +13 -35
  86. data/lib/puppet/network/formats.rb +2 -1
  87. data/lib/puppet/network/http.rb +3 -3
  88. data/lib/puppet/network/http/api/indirected_routes.rb +2 -20
  89. data/lib/puppet/network/http/api/master/v3.rb +11 -13
  90. data/lib/puppet/network/http/connection.rb +247 -316
  91. data/lib/puppet/network/http/handler.rb +0 -1
  92. data/lib/puppet/network/http_pool.rb +16 -34
  93. data/lib/puppet/node.rb +1 -30
  94. data/lib/puppet/pal/json_catalog_encoder.rb +4 -0
  95. data/lib/puppet/pal/pal_impl.rb +73 -18
  96. data/lib/puppet/parser/ast/pops_bridge.rb +0 -38
  97. data/lib/puppet/parser/compiler.rb +0 -198
  98. data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +14 -39
  99. data/lib/puppet/parser/resource.rb +0 -69
  100. data/lib/puppet/pops/evaluator/evaluator_impl.rb +22 -8
  101. data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +3 -3
  102. data/lib/puppet/pops/evaluator/runtime3_support.rb +1 -1
  103. data/lib/puppet/pops/issues.rb +0 -5
  104. data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +6 -8
  105. data/lib/puppet/pops/model/ast.pp +0 -42
  106. data/lib/puppet/pops/model/ast.rb +0 -290
  107. data/lib/puppet/pops/model/factory.rb +0 -45
  108. data/lib/puppet/pops/model/model_label_provider.rb +0 -5
  109. data/lib/puppet/pops/model/model_tree_dumper.rb +0 -22
  110. data/lib/puppet/pops/model/pn_transformer.rb +0 -16
  111. data/lib/puppet/pops/parser/egrammar.ra +0 -56
  112. data/lib/puppet/pops/parser/eparser.rb +1520 -1712
  113. data/lib/puppet/pops/parser/lexer2.rb +4 -4
  114. data/lib/puppet/pops/parser/parser_support.rb +0 -5
  115. data/lib/puppet/pops/resource/resource_type_impl.rb +2 -24
  116. data/lib/puppet/pops/types/type_calculator.rb +0 -7
  117. data/lib/puppet/pops/types/type_parser.rb +0 -4
  118. data/lib/puppet/pops/types/types.rb +0 -1
  119. data/lib/puppet/pops/validation/checker4_0.rb +9 -37
  120. data/lib/puppet/pops/validation/tasks_checker.rb +0 -12
  121. data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -2
  122. data/lib/puppet/provider.rb +0 -13
  123. data/lib/puppet/provider/nameservice.rb +0 -18
  124. data/lib/puppet/provider/package/dpkg.rb +0 -10
  125. data/lib/puppet/provider/package/gem.rb +23 -3
  126. data/lib/puppet/provider/package/pip.rb +0 -1
  127. data/lib/puppet/provider/package/pkg.rb +0 -4
  128. data/lib/puppet/provider/package/portage.rb +1 -1
  129. data/lib/puppet/provider/package/puppet_gem.rb +1 -4
  130. data/lib/puppet/provider/service/smf.rb +191 -73
  131. data/lib/puppet/provider/user/directoryservice.rb +0 -10
  132. data/lib/puppet/reference/configuration.rb +2 -0
  133. data/lib/puppet/reference/indirection.rb +1 -1
  134. data/lib/puppet/resource.rb +1 -89
  135. data/lib/puppet/resource/catalog.rb +1 -14
  136. data/lib/puppet/resource/type.rb +3 -119
  137. data/lib/puppet/resource/type_collection.rb +3 -48
  138. data/lib/puppet/runtime.rb +1 -2
  139. data/lib/puppet/settings.rb +45 -33
  140. data/lib/puppet/settings/base_setting.rb +26 -2
  141. data/lib/puppet/settings/integer_setting.rb +17 -0
  142. data/lib/puppet/settings/port_setting.rb +15 -0
  143. data/lib/puppet/settings/priority_setting.rb +5 -4
  144. data/lib/puppet/ssl.rb +10 -6
  145. data/lib/puppet/ssl/base.rb +3 -5
  146. data/lib/puppet/ssl/certificate.rb +0 -6
  147. data/lib/puppet/ssl/certificate_request.rb +1 -12
  148. data/lib/puppet/ssl/certificate_signer.rb +6 -0
  149. data/lib/puppet/ssl/oids.rb +3 -1
  150. data/lib/puppet/ssl/ssl_provider.rb +17 -0
  151. data/lib/puppet/ssl/state_machine.rb +3 -1
  152. data/lib/puppet/ssl/verifier.rb +2 -0
  153. data/lib/puppet/test/test_helper.rb +1 -3
  154. data/lib/puppet/transaction.rb +1 -7
  155. data/lib/puppet/transaction/report.rb +2 -4
  156. data/lib/puppet/type.rb +0 -76
  157. data/lib/puppet/type/file.rb +5 -7
  158. data/lib/puppet/type/file/checksum.rb +1 -1
  159. data/lib/puppet/type/file/source.rb +1 -1
  160. data/lib/puppet/type/filebucket.rb +3 -3
  161. data/lib/puppet/type/package.rb +5 -13
  162. data/lib/puppet/util/execution.rb +0 -11
  163. data/lib/puppet/util/http_proxy.rb +2 -215
  164. data/lib/puppet/util/monkey_patches.rb +0 -46
  165. data/lib/puppet/util/rdoc.rb +0 -7
  166. data/lib/puppet/util/retry_action.rb +1 -1
  167. data/lib/puppet/util/rubygems.rb +5 -1
  168. data/lib/puppet/util/run_mode.rb +9 -1
  169. data/lib/puppet/util/windows.rb +3 -8
  170. data/lib/puppet/util/windows/daemon.rb +360 -0
  171. data/lib/puppet/util/windows/error.rb +1 -0
  172. data/lib/puppet/util/windows/eventlog.rb +4 -9
  173. data/lib/puppet/util/windows/file.rb +8 -242
  174. data/lib/puppet/util/windows/monkey_patches/process.rb +414 -0
  175. data/lib/puppet/util/windows/process.rb +4 -226
  176. data/lib/puppet/util/windows/service.rb +9 -460
  177. data/lib/puppet/util/windows/string.rb +12 -13
  178. data/lib/puppet/util/yaml.rb +0 -22
  179. data/lib/puppet/vendor/require_vendored.rb +0 -1
  180. data/lib/puppet/version.rb +1 -1
  181. data/lib/puppet/x509.rb +5 -1
  182. data/lib/puppet/x509/cert_provider.rb +29 -1
  183. data/locales/puppet.pot +531 -1232
  184. data/man/man5/puppet.conf.5 +37 -97
  185. data/man/man8/puppet-agent.8 +1 -1
  186. data/man/man8/puppet-apply.8 +1 -1
  187. data/man/man8/puppet-catalog.8 +1 -1
  188. data/man/man8/puppet-config.8 +1 -1
  189. data/man/man8/puppet-describe.8 +1 -1
  190. data/man/man8/puppet-device.8 +1 -1
  191. data/man/man8/puppet-doc.8 +1 -1
  192. data/man/man8/puppet-epp.8 +1 -1
  193. data/man/man8/puppet-facts.8 +55 -9
  194. data/man/man8/puppet-filebucket.8 +6 -6
  195. data/man/man8/puppet-generate.8 +1 -1
  196. data/man/man8/puppet-help.8 +1 -1
  197. data/man/man8/puppet-lookup.8 +1 -1
  198. data/man/man8/puppet-module.8 +1 -58
  199. data/man/man8/puppet-node.8 +4 -1
  200. data/man/man8/puppet-parser.8 +1 -1
  201. data/man/man8/puppet-plugin.8 +1 -1
  202. data/man/man8/puppet-report.8 +4 -1
  203. data/man/man8/puppet-resource.8 +1 -1
  204. data/man/man8/puppet-script.8 +1 -1
  205. data/man/man8/puppet-ssl.8 +1 -1
  206. data/man/man8/puppet.8 +2 -2
  207. data/spec/fixtures/unit/provider/service/smf/{svcs.out → svcs_instances.out} +0 -0
  208. data/spec/integration/application/agent_spec.rb +24 -11
  209. data/spec/integration/application/apply_spec.rb +1 -1
  210. data/spec/integration/application/filebucket_spec.rb +16 -16
  211. data/spec/integration/application/help_spec.rb +2 -0
  212. data/spec/integration/application/plugin_spec.rb +23 -1
  213. data/spec/integration/defaults_spec.rb +7 -3
  214. data/spec/integration/environments/setting_hooks_spec.rb +1 -1
  215. data/spec/integration/network/http_pool_spec.rb +3 -21
  216. data/spec/integration/parser/catalog_spec.rb +0 -38
  217. data/spec/integration/parser/node_spec.rb +0 -9
  218. data/spec/integration/parser/pcore_resource_spec.rb +0 -37
  219. data/spec/integration/type/file_spec.rb +5 -4
  220. data/spec/integration/util/windows/monkey_patches/process_spec.rb +231 -0
  221. data/spec/integration/util/windows/security_spec.rb +1 -1
  222. data/spec/lib/puppet_spec/puppetserver.rb +1 -1
  223. data/spec/lib/puppet_spec/settings.rb +7 -1
  224. data/spec/spec_helper.rb +2 -0
  225. data/spec/unit/agent_spec.rb +0 -2
  226. data/spec/unit/application/config_spec.rb +224 -4
  227. data/spec/unit/application/facts_spec.rb +35 -0
  228. data/spec/unit/application/filebucket_spec.rb +41 -39
  229. data/spec/unit/application/ssl_spec.rb +2 -2
  230. data/spec/unit/certificate_factory_spec.rb +1 -1
  231. data/spec/unit/configurer/downloader_spec.rb +6 -2
  232. data/spec/unit/configurer/plugin_handler_spec.rb +56 -18
  233. data/spec/unit/configurer_spec.rb +12 -9
  234. data/spec/unit/context/trusted_information_spec.rb +2 -6
  235. data/spec/unit/defaults_spec.rb +77 -28
  236. data/spec/unit/environments_spec.rb +0 -3
  237. data/spec/unit/face/config_spec.rb +27 -32
  238. data/spec/unit/face/facts_spec.rb +4 -0
  239. data/spec/unit/face/plugin_spec.rb +73 -33
  240. data/spec/unit/file_bucket/file_spec.rb +1 -1
  241. data/spec/unit/file_serving/configuration/parser_spec.rb +14 -18
  242. data/spec/unit/file_serving/configuration_spec.rb +6 -12
  243. data/spec/unit/functions/camelcase_spec.rb +1 -1
  244. data/spec/unit/functions/capitalize_spec.rb +1 -1
  245. data/spec/unit/functions/downcase_spec.rb +1 -1
  246. data/spec/unit/functions/inline_epp_spec.rb +26 -1
  247. data/spec/unit/functions/upcase_spec.rb +1 -1
  248. data/spec/unit/http/client_spec.rb +7 -8
  249. data/spec/unit/{network/resolver_spec.rb → http/dns_spec.rb} +3 -3
  250. data/spec/unit/http/external_client_spec.rb +4 -4
  251. data/spec/unit/{network/http → http}/factory_spec.rb +5 -11
  252. data/spec/unit/{network/http/session_spec.rb → http/pool_entry_spec.rb} +3 -3
  253. data/spec/unit/{network/http → http}/pool_spec.rb +12 -17
  254. data/spec/unit/{util/http_proxy_spec.rb → http/proxy_spec.rb} +2 -69
  255. data/spec/unit/http/resolver_spec.rb +13 -13
  256. data/spec/unit/http/service/compiler_spec.rb +49 -62
  257. data/spec/unit/http/service/file_server_spec.rb +3 -3
  258. data/spec/unit/http/service/puppetserver_spec.rb +34 -4
  259. data/spec/unit/http/service_spec.rb +1 -2
  260. data/spec/unit/http/session_spec.rb +16 -14
  261. data/spec/unit/{network/http → http}/site_spec.rb +3 -3
  262. data/spec/unit/indirector/facts/facter_spec.rb +97 -0
  263. data/spec/unit/indirector/facts/json_spec.rb +255 -0
  264. data/spec/unit/indirector/file_bucket_file/file_spec.rb +5 -3
  265. data/spec/unit/indirector/file_content/rest_spec.rb +0 -4
  266. data/spec/unit/indirector/file_metadata/rest_spec.rb +0 -4
  267. data/spec/unit/indirector/file_server_spec.rb +1 -15
  268. data/spec/unit/indirector/node/json_spec.rb +33 -0
  269. data/spec/{integration/indirector/report/yaml.rb → unit/indirector/report/json_spec.rb} +13 -24
  270. data/spec/unit/indirector/report/rest_spec.rb +2 -17
  271. data/spec/unit/indirector/report/yaml_spec.rb +72 -8
  272. data/spec/unit/indirector/request_spec.rb +0 -264
  273. data/spec/unit/indirector/rest_spec.rb +98 -752
  274. data/spec/unit/network/authconfig_spec.rb +2 -132
  275. data/spec/unit/network/authorization_spec.rb +2 -55
  276. data/spec/unit/network/formats_spec.rb +4 -4
  277. data/spec/unit/network/http/api/indirected_routes_spec.rb +1 -97
  278. data/spec/unit/network/http/api/master/v3_spec.rb +28 -7
  279. data/spec/unit/network/http/api_spec.rb +10 -0
  280. data/spec/unit/network/http/connection_spec.rb +19 -41
  281. data/spec/unit/network/http/handler_spec.rb +0 -6
  282. data/spec/unit/network/http_pool_spec.rb +0 -4
  283. data/spec/unit/node/environment_spec.rb +33 -21
  284. data/spec/unit/node_spec.rb +2 -54
  285. data/spec/unit/parser/functions/create_resources_spec.rb +2 -20
  286. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +4 -7
  287. data/spec/unit/pops/loaders/loaders_spec.rb +6 -21
  288. data/spec/unit/pops/parser/parse_application_spec.rb +4 -22
  289. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +0 -1
  290. data/spec/unit/pops/parser/parse_capabilities_spec.rb +8 -21
  291. data/spec/unit/pops/parser/parse_site_spec.rb +20 -24
  292. data/spec/unit/pops/resource/resource_type_impl_spec.rb +0 -71
  293. data/spec/unit/pops/serialization/to_from_hr_spec.rb +1 -1
  294. data/spec/unit/pops/types/type_calculator_spec.rb +6 -6
  295. data/spec/unit/pops/types/type_factory_spec.rb +1 -1
  296. data/spec/unit/pops/validator/validator_spec.rb +61 -46
  297. data/spec/unit/pops/visitor_spec.rb +1 -1
  298. data/spec/unit/provider/nameservice_spec.rb +0 -57
  299. data/spec/unit/provider/package/dpkg_spec.rb +0 -48
  300. data/spec/unit/provider/package/gem_spec.rb +32 -0
  301. data/spec/unit/provider/package/puppet_gem_spec.rb +3 -2
  302. data/spec/unit/provider/service/smf_spec.rb +401 -165
  303. data/spec/unit/provider/service/windows_spec.rb +0 -1
  304. data/spec/unit/provider_spec.rb +0 -12
  305. data/spec/unit/puppet_pal_catalog_spec.rb +45 -0
  306. data/spec/unit/resource/type_collection_spec.rb +2 -22
  307. data/spec/unit/resource_spec.rb +0 -56
  308. data/spec/unit/settings/http_extra_headers_spec.rb +2 -4
  309. data/spec/unit/settings/integer_setting_spec.rb +42 -0
  310. data/spec/unit/settings/port_setting_spec.rb +31 -0
  311. data/spec/unit/settings/priority_setting_spec.rb +4 -4
  312. data/spec/unit/settings_spec.rb +423 -236
  313. data/spec/unit/ssl/base_spec.rb +36 -3
  314. data/spec/unit/ssl/certificate_request_spec.rb +15 -45
  315. data/spec/unit/ssl/certificate_spec.rb +2 -11
  316. data/spec/unit/ssl/ssl_provider_spec.rb +11 -8
  317. data/spec/unit/ssl/state_machine_spec.rb +0 -1
  318. data/spec/unit/ssl/verifier_spec.rb +0 -21
  319. data/spec/unit/transaction/report_spec.rb +0 -2
  320. data/spec/unit/transaction/resource_harness_spec.rb +2 -2
  321. data/spec/unit/transaction_spec.rb +45 -79
  322. data/spec/unit/type/file/checksum_spec.rb +6 -6
  323. data/spec/unit/type/file/content_spec.rb +1 -1
  324. data/spec/unit/type/file/ensure_spec.rb +1 -1
  325. data/spec/unit/type/file/mode_spec.rb +1 -1
  326. data/spec/unit/type/file/source_spec.rb +0 -1
  327. data/spec/unit/type/file_spec.rb +12 -6
  328. data/spec/unit/type/package_spec.rb +1 -1
  329. data/spec/unit/type_spec.rb +20 -0
  330. data/spec/unit/util/backups_spec.rb +0 -2
  331. data/spec/unit/util/execution_spec.rb +0 -29
  332. data/spec/unit/util/monkey_patches_spec.rb +0 -6
  333. data/spec/unit/util/rubygems_spec.rb +2 -2
  334. data/spec/unit/util/run_mode_spec.rb +21 -121
  335. data/spec/unit/util/windows/string_spec.rb +1 -3
  336. data/spec/unit/util/yaml_spec.rb +0 -54
  337. data/spec/unit/util_spec.rb +0 -18
  338. metadata +50 -176
  339. data/conf/auth.conf +0 -150
  340. data/lib/puppet/application/cert.rb +0 -76
  341. data/lib/puppet/application/key.rb +0 -4
  342. data/lib/puppet/application/man.rb +0 -4
  343. data/lib/puppet/application/status.rb +0 -4
  344. data/lib/puppet/face/key.rb +0 -16
  345. data/lib/puppet/face/man.rb +0 -145
  346. data/lib/puppet/face/module/build.rb +0 -14
  347. data/lib/puppet/face/module/generate.rb +0 -14
  348. data/lib/puppet/face/module/search.rb +0 -103
  349. data/lib/puppet/face/status.rb +0 -51
  350. data/lib/puppet/indirector/certificate/file.rb +0 -9
  351. data/lib/puppet/indirector/certificate/rest.rb +0 -18
  352. data/lib/puppet/indirector/certificate_request/file.rb +0 -9
  353. data/lib/puppet/indirector/certificate_request/memory.rb +0 -7
  354. data/lib/puppet/indirector/certificate_request/rest.rb +0 -11
  355. data/lib/puppet/indirector/file_content/http.rb +0 -22
  356. data/lib/puppet/indirector/key/file.rb +0 -46
  357. data/lib/puppet/indirector/key/memory.rb +0 -7
  358. data/lib/puppet/indirector/ssl_file.rb +0 -162
  359. data/lib/puppet/indirector/status.rb +0 -3
  360. data/lib/puppet/indirector/status/local.rb +0 -12
  361. data/lib/puppet/indirector/status/rest.rb +0 -27
  362. data/lib/puppet/module_tool/applications/searcher.rb +0 -29
  363. data/lib/puppet/network/auth_config_parser.rb +0 -90
  364. data/lib/puppet/network/authstore.rb +0 -283
  365. data/lib/puppet/network/http/api/master/v3/authorization.rb +0 -18
  366. data/lib/puppet/network/http/api/master/v3/environment.rb +0 -88
  367. data/lib/puppet/network/http/base_pool.rb +0 -36
  368. data/lib/puppet/network/http/compression.rb +0 -127
  369. data/lib/puppet/network/http/connection_adapter.rb +0 -184
  370. data/lib/puppet/network/http/nocache_pool.rb +0 -28
  371. data/lib/puppet/network/rest_controller.rb +0 -2
  372. data/lib/puppet/network/rights.rb +0 -210
  373. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +0 -66
  374. data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +0 -22
  375. data/lib/puppet/parser/environment_compiler.rb +0 -202
  376. data/lib/puppet/pops/types/enumeration.rb +0 -16
  377. data/lib/puppet/resource/capability_finder.rb +0 -154
  378. data/lib/puppet/rest/errors.rb +0 -15
  379. data/lib/puppet/rest/response.rb +0 -35
  380. data/lib/puppet/rest/route.rb +0 -85
  381. data/lib/puppet/rest/routes.rb +0 -135
  382. data/lib/puppet/ssl/host.rb +0 -505
  383. data/lib/puppet/ssl/key.rb +0 -61
  384. data/lib/puppet/ssl/validator.rb +0 -61
  385. data/lib/puppet/ssl/validator/default_validator.rb +0 -209
  386. data/lib/puppet/ssl/validator/no_validator.rb +0 -22
  387. data/lib/puppet/ssl/verifier_adapter.rb +0 -58
  388. data/lib/puppet/status.rb +0 -40
  389. data/lib/puppet/util/connection.rb +0 -88
  390. data/lib/puppet/util/ssl.rb +0 -83
  391. data/lib/puppet/util/windows/api_types.rb +0 -309
  392. data/lib/puppet/util/windows/monkey_patches/dir.rb +0 -40
  393. data/lib/puppet/vendor/load_pathspec.rb +0 -1
  394. data/lib/puppet/vendor/pathspec/CHANGELOG.md +0 -2
  395. data/lib/puppet/vendor/pathspec/LICENSE +0 -201
  396. data/lib/puppet/vendor/pathspec/PUPPET_README.md +0 -6
  397. data/lib/puppet/vendor/pathspec/README.md +0 -53
  398. data/lib/puppet/vendor/pathspec/lib/pathspec.rb +0 -122
  399. data/lib/puppet/vendor/pathspec/lib/pathspec/gitignorespec.rb +0 -275
  400. data/lib/puppet/vendor/pathspec/lib/pathspec/regexspec.rb +0 -17
  401. data/lib/puppet/vendor/pathspec/lib/pathspec/spec.rb +0 -14
  402. data/man/man8/puppet-key.8 +0 -126
  403. data/man/man8/puppet-man.8 +0 -76
  404. data/man/man8/puppet-status.8 +0 -108
  405. data/spec/integration/application/config_spec.rb +0 -74
  406. data/spec/integration/network/authconfig_spec.rb +0 -256
  407. data/spec/integration/util/windows/monkey_patches/dir_spec.rb +0 -11
  408. data/spec/unit/application/man_spec.rb +0 -52
  409. data/spec/unit/capability_spec.rb +0 -414
  410. data/spec/unit/face/catalog_spec.rb +0 -6
  411. data/spec/unit/face/key_spec.rb +0 -9
  412. data/spec/unit/face/module/search_spec.rb +0 -231
  413. data/spec/unit/face/module_spec.rb +0 -3
  414. data/spec/unit/face/status_spec.rb +0 -9
  415. data/spec/unit/indirector/certificate/file_spec.rb +0 -14
  416. data/spec/unit/indirector/certificate/rest_spec.rb +0 -61
  417. data/spec/unit/indirector/certificate_request/file_spec.rb +0 -14
  418. data/spec/unit/indirector/certificate_request/rest_spec.rb +0 -25
  419. data/spec/unit/indirector/key/file_spec.rb +0 -79
  420. data/spec/unit/indirector/ssl_file_spec.rb +0 -305
  421. data/spec/unit/indirector/status/local_spec.rb +0 -10
  422. data/spec/unit/indirector/status/rest_spec.rb +0 -50
  423. data/spec/unit/module_tool/applications/searcher_spec.rb +0 -38
  424. data/spec/unit/network/auth_config_parser_spec.rb +0 -115
  425. data/spec/unit/network/authstore_spec.rb +0 -422
  426. data/spec/unit/network/http/api/master/v3/authorization_spec.rb +0 -57
  427. data/spec/unit/network/http/api/master/v3/environment_spec.rb +0 -185
  428. data/spec/unit/network/http/compression_spec.rb +0 -240
  429. data/spec/unit/network/http/nocache_pool_spec.rb +0 -64
  430. data/spec/unit/network/http_spec.rb +0 -9
  431. data/spec/unit/network/rights_spec.rb +0 -439
  432. data/spec/unit/parser/environment_compiler_spec.rb +0 -730
  433. data/spec/unit/pops/types/enumeration_spec.rb +0 -51
  434. data/spec/unit/resource/capability_finder_spec.rb +0 -143
  435. data/spec/unit/rest/route_spec.rb +0 -132
  436. data/spec/unit/ssl/host_spec.rb +0 -650
  437. data/spec/unit/ssl/key_spec.rb +0 -173
  438. data/spec/unit/ssl/validator_spec.rb +0 -278
  439. data/spec/unit/status_spec.rb +0 -45
  440. data/spec/unit/util/ssl_spec.rb +0 -91
@@ -5,11 +5,7 @@ require 'puppet/indirector/rest'
5
5
  class Puppet::Indirector::FileContent::Rest < Puppet::Indirector::REST
6
6
  desc "Retrieve file contents via a REST HTTP interface."
7
7
 
8
- use_srv_service(:fileserver)
9
-
10
8
  def find(request)
11
- return super unless use_http_client?
12
-
13
9
  content = StringIO.new
14
10
  content.binmode
15
11
 
@@ -29,11 +25,11 @@ class Puppet::Indirector::FileContent::Rest < Puppet::Indirector::REST
29
25
  if e.response.code == 404
30
26
  return nil unless request.options[:fail_on_404]
31
27
 
32
- _, body = parse_response(e.response.nethttp)
28
+ _, body = parse_response(e.response)
33
29
  msg = _("Find %{uri} resulted in 404 with the message: %{body}") % { uri: elide(e.response.url.path, 100), body: body }
34
30
  raise Puppet::Error, msg
35
31
  else
36
- raise convert_to_http_error(e.response.nethttp)
32
+ raise convert_to_http_error(e.response)
37
33
  end
38
34
  end
39
35
  end
@@ -5,11 +5,7 @@ require 'puppet/indirector/rest'
5
5
  class Puppet::Indirector::FileMetadata::Rest < Puppet::Indirector::REST
6
6
  desc "Retrieve file metadata via a REST HTTP interface."
7
7
 
8
- use_srv_service(:fileserver)
9
-
10
8
  def find(request)
11
- return super unless use_http_client?
12
-
13
9
  url = URI.parse(Puppet::Util.uri_encode(request.uri))
14
10
  session = Puppet.lookup(:http_session)
15
11
  api = session.route_to(:fileserver, url: url)
@@ -26,17 +22,15 @@ class Puppet::Indirector::FileMetadata::Rest < Puppet::Indirector::REST
26
22
  if e.response.code == 404
27
23
  return nil unless request.options[:fail_on_404]
28
24
 
29
- _, body = parse_response(e.response.nethttp)
25
+ _, body = parse_response(e.response)
30
26
  msg = _("Find %{uri} resulted in 404 with the message: %{body}") % { uri: elide(e.response.url.path, 100), body: body }
31
27
  raise Puppet::Error, msg
32
28
  else
33
- raise convert_to_http_error(e.response.nethttp)
29
+ raise convert_to_http_error(e.response)
34
30
  end
35
31
  end
36
32
 
37
33
  def search(request)
38
- return super unless use_http_client?
39
-
40
34
  url = URI.parse(Puppet::Util.uri_encode(request.uri))
41
35
  session = Puppet.lookup(:http_session)
42
36
  api = session.route_to(:fileserver, url: url)
@@ -56,6 +50,6 @@ class Puppet::Indirector::FileMetadata::Rest < Puppet::Indirector::REST
56
50
  # since it's search, return empty array instead of nil
57
51
  return [] if e.response.code == 404
58
52
 
59
- raise convert_to_http_error(e.response.nethttp)
53
+ raise convert_to_http_error(e.response)
60
54
  end
61
55
  end
@@ -16,14 +16,7 @@ class Puppet::Indirector::FileServer < Puppet::Indirector::Terminus
16
16
  # If we're not serving this mount, then access is denied.
17
17
  return false unless mount
18
18
 
19
- # If there are no auth directives or there is an 'allow *' directive, then
20
- # access is allowed.
21
- if mount.empty? || mount.globalallow?
22
- return true
23
- end
24
-
25
- Puppet.err _("Denying %{method} request for %{desc} on fileserver mount '%{mount_name}'. Use of auth directives for 'fileserver.conf' mount points is no longer supported. Remove these directives and use the 'auth.conf' file instead for access control.") % { method: request.method, desc: request.description, mount_name: mount.name }
26
- return false
19
+ true
27
20
  end
28
21
 
29
22
  # Find our key using the fileserver.
@@ -1,16 +1,5 @@
1
1
  require 'puppet/file_serving/terminus_helper'
2
- require 'puppet/util/http_proxy'
3
2
 
4
3
  class Puppet::Indirector::GenericHttp < Puppet::Indirector::Terminus
5
4
  desc "Retrieve data from a remote HTTP server."
6
-
7
- class <<self
8
- attr_accessor :http_method
9
- end
10
-
11
- def find(request)
12
- uri = URI(request.uri)
13
- method = self.class.http_method
14
- Puppet::Util::HttpProxy.request_with_redirects(uri,method)
15
- end
16
5
  end
@@ -41,12 +41,16 @@ class Puppet::Indirector::JSON < Puppet::Indirector::Terminus
41
41
  raise ArgumentError, _("invalid key")
42
42
  end
43
43
 
44
- base = Puppet.run_mode.server? ? Puppet[:server_datadir] : Puppet[:client_datadir]
44
+ base = data_dir
45
45
  File.join(base, self.class.indirection_name.to_s, name.to_s + ext)
46
46
  end
47
47
 
48
48
  private
49
49
 
50
+ def data_dir()
51
+ Puppet.run_mode.server? ? Puppet[:server_datadir] : Puppet[:client_datadir]
52
+ end
53
+
50
54
  def load_json_from_file(file, key)
51
55
  json = nil
52
56
 
@@ -0,0 +1,8 @@
1
+ require 'puppet/node'
2
+ require 'puppet/indirector/json'
3
+
4
+ class Puppet::Node::Json < Puppet::Indirector::JSON
5
+ desc "Store node information as flat files, serialized using JSON,
6
+ or deserialize stored JSON nodes."
7
+
8
+ end
@@ -6,8 +6,6 @@ class Puppet::Node::Rest < Puppet::Indirector::REST
6
6
  to override its environment."
7
7
 
8
8
  def find(request)
9
- return super unless use_http_client?
10
-
11
9
  session = Puppet.lookup(:http_session)
12
10
  api = session.route_to(:puppet)
13
11
  _, node = api.get_node(
@@ -21,11 +19,11 @@ class Puppet::Node::Rest < Puppet::Indirector::REST
21
19
  if e.response.code == 404
22
20
  return nil unless request.options[:fail_on_404]
23
21
 
24
- _, body = parse_response(e.response.nethttp)
22
+ _, body = parse_response(e.response)
25
23
  msg = _("Find %{uri} resulted in 404 with the message: %{body}") % { uri: elide(e.response.url.path, 100), body: body }
26
24
  raise Puppet::Error, msg
27
25
  else
28
- raise convert_to_http_error(e.response.nethttp)
26
+ raise convert_to_http_error(e.response)
29
27
  end
30
28
  end
31
29
  end
@@ -0,0 +1,34 @@
1
+ require 'puppet/transaction/report'
2
+ require 'puppet/indirector/json'
3
+
4
+ class Puppet::Transaction::Report::Json < Puppet::Indirector::JSON
5
+ include Puppet::Util::SymbolicFileMode
6
+
7
+ desc "Store last report as a flat file, serialized using JSON."
8
+
9
+ # Force report to be saved there
10
+ def path(name,ext='.json')
11
+ Puppet[:lastrunreport]
12
+ end
13
+
14
+ def save(request)
15
+ filename = path(request.key)
16
+ mode = Puppet.settings.setting(:lastrunreport).mode
17
+
18
+ unless valid_symbolic_mode?(mode)
19
+ raise Puppet::DevError, _("replace_file mode: %{mode} is invalid") % { mode: mode }
20
+ end
21
+
22
+ mode = symbolic_mode_to_int(normalize_symbolic_mode(mode))
23
+
24
+ FileUtils.mkdir_p(File.dirname(filename))
25
+
26
+ begin
27
+ Puppet::FileSystem.replace_file(filename, mode) do |fh|
28
+ fh.print JSON.dump(request.instance)
29
+ end
30
+ rescue TypeError => detail
31
+ Puppet.err _("Could not save %{indirection} %{request}: %{detail}") % { indirection: self.name, request: request.key, detail: detail }
32
+ end
33
+ end
34
+ end
@@ -3,13 +3,8 @@ require 'semantic_puppet'
3
3
 
4
4
  class Puppet::Transaction::Report::Rest < Puppet::Indirector::REST
5
5
  desc "Get server report over HTTP via REST."
6
- use_server_setting(:report_server)
7
- use_port_setting(:report_port)
8
- use_srv_service(:report)
9
6
 
10
7
  def save(request)
11
- return super unless use_http_client?
12
-
13
8
  session = Puppet.lookup(:http_session)
14
9
  api = session.route_to(:report)
15
10
  response = api.put_report(
@@ -22,13 +17,13 @@ class Puppet::Transaction::Report::Rest < Puppet::Indirector::REST
22
17
  rescue Puppet::HTTP::ResponseError => e
23
18
  return nil if e.response.code == 404
24
19
 
25
- raise convert_to_http_error(e.response.nethttp)
20
+ raise convert_to_http_error(e.response)
26
21
  end
27
22
 
28
23
  # This is called by the superclass when not using our httpclient.
29
24
  def handle_response(request, response)
30
- if !response.is_a?(Net::HTTPSuccess)
31
- server_version = response[Puppet::Network::HTTP::HEADER_PUPPET_VERSION]
25
+ if !response.success?
26
+ server_version = response[Puppet::Network::HEADER_PUPPET_VERSION]
32
27
  if server_version &&
33
28
  SemanticPuppet::Version.parse(server_version).major < Puppet::Indirector::REST::MAJOR_VERSION_JSON_DEFAULT &&
34
29
  Puppet[:preferred_serialization_format] != 'pson'
@@ -1,7 +1,6 @@
1
1
  require 'cgi'
2
2
  require 'uri'
3
3
  require 'puppet/indirector'
4
- require 'puppet/network/resolver'
5
4
  require 'puppet/util/psych_support'
6
5
  require 'puppet/util/warnings'
7
6
 
@@ -109,47 +108,6 @@ class Puppet::Indirector::Request
109
108
  method == :search
110
109
  end
111
110
 
112
- # Create the query string, if options are present.
113
- def query_string
114
- return "" if options.nil? || options.empty?
115
- encode_params(expand_into_parameters(options.to_a))
116
- end
117
-
118
- def expand_into_parameters(data)
119
- data.inject([]) do |params, key_value|
120
- key, value = key_value
121
-
122
- expanded_value = case value
123
- when Array
124
- value.collect { |val| [key, val] }
125
- else
126
- [key_value]
127
- end
128
-
129
- params.concat(expand_primitive_types_into_parameters(expanded_value))
130
- end
131
- end
132
-
133
- def expand_primitive_types_into_parameters(data)
134
- data.inject([]) do |params, key_value|
135
- key, value = key_value
136
- case value
137
- when nil
138
- params
139
- when true, false, String, Symbol, Integer, Float
140
- params << [key, value]
141
- else
142
- raise ArgumentError, _("HTTP REST queries cannot handle values of type '%{klass}'") % { klass: value.class }
143
- end
144
- end
145
- end
146
-
147
- def encode_params(params)
148
- params.collect do |key, value|
149
- "#{key}=#{Puppet::Util.uri_query_encode(value.to_s)}"
150
- end.join("&")
151
- end
152
-
153
111
  def initialize_from_hash(hash)
154
112
  @indirection_name = hash['indirection_name'].to_sym
155
113
  @method = hash['method'].to_sym
@@ -182,65 +140,6 @@ class Puppet::Indirector::Request
182
140
  return(uri ? uri : "/#{indirection_name}/#{key}")
183
141
  end
184
142
 
185
- def do_request(srv_service=:puppet, default_server=nil, default_port=nil, &block)
186
- # We were given a specific server to use, so just use that one.
187
- # This happens if someone does something like specifying a file
188
- # source using a puppet:// URI with a specific server.
189
- return yield(self) if !self.server.nil?
190
-
191
- if Puppet.settings[:use_srv_records]
192
- # We may want to consider not creating a new resolver here
193
- # every request eventually, to take advantage of the resolver's
194
- # caching behavior.
195
- resolver = Puppet::Network::Resolver.new
196
- resolver.each_srv_record(Puppet.settings[:srv_domain], srv_service) do |srv_server, srv_port|
197
- begin
198
- self.server = srv_server
199
- self.port = srv_port
200
- return yield(self)
201
- rescue SystemCallError => e
202
- Puppet.warning _("Error connecting to %{srv_server}:%{srv_port}: %{message}") % { srv_server: srv_server, srv_port: srv_port, message: e.message }
203
- end
204
- end
205
- end
206
-
207
- if default_server
208
- self.server = default_server
209
- else
210
- self.server = Puppet.lookup(:server) do
211
- primary_server = Puppet.settings[:server_list][0]
212
- if primary_server
213
- #TRANSLATORS 'server_list' is the name of a setting and should not be translated
214
- debug_once _("Selected server from first entry of the `server_list` setting: %{server}") % {server: primary_server[0]}
215
- primary_server[0]
216
- else
217
- #TRANSLATORS 'server' is the name of a setting and should not be translated
218
- debug_once _("Selected server from the `server` setting: %{server}") % {server: Puppet.settings[:server]}
219
- Puppet.settings[:server]
220
- end
221
- end
222
- end
223
-
224
- if default_port
225
- self.port = default_port
226
- else
227
- self.port = Puppet.lookup(:serverport) do
228
- primary_server = Puppet.settings[:server_list][0]
229
- if primary_server
230
- #TRANSLATORS 'server_list' is the name of a setting and should not be translated
231
- debug_once _("Selected port from the first entry of the `server_list` setting: %{port}") % {port: primary_server[1]}
232
- primary_server[1]
233
- else
234
- #TRANSLATORS 'serverport' is the name of a setting and should not be translated
235
- debug_once _("Selected port from the `serverport` setting: %{port}") % {port: Puppet.settings[:serverport]}
236
- Puppet.settings[:serverport]
237
- end
238
- end
239
- end
240
-
241
- return yield(self)
242
- end
243
-
244
143
  def remote?
245
144
  self.node or self.ip
246
145
  end
@@ -1,241 +1,23 @@
1
- require 'net/http'
2
- require 'uri'
3
- require 'puppet/util/json'
4
- require 'puppet/util/connection'
5
- require 'semantic_puppet'
6
-
7
- require 'puppet/network/http'
8
- require 'puppet/network/http_pool'
9
-
10
1
  # Access objects via REST
11
2
  class Puppet::Indirector::REST < Puppet::Indirector::Terminus
12
- include Puppet::Network::HTTP::Compression.module
13
-
14
- IndirectedRoutes = Puppet::Network::HTTP::API::IndirectedRoutes
15
- EXCLUDED_FORMATS = [:yaml, :b64_zlib_yaml, :dot]
16
-
17
- # puppet major version where JSON is enabled by default
18
- MAJOR_VERSION_JSON_DEFAULT = 5
19
-
20
- class << self
21
- attr_reader :server_setting, :port_setting
22
- end
23
-
24
- # Specify the setting that we should use to get the server name.
25
- def self.use_server_setting(setting)
26
- @server_setting = setting
27
- end
28
-
29
- # Specify the setting that we should use to get the port.
30
- def self.use_port_setting(setting)
31
- @port_setting = setting
32
- end
33
-
34
- # Specify the service to use when doing SRV record lookup
35
- def self.use_srv_service(service)
36
- @srv_service = service
37
- end
38
-
39
- def self.srv_service
40
- @srv_service || :puppet
41
- end
42
-
43
- # Select the server to use based on the settings configuration
44
- # for this indirection, taking into account the HA server list.
45
- def self.server
46
- Puppet::Util::Connection.determine_server(server_setting)
47
- end
48
-
49
- # Select the port to use based on the settings configuration
50
- # for this indirection, taking into account the HA server list.
51
- def self.port
52
- Puppet::Util::Connection.determine_port(port_setting, server_setting)
53
- end
54
-
55
- # Should we use puppet's http client to make requests. Will return
56
- # false when running in puppetserver
57
- def use_http_client?
58
- Puppet::Network::HttpPool.http_client_class == Puppet::Network::HTTP::Connection ||
59
- Puppet::Network::HttpPool.http_client_class == Puppet::Network::HTTP::ConnectionAdapter
60
- end
61
-
62
- # Provide appropriate headers.
63
- def headers
64
- # yaml is not allowed on the network
65
- network_formats = model.supported_formats - EXCLUDED_FORMATS
66
- mime_types = network_formats.map { |f| model.get_format(f).mime }
67
- common_headers = {
68
- "Accept" => mime_types.join(', '),
69
- Puppet::Network::HTTP::HEADER_PUPPET_VERSION => Puppet.version
70
- }
71
-
72
- add_accept_encoding(common_headers)
73
- end
74
-
75
- def add_profiling_header(headers)
76
- if (Puppet[:profile])
77
- headers[Puppet::Network::HTTP::HEADER_ENABLE_PROFILING] = "true"
78
- end
79
- headers
80
- end
81
-
82
- def network(request)
83
- ssl_context = Puppet.lookup(:ssl_context)
84
- Puppet::Network::HttpPool.connection(request.server || self.class.server,
85
- request.port || self.class.port,
86
- ssl_context: ssl_context)
87
- end
88
-
89
- def http_get(request, path, headers = nil, *args)
90
- http_request(:get, request, path, add_profiling_header(headers), *args)
91
- end
92
-
93
- def http_post(request, path, data, headers = nil, *args)
94
- http_request(:post, request, path, data, add_profiling_header(headers), *args)
95
- end
96
-
97
- def http_head(request, path, headers = nil, *args)
98
- http_request(:head, request, path, add_profiling_header(headers), *args)
99
- end
100
-
101
- def http_delete(request, path, headers = nil, *args)
102
- http_request(:delete, request, path, add_profiling_header(headers), *args)
103
- end
104
-
105
- def http_put(request, path, data, headers = nil, *args)
106
- http_request(:put, request, path, data, add_profiling_header(headers), *args)
107
- end
108
-
109
- def http_request(method, request, *args)
110
- conn = network(request)
111
- conn.send(method, *args)
112
- end
113
-
114
3
  def find(request)
115
- Puppet.deprecation_warning(_("Puppet::Indirector::Rest#find is deprecated. Use Puppet::HTTP::Client instead."))
116
- uri, body = IndirectedRoutes.request_to_uri_and_body(request)
117
- uri_with_query_string = "#{uri}?#{body}"
118
-
119
- response = do_request(request) do |req|
120
- # WEBrick in Ruby 1.9.1 only supports up to 1024 character lines in an HTTP request
121
- # http://redmine.ruby-lang.org/issues/show/3991
122
- if "GET #{uri_with_query_string} HTTP/1.1\r\n".length > 1024
123
- uri_with_env = "#{uri}?environment=#{request.environment.name}"
124
- http_post(req, uri_with_env, body, headers)
125
- else
126
- http_get(req, uri_with_query_string, headers)
127
- end
128
- end
129
-
130
- if is_http_200?(response)
131
- content_type, body = parse_response(response)
132
- result = deserialize_find(content_type, body)
133
- result.name = request.key if result.respond_to?(:name=)
134
- result
135
-
136
- elsif is_http_404?(response)
137
- return nil unless request.options[:fail_on_404]
138
-
139
- # 404 can get special treatment as the indirector API can not produce a meaningful
140
- # reason to why something is not found - it may not be the thing the user is
141
- # expecting to find that is missing, but something else (like the environment).
142
- # While this way of handling the issue is not perfect, there is at least an error
143
- # that makes a user aware of the reason for the failure.
144
- #
145
- _, body = parse_response(response)
146
- msg = _("Find %{uri} resulted in 404 with the message: %{body}") % { uri: elide(uri_with_query_string, 100), body: body }
147
- raise Puppet::Error, msg
148
- else
149
- nil
150
- end
4
+ raise NotImplementedError
151
5
  end
152
6
 
153
7
  def head(request)
154
- Puppet.deprecation_warning(_("Puppet::Indirector::Rest#head is deprecated. Use Puppet::HTTP::Client instead."))
155
- response = do_request(request) do |req|
156
- http_head(req, IndirectedRoutes.request_to_uri(req), headers)
157
- end
158
-
159
- if is_http_200?(response)
160
- true
161
- else
162
- false
163
- end
8
+ raise NotImplementedError
164
9
  end
165
10
 
166
11
  def search(request)
167
- Puppet.deprecation_warning(_("Puppet::Indirector::Rest#search is deprecated. Use Puppet::HTTP::Client instead."))
168
- response = do_request(request) do |req|
169
- http_get(req, IndirectedRoutes.request_to_uri(req), headers)
170
- end
171
-
172
- if is_http_200?(response)
173
- content_type, body = parse_response(response)
174
- deserialize_search(content_type, body) || []
175
- else
176
- []
177
- end
12
+ raise NotImplementedError
178
13
  end
179
14
 
180
15
  def destroy(request)
181
- Puppet.deprecation_warning(_("Puppet::Indirector::Rest#destroy is deprecated. Use Puppet::HTTP::Client instead."))
182
- raise ArgumentError, _("DELETE does not accept options") unless request.options.empty?
183
-
184
- response = do_request(request) do |req|
185
- http_delete(req, IndirectedRoutes.request_to_uri(req), headers)
186
- end
187
-
188
- if is_http_200?(response)
189
- content_type, body = parse_response(response)
190
- deserialize_destroy(content_type, body)
191
- else
192
- nil
193
- end
16
+ raise NotImplementedError
194
17
  end
195
18
 
196
19
  def save(request)
197
- Puppet.deprecation_warning(_("Puppet::Indirector::Rest#save is deprecated. Use Puppet::HTTP::Client instead."))
198
- raise ArgumentError, _("PUT does not accept options") unless request.options.empty?
199
-
200
- response = do_request(request) do |req|
201
- http_put(req, IndirectedRoutes.request_to_uri(req), req.instance.render, headers.merge({ "Content-Type" => req.instance.mime }))
202
- end
203
-
204
- if is_http_200?(response)
205
- content_type, body = parse_response(response)
206
- deserialize_save(content_type, body)
207
- else
208
- nil
209
- end
210
- end
211
-
212
- # Encapsulate call to request.do_request with the arguments from this class
213
- # Then yield to the code block that was called in
214
- # We certainly could have retained the full request.do_request(...) { |r| ... }
215
- # but this makes the code much cleaner and we only then actually make the call
216
- # to request.do_request from here, thus if we change what we pass or how we
217
- # get it, we only need to change it here.
218
- def do_request(request)
219
- response = request.do_request(self.class.srv_service, self.class.server, self.class.port) { |req| yield(req) }
220
-
221
- handle_response(request, response) if response
222
-
223
- response
224
- end
225
-
226
- def handle_response(request, response)
227
- server_version = response[Puppet::Network::HTTP::HEADER_PUPPET_VERSION]
228
- if server_version
229
- Puppet.lookup(:server_agent_version) do
230
- Puppet.push_context(:server_agent_version => server_version)
231
- end
232
- if SemanticPuppet::Version.parse(server_version).major < MAJOR_VERSION_JSON_DEFAULT &&
233
- Puppet[:preferred_serialization_format] != 'pson'
234
- #TRANSLATORS "PSON" should not be translated
235
- Puppet.warning(_("Downgrading to PSON for future requests"))
236
- Puppet[:preferred_serialization_format] = 'pson'
237
- end
238
- end
20
+ raise NotImplementedError
239
21
  end
240
22
 
241
23
  def validate_key(request)
@@ -244,67 +26,34 @@ class Puppet::Indirector::REST < Puppet::Indirector::Terminus
244
26
 
245
27
  private
246
28
 
247
- def is_http_200?(response)
248
- case response.code
249
- when "404"
250
- false
251
- when /^2/
252
- true
253
- else
254
- # Raise the http error if we didn't get a 'success' of some kind.
255
- raise convert_to_http_error(response)
256
- end
257
- end
258
-
259
- def is_http_404?(response)
260
- response.code == "404"
261
- end
262
-
263
29
  def convert_to_http_error(response)
264
- if response.body.to_s.empty? && response.respond_to?(:message)
265
- returned_message = response.message
30
+ if response.body.to_s.empty? && response.reason
31
+ returned_message = response.reason
266
32
  elsif response['content-type'].is_a?(String)
267
33
  content_type, body = parse_response(response)
268
34
  if content_type =~ /[pj]son/
269
35
  returned_message = Puppet::Util::Json.load(body)["message"]
270
36
  else
271
- returned_message = uncompress_body(response)
37
+ returned_message = response.body
272
38
  end
273
39
  else
274
- returned_message = uncompress_body(response)
40
+ returned_message = response.body
275
41
  end
276
42
 
277
43
  message = _("Error %{code} on SERVER: %{returned_message}") % { code: response.code, returned_message: returned_message }
278
- Net::HTTPError.new(message, response)
44
+ Net::HTTPError.new(message, Puppet::HTTP::ResponseConverter.to_ruby_response(response))
279
45
  end
280
46
 
281
47
  # Returns the content_type, stripping any appended charset, and the
282
- # body, decompressed if necessary (content-encoding is checked inside
283
- # uncompress_body)
48
+ # body, decompressed if necessary
284
49
  def parse_response(response)
285
50
  if response['content-type']
286
- [ response['content-type'].gsub(/\s*;.*$/,''), uncompress_body(response) ]
51
+ [ response['content-type'].gsub(/\s*;.*$/,''), response.body ]
287
52
  else
288
53
  raise _("No content type in http response; cannot parse")
289
54
  end
290
55
  end
291
56
 
292
- def deserialize_find(content_type, body)
293
- model.convert_from(content_type, body)
294
- end
295
-
296
- def deserialize_search(content_type, body)
297
- model.convert_from_multiple(content_type, body)
298
- end
299
-
300
- def deserialize_destroy(content_type, body)
301
- model.convert_from(content_type, body)
302
- end
303
-
304
- def deserialize_save(content_type, body)
305
- nil
306
- end
307
-
308
57
  def elide(string, length)
309
58
  if Puppet::Util::Log.level == :debug || string.length <= length
310
59
  string