puppet 6.20.0-x64-mingw32 → 7.0.0-x64-mingw32

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of puppet might be problematic. Click here for more details.

Files changed (484) hide show
  1. checksums.yaml +4 -4
  2. data/CODEOWNERS +16 -2
  3. data/Gemfile +0 -2
  4. data/Gemfile.lock +18 -24
  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 +1 -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 +178 -108
  15. data/lib/puppet/application/agent.rb +0 -1
  16. data/lib/puppet/application/apply.rb +2 -3
  17. data/lib/puppet/application/device.rb +100 -105
  18. data/lib/puppet/application/filebucket.rb +13 -9
  19. data/lib/puppet/application/script.rb +0 -1
  20. data/lib/puppet/application/ssl.rb +1 -1
  21. data/lib/puppet/application_support.rb +0 -7
  22. data/lib/puppet/configurer.rb +30 -45
  23. data/lib/puppet/configurer/plugin_handler.rb +21 -19
  24. data/lib/puppet/defaults.rb +97 -167
  25. data/lib/puppet/environments.rb +59 -58
  26. data/lib/puppet/face/facts.rb +51 -51
  27. data/lib/puppet/face/help.rb +1 -1
  28. data/lib/puppet/face/plugin.rb +5 -8
  29. data/lib/puppet/ffi/windows.rb +12 -0
  30. data/lib/puppet/ffi/windows/api_types.rb +311 -0
  31. data/lib/puppet/ffi/windows/constants.rb +404 -0
  32. data/lib/puppet/ffi/windows/functions.rb +628 -0
  33. data/lib/puppet/ffi/windows/structs.rb +338 -0
  34. data/lib/puppet/file_serving/configuration.rb +0 -5
  35. data/lib/puppet/file_serving/configuration/parser.rb +3 -32
  36. data/lib/puppet/file_serving/http_metadata.rb +1 -1
  37. data/lib/puppet/file_serving/mount.rb +1 -2
  38. data/lib/puppet/forge/repository.rb +0 -1
  39. data/lib/puppet/generate/models/type/type.rb +4 -1
  40. data/lib/puppet/http.rb +22 -13
  41. data/lib/puppet/http/client.rb +164 -114
  42. data/lib/puppet/{network/resolver.rb → http/dns.rb} +2 -2
  43. data/lib/puppet/http/errors.rb +16 -0
  44. data/lib/puppet/http/external_client.rb +5 -7
  45. data/lib/puppet/{network/http → http}/factory.rb +8 -11
  46. data/lib/puppet/{network/http → http}/pool.rb +61 -26
  47. data/lib/puppet/{network/http/session.rb → http/pool_entry.rb} +2 -3
  48. data/lib/puppet/http/proxy.rb +137 -0
  49. data/lib/puppet/http/redirector.rb +4 -12
  50. data/lib/puppet/http/resolver.rb +5 -15
  51. data/lib/puppet/http/resolver/server_list.rb +6 -10
  52. data/lib/puppet/http/resolver/settings.rb +4 -7
  53. data/lib/puppet/http/resolver/srv.rb +7 -11
  54. data/lib/puppet/http/response.rb +36 -54
  55. data/lib/puppet/http/response_converter.rb +24 -0
  56. data/lib/puppet/http/response_net_http.rb +42 -0
  57. data/lib/puppet/http/retry_after_handler.rb +4 -13
  58. data/lib/puppet/http/service.rb +12 -26
  59. data/lib/puppet/http/service/ca.rb +11 -22
  60. data/lib/puppet/http/service/compiler.rb +22 -69
  61. data/lib/puppet/http/service/file_server.rb +18 -27
  62. data/lib/puppet/http/service/puppetserver.rb +26 -12
  63. data/lib/puppet/http/service/report.rb +8 -10
  64. data/lib/puppet/http/session.rb +11 -20
  65. data/lib/puppet/{network/http → http}/site.rb +1 -2
  66. data/lib/puppet/indirector/catalog/rest.rb +2 -4
  67. data/lib/puppet/indirector/facts/facter.rb +24 -3
  68. data/lib/puppet/indirector/facts/rest.rb +3 -22
  69. data/lib/puppet/indirector/file_bucket_file/rest.rb +3 -9
  70. data/lib/puppet/indirector/file_content/rest.rb +2 -6
  71. data/lib/puppet/indirector/file_metadata/rest.rb +3 -9
  72. data/lib/puppet/indirector/file_server.rb +1 -8
  73. data/lib/puppet/indirector/generic_http.rb +0 -11
  74. data/lib/puppet/indirector/node/rest.rb +2 -4
  75. data/lib/puppet/indirector/report/rest.rb +3 -8
  76. data/lib/puppet/indirector/request.rb +0 -101
  77. data/lib/puppet/indirector/rest.rb +12 -263
  78. data/lib/puppet/module_tool/applications.rb +0 -1
  79. data/lib/puppet/module_tool/applications/installer.rb +2 -48
  80. data/lib/puppet/module_tool/errors/shared.rb +2 -17
  81. data/lib/puppet/network/authconfig.rb +2 -96
  82. data/lib/puppet/network/authorization.rb +13 -35
  83. data/lib/puppet/network/http.rb +3 -3
  84. data/lib/puppet/network/http/api/indirected_routes.rb +2 -20
  85. data/lib/puppet/network/http/api/master/v3.rb +11 -13
  86. data/lib/puppet/network/http/connection.rb +247 -316
  87. data/lib/puppet/network/http/handler.rb +0 -1
  88. data/lib/puppet/network/http_pool.rb +16 -34
  89. data/lib/puppet/node.rb +1 -30
  90. data/lib/puppet/pal/json_catalog_encoder.rb +4 -0
  91. data/lib/puppet/pal/pal_impl.rb +3 -1
  92. data/lib/puppet/parser/ast/leaf.rb +2 -3
  93. data/lib/puppet/parser/ast/pops_bridge.rb +0 -38
  94. data/lib/puppet/parser/compiler.rb +0 -198
  95. data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +14 -39
  96. data/lib/puppet/parser/resource.rb +0 -69
  97. data/lib/puppet/parser/templatewrapper.rb +1 -1
  98. data/lib/puppet/pops/evaluator/deferred_resolver.rb +3 -5
  99. data/lib/puppet/pops/evaluator/evaluator_impl.rb +0 -5
  100. data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +3 -3
  101. data/lib/puppet/pops/evaluator/runtime3_support.rb +1 -1
  102. data/lib/puppet/pops/issues.rb +0 -5
  103. data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +6 -8
  104. data/lib/puppet/pops/model/ast.pp +0 -42
  105. data/lib/puppet/pops/model/ast.rb +0 -290
  106. data/lib/puppet/pops/model/ast_transformer.rb +1 -1
  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/apt.rb +0 -4
  125. data/lib/puppet/provider/package/dpkg.rb +0 -10
  126. data/lib/puppet/provider/package/gem.rb +23 -3
  127. data/lib/puppet/provider/package/pip.rb +0 -1
  128. data/lib/puppet/provider/package/pkg.rb +0 -4
  129. data/lib/puppet/provider/package/portage.rb +1 -1
  130. data/lib/puppet/provider/package/puppet_gem.rb +1 -4
  131. data/lib/puppet/provider/service/smf.rb +191 -73
  132. data/lib/puppet/provider/user/aix.rb +2 -2
  133. data/lib/puppet/provider/user/directoryservice.rb +0 -10
  134. data/lib/puppet/reference/configuration.rb +7 -6
  135. data/lib/puppet/reference/indirection.rb +1 -1
  136. data/lib/puppet/resource.rb +1 -89
  137. data/lib/puppet/resource/catalog.rb +1 -14
  138. data/lib/puppet/resource/type.rb +3 -119
  139. data/lib/puppet/resource/type_collection.rb +3 -48
  140. data/lib/puppet/runtime.rb +1 -2
  141. data/lib/puppet/settings.rb +73 -66
  142. data/lib/puppet/settings/integer_setting.rb +17 -0
  143. data/lib/puppet/settings/port_setting.rb +15 -0
  144. data/lib/puppet/settings/priority_setting.rb +5 -4
  145. data/lib/puppet/ssl.rb +10 -6
  146. data/lib/puppet/ssl/base.rb +3 -5
  147. data/lib/puppet/ssl/certificate.rb +0 -6
  148. data/lib/puppet/ssl/certificate_request.rb +1 -12
  149. data/lib/puppet/ssl/certificate_signer.rb +6 -0
  150. data/lib/puppet/ssl/oids.rb +3 -1
  151. data/lib/puppet/ssl/ssl_provider.rb +17 -0
  152. data/lib/puppet/ssl/state_machine.rb +3 -1
  153. data/lib/puppet/ssl/verifier.rb +2 -0
  154. data/lib/puppet/test/test_helper.rb +1 -3
  155. data/lib/puppet/transaction.rb +1 -7
  156. data/lib/puppet/transaction/report.rb +2 -4
  157. data/lib/puppet/type.rb +0 -76
  158. data/lib/puppet/type/file.rb +5 -7
  159. data/lib/puppet/type/file/checksum.rb +1 -1
  160. data/lib/puppet/type/file/source.rb +1 -1
  161. data/lib/puppet/type/filebucket.rb +3 -3
  162. data/lib/puppet/type/package.rb +5 -13
  163. data/lib/puppet/util/autoload.rb +8 -1
  164. data/lib/puppet/util/execution.rb +0 -11
  165. data/lib/puppet/util/http_proxy.rb +2 -215
  166. data/lib/puppet/util/monkey_patches.rb +0 -46
  167. data/lib/puppet/util/posix.rb +5 -54
  168. data/lib/puppet/util/rdoc.rb +0 -7
  169. data/lib/puppet/util/retry_action.rb +1 -1
  170. data/lib/puppet/util/run_mode.rb +9 -1
  171. data/lib/puppet/util/windows.rb +3 -8
  172. data/lib/puppet/util/windows/daemon.rb +360 -0
  173. data/lib/puppet/util/windows/error.rb +1 -0
  174. data/lib/puppet/util/windows/eventlog.rb +4 -9
  175. data/lib/puppet/util/windows/file.rb +8 -242
  176. data/lib/puppet/util/windows/monkey_patches/process.rb +414 -0
  177. data/lib/puppet/util/windows/process.rb +4 -226
  178. data/lib/puppet/util/windows/service.rb +9 -460
  179. data/lib/puppet/util/windows/string.rb +12 -13
  180. data/lib/puppet/util/yaml.rb +0 -22
  181. data/lib/puppet/vendor/require_vendored.rb +0 -1
  182. data/lib/puppet/version.rb +1 -1
  183. data/lib/puppet/x509.rb +5 -1
  184. data/lib/puppet/x509/cert_provider.rb +29 -1
  185. data/locales/puppet.pot +587 -1312
  186. data/man/man5/puppet.conf.5 +39 -99
  187. data/man/man8/puppet-agent.8 +2 -2
  188. data/man/man8/puppet-apply.8 +2 -2
  189. data/man/man8/puppet-catalog.8 +1 -1
  190. data/man/man8/puppet-config.8 +1 -1
  191. data/man/man8/puppet-describe.8 +1 -1
  192. data/man/man8/puppet-device.8 +2 -2
  193. data/man/man8/puppet-doc.8 +1 -1
  194. data/man/man8/puppet-epp.8 +1 -1
  195. data/man/man8/puppet-facts.8 +51 -36
  196. data/man/man8/puppet-filebucket.8 +4 -4
  197. data/man/man8/puppet-generate.8 +1 -1
  198. data/man/man8/puppet-help.8 +1 -1
  199. data/man/man8/puppet-lookup.8 +1 -1
  200. data/man/man8/puppet-module.8 +1 -58
  201. data/man/man8/puppet-node.8 +1 -1
  202. data/man/man8/puppet-parser.8 +1 -1
  203. data/man/man8/puppet-plugin.8 +1 -1
  204. data/man/man8/puppet-report.8 +1 -1
  205. data/man/man8/puppet-resource.8 +1 -1
  206. data/man/man8/puppet-script.8 +2 -2
  207. data/man/man8/puppet-ssl.8 +1 -1
  208. data/man/man8/puppet.8 +2 -2
  209. data/spec/fixtures/unit/provider/service/smf/{svcs.out → svcs_instances.out} +0 -0
  210. data/spec/fixtures/unit/provider/user/aix/aix_passwd_file.out +0 -4
  211. data/spec/integration/application/agent_spec.rb +27 -138
  212. data/spec/integration/application/apply_spec.rb +1 -20
  213. data/spec/integration/application/filebucket_spec.rb +16 -16
  214. data/spec/integration/application/help_spec.rb +2 -0
  215. data/spec/integration/application/plugin_spec.rb +23 -1
  216. data/spec/integration/defaults_spec.rb +14 -3
  217. data/spec/integration/network/http_pool_spec.rb +3 -21
  218. data/spec/integration/parser/catalog_spec.rb +0 -38
  219. data/spec/integration/parser/node_spec.rb +0 -9
  220. data/spec/integration/parser/pcore_resource_spec.rb +0 -37
  221. data/spec/integration/resource/type_collection_spec.rb +6 -2
  222. data/spec/integration/transaction_spec.rb +9 -4
  223. data/spec/integration/type/file_spec.rb +5 -4
  224. data/spec/integration/util/windows/adsi_spec.rb +1 -3
  225. data/spec/integration/util/windows/monkey_patches/process_spec.rb +231 -0
  226. data/spec/integration/util/windows/registry_spec.rb +10 -0
  227. data/spec/integration/util/windows/security_spec.rb +1 -1
  228. data/spec/lib/puppet_spec/puppetserver.rb +1 -1
  229. data/spec/lib/puppet_spec/settings.rb +1 -0
  230. data/spec/spec_helper.rb +6 -1
  231. data/spec/unit/agent_spec.rb +6 -10
  232. data/spec/unit/application/agent_spec.rb +1 -0
  233. data/spec/unit/application/facts_spec.rb +35 -0
  234. data/spec/unit/application/filebucket_spec.rb +43 -39
  235. data/spec/unit/application/ssl_spec.rb +2 -2
  236. data/spec/unit/application_spec.rb +9 -51
  237. data/spec/unit/certificate_factory_spec.rb +1 -1
  238. data/spec/unit/configurer/downloader_spec.rb +6 -2
  239. data/spec/unit/configurer/plugin_handler_spec.rb +56 -18
  240. data/spec/unit/configurer_spec.rb +12 -9
  241. data/spec/unit/confine/feature_spec.rb +1 -1
  242. data/spec/unit/confine_spec.rb +2 -8
  243. data/spec/unit/context/trusted_information_spec.rb +2 -6
  244. data/spec/unit/defaults_spec.rb +72 -42
  245. data/spec/unit/environments_spec.rb +19 -99
  246. data/spec/unit/face/facts_spec.rb +4 -0
  247. data/spec/unit/face/node_spec.rb +11 -0
  248. data/spec/unit/face/plugin_spec.rb +73 -33
  249. data/spec/unit/file_bucket/file_spec.rb +1 -1
  250. data/spec/unit/file_serving/configuration/parser_spec.rb +15 -18
  251. data/spec/unit/file_serving/configuration_spec.rb +6 -12
  252. data/spec/unit/file_serving/metadata_spec.rb +3 -3
  253. data/spec/unit/file_serving/terminus_helper_spec.rb +4 -11
  254. data/spec/unit/forge/module_release_spec.rb +7 -2
  255. data/spec/unit/functions/camelcase_spec.rb +1 -1
  256. data/spec/unit/functions/capitalize_spec.rb +1 -1
  257. data/spec/unit/functions/downcase_spec.rb +1 -1
  258. data/spec/unit/functions/upcase_spec.rb +1 -1
  259. data/spec/unit/http/client_spec.rb +7 -8
  260. data/spec/unit/{network/resolver_spec.rb → http/dns_spec.rb} +3 -3
  261. data/spec/unit/http/external_client_spec.rb +4 -4
  262. data/spec/unit/{network/http → http}/factory_spec.rb +5 -11
  263. data/spec/unit/{network/http/session_spec.rb → http/pool_entry_spec.rb} +3 -3
  264. data/spec/unit/{network/http → http}/pool_spec.rb +12 -17
  265. data/spec/unit/{util/http_proxy_spec.rb → http/proxy_spec.rb} +2 -69
  266. data/spec/unit/http/resolver_spec.rb +13 -13
  267. data/spec/unit/http/service/compiler_spec.rb +0 -62
  268. data/spec/unit/http/service/file_server_spec.rb +3 -3
  269. data/spec/unit/http/service/puppetserver_spec.rb +34 -4
  270. data/spec/unit/http/service_spec.rb +0 -1
  271. data/spec/unit/http/session_spec.rb +16 -14
  272. data/spec/unit/{network/http → http}/site_spec.rb +3 -3
  273. data/spec/unit/indirector/face_spec.rb +1 -0
  274. data/spec/unit/indirector/facts/facter_spec.rb +98 -0
  275. data/spec/unit/indirector/file_bucket_file/file_spec.rb +5 -3
  276. data/spec/unit/indirector/file_bucket_file/selector_spec.rb +8 -26
  277. data/spec/unit/indirector/file_content/rest_spec.rb +0 -4
  278. data/spec/unit/indirector/file_metadata/rest_spec.rb +0 -4
  279. data/spec/unit/indirector/file_server_spec.rb +1 -15
  280. data/spec/unit/indirector/indirection_spec.rb +12 -8
  281. data/spec/unit/indirector/report/rest_spec.rb +2 -17
  282. data/spec/unit/indirector/request_spec.rb +0 -264
  283. data/spec/unit/indirector/rest_spec.rb +98 -752
  284. data/spec/unit/indirector_spec.rb +2 -2
  285. data/spec/unit/module_tool/applications/installer_spec.rb +0 -66
  286. data/spec/unit/network/authconfig_spec.rb +2 -129
  287. data/spec/unit/network/authorization_spec.rb +2 -55
  288. data/spec/unit/network/formats_spec.rb +4 -4
  289. data/spec/unit/network/http/api/indirected_routes_spec.rb +5 -92
  290. data/spec/unit/network/http/api/master/v3_spec.rb +28 -7
  291. data/spec/unit/network/http/api_spec.rb +10 -0
  292. data/spec/unit/network/http/connection_spec.rb +19 -41
  293. data/spec/unit/network/http/handler_spec.rb +0 -1
  294. data/spec/unit/network/http_pool_spec.rb +0 -4
  295. data/spec/unit/node/environment_spec.rb +33 -21
  296. data/spec/unit/node_spec.rb +2 -54
  297. data/spec/unit/parser/compiler_spec.rb +19 -3
  298. data/spec/unit/parser/functions/create_resources_spec.rb +2 -20
  299. data/spec/unit/parser/resource_spec.rb +8 -14
  300. data/spec/unit/parser/templatewrapper_spec.rb +3 -4
  301. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +4 -7
  302. data/spec/unit/pops/loaders/loaders_spec.rb +6 -21
  303. data/spec/unit/pops/parser/parse_application_spec.rb +4 -22
  304. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +0 -1
  305. data/spec/unit/pops/parser/parse_capabilities_spec.rb +8 -21
  306. data/spec/unit/pops/parser/parse_site_spec.rb +20 -24
  307. data/spec/unit/pops/resource/resource_type_impl_spec.rb +0 -71
  308. data/spec/unit/pops/serialization/to_from_hr_spec.rb +1 -1
  309. data/spec/unit/pops/types/type_calculator_spec.rb +6 -6
  310. data/spec/unit/pops/types/type_factory_spec.rb +1 -1
  311. data/spec/unit/pops/validator/validator_spec.rb +61 -46
  312. data/spec/unit/pops/visitor_spec.rb +1 -1
  313. data/spec/unit/property_spec.rb +0 -1
  314. data/spec/unit/provider/nameservice_spec.rb +64 -122
  315. data/spec/unit/provider/package/apt_spec.rb +8 -4
  316. data/spec/unit/provider/package/base_spec.rb +5 -6
  317. data/spec/unit/provider/package/dpkg_spec.rb +0 -48
  318. data/spec/unit/provider/package/gem_spec.rb +32 -0
  319. data/spec/unit/provider/package/pacman_spec.rb +12 -18
  320. data/spec/unit/provider/package/pip_spec.rb +11 -6
  321. data/spec/unit/provider/package/pkgdmg_spec.rb +4 -0
  322. data/spec/unit/provider/package/puppet_gem_spec.rb +3 -2
  323. data/spec/unit/provider/service/smf_spec.rb +401 -165
  324. data/spec/unit/provider/service/windows_spec.rb +0 -1
  325. data/spec/unit/provider/user/aix_spec.rb +0 -5
  326. data/spec/unit/provider/user/hpux_spec.rb +1 -1
  327. data/spec/unit/provider/user/pw_spec.rb +0 -2
  328. data/spec/unit/provider/user/useradd_spec.rb +0 -1
  329. data/spec/unit/provider_spec.rb +8 -18
  330. data/spec/unit/resource/type_collection_spec.rb +2 -22
  331. data/spec/unit/resource/type_spec.rb +1 -1
  332. data/spec/unit/resource_spec.rb +10 -67
  333. data/spec/unit/settings/http_extra_headers_spec.rb +2 -4
  334. data/spec/unit/settings/integer_setting_spec.rb +42 -0
  335. data/spec/unit/settings/port_setting_spec.rb +31 -0
  336. data/spec/unit/settings/priority_setting_spec.rb +4 -4
  337. data/spec/unit/settings_spec.rb +23 -13
  338. data/spec/unit/ssl/base_spec.rb +37 -3
  339. data/spec/unit/ssl/certificate_request_spec.rb +15 -45
  340. data/spec/unit/ssl/certificate_spec.rb +2 -11
  341. data/spec/unit/ssl/ssl_provider_spec.rb +2 -5
  342. data/spec/unit/ssl/state_machine_spec.rb +0 -1
  343. data/spec/unit/ssl/verifier_spec.rb +0 -21
  344. data/spec/unit/transaction/additional_resource_generator_spec.rb +7 -3
  345. data/spec/unit/transaction/event_manager_spec.rb +11 -14
  346. data/spec/unit/transaction/report_spec.rb +0 -2
  347. data/spec/unit/transaction/resource_harness_spec.rb +2 -2
  348. data/spec/unit/transaction_spec.rb +48 -91
  349. data/spec/unit/type/file/checksum_spec.rb +6 -6
  350. data/spec/unit/type/file/content_spec.rb +2 -1
  351. data/spec/unit/type/file/ensure_spec.rb +1 -1
  352. data/spec/unit/type/file/mode_spec.rb +1 -1
  353. data/spec/unit/type/file/selinux_spec.rb +2 -0
  354. data/spec/unit/type/file/source_spec.rb +0 -1
  355. data/spec/unit/type/file_spec.rb +18 -6
  356. data/spec/unit/type/group_spec.rb +6 -13
  357. data/spec/unit/type/package_spec.rb +1 -1
  358. data/spec/unit/type/resources_spec.rb +7 -7
  359. data/spec/unit/type/service_spec.rb +1 -1
  360. data/spec/unit/type/tidy_spec.rb +1 -0
  361. data/spec/unit/type_spec.rb +22 -2
  362. data/spec/unit/util/at_fork_spec.rb +2 -2
  363. data/spec/unit/util/autoload_spec.rb +1 -5
  364. data/spec/unit/util/backups_spec.rb +2 -3
  365. data/spec/unit/util/execution_spec.rb +11 -44
  366. data/spec/unit/util/inifile_spec.rb +14 -6
  367. data/spec/unit/util/log_spec.rb +7 -8
  368. data/spec/unit/util/logging_spec.rb +3 -3
  369. data/spec/unit/util/monkey_patches_spec.rb +0 -6
  370. data/spec/unit/util/posix_spec.rb +15 -363
  371. data/spec/unit/util/run_mode_spec.rb +21 -121
  372. data/spec/unit/util/selinux_spec.rb +52 -76
  373. data/spec/unit/util/storage_spec.rb +1 -3
  374. data/spec/unit/util/suidmanager_spec.rb +41 -44
  375. data/spec/unit/util/windows/string_spec.rb +1 -3
  376. data/spec/unit/util/yaml_spec.rb +0 -54
  377. data/spec/unit/util_spec.rb +6 -31
  378. metadata +40 -233
  379. data/conf/auth.conf +0 -150
  380. data/lib/puppet/application/cert.rb +0 -76
  381. data/lib/puppet/application/key.rb +0 -4
  382. data/lib/puppet/application/man.rb +0 -4
  383. data/lib/puppet/application/status.rb +0 -4
  384. data/lib/puppet/face/key.rb +0 -16
  385. data/lib/puppet/face/man.rb +0 -145
  386. data/lib/puppet/face/module/build.rb +0 -14
  387. data/lib/puppet/face/module/generate.rb +0 -14
  388. data/lib/puppet/face/module/search.rb +0 -103
  389. data/lib/puppet/face/status.rb +0 -51
  390. data/lib/puppet/ffi/posix.rb +0 -10
  391. data/lib/puppet/ffi/posix/constants.rb +0 -14
  392. data/lib/puppet/ffi/posix/functions.rb +0 -24
  393. data/lib/puppet/indirector/certificate/file.rb +0 -9
  394. data/lib/puppet/indirector/certificate/rest.rb +0 -18
  395. data/lib/puppet/indirector/certificate_request/file.rb +0 -9
  396. data/lib/puppet/indirector/certificate_request/memory.rb +0 -7
  397. data/lib/puppet/indirector/certificate_request/rest.rb +0 -11
  398. data/lib/puppet/indirector/file_content/http.rb +0 -22
  399. data/lib/puppet/indirector/key/file.rb +0 -46
  400. data/lib/puppet/indirector/key/memory.rb +0 -7
  401. data/lib/puppet/indirector/ssl_file.rb +0 -162
  402. data/lib/puppet/indirector/status.rb +0 -3
  403. data/lib/puppet/indirector/status/local.rb +0 -12
  404. data/lib/puppet/indirector/status/rest.rb +0 -27
  405. data/lib/puppet/module_tool/applications/searcher.rb +0 -29
  406. data/lib/puppet/network/auth_config_parser.rb +0 -90
  407. data/lib/puppet/network/authstore.rb +0 -283
  408. data/lib/puppet/network/http/api/master/v3/authorization.rb +0 -18
  409. data/lib/puppet/network/http/api/master/v3/environment.rb +0 -88
  410. data/lib/puppet/network/http/base_pool.rb +0 -36
  411. data/lib/puppet/network/http/compression.rb +0 -127
  412. data/lib/puppet/network/http/connection_adapter.rb +0 -184
  413. data/lib/puppet/network/http/nocache_pool.rb +0 -28
  414. data/lib/puppet/network/rest_controller.rb +0 -2
  415. data/lib/puppet/network/rights.rb +0 -210
  416. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +0 -66
  417. data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +0 -22
  418. data/lib/puppet/parser/environment_compiler.rb +0 -202
  419. data/lib/puppet/pops/types/enumeration.rb +0 -16
  420. data/lib/puppet/resource/capability_finder.rb +0 -154
  421. data/lib/puppet/rest/errors.rb +0 -15
  422. data/lib/puppet/rest/response.rb +0 -35
  423. data/lib/puppet/rest/route.rb +0 -85
  424. data/lib/puppet/rest/routes.rb +0 -135
  425. data/lib/puppet/settings/alias_setting.rb +0 -37
  426. data/lib/puppet/ssl/host.rb +0 -505
  427. data/lib/puppet/ssl/key.rb +0 -61
  428. data/lib/puppet/ssl/validator.rb +0 -61
  429. data/lib/puppet/ssl/validator/default_validator.rb +0 -209
  430. data/lib/puppet/ssl/validator/no_validator.rb +0 -22
  431. data/lib/puppet/ssl/verifier_adapter.rb +0 -58
  432. data/lib/puppet/status.rb +0 -40
  433. data/lib/puppet/util/connection.rb +0 -88
  434. data/lib/puppet/util/fact_dif.rb +0 -62
  435. data/lib/puppet/util/ssl.rb +0 -83
  436. data/lib/puppet/util/windows/api_types.rb +0 -309
  437. data/lib/puppet/util/windows/monkey_patches/dir.rb +0 -40
  438. data/lib/puppet/vendor/load_pathspec.rb +0 -1
  439. data/lib/puppet/vendor/pathspec/CHANGELOG.md +0 -2
  440. data/lib/puppet/vendor/pathspec/LICENSE +0 -201
  441. data/lib/puppet/vendor/pathspec/PUPPET_README.md +0 -6
  442. data/lib/puppet/vendor/pathspec/README.md +0 -53
  443. data/lib/puppet/vendor/pathspec/lib/pathspec.rb +0 -122
  444. data/lib/puppet/vendor/pathspec/lib/pathspec/gitignorespec.rb +0 -275
  445. data/lib/puppet/vendor/pathspec/lib/pathspec/regexspec.rb +0 -17
  446. data/lib/puppet/vendor/pathspec/lib/pathspec/spec.rb +0 -14
  447. data/man/man8/puppet-key.8 +0 -126
  448. data/man/man8/puppet-man.8 +0 -76
  449. data/man/man8/puppet-status.8 +0 -108
  450. data/spec/fixtures/integration/application/agent/cached_deferred_catalog.json +0 -91
  451. data/spec/integration/network/authconfig_spec.rb +0 -256
  452. data/spec/integration/util/windows/monkey_patches/dir_spec.rb +0 -11
  453. data/spec/unit/application/man_spec.rb +0 -52
  454. data/spec/unit/capability_spec.rb +0 -414
  455. data/spec/unit/face/key_spec.rb +0 -9
  456. data/spec/unit/face/module/search_spec.rb +0 -231
  457. data/spec/unit/face/status_spec.rb +0 -9
  458. data/spec/unit/indirector/certificate/file_spec.rb +0 -14
  459. data/spec/unit/indirector/certificate/rest_spec.rb +0 -61
  460. data/spec/unit/indirector/certificate_request/file_spec.rb +0 -14
  461. data/spec/unit/indirector/certificate_request/rest_spec.rb +0 -25
  462. data/spec/unit/indirector/key/file_spec.rb +0 -78
  463. data/spec/unit/indirector/ssl_file_spec.rb +0 -305
  464. data/spec/unit/indirector/status/local_spec.rb +0 -10
  465. data/spec/unit/indirector/status/rest_spec.rb +0 -50
  466. data/spec/unit/module_tool/applications/searcher_spec.rb +0 -38
  467. data/spec/unit/network/auth_config_parser_spec.rb +0 -115
  468. data/spec/unit/network/authstore_spec.rb +0 -422
  469. data/spec/unit/network/http/api/master/v3/authorization_spec.rb +0 -57
  470. data/spec/unit/network/http/api/master/v3/environment_spec.rb +0 -185
  471. data/spec/unit/network/http/compression_spec.rb +0 -240
  472. data/spec/unit/network/http/nocache_pool_spec.rb +0 -64
  473. data/spec/unit/network/http_spec.rb +0 -9
  474. data/spec/unit/network/rights_spec.rb +0 -439
  475. data/spec/unit/parser/environment_compiler_spec.rb +0 -730
  476. data/spec/unit/pops/evaluator/deferred_resolver_spec.rb +0 -20
  477. data/spec/unit/pops/types/enumeration_spec.rb +0 -51
  478. data/spec/unit/resource/capability_finder_spec.rb +0 -148
  479. data/spec/unit/rest/route_spec.rb +0 -132
  480. data/spec/unit/ssl/host_spec.rb +0 -645
  481. data/spec/unit/ssl/key_spec.rb +0 -173
  482. data/spec/unit/ssl/validator_spec.rb +0 -278
  483. data/spec/unit/status_spec.rb +0 -45
  484. data/spec/unit/util/ssl_spec.rb +0 -91
@@ -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
@@ -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
@@ -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