puppet 6.19.0-x64-mingw32 → 7.3.0-x64-mingw32

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

Potentially problematic release.


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

Files changed (513) hide show
  1. checksums.yaml +4 -4
  2. data/CODEOWNERS +2 -16
  3. data/Gemfile +3 -4
  4. data/Gemfile.lock +33 -28
  5. data/README.md +1 -1
  6. data/conf/fileserver.conf +5 -10
  7. data/ext/build_defaults.yaml +1 -1
  8. data/ext/osx/file_mapping.yaml +0 -5
  9. data/ext/project_data.yaml +2 -14
  10. data/ext/redhat/puppet.spec.erb +0 -1
  11. data/ext/windows/service/daemon.rb +6 -5
  12. data/install.rb +21 -17
  13. data/lib/puppet.rb +11 -20
  14. data/lib/puppet/application.rb +182 -104
  15. data/lib/puppet/application/agent.rb +1 -0
  16. data/lib/puppet/application/apply.rb +3 -2
  17. data/lib/puppet/application/device.rb +101 -104
  18. data/lib/puppet/application/filebucket.rb +15 -11
  19. data/lib/puppet/application/script.rb +1 -0
  20. data/lib/puppet/application/ssl.rb +1 -1
  21. data/lib/puppet/application_support.rb +7 -0
  22. data/lib/puppet/configurer.rb +44 -36
  23. data/lib/puppet/configurer/plugin_handler.rb +21 -19
  24. data/lib/puppet/defaults.rb +71 -170
  25. data/lib/puppet/environments.rb +44 -75
  26. data/lib/puppet/face/config.rb +10 -0
  27. data/lib/puppet/face/epp.rb +12 -2
  28. data/lib/puppet/face/facts.rb +80 -6
  29. data/lib/puppet/face/help.rb +1 -1
  30. data/lib/puppet/face/node/clean.rb +8 -0
  31. data/lib/puppet/face/plugin.rb +5 -8
  32. data/lib/puppet/ffi/posix.rb +10 -0
  33. data/lib/puppet/ffi/posix/constants.rb +14 -0
  34. data/lib/puppet/ffi/posix/functions.rb +24 -0
  35. data/lib/puppet/ffi/windows.rb +12 -0
  36. data/lib/puppet/ffi/windows/api_types.rb +311 -0
  37. data/lib/puppet/ffi/windows/constants.rb +404 -0
  38. data/lib/puppet/ffi/windows/functions.rb +628 -0
  39. data/lib/puppet/ffi/windows/structs.rb +338 -0
  40. data/lib/puppet/file_serving/configuration.rb +0 -5
  41. data/lib/puppet/file_serving/configuration/parser.rb +6 -32
  42. data/lib/puppet/file_serving/http_metadata.rb +1 -1
  43. data/lib/puppet/file_serving/mount.rb +1 -2
  44. data/lib/puppet/forge/repository.rb +0 -1
  45. data/lib/puppet/functions/epp.rb +1 -0
  46. data/lib/puppet/functions/inline_epp.rb +1 -0
  47. data/lib/puppet/generate/models/type/type.rb +4 -1
  48. data/lib/puppet/http.rb +22 -13
  49. data/lib/puppet/http/client.rb +164 -114
  50. data/lib/puppet/{network/resolver.rb → http/dns.rb} +2 -2
  51. data/lib/puppet/http/errors.rb +16 -0
  52. data/lib/puppet/http/external_client.rb +5 -7
  53. data/lib/puppet/{network/http → http}/factory.rb +8 -11
  54. data/lib/puppet/{network/http → http}/pool.rb +61 -26
  55. data/lib/puppet/{network/http/session.rb → http/pool_entry.rb} +2 -3
  56. data/lib/puppet/http/proxy.rb +137 -0
  57. data/lib/puppet/http/redirector.rb +4 -12
  58. data/lib/puppet/http/resolver.rb +5 -15
  59. data/lib/puppet/http/resolver/server_list.rb +6 -10
  60. data/lib/puppet/http/resolver/settings.rb +4 -7
  61. data/lib/puppet/http/resolver/srv.rb +7 -11
  62. data/lib/puppet/http/response.rb +36 -54
  63. data/lib/puppet/http/response_converter.rb +24 -0
  64. data/lib/puppet/http/response_net_http.rb +42 -0
  65. data/lib/puppet/http/retry_after_handler.rb +4 -13
  66. data/lib/puppet/http/service.rb +12 -26
  67. data/lib/puppet/http/service/ca.rb +11 -22
  68. data/lib/puppet/http/service/compiler.rb +22 -69
  69. data/lib/puppet/http/service/file_server.rb +18 -27
  70. data/lib/puppet/http/service/puppetserver.rb +26 -12
  71. data/lib/puppet/http/service/report.rb +8 -10
  72. data/lib/puppet/http/session.rb +11 -20
  73. data/lib/puppet/{network/http → http}/site.rb +1 -2
  74. data/lib/puppet/indirector/catalog/rest.rb +2 -4
  75. data/lib/puppet/indirector/fact_search.rb +60 -0
  76. data/lib/puppet/indirector/facts/facter.rb +24 -3
  77. data/lib/puppet/indirector/facts/json.rb +27 -0
  78. data/lib/puppet/indirector/facts/rest.rb +3 -22
  79. data/lib/puppet/indirector/facts/yaml.rb +3 -58
  80. data/lib/puppet/indirector/file_bucket_file/rest.rb +3 -9
  81. data/lib/puppet/indirector/file_content/rest.rb +2 -6
  82. data/lib/puppet/indirector/file_metadata/rest.rb +3 -9
  83. data/lib/puppet/indirector/file_server.rb +1 -8
  84. data/lib/puppet/indirector/generic_http.rb +0 -11
  85. data/lib/puppet/indirector/json.rb +5 -1
  86. data/lib/puppet/indirector/node/json.rb +8 -0
  87. data/lib/puppet/indirector/node/rest.rb +2 -4
  88. data/lib/puppet/indirector/report/json.rb +34 -0
  89. data/lib/puppet/indirector/report/rest.rb +3 -8
  90. data/lib/puppet/indirector/request.rb +0 -101
  91. data/lib/puppet/indirector/rest.rb +12 -263
  92. data/lib/puppet/module_tool/applications.rb +0 -1
  93. data/lib/puppet/module_tool/applications/installer.rb +48 -2
  94. data/lib/puppet/module_tool/errors/shared.rb +17 -2
  95. data/lib/puppet/network/authconfig.rb +2 -96
  96. data/lib/puppet/network/authorization.rb +13 -35
  97. data/lib/puppet/network/formats.rb +69 -1
  98. data/lib/puppet/network/http.rb +3 -3
  99. data/lib/puppet/network/http/api/indirected_routes.rb +2 -20
  100. data/lib/puppet/network/http/api/master/v3.rb +11 -13
  101. data/lib/puppet/network/http/connection.rb +247 -316
  102. data/lib/puppet/network/http/handler.rb +0 -1
  103. data/lib/puppet/network/http_pool.rb +16 -34
  104. data/lib/puppet/node.rb +1 -30
  105. data/lib/puppet/pal/json_catalog_encoder.rb +4 -0
  106. data/lib/puppet/pal/pal_impl.rb +73 -18
  107. data/lib/puppet/parser/ast/leaf.rb +3 -2
  108. data/lib/puppet/parser/ast/pops_bridge.rb +0 -38
  109. data/lib/puppet/parser/compiler.rb +0 -198
  110. data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +14 -39
  111. data/lib/puppet/parser/resource.rb +0 -69
  112. data/lib/puppet/parser/templatewrapper.rb +1 -1
  113. data/lib/puppet/pops/evaluator/deferred_resolver.rb +5 -3
  114. data/lib/puppet/pops/evaluator/evaluator_impl.rb +22 -8
  115. data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +3 -3
  116. data/lib/puppet/pops/evaluator/runtime3_support.rb +1 -1
  117. data/lib/puppet/pops/issues.rb +0 -5
  118. data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +6 -8
  119. data/lib/puppet/pops/model/ast.pp +0 -42
  120. data/lib/puppet/pops/model/ast.rb +0 -290
  121. data/lib/puppet/pops/model/ast_transformer.rb +1 -1
  122. data/lib/puppet/pops/model/factory.rb +0 -45
  123. data/lib/puppet/pops/model/model_label_provider.rb +0 -5
  124. data/lib/puppet/pops/model/model_tree_dumper.rb +0 -22
  125. data/lib/puppet/pops/model/pn_transformer.rb +0 -16
  126. data/lib/puppet/pops/parser/egrammar.ra +0 -56
  127. data/lib/puppet/pops/parser/eparser.rb +1520 -1712
  128. data/lib/puppet/pops/parser/lexer2.rb +4 -4
  129. data/lib/puppet/pops/parser/parser_support.rb +0 -5
  130. data/lib/puppet/pops/resource/resource_type_impl.rb +2 -24
  131. data/lib/puppet/pops/types/type_calculator.rb +0 -7
  132. data/lib/puppet/pops/types/type_parser.rb +0 -4
  133. data/lib/puppet/pops/types/types.rb +0 -1
  134. data/lib/puppet/pops/validation/checker4_0.rb +9 -37
  135. data/lib/puppet/pops/validation/tasks_checker.rb +0 -12
  136. data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -2
  137. data/lib/puppet/provider.rb +0 -13
  138. data/lib/puppet/provider/nameservice.rb +0 -18
  139. data/lib/puppet/provider/package/apt.rb +4 -0
  140. data/lib/puppet/provider/package/dpkg.rb +0 -10
  141. data/lib/puppet/provider/package/gem.rb +23 -3
  142. data/lib/puppet/provider/package/pip.rb +0 -1
  143. data/lib/puppet/provider/package/pkg.rb +0 -4
  144. data/lib/puppet/provider/package/portage.rb +1 -1
  145. data/lib/puppet/provider/package/puppet_gem.rb +1 -4
  146. data/lib/puppet/provider/service/smf.rb +191 -73
  147. data/lib/puppet/provider/user/aix.rb +2 -2
  148. data/lib/puppet/provider/user/directoryservice.rb +0 -10
  149. data/lib/puppet/reference/configuration.rb +8 -5
  150. data/lib/puppet/reference/indirection.rb +1 -1
  151. data/lib/puppet/resource.rb +1 -89
  152. data/lib/puppet/resource/catalog.rb +1 -14
  153. data/lib/puppet/resource/type.rb +3 -119
  154. data/lib/puppet/resource/type_collection.rb +3 -48
  155. data/lib/puppet/runtime.rb +1 -2
  156. data/lib/puppet/settings.rb +88 -48
  157. data/lib/puppet/settings/alias_setting.rb +37 -0
  158. data/lib/puppet/settings/base_setting.rb +26 -2
  159. data/lib/puppet/settings/integer_setting.rb +17 -0
  160. data/lib/puppet/settings/port_setting.rb +15 -0
  161. data/lib/puppet/settings/priority_setting.rb +5 -4
  162. data/lib/puppet/ssl.rb +10 -6
  163. data/lib/puppet/ssl/base.rb +3 -5
  164. data/lib/puppet/ssl/certificate.rb +0 -6
  165. data/lib/puppet/ssl/certificate_request.rb +1 -12
  166. data/lib/puppet/ssl/certificate_signer.rb +6 -0
  167. data/lib/puppet/ssl/oids.rb +3 -1
  168. data/lib/puppet/ssl/ssl_provider.rb +17 -0
  169. data/lib/puppet/ssl/state_machine.rb +3 -1
  170. data/lib/puppet/ssl/verifier.rb +2 -0
  171. data/lib/puppet/test/test_helper.rb +1 -3
  172. data/lib/puppet/transaction.rb +1 -7
  173. data/lib/puppet/transaction/report.rb +2 -4
  174. data/lib/puppet/type.rb +0 -76
  175. data/lib/puppet/type/file.rb +5 -7
  176. data/lib/puppet/type/file/checksum.rb +1 -1
  177. data/lib/puppet/type/file/source.rb +1 -1
  178. data/lib/puppet/type/filebucket.rb +3 -3
  179. data/lib/puppet/type/package.rb +5 -13
  180. data/lib/puppet/type/user.rb +1 -1
  181. data/lib/puppet/util/autoload.rb +1 -8
  182. data/lib/puppet/util/execution.rb +0 -11
  183. data/lib/puppet/util/http_proxy.rb +2 -215
  184. data/lib/puppet/util/monkey_patches.rb +0 -46
  185. data/lib/puppet/util/posix.rb +54 -5
  186. data/lib/puppet/util/rdoc.rb +0 -7
  187. data/lib/puppet/util/retry_action.rb +1 -1
  188. data/lib/puppet/util/rubygems.rb +5 -1
  189. data/lib/puppet/util/run_mode.rb +9 -1
  190. data/lib/puppet/util/windows.rb +3 -8
  191. data/lib/puppet/util/windows/daemon.rb +360 -0
  192. data/lib/puppet/util/windows/error.rb +1 -0
  193. data/lib/puppet/util/windows/eventlog.rb +4 -9
  194. data/lib/puppet/util/windows/file.rb +8 -242
  195. data/lib/puppet/util/windows/monkey_patches/process.rb +414 -0
  196. data/lib/puppet/util/windows/process.rb +4 -226
  197. data/lib/puppet/util/windows/service.rb +9 -460
  198. data/lib/puppet/util/windows/string.rb +12 -13
  199. data/lib/puppet/util/yaml.rb +0 -22
  200. data/lib/puppet/vendor/require_vendored.rb +0 -1
  201. data/lib/puppet/version.rb +1 -1
  202. data/lib/puppet/x509.rb +5 -1
  203. data/lib/puppet/x509/cert_provider.rb +29 -1
  204. data/locales/puppet.pot +629 -1314
  205. data/man/man5/puppet.conf.5 +39 -99
  206. data/man/man8/puppet-agent.8 +2 -2
  207. data/man/man8/puppet-apply.8 +2 -2
  208. data/man/man8/puppet-catalog.8 +1 -1
  209. data/man/man8/puppet-config.8 +1 -1
  210. data/man/man8/puppet-describe.8 +1 -1
  211. data/man/man8/puppet-device.8 +2 -2
  212. data/man/man8/puppet-doc.8 +1 -1
  213. data/man/man8/puppet-epp.8 +1 -1
  214. data/man/man8/puppet-facts.8 +58 -9
  215. data/man/man8/puppet-filebucket.8 +6 -6
  216. data/man/man8/puppet-generate.8 +1 -1
  217. data/man/man8/puppet-help.8 +1 -1
  218. data/man/man8/puppet-lookup.8 +1 -1
  219. data/man/man8/puppet-module.8 +1 -58
  220. data/man/man8/puppet-node.8 +4 -1
  221. data/man/man8/puppet-parser.8 +1 -1
  222. data/man/man8/puppet-plugin.8 +1 -1
  223. data/man/man8/puppet-report.8 +4 -1
  224. data/man/man8/puppet-resource.8 +1 -1
  225. data/man/man8/puppet-script.8 +2 -2
  226. data/man/man8/puppet-ssl.8 +1 -1
  227. data/man/man8/puppet.8 +2 -2
  228. data/spec/fixtures/integration/application/agent/cached_deferred_catalog.json +91 -0
  229. data/spec/fixtures/unit/provider/service/smf/{svcs.out → svcs_instances.out} +0 -0
  230. data/spec/fixtures/unit/provider/user/aix/aix_passwd_file.out +4 -0
  231. data/spec/integration/application/agent_spec.rb +151 -14
  232. data/spec/integration/application/apply_spec.rb +20 -1
  233. data/spec/integration/application/filebucket_spec.rb +16 -16
  234. data/spec/integration/application/help_spec.rb +2 -0
  235. data/spec/integration/application/plugin_spec.rb +23 -1
  236. data/spec/integration/defaults_spec.rb +7 -10
  237. data/spec/integration/environments/setting_hooks_spec.rb +1 -1
  238. data/spec/integration/indirector/file_content/file_server_spec.rb +0 -2
  239. data/spec/integration/indirector/file_metadata/file_server_spec.rb +0 -2
  240. data/spec/integration/network/http_pool_spec.rb +3 -21
  241. data/spec/integration/parser/catalog_spec.rb +0 -38
  242. data/spec/integration/parser/node_spec.rb +0 -9
  243. data/spec/integration/parser/pcore_resource_spec.rb +0 -37
  244. data/spec/integration/resource/type_collection_spec.rb +2 -6
  245. data/spec/integration/transaction_spec.rb +4 -9
  246. data/spec/integration/type/file_spec.rb +5 -4
  247. data/spec/integration/util/windows/adsi_spec.rb +3 -1
  248. data/spec/integration/util/windows/monkey_patches/process_spec.rb +231 -0
  249. data/spec/integration/util/windows/registry_spec.rb +0 -10
  250. data/spec/integration/util/windows/security_spec.rb +1 -1
  251. data/spec/lib/puppet_spec/puppetserver.rb +1 -1
  252. data/spec/lib/puppet_spec/settings.rb +7 -1
  253. data/spec/spec_helper.rb +3 -4
  254. data/spec/unit/agent_spec.rb +8 -8
  255. data/spec/unit/application/agent_spec.rb +0 -1
  256. data/spec/unit/application/config_spec.rb +224 -4
  257. data/spec/unit/application/facts_spec.rb +35 -0
  258. data/spec/unit/application/filebucket_spec.rb +41 -41
  259. data/spec/unit/application/ssl_spec.rb +2 -2
  260. data/spec/unit/application_spec.rb +51 -9
  261. data/spec/unit/certificate_factory_spec.rb +1 -1
  262. data/spec/unit/configurer/downloader_spec.rb +6 -2
  263. data/spec/unit/configurer/plugin_handler_spec.rb +56 -18
  264. data/spec/unit/configurer_spec.rb +12 -9
  265. data/spec/unit/confine/feature_spec.rb +1 -1
  266. data/spec/unit/confine_spec.rb +8 -2
  267. data/spec/unit/context/trusted_information_spec.rb +2 -6
  268. data/spec/unit/defaults_spec.rb +26 -32
  269. data/spec/unit/environments_spec.rb +96 -22
  270. data/spec/unit/face/config_spec.rb +27 -32
  271. data/spec/unit/face/facts_spec.rb +4 -0
  272. data/spec/unit/face/node_spec.rb +14 -13
  273. data/spec/unit/face/plugin_spec.rb +73 -33
  274. data/spec/unit/file_bucket/file_spec.rb +1 -1
  275. data/spec/unit/file_serving/configuration/parser_spec.rb +22 -19
  276. data/spec/unit/file_serving/configuration_spec.rb +6 -12
  277. data/spec/unit/file_serving/metadata_spec.rb +3 -3
  278. data/spec/unit/file_serving/terminus_helper_spec.rb +11 -4
  279. data/spec/unit/forge/module_release_spec.rb +2 -7
  280. data/spec/unit/functions/camelcase_spec.rb +1 -1
  281. data/spec/unit/functions/capitalize_spec.rb +1 -1
  282. data/spec/unit/functions/downcase_spec.rb +1 -1
  283. data/spec/unit/functions/inline_epp_spec.rb +26 -1
  284. data/spec/unit/functions/upcase_spec.rb +1 -1
  285. data/spec/unit/http/client_spec.rb +7 -8
  286. data/spec/unit/{network/resolver_spec.rb → http/dns_spec.rb} +3 -3
  287. data/spec/unit/http/external_client_spec.rb +4 -4
  288. data/spec/unit/{network/http → http}/factory_spec.rb +5 -11
  289. data/spec/unit/{network/http/session_spec.rb → http/pool_entry_spec.rb} +3 -3
  290. data/spec/unit/{network/http → http}/pool_spec.rb +12 -17
  291. data/spec/unit/{util/http_proxy_spec.rb → http/proxy_spec.rb} +2 -69
  292. data/spec/unit/http/resolver_spec.rb +13 -13
  293. data/spec/unit/http/service/compiler_spec.rb +49 -62
  294. data/spec/unit/http/service/file_server_spec.rb +3 -3
  295. data/spec/unit/http/service/puppetserver_spec.rb +34 -4
  296. data/spec/unit/http/service_spec.rb +1 -2
  297. data/spec/unit/http/session_spec.rb +16 -14
  298. data/spec/unit/{network/http → http}/site_spec.rb +3 -3
  299. data/spec/unit/indirector/face_spec.rb +0 -1
  300. data/spec/unit/indirector/facts/facter_spec.rb +104 -1
  301. data/spec/unit/indirector/facts/json_spec.rb +255 -0
  302. data/spec/unit/indirector/file_bucket_file/file_spec.rb +5 -3
  303. data/spec/unit/indirector/file_bucket_file/selector_spec.rb +26 -8
  304. data/spec/unit/indirector/file_content/rest_spec.rb +0 -4
  305. data/spec/unit/indirector/file_metadata/rest_spec.rb +0 -4
  306. data/spec/unit/indirector/file_server_spec.rb +1 -15
  307. data/spec/unit/indirector/indirection_spec.rb +8 -12
  308. data/spec/unit/indirector/node/json_spec.rb +33 -0
  309. data/spec/{integration/indirector/report/yaml.rb → unit/indirector/report/json_spec.rb} +13 -24
  310. data/spec/unit/indirector/report/rest_spec.rb +2 -17
  311. data/spec/unit/indirector/report/yaml_spec.rb +72 -8
  312. data/spec/unit/indirector/request_spec.rb +0 -264
  313. data/spec/unit/indirector/rest_spec.rb +98 -752
  314. data/spec/unit/indirector_spec.rb +2 -2
  315. data/spec/unit/module_tool/applications/installer_spec.rb +66 -0
  316. data/spec/unit/network/authconfig_spec.rb +2 -132
  317. data/spec/unit/network/authorization_spec.rb +2 -55
  318. data/spec/unit/network/formats_spec.rb +45 -4
  319. data/spec/unit/network/http/api/indirected_routes_spec.rb +1 -101
  320. data/spec/unit/network/http/api/master/v3_spec.rb +28 -7
  321. data/spec/unit/network/http/api_spec.rb +10 -0
  322. data/spec/unit/network/http/connection_spec.rb +19 -41
  323. data/spec/unit/network/http/handler_spec.rb +0 -6
  324. data/spec/unit/network/http_pool_spec.rb +0 -4
  325. data/spec/unit/node/environment_spec.rb +33 -21
  326. data/spec/unit/node_spec.rb +2 -54
  327. data/spec/unit/parser/compiler_spec.rb +3 -19
  328. data/spec/unit/parser/functions/create_resources_spec.rb +2 -20
  329. data/spec/unit/parser/resource_spec.rb +14 -8
  330. data/spec/unit/parser/templatewrapper_spec.rb +4 -3
  331. data/spec/unit/pops/evaluator/deferred_resolver_spec.rb +20 -0
  332. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +4 -7
  333. data/spec/unit/pops/loaders/loaders_spec.rb +6 -21
  334. data/spec/unit/pops/parser/parse_application_spec.rb +4 -22
  335. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +0 -1
  336. data/spec/unit/pops/parser/parse_capabilities_spec.rb +8 -21
  337. data/spec/unit/pops/parser/parse_site_spec.rb +20 -24
  338. data/spec/unit/pops/resource/resource_type_impl_spec.rb +0 -71
  339. data/spec/unit/pops/serialization/to_from_hr_spec.rb +1 -1
  340. data/spec/unit/pops/types/type_calculator_spec.rb +6 -6
  341. data/spec/unit/pops/types/type_factory_spec.rb +1 -1
  342. data/spec/unit/pops/validator/validator_spec.rb +61 -46
  343. data/spec/unit/pops/visitor_spec.rb +1 -1
  344. data/spec/unit/property_spec.rb +1 -0
  345. data/spec/unit/provider/nameservice_spec.rb +66 -122
  346. data/spec/unit/provider/package/apt_spec.rb +4 -8
  347. data/spec/unit/provider/package/base_spec.rb +6 -5
  348. data/spec/unit/provider/package/dpkg_spec.rb +0 -48
  349. data/spec/unit/provider/package/gem_spec.rb +32 -0
  350. data/spec/unit/provider/package/pacman_spec.rb +18 -12
  351. data/spec/unit/provider/package/pip_spec.rb +6 -11
  352. data/spec/unit/provider/package/pkgdmg_spec.rb +0 -4
  353. data/spec/unit/provider/package/puppet_gem_spec.rb +3 -2
  354. data/spec/unit/provider/service/smf_spec.rb +401 -165
  355. data/spec/unit/provider/service/windows_spec.rb +0 -1
  356. data/spec/unit/provider/user/aix_spec.rb +5 -0
  357. data/spec/unit/provider/user/hpux_spec.rb +1 -1
  358. data/spec/unit/provider/user/pw_spec.rb +2 -0
  359. data/spec/unit/provider/user/useradd_spec.rb +1 -0
  360. data/spec/unit/provider_spec.rb +6 -20
  361. data/spec/unit/puppet_pal_catalog_spec.rb +45 -0
  362. data/spec/unit/resource/type_collection_spec.rb +2 -22
  363. data/spec/unit/resource/type_spec.rb +1 -1
  364. data/spec/unit/resource_spec.rb +11 -66
  365. data/spec/unit/settings/http_extra_headers_spec.rb +2 -4
  366. data/spec/unit/settings/integer_setting_spec.rb +42 -0
  367. data/spec/unit/settings/port_setting_spec.rb +31 -0
  368. data/spec/unit/settings/priority_setting_spec.rb +4 -4
  369. data/spec/unit/settings_spec.rb +560 -228
  370. data/spec/unit/ssl/base_spec.rb +36 -4
  371. data/spec/unit/ssl/certificate_request_spec.rb +15 -45
  372. data/spec/unit/ssl/certificate_spec.rb +2 -11
  373. data/spec/unit/ssl/ssl_provider_spec.rb +14 -8
  374. data/spec/unit/ssl/state_machine_spec.rb +0 -1
  375. data/spec/unit/ssl/verifier_spec.rb +0 -21
  376. data/spec/unit/transaction/additional_resource_generator_spec.rb +3 -7
  377. data/spec/unit/transaction/event_manager_spec.rb +14 -11
  378. data/spec/unit/transaction/report_spec.rb +0 -2
  379. data/spec/unit/transaction/resource_harness_spec.rb +2 -2
  380. data/spec/unit/transaction_spec.rb +57 -82
  381. data/spec/unit/type/file/checksum_spec.rb +6 -6
  382. data/spec/unit/type/file/content_spec.rb +1 -2
  383. data/spec/unit/type/file/ensure_spec.rb +1 -1
  384. data/spec/unit/type/file/mode_spec.rb +1 -1
  385. data/spec/unit/type/file/selinux_spec.rb +0 -2
  386. data/spec/unit/type/file/source_spec.rb +0 -1
  387. data/spec/unit/type/file_spec.rb +12 -12
  388. data/spec/unit/type/group_spec.rb +13 -6
  389. data/spec/unit/type/package_spec.rb +1 -1
  390. data/spec/unit/type/resources_spec.rb +7 -7
  391. data/spec/unit/type/service_spec.rb +1 -1
  392. data/spec/unit/type/tidy_spec.rb +0 -1
  393. data/spec/unit/type_spec.rb +22 -2
  394. data/spec/unit/util/at_fork_spec.rb +2 -2
  395. data/spec/unit/util/autoload_spec.rb +5 -1
  396. data/spec/unit/util/backups_spec.rb +1 -4
  397. data/spec/unit/util/execution_spec.rb +15 -40
  398. data/spec/unit/util/inifile_spec.rb +6 -14
  399. data/spec/unit/util/log_spec.rb +8 -7
  400. data/spec/unit/util/logging_spec.rb +3 -3
  401. data/spec/unit/util/monkey_patches_spec.rb +0 -6
  402. data/spec/unit/util/posix_spec.rb +363 -15
  403. data/spec/unit/util/rubygems_spec.rb +2 -2
  404. data/spec/unit/util/run_mode_spec.rb +21 -121
  405. data/spec/unit/util/selinux_spec.rb +76 -52
  406. data/spec/unit/util/storage_spec.rb +3 -1
  407. data/spec/unit/util/suidmanager_spec.rb +44 -41
  408. data/spec/unit/util/windows/string_spec.rb +1 -3
  409. data/spec/unit/util/yaml_spec.rb +0 -54
  410. data/spec/unit/util_spec.rb +13 -24
  411. metadata +66 -226
  412. data/conf/auth.conf +0 -150
  413. data/lib/puppet/application/cert.rb +0 -76
  414. data/lib/puppet/application/key.rb +0 -4
  415. data/lib/puppet/application/man.rb +0 -4
  416. data/lib/puppet/application/status.rb +0 -4
  417. data/lib/puppet/face/key.rb +0 -16
  418. data/lib/puppet/face/man.rb +0 -145
  419. data/lib/puppet/face/module/build.rb +0 -14
  420. data/lib/puppet/face/module/generate.rb +0 -14
  421. data/lib/puppet/face/module/search.rb +0 -103
  422. data/lib/puppet/face/status.rb +0 -51
  423. data/lib/puppet/indirector/certificate/file.rb +0 -9
  424. data/lib/puppet/indirector/certificate/rest.rb +0 -18
  425. data/lib/puppet/indirector/certificate_request/file.rb +0 -9
  426. data/lib/puppet/indirector/certificate_request/memory.rb +0 -7
  427. data/lib/puppet/indirector/certificate_request/rest.rb +0 -11
  428. data/lib/puppet/indirector/file_content/http.rb +0 -22
  429. data/lib/puppet/indirector/key/file.rb +0 -46
  430. data/lib/puppet/indirector/key/memory.rb +0 -7
  431. data/lib/puppet/indirector/ssl_file.rb +0 -162
  432. data/lib/puppet/indirector/status.rb +0 -3
  433. data/lib/puppet/indirector/status/local.rb +0 -12
  434. data/lib/puppet/indirector/status/rest.rb +0 -27
  435. data/lib/puppet/module_tool/applications/searcher.rb +0 -29
  436. data/lib/puppet/network/auth_config_parser.rb +0 -90
  437. data/lib/puppet/network/authstore.rb +0 -283
  438. data/lib/puppet/network/http/api/master/v3/authorization.rb +0 -18
  439. data/lib/puppet/network/http/api/master/v3/environment.rb +0 -88
  440. data/lib/puppet/network/http/base_pool.rb +0 -36
  441. data/lib/puppet/network/http/compression.rb +0 -127
  442. data/lib/puppet/network/http/connection_adapter.rb +0 -184
  443. data/lib/puppet/network/http/nocache_pool.rb +0 -28
  444. data/lib/puppet/network/rest_controller.rb +0 -2
  445. data/lib/puppet/network/rights.rb +0 -210
  446. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +0 -66
  447. data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +0 -22
  448. data/lib/puppet/parser/environment_compiler.rb +0 -202
  449. data/lib/puppet/pops/types/enumeration.rb +0 -16
  450. data/lib/puppet/resource/capability_finder.rb +0 -154
  451. data/lib/puppet/rest/errors.rb +0 -15
  452. data/lib/puppet/rest/response.rb +0 -35
  453. data/lib/puppet/rest/route.rb +0 -85
  454. data/lib/puppet/rest/routes.rb +0 -135
  455. data/lib/puppet/ssl/host.rb +0 -505
  456. data/lib/puppet/ssl/key.rb +0 -61
  457. data/lib/puppet/ssl/validator.rb +0 -61
  458. data/lib/puppet/ssl/validator/default_validator.rb +0 -209
  459. data/lib/puppet/ssl/validator/no_validator.rb +0 -22
  460. data/lib/puppet/ssl/verifier_adapter.rb +0 -58
  461. data/lib/puppet/status.rb +0 -40
  462. data/lib/puppet/util/connection.rb +0 -88
  463. data/lib/puppet/util/ssl.rb +0 -83
  464. data/lib/puppet/util/windows/api_types.rb +0 -309
  465. data/lib/puppet/util/windows/monkey_patches/dir.rb +0 -40
  466. data/lib/puppet/vendor/load_pathspec.rb +0 -1
  467. data/lib/puppet/vendor/pathspec/CHANGELOG.md +0 -2
  468. data/lib/puppet/vendor/pathspec/LICENSE +0 -201
  469. data/lib/puppet/vendor/pathspec/PUPPET_README.md +0 -6
  470. data/lib/puppet/vendor/pathspec/README.md +0 -53
  471. data/lib/puppet/vendor/pathspec/lib/pathspec.rb +0 -122
  472. data/lib/puppet/vendor/pathspec/lib/pathspec/gitignorespec.rb +0 -275
  473. data/lib/puppet/vendor/pathspec/lib/pathspec/regexspec.rb +0 -17
  474. data/lib/puppet/vendor/pathspec/lib/pathspec/spec.rb +0 -14
  475. data/man/man8/puppet-key.8 +0 -126
  476. data/man/man8/puppet-man.8 +0 -76
  477. data/man/man8/puppet-status.8 +0 -108
  478. data/spec/integration/application/config_spec.rb +0 -74
  479. data/spec/integration/network/authconfig_spec.rb +0 -256
  480. data/spec/integration/util/windows/monkey_patches/dir_spec.rb +0 -11
  481. data/spec/unit/application/man_spec.rb +0 -52
  482. data/spec/unit/capability_spec.rb +0 -414
  483. data/spec/unit/face/catalog_spec.rb +0 -6
  484. data/spec/unit/face/key_spec.rb +0 -9
  485. data/spec/unit/face/module/search_spec.rb +0 -231
  486. data/spec/unit/face/module_spec.rb +0 -3
  487. data/spec/unit/face/status_spec.rb +0 -9
  488. data/spec/unit/indirector/certificate/file_spec.rb +0 -14
  489. data/spec/unit/indirector/certificate/rest_spec.rb +0 -61
  490. data/spec/unit/indirector/certificate_request/file_spec.rb +0 -14
  491. data/spec/unit/indirector/certificate_request/rest_spec.rb +0 -25
  492. data/spec/unit/indirector/key/file_spec.rb +0 -79
  493. data/spec/unit/indirector/ssl_file_spec.rb +0 -305
  494. data/spec/unit/indirector/status/local_spec.rb +0 -10
  495. data/spec/unit/indirector/status/rest_spec.rb +0 -50
  496. data/spec/unit/module_tool/applications/searcher_spec.rb +0 -38
  497. data/spec/unit/network/auth_config_parser_spec.rb +0 -115
  498. data/spec/unit/network/authstore_spec.rb +0 -422
  499. data/spec/unit/network/http/api/master/v3/authorization_spec.rb +0 -57
  500. data/spec/unit/network/http/api/master/v3/environment_spec.rb +0 -185
  501. data/spec/unit/network/http/compression_spec.rb +0 -240
  502. data/spec/unit/network/http/nocache_pool_spec.rb +0 -64
  503. data/spec/unit/network/http_spec.rb +0 -9
  504. data/spec/unit/network/rights_spec.rb +0 -439
  505. data/spec/unit/parser/environment_compiler_spec.rb +0 -730
  506. data/spec/unit/pops/types/enumeration_spec.rb +0 -51
  507. data/spec/unit/resource/capability_finder_spec.rb +0 -143
  508. data/spec/unit/rest/route_spec.rb +0 -132
  509. data/spec/unit/ssl/host_spec.rb +0 -650
  510. data/spec/unit/ssl/key_spec.rb +0 -173
  511. data/spec/unit/ssl/validator_spec.rb +0 -278
  512. data/spec/unit/status_spec.rb +0 -45
  513. data/spec/unit/util/ssl_spec.rb +0 -91
@@ -1,283 +0,0 @@
1
- # standard module for determining whether a given hostname or IP has access to
2
- # the requested resource
3
-
4
- require 'ipaddr'
5
- require 'puppet/util/logging'
6
-
7
- module Puppet
8
- class AuthStoreError < Puppet::Error; end
9
- class AuthorizationError < Puppet::Error; end
10
-
11
- class Network::AuthStore
12
- include Puppet::Util::Logging
13
-
14
- # Is a given combination of name and ip address allowed? If either input
15
- # is non-nil, then both inputs must be provided. If neither input
16
- # is provided, then the authstore is considered local and defaults to "true".
17
- def allowed?(name, ip)
18
- if name or ip
19
- # This is probably unnecessary, and can cause some weirdness in
20
- # cases where we're operating over localhost but don't have a real
21
- # IP defined.
22
- raise Puppet::DevError, _("Name and IP must be passed to 'allowed?'") unless name and ip
23
- # else, we're networked and such
24
- else
25
- # we're local
26
- return true
27
- end
28
-
29
- # yay insecure overrides
30
- return true if globalallow?
31
-
32
- decl = declarations.find { |d| d.match?(name, ip) }
33
- if decl
34
- return decl.result
35
- end
36
-
37
- info _("defaulting to no access for %{name}") % { name: name }
38
- false
39
- end
40
-
41
- # Mark a given pattern as allowed.
42
- def allow(pattern)
43
- # a simple way to allow anyone at all to connect
44
- if pattern == "*"
45
- @globalallow = true
46
- else
47
- store(:allow, pattern)
48
- end
49
-
50
- nil
51
- end
52
-
53
- def allow_ip(pattern)
54
- store(:allow_ip, pattern)
55
- end
56
-
57
- # Deny a given pattern.
58
- def deny(pattern)
59
- store(:deny, pattern)
60
- end
61
-
62
- def deny_ip(pattern)
63
- store(:deny_ip, pattern)
64
- end
65
-
66
- # Is global allow enabled?
67
- def globalallow?
68
- @globalallow
69
- end
70
-
71
- # does this auth store has any rules?
72
- def empty?
73
- @globalallow.nil? && @declarations.size == 0
74
- end
75
-
76
- def initialize
77
- @globalallow = nil
78
- @declarations = []
79
- end
80
-
81
- def to_s
82
- "authstore"
83
- end
84
-
85
- def interpolate(match)
86
- @modified_declarations = @declarations.collect { |ace| ace.interpolate(match) }.sort
87
- end
88
-
89
- def reset_interpolation
90
- @modified_declarations = nil
91
- end
92
-
93
- private
94
-
95
- # Returns our ACEs list, but if we have a modification of it, let's return
96
- # it. This is used if we want to override the this purely immutable list
97
- # by a modified version.
98
- def declarations
99
- @modified_declarations || @declarations
100
- end
101
-
102
- # Store the results of a pattern into our hash. Basically just
103
- # converts the pattern and sticks it into the hash.
104
- def store(type, pattern)
105
- @declarations << Declaration.new(type, pattern)
106
- @declarations.sort!
107
-
108
- nil
109
- end
110
-
111
- # A single declaration. Stores the info for a given declaration,
112
- # provides the methods for determining whether a declaration matches,
113
- # and handles sorting the declarations appropriately.
114
- class Declaration
115
- include Puppet::Util
116
- include Comparable
117
-
118
- # The type of declaration: either :allow or :deny
119
- attr_reader :type
120
- VALID_TYPES = [ :allow, :deny, :allow_ip, :deny_ip ]
121
-
122
- attr_accessor :name
123
-
124
- # The pattern we're matching against. Can be an IPAddr instance,
125
- # or an array of strings, resulting from reversing a hostname
126
- # or domain name.
127
- attr_reader :pattern
128
-
129
- # The length. Only used for iprange and domain.
130
- attr_accessor :length
131
-
132
- # Sort the declarations most specific first.
133
- def <=>(other)
134
- compare(exact?, other.exact?) ||
135
- compare(ip?, other.ip?) ||
136
- ((length != other.length) && (other.length <=> length)) ||
137
- compare(deny?, other.deny?) ||
138
- ( ip? ? pattern.to_s <=> other.pattern.to_s : pattern <=> other.pattern)
139
- end
140
-
141
- def deny?
142
- type == :deny
143
- end
144
-
145
- def exact?
146
- @exact == :exact
147
- end
148
-
149
- def initialize(type, pattern)
150
- self.type = type
151
- self.pattern = pattern
152
- end
153
-
154
- # Are we an IP type?
155
- def ip?
156
- name == :ip
157
- end
158
-
159
- # Does this declaration match the name/ip combo?
160
- def match?(name, ip)
161
- if ip?
162
- pattern.include?(IPAddr.new(ip))
163
- else
164
- matchname?(name)
165
- end
166
- end
167
-
168
- # Set the pattern appropriately. Also sets the name and length.
169
- def pattern=(pattern)
170
- if [:allow_ip, :deny_ip].include?(self.type)
171
- parse_ip(pattern)
172
- else
173
- parse(pattern)
174
- end
175
- @orig = pattern
176
- end
177
-
178
- # Mapping a type of statement into a return value.
179
- def result
180
- [:allow, :allow_ip].include?(type)
181
- end
182
-
183
- def to_s
184
- "#{type}: #{pattern}"
185
- end
186
-
187
- # Set the declaration type. Either :allow or :deny.
188
- def type=(type)
189
- type = type.intern
190
- raise ArgumentError, _("Invalid declaration type %{type}") % { type: type } unless VALID_TYPES.include?(type)
191
- @type = type
192
- end
193
-
194
- # interpolate a pattern to replace any
195
- # backreferences by the given match
196
- # for instance if our pattern is $1.reductivelabs.com
197
- # and we're called with a MatchData whose capture 1 is puppet
198
- # we'll return a pattern of puppet.reductivelabs.com
199
- def interpolate(match)
200
- clone = dup
201
- if @name == :dynamic
202
- clone.pattern = clone.pattern.reverse.collect do |p|
203
- p.gsub(/\$(\d)/) { |m| match[$1.to_i] }
204
- end.join(".")
205
- end
206
- clone
207
- end
208
-
209
- private
210
-
211
- # Returns nil if both values are true or both are false, returns
212
- # -1 if the first is true, and 1 if the second is true. Used
213
- # in the <=> operator.
214
- def compare(me, them)
215
- (me and them) ? nil : me ? -1 : them ? 1 : nil
216
- end
217
-
218
- # Does the name match our pattern?
219
- def matchname?(name)
220
- case @name
221
- when :domain, :dynamic, :opaque
222
- name = munge_name(name)
223
- (pattern == name) or (not exact? and pattern.zip(name).all? { |p,n| p == n })
224
- when :regex
225
- Regexp.new(pattern.slice(1..-2)).match(name)
226
- end
227
- end
228
-
229
- # Convert the name to a common pattern.
230
- def munge_name(name)
231
- # Change to name.downcase.split(".",-1).reverse for FQDN support
232
- name.downcase.split(".").reverse
233
- end
234
-
235
- # Parse our input pattern and figure out what kind of allowable
236
- # statement it is. The output of this is used for later matching.
237
- Octet = '(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])'
238
- IPv4 = "#{Octet}\.#{Octet}\.#{Octet}\.#{Octet}"
239
- IPv6_full = "_:_:_:_:_:_:_:_|_:_:_:_:_:_::_?|_:_:_:_:_::((_:)?_)?|_:_:_:_::((_:){0,2}_)?|_:_:_::((_:){0,3}_)?|_:_::((_:){0,4}_)?|_::((_:){0,5}_)?|::((_:){0,6}_)?"
240
- IPv6_partial = "_:_:_:_:_:_:|_:_:_:_::(_:)?|_:_::(_:){0,2}|_::(_:){0,3}"
241
- # It should be:
242
- # IP = "#{IPv4}|#{IPv6_full}|(#{IPv6_partial}#{IPv4})".gsub(/_/,'([0-9a-fA-F]{1,4})').gsub(/\(/,'(?:')
243
- # but ruby's ipaddr lib doesn't support the hybrid format
244
- IP = "#{IPv4}|#{IPv6_full}".gsub(/_/,'([0-9a-fA-F]{1,4})').gsub(/\(/,'(?:')
245
-
246
- def parse_ip(value)
247
- @name = :ip
248
- @exact, @length, @pattern = *case value
249
- when /^(?:#{IP})\/(\d+)$/ # 12.34.56.78/24, a001:b002::efff/120, c444:1000:2000::9:192.168.0.1/112
250
- [:inexact, $1.to_i, IPAddr.new(value)]
251
- when /^(#{IP})$/ # 10.20.30.40,
252
- [:exact, nil, IPAddr.new(value)]
253
- when /^(#{Octet}\.){1,3}\*$/ # an ip address with a '*' at the end
254
- segments = value.split(".")[0..-2]
255
- bits = 8*segments.length
256
- [:inexact, bits, IPAddr.new((segments+[0,0,0])[0,4].join(".") + "/#{bits}")]
257
- else
258
- raise AuthStoreError, _("Invalid IP pattern %{value}") % { value: value }
259
- end
260
- end
261
-
262
- def parse(value)
263
- @name,@exact,@length,@pattern = *case value
264
- when /^(\w[-\w]*\.)+[-\w]+$/ # a full hostname
265
- # Change to /^(\w[-\w]*\.)+[-\w]+\.?$/ for FQDN support
266
- [:domain,:exact,nil,munge_name(value)]
267
- when /^\*(\.(\w[-\w]*)){1,}$/ # *.domain.com
268
- host_sans_star = munge_name(value)[0..-2]
269
- [:domain,:inexact,host_sans_star.length,host_sans_star]
270
- when /\$\d+/ # a backreference pattern ala $1.reductivelabs.com or 192.168.0.$1 or $1.$2
271
- [:dynamic,:exact,nil,munge_name(value)]
272
- when /^\w[-.@\w]*$/ # ? Just like a host name but allow '@'s and ending '.'s
273
- [:opaque,:exact,nil,[value]]
274
- when /^\/.*\/$/ # a regular expression
275
- [:regex,:inexact,nil,value]
276
- else
277
- raise AuthStoreError, "Invalid pattern #{value}"
278
- end
279
- end
280
- end
281
- end
282
- end
283
-
@@ -1,18 +0,0 @@
1
- require 'puppet/network/authorization'
2
-
3
- class Puppet::Network::HTTP::API::Master::V3::Authorization
4
- include Puppet::Network::Authorization
5
-
6
- def wrap(&block)
7
- lambda do |request, response|
8
- begin
9
- authconfig.check_authorization(:find, request.path, request.params)
10
- rescue Puppet::Network::AuthorizationError => e
11
- raise Puppet::Network::HTTP::Error::HTTPNotAuthorizedError.new(e.message, Puppet::Network::HTTP::Issues::FAILED_AUTHORIZATION)
12
- end
13
-
14
- block.call.call(request, response)
15
- end
16
- end
17
-
18
- end
@@ -1,88 +0,0 @@
1
- require 'puppet/util/json'
2
- require 'puppet/parser/environment_compiler'
3
-
4
- # @deprecated application orchestration will be removed in puppet 7
5
- class Puppet::Network::HTTP::API::Master::V3::Environment
6
- def call(request, response)
7
- Puppet.deprecation_warning("Application orchestration is deprecated. See https://puppet.com/docs/puppet/5.5/deprecated_language.html")
8
-
9
- env_name = request.routing_path.split('/').last
10
- env = Puppet.lookup(:environments).get(env_name)
11
- code_id = request.params[:code_id]
12
-
13
- if env.nil?
14
- raise Puppet::Network::HTTP::Error::HTTPNotFoundError.new(_("%{env_name} is not a known environment") % { env_name: env_name }, Puppet::Network::HTTP::Issues::RESOURCE_NOT_FOUND)
15
- end
16
-
17
- catalog = Puppet::Parser::EnvironmentCompiler.compile(env, code_id).to_resource
18
-
19
- env_graph = build_environment_graph(catalog)
20
-
21
- response.respond_with(200, "application/json", Puppet::Util::Json.dump(env_graph))
22
- end
23
-
24
- def build_environment_graph(catalog)
25
- # This reads catalog and code_id off the catalog rather than using the one
26
- # from the request. There shouldn't really be a case where the two differ,
27
- # but if they do, the one from the catalog itself is authoritative.
28
- env_graph = {:environment => catalog.environment, :applications => {}, :code_id => catalog.code_id}
29
- applications = catalog.resources.select do |res|
30
- type = res.resource_type
31
- type.is_a?(Puppet::Resource::Type) && type.application?
32
- end
33
- applications.each do |app|
34
- file, line = app.file, app.line
35
- nodes = app['nodes']
36
-
37
- required_components = catalog.direct_dependents_of(app).map {|comp| comp.ref}
38
- mapped_components = nodes.values.flatten.map {|comp| comp.ref}
39
-
40
- nonexistent_components = mapped_components - required_components
41
- if nonexistent_components.any?
42
- raise Puppet::ParseError.new(
43
- _("Application %{application} assigns nodes to non-existent components: %{component_list}") %
44
- { application: app, component_list: nonexistent_components.join(', ') }, file, line)
45
- end
46
-
47
- missing_components = required_components - mapped_components
48
- if missing_components.any?
49
- raise Puppet::ParseError.new(_("Application %{application} has components without assigned nodes: %{component_list}") %
50
- { application: app, component_list: missing_components.join(', ') }, file, line)
51
- end
52
-
53
- # Turn the 'nodes' hash into a map component ref => node name
54
- node_mapping = {}
55
- nodes.each do |node, comps|
56
- comps = [comps] unless comps.is_a?(Array)
57
- comps.each do |comp|
58
- raise Puppet::ParseError.new(_("Application %{app} assigns multiple nodes to component %{comp}") % { app: app, comp: comp }, file, line) if node_mapping.include?(comp.ref)
59
- node_mapping[comp.ref] = node.title
60
- end
61
- end
62
-
63
- app_components = {}
64
- catalog.direct_dependents_of(app).each do |comp|
65
- app_components[comp.ref] = {
66
- :produces => comp.export.map(&:ref),
67
- :consumes => prerequisites(comp).map(&:ref),
68
- :node => node_mapping[comp.ref]
69
- }
70
- end
71
- env_graph[:applications][app.ref] = app_components
72
- end
73
-
74
- env_graph
75
- end
76
-
77
- private
78
-
79
- # Finds all the prerequisites of component +comp+. They are all the
80
- # capability resources that +comp+ depends on; this includes resources
81
- # that +comp+ consumes but also resources it merely requires
82
- def prerequisites(comp)
83
- params = Puppet::Type.relationship_params.select { |p| p.direction == :in }.map(&:name)
84
- params.map { |rel| comp[rel] }.flatten.compact.select do |rel|
85
- rel.resource_type && rel.resource_type.is_capability?
86
- end
87
- end
88
- end
@@ -1,36 +0,0 @@
1
- # Base pool for HTTP connections.
2
- #
3
- # @api private
4
- class Puppet::Network::HTTP::BasePool
5
- def start(site, verifier, http)
6
- Puppet.debug("Starting connection for #{site}")
7
- if site.use_ssl?
8
- verifier.setup_connection(http)
9
- begin
10
- http.start
11
- print_ssl_info(http) if Puppet::Util::Log.sendlevel?(:debug)
12
- rescue OpenSSL::SSL::SSLError => error
13
- verifier.handle_connection_error(http, error)
14
- end
15
- else
16
- http.start
17
- end
18
- end
19
-
20
- private
21
-
22
- def print_ssl_info(http)
23
- buffered_io = http.instance_variable_get(:@socket)
24
- return unless buffered_io
25
-
26
- socket = buffered_io.io
27
- return unless socket
28
-
29
- cipher = if Puppet::Util::Platform.jruby?
30
- socket.cipher
31
- else
32
- socket.cipher.first
33
- end
34
- Puppet.debug("Using #{socket.ssl_version} with cipher #{cipher}")
35
- end
36
- end
@@ -1,127 +0,0 @@
1
- require 'puppet/network/http'
2
-
3
- module Puppet::Network::HTTP::Compression
4
- # from https://github.com/ruby/ruby/blob/v2_1_3/lib/net/http/generic_request.rb#L40
5
- ACCEPT_ENCODING = "gzip;q=1.0,deflate;q=0.6,identity;q=0.3"
6
-
7
- # this module function allows to use the right underlying
8
- # methods depending on zlib presence
9
- def module
10
- return(Puppet.features.zlib? ? Active : None)
11
- end
12
- module_function :module
13
-
14
- module Active
15
- require 'zlib'
16
- require 'stringio'
17
-
18
- # return an uncompressed body if the response has been
19
- # compressed
20
- def uncompress_body(response)
21
- case response['content-encoding']
22
- when 'gzip'
23
- Puppet.deprecation_warning(_('Puppet::Network::HTTP::Compression::Active#uncompress_body is deprecated.'))
24
- # ZLib::GzipReader has an associated encoding, by default Encoding.default_external
25
- return Zlib::GzipReader.new(StringIO.new(response.body), :encoding => Encoding::BINARY).read
26
- when 'deflate'
27
- Puppet.deprecation_warning(_('Puppet::Network::HTTP::Compression::Active#uncompress_body is deprecated.'))
28
- return Zlib::Inflate.new.inflate(response.body)
29
- when nil, 'identity'
30
- return response.body
31
- else
32
- raise Net::HTTPError.new(_("Unknown content encoding - %{encoding}") % { encoding: response['content-encoding'] }, response)
33
- end
34
- end
35
-
36
- def uncompress(response)
37
- Puppet.deprecation_warning(_('Puppet::Network::HTTP::Compression::Active#uncompress is deprecated.'))
38
- raise Net::HTTPError.new("No block passed", response) unless block_given?
39
-
40
- case response['content-encoding']
41
- when 'gzip','deflate'
42
- uncompressor = ZlibAdapter.new
43
- when nil, 'identity'
44
- uncompressor = IdentityAdapter.new
45
- else
46
- raise Net::HTTPError.new(_("Unknown content encoding - %{encoding}") % { encoding: response['content-encoding'] }, response)
47
- end
48
-
49
- begin
50
- yield uncompressor
51
- ensure
52
- uncompressor.close
53
- end
54
- end
55
-
56
- def add_accept_encoding(headers={})
57
- headers['accept-encoding'] = Puppet::Network::HTTP::Compression::ACCEPT_ENCODING
58
- headers
59
- end
60
-
61
- # This adapters knows how to uncompress both 'zlib' stream (the deflate algorithm from Content-Encoding)
62
- # and GZip streams.
63
- class ZlibAdapter
64
- def initialize(uncompressor = Zlib::Inflate.new(15 + 32))
65
- # Create an inflater that knows to parse GZip streams and zlib streams.
66
- # This uses a property of the C Zlib library, documented as follow:
67
- # windowBits can also be greater than 15 for optional gzip decoding. Add
68
- # 32 to windowBits to enable zlib and gzip decoding with automatic header
69
- # detection, or add 16 to decode only the gzip format (the zlib format will
70
- # return a Z_DATA_ERROR). If a gzip stream is being decoded, strm->adler is
71
- # a crc32 instead of an adler32.
72
- @uncompressor = uncompressor
73
- @first = true
74
- end
75
-
76
- def uncompress(chunk)
77
- Puppet.deprecation_warning(_('Puppet::Network::HTTP::Compression::ZlibAdapter#uncompress is deprecated.'))
78
- out = @uncompressor.inflate(chunk)
79
- @first = false
80
- return out
81
- rescue Zlib::DataError
82
- # it can happen that we receive a raw deflate stream
83
- # which might make our inflate throw a data error.
84
- # in this case, we try with a verbatim (no header)
85
- # deflater.
86
- @uncompressor = Zlib::Inflate.new
87
- if @first then
88
- @first = false
89
- retry
90
- end
91
- raise
92
- end
93
-
94
- def close
95
- @uncompressor.finish
96
- ensure
97
- @uncompressor.close
98
- end
99
- end
100
- end
101
-
102
- module None
103
- def uncompress_body(response)
104
- Puppet.deprecation_warning(_('Puppet::Network::HTTP::Compression::None#uncompress_body is deprecated.'))
105
- response.body
106
- end
107
-
108
- def add_accept_encoding(headers)
109
- headers
110
- end
111
-
112
- def uncompress(response)
113
- Puppet.deprecation_warning(_('Puppet::Network::HTTP::Compression::None#uncompress is deprecated.'))
114
- yield IdentityAdapter.new
115
- end
116
- end
117
-
118
- class IdentityAdapter
119
- def uncompress(chunk)
120
- Puppet.deprecation_warning(_('Puppet::Network::HTTP::Compression::IdentityAdapter#uncompress is deprecated.'))
121
- chunk
122
- end
123
-
124
- def close
125
- end
126
- end
127
- end